github.com/StackExchange/DNSControl@v0.2.8/docs/flattener/flattener.js (about)

     1  "use strict";
     2  (function() {
     3  
     4  Error.stackTraceLimit = Infinity;
     5  
     6  var $global, $module;
     7  if (typeof window !== "undefined") { /* web page */
     8    $global = window;
     9  } else if (typeof self !== "undefined") { /* web worker */
    10    $global = self;
    11  } else if (typeof global !== "undefined") { /* Node.js */
    12    $global = global;
    13    $global.require = require;
    14  } else { /* others (e.g. Nashorn) */
    15    $global = this;
    16  }
    17  
    18  if ($global === undefined || $global.Array === undefined) {
    19    throw new Error("no global object found");
    20  }
    21  if (typeof module !== "undefined") {
    22    $module = module;
    23  }
    24  
    25  var $packages = {}, $idCounter = 0;
    26  var $keys = function(m) { return m ? Object.keys(m) : []; };
    27  var $flushConsole = function() {};
    28  var $throwRuntimeError; /* set by package "runtime" */
    29  var $throwNilPointerError = function() { $throwRuntimeError("invalid memory address or nil pointer dereference"); };
    30  var $call = function(fn, rcvr, args) { return fn.apply(rcvr, args); };
    31  var $makeFunc = function(fn) { return function() { return $externalize(fn(this, new ($sliceType($jsObjectPtr))($global.Array.prototype.slice.call(arguments, []))), $emptyInterface); }; };
    32  var $unused = function(v) {};
    33  
    34  var $mapArray = function(array, f) {
    35    var newArray = new array.constructor(array.length);
    36    for (var i = 0; i < array.length; i++) {
    37      newArray[i] = f(array[i]);
    38    }
    39    return newArray;
    40  };
    41  
    42  var $methodVal = function(recv, name) {
    43    var vals = recv.$methodVals || {};
    44    recv.$methodVals = vals; /* noop for primitives */
    45    var f = vals[name];
    46    if (f !== undefined) {
    47      return f;
    48    }
    49    var method = recv[name];
    50    f = function() {
    51      $stackDepthOffset--;
    52      try {
    53        return method.apply(recv, arguments);
    54      } finally {
    55        $stackDepthOffset++;
    56      }
    57    };
    58    vals[name] = f;
    59    return f;
    60  };
    61  
    62  var $methodExpr = function(typ, name) {
    63    var method = typ.prototype[name];
    64    if (method.$expr === undefined) {
    65      method.$expr = function() {
    66        $stackDepthOffset--;
    67        try {
    68          if (typ.wrapped) {
    69            arguments[0] = new typ(arguments[0]);
    70          }
    71          return Function.call.apply(method, arguments);
    72        } finally {
    73          $stackDepthOffset++;
    74        }
    75      };
    76    }
    77    return method.$expr;
    78  };
    79  
    80  var $ifaceMethodExprs = {};
    81  var $ifaceMethodExpr = function(name) {
    82    var expr = $ifaceMethodExprs["$" + name];
    83    if (expr === undefined) {
    84      expr = $ifaceMethodExprs["$" + name] = function() {
    85        $stackDepthOffset--;
    86        try {
    87          return Function.call.apply(arguments[0][name], arguments);
    88        } finally {
    89          $stackDepthOffset++;
    90        }
    91      };
    92    }
    93    return expr;
    94  };
    95  
    96  var $subslice = function(slice, low, high, max) {
    97    if (high === undefined) {
    98      high = slice.$length;
    99    }
   100    if (max === undefined) {
   101      max = slice.$capacity;
   102    }
   103    if (low < 0 || high < low || max < high || high > slice.$capacity || max > slice.$capacity) {
   104      $throwRuntimeError("slice bounds out of range");
   105    }
   106    var s = new slice.constructor(slice.$array);
   107    s.$offset = slice.$offset + low;
   108    s.$length = high - low;
   109    s.$capacity = max - low;
   110    return s;
   111  };
   112  
   113  var $substring = function(str, low, high) {
   114    if (low < 0 || high < low || high > str.length) {
   115      $throwRuntimeError("slice bounds out of range");
   116    }
   117    return str.substring(low, high);
   118  };
   119  
   120  var $sliceToArray = function(slice) {
   121    if (slice.$array.constructor !== Array) {
   122      return slice.$array.subarray(slice.$offset, slice.$offset + slice.$length);
   123    }
   124    return slice.$array.slice(slice.$offset, slice.$offset + slice.$length);
   125  };
   126  
   127  var $decodeRune = function(str, pos) {
   128    var c0 = str.charCodeAt(pos);
   129  
   130    if (c0 < 0x80) {
   131      return [c0, 1];
   132    }
   133  
   134    if (c0 !== c0 || c0 < 0xC0) {
   135      return [0xFFFD, 1];
   136    }
   137  
   138    var c1 = str.charCodeAt(pos + 1);
   139    if (c1 !== c1 || c1 < 0x80 || 0xC0 <= c1) {
   140      return [0xFFFD, 1];
   141    }
   142  
   143    if (c0 < 0xE0) {
   144      var r = (c0 & 0x1F) << 6 | (c1 & 0x3F);
   145      if (r <= 0x7F) {
   146        return [0xFFFD, 1];
   147      }
   148      return [r, 2];
   149    }
   150  
   151    var c2 = str.charCodeAt(pos + 2);
   152    if (c2 !== c2 || c2 < 0x80 || 0xC0 <= c2) {
   153      return [0xFFFD, 1];
   154    }
   155  
   156    if (c0 < 0xF0) {
   157      var r = (c0 & 0x0F) << 12 | (c1 & 0x3F) << 6 | (c2 & 0x3F);
   158      if (r <= 0x7FF) {
   159        return [0xFFFD, 1];
   160      }
   161      if (0xD800 <= r && r <= 0xDFFF) {
   162        return [0xFFFD, 1];
   163      }
   164      return [r, 3];
   165    }
   166  
   167    var c3 = str.charCodeAt(pos + 3);
   168    if (c3 !== c3 || c3 < 0x80 || 0xC0 <= c3) {
   169      return [0xFFFD, 1];
   170    }
   171  
   172    if (c0 < 0xF8) {
   173      var r = (c0 & 0x07) << 18 | (c1 & 0x3F) << 12 | (c2 & 0x3F) << 6 | (c3 & 0x3F);
   174      if (r <= 0xFFFF || 0x10FFFF < r) {
   175        return [0xFFFD, 1];
   176      }
   177      return [r, 4];
   178    }
   179  
   180    return [0xFFFD, 1];
   181  };
   182  
   183  var $encodeRune = function(r) {
   184    if (r < 0 || r > 0x10FFFF || (0xD800 <= r && r <= 0xDFFF)) {
   185      r = 0xFFFD;
   186    }
   187    if (r <= 0x7F) {
   188      return String.fromCharCode(r);
   189    }
   190    if (r <= 0x7FF) {
   191      return String.fromCharCode(0xC0 | r >> 6, 0x80 | (r & 0x3F));
   192    }
   193    if (r <= 0xFFFF) {
   194      return String.fromCharCode(0xE0 | r >> 12, 0x80 | (r >> 6 & 0x3F), 0x80 | (r & 0x3F));
   195    }
   196    return String.fromCharCode(0xF0 | r >> 18, 0x80 | (r >> 12 & 0x3F), 0x80 | (r >> 6 & 0x3F), 0x80 | (r & 0x3F));
   197  };
   198  
   199  var $stringToBytes = function(str) {
   200    var array = new Uint8Array(str.length);
   201    for (var i = 0; i < str.length; i++) {
   202      array[i] = str.charCodeAt(i);
   203    }
   204    return array;
   205  };
   206  
   207  var $bytesToString = function(slice) {
   208    if (slice.$length === 0) {
   209      return "";
   210    }
   211    var str = "";
   212    for (var i = 0; i < slice.$length; i += 10000) {
   213      str += String.fromCharCode.apply(undefined, slice.$array.subarray(slice.$offset + i, slice.$offset + Math.min(slice.$length, i + 10000)));
   214    }
   215    return str;
   216  };
   217  
   218  var $stringToRunes = function(str) {
   219    var array = new Int32Array(str.length);
   220    var rune, j = 0;
   221    for (var i = 0; i < str.length; i += rune[1], j++) {
   222      rune = $decodeRune(str, i);
   223      array[j] = rune[0];
   224    }
   225    return array.subarray(0, j);
   226  };
   227  
   228  var $runesToString = function(slice) {
   229    if (slice.$length === 0) {
   230      return "";
   231    }
   232    var str = "";
   233    for (var i = 0; i < slice.$length; i++) {
   234      str += $encodeRune(slice.$array[slice.$offset + i]);
   235    }
   236    return str;
   237  };
   238  
   239  var $copyString = function(dst, src) {
   240    var n = Math.min(src.length, dst.$length);
   241    for (var i = 0; i < n; i++) {
   242      dst.$array[dst.$offset + i] = src.charCodeAt(i);
   243    }
   244    return n;
   245  };
   246  
   247  var $copySlice = function(dst, src) {
   248    var n = Math.min(src.$length, dst.$length);
   249    $copyArray(dst.$array, src.$array, dst.$offset, src.$offset, n, dst.constructor.elem);
   250    return n;
   251  };
   252  
   253  var $copyArray = function(dst, src, dstOffset, srcOffset, n, elem) {
   254    if (n === 0 || (dst === src && dstOffset === srcOffset)) {
   255      return;
   256    }
   257  
   258    if (src.subarray) {
   259      dst.set(src.subarray(srcOffset, srcOffset + n), dstOffset);
   260      return;
   261    }
   262  
   263    switch (elem.kind) {
   264    case $kindArray:
   265    case $kindStruct:
   266      if (dst === src && dstOffset > srcOffset) {
   267        for (var i = n - 1; i >= 0; i--) {
   268          elem.copy(dst[dstOffset + i], src[srcOffset + i]);
   269        }
   270        return;
   271      }
   272      for (var i = 0; i < n; i++) {
   273        elem.copy(dst[dstOffset + i], src[srcOffset + i]);
   274      }
   275      return;
   276    }
   277  
   278    if (dst === src && dstOffset > srcOffset) {
   279      for (var i = n - 1; i >= 0; i--) {
   280        dst[dstOffset + i] = src[srcOffset + i];
   281      }
   282      return;
   283    }
   284    for (var i = 0; i < n; i++) {
   285      dst[dstOffset + i] = src[srcOffset + i];
   286    }
   287  };
   288  
   289  var $clone = function(src, type) {
   290    var clone = type.zero();
   291    type.copy(clone, src);
   292    return clone;
   293  };
   294  
   295  var $pointerOfStructConversion = function(obj, type) {
   296    if(obj.$proxies === undefined) {
   297      obj.$proxies = {};
   298      obj.$proxies[obj.constructor.string] = obj;
   299    }
   300    var proxy = obj.$proxies[type.string];
   301    if (proxy === undefined) {
   302      var properties = {};
   303      for (var i = 0; i < type.elem.fields.length; i++) {
   304        (function(fieldProp) {
   305          properties[fieldProp] = {
   306            get: function() { return obj[fieldProp]; },
   307            set: function(value) { obj[fieldProp] = value; }
   308          };
   309        })(type.elem.fields[i].prop);
   310      }
   311      proxy = Object.create(type.prototype, properties);
   312      proxy.$val = proxy;
   313      obj.$proxies[type.string] = proxy;
   314      proxy.$proxies = obj.$proxies;
   315    }
   316    return proxy;
   317  };
   318  
   319  var $append = function(slice) {
   320    return $internalAppend(slice, arguments, 1, arguments.length - 1);
   321  };
   322  
   323  var $appendSlice = function(slice, toAppend) {
   324    if (toAppend.constructor === String) {
   325      var bytes = $stringToBytes(toAppend);
   326      return $internalAppend(slice, bytes, 0, bytes.length);
   327    }
   328    return $internalAppend(slice, toAppend.$array, toAppend.$offset, toAppend.$length);
   329  };
   330  
   331  var $internalAppend = function(slice, array, offset, length) {
   332    if (length === 0) {
   333      return slice;
   334    }
   335  
   336    var newArray = slice.$array;
   337    var newOffset = slice.$offset;
   338    var newLength = slice.$length + length;
   339    var newCapacity = slice.$capacity;
   340  
   341    if (newLength > newCapacity) {
   342      newOffset = 0;
   343      newCapacity = Math.max(newLength, slice.$capacity < 1024 ? slice.$capacity * 2 : Math.floor(slice.$capacity * 5 / 4));
   344  
   345      if (slice.$array.constructor === Array) {
   346        newArray = slice.$array.slice(slice.$offset, slice.$offset + slice.$length);
   347        newArray.length = newCapacity;
   348        var zero = slice.constructor.elem.zero;
   349        for (var i = slice.$length; i < newCapacity; i++) {
   350          newArray[i] = zero();
   351        }
   352      } else {
   353        newArray = new slice.$array.constructor(newCapacity);
   354        newArray.set(slice.$array.subarray(slice.$offset, slice.$offset + slice.$length));
   355      }
   356    }
   357  
   358    $copyArray(newArray, array, newOffset + slice.$length, offset, length, slice.constructor.elem);
   359  
   360    var newSlice = new slice.constructor(newArray);
   361    newSlice.$offset = newOffset;
   362    newSlice.$length = newLength;
   363    newSlice.$capacity = newCapacity;
   364    return newSlice;
   365  };
   366  
   367  var $equal = function(a, b, type) {
   368    if (type === $jsObjectPtr) {
   369      return a === b;
   370    }
   371    switch (type.kind) {
   372    case $kindComplex64:
   373    case $kindComplex128:
   374      return a.$real === b.$real && a.$imag === b.$imag;
   375    case $kindInt64:
   376    case $kindUint64:
   377      return a.$high === b.$high && a.$low === b.$low;
   378    case $kindArray:
   379      if (a.length !== b.length) {
   380        return false;
   381      }
   382      for (var i = 0; i < a.length; i++) {
   383        if (!$equal(a[i], b[i], type.elem)) {
   384          return false;
   385        }
   386      }
   387      return true;
   388    case $kindStruct:
   389      for (var i = 0; i < type.fields.length; i++) {
   390        var f = type.fields[i];
   391        if (!$equal(a[f.prop], b[f.prop], f.typ)) {
   392          return false;
   393        }
   394      }
   395      return true;
   396    case $kindInterface:
   397      return $interfaceIsEqual(a, b);
   398    default:
   399      return a === b;
   400    }
   401  };
   402  
   403  var $interfaceIsEqual = function(a, b) {
   404    if (a === $ifaceNil || b === $ifaceNil) {
   405      return a === b;
   406    }
   407    if (a.constructor !== b.constructor) {
   408      return false;
   409    }
   410    if (a.constructor === $jsObjectPtr) {
   411      return a.object === b.object;
   412    }
   413    if (!a.constructor.comparable) {
   414      $throwRuntimeError("comparing uncomparable type " + a.constructor.string);
   415    }
   416    return $equal(a.$val, b.$val, a.constructor);
   417  };
   418  
   419  var $min = Math.min;
   420  var $mod = function(x, y) { return x % y; };
   421  var $parseInt = parseInt;
   422  var $parseFloat = function(f) {
   423    if (f !== undefined && f !== null && f.constructor === Number) {
   424      return f;
   425    }
   426    return parseFloat(f);
   427  };
   428  
   429  var $froundBuf = new Float32Array(1);
   430  var $fround = Math.fround || function(f) {
   431    $froundBuf[0] = f;
   432    return $froundBuf[0];
   433  };
   434  
   435  var $imul = Math.imul || function(a, b) {
   436    var ah = (a >>> 16) & 0xffff;
   437    var al = a & 0xffff;
   438    var bh = (b >>> 16) & 0xffff;
   439    var bl = b & 0xffff;
   440    return ((al * bl) + (((ah * bl + al * bh) << 16) >>> 0) >> 0);
   441  };
   442  
   443  var $floatKey = function(f) {
   444    if (f !== f) {
   445      $idCounter++;
   446      return "NaN$" + $idCounter;
   447    }
   448    return String(f);
   449  };
   450  
   451  var $flatten64 = function(x) {
   452    return x.$high * 4294967296 + x.$low;
   453  };
   454  
   455  var $shiftLeft64 = function(x, y) {
   456    if (y === 0) {
   457      return x;
   458    }
   459    if (y < 32) {
   460      return new x.constructor(x.$high << y | x.$low >>> (32 - y), (x.$low << y) >>> 0);
   461    }
   462    if (y < 64) {
   463      return new x.constructor(x.$low << (y - 32), 0);
   464    }
   465    return new x.constructor(0, 0);
   466  };
   467  
   468  var $shiftRightInt64 = function(x, y) {
   469    if (y === 0) {
   470      return x;
   471    }
   472    if (y < 32) {
   473      return new x.constructor(x.$high >> y, (x.$low >>> y | x.$high << (32 - y)) >>> 0);
   474    }
   475    if (y < 64) {
   476      return new x.constructor(x.$high >> 31, (x.$high >> (y - 32)) >>> 0);
   477    }
   478    if (x.$high < 0) {
   479      return new x.constructor(-1, 4294967295);
   480    }
   481    return new x.constructor(0, 0);
   482  };
   483  
   484  var $shiftRightUint64 = function(x, y) {
   485    if (y === 0) {
   486      return x;
   487    }
   488    if (y < 32) {
   489      return new x.constructor(x.$high >>> y, (x.$low >>> y | x.$high << (32 - y)) >>> 0);
   490    }
   491    if (y < 64) {
   492      return new x.constructor(0, x.$high >>> (y - 32));
   493    }
   494    return new x.constructor(0, 0);
   495  };
   496  
   497  var $mul64 = function(x, y) {
   498    var high = 0, low = 0;
   499    if ((y.$low & 1) !== 0) {
   500      high = x.$high;
   501      low = x.$low;
   502    }
   503    for (var i = 1; i < 32; i++) {
   504      if ((y.$low & 1<<i) !== 0) {
   505        high += x.$high << i | x.$low >>> (32 - i);
   506        low += (x.$low << i) >>> 0;
   507      }
   508    }
   509    for (var i = 0; i < 32; i++) {
   510      if ((y.$high & 1<<i) !== 0) {
   511        high += x.$low << i;
   512      }
   513    }
   514    return new x.constructor(high, low);
   515  };
   516  
   517  var $div64 = function(x, y, returnRemainder) {
   518    if (y.$high === 0 && y.$low === 0) {
   519      $throwRuntimeError("integer divide by zero");
   520    }
   521  
   522    var s = 1;
   523    var rs = 1;
   524  
   525    var xHigh = x.$high;
   526    var xLow = x.$low;
   527    if (xHigh < 0) {
   528      s = -1;
   529      rs = -1;
   530      xHigh = -xHigh;
   531      if (xLow !== 0) {
   532        xHigh--;
   533        xLow = 4294967296 - xLow;
   534      }
   535    }
   536  
   537    var yHigh = y.$high;
   538    var yLow = y.$low;
   539    if (y.$high < 0) {
   540      s *= -1;
   541      yHigh = -yHigh;
   542      if (yLow !== 0) {
   543        yHigh--;
   544        yLow = 4294967296 - yLow;
   545      }
   546    }
   547  
   548    var high = 0, low = 0, n = 0;
   549    while (yHigh < 2147483648 && ((xHigh > yHigh) || (xHigh === yHigh && xLow > yLow))) {
   550      yHigh = (yHigh << 1 | yLow >>> 31) >>> 0;
   551      yLow = (yLow << 1) >>> 0;
   552      n++;
   553    }
   554    for (var i = 0; i <= n; i++) {
   555      high = high << 1 | low >>> 31;
   556      low = (low << 1) >>> 0;
   557      if ((xHigh > yHigh) || (xHigh === yHigh && xLow >= yLow)) {
   558        xHigh = xHigh - yHigh;
   559        xLow = xLow - yLow;
   560        if (xLow < 0) {
   561          xHigh--;
   562          xLow += 4294967296;
   563        }
   564        low++;
   565        if (low === 4294967296) {
   566          high++;
   567          low = 0;
   568        }
   569      }
   570      yLow = (yLow >>> 1 | yHigh << (32 - 1)) >>> 0;
   571      yHigh = yHigh >>> 1;
   572    }
   573  
   574    if (returnRemainder) {
   575      return new x.constructor(xHigh * rs, xLow * rs);
   576    }
   577    return new x.constructor(high * s, low * s);
   578  };
   579  
   580  var $divComplex = function(n, d) {
   581    var ninf = n.$real === Infinity || n.$real === -Infinity || n.$imag === Infinity || n.$imag === -Infinity;
   582    var dinf = d.$real === Infinity || d.$real === -Infinity || d.$imag === Infinity || d.$imag === -Infinity;
   583    var nnan = !ninf && (n.$real !== n.$real || n.$imag !== n.$imag);
   584    var dnan = !dinf && (d.$real !== d.$real || d.$imag !== d.$imag);
   585    if(nnan || dnan) {
   586      return new n.constructor(NaN, NaN);
   587    }
   588    if (ninf && !dinf) {
   589      return new n.constructor(Infinity, Infinity);
   590    }
   591    if (!ninf && dinf) {
   592      return new n.constructor(0, 0);
   593    }
   594    if (d.$real === 0 && d.$imag === 0) {
   595      if (n.$real === 0 && n.$imag === 0) {
   596        return new n.constructor(NaN, NaN);
   597      }
   598      return new n.constructor(Infinity, Infinity);
   599    }
   600    var a = Math.abs(d.$real);
   601    var b = Math.abs(d.$imag);
   602    if (a <= b) {
   603      var ratio = d.$real / d.$imag;
   604      var denom = d.$real * ratio + d.$imag;
   605      return new n.constructor((n.$real * ratio + n.$imag) / denom, (n.$imag * ratio - n.$real) / denom);
   606    }
   607    var ratio = d.$imag / d.$real;
   608    var denom = d.$imag * ratio + d.$real;
   609    return new n.constructor((n.$imag * ratio + n.$real) / denom, (n.$imag - n.$real * ratio) / denom);
   610  };
   611  
   612  var $kindBool = 1;
   613  var $kindInt = 2;
   614  var $kindInt8 = 3;
   615  var $kindInt16 = 4;
   616  var $kindInt32 = 5;
   617  var $kindInt64 = 6;
   618  var $kindUint = 7;
   619  var $kindUint8 = 8;
   620  var $kindUint16 = 9;
   621  var $kindUint32 = 10;
   622  var $kindUint64 = 11;
   623  var $kindUintptr = 12;
   624  var $kindFloat32 = 13;
   625  var $kindFloat64 = 14;
   626  var $kindComplex64 = 15;
   627  var $kindComplex128 = 16;
   628  var $kindArray = 17;
   629  var $kindChan = 18;
   630  var $kindFunc = 19;
   631  var $kindInterface = 20;
   632  var $kindMap = 21;
   633  var $kindPtr = 22;
   634  var $kindSlice = 23;
   635  var $kindString = 24;
   636  var $kindStruct = 25;
   637  var $kindUnsafePointer = 26;
   638  
   639  var $methodSynthesizers = [];
   640  var $addMethodSynthesizer = function(f) {
   641    if ($methodSynthesizers === null) {
   642      f();
   643      return;
   644    }
   645    $methodSynthesizers.push(f);
   646  };
   647  var $synthesizeMethods = function() {
   648    $methodSynthesizers.forEach(function(f) { f(); });
   649    $methodSynthesizers = null;
   650  };
   651  
   652  var $ifaceKeyFor = function(x) {
   653    if (x === $ifaceNil) {
   654      return 'nil';
   655    }
   656    var c = x.constructor;
   657    return c.string + '$' + c.keyFor(x.$val);
   658  };
   659  
   660  var $identity = function(x) { return x; };
   661  
   662  var $typeIDCounter = 0;
   663  
   664  var $idKey = function(x) {
   665    if (x.$id === undefined) {
   666      $idCounter++;
   667      x.$id = $idCounter;
   668    }
   669    return String(x.$id);
   670  };
   671  
   672  var $newType = function(size, kind, string, named, pkg, exported, constructor) {
   673    var typ;
   674    switch(kind) {
   675    case $kindBool:
   676    case $kindInt:
   677    case $kindInt8:
   678    case $kindInt16:
   679    case $kindInt32:
   680    case $kindUint:
   681    case $kindUint8:
   682    case $kindUint16:
   683    case $kindUint32:
   684    case $kindUintptr:
   685    case $kindUnsafePointer:
   686      typ = function(v) { this.$val = v; };
   687      typ.wrapped = true;
   688      typ.keyFor = $identity;
   689      break;
   690  
   691    case $kindString:
   692      typ = function(v) { this.$val = v; };
   693      typ.wrapped = true;
   694      typ.keyFor = function(x) { return "$" + x; };
   695      break;
   696  
   697    case $kindFloat32:
   698    case $kindFloat64:
   699      typ = function(v) { this.$val = v; };
   700      typ.wrapped = true;
   701      typ.keyFor = function(x) { return $floatKey(x); };
   702      break;
   703  
   704    case $kindInt64:
   705      typ = function(high, low) {
   706        this.$high = (high + Math.floor(Math.ceil(low) / 4294967296)) >> 0;
   707        this.$low = low >>> 0;
   708        this.$val = this;
   709      };
   710      typ.keyFor = function(x) { return x.$high + "$" + x.$low; };
   711      break;
   712  
   713    case $kindUint64:
   714      typ = function(high, low) {
   715        this.$high = (high + Math.floor(Math.ceil(low) / 4294967296)) >>> 0;
   716        this.$low = low >>> 0;
   717        this.$val = this;
   718      };
   719      typ.keyFor = function(x) { return x.$high + "$" + x.$low; };
   720      break;
   721  
   722    case $kindComplex64:
   723      typ = function(real, imag) {
   724        this.$real = $fround(real);
   725        this.$imag = $fround(imag);
   726        this.$val = this;
   727      };
   728      typ.keyFor = function(x) { return x.$real + "$" + x.$imag; };
   729      break;
   730  
   731    case $kindComplex128:
   732      typ = function(real, imag) {
   733        this.$real = real;
   734        this.$imag = imag;
   735        this.$val = this;
   736      };
   737      typ.keyFor = function(x) { return x.$real + "$" + x.$imag; };
   738      break;
   739  
   740    case $kindArray:
   741      typ = function(v) { this.$val = v; };
   742      typ.wrapped = true;
   743      typ.ptr = $newType(4, $kindPtr, "*" + string, false, "", false, function(array) {
   744        this.$get = function() { return array; };
   745        this.$set = function(v) { typ.copy(this, v); };
   746        this.$val = array;
   747      });
   748      typ.init = function(elem, len) {
   749        typ.elem = elem;
   750        typ.len = len;
   751        typ.comparable = elem.comparable;
   752        typ.keyFor = function(x) {
   753          return Array.prototype.join.call($mapArray(x, function(e) {
   754            return String(elem.keyFor(e)).replace(/\\/g, "\\\\").replace(/\$/g, "\\$");
   755          }), "$");
   756        };
   757        typ.copy = function(dst, src) {
   758          $copyArray(dst, src, 0, 0, src.length, elem);
   759        };
   760        typ.ptr.init(typ);
   761        Object.defineProperty(typ.ptr.nil, "nilCheck", { get: $throwNilPointerError });
   762      };
   763      break;
   764  
   765    case $kindChan:
   766      typ = function(v) { this.$val = v; };
   767      typ.wrapped = true;
   768      typ.keyFor = $idKey;
   769      typ.init = function(elem, sendOnly, recvOnly) {
   770        typ.elem = elem;
   771        typ.sendOnly = sendOnly;
   772        typ.recvOnly = recvOnly;
   773      };
   774      break;
   775  
   776    case $kindFunc:
   777      typ = function(v) { this.$val = v; };
   778      typ.wrapped = true;
   779      typ.init = function(params, results, variadic) {
   780        typ.params = params;
   781        typ.results = results;
   782        typ.variadic = variadic;
   783        typ.comparable = false;
   784      };
   785      break;
   786  
   787    case $kindInterface:
   788      typ = { implementedBy: {}, missingMethodFor: {} };
   789      typ.keyFor = $ifaceKeyFor;
   790      typ.init = function(methods) {
   791        typ.methods = methods;
   792        methods.forEach(function(m) {
   793          $ifaceNil[m.prop] = $throwNilPointerError;
   794        });
   795      };
   796      break;
   797  
   798    case $kindMap:
   799      typ = function(v) { this.$val = v; };
   800      typ.wrapped = true;
   801      typ.init = function(key, elem) {
   802        typ.key = key;
   803        typ.elem = elem;
   804        typ.comparable = false;
   805      };
   806      break;
   807  
   808    case $kindPtr:
   809      typ = constructor || function(getter, setter, target) {
   810        this.$get = getter;
   811        this.$set = setter;
   812        this.$target = target;
   813        this.$val = this;
   814      };
   815      typ.keyFor = $idKey;
   816      typ.init = function(elem) {
   817        typ.elem = elem;
   818        typ.wrapped = (elem.kind === $kindArray);
   819        typ.nil = new typ($throwNilPointerError, $throwNilPointerError);
   820      };
   821      break;
   822  
   823    case $kindSlice:
   824      typ = function(array) {
   825        if (array.constructor !== typ.nativeArray) {
   826          array = new typ.nativeArray(array);
   827        }
   828        this.$array = array;
   829        this.$offset = 0;
   830        this.$length = array.length;
   831        this.$capacity = array.length;
   832        this.$val = this;
   833      };
   834      typ.init = function(elem) {
   835        typ.elem = elem;
   836        typ.comparable = false;
   837        typ.nativeArray = $nativeArray(elem.kind);
   838        typ.nil = new typ([]);
   839      };
   840      break;
   841  
   842    case $kindStruct:
   843      typ = function(v) { this.$val = v; };
   844      typ.wrapped = true;
   845      typ.ptr = $newType(4, $kindPtr, "*" + string, false, pkg, exported, constructor);
   846      typ.ptr.elem = typ;
   847      typ.ptr.prototype.$get = function() { return this; };
   848      typ.ptr.prototype.$set = function(v) { typ.copy(this, v); };
   849      typ.init = function(pkgPath, fields) {
   850        typ.pkgPath = pkgPath;
   851        typ.fields = fields;
   852        fields.forEach(function(f) {
   853          if (!f.typ.comparable) {
   854            typ.comparable = false;
   855          }
   856        });
   857        typ.keyFor = function(x) {
   858          var val = x.$val;
   859          return $mapArray(fields, function(f) {
   860            return String(f.typ.keyFor(val[f.prop])).replace(/\\/g, "\\\\").replace(/\$/g, "\\$");
   861          }).join("$");
   862        };
   863        typ.copy = function(dst, src) {
   864          for (var i = 0; i < fields.length; i++) {
   865            var f = fields[i];
   866            switch (f.typ.kind) {
   867            case $kindArray:
   868            case $kindStruct:
   869              f.typ.copy(dst[f.prop], src[f.prop]);
   870              continue;
   871            default:
   872              dst[f.prop] = src[f.prop];
   873              continue;
   874            }
   875          }
   876        };
   877        /* nil value */
   878        var properties = {};
   879        fields.forEach(function(f) {
   880          properties[f.prop] = { get: $throwNilPointerError, set: $throwNilPointerError };
   881        });
   882        typ.ptr.nil = Object.create(constructor.prototype, properties);
   883        typ.ptr.nil.$val = typ.ptr.nil;
   884        /* methods for embedded fields */
   885        $addMethodSynthesizer(function() {
   886          var synthesizeMethod = function(target, m, f) {
   887            if (target.prototype[m.prop] !== undefined) { return; }
   888            target.prototype[m.prop] = function() {
   889              var v = this.$val[f.prop];
   890              if (f.typ === $jsObjectPtr) {
   891                v = new $jsObjectPtr(v);
   892              }
   893              if (v.$val === undefined) {
   894                v = new f.typ(v);
   895              }
   896              return v[m.prop].apply(v, arguments);
   897            };
   898          };
   899          fields.forEach(function(f) {
   900            if (f.anonymous) {
   901              $methodSet(f.typ).forEach(function(m) {
   902                synthesizeMethod(typ, m, f);
   903                synthesizeMethod(typ.ptr, m, f);
   904              });
   905              $methodSet($ptrType(f.typ)).forEach(function(m) {
   906                synthesizeMethod(typ.ptr, m, f);
   907              });
   908            }
   909          });
   910        });
   911      };
   912      break;
   913  
   914    default:
   915      $panic(new $String("invalid kind: " + kind));
   916    }
   917  
   918    switch (kind) {
   919    case $kindBool:
   920    case $kindMap:
   921      typ.zero = function() { return false; };
   922      break;
   923  
   924    case $kindInt:
   925    case $kindInt8:
   926    case $kindInt16:
   927    case $kindInt32:
   928    case $kindUint:
   929    case $kindUint8 :
   930    case $kindUint16:
   931    case $kindUint32:
   932    case $kindUintptr:
   933    case $kindUnsafePointer:
   934    case $kindFloat32:
   935    case $kindFloat64:
   936      typ.zero = function() { return 0; };
   937      break;
   938  
   939    case $kindString:
   940      typ.zero = function() { return ""; };
   941      break;
   942  
   943    case $kindInt64:
   944    case $kindUint64:
   945    case $kindComplex64:
   946    case $kindComplex128:
   947      var zero = new typ(0, 0);
   948      typ.zero = function() { return zero; };
   949      break;
   950  
   951    case $kindPtr:
   952    case $kindSlice:
   953      typ.zero = function() { return typ.nil; };
   954      break;
   955  
   956    case $kindChan:
   957      typ.zero = function() { return $chanNil; };
   958      break;
   959  
   960    case $kindFunc:
   961      typ.zero = function() { return $throwNilPointerError; };
   962      break;
   963  
   964    case $kindInterface:
   965      typ.zero = function() { return $ifaceNil; };
   966      break;
   967  
   968    case $kindArray:
   969      typ.zero = function() {
   970        var arrayClass = $nativeArray(typ.elem.kind);
   971        if (arrayClass !== Array) {
   972          return new arrayClass(typ.len);
   973        }
   974        var array = new Array(typ.len);
   975        for (var i = 0; i < typ.len; i++) {
   976          array[i] = typ.elem.zero();
   977        }
   978        return array;
   979      };
   980      break;
   981  
   982    case $kindStruct:
   983      typ.zero = function() { return new typ.ptr(); };
   984      break;
   985  
   986    default:
   987      $panic(new $String("invalid kind: " + kind));
   988    }
   989  
   990    typ.id = $typeIDCounter;
   991    $typeIDCounter++;
   992    typ.size = size;
   993    typ.kind = kind;
   994    typ.string = string;
   995    typ.named = named;
   996    typ.pkg = pkg;
   997    typ.exported = exported;
   998    typ.methods = [];
   999    typ.methodSetCache = null;
  1000    typ.comparable = true;
  1001    return typ;
  1002  };
  1003  
  1004  var $methodSet = function(typ) {
  1005    if (typ.methodSetCache !== null) {
  1006      return typ.methodSetCache;
  1007    }
  1008    var base = {};
  1009  
  1010    var isPtr = (typ.kind === $kindPtr);
  1011    if (isPtr && typ.elem.kind === $kindInterface) {
  1012      typ.methodSetCache = [];
  1013      return [];
  1014    }
  1015  
  1016    var current = [{typ: isPtr ? typ.elem : typ, indirect: isPtr}];
  1017  
  1018    var seen = {};
  1019  
  1020    while (current.length > 0) {
  1021      var next = [];
  1022      var mset = [];
  1023  
  1024      current.forEach(function(e) {
  1025        if (seen[e.typ.string]) {
  1026          return;
  1027        }
  1028        seen[e.typ.string] = true;
  1029  
  1030        if (e.typ.named) {
  1031          mset = mset.concat(e.typ.methods);
  1032          if (e.indirect) {
  1033            mset = mset.concat($ptrType(e.typ).methods);
  1034          }
  1035        }
  1036  
  1037        switch (e.typ.kind) {
  1038        case $kindStruct:
  1039          e.typ.fields.forEach(function(f) {
  1040            if (f.anonymous) {
  1041              var fTyp = f.typ;
  1042              var fIsPtr = (fTyp.kind === $kindPtr);
  1043              next.push({typ: fIsPtr ? fTyp.elem : fTyp, indirect: e.indirect || fIsPtr});
  1044            }
  1045          });
  1046          break;
  1047  
  1048        case $kindInterface:
  1049          mset = mset.concat(e.typ.methods);
  1050          break;
  1051        }
  1052      });
  1053  
  1054      mset.forEach(function(m) {
  1055        if (base[m.name] === undefined) {
  1056          base[m.name] = m;
  1057        }
  1058      });
  1059  
  1060      current = next;
  1061    }
  1062  
  1063    typ.methodSetCache = [];
  1064    Object.keys(base).sort().forEach(function(name) {
  1065      typ.methodSetCache.push(base[name]);
  1066    });
  1067    return typ.methodSetCache;
  1068  };
  1069  
  1070  var $Bool          = $newType( 1, $kindBool,          "bool",           true, "", false, null);
  1071  var $Int           = $newType( 4, $kindInt,           "int",            true, "", false, null);
  1072  var $Int8          = $newType( 1, $kindInt8,          "int8",           true, "", false, null);
  1073  var $Int16         = $newType( 2, $kindInt16,         "int16",          true, "", false, null);
  1074  var $Int32         = $newType( 4, $kindInt32,         "int32",          true, "", false, null);
  1075  var $Int64         = $newType( 8, $kindInt64,         "int64",          true, "", false, null);
  1076  var $Uint          = $newType( 4, $kindUint,          "uint",           true, "", false, null);
  1077  var $Uint8         = $newType( 1, $kindUint8,         "uint8",          true, "", false, null);
  1078  var $Uint16        = $newType( 2, $kindUint16,        "uint16",         true, "", false, null);
  1079  var $Uint32        = $newType( 4, $kindUint32,        "uint32",         true, "", false, null);
  1080  var $Uint64        = $newType( 8, $kindUint64,        "uint64",         true, "", false, null);
  1081  var $Uintptr       = $newType( 4, $kindUintptr,       "uintptr",        true, "", false, null);
  1082  var $Float32       = $newType( 4, $kindFloat32,       "float32",        true, "", false, null);
  1083  var $Float64       = $newType( 8, $kindFloat64,       "float64",        true, "", false, null);
  1084  var $Complex64     = $newType( 8, $kindComplex64,     "complex64",      true, "", false, null);
  1085  var $Complex128    = $newType(16, $kindComplex128,    "complex128",     true, "", false, null);
  1086  var $String        = $newType( 8, $kindString,        "string",         true, "", false, null);
  1087  var $UnsafePointer = $newType( 4, $kindUnsafePointer, "unsafe.Pointer", true, "", false, null);
  1088  
  1089  var $nativeArray = function(elemKind) {
  1090    switch (elemKind) {
  1091    case $kindInt:
  1092      return Int32Array;
  1093    case $kindInt8:
  1094      return Int8Array;
  1095    case $kindInt16:
  1096      return Int16Array;
  1097    case $kindInt32:
  1098      return Int32Array;
  1099    case $kindUint:
  1100      return Uint32Array;
  1101    case $kindUint8:
  1102      return Uint8Array;
  1103    case $kindUint16:
  1104      return Uint16Array;
  1105    case $kindUint32:
  1106      return Uint32Array;
  1107    case $kindUintptr:
  1108      return Uint32Array;
  1109    case $kindFloat32:
  1110      return Float32Array;
  1111    case $kindFloat64:
  1112      return Float64Array;
  1113    default:
  1114      return Array;
  1115    }
  1116  };
  1117  var $toNativeArray = function(elemKind, array) {
  1118    var nativeArray = $nativeArray(elemKind);
  1119    if (nativeArray === Array) {
  1120      return array;
  1121    }
  1122    return new nativeArray(array);
  1123  };
  1124  var $arrayTypes = {};
  1125  var $arrayType = function(elem, len) {
  1126    var typeKey = elem.id + "$" + len;
  1127    var typ = $arrayTypes[typeKey];
  1128    if (typ === undefined) {
  1129      typ = $newType(12, $kindArray, "[" + len + "]" + elem.string, false, "", false, null);
  1130      $arrayTypes[typeKey] = typ;
  1131      typ.init(elem, len);
  1132    }
  1133    return typ;
  1134  };
  1135  
  1136  var $chanType = function(elem, sendOnly, recvOnly) {
  1137    var string = (recvOnly ? "<-" : "") + "chan" + (sendOnly ? "<- " : " ") + elem.string;
  1138    var field = sendOnly ? "SendChan" : (recvOnly ? "RecvChan" : "Chan");
  1139    var typ = elem[field];
  1140    if (typ === undefined) {
  1141      typ = $newType(4, $kindChan, string, false, "", false, null);
  1142      elem[field] = typ;
  1143      typ.init(elem, sendOnly, recvOnly);
  1144    }
  1145    return typ;
  1146  };
  1147  var $Chan = function(elem, capacity) {
  1148    if (capacity < 0 || capacity > 2147483647) {
  1149      $throwRuntimeError("makechan: size out of range");
  1150    }
  1151    this.$elem = elem;
  1152    this.$capacity = capacity;
  1153    this.$buffer = [];
  1154    this.$sendQueue = [];
  1155    this.$recvQueue = [];
  1156    this.$closed = false;
  1157  };
  1158  var $chanNil = new $Chan(null, 0);
  1159  $chanNil.$sendQueue = $chanNil.$recvQueue = { length: 0, push: function() {}, shift: function() { return undefined; }, indexOf: function() { return -1; } };
  1160  
  1161  var $funcTypes = {};
  1162  var $funcType = function(params, results, variadic) {
  1163    var typeKey = $mapArray(params, function(p) { return p.id; }).join(",") + "$" + $mapArray(results, function(r) { return r.id; }).join(",") + "$" + variadic;
  1164    var typ = $funcTypes[typeKey];
  1165    if (typ === undefined) {
  1166      var paramTypes = $mapArray(params, function(p) { return p.string; });
  1167      if (variadic) {
  1168        paramTypes[paramTypes.length - 1] = "..." + paramTypes[paramTypes.length - 1].substr(2);
  1169      }
  1170      var string = "func(" + paramTypes.join(", ") + ")";
  1171      if (results.length === 1) {
  1172        string += " " + results[0].string;
  1173      } else if (results.length > 1) {
  1174        string += " (" + $mapArray(results, function(r) { return r.string; }).join(", ") + ")";
  1175      }
  1176      typ = $newType(4, $kindFunc, string, false, "", false, null);
  1177      $funcTypes[typeKey] = typ;
  1178      typ.init(params, results, variadic);
  1179    }
  1180    return typ;
  1181  };
  1182  
  1183  var $interfaceTypes = {};
  1184  var $interfaceType = function(methods) {
  1185    var typeKey = $mapArray(methods, function(m) { return m.pkg + "," + m.name + "," + m.typ.id; }).join("$");
  1186    var typ = $interfaceTypes[typeKey];
  1187    if (typ === undefined) {
  1188      var string = "interface {}";
  1189      if (methods.length !== 0) {
  1190        string = "interface { " + $mapArray(methods, function(m) {
  1191          return (m.pkg !== "" ? m.pkg + "." : "") + m.name + m.typ.string.substr(4);
  1192        }).join("; ") + " }";
  1193      }
  1194      typ = $newType(8, $kindInterface, string, false, "", false, null);
  1195      $interfaceTypes[typeKey] = typ;
  1196      typ.init(methods);
  1197    }
  1198    return typ;
  1199  };
  1200  var $emptyInterface = $interfaceType([]);
  1201  var $ifaceNil = {};
  1202  var $error = $newType(8, $kindInterface, "error", true, "", false, null);
  1203  $error.init([{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}]);
  1204  
  1205  var $mapTypes = {};
  1206  var $mapType = function(key, elem) {
  1207    var typeKey = key.id + "$" + elem.id;
  1208    var typ = $mapTypes[typeKey];
  1209    if (typ === undefined) {
  1210      typ = $newType(4, $kindMap, "map[" + key.string + "]" + elem.string, false, "", false, null);
  1211      $mapTypes[typeKey] = typ;
  1212      typ.init(key, elem);
  1213    }
  1214    return typ;
  1215  };
  1216  var $makeMap = function(keyForFunc, entries) {
  1217    var m = {};
  1218    for (var i = 0; i < entries.length; i++) {
  1219      var e = entries[i];
  1220      m[keyForFunc(e.k)] = e;
  1221    }
  1222    return m;
  1223  };
  1224  
  1225  var $ptrType = function(elem) {
  1226    var typ = elem.ptr;
  1227    if (typ === undefined) {
  1228      typ = $newType(4, $kindPtr, "*" + elem.string, false, "", elem.exported, null);
  1229      elem.ptr = typ;
  1230      typ.init(elem);
  1231    }
  1232    return typ;
  1233  };
  1234  
  1235  var $newDataPointer = function(data, constructor) {
  1236    if (constructor.elem.kind === $kindStruct) {
  1237      return data;
  1238    }
  1239    return new constructor(function() { return data; }, function(v) { data = v; });
  1240  };
  1241  
  1242  var $indexPtr = function(array, index, constructor) {
  1243    array.$ptr = array.$ptr || {};
  1244    return array.$ptr[index] || (array.$ptr[index] = new constructor(function() { return array[index]; }, function(v) { array[index] = v; }));
  1245  };
  1246  
  1247  var $sliceType = function(elem) {
  1248    var typ = elem.slice;
  1249    if (typ === undefined) {
  1250      typ = $newType(12, $kindSlice, "[]" + elem.string, false, "", false, null);
  1251      elem.slice = typ;
  1252      typ.init(elem);
  1253    }
  1254    return typ;
  1255  };
  1256  var $makeSlice = function(typ, length, capacity) {
  1257    capacity = capacity || length;
  1258    if (length < 0 || length > 2147483647) {
  1259      $throwRuntimeError("makeslice: len out of range");
  1260    }
  1261    if (capacity < 0 || capacity < length || capacity > 2147483647) {
  1262      $throwRuntimeError("makeslice: cap out of range");
  1263    }
  1264    var array = new typ.nativeArray(capacity);
  1265    if (typ.nativeArray === Array) {
  1266      for (var i = 0; i < capacity; i++) {
  1267        array[i] = typ.elem.zero();
  1268      }
  1269    }
  1270    var slice = new typ(array);
  1271    slice.$length = length;
  1272    return slice;
  1273  };
  1274  
  1275  var $structTypes = {};
  1276  var $structType = function(pkgPath, fields) {
  1277    var typeKey = $mapArray(fields, function(f) { return f.name + "," + f.typ.id + "," + f.tag; }).join("$");
  1278    var typ = $structTypes[typeKey];
  1279    if (typ === undefined) {
  1280      var string = "struct { " + $mapArray(fields, function(f) {
  1281        return f.name + " " + f.typ.string + (f.tag !== "" ? (" \"" + f.tag.replace(/\\/g, "\\\\").replace(/"/g, "\\\"") + "\"") : "");
  1282      }).join("; ") + " }";
  1283      if (fields.length === 0) {
  1284        string = "struct {}";
  1285      }
  1286      typ = $newType(0, $kindStruct, string, false, "", false, function() {
  1287        this.$val = this;
  1288        for (var i = 0; i < fields.length; i++) {
  1289          var f = fields[i];
  1290          var arg = arguments[i];
  1291          this[f.prop] = arg !== undefined ? arg : f.typ.zero();
  1292        }
  1293      });
  1294      $structTypes[typeKey] = typ;
  1295      typ.init(pkgPath, fields);
  1296    }
  1297    return typ;
  1298  };
  1299  
  1300  var $assertType = function(value, type, returnTuple) {
  1301    var isInterface = (type.kind === $kindInterface), ok, missingMethod = "";
  1302    if (value === $ifaceNil) {
  1303      ok = false;
  1304    } else if (!isInterface) {
  1305      ok = value.constructor === type;
  1306    } else {
  1307      var valueTypeString = value.constructor.string;
  1308      ok = type.implementedBy[valueTypeString];
  1309      if (ok === undefined) {
  1310        ok = true;
  1311        var valueMethodSet = $methodSet(value.constructor);
  1312        var interfaceMethods = type.methods;
  1313        for (var i = 0; i < interfaceMethods.length; i++) {
  1314          var tm = interfaceMethods[i];
  1315          var found = false;
  1316          for (var j = 0; j < valueMethodSet.length; j++) {
  1317            var vm = valueMethodSet[j];
  1318            if (vm.name === tm.name && vm.pkg === tm.pkg && vm.typ === tm.typ) {
  1319              found = true;
  1320              break;
  1321            }
  1322          }
  1323          if (!found) {
  1324            ok = false;
  1325            type.missingMethodFor[valueTypeString] = tm.name;
  1326            break;
  1327          }
  1328        }
  1329        type.implementedBy[valueTypeString] = ok;
  1330      }
  1331      if (!ok) {
  1332        missingMethod = type.missingMethodFor[valueTypeString];
  1333      }
  1334    }
  1335  
  1336    if (!ok) {
  1337      if (returnTuple) {
  1338        return [type.zero(), false];
  1339      }
  1340      $panic(new $packages["runtime"].TypeAssertionError.ptr("", (value === $ifaceNil ? "" : value.constructor.string), type.string, missingMethod));
  1341    }
  1342  
  1343    if (!isInterface) {
  1344      value = value.$val;
  1345    }
  1346    if (type === $jsObjectPtr) {
  1347      value = value.object;
  1348    }
  1349    return returnTuple ? [value, true] : value;
  1350  };
  1351  
  1352  var $stackDepthOffset = 0;
  1353  var $getStackDepth = function() {
  1354    var err = new Error();
  1355    if (err.stack === undefined) {
  1356      return undefined;
  1357    }
  1358    return $stackDepthOffset + err.stack.split("\n").length;
  1359  };
  1360  
  1361  var $panicStackDepth = null, $panicValue;
  1362  var $callDeferred = function(deferred, jsErr, fromPanic) {
  1363    if (!fromPanic && deferred !== null && deferred.index >= $curGoroutine.deferStack.length) {
  1364      throw jsErr;
  1365    }
  1366    if (jsErr !== null) {
  1367      var newErr = null;
  1368      try {
  1369        $curGoroutine.deferStack.push(deferred);
  1370        $panic(new $jsErrorPtr(jsErr));
  1371      } catch (err) {
  1372        newErr = err;
  1373      }
  1374      $curGoroutine.deferStack.pop();
  1375      $callDeferred(deferred, newErr);
  1376      return;
  1377    }
  1378    if ($curGoroutine.asleep) {
  1379      return;
  1380    }
  1381  
  1382    $stackDepthOffset--;
  1383    var outerPanicStackDepth = $panicStackDepth;
  1384    var outerPanicValue = $panicValue;
  1385  
  1386    var localPanicValue = $curGoroutine.panicStack.pop();
  1387    if (localPanicValue !== undefined) {
  1388      $panicStackDepth = $getStackDepth();
  1389      $panicValue = localPanicValue;
  1390    }
  1391  
  1392    try {
  1393      while (true) {
  1394        if (deferred === null) {
  1395          deferred = $curGoroutine.deferStack[$curGoroutine.deferStack.length - 1];
  1396          if (deferred === undefined) {
  1397            /* The panic reached the top of the stack. Clear it and throw it as a JavaScript error. */
  1398            $panicStackDepth = null;
  1399            if (localPanicValue.Object instanceof Error) {
  1400              throw localPanicValue.Object;
  1401            }
  1402            var msg;
  1403            if (localPanicValue.constructor === $String) {
  1404              msg = localPanicValue.$val;
  1405            } else if (localPanicValue.Error !== undefined) {
  1406              msg = localPanicValue.Error();
  1407            } else if (localPanicValue.String !== undefined) {
  1408              msg = localPanicValue.String();
  1409            } else {
  1410              msg = localPanicValue;
  1411            }
  1412            throw new Error(msg);
  1413          }
  1414        }
  1415        var call = deferred.pop();
  1416        if (call === undefined) {
  1417          $curGoroutine.deferStack.pop();
  1418          if (localPanicValue !== undefined) {
  1419            deferred = null;
  1420            continue;
  1421          }
  1422          return;
  1423        }
  1424        var r = call[0].apply(call[2], call[1]);
  1425        if (r && r.$blk !== undefined) {
  1426          deferred.push([r.$blk, [], r]);
  1427          if (fromPanic) {
  1428            throw null;
  1429          }
  1430          return;
  1431        }
  1432  
  1433        if (localPanicValue !== undefined && $panicStackDepth === null) {
  1434          throw null; /* error was recovered */
  1435        }
  1436      }
  1437    } finally {
  1438      if (localPanicValue !== undefined) {
  1439        if ($panicStackDepth !== null) {
  1440          $curGoroutine.panicStack.push(localPanicValue);
  1441        }
  1442        $panicStackDepth = outerPanicStackDepth;
  1443        $panicValue = outerPanicValue;
  1444      }
  1445      $stackDepthOffset++;
  1446    }
  1447  };
  1448  
  1449  var $panic = function(value) {
  1450    $curGoroutine.panicStack.push(value);
  1451    $callDeferred(null, null, true);
  1452  };
  1453  var $recover = function() {
  1454    if ($panicStackDepth === null || ($panicStackDepth !== undefined && $panicStackDepth !== $getStackDepth() - 2)) {
  1455      return $ifaceNil;
  1456    }
  1457    $panicStackDepth = null;
  1458    return $panicValue;
  1459  };
  1460  var $throw = function(err) { throw err; };
  1461  
  1462  var $noGoroutine = { asleep: false, exit: false, deferStack: [], panicStack: [] };
  1463  var $curGoroutine = $noGoroutine, $totalGoroutines = 0, $awakeGoroutines = 0, $checkForDeadlock = true;
  1464  var $mainFinished = false;
  1465  var $go = function(fun, args) {
  1466    $totalGoroutines++;
  1467    $awakeGoroutines++;
  1468    var $goroutine = function() {
  1469      try {
  1470        $curGoroutine = $goroutine;
  1471        var r = fun.apply(undefined, args);
  1472        if (r && r.$blk !== undefined) {
  1473          fun = function() { return r.$blk(); };
  1474          args = [];
  1475          return;
  1476        }
  1477        $goroutine.exit = true;
  1478      } catch (err) {
  1479        if (!$goroutine.exit) {
  1480          throw err;
  1481        }
  1482      } finally {
  1483        $curGoroutine = $noGoroutine;
  1484        if ($goroutine.exit) { /* also set by runtime.Goexit() */
  1485          $totalGoroutines--;
  1486          $goroutine.asleep = true;
  1487        }
  1488        if ($goroutine.asleep) {
  1489          $awakeGoroutines--;
  1490          if (!$mainFinished && $awakeGoroutines === 0 && $checkForDeadlock) {
  1491            console.error("fatal error: all goroutines are asleep - deadlock!");
  1492            if ($global.process !== undefined) {
  1493              $global.process.exit(2);
  1494            }
  1495          }
  1496        }
  1497      }
  1498    };
  1499    $goroutine.asleep = false;
  1500    $goroutine.exit = false;
  1501    $goroutine.deferStack = [];
  1502    $goroutine.panicStack = [];
  1503    $schedule($goroutine);
  1504  };
  1505  
  1506  var $scheduled = [];
  1507  var $runScheduled = function() {
  1508    try {
  1509      var r;
  1510      while ((r = $scheduled.shift()) !== undefined) {
  1511        r();
  1512      }
  1513    } finally {
  1514      if ($scheduled.length > 0) {
  1515        setTimeout($runScheduled, 0);
  1516      }
  1517    }
  1518  };
  1519  
  1520  var $schedule = function(goroutine) {
  1521    if (goroutine.asleep) {
  1522      goroutine.asleep = false;
  1523      $awakeGoroutines++;
  1524    }
  1525    $scheduled.push(goroutine);
  1526    if ($curGoroutine === $noGoroutine) {
  1527      $runScheduled();
  1528    }
  1529  };
  1530  
  1531  var $setTimeout = function(f, t) {
  1532    $awakeGoroutines++;
  1533    return setTimeout(function() {
  1534      $awakeGoroutines--;
  1535      f();
  1536    }, t);
  1537  };
  1538  
  1539  var $block = function() {
  1540    if ($curGoroutine === $noGoroutine) {
  1541      $throwRuntimeError("cannot block in JavaScript callback, fix by wrapping code in goroutine");
  1542    }
  1543    $curGoroutine.asleep = true;
  1544  };
  1545  
  1546  var $send = function(chan, value) {
  1547    if (chan.$closed) {
  1548      $throwRuntimeError("send on closed channel");
  1549    }
  1550    var queuedRecv = chan.$recvQueue.shift();
  1551    if (queuedRecv !== undefined) {
  1552      queuedRecv([value, true]);
  1553      return;
  1554    }
  1555    if (chan.$buffer.length < chan.$capacity) {
  1556      chan.$buffer.push(value);
  1557      return;
  1558    }
  1559  
  1560    var thisGoroutine = $curGoroutine;
  1561    var closedDuringSend;
  1562    chan.$sendQueue.push(function(closed) {
  1563      closedDuringSend = closed;
  1564      $schedule(thisGoroutine);
  1565      return value;
  1566    });
  1567    $block();
  1568    return {
  1569      $blk: function() {
  1570        if (closedDuringSend) {
  1571          $throwRuntimeError("send on closed channel");
  1572        }
  1573      }
  1574    };
  1575  };
  1576  var $recv = function(chan) {
  1577    var queuedSend = chan.$sendQueue.shift();
  1578    if (queuedSend !== undefined) {
  1579      chan.$buffer.push(queuedSend(false));
  1580    }
  1581    var bufferedValue = chan.$buffer.shift();
  1582    if (bufferedValue !== undefined) {
  1583      return [bufferedValue, true];
  1584    }
  1585    if (chan.$closed) {
  1586      return [chan.$elem.zero(), false];
  1587    }
  1588  
  1589    var thisGoroutine = $curGoroutine;
  1590    var f = { $blk: function() { return this.value; } };
  1591    var queueEntry = function(v) {
  1592      f.value = v;
  1593      $schedule(thisGoroutine);
  1594    };
  1595    chan.$recvQueue.push(queueEntry);
  1596    $block();
  1597    return f;
  1598  };
  1599  var $close = function(chan) {
  1600    if (chan.$closed) {
  1601      $throwRuntimeError("close of closed channel");
  1602    }
  1603    chan.$closed = true;
  1604    while (true) {
  1605      var queuedSend = chan.$sendQueue.shift();
  1606      if (queuedSend === undefined) {
  1607        break;
  1608      }
  1609      queuedSend(true); /* will panic */
  1610    }
  1611    while (true) {
  1612      var queuedRecv = chan.$recvQueue.shift();
  1613      if (queuedRecv === undefined) {
  1614        break;
  1615      }
  1616      queuedRecv([chan.$elem.zero(), false]);
  1617    }
  1618  };
  1619  var $select = function(comms) {
  1620    var ready = [];
  1621    var selection = -1;
  1622    for (var i = 0; i < comms.length; i++) {
  1623      var comm = comms[i];
  1624      var chan = comm[0];
  1625      switch (comm.length) {
  1626      case 0: /* default */
  1627        selection = i;
  1628        break;
  1629      case 1: /* recv */
  1630        if (chan.$sendQueue.length !== 0 || chan.$buffer.length !== 0 || chan.$closed) {
  1631          ready.push(i);
  1632        }
  1633        break;
  1634      case 2: /* send */
  1635        if (chan.$closed) {
  1636          $throwRuntimeError("send on closed channel");
  1637        }
  1638        if (chan.$recvQueue.length !== 0 || chan.$buffer.length < chan.$capacity) {
  1639          ready.push(i);
  1640        }
  1641        break;
  1642      }
  1643    }
  1644  
  1645    if (ready.length !== 0) {
  1646      selection = ready[Math.floor(Math.random() * ready.length)];
  1647    }
  1648    if (selection !== -1) {
  1649      var comm = comms[selection];
  1650      switch (comm.length) {
  1651      case 0: /* default */
  1652        return [selection];
  1653      case 1: /* recv */
  1654        return [selection, $recv(comm[0])];
  1655      case 2: /* send */
  1656        $send(comm[0], comm[1]);
  1657        return [selection];
  1658      }
  1659    }
  1660  
  1661    var entries = [];
  1662    var thisGoroutine = $curGoroutine;
  1663    var f = { $blk: function() { return this.selection; } };
  1664    var removeFromQueues = function() {
  1665      for (var i = 0; i < entries.length; i++) {
  1666        var entry = entries[i];
  1667        var queue = entry[0];
  1668        var index = queue.indexOf(entry[1]);
  1669        if (index !== -1) {
  1670          queue.splice(index, 1);
  1671        }
  1672      }
  1673    };
  1674    for (var i = 0; i < comms.length; i++) {
  1675      (function(i) {
  1676        var comm = comms[i];
  1677        switch (comm.length) {
  1678        case 1: /* recv */
  1679          var queueEntry = function(value) {
  1680            f.selection = [i, value];
  1681            removeFromQueues();
  1682            $schedule(thisGoroutine);
  1683          };
  1684          entries.push([comm[0].$recvQueue, queueEntry]);
  1685          comm[0].$recvQueue.push(queueEntry);
  1686          break;
  1687        case 2: /* send */
  1688          var queueEntry = function() {
  1689            if (comm[0].$closed) {
  1690              $throwRuntimeError("send on closed channel");
  1691            }
  1692            f.selection = [i];
  1693            removeFromQueues();
  1694            $schedule(thisGoroutine);
  1695            return comm[1];
  1696          };
  1697          entries.push([comm[0].$sendQueue, queueEntry]);
  1698          comm[0].$sendQueue.push(queueEntry);
  1699          break;
  1700        }
  1701      })(i);
  1702    }
  1703    $block();
  1704    return f;
  1705  };
  1706  
  1707  var $jsObjectPtr, $jsErrorPtr;
  1708  
  1709  var $needsExternalization = function(t) {
  1710    switch (t.kind) {
  1711      case $kindBool:
  1712      case $kindInt:
  1713      case $kindInt8:
  1714      case $kindInt16:
  1715      case $kindInt32:
  1716      case $kindUint:
  1717      case $kindUint8:
  1718      case $kindUint16:
  1719      case $kindUint32:
  1720      case $kindUintptr:
  1721      case $kindFloat32:
  1722      case $kindFloat64:
  1723        return false;
  1724      default:
  1725        return t !== $jsObjectPtr;
  1726    }
  1727  };
  1728  
  1729  var $externalize = function(v, t) {
  1730    if (t === $jsObjectPtr) {
  1731      return v;
  1732    }
  1733    switch (t.kind) {
  1734    case $kindBool:
  1735    case $kindInt:
  1736    case $kindInt8:
  1737    case $kindInt16:
  1738    case $kindInt32:
  1739    case $kindUint:
  1740    case $kindUint8:
  1741    case $kindUint16:
  1742    case $kindUint32:
  1743    case $kindUintptr:
  1744    case $kindFloat32:
  1745    case $kindFloat64:
  1746      return v;
  1747    case $kindInt64:
  1748    case $kindUint64:
  1749      return $flatten64(v);
  1750    case $kindArray:
  1751      if ($needsExternalization(t.elem)) {
  1752        return $mapArray(v, function(e) { return $externalize(e, t.elem); });
  1753      }
  1754      return v;
  1755    case $kindFunc:
  1756      return $externalizeFunction(v, t, false);
  1757    case $kindInterface:
  1758      if (v === $ifaceNil) {
  1759        return null;
  1760      }
  1761      if (v.constructor === $jsObjectPtr) {
  1762        return v.$val.object;
  1763      }
  1764      return $externalize(v.$val, v.constructor);
  1765    case $kindMap:
  1766      var m = {};
  1767      var keys = $keys(v);
  1768      for (var i = 0; i < keys.length; i++) {
  1769        var entry = v[keys[i]];
  1770        m[$externalize(entry.k, t.key)] = $externalize(entry.v, t.elem);
  1771      }
  1772      return m;
  1773    case $kindPtr:
  1774      if (v === t.nil) {
  1775        return null;
  1776      }
  1777      return $externalize(v.$get(), t.elem);
  1778    case $kindSlice:
  1779      if ($needsExternalization(t.elem)) {
  1780        return $mapArray($sliceToArray(v), function(e) { return $externalize(e, t.elem); });
  1781      }
  1782      return $sliceToArray(v);
  1783    case $kindString:
  1784      if ($isASCII(v)) {
  1785        return v;
  1786      }
  1787      var s = "", r;
  1788      for (var i = 0; i < v.length; i += r[1]) {
  1789        r = $decodeRune(v, i);
  1790        var c = r[0];
  1791        if (c > 0xFFFF) {
  1792          var h = Math.floor((c - 0x10000) / 0x400) + 0xD800;
  1793          var l = (c - 0x10000) % 0x400 + 0xDC00;
  1794          s += String.fromCharCode(h, l);
  1795          continue;
  1796        }
  1797        s += String.fromCharCode(c);
  1798      }
  1799      return s;
  1800    case $kindStruct:
  1801      var timePkg = $packages["time"];
  1802      if (timePkg !== undefined && v.constructor === timePkg.Time.ptr) {
  1803        var milli = $div64(v.UnixNano(), new $Int64(0, 1000000));
  1804        return new Date($flatten64(milli));
  1805      }
  1806  
  1807      var noJsObject = {};
  1808      var searchJsObject = function(v, t) {
  1809        if (t === $jsObjectPtr) {
  1810          return v;
  1811        }
  1812        switch (t.kind) {
  1813        case $kindPtr:
  1814          if (v === t.nil) {
  1815            return noJsObject;
  1816          }
  1817          return searchJsObject(v.$get(), t.elem);
  1818        case $kindStruct:
  1819          var f = t.fields[0];
  1820          return searchJsObject(v[f.prop], f.typ);
  1821        case $kindInterface:
  1822          return searchJsObject(v.$val, v.constructor);
  1823        default:
  1824          return noJsObject;
  1825        }
  1826      };
  1827      var o = searchJsObject(v, t);
  1828      if (o !== noJsObject) {
  1829        return o;
  1830      }
  1831  
  1832      o = {};
  1833      for (var i = 0; i < t.fields.length; i++) {
  1834        var f = t.fields[i];
  1835        if (!f.exported) {
  1836          continue;
  1837        }
  1838        o[f.name] = $externalize(v[f.prop], f.typ);
  1839      }
  1840      return o;
  1841    }
  1842    $throwRuntimeError("cannot externalize " + t.string);
  1843  };
  1844  
  1845  var $externalizeFunction = function(v, t, passThis) {
  1846    if (v === $throwNilPointerError) {
  1847      return null;
  1848    }
  1849    if (v.$externalizeWrapper === undefined) {
  1850      $checkForDeadlock = false;
  1851      v.$externalizeWrapper = function() {
  1852        var args = [];
  1853        for (var i = 0; i < t.params.length; i++) {
  1854          if (t.variadic && i === t.params.length - 1) {
  1855            var vt = t.params[i].elem, varargs = [];
  1856            for (var j = i; j < arguments.length; j++) {
  1857              varargs.push($internalize(arguments[j], vt));
  1858            }
  1859            args.push(new (t.params[i])(varargs));
  1860            break;
  1861          }
  1862          args.push($internalize(arguments[i], t.params[i]));
  1863        }
  1864        var result = v.apply(passThis ? this : undefined, args);
  1865        switch (t.results.length) {
  1866        case 0:
  1867          return;
  1868        case 1:
  1869          return $externalize(result, t.results[0]);
  1870        default:
  1871          for (var i = 0; i < t.results.length; i++) {
  1872            result[i] = $externalize(result[i], t.results[i]);
  1873          }
  1874          return result;
  1875        }
  1876      };
  1877    }
  1878    return v.$externalizeWrapper;
  1879  };
  1880  
  1881  var $internalize = function(v, t, recv) {
  1882    if (t === $jsObjectPtr) {
  1883      return v;
  1884    }
  1885    if (t === $jsObjectPtr.elem) {
  1886      $throwRuntimeError("cannot internalize js.Object, use *js.Object instead");
  1887    }
  1888    if (v && v.__internal_object__ !== undefined) {
  1889      return $assertType(v.__internal_object__, t, false);
  1890    }
  1891    var timePkg = $packages["time"];
  1892    if (timePkg !== undefined && t === timePkg.Time) {
  1893      if (!(v !== null && v !== undefined && v.constructor === Date)) {
  1894        $throwRuntimeError("cannot internalize time.Time from " + typeof v + ", must be Date");
  1895      }
  1896      return timePkg.Unix(new $Int64(0, 0), new $Int64(0, v.getTime() * 1000000));
  1897    }
  1898    switch (t.kind) {
  1899    case $kindBool:
  1900      return !!v;
  1901    case $kindInt:
  1902      return parseInt(v);
  1903    case $kindInt8:
  1904      return parseInt(v) << 24 >> 24;
  1905    case $kindInt16:
  1906      return parseInt(v) << 16 >> 16;
  1907    case $kindInt32:
  1908      return parseInt(v) >> 0;
  1909    case $kindUint:
  1910      return parseInt(v);
  1911    case $kindUint8:
  1912      return parseInt(v) << 24 >>> 24;
  1913    case $kindUint16:
  1914      return parseInt(v) << 16 >>> 16;
  1915    case $kindUint32:
  1916    case $kindUintptr:
  1917      return parseInt(v) >>> 0;
  1918    case $kindInt64:
  1919    case $kindUint64:
  1920      return new t(0, v);
  1921    case $kindFloat32:
  1922    case $kindFloat64:
  1923      return parseFloat(v);
  1924    case $kindArray:
  1925      if (v.length !== t.len) {
  1926        $throwRuntimeError("got array with wrong size from JavaScript native");
  1927      }
  1928      return $mapArray(v, function(e) { return $internalize(e, t.elem); });
  1929    case $kindFunc:
  1930      return function() {
  1931        var args = [];
  1932        for (var i = 0; i < t.params.length; i++) {
  1933          if (t.variadic && i === t.params.length - 1) {
  1934            var vt = t.params[i].elem, varargs = arguments[i];
  1935            for (var j = 0; j < varargs.$length; j++) {
  1936              args.push($externalize(varargs.$array[varargs.$offset + j], vt));
  1937            }
  1938            break;
  1939          }
  1940          args.push($externalize(arguments[i], t.params[i]));
  1941        }
  1942        var result = v.apply(recv, args);
  1943        switch (t.results.length) {
  1944        case 0:
  1945          return;
  1946        case 1:
  1947          return $internalize(result, t.results[0]);
  1948        default:
  1949          for (var i = 0; i < t.results.length; i++) {
  1950            result[i] = $internalize(result[i], t.results[i]);
  1951          }
  1952          return result;
  1953        }
  1954      };
  1955    case $kindInterface:
  1956      if (t.methods.length !== 0) {
  1957        $throwRuntimeError("cannot internalize " + t.string);
  1958      }
  1959      if (v === null) {
  1960        return $ifaceNil;
  1961      }
  1962      if (v === undefined) {
  1963        return new $jsObjectPtr(undefined);
  1964      }
  1965      switch (v.constructor) {
  1966      case Int8Array:
  1967        return new ($sliceType($Int8))(v);
  1968      case Int16Array:
  1969        return new ($sliceType($Int16))(v);
  1970      case Int32Array:
  1971        return new ($sliceType($Int))(v);
  1972      case Uint8Array:
  1973        return new ($sliceType($Uint8))(v);
  1974      case Uint16Array:
  1975        return new ($sliceType($Uint16))(v);
  1976      case Uint32Array:
  1977        return new ($sliceType($Uint))(v);
  1978      case Float32Array:
  1979        return new ($sliceType($Float32))(v);
  1980      case Float64Array:
  1981        return new ($sliceType($Float64))(v);
  1982      case Array:
  1983        return $internalize(v, $sliceType($emptyInterface));
  1984      case Boolean:
  1985        return new $Bool(!!v);
  1986      case Date:
  1987        if (timePkg === undefined) {
  1988          /* time package is not present, internalize as &js.Object{Date} so it can be externalized into original Date. */
  1989          return new $jsObjectPtr(v);
  1990        }
  1991        return new timePkg.Time($internalize(v, timePkg.Time));
  1992      case Function:
  1993        var funcType = $funcType([$sliceType($emptyInterface)], [$jsObjectPtr], true);
  1994        return new funcType($internalize(v, funcType));
  1995      case Number:
  1996        return new $Float64(parseFloat(v));
  1997      case String:
  1998        return new $String($internalize(v, $String));
  1999      default:
  2000        if ($global.Node && v instanceof $global.Node) {
  2001          return new $jsObjectPtr(v);
  2002        }
  2003        var mapType = $mapType($String, $emptyInterface);
  2004        return new mapType($internalize(v, mapType));
  2005      }
  2006    case $kindMap:
  2007      var m = {};
  2008      var keys = $keys(v);
  2009      for (var i = 0; i < keys.length; i++) {
  2010        var k = $internalize(keys[i], t.key);
  2011        m[t.key.keyFor(k)] = { k: k, v: $internalize(v[keys[i]], t.elem) };
  2012      }
  2013      return m;
  2014    case $kindPtr:
  2015      if (t.elem.kind === $kindStruct) {
  2016        return $internalize(v, t.elem);
  2017      }
  2018    case $kindSlice:
  2019      return new t($mapArray(v, function(e) { return $internalize(e, t.elem); }));
  2020    case $kindString:
  2021      v = String(v);
  2022      if ($isASCII(v)) {
  2023        return v;
  2024      }
  2025      var s = "";
  2026      var i = 0;
  2027      while (i < v.length) {
  2028        var h = v.charCodeAt(i);
  2029        if (0xD800 <= h && h <= 0xDBFF) {
  2030          var l = v.charCodeAt(i + 1);
  2031          var c = (h - 0xD800) * 0x400 + l - 0xDC00 + 0x10000;
  2032          s += $encodeRune(c);
  2033          i += 2;
  2034          continue;
  2035        }
  2036        s += $encodeRune(h);
  2037        i++;
  2038      }
  2039      return s;
  2040    case $kindStruct:
  2041      var noJsObject = {};
  2042      var searchJsObject = function(t) {
  2043        if (t === $jsObjectPtr) {
  2044          return v;
  2045        }
  2046        if (t === $jsObjectPtr.elem) {
  2047          $throwRuntimeError("cannot internalize js.Object, use *js.Object instead");
  2048        }
  2049        switch (t.kind) {
  2050        case $kindPtr:
  2051          return searchJsObject(t.elem);
  2052        case $kindStruct:
  2053          var f = t.fields[0];
  2054          var o = searchJsObject(f.typ);
  2055          if (o !== noJsObject) {
  2056            var n = new t.ptr();
  2057            n[f.prop] = o;
  2058            return n;
  2059          }
  2060          return noJsObject;
  2061        default:
  2062          return noJsObject;
  2063        }
  2064      };
  2065      var o = searchJsObject(t);
  2066      if (o !== noJsObject) {
  2067        return o;
  2068      }
  2069    }
  2070    $throwRuntimeError("cannot internalize " + t.string);
  2071  };
  2072  
  2073  /* $isASCII reports whether string s contains only ASCII characters. */
  2074  var $isASCII = function(s) {
  2075    for (var i = 0; i < s.length; i++) {
  2076      if (s.charCodeAt(i) >= 128) {
  2077        return false;
  2078      }
  2079    }
  2080    return true;
  2081  };
  2082  
  2083  $packages["github.com/gopherjs/gopherjs/js"] = (function() {
  2084  	var $pkg = {}, $init, Object, Error, sliceType, ptrType, ptrType$1, MakeFunc, init;
  2085  	Object = $pkg.Object = $newType(0, $kindStruct, "js.Object", true, "github.com/gopherjs/gopherjs/js", true, function(object_) {
  2086  		this.$val = this;
  2087  		if (arguments.length === 0) {
  2088  			this.object = null;
  2089  			return;
  2090  		}
  2091  		this.object = object_;
  2092  	});
  2093  	Error = $pkg.Error = $newType(0, $kindStruct, "js.Error", true, "github.com/gopherjs/gopherjs/js", true, function(Object_) {
  2094  		this.$val = this;
  2095  		if (arguments.length === 0) {
  2096  			this.Object = null;
  2097  			return;
  2098  		}
  2099  		this.Object = Object_;
  2100  	});
  2101  	sliceType = $sliceType($emptyInterface);
  2102  	ptrType = $ptrType(Object);
  2103  	ptrType$1 = $ptrType(Error);
  2104  	Object.ptr.prototype.Get = function(key) {
  2105  		var key, o;
  2106  		o = this;
  2107  		return o.object[$externalize(key, $String)];
  2108  	};
  2109  	Object.prototype.Get = function(key) { return this.$val.Get(key); };
  2110  	Object.ptr.prototype.Set = function(key, value) {
  2111  		var key, o, value;
  2112  		o = this;
  2113  		o.object[$externalize(key, $String)] = $externalize(value, $emptyInterface);
  2114  	};
  2115  	Object.prototype.Set = function(key, value) { return this.$val.Set(key, value); };
  2116  	Object.ptr.prototype.Delete = function(key) {
  2117  		var key, o;
  2118  		o = this;
  2119  		delete o.object[$externalize(key, $String)];
  2120  	};
  2121  	Object.prototype.Delete = function(key) { return this.$val.Delete(key); };
  2122  	Object.ptr.prototype.Length = function() {
  2123  		var o;
  2124  		o = this;
  2125  		return $parseInt(o.object.length);
  2126  	};
  2127  	Object.prototype.Length = function() { return this.$val.Length(); };
  2128  	Object.ptr.prototype.Index = function(i) {
  2129  		var i, o;
  2130  		o = this;
  2131  		return o.object[i];
  2132  	};
  2133  	Object.prototype.Index = function(i) { return this.$val.Index(i); };
  2134  	Object.ptr.prototype.SetIndex = function(i, value) {
  2135  		var i, o, value;
  2136  		o = this;
  2137  		o.object[i] = $externalize(value, $emptyInterface);
  2138  	};
  2139  	Object.prototype.SetIndex = function(i, value) { return this.$val.SetIndex(i, value); };
  2140  	Object.ptr.prototype.Call = function(name, args) {
  2141  		var args, name, o, obj;
  2142  		o = this;
  2143  		return (obj = o.object, obj[$externalize(name, $String)].apply(obj, $externalize(args, sliceType)));
  2144  	};
  2145  	Object.prototype.Call = function(name, args) { return this.$val.Call(name, args); };
  2146  	Object.ptr.prototype.Invoke = function(args) {
  2147  		var args, o;
  2148  		o = this;
  2149  		return o.object.apply(undefined, $externalize(args, sliceType));
  2150  	};
  2151  	Object.prototype.Invoke = function(args) { return this.$val.Invoke(args); };
  2152  	Object.ptr.prototype.New = function(args) {
  2153  		var args, o;
  2154  		o = this;
  2155  		return new ($global.Function.prototype.bind.apply(o.object, [undefined].concat($externalize(args, sliceType))));
  2156  	};
  2157  	Object.prototype.New = function(args) { return this.$val.New(args); };
  2158  	Object.ptr.prototype.Bool = function() {
  2159  		var o;
  2160  		o = this;
  2161  		return !!(o.object);
  2162  	};
  2163  	Object.prototype.Bool = function() { return this.$val.Bool(); };
  2164  	Object.ptr.prototype.String = function() {
  2165  		var o;
  2166  		o = this;
  2167  		return $internalize(o.object, $String);
  2168  	};
  2169  	Object.prototype.String = function() { return this.$val.String(); };
  2170  	Object.ptr.prototype.Int = function() {
  2171  		var o;
  2172  		o = this;
  2173  		return $parseInt(o.object) >> 0;
  2174  	};
  2175  	Object.prototype.Int = function() { return this.$val.Int(); };
  2176  	Object.ptr.prototype.Int64 = function() {
  2177  		var o;
  2178  		o = this;
  2179  		return $internalize(o.object, $Int64);
  2180  	};
  2181  	Object.prototype.Int64 = function() { return this.$val.Int64(); };
  2182  	Object.ptr.prototype.Uint64 = function() {
  2183  		var o;
  2184  		o = this;
  2185  		return $internalize(o.object, $Uint64);
  2186  	};
  2187  	Object.prototype.Uint64 = function() { return this.$val.Uint64(); };
  2188  	Object.ptr.prototype.Float = function() {
  2189  		var o;
  2190  		o = this;
  2191  		return $parseFloat(o.object);
  2192  	};
  2193  	Object.prototype.Float = function() { return this.$val.Float(); };
  2194  	Object.ptr.prototype.Interface = function() {
  2195  		var o;
  2196  		o = this;
  2197  		return $internalize(o.object, $emptyInterface);
  2198  	};
  2199  	Object.prototype.Interface = function() { return this.$val.Interface(); };
  2200  	Object.ptr.prototype.Unsafe = function() {
  2201  		var o;
  2202  		o = this;
  2203  		return o.object;
  2204  	};
  2205  	Object.prototype.Unsafe = function() { return this.$val.Unsafe(); };
  2206  	Error.ptr.prototype.Error = function() {
  2207  		var err;
  2208  		err = this;
  2209  		return "JavaScript error: " + $internalize(err.Object.message, $String);
  2210  	};
  2211  	Error.prototype.Error = function() { return this.$val.Error(); };
  2212  	Error.ptr.prototype.Stack = function() {
  2213  		var err;
  2214  		err = this;
  2215  		return $internalize(err.Object.stack, $String);
  2216  	};
  2217  	Error.prototype.Stack = function() { return this.$val.Stack(); };
  2218  	MakeFunc = function(fn) {
  2219  		var fn;
  2220  		return $makeFunc(fn);
  2221  	};
  2222  	$pkg.MakeFunc = MakeFunc;
  2223  	init = function() {
  2224  		var e;
  2225  		e = new Error.ptr(null);
  2226  		$unused(e);
  2227  	};
  2228  	ptrType.methods = [{prop: "Get", name: "Get", pkg: "", typ: $funcType([$String], [ptrType], false)}, {prop: "Set", name: "Set", pkg: "", typ: $funcType([$String, $emptyInterface], [], false)}, {prop: "Delete", name: "Delete", pkg: "", typ: $funcType([$String], [], false)}, {prop: "Length", name: "Length", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Index", name: "Index", pkg: "", typ: $funcType([$Int], [ptrType], false)}, {prop: "SetIndex", name: "SetIndex", pkg: "", typ: $funcType([$Int, $emptyInterface], [], false)}, {prop: "Call", name: "Call", pkg: "", typ: $funcType([$String, sliceType], [ptrType], true)}, {prop: "Invoke", name: "Invoke", pkg: "", typ: $funcType([sliceType], [ptrType], true)}, {prop: "New", name: "New", pkg: "", typ: $funcType([sliceType], [ptrType], true)}, {prop: "Bool", name: "Bool", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Int", name: "Int", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Int64", name: "Int64", pkg: "", typ: $funcType([], [$Int64], false)}, {prop: "Uint64", name: "Uint64", pkg: "", typ: $funcType([], [$Uint64], false)}, {prop: "Float", name: "Float", pkg: "", typ: $funcType([], [$Float64], false)}, {prop: "Interface", name: "Interface", pkg: "", typ: $funcType([], [$emptyInterface], false)}, {prop: "Unsafe", name: "Unsafe", pkg: "", typ: $funcType([], [$Uintptr], false)}];
  2229  	ptrType$1.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Stack", name: "Stack", pkg: "", typ: $funcType([], [$String], false)}];
  2230  	Object.init("github.com/gopherjs/gopherjs/js", [{prop: "object", name: "object", anonymous: false, exported: false, typ: ptrType, tag: ""}]);
  2231  	Error.init("", [{prop: "Object", name: "Object", anonymous: true, exported: true, typ: ptrType, tag: ""}]);
  2232  	$init = function() {
  2233  		$pkg.$init = function() {};
  2234  		/* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  2235  		init();
  2236  		/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
  2237  	};
  2238  	$pkg.$init = $init;
  2239  	return $pkg;
  2240  })();
  2241  $packages["runtime/internal/sys"] = (function() {
  2242  	var $pkg = {}, $init;
  2243  	$init = function() {
  2244  		$pkg.$init = function() {};
  2245  		/* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  2246  		/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
  2247  	};
  2248  	$pkg.$init = $init;
  2249  	return $pkg;
  2250  })();
  2251  $packages["runtime"] = (function() {
  2252  	var $pkg = {}, $init, js, sys, Func, Error, TypeAssertionError, errorString, ptrType, structType, ptrType$4, init, GOROOT, Caller, Callers, Goexit, SetFinalizer, FuncForPC, Stack, KeepAlive, throw$1;
  2253  	js = $packages["github.com/gopherjs/gopherjs/js"];
  2254  	sys = $packages["runtime/internal/sys"];
  2255  	Func = $pkg.Func = $newType(0, $kindStruct, "runtime.Func", true, "runtime", true, function(opaque_) {
  2256  		this.$val = this;
  2257  		if (arguments.length === 0) {
  2258  			this.opaque = new structType.ptr();
  2259  			return;
  2260  		}
  2261  		this.opaque = opaque_;
  2262  	});
  2263  	Error = $pkg.Error = $newType(8, $kindInterface, "runtime.Error", true, "runtime", true, null);
  2264  	TypeAssertionError = $pkg.TypeAssertionError = $newType(0, $kindStruct, "runtime.TypeAssertionError", true, "runtime", true, function(interfaceString_, concreteString_, assertedString_, missingMethod_) {
  2265  		this.$val = this;
  2266  		if (arguments.length === 0) {
  2267  			this.interfaceString = "";
  2268  			this.concreteString = "";
  2269  			this.assertedString = "";
  2270  			this.missingMethod = "";
  2271  			return;
  2272  		}
  2273  		this.interfaceString = interfaceString_;
  2274  		this.concreteString = concreteString_;
  2275  		this.assertedString = assertedString_;
  2276  		this.missingMethod = missingMethod_;
  2277  	});
  2278  	errorString = $pkg.errorString = $newType(8, $kindString, "runtime.errorString", true, "runtime", false, null);
  2279  	ptrType = $ptrType(Func);
  2280  	structType = $structType("", []);
  2281  	ptrType$4 = $ptrType(TypeAssertionError);
  2282  	init = function() {
  2283  		var e, jsPkg;
  2284  		jsPkg = $packages[$externalize("github.com/gopherjs/gopherjs/js", $String)];
  2285  		$jsObjectPtr = jsPkg.Object.ptr;
  2286  		$jsErrorPtr = jsPkg.Error.ptr;
  2287  		$throwRuntimeError = throw$1;
  2288  		e = $ifaceNil;
  2289  		e = new TypeAssertionError.ptr("", "", "", "");
  2290  		$unused(e);
  2291  	};
  2292  	GOROOT = function() {
  2293  		var goroot, process;
  2294  		process = $global.process;
  2295  		if (process === undefined) {
  2296  			return "/";
  2297  		}
  2298  		goroot = process.env.GOROOT;
  2299  		if (!(goroot === undefined)) {
  2300  			return $internalize(goroot, $String);
  2301  		}
  2302  		return "/usr/local/go";
  2303  	};
  2304  	$pkg.GOROOT = GOROOT;
  2305  	Caller = function(skip) {
  2306  		var _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, file, info, line, ok, parts, pc, skip;
  2307  		pc = 0;
  2308  		file = "";
  2309  		line = 0;
  2310  		ok = false;
  2311  		info = new ($global.Error)().stack.split($externalize("\n", $String))[(skip + 2 >> 0)];
  2312  		if (info === undefined) {
  2313  			_tmp = 0;
  2314  			_tmp$1 = "";
  2315  			_tmp$2 = 0;
  2316  			_tmp$3 = false;
  2317  			pc = _tmp;
  2318  			file = _tmp$1;
  2319  			line = _tmp$2;
  2320  			ok = _tmp$3;
  2321  			return [pc, file, line, ok];
  2322  		}
  2323  		parts = info.substring(($parseInt(info.indexOf($externalize("(", $String))) >> 0) + 1 >> 0, $parseInt(info.indexOf($externalize(")", $String))) >> 0).split($externalize(":", $String));
  2324  		_tmp$4 = 0;
  2325  		_tmp$5 = $internalize(parts[0], $String);
  2326  		_tmp$6 = $parseInt(parts[1]) >> 0;
  2327  		_tmp$7 = true;
  2328  		pc = _tmp$4;
  2329  		file = _tmp$5;
  2330  		line = _tmp$6;
  2331  		ok = _tmp$7;
  2332  		return [pc, file, line, ok];
  2333  	};
  2334  	$pkg.Caller = Caller;
  2335  	Callers = function(skip, pc) {
  2336  		var pc, skip;
  2337  		return 0;
  2338  	};
  2339  	$pkg.Callers = Callers;
  2340  	Goexit = function() {
  2341  		$curGoroutine.exit = $externalize(true, $Bool);
  2342  		$throw(null);
  2343  	};
  2344  	$pkg.Goexit = Goexit;
  2345  	SetFinalizer = function(x, f) {
  2346  		var f, x;
  2347  	};
  2348  	$pkg.SetFinalizer = SetFinalizer;
  2349  	Func.ptr.prototype.Entry = function() {
  2350  		return 0;
  2351  	};
  2352  	Func.prototype.Entry = function() { return this.$val.Entry(); };
  2353  	Func.ptr.prototype.FileLine = function(pc) {
  2354  		var _tmp, _tmp$1, file, line, pc;
  2355  		file = "";
  2356  		line = 0;
  2357  		_tmp = "";
  2358  		_tmp$1 = 0;
  2359  		file = _tmp;
  2360  		line = _tmp$1;
  2361  		return [file, line];
  2362  	};
  2363  	Func.prototype.FileLine = function(pc) { return this.$val.FileLine(pc); };
  2364  	Func.ptr.prototype.Name = function() {
  2365  		return "";
  2366  	};
  2367  	Func.prototype.Name = function() { return this.$val.Name(); };
  2368  	FuncForPC = function(pc) {
  2369  		var pc;
  2370  		return ptrType.nil;
  2371  	};
  2372  	$pkg.FuncForPC = FuncForPC;
  2373  	Stack = function(buf, all) {
  2374  		var all, buf, s;
  2375  		s = new ($global.Error)().stack;
  2376  		if (s === undefined) {
  2377  			return 0;
  2378  		}
  2379  		return $copyString(buf, $internalize(s.substr(($parseInt(s.indexOf($externalize("\n", $String))) >> 0) + 1 >> 0), $String));
  2380  	};
  2381  	$pkg.Stack = Stack;
  2382  	KeepAlive = function(param) {
  2383  		var param;
  2384  	};
  2385  	$pkg.KeepAlive = KeepAlive;
  2386  	throw$1 = function(s) {
  2387  		var s;
  2388  		$panic(new errorString((s)));
  2389  	};
  2390  	TypeAssertionError.ptr.prototype.RuntimeError = function() {
  2391  	};
  2392  	TypeAssertionError.prototype.RuntimeError = function() { return this.$val.RuntimeError(); };
  2393  	TypeAssertionError.ptr.prototype.Error = function() {
  2394  		var e, inter;
  2395  		e = this;
  2396  		inter = e.interfaceString;
  2397  		if (inter === "") {
  2398  			inter = "interface";
  2399  		}
  2400  		if (e.concreteString === "") {
  2401  			return "interface conversion: " + inter + " is nil, not " + e.assertedString;
  2402  		}
  2403  		if (e.missingMethod === "") {
  2404  			return "interface conversion: " + inter + " is " + e.concreteString + ", not " + e.assertedString;
  2405  		}
  2406  		return "interface conversion: " + e.concreteString + " is not " + e.assertedString + ": missing method " + e.missingMethod;
  2407  	};
  2408  	TypeAssertionError.prototype.Error = function() { return this.$val.Error(); };
  2409  	errorString.prototype.RuntimeError = function() {
  2410  		var e;
  2411  		e = this.$val;
  2412  	};
  2413  	$ptrType(errorString).prototype.RuntimeError = function() { return new errorString(this.$get()).RuntimeError(); };
  2414  	errorString.prototype.Error = function() {
  2415  		var e;
  2416  		e = this.$val;
  2417  		return "runtime error: " + (e);
  2418  	};
  2419  	$ptrType(errorString).prototype.Error = function() { return new errorString(this.$get()).Error(); };
  2420  	ptrType.methods = [{prop: "Entry", name: "Entry", pkg: "", typ: $funcType([], [$Uintptr], false)}, {prop: "FileLine", name: "FileLine", pkg: "", typ: $funcType([$Uintptr], [$String, $Int], false)}, {prop: "Name", name: "Name", pkg: "", typ: $funcType([], [$String], false)}];
  2421  	ptrType$4.methods = [{prop: "RuntimeError", name: "RuntimeError", pkg: "", typ: $funcType([], [], false)}, {prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}];
  2422  	errorString.methods = [{prop: "RuntimeError", name: "RuntimeError", pkg: "", typ: $funcType([], [], false)}, {prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}];
  2423  	Func.init("runtime", [{prop: "opaque", name: "opaque", anonymous: false, exported: false, typ: structType, tag: ""}]);
  2424  	Error.init([{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}, {prop: "RuntimeError", name: "RuntimeError", pkg: "", typ: $funcType([], [], false)}]);
  2425  	TypeAssertionError.init("runtime", [{prop: "interfaceString", name: "interfaceString", anonymous: false, exported: false, typ: $String, tag: ""}, {prop: "concreteString", name: "concreteString", anonymous: false, exported: false, typ: $String, tag: ""}, {prop: "assertedString", name: "assertedString", anonymous: false, exported: false, typ: $String, tag: ""}, {prop: "missingMethod", name: "missingMethod", anonymous: false, exported: false, typ: $String, tag: ""}]);
  2426  	$init = function() {
  2427  		$pkg.$init = function() {};
  2428  		/* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  2429  		$r = js.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  2430  		$r = sys.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  2431  		init();
  2432  		/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
  2433  	};
  2434  	$pkg.$init = $init;
  2435  	return $pkg;
  2436  })();
  2437  $packages["errors"] = (function() {
  2438  	var $pkg = {}, $init, errorString, ptrType, New;
  2439  	errorString = $pkg.errorString = $newType(0, $kindStruct, "errors.errorString", true, "errors", false, function(s_) {
  2440  		this.$val = this;
  2441  		if (arguments.length === 0) {
  2442  			this.s = "";
  2443  			return;
  2444  		}
  2445  		this.s = s_;
  2446  	});
  2447  	ptrType = $ptrType(errorString);
  2448  	New = function(text) {
  2449  		var text;
  2450  		return new errorString.ptr(text);
  2451  	};
  2452  	$pkg.New = New;
  2453  	errorString.ptr.prototype.Error = function() {
  2454  		var e;
  2455  		e = this;
  2456  		return e.s;
  2457  	};
  2458  	errorString.prototype.Error = function() { return this.$val.Error(); };
  2459  	ptrType.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}];
  2460  	errorString.init("errors", [{prop: "s", name: "s", anonymous: false, exported: false, typ: $String, tag: ""}]);
  2461  	$init = function() {
  2462  		$pkg.$init = function() {};
  2463  		/* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  2464  		/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
  2465  	};
  2466  	$pkg.$init = $init;
  2467  	return $pkg;
  2468  })();
  2469  $packages["internal/race"] = (function() {
  2470  	var $pkg = {}, $init, Acquire, Release, ReleaseMerge, Disable, Enable, ReadRange, WriteRange;
  2471  	Acquire = function(addr) {
  2472  		var addr;
  2473  	};
  2474  	$pkg.Acquire = Acquire;
  2475  	Release = function(addr) {
  2476  		var addr;
  2477  	};
  2478  	$pkg.Release = Release;
  2479  	ReleaseMerge = function(addr) {
  2480  		var addr;
  2481  	};
  2482  	$pkg.ReleaseMerge = ReleaseMerge;
  2483  	Disable = function() {
  2484  	};
  2485  	$pkg.Disable = Disable;
  2486  	Enable = function() {
  2487  	};
  2488  	$pkg.Enable = Enable;
  2489  	ReadRange = function(addr, len) {
  2490  		var addr, len;
  2491  	};
  2492  	$pkg.ReadRange = ReadRange;
  2493  	WriteRange = function(addr, len) {
  2494  		var addr, len;
  2495  	};
  2496  	$pkg.WriteRange = WriteRange;
  2497  	$init = function() {
  2498  		$pkg.$init = function() {};
  2499  		/* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  2500  		/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
  2501  	};
  2502  	$pkg.$init = $init;
  2503  	return $pkg;
  2504  })();
  2505  $packages["sync/atomic"] = (function() {
  2506  	var $pkg = {}, $init, js, Value, ptrType, CompareAndSwapInt32, CompareAndSwapUint64, CompareAndSwapPointer, AddInt32, AddUint32, LoadInt32, LoadUint32, LoadUint64, LoadPointer, StoreInt32, StoreUint32, StorePointer;
  2507  	js = $packages["github.com/gopherjs/gopherjs/js"];
  2508  	Value = $pkg.Value = $newType(0, $kindStruct, "atomic.Value", true, "sync/atomic", true, function(v_) {
  2509  		this.$val = this;
  2510  		if (arguments.length === 0) {
  2511  			this.v = $ifaceNil;
  2512  			return;
  2513  		}
  2514  		this.v = v_;
  2515  	});
  2516  	ptrType = $ptrType(Value);
  2517  	CompareAndSwapInt32 = function(addr, old, new$1) {
  2518  		var addr, new$1, old;
  2519  		if (addr.$get() === old) {
  2520  			addr.$set(new$1);
  2521  			return true;
  2522  		}
  2523  		return false;
  2524  	};
  2525  	$pkg.CompareAndSwapInt32 = CompareAndSwapInt32;
  2526  	CompareAndSwapUint64 = function(addr, old, new$1) {
  2527  		var addr, new$1, old, x;
  2528  		if ((x = addr.$get(), (x.$high === old.$high && x.$low === old.$low))) {
  2529  			addr.$set(new$1);
  2530  			return true;
  2531  		}
  2532  		return false;
  2533  	};
  2534  	$pkg.CompareAndSwapUint64 = CompareAndSwapUint64;
  2535  	CompareAndSwapPointer = function(addr, old, new$1) {
  2536  		var addr, new$1, old;
  2537  		if (addr.$get() === old) {
  2538  			addr.$set(new$1);
  2539  			return true;
  2540  		}
  2541  		return false;
  2542  	};
  2543  	$pkg.CompareAndSwapPointer = CompareAndSwapPointer;
  2544  	AddInt32 = function(addr, delta) {
  2545  		var addr, delta, new$1;
  2546  		new$1 = addr.$get() + delta >> 0;
  2547  		addr.$set(new$1);
  2548  		return new$1;
  2549  	};
  2550  	$pkg.AddInt32 = AddInt32;
  2551  	AddUint32 = function(addr, delta) {
  2552  		var addr, delta, new$1;
  2553  		new$1 = addr.$get() + delta >>> 0;
  2554  		addr.$set(new$1);
  2555  		return new$1;
  2556  	};
  2557  	$pkg.AddUint32 = AddUint32;
  2558  	LoadInt32 = function(addr) {
  2559  		var addr;
  2560  		return addr.$get();
  2561  	};
  2562  	$pkg.LoadInt32 = LoadInt32;
  2563  	LoadUint32 = function(addr) {
  2564  		var addr;
  2565  		return addr.$get();
  2566  	};
  2567  	$pkg.LoadUint32 = LoadUint32;
  2568  	LoadUint64 = function(addr) {
  2569  		var addr;
  2570  		return addr.$get();
  2571  	};
  2572  	$pkg.LoadUint64 = LoadUint64;
  2573  	LoadPointer = function(addr) {
  2574  		var addr;
  2575  		return addr.$get();
  2576  	};
  2577  	$pkg.LoadPointer = LoadPointer;
  2578  	StoreInt32 = function(addr, val) {
  2579  		var addr, val;
  2580  		addr.$set(val);
  2581  	};
  2582  	$pkg.StoreInt32 = StoreInt32;
  2583  	StoreUint32 = function(addr, val) {
  2584  		var addr, val;
  2585  		addr.$set(val);
  2586  	};
  2587  	$pkg.StoreUint32 = StoreUint32;
  2588  	StorePointer = function(addr, val) {
  2589  		var addr, val;
  2590  		addr.$set(val);
  2591  	};
  2592  	$pkg.StorePointer = StorePointer;
  2593  	Value.ptr.prototype.Load = function() {
  2594  		var v, x;
  2595  		x = $ifaceNil;
  2596  		v = this;
  2597  		x = v.v;
  2598  		return x;
  2599  	};
  2600  	Value.prototype.Load = function() { return this.$val.Load(); };
  2601  	Value.ptr.prototype.Store = function(x) {
  2602  		var v, x;
  2603  		v = this;
  2604  		if ($interfaceIsEqual(x, $ifaceNil)) {
  2605  			$panic(new $String("sync/atomic: store of nil value into Value"));
  2606  		}
  2607  		if (!($interfaceIsEqual(v.v, $ifaceNil)) && !(x.constructor === v.v.constructor)) {
  2608  			$panic(new $String("sync/atomic: store of inconsistently typed value into Value"));
  2609  		}
  2610  		v.v = x;
  2611  	};
  2612  	Value.prototype.Store = function(x) { return this.$val.Store(x); };
  2613  	ptrType.methods = [{prop: "Load", name: "Load", pkg: "", typ: $funcType([], [$emptyInterface], false)}, {prop: "Store", name: "Store", pkg: "", typ: $funcType([$emptyInterface], [], false)}];
  2614  	Value.init("sync/atomic", [{prop: "v", name: "v", anonymous: false, exported: false, typ: $emptyInterface, tag: ""}]);
  2615  	$init = function() {
  2616  		$pkg.$init = function() {};
  2617  		/* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  2618  		$r = js.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  2619  		/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
  2620  	};
  2621  	$pkg.$init = $init;
  2622  	return $pkg;
  2623  })();
  2624  $packages["sync"] = (function() {
  2625  	var $pkg = {}, $init, js, race, runtime, atomic, Cond, Pool, WaitGroup, copyChecker, noCopy, Map, readOnly, entry, Mutex, Locker, Once, poolLocalInternal, poolLocal, notifyList, RWMutex, rlocker, ptrType, sliceType, ptrType$1, chanType, sliceType$1, structType, ptrType$3, ptrType$4, ptrType$5, ptrType$6, ptrType$7, sliceType$4, ptrType$8, ptrType$9, ptrType$10, funcType, arrayType$1, ptrType$11, ptrType$12, chanType$1, ptrType$13, ptrType$14, funcType$1, ptrType$15, mapType, ptrType$16, funcType$2, ptrType$17, arrayType$2, semWaiters, semAwoken, expunged, allPools, runtime_registerPoolCleanup, runtime_Semacquire, runtime_SemacquireMutex, runtime_Semrelease, runtime_notifyListCheck, runtime_canSpin, runtime_nanotime, throw$1, NewCond, newEntry, poolCleanup, init, indexLocal, init$1, runtime_doSpin;
  2626  	js = $packages["github.com/gopherjs/gopherjs/js"];
  2627  	race = $packages["internal/race"];
  2628  	runtime = $packages["runtime"];
  2629  	atomic = $packages["sync/atomic"];
  2630  	Cond = $pkg.Cond = $newType(0, $kindStruct, "sync.Cond", true, "sync", true, function(noCopy_, L_, notify_, checker_, n_, ch_) {
  2631  		this.$val = this;
  2632  		if (arguments.length === 0) {
  2633  			this.noCopy = new noCopy.ptr();
  2634  			this.L = $ifaceNil;
  2635  			this.notify = new notifyList.ptr(0, 0, 0, 0, 0);
  2636  			this.checker = 0;
  2637  			this.n = 0;
  2638  			this.ch = $chanNil;
  2639  			return;
  2640  		}
  2641  		this.noCopy = noCopy_;
  2642  		this.L = L_;
  2643  		this.notify = notify_;
  2644  		this.checker = checker_;
  2645  		this.n = n_;
  2646  		this.ch = ch_;
  2647  	});
  2648  	Pool = $pkg.Pool = $newType(0, $kindStruct, "sync.Pool", true, "sync", true, function(local_, localSize_, store_, New_) {
  2649  		this.$val = this;
  2650  		if (arguments.length === 0) {
  2651  			this.local = 0;
  2652  			this.localSize = 0;
  2653  			this.store = sliceType$4.nil;
  2654  			this.New = $throwNilPointerError;
  2655  			return;
  2656  		}
  2657  		this.local = local_;
  2658  		this.localSize = localSize_;
  2659  		this.store = store_;
  2660  		this.New = New_;
  2661  	});
  2662  	WaitGroup = $pkg.WaitGroup = $newType(0, $kindStruct, "sync.WaitGroup", true, "sync", true, function(counter_, ch_, state1_, sema_) {
  2663  		this.$val = this;
  2664  		if (arguments.length === 0) {
  2665  			this.counter = 0;
  2666  			this.ch = $chanNil;
  2667  			this.state1 = arrayType$1.zero();
  2668  			this.sema = 0;
  2669  			return;
  2670  		}
  2671  		this.counter = counter_;
  2672  		this.ch = ch_;
  2673  		this.state1 = state1_;
  2674  		this.sema = sema_;
  2675  	});
  2676  	copyChecker = $pkg.copyChecker = $newType(4, $kindUintptr, "sync.copyChecker", true, "sync", false, null);
  2677  	noCopy = $pkg.noCopy = $newType(0, $kindStruct, "sync.noCopy", true, "sync", false, function() {
  2678  		this.$val = this;
  2679  		if (arguments.length === 0) {
  2680  			return;
  2681  		}
  2682  	});
  2683  	Map = $pkg.Map = $newType(0, $kindStruct, "sync.Map", true, "sync", true, function(mu_, read_, dirty_, misses_) {
  2684  		this.$val = this;
  2685  		if (arguments.length === 0) {
  2686  			this.mu = new Mutex.ptr(0, 0);
  2687  			this.read = new atomic.Value.ptr($ifaceNil);
  2688  			this.dirty = false;
  2689  			this.misses = 0;
  2690  			return;
  2691  		}
  2692  		this.mu = mu_;
  2693  		this.read = read_;
  2694  		this.dirty = dirty_;
  2695  		this.misses = misses_;
  2696  	});
  2697  	readOnly = $pkg.readOnly = $newType(0, $kindStruct, "sync.readOnly", true, "sync", false, function(m_, amended_) {
  2698  		this.$val = this;
  2699  		if (arguments.length === 0) {
  2700  			this.m = false;
  2701  			this.amended = false;
  2702  			return;
  2703  		}
  2704  		this.m = m_;
  2705  		this.amended = amended_;
  2706  	});
  2707  	entry = $pkg.entry = $newType(0, $kindStruct, "sync.entry", true, "sync", false, function(p_) {
  2708  		this.$val = this;
  2709  		if (arguments.length === 0) {
  2710  			this.p = 0;
  2711  			return;
  2712  		}
  2713  		this.p = p_;
  2714  	});
  2715  	Mutex = $pkg.Mutex = $newType(0, $kindStruct, "sync.Mutex", true, "sync", true, function(state_, sema_) {
  2716  		this.$val = this;
  2717  		if (arguments.length === 0) {
  2718  			this.state = 0;
  2719  			this.sema = 0;
  2720  			return;
  2721  		}
  2722  		this.state = state_;
  2723  		this.sema = sema_;
  2724  	});
  2725  	Locker = $pkg.Locker = $newType(8, $kindInterface, "sync.Locker", true, "sync", true, null);
  2726  	Once = $pkg.Once = $newType(0, $kindStruct, "sync.Once", true, "sync", true, function(m_, done_) {
  2727  		this.$val = this;
  2728  		if (arguments.length === 0) {
  2729  			this.m = new Mutex.ptr(0, 0);
  2730  			this.done = 0;
  2731  			return;
  2732  		}
  2733  		this.m = m_;
  2734  		this.done = done_;
  2735  	});
  2736  	poolLocalInternal = $pkg.poolLocalInternal = $newType(0, $kindStruct, "sync.poolLocalInternal", true, "sync", false, function(private$0_, shared_, Mutex_) {
  2737  		this.$val = this;
  2738  		if (arguments.length === 0) {
  2739  			this.private$0 = $ifaceNil;
  2740  			this.shared = sliceType$4.nil;
  2741  			this.Mutex = new Mutex.ptr(0, 0);
  2742  			return;
  2743  		}
  2744  		this.private$0 = private$0_;
  2745  		this.shared = shared_;
  2746  		this.Mutex = Mutex_;
  2747  	});
  2748  	poolLocal = $pkg.poolLocal = $newType(0, $kindStruct, "sync.poolLocal", true, "sync", false, function(poolLocalInternal_, pad_) {
  2749  		this.$val = this;
  2750  		if (arguments.length === 0) {
  2751  			this.poolLocalInternal = new poolLocalInternal.ptr($ifaceNil, sliceType$4.nil, new Mutex.ptr(0, 0));
  2752  			this.pad = arrayType$2.zero();
  2753  			return;
  2754  		}
  2755  		this.poolLocalInternal = poolLocalInternal_;
  2756  		this.pad = pad_;
  2757  	});
  2758  	notifyList = $pkg.notifyList = $newType(0, $kindStruct, "sync.notifyList", true, "sync", false, function(wait_, notify_, lock_, head_, tail_) {
  2759  		this.$val = this;
  2760  		if (arguments.length === 0) {
  2761  			this.wait = 0;
  2762  			this.notify = 0;
  2763  			this.lock = 0;
  2764  			this.head = 0;
  2765  			this.tail = 0;
  2766  			return;
  2767  		}
  2768  		this.wait = wait_;
  2769  		this.notify = notify_;
  2770  		this.lock = lock_;
  2771  		this.head = head_;
  2772  		this.tail = tail_;
  2773  	});
  2774  	RWMutex = $pkg.RWMutex = $newType(0, $kindStruct, "sync.RWMutex", true, "sync", true, function(w_, writerSem_, readerSem_, readerCount_, readerWait_) {
  2775  		this.$val = this;
  2776  		if (arguments.length === 0) {
  2777  			this.w = new Mutex.ptr(0, 0);
  2778  			this.writerSem = 0;
  2779  			this.readerSem = 0;
  2780  			this.readerCount = 0;
  2781  			this.readerWait = 0;
  2782  			return;
  2783  		}
  2784  		this.w = w_;
  2785  		this.writerSem = writerSem_;
  2786  		this.readerSem = readerSem_;
  2787  		this.readerCount = readerCount_;
  2788  		this.readerWait = readerWait_;
  2789  	});
  2790  	rlocker = $pkg.rlocker = $newType(0, $kindStruct, "sync.rlocker", true, "sync", false, function(w_, writerSem_, readerSem_, readerCount_, readerWait_) {
  2791  		this.$val = this;
  2792  		if (arguments.length === 0) {
  2793  			this.w = new Mutex.ptr(0, 0);
  2794  			this.writerSem = 0;
  2795  			this.readerSem = 0;
  2796  			this.readerCount = 0;
  2797  			this.readerWait = 0;
  2798  			return;
  2799  		}
  2800  		this.w = w_;
  2801  		this.writerSem = writerSem_;
  2802  		this.readerSem = readerSem_;
  2803  		this.readerCount = readerCount_;
  2804  		this.readerWait = readerWait_;
  2805  	});
  2806  	ptrType = $ptrType(Pool);
  2807  	sliceType = $sliceType(ptrType);
  2808  	ptrType$1 = $ptrType($Uint32);
  2809  	chanType = $chanType($Bool, false, false);
  2810  	sliceType$1 = $sliceType(chanType);
  2811  	structType = $structType("", []);
  2812  	ptrType$3 = $ptrType($emptyInterface);
  2813  	ptrType$4 = $ptrType(entry);
  2814  	ptrType$5 = $ptrType($UnsafePointer);
  2815  	ptrType$6 = $ptrType($Int32);
  2816  	ptrType$7 = $ptrType(poolLocal);
  2817  	sliceType$4 = $sliceType($emptyInterface);
  2818  	ptrType$8 = $ptrType(rlocker);
  2819  	ptrType$9 = $ptrType(RWMutex);
  2820  	ptrType$10 = $ptrType(Cond);
  2821  	funcType = $funcType([], [$emptyInterface], false);
  2822  	arrayType$1 = $arrayType($Uint8, 12);
  2823  	ptrType$11 = $ptrType($Uint64);
  2824  	ptrType$12 = $ptrType(WaitGroup);
  2825  	chanType$1 = $chanType(structType, false, false);
  2826  	ptrType$13 = $ptrType(copyChecker);
  2827  	ptrType$14 = $ptrType(noCopy);
  2828  	funcType$1 = $funcType([$emptyInterface, $emptyInterface], [$Bool], false);
  2829  	ptrType$15 = $ptrType(Map);
  2830  	mapType = $mapType($emptyInterface, ptrType$4);
  2831  	ptrType$16 = $ptrType(Mutex);
  2832  	funcType$2 = $funcType([], [], false);
  2833  	ptrType$17 = $ptrType(Once);
  2834  	arrayType$2 = $arrayType($Uint8, 100);
  2835  	Cond.ptr.prototype.Wait = function() {
  2836  		var _r, c, $s, $r;
  2837  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; c = $f.c; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  2838  		c = this;
  2839  		c.n = c.n + (1) >> 0;
  2840  		if (c.ch === $chanNil) {
  2841  			c.ch = new $Chan($Bool, 0);
  2842  		}
  2843  		$r = c.L.Unlock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  2844  		_r = $recv(c.ch); /* */ $s = 2; case 2: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  2845  		_r[0];
  2846  		$r = c.L.Lock(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  2847  		$s = -1; return;
  2848  		/* */ } return; } if ($f === undefined) { $f = { $blk: Cond.ptr.prototype.Wait }; } $f._r = _r; $f.c = c; $f.$s = $s; $f.$r = $r; return $f;
  2849  	};
  2850  	Cond.prototype.Wait = function() { return this.$val.Wait(); };
  2851  	Cond.ptr.prototype.Signal = function() {
  2852  		var c, $s, $r;
  2853  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; c = $f.c; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  2854  		c = this;
  2855  		if (c.n === 0) {
  2856  			$s = -1; return;
  2857  		}
  2858  		c.n = c.n - (1) >> 0;
  2859  		$r = $send(c.ch, true); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  2860  		$s = -1; return;
  2861  		/* */ } return; } if ($f === undefined) { $f = { $blk: Cond.ptr.prototype.Signal }; } $f.c = c; $f.$s = $s; $f.$r = $r; return $f;
  2862  	};
  2863  	Cond.prototype.Signal = function() { return this.$val.Signal(); };
  2864  	Cond.ptr.prototype.Broadcast = function() {
  2865  		var c, i, n, $s, $r;
  2866  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; c = $f.c; i = $f.i; n = $f.n; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  2867  		c = this;
  2868  		n = c.n;
  2869  		c.n = 0;
  2870  		i = 0;
  2871  		/* while (true) { */ case 1:
  2872  			/* if (!(i < n)) { break; } */ if(!(i < n)) { $s = 2; continue; }
  2873  			$r = $send(c.ch, true); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  2874  			i = i + (1) >> 0;
  2875  		/* } */ $s = 1; continue; case 2:
  2876  		$s = -1; return;
  2877  		/* */ } return; } if ($f === undefined) { $f = { $blk: Cond.ptr.prototype.Broadcast }; } $f.c = c; $f.i = i; $f.n = n; $f.$s = $s; $f.$r = $r; return $f;
  2878  	};
  2879  	Cond.prototype.Broadcast = function() { return this.$val.Broadcast(); };
  2880  	Pool.ptr.prototype.Get = function() {
  2881  		var _r, p, x, x$1, x$2, $s, $r;
  2882  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; p = $f.p; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  2883  		p = this;
  2884  		/* */ if (p.store.$length === 0) { $s = 1; continue; }
  2885  		/* */ $s = 2; continue;
  2886  		/* if (p.store.$length === 0) { */ case 1:
  2887  			/* */ if (!(p.New === $throwNilPointerError)) { $s = 3; continue; }
  2888  			/* */ $s = 4; continue;
  2889  			/* if (!(p.New === $throwNilPointerError)) { */ case 3:
  2890  				_r = p.New(); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  2891  				$s = -1; return _r;
  2892  			/* } */ case 4:
  2893  			$s = -1; return $ifaceNil;
  2894  		/* } */ case 2:
  2895  		x$2 = (x = p.store, x$1 = p.store.$length - 1 >> 0, ((x$1 < 0 || x$1 >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + x$1]));
  2896  		p.store = $subslice(p.store, 0, (p.store.$length - 1 >> 0));
  2897  		$s = -1; return x$2;
  2898  		/* */ } return; } if ($f === undefined) { $f = { $blk: Pool.ptr.prototype.Get }; } $f._r = _r; $f.p = p; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.$s = $s; $f.$r = $r; return $f;
  2899  	};
  2900  	Pool.prototype.Get = function() { return this.$val.Get(); };
  2901  	Pool.ptr.prototype.Put = function(x) {
  2902  		var p, x;
  2903  		p = this;
  2904  		if ($interfaceIsEqual(x, $ifaceNil)) {
  2905  			return;
  2906  		}
  2907  		p.store = $append(p.store, x);
  2908  	};
  2909  	Pool.prototype.Put = function(x) { return this.$val.Put(x); };
  2910  	runtime_registerPoolCleanup = function(cleanup) {
  2911  		var cleanup;
  2912  	};
  2913  	runtime_Semacquire = function(s) {
  2914  		var s, $s, $r;
  2915  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  2916  		$r = runtime_SemacquireMutex(s, false); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  2917  		$s = -1; return;
  2918  		/* */ } return; } if ($f === undefined) { $f = { $blk: runtime_Semacquire }; } $f.s = s; $f.$s = $s; $f.$r = $r; return $f;
  2919  	};
  2920  	runtime_SemacquireMutex = function(s, lifo) {
  2921  		var _entry, _entry$1, _entry$2, _entry$3, _entry$4, _key, _key$1, _key$2, _r, ch, lifo, s, $s, $r;
  2922  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _entry = $f._entry; _entry$1 = $f._entry$1; _entry$2 = $f._entry$2; _entry$3 = $f._entry$3; _entry$4 = $f._entry$4; _key = $f._key; _key$1 = $f._key$1; _key$2 = $f._key$2; _r = $f._r; ch = $f.ch; lifo = $f.lifo; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  2923  		/* */ if (((s.$get() - (_entry = semAwoken[ptrType$1.keyFor(s)], _entry !== undefined ? _entry.v : 0) >>> 0)) === 0) { $s = 1; continue; }
  2924  		/* */ $s = 2; continue;
  2925  		/* if (((s.$get() - (_entry = semAwoken[ptrType$1.keyFor(s)], _entry !== undefined ? _entry.v : 0) >>> 0)) === 0) { */ case 1:
  2926  			ch = new $Chan($Bool, 0);
  2927  			if (lifo) {
  2928  				_key = s; (semWaiters || $throwRuntimeError("assignment to entry in nil map"))[ptrType$1.keyFor(_key)] = { k: _key, v: $appendSlice(new sliceType$1([ch]), (_entry$1 = semWaiters[ptrType$1.keyFor(s)], _entry$1 !== undefined ? _entry$1.v : sliceType$1.nil)) };
  2929  			} else {
  2930  				_key$1 = s; (semWaiters || $throwRuntimeError("assignment to entry in nil map"))[ptrType$1.keyFor(_key$1)] = { k: _key$1, v: $append((_entry$2 = semWaiters[ptrType$1.keyFor(s)], _entry$2 !== undefined ? _entry$2.v : sliceType$1.nil), ch) };
  2931  			}
  2932  			_r = $recv(ch); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  2933  			_r[0];
  2934  			_key$2 = s; (semAwoken || $throwRuntimeError("assignment to entry in nil map"))[ptrType$1.keyFor(_key$2)] = { k: _key$2, v: (_entry$3 = semAwoken[ptrType$1.keyFor(s)], _entry$3 !== undefined ? _entry$3.v : 0) - (1) >>> 0 };
  2935  			if ((_entry$4 = semAwoken[ptrType$1.keyFor(s)], _entry$4 !== undefined ? _entry$4.v : 0) === 0) {
  2936  				delete semAwoken[ptrType$1.keyFor(s)];
  2937  			}
  2938  		/* } */ case 2:
  2939  		s.$set(s.$get() - (1) >>> 0);
  2940  		$s = -1; return;
  2941  		/* */ } return; } if ($f === undefined) { $f = { $blk: runtime_SemacquireMutex }; } $f._entry = _entry; $f._entry$1 = _entry$1; $f._entry$2 = _entry$2; $f._entry$3 = _entry$3; $f._entry$4 = _entry$4; $f._key = _key; $f._key$1 = _key$1; $f._key$2 = _key$2; $f._r = _r; $f.ch = ch; $f.lifo = lifo; $f.s = s; $f.$s = $s; $f.$r = $r; return $f;
  2942  	};
  2943  	runtime_Semrelease = function(s, handoff) {
  2944  		var _entry, _entry$1, _key, _key$1, ch, handoff, s, w, $s, $r;
  2945  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _entry = $f._entry; _entry$1 = $f._entry$1; _key = $f._key; _key$1 = $f._key$1; ch = $f.ch; handoff = $f.handoff; s = $f.s; w = $f.w; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  2946  		s.$set(s.$get() + (1) >>> 0);
  2947  		w = (_entry = semWaiters[ptrType$1.keyFor(s)], _entry !== undefined ? _entry.v : sliceType$1.nil);
  2948  		if (w.$length === 0) {
  2949  			$s = -1; return;
  2950  		}
  2951  		ch = (0 >= w.$length ? ($throwRuntimeError("index out of range"), undefined) : w.$array[w.$offset + 0]);
  2952  		w = $subslice(w, 1);
  2953  		_key = s; (semWaiters || $throwRuntimeError("assignment to entry in nil map"))[ptrType$1.keyFor(_key)] = { k: _key, v: w };
  2954  		if (w.$length === 0) {
  2955  			delete semWaiters[ptrType$1.keyFor(s)];
  2956  		}
  2957  		_key$1 = s; (semAwoken || $throwRuntimeError("assignment to entry in nil map"))[ptrType$1.keyFor(_key$1)] = { k: _key$1, v: (_entry$1 = semAwoken[ptrType$1.keyFor(s)], _entry$1 !== undefined ? _entry$1.v : 0) + (1) >>> 0 };
  2958  		$r = $send(ch, true); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  2959  		$s = -1; return;
  2960  		/* */ } return; } if ($f === undefined) { $f = { $blk: runtime_Semrelease }; } $f._entry = _entry; $f._entry$1 = _entry$1; $f._key = _key; $f._key$1 = _key$1; $f.ch = ch; $f.handoff = handoff; $f.s = s; $f.w = w; $f.$s = $s; $f.$r = $r; return $f;
  2961  	};
  2962  	runtime_notifyListCheck = function(size) {
  2963  		var size;
  2964  	};
  2965  	runtime_canSpin = function(i) {
  2966  		var i;
  2967  		return false;
  2968  	};
  2969  	runtime_nanotime = function() {
  2970  		return $mul64($internalize(new ($global.Date)().getTime(), $Int64), new $Int64(0, 1000000));
  2971  	};
  2972  	throw$1 = function(s) {
  2973  		var s;
  2974  		$throwRuntimeError($externalize(s, $String));
  2975  	};
  2976  	WaitGroup.ptr.prototype.Add = function(delta) {
  2977  		var delta, wg;
  2978  		wg = this;
  2979  		wg.counter = wg.counter + (delta) >> 0;
  2980  		if (wg.counter < 0) {
  2981  			$panic(new $String("sync: negative WaitGroup counter"));
  2982  		}
  2983  		if (wg.counter > 0 && wg.ch === $chanNil) {
  2984  			wg.ch = new $Chan(structType, 0);
  2985  		}
  2986  		if ((wg.counter === 0) && !(wg.ch === $chanNil)) {
  2987  			$close(wg.ch);
  2988  			wg.ch = $chanNil;
  2989  		}
  2990  	};
  2991  	WaitGroup.prototype.Add = function(delta) { return this.$val.Add(delta); };
  2992  	WaitGroup.ptr.prototype.Wait = function() {
  2993  		var _r, wg, $s, $r;
  2994  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; wg = $f.wg; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  2995  		wg = this;
  2996  		/* */ if (wg.counter > 0) { $s = 1; continue; }
  2997  		/* */ $s = 2; continue;
  2998  		/* if (wg.counter > 0) { */ case 1:
  2999  			_r = $recv(wg.ch); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  3000  			_r[0];
  3001  		/* } */ case 2:
  3002  		$s = -1; return;
  3003  		/* */ } return; } if ($f === undefined) { $f = { $blk: WaitGroup.ptr.prototype.Wait }; } $f._r = _r; $f.wg = wg; $f.$s = $s; $f.$r = $r; return $f;
  3004  	};
  3005  	WaitGroup.prototype.Wait = function() { return this.$val.Wait(); };
  3006  	NewCond = function(l) {
  3007  		var l;
  3008  		return new Cond.ptr(new noCopy.ptr(), l, new notifyList.ptr(0, 0, 0, 0, 0), 0, 0, $chanNil);
  3009  	};
  3010  	$pkg.NewCond = NewCond;
  3011  	noCopy.ptr.prototype.Lock = function() {
  3012  	};
  3013  	noCopy.prototype.Lock = function() { return this.$val.Lock(); };
  3014  	newEntry = function(i) {
  3015  		var i, i$24ptr;
  3016  		return new entry.ptr(((i$24ptr || (i$24ptr = new ptrType$3(function() { return i; }, function($v) { i = $v; })))));
  3017  	};
  3018  	Map.ptr.prototype.Load = function(key) {
  3019  		var _entry, _entry$1, _entry$2, _tmp, _tmp$1, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, _tuple$5, e, key, m, ok, read, value, $s, $r;
  3020  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _entry = $f._entry; _entry$1 = $f._entry$1; _entry$2 = $f._entry$2; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; _tuple$4 = $f._tuple$4; _tuple$5 = $f._tuple$5; e = $f.e; key = $f.key; m = $f.m; ok = $f.ok; read = $f.read; value = $f.value; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  3021  		value = $ifaceNil;
  3022  		ok = false;
  3023  		m = this;
  3024  		_tuple = $assertType(m.read.Load(), readOnly, true);
  3025  		read = $clone(_tuple[0], readOnly);
  3026  		_tuple$1 = (_entry = read.m[$emptyInterface.keyFor(key)], _entry !== undefined ? [_entry.v, true] : [ptrType$4.nil, false]);
  3027  		e = _tuple$1[0];
  3028  		ok = _tuple$1[1];
  3029  		/* */ if (!ok && read.amended) { $s = 1; continue; }
  3030  		/* */ $s = 2; continue;
  3031  		/* if (!ok && read.amended) { */ case 1:
  3032  			$r = m.mu.Lock(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  3033  			_tuple$2 = $assertType(m.read.Load(), readOnly, true);
  3034  			readOnly.copy(read, _tuple$2[0]);
  3035  			_tuple$3 = (_entry$1 = read.m[$emptyInterface.keyFor(key)], _entry$1 !== undefined ? [_entry$1.v, true] : [ptrType$4.nil, false]);
  3036  			e = _tuple$3[0];
  3037  			ok = _tuple$3[1];
  3038  			if (!ok && read.amended) {
  3039  				_tuple$4 = (_entry$2 = m.dirty[$emptyInterface.keyFor(key)], _entry$2 !== undefined ? [_entry$2.v, true] : [ptrType$4.nil, false]);
  3040  				e = _tuple$4[0];
  3041  				ok = _tuple$4[1];
  3042  				m.missLocked();
  3043  			}
  3044  			$r = m.mu.Unlock(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  3045  		/* } */ case 2:
  3046  		if (!ok) {
  3047  			_tmp = $ifaceNil;
  3048  			_tmp$1 = false;
  3049  			value = _tmp;
  3050  			ok = _tmp$1;
  3051  			$s = -1; return [value, ok];
  3052  		}
  3053  		_tuple$5 = e.load();
  3054  		value = _tuple$5[0];
  3055  		ok = _tuple$5[1];
  3056  		$s = -1; return [value, ok];
  3057  		/* */ } return; } if ($f === undefined) { $f = { $blk: Map.ptr.prototype.Load }; } $f._entry = _entry; $f._entry$1 = _entry$1; $f._entry$2 = _entry$2; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f._tuple$4 = _tuple$4; $f._tuple$5 = _tuple$5; $f.e = e; $f.key = key; $f.m = m; $f.ok = ok; $f.read = read; $f.value = value; $f.$s = $s; $f.$r = $r; return $f;
  3058  	};
  3059  	Map.prototype.Load = function(key) { return this.$val.Load(key); };
  3060  	entry.ptr.prototype.load = function() {
  3061  		var _tmp, _tmp$1, _tmp$2, _tmp$3, e, ok, p, value;
  3062  		value = $ifaceNil;
  3063  		ok = false;
  3064  		e = this;
  3065  		p = atomic.LoadPointer((e.$ptr_p || (e.$ptr_p = new ptrType$5(function() { return this.$target.p; }, function($v) { this.$target.p = $v; }, e))));
  3066  		if (p === 0 || p === expunged) {
  3067  			_tmp = $ifaceNil;
  3068  			_tmp$1 = false;
  3069  			value = _tmp;
  3070  			ok = _tmp$1;
  3071  			return [value, ok];
  3072  		}
  3073  		_tmp$2 = (p).$get();
  3074  		_tmp$3 = true;
  3075  		value = _tmp$2;
  3076  		ok = _tmp$3;
  3077  		return [value, ok];
  3078  	};
  3079  	entry.prototype.load = function() { return this.$val.load(); };
  3080  	Map.ptr.prototype.Store = function(key, value) {
  3081  		var _entry, _entry$1, _entry$2, _key, _key$1, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, e, e$1, e$2, key, m, ok, ok$1, ok$2, read, value, x, $s, $r;
  3082  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _entry = $f._entry; _entry$1 = $f._entry$1; _entry$2 = $f._entry$2; _key = $f._key; _key$1 = $f._key$1; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; _tuple$4 = $f._tuple$4; e = $f.e; e$1 = $f.e$1; e$2 = $f.e$2; key = $f.key; m = $f.m; ok = $f.ok; ok$1 = $f.ok$1; ok$2 = $f.ok$2; read = $f.read; value = $f.value; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  3083  		value = [value];
  3084  		m = this;
  3085  		_tuple = $assertType(m.read.Load(), readOnly, true);
  3086  		read = $clone(_tuple[0], readOnly);
  3087  		_tuple$1 = (_entry = read.m[$emptyInterface.keyFor(key)], _entry !== undefined ? [_entry.v, true] : [ptrType$4.nil, false]);
  3088  		e = _tuple$1[0];
  3089  		ok = _tuple$1[1];
  3090  		if (ok && e.tryStore((value.$ptr || (value.$ptr = new ptrType$3(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, value))))) {
  3091  			$s = -1; return;
  3092  		}
  3093  		$r = m.mu.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  3094  		_tuple$2 = $assertType(m.read.Load(), readOnly, true);
  3095  		readOnly.copy(read, _tuple$2[0]);
  3096  		_tuple$3 = (_entry$1 = read.m[$emptyInterface.keyFor(key)], _entry$1 !== undefined ? [_entry$1.v, true] : [ptrType$4.nil, false]);
  3097  		e$1 = _tuple$3[0];
  3098  		ok$1 = _tuple$3[1];
  3099  		if (ok$1) {
  3100  			if (e$1.unexpungeLocked()) {
  3101  				_key = key; (m.dirty || $throwRuntimeError("assignment to entry in nil map"))[$emptyInterface.keyFor(_key)] = { k: _key, v: e$1 };
  3102  			}
  3103  			e$1.storeLocked((value.$ptr || (value.$ptr = new ptrType$3(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, value))));
  3104  		} else {
  3105  			_tuple$4 = (_entry$2 = m.dirty[$emptyInterface.keyFor(key)], _entry$2 !== undefined ? [_entry$2.v, true] : [ptrType$4.nil, false]);
  3106  			e$2 = _tuple$4[0];
  3107  			ok$2 = _tuple$4[1];
  3108  			if (ok$2) {
  3109  				e$2.storeLocked((value.$ptr || (value.$ptr = new ptrType$3(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, value))));
  3110  			} else {
  3111  				if (!read.amended) {
  3112  					m.dirtyLocked();
  3113  					m.read.Store((x = new readOnly.ptr(read.m, true), new x.constructor.elem(x)));
  3114  				}
  3115  				_key$1 = key; (m.dirty || $throwRuntimeError("assignment to entry in nil map"))[$emptyInterface.keyFor(_key$1)] = { k: _key$1, v: newEntry(value[0]) };
  3116  			}
  3117  		}
  3118  		$r = m.mu.Unlock(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  3119  		$s = -1; return;
  3120  		/* */ } return; } if ($f === undefined) { $f = { $blk: Map.ptr.prototype.Store }; } $f._entry = _entry; $f._entry$1 = _entry$1; $f._entry$2 = _entry$2; $f._key = _key; $f._key$1 = _key$1; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f._tuple$4 = _tuple$4; $f.e = e; $f.e$1 = e$1; $f.e$2 = e$2; $f.key = key; $f.m = m; $f.ok = ok; $f.ok$1 = ok$1; $f.ok$2 = ok$2; $f.read = read; $f.value = value; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
  3121  	};
  3122  	Map.prototype.Store = function(key, value) { return this.$val.Store(key, value); };
  3123  	entry.ptr.prototype.tryStore = function(i) {
  3124  		var e, i, p;
  3125  		e = this;
  3126  		p = atomic.LoadPointer((e.$ptr_p || (e.$ptr_p = new ptrType$5(function() { return this.$target.p; }, function($v) { this.$target.p = $v; }, e))));
  3127  		if (p === expunged) {
  3128  			return false;
  3129  		}
  3130  		while (true) {
  3131  			if (atomic.CompareAndSwapPointer((e.$ptr_p || (e.$ptr_p = new ptrType$5(function() { return this.$target.p; }, function($v) { this.$target.p = $v; }, e))), p, (i))) {
  3132  				return true;
  3133  			}
  3134  			p = atomic.LoadPointer((e.$ptr_p || (e.$ptr_p = new ptrType$5(function() { return this.$target.p; }, function($v) { this.$target.p = $v; }, e))));
  3135  			if (p === expunged) {
  3136  				return false;
  3137  			}
  3138  		}
  3139  	};
  3140  	entry.prototype.tryStore = function(i) { return this.$val.tryStore(i); };
  3141  	entry.ptr.prototype.unexpungeLocked = function() {
  3142  		var e, wasExpunged;
  3143  		wasExpunged = false;
  3144  		e = this;
  3145  		wasExpunged = atomic.CompareAndSwapPointer((e.$ptr_p || (e.$ptr_p = new ptrType$5(function() { return this.$target.p; }, function($v) { this.$target.p = $v; }, e))), expunged, 0);
  3146  		return wasExpunged;
  3147  	};
  3148  	entry.prototype.unexpungeLocked = function() { return this.$val.unexpungeLocked(); };
  3149  	entry.ptr.prototype.storeLocked = function(i) {
  3150  		var e, i;
  3151  		e = this;
  3152  		atomic.StorePointer((e.$ptr_p || (e.$ptr_p = new ptrType$5(function() { return this.$target.p; }, function($v) { this.$target.p = $v; }, e))), (i));
  3153  	};
  3154  	entry.prototype.storeLocked = function(i) { return this.$val.storeLocked(i); };
  3155  	Map.ptr.prototype.LoadOrStore = function(key, value) {
  3156  		var _entry, _entry$1, _entry$2, _key, _key$1, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, _tuple$5, _tuple$6, _tuple$7, actual, actual$1, e, e$1, e$2, key, loaded, loaded$1, m, ok, ok$1, ok$2, ok$3, read, value, x, $s, $r;
  3157  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _entry = $f._entry; _entry$1 = $f._entry$1; _entry$2 = $f._entry$2; _key = $f._key; _key$1 = $f._key$1; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tmp$4 = $f._tmp$4; _tmp$5 = $f._tmp$5; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; _tuple$4 = $f._tuple$4; _tuple$5 = $f._tuple$5; _tuple$6 = $f._tuple$6; _tuple$7 = $f._tuple$7; actual = $f.actual; actual$1 = $f.actual$1; e = $f.e; e$1 = $f.e$1; e$2 = $f.e$2; key = $f.key; loaded = $f.loaded; loaded$1 = $f.loaded$1; m = $f.m; ok = $f.ok; ok$1 = $f.ok$1; ok$2 = $f.ok$2; ok$3 = $f.ok$3; read = $f.read; value = $f.value; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  3158  		actual = $ifaceNil;
  3159  		loaded = false;
  3160  		m = this;
  3161  		_tuple = $assertType(m.read.Load(), readOnly, true);
  3162  		read = $clone(_tuple[0], readOnly);
  3163  		_tuple$1 = (_entry = read.m[$emptyInterface.keyFor(key)], _entry !== undefined ? [_entry.v, true] : [ptrType$4.nil, false]);
  3164  		e = _tuple$1[0];
  3165  		ok = _tuple$1[1];
  3166  		if (ok) {
  3167  			_tuple$2 = e.tryLoadOrStore(value);
  3168  			actual$1 = _tuple$2[0];
  3169  			loaded$1 = _tuple$2[1];
  3170  			ok$1 = _tuple$2[2];
  3171  			if (ok$1) {
  3172  				_tmp = actual$1;
  3173  				_tmp$1 = loaded$1;
  3174  				actual = _tmp;
  3175  				loaded = _tmp$1;
  3176  				$s = -1; return [actual, loaded];
  3177  			}
  3178  		}
  3179  		$r = m.mu.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  3180  		_tuple$3 = $assertType(m.read.Load(), readOnly, true);
  3181  		readOnly.copy(read, _tuple$3[0]);
  3182  		_tuple$4 = (_entry$1 = read.m[$emptyInterface.keyFor(key)], _entry$1 !== undefined ? [_entry$1.v, true] : [ptrType$4.nil, false]);
  3183  		e$1 = _tuple$4[0];
  3184  		ok$2 = _tuple$4[1];
  3185  		if (ok$2) {
  3186  			if (e$1.unexpungeLocked()) {
  3187  				_key = key; (m.dirty || $throwRuntimeError("assignment to entry in nil map"))[$emptyInterface.keyFor(_key)] = { k: _key, v: e$1 };
  3188  			}
  3189  			_tuple$5 = e$1.tryLoadOrStore(value);
  3190  			actual = _tuple$5[0];
  3191  			loaded = _tuple$5[1];
  3192  		} else {
  3193  			_tuple$6 = (_entry$2 = m.dirty[$emptyInterface.keyFor(key)], _entry$2 !== undefined ? [_entry$2.v, true] : [ptrType$4.nil, false]);
  3194  			e$2 = _tuple$6[0];
  3195  			ok$3 = _tuple$6[1];
  3196  			if (ok$3) {
  3197  				_tuple$7 = e$2.tryLoadOrStore(value);
  3198  				actual = _tuple$7[0];
  3199  				loaded = _tuple$7[1];
  3200  				m.missLocked();
  3201  			} else {
  3202  				if (!read.amended) {
  3203  					m.dirtyLocked();
  3204  					m.read.Store((x = new readOnly.ptr(read.m, true), new x.constructor.elem(x)));
  3205  				}
  3206  				_key$1 = key; (m.dirty || $throwRuntimeError("assignment to entry in nil map"))[$emptyInterface.keyFor(_key$1)] = { k: _key$1, v: newEntry(value) };
  3207  				_tmp$2 = value;
  3208  				_tmp$3 = false;
  3209  				actual = _tmp$2;
  3210  				loaded = _tmp$3;
  3211  			}
  3212  		}
  3213  		$r = m.mu.Unlock(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  3214  		_tmp$4 = actual;
  3215  		_tmp$5 = loaded;
  3216  		actual = _tmp$4;
  3217  		loaded = _tmp$5;
  3218  		$s = -1; return [actual, loaded];
  3219  		/* */ } return; } if ($f === undefined) { $f = { $blk: Map.ptr.prototype.LoadOrStore }; } $f._entry = _entry; $f._entry$1 = _entry$1; $f._entry$2 = _entry$2; $f._key = _key; $f._key$1 = _key$1; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tmp$4 = _tmp$4; $f._tmp$5 = _tmp$5; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f._tuple$4 = _tuple$4; $f._tuple$5 = _tuple$5; $f._tuple$6 = _tuple$6; $f._tuple$7 = _tuple$7; $f.actual = actual; $f.actual$1 = actual$1; $f.e = e; $f.e$1 = e$1; $f.e$2 = e$2; $f.key = key; $f.loaded = loaded; $f.loaded$1 = loaded$1; $f.m = m; $f.ok = ok; $f.ok$1 = ok$1; $f.ok$2 = ok$2; $f.ok$3 = ok$3; $f.read = read; $f.value = value; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
  3220  	};
  3221  	Map.prototype.LoadOrStore = function(key, value) { return this.$val.LoadOrStore(key, value); };
  3222  	entry.ptr.prototype.tryLoadOrStore = function(i) {
  3223  		var _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$14, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, actual, e, i, ic, ic$24ptr, loaded, ok, p;
  3224  		actual = $ifaceNil;
  3225  		loaded = false;
  3226  		ok = false;
  3227  		e = this;
  3228  		p = atomic.LoadPointer((e.$ptr_p || (e.$ptr_p = new ptrType$5(function() { return this.$target.p; }, function($v) { this.$target.p = $v; }, e))));
  3229  		if (p === expunged) {
  3230  			_tmp = $ifaceNil;
  3231  			_tmp$1 = false;
  3232  			_tmp$2 = false;
  3233  			actual = _tmp;
  3234  			loaded = _tmp$1;
  3235  			ok = _tmp$2;
  3236  			return [actual, loaded, ok];
  3237  		}
  3238  		if (!(p === 0)) {
  3239  			_tmp$3 = (p).$get();
  3240  			_tmp$4 = true;
  3241  			_tmp$5 = true;
  3242  			actual = _tmp$3;
  3243  			loaded = _tmp$4;
  3244  			ok = _tmp$5;
  3245  			return [actual, loaded, ok];
  3246  		}
  3247  		ic = i;
  3248  		while (true) {
  3249  			if (atomic.CompareAndSwapPointer((e.$ptr_p || (e.$ptr_p = new ptrType$5(function() { return this.$target.p; }, function($v) { this.$target.p = $v; }, e))), 0, ((ic$24ptr || (ic$24ptr = new ptrType$3(function() { return ic; }, function($v) { ic = $v; })))))) {
  3250  				_tmp$6 = i;
  3251  				_tmp$7 = false;
  3252  				_tmp$8 = true;
  3253  				actual = _tmp$6;
  3254  				loaded = _tmp$7;
  3255  				ok = _tmp$8;
  3256  				return [actual, loaded, ok];
  3257  			}
  3258  			p = atomic.LoadPointer((e.$ptr_p || (e.$ptr_p = new ptrType$5(function() { return this.$target.p; }, function($v) { this.$target.p = $v; }, e))));
  3259  			if (p === expunged) {
  3260  				_tmp$9 = $ifaceNil;
  3261  				_tmp$10 = false;
  3262  				_tmp$11 = false;
  3263  				actual = _tmp$9;
  3264  				loaded = _tmp$10;
  3265  				ok = _tmp$11;
  3266  				return [actual, loaded, ok];
  3267  			}
  3268  			if (!(p === 0)) {
  3269  				_tmp$12 = (p).$get();
  3270  				_tmp$13 = true;
  3271  				_tmp$14 = true;
  3272  				actual = _tmp$12;
  3273  				loaded = _tmp$13;
  3274  				ok = _tmp$14;
  3275  				return [actual, loaded, ok];
  3276  			}
  3277  		}
  3278  	};
  3279  	entry.prototype.tryLoadOrStore = function(i) { return this.$val.tryLoadOrStore(i); };
  3280  	Map.ptr.prototype.Delete = function(key) {
  3281  		var _entry, _entry$1, _tuple, _tuple$1, _tuple$2, _tuple$3, e, key, m, ok, read, $s, $r;
  3282  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _entry = $f._entry; _entry$1 = $f._entry$1; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; e = $f.e; key = $f.key; m = $f.m; ok = $f.ok; read = $f.read; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  3283  		m = this;
  3284  		_tuple = $assertType(m.read.Load(), readOnly, true);
  3285  		read = $clone(_tuple[0], readOnly);
  3286  		_tuple$1 = (_entry = read.m[$emptyInterface.keyFor(key)], _entry !== undefined ? [_entry.v, true] : [ptrType$4.nil, false]);
  3287  		e = _tuple$1[0];
  3288  		ok = _tuple$1[1];
  3289  		/* */ if (!ok && read.amended) { $s = 1; continue; }
  3290  		/* */ $s = 2; continue;
  3291  		/* if (!ok && read.amended) { */ case 1:
  3292  			$r = m.mu.Lock(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  3293  			_tuple$2 = $assertType(m.read.Load(), readOnly, true);
  3294  			readOnly.copy(read, _tuple$2[0]);
  3295  			_tuple$3 = (_entry$1 = read.m[$emptyInterface.keyFor(key)], _entry$1 !== undefined ? [_entry$1.v, true] : [ptrType$4.nil, false]);
  3296  			e = _tuple$3[0];
  3297  			ok = _tuple$3[1];
  3298  			if (!ok && read.amended) {
  3299  				delete m.dirty[$emptyInterface.keyFor(key)];
  3300  			}
  3301  			$r = m.mu.Unlock(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  3302  		/* } */ case 2:
  3303  		if (ok) {
  3304  			e.delete$();
  3305  		}
  3306  		$s = -1; return;
  3307  		/* */ } return; } if ($f === undefined) { $f = { $blk: Map.ptr.prototype.Delete }; } $f._entry = _entry; $f._entry$1 = _entry$1; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f.e = e; $f.key = key; $f.m = m; $f.ok = ok; $f.read = read; $f.$s = $s; $f.$r = $r; return $f;
  3308  	};
  3309  	Map.prototype.Delete = function(key) { return this.$val.Delete(key); };
  3310  	entry.ptr.prototype.delete$ = function() {
  3311  		var e, hadValue, p;
  3312  		hadValue = false;
  3313  		e = this;
  3314  		while (true) {
  3315  			p = atomic.LoadPointer((e.$ptr_p || (e.$ptr_p = new ptrType$5(function() { return this.$target.p; }, function($v) { this.$target.p = $v; }, e))));
  3316  			if (p === 0 || p === expunged) {
  3317  				hadValue = false;
  3318  				return hadValue;
  3319  			}
  3320  			if (atomic.CompareAndSwapPointer((e.$ptr_p || (e.$ptr_p = new ptrType$5(function() { return this.$target.p; }, function($v) { this.$target.p = $v; }, e))), p, 0)) {
  3321  				hadValue = true;
  3322  				return hadValue;
  3323  			}
  3324  		}
  3325  	};
  3326  	entry.prototype.delete$ = function() { return this.$val.delete$(); };
  3327  	Map.ptr.prototype.Range = function(f) {
  3328  		var _entry, _i, _keys, _r, _ref, _tuple, _tuple$1, _tuple$2, e, f, k, m, ok, read, v, $s, $r;
  3329  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _entry = $f._entry; _i = $f._i; _keys = $f._keys; _r = $f._r; _ref = $f._ref; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; e = $f.e; f = $f.f; k = $f.k; m = $f.m; ok = $f.ok; read = $f.read; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  3330  		m = this;
  3331  		_tuple = $assertType(m.read.Load(), readOnly, true);
  3332  		read = $clone(_tuple[0], readOnly);
  3333  		/* */ if (read.amended) { $s = 1; continue; }
  3334  		/* */ $s = 2; continue;
  3335  		/* if (read.amended) { */ case 1:
  3336  			$r = m.mu.Lock(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  3337  			_tuple$1 = $assertType(m.read.Load(), readOnly, true);
  3338  			readOnly.copy(read, _tuple$1[0]);
  3339  			if (read.amended) {
  3340  				readOnly.copy(read, new readOnly.ptr(m.dirty, false));
  3341  				m.read.Store(new read.constructor.elem(read));
  3342  				m.dirty = false;
  3343  				m.misses = 0;
  3344  			}
  3345  			$r = m.mu.Unlock(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  3346  		/* } */ case 2:
  3347  		_ref = read.m;
  3348  		_i = 0;
  3349  		_keys = $keys(_ref);
  3350  		/* while (true) { */ case 5:
  3351  			/* if (!(_i < _keys.length)) { break; } */ if(!(_i < _keys.length)) { $s = 6; continue; }
  3352  			_entry = _ref[_keys[_i]];
  3353  			if (_entry === undefined) {
  3354  				_i++;
  3355  				/* continue; */ $s = 5; continue;
  3356  			}
  3357  			k = _entry.k;
  3358  			e = _entry.v;
  3359  			_tuple$2 = e.load();
  3360  			v = _tuple$2[0];
  3361  			ok = _tuple$2[1];
  3362  			/* */ if (!ok) { $s = 7; continue; }
  3363  			/* */ $s = 8; continue;
  3364  			/* if (!ok) { */ case 7:
  3365  				_i++;
  3366  				/* continue; */ $s = 5; continue;
  3367  			/* } */ case 8:
  3368  			_r = f(k, v); /* */ $s = 11; case 11: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  3369  			/* */ if (!_r) { $s = 9; continue; }
  3370  			/* */ $s = 10; continue;
  3371  			/* if (!_r) { */ case 9:
  3372  				/* break; */ $s = 6; continue;
  3373  			/* } */ case 10:
  3374  			_i++;
  3375  		/* } */ $s = 5; continue; case 6:
  3376  		$s = -1; return;
  3377  		/* */ } return; } if ($f === undefined) { $f = { $blk: Map.ptr.prototype.Range }; } $f._entry = _entry; $f._i = _i; $f._keys = _keys; $f._r = _r; $f._ref = _ref; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f.e = e; $f.f = f; $f.k = k; $f.m = m; $f.ok = ok; $f.read = read; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
  3378  	};
  3379  	Map.prototype.Range = function(f) { return this.$val.Range(f); };
  3380  	Map.ptr.prototype.missLocked = function() {
  3381  		var m, x;
  3382  		m = this;
  3383  		m.misses = m.misses + (1) >> 0;
  3384  		if (m.misses < $keys(m.dirty).length) {
  3385  			return;
  3386  		}
  3387  		m.read.Store((x = new readOnly.ptr(m.dirty, false), new x.constructor.elem(x)));
  3388  		m.dirty = false;
  3389  		m.misses = 0;
  3390  	};
  3391  	Map.prototype.missLocked = function() { return this.$val.missLocked(); };
  3392  	Map.ptr.prototype.dirtyLocked = function() {
  3393  		var _entry, _i, _key, _keys, _ref, _tuple, e, k, m, read, x;
  3394  		m = this;
  3395  		if (!(m.dirty === false)) {
  3396  			return;
  3397  		}
  3398  		_tuple = $assertType(m.read.Load(), readOnly, true);
  3399  		read = $clone(_tuple[0], readOnly);
  3400  		m.dirty = (x = $keys(read.m).length, ((x < 0 || x > 2147483647) ? $throwRuntimeError("makemap: size out of range") : {}));
  3401  		_ref = read.m;
  3402  		_i = 0;
  3403  		_keys = $keys(_ref);
  3404  		while (true) {
  3405  			if (!(_i < _keys.length)) { break; }
  3406  			_entry = _ref[_keys[_i]];
  3407  			if (_entry === undefined) {
  3408  				_i++;
  3409  				continue;
  3410  			}
  3411  			k = _entry.k;
  3412  			e = _entry.v;
  3413  			if (!e.tryExpungeLocked()) {
  3414  				_key = k; (m.dirty || $throwRuntimeError("assignment to entry in nil map"))[$emptyInterface.keyFor(_key)] = { k: _key, v: e };
  3415  			}
  3416  			_i++;
  3417  		}
  3418  	};
  3419  	Map.prototype.dirtyLocked = function() { return this.$val.dirtyLocked(); };
  3420  	entry.ptr.prototype.tryExpungeLocked = function() {
  3421  		var e, isExpunged, p;
  3422  		isExpunged = false;
  3423  		e = this;
  3424  		p = atomic.LoadPointer((e.$ptr_p || (e.$ptr_p = new ptrType$5(function() { return this.$target.p; }, function($v) { this.$target.p = $v; }, e))));
  3425  		while (true) {
  3426  			if (!(p === 0)) { break; }
  3427  			if (atomic.CompareAndSwapPointer((e.$ptr_p || (e.$ptr_p = new ptrType$5(function() { return this.$target.p; }, function($v) { this.$target.p = $v; }, e))), 0, expunged)) {
  3428  				isExpunged = true;
  3429  				return isExpunged;
  3430  			}
  3431  			p = atomic.LoadPointer((e.$ptr_p || (e.$ptr_p = new ptrType$5(function() { return this.$target.p; }, function($v) { this.$target.p = $v; }, e))));
  3432  		}
  3433  		isExpunged = p === expunged;
  3434  		return isExpunged;
  3435  	};
  3436  	entry.prototype.tryExpungeLocked = function() { return this.$val.tryExpungeLocked(); };
  3437  	Mutex.ptr.prototype.Lock = function() {
  3438  		var awoke, delta, iter, m, new$1, old, queueLifo, starving, waitStartTime, x, x$1, $s, $r;
  3439  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; awoke = $f.awoke; delta = $f.delta; iter = $f.iter; m = $f.m; new$1 = $f.new$1; old = $f.old; queueLifo = $f.queueLifo; starving = $f.starving; waitStartTime = $f.waitStartTime; x = $f.x; x$1 = $f.x$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  3440  		m = this;
  3441  		if (atomic.CompareAndSwapInt32((m.$ptr_state || (m.$ptr_state = new ptrType$6(function() { return this.$target.state; }, function($v) { this.$target.state = $v; }, m))), 0, 1)) {
  3442  			if (false) {
  3443  				race.Acquire((m));
  3444  			}
  3445  			$s = -1; return;
  3446  		}
  3447  		waitStartTime = new $Int64(0, 0);
  3448  		starving = false;
  3449  		awoke = false;
  3450  		iter = 0;
  3451  		old = m.state;
  3452  		/* while (true) { */ case 1:
  3453  			/* */ if (((old & 5) === 1) && runtime_canSpin(iter)) { $s = 3; continue; }
  3454  			/* */ $s = 4; continue;
  3455  			/* if (((old & 5) === 1) && runtime_canSpin(iter)) { */ case 3:
  3456  				if (!awoke && ((old & 2) === 0) && !(((old >> 3 >> 0) === 0)) && atomic.CompareAndSwapInt32((m.$ptr_state || (m.$ptr_state = new ptrType$6(function() { return this.$target.state; }, function($v) { this.$target.state = $v; }, m))), old, old | 2)) {
  3457  					awoke = true;
  3458  				}
  3459  				runtime_doSpin();
  3460  				iter = iter + (1) >> 0;
  3461  				old = m.state;
  3462  				/* continue; */ $s = 1; continue;
  3463  			/* } */ case 4:
  3464  			new$1 = old;
  3465  			if ((old & 4) === 0) {
  3466  				new$1 = new$1 | (1);
  3467  			}
  3468  			if (!(((old & 5) === 0))) {
  3469  				new$1 = new$1 + (8) >> 0;
  3470  			}
  3471  			if (starving && !(((old & 1) === 0))) {
  3472  				new$1 = new$1 | (4);
  3473  			}
  3474  			if (awoke) {
  3475  				if ((new$1 & 2) === 0) {
  3476  					throw$1("sync: inconsistent mutex state");
  3477  				}
  3478  				new$1 = (new$1 & ~(2)) >> 0;
  3479  			}
  3480  			/* */ if (atomic.CompareAndSwapInt32((m.$ptr_state || (m.$ptr_state = new ptrType$6(function() { return this.$target.state; }, function($v) { this.$target.state = $v; }, m))), old, new$1)) { $s = 5; continue; }
  3481  			/* */ $s = 6; continue;
  3482  			/* if (atomic.CompareAndSwapInt32((m.$ptr_state || (m.$ptr_state = new ptrType$6(function() { return this.$target.state; }, function($v) { this.$target.state = $v; }, m))), old, new$1)) { */ case 5:
  3483  				if ((old & 5) === 0) {
  3484  					/* break; */ $s = 2; continue;
  3485  				}
  3486  				queueLifo = !((waitStartTime.$high === 0 && waitStartTime.$low === 0));
  3487  				if ((waitStartTime.$high === 0 && waitStartTime.$low === 0)) {
  3488  					waitStartTime = runtime_nanotime();
  3489  				}
  3490  				$r = runtime_SemacquireMutex((m.$ptr_sema || (m.$ptr_sema = new ptrType$1(function() { return this.$target.sema; }, function($v) { this.$target.sema = $v; }, m))), queueLifo); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  3491  				starving = starving || (x = (x$1 = runtime_nanotime(), new $Int64(x$1.$high - waitStartTime.$high, x$1.$low - waitStartTime.$low)), (x.$high > 0 || (x.$high === 0 && x.$low > 1000000)));
  3492  				old = m.state;
  3493  				if (!(((old & 4) === 0))) {
  3494  					if (!(((old & 3) === 0)) || ((old >> 3 >> 0) === 0)) {
  3495  						throw$1("sync: inconsistent mutex state");
  3496  					}
  3497  					delta = -7;
  3498  					if (!starving || ((old >> 3 >> 0) === 1)) {
  3499  						delta = delta - (4) >> 0;
  3500  					}
  3501  					atomic.AddInt32((m.$ptr_state || (m.$ptr_state = new ptrType$6(function() { return this.$target.state; }, function($v) { this.$target.state = $v; }, m))), delta);
  3502  					/* break; */ $s = 2; continue;
  3503  				}
  3504  				awoke = true;
  3505  				iter = 0;
  3506  				$s = 7; continue;
  3507  			/* } else { */ case 6:
  3508  				old = m.state;
  3509  			/* } */ case 7:
  3510  		/* } */ $s = 1; continue; case 2:
  3511  		if (false) {
  3512  			race.Acquire((m));
  3513  		}
  3514  		$s = -1; return;
  3515  		/* */ } return; } if ($f === undefined) { $f = { $blk: Mutex.ptr.prototype.Lock }; } $f.awoke = awoke; $f.delta = delta; $f.iter = iter; $f.m = m; $f.new$1 = new$1; $f.old = old; $f.queueLifo = queueLifo; $f.starving = starving; $f.waitStartTime = waitStartTime; $f.x = x; $f.x$1 = x$1; $f.$s = $s; $f.$r = $r; return $f;
  3516  	};
  3517  	Mutex.prototype.Lock = function() { return this.$val.Lock(); };
  3518  	Mutex.ptr.prototype.Unlock = function() {
  3519  		var m, new$1, old, $s, $r;
  3520  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; m = $f.m; new$1 = $f.new$1; old = $f.old; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  3521  		m = this;
  3522  		if (false) {
  3523  			$unused(m.state);
  3524  			race.Release((m));
  3525  		}
  3526  		new$1 = atomic.AddInt32((m.$ptr_state || (m.$ptr_state = new ptrType$6(function() { return this.$target.state; }, function($v) { this.$target.state = $v; }, m))), -1);
  3527  		if ((((new$1 + 1 >> 0)) & 1) === 0) {
  3528  			throw$1("sync: unlock of unlocked mutex");
  3529  		}
  3530  		/* */ if ((new$1 & 4) === 0) { $s = 1; continue; }
  3531  		/* */ $s = 2; continue;
  3532  		/* if ((new$1 & 4) === 0) { */ case 1:
  3533  			old = new$1;
  3534  			/* while (true) { */ case 4:
  3535  				if (((old >> 3 >> 0) === 0) || !(((old & 7) === 0))) {
  3536  					$s = -1; return;
  3537  				}
  3538  				new$1 = ((old - 8 >> 0)) | 2;
  3539  				/* */ if (atomic.CompareAndSwapInt32((m.$ptr_state || (m.$ptr_state = new ptrType$6(function() { return this.$target.state; }, function($v) { this.$target.state = $v; }, m))), old, new$1)) { $s = 6; continue; }
  3540  				/* */ $s = 7; continue;
  3541  				/* if (atomic.CompareAndSwapInt32((m.$ptr_state || (m.$ptr_state = new ptrType$6(function() { return this.$target.state; }, function($v) { this.$target.state = $v; }, m))), old, new$1)) { */ case 6:
  3542  					$r = runtime_Semrelease((m.$ptr_sema || (m.$ptr_sema = new ptrType$1(function() { return this.$target.sema; }, function($v) { this.$target.sema = $v; }, m))), false); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  3543  					$s = -1; return;
  3544  				/* } */ case 7:
  3545  				old = m.state;
  3546  			/* } */ $s = 4; continue; case 5:
  3547  			$s = 3; continue;
  3548  		/* } else { */ case 2:
  3549  			$r = runtime_Semrelease((m.$ptr_sema || (m.$ptr_sema = new ptrType$1(function() { return this.$target.sema; }, function($v) { this.$target.sema = $v; }, m))), true); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  3550  		/* } */ case 3:
  3551  		$s = -1; return;
  3552  		/* */ } return; } if ($f === undefined) { $f = { $blk: Mutex.ptr.prototype.Unlock }; } $f.m = m; $f.new$1 = new$1; $f.old = old; $f.$s = $s; $f.$r = $r; return $f;
  3553  	};
  3554  	Mutex.prototype.Unlock = function() { return this.$val.Unlock(); };
  3555  	Once.ptr.prototype.Do = function(f) {
  3556  		var f, o, $s, $deferred, $r;
  3557  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; f = $f.f; o = $f.o; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
  3558  		o = this;
  3559  		if (atomic.LoadUint32((o.$ptr_done || (o.$ptr_done = new ptrType$1(function() { return this.$target.done; }, function($v) { this.$target.done = $v; }, o)))) === 1) {
  3560  			$s = -1; return;
  3561  		}
  3562  		$r = o.m.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  3563  		$deferred.push([$methodVal(o.m, "Unlock"), []]);
  3564  		/* */ if (o.done === 0) { $s = 2; continue; }
  3565  		/* */ $s = 3; continue;
  3566  		/* if (o.done === 0) { */ case 2:
  3567  			$deferred.push([atomic.StoreUint32, [(o.$ptr_done || (o.$ptr_done = new ptrType$1(function() { return this.$target.done; }, function($v) { this.$target.done = $v; }, o))), 1]]);
  3568  			$r = f(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  3569  		/* } */ case 3:
  3570  		$s = -1; return;
  3571  		/* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: Once.ptr.prototype.Do }; } $f.f = f; $f.o = o; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
  3572  	};
  3573  	Once.prototype.Do = function(f) { return this.$val.Do(f); };
  3574  	poolCleanup = function() {
  3575  		var _i, _i$1, _ref, _ref$1, i, i$1, j, l, p, x;
  3576  		_ref = allPools;
  3577  		_i = 0;
  3578  		while (true) {
  3579  			if (!(_i < _ref.$length)) { break; }
  3580  			i = _i;
  3581  			p = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
  3582  			((i < 0 || i >= allPools.$length) ? ($throwRuntimeError("index out of range"), undefined) : allPools.$array[allPools.$offset + i] = ptrType.nil);
  3583  			i$1 = 0;
  3584  			while (true) {
  3585  				if (!(i$1 < ((p.localSize >> 0)))) { break; }
  3586  				l = indexLocal(p.local, i$1);
  3587  				l.poolLocalInternal.private$0 = $ifaceNil;
  3588  				_ref$1 = l.poolLocalInternal.shared;
  3589  				_i$1 = 0;
  3590  				while (true) {
  3591  					if (!(_i$1 < _ref$1.$length)) { break; }
  3592  					j = _i$1;
  3593  					(x = l.poolLocalInternal.shared, ((j < 0 || j >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + j] = $ifaceNil));
  3594  					_i$1++;
  3595  				}
  3596  				l.poolLocalInternal.shared = sliceType$4.nil;
  3597  				i$1 = i$1 + (1) >> 0;
  3598  			}
  3599  			p.local = 0;
  3600  			p.localSize = 0;
  3601  			_i++;
  3602  		}
  3603  		allPools = new sliceType([]);
  3604  	};
  3605  	init = function() {
  3606  		runtime_registerPoolCleanup(poolCleanup);
  3607  	};
  3608  	indexLocal = function(l, i) {
  3609  		var i, l, lp;
  3610  		lp = (((l) + ($imul(((i >>> 0)), 128) >>> 0) >>> 0));
  3611  		return ($pointerOfStructConversion(lp, ptrType$7));
  3612  	};
  3613  	init$1 = function() {
  3614  		var n;
  3615  		n = new notifyList.ptr(0, 0, 0, 0, 0);
  3616  		runtime_notifyListCheck(20);
  3617  	};
  3618  	runtime_doSpin = function() {
  3619  		$throwRuntimeError("native function not implemented: sync.runtime_doSpin");
  3620  	};
  3621  	RWMutex.ptr.prototype.RLock = function() {
  3622  		var rw, $s, $r;
  3623  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; rw = $f.rw; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  3624  		rw = this;
  3625  		if (false) {
  3626  			$unused(rw.w.state);
  3627  			race.Disable();
  3628  		}
  3629  		/* */ if (atomic.AddInt32((rw.$ptr_readerCount || (rw.$ptr_readerCount = new ptrType$6(function() { return this.$target.readerCount; }, function($v) { this.$target.readerCount = $v; }, rw))), 1) < 0) { $s = 1; continue; }
  3630  		/* */ $s = 2; continue;
  3631  		/* if (atomic.AddInt32((rw.$ptr_readerCount || (rw.$ptr_readerCount = new ptrType$6(function() { return this.$target.readerCount; }, function($v) { this.$target.readerCount = $v; }, rw))), 1) < 0) { */ case 1:
  3632  			$r = runtime_Semacquire((rw.$ptr_readerSem || (rw.$ptr_readerSem = new ptrType$1(function() { return this.$target.readerSem; }, function($v) { this.$target.readerSem = $v; }, rw)))); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  3633  		/* } */ case 2:
  3634  		if (false) {
  3635  			race.Enable();
  3636  			race.Acquire(((rw.$ptr_readerSem || (rw.$ptr_readerSem = new ptrType$1(function() { return this.$target.readerSem; }, function($v) { this.$target.readerSem = $v; }, rw)))));
  3637  		}
  3638  		$s = -1; return;
  3639  		/* */ } return; } if ($f === undefined) { $f = { $blk: RWMutex.ptr.prototype.RLock }; } $f.rw = rw; $f.$s = $s; $f.$r = $r; return $f;
  3640  	};
  3641  	RWMutex.prototype.RLock = function() { return this.$val.RLock(); };
  3642  	RWMutex.ptr.prototype.RUnlock = function() {
  3643  		var r, rw, $s, $r;
  3644  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; r = $f.r; rw = $f.rw; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  3645  		rw = this;
  3646  		if (false) {
  3647  			$unused(rw.w.state);
  3648  			race.ReleaseMerge(((rw.$ptr_writerSem || (rw.$ptr_writerSem = new ptrType$1(function() { return this.$target.writerSem; }, function($v) { this.$target.writerSem = $v; }, rw)))));
  3649  			race.Disable();
  3650  		}
  3651  		r = atomic.AddInt32((rw.$ptr_readerCount || (rw.$ptr_readerCount = new ptrType$6(function() { return this.$target.readerCount; }, function($v) { this.$target.readerCount = $v; }, rw))), -1);
  3652  		/* */ if (r < 0) { $s = 1; continue; }
  3653  		/* */ $s = 2; continue;
  3654  		/* if (r < 0) { */ case 1:
  3655  			if (((r + 1 >> 0) === 0) || ((r + 1 >> 0) === -1073741824)) {
  3656  				race.Enable();
  3657  				throw$1("sync: RUnlock of unlocked RWMutex");
  3658  			}
  3659  			/* */ if (atomic.AddInt32((rw.$ptr_readerWait || (rw.$ptr_readerWait = new ptrType$6(function() { return this.$target.readerWait; }, function($v) { this.$target.readerWait = $v; }, rw))), -1) === 0) { $s = 3; continue; }
  3660  			/* */ $s = 4; continue;
  3661  			/* if (atomic.AddInt32((rw.$ptr_readerWait || (rw.$ptr_readerWait = new ptrType$6(function() { return this.$target.readerWait; }, function($v) { this.$target.readerWait = $v; }, rw))), -1) === 0) { */ case 3:
  3662  				$r = runtime_Semrelease((rw.$ptr_writerSem || (rw.$ptr_writerSem = new ptrType$1(function() { return this.$target.writerSem; }, function($v) { this.$target.writerSem = $v; }, rw))), false); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  3663  			/* } */ case 4:
  3664  		/* } */ case 2:
  3665  		if (false) {
  3666  			race.Enable();
  3667  		}
  3668  		$s = -1; return;
  3669  		/* */ } return; } if ($f === undefined) { $f = { $blk: RWMutex.ptr.prototype.RUnlock }; } $f.r = r; $f.rw = rw; $f.$s = $s; $f.$r = $r; return $f;
  3670  	};
  3671  	RWMutex.prototype.RUnlock = function() { return this.$val.RUnlock(); };
  3672  	RWMutex.ptr.prototype.Lock = function() {
  3673  		var r, rw, $s, $r;
  3674  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; r = $f.r; rw = $f.rw; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  3675  		rw = this;
  3676  		if (false) {
  3677  			$unused(rw.w.state);
  3678  			race.Disable();
  3679  		}
  3680  		$r = rw.w.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  3681  		r = atomic.AddInt32((rw.$ptr_readerCount || (rw.$ptr_readerCount = new ptrType$6(function() { return this.$target.readerCount; }, function($v) { this.$target.readerCount = $v; }, rw))), -1073741824) + 1073741824 >> 0;
  3682  		/* */ if (!((r === 0)) && !((atomic.AddInt32((rw.$ptr_readerWait || (rw.$ptr_readerWait = new ptrType$6(function() { return this.$target.readerWait; }, function($v) { this.$target.readerWait = $v; }, rw))), r) === 0))) { $s = 2; continue; }
  3683  		/* */ $s = 3; continue;
  3684  		/* if (!((r === 0)) && !((atomic.AddInt32((rw.$ptr_readerWait || (rw.$ptr_readerWait = new ptrType$6(function() { return this.$target.readerWait; }, function($v) { this.$target.readerWait = $v; }, rw))), r) === 0))) { */ case 2:
  3685  			$r = runtime_Semacquire((rw.$ptr_writerSem || (rw.$ptr_writerSem = new ptrType$1(function() { return this.$target.writerSem; }, function($v) { this.$target.writerSem = $v; }, rw)))); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  3686  		/* } */ case 3:
  3687  		if (false) {
  3688  			race.Enable();
  3689  			race.Acquire(((rw.$ptr_readerSem || (rw.$ptr_readerSem = new ptrType$1(function() { return this.$target.readerSem; }, function($v) { this.$target.readerSem = $v; }, rw)))));
  3690  			race.Acquire(((rw.$ptr_writerSem || (rw.$ptr_writerSem = new ptrType$1(function() { return this.$target.writerSem; }, function($v) { this.$target.writerSem = $v; }, rw)))));
  3691  		}
  3692  		$s = -1; return;
  3693  		/* */ } return; } if ($f === undefined) { $f = { $blk: RWMutex.ptr.prototype.Lock }; } $f.r = r; $f.rw = rw; $f.$s = $s; $f.$r = $r; return $f;
  3694  	};
  3695  	RWMutex.prototype.Lock = function() { return this.$val.Lock(); };
  3696  	RWMutex.ptr.prototype.Unlock = function() {
  3697  		var i, r, rw, $s, $r;
  3698  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; i = $f.i; r = $f.r; rw = $f.rw; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  3699  		rw = this;
  3700  		if (false) {
  3701  			$unused(rw.w.state);
  3702  			race.Release(((rw.$ptr_readerSem || (rw.$ptr_readerSem = new ptrType$1(function() { return this.$target.readerSem; }, function($v) { this.$target.readerSem = $v; }, rw)))));
  3703  			race.Release(((rw.$ptr_writerSem || (rw.$ptr_writerSem = new ptrType$1(function() { return this.$target.writerSem; }, function($v) { this.$target.writerSem = $v; }, rw)))));
  3704  			race.Disable();
  3705  		}
  3706  		r = atomic.AddInt32((rw.$ptr_readerCount || (rw.$ptr_readerCount = new ptrType$6(function() { return this.$target.readerCount; }, function($v) { this.$target.readerCount = $v; }, rw))), 1073741824);
  3707  		if (r >= 1073741824) {
  3708  			race.Enable();
  3709  			throw$1("sync: Unlock of unlocked RWMutex");
  3710  		}
  3711  		i = 0;
  3712  		/* while (true) { */ case 1:
  3713  			/* if (!(i < ((r >> 0)))) { break; } */ if(!(i < ((r >> 0)))) { $s = 2; continue; }
  3714  			$r = runtime_Semrelease((rw.$ptr_readerSem || (rw.$ptr_readerSem = new ptrType$1(function() { return this.$target.readerSem; }, function($v) { this.$target.readerSem = $v; }, rw))), false); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  3715  			i = i + (1) >> 0;
  3716  		/* } */ $s = 1; continue; case 2:
  3717  		$r = rw.w.Unlock(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  3718  		if (false) {
  3719  			race.Enable();
  3720  		}
  3721  		$s = -1; return;
  3722  		/* */ } return; } if ($f === undefined) { $f = { $blk: RWMutex.ptr.prototype.Unlock }; } $f.i = i; $f.r = r; $f.rw = rw; $f.$s = $s; $f.$r = $r; return $f;
  3723  	};
  3724  	RWMutex.prototype.Unlock = function() { return this.$val.Unlock(); };
  3725  	RWMutex.ptr.prototype.RLocker = function() {
  3726  		var rw;
  3727  		rw = this;
  3728  		return ($pointerOfStructConversion(rw, ptrType$8));
  3729  	};
  3730  	RWMutex.prototype.RLocker = function() { return this.$val.RLocker(); };
  3731  	rlocker.ptr.prototype.Lock = function() {
  3732  		var r, $s, $r;
  3733  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; r = $f.r; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  3734  		r = this;
  3735  		$r = ($pointerOfStructConversion(r, ptrType$9)).RLock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  3736  		$s = -1; return;
  3737  		/* */ } return; } if ($f === undefined) { $f = { $blk: rlocker.ptr.prototype.Lock }; } $f.r = r; $f.$s = $s; $f.$r = $r; return $f;
  3738  	};
  3739  	rlocker.prototype.Lock = function() { return this.$val.Lock(); };
  3740  	rlocker.ptr.prototype.Unlock = function() {
  3741  		var r, $s, $r;
  3742  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; r = $f.r; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  3743  		r = this;
  3744  		$r = ($pointerOfStructConversion(r, ptrType$9)).RUnlock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  3745  		$s = -1; return;
  3746  		/* */ } return; } if ($f === undefined) { $f = { $blk: rlocker.ptr.prototype.Unlock }; } $f.r = r; $f.$s = $s; $f.$r = $r; return $f;
  3747  	};
  3748  	rlocker.prototype.Unlock = function() { return this.$val.Unlock(); };
  3749  	WaitGroup.ptr.prototype.Done = function() {
  3750  		var wg;
  3751  		wg = this;
  3752  		wg.Add(-1);
  3753  	};
  3754  	WaitGroup.prototype.Done = function() { return this.$val.Done(); };
  3755  	ptrType$10.methods = [{prop: "Wait", name: "Wait", pkg: "", typ: $funcType([], [], false)}, {prop: "Signal", name: "Signal", pkg: "", typ: $funcType([], [], false)}, {prop: "Broadcast", name: "Broadcast", pkg: "", typ: $funcType([], [], false)}];
  3756  	ptrType.methods = [{prop: "Get", name: "Get", pkg: "", typ: $funcType([], [$emptyInterface], false)}, {prop: "Put", name: "Put", pkg: "", typ: $funcType([$emptyInterface], [], false)}, {prop: "getSlow", name: "getSlow", pkg: "sync", typ: $funcType([], [$emptyInterface], false)}, {prop: "pin", name: "pin", pkg: "sync", typ: $funcType([], [ptrType$7], false)}, {prop: "pinSlow", name: "pinSlow", pkg: "sync", typ: $funcType([], [ptrType$7], false)}];
  3757  	ptrType$12.methods = [{prop: "Add", name: "Add", pkg: "", typ: $funcType([$Int], [], false)}, {prop: "Wait", name: "Wait", pkg: "", typ: $funcType([], [], false)}, {prop: "state", name: "state", pkg: "sync", typ: $funcType([], [ptrType$11], false)}, {prop: "Done", name: "Done", pkg: "", typ: $funcType([], [], false)}];
  3758  	ptrType$13.methods = [{prop: "check", name: "check", pkg: "sync", typ: $funcType([], [], false)}];
  3759  	ptrType$14.methods = [{prop: "Lock", name: "Lock", pkg: "", typ: $funcType([], [], false)}];
  3760  	ptrType$15.methods = [{prop: "Load", name: "Load", pkg: "", typ: $funcType([$emptyInterface], [$emptyInterface, $Bool], false)}, {prop: "Store", name: "Store", pkg: "", typ: $funcType([$emptyInterface, $emptyInterface], [], false)}, {prop: "LoadOrStore", name: "LoadOrStore", pkg: "", typ: $funcType([$emptyInterface, $emptyInterface], [$emptyInterface, $Bool], false)}, {prop: "Delete", name: "Delete", pkg: "", typ: $funcType([$emptyInterface], [], false)}, {prop: "Range", name: "Range", pkg: "", typ: $funcType([funcType$1], [], false)}, {prop: "missLocked", name: "missLocked", pkg: "sync", typ: $funcType([], [], false)}, {prop: "dirtyLocked", name: "dirtyLocked", pkg: "sync", typ: $funcType([], [], false)}];
  3761  	ptrType$4.methods = [{prop: "load", name: "load", pkg: "sync", typ: $funcType([], [$emptyInterface, $Bool], false)}, {prop: "tryStore", name: "tryStore", pkg: "sync", typ: $funcType([ptrType$3], [$Bool], false)}, {prop: "unexpungeLocked", name: "unexpungeLocked", pkg: "sync", typ: $funcType([], [$Bool], false)}, {prop: "storeLocked", name: "storeLocked", pkg: "sync", typ: $funcType([ptrType$3], [], false)}, {prop: "tryLoadOrStore", name: "tryLoadOrStore", pkg: "sync", typ: $funcType([$emptyInterface], [$emptyInterface, $Bool, $Bool], false)}, {prop: "delete$", name: "delete", pkg: "sync", typ: $funcType([], [$Bool], false)}, {prop: "tryExpungeLocked", name: "tryExpungeLocked", pkg: "sync", typ: $funcType([], [$Bool], false)}];
  3762  	ptrType$16.methods = [{prop: "Lock", name: "Lock", pkg: "", typ: $funcType([], [], false)}, {prop: "Unlock", name: "Unlock", pkg: "", typ: $funcType([], [], false)}];
  3763  	ptrType$17.methods = [{prop: "Do", name: "Do", pkg: "", typ: $funcType([funcType$2], [], false)}];
  3764  	ptrType$9.methods = [{prop: "RLock", name: "RLock", pkg: "", typ: $funcType([], [], false)}, {prop: "RUnlock", name: "RUnlock", pkg: "", typ: $funcType([], [], false)}, {prop: "Lock", name: "Lock", pkg: "", typ: $funcType([], [], false)}, {prop: "Unlock", name: "Unlock", pkg: "", typ: $funcType([], [], false)}, {prop: "RLocker", name: "RLocker", pkg: "", typ: $funcType([], [Locker], false)}];
  3765  	ptrType$8.methods = [{prop: "Lock", name: "Lock", pkg: "", typ: $funcType([], [], false)}, {prop: "Unlock", name: "Unlock", pkg: "", typ: $funcType([], [], false)}];
  3766  	Cond.init("sync", [{prop: "noCopy", name: "noCopy", anonymous: false, exported: false, typ: noCopy, tag: ""}, {prop: "L", name: "L", anonymous: false, exported: true, typ: Locker, tag: ""}, {prop: "notify", name: "notify", anonymous: false, exported: false, typ: notifyList, tag: ""}, {prop: "checker", name: "checker", anonymous: false, exported: false, typ: copyChecker, tag: ""}, {prop: "n", name: "n", anonymous: false, exported: false, typ: $Int, tag: ""}, {prop: "ch", name: "ch", anonymous: false, exported: false, typ: chanType, tag: ""}]);
  3767  	Pool.init("sync", [{prop: "local", name: "local", anonymous: false, exported: false, typ: $UnsafePointer, tag: ""}, {prop: "localSize", name: "localSize", anonymous: false, exported: false, typ: $Uintptr, tag: ""}, {prop: "store", name: "store", anonymous: false, exported: false, typ: sliceType$4, tag: ""}, {prop: "New", name: "New", anonymous: false, exported: true, typ: funcType, tag: ""}]);
  3768  	WaitGroup.init("sync", [{prop: "counter", name: "counter", anonymous: false, exported: false, typ: $Int, tag: ""}, {prop: "ch", name: "ch", anonymous: false, exported: false, typ: chanType$1, tag: ""}, {prop: "state1", name: "state1", anonymous: false, exported: false, typ: arrayType$1, tag: ""}, {prop: "sema", name: "sema", anonymous: false, exported: false, typ: $Uint32, tag: ""}]);
  3769  	noCopy.init("", []);
  3770  	Map.init("sync", [{prop: "mu", name: "mu", anonymous: false, exported: false, typ: Mutex, tag: ""}, {prop: "read", name: "read", anonymous: false, exported: false, typ: atomic.Value, tag: ""}, {prop: "dirty", name: "dirty", anonymous: false, exported: false, typ: mapType, tag: ""}, {prop: "misses", name: "misses", anonymous: false, exported: false, typ: $Int, tag: ""}]);
  3771  	readOnly.init("sync", [{prop: "m", name: "m", anonymous: false, exported: false, typ: mapType, tag: ""}, {prop: "amended", name: "amended", anonymous: false, exported: false, typ: $Bool, tag: ""}]);
  3772  	entry.init("sync", [{prop: "p", name: "p", anonymous: false, exported: false, typ: $UnsafePointer, tag: ""}]);
  3773  	Mutex.init("sync", [{prop: "state", name: "state", anonymous: false, exported: false, typ: $Int32, tag: ""}, {prop: "sema", name: "sema", anonymous: false, exported: false, typ: $Uint32, tag: ""}]);
  3774  	Locker.init([{prop: "Lock", name: "Lock", pkg: "", typ: $funcType([], [], false)}, {prop: "Unlock", name: "Unlock", pkg: "", typ: $funcType([], [], false)}]);
  3775  	Once.init("sync", [{prop: "m", name: "m", anonymous: false, exported: false, typ: Mutex, tag: ""}, {prop: "done", name: "done", anonymous: false, exported: false, typ: $Uint32, tag: ""}]);
  3776  	poolLocalInternal.init("sync", [{prop: "private$0", name: "private", anonymous: false, exported: false, typ: $emptyInterface, tag: ""}, {prop: "shared", name: "shared", anonymous: false, exported: false, typ: sliceType$4, tag: ""}, {prop: "Mutex", name: "Mutex", anonymous: true, exported: true, typ: Mutex, tag: ""}]);
  3777  	poolLocal.init("sync", [{prop: "poolLocalInternal", name: "poolLocalInternal", anonymous: true, exported: false, typ: poolLocalInternal, tag: ""}, {prop: "pad", name: "pad", anonymous: false, exported: false, typ: arrayType$2, tag: ""}]);
  3778  	notifyList.init("sync", [{prop: "wait", name: "wait", anonymous: false, exported: false, typ: $Uint32, tag: ""}, {prop: "notify", name: "notify", anonymous: false, exported: false, typ: $Uint32, tag: ""}, {prop: "lock", name: "lock", anonymous: false, exported: false, typ: $Uintptr, tag: ""}, {prop: "head", name: "head", anonymous: false, exported: false, typ: $UnsafePointer, tag: ""}, {prop: "tail", name: "tail", anonymous: false, exported: false, typ: $UnsafePointer, tag: ""}]);
  3779  	RWMutex.init("sync", [{prop: "w", name: "w", anonymous: false, exported: false, typ: Mutex, tag: ""}, {prop: "writerSem", name: "writerSem", anonymous: false, exported: false, typ: $Uint32, tag: ""}, {prop: "readerSem", name: "readerSem", anonymous: false, exported: false, typ: $Uint32, tag: ""}, {prop: "readerCount", name: "readerCount", anonymous: false, exported: false, typ: $Int32, tag: ""}, {prop: "readerWait", name: "readerWait", anonymous: false, exported: false, typ: $Int32, tag: ""}]);
  3780  	rlocker.init("sync", [{prop: "w", name: "w", anonymous: false, exported: false, typ: Mutex, tag: ""}, {prop: "writerSem", name: "writerSem", anonymous: false, exported: false, typ: $Uint32, tag: ""}, {prop: "readerSem", name: "readerSem", anonymous: false, exported: false, typ: $Uint32, tag: ""}, {prop: "readerCount", name: "readerCount", anonymous: false, exported: false, typ: $Int32, tag: ""}, {prop: "readerWait", name: "readerWait", anonymous: false, exported: false, typ: $Int32, tag: ""}]);
  3781  	$init = function() {
  3782  		$pkg.$init = function() {};
  3783  		/* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  3784  		$r = js.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  3785  		$r = race.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  3786  		$r = runtime.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  3787  		$r = atomic.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  3788  		allPools = sliceType.nil;
  3789  		semWaiters = {};
  3790  		semAwoken = {};
  3791  		expunged = (new Uint8Array(8));
  3792  		init();
  3793  		init$1();
  3794  		/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
  3795  	};
  3796  	$pkg.$init = $init;
  3797  	return $pkg;
  3798  })();
  3799  $packages["io"] = (function() {
  3800  	var $pkg = {}, $init, errors, sync, atomic, Reader, Writer, Closer, ReadCloser, WriteCloser, ReaderFrom, WriterTo, ReaderAt, ByteScanner, ByteWriter, RuneScanner, stringWriter, LimitedReader, SectionReader, eofReader, multiReader, sliceType, ptrType$1, ptrType$2, sliceType$1, ptrType$3, errWhence, errOffset, WriteString, ReadAtLeast, ReadFull, CopyN, Copy, CopyBuffer, copyBuffer, LimitReader, NewSectionReader, MultiReader;
  3801  	errors = $packages["errors"];
  3802  	sync = $packages["sync"];
  3803  	atomic = $packages["sync/atomic"];
  3804  	Reader = $pkg.Reader = $newType(8, $kindInterface, "io.Reader", true, "io", true, null);
  3805  	Writer = $pkg.Writer = $newType(8, $kindInterface, "io.Writer", true, "io", true, null);
  3806  	Closer = $pkg.Closer = $newType(8, $kindInterface, "io.Closer", true, "io", true, null);
  3807  	ReadCloser = $pkg.ReadCloser = $newType(8, $kindInterface, "io.ReadCloser", true, "io", true, null);
  3808  	WriteCloser = $pkg.WriteCloser = $newType(8, $kindInterface, "io.WriteCloser", true, "io", true, null);
  3809  	ReaderFrom = $pkg.ReaderFrom = $newType(8, $kindInterface, "io.ReaderFrom", true, "io", true, null);
  3810  	WriterTo = $pkg.WriterTo = $newType(8, $kindInterface, "io.WriterTo", true, "io", true, null);
  3811  	ReaderAt = $pkg.ReaderAt = $newType(8, $kindInterface, "io.ReaderAt", true, "io", true, null);
  3812  	ByteScanner = $pkg.ByteScanner = $newType(8, $kindInterface, "io.ByteScanner", true, "io", true, null);
  3813  	ByteWriter = $pkg.ByteWriter = $newType(8, $kindInterface, "io.ByteWriter", true, "io", true, null);
  3814  	RuneScanner = $pkg.RuneScanner = $newType(8, $kindInterface, "io.RuneScanner", true, "io", true, null);
  3815  	stringWriter = $pkg.stringWriter = $newType(8, $kindInterface, "io.stringWriter", true, "io", false, null);
  3816  	LimitedReader = $pkg.LimitedReader = $newType(0, $kindStruct, "io.LimitedReader", true, "io", true, function(R_, N_) {
  3817  		this.$val = this;
  3818  		if (arguments.length === 0) {
  3819  			this.R = $ifaceNil;
  3820  			this.N = new $Int64(0, 0);
  3821  			return;
  3822  		}
  3823  		this.R = R_;
  3824  		this.N = N_;
  3825  	});
  3826  	SectionReader = $pkg.SectionReader = $newType(0, $kindStruct, "io.SectionReader", true, "io", true, function(r_, base_, off_, limit_) {
  3827  		this.$val = this;
  3828  		if (arguments.length === 0) {
  3829  			this.r = $ifaceNil;
  3830  			this.base = new $Int64(0, 0);
  3831  			this.off = new $Int64(0, 0);
  3832  			this.limit = new $Int64(0, 0);
  3833  			return;
  3834  		}
  3835  		this.r = r_;
  3836  		this.base = base_;
  3837  		this.off = off_;
  3838  		this.limit = limit_;
  3839  	});
  3840  	eofReader = $pkg.eofReader = $newType(0, $kindStruct, "io.eofReader", true, "io", false, function() {
  3841  		this.$val = this;
  3842  		if (arguments.length === 0) {
  3843  			return;
  3844  		}
  3845  	});
  3846  	multiReader = $pkg.multiReader = $newType(0, $kindStruct, "io.multiReader", true, "io", false, function(readers_) {
  3847  		this.$val = this;
  3848  		if (arguments.length === 0) {
  3849  			this.readers = sliceType$1.nil;
  3850  			return;
  3851  		}
  3852  		this.readers = readers_;
  3853  	});
  3854  	sliceType = $sliceType($Uint8);
  3855  	ptrType$1 = $ptrType(LimitedReader);
  3856  	ptrType$2 = $ptrType(multiReader);
  3857  	sliceType$1 = $sliceType(Reader);
  3858  	ptrType$3 = $ptrType(SectionReader);
  3859  	WriteString = function(w, s) {
  3860  		var _r, _r$1, _tuple, _tuple$1, _tuple$2, err, n, ok, s, sw, w, $s, $r;
  3861  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; err = $f.err; n = $f.n; ok = $f.ok; s = $f.s; sw = $f.sw; w = $f.w; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  3862  		n = 0;
  3863  		err = $ifaceNil;
  3864  		_tuple = $assertType(w, stringWriter, true);
  3865  		sw = _tuple[0];
  3866  		ok = _tuple[1];
  3867  		/* */ if (ok) { $s = 1; continue; }
  3868  		/* */ $s = 2; continue;
  3869  		/* if (ok) { */ case 1:
  3870  			_r = sw.WriteString(s); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  3871  			_tuple$1 = _r;
  3872  			n = _tuple$1[0];
  3873  			err = _tuple$1[1];
  3874  			$s = -1; return [n, err];
  3875  		/* } */ case 2:
  3876  		_r$1 = w.Write((new sliceType($stringToBytes(s)))); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  3877  		_tuple$2 = _r$1;
  3878  		n = _tuple$2[0];
  3879  		err = _tuple$2[1];
  3880  		$s = -1; return [n, err];
  3881  		/* */ } return; } if ($f === undefined) { $f = { $blk: WriteString }; } $f._r = _r; $f._r$1 = _r$1; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f.err = err; $f.n = n; $f.ok = ok; $f.s = s; $f.sw = sw; $f.w = w; $f.$s = $s; $f.$r = $r; return $f;
  3882  	};
  3883  	$pkg.WriteString = WriteString;
  3884  	ReadAtLeast = function(r, buf, min) {
  3885  		var _r, _tmp, _tmp$1, _tuple, buf, err, min, n, nn, r, $s, $r;
  3886  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tuple = $f._tuple; buf = $f.buf; err = $f.err; min = $f.min; n = $f.n; nn = $f.nn; r = $f.r; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  3887  		n = 0;
  3888  		err = $ifaceNil;
  3889  		if (buf.$length < min) {
  3890  			_tmp = 0;
  3891  			_tmp$1 = $pkg.ErrShortBuffer;
  3892  			n = _tmp;
  3893  			err = _tmp$1;
  3894  			$s = -1; return [n, err];
  3895  		}
  3896  		/* while (true) { */ case 1:
  3897  			/* if (!(n < min && $interfaceIsEqual(err, $ifaceNil))) { break; } */ if(!(n < min && $interfaceIsEqual(err, $ifaceNil))) { $s = 2; continue; }
  3898  			nn = 0;
  3899  			_r = r.Read($subslice(buf, n)); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  3900  			_tuple = _r;
  3901  			nn = _tuple[0];
  3902  			err = _tuple[1];
  3903  			n = n + (nn) >> 0;
  3904  		/* } */ $s = 1; continue; case 2:
  3905  		if (n >= min) {
  3906  			err = $ifaceNil;
  3907  		} else if (n > 0 && $interfaceIsEqual(err, $pkg.EOF)) {
  3908  			err = $pkg.ErrUnexpectedEOF;
  3909  		}
  3910  		$s = -1; return [n, err];
  3911  		/* */ } return; } if ($f === undefined) { $f = { $blk: ReadAtLeast }; } $f._r = _r; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tuple = _tuple; $f.buf = buf; $f.err = err; $f.min = min; $f.n = n; $f.nn = nn; $f.r = r; $f.$s = $s; $f.$r = $r; return $f;
  3912  	};
  3913  	$pkg.ReadAtLeast = ReadAtLeast;
  3914  	ReadFull = function(r, buf) {
  3915  		var _r, _tuple, buf, err, n, r, $s, $r;
  3916  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; buf = $f.buf; err = $f.err; n = $f.n; r = $f.r; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  3917  		n = 0;
  3918  		err = $ifaceNil;
  3919  		_r = ReadAtLeast(r, buf, buf.$length); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  3920  		_tuple = _r;
  3921  		n = _tuple[0];
  3922  		err = _tuple[1];
  3923  		$s = -1; return [n, err];
  3924  		/* */ } return; } if ($f === undefined) { $f = { $blk: ReadFull }; } $f._r = _r; $f._tuple = _tuple; $f.buf = buf; $f.err = err; $f.n = n; $f.r = r; $f.$s = $s; $f.$r = $r; return $f;
  3925  	};
  3926  	$pkg.ReadFull = ReadFull;
  3927  	CopyN = function(dst, src, n) {
  3928  		var _r, _tmp, _tmp$1, _tuple, dst, err, n, src, written, $s, $r;
  3929  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tuple = $f._tuple; dst = $f.dst; err = $f.err; n = $f.n; src = $f.src; written = $f.written; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  3930  		written = new $Int64(0, 0);
  3931  		err = $ifaceNil;
  3932  		_r = Copy(dst, LimitReader(src, n)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  3933  		_tuple = _r;
  3934  		written = _tuple[0];
  3935  		err = _tuple[1];
  3936  		if ((written.$high === n.$high && written.$low === n.$low)) {
  3937  			_tmp = n;
  3938  			_tmp$1 = $ifaceNil;
  3939  			written = _tmp;
  3940  			err = _tmp$1;
  3941  			$s = -1; return [written, err];
  3942  		}
  3943  		if ((written.$high < n.$high || (written.$high === n.$high && written.$low < n.$low)) && $interfaceIsEqual(err, $ifaceNil)) {
  3944  			err = $pkg.EOF;
  3945  		}
  3946  		$s = -1; return [written, err];
  3947  		/* */ } return; } if ($f === undefined) { $f = { $blk: CopyN }; } $f._r = _r; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tuple = _tuple; $f.dst = dst; $f.err = err; $f.n = n; $f.src = src; $f.written = written; $f.$s = $s; $f.$r = $r; return $f;
  3948  	};
  3949  	$pkg.CopyN = CopyN;
  3950  	Copy = function(dst, src) {
  3951  		var _r, _tuple, dst, err, src, written, $s, $r;
  3952  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; dst = $f.dst; err = $f.err; src = $f.src; written = $f.written; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  3953  		written = new $Int64(0, 0);
  3954  		err = $ifaceNil;
  3955  		_r = copyBuffer(dst, src, sliceType.nil); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  3956  		_tuple = _r;
  3957  		written = _tuple[0];
  3958  		err = _tuple[1];
  3959  		$s = -1; return [written, err];
  3960  		/* */ } return; } if ($f === undefined) { $f = { $blk: Copy }; } $f._r = _r; $f._tuple = _tuple; $f.dst = dst; $f.err = err; $f.src = src; $f.written = written; $f.$s = $s; $f.$r = $r; return $f;
  3961  	};
  3962  	$pkg.Copy = Copy;
  3963  	CopyBuffer = function(dst, src, buf) {
  3964  		var _r, _tuple, buf, dst, err, src, written, $s, $r;
  3965  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; buf = $f.buf; dst = $f.dst; err = $f.err; src = $f.src; written = $f.written; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  3966  		written = new $Int64(0, 0);
  3967  		err = $ifaceNil;
  3968  		if (!(buf === sliceType.nil) && (buf.$length === 0)) {
  3969  			$panic(new $String("empty buffer in io.CopyBuffer"));
  3970  		}
  3971  		_r = copyBuffer(dst, src, buf); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  3972  		_tuple = _r;
  3973  		written = _tuple[0];
  3974  		err = _tuple[1];
  3975  		$s = -1; return [written, err];
  3976  		/* */ } return; } if ($f === undefined) { $f = { $blk: CopyBuffer }; } $f._r = _r; $f._tuple = _tuple; $f.buf = buf; $f.dst = dst; $f.err = err; $f.src = src; $f.written = written; $f.$s = $s; $f.$r = $r; return $f;
  3977  	};
  3978  	$pkg.CopyBuffer = CopyBuffer;
  3979  	copyBuffer = function(dst, src, buf) {
  3980  		var _r, _r$1, _r$2, _r$3, _tmp, _tmp$1, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, _tuple$5, _tuple$6, buf, dst, er, err, ew, l, nr, nw, ok, ok$1, ok$2, rt, size, src, written, wt, x, x$1, x$2, x$3, x$4, $s, $r;
  3981  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; _tuple$4 = $f._tuple$4; _tuple$5 = $f._tuple$5; _tuple$6 = $f._tuple$6; buf = $f.buf; dst = $f.dst; er = $f.er; err = $f.err; ew = $f.ew; l = $f.l; nr = $f.nr; nw = $f.nw; ok = $f.ok; ok$1 = $f.ok$1; ok$2 = $f.ok$2; rt = $f.rt; size = $f.size; src = $f.src; written = $f.written; wt = $f.wt; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; x$3 = $f.x$3; x$4 = $f.x$4; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  3982  		written = new $Int64(0, 0);
  3983  		err = $ifaceNil;
  3984  		_tuple = $assertType(src, WriterTo, true);
  3985  		wt = _tuple[0];
  3986  		ok = _tuple[1];
  3987  		/* */ if (ok) { $s = 1; continue; }
  3988  		/* */ $s = 2; continue;
  3989  		/* if (ok) { */ case 1:
  3990  			_r = wt.WriteTo(dst); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  3991  			_tuple$1 = _r;
  3992  			written = _tuple$1[0];
  3993  			err = _tuple$1[1];
  3994  			$s = -1; return [written, err];
  3995  		/* } */ case 2:
  3996  		_tuple$2 = $assertType(dst, ReaderFrom, true);
  3997  		rt = _tuple$2[0];
  3998  		ok$1 = _tuple$2[1];
  3999  		/* */ if (ok$1) { $s = 4; continue; }
  4000  		/* */ $s = 5; continue;
  4001  		/* if (ok$1) { */ case 4:
  4002  			_r$1 = rt.ReadFrom(src); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  4003  			_tuple$3 = _r$1;
  4004  			written = _tuple$3[0];
  4005  			err = _tuple$3[1];
  4006  			$s = -1; return [written, err];
  4007  		/* } */ case 5:
  4008  		size = 32768;
  4009  		_tuple$4 = $assertType(src, ptrType$1, true);
  4010  		l = _tuple$4[0];
  4011  		ok$2 = _tuple$4[1];
  4012  		if (ok$2 && (x = (new $Int64(0, size)), x$1 = l.N, (x.$high > x$1.$high || (x.$high === x$1.$high && x.$low > x$1.$low)))) {
  4013  			if ((x$2 = l.N, (x$2.$high < 0 || (x$2.$high === 0 && x$2.$low < 1)))) {
  4014  				size = 1;
  4015  			} else {
  4016  				size = (((x$3 = l.N, x$3.$low + ((x$3.$high >> 31) * 4294967296)) >> 0));
  4017  			}
  4018  		}
  4019  		if (buf === sliceType.nil) {
  4020  			buf = $makeSlice(sliceType, size);
  4021  		}
  4022  		/* while (true) { */ case 7:
  4023  			_r$2 = src.Read(buf); /* */ $s = 9; case 9: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  4024  			_tuple$5 = _r$2;
  4025  			nr = _tuple$5[0];
  4026  			er = _tuple$5[1];
  4027  			/* */ if (nr > 0) { $s = 10; continue; }
  4028  			/* */ $s = 11; continue;
  4029  			/* if (nr > 0) { */ case 10:
  4030  				_r$3 = dst.Write($subslice(buf, 0, nr)); /* */ $s = 12; case 12: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  4031  				_tuple$6 = _r$3;
  4032  				nw = _tuple$6[0];
  4033  				ew = _tuple$6[1];
  4034  				if (nw > 0) {
  4035  					written = (x$4 = (new $Int64(0, nw)), new $Int64(written.$high + x$4.$high, written.$low + x$4.$low));
  4036  				}
  4037  				if (!($interfaceIsEqual(ew, $ifaceNil))) {
  4038  					err = ew;
  4039  					/* break; */ $s = 8; continue;
  4040  				}
  4041  				if (!((nr === nw))) {
  4042  					err = $pkg.ErrShortWrite;
  4043  					/* break; */ $s = 8; continue;
  4044  				}
  4045  			/* } */ case 11:
  4046  			if (!($interfaceIsEqual(er, $ifaceNil))) {
  4047  				if (!($interfaceIsEqual(er, $pkg.EOF))) {
  4048  					err = er;
  4049  				}
  4050  				/* break; */ $s = 8; continue;
  4051  			}
  4052  		/* } */ $s = 7; continue; case 8:
  4053  		_tmp = written;
  4054  		_tmp$1 = err;
  4055  		written = _tmp;
  4056  		err = _tmp$1;
  4057  		$s = -1; return [written, err];
  4058  		/* */ } return; } if ($f === undefined) { $f = { $blk: copyBuffer }; } $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f._tuple$4 = _tuple$4; $f._tuple$5 = _tuple$5; $f._tuple$6 = _tuple$6; $f.buf = buf; $f.dst = dst; $f.er = er; $f.err = err; $f.ew = ew; $f.l = l; $f.nr = nr; $f.nw = nw; $f.ok = ok; $f.ok$1 = ok$1; $f.ok$2 = ok$2; $f.rt = rt; $f.size = size; $f.src = src; $f.written = written; $f.wt = wt; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.x$3 = x$3; $f.x$4 = x$4; $f.$s = $s; $f.$r = $r; return $f;
  4059  	};
  4060  	LimitReader = function(r, n) {
  4061  		var n, r;
  4062  		return new LimitedReader.ptr(r, n);
  4063  	};
  4064  	$pkg.LimitReader = LimitReader;
  4065  	LimitedReader.ptr.prototype.Read = function(p) {
  4066  		var _r, _tmp, _tmp$1, _tuple, err, l, n, p, x, x$1, x$2, x$3, x$4, $s, $r;
  4067  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tuple = $f._tuple; err = $f.err; l = $f.l; n = $f.n; p = $f.p; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; x$3 = $f.x$3; x$4 = $f.x$4; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  4068  		n = 0;
  4069  		err = $ifaceNil;
  4070  		l = this;
  4071  		if ((x = l.N, (x.$high < 0 || (x.$high === 0 && x.$low <= 0)))) {
  4072  			_tmp = 0;
  4073  			_tmp$1 = $pkg.EOF;
  4074  			n = _tmp;
  4075  			err = _tmp$1;
  4076  			$s = -1; return [n, err];
  4077  		}
  4078  		if ((x$1 = (new $Int64(0, p.$length)), x$2 = l.N, (x$1.$high > x$2.$high || (x$1.$high === x$2.$high && x$1.$low > x$2.$low)))) {
  4079  			p = $subslice(p, 0, $flatten64(l.N));
  4080  		}
  4081  		_r = l.R.Read(p); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  4082  		_tuple = _r;
  4083  		n = _tuple[0];
  4084  		err = _tuple[1];
  4085  		l.N = (x$3 = l.N, x$4 = (new $Int64(0, n)), new $Int64(x$3.$high - x$4.$high, x$3.$low - x$4.$low));
  4086  		$s = -1; return [n, err];
  4087  		/* */ } return; } if ($f === undefined) { $f = { $blk: LimitedReader.ptr.prototype.Read }; } $f._r = _r; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tuple = _tuple; $f.err = err; $f.l = l; $f.n = n; $f.p = p; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.x$3 = x$3; $f.x$4 = x$4; $f.$s = $s; $f.$r = $r; return $f;
  4088  	};
  4089  	LimitedReader.prototype.Read = function(p) { return this.$val.Read(p); };
  4090  	NewSectionReader = function(r, off, n) {
  4091  		var n, off, r;
  4092  		return new SectionReader.ptr(r, off, off, new $Int64(off.$high + n.$high, off.$low + n.$low));
  4093  	};
  4094  	$pkg.NewSectionReader = NewSectionReader;
  4095  	SectionReader.ptr.prototype.Read = function(p) {
  4096  		var _r, _tmp, _tmp$1, _tuple, err, max, n, p, s, x, x$1, x$2, x$3, x$4, x$5, x$6, $s, $r;
  4097  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tuple = $f._tuple; err = $f.err; max = $f.max; n = $f.n; p = $f.p; s = $f.s; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; x$3 = $f.x$3; x$4 = $f.x$4; x$5 = $f.x$5; x$6 = $f.x$6; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  4098  		n = 0;
  4099  		err = $ifaceNil;
  4100  		s = this;
  4101  		if ((x = s.off, x$1 = s.limit, (x.$high > x$1.$high || (x.$high === x$1.$high && x.$low >= x$1.$low)))) {
  4102  			_tmp = 0;
  4103  			_tmp$1 = $pkg.EOF;
  4104  			n = _tmp;
  4105  			err = _tmp$1;
  4106  			$s = -1; return [n, err];
  4107  		}
  4108  		max = (x$2 = s.limit, x$3 = s.off, new $Int64(x$2.$high - x$3.$high, x$2.$low - x$3.$low));
  4109  		if ((x$4 = (new $Int64(0, p.$length)), (x$4.$high > max.$high || (x$4.$high === max.$high && x$4.$low > max.$low)))) {
  4110  			p = $subslice(p, 0, $flatten64(max));
  4111  		}
  4112  		_r = s.r.ReadAt(p, s.off); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  4113  		_tuple = _r;
  4114  		n = _tuple[0];
  4115  		err = _tuple[1];
  4116  		s.off = (x$5 = s.off, x$6 = (new $Int64(0, n)), new $Int64(x$5.$high + x$6.$high, x$5.$low + x$6.$low));
  4117  		$s = -1; return [n, err];
  4118  		/* */ } return; } if ($f === undefined) { $f = { $blk: SectionReader.ptr.prototype.Read }; } $f._r = _r; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tuple = _tuple; $f.err = err; $f.max = max; $f.n = n; $f.p = p; $f.s = s; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.x$3 = x$3; $f.x$4 = x$4; $f.x$5 = x$5; $f.x$6 = x$6; $f.$s = $s; $f.$r = $r; return $f;
  4119  	};
  4120  	SectionReader.prototype.Read = function(p) { return this.$val.Read(p); };
  4121  	SectionReader.ptr.prototype.Seek = function(offset, whence) {
  4122  		var _1, offset, s, whence, x, x$1, x$2, x$3, x$4;
  4123  		s = this;
  4124  		_1 = whence;
  4125  		if (_1 === (0)) {
  4126  			offset = (x = s.base, new $Int64(offset.$high + x.$high, offset.$low + x.$low));
  4127  		} else if (_1 === (1)) {
  4128  			offset = (x$1 = s.off, new $Int64(offset.$high + x$1.$high, offset.$low + x$1.$low));
  4129  		} else if (_1 === (2)) {
  4130  			offset = (x$2 = s.limit, new $Int64(offset.$high + x$2.$high, offset.$low + x$2.$low));
  4131  		} else {
  4132  			return [new $Int64(0, 0), errWhence];
  4133  		}
  4134  		if ((x$3 = s.base, (offset.$high < x$3.$high || (offset.$high === x$3.$high && offset.$low < x$3.$low)))) {
  4135  			return [new $Int64(0, 0), errOffset];
  4136  		}
  4137  		s.off = offset;
  4138  		return [(x$4 = s.base, new $Int64(offset.$high - x$4.$high, offset.$low - x$4.$low)), $ifaceNil];
  4139  	};
  4140  	SectionReader.prototype.Seek = function(offset, whence) { return this.$val.Seek(offset, whence); };
  4141  	SectionReader.ptr.prototype.ReadAt = function(p, off) {
  4142  		var _r, _r$1, _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, _tuple$1, err, max, n, off, p, s, x, x$1, x$2, x$3, x$4, x$5, $s, $r;
  4143  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; err = $f.err; max = $f.max; n = $f.n; off = $f.off; p = $f.p; s = $f.s; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; x$3 = $f.x$3; x$4 = $f.x$4; x$5 = $f.x$5; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  4144  		n = 0;
  4145  		err = $ifaceNil;
  4146  		s = this;
  4147  		if ((off.$high < 0 || (off.$high === 0 && off.$low < 0)) || (x = (x$1 = s.limit, x$2 = s.base, new $Int64(x$1.$high - x$2.$high, x$1.$low - x$2.$low)), (off.$high > x.$high || (off.$high === x.$high && off.$low >= x.$low)))) {
  4148  			_tmp = 0;
  4149  			_tmp$1 = $pkg.EOF;
  4150  			n = _tmp;
  4151  			err = _tmp$1;
  4152  			$s = -1; return [n, err];
  4153  		}
  4154  		off = (x$3 = s.base, new $Int64(off.$high + x$3.$high, off.$low + x$3.$low));
  4155  		max = (x$4 = s.limit, new $Int64(x$4.$high - off.$high, x$4.$low - off.$low));
  4156  		/* */ if ((x$5 = (new $Int64(0, p.$length)), (x$5.$high > max.$high || (x$5.$high === max.$high && x$5.$low > max.$low)))) { $s = 1; continue; }
  4157  		/* */ $s = 2; continue;
  4158  		/* if ((x$5 = (new $Int64(0, p.$length)), (x$5.$high > max.$high || (x$5.$high === max.$high && x$5.$low > max.$low)))) { */ case 1:
  4159  			p = $subslice(p, 0, $flatten64(max));
  4160  			_r = s.r.ReadAt(p, off); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  4161  			_tuple = _r;
  4162  			n = _tuple[0];
  4163  			err = _tuple[1];
  4164  			if ($interfaceIsEqual(err, $ifaceNil)) {
  4165  				err = $pkg.EOF;
  4166  			}
  4167  			_tmp$2 = n;
  4168  			_tmp$3 = err;
  4169  			n = _tmp$2;
  4170  			err = _tmp$3;
  4171  			$s = -1; return [n, err];
  4172  		/* } */ case 2:
  4173  		_r$1 = s.r.ReadAt(p, off); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  4174  		_tuple$1 = _r$1;
  4175  		n = _tuple$1[0];
  4176  		err = _tuple$1[1];
  4177  		$s = -1; return [n, err];
  4178  		/* */ } return; } if ($f === undefined) { $f = { $blk: SectionReader.ptr.prototype.ReadAt }; } $f._r = _r; $f._r$1 = _r$1; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.err = err; $f.max = max; $f.n = n; $f.off = off; $f.p = p; $f.s = s; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.x$3 = x$3; $f.x$4 = x$4; $f.x$5 = x$5; $f.$s = $s; $f.$r = $r; return $f;
  4179  	};
  4180  	SectionReader.prototype.ReadAt = function(p, off) { return this.$val.ReadAt(p, off); };
  4181  	SectionReader.ptr.prototype.Size = function() {
  4182  		var s, x, x$1;
  4183  		s = this;
  4184  		return (x = s.limit, x$1 = s.base, new $Int64(x.$high - x$1.$high, x.$low - x$1.$low));
  4185  	};
  4186  	SectionReader.prototype.Size = function() { return this.$val.Size(); };
  4187  	eofReader.ptr.prototype.Read = function(param) {
  4188  		var param;
  4189  		return [0, $pkg.EOF];
  4190  	};
  4191  	eofReader.prototype.Read = function(param) { return this.$val.Read(param); };
  4192  	multiReader.ptr.prototype.Read = function(p) {
  4193  		var _r, _tmp, _tmp$1, _tuple, _tuple$1, err, mr, n, ok, p, r, x, x$1, x$2, x$3, $s, $r;
  4194  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; err = $f.err; mr = $f.mr; n = $f.n; ok = $f.ok; p = $f.p; r = $f.r; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; x$3 = $f.x$3; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  4195  		n = 0;
  4196  		err = $ifaceNil;
  4197  		mr = this;
  4198  		/* while (true) { */ case 1:
  4199  			/* if (!(mr.readers.$length > 0)) { break; } */ if(!(mr.readers.$length > 0)) { $s = 2; continue; }
  4200  			/* */ if (mr.readers.$length === 1) { $s = 3; continue; }
  4201  			/* */ $s = 4; continue;
  4202  			/* if (mr.readers.$length === 1) { */ case 3:
  4203  				_tuple = $assertType((x = mr.readers, (0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0])), ptrType$2, true);
  4204  				r = _tuple[0];
  4205  				ok = _tuple[1];
  4206  				if (ok) {
  4207  					mr.readers = r.readers;
  4208  					/* continue; */ $s = 1; continue;
  4209  				}
  4210  			/* } */ case 4:
  4211  			_r = (x$1 = mr.readers, (0 >= x$1.$length ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + 0])).Read(p); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  4212  			_tuple$1 = _r;
  4213  			n = _tuple$1[0];
  4214  			err = _tuple$1[1];
  4215  			if ($interfaceIsEqual(err, $pkg.EOF)) {
  4216  				(x$3 = mr.readers, (0 >= x$3.$length ? ($throwRuntimeError("index out of range"), undefined) : x$3.$array[x$3.$offset + 0] = (x$2 = new eofReader.ptr(), new x$2.constructor.elem(x$2))));
  4217  				mr.readers = $subslice(mr.readers, 1);
  4218  			}
  4219  			if (n > 0 || !($interfaceIsEqual(err, $pkg.EOF))) {
  4220  				if ($interfaceIsEqual(err, $pkg.EOF) && mr.readers.$length > 0) {
  4221  					err = $ifaceNil;
  4222  				}
  4223  				$s = -1; return [n, err];
  4224  			}
  4225  		/* } */ $s = 1; continue; case 2:
  4226  		_tmp = 0;
  4227  		_tmp$1 = $pkg.EOF;
  4228  		n = _tmp;
  4229  		err = _tmp$1;
  4230  		$s = -1; return [n, err];
  4231  		/* */ } return; } if ($f === undefined) { $f = { $blk: multiReader.ptr.prototype.Read }; } $f._r = _r; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.err = err; $f.mr = mr; $f.n = n; $f.ok = ok; $f.p = p; $f.r = r; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.x$3 = x$3; $f.$s = $s; $f.$r = $r; return $f;
  4232  	};
  4233  	multiReader.prototype.Read = function(p) { return this.$val.Read(p); };
  4234  	MultiReader = function(readers) {
  4235  		var r, readers;
  4236  		r = $makeSlice(sliceType$1, readers.$length);
  4237  		$copySlice(r, readers);
  4238  		return new multiReader.ptr(r);
  4239  	};
  4240  	$pkg.MultiReader = MultiReader;
  4241  	ptrType$1.methods = [{prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType], [$Int, $error], false)}];
  4242  	ptrType$3.methods = [{prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType], [$Int, $error], false)}, {prop: "Seek", name: "Seek", pkg: "", typ: $funcType([$Int64, $Int], [$Int64, $error], false)}, {prop: "ReadAt", name: "ReadAt", pkg: "", typ: $funcType([sliceType, $Int64], [$Int, $error], false)}, {prop: "Size", name: "Size", pkg: "", typ: $funcType([], [$Int64], false)}];
  4243  	eofReader.methods = [{prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType], [$Int, $error], false)}];
  4244  	ptrType$2.methods = [{prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType], [$Int, $error], false)}];
  4245  	Reader.init([{prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType], [$Int, $error], false)}]);
  4246  	Writer.init([{prop: "Write", name: "Write", pkg: "", typ: $funcType([sliceType], [$Int, $error], false)}]);
  4247  	Closer.init([{prop: "Close", name: "Close", pkg: "", typ: $funcType([], [$error], false)}]);
  4248  	ReadCloser.init([{prop: "Close", name: "Close", pkg: "", typ: $funcType([], [$error], false)}, {prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType], [$Int, $error], false)}]);
  4249  	WriteCloser.init([{prop: "Close", name: "Close", pkg: "", typ: $funcType([], [$error], false)}, {prop: "Write", name: "Write", pkg: "", typ: $funcType([sliceType], [$Int, $error], false)}]);
  4250  	ReaderFrom.init([{prop: "ReadFrom", name: "ReadFrom", pkg: "", typ: $funcType([Reader], [$Int64, $error], false)}]);
  4251  	WriterTo.init([{prop: "WriteTo", name: "WriteTo", pkg: "", typ: $funcType([Writer], [$Int64, $error], false)}]);
  4252  	ReaderAt.init([{prop: "ReadAt", name: "ReadAt", pkg: "", typ: $funcType([sliceType, $Int64], [$Int, $error], false)}]);
  4253  	ByteScanner.init([{prop: "ReadByte", name: "ReadByte", pkg: "", typ: $funcType([], [$Uint8, $error], false)}, {prop: "UnreadByte", name: "UnreadByte", pkg: "", typ: $funcType([], [$error], false)}]);
  4254  	ByteWriter.init([{prop: "WriteByte", name: "WriteByte", pkg: "", typ: $funcType([$Uint8], [$error], false)}]);
  4255  	RuneScanner.init([{prop: "ReadRune", name: "ReadRune", pkg: "", typ: $funcType([], [$Int32, $Int, $error], false)}, {prop: "UnreadRune", name: "UnreadRune", pkg: "", typ: $funcType([], [$error], false)}]);
  4256  	stringWriter.init([{prop: "WriteString", name: "WriteString", pkg: "", typ: $funcType([$String], [$Int, $error], false)}]);
  4257  	LimitedReader.init("", [{prop: "R", name: "R", anonymous: false, exported: true, typ: Reader, tag: ""}, {prop: "N", name: "N", anonymous: false, exported: true, typ: $Int64, tag: ""}]);
  4258  	SectionReader.init("io", [{prop: "r", name: "r", anonymous: false, exported: false, typ: ReaderAt, tag: ""}, {prop: "base", name: "base", anonymous: false, exported: false, typ: $Int64, tag: ""}, {prop: "off", name: "off", anonymous: false, exported: false, typ: $Int64, tag: ""}, {prop: "limit", name: "limit", anonymous: false, exported: false, typ: $Int64, tag: ""}]);
  4259  	eofReader.init("", []);
  4260  	multiReader.init("io", [{prop: "readers", name: "readers", anonymous: false, exported: false, typ: sliceType$1, tag: ""}]);
  4261  	$init = function() {
  4262  		$pkg.$init = function() {};
  4263  		/* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  4264  		$r = errors.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  4265  		$r = sync.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  4266  		$r = atomic.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  4267  		$pkg.ErrShortWrite = errors.New("short write");
  4268  		$pkg.ErrShortBuffer = errors.New("short buffer");
  4269  		$pkg.EOF = errors.New("EOF");
  4270  		$pkg.ErrUnexpectedEOF = errors.New("unexpected EOF");
  4271  		$pkg.ErrNoProgress = errors.New("multiple Read calls return no data or error");
  4272  		errWhence = errors.New("Seek: invalid whence");
  4273  		errOffset = errors.New("Seek: invalid offset");
  4274  		$pkg.ErrClosedPipe = errors.New("io: read/write on closed pipe");
  4275  		/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
  4276  	};
  4277  	$pkg.$init = $init;
  4278  	return $pkg;
  4279  })();
  4280  $packages["unicode"] = (function() {
  4281  	var $pkg = {}, $init, RangeTable, Range16, Range32, CaseRange, d, foldPair, arrayType, sliceType, sliceType$1, sliceType$3, sliceType$4, _L, _Nd, _White_Space, _CaseRanges, properties, asciiFold, caseOrbit, to, IsDigit, IsLetter, IsSpace, is16, is32, isExcludingLatin, To, ToUpper, ToLower, SimpleFold;
  4282  	RangeTable = $pkg.RangeTable = $newType(0, $kindStruct, "unicode.RangeTable", true, "unicode", true, function(R16_, R32_, LatinOffset_) {
  4283  		this.$val = this;
  4284  		if (arguments.length === 0) {
  4285  			this.R16 = sliceType.nil;
  4286  			this.R32 = sliceType$1.nil;
  4287  			this.LatinOffset = 0;
  4288  			return;
  4289  		}
  4290  		this.R16 = R16_;
  4291  		this.R32 = R32_;
  4292  		this.LatinOffset = LatinOffset_;
  4293  	});
  4294  	Range16 = $pkg.Range16 = $newType(0, $kindStruct, "unicode.Range16", true, "unicode", true, function(Lo_, Hi_, Stride_) {
  4295  		this.$val = this;
  4296  		if (arguments.length === 0) {
  4297  			this.Lo = 0;
  4298  			this.Hi = 0;
  4299  			this.Stride = 0;
  4300  			return;
  4301  		}
  4302  		this.Lo = Lo_;
  4303  		this.Hi = Hi_;
  4304  		this.Stride = Stride_;
  4305  	});
  4306  	Range32 = $pkg.Range32 = $newType(0, $kindStruct, "unicode.Range32", true, "unicode", true, function(Lo_, Hi_, Stride_) {
  4307  		this.$val = this;
  4308  		if (arguments.length === 0) {
  4309  			this.Lo = 0;
  4310  			this.Hi = 0;
  4311  			this.Stride = 0;
  4312  			return;
  4313  		}
  4314  		this.Lo = Lo_;
  4315  		this.Hi = Hi_;
  4316  		this.Stride = Stride_;
  4317  	});
  4318  	CaseRange = $pkg.CaseRange = $newType(0, $kindStruct, "unicode.CaseRange", true, "unicode", true, function(Lo_, Hi_, Delta_) {
  4319  		this.$val = this;
  4320  		if (arguments.length === 0) {
  4321  			this.Lo = 0;
  4322  			this.Hi = 0;
  4323  			this.Delta = arrayType.zero();
  4324  			return;
  4325  		}
  4326  		this.Lo = Lo_;
  4327  		this.Hi = Hi_;
  4328  		this.Delta = Delta_;
  4329  	});
  4330  	d = $pkg.d = $newType(12, $kindArray, "unicode.d", true, "unicode", false, null);
  4331  	foldPair = $pkg.foldPair = $newType(0, $kindStruct, "unicode.foldPair", true, "unicode", false, function(From_, To_) {
  4332  		this.$val = this;
  4333  		if (arguments.length === 0) {
  4334  			this.From = 0;
  4335  			this.To = 0;
  4336  			return;
  4337  		}
  4338  		this.From = From_;
  4339  		this.To = To_;
  4340  	});
  4341  	arrayType = $arrayType($Int32, 3);
  4342  	sliceType = $sliceType(Range16);
  4343  	sliceType$1 = $sliceType(Range32);
  4344  	sliceType$3 = $sliceType(CaseRange);
  4345  	sliceType$4 = $sliceType(foldPair);
  4346  	to = function(_case, r, caseRange) {
  4347  		var _case, _q, caseRange, cr, delta, hi, lo, m, r, x;
  4348  		if (_case < 0 || 3 <= _case) {
  4349  			return 65533;
  4350  		}
  4351  		lo = 0;
  4352  		hi = caseRange.$length;
  4353  		while (true) {
  4354  			if (!(lo < hi)) { break; }
  4355  			m = lo + (_q = ((hi - lo >> 0)) / 2, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")) >> 0;
  4356  			cr = ((m < 0 || m >= caseRange.$length) ? ($throwRuntimeError("index out of range"), undefined) : caseRange.$array[caseRange.$offset + m]);
  4357  			if (((cr.Lo >> 0)) <= r && r <= ((cr.Hi >> 0))) {
  4358  				delta = ((x = cr.Delta, ((_case < 0 || _case >= x.length) ? ($throwRuntimeError("index out of range"), undefined) : x[_case])));
  4359  				if (delta > 1114111) {
  4360  					return ((cr.Lo >> 0)) + ((((((r - ((cr.Lo >> 0)) >> 0)) & ~1) >> 0) | (((_case & 1) >> 0)))) >> 0;
  4361  				}
  4362  				return r + delta >> 0;
  4363  			}
  4364  			if (r < ((cr.Lo >> 0))) {
  4365  				hi = m;
  4366  			} else {
  4367  				lo = m + 1 >> 0;
  4368  			}
  4369  		}
  4370  		return r;
  4371  	};
  4372  	IsDigit = function(r) {
  4373  		var r;
  4374  		if (r <= 255) {
  4375  			return 48 <= r && r <= 57;
  4376  		}
  4377  		return isExcludingLatin($pkg.Digit, r);
  4378  	};
  4379  	$pkg.IsDigit = IsDigit;
  4380  	IsLetter = function(r) {
  4381  		var r, x;
  4382  		if (((r >>> 0)) <= 255) {
  4383  			return !(((((x = ((r << 24 >>> 24)), ((x < 0 || x >= properties.length) ? ($throwRuntimeError("index out of range"), undefined) : properties[x])) & 96) >>> 0) === 0));
  4384  		}
  4385  		return isExcludingLatin($pkg.Letter, r);
  4386  	};
  4387  	$pkg.IsLetter = IsLetter;
  4388  	IsSpace = function(r) {
  4389  		var _1, r;
  4390  		if (((r >>> 0)) <= 255) {
  4391  			_1 = r;
  4392  			if ((_1 === (9)) || (_1 === (10)) || (_1 === (11)) || (_1 === (12)) || (_1 === (13)) || (_1 === (32)) || (_1 === (133)) || (_1 === (160))) {
  4393  				return true;
  4394  			}
  4395  			return false;
  4396  		}
  4397  		return isExcludingLatin($pkg.White_Space, r);
  4398  	};
  4399  	$pkg.IsSpace = IsSpace;
  4400  	is16 = function(ranges, r) {
  4401  		var _i, _q, _r, _r$1, _ref, hi, i, lo, m, r, range_, range_$1, ranges;
  4402  		if (ranges.$length <= 18 || r <= 255) {
  4403  			_ref = ranges;
  4404  			_i = 0;
  4405  			while (true) {
  4406  				if (!(_i < _ref.$length)) { break; }
  4407  				i = _i;
  4408  				range_ = ((i < 0 || i >= ranges.$length) ? ($throwRuntimeError("index out of range"), undefined) : ranges.$array[ranges.$offset + i]);
  4409  				if (r < range_.Lo) {
  4410  					return false;
  4411  				}
  4412  				if (r <= range_.Hi) {
  4413  					return (range_.Stride === 1) || ((_r = ((r - range_.Lo << 16 >>> 16)) % range_.Stride, _r === _r ? _r : $throwRuntimeError("integer divide by zero")) === 0);
  4414  				}
  4415  				_i++;
  4416  			}
  4417  			return false;
  4418  		}
  4419  		lo = 0;
  4420  		hi = ranges.$length;
  4421  		while (true) {
  4422  			if (!(lo < hi)) { break; }
  4423  			m = lo + (_q = ((hi - lo >> 0)) / 2, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")) >> 0;
  4424  			range_$1 = ((m < 0 || m >= ranges.$length) ? ($throwRuntimeError("index out of range"), undefined) : ranges.$array[ranges.$offset + m]);
  4425  			if (range_$1.Lo <= r && r <= range_$1.Hi) {
  4426  				return (range_$1.Stride === 1) || ((_r$1 = ((r - range_$1.Lo << 16 >>> 16)) % range_$1.Stride, _r$1 === _r$1 ? _r$1 : $throwRuntimeError("integer divide by zero")) === 0);
  4427  			}
  4428  			if (r < range_$1.Lo) {
  4429  				hi = m;
  4430  			} else {
  4431  				lo = m + 1 >> 0;
  4432  			}
  4433  		}
  4434  		return false;
  4435  	};
  4436  	is32 = function(ranges, r) {
  4437  		var _i, _q, _r, _r$1, _ref, hi, i, lo, m, r, range_, range_$1, ranges;
  4438  		if (ranges.$length <= 18) {
  4439  			_ref = ranges;
  4440  			_i = 0;
  4441  			while (true) {
  4442  				if (!(_i < _ref.$length)) { break; }
  4443  				i = _i;
  4444  				range_ = ((i < 0 || i >= ranges.$length) ? ($throwRuntimeError("index out of range"), undefined) : ranges.$array[ranges.$offset + i]);
  4445  				if (r < range_.Lo) {
  4446  					return false;
  4447  				}
  4448  				if (r <= range_.Hi) {
  4449  					return (range_.Stride === 1) || ((_r = ((r - range_.Lo >>> 0)) % range_.Stride, _r === _r ? _r : $throwRuntimeError("integer divide by zero")) === 0);
  4450  				}
  4451  				_i++;
  4452  			}
  4453  			return false;
  4454  		}
  4455  		lo = 0;
  4456  		hi = ranges.$length;
  4457  		while (true) {
  4458  			if (!(lo < hi)) { break; }
  4459  			m = lo + (_q = ((hi - lo >> 0)) / 2, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")) >> 0;
  4460  			range_$1 = $clone(((m < 0 || m >= ranges.$length) ? ($throwRuntimeError("index out of range"), undefined) : ranges.$array[ranges.$offset + m]), Range32);
  4461  			if (range_$1.Lo <= r && r <= range_$1.Hi) {
  4462  				return (range_$1.Stride === 1) || ((_r$1 = ((r - range_$1.Lo >>> 0)) % range_$1.Stride, _r$1 === _r$1 ? _r$1 : $throwRuntimeError("integer divide by zero")) === 0);
  4463  			}
  4464  			if (r < range_$1.Lo) {
  4465  				hi = m;
  4466  			} else {
  4467  				lo = m + 1 >> 0;
  4468  			}
  4469  		}
  4470  		return false;
  4471  	};
  4472  	isExcludingLatin = function(rangeTab, r) {
  4473  		var off, r, r16, r32, rangeTab, x;
  4474  		r16 = rangeTab.R16;
  4475  		off = rangeTab.LatinOffset;
  4476  		if (r16.$length > off && r <= (((x = r16.$length - 1 >> 0, ((x < 0 || x >= r16.$length) ? ($throwRuntimeError("index out of range"), undefined) : r16.$array[r16.$offset + x])).Hi >> 0))) {
  4477  			return is16($subslice(r16, off), ((r << 16 >>> 16)));
  4478  		}
  4479  		r32 = rangeTab.R32;
  4480  		if (r32.$length > 0 && r >= (((0 >= r32.$length ? ($throwRuntimeError("index out of range"), undefined) : r32.$array[r32.$offset + 0]).Lo >> 0))) {
  4481  			return is32(r32, ((r >>> 0)));
  4482  		}
  4483  		return false;
  4484  	};
  4485  	To = function(_case, r) {
  4486  		var _case, r;
  4487  		return to(_case, r, $pkg.CaseRanges);
  4488  	};
  4489  	$pkg.To = To;
  4490  	ToUpper = function(r) {
  4491  		var r;
  4492  		if (r <= 127) {
  4493  			if (97 <= r && r <= 122) {
  4494  				r = r - (32) >> 0;
  4495  			}
  4496  			return r;
  4497  		}
  4498  		return To(0, r);
  4499  	};
  4500  	$pkg.ToUpper = ToUpper;
  4501  	ToLower = function(r) {
  4502  		var r;
  4503  		if (r <= 127) {
  4504  			if (65 <= r && r <= 90) {
  4505  				r = r + (32) >> 0;
  4506  			}
  4507  			return r;
  4508  		}
  4509  		return To(1, r);
  4510  	};
  4511  	$pkg.ToLower = ToLower;
  4512  	SimpleFold = function(r) {
  4513  		var _q, hi, l, lo, m, r;
  4514  		if (r < 0 || r > 1114111) {
  4515  			return r;
  4516  		}
  4517  		if (((r >> 0)) < 128) {
  4518  			return ((((r < 0 || r >= asciiFold.length) ? ($throwRuntimeError("index out of range"), undefined) : asciiFold[r]) >> 0));
  4519  		}
  4520  		lo = 0;
  4521  		hi = caseOrbit.$length;
  4522  		while (true) {
  4523  			if (!(lo < hi)) { break; }
  4524  			m = lo + (_q = ((hi - lo >> 0)) / 2, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")) >> 0;
  4525  			if (((((m < 0 || m >= caseOrbit.$length) ? ($throwRuntimeError("index out of range"), undefined) : caseOrbit.$array[caseOrbit.$offset + m]).From >> 0)) < r) {
  4526  				lo = m + 1 >> 0;
  4527  			} else {
  4528  				hi = m;
  4529  			}
  4530  		}
  4531  		if (lo < caseOrbit.$length && (((((lo < 0 || lo >= caseOrbit.$length) ? ($throwRuntimeError("index out of range"), undefined) : caseOrbit.$array[caseOrbit.$offset + lo]).From >> 0)) === r)) {
  4532  			return ((((lo < 0 || lo >= caseOrbit.$length) ? ($throwRuntimeError("index out of range"), undefined) : caseOrbit.$array[caseOrbit.$offset + lo]).To >> 0));
  4533  		}
  4534  		l = ToLower(r);
  4535  		if (!((l === r))) {
  4536  			return l;
  4537  		}
  4538  		return ToUpper(r);
  4539  	};
  4540  	$pkg.SimpleFold = SimpleFold;
  4541  	RangeTable.init("", [{prop: "R16", name: "R16", anonymous: false, exported: true, typ: sliceType, tag: ""}, {prop: "R32", name: "R32", anonymous: false, exported: true, typ: sliceType$1, tag: ""}, {prop: "LatinOffset", name: "LatinOffset", anonymous: false, exported: true, typ: $Int, tag: ""}]);
  4542  	Range16.init("", [{prop: "Lo", name: "Lo", anonymous: false, exported: true, typ: $Uint16, tag: ""}, {prop: "Hi", name: "Hi", anonymous: false, exported: true, typ: $Uint16, tag: ""}, {prop: "Stride", name: "Stride", anonymous: false, exported: true, typ: $Uint16, tag: ""}]);
  4543  	Range32.init("", [{prop: "Lo", name: "Lo", anonymous: false, exported: true, typ: $Uint32, tag: ""}, {prop: "Hi", name: "Hi", anonymous: false, exported: true, typ: $Uint32, tag: ""}, {prop: "Stride", name: "Stride", anonymous: false, exported: true, typ: $Uint32, tag: ""}]);
  4544  	CaseRange.init("", [{prop: "Lo", name: "Lo", anonymous: false, exported: true, typ: $Uint32, tag: ""}, {prop: "Hi", name: "Hi", anonymous: false, exported: true, typ: $Uint32, tag: ""}, {prop: "Delta", name: "Delta", anonymous: false, exported: true, typ: d, tag: ""}]);
  4545  	d.init($Int32, 3);
  4546  	foldPair.init("", [{prop: "From", name: "From", anonymous: false, exported: true, typ: $Uint16, tag: ""}, {prop: "To", name: "To", anonymous: false, exported: true, typ: $Uint16, tag: ""}]);
  4547  	$init = function() {
  4548  		$pkg.$init = function() {};
  4549  		/* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  4550  		_L = new RangeTable.ptr(new sliceType([new Range16.ptr(65, 90, 1), new Range16.ptr(97, 122, 1), new Range16.ptr(170, 181, 11), new Range16.ptr(186, 192, 6), new Range16.ptr(193, 214, 1), new Range16.ptr(216, 246, 1), new Range16.ptr(248, 705, 1), new Range16.ptr(710, 721, 1), new Range16.ptr(736, 740, 1), new Range16.ptr(748, 750, 2), new Range16.ptr(880, 884, 1), new Range16.ptr(886, 887, 1), new Range16.ptr(890, 893, 1), new Range16.ptr(895, 902, 7), new Range16.ptr(904, 906, 1), new Range16.ptr(908, 910, 2), new Range16.ptr(911, 929, 1), new Range16.ptr(931, 1013, 1), new Range16.ptr(1015, 1153, 1), new Range16.ptr(1162, 1327, 1), new Range16.ptr(1329, 1366, 1), new Range16.ptr(1369, 1377, 8), new Range16.ptr(1378, 1415, 1), new Range16.ptr(1488, 1514, 1), new Range16.ptr(1520, 1522, 1), new Range16.ptr(1568, 1610, 1), new Range16.ptr(1646, 1647, 1), new Range16.ptr(1649, 1747, 1), new Range16.ptr(1749, 1765, 16), new Range16.ptr(1766, 1774, 8), new Range16.ptr(1775, 1786, 11), new Range16.ptr(1787, 1788, 1), new Range16.ptr(1791, 1808, 17), new Range16.ptr(1810, 1839, 1), new Range16.ptr(1869, 1957, 1), new Range16.ptr(1969, 1994, 25), new Range16.ptr(1995, 2026, 1), new Range16.ptr(2036, 2037, 1), new Range16.ptr(2042, 2048, 6), new Range16.ptr(2049, 2069, 1), new Range16.ptr(2074, 2084, 10), new Range16.ptr(2088, 2112, 24), new Range16.ptr(2113, 2136, 1), new Range16.ptr(2144, 2154, 1), new Range16.ptr(2208, 2228, 1), new Range16.ptr(2230, 2237, 1), new Range16.ptr(2308, 2361, 1), new Range16.ptr(2365, 2384, 19), new Range16.ptr(2392, 2401, 1), new Range16.ptr(2417, 2432, 1), new Range16.ptr(2437, 2444, 1), new Range16.ptr(2447, 2448, 1), new Range16.ptr(2451, 2472, 1), new Range16.ptr(2474, 2480, 1), new Range16.ptr(2482, 2486, 4), new Range16.ptr(2487, 2489, 1), new Range16.ptr(2493, 2510, 17), new Range16.ptr(2524, 2525, 1), new Range16.ptr(2527, 2529, 1), new Range16.ptr(2544, 2545, 1), new Range16.ptr(2556, 2565, 9), new Range16.ptr(2566, 2570, 1), new Range16.ptr(2575, 2576, 1), new Range16.ptr(2579, 2600, 1), new Range16.ptr(2602, 2608, 1), new Range16.ptr(2610, 2611, 1), new Range16.ptr(2613, 2614, 1), new Range16.ptr(2616, 2617, 1), new Range16.ptr(2649, 2652, 1), new Range16.ptr(2654, 2674, 20), new Range16.ptr(2675, 2676, 1), new Range16.ptr(2693, 2701, 1), new Range16.ptr(2703, 2705, 1), new Range16.ptr(2707, 2728, 1), new Range16.ptr(2730, 2736, 1), new Range16.ptr(2738, 2739, 1), new Range16.ptr(2741, 2745, 1), new Range16.ptr(2749, 2768, 19), new Range16.ptr(2784, 2785, 1), new Range16.ptr(2809, 2821, 12), new Range16.ptr(2822, 2828, 1), new Range16.ptr(2831, 2832, 1), new Range16.ptr(2835, 2856, 1), new Range16.ptr(2858, 2864, 1), new Range16.ptr(2866, 2867, 1), new Range16.ptr(2869, 2873, 1), new Range16.ptr(2877, 2908, 31), new Range16.ptr(2909, 2911, 2), new Range16.ptr(2912, 2913, 1), new Range16.ptr(2929, 2947, 18), new Range16.ptr(2949, 2954, 1), new Range16.ptr(2958, 2960, 1), new Range16.ptr(2962, 2965, 1), new Range16.ptr(2969, 2970, 1), new Range16.ptr(2972, 2974, 2), new Range16.ptr(2975, 2979, 4), new Range16.ptr(2980, 2984, 4), new Range16.ptr(2985, 2986, 1), new Range16.ptr(2990, 3001, 1), new Range16.ptr(3024, 3077, 53), new Range16.ptr(3078, 3084, 1), new Range16.ptr(3086, 3088, 1), new Range16.ptr(3090, 3112, 1), new Range16.ptr(3114, 3129, 1), new Range16.ptr(3133, 3160, 27), new Range16.ptr(3161, 3162, 1), new Range16.ptr(3168, 3169, 1), new Range16.ptr(3200, 3205, 5), new Range16.ptr(3206, 3212, 1), new Range16.ptr(3214, 3216, 1), new Range16.ptr(3218, 3240, 1), new Range16.ptr(3242, 3251, 1), new Range16.ptr(3253, 3257, 1), new Range16.ptr(3261, 3294, 33), new Range16.ptr(3296, 3297, 1), new Range16.ptr(3313, 3314, 1), new Range16.ptr(3333, 3340, 1), new Range16.ptr(3342, 3344, 1), new Range16.ptr(3346, 3386, 1), new Range16.ptr(3389, 3406, 17), new Range16.ptr(3412, 3414, 1), new Range16.ptr(3423, 3425, 1), new Range16.ptr(3450, 3455, 1), new Range16.ptr(3461, 3478, 1), new Range16.ptr(3482, 3505, 1), new Range16.ptr(3507, 3515, 1), new Range16.ptr(3517, 3520, 3), new Range16.ptr(3521, 3526, 1), new Range16.ptr(3585, 3632, 1), new Range16.ptr(3634, 3635, 1), new Range16.ptr(3648, 3654, 1), new Range16.ptr(3713, 3714, 1), new Range16.ptr(3716, 3719, 3), new Range16.ptr(3720, 3722, 2), new Range16.ptr(3725, 3732, 7), new Range16.ptr(3733, 3735, 1), new Range16.ptr(3737, 3743, 1), new Range16.ptr(3745, 3747, 1), new Range16.ptr(3749, 3751, 2), new Range16.ptr(3754, 3755, 1), new Range16.ptr(3757, 3760, 1), new Range16.ptr(3762, 3763, 1), new Range16.ptr(3773, 3776, 3), new Range16.ptr(3777, 3780, 1), new Range16.ptr(3782, 3804, 22), new Range16.ptr(3805, 3807, 1), new Range16.ptr(3840, 3904, 64), new Range16.ptr(3905, 3911, 1), new Range16.ptr(3913, 3948, 1), new Range16.ptr(3976, 3980, 1), new Range16.ptr(4096, 4138, 1), new Range16.ptr(4159, 4176, 17), new Range16.ptr(4177, 4181, 1), new Range16.ptr(4186, 4189, 1), new Range16.ptr(4193, 4197, 4), new Range16.ptr(4198, 4206, 8), new Range16.ptr(4207, 4208, 1), new Range16.ptr(4213, 4225, 1), new Range16.ptr(4238, 4256, 18), new Range16.ptr(4257, 4293, 1), new Range16.ptr(4295, 4301, 6), new Range16.ptr(4304, 4346, 1), new Range16.ptr(4348, 4680, 1), new Range16.ptr(4682, 4685, 1), new Range16.ptr(4688, 4694, 1), new Range16.ptr(4696, 4698, 2), new Range16.ptr(4699, 4701, 1), new Range16.ptr(4704, 4744, 1), new Range16.ptr(4746, 4749, 1), new Range16.ptr(4752, 4784, 1), new Range16.ptr(4786, 4789, 1), new Range16.ptr(4792, 4798, 1), new Range16.ptr(4800, 4802, 2), new Range16.ptr(4803, 4805, 1), new Range16.ptr(4808, 4822, 1), new Range16.ptr(4824, 4880, 1), new Range16.ptr(4882, 4885, 1), new Range16.ptr(4888, 4954, 1), new Range16.ptr(4992, 5007, 1), new Range16.ptr(5024, 5109, 1), new Range16.ptr(5112, 5117, 1), new Range16.ptr(5121, 5740, 1), new Range16.ptr(5743, 5759, 1), new Range16.ptr(5761, 5786, 1), new Range16.ptr(5792, 5866, 1), new Range16.ptr(5873, 5880, 1), new Range16.ptr(5888, 5900, 1), new Range16.ptr(5902, 5905, 1), new Range16.ptr(5920, 5937, 1), new Range16.ptr(5952, 5969, 1), new Range16.ptr(5984, 5996, 1), new Range16.ptr(5998, 6000, 1), new Range16.ptr(6016, 6067, 1), new Range16.ptr(6103, 6108, 5), new Range16.ptr(6176, 6263, 1), new Range16.ptr(6272, 6276, 1), new Range16.ptr(6279, 6312, 1), new Range16.ptr(6314, 6320, 6), new Range16.ptr(6321, 6389, 1), new Range16.ptr(6400, 6430, 1), new Range16.ptr(6480, 6509, 1), new Range16.ptr(6512, 6516, 1), new Range16.ptr(6528, 6571, 1), new Range16.ptr(6576, 6601, 1), new Range16.ptr(6656, 6678, 1), new Range16.ptr(6688, 6740, 1), new Range16.ptr(6823, 6917, 94), new Range16.ptr(6918, 6963, 1), new Range16.ptr(6981, 6987, 1), new Range16.ptr(7043, 7072, 1), new Range16.ptr(7086, 7087, 1), new Range16.ptr(7098, 7141, 1), new Range16.ptr(7168, 7203, 1), new Range16.ptr(7245, 7247, 1), new Range16.ptr(7258, 7293, 1), new Range16.ptr(7296, 7304, 1), new Range16.ptr(7401, 7404, 1), new Range16.ptr(7406, 7409, 1), new Range16.ptr(7413, 7414, 1), new Range16.ptr(7424, 7615, 1), new Range16.ptr(7680, 7957, 1), new Range16.ptr(7960, 7965, 1), new Range16.ptr(7968, 8005, 1), new Range16.ptr(8008, 8013, 1), new Range16.ptr(8016, 8023, 1), new Range16.ptr(8025, 8031, 2), new Range16.ptr(8032, 8061, 1), new Range16.ptr(8064, 8116, 1), new Range16.ptr(8118, 8124, 1), new Range16.ptr(8126, 8130, 4), new Range16.ptr(8131, 8132, 1), new Range16.ptr(8134, 8140, 1), new Range16.ptr(8144, 8147, 1), new Range16.ptr(8150, 8155, 1), new Range16.ptr(8160, 8172, 1), new Range16.ptr(8178, 8180, 1), new Range16.ptr(8182, 8188, 1), new Range16.ptr(8305, 8319, 14), new Range16.ptr(8336, 8348, 1), new Range16.ptr(8450, 8455, 5), new Range16.ptr(8458, 8467, 1), new Range16.ptr(8469, 8473, 4), new Range16.ptr(8474, 8477, 1), new Range16.ptr(8484, 8490, 2), new Range16.ptr(8491, 8493, 1), new Range16.ptr(8495, 8505, 1), new Range16.ptr(8508, 8511, 1), new Range16.ptr(8517, 8521, 1), new Range16.ptr(8526, 8579, 53), new Range16.ptr(8580, 11264, 2684), new Range16.ptr(11265, 11310, 1), new Range16.ptr(11312, 11358, 1), new Range16.ptr(11360, 11492, 1), new Range16.ptr(11499, 11502, 1), new Range16.ptr(11506, 11507, 1), new Range16.ptr(11520, 11557, 1), new Range16.ptr(11559, 11565, 6), new Range16.ptr(11568, 11623, 1), new Range16.ptr(11631, 11648, 17), new Range16.ptr(11649, 11670, 1), new Range16.ptr(11680, 11686, 1), new Range16.ptr(11688, 11694, 1), new Range16.ptr(11696, 11702, 1), new Range16.ptr(11704, 11710, 1), new Range16.ptr(11712, 11718, 1), new Range16.ptr(11720, 11726, 1), new Range16.ptr(11728, 11734, 1), new Range16.ptr(11736, 11742, 1), new Range16.ptr(11823, 12293, 470), new Range16.ptr(12294, 12337, 43), new Range16.ptr(12338, 12341, 1), new Range16.ptr(12347, 12348, 1), new Range16.ptr(12353, 12438, 1), new Range16.ptr(12445, 12447, 1), new Range16.ptr(12449, 12538, 1), new Range16.ptr(12540, 12543, 1), new Range16.ptr(12549, 12590, 1), new Range16.ptr(12593, 12686, 1), new Range16.ptr(12704, 12730, 1), new Range16.ptr(12784, 12799, 1), new Range16.ptr(13312, 19893, 1), new Range16.ptr(19968, 40938, 1), new Range16.ptr(40960, 42124, 1), new Range16.ptr(42192, 42237, 1), new Range16.ptr(42240, 42508, 1), new Range16.ptr(42512, 42527, 1), new Range16.ptr(42538, 42539, 1), new Range16.ptr(42560, 42606, 1), new Range16.ptr(42623, 42653, 1), new Range16.ptr(42656, 42725, 1), new Range16.ptr(42775, 42783, 1), new Range16.ptr(42786, 42888, 1), new Range16.ptr(42891, 42926, 1), new Range16.ptr(42928, 42935, 1), new Range16.ptr(42999, 43009, 1), new Range16.ptr(43011, 43013, 1), new Range16.ptr(43015, 43018, 1), new Range16.ptr(43020, 43042, 1), new Range16.ptr(43072, 43123, 1), new Range16.ptr(43138, 43187, 1), new Range16.ptr(43250, 43255, 1), new Range16.ptr(43259, 43261, 2), new Range16.ptr(43274, 43301, 1), new Range16.ptr(43312, 43334, 1), new Range16.ptr(43360, 43388, 1), new Range16.ptr(43396, 43442, 1), new Range16.ptr(43471, 43488, 17), new Range16.ptr(43489, 43492, 1), new Range16.ptr(43494, 43503, 1), new Range16.ptr(43514, 43518, 1), new Range16.ptr(43520, 43560, 1), new Range16.ptr(43584, 43586, 1), new Range16.ptr(43588, 43595, 1), new Range16.ptr(43616, 43638, 1), new Range16.ptr(43642, 43646, 4), new Range16.ptr(43647, 43695, 1), new Range16.ptr(43697, 43701, 4), new Range16.ptr(43702, 43705, 3), new Range16.ptr(43706, 43709, 1), new Range16.ptr(43712, 43714, 2), new Range16.ptr(43739, 43741, 1), new Range16.ptr(43744, 43754, 1), new Range16.ptr(43762, 43764, 1), new Range16.ptr(43777, 43782, 1), new Range16.ptr(43785, 43790, 1), new Range16.ptr(43793, 43798, 1), new Range16.ptr(43808, 43814, 1), new Range16.ptr(43816, 43822, 1), new Range16.ptr(43824, 43866, 1), new Range16.ptr(43868, 43877, 1), new Range16.ptr(43888, 44002, 1), new Range16.ptr(44032, 55203, 1), new Range16.ptr(55216, 55238, 1), new Range16.ptr(55243, 55291, 1), new Range16.ptr(63744, 64109, 1), new Range16.ptr(64112, 64217, 1), new Range16.ptr(64256, 64262, 1), new Range16.ptr(64275, 64279, 1), new Range16.ptr(64285, 64287, 2), new Range16.ptr(64288, 64296, 1), new Range16.ptr(64298, 64310, 1), new Range16.ptr(64312, 64316, 1), new Range16.ptr(64318, 64320, 2), new Range16.ptr(64321, 64323, 2), new Range16.ptr(64324, 64326, 2), new Range16.ptr(64327, 64433, 1), new Range16.ptr(64467, 64829, 1), new Range16.ptr(64848, 64911, 1), new Range16.ptr(64914, 64967, 1), new Range16.ptr(65008, 65019, 1), new Range16.ptr(65136, 65140, 1), new Range16.ptr(65142, 65276, 1), new Range16.ptr(65313, 65338, 1), new Range16.ptr(65345, 65370, 1), new Range16.ptr(65382, 65470, 1), new Range16.ptr(65474, 65479, 1), new Range16.ptr(65482, 65487, 1), new Range16.ptr(65490, 65495, 1), new Range16.ptr(65498, 65500, 1)]), new sliceType$1([new Range32.ptr(65536, 65547, 1), new Range32.ptr(65549, 65574, 1), new Range32.ptr(65576, 65594, 1), new Range32.ptr(65596, 65597, 1), new Range32.ptr(65599, 65613, 1), new Range32.ptr(65616, 65629, 1), new Range32.ptr(65664, 65786, 1), new Range32.ptr(66176, 66204, 1), new Range32.ptr(66208, 66256, 1), new Range32.ptr(66304, 66335, 1), new Range32.ptr(66349, 66368, 1), new Range32.ptr(66370, 66377, 1), new Range32.ptr(66384, 66421, 1), new Range32.ptr(66432, 66461, 1), new Range32.ptr(66464, 66499, 1), new Range32.ptr(66504, 66511, 1), new Range32.ptr(66560, 66717, 1), new Range32.ptr(66736, 66771, 1), new Range32.ptr(66776, 66811, 1), new Range32.ptr(66816, 66855, 1), new Range32.ptr(66864, 66915, 1), new Range32.ptr(67072, 67382, 1), new Range32.ptr(67392, 67413, 1), new Range32.ptr(67424, 67431, 1), new Range32.ptr(67584, 67589, 1), new Range32.ptr(67592, 67594, 2), new Range32.ptr(67595, 67637, 1), new Range32.ptr(67639, 67640, 1), new Range32.ptr(67644, 67647, 3), new Range32.ptr(67648, 67669, 1), new Range32.ptr(67680, 67702, 1), new Range32.ptr(67712, 67742, 1), new Range32.ptr(67808, 67826, 1), new Range32.ptr(67828, 67829, 1), new Range32.ptr(67840, 67861, 1), new Range32.ptr(67872, 67897, 1), new Range32.ptr(67968, 68023, 1), new Range32.ptr(68030, 68031, 1), new Range32.ptr(68096, 68112, 16), new Range32.ptr(68113, 68115, 1), new Range32.ptr(68117, 68119, 1), new Range32.ptr(68121, 68147, 1), new Range32.ptr(68192, 68220, 1), new Range32.ptr(68224, 68252, 1), new Range32.ptr(68288, 68295, 1), new Range32.ptr(68297, 68324, 1), new Range32.ptr(68352, 68405, 1), new Range32.ptr(68416, 68437, 1), new Range32.ptr(68448, 68466, 1), new Range32.ptr(68480, 68497, 1), new Range32.ptr(68608, 68680, 1), new Range32.ptr(68736, 68786, 1), new Range32.ptr(68800, 68850, 1), new Range32.ptr(69635, 69687, 1), new Range32.ptr(69763, 69807, 1), new Range32.ptr(69840, 69864, 1), new Range32.ptr(69891, 69926, 1), new Range32.ptr(69968, 70002, 1), new Range32.ptr(70006, 70019, 13), new Range32.ptr(70020, 70066, 1), new Range32.ptr(70081, 70084, 1), new Range32.ptr(70106, 70108, 2), new Range32.ptr(70144, 70161, 1), new Range32.ptr(70163, 70187, 1), new Range32.ptr(70272, 70278, 1), new Range32.ptr(70280, 70282, 2), new Range32.ptr(70283, 70285, 1), new Range32.ptr(70287, 70301, 1), new Range32.ptr(70303, 70312, 1), new Range32.ptr(70320, 70366, 1), new Range32.ptr(70405, 70412, 1), new Range32.ptr(70415, 70416, 1), new Range32.ptr(70419, 70440, 1), new Range32.ptr(70442, 70448, 1), new Range32.ptr(70450, 70451, 1), new Range32.ptr(70453, 70457, 1), new Range32.ptr(70461, 70480, 19), new Range32.ptr(70493, 70497, 1), new Range32.ptr(70656, 70708, 1), new Range32.ptr(70727, 70730, 1), new Range32.ptr(70784, 70831, 1), new Range32.ptr(70852, 70853, 1), new Range32.ptr(70855, 71040, 185), new Range32.ptr(71041, 71086, 1), new Range32.ptr(71128, 71131, 1), new Range32.ptr(71168, 71215, 1), new Range32.ptr(71236, 71296, 60), new Range32.ptr(71297, 71338, 1), new Range32.ptr(71424, 71449, 1), new Range32.ptr(71840, 71903, 1), new Range32.ptr(71935, 72192, 257), new Range32.ptr(72203, 72242, 1), new Range32.ptr(72250, 72272, 22), new Range32.ptr(72284, 72323, 1), new Range32.ptr(72326, 72329, 1), new Range32.ptr(72384, 72440, 1), new Range32.ptr(72704, 72712, 1), new Range32.ptr(72714, 72750, 1), new Range32.ptr(72768, 72818, 50), new Range32.ptr(72819, 72847, 1), new Range32.ptr(72960, 72966, 1), new Range32.ptr(72968, 72969, 1), new Range32.ptr(72971, 73008, 1), new Range32.ptr(73030, 73728, 698), new Range32.ptr(73729, 74649, 1), new Range32.ptr(74880, 75075, 1), new Range32.ptr(77824, 78894, 1), new Range32.ptr(82944, 83526, 1), new Range32.ptr(92160, 92728, 1), new Range32.ptr(92736, 92766, 1), new Range32.ptr(92880, 92909, 1), new Range32.ptr(92928, 92975, 1), new Range32.ptr(92992, 92995, 1), new Range32.ptr(93027, 93047, 1), new Range32.ptr(93053, 93071, 1), new Range32.ptr(93952, 94020, 1), new Range32.ptr(94032, 94099, 67), new Range32.ptr(94100, 94111, 1), new Range32.ptr(94176, 94177, 1), new Range32.ptr(94208, 100332, 1), new Range32.ptr(100352, 101106, 1), new Range32.ptr(110592, 110878, 1), new Range32.ptr(110960, 111355, 1), new Range32.ptr(113664, 113770, 1), new Range32.ptr(113776, 113788, 1), new Range32.ptr(113792, 113800, 1), new Range32.ptr(113808, 113817, 1), new Range32.ptr(119808, 119892, 1), new Range32.ptr(119894, 119964, 1), new Range32.ptr(119966, 119967, 1), new Range32.ptr(119970, 119973, 3), new Range32.ptr(119974, 119977, 3), new Range32.ptr(119978, 119980, 1), new Range32.ptr(119982, 119993, 1), new Range32.ptr(119995, 119997, 2), new Range32.ptr(119998, 120003, 1), new Range32.ptr(120005, 120069, 1), new Range32.ptr(120071, 120074, 1), new Range32.ptr(120077, 120084, 1), new Range32.ptr(120086, 120092, 1), new Range32.ptr(120094, 120121, 1), new Range32.ptr(120123, 120126, 1), new Range32.ptr(120128, 120132, 1), new Range32.ptr(120134, 120138, 4), new Range32.ptr(120139, 120144, 1), new Range32.ptr(120146, 120485, 1), new Range32.ptr(120488, 120512, 1), new Range32.ptr(120514, 120538, 1), new Range32.ptr(120540, 120570, 1), new Range32.ptr(120572, 120596, 1), new Range32.ptr(120598, 120628, 1), new Range32.ptr(120630, 120654, 1), new Range32.ptr(120656, 120686, 1), new Range32.ptr(120688, 120712, 1), new Range32.ptr(120714, 120744, 1), new Range32.ptr(120746, 120770, 1), new Range32.ptr(120772, 120779, 1), new Range32.ptr(124928, 125124, 1), new Range32.ptr(125184, 125251, 1), new Range32.ptr(126464, 126467, 1), new Range32.ptr(126469, 126495, 1), new Range32.ptr(126497, 126498, 1), new Range32.ptr(126500, 126503, 3), new Range32.ptr(126505, 126514, 1), new Range32.ptr(126516, 126519, 1), new Range32.ptr(126521, 126523, 2), new Range32.ptr(126530, 126535, 5), new Range32.ptr(126537, 126541, 2), new Range32.ptr(126542, 126543, 1), new Range32.ptr(126545, 126546, 1), new Range32.ptr(126548, 126551, 3), new Range32.ptr(126553, 126561, 2), new Range32.ptr(126562, 126564, 2), new Range32.ptr(126567, 126570, 1), new Range32.ptr(126572, 126578, 1), new Range32.ptr(126580, 126583, 1), new Range32.ptr(126585, 126588, 1), new Range32.ptr(126590, 126592, 2), new Range32.ptr(126593, 126601, 1), new Range32.ptr(126603, 126619, 1), new Range32.ptr(126625, 126627, 1), new Range32.ptr(126629, 126633, 1), new Range32.ptr(126635, 126651, 1), new Range32.ptr(131072, 173782, 1), new Range32.ptr(173824, 177972, 1), new Range32.ptr(177984, 178205, 1), new Range32.ptr(178208, 183969, 1), new Range32.ptr(183984, 191456, 1), new Range32.ptr(194560, 195101, 1)]), 6);
  4551  		_Nd = new RangeTable.ptr(new sliceType([new Range16.ptr(48, 57, 1), new Range16.ptr(1632, 1641, 1), new Range16.ptr(1776, 1785, 1), new Range16.ptr(1984, 1993, 1), new Range16.ptr(2406, 2415, 1), new Range16.ptr(2534, 2543, 1), new Range16.ptr(2662, 2671, 1), new Range16.ptr(2790, 2799, 1), new Range16.ptr(2918, 2927, 1), new Range16.ptr(3046, 3055, 1), new Range16.ptr(3174, 3183, 1), new Range16.ptr(3302, 3311, 1), new Range16.ptr(3430, 3439, 1), new Range16.ptr(3558, 3567, 1), new Range16.ptr(3664, 3673, 1), new Range16.ptr(3792, 3801, 1), new Range16.ptr(3872, 3881, 1), new Range16.ptr(4160, 4169, 1), new Range16.ptr(4240, 4249, 1), new Range16.ptr(6112, 6121, 1), new Range16.ptr(6160, 6169, 1), new Range16.ptr(6470, 6479, 1), new Range16.ptr(6608, 6617, 1), new Range16.ptr(6784, 6793, 1), new Range16.ptr(6800, 6809, 1), new Range16.ptr(6992, 7001, 1), new Range16.ptr(7088, 7097, 1), new Range16.ptr(7232, 7241, 1), new Range16.ptr(7248, 7257, 1), new Range16.ptr(42528, 42537, 1), new Range16.ptr(43216, 43225, 1), new Range16.ptr(43264, 43273, 1), new Range16.ptr(43472, 43481, 1), new Range16.ptr(43504, 43513, 1), new Range16.ptr(43600, 43609, 1), new Range16.ptr(44016, 44025, 1), new Range16.ptr(65296, 65305, 1)]), new sliceType$1([new Range32.ptr(66720, 66729, 1), new Range32.ptr(69734, 69743, 1), new Range32.ptr(69872, 69881, 1), new Range32.ptr(69942, 69951, 1), new Range32.ptr(70096, 70105, 1), new Range32.ptr(70384, 70393, 1), new Range32.ptr(70736, 70745, 1), new Range32.ptr(70864, 70873, 1), new Range32.ptr(71248, 71257, 1), new Range32.ptr(71360, 71369, 1), new Range32.ptr(71472, 71481, 1), new Range32.ptr(71904, 71913, 1), new Range32.ptr(72784, 72793, 1), new Range32.ptr(73040, 73049, 1), new Range32.ptr(92768, 92777, 1), new Range32.ptr(93008, 93017, 1), new Range32.ptr(120782, 120831, 1), new Range32.ptr(125264, 125273, 1)]), 1);
  4552  		$pkg.Digit = _Nd;
  4553  		$pkg.Letter = _L;
  4554  		_White_Space = new RangeTable.ptr(new sliceType([new Range16.ptr(9, 13, 1), new Range16.ptr(32, 32, 1), new Range16.ptr(133, 133, 1), new Range16.ptr(160, 160, 1), new Range16.ptr(5760, 5760, 1), new Range16.ptr(8192, 8202, 1), new Range16.ptr(8232, 8233, 1), new Range16.ptr(8239, 8239, 1), new Range16.ptr(8287, 8287, 1), new Range16.ptr(12288, 12288, 1)]), sliceType$1.nil, 4);
  4555  		$pkg.White_Space = _White_Space;
  4556  		_CaseRanges = new sliceType$3([new CaseRange.ptr(65, 90, $toNativeArray($kindInt32, [0, 32, 0])), new CaseRange.ptr(97, 122, $toNativeArray($kindInt32, [-32, 0, -32])), new CaseRange.ptr(181, 181, $toNativeArray($kindInt32, [743, 0, 743])), new CaseRange.ptr(192, 214, $toNativeArray($kindInt32, [0, 32, 0])), new CaseRange.ptr(216, 222, $toNativeArray($kindInt32, [0, 32, 0])), new CaseRange.ptr(224, 246, $toNativeArray($kindInt32, [-32, 0, -32])), new CaseRange.ptr(248, 254, $toNativeArray($kindInt32, [-32, 0, -32])), new CaseRange.ptr(255, 255, $toNativeArray($kindInt32, [121, 0, 121])), new CaseRange.ptr(256, 303, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(304, 304, $toNativeArray($kindInt32, [0, -199, 0])), new CaseRange.ptr(305, 305, $toNativeArray($kindInt32, [-232, 0, -232])), new CaseRange.ptr(306, 311, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(313, 328, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(330, 375, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(376, 376, $toNativeArray($kindInt32, [0, -121, 0])), new CaseRange.ptr(377, 382, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(383, 383, $toNativeArray($kindInt32, [-300, 0, -300])), new CaseRange.ptr(384, 384, $toNativeArray($kindInt32, [195, 0, 195])), new CaseRange.ptr(385, 385, $toNativeArray($kindInt32, [0, 210, 0])), new CaseRange.ptr(386, 389, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(390, 390, $toNativeArray($kindInt32, [0, 206, 0])), new CaseRange.ptr(391, 392, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(393, 394, $toNativeArray($kindInt32, [0, 205, 0])), new CaseRange.ptr(395, 396, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(398, 398, $toNativeArray($kindInt32, [0, 79, 0])), new CaseRange.ptr(399, 399, $toNativeArray($kindInt32, [0, 202, 0])), new CaseRange.ptr(400, 400, $toNativeArray($kindInt32, [0, 203, 0])), new CaseRange.ptr(401, 402, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(403, 403, $toNativeArray($kindInt32, [0, 205, 0])), new CaseRange.ptr(404, 404, $toNativeArray($kindInt32, [0, 207, 0])), new CaseRange.ptr(405, 405, $toNativeArray($kindInt32, [97, 0, 97])), new CaseRange.ptr(406, 406, $toNativeArray($kindInt32, [0, 211, 0])), new CaseRange.ptr(407, 407, $toNativeArray($kindInt32, [0, 209, 0])), new CaseRange.ptr(408, 409, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(410, 410, $toNativeArray($kindInt32, [163, 0, 163])), new CaseRange.ptr(412, 412, $toNativeArray($kindInt32, [0, 211, 0])), new CaseRange.ptr(413, 413, $toNativeArray($kindInt32, [0, 213, 0])), new CaseRange.ptr(414, 414, $toNativeArray($kindInt32, [130, 0, 130])), new CaseRange.ptr(415, 415, $toNativeArray($kindInt32, [0, 214, 0])), new CaseRange.ptr(416, 421, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(422, 422, $toNativeArray($kindInt32, [0, 218, 0])), new CaseRange.ptr(423, 424, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(425, 425, $toNativeArray($kindInt32, [0, 218, 0])), new CaseRange.ptr(428, 429, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(430, 430, $toNativeArray($kindInt32, [0, 218, 0])), new CaseRange.ptr(431, 432, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(433, 434, $toNativeArray($kindInt32, [0, 217, 0])), new CaseRange.ptr(435, 438, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(439, 439, $toNativeArray($kindInt32, [0, 219, 0])), new CaseRange.ptr(440, 441, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(444, 445, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(447, 447, $toNativeArray($kindInt32, [56, 0, 56])), new CaseRange.ptr(452, 452, $toNativeArray($kindInt32, [0, 2, 1])), new CaseRange.ptr(453, 453, $toNativeArray($kindInt32, [-1, 1, 0])), new CaseRange.ptr(454, 454, $toNativeArray($kindInt32, [-2, 0, -1])), new CaseRange.ptr(455, 455, $toNativeArray($kindInt32, [0, 2, 1])), new CaseRange.ptr(456, 456, $toNativeArray($kindInt32, [-1, 1, 0])), new CaseRange.ptr(457, 457, $toNativeArray($kindInt32, [-2, 0, -1])), new CaseRange.ptr(458, 458, $toNativeArray($kindInt32, [0, 2, 1])), new CaseRange.ptr(459, 459, $toNativeArray($kindInt32, [-1, 1, 0])), new CaseRange.ptr(460, 460, $toNativeArray($kindInt32, [-2, 0, -1])), new CaseRange.ptr(461, 476, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(477, 477, $toNativeArray($kindInt32, [-79, 0, -79])), new CaseRange.ptr(478, 495, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(497, 497, $toNativeArray($kindInt32, [0, 2, 1])), new CaseRange.ptr(498, 498, $toNativeArray($kindInt32, [-1, 1, 0])), new CaseRange.ptr(499, 499, $toNativeArray($kindInt32, [-2, 0, -1])), new CaseRange.ptr(500, 501, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(502, 502, $toNativeArray($kindInt32, [0, -97, 0])), new CaseRange.ptr(503, 503, $toNativeArray($kindInt32, [0, -56, 0])), new CaseRange.ptr(504, 543, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(544, 544, $toNativeArray($kindInt32, [0, -130, 0])), new CaseRange.ptr(546, 563, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(570, 570, $toNativeArray($kindInt32, [0, 10795, 0])), new CaseRange.ptr(571, 572, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(573, 573, $toNativeArray($kindInt32, [0, -163, 0])), new CaseRange.ptr(574, 574, $toNativeArray($kindInt32, [0, 10792, 0])), new CaseRange.ptr(575, 576, $toNativeArray($kindInt32, [10815, 0, 10815])), new CaseRange.ptr(577, 578, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(579, 579, $toNativeArray($kindInt32, [0, -195, 0])), new CaseRange.ptr(580, 580, $toNativeArray($kindInt32, [0, 69, 0])), new CaseRange.ptr(581, 581, $toNativeArray($kindInt32, [0, 71, 0])), new CaseRange.ptr(582, 591, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(592, 592, $toNativeArray($kindInt32, [10783, 0, 10783])), new CaseRange.ptr(593, 593, $toNativeArray($kindInt32, [10780, 0, 10780])), new CaseRange.ptr(594, 594, $toNativeArray($kindInt32, [10782, 0, 10782])), new CaseRange.ptr(595, 595, $toNativeArray($kindInt32, [-210, 0, -210])), new CaseRange.ptr(596, 596, $toNativeArray($kindInt32, [-206, 0, -206])), new CaseRange.ptr(598, 599, $toNativeArray($kindInt32, [-205, 0, -205])), new CaseRange.ptr(601, 601, $toNativeArray($kindInt32, [-202, 0, -202])), new CaseRange.ptr(603, 603, $toNativeArray($kindInt32, [-203, 0, -203])), new CaseRange.ptr(604, 604, $toNativeArray($kindInt32, [42319, 0, 42319])), new CaseRange.ptr(608, 608, $toNativeArray($kindInt32, [-205, 0, -205])), new CaseRange.ptr(609, 609, $toNativeArray($kindInt32, [42315, 0, 42315])), new CaseRange.ptr(611, 611, $toNativeArray($kindInt32, [-207, 0, -207])), new CaseRange.ptr(613, 613, $toNativeArray($kindInt32, [42280, 0, 42280])), new CaseRange.ptr(614, 614, $toNativeArray($kindInt32, [42308, 0, 42308])), new CaseRange.ptr(616, 616, $toNativeArray($kindInt32, [-209, 0, -209])), new CaseRange.ptr(617, 617, $toNativeArray($kindInt32, [-211, 0, -211])), new CaseRange.ptr(618, 618, $toNativeArray($kindInt32, [42308, 0, 42308])), new CaseRange.ptr(619, 619, $toNativeArray($kindInt32, [10743, 0, 10743])), new CaseRange.ptr(620, 620, $toNativeArray($kindInt32, [42305, 0, 42305])), new CaseRange.ptr(623, 623, $toNativeArray($kindInt32, [-211, 0, -211])), new CaseRange.ptr(625, 625, $toNativeArray($kindInt32, [10749, 0, 10749])), new CaseRange.ptr(626, 626, $toNativeArray($kindInt32, [-213, 0, -213])), new CaseRange.ptr(629, 629, $toNativeArray($kindInt32, [-214, 0, -214])), new CaseRange.ptr(637, 637, $toNativeArray($kindInt32, [10727, 0, 10727])), new CaseRange.ptr(640, 640, $toNativeArray($kindInt32, [-218, 0, -218])), new CaseRange.ptr(643, 643, $toNativeArray($kindInt32, [-218, 0, -218])), new CaseRange.ptr(647, 647, $toNativeArray($kindInt32, [42282, 0, 42282])), new CaseRange.ptr(648, 648, $toNativeArray($kindInt32, [-218, 0, -218])), new CaseRange.ptr(649, 649, $toNativeArray($kindInt32, [-69, 0, -69])), new CaseRange.ptr(650, 651, $toNativeArray($kindInt32, [-217, 0, -217])), new CaseRange.ptr(652, 652, $toNativeArray($kindInt32, [-71, 0, -71])), new CaseRange.ptr(658, 658, $toNativeArray($kindInt32, [-219, 0, -219])), new CaseRange.ptr(669, 669, $toNativeArray($kindInt32, [42261, 0, 42261])), new CaseRange.ptr(670, 670, $toNativeArray($kindInt32, [42258, 0, 42258])), new CaseRange.ptr(837, 837, $toNativeArray($kindInt32, [84, 0, 84])), new CaseRange.ptr(880, 883, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(886, 887, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(891, 893, $toNativeArray($kindInt32, [130, 0, 130])), new CaseRange.ptr(895, 895, $toNativeArray($kindInt32, [0, 116, 0])), new CaseRange.ptr(902, 902, $toNativeArray($kindInt32, [0, 38, 0])), new CaseRange.ptr(904, 906, $toNativeArray($kindInt32, [0, 37, 0])), new CaseRange.ptr(908, 908, $toNativeArray($kindInt32, [0, 64, 0])), new CaseRange.ptr(910, 911, $toNativeArray($kindInt32, [0, 63, 0])), new CaseRange.ptr(913, 929, $toNativeArray($kindInt32, [0, 32, 0])), new CaseRange.ptr(931, 939, $toNativeArray($kindInt32, [0, 32, 0])), new CaseRange.ptr(940, 940, $toNativeArray($kindInt32, [-38, 0, -38])), new CaseRange.ptr(941, 943, $toNativeArray($kindInt32, [-37, 0, -37])), new CaseRange.ptr(945, 961, $toNativeArray($kindInt32, [-32, 0, -32])), new CaseRange.ptr(962, 962, $toNativeArray($kindInt32, [-31, 0, -31])), new CaseRange.ptr(963, 971, $toNativeArray($kindInt32, [-32, 0, -32])), new CaseRange.ptr(972, 972, $toNativeArray($kindInt32, [-64, 0, -64])), new CaseRange.ptr(973, 974, $toNativeArray($kindInt32, [-63, 0, -63])), new CaseRange.ptr(975, 975, $toNativeArray($kindInt32, [0, 8, 0])), new CaseRange.ptr(976, 976, $toNativeArray($kindInt32, [-62, 0, -62])), new CaseRange.ptr(977, 977, $toNativeArray($kindInt32, [-57, 0, -57])), new CaseRange.ptr(981, 981, $toNativeArray($kindInt32, [-47, 0, -47])), new CaseRange.ptr(982, 982, $toNativeArray($kindInt32, [-54, 0, -54])), new CaseRange.ptr(983, 983, $toNativeArray($kindInt32, [-8, 0, -8])), new CaseRange.ptr(984, 1007, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(1008, 1008, $toNativeArray($kindInt32, [-86, 0, -86])), new CaseRange.ptr(1009, 1009, $toNativeArray($kindInt32, [-80, 0, -80])), new CaseRange.ptr(1010, 1010, $toNativeArray($kindInt32, [7, 0, 7])), new CaseRange.ptr(1011, 1011, $toNativeArray($kindInt32, [-116, 0, -116])), new CaseRange.ptr(1012, 1012, $toNativeArray($kindInt32, [0, -60, 0])), new CaseRange.ptr(1013, 1013, $toNativeArray($kindInt32, [-96, 0, -96])), new CaseRange.ptr(1015, 1016, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(1017, 1017, $toNativeArray($kindInt32, [0, -7, 0])), new CaseRange.ptr(1018, 1019, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(1021, 1023, $toNativeArray($kindInt32, [0, -130, 0])), new CaseRange.ptr(1024, 1039, $toNativeArray($kindInt32, [0, 80, 0])), new CaseRange.ptr(1040, 1071, $toNativeArray($kindInt32, [0, 32, 0])), new CaseRange.ptr(1072, 1103, $toNativeArray($kindInt32, [-32, 0, -32])), new CaseRange.ptr(1104, 1119, $toNativeArray($kindInt32, [-80, 0, -80])), new CaseRange.ptr(1120, 1153, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(1162, 1215, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(1216, 1216, $toNativeArray($kindInt32, [0, 15, 0])), new CaseRange.ptr(1217, 1230, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(1231, 1231, $toNativeArray($kindInt32, [-15, 0, -15])), new CaseRange.ptr(1232, 1327, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(1329, 1366, $toNativeArray($kindInt32, [0, 48, 0])), new CaseRange.ptr(1377, 1414, $toNativeArray($kindInt32, [-48, 0, -48])), new CaseRange.ptr(4256, 4293, $toNativeArray($kindInt32, [0, 7264, 0])), new CaseRange.ptr(4295, 4295, $toNativeArray($kindInt32, [0, 7264, 0])), new CaseRange.ptr(4301, 4301, $toNativeArray($kindInt32, [0, 7264, 0])), new CaseRange.ptr(5024, 5103, $toNativeArray($kindInt32, [0, 38864, 0])), new CaseRange.ptr(5104, 5109, $toNativeArray($kindInt32, [0, 8, 0])), new CaseRange.ptr(5112, 5117, $toNativeArray($kindInt32, [-8, 0, -8])), new CaseRange.ptr(7296, 7296, $toNativeArray($kindInt32, [-6254, 0, -6254])), new CaseRange.ptr(7297, 7297, $toNativeArray($kindInt32, [-6253, 0, -6253])), new CaseRange.ptr(7298, 7298, $toNativeArray($kindInt32, [-6244, 0, -6244])), new CaseRange.ptr(7299, 7300, $toNativeArray($kindInt32, [-6242, 0, -6242])), new CaseRange.ptr(7301, 7301, $toNativeArray($kindInt32, [-6243, 0, -6243])), new CaseRange.ptr(7302, 7302, $toNativeArray($kindInt32, [-6236, 0, -6236])), new CaseRange.ptr(7303, 7303, $toNativeArray($kindInt32, [-6181, 0, -6181])), new CaseRange.ptr(7304, 7304, $toNativeArray($kindInt32, [35266, 0, 35266])), new CaseRange.ptr(7545, 7545, $toNativeArray($kindInt32, [35332, 0, 35332])), new CaseRange.ptr(7549, 7549, $toNativeArray($kindInt32, [3814, 0, 3814])), new CaseRange.ptr(7680, 7829, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(7835, 7835, $toNativeArray($kindInt32, [-59, 0, -59])), new CaseRange.ptr(7838, 7838, $toNativeArray($kindInt32, [0, -7615, 0])), new CaseRange.ptr(7840, 7935, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(7936, 7943, $toNativeArray($kindInt32, [8, 0, 8])), new CaseRange.ptr(7944, 7951, $toNativeArray($kindInt32, [0, -8, 0])), new CaseRange.ptr(7952, 7957, $toNativeArray($kindInt32, [8, 0, 8])), new CaseRange.ptr(7960, 7965, $toNativeArray($kindInt32, [0, -8, 0])), new CaseRange.ptr(7968, 7975, $toNativeArray($kindInt32, [8, 0, 8])), new CaseRange.ptr(7976, 7983, $toNativeArray($kindInt32, [0, -8, 0])), new CaseRange.ptr(7984, 7991, $toNativeArray($kindInt32, [8, 0, 8])), new CaseRange.ptr(7992, 7999, $toNativeArray($kindInt32, [0, -8, 0])), new CaseRange.ptr(8000, 8005, $toNativeArray($kindInt32, [8, 0, 8])), new CaseRange.ptr(8008, 8013, $toNativeArray($kindInt32, [0, -8, 0])), new CaseRange.ptr(8017, 8017, $toNativeArray($kindInt32, [8, 0, 8])), new CaseRange.ptr(8019, 8019, $toNativeArray($kindInt32, [8, 0, 8])), new CaseRange.ptr(8021, 8021, $toNativeArray($kindInt32, [8, 0, 8])), new CaseRange.ptr(8023, 8023, $toNativeArray($kindInt32, [8, 0, 8])), new CaseRange.ptr(8025, 8025, $toNativeArray($kindInt32, [0, -8, 0])), new CaseRange.ptr(8027, 8027, $toNativeArray($kindInt32, [0, -8, 0])), new CaseRange.ptr(8029, 8029, $toNativeArray($kindInt32, [0, -8, 0])), new CaseRange.ptr(8031, 8031, $toNativeArray($kindInt32, [0, -8, 0])), new CaseRange.ptr(8032, 8039, $toNativeArray($kindInt32, [8, 0, 8])), new CaseRange.ptr(8040, 8047, $toNativeArray($kindInt32, [0, -8, 0])), new CaseRange.ptr(8048, 8049, $toNativeArray($kindInt32, [74, 0, 74])), new CaseRange.ptr(8050, 8053, $toNativeArray($kindInt32, [86, 0, 86])), new CaseRange.ptr(8054, 8055, $toNativeArray($kindInt32, [100, 0, 100])), new CaseRange.ptr(8056, 8057, $toNativeArray($kindInt32, [128, 0, 128])), new CaseRange.ptr(8058, 8059, $toNativeArray($kindInt32, [112, 0, 112])), new CaseRange.ptr(8060, 8061, $toNativeArray($kindInt32, [126, 0, 126])), new CaseRange.ptr(8064, 8071, $toNativeArray($kindInt32, [8, 0, 8])), new CaseRange.ptr(8072, 8079, $toNativeArray($kindInt32, [0, -8, 0])), new CaseRange.ptr(8080, 8087, $toNativeArray($kindInt32, [8, 0, 8])), new CaseRange.ptr(8088, 8095, $toNativeArray($kindInt32, [0, -8, 0])), new CaseRange.ptr(8096, 8103, $toNativeArray($kindInt32, [8, 0, 8])), new CaseRange.ptr(8104, 8111, $toNativeArray($kindInt32, [0, -8, 0])), new CaseRange.ptr(8112, 8113, $toNativeArray($kindInt32, [8, 0, 8])), new CaseRange.ptr(8115, 8115, $toNativeArray($kindInt32, [9, 0, 9])), new CaseRange.ptr(8120, 8121, $toNativeArray($kindInt32, [0, -8, 0])), new CaseRange.ptr(8122, 8123, $toNativeArray($kindInt32, [0, -74, 0])), new CaseRange.ptr(8124, 8124, $toNativeArray($kindInt32, [0, -9, 0])), new CaseRange.ptr(8126, 8126, $toNativeArray($kindInt32, [-7205, 0, -7205])), new CaseRange.ptr(8131, 8131, $toNativeArray($kindInt32, [9, 0, 9])), new CaseRange.ptr(8136, 8139, $toNativeArray($kindInt32, [0, -86, 0])), new CaseRange.ptr(8140, 8140, $toNativeArray($kindInt32, [0, -9, 0])), new CaseRange.ptr(8144, 8145, $toNativeArray($kindInt32, [8, 0, 8])), new CaseRange.ptr(8152, 8153, $toNativeArray($kindInt32, [0, -8, 0])), new CaseRange.ptr(8154, 8155, $toNativeArray($kindInt32, [0, -100, 0])), new CaseRange.ptr(8160, 8161, $toNativeArray($kindInt32, [8, 0, 8])), new CaseRange.ptr(8165, 8165, $toNativeArray($kindInt32, [7, 0, 7])), new CaseRange.ptr(8168, 8169, $toNativeArray($kindInt32, [0, -8, 0])), new CaseRange.ptr(8170, 8171, $toNativeArray($kindInt32, [0, -112, 0])), new CaseRange.ptr(8172, 8172, $toNativeArray($kindInt32, [0, -7, 0])), new CaseRange.ptr(8179, 8179, $toNativeArray($kindInt32, [9, 0, 9])), new CaseRange.ptr(8184, 8185, $toNativeArray($kindInt32, [0, -128, 0])), new CaseRange.ptr(8186, 8187, $toNativeArray($kindInt32, [0, -126, 0])), new CaseRange.ptr(8188, 8188, $toNativeArray($kindInt32, [0, -9, 0])), new CaseRange.ptr(8486, 8486, $toNativeArray($kindInt32, [0, -7517, 0])), new CaseRange.ptr(8490, 8490, $toNativeArray($kindInt32, [0, -8383, 0])), new CaseRange.ptr(8491, 8491, $toNativeArray($kindInt32, [0, -8262, 0])), new CaseRange.ptr(8498, 8498, $toNativeArray($kindInt32, [0, 28, 0])), new CaseRange.ptr(8526, 8526, $toNativeArray($kindInt32, [-28, 0, -28])), new CaseRange.ptr(8544, 8559, $toNativeArray($kindInt32, [0, 16, 0])), new CaseRange.ptr(8560, 8575, $toNativeArray($kindInt32, [-16, 0, -16])), new CaseRange.ptr(8579, 8580, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(9398, 9423, $toNativeArray($kindInt32, [0, 26, 0])), new CaseRange.ptr(9424, 9449, $toNativeArray($kindInt32, [-26, 0, -26])), new CaseRange.ptr(11264, 11310, $toNativeArray($kindInt32, [0, 48, 0])), new CaseRange.ptr(11312, 11358, $toNativeArray($kindInt32, [-48, 0, -48])), new CaseRange.ptr(11360, 11361, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(11362, 11362, $toNativeArray($kindInt32, [0, -10743, 0])), new CaseRange.ptr(11363, 11363, $toNativeArray($kindInt32, [0, -3814, 0])), new CaseRange.ptr(11364, 11364, $toNativeArray($kindInt32, [0, -10727, 0])), new CaseRange.ptr(11365, 11365, $toNativeArray($kindInt32, [-10795, 0, -10795])), new CaseRange.ptr(11366, 11366, $toNativeArray($kindInt32, [-10792, 0, -10792])), new CaseRange.ptr(11367, 11372, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(11373, 11373, $toNativeArray($kindInt32, [0, -10780, 0])), new CaseRange.ptr(11374, 11374, $toNativeArray($kindInt32, [0, -10749, 0])), new CaseRange.ptr(11375, 11375, $toNativeArray($kindInt32, [0, -10783, 0])), new CaseRange.ptr(11376, 11376, $toNativeArray($kindInt32, [0, -10782, 0])), new CaseRange.ptr(11378, 11379, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(11381, 11382, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(11390, 11391, $toNativeArray($kindInt32, [0, -10815, 0])), new CaseRange.ptr(11392, 11491, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(11499, 11502, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(11506, 11507, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(11520, 11557, $toNativeArray($kindInt32, [-7264, 0, -7264])), new CaseRange.ptr(11559, 11559, $toNativeArray($kindInt32, [-7264, 0, -7264])), new CaseRange.ptr(11565, 11565, $toNativeArray($kindInt32, [-7264, 0, -7264])), new CaseRange.ptr(42560, 42605, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(42624, 42651, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(42786, 42799, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(42802, 42863, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(42873, 42876, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(42877, 42877, $toNativeArray($kindInt32, [0, -35332, 0])), new CaseRange.ptr(42878, 42887, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(42891, 42892, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(42893, 42893, $toNativeArray($kindInt32, [0, -42280, 0])), new CaseRange.ptr(42896, 42899, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(42902, 42921, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(42922, 42922, $toNativeArray($kindInt32, [0, -42308, 0])), new CaseRange.ptr(42923, 42923, $toNativeArray($kindInt32, [0, -42319, 0])), new CaseRange.ptr(42924, 42924, $toNativeArray($kindInt32, [0, -42315, 0])), new CaseRange.ptr(42925, 42925, $toNativeArray($kindInt32, [0, -42305, 0])), new CaseRange.ptr(42926, 42926, $toNativeArray($kindInt32, [0, -42308, 0])), new CaseRange.ptr(42928, 42928, $toNativeArray($kindInt32, [0, -42258, 0])), new CaseRange.ptr(42929, 42929, $toNativeArray($kindInt32, [0, -42282, 0])), new CaseRange.ptr(42930, 42930, $toNativeArray($kindInt32, [0, -42261, 0])), new CaseRange.ptr(42931, 42931, $toNativeArray($kindInt32, [0, 928, 0])), new CaseRange.ptr(42932, 42935, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(43859, 43859, $toNativeArray($kindInt32, [-928, 0, -928])), new CaseRange.ptr(43888, 43967, $toNativeArray($kindInt32, [-38864, 0, -38864])), new CaseRange.ptr(65313, 65338, $toNativeArray($kindInt32, [0, 32, 0])), new CaseRange.ptr(65345, 65370, $toNativeArray($kindInt32, [-32, 0, -32])), new CaseRange.ptr(66560, 66599, $toNativeArray($kindInt32, [0, 40, 0])), new CaseRange.ptr(66600, 66639, $toNativeArray($kindInt32, [-40, 0, -40])), new CaseRange.ptr(66736, 66771, $toNativeArray($kindInt32, [0, 40, 0])), new CaseRange.ptr(66776, 66811, $toNativeArray($kindInt32, [-40, 0, -40])), new CaseRange.ptr(68736, 68786, $toNativeArray($kindInt32, [0, 64, 0])), new CaseRange.ptr(68800, 68850, $toNativeArray($kindInt32, [-64, 0, -64])), new CaseRange.ptr(71840, 71871, $toNativeArray($kindInt32, [0, 32, 0])), new CaseRange.ptr(71872, 71903, $toNativeArray($kindInt32, [-32, 0, -32])), new CaseRange.ptr(125184, 125217, $toNativeArray($kindInt32, [0, 34, 0])), new CaseRange.ptr(125218, 125251, $toNativeArray($kindInt32, [-34, 0, -34]))]);
  4557  		$pkg.CaseRanges = _CaseRanges;
  4558  		properties = $toNativeArray($kindUint8, [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 144, 130, 130, 130, 136, 130, 130, 130, 130, 130, 130, 136, 130, 130, 130, 130, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 130, 130, 136, 136, 136, 130, 130, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 130, 130, 130, 136, 130, 136, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 130, 136, 130, 136, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 130, 136, 136, 136, 136, 136, 130, 136, 136, 224, 130, 136, 0, 136, 136, 136, 136, 132, 132, 136, 192, 130, 130, 136, 132, 224, 130, 132, 132, 132, 130, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 136, 160, 160, 160, 160, 160, 160, 160, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 136, 192, 192, 192, 192, 192, 192, 192, 192]);
  4559  		asciiFold = $toNativeArray($kindUint16, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 91, 92, 93, 94, 95, 96, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 8490, 76, 77, 78, 79, 80, 81, 82, 383, 84, 85, 86, 87, 88, 89, 90, 123, 124, 125, 126, 127]);
  4560  		caseOrbit = new sliceType$4([new foldPair.ptr(75, 107), new foldPair.ptr(83, 115), new foldPair.ptr(107, 8490), new foldPair.ptr(115, 383), new foldPair.ptr(181, 924), new foldPair.ptr(197, 229), new foldPair.ptr(223, 7838), new foldPair.ptr(229, 8491), new foldPair.ptr(304, 304), new foldPair.ptr(305, 305), new foldPair.ptr(383, 83), new foldPair.ptr(452, 453), new foldPair.ptr(453, 454), new foldPair.ptr(454, 452), new foldPair.ptr(455, 456), new foldPair.ptr(456, 457), new foldPair.ptr(457, 455), new foldPair.ptr(458, 459), new foldPair.ptr(459, 460), new foldPair.ptr(460, 458), new foldPair.ptr(497, 498), new foldPair.ptr(498, 499), new foldPair.ptr(499, 497), new foldPair.ptr(837, 921), new foldPair.ptr(914, 946), new foldPair.ptr(917, 949), new foldPair.ptr(920, 952), new foldPair.ptr(921, 953), new foldPair.ptr(922, 954), new foldPair.ptr(924, 956), new foldPair.ptr(928, 960), new foldPair.ptr(929, 961), new foldPair.ptr(931, 962), new foldPair.ptr(934, 966), new foldPair.ptr(937, 969), new foldPair.ptr(946, 976), new foldPair.ptr(949, 1013), new foldPair.ptr(952, 977), new foldPair.ptr(953, 8126), new foldPair.ptr(954, 1008), new foldPair.ptr(956, 181), new foldPair.ptr(960, 982), new foldPair.ptr(961, 1009), new foldPair.ptr(962, 963), new foldPair.ptr(963, 931), new foldPair.ptr(966, 981), new foldPair.ptr(969, 8486), new foldPair.ptr(976, 914), new foldPair.ptr(977, 1012), new foldPair.ptr(981, 934), new foldPair.ptr(982, 928), new foldPair.ptr(1008, 922), new foldPair.ptr(1009, 929), new foldPair.ptr(1012, 920), new foldPair.ptr(1013, 917), new foldPair.ptr(1042, 1074), new foldPair.ptr(1044, 1076), new foldPair.ptr(1054, 1086), new foldPair.ptr(1057, 1089), new foldPair.ptr(1058, 1090), new foldPair.ptr(1066, 1098), new foldPair.ptr(1074, 7296), new foldPair.ptr(1076, 7297), new foldPair.ptr(1086, 7298), new foldPair.ptr(1089, 7299), new foldPair.ptr(1090, 7300), new foldPair.ptr(1098, 7302), new foldPair.ptr(1122, 1123), new foldPair.ptr(1123, 7303), new foldPair.ptr(7296, 1042), new foldPair.ptr(7297, 1044), new foldPair.ptr(7298, 1054), new foldPair.ptr(7299, 1057), new foldPair.ptr(7300, 7301), new foldPair.ptr(7301, 1058), new foldPair.ptr(7302, 1066), new foldPair.ptr(7303, 1122), new foldPair.ptr(7304, 42570), new foldPair.ptr(7776, 7777), new foldPair.ptr(7777, 7835), new foldPair.ptr(7835, 7776), new foldPair.ptr(7838, 223), new foldPair.ptr(8126, 837), new foldPair.ptr(8486, 937), new foldPair.ptr(8490, 75), new foldPair.ptr(8491, 197), new foldPair.ptr(42570, 42571), new foldPair.ptr(42571, 7304)]);
  4561  		/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
  4562  	};
  4563  	$pkg.$init = $init;
  4564  	return $pkg;
  4565  })();
  4566  $packages["unicode/utf8"] = (function() {
  4567  	var $pkg = {}, $init, acceptRange, first, acceptRanges, FullRune, DecodeRune, DecodeRuneInString, DecodeLastRune, DecodeLastRuneInString, RuneLen, EncodeRune, RuneCount, RuneCountInString, RuneStart, Valid, ValidString, ValidRune;
  4568  	acceptRange = $pkg.acceptRange = $newType(0, $kindStruct, "utf8.acceptRange", true, "unicode/utf8", false, function(lo_, hi_) {
  4569  		this.$val = this;
  4570  		if (arguments.length === 0) {
  4571  			this.lo = 0;
  4572  			this.hi = 0;
  4573  			return;
  4574  		}
  4575  		this.lo = lo_;
  4576  		this.hi = hi_;
  4577  	});
  4578  	FullRune = function(p) {
  4579  		var accept, n, p, x, x$1, x$2;
  4580  		n = p.$length;
  4581  		if (n === 0) {
  4582  			return false;
  4583  		}
  4584  		x$1 = (x = (0 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 0]), ((x < 0 || x >= first.length) ? ($throwRuntimeError("index out of range"), undefined) : first[x]));
  4585  		if (n >= ((((x$1 & 7) >>> 0) >> 0))) {
  4586  			return true;
  4587  		}
  4588  		accept = $clone((x$2 = x$1 >>> 4 << 24 >>> 24, ((x$2 < 0 || x$2 >= acceptRanges.length) ? ($throwRuntimeError("index out of range"), undefined) : acceptRanges[x$2])), acceptRange);
  4589  		if (n > 1 && ((1 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 1]) < accept.lo || accept.hi < (1 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 1]))) {
  4590  			return true;
  4591  		} else if (n > 2 && ((2 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 2]) < 128 || 191 < (2 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 2]))) {
  4592  			return true;
  4593  		}
  4594  		return false;
  4595  	};
  4596  	$pkg.FullRune = FullRune;
  4597  	DecodeRune = function(p) {
  4598  		var _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$14, _tmp$15, _tmp$16, _tmp$17, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, accept, b1, b2, b3, mask, n, p, p0, r, size, sz, x, x$1;
  4599  		r = 0;
  4600  		size = 0;
  4601  		n = p.$length;
  4602  		if (n < 1) {
  4603  			_tmp = 65533;
  4604  			_tmp$1 = 0;
  4605  			r = _tmp;
  4606  			size = _tmp$1;
  4607  			return [r, size];
  4608  		}
  4609  		p0 = (0 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 0]);
  4610  		x = ((p0 < 0 || p0 >= first.length) ? ($throwRuntimeError("index out of range"), undefined) : first[p0]);
  4611  		if (x >= 240) {
  4612  			mask = (((x >> 0)) << 31 >> 0) >> 31 >> 0;
  4613  			_tmp$2 = (((((0 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 0]) >> 0)) & ~mask) >> 0) | (65533 & mask);
  4614  			_tmp$3 = 1;
  4615  			r = _tmp$2;
  4616  			size = _tmp$3;
  4617  			return [r, size];
  4618  		}
  4619  		sz = (x & 7) >>> 0;
  4620  		accept = $clone((x$1 = x >>> 4 << 24 >>> 24, ((x$1 < 0 || x$1 >= acceptRanges.length) ? ($throwRuntimeError("index out of range"), undefined) : acceptRanges[x$1])), acceptRange);
  4621  		if (n < ((sz >> 0))) {
  4622  			_tmp$4 = 65533;
  4623  			_tmp$5 = 1;
  4624  			r = _tmp$4;
  4625  			size = _tmp$5;
  4626  			return [r, size];
  4627  		}
  4628  		b1 = (1 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 1]);
  4629  		if (b1 < accept.lo || accept.hi < b1) {
  4630  			_tmp$6 = 65533;
  4631  			_tmp$7 = 1;
  4632  			r = _tmp$6;
  4633  			size = _tmp$7;
  4634  			return [r, size];
  4635  		}
  4636  		if (sz === 2) {
  4637  			_tmp$8 = (((((p0 & 31) >>> 0) >> 0)) << 6 >> 0) | ((((b1 & 63) >>> 0) >> 0));
  4638  			_tmp$9 = 2;
  4639  			r = _tmp$8;
  4640  			size = _tmp$9;
  4641  			return [r, size];
  4642  		}
  4643  		b2 = (2 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 2]);
  4644  		if (b2 < 128 || 191 < b2) {
  4645  			_tmp$10 = 65533;
  4646  			_tmp$11 = 1;
  4647  			r = _tmp$10;
  4648  			size = _tmp$11;
  4649  			return [r, size];
  4650  		}
  4651  		if (sz === 3) {
  4652  			_tmp$12 = ((((((p0 & 15) >>> 0) >> 0)) << 12 >> 0) | (((((b1 & 63) >>> 0) >> 0)) << 6 >> 0)) | ((((b2 & 63) >>> 0) >> 0));
  4653  			_tmp$13 = 3;
  4654  			r = _tmp$12;
  4655  			size = _tmp$13;
  4656  			return [r, size];
  4657  		}
  4658  		b3 = (3 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 3]);
  4659  		if (b3 < 128 || 191 < b3) {
  4660  			_tmp$14 = 65533;
  4661  			_tmp$15 = 1;
  4662  			r = _tmp$14;
  4663  			size = _tmp$15;
  4664  			return [r, size];
  4665  		}
  4666  		_tmp$16 = (((((((p0 & 7) >>> 0) >> 0)) << 18 >> 0) | (((((b1 & 63) >>> 0) >> 0)) << 12 >> 0)) | (((((b2 & 63) >>> 0) >> 0)) << 6 >> 0)) | ((((b3 & 63) >>> 0) >> 0));
  4667  		_tmp$17 = 4;
  4668  		r = _tmp$16;
  4669  		size = _tmp$17;
  4670  		return [r, size];
  4671  	};
  4672  	$pkg.DecodeRune = DecodeRune;
  4673  	DecodeRuneInString = function(s) {
  4674  		var _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$14, _tmp$15, _tmp$16, _tmp$17, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, accept, mask, n, r, s, s0, s1, s2, s3, size, sz, x, x$1;
  4675  		r = 0;
  4676  		size = 0;
  4677  		n = s.length;
  4678  		if (n < 1) {
  4679  			_tmp = 65533;
  4680  			_tmp$1 = 0;
  4681  			r = _tmp;
  4682  			size = _tmp$1;
  4683  			return [r, size];
  4684  		}
  4685  		s0 = s.charCodeAt(0);
  4686  		x = ((s0 < 0 || s0 >= first.length) ? ($throwRuntimeError("index out of range"), undefined) : first[s0]);
  4687  		if (x >= 240) {
  4688  			mask = (((x >> 0)) << 31 >> 0) >> 31 >> 0;
  4689  			_tmp$2 = ((((s.charCodeAt(0) >> 0)) & ~mask) >> 0) | (65533 & mask);
  4690  			_tmp$3 = 1;
  4691  			r = _tmp$2;
  4692  			size = _tmp$3;
  4693  			return [r, size];
  4694  		}
  4695  		sz = (x & 7) >>> 0;
  4696  		accept = $clone((x$1 = x >>> 4 << 24 >>> 24, ((x$1 < 0 || x$1 >= acceptRanges.length) ? ($throwRuntimeError("index out of range"), undefined) : acceptRanges[x$1])), acceptRange);
  4697  		if (n < ((sz >> 0))) {
  4698  			_tmp$4 = 65533;
  4699  			_tmp$5 = 1;
  4700  			r = _tmp$4;
  4701  			size = _tmp$5;
  4702  			return [r, size];
  4703  		}
  4704  		s1 = s.charCodeAt(1);
  4705  		if (s1 < accept.lo || accept.hi < s1) {
  4706  			_tmp$6 = 65533;
  4707  			_tmp$7 = 1;
  4708  			r = _tmp$6;
  4709  			size = _tmp$7;
  4710  			return [r, size];
  4711  		}
  4712  		if (sz === 2) {
  4713  			_tmp$8 = (((((s0 & 31) >>> 0) >> 0)) << 6 >> 0) | ((((s1 & 63) >>> 0) >> 0));
  4714  			_tmp$9 = 2;
  4715  			r = _tmp$8;
  4716  			size = _tmp$9;
  4717  			return [r, size];
  4718  		}
  4719  		s2 = s.charCodeAt(2);
  4720  		if (s2 < 128 || 191 < s2) {
  4721  			_tmp$10 = 65533;
  4722  			_tmp$11 = 1;
  4723  			r = _tmp$10;
  4724  			size = _tmp$11;
  4725  			return [r, size];
  4726  		}
  4727  		if (sz === 3) {
  4728  			_tmp$12 = ((((((s0 & 15) >>> 0) >> 0)) << 12 >> 0) | (((((s1 & 63) >>> 0) >> 0)) << 6 >> 0)) | ((((s2 & 63) >>> 0) >> 0));
  4729  			_tmp$13 = 3;
  4730  			r = _tmp$12;
  4731  			size = _tmp$13;
  4732  			return [r, size];
  4733  		}
  4734  		s3 = s.charCodeAt(3);
  4735  		if (s3 < 128 || 191 < s3) {
  4736  			_tmp$14 = 65533;
  4737  			_tmp$15 = 1;
  4738  			r = _tmp$14;
  4739  			size = _tmp$15;
  4740  			return [r, size];
  4741  		}
  4742  		_tmp$16 = (((((((s0 & 7) >>> 0) >> 0)) << 18 >> 0) | (((((s1 & 63) >>> 0) >> 0)) << 12 >> 0)) | (((((s2 & 63) >>> 0) >> 0)) << 6 >> 0)) | ((((s3 & 63) >>> 0) >> 0));
  4743  		_tmp$17 = 4;
  4744  		r = _tmp$16;
  4745  		size = _tmp$17;
  4746  		return [r, size];
  4747  	};
  4748  	$pkg.DecodeRuneInString = DecodeRuneInString;
  4749  	DecodeLastRune = function(p) {
  4750  		var _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tuple, end, lim, p, r, size, start;
  4751  		r = 0;
  4752  		size = 0;
  4753  		end = p.$length;
  4754  		if (end === 0) {
  4755  			_tmp = 65533;
  4756  			_tmp$1 = 0;
  4757  			r = _tmp;
  4758  			size = _tmp$1;
  4759  			return [r, size];
  4760  		}
  4761  		start = end - 1 >> 0;
  4762  		r = ((((start < 0 || start >= p.$length) ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + start]) >> 0));
  4763  		if (r < 128) {
  4764  			_tmp$2 = r;
  4765  			_tmp$3 = 1;
  4766  			r = _tmp$2;
  4767  			size = _tmp$3;
  4768  			return [r, size];
  4769  		}
  4770  		lim = end - 4 >> 0;
  4771  		if (lim < 0) {
  4772  			lim = 0;
  4773  		}
  4774  		start = start - (1) >> 0;
  4775  		while (true) {
  4776  			if (!(start >= lim)) { break; }
  4777  			if (RuneStart(((start < 0 || start >= p.$length) ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + start]))) {
  4778  				break;
  4779  			}
  4780  			start = start - (1) >> 0;
  4781  		}
  4782  		if (start < 0) {
  4783  			start = 0;
  4784  		}
  4785  		_tuple = DecodeRune($subslice(p, start, end));
  4786  		r = _tuple[0];
  4787  		size = _tuple[1];
  4788  		if (!(((start + size >> 0) === end))) {
  4789  			_tmp$4 = 65533;
  4790  			_tmp$5 = 1;
  4791  			r = _tmp$4;
  4792  			size = _tmp$5;
  4793  			return [r, size];
  4794  		}
  4795  		_tmp$6 = r;
  4796  		_tmp$7 = size;
  4797  		r = _tmp$6;
  4798  		size = _tmp$7;
  4799  		return [r, size];
  4800  	};
  4801  	$pkg.DecodeLastRune = DecodeLastRune;
  4802  	DecodeLastRuneInString = function(s) {
  4803  		var _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tuple, end, lim, r, s, size, start;
  4804  		r = 0;
  4805  		size = 0;
  4806  		end = s.length;
  4807  		if (end === 0) {
  4808  			_tmp = 65533;
  4809  			_tmp$1 = 0;
  4810  			r = _tmp;
  4811  			size = _tmp$1;
  4812  			return [r, size];
  4813  		}
  4814  		start = end - 1 >> 0;
  4815  		r = ((s.charCodeAt(start) >> 0));
  4816  		if (r < 128) {
  4817  			_tmp$2 = r;
  4818  			_tmp$3 = 1;
  4819  			r = _tmp$2;
  4820  			size = _tmp$3;
  4821  			return [r, size];
  4822  		}
  4823  		lim = end - 4 >> 0;
  4824  		if (lim < 0) {
  4825  			lim = 0;
  4826  		}
  4827  		start = start - (1) >> 0;
  4828  		while (true) {
  4829  			if (!(start >= lim)) { break; }
  4830  			if (RuneStart(s.charCodeAt(start))) {
  4831  				break;
  4832  			}
  4833  			start = start - (1) >> 0;
  4834  		}
  4835  		if (start < 0) {
  4836  			start = 0;
  4837  		}
  4838  		_tuple = DecodeRuneInString($substring(s, start, end));
  4839  		r = _tuple[0];
  4840  		size = _tuple[1];
  4841  		if (!(((start + size >> 0) === end))) {
  4842  			_tmp$4 = 65533;
  4843  			_tmp$5 = 1;
  4844  			r = _tmp$4;
  4845  			size = _tmp$5;
  4846  			return [r, size];
  4847  		}
  4848  		_tmp$6 = r;
  4849  		_tmp$7 = size;
  4850  		r = _tmp$6;
  4851  		size = _tmp$7;
  4852  		return [r, size];
  4853  	};
  4854  	$pkg.DecodeLastRuneInString = DecodeLastRuneInString;
  4855  	RuneLen = function(r) {
  4856  		var r;
  4857  		if (r < 0) {
  4858  			return -1;
  4859  		} else if (r <= 127) {
  4860  			return 1;
  4861  		} else if (r <= 2047) {
  4862  			return 2;
  4863  		} else if (55296 <= r && r <= 57343) {
  4864  			return -1;
  4865  		} else if (r <= 65535) {
  4866  			return 3;
  4867  		} else if (r <= 1114111) {
  4868  			return 4;
  4869  		}
  4870  		return -1;
  4871  	};
  4872  	$pkg.RuneLen = RuneLen;
  4873  	EncodeRune = function(p, r) {
  4874  		var i, p, r;
  4875  		i = ((r >>> 0));
  4876  		if (i <= 127) {
  4877  			(0 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 0] = ((r << 24 >>> 24)));
  4878  			return 1;
  4879  		} else if (i <= 2047) {
  4880  			$unused((1 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 1]));
  4881  			(0 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 0] = ((192 | (((r >> 6 >> 0) << 24 >>> 24))) >>> 0));
  4882  			(1 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 1] = ((128 | ((((r << 24 >>> 24)) & 63) >>> 0)) >>> 0));
  4883  			return 2;
  4884  		} else if ((i > 1114111) || (55296 <= i && i <= 57343)) {
  4885  			r = 65533;
  4886  			$unused((2 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 2]));
  4887  			(0 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 0] = ((224 | (((r >> 12 >> 0) << 24 >>> 24))) >>> 0));
  4888  			(1 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 1] = ((128 | (((((r >> 6 >> 0) << 24 >>> 24)) & 63) >>> 0)) >>> 0));
  4889  			(2 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 2] = ((128 | ((((r << 24 >>> 24)) & 63) >>> 0)) >>> 0));
  4890  			return 3;
  4891  		} else if (i <= 65535) {
  4892  			$unused((2 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 2]));
  4893  			(0 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 0] = ((224 | (((r >> 12 >> 0) << 24 >>> 24))) >>> 0));
  4894  			(1 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 1] = ((128 | (((((r >> 6 >> 0) << 24 >>> 24)) & 63) >>> 0)) >>> 0));
  4895  			(2 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 2] = ((128 | ((((r << 24 >>> 24)) & 63) >>> 0)) >>> 0));
  4896  			return 3;
  4897  		} else {
  4898  			$unused((3 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 3]));
  4899  			(0 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 0] = ((240 | (((r >> 18 >> 0) << 24 >>> 24))) >>> 0));
  4900  			(1 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 1] = ((128 | (((((r >> 12 >> 0) << 24 >>> 24)) & 63) >>> 0)) >>> 0));
  4901  			(2 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 2] = ((128 | (((((r >> 6 >> 0) << 24 >>> 24)) & 63) >>> 0)) >>> 0));
  4902  			(3 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 3] = ((128 | ((((r << 24 >>> 24)) & 63) >>> 0)) >>> 0));
  4903  			return 4;
  4904  		}
  4905  	};
  4906  	$pkg.EncodeRune = EncodeRune;
  4907  	RuneCount = function(p) {
  4908  		var accept, c, c$1, c$2, c$3, i, n, np, p, size, x, x$1, x$2, x$3, x$4;
  4909  		np = p.$length;
  4910  		n = 0;
  4911  		i = 0;
  4912  		while (true) {
  4913  			if (!(i < np)) { break; }
  4914  			n = n + (1) >> 0;
  4915  			c = ((i < 0 || i >= p.$length) ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + i]);
  4916  			if (c < 128) {
  4917  				i = i + (1) >> 0;
  4918  				continue;
  4919  			}
  4920  			x = ((c < 0 || c >= first.length) ? ($throwRuntimeError("index out of range"), undefined) : first[c]);
  4921  			if (x === 241) {
  4922  				i = i + (1) >> 0;
  4923  				continue;
  4924  			}
  4925  			size = ((((x & 7) >>> 0) >> 0));
  4926  			if ((i + size >> 0) > np) {
  4927  				i = i + (1) >> 0;
  4928  				continue;
  4929  			}
  4930  			accept = $clone((x$1 = x >>> 4 << 24 >>> 24, ((x$1 < 0 || x$1 >= acceptRanges.length) ? ($throwRuntimeError("index out of range"), undefined) : acceptRanges[x$1])), acceptRange);
  4931  			c$1 = (x$2 = i + 1 >> 0, ((x$2 < 0 || x$2 >= p.$length) ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + x$2]));
  4932  			if (c$1 < accept.lo || accept.hi < c$1) {
  4933  				size = 1;
  4934  			} else if (size === 2) {
  4935  			} else {
  4936  				c$2 = (x$3 = i + 2 >> 0, ((x$3 < 0 || x$3 >= p.$length) ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + x$3]));
  4937  				if (c$2 < 128 || 191 < c$2) {
  4938  					size = 1;
  4939  				} else if (size === 3) {
  4940  				} else {
  4941  					c$3 = (x$4 = i + 3 >> 0, ((x$4 < 0 || x$4 >= p.$length) ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + x$4]));
  4942  					if (c$3 < 128 || 191 < c$3) {
  4943  						size = 1;
  4944  					}
  4945  				}
  4946  			}
  4947  			i = i + (size) >> 0;
  4948  		}
  4949  		return n;
  4950  	};
  4951  	$pkg.RuneCount = RuneCount;
  4952  	RuneCountInString = function(s) {
  4953  		var accept, c, c$1, c$2, c$3, i, n, ns, s, size, x, x$1;
  4954  		n = 0;
  4955  		ns = s.length;
  4956  		i = 0;
  4957  		while (true) {
  4958  			if (!(i < ns)) { break; }
  4959  			c = s.charCodeAt(i);
  4960  			if (c < 128) {
  4961  				i = i + (1) >> 0;
  4962  				n = n + (1) >> 0;
  4963  				continue;
  4964  			}
  4965  			x = ((c < 0 || c >= first.length) ? ($throwRuntimeError("index out of range"), undefined) : first[c]);
  4966  			if (x === 241) {
  4967  				i = i + (1) >> 0;
  4968  				n = n + (1) >> 0;
  4969  				continue;
  4970  			}
  4971  			size = ((((x & 7) >>> 0) >> 0));
  4972  			if ((i + size >> 0) > ns) {
  4973  				i = i + (1) >> 0;
  4974  				n = n + (1) >> 0;
  4975  				continue;
  4976  			}
  4977  			accept = $clone((x$1 = x >>> 4 << 24 >>> 24, ((x$1 < 0 || x$1 >= acceptRanges.length) ? ($throwRuntimeError("index out of range"), undefined) : acceptRanges[x$1])), acceptRange);
  4978  			c$1 = s.charCodeAt((i + 1 >> 0));
  4979  			if (c$1 < accept.lo || accept.hi < c$1) {
  4980  				size = 1;
  4981  			} else if (size === 2) {
  4982  			} else {
  4983  				c$2 = s.charCodeAt((i + 2 >> 0));
  4984  				if (c$2 < 128 || 191 < c$2) {
  4985  					size = 1;
  4986  				} else if (size === 3) {
  4987  				} else {
  4988  					c$3 = s.charCodeAt((i + 3 >> 0));
  4989  					if (c$3 < 128 || 191 < c$3) {
  4990  						size = 1;
  4991  					}
  4992  				}
  4993  			}
  4994  			i = i + (size) >> 0;
  4995  			n = n + (1) >> 0;
  4996  		}
  4997  		n = n;
  4998  		return n;
  4999  	};
  5000  	$pkg.RuneCountInString = RuneCountInString;
  5001  	RuneStart = function(b) {
  5002  		var b;
  5003  		return !((((b & 192) >>> 0) === 128));
  5004  	};
  5005  	$pkg.RuneStart = RuneStart;
  5006  	Valid = function(p) {
  5007  		var accept, c, c$1, c$2, i, n, p, pi, size, x, x$1, x$2, x$3, x$4;
  5008  		n = p.$length;
  5009  		i = 0;
  5010  		while (true) {
  5011  			if (!(i < n)) { break; }
  5012  			pi = ((i < 0 || i >= p.$length) ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + i]);
  5013  			if (pi < 128) {
  5014  				i = i + (1) >> 0;
  5015  				continue;
  5016  			}
  5017  			x = ((pi < 0 || pi >= first.length) ? ($throwRuntimeError("index out of range"), undefined) : first[pi]);
  5018  			if (x === 241) {
  5019  				return false;
  5020  			}
  5021  			size = ((((x & 7) >>> 0) >> 0));
  5022  			if ((i + size >> 0) > n) {
  5023  				return false;
  5024  			}
  5025  			accept = $clone((x$1 = x >>> 4 << 24 >>> 24, ((x$1 < 0 || x$1 >= acceptRanges.length) ? ($throwRuntimeError("index out of range"), undefined) : acceptRanges[x$1])), acceptRange);
  5026  			c = (x$2 = i + 1 >> 0, ((x$2 < 0 || x$2 >= p.$length) ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + x$2]));
  5027  			if (c < accept.lo || accept.hi < c) {
  5028  				return false;
  5029  			} else if (size === 2) {
  5030  			} else {
  5031  				c$1 = (x$3 = i + 2 >> 0, ((x$3 < 0 || x$3 >= p.$length) ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + x$3]));
  5032  				if (c$1 < 128 || 191 < c$1) {
  5033  					return false;
  5034  				} else if (size === 3) {
  5035  				} else {
  5036  					c$2 = (x$4 = i + 3 >> 0, ((x$4 < 0 || x$4 >= p.$length) ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + x$4]));
  5037  					if (c$2 < 128 || 191 < c$2) {
  5038  						return false;
  5039  					}
  5040  				}
  5041  			}
  5042  			i = i + (size) >> 0;
  5043  		}
  5044  		return true;
  5045  	};
  5046  	$pkg.Valid = Valid;
  5047  	ValidString = function(s) {
  5048  		var accept, c, c$1, c$2, i, n, s, si, size, x, x$1;
  5049  		n = s.length;
  5050  		i = 0;
  5051  		while (true) {
  5052  			if (!(i < n)) { break; }
  5053  			si = s.charCodeAt(i);
  5054  			if (si < 128) {
  5055  				i = i + (1) >> 0;
  5056  				continue;
  5057  			}
  5058  			x = ((si < 0 || si >= first.length) ? ($throwRuntimeError("index out of range"), undefined) : first[si]);
  5059  			if (x === 241) {
  5060  				return false;
  5061  			}
  5062  			size = ((((x & 7) >>> 0) >> 0));
  5063  			if ((i + size >> 0) > n) {
  5064  				return false;
  5065  			}
  5066  			accept = $clone((x$1 = x >>> 4 << 24 >>> 24, ((x$1 < 0 || x$1 >= acceptRanges.length) ? ($throwRuntimeError("index out of range"), undefined) : acceptRanges[x$1])), acceptRange);
  5067  			c = s.charCodeAt((i + 1 >> 0));
  5068  			if (c < accept.lo || accept.hi < c) {
  5069  				return false;
  5070  			} else if (size === 2) {
  5071  			} else {
  5072  				c$1 = s.charCodeAt((i + 2 >> 0));
  5073  				if (c$1 < 128 || 191 < c$1) {
  5074  					return false;
  5075  				} else if (size === 3) {
  5076  				} else {
  5077  					c$2 = s.charCodeAt((i + 3 >> 0));
  5078  					if (c$2 < 128 || 191 < c$2) {
  5079  						return false;
  5080  					}
  5081  				}
  5082  			}
  5083  			i = i + (size) >> 0;
  5084  		}
  5085  		return true;
  5086  	};
  5087  	$pkg.ValidString = ValidString;
  5088  	ValidRune = function(r) {
  5089  		var r;
  5090  		if (0 <= r && r < 55296) {
  5091  			return true;
  5092  		} else if (57343 < r && r <= 1114111) {
  5093  			return true;
  5094  		}
  5095  		return false;
  5096  	};
  5097  	$pkg.ValidRune = ValidRune;
  5098  	acceptRange.init("unicode/utf8", [{prop: "lo", name: "lo", anonymous: false, exported: false, typ: $Uint8, tag: ""}, {prop: "hi", name: "hi", anonymous: false, exported: false, typ: $Uint8, tag: ""}]);
  5099  	$init = function() {
  5100  		$pkg.$init = function() {};
  5101  		/* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  5102  		first = $toNativeArray($kindUint8, [240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 19, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 35, 3, 3, 52, 4, 4, 4, 68, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241]);
  5103  		acceptRanges = $toNativeArray($kindStruct, [new acceptRange.ptr(128, 191), new acceptRange.ptr(160, 191), new acceptRange.ptr(128, 159), new acceptRange.ptr(144, 191), new acceptRange.ptr(128, 143)]);
  5104  		/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
  5105  	};
  5106  	$pkg.$init = $init;
  5107  	return $pkg;
  5108  })();
  5109  $packages["bytes"] = (function() {
  5110  	var $pkg = {}, $init, errors, io, unicode, utf8, Buffer, readOp, asciiSet, Reader, ptrType, sliceType, arrayType, ptrType$1, arrayType$2, ptrType$2, errNegativeRead, IndexByte, Equal, makeSlice, Contains, LastIndexByte, HasPrefix, HasSuffix, TrimLeftFunc, TrimRightFunc, TrimFunc, TrimPrefix, indexFunc, lastIndexFunc, makeASCIISet, makeCutsetFunc, TrimRight, TrimSpace, EqualFold, indexRabinKarp, hashStr, Index, NewReader;
  5111  	errors = $packages["errors"];
  5112  	io = $packages["io"];
  5113  	unicode = $packages["unicode"];
  5114  	utf8 = $packages["unicode/utf8"];
  5115  	Buffer = $pkg.Buffer = $newType(0, $kindStruct, "bytes.Buffer", true, "bytes", true, function(buf_, off_, bootstrap_, lastRead_) {
  5116  		this.$val = this;
  5117  		if (arguments.length === 0) {
  5118  			this.buf = sliceType.nil;
  5119  			this.off = 0;
  5120  			this.bootstrap = arrayType.zero();
  5121  			this.lastRead = 0;
  5122  			return;
  5123  		}
  5124  		this.buf = buf_;
  5125  		this.off = off_;
  5126  		this.bootstrap = bootstrap_;
  5127  		this.lastRead = lastRead_;
  5128  	});
  5129  	readOp = $pkg.readOp = $newType(1, $kindInt8, "bytes.readOp", true, "bytes", false, null);
  5130  	asciiSet = $pkg.asciiSet = $newType(32, $kindArray, "bytes.asciiSet", true, "bytes", false, null);
  5131  	Reader = $pkg.Reader = $newType(0, $kindStruct, "bytes.Reader", true, "bytes", true, function(s_, i_, prevRune_) {
  5132  		this.$val = this;
  5133  		if (arguments.length === 0) {
  5134  			this.s = sliceType.nil;
  5135  			this.i = new $Int64(0, 0);
  5136  			this.prevRune = 0;
  5137  			return;
  5138  		}
  5139  		this.s = s_;
  5140  		this.i = i_;
  5141  		this.prevRune = prevRune_;
  5142  	});
  5143  	ptrType = $ptrType(Buffer);
  5144  	sliceType = $sliceType($Uint8);
  5145  	arrayType = $arrayType($Uint8, 64);
  5146  	ptrType$1 = $ptrType(asciiSet);
  5147  	arrayType$2 = $arrayType($Uint32, 8);
  5148  	ptrType$2 = $ptrType(Reader);
  5149  	IndexByte = function(s, c) {
  5150  		var _i, _ref, b, c, i, s;
  5151  		_ref = s;
  5152  		_i = 0;
  5153  		while (true) {
  5154  			if (!(_i < _ref.$length)) { break; }
  5155  			i = _i;
  5156  			b = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
  5157  			if (b === c) {
  5158  				return i;
  5159  			}
  5160  			_i++;
  5161  		}
  5162  		return -1;
  5163  	};
  5164  	$pkg.IndexByte = IndexByte;
  5165  	Equal = function(a, b) {
  5166  		var _i, _ref, a, b, c, i;
  5167  		if (!((a.$length === b.$length))) {
  5168  			return false;
  5169  		}
  5170  		_ref = a;
  5171  		_i = 0;
  5172  		while (true) {
  5173  			if (!(_i < _ref.$length)) { break; }
  5174  			i = _i;
  5175  			c = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
  5176  			if (!((c === ((i < 0 || i >= b.$length) ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + i])))) {
  5177  				return false;
  5178  			}
  5179  			_i++;
  5180  		}
  5181  		return true;
  5182  	};
  5183  	$pkg.Equal = Equal;
  5184  	Buffer.ptr.prototype.Bytes = function() {
  5185  		var b;
  5186  		b = this;
  5187  		return $subslice(b.buf, b.off);
  5188  	};
  5189  	Buffer.prototype.Bytes = function() { return this.$val.Bytes(); };
  5190  	Buffer.ptr.prototype.String = function() {
  5191  		var b;
  5192  		b = this;
  5193  		if (b === ptrType.nil) {
  5194  			return "<nil>";
  5195  		}
  5196  		return ($bytesToString($subslice(b.buf, b.off)));
  5197  	};
  5198  	Buffer.prototype.String = function() { return this.$val.String(); };
  5199  	Buffer.ptr.prototype.empty = function() {
  5200  		var b;
  5201  		b = this;
  5202  		return b.buf.$length <= b.off;
  5203  	};
  5204  	Buffer.prototype.empty = function() { return this.$val.empty(); };
  5205  	Buffer.ptr.prototype.Len = function() {
  5206  		var b;
  5207  		b = this;
  5208  		return b.buf.$length - b.off >> 0;
  5209  	};
  5210  	Buffer.prototype.Len = function() { return this.$val.Len(); };
  5211  	Buffer.ptr.prototype.Cap = function() {
  5212  		var b;
  5213  		b = this;
  5214  		return b.buf.$capacity;
  5215  	};
  5216  	Buffer.prototype.Cap = function() { return this.$val.Cap(); };
  5217  	Buffer.ptr.prototype.Truncate = function(n) {
  5218  		var b, n;
  5219  		b = this;
  5220  		if (n === 0) {
  5221  			b.Reset();
  5222  			return;
  5223  		}
  5224  		b.lastRead = 0;
  5225  		if (n < 0 || n > b.Len()) {
  5226  			$panic(new $String("bytes.Buffer: truncation out of range"));
  5227  		}
  5228  		b.buf = $subslice(b.buf, 0, (b.off + n >> 0));
  5229  	};
  5230  	Buffer.prototype.Truncate = function(n) { return this.$val.Truncate(n); };
  5231  	Buffer.ptr.prototype.Reset = function() {
  5232  		var b;
  5233  		b = this;
  5234  		b.buf = $subslice(b.buf, 0, 0);
  5235  		b.off = 0;
  5236  		b.lastRead = 0;
  5237  	};
  5238  	Buffer.prototype.Reset = function() { return this.$val.Reset(); };
  5239  	Buffer.ptr.prototype.tryGrowByReslice = function(n) {
  5240  		var b, l, n;
  5241  		b = this;
  5242  		l = b.buf.$length;
  5243  		if (n <= (b.buf.$capacity - l >> 0)) {
  5244  			b.buf = $subslice(b.buf, 0, (l + n >> 0));
  5245  			return [l, true];
  5246  		}
  5247  		return [0, false];
  5248  	};
  5249  	Buffer.prototype.tryGrowByReslice = function(n) { return this.$val.tryGrowByReslice(n); };
  5250  	Buffer.ptr.prototype.grow = function(n) {
  5251  		var _q, _tuple, b, buf, c, i, m, n, ok;
  5252  		b = this;
  5253  		m = b.Len();
  5254  		if ((m === 0) && !((b.off === 0))) {
  5255  			b.Reset();
  5256  		}
  5257  		_tuple = b.tryGrowByReslice(n);
  5258  		i = _tuple[0];
  5259  		ok = _tuple[1];
  5260  		if (ok) {
  5261  			return i;
  5262  		}
  5263  		if (b.buf === sliceType.nil && n <= 64) {
  5264  			b.buf = $subslice(new sliceType(b.bootstrap), 0, n);
  5265  			return 0;
  5266  		}
  5267  		c = b.buf.$capacity;
  5268  		if (n <= ((_q = c / 2, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")) - m >> 0)) {
  5269  			$copySlice(b.buf, $subslice(b.buf, b.off));
  5270  		} else if (c > ((2147483647 - c >> 0) - n >> 0)) {
  5271  			$panic($pkg.ErrTooLarge);
  5272  		} else {
  5273  			buf = makeSlice(($imul(2, c)) + n >> 0);
  5274  			$copySlice(buf, $subslice(b.buf, b.off));
  5275  			b.buf = buf;
  5276  		}
  5277  		b.off = 0;
  5278  		b.buf = $subslice(b.buf, 0, (m + n >> 0));
  5279  		return m;
  5280  	};
  5281  	Buffer.prototype.grow = function(n) { return this.$val.grow(n); };
  5282  	Buffer.ptr.prototype.Grow = function(n) {
  5283  		var b, m, n;
  5284  		b = this;
  5285  		if (n < 0) {
  5286  			$panic(new $String("bytes.Buffer.Grow: negative count"));
  5287  		}
  5288  		m = b.grow(n);
  5289  		b.buf = $subslice(b.buf, 0, m);
  5290  	};
  5291  	Buffer.prototype.Grow = function(n) { return this.$val.Grow(n); };
  5292  	Buffer.ptr.prototype.Write = function(p) {
  5293  		var _tmp, _tmp$1, _tuple, b, err, m, n, ok, p;
  5294  		n = 0;
  5295  		err = $ifaceNil;
  5296  		b = this;
  5297  		b.lastRead = 0;
  5298  		_tuple = b.tryGrowByReslice(p.$length);
  5299  		m = _tuple[0];
  5300  		ok = _tuple[1];
  5301  		if (!ok) {
  5302  			m = b.grow(p.$length);
  5303  		}
  5304  		_tmp = $copySlice($subslice(b.buf, m), p);
  5305  		_tmp$1 = $ifaceNil;
  5306  		n = _tmp;
  5307  		err = _tmp$1;
  5308  		return [n, err];
  5309  	};
  5310  	Buffer.prototype.Write = function(p) { return this.$val.Write(p); };
  5311  	Buffer.ptr.prototype.WriteString = function(s) {
  5312  		var _tmp, _tmp$1, _tuple, b, err, m, n, ok, s;
  5313  		n = 0;
  5314  		err = $ifaceNil;
  5315  		b = this;
  5316  		b.lastRead = 0;
  5317  		_tuple = b.tryGrowByReslice(s.length);
  5318  		m = _tuple[0];
  5319  		ok = _tuple[1];
  5320  		if (!ok) {
  5321  			m = b.grow(s.length);
  5322  		}
  5323  		_tmp = $copyString($subslice(b.buf, m), s);
  5324  		_tmp$1 = $ifaceNil;
  5325  		n = _tmp;
  5326  		err = _tmp$1;
  5327  		return [n, err];
  5328  	};
  5329  	Buffer.prototype.WriteString = function(s) { return this.$val.WriteString(s); };
  5330  	Buffer.ptr.prototype.ReadFrom = function(r) {
  5331  		var _r, _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, b, e, err, i, m, n, r, x, $s, $r;
  5332  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tuple = $f._tuple; b = $f.b; e = $f.e; err = $f.err; i = $f.i; m = $f.m; n = $f.n; r = $f.r; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  5333  		n = new $Int64(0, 0);
  5334  		err = $ifaceNil;
  5335  		b = this;
  5336  		b.lastRead = 0;
  5337  		/* while (true) { */ case 1:
  5338  			i = b.grow(512);
  5339  			_r = r.Read($subslice(b.buf, i, b.buf.$capacity)); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  5340  			_tuple = _r;
  5341  			m = _tuple[0];
  5342  			e = _tuple[1];
  5343  			if (m < 0) {
  5344  				$panic(errNegativeRead);
  5345  			}
  5346  			b.buf = $subslice(b.buf, 0, (i + m >> 0));
  5347  			n = (x = (new $Int64(0, m)), new $Int64(n.$high + x.$high, n.$low + x.$low));
  5348  			if ($interfaceIsEqual(e, io.EOF)) {
  5349  				_tmp = n;
  5350  				_tmp$1 = $ifaceNil;
  5351  				n = _tmp;
  5352  				err = _tmp$1;
  5353  				$s = -1; return [n, err];
  5354  			}
  5355  			if (!($interfaceIsEqual(e, $ifaceNil))) {
  5356  				_tmp$2 = n;
  5357  				_tmp$3 = e;
  5358  				n = _tmp$2;
  5359  				err = _tmp$3;
  5360  				$s = -1; return [n, err];
  5361  			}
  5362  		/* } */ $s = 1; continue; case 2:
  5363  		$s = -1; return [n, err];
  5364  		/* */ } return; } if ($f === undefined) { $f = { $blk: Buffer.ptr.prototype.ReadFrom }; } $f._r = _r; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tuple = _tuple; $f.b = b; $f.e = e; $f.err = err; $f.i = i; $f.m = m; $f.n = n; $f.r = r; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
  5365  	};
  5366  	Buffer.prototype.ReadFrom = function(r) { return this.$val.ReadFrom(r); };
  5367  	makeSlice = function(n) {
  5368  		var n, $deferred;
  5369  		/* */ var $err = null; try { $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
  5370  		$deferred.push([(function() {
  5371  			if (!($interfaceIsEqual($recover(), $ifaceNil))) {
  5372  				$panic($pkg.ErrTooLarge);
  5373  			}
  5374  		}), []]);
  5375  		return $makeSlice(sliceType, n);
  5376  		/* */ } catch(err) { $err = err; return sliceType.nil; } finally { $callDeferred($deferred, $err); }
  5377  	};
  5378  	Buffer.ptr.prototype.WriteTo = function(w) {
  5379  		var _r, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tuple, b, e, err, m, n, nBytes, w, $s, $r;
  5380  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tmp$4 = $f._tmp$4; _tmp$5 = $f._tmp$5; _tuple = $f._tuple; b = $f.b; e = $f.e; err = $f.err; m = $f.m; n = $f.n; nBytes = $f.nBytes; w = $f.w; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  5381  		n = new $Int64(0, 0);
  5382  		err = $ifaceNil;
  5383  		b = this;
  5384  		b.lastRead = 0;
  5385  		nBytes = b.Len();
  5386  		/* */ if (nBytes > 0) { $s = 1; continue; }
  5387  		/* */ $s = 2; continue;
  5388  		/* if (nBytes > 0) { */ case 1:
  5389  			_r = w.Write($subslice(b.buf, b.off)); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  5390  			_tuple = _r;
  5391  			m = _tuple[0];
  5392  			e = _tuple[1];
  5393  			if (m > nBytes) {
  5394  				$panic(new $String("bytes.Buffer.WriteTo: invalid Write count"));
  5395  			}
  5396  			b.off = b.off + (m) >> 0;
  5397  			n = (new $Int64(0, m));
  5398  			if (!($interfaceIsEqual(e, $ifaceNil))) {
  5399  				_tmp = n;
  5400  				_tmp$1 = e;
  5401  				n = _tmp;
  5402  				err = _tmp$1;
  5403  				$s = -1; return [n, err];
  5404  			}
  5405  			if (!((m === nBytes))) {
  5406  				_tmp$2 = n;
  5407  				_tmp$3 = io.ErrShortWrite;
  5408  				n = _tmp$2;
  5409  				err = _tmp$3;
  5410  				$s = -1; return [n, err];
  5411  			}
  5412  		/* } */ case 2:
  5413  		b.Reset();
  5414  		_tmp$4 = n;
  5415  		_tmp$5 = $ifaceNil;
  5416  		n = _tmp$4;
  5417  		err = _tmp$5;
  5418  		$s = -1; return [n, err];
  5419  		/* */ } return; } if ($f === undefined) { $f = { $blk: Buffer.ptr.prototype.WriteTo }; } $f._r = _r; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tmp$4 = _tmp$4; $f._tmp$5 = _tmp$5; $f._tuple = _tuple; $f.b = b; $f.e = e; $f.err = err; $f.m = m; $f.n = n; $f.nBytes = nBytes; $f.w = w; $f.$s = $s; $f.$r = $r; return $f;
  5420  	};
  5421  	Buffer.prototype.WriteTo = function(w) { return this.$val.WriteTo(w); };
  5422  	Buffer.ptr.prototype.WriteByte = function(c) {
  5423  		var _tuple, b, c, m, ok, x;
  5424  		b = this;
  5425  		b.lastRead = 0;
  5426  		_tuple = b.tryGrowByReslice(1);
  5427  		m = _tuple[0];
  5428  		ok = _tuple[1];
  5429  		if (!ok) {
  5430  			m = b.grow(1);
  5431  		}
  5432  		(x = b.buf, ((m < 0 || m >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + m] = c));
  5433  		return $ifaceNil;
  5434  	};
  5435  	Buffer.prototype.WriteByte = function(c) { return this.$val.WriteByte(c); };
  5436  	Buffer.ptr.prototype.WriteRune = function(r) {
  5437  		var _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, b, err, m, n, ok, r;
  5438  		n = 0;
  5439  		err = $ifaceNil;
  5440  		b = this;
  5441  		if (r < 128) {
  5442  			b.WriteByte(((r << 24 >>> 24)));
  5443  			_tmp = 1;
  5444  			_tmp$1 = $ifaceNil;
  5445  			n = _tmp;
  5446  			err = _tmp$1;
  5447  			return [n, err];
  5448  		}
  5449  		b.lastRead = 0;
  5450  		_tuple = b.tryGrowByReslice(4);
  5451  		m = _tuple[0];
  5452  		ok = _tuple[1];
  5453  		if (!ok) {
  5454  			m = b.grow(4);
  5455  		}
  5456  		n = utf8.EncodeRune($subslice(b.buf, m, (m + 4 >> 0)), r);
  5457  		b.buf = $subslice(b.buf, 0, (m + n >> 0));
  5458  		_tmp$2 = n;
  5459  		_tmp$3 = $ifaceNil;
  5460  		n = _tmp$2;
  5461  		err = _tmp$3;
  5462  		return [n, err];
  5463  	};
  5464  	Buffer.prototype.WriteRune = function(r) { return this.$val.WriteRune(r); };
  5465  	Buffer.ptr.prototype.Read = function(p) {
  5466  		var _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, b, err, n, p;
  5467  		n = 0;
  5468  		err = $ifaceNil;
  5469  		b = this;
  5470  		b.lastRead = 0;
  5471  		if (b.empty()) {
  5472  			b.Reset();
  5473  			if (p.$length === 0) {
  5474  				_tmp = 0;
  5475  				_tmp$1 = $ifaceNil;
  5476  				n = _tmp;
  5477  				err = _tmp$1;
  5478  				return [n, err];
  5479  			}
  5480  			_tmp$2 = 0;
  5481  			_tmp$3 = io.EOF;
  5482  			n = _tmp$2;
  5483  			err = _tmp$3;
  5484  			return [n, err];
  5485  		}
  5486  		n = $copySlice(p, $subslice(b.buf, b.off));
  5487  		b.off = b.off + (n) >> 0;
  5488  		if (n > 0) {
  5489  			b.lastRead = -1;
  5490  		}
  5491  		_tmp$4 = n;
  5492  		_tmp$5 = $ifaceNil;
  5493  		n = _tmp$4;
  5494  		err = _tmp$5;
  5495  		return [n, err];
  5496  	};
  5497  	Buffer.prototype.Read = function(p) { return this.$val.Read(p); };
  5498  	Buffer.ptr.prototype.Next = function(n) {
  5499  		var b, data, m, n;
  5500  		b = this;
  5501  		b.lastRead = 0;
  5502  		m = b.Len();
  5503  		if (n > m) {
  5504  			n = m;
  5505  		}
  5506  		data = $subslice(b.buf, b.off, (b.off + n >> 0));
  5507  		b.off = b.off + (n) >> 0;
  5508  		if (n > 0) {
  5509  			b.lastRead = -1;
  5510  		}
  5511  		return data;
  5512  	};
  5513  	Buffer.prototype.Next = function(n) { return this.$val.Next(n); };
  5514  	Buffer.ptr.prototype.ReadByte = function() {
  5515  		var b, c, x, x$1;
  5516  		b = this;
  5517  		if (b.empty()) {
  5518  			b.Reset();
  5519  			return [0, io.EOF];
  5520  		}
  5521  		c = (x = b.buf, x$1 = b.off, ((x$1 < 0 || x$1 >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + x$1]));
  5522  		b.off = b.off + (1) >> 0;
  5523  		b.lastRead = -1;
  5524  		return [c, $ifaceNil];
  5525  	};
  5526  	Buffer.prototype.ReadByte = function() { return this.$val.ReadByte(); };
  5527  	Buffer.ptr.prototype.ReadRune = function() {
  5528  		var _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tuple, b, c, err, n, r, size, x, x$1;
  5529  		r = 0;
  5530  		size = 0;
  5531  		err = $ifaceNil;
  5532  		b = this;
  5533  		if (b.empty()) {
  5534  			b.Reset();
  5535  			_tmp = 0;
  5536  			_tmp$1 = 0;
  5537  			_tmp$2 = io.EOF;
  5538  			r = _tmp;
  5539  			size = _tmp$1;
  5540  			err = _tmp$2;
  5541  			return [r, size, err];
  5542  		}
  5543  		c = (x = b.buf, x$1 = b.off, ((x$1 < 0 || x$1 >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + x$1]));
  5544  		if (c < 128) {
  5545  			b.off = b.off + (1) >> 0;
  5546  			b.lastRead = 1;
  5547  			_tmp$3 = ((c >> 0));
  5548  			_tmp$4 = 1;
  5549  			_tmp$5 = $ifaceNil;
  5550  			r = _tmp$3;
  5551  			size = _tmp$4;
  5552  			err = _tmp$5;
  5553  			return [r, size, err];
  5554  		}
  5555  		_tuple = utf8.DecodeRune($subslice(b.buf, b.off));
  5556  		r = _tuple[0];
  5557  		n = _tuple[1];
  5558  		b.off = b.off + (n) >> 0;
  5559  		b.lastRead = ((n << 24 >> 24));
  5560  		_tmp$6 = r;
  5561  		_tmp$7 = n;
  5562  		_tmp$8 = $ifaceNil;
  5563  		r = _tmp$6;
  5564  		size = _tmp$7;
  5565  		err = _tmp$8;
  5566  		return [r, size, err];
  5567  	};
  5568  	Buffer.prototype.ReadRune = function() { return this.$val.ReadRune(); };
  5569  	Buffer.ptr.prototype.UnreadRune = function() {
  5570  		var b;
  5571  		b = this;
  5572  		if (b.lastRead <= 0) {
  5573  			return errors.New("bytes.Buffer: UnreadRune: previous operation was not a successful ReadRune");
  5574  		}
  5575  		if (b.off >= ((b.lastRead >> 0))) {
  5576  			b.off = b.off - (((b.lastRead >> 0))) >> 0;
  5577  		}
  5578  		b.lastRead = 0;
  5579  		return $ifaceNil;
  5580  	};
  5581  	Buffer.prototype.UnreadRune = function() { return this.$val.UnreadRune(); };
  5582  	Buffer.ptr.prototype.UnreadByte = function() {
  5583  		var b;
  5584  		b = this;
  5585  		if (b.lastRead === 0) {
  5586  			return errors.New("bytes.Buffer: UnreadByte: previous operation was not a successful read");
  5587  		}
  5588  		b.lastRead = 0;
  5589  		if (b.off > 0) {
  5590  			b.off = b.off - (1) >> 0;
  5591  		}
  5592  		return $ifaceNil;
  5593  	};
  5594  	Buffer.prototype.UnreadByte = function() { return this.$val.UnreadByte(); };
  5595  	Buffer.ptr.prototype.ReadBytes = function(delim) {
  5596  		var _tmp, _tmp$1, _tuple, b, delim, err, line, slice;
  5597  		line = sliceType.nil;
  5598  		err = $ifaceNil;
  5599  		b = this;
  5600  		_tuple = b.readSlice(delim);
  5601  		slice = _tuple[0];
  5602  		err = _tuple[1];
  5603  		line = $appendSlice(line, slice);
  5604  		_tmp = line;
  5605  		_tmp$1 = err;
  5606  		line = _tmp;
  5607  		err = _tmp$1;
  5608  		return [line, err];
  5609  	};
  5610  	Buffer.prototype.ReadBytes = function(delim) { return this.$val.ReadBytes(delim); };
  5611  	Buffer.ptr.prototype.readSlice = function(delim) {
  5612  		var _tmp, _tmp$1, b, delim, end, err, i, line;
  5613  		line = sliceType.nil;
  5614  		err = $ifaceNil;
  5615  		b = this;
  5616  		i = IndexByte($subslice(b.buf, b.off), delim);
  5617  		end = (b.off + i >> 0) + 1 >> 0;
  5618  		if (i < 0) {
  5619  			end = b.buf.$length;
  5620  			err = io.EOF;
  5621  		}
  5622  		line = $subslice(b.buf, b.off, end);
  5623  		b.off = end;
  5624  		b.lastRead = -1;
  5625  		_tmp = line;
  5626  		_tmp$1 = err;
  5627  		line = _tmp;
  5628  		err = _tmp$1;
  5629  		return [line, err];
  5630  	};
  5631  	Buffer.prototype.readSlice = function(delim) { return this.$val.readSlice(delim); };
  5632  	Buffer.ptr.prototype.ReadString = function(delim) {
  5633  		var _tmp, _tmp$1, _tuple, b, delim, err, line, slice;
  5634  		line = "";
  5635  		err = $ifaceNil;
  5636  		b = this;
  5637  		_tuple = b.readSlice(delim);
  5638  		slice = _tuple[0];
  5639  		err = _tuple[1];
  5640  		_tmp = ($bytesToString(slice));
  5641  		_tmp$1 = err;
  5642  		line = _tmp;
  5643  		err = _tmp$1;
  5644  		return [line, err];
  5645  	};
  5646  	Buffer.prototype.ReadString = function(delim) { return this.$val.ReadString(delim); };
  5647  	Contains = function(b, subslice) {
  5648  		var b, subslice;
  5649  		return !((Index(b, subslice) === -1));
  5650  	};
  5651  	$pkg.Contains = Contains;
  5652  	LastIndexByte = function(s, c) {
  5653  		var c, i, s;
  5654  		i = s.$length - 1 >> 0;
  5655  		while (true) {
  5656  			if (!(i >= 0)) { break; }
  5657  			if (((i < 0 || i >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + i]) === c) {
  5658  				return i;
  5659  			}
  5660  			i = i - (1) >> 0;
  5661  		}
  5662  		return -1;
  5663  	};
  5664  	$pkg.LastIndexByte = LastIndexByte;
  5665  	HasPrefix = function(s, prefix) {
  5666  		var prefix, s;
  5667  		return s.$length >= prefix.$length && Equal($subslice(s, 0, prefix.$length), prefix);
  5668  	};
  5669  	$pkg.HasPrefix = HasPrefix;
  5670  	HasSuffix = function(s, suffix) {
  5671  		var s, suffix;
  5672  		return s.$length >= suffix.$length && Equal($subslice(s, (s.$length - suffix.$length >> 0)), suffix);
  5673  	};
  5674  	$pkg.HasSuffix = HasSuffix;
  5675  	TrimLeftFunc = function(s, f) {
  5676  		var _r, f, i, s, $s, $r;
  5677  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; f = $f.f; i = $f.i; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  5678  		_r = indexFunc(s, f, false); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  5679  		i = _r;
  5680  		if (i === -1) {
  5681  			$s = -1; return sliceType.nil;
  5682  		}
  5683  		$s = -1; return $subslice(s, i);
  5684  		/* */ } return; } if ($f === undefined) { $f = { $blk: TrimLeftFunc }; } $f._r = _r; $f.f = f; $f.i = i; $f.s = s; $f.$s = $s; $f.$r = $r; return $f;
  5685  	};
  5686  	$pkg.TrimLeftFunc = TrimLeftFunc;
  5687  	TrimRightFunc = function(s, f) {
  5688  		var _r, _tuple, f, i, s, wid, $s, $r;
  5689  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; f = $f.f; i = $f.i; s = $f.s; wid = $f.wid; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  5690  		_r = lastIndexFunc(s, f, false); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  5691  		i = _r;
  5692  		if (i >= 0 && ((i < 0 || i >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + i]) >= 128) {
  5693  			_tuple = utf8.DecodeRune($subslice(s, i));
  5694  			wid = _tuple[1];
  5695  			i = i + (wid) >> 0;
  5696  		} else {
  5697  			i = i + (1) >> 0;
  5698  		}
  5699  		$s = -1; return $subslice(s, 0, i);
  5700  		/* */ } return; } if ($f === undefined) { $f = { $blk: TrimRightFunc }; } $f._r = _r; $f._tuple = _tuple; $f.f = f; $f.i = i; $f.s = s; $f.wid = wid; $f.$s = $s; $f.$r = $r; return $f;
  5701  	};
  5702  	$pkg.TrimRightFunc = TrimRightFunc;
  5703  	TrimFunc = function(s, f) {
  5704  		var _r, _r$1, f, s, $s, $r;
  5705  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; f = $f.f; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  5706  		_r = TrimLeftFunc(s, f); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  5707  		_r$1 = TrimRightFunc(_r, f); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  5708  		$s = -1; return _r$1;
  5709  		/* */ } return; } if ($f === undefined) { $f = { $blk: TrimFunc }; } $f._r = _r; $f._r$1 = _r$1; $f.f = f; $f.s = s; $f.$s = $s; $f.$r = $r; return $f;
  5710  	};
  5711  	$pkg.TrimFunc = TrimFunc;
  5712  	TrimPrefix = function(s, prefix) {
  5713  		var prefix, s;
  5714  		if (HasPrefix(s, prefix)) {
  5715  			return $subslice(s, prefix.$length);
  5716  		}
  5717  		return s;
  5718  	};
  5719  	$pkg.TrimPrefix = TrimPrefix;
  5720  	indexFunc = function(s, f, truth) {
  5721  		var _r, _tuple, f, r, s, start, truth, wid, $s, $r;
  5722  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; f = $f.f; r = $f.r; s = $f.s; start = $f.start; truth = $f.truth; wid = $f.wid; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  5723  		start = 0;
  5724  		/* while (true) { */ case 1:
  5725  			/* if (!(start < s.$length)) { break; } */ if(!(start < s.$length)) { $s = 2; continue; }
  5726  			wid = 1;
  5727  			r = ((((start < 0 || start >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + start]) >> 0));
  5728  			if (r >= 128) {
  5729  				_tuple = utf8.DecodeRune($subslice(s, start));
  5730  				r = _tuple[0];
  5731  				wid = _tuple[1];
  5732  			}
  5733  			_r = f(r); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  5734  			/* */ if (_r === truth) { $s = 3; continue; }
  5735  			/* */ $s = 4; continue;
  5736  			/* if (_r === truth) { */ case 3:
  5737  				$s = -1; return start;
  5738  			/* } */ case 4:
  5739  			start = start + (wid) >> 0;
  5740  		/* } */ $s = 1; continue; case 2:
  5741  		$s = -1; return -1;
  5742  		/* */ } return; } if ($f === undefined) { $f = { $blk: indexFunc }; } $f._r = _r; $f._tuple = _tuple; $f.f = f; $f.r = r; $f.s = s; $f.start = start; $f.truth = truth; $f.wid = wid; $f.$s = $s; $f.$r = $r; return $f;
  5743  	};
  5744  	lastIndexFunc = function(s, f, truth) {
  5745  		var _r, _tmp, _tmp$1, _tuple, f, i, r, s, size, truth, x, $s, $r;
  5746  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tuple = $f._tuple; f = $f.f; i = $f.i; r = $f.r; s = $f.s; size = $f.size; truth = $f.truth; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  5747  		i = s.$length;
  5748  		/* while (true) { */ case 1:
  5749  			/* if (!(i > 0)) { break; } */ if(!(i > 0)) { $s = 2; continue; }
  5750  			_tmp = (((x = i - 1 >> 0, ((x < 0 || x >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + x])) >> 0));
  5751  			_tmp$1 = 1;
  5752  			r = _tmp;
  5753  			size = _tmp$1;
  5754  			if (r >= 128) {
  5755  				_tuple = utf8.DecodeLastRune($subslice(s, 0, i));
  5756  				r = _tuple[0];
  5757  				size = _tuple[1];
  5758  			}
  5759  			i = i - (size) >> 0;
  5760  			_r = f(r); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  5761  			/* */ if (_r === truth) { $s = 3; continue; }
  5762  			/* */ $s = 4; continue;
  5763  			/* if (_r === truth) { */ case 3:
  5764  				$s = -1; return i;
  5765  			/* } */ case 4:
  5766  		/* } */ $s = 1; continue; case 2:
  5767  		$s = -1; return -1;
  5768  		/* */ } return; } if ($f === undefined) { $f = { $blk: lastIndexFunc }; } $f._r = _r; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tuple = _tuple; $f.f = f; $f.i = i; $f.r = r; $f.s = s; $f.size = size; $f.truth = truth; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
  5769  	};
  5770  	makeASCIISet = function(chars) {
  5771  		var _index, _tmp, _tmp$1, _tmp$2, _tmp$3, as, c, chars, i, ok, y;
  5772  		as = arrayType$2.zero();
  5773  		ok = false;
  5774  		i = 0;
  5775  		while (true) {
  5776  			if (!(i < chars.length)) { break; }
  5777  			c = chars.charCodeAt(i);
  5778  			if (c >= 128) {
  5779  				_tmp = $clone(as, asciiSet);
  5780  				_tmp$1 = false;
  5781  				asciiSet.copy(as, _tmp);
  5782  				ok = _tmp$1;
  5783  				return [as, ok];
  5784  			}
  5785  			_index = c >>> 5 << 24 >>> 24;
  5786  			((_index < 0 || _index >= as.length) ? ($throwRuntimeError("index out of range"), undefined) : as[_index] = ((((_index < 0 || _index >= as.length) ? ($throwRuntimeError("index out of range"), undefined) : as[_index]) | (((y = ((((c & 31) >>> 0) >>> 0)), y < 32 ? (1 << y) : 0) >>> 0))) >>> 0));
  5787  			i = i + (1) >> 0;
  5788  		}
  5789  		_tmp$2 = $clone(as, asciiSet);
  5790  		_tmp$3 = true;
  5791  		asciiSet.copy(as, _tmp$2);
  5792  		ok = _tmp$3;
  5793  		return [as, ok];
  5794  	};
  5795  	asciiSet.prototype.contains = function(c) {
  5796  		var as, c, x, y;
  5797  		as = this.$val;
  5798  		return !((((((x = c >>> 5 << 24 >>> 24, (as.nilCheck, ((x < 0 || x >= as.length) ? ($throwRuntimeError("index out of range"), undefined) : as[x]))) & (((y = ((((c & 31) >>> 0) >>> 0)), y < 32 ? (1 << y) : 0) >>> 0))) >>> 0)) === 0));
  5799  	};
  5800  	$ptrType(asciiSet).prototype.contains = function(c) { return (new asciiSet(this.$get())).contains(c); };
  5801  	makeCutsetFunc = function(cutset) {
  5802  		var _tuple, as, cutset, isASCII;
  5803  		if ((cutset.length === 1) && cutset.charCodeAt(0) < 128) {
  5804  			return (function(r) {
  5805  				var r;
  5806  				return r === ((cutset.charCodeAt(0) >> 0));
  5807  			});
  5808  		}
  5809  		_tuple = makeASCIISet(cutset);
  5810  		as = $clone(_tuple[0], asciiSet);
  5811  		isASCII = _tuple[1];
  5812  		if (isASCII) {
  5813  			return (function(r) {
  5814  				var r;
  5815  				return r < 128 && new ptrType$1(as).contains(((r << 24 >>> 24)));
  5816  			});
  5817  		}
  5818  		return (function(r) {
  5819  			var _i, _ref, _rune, c, r;
  5820  			_ref = cutset;
  5821  			_i = 0;
  5822  			while (true) {
  5823  				if (!(_i < _ref.length)) { break; }
  5824  				_rune = $decodeRune(_ref, _i);
  5825  				c = _rune[0];
  5826  				if (c === r) {
  5827  					return true;
  5828  				}
  5829  				_i += _rune[1];
  5830  			}
  5831  			return false;
  5832  		});
  5833  	};
  5834  	TrimRight = function(s, cutset) {
  5835  		var _r, cutset, s, $s, $r;
  5836  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; cutset = $f.cutset; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  5837  		_r = TrimRightFunc(s, makeCutsetFunc(cutset)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  5838  		$s = -1; return _r;
  5839  		/* */ } return; } if ($f === undefined) { $f = { $blk: TrimRight }; } $f._r = _r; $f.cutset = cutset; $f.s = s; $f.$s = $s; $f.$r = $r; return $f;
  5840  	};
  5841  	$pkg.TrimRight = TrimRight;
  5842  	TrimSpace = function(s) {
  5843  		var _r, s, $s, $r;
  5844  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  5845  		_r = TrimFunc(s, unicode.IsSpace); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  5846  		$s = -1; return _r;
  5847  		/* */ } return; } if ($f === undefined) { $f = { $blk: TrimSpace }; } $f._r = _r; $f.s = s; $f.$s = $s; $f.$r = $r; return $f;
  5848  	};
  5849  	$pkg.TrimSpace = TrimSpace;
  5850  	EqualFold = function(s, t) {
  5851  		var _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, _tuple$1, r, r$1, r$2, s, size, size$1, sr, t, tr;
  5852  		while (true) {
  5853  			if (!(!((s.$length === 0)) && !((t.$length === 0)))) { break; }
  5854  			_tmp = 0;
  5855  			_tmp$1 = 0;
  5856  			sr = _tmp;
  5857  			tr = _tmp$1;
  5858  			if ((0 >= s.$length ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + 0]) < 128) {
  5859  				_tmp$2 = (((0 >= s.$length ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + 0]) >> 0));
  5860  				_tmp$3 = $subslice(s, 1);
  5861  				sr = _tmp$2;
  5862  				s = _tmp$3;
  5863  			} else {
  5864  				_tuple = utf8.DecodeRune(s);
  5865  				r = _tuple[0];
  5866  				size = _tuple[1];
  5867  				_tmp$4 = r;
  5868  				_tmp$5 = $subslice(s, size);
  5869  				sr = _tmp$4;
  5870  				s = _tmp$5;
  5871  			}
  5872  			if ((0 >= t.$length ? ($throwRuntimeError("index out of range"), undefined) : t.$array[t.$offset + 0]) < 128) {
  5873  				_tmp$6 = (((0 >= t.$length ? ($throwRuntimeError("index out of range"), undefined) : t.$array[t.$offset + 0]) >> 0));
  5874  				_tmp$7 = $subslice(t, 1);
  5875  				tr = _tmp$6;
  5876  				t = _tmp$7;
  5877  			} else {
  5878  				_tuple$1 = utf8.DecodeRune(t);
  5879  				r$1 = _tuple$1[0];
  5880  				size$1 = _tuple$1[1];
  5881  				_tmp$8 = r$1;
  5882  				_tmp$9 = $subslice(t, size$1);
  5883  				tr = _tmp$8;
  5884  				t = _tmp$9;
  5885  			}
  5886  			if (tr === sr) {
  5887  				continue;
  5888  			}
  5889  			if (tr < sr) {
  5890  				_tmp$10 = sr;
  5891  				_tmp$11 = tr;
  5892  				tr = _tmp$10;
  5893  				sr = _tmp$11;
  5894  			}
  5895  			if (tr < 128 && 65 <= sr && sr <= 90) {
  5896  				if (tr === ((sr + 97 >> 0) - 65 >> 0)) {
  5897  					continue;
  5898  				}
  5899  				return false;
  5900  			}
  5901  			r$2 = unicode.SimpleFold(sr);
  5902  			while (true) {
  5903  				if (!(!((r$2 === sr)) && r$2 < tr)) { break; }
  5904  				r$2 = unicode.SimpleFold(r$2);
  5905  			}
  5906  			if (r$2 === tr) {
  5907  				continue;
  5908  			}
  5909  			return false;
  5910  		}
  5911  		return s.$length === t.$length;
  5912  	};
  5913  	$pkg.EqualFold = EqualFold;
  5914  	indexRabinKarp = function(s, sep) {
  5915  		var _tuple, h, hashsep, i, i$1, n, pow, s, sep, x;
  5916  		_tuple = hashStr(sep);
  5917  		hashsep = _tuple[0];
  5918  		pow = _tuple[1];
  5919  		n = sep.$length;
  5920  		h = 0;
  5921  		i = 0;
  5922  		while (true) {
  5923  			if (!(i < n)) { break; }
  5924  			h = ($imul(h, 16777619) >>> 0) + ((((i < 0 || i >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + i]) >>> 0)) >>> 0;
  5925  			i = i + (1) >> 0;
  5926  		}
  5927  		if ((h === hashsep) && Equal($subslice(s, 0, n), sep)) {
  5928  			return 0;
  5929  		}
  5930  		i$1 = n;
  5931  		while (true) {
  5932  			if (!(i$1 < s.$length)) { break; }
  5933  			h = $imul(h, (16777619)) >>> 0;
  5934  			h = h + (((((i$1 < 0 || i$1 >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + i$1]) >>> 0))) >>> 0;
  5935  			h = h - (($imul(pow, (((x = i$1 - n >> 0, ((x < 0 || x >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + x])) >>> 0))) >>> 0)) >>> 0;
  5936  			i$1 = i$1 + (1) >> 0;
  5937  			if ((h === hashsep) && Equal($subslice(s, (i$1 - n >> 0), i$1), sep)) {
  5938  				return i$1 - n >> 0;
  5939  			}
  5940  		}
  5941  		return -1;
  5942  	};
  5943  	hashStr = function(sep) {
  5944  		var _tmp, _tmp$1, hash, i, i$1, pow, sep, sq;
  5945  		hash = 0;
  5946  		i = 0;
  5947  		while (true) {
  5948  			if (!(i < sep.$length)) { break; }
  5949  			hash = ($imul(hash, 16777619) >>> 0) + ((((i < 0 || i >= sep.$length) ? ($throwRuntimeError("index out of range"), undefined) : sep.$array[sep.$offset + i]) >>> 0)) >>> 0;
  5950  			i = i + (1) >> 0;
  5951  		}
  5952  		_tmp = 1;
  5953  		_tmp$1 = 16777619;
  5954  		pow = _tmp;
  5955  		sq = _tmp$1;
  5956  		i$1 = sep.$length;
  5957  		while (true) {
  5958  			if (!(i$1 > 0)) { break; }
  5959  			if (!(((i$1 & 1) === 0))) {
  5960  				pow = $imul(pow, (sq)) >>> 0;
  5961  			}
  5962  			sq = $imul(sq, (sq)) >>> 0;
  5963  			i$1 = (i$1 >> $min((1), 31)) >> 0;
  5964  		}
  5965  		return [hash, pow];
  5966  	};
  5967  	Index = function(s, sep) {
  5968  		var c, fails, i, j, n, o, s, sep, t;
  5969  		n = sep.$length;
  5970  		if ((n === 0)) {
  5971  			return 0;
  5972  		} else if ((n === 1)) {
  5973  			return IndexByte(s, (0 >= sep.$length ? ($throwRuntimeError("index out of range"), undefined) : sep.$array[sep.$offset + 0]));
  5974  		} else if ((n === s.$length)) {
  5975  			if (Equal(sep, s)) {
  5976  				return 0;
  5977  			}
  5978  			return -1;
  5979  		} else if (n > s.$length) {
  5980  			return -1;
  5981  		}
  5982  		c = (0 >= sep.$length ? ($throwRuntimeError("index out of range"), undefined) : sep.$array[sep.$offset + 0]);
  5983  		i = 0;
  5984  		fails = 0;
  5985  		t = $subslice(s, 0, ((s.$length - n >> 0) + 1 >> 0));
  5986  		while (true) {
  5987  			if (!(i < t.$length)) { break; }
  5988  			if (!((((i < 0 || i >= t.$length) ? ($throwRuntimeError("index out of range"), undefined) : t.$array[t.$offset + i]) === c))) {
  5989  				o = IndexByte($subslice(t, i), c);
  5990  				if (o < 0) {
  5991  					break;
  5992  				}
  5993  				i = i + (o) >> 0;
  5994  			}
  5995  			if (Equal($subslice(s, i, (i + n >> 0)), sep)) {
  5996  				return i;
  5997  			}
  5998  			i = i + (1) >> 0;
  5999  			fails = fails + (1) >> 0;
  6000  			if (fails >= (4 + (i >> 4 >> 0) >> 0) && i < t.$length) {
  6001  				j = indexRabinKarp($subslice(s, i), sep);
  6002  				if (j < 0) {
  6003  					return -1;
  6004  				}
  6005  				return i + j >> 0;
  6006  			}
  6007  		}
  6008  		return -1;
  6009  	};
  6010  	$pkg.Index = Index;
  6011  	Reader.ptr.prototype.Len = function() {
  6012  		var r, x, x$1, x$2, x$3, x$4;
  6013  		r = this;
  6014  		if ((x = r.i, x$1 = (new $Int64(0, r.s.$length)), (x.$high > x$1.$high || (x.$high === x$1.$high && x.$low >= x$1.$low)))) {
  6015  			return 0;
  6016  		}
  6017  		return (((x$2 = (x$3 = (new $Int64(0, r.s.$length)), x$4 = r.i, new $Int64(x$3.$high - x$4.$high, x$3.$low - x$4.$low)), x$2.$low + ((x$2.$high >> 31) * 4294967296)) >> 0));
  6018  	};
  6019  	Reader.prototype.Len = function() { return this.$val.Len(); };
  6020  	Reader.ptr.prototype.Size = function() {
  6021  		var r;
  6022  		r = this;
  6023  		return (new $Int64(0, r.s.$length));
  6024  	};
  6025  	Reader.prototype.Size = function() { return this.$val.Size(); };
  6026  	Reader.ptr.prototype.Read = function(b) {
  6027  		var _tmp, _tmp$1, b, err, n, r, x, x$1, x$2, x$3;
  6028  		n = 0;
  6029  		err = $ifaceNil;
  6030  		r = this;
  6031  		if ((x = r.i, x$1 = (new $Int64(0, r.s.$length)), (x.$high > x$1.$high || (x.$high === x$1.$high && x.$low >= x$1.$low)))) {
  6032  			_tmp = 0;
  6033  			_tmp$1 = io.EOF;
  6034  			n = _tmp;
  6035  			err = _tmp$1;
  6036  			return [n, err];
  6037  		}
  6038  		r.prevRune = -1;
  6039  		n = $copySlice(b, $subslice(r.s, $flatten64(r.i)));
  6040  		r.i = (x$2 = r.i, x$3 = (new $Int64(0, n)), new $Int64(x$2.$high + x$3.$high, x$2.$low + x$3.$low));
  6041  		return [n, err];
  6042  	};
  6043  	Reader.prototype.Read = function(b) { return this.$val.Read(b); };
  6044  	Reader.ptr.prototype.ReadAt = function(b, off) {
  6045  		var _tmp, _tmp$1, _tmp$2, _tmp$3, b, err, n, off, r, x;
  6046  		n = 0;
  6047  		err = $ifaceNil;
  6048  		r = this;
  6049  		if ((off.$high < 0 || (off.$high === 0 && off.$low < 0))) {
  6050  			_tmp = 0;
  6051  			_tmp$1 = errors.New("bytes.Reader.ReadAt: negative offset");
  6052  			n = _tmp;
  6053  			err = _tmp$1;
  6054  			return [n, err];
  6055  		}
  6056  		if ((x = (new $Int64(0, r.s.$length)), (off.$high > x.$high || (off.$high === x.$high && off.$low >= x.$low)))) {
  6057  			_tmp$2 = 0;
  6058  			_tmp$3 = io.EOF;
  6059  			n = _tmp$2;
  6060  			err = _tmp$3;
  6061  			return [n, err];
  6062  		}
  6063  		n = $copySlice(b, $subslice(r.s, $flatten64(off)));
  6064  		if (n < b.$length) {
  6065  			err = io.EOF;
  6066  		}
  6067  		return [n, err];
  6068  	};
  6069  	Reader.prototype.ReadAt = function(b, off) { return this.$val.ReadAt(b, off); };
  6070  	Reader.ptr.prototype.ReadByte = function() {
  6071  		var b, r, x, x$1, x$2, x$3, x$4, x$5;
  6072  		r = this;
  6073  		r.prevRune = -1;
  6074  		if ((x = r.i, x$1 = (new $Int64(0, r.s.$length)), (x.$high > x$1.$high || (x.$high === x$1.$high && x.$low >= x$1.$low)))) {
  6075  			return [0, io.EOF];
  6076  		}
  6077  		b = (x$2 = r.s, x$3 = r.i, (($flatten64(x$3) < 0 || $flatten64(x$3) >= x$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + $flatten64(x$3)]));
  6078  		r.i = (x$4 = r.i, x$5 = new $Int64(0, 1), new $Int64(x$4.$high + x$5.$high, x$4.$low + x$5.$low));
  6079  		return [b, $ifaceNil];
  6080  	};
  6081  	Reader.prototype.ReadByte = function() { return this.$val.ReadByte(); };
  6082  	Reader.ptr.prototype.UnreadByte = function() {
  6083  		var r, x, x$1, x$2;
  6084  		r = this;
  6085  		r.prevRune = -1;
  6086  		if ((x = r.i, (x.$high < 0 || (x.$high === 0 && x.$low <= 0)))) {
  6087  			return errors.New("bytes.Reader.UnreadByte: at beginning of slice");
  6088  		}
  6089  		r.i = (x$1 = r.i, x$2 = new $Int64(0, 1), new $Int64(x$1.$high - x$2.$high, x$1.$low - x$2.$low));
  6090  		return $ifaceNil;
  6091  	};
  6092  	Reader.prototype.UnreadByte = function() { return this.$val.UnreadByte(); };
  6093  	Reader.ptr.prototype.ReadRune = function() {
  6094  		var _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tuple, c, ch, err, r, size, x, x$1, x$2, x$3, x$4, x$5, x$6, x$7, x$8;
  6095  		ch = 0;
  6096  		size = 0;
  6097  		err = $ifaceNil;
  6098  		r = this;
  6099  		if ((x = r.i, x$1 = (new $Int64(0, r.s.$length)), (x.$high > x$1.$high || (x.$high === x$1.$high && x.$low >= x$1.$low)))) {
  6100  			r.prevRune = -1;
  6101  			_tmp = 0;
  6102  			_tmp$1 = 0;
  6103  			_tmp$2 = io.EOF;
  6104  			ch = _tmp;
  6105  			size = _tmp$1;
  6106  			err = _tmp$2;
  6107  			return [ch, size, err];
  6108  		}
  6109  		r.prevRune = (((x$2 = r.i, x$2.$low + ((x$2.$high >> 31) * 4294967296)) >> 0));
  6110  		c = (x$3 = r.s, x$4 = r.i, (($flatten64(x$4) < 0 || $flatten64(x$4) >= x$3.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$3.$array[x$3.$offset + $flatten64(x$4)]));
  6111  		if (c < 128) {
  6112  			r.i = (x$5 = r.i, x$6 = new $Int64(0, 1), new $Int64(x$5.$high + x$6.$high, x$5.$low + x$6.$low));
  6113  			_tmp$3 = ((c >> 0));
  6114  			_tmp$4 = 1;
  6115  			_tmp$5 = $ifaceNil;
  6116  			ch = _tmp$3;
  6117  			size = _tmp$4;
  6118  			err = _tmp$5;
  6119  			return [ch, size, err];
  6120  		}
  6121  		_tuple = utf8.DecodeRune($subslice(r.s, $flatten64(r.i)));
  6122  		ch = _tuple[0];
  6123  		size = _tuple[1];
  6124  		r.i = (x$7 = r.i, x$8 = (new $Int64(0, size)), new $Int64(x$7.$high + x$8.$high, x$7.$low + x$8.$low));
  6125  		return [ch, size, err];
  6126  	};
  6127  	Reader.prototype.ReadRune = function() { return this.$val.ReadRune(); };
  6128  	Reader.ptr.prototype.UnreadRune = function() {
  6129  		var r;
  6130  		r = this;
  6131  		if (r.prevRune < 0) {
  6132  			return errors.New("bytes.Reader.UnreadRune: previous operation was not ReadRune");
  6133  		}
  6134  		r.i = (new $Int64(0, r.prevRune));
  6135  		r.prevRune = -1;
  6136  		return $ifaceNil;
  6137  	};
  6138  	Reader.prototype.UnreadRune = function() { return this.$val.UnreadRune(); };
  6139  	Reader.ptr.prototype.Seek = function(offset, whence) {
  6140  		var _1, abs, offset, r, whence, x, x$1;
  6141  		r = this;
  6142  		r.prevRune = -1;
  6143  		abs = new $Int64(0, 0);
  6144  		_1 = whence;
  6145  		if (_1 === (0)) {
  6146  			abs = offset;
  6147  		} else if (_1 === (1)) {
  6148  			abs = (x = r.i, new $Int64(x.$high + offset.$high, x.$low + offset.$low));
  6149  		} else if (_1 === (2)) {
  6150  			abs = (x$1 = (new $Int64(0, r.s.$length)), new $Int64(x$1.$high + offset.$high, x$1.$low + offset.$low));
  6151  		} else {
  6152  			return [new $Int64(0, 0), errors.New("bytes.Reader.Seek: invalid whence")];
  6153  		}
  6154  		if ((abs.$high < 0 || (abs.$high === 0 && abs.$low < 0))) {
  6155  			return [new $Int64(0, 0), errors.New("bytes.Reader.Seek: negative position")];
  6156  		}
  6157  		r.i = abs;
  6158  		return [abs, $ifaceNil];
  6159  	};
  6160  	Reader.prototype.Seek = function(offset, whence) { return this.$val.Seek(offset, whence); };
  6161  	Reader.ptr.prototype.WriteTo = function(w) {
  6162  		var _r, _tmp, _tmp$1, _tuple, b, err, m, n, r, w, x, x$1, x$2, x$3, $s, $r;
  6163  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tuple = $f._tuple; b = $f.b; err = $f.err; m = $f.m; n = $f.n; r = $f.r; w = $f.w; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; x$3 = $f.x$3; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  6164  		n = new $Int64(0, 0);
  6165  		err = $ifaceNil;
  6166  		r = this;
  6167  		r.prevRune = -1;
  6168  		if ((x = r.i, x$1 = (new $Int64(0, r.s.$length)), (x.$high > x$1.$high || (x.$high === x$1.$high && x.$low >= x$1.$low)))) {
  6169  			_tmp = new $Int64(0, 0);
  6170  			_tmp$1 = $ifaceNil;
  6171  			n = _tmp;
  6172  			err = _tmp$1;
  6173  			$s = -1; return [n, err];
  6174  		}
  6175  		b = $subslice(r.s, $flatten64(r.i));
  6176  		_r = w.Write(b); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  6177  		_tuple = _r;
  6178  		m = _tuple[0];
  6179  		err = _tuple[1];
  6180  		if (m > b.$length) {
  6181  			$panic(new $String("bytes.Reader.WriteTo: invalid Write count"));
  6182  		}
  6183  		r.i = (x$2 = r.i, x$3 = (new $Int64(0, m)), new $Int64(x$2.$high + x$3.$high, x$2.$low + x$3.$low));
  6184  		n = (new $Int64(0, m));
  6185  		if (!((m === b.$length)) && $interfaceIsEqual(err, $ifaceNil)) {
  6186  			err = io.ErrShortWrite;
  6187  		}
  6188  		$s = -1; return [n, err];
  6189  		/* */ } return; } if ($f === undefined) { $f = { $blk: Reader.ptr.prototype.WriteTo }; } $f._r = _r; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tuple = _tuple; $f.b = b; $f.err = err; $f.m = m; $f.n = n; $f.r = r; $f.w = w; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.x$3 = x$3; $f.$s = $s; $f.$r = $r; return $f;
  6190  	};
  6191  	Reader.prototype.WriteTo = function(w) { return this.$val.WriteTo(w); };
  6192  	Reader.ptr.prototype.Reset = function(b) {
  6193  		var b, r;
  6194  		r = this;
  6195  		Reader.copy(r, new Reader.ptr(b, new $Int64(0, 0), -1));
  6196  	};
  6197  	Reader.prototype.Reset = function(b) { return this.$val.Reset(b); };
  6198  	NewReader = function(b) {
  6199  		var b;
  6200  		return new Reader.ptr(b, new $Int64(0, 0), -1);
  6201  	};
  6202  	$pkg.NewReader = NewReader;
  6203  	ptrType.methods = [{prop: "Bytes", name: "Bytes", pkg: "", typ: $funcType([], [sliceType], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "empty", name: "empty", pkg: "bytes", typ: $funcType([], [$Bool], false)}, {prop: "Len", name: "Len", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Cap", name: "Cap", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Truncate", name: "Truncate", pkg: "", typ: $funcType([$Int], [], false)}, {prop: "Reset", name: "Reset", pkg: "", typ: $funcType([], [], false)}, {prop: "tryGrowByReslice", name: "tryGrowByReslice", pkg: "bytes", typ: $funcType([$Int], [$Int, $Bool], false)}, {prop: "grow", name: "grow", pkg: "bytes", typ: $funcType([$Int], [$Int], false)}, {prop: "Grow", name: "Grow", pkg: "", typ: $funcType([$Int], [], false)}, {prop: "Write", name: "Write", pkg: "", typ: $funcType([sliceType], [$Int, $error], false)}, {prop: "WriteString", name: "WriteString", pkg: "", typ: $funcType([$String], [$Int, $error], false)}, {prop: "ReadFrom", name: "ReadFrom", pkg: "", typ: $funcType([io.Reader], [$Int64, $error], false)}, {prop: "WriteTo", name: "WriteTo", pkg: "", typ: $funcType([io.Writer], [$Int64, $error], false)}, {prop: "WriteByte", name: "WriteByte", pkg: "", typ: $funcType([$Uint8], [$error], false)}, {prop: "WriteRune", name: "WriteRune", pkg: "", typ: $funcType([$Int32], [$Int, $error], false)}, {prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType], [$Int, $error], false)}, {prop: "Next", name: "Next", pkg: "", typ: $funcType([$Int], [sliceType], false)}, {prop: "ReadByte", name: "ReadByte", pkg: "", typ: $funcType([], [$Uint8, $error], false)}, {prop: "ReadRune", name: "ReadRune", pkg: "", typ: $funcType([], [$Int32, $Int, $error], false)}, {prop: "UnreadRune", name: "UnreadRune", pkg: "", typ: $funcType([], [$error], false)}, {prop: "UnreadByte", name: "UnreadByte", pkg: "", typ: $funcType([], [$error], false)}, {prop: "ReadBytes", name: "ReadBytes", pkg: "", typ: $funcType([$Uint8], [sliceType, $error], false)}, {prop: "readSlice", name: "readSlice", pkg: "bytes", typ: $funcType([$Uint8], [sliceType, $error], false)}, {prop: "ReadString", name: "ReadString", pkg: "", typ: $funcType([$Uint8], [$String, $error], false)}];
  6204  	ptrType$1.methods = [{prop: "contains", name: "contains", pkg: "bytes", typ: $funcType([$Uint8], [$Bool], false)}];
  6205  	ptrType$2.methods = [{prop: "Len", name: "Len", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Size", name: "Size", pkg: "", typ: $funcType([], [$Int64], false)}, {prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType], [$Int, $error], false)}, {prop: "ReadAt", name: "ReadAt", pkg: "", typ: $funcType([sliceType, $Int64], [$Int, $error], false)}, {prop: "ReadByte", name: "ReadByte", pkg: "", typ: $funcType([], [$Uint8, $error], false)}, {prop: "UnreadByte", name: "UnreadByte", pkg: "", typ: $funcType([], [$error], false)}, {prop: "ReadRune", name: "ReadRune", pkg: "", typ: $funcType([], [$Int32, $Int, $error], false)}, {prop: "UnreadRune", name: "UnreadRune", pkg: "", typ: $funcType([], [$error], false)}, {prop: "Seek", name: "Seek", pkg: "", typ: $funcType([$Int64, $Int], [$Int64, $error], false)}, {prop: "WriteTo", name: "WriteTo", pkg: "", typ: $funcType([io.Writer], [$Int64, $error], false)}, {prop: "Reset", name: "Reset", pkg: "", typ: $funcType([sliceType], [], false)}];
  6206  	Buffer.init("bytes", [{prop: "buf", name: "buf", anonymous: false, exported: false, typ: sliceType, tag: ""}, {prop: "off", name: "off", anonymous: false, exported: false, typ: $Int, tag: ""}, {prop: "bootstrap", name: "bootstrap", anonymous: false, exported: false, typ: arrayType, tag: ""}, {prop: "lastRead", name: "lastRead", anonymous: false, exported: false, typ: readOp, tag: ""}]);
  6207  	asciiSet.init($Uint32, 8);
  6208  	Reader.init("bytes", [{prop: "s", name: "s", anonymous: false, exported: false, typ: sliceType, tag: ""}, {prop: "i", name: "i", anonymous: false, exported: false, typ: $Int64, tag: ""}, {prop: "prevRune", name: "prevRune", anonymous: false, exported: false, typ: $Int, tag: ""}]);
  6209  	$init = function() {
  6210  		$pkg.$init = function() {};
  6211  		/* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  6212  		$r = errors.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  6213  		$r = io.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  6214  		$r = unicode.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  6215  		$r = utf8.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  6216  		$pkg.ErrTooLarge = errors.New("bytes.Buffer: too large");
  6217  		errNegativeRead = errors.New("bytes.Buffer: reader returned negative count from Read");
  6218  		/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
  6219  	};
  6220  	$pkg.$init = $init;
  6221  	return $pkg;
  6222  })();
  6223  $packages["encoding"] = (function() {
  6224  	var $pkg = {}, $init, TextMarshaler, TextUnmarshaler, sliceType;
  6225  	TextMarshaler = $pkg.TextMarshaler = $newType(8, $kindInterface, "encoding.TextMarshaler", true, "encoding", true, null);
  6226  	TextUnmarshaler = $pkg.TextUnmarshaler = $newType(8, $kindInterface, "encoding.TextUnmarshaler", true, "encoding", true, null);
  6227  	sliceType = $sliceType($Uint8);
  6228  	TextMarshaler.init([{prop: "MarshalText", name: "MarshalText", pkg: "", typ: $funcType([], [sliceType, $error], false)}]);
  6229  	TextUnmarshaler.init([{prop: "UnmarshalText", name: "UnmarshalText", pkg: "", typ: $funcType([sliceType], [$error], false)}]);
  6230  	$init = function() {
  6231  		$pkg.$init = function() {};
  6232  		/* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  6233  		/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
  6234  	};
  6235  	$pkg.$init = $init;
  6236  	return $pkg;
  6237  })();
  6238  $packages["math"] = (function() {
  6239  	var $pkg = {}, $init, js, arrayType, arrayType$1, arrayType$2, structType, math, zero, posInf, negInf, nan, buf, Exp, Frexp, Inf, IsInf, IsNaN, Ldexp, Log, Log2, NaN, Signbit, Sqrt, init, Float32bits, Float32frombits, Float64bits, Float64frombits, Abs, normalize, frexp, log2;
  6240  	js = $packages["github.com/gopherjs/gopherjs/js"];
  6241  	arrayType = $arrayType($Uint32, 2);
  6242  	arrayType$1 = $arrayType($Float32, 2);
  6243  	arrayType$2 = $arrayType($Float64, 1);
  6244  	structType = $structType("math", [{prop: "uint32array", name: "uint32array", anonymous: false, exported: false, typ: arrayType, tag: ""}, {prop: "float32array", name: "float32array", anonymous: false, exported: false, typ: arrayType$1, tag: ""}, {prop: "float64array", name: "float64array", anonymous: false, exported: false, typ: arrayType$2, tag: ""}]);
  6245  	Exp = function(x) {
  6246  		var x;
  6247  		return $parseFloat(math.exp(x));
  6248  	};
  6249  	$pkg.Exp = Exp;
  6250  	Frexp = function(f) {
  6251  		var _tuple, exp$1, f, frac;
  6252  		frac = 0;
  6253  		exp$1 = 0;
  6254  		_tuple = frexp(f);
  6255  		frac = _tuple[0];
  6256  		exp$1 = _tuple[1];
  6257  		return [frac, exp$1];
  6258  	};
  6259  	$pkg.Frexp = Frexp;
  6260  	Inf = function(sign) {
  6261  		var sign;
  6262  		if (sign >= 0) {
  6263  			return posInf;
  6264  		} else {
  6265  			return negInf;
  6266  		}
  6267  	};
  6268  	$pkg.Inf = Inf;
  6269  	IsInf = function(f, sign) {
  6270  		var f, sign;
  6271  		if (f === posInf) {
  6272  			return sign >= 0;
  6273  		}
  6274  		if (f === negInf) {
  6275  			return sign <= 0;
  6276  		}
  6277  		return false;
  6278  	};
  6279  	$pkg.IsInf = IsInf;
  6280  	IsNaN = function(f) {
  6281  		var f, is;
  6282  		is = false;
  6283  		is = !((f === f));
  6284  		return is;
  6285  	};
  6286  	$pkg.IsNaN = IsNaN;
  6287  	Ldexp = function(frac, exp$1) {
  6288  		var exp$1, frac;
  6289  		if (frac === 0) {
  6290  			return frac;
  6291  		}
  6292  		if (exp$1 >= 1024) {
  6293  			return frac * $parseFloat(math.pow(2, 1023)) * $parseFloat(math.pow(2, exp$1 - 1023 >> 0));
  6294  		}
  6295  		if (exp$1 <= -1024) {
  6296  			return frac * $parseFloat(math.pow(2, -1023)) * $parseFloat(math.pow(2, exp$1 + 1023 >> 0));
  6297  		}
  6298  		return frac * $parseFloat(math.pow(2, exp$1));
  6299  	};
  6300  	$pkg.Ldexp = Ldexp;
  6301  	Log = function(x) {
  6302  		var x;
  6303  		if (!((x === x))) {
  6304  			return nan;
  6305  		}
  6306  		return $parseFloat(math.log(x));
  6307  	};
  6308  	$pkg.Log = Log;
  6309  	Log2 = function(x) {
  6310  		var x;
  6311  		return log2(x);
  6312  	};
  6313  	$pkg.Log2 = Log2;
  6314  	NaN = function() {
  6315  		return nan;
  6316  	};
  6317  	$pkg.NaN = NaN;
  6318  	Signbit = function(x) {
  6319  		var x;
  6320  		return x < 0 || (1 / x === negInf);
  6321  	};
  6322  	$pkg.Signbit = Signbit;
  6323  	Sqrt = function(x) {
  6324  		var x;
  6325  		return $parseFloat(math.sqrt(x));
  6326  	};
  6327  	$pkg.Sqrt = Sqrt;
  6328  	init = function() {
  6329  		var ab;
  6330  		ab = new ($global.ArrayBuffer)(8);
  6331  		buf.uint32array = new ($global.Uint32Array)(ab);
  6332  		buf.float32array = new ($global.Float32Array)(ab);
  6333  		buf.float64array = new ($global.Float64Array)(ab);
  6334  	};
  6335  	Float32bits = function(f) {
  6336  		var f;
  6337  		buf.float32array[0] = f;
  6338  		return buf.uint32array[0];
  6339  	};
  6340  	$pkg.Float32bits = Float32bits;
  6341  	Float32frombits = function(b) {
  6342  		var b;
  6343  		buf.uint32array[0] = b;
  6344  		return buf.float32array[0];
  6345  	};
  6346  	$pkg.Float32frombits = Float32frombits;
  6347  	Float64bits = function(f) {
  6348  		var f, x, x$1;
  6349  		buf.float64array[0] = f;
  6350  		return (x = $shiftLeft64((new $Uint64(0, buf.uint32array[1])), 32), x$1 = (new $Uint64(0, buf.uint32array[0])), new $Uint64(x.$high + x$1.$high, x.$low + x$1.$low));
  6351  	};
  6352  	$pkg.Float64bits = Float64bits;
  6353  	Float64frombits = function(b) {
  6354  		var b;
  6355  		buf.uint32array[0] = ((b.$low >>> 0));
  6356  		buf.uint32array[1] = (($shiftRightUint64(b, 32).$low >>> 0));
  6357  		return buf.float64array[0];
  6358  	};
  6359  	$pkg.Float64frombits = Float64frombits;
  6360  	Abs = function(x) {
  6361  		var x, x$1;
  6362  		return Float64frombits((x$1 = Float64bits(x), new $Uint64(x$1.$high & ~2147483648, (x$1.$low & ~0) >>> 0)));
  6363  	};
  6364  	$pkg.Abs = Abs;
  6365  	normalize = function(x) {
  6366  		var _tmp, _tmp$1, _tmp$2, _tmp$3, exp$1, x, y;
  6367  		y = 0;
  6368  		exp$1 = 0;
  6369  		if (Abs(x) < 2.2250738585072014e-308) {
  6370  			_tmp = x * 4.503599627370496e+15;
  6371  			_tmp$1 = -52;
  6372  			y = _tmp;
  6373  			exp$1 = _tmp$1;
  6374  			return [y, exp$1];
  6375  		}
  6376  		_tmp$2 = x;
  6377  		_tmp$3 = 0;
  6378  		y = _tmp$2;
  6379  		exp$1 = _tmp$3;
  6380  		return [y, exp$1];
  6381  	};
  6382  	frexp = function(f) {
  6383  		var _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, exp$1, f, frac, x, x$1, x$2, x$3;
  6384  		frac = 0;
  6385  		exp$1 = 0;
  6386  		if ((f === 0)) {
  6387  			_tmp = f;
  6388  			_tmp$1 = 0;
  6389  			frac = _tmp;
  6390  			exp$1 = _tmp$1;
  6391  			return [frac, exp$1];
  6392  		} else if (IsInf(f, 0) || IsNaN(f)) {
  6393  			_tmp$2 = f;
  6394  			_tmp$3 = 0;
  6395  			frac = _tmp$2;
  6396  			exp$1 = _tmp$3;
  6397  			return [frac, exp$1];
  6398  		}
  6399  		_tuple = normalize(f);
  6400  		f = _tuple[0];
  6401  		exp$1 = _tuple[1];
  6402  		x = Float64bits(f);
  6403  		exp$1 = exp$1 + ((((((x$1 = $shiftRightUint64(x, 52), new $Uint64(x$1.$high & 0, (x$1.$low & 2047) >>> 0)).$low >> 0)) - 1023 >> 0) + 1 >> 0)) >> 0;
  6404  		x = (x$2 = new $Uint64(2146435072, 0), new $Uint64(x.$high & ~x$2.$high, (x.$low & ~x$2.$low) >>> 0));
  6405  		x = (x$3 = new $Uint64(1071644672, 0), new $Uint64(x.$high | x$3.$high, (x.$low | x$3.$low) >>> 0));
  6406  		frac = Float64frombits(x);
  6407  		return [frac, exp$1];
  6408  	};
  6409  	log2 = function(x) {
  6410  		var _tuple, exp$1, frac, x;
  6411  		_tuple = Frexp(x);
  6412  		frac = _tuple[0];
  6413  		exp$1 = _tuple[1];
  6414  		if (frac === 0.5) {
  6415  			return ((exp$1 - 1 >> 0));
  6416  		}
  6417  		return Log(frac) * 1.4426950408889634 + (exp$1);
  6418  	};
  6419  	$init = function() {
  6420  		$pkg.$init = function() {};
  6421  		/* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  6422  		$r = js.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  6423  		buf = new structType.ptr(arrayType.zero(), arrayType$1.zero(), arrayType$2.zero());
  6424  		math = $global.Math;
  6425  		zero = 0;
  6426  		posInf = 1 / zero;
  6427  		negInf = -1 / zero;
  6428  		nan = 0 / zero;
  6429  		init();
  6430  		/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
  6431  	};
  6432  	$pkg.$init = $init;
  6433  	return $pkg;
  6434  })();
  6435  $packages["strconv"] = (function() {
  6436  	var $pkg = {}, $init, errors, math, utf8, NumError, decimal, leftCheat, extFloat, floatInfo, decimalSlice, sliceType, sliceType$1, sliceType$2, sliceType$3, sliceType$4, sliceType$5, arrayType, sliceType$6, ptrType, arrayType$1, arrayType$2, ptrType$1, arrayType$3, arrayType$4, ptrType$2, ptrType$3, ptrType$4, optimize, powtab, float64pow10, float32pow10, leftcheats, smallPowersOfTen, powersOfTen, uint64pow10, float32info, float32info$24ptr, float64info, float64info$24ptr, isPrint16, isNotPrint16, isPrint32, isNotPrint32, isGraphic, shifts, equalIgnoreCase, special, readFloat, atof64exact, atof32exact, atof32, atof64, ParseFloat, syntaxError, rangeError, baseError, bitSizeError, ParseUint, ParseInt, Atoi, digitZero, trim, rightShift, prefixIsLessThan, leftShift, shouldRoundUp, frexp10Many, adjustLastDigitFixed, adjustLastDigit, AppendFloat, genericFtoa, bigFtoa, formatDigits, roundShortest, fmtE, fmtF, fmtB, min, max, FormatInt, Itoa, AppendInt, small, formatBits, quoteWith, appendQuotedWith, appendQuotedRuneWith, appendEscapedRune, Quote, AppendQuote, AppendQuoteToASCII, AppendQuoteRune, AppendQuoteRuneToASCII, CanBackquote, unhex, UnquoteChar, Unquote, contains, bsearch16, bsearch32, IsPrint, isInGraphicList;
  6437  	errors = $packages["errors"];
  6438  	math = $packages["math"];
  6439  	utf8 = $packages["unicode/utf8"];
  6440  	NumError = $pkg.NumError = $newType(0, $kindStruct, "strconv.NumError", true, "strconv", true, function(Func_, Num_, Err_) {
  6441  		this.$val = this;
  6442  		if (arguments.length === 0) {
  6443  			this.Func = "";
  6444  			this.Num = "";
  6445  			this.Err = $ifaceNil;
  6446  			return;
  6447  		}
  6448  		this.Func = Func_;
  6449  		this.Num = Num_;
  6450  		this.Err = Err_;
  6451  	});
  6452  	decimal = $pkg.decimal = $newType(0, $kindStruct, "strconv.decimal", true, "strconv", false, function(d_, nd_, dp_, neg_, trunc_) {
  6453  		this.$val = this;
  6454  		if (arguments.length === 0) {
  6455  			this.d = arrayType.zero();
  6456  			this.nd = 0;
  6457  			this.dp = 0;
  6458  			this.neg = false;
  6459  			this.trunc = false;
  6460  			return;
  6461  		}
  6462  		this.d = d_;
  6463  		this.nd = nd_;
  6464  		this.dp = dp_;
  6465  		this.neg = neg_;
  6466  		this.trunc = trunc_;
  6467  	});
  6468  	leftCheat = $pkg.leftCheat = $newType(0, $kindStruct, "strconv.leftCheat", true, "strconv", false, function(delta_, cutoff_) {
  6469  		this.$val = this;
  6470  		if (arguments.length === 0) {
  6471  			this.delta = 0;
  6472  			this.cutoff = "";
  6473  			return;
  6474  		}
  6475  		this.delta = delta_;
  6476  		this.cutoff = cutoff_;
  6477  	});
  6478  	extFloat = $pkg.extFloat = $newType(0, $kindStruct, "strconv.extFloat", true, "strconv", false, function(mant_, exp_, neg_) {
  6479  		this.$val = this;
  6480  		if (arguments.length === 0) {
  6481  			this.mant = new $Uint64(0, 0);
  6482  			this.exp = 0;
  6483  			this.neg = false;
  6484  			return;
  6485  		}
  6486  		this.mant = mant_;
  6487  		this.exp = exp_;
  6488  		this.neg = neg_;
  6489  	});
  6490  	floatInfo = $pkg.floatInfo = $newType(0, $kindStruct, "strconv.floatInfo", true, "strconv", false, function(mantbits_, expbits_, bias_) {
  6491  		this.$val = this;
  6492  		if (arguments.length === 0) {
  6493  			this.mantbits = 0;
  6494  			this.expbits = 0;
  6495  			this.bias = 0;
  6496  			return;
  6497  		}
  6498  		this.mantbits = mantbits_;
  6499  		this.expbits = expbits_;
  6500  		this.bias = bias_;
  6501  	});
  6502  	decimalSlice = $pkg.decimalSlice = $newType(0, $kindStruct, "strconv.decimalSlice", true, "strconv", false, function(d_, nd_, dp_, neg_) {
  6503  		this.$val = this;
  6504  		if (arguments.length === 0) {
  6505  			this.d = sliceType$6.nil;
  6506  			this.nd = 0;
  6507  			this.dp = 0;
  6508  			this.neg = false;
  6509  			return;
  6510  		}
  6511  		this.d = d_;
  6512  		this.nd = nd_;
  6513  		this.dp = dp_;
  6514  		this.neg = neg_;
  6515  	});
  6516  	sliceType = $sliceType($Int);
  6517  	sliceType$1 = $sliceType($Float64);
  6518  	sliceType$2 = $sliceType($Float32);
  6519  	sliceType$3 = $sliceType(leftCheat);
  6520  	sliceType$4 = $sliceType($Uint16);
  6521  	sliceType$5 = $sliceType($Uint32);
  6522  	arrayType = $arrayType($Uint8, 800);
  6523  	sliceType$6 = $sliceType($Uint8);
  6524  	ptrType = $ptrType(NumError);
  6525  	arrayType$1 = $arrayType($Uint8, 24);
  6526  	arrayType$2 = $arrayType($Uint8, 32);
  6527  	ptrType$1 = $ptrType(floatInfo);
  6528  	arrayType$3 = $arrayType($Uint8, 65);
  6529  	arrayType$4 = $arrayType($Uint8, 4);
  6530  	ptrType$2 = $ptrType(decimal);
  6531  	ptrType$3 = $ptrType(decimalSlice);
  6532  	ptrType$4 = $ptrType(extFloat);
  6533  	equalIgnoreCase = function(s1, s2) {
  6534  		var c1, c2, i, s1, s2;
  6535  		if (!((s1.length === s2.length))) {
  6536  			return false;
  6537  		}
  6538  		i = 0;
  6539  		while (true) {
  6540  			if (!(i < s1.length)) { break; }
  6541  			c1 = s1.charCodeAt(i);
  6542  			if (65 <= c1 && c1 <= 90) {
  6543  				c1 = c1 + (32) << 24 >>> 24;
  6544  			}
  6545  			c2 = s2.charCodeAt(i);
  6546  			if (65 <= c2 && c2 <= 90) {
  6547  				c2 = c2 + (32) << 24 >>> 24;
  6548  			}
  6549  			if (!((c1 === c2))) {
  6550  				return false;
  6551  			}
  6552  			i = i + (1) >> 0;
  6553  		}
  6554  		return true;
  6555  	};
  6556  	special = function(s) {
  6557  		var _1, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, f, ok, s;
  6558  		f = 0;
  6559  		ok = false;
  6560  		if (s.length === 0) {
  6561  			return [f, ok];
  6562  		}
  6563  		_1 = s.charCodeAt(0);
  6564  		if (_1 === (43)) {
  6565  			if (equalIgnoreCase(s, "+inf") || equalIgnoreCase(s, "+infinity")) {
  6566  				_tmp = math.Inf(1);
  6567  				_tmp$1 = true;
  6568  				f = _tmp;
  6569  				ok = _tmp$1;
  6570  				return [f, ok];
  6571  			}
  6572  		} else if (_1 === (45)) {
  6573  			if (equalIgnoreCase(s, "-inf") || equalIgnoreCase(s, "-infinity")) {
  6574  				_tmp$2 = math.Inf(-1);
  6575  				_tmp$3 = true;
  6576  				f = _tmp$2;
  6577  				ok = _tmp$3;
  6578  				return [f, ok];
  6579  			}
  6580  		} else if ((_1 === (110)) || (_1 === (78))) {
  6581  			if (equalIgnoreCase(s, "nan")) {
  6582  				_tmp$4 = math.NaN();
  6583  				_tmp$5 = true;
  6584  				f = _tmp$4;
  6585  				ok = _tmp$5;
  6586  				return [f, ok];
  6587  			}
  6588  		} else if ((_1 === (105)) || (_1 === (73))) {
  6589  			if (equalIgnoreCase(s, "inf") || equalIgnoreCase(s, "infinity")) {
  6590  				_tmp$6 = math.Inf(1);
  6591  				_tmp$7 = true;
  6592  				f = _tmp$6;
  6593  				ok = _tmp$7;
  6594  				return [f, ok];
  6595  			}
  6596  		} else {
  6597  			return [f, ok];
  6598  		}
  6599  		return [f, ok];
  6600  	};
  6601  	decimal.ptr.prototype.set = function(s) {
  6602  		var b, e, esign, i, ok, s, sawdigits, sawdot, x, x$1;
  6603  		ok = false;
  6604  		b = this;
  6605  		i = 0;
  6606  		b.neg = false;
  6607  		b.trunc = false;
  6608  		if (i >= s.length) {
  6609  			return ok;
  6610  		}
  6611  		if ((s.charCodeAt(i) === 43)) {
  6612  			i = i + (1) >> 0;
  6613  		} else if ((s.charCodeAt(i) === 45)) {
  6614  			b.neg = true;
  6615  			i = i + (1) >> 0;
  6616  		}
  6617  		sawdot = false;
  6618  		sawdigits = false;
  6619  		while (true) {
  6620  			if (!(i < s.length)) { break; }
  6621  			if ((s.charCodeAt(i) === 46)) {
  6622  				if (sawdot) {
  6623  					return ok;
  6624  				}
  6625  				sawdot = true;
  6626  				b.dp = b.nd;
  6627  				i = i + (1) >> 0;
  6628  				continue;
  6629  			} else if (48 <= s.charCodeAt(i) && s.charCodeAt(i) <= 57) {
  6630  				sawdigits = true;
  6631  				if ((s.charCodeAt(i) === 48) && (b.nd === 0)) {
  6632  					b.dp = b.dp - (1) >> 0;
  6633  					i = i + (1) >> 0;
  6634  					continue;
  6635  				}
  6636  				if (b.nd < 800) {
  6637  					(x = b.d, x$1 = b.nd, ((x$1 < 0 || x$1 >= x.length) ? ($throwRuntimeError("index out of range"), undefined) : x[x$1] = s.charCodeAt(i)));
  6638  					b.nd = b.nd + (1) >> 0;
  6639  				} else if (!((s.charCodeAt(i) === 48))) {
  6640  					b.trunc = true;
  6641  				}
  6642  				i = i + (1) >> 0;
  6643  				continue;
  6644  			}
  6645  			break;
  6646  		}
  6647  		if (!sawdigits) {
  6648  			return ok;
  6649  		}
  6650  		if (!sawdot) {
  6651  			b.dp = b.nd;
  6652  		}
  6653  		if (i < s.length && ((s.charCodeAt(i) === 101) || (s.charCodeAt(i) === 69))) {
  6654  			i = i + (1) >> 0;
  6655  			if (i >= s.length) {
  6656  				return ok;
  6657  			}
  6658  			esign = 1;
  6659  			if (s.charCodeAt(i) === 43) {
  6660  				i = i + (1) >> 0;
  6661  			} else if (s.charCodeAt(i) === 45) {
  6662  				i = i + (1) >> 0;
  6663  				esign = -1;
  6664  			}
  6665  			if (i >= s.length || s.charCodeAt(i) < 48 || s.charCodeAt(i) > 57) {
  6666  				return ok;
  6667  			}
  6668  			e = 0;
  6669  			while (true) {
  6670  				if (!(i < s.length && 48 <= s.charCodeAt(i) && s.charCodeAt(i) <= 57)) { break; }
  6671  				if (e < 10000) {
  6672  					e = (($imul(e, 10)) + ((s.charCodeAt(i) >> 0)) >> 0) - 48 >> 0;
  6673  				}
  6674  				i = i + (1) >> 0;
  6675  			}
  6676  			b.dp = b.dp + (($imul(e, esign))) >> 0;
  6677  		}
  6678  		if (!((i === s.length))) {
  6679  			return ok;
  6680  		}
  6681  		ok = true;
  6682  		return ok;
  6683  	};
  6684  	decimal.prototype.set = function(s) { return this.$val.set(s); };
  6685  	readFloat = function(s) {
  6686  		var _1, c, dp, e, esign, exp, i, mantissa, nd, ndMant, neg, ok, s, sawdigits, sawdot, trunc, x;
  6687  		mantissa = new $Uint64(0, 0);
  6688  		exp = 0;
  6689  		neg = false;
  6690  		trunc = false;
  6691  		ok = false;
  6692  		i = 0;
  6693  		if (i >= s.length) {
  6694  			return [mantissa, exp, neg, trunc, ok];
  6695  		}
  6696  		if ((s.charCodeAt(i) === 43)) {
  6697  			i = i + (1) >> 0;
  6698  		} else if ((s.charCodeAt(i) === 45)) {
  6699  			neg = true;
  6700  			i = i + (1) >> 0;
  6701  		}
  6702  		sawdot = false;
  6703  		sawdigits = false;
  6704  		nd = 0;
  6705  		ndMant = 0;
  6706  		dp = 0;
  6707  		while (true) {
  6708  			if (!(i < s.length)) { break; }
  6709  			c = s.charCodeAt(i);
  6710  			_1 = true;
  6711  			if (_1 === ((c === 46))) {
  6712  				if (sawdot) {
  6713  					return [mantissa, exp, neg, trunc, ok];
  6714  				}
  6715  				sawdot = true;
  6716  				dp = nd;
  6717  				i = i + (1) >> 0;
  6718  				continue;
  6719  			} else if (_1 === (48 <= c && c <= 57)) {
  6720  				sawdigits = true;
  6721  				if ((c === 48) && (nd === 0)) {
  6722  					dp = dp - (1) >> 0;
  6723  					i = i + (1) >> 0;
  6724  					continue;
  6725  				}
  6726  				nd = nd + (1) >> 0;
  6727  				if (ndMant < 19) {
  6728  					mantissa = $mul64(mantissa, (new $Uint64(0, 10)));
  6729  					mantissa = (x = (new $Uint64(0, (c - 48 << 24 >>> 24))), new $Uint64(mantissa.$high + x.$high, mantissa.$low + x.$low));
  6730  					ndMant = ndMant + (1) >> 0;
  6731  				} else if (!((s.charCodeAt(i) === 48))) {
  6732  					trunc = true;
  6733  				}
  6734  				i = i + (1) >> 0;
  6735  				continue;
  6736  			}
  6737  			break;
  6738  		}
  6739  		if (!sawdigits) {
  6740  			return [mantissa, exp, neg, trunc, ok];
  6741  		}
  6742  		if (!sawdot) {
  6743  			dp = nd;
  6744  		}
  6745  		if (i < s.length && ((s.charCodeAt(i) === 101) || (s.charCodeAt(i) === 69))) {
  6746  			i = i + (1) >> 0;
  6747  			if (i >= s.length) {
  6748  				return [mantissa, exp, neg, trunc, ok];
  6749  			}
  6750  			esign = 1;
  6751  			if (s.charCodeAt(i) === 43) {
  6752  				i = i + (1) >> 0;
  6753  			} else if (s.charCodeAt(i) === 45) {
  6754  				i = i + (1) >> 0;
  6755  				esign = -1;
  6756  			}
  6757  			if (i >= s.length || s.charCodeAt(i) < 48 || s.charCodeAt(i) > 57) {
  6758  				return [mantissa, exp, neg, trunc, ok];
  6759  			}
  6760  			e = 0;
  6761  			while (true) {
  6762  				if (!(i < s.length && 48 <= s.charCodeAt(i) && s.charCodeAt(i) <= 57)) { break; }
  6763  				if (e < 10000) {
  6764  					e = (($imul(e, 10)) + ((s.charCodeAt(i) >> 0)) >> 0) - 48 >> 0;
  6765  				}
  6766  				i = i + (1) >> 0;
  6767  			}
  6768  			dp = dp + (($imul(e, esign))) >> 0;
  6769  		}
  6770  		if (!((i === s.length))) {
  6771  			return [mantissa, exp, neg, trunc, ok];
  6772  		}
  6773  		if (!((mantissa.$high === 0 && mantissa.$low === 0))) {
  6774  			exp = dp - ndMant >> 0;
  6775  		}
  6776  		ok = true;
  6777  		return [mantissa, exp, neg, trunc, ok];
  6778  	};
  6779  	decimal.ptr.prototype.floatBits = function(flt) {
  6780  		var _tmp, _tmp$1, b, bits, d, exp, flt, mant, n, n$1, n$2, overflow, x, x$1, x$2, x$3, x$4, x$5, x$6, x$7, x$8, y, y$1, y$2, y$3, $s;
  6781  		/* */ $s = 0; s: while (true) { switch ($s) { case 0:
  6782  		b = new $Uint64(0, 0);
  6783  		overflow = false;
  6784  		d = this;
  6785  		exp = 0;
  6786  		mant = new $Uint64(0, 0);
  6787  		/* */ if (d.nd === 0) { $s = 1; continue; }
  6788  		/* */ $s = 2; continue;
  6789  		/* if (d.nd === 0) { */ case 1:
  6790  			mant = new $Uint64(0, 0);
  6791  			exp = flt.bias;
  6792  			/* goto out */ $s = 3; continue;
  6793  		/* } */ case 2:
  6794  		/* */ if (d.dp > 310) { $s = 4; continue; }
  6795  		/* */ $s = 5; continue;
  6796  		/* if (d.dp > 310) { */ case 4:
  6797  			/* goto overflow */ $s = 6; continue;
  6798  		/* } */ case 5:
  6799  		/* */ if (d.dp < -330) { $s = 7; continue; }
  6800  		/* */ $s = 8; continue;
  6801  		/* if (d.dp < -330) { */ case 7:
  6802  			mant = new $Uint64(0, 0);
  6803  			exp = flt.bias;
  6804  			/* goto out */ $s = 3; continue;
  6805  		/* } */ case 8:
  6806  		exp = 0;
  6807  		while (true) {
  6808  			if (!(d.dp > 0)) { break; }
  6809  			n = 0;
  6810  			if (d.dp >= powtab.$length) {
  6811  				n = 27;
  6812  			} else {
  6813  				n = (x = d.dp, ((x < 0 || x >= powtab.$length) ? ($throwRuntimeError("index out of range"), undefined) : powtab.$array[powtab.$offset + x]));
  6814  			}
  6815  			d.Shift(-n);
  6816  			exp = exp + (n) >> 0;
  6817  		}
  6818  		while (true) {
  6819  			if (!(d.dp < 0 || (d.dp === 0) && d.d[0] < 53)) { break; }
  6820  			n$1 = 0;
  6821  			if (-d.dp >= powtab.$length) {
  6822  				n$1 = 27;
  6823  			} else {
  6824  				n$1 = (x$1 = -d.dp, ((x$1 < 0 || x$1 >= powtab.$length) ? ($throwRuntimeError("index out of range"), undefined) : powtab.$array[powtab.$offset + x$1]));
  6825  			}
  6826  			d.Shift(n$1);
  6827  			exp = exp - (n$1) >> 0;
  6828  		}
  6829  		exp = exp - (1) >> 0;
  6830  		if (exp < (flt.bias + 1 >> 0)) {
  6831  			n$2 = (flt.bias + 1 >> 0) - exp >> 0;
  6832  			d.Shift(-n$2);
  6833  			exp = exp + (n$2) >> 0;
  6834  		}
  6835  		/* */ if ((exp - flt.bias >> 0) >= (((y = flt.expbits, y < 32 ? (1 << y) : 0) >> 0) - 1 >> 0)) { $s = 9; continue; }
  6836  		/* */ $s = 10; continue;
  6837  		/* if ((exp - flt.bias >> 0) >= (((y = flt.expbits, y < 32 ? (1 << y) : 0) >> 0) - 1 >> 0)) { */ case 9:
  6838  			/* goto overflow */ $s = 6; continue;
  6839  		/* } */ case 10:
  6840  		d.Shift((((1 + flt.mantbits >>> 0) >> 0)));
  6841  		mant = d.RoundedInteger();
  6842  		/* */ if ((x$2 = $shiftLeft64(new $Uint64(0, 2), flt.mantbits), (mant.$high === x$2.$high && mant.$low === x$2.$low))) { $s = 11; continue; }
  6843  		/* */ $s = 12; continue;
  6844  		/* if ((x$2 = $shiftLeft64(new $Uint64(0, 2), flt.mantbits), (mant.$high === x$2.$high && mant.$low === x$2.$low))) { */ case 11:
  6845  			mant = $shiftRightUint64(mant, (1));
  6846  			exp = exp + (1) >> 0;
  6847  			/* */ if ((exp - flt.bias >> 0) >= (((y$1 = flt.expbits, y$1 < 32 ? (1 << y$1) : 0) >> 0) - 1 >> 0)) { $s = 13; continue; }
  6848  			/* */ $s = 14; continue;
  6849  			/* if ((exp - flt.bias >> 0) >= (((y$1 = flt.expbits, y$1 < 32 ? (1 << y$1) : 0) >> 0) - 1 >> 0)) { */ case 13:
  6850  				/* goto overflow */ $s = 6; continue;
  6851  			/* } */ case 14:
  6852  		/* } */ case 12:
  6853  		if ((x$3 = (x$4 = $shiftLeft64(new $Uint64(0, 1), flt.mantbits), new $Uint64(mant.$high & x$4.$high, (mant.$low & x$4.$low) >>> 0)), (x$3.$high === 0 && x$3.$low === 0))) {
  6854  			exp = flt.bias;
  6855  		}
  6856  		/* goto out */ $s = 3; continue;
  6857  		/* overflow: */ case 6:
  6858  		mant = new $Uint64(0, 0);
  6859  		exp = (((y$2 = flt.expbits, y$2 < 32 ? (1 << y$2) : 0) >> 0) - 1 >> 0) + flt.bias >> 0;
  6860  		overflow = true;
  6861  		/* out: */ case 3:
  6862  		bits = (x$5 = (x$6 = $shiftLeft64(new $Uint64(0, 1), flt.mantbits), new $Uint64(x$6.$high - 0, x$6.$low - 1)), new $Uint64(mant.$high & x$5.$high, (mant.$low & x$5.$low) >>> 0));
  6863  		bits = (x$7 = $shiftLeft64((new $Uint64(0, (((exp - flt.bias >> 0)) & ((((y$3 = flt.expbits, y$3 < 32 ? (1 << y$3) : 0) >> 0) - 1 >> 0))))), flt.mantbits), new $Uint64(bits.$high | x$7.$high, (bits.$low | x$7.$low) >>> 0));
  6864  		if (d.neg) {
  6865  			bits = (x$8 = $shiftLeft64($shiftLeft64(new $Uint64(0, 1), flt.mantbits), flt.expbits), new $Uint64(bits.$high | x$8.$high, (bits.$low | x$8.$low) >>> 0));
  6866  		}
  6867  		_tmp = bits;
  6868  		_tmp$1 = overflow;
  6869  		b = _tmp;
  6870  		overflow = _tmp$1;
  6871  		$s = -1; return [b, overflow];
  6872  		/* */ } return; }
  6873  	};
  6874  	decimal.prototype.floatBits = function(flt) { return this.$val.floatBits(flt); };
  6875  	atof64exact = function(mantissa, exp, neg) {
  6876  		var _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, exp, f, mantissa, neg, ok, x, x$1, x$2;
  6877  		f = 0;
  6878  		ok = false;
  6879  		if (!((x = $shiftRightUint64(mantissa, float64info.mantbits), (x.$high === 0 && x.$low === 0)))) {
  6880  			return [f, ok];
  6881  		}
  6882  		f = ($flatten64(mantissa));
  6883  		if (neg) {
  6884  			f = -f;
  6885  		}
  6886  		if ((exp === 0)) {
  6887  			_tmp = f;
  6888  			_tmp$1 = true;
  6889  			f = _tmp;
  6890  			ok = _tmp$1;
  6891  			return [f, ok];
  6892  		} else if (exp > 0 && exp <= 37) {
  6893  			if (exp > 22) {
  6894  				f = f * ((x$1 = exp - 22 >> 0, ((x$1 < 0 || x$1 >= float64pow10.$length) ? ($throwRuntimeError("index out of range"), undefined) : float64pow10.$array[float64pow10.$offset + x$1])));
  6895  				exp = 22;
  6896  			}
  6897  			if (f > 1e+15 || f < -1e+15) {
  6898  				return [f, ok];
  6899  			}
  6900  			_tmp$2 = f * ((exp < 0 || exp >= float64pow10.$length) ? ($throwRuntimeError("index out of range"), undefined) : float64pow10.$array[float64pow10.$offset + exp]);
  6901  			_tmp$3 = true;
  6902  			f = _tmp$2;
  6903  			ok = _tmp$3;
  6904  			return [f, ok];
  6905  		} else if (exp < 0 && exp >= -22) {
  6906  			_tmp$4 = f / (x$2 = -exp, ((x$2 < 0 || x$2 >= float64pow10.$length) ? ($throwRuntimeError("index out of range"), undefined) : float64pow10.$array[float64pow10.$offset + x$2]));
  6907  			_tmp$5 = true;
  6908  			f = _tmp$4;
  6909  			ok = _tmp$5;
  6910  			return [f, ok];
  6911  		}
  6912  		return [f, ok];
  6913  	};
  6914  	atof32exact = function(mantissa, exp, neg) {
  6915  		var _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, exp, f, mantissa, neg, ok, x, x$1, x$2;
  6916  		f = 0;
  6917  		ok = false;
  6918  		if (!((x = $shiftRightUint64(mantissa, float32info.mantbits), (x.$high === 0 && x.$low === 0)))) {
  6919  			return [f, ok];
  6920  		}
  6921  		f = ($flatten64(mantissa));
  6922  		if (neg) {
  6923  			f = -f;
  6924  		}
  6925  		if ((exp === 0)) {
  6926  			_tmp = f;
  6927  			_tmp$1 = true;
  6928  			f = _tmp;
  6929  			ok = _tmp$1;
  6930  			return [f, ok];
  6931  		} else if (exp > 0 && exp <= 17) {
  6932  			if (exp > 10) {
  6933  				f = $fround(f * ((x$1 = exp - 10 >> 0, ((x$1 < 0 || x$1 >= float32pow10.$length) ? ($throwRuntimeError("index out of range"), undefined) : float32pow10.$array[float32pow10.$offset + x$1]))));
  6934  				exp = 10;
  6935  			}
  6936  			if (f > 1e+07 || f < -1e+07) {
  6937  				return [f, ok];
  6938  			}
  6939  			_tmp$2 = $fround(f * ((exp < 0 || exp >= float32pow10.$length) ? ($throwRuntimeError("index out of range"), undefined) : float32pow10.$array[float32pow10.$offset + exp]));
  6940  			_tmp$3 = true;
  6941  			f = _tmp$2;
  6942  			ok = _tmp$3;
  6943  			return [f, ok];
  6944  		} else if (exp < 0 && exp >= -10) {
  6945  			_tmp$4 = $fround(f / (x$2 = -exp, ((x$2 < 0 || x$2 >= float32pow10.$length) ? ($throwRuntimeError("index out of range"), undefined) : float32pow10.$array[float32pow10.$offset + x$2])));
  6946  			_tmp$5 = true;
  6947  			f = _tmp$4;
  6948  			ok = _tmp$5;
  6949  			return [f, ok];
  6950  		}
  6951  		return [f, ok];
  6952  	};
  6953  	atof32 = function(s) {
  6954  		var _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, b, b$1, d, err, exp, ext, f, f$1, mantissa, neg, ok, ok$1, ok$2, ok$3, ovf, ovf$1, s, trunc, val;
  6955  		f = 0;
  6956  		err = $ifaceNil;
  6957  		_tuple = special(s);
  6958  		val = _tuple[0];
  6959  		ok = _tuple[1];
  6960  		if (ok) {
  6961  			_tmp = ($fround(val));
  6962  			_tmp$1 = $ifaceNil;
  6963  			f = _tmp;
  6964  			err = _tmp$1;
  6965  			return [f, err];
  6966  		}
  6967  		if (optimize) {
  6968  			_tuple$1 = readFloat(s);
  6969  			mantissa = _tuple$1[0];
  6970  			exp = _tuple$1[1];
  6971  			neg = _tuple$1[2];
  6972  			trunc = _tuple$1[3];
  6973  			ok$1 = _tuple$1[4];
  6974  			if (ok$1) {
  6975  				if (!trunc) {
  6976  					_tuple$2 = atof32exact(mantissa, exp, neg);
  6977  					f$1 = _tuple$2[0];
  6978  					ok$2 = _tuple$2[1];
  6979  					if (ok$2) {
  6980  						_tmp$2 = f$1;
  6981  						_tmp$3 = $ifaceNil;
  6982  						f = _tmp$2;
  6983  						err = _tmp$3;
  6984  						return [f, err];
  6985  					}
  6986  				}
  6987  				ext = new extFloat.ptr(new $Uint64(0, 0), 0, false);
  6988  				ok$3 = ext.AssignDecimal(mantissa, exp, neg, trunc, float32info);
  6989  				if (ok$3) {
  6990  					_tuple$3 = ext.floatBits(float32info);
  6991  					b = _tuple$3[0];
  6992  					ovf = _tuple$3[1];
  6993  					f = math.Float32frombits(((b.$low >>> 0)));
  6994  					if (ovf) {
  6995  						err = rangeError("ParseFloat", s);
  6996  					}
  6997  					_tmp$4 = f;
  6998  					_tmp$5 = err;
  6999  					f = _tmp$4;
  7000  					err = _tmp$5;
  7001  					return [f, err];
  7002  				}
  7003  			}
  7004  		}
  7005  		d = new decimal.ptr(arrayType.zero(), 0, 0, false, false);
  7006  		if (!d.set(s)) {
  7007  			_tmp$6 = 0;
  7008  			_tmp$7 = syntaxError("ParseFloat", s);
  7009  			f = _tmp$6;
  7010  			err = _tmp$7;
  7011  			return [f, err];
  7012  		}
  7013  		_tuple$4 = d.floatBits(float32info);
  7014  		b$1 = _tuple$4[0];
  7015  		ovf$1 = _tuple$4[1];
  7016  		f = math.Float32frombits(((b$1.$low >>> 0)));
  7017  		if (ovf$1) {
  7018  			err = rangeError("ParseFloat", s);
  7019  		}
  7020  		_tmp$8 = f;
  7021  		_tmp$9 = err;
  7022  		f = _tmp$8;
  7023  		err = _tmp$9;
  7024  		return [f, err];
  7025  	};
  7026  	atof64 = function(s) {
  7027  		var _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, b, b$1, d, err, exp, ext, f, f$1, mantissa, neg, ok, ok$1, ok$2, ok$3, ovf, ovf$1, s, trunc, val;
  7028  		f = 0;
  7029  		err = $ifaceNil;
  7030  		_tuple = special(s);
  7031  		val = _tuple[0];
  7032  		ok = _tuple[1];
  7033  		if (ok) {
  7034  			_tmp = val;
  7035  			_tmp$1 = $ifaceNil;
  7036  			f = _tmp;
  7037  			err = _tmp$1;
  7038  			return [f, err];
  7039  		}
  7040  		if (optimize) {
  7041  			_tuple$1 = readFloat(s);
  7042  			mantissa = _tuple$1[0];
  7043  			exp = _tuple$1[1];
  7044  			neg = _tuple$1[2];
  7045  			trunc = _tuple$1[3];
  7046  			ok$1 = _tuple$1[4];
  7047  			if (ok$1) {
  7048  				if (!trunc) {
  7049  					_tuple$2 = atof64exact(mantissa, exp, neg);
  7050  					f$1 = _tuple$2[0];
  7051  					ok$2 = _tuple$2[1];
  7052  					if (ok$2) {
  7053  						_tmp$2 = f$1;
  7054  						_tmp$3 = $ifaceNil;
  7055  						f = _tmp$2;
  7056  						err = _tmp$3;
  7057  						return [f, err];
  7058  					}
  7059  				}
  7060  				ext = new extFloat.ptr(new $Uint64(0, 0), 0, false);
  7061  				ok$3 = ext.AssignDecimal(mantissa, exp, neg, trunc, float64info);
  7062  				if (ok$3) {
  7063  					_tuple$3 = ext.floatBits(float64info);
  7064  					b = _tuple$3[0];
  7065  					ovf = _tuple$3[1];
  7066  					f = math.Float64frombits(b);
  7067  					if (ovf) {
  7068  						err = rangeError("ParseFloat", s);
  7069  					}
  7070  					_tmp$4 = f;
  7071  					_tmp$5 = err;
  7072  					f = _tmp$4;
  7073  					err = _tmp$5;
  7074  					return [f, err];
  7075  				}
  7076  			}
  7077  		}
  7078  		d = new decimal.ptr(arrayType.zero(), 0, 0, false, false);
  7079  		if (!d.set(s)) {
  7080  			_tmp$6 = 0;
  7081  			_tmp$7 = syntaxError("ParseFloat", s);
  7082  			f = _tmp$6;
  7083  			err = _tmp$7;
  7084  			return [f, err];
  7085  		}
  7086  		_tuple$4 = d.floatBits(float64info);
  7087  		b$1 = _tuple$4[0];
  7088  		ovf$1 = _tuple$4[1];
  7089  		f = math.Float64frombits(b$1);
  7090  		if (ovf$1) {
  7091  			err = rangeError("ParseFloat", s);
  7092  		}
  7093  		_tmp$8 = f;
  7094  		_tmp$9 = err;
  7095  		f = _tmp$8;
  7096  		err = _tmp$9;
  7097  		return [f, err];
  7098  	};
  7099  	ParseFloat = function(s, bitSize) {
  7100  		var _tuple, bitSize, err, f, s;
  7101  		if (bitSize === 32) {
  7102  			_tuple = atof32(s);
  7103  			f = _tuple[0];
  7104  			err = _tuple[1];
  7105  			return [(f), err];
  7106  		}
  7107  		return atof64(s);
  7108  	};
  7109  	$pkg.ParseFloat = ParseFloat;
  7110  	NumError.ptr.prototype.Error = function() {
  7111  		var _r, e, $s, $r;
  7112  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; e = $f.e; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  7113  		e = this;
  7114  		_r = e.Err.Error(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  7115  		$s = -1; return "strconv." + e.Func + ": " + "parsing " + Quote(e.Num) + ": " + _r;
  7116  		/* */ } return; } if ($f === undefined) { $f = { $blk: NumError.ptr.prototype.Error }; } $f._r = _r; $f.e = e; $f.$s = $s; $f.$r = $r; return $f;
  7117  	};
  7118  	NumError.prototype.Error = function() { return this.$val.Error(); };
  7119  	syntaxError = function(fn, str) {
  7120  		var fn, str;
  7121  		return new NumError.ptr(fn, str, $pkg.ErrSyntax);
  7122  	};
  7123  	rangeError = function(fn, str) {
  7124  		var fn, str;
  7125  		return new NumError.ptr(fn, str, $pkg.ErrRange);
  7126  	};
  7127  	baseError = function(fn, str, base) {
  7128  		var base, fn, str;
  7129  		return new NumError.ptr(fn, str, errors.New("invalid base " + Itoa(base)));
  7130  	};
  7131  	bitSizeError = function(fn, str, bitSize) {
  7132  		var bitSize, fn, str;
  7133  		return new NumError.ptr(fn, str, errors.New("invalid bit size " + Itoa(bitSize)));
  7134  	};
  7135  	ParseUint = function(s, base, bitSize) {
  7136  		var _1, _i, _ref, base, bitSize, c, cutoff, d, maxVal, n, n1, s, s0, x, x$1, x$2;
  7137  		if (s.length === 0) {
  7138  			return [new $Uint64(0, 0), syntaxError("ParseUint", s)];
  7139  		}
  7140  		s0 = s;
  7141  		if (2 <= base && base <= 36) {
  7142  		} else if ((base === 0)) {
  7143  			if ((s.charCodeAt(0) === 48) && s.length > 1 && ((s.charCodeAt(1) === 120) || (s.charCodeAt(1) === 88))) {
  7144  				if (s.length < 3) {
  7145  					return [new $Uint64(0, 0), syntaxError("ParseUint", s0)];
  7146  				}
  7147  				base = 16;
  7148  				s = $substring(s, 2);
  7149  			} else if ((s.charCodeAt(0) === 48)) {
  7150  				base = 8;
  7151  				s = $substring(s, 1);
  7152  			} else {
  7153  				base = 10;
  7154  			}
  7155  		} else {
  7156  			return [new $Uint64(0, 0), baseError("ParseUint", s0, base)];
  7157  		}
  7158  		if (bitSize === 0) {
  7159  			bitSize = 32;
  7160  		} else if (bitSize < 0 || bitSize > 64) {
  7161  			return [new $Uint64(0, 0), bitSizeError("ParseUint", s0, bitSize)];
  7162  		}
  7163  		cutoff = new $Uint64(0, 0);
  7164  		_1 = base;
  7165  		if (_1 === (10)) {
  7166  			cutoff = new $Uint64(429496729, 2576980378);
  7167  		} else if (_1 === (16)) {
  7168  			cutoff = new $Uint64(268435456, 0);
  7169  		} else {
  7170  			cutoff = (x = $div64(new $Uint64(4294967295, 4294967295), (new $Uint64(0, base)), false), new $Uint64(x.$high + 0, x.$low + 1));
  7171  		}
  7172  		maxVal = (x$1 = $shiftLeft64(new $Uint64(0, 1), ((bitSize >>> 0))), new $Uint64(x$1.$high - 0, x$1.$low - 1));
  7173  		n = new $Uint64(0, 0);
  7174  		_ref = (new sliceType$6($stringToBytes(s)));
  7175  		_i = 0;
  7176  		while (true) {
  7177  			if (!(_i < _ref.$length)) { break; }
  7178  			c = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
  7179  			d = 0;
  7180  			if (48 <= c && c <= 57) {
  7181  				d = c - 48 << 24 >>> 24;
  7182  			} else if (97 <= c && c <= 122) {
  7183  				d = (c - 97 << 24 >>> 24) + 10 << 24 >>> 24;
  7184  			} else if (65 <= c && c <= 90) {
  7185  				d = (c - 65 << 24 >>> 24) + 10 << 24 >>> 24;
  7186  			} else {
  7187  				return [new $Uint64(0, 0), syntaxError("ParseUint", s0)];
  7188  			}
  7189  			if (d >= ((base << 24 >>> 24))) {
  7190  				return [new $Uint64(0, 0), syntaxError("ParseUint", s0)];
  7191  			}
  7192  			if ((n.$high > cutoff.$high || (n.$high === cutoff.$high && n.$low >= cutoff.$low))) {
  7193  				return [maxVal, rangeError("ParseUint", s0)];
  7194  			}
  7195  			n = $mul64(n, ((new $Uint64(0, base))));
  7196  			n1 = (x$2 = (new $Uint64(0, d)), new $Uint64(n.$high + x$2.$high, n.$low + x$2.$low));
  7197  			if ((n1.$high < n.$high || (n1.$high === n.$high && n1.$low < n.$low)) || (n1.$high > maxVal.$high || (n1.$high === maxVal.$high && n1.$low > maxVal.$low))) {
  7198  				return [maxVal, rangeError("ParseUint", s0)];
  7199  			}
  7200  			n = n1;
  7201  			_i++;
  7202  		}
  7203  		return [n, $ifaceNil];
  7204  	};
  7205  	$pkg.ParseUint = ParseUint;
  7206  	ParseInt = function(s, base, bitSize) {
  7207  		var _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, base, bitSize, cutoff, err, i, n, neg, s, s0, un, x, x$1;
  7208  		i = new $Int64(0, 0);
  7209  		err = $ifaceNil;
  7210  		if (s.length === 0) {
  7211  			_tmp = new $Int64(0, 0);
  7212  			_tmp$1 = syntaxError("ParseInt", s);
  7213  			i = _tmp;
  7214  			err = _tmp$1;
  7215  			return [i, err];
  7216  		}
  7217  		s0 = s;
  7218  		neg = false;
  7219  		if (s.charCodeAt(0) === 43) {
  7220  			s = $substring(s, 1);
  7221  		} else if (s.charCodeAt(0) === 45) {
  7222  			neg = true;
  7223  			s = $substring(s, 1);
  7224  		}
  7225  		un = new $Uint64(0, 0);
  7226  		_tuple = ParseUint(s, base, bitSize);
  7227  		un = _tuple[0];
  7228  		err = _tuple[1];
  7229  		if (!($interfaceIsEqual(err, $ifaceNil)) && !($interfaceIsEqual($assertType(err, ptrType).Err, $pkg.ErrRange))) {
  7230  			$assertType(err, ptrType).Func = "ParseInt";
  7231  			$assertType(err, ptrType).Num = s0;
  7232  			_tmp$2 = new $Int64(0, 0);
  7233  			_tmp$3 = err;
  7234  			i = _tmp$2;
  7235  			err = _tmp$3;
  7236  			return [i, err];
  7237  		}
  7238  		if (bitSize === 0) {
  7239  			bitSize = 32;
  7240  		}
  7241  		cutoff = ($shiftLeft64(new $Uint64(0, 1), (((bitSize - 1 >> 0) >>> 0))));
  7242  		if (!neg && (un.$high > cutoff.$high || (un.$high === cutoff.$high && un.$low >= cutoff.$low))) {
  7243  			_tmp$4 = ((x = new $Uint64(cutoff.$high - 0, cutoff.$low - 1), new $Int64(x.$high, x.$low)));
  7244  			_tmp$5 = rangeError("ParseInt", s0);
  7245  			i = _tmp$4;
  7246  			err = _tmp$5;
  7247  			return [i, err];
  7248  		}
  7249  		if (neg && (un.$high > cutoff.$high || (un.$high === cutoff.$high && un.$low > cutoff.$low))) {
  7250  			_tmp$6 = (x$1 = (new $Int64(cutoff.$high, cutoff.$low)), new $Int64(-x$1.$high, -x$1.$low));
  7251  			_tmp$7 = rangeError("ParseInt", s0);
  7252  			i = _tmp$6;
  7253  			err = _tmp$7;
  7254  			return [i, err];
  7255  		}
  7256  		n = (new $Int64(un.$high, un.$low));
  7257  		if (neg) {
  7258  			n = new $Int64(-n.$high, -n.$low);
  7259  		}
  7260  		_tmp$8 = n;
  7261  		_tmp$9 = $ifaceNil;
  7262  		i = _tmp$8;
  7263  		err = _tmp$9;
  7264  		return [i, err];
  7265  	};
  7266  	$pkg.ParseInt = ParseInt;
  7267  	Atoi = function(s) {
  7268  		var _i, _ref, _tuple, _tuple$1, ch, err, i64, n, nerr, ok, s, s0, sLen;
  7269  		sLen = s.length;
  7270  		if (true && (0 < sLen && sLen < 10) || false && (0 < sLen && sLen < 19)) {
  7271  			s0 = s;
  7272  			if ((s.charCodeAt(0) === 45) || (s.charCodeAt(0) === 43)) {
  7273  				s = $substring(s, 1);
  7274  				if (s.length < 1) {
  7275  					return [0, new NumError.ptr("Atoi", s0, $pkg.ErrSyntax)];
  7276  				}
  7277  			}
  7278  			n = 0;
  7279  			_ref = (new sliceType$6($stringToBytes(s)));
  7280  			_i = 0;
  7281  			while (true) {
  7282  				if (!(_i < _ref.$length)) { break; }
  7283  				ch = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
  7284  				ch = ch - (48) << 24 >>> 24;
  7285  				if (ch > 9) {
  7286  					return [0, new NumError.ptr("Atoi", s0, $pkg.ErrSyntax)];
  7287  				}
  7288  				n = ($imul(n, 10)) + ((ch >> 0)) >> 0;
  7289  				_i++;
  7290  			}
  7291  			if (s0.charCodeAt(0) === 45) {
  7292  				n = -n;
  7293  			}
  7294  			return [n, $ifaceNil];
  7295  		}
  7296  		_tuple = ParseInt(s, 10, 0);
  7297  		i64 = _tuple[0];
  7298  		err = _tuple[1];
  7299  		_tuple$1 = $assertType(err, ptrType, true);
  7300  		nerr = _tuple$1[0];
  7301  		ok = _tuple$1[1];
  7302  		if (ok) {
  7303  			nerr.Func = "Atoi";
  7304  		}
  7305  		return [(((i64.$low + ((i64.$high >> 31) * 4294967296)) >> 0)), err];
  7306  	};
  7307  	$pkg.Atoi = Atoi;
  7308  	decimal.ptr.prototype.String = function() {
  7309  		var a, buf, n, w;
  7310  		a = this;
  7311  		n = 10 + a.nd >> 0;
  7312  		if (a.dp > 0) {
  7313  			n = n + (a.dp) >> 0;
  7314  		}
  7315  		if (a.dp < 0) {
  7316  			n = n + (-a.dp) >> 0;
  7317  		}
  7318  		buf = $makeSlice(sliceType$6, n);
  7319  		w = 0;
  7320  		if ((a.nd === 0)) {
  7321  			return "0";
  7322  		} else if (a.dp <= 0) {
  7323  			((w < 0 || w >= buf.$length) ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + w] = 48);
  7324  			w = w + (1) >> 0;
  7325  			((w < 0 || w >= buf.$length) ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + w] = 46);
  7326  			w = w + (1) >> 0;
  7327  			w = w + (digitZero($subslice(buf, w, (w + -a.dp >> 0)))) >> 0;
  7328  			w = w + ($copySlice($subslice(buf, w), $subslice(new sliceType$6(a.d), 0, a.nd))) >> 0;
  7329  		} else if (a.dp < a.nd) {
  7330  			w = w + ($copySlice($subslice(buf, w), $subslice(new sliceType$6(a.d), 0, a.dp))) >> 0;
  7331  			((w < 0 || w >= buf.$length) ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + w] = 46);
  7332  			w = w + (1) >> 0;
  7333  			w = w + ($copySlice($subslice(buf, w), $subslice(new sliceType$6(a.d), a.dp, a.nd))) >> 0;
  7334  		} else {
  7335  			w = w + ($copySlice($subslice(buf, w), $subslice(new sliceType$6(a.d), 0, a.nd))) >> 0;
  7336  			w = w + (digitZero($subslice(buf, w, ((w + a.dp >> 0) - a.nd >> 0)))) >> 0;
  7337  		}
  7338  		return ($bytesToString($subslice(buf, 0, w)));
  7339  	};
  7340  	decimal.prototype.String = function() { return this.$val.String(); };
  7341  	digitZero = function(dst) {
  7342  		var _i, _ref, dst, i;
  7343  		_ref = dst;
  7344  		_i = 0;
  7345  		while (true) {
  7346  			if (!(_i < _ref.$length)) { break; }
  7347  			i = _i;
  7348  			((i < 0 || i >= dst.$length) ? ($throwRuntimeError("index out of range"), undefined) : dst.$array[dst.$offset + i] = 48);
  7349  			_i++;
  7350  		}
  7351  		return dst.$length;
  7352  	};
  7353  	trim = function(a) {
  7354  		var a, x, x$1;
  7355  		while (true) {
  7356  			if (!(a.nd > 0 && ((x = a.d, x$1 = a.nd - 1 >> 0, ((x$1 < 0 || x$1 >= x.length) ? ($throwRuntimeError("index out of range"), undefined) : x[x$1])) === 48))) { break; }
  7357  			a.nd = a.nd - (1) >> 0;
  7358  		}
  7359  		if (a.nd === 0) {
  7360  			a.dp = 0;
  7361  		}
  7362  	};
  7363  	decimal.ptr.prototype.Assign = function(v) {
  7364  		var a, buf, n, v, v1, x, x$1, x$2;
  7365  		a = this;
  7366  		buf = arrayType$1.zero();
  7367  		n = 0;
  7368  		while (true) {
  7369  			if (!((v.$high > 0 || (v.$high === 0 && v.$low > 0)))) { break; }
  7370  			v1 = $div64(v, new $Uint64(0, 10), false);
  7371  			v = (x = $mul64(new $Uint64(0, 10), v1), new $Uint64(v.$high - x.$high, v.$low - x.$low));
  7372  			((n < 0 || n >= buf.length) ? ($throwRuntimeError("index out of range"), undefined) : buf[n] = ((new $Uint64(v.$high + 0, v.$low + 48).$low << 24 >>> 24)));
  7373  			n = n + (1) >> 0;
  7374  			v = v1;
  7375  		}
  7376  		a.nd = 0;
  7377  		n = n - (1) >> 0;
  7378  		while (true) {
  7379  			if (!(n >= 0)) { break; }
  7380  			(x$1 = a.d, x$2 = a.nd, ((x$2 < 0 || x$2 >= x$1.length) ? ($throwRuntimeError("index out of range"), undefined) : x$1[x$2] = ((n < 0 || n >= buf.length) ? ($throwRuntimeError("index out of range"), undefined) : buf[n])));
  7381  			a.nd = a.nd + (1) >> 0;
  7382  			n = n - (1) >> 0;
  7383  		}
  7384  		a.dp = a.nd;
  7385  		trim(a);
  7386  	};
  7387  	decimal.prototype.Assign = function(v) { return this.$val.Assign(v); };
  7388  	rightShift = function(a, k) {
  7389  		var a, c, c$1, dig, dig$1, k, mask, n, r, w, x, x$1, x$2, x$3, y, y$1, y$2, y$3, y$4;
  7390  		r = 0;
  7391  		w = 0;
  7392  		n = 0;
  7393  		while (true) {
  7394  			if (!(((y = k, y < 32 ? (n >>> y) : 0) >>> 0) === 0)) { break; }
  7395  			if (r >= a.nd) {
  7396  				if (n === 0) {
  7397  					a.nd = 0;
  7398  					return;
  7399  				}
  7400  				while (true) {
  7401  					if (!(((y$1 = k, y$1 < 32 ? (n >>> y$1) : 0) >>> 0) === 0)) { break; }
  7402  					n = n * 10 >>> 0;
  7403  					r = r + (1) >> 0;
  7404  				}
  7405  				break;
  7406  			}
  7407  			c = (((x = a.d, ((r < 0 || r >= x.length) ? ($throwRuntimeError("index out of range"), undefined) : x[r])) >>> 0));
  7408  			n = ((n * 10 >>> 0) + c >>> 0) - 48 >>> 0;
  7409  			r = r + (1) >> 0;
  7410  		}
  7411  		a.dp = a.dp - ((r - 1 >> 0)) >> 0;
  7412  		mask = (((y$2 = k, y$2 < 32 ? (1 << y$2) : 0) >>> 0)) - 1 >>> 0;
  7413  		while (true) {
  7414  			if (!(r < a.nd)) { break; }
  7415  			c$1 = (((x$1 = a.d, ((r < 0 || r >= x$1.length) ? ($throwRuntimeError("index out of range"), undefined) : x$1[r])) >>> 0));
  7416  			dig = (y$3 = k, y$3 < 32 ? (n >>> y$3) : 0) >>> 0;
  7417  			n = (n & (mask)) >>> 0;
  7418  			(x$2 = a.d, ((w < 0 || w >= x$2.length) ? ($throwRuntimeError("index out of range"), undefined) : x$2[w] = (((dig + 48 >>> 0) << 24 >>> 24))));
  7419  			w = w + (1) >> 0;
  7420  			n = ((n * 10 >>> 0) + c$1 >>> 0) - 48 >>> 0;
  7421  			r = r + (1) >> 0;
  7422  		}
  7423  		while (true) {
  7424  			if (!(n > 0)) { break; }
  7425  			dig$1 = (y$4 = k, y$4 < 32 ? (n >>> y$4) : 0) >>> 0;
  7426  			n = (n & (mask)) >>> 0;
  7427  			if (w < 800) {
  7428  				(x$3 = a.d, ((w < 0 || w >= x$3.length) ? ($throwRuntimeError("index out of range"), undefined) : x$3[w] = (((dig$1 + 48 >>> 0) << 24 >>> 24))));
  7429  				w = w + (1) >> 0;
  7430  			} else if (dig$1 > 0) {
  7431  				a.trunc = true;
  7432  			}
  7433  			n = n * 10 >>> 0;
  7434  		}
  7435  		a.nd = w;
  7436  		trim(a);
  7437  	};
  7438  	prefixIsLessThan = function(b, s) {
  7439  		var b, i, s;
  7440  		i = 0;
  7441  		while (true) {
  7442  			if (!(i < s.length)) { break; }
  7443  			if (i >= b.$length) {
  7444  				return true;
  7445  			}
  7446  			if (!((((i < 0 || i >= b.$length) ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + i]) === s.charCodeAt(i)))) {
  7447  				return ((i < 0 || i >= b.$length) ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + i]) < s.charCodeAt(i);
  7448  			}
  7449  			i = i + (1) >> 0;
  7450  		}
  7451  		return false;
  7452  	};
  7453  	leftShift = function(a, k) {
  7454  		var _q, _q$1, a, delta, k, n, quo, quo$1, r, rem, rem$1, w, x, x$1, x$2, y;
  7455  		delta = ((k < 0 || k >= leftcheats.$length) ? ($throwRuntimeError("index out of range"), undefined) : leftcheats.$array[leftcheats.$offset + k]).delta;
  7456  		if (prefixIsLessThan($subslice(new sliceType$6(a.d), 0, a.nd), ((k < 0 || k >= leftcheats.$length) ? ($throwRuntimeError("index out of range"), undefined) : leftcheats.$array[leftcheats.$offset + k]).cutoff)) {
  7457  			delta = delta - (1) >> 0;
  7458  		}
  7459  		r = a.nd;
  7460  		w = a.nd + delta >> 0;
  7461  		n = 0;
  7462  		r = r - (1) >> 0;
  7463  		while (true) {
  7464  			if (!(r >= 0)) { break; }
  7465  			n = n + (((y = k, y < 32 ? ((((((x = a.d, ((r < 0 || r >= x.length) ? ($throwRuntimeError("index out of range"), undefined) : x[r])) >>> 0)) - 48 >>> 0)) << y) : 0) >>> 0)) >>> 0;
  7466  			quo = (_q = n / 10, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >>> 0 : $throwRuntimeError("integer divide by zero"));
  7467  			rem = n - (10 * quo >>> 0) >>> 0;
  7468  			w = w - (1) >> 0;
  7469  			if (w < 800) {
  7470  				(x$1 = a.d, ((w < 0 || w >= x$1.length) ? ($throwRuntimeError("index out of range"), undefined) : x$1[w] = (((rem + 48 >>> 0) << 24 >>> 24))));
  7471  			} else if (!((rem === 0))) {
  7472  				a.trunc = true;
  7473  			}
  7474  			n = quo;
  7475  			r = r - (1) >> 0;
  7476  		}
  7477  		while (true) {
  7478  			if (!(n > 0)) { break; }
  7479  			quo$1 = (_q$1 = n / 10, (_q$1 === _q$1 && _q$1 !== 1/0 && _q$1 !== -1/0) ? _q$1 >>> 0 : $throwRuntimeError("integer divide by zero"));
  7480  			rem$1 = n - (10 * quo$1 >>> 0) >>> 0;
  7481  			w = w - (1) >> 0;
  7482  			if (w < 800) {
  7483  				(x$2 = a.d, ((w < 0 || w >= x$2.length) ? ($throwRuntimeError("index out of range"), undefined) : x$2[w] = (((rem$1 + 48 >>> 0) << 24 >>> 24))));
  7484  			} else if (!((rem$1 === 0))) {
  7485  				a.trunc = true;
  7486  			}
  7487  			n = quo$1;
  7488  		}
  7489  		a.nd = a.nd + (delta) >> 0;
  7490  		if (a.nd >= 800) {
  7491  			a.nd = 800;
  7492  		}
  7493  		a.dp = a.dp + (delta) >> 0;
  7494  		trim(a);
  7495  	};
  7496  	decimal.ptr.prototype.Shift = function(k) {
  7497  		var a, k;
  7498  		a = this;
  7499  		if ((a.nd === 0)) {
  7500  		} else if (k > 0) {
  7501  			while (true) {
  7502  				if (!(k > 28)) { break; }
  7503  				leftShift(a, 28);
  7504  				k = k - (28) >> 0;
  7505  			}
  7506  			leftShift(a, ((k >>> 0)));
  7507  		} else if (k < 0) {
  7508  			while (true) {
  7509  				if (!(k < -28)) { break; }
  7510  				rightShift(a, 28);
  7511  				k = k + (28) >> 0;
  7512  			}
  7513  			rightShift(a, ((-k >>> 0)));
  7514  		}
  7515  	};
  7516  	decimal.prototype.Shift = function(k) { return this.$val.Shift(k); };
  7517  	shouldRoundUp = function(a, nd) {
  7518  		var _r, a, nd, x, x$1, x$2, x$3;
  7519  		if (nd < 0 || nd >= a.nd) {
  7520  			return false;
  7521  		}
  7522  		if (((x = a.d, ((nd < 0 || nd >= x.length) ? ($throwRuntimeError("index out of range"), undefined) : x[nd])) === 53) && ((nd + 1 >> 0) === a.nd)) {
  7523  			if (a.trunc) {
  7524  				return true;
  7525  			}
  7526  			return nd > 0 && !(((_r = (((x$1 = a.d, x$2 = nd - 1 >> 0, ((x$2 < 0 || x$2 >= x$1.length) ? ($throwRuntimeError("index out of range"), undefined) : x$1[x$2])) - 48 << 24 >>> 24)) % 2, _r === _r ? _r : $throwRuntimeError("integer divide by zero")) === 0));
  7527  		}
  7528  		return (x$3 = a.d, ((nd < 0 || nd >= x$3.length) ? ($throwRuntimeError("index out of range"), undefined) : x$3[nd])) >= 53;
  7529  	};
  7530  	decimal.ptr.prototype.Round = function(nd) {
  7531  		var a, nd;
  7532  		a = this;
  7533  		if (nd < 0 || nd >= a.nd) {
  7534  			return;
  7535  		}
  7536  		if (shouldRoundUp(a, nd)) {
  7537  			a.RoundUp(nd);
  7538  		} else {
  7539  			a.RoundDown(nd);
  7540  		}
  7541  	};
  7542  	decimal.prototype.Round = function(nd) { return this.$val.Round(nd); };
  7543  	decimal.ptr.prototype.RoundDown = function(nd) {
  7544  		var a, nd;
  7545  		a = this;
  7546  		if (nd < 0 || nd >= a.nd) {
  7547  			return;
  7548  		}
  7549  		a.nd = nd;
  7550  		trim(a);
  7551  	};
  7552  	decimal.prototype.RoundDown = function(nd) { return this.$val.RoundDown(nd); };
  7553  	decimal.ptr.prototype.RoundUp = function(nd) {
  7554  		var a, c, i, nd, x, x$1, x$2;
  7555  		a = this;
  7556  		if (nd < 0 || nd >= a.nd) {
  7557  			return;
  7558  		}
  7559  		i = nd - 1 >> 0;
  7560  		while (true) {
  7561  			if (!(i >= 0)) { break; }
  7562  			c = (x = a.d, ((i < 0 || i >= x.length) ? ($throwRuntimeError("index out of range"), undefined) : x[i]));
  7563  			if (c < 57) {
  7564  				(x$2 = a.d, ((i < 0 || i >= x$2.length) ? ($throwRuntimeError("index out of range"), undefined) : x$2[i] = ((x$1 = a.d, ((i < 0 || i >= x$1.length) ? ($throwRuntimeError("index out of range"), undefined) : x$1[i])) + (1) << 24 >>> 24)));
  7565  				a.nd = i + 1 >> 0;
  7566  				return;
  7567  			}
  7568  			i = i - (1) >> 0;
  7569  		}
  7570  		a.d[0] = 49;
  7571  		a.nd = 1;
  7572  		a.dp = a.dp + (1) >> 0;
  7573  	};
  7574  	decimal.prototype.RoundUp = function(nd) { return this.$val.RoundUp(nd); };
  7575  	decimal.ptr.prototype.RoundedInteger = function() {
  7576  		var a, i, n, x, x$1, x$2, x$3;
  7577  		a = this;
  7578  		if (a.dp > 20) {
  7579  			return new $Uint64(4294967295, 4294967295);
  7580  		}
  7581  		i = 0;
  7582  		n = new $Uint64(0, 0);
  7583  		i = 0;
  7584  		while (true) {
  7585  			if (!(i < a.dp && i < a.nd)) { break; }
  7586  			n = (x = $mul64(n, new $Uint64(0, 10)), x$1 = (new $Uint64(0, ((x$2 = a.d, ((i < 0 || i >= x$2.length) ? ($throwRuntimeError("index out of range"), undefined) : x$2[i])) - 48 << 24 >>> 24))), new $Uint64(x.$high + x$1.$high, x.$low + x$1.$low));
  7587  			i = i + (1) >> 0;
  7588  		}
  7589  		while (true) {
  7590  			if (!(i < a.dp)) { break; }
  7591  			n = $mul64(n, (new $Uint64(0, 10)));
  7592  			i = i + (1) >> 0;
  7593  		}
  7594  		if (shouldRoundUp(a, a.dp)) {
  7595  			n = (x$3 = new $Uint64(0, 1), new $Uint64(n.$high + x$3.$high, n.$low + x$3.$low));
  7596  		}
  7597  		return n;
  7598  	};
  7599  	decimal.prototype.RoundedInteger = function() { return this.$val.RoundedInteger(); };
  7600  	extFloat.ptr.prototype.floatBits = function(flt) {
  7601  		var bits, exp, f, flt, mant, n, overflow, x, x$1, x$10, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9, y, y$1, y$2;
  7602  		bits = new $Uint64(0, 0);
  7603  		overflow = false;
  7604  		f = this;
  7605  		f.Normalize();
  7606  		exp = f.exp + 63 >> 0;
  7607  		if (exp < (flt.bias + 1 >> 0)) {
  7608  			n = (flt.bias + 1 >> 0) - exp >> 0;
  7609  			f.mant = $shiftRightUint64(f.mant, (((n >>> 0))));
  7610  			exp = exp + (n) >> 0;
  7611  		}
  7612  		mant = $shiftRightUint64(f.mant, ((63 - flt.mantbits >>> 0)));
  7613  		if (!((x = (x$1 = f.mant, x$2 = $shiftLeft64(new $Uint64(0, 1), ((62 - flt.mantbits >>> 0))), new $Uint64(x$1.$high & x$2.$high, (x$1.$low & x$2.$low) >>> 0)), (x.$high === 0 && x.$low === 0)))) {
  7614  			mant = (x$3 = new $Uint64(0, 1), new $Uint64(mant.$high + x$3.$high, mant.$low + x$3.$low));
  7615  		}
  7616  		if ((x$4 = $shiftLeft64(new $Uint64(0, 2), flt.mantbits), (mant.$high === x$4.$high && mant.$low === x$4.$low))) {
  7617  			mant = $shiftRightUint64(mant, (1));
  7618  			exp = exp + (1) >> 0;
  7619  		}
  7620  		if ((exp - flt.bias >> 0) >= (((y = flt.expbits, y < 32 ? (1 << y) : 0) >> 0) - 1 >> 0)) {
  7621  			mant = new $Uint64(0, 0);
  7622  			exp = (((y$1 = flt.expbits, y$1 < 32 ? (1 << y$1) : 0) >> 0) - 1 >> 0) + flt.bias >> 0;
  7623  			overflow = true;
  7624  		} else if ((x$5 = (x$6 = $shiftLeft64(new $Uint64(0, 1), flt.mantbits), new $Uint64(mant.$high & x$6.$high, (mant.$low & x$6.$low) >>> 0)), (x$5.$high === 0 && x$5.$low === 0))) {
  7625  			exp = flt.bias;
  7626  		}
  7627  		bits = (x$7 = (x$8 = $shiftLeft64(new $Uint64(0, 1), flt.mantbits), new $Uint64(x$8.$high - 0, x$8.$low - 1)), new $Uint64(mant.$high & x$7.$high, (mant.$low & x$7.$low) >>> 0));
  7628  		bits = (x$9 = $shiftLeft64((new $Uint64(0, (((exp - flt.bias >> 0)) & ((((y$2 = flt.expbits, y$2 < 32 ? (1 << y$2) : 0) >> 0) - 1 >> 0))))), flt.mantbits), new $Uint64(bits.$high | x$9.$high, (bits.$low | x$9.$low) >>> 0));
  7629  		if (f.neg) {
  7630  			bits = (x$10 = $shiftLeft64(new $Uint64(0, 1), ((flt.mantbits + flt.expbits >>> 0))), new $Uint64(bits.$high | x$10.$high, (bits.$low | x$10.$low) >>> 0));
  7631  		}
  7632  		return [bits, overflow];
  7633  	};
  7634  	extFloat.prototype.floatBits = function(flt) { return this.$val.floatBits(flt); };
  7635  	extFloat.ptr.prototype.AssignComputeBounds = function(mant, exp, neg, flt) {
  7636  		var _tmp, _tmp$1, exp, expBiased, f, flt, lower, mant, neg, upper, x, x$1, x$2, x$3, x$4;
  7637  		lower = new extFloat.ptr(new $Uint64(0, 0), 0, false);
  7638  		upper = new extFloat.ptr(new $Uint64(0, 0), 0, false);
  7639  		f = this;
  7640  		f.mant = mant;
  7641  		f.exp = exp - ((flt.mantbits >> 0)) >> 0;
  7642  		f.neg = neg;
  7643  		if (f.exp <= 0 && (x = $shiftLeft64(($shiftRightUint64(mant, ((-f.exp >>> 0)))), ((-f.exp >>> 0))), (mant.$high === x.$high && mant.$low === x.$low))) {
  7644  			f.mant = $shiftRightUint64(f.mant, (((-f.exp >>> 0))));
  7645  			f.exp = 0;
  7646  			_tmp = $clone(f, extFloat);
  7647  			_tmp$1 = $clone(f, extFloat);
  7648  			extFloat.copy(lower, _tmp);
  7649  			extFloat.copy(upper, _tmp$1);
  7650  			return [lower, upper];
  7651  		}
  7652  		expBiased = exp - flt.bias >> 0;
  7653  		extFloat.copy(upper, new extFloat.ptr((x$1 = $mul64(new $Uint64(0, 2), f.mant), new $Uint64(x$1.$high + 0, x$1.$low + 1)), f.exp - 1 >> 0, f.neg));
  7654  		if (!((x$2 = $shiftLeft64(new $Uint64(0, 1), flt.mantbits), (mant.$high === x$2.$high && mant.$low === x$2.$low))) || (expBiased === 1)) {
  7655  			extFloat.copy(lower, new extFloat.ptr((x$3 = $mul64(new $Uint64(0, 2), f.mant), new $Uint64(x$3.$high - 0, x$3.$low - 1)), f.exp - 1 >> 0, f.neg));
  7656  		} else {
  7657  			extFloat.copy(lower, new extFloat.ptr((x$4 = $mul64(new $Uint64(0, 4), f.mant), new $Uint64(x$4.$high - 0, x$4.$low - 1)), f.exp - 2 >> 0, f.neg));
  7658  		}
  7659  		return [lower, upper];
  7660  	};
  7661  	extFloat.prototype.AssignComputeBounds = function(mant, exp, neg, flt) { return this.$val.AssignComputeBounds(mant, exp, neg, flt); };
  7662  	extFloat.ptr.prototype.Normalize = function() {
  7663  		var _tmp, _tmp$1, _tmp$2, _tmp$3, exp, f, mant, shift, x, x$1, x$2, x$3, x$4, x$5;
  7664  		shift = 0;
  7665  		f = this;
  7666  		_tmp = f.mant;
  7667  		_tmp$1 = f.exp;
  7668  		mant = _tmp;
  7669  		exp = _tmp$1;
  7670  		if ((mant.$high === 0 && mant.$low === 0)) {
  7671  			shift = 0;
  7672  			return shift;
  7673  		}
  7674  		if ((x = $shiftRightUint64(mant, 32), (x.$high === 0 && x.$low === 0))) {
  7675  			mant = $shiftLeft64(mant, (32));
  7676  			exp = exp - (32) >> 0;
  7677  		}
  7678  		if ((x$1 = $shiftRightUint64(mant, 48), (x$1.$high === 0 && x$1.$low === 0))) {
  7679  			mant = $shiftLeft64(mant, (16));
  7680  			exp = exp - (16) >> 0;
  7681  		}
  7682  		if ((x$2 = $shiftRightUint64(mant, 56), (x$2.$high === 0 && x$2.$low === 0))) {
  7683  			mant = $shiftLeft64(mant, (8));
  7684  			exp = exp - (8) >> 0;
  7685  		}
  7686  		if ((x$3 = $shiftRightUint64(mant, 60), (x$3.$high === 0 && x$3.$low === 0))) {
  7687  			mant = $shiftLeft64(mant, (4));
  7688  			exp = exp - (4) >> 0;
  7689  		}
  7690  		if ((x$4 = $shiftRightUint64(mant, 62), (x$4.$high === 0 && x$4.$low === 0))) {
  7691  			mant = $shiftLeft64(mant, (2));
  7692  			exp = exp - (2) >> 0;
  7693  		}
  7694  		if ((x$5 = $shiftRightUint64(mant, 63), (x$5.$high === 0 && x$5.$low === 0))) {
  7695  			mant = $shiftLeft64(mant, (1));
  7696  			exp = exp - (1) >> 0;
  7697  		}
  7698  		shift = (((f.exp - exp >> 0) >>> 0));
  7699  		_tmp$2 = mant;
  7700  		_tmp$3 = exp;
  7701  		f.mant = _tmp$2;
  7702  		f.exp = _tmp$3;
  7703  		return shift;
  7704  	};
  7705  	extFloat.prototype.Normalize = function() { return this.$val.Normalize(); };
  7706  	extFloat.ptr.prototype.Multiply = function(g) {
  7707  		var _tmp, _tmp$1, _tmp$2, _tmp$3, cross1, cross2, f, fhi, flo, g, ghi, glo, rem, x, x$1, x$10, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9;
  7708  		f = this;
  7709  		_tmp = $shiftRightUint64(f.mant, 32);
  7710  		_tmp$1 = (new $Uint64(0, ((f.mant.$low >>> 0))));
  7711  		fhi = _tmp;
  7712  		flo = _tmp$1;
  7713  		_tmp$2 = $shiftRightUint64(g.mant, 32);
  7714  		_tmp$3 = (new $Uint64(0, ((g.mant.$low >>> 0))));
  7715  		ghi = _tmp$2;
  7716  		glo = _tmp$3;
  7717  		cross1 = $mul64(fhi, glo);
  7718  		cross2 = $mul64(flo, ghi);
  7719  		f.mant = (x = (x$1 = $mul64(fhi, ghi), x$2 = $shiftRightUint64(cross1, 32), new $Uint64(x$1.$high + x$2.$high, x$1.$low + x$2.$low)), x$3 = $shiftRightUint64(cross2, 32), new $Uint64(x.$high + x$3.$high, x.$low + x$3.$low));
  7720  		rem = (x$4 = (x$5 = (new $Uint64(0, ((cross1.$low >>> 0)))), x$6 = (new $Uint64(0, ((cross2.$low >>> 0)))), new $Uint64(x$5.$high + x$6.$high, x$5.$low + x$6.$low)), x$7 = $shiftRightUint64(($mul64(flo, glo)), 32), new $Uint64(x$4.$high + x$7.$high, x$4.$low + x$7.$low));
  7721  		rem = (x$8 = new $Uint64(0, 2147483648), new $Uint64(rem.$high + x$8.$high, rem.$low + x$8.$low));
  7722  		f.mant = (x$9 = f.mant, x$10 = ($shiftRightUint64(rem, 32)), new $Uint64(x$9.$high + x$10.$high, x$9.$low + x$10.$low));
  7723  		f.exp = (f.exp + g.exp >> 0) + 64 >> 0;
  7724  	};
  7725  	extFloat.prototype.Multiply = function(g) { return this.$val.Multiply(g); };
  7726  	extFloat.ptr.prototype.AssignDecimal = function(mantissa, exp10, neg, trunc, flt) {
  7727  		var _q, _r, adjExp, denormalExp, errors$1, exp10, extrabits, f, flt, halfway, i, mant_extra, mantissa, neg, ok, shift, trunc, x, x$1, x$10, x$11, x$12, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9, y;
  7728  		ok = false;
  7729  		f = this;
  7730  		errors$1 = 0;
  7731  		if (trunc) {
  7732  			errors$1 = errors$1 + (4) >> 0;
  7733  		}
  7734  		f.mant = mantissa;
  7735  		f.exp = 0;
  7736  		f.neg = neg;
  7737  		i = (_q = ((exp10 - -348 >> 0)) / 8, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero"));
  7738  		if (exp10 < -348 || i >= 87) {
  7739  			ok = false;
  7740  			return ok;
  7741  		}
  7742  		adjExp = (_r = ((exp10 - -348 >> 0)) % 8, _r === _r ? _r : $throwRuntimeError("integer divide by zero"));
  7743  		if (adjExp < 19 && (x = (x$1 = 19 - adjExp >> 0, ((x$1 < 0 || x$1 >= uint64pow10.length) ? ($throwRuntimeError("index out of range"), undefined) : uint64pow10[x$1])), (mantissa.$high < x.$high || (mantissa.$high === x.$high && mantissa.$low < x.$low)))) {
  7744  			f.mant = $mul64(f.mant, (((adjExp < 0 || adjExp >= uint64pow10.length) ? ($throwRuntimeError("index out of range"), undefined) : uint64pow10[adjExp])));
  7745  			f.Normalize();
  7746  		} else {
  7747  			f.Normalize();
  7748  			f.Multiply($clone(((adjExp < 0 || adjExp >= smallPowersOfTen.length) ? ($throwRuntimeError("index out of range"), undefined) : smallPowersOfTen[adjExp]), extFloat));
  7749  			errors$1 = errors$1 + (4) >> 0;
  7750  		}
  7751  		f.Multiply($clone(((i < 0 || i >= powersOfTen.length) ? ($throwRuntimeError("index out of range"), undefined) : powersOfTen[i]), extFloat));
  7752  		if (errors$1 > 0) {
  7753  			errors$1 = errors$1 + (1) >> 0;
  7754  		}
  7755  		errors$1 = errors$1 + (4) >> 0;
  7756  		shift = f.Normalize();
  7757  		errors$1 = (y = (shift), y < 32 ? (errors$1 << y) : 0) >> 0;
  7758  		denormalExp = flt.bias - 63 >> 0;
  7759  		extrabits = 0;
  7760  		if (f.exp <= denormalExp) {
  7761  			extrabits = ((63 - flt.mantbits >>> 0) + 1 >>> 0) + (((denormalExp - f.exp >> 0) >>> 0)) >>> 0;
  7762  		} else {
  7763  			extrabits = 63 - flt.mantbits >>> 0;
  7764  		}
  7765  		halfway = $shiftLeft64(new $Uint64(0, 1), ((extrabits - 1 >>> 0)));
  7766  		mant_extra = (x$2 = f.mant, x$3 = (x$4 = $shiftLeft64(new $Uint64(0, 1), extrabits), new $Uint64(x$4.$high - 0, x$4.$low - 1)), new $Uint64(x$2.$high & x$3.$high, (x$2.$low & x$3.$low) >>> 0));
  7767  		if ((x$5 = (x$6 = (new $Int64(halfway.$high, halfway.$low)), x$7 = (new $Int64(0, errors$1)), new $Int64(x$6.$high - x$7.$high, x$6.$low - x$7.$low)), x$8 = (new $Int64(mant_extra.$high, mant_extra.$low)), (x$5.$high < x$8.$high || (x$5.$high === x$8.$high && x$5.$low < x$8.$low))) && (x$9 = (new $Int64(mant_extra.$high, mant_extra.$low)), x$10 = (x$11 = (new $Int64(halfway.$high, halfway.$low)), x$12 = (new $Int64(0, errors$1)), new $Int64(x$11.$high + x$12.$high, x$11.$low + x$12.$low)), (x$9.$high < x$10.$high || (x$9.$high === x$10.$high && x$9.$low < x$10.$low)))) {
  7768  			ok = false;
  7769  			return ok;
  7770  		}
  7771  		ok = true;
  7772  		return ok;
  7773  	};
  7774  	extFloat.prototype.AssignDecimal = function(mantissa, exp10, neg, trunc, flt) { return this.$val.AssignDecimal(mantissa, exp10, neg, trunc, flt); };
  7775  	extFloat.ptr.prototype.frexp10 = function() {
  7776  		var _q, _q$1, _tmp, _tmp$1, approxExp10, exp, exp10, f, i, index;
  7777  		exp10 = 0;
  7778  		index = 0;
  7779  		f = this;
  7780  		approxExp10 = (_q = ($imul(((-46 - f.exp >> 0)), 28)) / 93, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero"));
  7781  		i = (_q$1 = ((approxExp10 - -348 >> 0)) / 8, (_q$1 === _q$1 && _q$1 !== 1/0 && _q$1 !== -1/0) ? _q$1 >> 0 : $throwRuntimeError("integer divide by zero"));
  7782  		Loop:
  7783  		while (true) {
  7784  			exp = (f.exp + ((i < 0 || i >= powersOfTen.length) ? ($throwRuntimeError("index out of range"), undefined) : powersOfTen[i]).exp >> 0) + 64 >> 0;
  7785  			if (exp < -60) {
  7786  				i = i + (1) >> 0;
  7787  			} else if (exp > -32) {
  7788  				i = i - (1) >> 0;
  7789  			} else {
  7790  				break Loop;
  7791  			}
  7792  		}
  7793  		f.Multiply($clone(((i < 0 || i >= powersOfTen.length) ? ($throwRuntimeError("index out of range"), undefined) : powersOfTen[i]), extFloat));
  7794  		_tmp = -((-348 + ($imul(i, 8)) >> 0));
  7795  		_tmp$1 = i;
  7796  		exp10 = _tmp;
  7797  		index = _tmp$1;
  7798  		return [exp10, index];
  7799  	};
  7800  	extFloat.prototype.frexp10 = function() { return this.$val.frexp10(); };
  7801  	frexp10Many = function(a, b, c) {
  7802  		var _tuple, a, b, c, exp10, i;
  7803  		exp10 = 0;
  7804  		_tuple = c.frexp10();
  7805  		exp10 = _tuple[0];
  7806  		i = _tuple[1];
  7807  		a.Multiply($clone(((i < 0 || i >= powersOfTen.length) ? ($throwRuntimeError("index out of range"), undefined) : powersOfTen[i]), extFloat));
  7808  		b.Multiply($clone(((i < 0 || i >= powersOfTen.length) ? ($throwRuntimeError("index out of range"), undefined) : powersOfTen[i]), extFloat));
  7809  		return exp10;
  7810  	};
  7811  	extFloat.ptr.prototype.FixedDecimal = function(d, n) {
  7812  		var $CE$B5, _q, _q$1, _tmp, _tmp$1, _tuple, buf, d, digit, exp10, f, fraction, i, i$1, i$2, integer, integerDigits, n, nd, needed, ok, pos, pow, pow10, rest, shift, v, v1, x, x$1, x$10, x$11, x$12, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9;
  7813  		f = this;
  7814  		if ((x = f.mant, (x.$high === 0 && x.$low === 0))) {
  7815  			d.nd = 0;
  7816  			d.dp = 0;
  7817  			d.neg = f.neg;
  7818  			return true;
  7819  		}
  7820  		if (n === 0) {
  7821  			$panic(new $String("strconv: internal error: extFloat.FixedDecimal called with n == 0"));
  7822  		}
  7823  		f.Normalize();
  7824  		_tuple = f.frexp10();
  7825  		exp10 = _tuple[0];
  7826  		shift = ((-f.exp >>> 0));
  7827  		integer = (($shiftRightUint64(f.mant, shift).$low >>> 0));
  7828  		fraction = (x$1 = f.mant, x$2 = $shiftLeft64((new $Uint64(0, integer)), shift), new $Uint64(x$1.$high - x$2.$high, x$1.$low - x$2.$low));
  7829  		$CE$B5 = new $Uint64(0, 1);
  7830  		needed = n;
  7831  		integerDigits = 0;
  7832  		pow10 = new $Uint64(0, 1);
  7833  		_tmp = 0;
  7834  		_tmp$1 = new $Uint64(0, 1);
  7835  		i = _tmp;
  7836  		pow = _tmp$1;
  7837  		while (true) {
  7838  			if (!(i < 20)) { break; }
  7839  			if ((x$3 = (new $Uint64(0, integer)), (pow.$high > x$3.$high || (pow.$high === x$3.$high && pow.$low > x$3.$low)))) {
  7840  				integerDigits = i;
  7841  				break;
  7842  			}
  7843  			pow = $mul64(pow, (new $Uint64(0, 10)));
  7844  			i = i + (1) >> 0;
  7845  		}
  7846  		rest = integer;
  7847  		if (integerDigits > needed) {
  7848  			pow10 = (x$4 = integerDigits - needed >> 0, ((x$4 < 0 || x$4 >= uint64pow10.length) ? ($throwRuntimeError("index out of range"), undefined) : uint64pow10[x$4]));
  7849  			integer = (_q = integer / (((pow10.$low >>> 0))), (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >>> 0 : $throwRuntimeError("integer divide by zero"));
  7850  			rest = rest - (($imul(integer, ((pow10.$low >>> 0))) >>> 0)) >>> 0;
  7851  		} else {
  7852  			rest = 0;
  7853  		}
  7854  		buf = arrayType$2.zero();
  7855  		pos = 32;
  7856  		v = integer;
  7857  		while (true) {
  7858  			if (!(v > 0)) { break; }
  7859  			v1 = (_q$1 = v / 10, (_q$1 === _q$1 && _q$1 !== 1/0 && _q$1 !== -1/0) ? _q$1 >>> 0 : $throwRuntimeError("integer divide by zero"));
  7860  			v = v - (($imul(10, v1) >>> 0)) >>> 0;
  7861  			pos = pos - (1) >> 0;
  7862  			((pos < 0 || pos >= buf.length) ? ($throwRuntimeError("index out of range"), undefined) : buf[pos] = (((v + 48 >>> 0) << 24 >>> 24)));
  7863  			v = v1;
  7864  		}
  7865  		i$1 = pos;
  7866  		while (true) {
  7867  			if (!(i$1 < 32)) { break; }
  7868  			(x$5 = d.d, x$6 = i$1 - pos >> 0, ((x$6 < 0 || x$6 >= x$5.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$5.$array[x$5.$offset + x$6] = ((i$1 < 0 || i$1 >= buf.length) ? ($throwRuntimeError("index out of range"), undefined) : buf[i$1])));
  7869  			i$1 = i$1 + (1) >> 0;
  7870  		}
  7871  		nd = 32 - pos >> 0;
  7872  		d.nd = nd;
  7873  		d.dp = integerDigits + exp10 >> 0;
  7874  		needed = needed - (nd) >> 0;
  7875  		if (needed > 0) {
  7876  			if (!((rest === 0)) || !((pow10.$high === 0 && pow10.$low === 1))) {
  7877  				$panic(new $String("strconv: internal error, rest != 0 but needed > 0"));
  7878  			}
  7879  			while (true) {
  7880  				if (!(needed > 0)) { break; }
  7881  				fraction = $mul64(fraction, (new $Uint64(0, 10)));
  7882  				$CE$B5 = $mul64($CE$B5, (new $Uint64(0, 10)));
  7883  				if ((x$7 = $mul64(new $Uint64(0, 2), $CE$B5), x$8 = $shiftLeft64(new $Uint64(0, 1), shift), (x$7.$high > x$8.$high || (x$7.$high === x$8.$high && x$7.$low > x$8.$low)))) {
  7884  					return false;
  7885  				}
  7886  				digit = $shiftRightUint64(fraction, shift);
  7887  				(x$9 = d.d, ((nd < 0 || nd >= x$9.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$9.$array[x$9.$offset + nd] = ((new $Uint64(digit.$high + 0, digit.$low + 48).$low << 24 >>> 24))));
  7888  				fraction = (x$10 = $shiftLeft64(digit, shift), new $Uint64(fraction.$high - x$10.$high, fraction.$low - x$10.$low));
  7889  				nd = nd + (1) >> 0;
  7890  				needed = needed - (1) >> 0;
  7891  			}
  7892  			d.nd = nd;
  7893  		}
  7894  		ok = adjustLastDigitFixed(d, (x$11 = $shiftLeft64((new $Uint64(0, rest)), shift), new $Uint64(x$11.$high | fraction.$high, (x$11.$low | fraction.$low) >>> 0)), pow10, shift, $CE$B5);
  7895  		if (!ok) {
  7896  			return false;
  7897  		}
  7898  		i$2 = d.nd - 1 >> 0;
  7899  		while (true) {
  7900  			if (!(i$2 >= 0)) { break; }
  7901  			if (!(((x$12 = d.d, ((i$2 < 0 || i$2 >= x$12.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$12.$array[x$12.$offset + i$2])) === 48))) {
  7902  				d.nd = i$2 + 1 >> 0;
  7903  				break;
  7904  			}
  7905  			i$2 = i$2 - (1) >> 0;
  7906  		}
  7907  		return true;
  7908  	};
  7909  	extFloat.prototype.FixedDecimal = function(d, n) { return this.$val.FixedDecimal(d, n); };
  7910  	adjustLastDigitFixed = function(d, num, den, shift, $CE$B5) {
  7911  		var $CE$B5, d, den, i, num, shift, x, x$1, x$10, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9;
  7912  		if ((x = $shiftLeft64(den, shift), (num.$high > x.$high || (num.$high === x.$high && num.$low > x.$low)))) {
  7913  			$panic(new $String("strconv: num > den<<shift in adjustLastDigitFixed"));
  7914  		}
  7915  		if ((x$1 = $mul64(new $Uint64(0, 2), $CE$B5), x$2 = $shiftLeft64(den, shift), (x$1.$high > x$2.$high || (x$1.$high === x$2.$high && x$1.$low > x$2.$low)))) {
  7916  			$panic(new $String("strconv: \xCE\xB5 > (den<<shift)/2"));
  7917  		}
  7918  		if ((x$3 = $mul64(new $Uint64(0, 2), (new $Uint64(num.$high + $CE$B5.$high, num.$low + $CE$B5.$low))), x$4 = $shiftLeft64(den, shift), (x$3.$high < x$4.$high || (x$3.$high === x$4.$high && x$3.$low < x$4.$low)))) {
  7919  			return true;
  7920  		}
  7921  		if ((x$5 = $mul64(new $Uint64(0, 2), (new $Uint64(num.$high - $CE$B5.$high, num.$low - $CE$B5.$low))), x$6 = $shiftLeft64(den, shift), (x$5.$high > x$6.$high || (x$5.$high === x$6.$high && x$5.$low > x$6.$low)))) {
  7922  			i = d.nd - 1 >> 0;
  7923  			while (true) {
  7924  				if (!(i >= 0)) { break; }
  7925  				if ((x$7 = d.d, ((i < 0 || i >= x$7.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$7.$array[x$7.$offset + i])) === 57) {
  7926  					d.nd = d.nd - (1) >> 0;
  7927  				} else {
  7928  					break;
  7929  				}
  7930  				i = i - (1) >> 0;
  7931  			}
  7932  			if (i < 0) {
  7933  				(x$8 = d.d, (0 >= x$8.$length ? ($throwRuntimeError("index out of range"), undefined) : x$8.$array[x$8.$offset + 0] = 49));
  7934  				d.nd = 1;
  7935  				d.dp = d.dp + (1) >> 0;
  7936  			} else {
  7937  				(x$10 = d.d, ((i < 0 || i >= x$10.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$10.$array[x$10.$offset + i] = ((x$9 = d.d, ((i < 0 || i >= x$9.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$9.$array[x$9.$offset + i])) + (1) << 24 >>> 24)));
  7938  			}
  7939  			return true;
  7940  		}
  7941  		return false;
  7942  	};
  7943  	extFloat.ptr.prototype.ShortestDecimal = function(d, lower, upper) {
  7944  		var _q, _tmp, _tmp$1, _tmp$2, _tmp$3, allowance, buf, currentDiff, d, digit, digit$1, exp10, f, fraction, i, i$1, i$2, integer, integerDigits, lower, multiplier, n, nd, pow, pow$1, shift, targetDiff, upper, v, v1, x, x$1, x$10, x$11, x$12, x$13, x$14, x$15, x$16, x$17, x$18, x$19, x$2, x$20, x$21, x$22, x$23, x$3, x$4, x$5, x$6, x$7, x$8, x$9;
  7945  		f = this;
  7946  		if ((x = f.mant, (x.$high === 0 && x.$low === 0))) {
  7947  			d.nd = 0;
  7948  			d.dp = 0;
  7949  			d.neg = f.neg;
  7950  			return true;
  7951  		}
  7952  		if ((f.exp === 0) && $equal(lower, f, extFloat) && $equal(lower, upper, extFloat)) {
  7953  			buf = arrayType$1.zero();
  7954  			n = 23;
  7955  			v = f.mant;
  7956  			while (true) {
  7957  				if (!((v.$high > 0 || (v.$high === 0 && v.$low > 0)))) { break; }
  7958  				v1 = $div64(v, new $Uint64(0, 10), false);
  7959  				v = (x$1 = $mul64(new $Uint64(0, 10), v1), new $Uint64(v.$high - x$1.$high, v.$low - x$1.$low));
  7960  				((n < 0 || n >= buf.length) ? ($throwRuntimeError("index out of range"), undefined) : buf[n] = ((new $Uint64(v.$high + 0, v.$low + 48).$low << 24 >>> 24)));
  7961  				n = n - (1) >> 0;
  7962  				v = v1;
  7963  			}
  7964  			nd = (24 - n >> 0) - 1 >> 0;
  7965  			i = 0;
  7966  			while (true) {
  7967  				if (!(i < nd)) { break; }
  7968  				(x$3 = d.d, ((i < 0 || i >= x$3.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$3.$array[x$3.$offset + i] = (x$2 = (n + 1 >> 0) + i >> 0, ((x$2 < 0 || x$2 >= buf.length) ? ($throwRuntimeError("index out of range"), undefined) : buf[x$2]))));
  7969  				i = i + (1) >> 0;
  7970  			}
  7971  			_tmp = nd;
  7972  			_tmp$1 = nd;
  7973  			d.nd = _tmp;
  7974  			d.dp = _tmp$1;
  7975  			while (true) {
  7976  				if (!(d.nd > 0 && ((x$4 = d.d, x$5 = d.nd - 1 >> 0, ((x$5 < 0 || x$5 >= x$4.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$4.$array[x$4.$offset + x$5])) === 48))) { break; }
  7977  				d.nd = d.nd - (1) >> 0;
  7978  			}
  7979  			if (d.nd === 0) {
  7980  				d.dp = 0;
  7981  			}
  7982  			d.neg = f.neg;
  7983  			return true;
  7984  		}
  7985  		upper.Normalize();
  7986  		if (f.exp > upper.exp) {
  7987  			f.mant = $shiftLeft64(f.mant, ((((f.exp - upper.exp >> 0) >>> 0))));
  7988  			f.exp = upper.exp;
  7989  		}
  7990  		if (lower.exp > upper.exp) {
  7991  			lower.mant = $shiftLeft64(lower.mant, ((((lower.exp - upper.exp >> 0) >>> 0))));
  7992  			lower.exp = upper.exp;
  7993  		}
  7994  		exp10 = frexp10Many(lower, f, upper);
  7995  		upper.mant = (x$6 = upper.mant, x$7 = new $Uint64(0, 1), new $Uint64(x$6.$high + x$7.$high, x$6.$low + x$7.$low));
  7996  		lower.mant = (x$8 = lower.mant, x$9 = new $Uint64(0, 1), new $Uint64(x$8.$high - x$9.$high, x$8.$low - x$9.$low));
  7997  		shift = ((-upper.exp >>> 0));
  7998  		integer = (($shiftRightUint64(upper.mant, shift).$low >>> 0));
  7999  		fraction = (x$10 = upper.mant, x$11 = $shiftLeft64((new $Uint64(0, integer)), shift), new $Uint64(x$10.$high - x$11.$high, x$10.$low - x$11.$low));
  8000  		allowance = (x$12 = upper.mant, x$13 = lower.mant, new $Uint64(x$12.$high - x$13.$high, x$12.$low - x$13.$low));
  8001  		targetDiff = (x$14 = upper.mant, x$15 = f.mant, new $Uint64(x$14.$high - x$15.$high, x$14.$low - x$15.$low));
  8002  		integerDigits = 0;
  8003  		_tmp$2 = 0;
  8004  		_tmp$3 = new $Uint64(0, 1);
  8005  		i$1 = _tmp$2;
  8006  		pow = _tmp$3;
  8007  		while (true) {
  8008  			if (!(i$1 < 20)) { break; }
  8009  			if ((x$16 = (new $Uint64(0, integer)), (pow.$high > x$16.$high || (pow.$high === x$16.$high && pow.$low > x$16.$low)))) {
  8010  				integerDigits = i$1;
  8011  				break;
  8012  			}
  8013  			pow = $mul64(pow, (new $Uint64(0, 10)));
  8014  			i$1 = i$1 + (1) >> 0;
  8015  		}
  8016  		i$2 = 0;
  8017  		while (true) {
  8018  			if (!(i$2 < integerDigits)) { break; }
  8019  			pow$1 = (x$17 = (integerDigits - i$2 >> 0) - 1 >> 0, ((x$17 < 0 || x$17 >= uint64pow10.length) ? ($throwRuntimeError("index out of range"), undefined) : uint64pow10[x$17]));
  8020  			digit = (_q = integer / ((pow$1.$low >>> 0)), (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >>> 0 : $throwRuntimeError("integer divide by zero"));
  8021  			(x$18 = d.d, ((i$2 < 0 || i$2 >= x$18.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$18.$array[x$18.$offset + i$2] = (((digit + 48 >>> 0) << 24 >>> 24))));
  8022  			integer = integer - (($imul(digit, ((pow$1.$low >>> 0))) >>> 0)) >>> 0;
  8023  			currentDiff = (x$19 = $shiftLeft64((new $Uint64(0, integer)), shift), new $Uint64(x$19.$high + fraction.$high, x$19.$low + fraction.$low));
  8024  			if ((currentDiff.$high < allowance.$high || (currentDiff.$high === allowance.$high && currentDiff.$low < allowance.$low))) {
  8025  				d.nd = i$2 + 1 >> 0;
  8026  				d.dp = integerDigits + exp10 >> 0;
  8027  				d.neg = f.neg;
  8028  				return adjustLastDigit(d, currentDiff, targetDiff, allowance, $shiftLeft64(pow$1, shift), new $Uint64(0, 2));
  8029  			}
  8030  			i$2 = i$2 + (1) >> 0;
  8031  		}
  8032  		d.nd = integerDigits;
  8033  		d.dp = d.nd + exp10 >> 0;
  8034  		d.neg = f.neg;
  8035  		digit$1 = 0;
  8036  		multiplier = new $Uint64(0, 1);
  8037  		while (true) {
  8038  			fraction = $mul64(fraction, (new $Uint64(0, 10)));
  8039  			multiplier = $mul64(multiplier, (new $Uint64(0, 10)));
  8040  			digit$1 = (($shiftRightUint64(fraction, shift).$low >> 0));
  8041  			(x$20 = d.d, x$21 = d.nd, ((x$21 < 0 || x$21 >= x$20.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$20.$array[x$20.$offset + x$21] = (((digit$1 + 48 >> 0) << 24 >>> 24))));
  8042  			d.nd = d.nd + (1) >> 0;
  8043  			fraction = (x$22 = $shiftLeft64((new $Uint64(0, digit$1)), shift), new $Uint64(fraction.$high - x$22.$high, fraction.$low - x$22.$low));
  8044  			if ((x$23 = $mul64(allowance, multiplier), (fraction.$high < x$23.$high || (fraction.$high === x$23.$high && fraction.$low < x$23.$low)))) {
  8045  				return adjustLastDigit(d, fraction, $mul64(targetDiff, multiplier), $mul64(allowance, multiplier), $shiftLeft64(new $Uint64(0, 1), shift), $mul64(multiplier, new $Uint64(0, 2)));
  8046  			}
  8047  		}
  8048  	};
  8049  	extFloat.prototype.ShortestDecimal = function(d, lower, upper) { return this.$val.ShortestDecimal(d, lower, upper); };
  8050  	adjustLastDigit = function(d, currentDiff, targetDiff, maxDiff, ulpDecimal, ulpBinary) {
  8051  		var _index, currentDiff, d, maxDiff, targetDiff, ulpBinary, ulpDecimal, x, x$1, x$10, x$11, x$12, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9;
  8052  		if ((x = $mul64(new $Uint64(0, 2), ulpBinary), (ulpDecimal.$high < x.$high || (ulpDecimal.$high === x.$high && ulpDecimal.$low < x.$low)))) {
  8053  			return false;
  8054  		}
  8055  		while (true) {
  8056  			if (!((x$1 = (x$2 = (x$3 = $div64(ulpDecimal, new $Uint64(0, 2), false), new $Uint64(currentDiff.$high + x$3.$high, currentDiff.$low + x$3.$low)), new $Uint64(x$2.$high + ulpBinary.$high, x$2.$low + ulpBinary.$low)), (x$1.$high < targetDiff.$high || (x$1.$high === targetDiff.$high && x$1.$low < targetDiff.$low))))) { break; }
  8057  			_index = d.nd - 1 >> 0;
  8058  			(x$5 = d.d, ((_index < 0 || _index >= x$5.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$5.$array[x$5.$offset + _index] = ((x$4 = d.d, ((_index < 0 || _index >= x$4.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$4.$array[x$4.$offset + _index])) - (1) << 24 >>> 24)));
  8059  			currentDiff = (x$6 = ulpDecimal, new $Uint64(currentDiff.$high + x$6.$high, currentDiff.$low + x$6.$low));
  8060  		}
  8061  		if ((x$7 = new $Uint64(currentDiff.$high + ulpDecimal.$high, currentDiff.$low + ulpDecimal.$low), x$8 = (x$9 = (x$10 = $div64(ulpDecimal, new $Uint64(0, 2), false), new $Uint64(targetDiff.$high + x$10.$high, targetDiff.$low + x$10.$low)), new $Uint64(x$9.$high + ulpBinary.$high, x$9.$low + ulpBinary.$low)), (x$7.$high < x$8.$high || (x$7.$high === x$8.$high && x$7.$low <= x$8.$low)))) {
  8062  			return false;
  8063  		}
  8064  		if ((currentDiff.$high < ulpBinary.$high || (currentDiff.$high === ulpBinary.$high && currentDiff.$low < ulpBinary.$low)) || (x$11 = new $Uint64(maxDiff.$high - ulpBinary.$high, maxDiff.$low - ulpBinary.$low), (currentDiff.$high > x$11.$high || (currentDiff.$high === x$11.$high && currentDiff.$low > x$11.$low)))) {
  8065  			return false;
  8066  		}
  8067  		if ((d.nd === 1) && ((x$12 = d.d, (0 >= x$12.$length ? ($throwRuntimeError("index out of range"), undefined) : x$12.$array[x$12.$offset + 0])) === 48)) {
  8068  			d.nd = 0;
  8069  			d.dp = 0;
  8070  		}
  8071  		return true;
  8072  	};
  8073  	AppendFloat = function(dst, f, fmt, prec, bitSize) {
  8074  		var bitSize, dst, f, fmt, prec;
  8075  		return genericFtoa(dst, f, fmt, prec, bitSize);
  8076  	};
  8077  	$pkg.AppendFloat = AppendFloat;
  8078  	genericFtoa = function(dst, val, fmt, prec, bitSize) {
  8079  		var _1, _2, _3, _4, _tuple, bitSize, bits, buf, buf$1, digits, digs, dst, exp, f, f$1, flt, fmt, lower, mant, neg, ok, prec, s, shortest, upper, val, x, x$1, x$2, x$3, y, y$1;
  8080  		bits = new $Uint64(0, 0);
  8081  		flt = ptrType$1.nil;
  8082  		_1 = bitSize;
  8083  		if (_1 === (32)) {
  8084  			bits = (new $Uint64(0, math.Float32bits(($fround(val)))));
  8085  			flt = float32info;
  8086  		} else if (_1 === (64)) {
  8087  			bits = math.Float64bits(val);
  8088  			flt = float64info;
  8089  		} else {
  8090  			$panic(new $String("strconv: illegal AppendFloat/FormatFloat bitSize"));
  8091  		}
  8092  		neg = !((x = $shiftRightUint64(bits, ((flt.expbits + flt.mantbits >>> 0))), (x.$high === 0 && x.$low === 0)));
  8093  		exp = (($shiftRightUint64(bits, flt.mantbits).$low >> 0)) & ((((y = flt.expbits, y < 32 ? (1 << y) : 0) >> 0) - 1 >> 0));
  8094  		mant = (x$1 = (x$2 = $shiftLeft64(new $Uint64(0, 1), flt.mantbits), new $Uint64(x$2.$high - 0, x$2.$low - 1)), new $Uint64(bits.$high & x$1.$high, (bits.$low & x$1.$low) >>> 0));
  8095  		_2 = exp;
  8096  		if (_2 === ((((y$1 = flt.expbits, y$1 < 32 ? (1 << y$1) : 0) >> 0) - 1 >> 0))) {
  8097  			s = "";
  8098  			if (!((mant.$high === 0 && mant.$low === 0))) {
  8099  				s = "NaN";
  8100  			} else if (neg) {
  8101  				s = "-Inf";
  8102  			} else {
  8103  				s = "+Inf";
  8104  			}
  8105  			return $appendSlice(dst, s);
  8106  		} else if (_2 === (0)) {
  8107  			exp = exp + (1) >> 0;
  8108  		} else {
  8109  			mant = (x$3 = $shiftLeft64(new $Uint64(0, 1), flt.mantbits), new $Uint64(mant.$high | x$3.$high, (mant.$low | x$3.$low) >>> 0));
  8110  		}
  8111  		exp = exp + (flt.bias) >> 0;
  8112  		if (fmt === 98) {
  8113  			return fmtB(dst, neg, mant, exp, flt);
  8114  		}
  8115  		if (!optimize) {
  8116  			return bigFtoa(dst, prec, fmt, neg, mant, exp, flt);
  8117  		}
  8118  		digs = new decimalSlice.ptr(sliceType$6.nil, 0, 0, false);
  8119  		ok = false;
  8120  		shortest = prec < 0;
  8121  		if (shortest) {
  8122  			f = new extFloat.ptr(new $Uint64(0, 0), 0, false);
  8123  			_tuple = f.AssignComputeBounds(mant, exp, neg, flt);
  8124  			lower = $clone(_tuple[0], extFloat);
  8125  			upper = $clone(_tuple[1], extFloat);
  8126  			buf = arrayType$2.zero();
  8127  			digs.d = new sliceType$6(buf);
  8128  			ok = f.ShortestDecimal(digs, lower, upper);
  8129  			if (!ok) {
  8130  				return bigFtoa(dst, prec, fmt, neg, mant, exp, flt);
  8131  			}
  8132  			_3 = fmt;
  8133  			if ((_3 === (101)) || (_3 === (69))) {
  8134  				prec = max(digs.nd - 1 >> 0, 0);
  8135  			} else if (_3 === (102)) {
  8136  				prec = max(digs.nd - digs.dp >> 0, 0);
  8137  			} else if ((_3 === (103)) || (_3 === (71))) {
  8138  				prec = digs.nd;
  8139  			}
  8140  		} else if (!((fmt === 102))) {
  8141  			digits = prec;
  8142  			_4 = fmt;
  8143  			if ((_4 === (101)) || (_4 === (69))) {
  8144  				digits = digits + (1) >> 0;
  8145  			} else if ((_4 === (103)) || (_4 === (71))) {
  8146  				if (prec === 0) {
  8147  					prec = 1;
  8148  				}
  8149  				digits = prec;
  8150  			}
  8151  			if (digits <= 15) {
  8152  				buf$1 = arrayType$1.zero();
  8153  				digs.d = new sliceType$6(buf$1);
  8154  				f$1 = new extFloat.ptr(mant, exp - ((flt.mantbits >> 0)) >> 0, neg);
  8155  				ok = f$1.FixedDecimal(digs, digits);
  8156  			}
  8157  		}
  8158  		if (!ok) {
  8159  			return bigFtoa(dst, prec, fmt, neg, mant, exp, flt);
  8160  		}
  8161  		return formatDigits(dst, shortest, neg, $clone(digs, decimalSlice), prec, fmt);
  8162  	};
  8163  	bigFtoa = function(dst, prec, fmt, neg, mant, exp, flt) {
  8164  		var _1, _2, d, digs, dst, exp, flt, fmt, mant, neg, prec, shortest;
  8165  		d = new decimal.ptr(arrayType.zero(), 0, 0, false, false);
  8166  		d.Assign(mant);
  8167  		d.Shift(exp - ((flt.mantbits >> 0)) >> 0);
  8168  		digs = new decimalSlice.ptr(sliceType$6.nil, 0, 0, false);
  8169  		shortest = prec < 0;
  8170  		if (shortest) {
  8171  			roundShortest(d, mant, exp, flt);
  8172  			decimalSlice.copy(digs, new decimalSlice.ptr(new sliceType$6(d.d), d.nd, d.dp, false));
  8173  			_1 = fmt;
  8174  			if ((_1 === (101)) || (_1 === (69))) {
  8175  				prec = digs.nd - 1 >> 0;
  8176  			} else if (_1 === (102)) {
  8177  				prec = max(digs.nd - digs.dp >> 0, 0);
  8178  			} else if ((_1 === (103)) || (_1 === (71))) {
  8179  				prec = digs.nd;
  8180  			}
  8181  		} else {
  8182  			_2 = fmt;
  8183  			if ((_2 === (101)) || (_2 === (69))) {
  8184  				d.Round(prec + 1 >> 0);
  8185  			} else if (_2 === (102)) {
  8186  				d.Round(d.dp + prec >> 0);
  8187  			} else if ((_2 === (103)) || (_2 === (71))) {
  8188  				if (prec === 0) {
  8189  					prec = 1;
  8190  				}
  8191  				d.Round(prec);
  8192  			}
  8193  			decimalSlice.copy(digs, new decimalSlice.ptr(new sliceType$6(d.d), d.nd, d.dp, false));
  8194  		}
  8195  		return formatDigits(dst, shortest, neg, $clone(digs, decimalSlice), prec, fmt);
  8196  	};
  8197  	formatDigits = function(dst, shortest, neg, digs, prec, fmt) {
  8198  		var _1, digs, dst, eprec, exp, fmt, neg, prec, shortest;
  8199  		_1 = fmt;
  8200  		if ((_1 === (101)) || (_1 === (69))) {
  8201  			return fmtE(dst, neg, $clone(digs, decimalSlice), prec, fmt);
  8202  		} else if (_1 === (102)) {
  8203  			return fmtF(dst, neg, $clone(digs, decimalSlice), prec);
  8204  		} else if ((_1 === (103)) || (_1 === (71))) {
  8205  			eprec = prec;
  8206  			if (eprec > digs.nd && digs.nd >= digs.dp) {
  8207  				eprec = digs.nd;
  8208  			}
  8209  			if (shortest) {
  8210  				eprec = 6;
  8211  			}
  8212  			exp = digs.dp - 1 >> 0;
  8213  			if (exp < -4 || exp >= eprec) {
  8214  				if (prec > digs.nd) {
  8215  					prec = digs.nd;
  8216  				}
  8217  				return fmtE(dst, neg, $clone(digs, decimalSlice), prec - 1 >> 0, (fmt + 101 << 24 >>> 24) - 103 << 24 >>> 24);
  8218  			}
  8219  			if (prec > digs.dp) {
  8220  				prec = digs.nd;
  8221  			}
  8222  			return fmtF(dst, neg, $clone(digs, decimalSlice), max(prec - digs.dp >> 0, 0));
  8223  		}
  8224  		return $append(dst, 37, fmt);
  8225  	};
  8226  	roundShortest = function(d, mant, exp, flt) {
  8227  		var d, exp, explo, flt, i, inclusive, l, lower, m, mant, mantlo, minexp, okdown, okup, u, upper, x, x$1, x$2, x$3, x$4, x$5, x$6, x$7;
  8228  		if ((mant.$high === 0 && mant.$low === 0)) {
  8229  			d.nd = 0;
  8230  			return;
  8231  		}
  8232  		minexp = flt.bias + 1 >> 0;
  8233  		if (exp > minexp && ($imul(332, ((d.dp - d.nd >> 0)))) >= ($imul(100, ((exp - ((flt.mantbits >> 0)) >> 0))))) {
  8234  			return;
  8235  		}
  8236  		upper = new decimal.ptr(arrayType.zero(), 0, 0, false, false);
  8237  		upper.Assign((x = $mul64(mant, new $Uint64(0, 2)), new $Uint64(x.$high + 0, x.$low + 1)));
  8238  		upper.Shift((exp - ((flt.mantbits >> 0)) >> 0) - 1 >> 0);
  8239  		mantlo = new $Uint64(0, 0);
  8240  		explo = 0;
  8241  		if ((x$1 = $shiftLeft64(new $Uint64(0, 1), flt.mantbits), (mant.$high > x$1.$high || (mant.$high === x$1.$high && mant.$low > x$1.$low))) || (exp === minexp)) {
  8242  			mantlo = new $Uint64(mant.$high - 0, mant.$low - 1);
  8243  			explo = exp;
  8244  		} else {
  8245  			mantlo = (x$2 = $mul64(mant, new $Uint64(0, 2)), new $Uint64(x$2.$high - 0, x$2.$low - 1));
  8246  			explo = exp - 1 >> 0;
  8247  		}
  8248  		lower = new decimal.ptr(arrayType.zero(), 0, 0, false, false);
  8249  		lower.Assign((x$3 = $mul64(mantlo, new $Uint64(0, 2)), new $Uint64(x$3.$high + 0, x$3.$low + 1)));
  8250  		lower.Shift((explo - ((flt.mantbits >> 0)) >> 0) - 1 >> 0);
  8251  		inclusive = (x$4 = $div64(mant, new $Uint64(0, 2), true), (x$4.$high === 0 && x$4.$low === 0));
  8252  		i = 0;
  8253  		while (true) {
  8254  			if (!(i < d.nd)) { break; }
  8255  			l = 48;
  8256  			if (i < lower.nd) {
  8257  				l = (x$5 = lower.d, ((i < 0 || i >= x$5.length) ? ($throwRuntimeError("index out of range"), undefined) : x$5[i]));
  8258  			}
  8259  			m = (x$6 = d.d, ((i < 0 || i >= x$6.length) ? ($throwRuntimeError("index out of range"), undefined) : x$6[i]));
  8260  			u = 48;
  8261  			if (i < upper.nd) {
  8262  				u = (x$7 = upper.d, ((i < 0 || i >= x$7.length) ? ($throwRuntimeError("index out of range"), undefined) : x$7[i]));
  8263  			}
  8264  			okdown = !((l === m)) || inclusive && ((i + 1 >> 0) === lower.nd);
  8265  			okup = !((m === u)) && (inclusive || (m + 1 << 24 >>> 24) < u || (i + 1 >> 0) < upper.nd);
  8266  			if (okdown && okup) {
  8267  				d.Round(i + 1 >> 0);
  8268  				return;
  8269  			} else if (okdown) {
  8270  				d.RoundDown(i + 1 >> 0);
  8271  				return;
  8272  			} else if (okup) {
  8273  				d.RoundUp(i + 1 >> 0);
  8274  				return;
  8275  			}
  8276  			i = i + (1) >> 0;
  8277  		}
  8278  	};
  8279  	fmtE = function(dst, neg, d, prec, fmt) {
  8280  		var _q, _q$1, _q$2, _r, _r$1, _r$2, ch, d, dst, exp, fmt, i, m, neg, prec, x;
  8281  		if (neg) {
  8282  			dst = $append(dst, 45);
  8283  		}
  8284  		ch = 48;
  8285  		if (!((d.nd === 0))) {
  8286  			ch = (x = d.d, (0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0]));
  8287  		}
  8288  		dst = $append(dst, ch);
  8289  		if (prec > 0) {
  8290  			dst = $append(dst, 46);
  8291  			i = 1;
  8292  			m = min(d.nd, prec + 1 >> 0);
  8293  			if (i < m) {
  8294  				dst = $appendSlice(dst, $subslice(d.d, i, m));
  8295  				i = m;
  8296  			}
  8297  			while (true) {
  8298  				if (!(i <= prec)) { break; }
  8299  				dst = $append(dst, 48);
  8300  				i = i + (1) >> 0;
  8301  			}
  8302  		}
  8303  		dst = $append(dst, fmt);
  8304  		exp = d.dp - 1 >> 0;
  8305  		if (d.nd === 0) {
  8306  			exp = 0;
  8307  		}
  8308  		if (exp < 0) {
  8309  			ch = 45;
  8310  			exp = -exp;
  8311  		} else {
  8312  			ch = 43;
  8313  		}
  8314  		dst = $append(dst, ch);
  8315  		if (exp < 10) {
  8316  			dst = $append(dst, 48, ((exp << 24 >>> 24)) + 48 << 24 >>> 24);
  8317  		} else if (exp < 100) {
  8318  			dst = $append(dst, (((_q = exp / 10, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")) << 24 >>> 24)) + 48 << 24 >>> 24, (((_r = exp % 10, _r === _r ? _r : $throwRuntimeError("integer divide by zero")) << 24 >>> 24)) + 48 << 24 >>> 24);
  8319  		} else {
  8320  			dst = $append(dst, (((_q$1 = exp / 100, (_q$1 === _q$1 && _q$1 !== 1/0 && _q$1 !== -1/0) ? _q$1 >> 0 : $throwRuntimeError("integer divide by zero")) << 24 >>> 24)) + 48 << 24 >>> 24, (_r$1 = (((_q$2 = exp / 10, (_q$2 === _q$2 && _q$2 !== 1/0 && _q$2 !== -1/0) ? _q$2 >> 0 : $throwRuntimeError("integer divide by zero")) << 24 >>> 24)) % 10, _r$1 === _r$1 ? _r$1 : $throwRuntimeError("integer divide by zero")) + 48 << 24 >>> 24, (((_r$2 = exp % 10, _r$2 === _r$2 ? _r$2 : $throwRuntimeError("integer divide by zero")) << 24 >>> 24)) + 48 << 24 >>> 24);
  8321  		}
  8322  		return dst;
  8323  	};
  8324  	fmtF = function(dst, neg, d, prec) {
  8325  		var ch, d, dst, i, j, m, neg, prec, x;
  8326  		if (neg) {
  8327  			dst = $append(dst, 45);
  8328  		}
  8329  		if (d.dp > 0) {
  8330  			m = min(d.nd, d.dp);
  8331  			dst = $appendSlice(dst, $subslice(d.d, 0, m));
  8332  			while (true) {
  8333  				if (!(m < d.dp)) { break; }
  8334  				dst = $append(dst, 48);
  8335  				m = m + (1) >> 0;
  8336  			}
  8337  		} else {
  8338  			dst = $append(dst, 48);
  8339  		}
  8340  		if (prec > 0) {
  8341  			dst = $append(dst, 46);
  8342  			i = 0;
  8343  			while (true) {
  8344  				if (!(i < prec)) { break; }
  8345  				ch = 48;
  8346  				j = d.dp + i >> 0;
  8347  				if (0 <= j && j < d.nd) {
  8348  					ch = (x = d.d, ((j < 0 || j >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + j]));
  8349  				}
  8350  				dst = $append(dst, ch);
  8351  				i = i + (1) >> 0;
  8352  			}
  8353  		}
  8354  		return dst;
  8355  	};
  8356  	fmtB = function(dst, neg, mant, exp, flt) {
  8357  		var _tuple, _tuple$1, dst, exp, flt, mant, neg;
  8358  		if (neg) {
  8359  			dst = $append(dst, 45);
  8360  		}
  8361  		_tuple = formatBits(dst, mant, 10, false, true);
  8362  		dst = _tuple[0];
  8363  		dst = $append(dst, 112);
  8364  		exp = exp - (((flt.mantbits >> 0))) >> 0;
  8365  		if (exp >= 0) {
  8366  			dst = $append(dst, 43);
  8367  		}
  8368  		_tuple$1 = formatBits(dst, (new $Uint64(0, exp)), 10, exp < 0, true);
  8369  		dst = _tuple$1[0];
  8370  		return dst;
  8371  	};
  8372  	min = function(a, b) {
  8373  		var a, b;
  8374  		if (a < b) {
  8375  			return a;
  8376  		}
  8377  		return b;
  8378  	};
  8379  	max = function(a, b) {
  8380  		var a, b;
  8381  		if (a > b) {
  8382  			return a;
  8383  		}
  8384  		return b;
  8385  	};
  8386  	FormatInt = function(i, base) {
  8387  		var _tuple, base, i, s;
  8388  		if (true && (0 < i.$high || (0 === i.$high && 0 <= i.$low)) && (i.$high < 0 || (i.$high === 0 && i.$low < 100)) && (base === 10)) {
  8389  			return small((((i.$low + ((i.$high >> 31) * 4294967296)) >> 0)));
  8390  		}
  8391  		_tuple = formatBits(sliceType$6.nil, (new $Uint64(i.$high, i.$low)), base, (i.$high < 0 || (i.$high === 0 && i.$low < 0)), false);
  8392  		s = _tuple[1];
  8393  		return s;
  8394  	};
  8395  	$pkg.FormatInt = FormatInt;
  8396  	Itoa = function(i) {
  8397  		var i;
  8398  		return FormatInt((new $Int64(0, i)), 10);
  8399  	};
  8400  	$pkg.Itoa = Itoa;
  8401  	AppendInt = function(dst, i, base) {
  8402  		var _tuple, base, dst, i;
  8403  		if (true && (0 < i.$high || (0 === i.$high && 0 <= i.$low)) && (i.$high < 0 || (i.$high === 0 && i.$low < 100)) && (base === 10)) {
  8404  			return $appendSlice(dst, small((((i.$low + ((i.$high >> 31) * 4294967296)) >> 0))));
  8405  		}
  8406  		_tuple = formatBits(dst, (new $Uint64(i.$high, i.$low)), base, (i.$high < 0 || (i.$high === 0 && i.$low < 0)), true);
  8407  		dst = _tuple[0];
  8408  		return dst;
  8409  	};
  8410  	$pkg.AppendInt = AppendInt;
  8411  	small = function(i) {
  8412  		var i, off;
  8413  		off = 0;
  8414  		if (i < 10) {
  8415  			off = 1;
  8416  		}
  8417  		return $substring("00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899", (($imul(i, 2)) + off >> 0), (($imul(i, 2)) + 2 >> 0));
  8418  	};
  8419  	formatBits = function(dst, u, base, neg, append_) {
  8420  		var _q, _q$1, _r, _r$1, a, append_, b, b$1, base, d, dst, i, is, is$1, is$2, j, m, neg, q, q$1, s, s$1, u, us, us$1, x, x$1, x$2, x$3, x$4, x$5;
  8421  		d = sliceType$6.nil;
  8422  		s = "";
  8423  		if (base < 2 || base > 36) {
  8424  			$panic(new $String("strconv: illegal AppendInt/FormatInt base"));
  8425  		}
  8426  		a = arrayType$3.zero();
  8427  		i = 65;
  8428  		if (neg) {
  8429  			u = new $Uint64(-u.$high, -u.$low);
  8430  		}
  8431  		if (base === 10) {
  8432  			if (true) {
  8433  				while (true) {
  8434  					if (!((u.$high > 0 || (u.$high === 0 && u.$low >= 1000000000)))) { break; }
  8435  					q = $div64(u, new $Uint64(0, 1000000000), false);
  8436  					us = (((x = $mul64(q, new $Uint64(0, 1000000000)), new $Uint64(u.$high - x.$high, u.$low - x.$low)).$low >>> 0));
  8437  					j = 4;
  8438  					while (true) {
  8439  						if (!(j > 0)) { break; }
  8440  						is = (_r = us % 100, _r === _r ? _r : $throwRuntimeError("integer divide by zero")) * 2 >>> 0;
  8441  						us = (_q = us / (100), (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >>> 0 : $throwRuntimeError("integer divide by zero"));
  8442  						i = i - (2) >> 0;
  8443  						(x$1 = i + 1 >> 0, ((x$1 < 0 || x$1 >= a.length) ? ($throwRuntimeError("index out of range"), undefined) : a[x$1] = "00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899".charCodeAt((is + 1 >>> 0))));
  8444  						(x$2 = i + 0 >> 0, ((x$2 < 0 || x$2 >= a.length) ? ($throwRuntimeError("index out of range"), undefined) : a[x$2] = "00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899".charCodeAt((is + 0 >>> 0))));
  8445  						j = j - (1) >> 0;
  8446  					}
  8447  					i = i - (1) >> 0;
  8448  					((i < 0 || i >= a.length) ? ($throwRuntimeError("index out of range"), undefined) : a[i] = "00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899".charCodeAt(((us * 2 >>> 0) + 1 >>> 0)));
  8449  					u = q;
  8450  				}
  8451  			}
  8452  			us$1 = ((u.$low >>> 0));
  8453  			while (true) {
  8454  				if (!(us$1 >= 100)) { break; }
  8455  				is$1 = (_r$1 = us$1 % 100, _r$1 === _r$1 ? _r$1 : $throwRuntimeError("integer divide by zero")) * 2 >>> 0;
  8456  				us$1 = (_q$1 = us$1 / (100), (_q$1 === _q$1 && _q$1 !== 1/0 && _q$1 !== -1/0) ? _q$1 >>> 0 : $throwRuntimeError("integer divide by zero"));
  8457  				i = i - (2) >> 0;
  8458  				(x$3 = i + 1 >> 0, ((x$3 < 0 || x$3 >= a.length) ? ($throwRuntimeError("index out of range"), undefined) : a[x$3] = "00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899".charCodeAt((is$1 + 1 >>> 0))));
  8459  				(x$4 = i + 0 >> 0, ((x$4 < 0 || x$4 >= a.length) ? ($throwRuntimeError("index out of range"), undefined) : a[x$4] = "00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899".charCodeAt((is$1 + 0 >>> 0))));
  8460  			}
  8461  			is$2 = us$1 * 2 >>> 0;
  8462  			i = i - (1) >> 0;
  8463  			((i < 0 || i >= a.length) ? ($throwRuntimeError("index out of range"), undefined) : a[i] = "00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899".charCodeAt((is$2 + 1 >>> 0)));
  8464  			if (us$1 >= 10) {
  8465  				i = i - (1) >> 0;
  8466  				((i < 0 || i >= a.length) ? ($throwRuntimeError("index out of range"), undefined) : a[i] = "00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899".charCodeAt(is$2));
  8467  			}
  8468  		} else {
  8469  			s$1 = ((base < 0 || base >= shifts.length) ? ($throwRuntimeError("index out of range"), undefined) : shifts[base]);
  8470  			if (s$1 > 0) {
  8471  				b = (new $Uint64(0, base));
  8472  				m = ((base >>> 0)) - 1 >>> 0;
  8473  				while (true) {
  8474  					if (!((u.$high > b.$high || (u.$high === b.$high && u.$low >= b.$low)))) { break; }
  8475  					i = i - (1) >> 0;
  8476  					((i < 0 || i >= a.length) ? ($throwRuntimeError("index out of range"), undefined) : a[i] = "0123456789abcdefghijklmnopqrstuvwxyz".charCodeAt(((((u.$low >>> 0)) & m) >>> 0)));
  8477  					u = $shiftRightUint64(u, (s$1));
  8478  				}
  8479  				i = i - (1) >> 0;
  8480  				((i < 0 || i >= a.length) ? ($throwRuntimeError("index out of range"), undefined) : a[i] = "0123456789abcdefghijklmnopqrstuvwxyz".charCodeAt(((u.$low >>> 0))));
  8481  			} else {
  8482  				b$1 = (new $Uint64(0, base));
  8483  				while (true) {
  8484  					if (!((u.$high > b$1.$high || (u.$high === b$1.$high && u.$low >= b$1.$low)))) { break; }
  8485  					i = i - (1) >> 0;
  8486  					q$1 = $div64(u, b$1, false);
  8487  					((i < 0 || i >= a.length) ? ($throwRuntimeError("index out of range"), undefined) : a[i] = "0123456789abcdefghijklmnopqrstuvwxyz".charCodeAt((((x$5 = $mul64(q$1, b$1), new $Uint64(u.$high - x$5.$high, u.$low - x$5.$low)).$low >>> 0))));
  8488  					u = q$1;
  8489  				}
  8490  				i = i - (1) >> 0;
  8491  				((i < 0 || i >= a.length) ? ($throwRuntimeError("index out of range"), undefined) : a[i] = "0123456789abcdefghijklmnopqrstuvwxyz".charCodeAt(((u.$low >>> 0))));
  8492  			}
  8493  		}
  8494  		if (neg) {
  8495  			i = i - (1) >> 0;
  8496  			((i < 0 || i >= a.length) ? ($throwRuntimeError("index out of range"), undefined) : a[i] = 45);
  8497  		}
  8498  		if (append_) {
  8499  			d = $appendSlice(dst, $subslice(new sliceType$6(a), i));
  8500  			return [d, s];
  8501  		}
  8502  		s = ($bytesToString($subslice(new sliceType$6(a), i)));
  8503  		return [d, s];
  8504  	};
  8505  	quoteWith = function(s, quote, ASCIIonly, graphicOnly) {
  8506  		var ASCIIonly, _q, graphicOnly, quote, s;
  8507  		return ($bytesToString(appendQuotedWith($makeSlice(sliceType$6, 0, (_q = ($imul(3, s.length)) / 2, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero"))), s, quote, ASCIIonly, graphicOnly)));
  8508  	};
  8509  	appendQuotedWith = function(buf, s, quote, ASCIIonly, graphicOnly) {
  8510  		var ASCIIonly, _tuple, buf, graphicOnly, quote, r, s, width;
  8511  		buf = $append(buf, quote);
  8512  		width = 0;
  8513  		while (true) {
  8514  			if (!(s.length > 0)) { break; }
  8515  			r = ((s.charCodeAt(0) >> 0));
  8516  			width = 1;
  8517  			if (r >= 128) {
  8518  				_tuple = utf8.DecodeRuneInString(s);
  8519  				r = _tuple[0];
  8520  				width = _tuple[1];
  8521  			}
  8522  			if ((width === 1) && (r === 65533)) {
  8523  				buf = $appendSlice(buf, "\\x");
  8524  				buf = $append(buf, "0123456789abcdef".charCodeAt((s.charCodeAt(0) >>> 4 << 24 >>> 24)));
  8525  				buf = $append(buf, "0123456789abcdef".charCodeAt(((s.charCodeAt(0) & 15) >>> 0)));
  8526  				s = $substring(s, width);
  8527  				continue;
  8528  			}
  8529  			buf = appendEscapedRune(buf, r, quote, ASCIIonly, graphicOnly);
  8530  			s = $substring(s, width);
  8531  		}
  8532  		buf = $append(buf, quote);
  8533  		return buf;
  8534  	};
  8535  	appendQuotedRuneWith = function(buf, r, quote, ASCIIonly, graphicOnly) {
  8536  		var ASCIIonly, buf, graphicOnly, quote, r;
  8537  		buf = $append(buf, quote);
  8538  		if (!utf8.ValidRune(r)) {
  8539  			r = 65533;
  8540  		}
  8541  		buf = appendEscapedRune(buf, r, quote, ASCIIonly, graphicOnly);
  8542  		buf = $append(buf, quote);
  8543  		return buf;
  8544  	};
  8545  	appendEscapedRune = function(buf, r, quote, ASCIIonly, graphicOnly) {
  8546  		var ASCIIonly, _1, buf, graphicOnly, n, quote, r, runeTmp, s, s$1;
  8547  		runeTmp = arrayType$4.zero();
  8548  		if ((r === ((quote >> 0))) || (r === 92)) {
  8549  			buf = $append(buf, 92);
  8550  			buf = $append(buf, ((r << 24 >>> 24)));
  8551  			return buf;
  8552  		}
  8553  		if (ASCIIonly) {
  8554  			if (r < 128 && IsPrint(r)) {
  8555  				buf = $append(buf, ((r << 24 >>> 24)));
  8556  				return buf;
  8557  			}
  8558  		} else if (IsPrint(r) || graphicOnly && isInGraphicList(r)) {
  8559  			n = utf8.EncodeRune(new sliceType$6(runeTmp), r);
  8560  			buf = $appendSlice(buf, $subslice(new sliceType$6(runeTmp), 0, n));
  8561  			return buf;
  8562  		}
  8563  		_1 = r;
  8564  		if (_1 === (7)) {
  8565  			buf = $appendSlice(buf, "\\a");
  8566  		} else if (_1 === (8)) {
  8567  			buf = $appendSlice(buf, "\\b");
  8568  		} else if (_1 === (12)) {
  8569  			buf = $appendSlice(buf, "\\f");
  8570  		} else if (_1 === (10)) {
  8571  			buf = $appendSlice(buf, "\\n");
  8572  		} else if (_1 === (13)) {
  8573  			buf = $appendSlice(buf, "\\r");
  8574  		} else if (_1 === (9)) {
  8575  			buf = $appendSlice(buf, "\\t");
  8576  		} else if (_1 === (11)) {
  8577  			buf = $appendSlice(buf, "\\v");
  8578  		} else {
  8579  			if (r < 32) {
  8580  				buf = $appendSlice(buf, "\\x");
  8581  				buf = $append(buf, "0123456789abcdef".charCodeAt((((r << 24 >>> 24)) >>> 4 << 24 >>> 24)));
  8582  				buf = $append(buf, "0123456789abcdef".charCodeAt(((((r << 24 >>> 24)) & 15) >>> 0)));
  8583  			} else if (r > 1114111) {
  8584  				r = 65533;
  8585  				buf = $appendSlice(buf, "\\u");
  8586  				s = 12;
  8587  				while (true) {
  8588  					if (!(s >= 0)) { break; }
  8589  					buf = $append(buf, "0123456789abcdef".charCodeAt((((r >> $min(((s >>> 0)), 31)) >> 0) & 15)));
  8590  					s = s - (4) >> 0;
  8591  				}
  8592  			} else if (r < 65536) {
  8593  				buf = $appendSlice(buf, "\\u");
  8594  				s = 12;
  8595  				while (true) {
  8596  					if (!(s >= 0)) { break; }
  8597  					buf = $append(buf, "0123456789abcdef".charCodeAt((((r >> $min(((s >>> 0)), 31)) >> 0) & 15)));
  8598  					s = s - (4) >> 0;
  8599  				}
  8600  			} else {
  8601  				buf = $appendSlice(buf, "\\U");
  8602  				s$1 = 28;
  8603  				while (true) {
  8604  					if (!(s$1 >= 0)) { break; }
  8605  					buf = $append(buf, "0123456789abcdef".charCodeAt((((r >> $min(((s$1 >>> 0)), 31)) >> 0) & 15)));
  8606  					s$1 = s$1 - (4) >> 0;
  8607  				}
  8608  			}
  8609  		}
  8610  		return buf;
  8611  	};
  8612  	Quote = function(s) {
  8613  		var s;
  8614  		return quoteWith(s, 34, false, false);
  8615  	};
  8616  	$pkg.Quote = Quote;
  8617  	AppendQuote = function(dst, s) {
  8618  		var dst, s;
  8619  		return appendQuotedWith(dst, s, 34, false, false);
  8620  	};
  8621  	$pkg.AppendQuote = AppendQuote;
  8622  	AppendQuoteToASCII = function(dst, s) {
  8623  		var dst, s;
  8624  		return appendQuotedWith(dst, s, 34, true, false);
  8625  	};
  8626  	$pkg.AppendQuoteToASCII = AppendQuoteToASCII;
  8627  	AppendQuoteRune = function(dst, r) {
  8628  		var dst, r;
  8629  		return appendQuotedRuneWith(dst, r, 39, false, false);
  8630  	};
  8631  	$pkg.AppendQuoteRune = AppendQuoteRune;
  8632  	AppendQuoteRuneToASCII = function(dst, r) {
  8633  		var dst, r;
  8634  		return appendQuotedRuneWith(dst, r, 39, true, false);
  8635  	};
  8636  	$pkg.AppendQuoteRuneToASCII = AppendQuoteRuneToASCII;
  8637  	CanBackquote = function(s) {
  8638  		var _tuple, r, s, wid;
  8639  		while (true) {
  8640  			if (!(s.length > 0)) { break; }
  8641  			_tuple = utf8.DecodeRuneInString(s);
  8642  			r = _tuple[0];
  8643  			wid = _tuple[1];
  8644  			s = $substring(s, wid);
  8645  			if (wid > 1) {
  8646  				if (r === 65279) {
  8647  					return false;
  8648  				}
  8649  				continue;
  8650  			}
  8651  			if (r === 65533) {
  8652  				return false;
  8653  			}
  8654  			if ((r < 32 && !((r === 9))) || (r === 96) || (r === 127)) {
  8655  				return false;
  8656  			}
  8657  		}
  8658  		return true;
  8659  	};
  8660  	$pkg.CanBackquote = CanBackquote;
  8661  	unhex = function(b) {
  8662  		var _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, b, c, ok, v;
  8663  		v = 0;
  8664  		ok = false;
  8665  		c = ((b >> 0));
  8666  		if (48 <= c && c <= 57) {
  8667  			_tmp = c - 48 >> 0;
  8668  			_tmp$1 = true;
  8669  			v = _tmp;
  8670  			ok = _tmp$1;
  8671  			return [v, ok];
  8672  		} else if (97 <= c && c <= 102) {
  8673  			_tmp$2 = (c - 97 >> 0) + 10 >> 0;
  8674  			_tmp$3 = true;
  8675  			v = _tmp$2;
  8676  			ok = _tmp$3;
  8677  			return [v, ok];
  8678  		} else if (65 <= c && c <= 70) {
  8679  			_tmp$4 = (c - 65 >> 0) + 10 >> 0;
  8680  			_tmp$5 = true;
  8681  			v = _tmp$4;
  8682  			ok = _tmp$5;
  8683  			return [v, ok];
  8684  		}
  8685  		return [v, ok];
  8686  	};
  8687  	UnquoteChar = function(s, quote) {
  8688  		var _1, _2, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tuple, _tuple$1, c, c$1, err, j, j$1, multibyte, n, ok, quote, r, s, size, tail, v, v$1, value, x, x$1;
  8689  		value = 0;
  8690  		multibyte = false;
  8691  		tail = "";
  8692  		err = $ifaceNil;
  8693  		c = s.charCodeAt(0);
  8694  		if ((c === quote) && ((quote === 39) || (quote === 34))) {
  8695  			err = $pkg.ErrSyntax;
  8696  			return [value, multibyte, tail, err];
  8697  		} else if (c >= 128) {
  8698  			_tuple = utf8.DecodeRuneInString(s);
  8699  			r = _tuple[0];
  8700  			size = _tuple[1];
  8701  			_tmp = r;
  8702  			_tmp$1 = true;
  8703  			_tmp$2 = $substring(s, size);
  8704  			_tmp$3 = $ifaceNil;
  8705  			value = _tmp;
  8706  			multibyte = _tmp$1;
  8707  			tail = _tmp$2;
  8708  			err = _tmp$3;
  8709  			return [value, multibyte, tail, err];
  8710  		} else if (!((c === 92))) {
  8711  			_tmp$4 = ((s.charCodeAt(0) >> 0));
  8712  			_tmp$5 = false;
  8713  			_tmp$6 = $substring(s, 1);
  8714  			_tmp$7 = $ifaceNil;
  8715  			value = _tmp$4;
  8716  			multibyte = _tmp$5;
  8717  			tail = _tmp$6;
  8718  			err = _tmp$7;
  8719  			return [value, multibyte, tail, err];
  8720  		}
  8721  		if (s.length <= 1) {
  8722  			err = $pkg.ErrSyntax;
  8723  			return [value, multibyte, tail, err];
  8724  		}
  8725  		c$1 = s.charCodeAt(1);
  8726  		s = $substring(s, 2);
  8727  		switch (0) { default:
  8728  			_1 = c$1;
  8729  			if (_1 === (97)) {
  8730  				value = 7;
  8731  			} else if (_1 === (98)) {
  8732  				value = 8;
  8733  			} else if (_1 === (102)) {
  8734  				value = 12;
  8735  			} else if (_1 === (110)) {
  8736  				value = 10;
  8737  			} else if (_1 === (114)) {
  8738  				value = 13;
  8739  			} else if (_1 === (116)) {
  8740  				value = 9;
  8741  			} else if (_1 === (118)) {
  8742  				value = 11;
  8743  			} else if ((_1 === (120)) || (_1 === (117)) || (_1 === (85))) {
  8744  				n = 0;
  8745  				_2 = c$1;
  8746  				if (_2 === (120)) {
  8747  					n = 2;
  8748  				} else if (_2 === (117)) {
  8749  					n = 4;
  8750  				} else if (_2 === (85)) {
  8751  					n = 8;
  8752  				}
  8753  				v = 0;
  8754  				if (s.length < n) {
  8755  					err = $pkg.ErrSyntax;
  8756  					return [value, multibyte, tail, err];
  8757  				}
  8758  				j = 0;
  8759  				while (true) {
  8760  					if (!(j < n)) { break; }
  8761  					_tuple$1 = unhex(s.charCodeAt(j));
  8762  					x = _tuple$1[0];
  8763  					ok = _tuple$1[1];
  8764  					if (!ok) {
  8765  						err = $pkg.ErrSyntax;
  8766  						return [value, multibyte, tail, err];
  8767  					}
  8768  					v = (v << 4 >> 0) | x;
  8769  					j = j + (1) >> 0;
  8770  				}
  8771  				s = $substring(s, n);
  8772  				if (c$1 === 120) {
  8773  					value = v;
  8774  					break;
  8775  				}
  8776  				if (v > 1114111) {
  8777  					err = $pkg.ErrSyntax;
  8778  					return [value, multibyte, tail, err];
  8779  				}
  8780  				value = v;
  8781  				multibyte = true;
  8782  			} else if ((_1 === (48)) || (_1 === (49)) || (_1 === (50)) || (_1 === (51)) || (_1 === (52)) || (_1 === (53)) || (_1 === (54)) || (_1 === (55))) {
  8783  				v$1 = ((c$1 >> 0)) - 48 >> 0;
  8784  				if (s.length < 2) {
  8785  					err = $pkg.ErrSyntax;
  8786  					return [value, multibyte, tail, err];
  8787  				}
  8788  				j$1 = 0;
  8789  				while (true) {
  8790  					if (!(j$1 < 2)) { break; }
  8791  					x$1 = ((s.charCodeAt(j$1) >> 0)) - 48 >> 0;
  8792  					if (x$1 < 0 || x$1 > 7) {
  8793  						err = $pkg.ErrSyntax;
  8794  						return [value, multibyte, tail, err];
  8795  					}
  8796  					v$1 = ((v$1 << 3 >> 0)) | x$1;
  8797  					j$1 = j$1 + (1) >> 0;
  8798  				}
  8799  				s = $substring(s, 2);
  8800  				if (v$1 > 255) {
  8801  					err = $pkg.ErrSyntax;
  8802  					return [value, multibyte, tail, err];
  8803  				}
  8804  				value = v$1;
  8805  			} else if (_1 === (92)) {
  8806  				value = 92;
  8807  			} else if ((_1 === (39)) || (_1 === (34))) {
  8808  				if (!((c$1 === quote))) {
  8809  					err = $pkg.ErrSyntax;
  8810  					return [value, multibyte, tail, err];
  8811  				}
  8812  				value = ((c$1 >> 0));
  8813  			} else {
  8814  				err = $pkg.ErrSyntax;
  8815  				return [value, multibyte, tail, err];
  8816  			}
  8817  		}
  8818  		tail = s;
  8819  		return [value, multibyte, tail, err];
  8820  	};
  8821  	$pkg.UnquoteChar = UnquoteChar;
  8822  	Unquote = function(s) {
  8823  		var _1, _q, _tuple, _tuple$1, buf, buf$1, c, err, i, multibyte, n, n$1, quote, r, runeTmp, s, size, ss;
  8824  		n = s.length;
  8825  		if (n < 2) {
  8826  			return ["", $pkg.ErrSyntax];
  8827  		}
  8828  		quote = s.charCodeAt(0);
  8829  		if (!((quote === s.charCodeAt((n - 1 >> 0))))) {
  8830  			return ["", $pkg.ErrSyntax];
  8831  		}
  8832  		s = $substring(s, 1, (n - 1 >> 0));
  8833  		if (quote === 96) {
  8834  			if (contains(s, 96)) {
  8835  				return ["", $pkg.ErrSyntax];
  8836  			}
  8837  			if (contains(s, 13)) {
  8838  				buf = $makeSlice(sliceType$6, 0, (s.length - 1 >> 0));
  8839  				i = 0;
  8840  				while (true) {
  8841  					if (!(i < s.length)) { break; }
  8842  					if (!((s.charCodeAt(i) === 13))) {
  8843  						buf = $append(buf, s.charCodeAt(i));
  8844  					}
  8845  					i = i + (1) >> 0;
  8846  				}
  8847  				return [($bytesToString(buf)), $ifaceNil];
  8848  			}
  8849  			return [s, $ifaceNil];
  8850  		}
  8851  		if (!((quote === 34)) && !((quote === 39))) {
  8852  			return ["", $pkg.ErrSyntax];
  8853  		}
  8854  		if (contains(s, 10)) {
  8855  			return ["", $pkg.ErrSyntax];
  8856  		}
  8857  		if (!contains(s, 92) && !contains(s, quote)) {
  8858  			_1 = quote;
  8859  			if (_1 === (34)) {
  8860  				return [s, $ifaceNil];
  8861  			} else if (_1 === (39)) {
  8862  				_tuple = utf8.DecodeRuneInString(s);
  8863  				r = _tuple[0];
  8864  				size = _tuple[1];
  8865  				if ((size === s.length) && (!((r === 65533)) || !((size === 1)))) {
  8866  					return [s, $ifaceNil];
  8867  				}
  8868  			}
  8869  		}
  8870  		runeTmp = arrayType$4.zero();
  8871  		buf$1 = $makeSlice(sliceType$6, 0, (_q = ($imul(3, s.length)) / 2, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")));
  8872  		while (true) {
  8873  			if (!(s.length > 0)) { break; }
  8874  			_tuple$1 = UnquoteChar(s, quote);
  8875  			c = _tuple$1[0];
  8876  			multibyte = _tuple$1[1];
  8877  			ss = _tuple$1[2];
  8878  			err = _tuple$1[3];
  8879  			if (!($interfaceIsEqual(err, $ifaceNil))) {
  8880  				return ["", err];
  8881  			}
  8882  			s = ss;
  8883  			if (c < 128 || !multibyte) {
  8884  				buf$1 = $append(buf$1, ((c << 24 >>> 24)));
  8885  			} else {
  8886  				n$1 = utf8.EncodeRune(new sliceType$6(runeTmp), c);
  8887  				buf$1 = $appendSlice(buf$1, $subslice(new sliceType$6(runeTmp), 0, n$1));
  8888  			}
  8889  			if ((quote === 39) && !((s.length === 0))) {
  8890  				return ["", $pkg.ErrSyntax];
  8891  			}
  8892  		}
  8893  		return [($bytesToString(buf$1)), $ifaceNil];
  8894  	};
  8895  	$pkg.Unquote = Unquote;
  8896  	contains = function(s, c) {
  8897  		var c, i, s;
  8898  		i = 0;
  8899  		while (true) {
  8900  			if (!(i < s.length)) { break; }
  8901  			if (s.charCodeAt(i) === c) {
  8902  				return true;
  8903  			}
  8904  			i = i + (1) >> 0;
  8905  		}
  8906  		return false;
  8907  	};
  8908  	bsearch16 = function(a, x) {
  8909  		var _q, _tmp, _tmp$1, a, h, i, j, x;
  8910  		_tmp = 0;
  8911  		_tmp$1 = a.$length;
  8912  		i = _tmp;
  8913  		j = _tmp$1;
  8914  		while (true) {
  8915  			if (!(i < j)) { break; }
  8916  			h = i + (_q = ((j - i >> 0)) / 2, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")) >> 0;
  8917  			if (((h < 0 || h >= a.$length) ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + h]) < x) {
  8918  				i = h + 1 >> 0;
  8919  			} else {
  8920  				j = h;
  8921  			}
  8922  		}
  8923  		return i;
  8924  	};
  8925  	bsearch32 = function(a, x) {
  8926  		var _q, _tmp, _tmp$1, a, h, i, j, x;
  8927  		_tmp = 0;
  8928  		_tmp$1 = a.$length;
  8929  		i = _tmp;
  8930  		j = _tmp$1;
  8931  		while (true) {
  8932  			if (!(i < j)) { break; }
  8933  			h = i + (_q = ((j - i >> 0)) / 2, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")) >> 0;
  8934  			if (((h < 0 || h >= a.$length) ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + h]) < x) {
  8935  				i = h + 1 >> 0;
  8936  			} else {
  8937  				j = h;
  8938  			}
  8939  		}
  8940  		return i;
  8941  	};
  8942  	IsPrint = function(r) {
  8943  		var _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, i, i$1, isNotPrint, isNotPrint$1, isPrint, isPrint$1, j, j$1, r, rr, rr$1, x, x$1, x$2, x$3;
  8944  		if (r <= 255) {
  8945  			if (32 <= r && r <= 126) {
  8946  				return true;
  8947  			}
  8948  			if (161 <= r && r <= 255) {
  8949  				return !((r === 173));
  8950  			}
  8951  			return false;
  8952  		}
  8953  		if (0 <= r && r < 65536) {
  8954  			_tmp = ((r << 16 >>> 16));
  8955  			_tmp$1 = isPrint16;
  8956  			_tmp$2 = isNotPrint16;
  8957  			rr = _tmp;
  8958  			isPrint = _tmp$1;
  8959  			isNotPrint = _tmp$2;
  8960  			i = bsearch16(isPrint, rr);
  8961  			if (i >= isPrint.$length || rr < (x = (i & ~1) >> 0, ((x < 0 || x >= isPrint.$length) ? ($throwRuntimeError("index out of range"), undefined) : isPrint.$array[isPrint.$offset + x])) || (x$1 = i | 1, ((x$1 < 0 || x$1 >= isPrint.$length) ? ($throwRuntimeError("index out of range"), undefined) : isPrint.$array[isPrint.$offset + x$1])) < rr) {
  8962  				return false;
  8963  			}
  8964  			j = bsearch16(isNotPrint, rr);
  8965  			return j >= isNotPrint.$length || !((((j < 0 || j >= isNotPrint.$length) ? ($throwRuntimeError("index out of range"), undefined) : isNotPrint.$array[isNotPrint.$offset + j]) === rr));
  8966  		}
  8967  		_tmp$3 = ((r >>> 0));
  8968  		_tmp$4 = isPrint32;
  8969  		_tmp$5 = isNotPrint32;
  8970  		rr$1 = _tmp$3;
  8971  		isPrint$1 = _tmp$4;
  8972  		isNotPrint$1 = _tmp$5;
  8973  		i$1 = bsearch32(isPrint$1, rr$1);
  8974  		if (i$1 >= isPrint$1.$length || rr$1 < (x$2 = (i$1 & ~1) >> 0, ((x$2 < 0 || x$2 >= isPrint$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : isPrint$1.$array[isPrint$1.$offset + x$2])) || (x$3 = i$1 | 1, ((x$3 < 0 || x$3 >= isPrint$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : isPrint$1.$array[isPrint$1.$offset + x$3])) < rr$1) {
  8975  			return false;
  8976  		}
  8977  		if (r >= 131072) {
  8978  			return true;
  8979  		}
  8980  		r = r - (65536) >> 0;
  8981  		j$1 = bsearch16(isNotPrint$1, ((r << 16 >>> 16)));
  8982  		return j$1 >= isNotPrint$1.$length || !((((j$1 < 0 || j$1 >= isNotPrint$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : isNotPrint$1.$array[isNotPrint$1.$offset + j$1]) === ((r << 16 >>> 16))));
  8983  	};
  8984  	$pkg.IsPrint = IsPrint;
  8985  	isInGraphicList = function(r) {
  8986  		var i, r, rr;
  8987  		if (r > 65535) {
  8988  			return false;
  8989  		}
  8990  		rr = ((r << 16 >>> 16));
  8991  		i = bsearch16(isGraphic, rr);
  8992  		return i < isGraphic.$length && (rr === ((i < 0 || i >= isGraphic.$length) ? ($throwRuntimeError("index out of range"), undefined) : isGraphic.$array[isGraphic.$offset + i]));
  8993  	};
  8994  	ptrType.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}];
  8995  	ptrType$2.methods = [{prop: "set", name: "set", pkg: "strconv", typ: $funcType([$String], [$Bool], false)}, {prop: "floatBits", name: "floatBits", pkg: "strconv", typ: $funcType([ptrType$1], [$Uint64, $Bool], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Assign", name: "Assign", pkg: "", typ: $funcType([$Uint64], [], false)}, {prop: "Shift", name: "Shift", pkg: "", typ: $funcType([$Int], [], false)}, {prop: "Round", name: "Round", pkg: "", typ: $funcType([$Int], [], false)}, {prop: "RoundDown", name: "RoundDown", pkg: "", typ: $funcType([$Int], [], false)}, {prop: "RoundUp", name: "RoundUp", pkg: "", typ: $funcType([$Int], [], false)}, {prop: "RoundedInteger", name: "RoundedInteger", pkg: "", typ: $funcType([], [$Uint64], false)}];
  8996  	ptrType$4.methods = [{prop: "floatBits", name: "floatBits", pkg: "strconv", typ: $funcType([ptrType$1], [$Uint64, $Bool], false)}, {prop: "AssignComputeBounds", name: "AssignComputeBounds", pkg: "", typ: $funcType([$Uint64, $Int, $Bool, ptrType$1], [extFloat, extFloat], false)}, {prop: "Normalize", name: "Normalize", pkg: "", typ: $funcType([], [$Uint], false)}, {prop: "Multiply", name: "Multiply", pkg: "", typ: $funcType([extFloat], [], false)}, {prop: "AssignDecimal", name: "AssignDecimal", pkg: "", typ: $funcType([$Uint64, $Int, $Bool, $Bool, ptrType$1], [$Bool], false)}, {prop: "frexp10", name: "frexp10", pkg: "strconv", typ: $funcType([], [$Int, $Int], false)}, {prop: "FixedDecimal", name: "FixedDecimal", pkg: "", typ: $funcType([ptrType$3, $Int], [$Bool], false)}, {prop: "ShortestDecimal", name: "ShortestDecimal", pkg: "", typ: $funcType([ptrType$3, ptrType$4, ptrType$4], [$Bool], false)}];
  8997  	NumError.init("", [{prop: "Func", name: "Func", anonymous: false, exported: true, typ: $String, tag: ""}, {prop: "Num", name: "Num", anonymous: false, exported: true, typ: $String, tag: ""}, {prop: "Err", name: "Err", anonymous: false, exported: true, typ: $error, tag: ""}]);
  8998  	decimal.init("strconv", [{prop: "d", name: "d", anonymous: false, exported: false, typ: arrayType, tag: ""}, {prop: "nd", name: "nd", anonymous: false, exported: false, typ: $Int, tag: ""}, {prop: "dp", name: "dp", anonymous: false, exported: false, typ: $Int, tag: ""}, {prop: "neg", name: "neg", anonymous: false, exported: false, typ: $Bool, tag: ""}, {prop: "trunc", name: "trunc", anonymous: false, exported: false, typ: $Bool, tag: ""}]);
  8999  	leftCheat.init("strconv", [{prop: "delta", name: "delta", anonymous: false, exported: false, typ: $Int, tag: ""}, {prop: "cutoff", name: "cutoff", anonymous: false, exported: false, typ: $String, tag: ""}]);
  9000  	extFloat.init("strconv", [{prop: "mant", name: "mant", anonymous: false, exported: false, typ: $Uint64, tag: ""}, {prop: "exp", name: "exp", anonymous: false, exported: false, typ: $Int, tag: ""}, {prop: "neg", name: "neg", anonymous: false, exported: false, typ: $Bool, tag: ""}]);
  9001  	floatInfo.init("strconv", [{prop: "mantbits", name: "mantbits", anonymous: false, exported: false, typ: $Uint, tag: ""}, {prop: "expbits", name: "expbits", anonymous: false, exported: false, typ: $Uint, tag: ""}, {prop: "bias", name: "bias", anonymous: false, exported: false, typ: $Int, tag: ""}]);
  9002  	decimalSlice.init("strconv", [{prop: "d", name: "d", anonymous: false, exported: false, typ: sliceType$6, tag: ""}, {prop: "nd", name: "nd", anonymous: false, exported: false, typ: $Int, tag: ""}, {prop: "dp", name: "dp", anonymous: false, exported: false, typ: $Int, tag: ""}, {prop: "neg", name: "neg", anonymous: false, exported: false, typ: $Bool, tag: ""}]);
  9003  	$init = function() {
  9004  		$pkg.$init = function() {};
  9005  		/* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  9006  		$r = errors.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  9007  		$r = math.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  9008  		$r = utf8.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  9009  		optimize = true;
  9010  		powtab = new sliceType([1, 3, 6, 9, 13, 16, 19, 23, 26]);
  9011  		float64pow10 = new sliceType$1([1, 10, 100, 1000, 10000, 100000, 1e+06, 1e+07, 1e+08, 1e+09, 1e+10, 1e+11, 1e+12, 1e+13, 1e+14, 1e+15, 1e+16, 1e+17, 1e+18, 1e+19, 1e+20, 1e+21, 1e+22]);
  9012  		float32pow10 = new sliceType$2([1, 10, 100, 1000, 10000, 100000, 1e+06, 1e+07, 1e+08, 1e+09, 1e+10]);
  9013  		$pkg.ErrRange = errors.New("value out of range");
  9014  		$pkg.ErrSyntax = errors.New("invalid syntax");
  9015  		leftcheats = new sliceType$3([new leftCheat.ptr(0, ""), new leftCheat.ptr(1, "5"), new leftCheat.ptr(1, "25"), new leftCheat.ptr(1, "125"), new leftCheat.ptr(2, "625"), new leftCheat.ptr(2, "3125"), new leftCheat.ptr(2, "15625"), new leftCheat.ptr(3, "78125"), new leftCheat.ptr(3, "390625"), new leftCheat.ptr(3, "1953125"), new leftCheat.ptr(4, "9765625"), new leftCheat.ptr(4, "48828125"), new leftCheat.ptr(4, "244140625"), new leftCheat.ptr(4, "1220703125"), new leftCheat.ptr(5, "6103515625"), new leftCheat.ptr(5, "30517578125"), new leftCheat.ptr(5, "152587890625"), new leftCheat.ptr(6, "762939453125"), new leftCheat.ptr(6, "3814697265625"), new leftCheat.ptr(6, "19073486328125"), new leftCheat.ptr(7, "95367431640625"), new leftCheat.ptr(7, "476837158203125"), new leftCheat.ptr(7, "2384185791015625"), new leftCheat.ptr(7, "11920928955078125"), new leftCheat.ptr(8, "59604644775390625"), new leftCheat.ptr(8, "298023223876953125"), new leftCheat.ptr(8, "1490116119384765625"), new leftCheat.ptr(9, "7450580596923828125"), new leftCheat.ptr(9, "37252902984619140625"), new leftCheat.ptr(9, "186264514923095703125"), new leftCheat.ptr(10, "931322574615478515625"), new leftCheat.ptr(10, "4656612873077392578125"), new leftCheat.ptr(10, "23283064365386962890625"), new leftCheat.ptr(10, "116415321826934814453125"), new leftCheat.ptr(11, "582076609134674072265625"), new leftCheat.ptr(11, "2910383045673370361328125"), new leftCheat.ptr(11, "14551915228366851806640625"), new leftCheat.ptr(12, "72759576141834259033203125"), new leftCheat.ptr(12, "363797880709171295166015625"), new leftCheat.ptr(12, "1818989403545856475830078125"), new leftCheat.ptr(13, "9094947017729282379150390625"), new leftCheat.ptr(13, "45474735088646411895751953125"), new leftCheat.ptr(13, "227373675443232059478759765625"), new leftCheat.ptr(13, "1136868377216160297393798828125"), new leftCheat.ptr(14, "5684341886080801486968994140625"), new leftCheat.ptr(14, "28421709430404007434844970703125"), new leftCheat.ptr(14, "142108547152020037174224853515625"), new leftCheat.ptr(15, "710542735760100185871124267578125"), new leftCheat.ptr(15, "3552713678800500929355621337890625"), new leftCheat.ptr(15, "17763568394002504646778106689453125"), new leftCheat.ptr(16, "88817841970012523233890533447265625"), new leftCheat.ptr(16, "444089209850062616169452667236328125"), new leftCheat.ptr(16, "2220446049250313080847263336181640625"), new leftCheat.ptr(16, "11102230246251565404236316680908203125"), new leftCheat.ptr(17, "55511151231257827021181583404541015625"), new leftCheat.ptr(17, "277555756156289135105907917022705078125"), new leftCheat.ptr(17, "1387778780781445675529539585113525390625"), new leftCheat.ptr(18, "6938893903907228377647697925567626953125"), new leftCheat.ptr(18, "34694469519536141888238489627838134765625"), new leftCheat.ptr(18, "173472347597680709441192448139190673828125"), new leftCheat.ptr(19, "867361737988403547205962240695953369140625")]);
  9016  		smallPowersOfTen = $toNativeArray($kindStruct, [new extFloat.ptr(new $Uint64(2147483648, 0), -63, false), new extFloat.ptr(new $Uint64(2684354560, 0), -60, false), new extFloat.ptr(new $Uint64(3355443200, 0), -57, false), new extFloat.ptr(new $Uint64(4194304000, 0), -54, false), new extFloat.ptr(new $Uint64(2621440000, 0), -50, false), new extFloat.ptr(new $Uint64(3276800000, 0), -47, false), new extFloat.ptr(new $Uint64(4096000000, 0), -44, false), new extFloat.ptr(new $Uint64(2560000000, 0), -40, false)]);
  9017  		powersOfTen = $toNativeArray($kindStruct, [new extFloat.ptr(new $Uint64(4203730336, 136053384), -1220, false), new extFloat.ptr(new $Uint64(3132023167, 2722021238), -1193, false), new extFloat.ptr(new $Uint64(2333539104, 810921078), -1166, false), new extFloat.ptr(new $Uint64(3477244234, 1573795306), -1140, false), new extFloat.ptr(new $Uint64(2590748842, 1432697645), -1113, false), new extFloat.ptr(new $Uint64(3860516611, 1025131999), -1087, false), new extFloat.ptr(new $Uint64(2876309015, 3348809418), -1060, false), new extFloat.ptr(new $Uint64(4286034428, 3200048207), -1034, false), new extFloat.ptr(new $Uint64(3193344495, 1097586188), -1007, false), new extFloat.ptr(new $Uint64(2379227053, 2424306748), -980, false), new extFloat.ptr(new $Uint64(3545324584, 827693699), -954, false), new extFloat.ptr(new $Uint64(2641472655, 2913388981), -927, false), new extFloat.ptr(new $Uint64(3936100983, 602835915), -901, false), new extFloat.ptr(new $Uint64(2932623761, 1081627501), -874, false), new extFloat.ptr(new $Uint64(2184974969, 1572261463), -847, false), new extFloat.ptr(new $Uint64(3255866422, 1308317239), -821, false), new extFloat.ptr(new $Uint64(2425809519, 944281679), -794, false), new extFloat.ptr(new $Uint64(3614737867, 629291719), -768, false), new extFloat.ptr(new $Uint64(2693189581, 2545915892), -741, false), new extFloat.ptr(new $Uint64(4013165208, 388672741), -715, false), new extFloat.ptr(new $Uint64(2990041083, 708162190), -688, false), new extFloat.ptr(new $Uint64(2227754207, 3536207675), -661, false), new extFloat.ptr(new $Uint64(3319612455, 450088378), -635, false), new extFloat.ptr(new $Uint64(2473304014, 3139815830), -608, false), new extFloat.ptr(new $Uint64(3685510180, 2103616900), -582, false), new extFloat.ptr(new $Uint64(2745919064, 224385782), -555, false), new extFloat.ptr(new $Uint64(4091738259, 3737383206), -529, false), new extFloat.ptr(new $Uint64(3048582568, 2868871352), -502, false), new extFloat.ptr(new $Uint64(2271371013, 1820084875), -475, false), new extFloat.ptr(new $Uint64(3384606560, 885076051), -449, false), new extFloat.ptr(new $Uint64(2521728396, 2444895829), -422, false), new extFloat.ptr(new $Uint64(3757668132, 1881767613), -396, false), new extFloat.ptr(new $Uint64(2799680927, 3102062735), -369, false), new extFloat.ptr(new $Uint64(4171849679, 2289335700), -343, false), new extFloat.ptr(new $Uint64(3108270227, 2410191823), -316, false), new extFloat.ptr(new $Uint64(2315841784, 3205436779), -289, false), new extFloat.ptr(new $Uint64(3450873173, 1697722806), -263, false), new extFloat.ptr(new $Uint64(2571100870, 3497754540), -236, false), new extFloat.ptr(new $Uint64(3831238852, 707476230), -210, false), new extFloat.ptr(new $Uint64(2854495385, 1769181907), -183, false), new extFloat.ptr(new $Uint64(4253529586, 2197867022), -157, false), new extFloat.ptr(new $Uint64(3169126500, 2450594539), -130, false), new extFloat.ptr(new $Uint64(2361183241, 1867548876), -103, false), new extFloat.ptr(new $Uint64(3518437208, 3793315116), -77, false), new extFloat.ptr(new $Uint64(2621440000, 0), -50, false), new extFloat.ptr(new $Uint64(3906250000, 0), -24, false), new extFloat.ptr(new $Uint64(2910383045, 2892103680), 3, false), new extFloat.ptr(new $Uint64(2168404344, 4170451332), 30, false), new extFloat.ptr(new $Uint64(3231174267, 3372684723), 56, false), new extFloat.ptr(new $Uint64(2407412430, 2078956656), 83, false), new extFloat.ptr(new $Uint64(3587324068, 2884206696), 109, false), new extFloat.ptr(new $Uint64(2672764710, 395977285), 136, false), new extFloat.ptr(new $Uint64(3982729777, 3569679143), 162, false), new extFloat.ptr(new $Uint64(2967364920, 2361961896), 189, false), new extFloat.ptr(new $Uint64(2210859150, 447440347), 216, false), new extFloat.ptr(new $Uint64(3294436857, 1114709402), 242, false), new extFloat.ptr(new $Uint64(2454546732, 2786846552), 269, false), new extFloat.ptr(new $Uint64(3657559652, 443583978), 295, false), new extFloat.ptr(new $Uint64(2725094297, 2599384906), 322, false), new extFloat.ptr(new $Uint64(4060706939, 3028118405), 348, false), new extFloat.ptr(new $Uint64(3025462433, 2044532855), 375, false), new extFloat.ptr(new $Uint64(2254145170, 1536935362), 402, false), new extFloat.ptr(new $Uint64(3358938053, 3365297469), 428, false), new extFloat.ptr(new $Uint64(2502603868, 4204241075), 455, false), new extFloat.ptr(new $Uint64(3729170365, 2577424355), 481, false), new extFloat.ptr(new $Uint64(2778448436, 3677981733), 508, false), new extFloat.ptr(new $Uint64(4140210802, 2744688476), 534, false), new extFloat.ptr(new $Uint64(3084697427, 1424604878), 561, false), new extFloat.ptr(new $Uint64(2298278679, 4062331362), 588, false), new extFloat.ptr(new $Uint64(3424702107, 3546052773), 614, false), new extFloat.ptr(new $Uint64(2551601907, 2065781727), 641, false), new extFloat.ptr(new $Uint64(3802183132, 2535403578), 667, false), new extFloat.ptr(new $Uint64(2832847187, 1558426518), 694, false), new extFloat.ptr(new $Uint64(4221271257, 2762425404), 720, false), new extFloat.ptr(new $Uint64(3145092172, 2812560400), 747, false), new extFloat.ptr(new $Uint64(2343276271, 3057687578), 774, false), new extFloat.ptr(new $Uint64(3491753744, 2790753324), 800, false), new extFloat.ptr(new $Uint64(2601559269, 3918606633), 827, false), new extFloat.ptr(new $Uint64(3876625403, 2711358621), 853, false), new extFloat.ptr(new $Uint64(2888311001, 1648096297), 880, false), new extFloat.ptr(new $Uint64(2151959390, 2057817989), 907, false), new extFloat.ptr(new $Uint64(3206669376, 61660461), 933, false), new extFloat.ptr(new $Uint64(2389154863, 1581580175), 960, false), new extFloat.ptr(new $Uint64(3560118173, 2626467905), 986, false), new extFloat.ptr(new $Uint64(2652494738, 3034782633), 1013, false), new extFloat.ptr(new $Uint64(3952525166, 3135207385), 1039, false), new extFloat.ptr(new $Uint64(2944860731, 2616258155), 1066, false)]);
  9018  		uint64pow10 = $toNativeArray($kindUint64, [new $Uint64(0, 1), new $Uint64(0, 10), new $Uint64(0, 100), new $Uint64(0, 1000), new $Uint64(0, 10000), new $Uint64(0, 100000), new $Uint64(0, 1000000), new $Uint64(0, 10000000), new $Uint64(0, 100000000), new $Uint64(0, 1000000000), new $Uint64(2, 1410065408), new $Uint64(23, 1215752192), new $Uint64(232, 3567587328), new $Uint64(2328, 1316134912), new $Uint64(23283, 276447232), new $Uint64(232830, 2764472320), new $Uint64(2328306, 1874919424), new $Uint64(23283064, 1569325056), new $Uint64(232830643, 2808348672), new $Uint64(2328306436, 2313682944)]);
  9019  		float32info = new floatInfo.ptr(23, 8, -127);
  9020  		float64info = new floatInfo.ptr(52, 11, -1023);
  9021  		isPrint16 = new sliceType$4([32, 126, 161, 887, 890, 895, 900, 1366, 1369, 1418, 1421, 1479, 1488, 1514, 1520, 1524, 1542, 1563, 1566, 1805, 1808, 1866, 1869, 1969, 1984, 2042, 2048, 2093, 2096, 2139, 2142, 2154, 2208, 2237, 2260, 2444, 2447, 2448, 2451, 2482, 2486, 2489, 2492, 2500, 2503, 2504, 2507, 2510, 2519, 2519, 2524, 2531, 2534, 2557, 2561, 2570, 2575, 2576, 2579, 2617, 2620, 2626, 2631, 2632, 2635, 2637, 2641, 2641, 2649, 2654, 2662, 2677, 2689, 2745, 2748, 2765, 2768, 2768, 2784, 2787, 2790, 2801, 2809, 2828, 2831, 2832, 2835, 2873, 2876, 2884, 2887, 2888, 2891, 2893, 2902, 2903, 2908, 2915, 2918, 2935, 2946, 2954, 2958, 2965, 2969, 2975, 2979, 2980, 2984, 2986, 2990, 3001, 3006, 3010, 3014, 3021, 3024, 3024, 3031, 3031, 3046, 3066, 3072, 3129, 3133, 3149, 3157, 3162, 3168, 3171, 3174, 3183, 3192, 3257, 3260, 3277, 3285, 3286, 3294, 3299, 3302, 3314, 3328, 3407, 3412, 3427, 3430, 3455, 3458, 3478, 3482, 3517, 3520, 3526, 3530, 3530, 3535, 3551, 3558, 3567, 3570, 3572, 3585, 3642, 3647, 3675, 3713, 3716, 3719, 3722, 3725, 3725, 3732, 3751, 3754, 3773, 3776, 3789, 3792, 3801, 3804, 3807, 3840, 3948, 3953, 4058, 4096, 4295, 4301, 4301, 4304, 4685, 4688, 4701, 4704, 4749, 4752, 4789, 4792, 4805, 4808, 4885, 4888, 4954, 4957, 4988, 4992, 5017, 5024, 5109, 5112, 5117, 5120, 5788, 5792, 5880, 5888, 5908, 5920, 5942, 5952, 5971, 5984, 6003, 6016, 6109, 6112, 6121, 6128, 6137, 6144, 6157, 6160, 6169, 6176, 6263, 6272, 6314, 6320, 6389, 6400, 6443, 6448, 6459, 6464, 6464, 6468, 6509, 6512, 6516, 6528, 6571, 6576, 6601, 6608, 6618, 6622, 6683, 6686, 6780, 6783, 6793, 6800, 6809, 6816, 6829, 6832, 6846, 6912, 6987, 6992, 7036, 7040, 7155, 7164, 7223, 7227, 7241, 7245, 7304, 7360, 7367, 7376, 7417, 7424, 7957, 7960, 7965, 7968, 8005, 8008, 8013, 8016, 8061, 8064, 8147, 8150, 8175, 8178, 8190, 8208, 8231, 8240, 8286, 8304, 8305, 8308, 8348, 8352, 8383, 8400, 8432, 8448, 8587, 8592, 9254, 9280, 9290, 9312, 11123, 11126, 11157, 11160, 11193, 11197, 11218, 11244, 11247, 11264, 11507, 11513, 11559, 11565, 11565, 11568, 11623, 11631, 11632, 11647, 11670, 11680, 11849, 11904, 12019, 12032, 12245, 12272, 12283, 12289, 12438, 12441, 12543, 12549, 12590, 12593, 12730, 12736, 12771, 12784, 19893, 19904, 40938, 40960, 42124, 42128, 42182, 42192, 42539, 42560, 42743, 42752, 42935, 42999, 43051, 43056, 43065, 43072, 43127, 43136, 43205, 43214, 43225, 43232, 43261, 43264, 43347, 43359, 43388, 43392, 43481, 43486, 43574, 43584, 43597, 43600, 43609, 43612, 43714, 43739, 43766, 43777, 43782, 43785, 43790, 43793, 43798, 43808, 43877, 43888, 44013, 44016, 44025, 44032, 55203, 55216, 55238, 55243, 55291, 63744, 64109, 64112, 64217, 64256, 64262, 64275, 64279, 64285, 64449, 64467, 64831, 64848, 64911, 64914, 64967, 65008, 65021, 65024, 65049, 65056, 65131, 65136, 65276, 65281, 65470, 65474, 65479, 65482, 65487, 65490, 65495, 65498, 65500, 65504, 65518, 65532, 65533]);
  9022  		isNotPrint16 = new sliceType$4([173, 907, 909, 930, 1328, 1376, 1416, 1424, 1757, 2111, 2143, 2229, 2274, 2436, 2473, 2481, 2526, 2564, 2601, 2609, 2612, 2615, 2621, 2653, 2692, 2702, 2706, 2729, 2737, 2740, 2758, 2762, 2816, 2820, 2857, 2865, 2868, 2910, 2948, 2961, 2971, 2973, 3017, 3076, 3085, 3089, 3113, 3141, 3145, 3159, 3204, 3213, 3217, 3241, 3252, 3269, 3273, 3295, 3312, 3332, 3341, 3345, 3397, 3401, 3460, 3506, 3516, 3541, 3543, 3715, 3721, 3736, 3744, 3748, 3750, 3756, 3770, 3781, 3783, 3912, 3992, 4029, 4045, 4294, 4681, 4695, 4697, 4745, 4785, 4799, 4801, 4823, 4881, 5760, 5901, 5997, 6001, 6431, 6751, 7674, 8024, 8026, 8028, 8030, 8117, 8133, 8156, 8181, 8335, 11209, 11311, 11359, 11558, 11687, 11695, 11703, 11711, 11719, 11727, 11735, 11743, 11930, 12352, 12687, 12831, 13055, 42927, 43470, 43519, 43815, 43823, 64311, 64317, 64319, 64322, 64325, 65107, 65127, 65141, 65511]);
  9023  		isPrint32 = new sliceType$5([65536, 65613, 65616, 65629, 65664, 65786, 65792, 65794, 65799, 65843, 65847, 65947, 65952, 65952, 66000, 66045, 66176, 66204, 66208, 66256, 66272, 66299, 66304, 66339, 66349, 66378, 66384, 66426, 66432, 66499, 66504, 66517, 66560, 66717, 66720, 66729, 66736, 66771, 66776, 66811, 66816, 66855, 66864, 66915, 66927, 66927, 67072, 67382, 67392, 67413, 67424, 67431, 67584, 67589, 67592, 67640, 67644, 67644, 67647, 67742, 67751, 67759, 67808, 67829, 67835, 67867, 67871, 67897, 67903, 67903, 67968, 68023, 68028, 68047, 68050, 68102, 68108, 68147, 68152, 68154, 68159, 68167, 68176, 68184, 68192, 68255, 68288, 68326, 68331, 68342, 68352, 68405, 68409, 68437, 68440, 68466, 68472, 68497, 68505, 68508, 68521, 68527, 68608, 68680, 68736, 68786, 68800, 68850, 68858, 68863, 69216, 69246, 69632, 69709, 69714, 69743, 69759, 69825, 69840, 69864, 69872, 69881, 69888, 69955, 69968, 70006, 70016, 70093, 70096, 70132, 70144, 70206, 70272, 70313, 70320, 70378, 70384, 70393, 70400, 70412, 70415, 70416, 70419, 70457, 70460, 70468, 70471, 70472, 70475, 70477, 70480, 70480, 70487, 70487, 70493, 70499, 70502, 70508, 70512, 70516, 70656, 70749, 70784, 70855, 70864, 70873, 71040, 71093, 71096, 71133, 71168, 71236, 71248, 71257, 71264, 71276, 71296, 71351, 71360, 71369, 71424, 71449, 71453, 71467, 71472, 71487, 71840, 71922, 71935, 71935, 72192, 72263, 72272, 72323, 72326, 72354, 72384, 72440, 72704, 72773, 72784, 72812, 72816, 72847, 72850, 72886, 72960, 73014, 73018, 73031, 73040, 73049, 73728, 74649, 74752, 74868, 74880, 75075, 77824, 78894, 82944, 83526, 92160, 92728, 92736, 92777, 92782, 92783, 92880, 92909, 92912, 92917, 92928, 92997, 93008, 93047, 93053, 93071, 93952, 94020, 94032, 94078, 94095, 94111, 94176, 94177, 94208, 100332, 100352, 101106, 110592, 110878, 110960, 111355, 113664, 113770, 113776, 113788, 113792, 113800, 113808, 113817, 113820, 113823, 118784, 119029, 119040, 119078, 119081, 119154, 119163, 119272, 119296, 119365, 119552, 119638, 119648, 119665, 119808, 119967, 119970, 119970, 119973, 119974, 119977, 120074, 120077, 120134, 120138, 120485, 120488, 120779, 120782, 121483, 121499, 121519, 122880, 122904, 122907, 122922, 124928, 125124, 125127, 125142, 125184, 125258, 125264, 125273, 125278, 125279, 126464, 126500, 126503, 126523, 126530, 126530, 126535, 126548, 126551, 126564, 126567, 126619, 126625, 126651, 126704, 126705, 126976, 127019, 127024, 127123, 127136, 127150, 127153, 127221, 127232, 127244, 127248, 127339, 127344, 127404, 127462, 127490, 127504, 127547, 127552, 127560, 127568, 127569, 127584, 127589, 127744, 128724, 128736, 128748, 128752, 128760, 128768, 128883, 128896, 128980, 129024, 129035, 129040, 129095, 129104, 129113, 129120, 129159, 129168, 129197, 129280, 129291, 129296, 129356, 129360, 129387, 129408, 129431, 129472, 129472, 129488, 129510, 131072, 173782, 173824, 177972, 177984, 178205, 178208, 183969, 183984, 191456, 194560, 195101, 917760, 917999]);
  9024  		isNotPrint32 = new sliceType$4([12, 39, 59, 62, 399, 926, 2057, 2102, 2134, 2291, 2564, 2580, 2584, 4285, 4405, 4576, 4626, 4743, 4745, 4750, 4766, 4868, 4905, 4913, 4916, 5210, 5212, 6813, 7177, 7223, 7336, 7431, 7434, 7483, 7486, 9327, 27231, 27482, 27490, 54357, 54429, 54445, 54458, 54460, 54468, 54534, 54549, 54557, 54586, 54591, 54597, 54609, 55968, 57351, 57378, 57381, 60932, 60960, 60963, 60968, 60979, 60984, 60986, 61000, 61002, 61004, 61008, 61011, 61016, 61018, 61020, 61022, 61024, 61027, 61035, 61043, 61048, 61053, 61055, 61066, 61092, 61098, 61632, 61648, 61743, 63807]);
  9025  		isGraphic = new sliceType$4([160, 5760, 8192, 8193, 8194, 8195, 8196, 8197, 8198, 8199, 8200, 8201, 8202, 8239, 8287, 12288]);
  9026  		shifts = $toNativeArray($kindUint, [0, 0, 1, 0, 2, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0]);
  9027  		/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
  9028  	};
  9029  	$pkg.$init = $init;
  9030  	return $pkg;
  9031  })();
  9032  $packages["reflect"] = (function() {
  9033  	var $pkg = {}, $init, errors, js, math, runtime, strconv, sync, unicode, utf8, uncommonType, funcType, name, nameData, mapIter, Type, Kind, tflag, rtype, typeAlg, method, ChanDir, arrayType, chanType, imethod, interfaceType, mapType, ptrType, sliceType, structField, structType, Method, nameOff, typeOff, textOff, StructField, StructTag, fieldScan, Value, flag, ValueError, sliceType$1, ptrType$1, sliceType$2, sliceType$3, ptrType$2, funcType$1, sliceType$4, ptrType$3, ptrType$4, sliceType$5, sliceType$6, sliceType$7, ptrType$5, ptrType$6, structType$3, sliceType$8, sliceType$9, sliceType$10, sliceType$11, arrayType$1, sliceType$12, ptrType$7, ptrType$8, sliceType$13, sliceType$14, ptrType$9, sliceType$15, ptrType$15, sliceType$17, ptrType$16, funcType$3, funcType$4, funcType$5, ptrType$17, arrayType$12, ptrType$18, initialized, uncommonTypeMap, nameMap, nameOffList, typeOffList, callHelper, jsObjectPtr, selectHelper, kindNames, methodCache, uint8Type, init, jsType, reflectType, setKindType, newName, newNameOff, newTypeOff, internalStr, isWrapped, copyStruct, makeValue, MakeSlice, TypeOf, ValueOf, FuncOf, SliceOf, Zero, unsafe_New, makeInt, typedmemmove, makemap, keyFor, mapaccess, mapassign, mapdelete, mapiterinit, mapiterkey, mapiternext, maplen, cvtDirect, Copy, methodReceiver, valueInterface, ifaceE2I, methodName, makeMethodValue, wrapJsObject, unwrapJsObject, getJsTag, chanrecv, chansend, DeepEqual, deepValueEqualJs, Swapper, PtrTo, implements$1, directlyAssignable, haveIdenticalType, haveIdenticalUnderlyingType, toType, ifaceIndir, overflowFloat32, typesMustMatch, MakeMap, MakeMapWithSize, New, convertOp, makeFloat, makeComplex, makeString, makeBytes, makeRunes, cvtInt, cvtUint, cvtFloatInt, cvtFloatUint, cvtIntFloat, cvtUintFloat, cvtFloat, cvtComplex, cvtIntString, cvtUintString, cvtBytesString, cvtStringBytes, cvtRunesString, cvtStringRunes, cvtT2I, cvtI2I;
  9034  	errors = $packages["errors"];
  9035  	js = $packages["github.com/gopherjs/gopherjs/js"];
  9036  	math = $packages["math"];
  9037  	runtime = $packages["runtime"];
  9038  	strconv = $packages["strconv"];
  9039  	sync = $packages["sync"];
  9040  	unicode = $packages["unicode"];
  9041  	utf8 = $packages["unicode/utf8"];
  9042  	uncommonType = $pkg.uncommonType = $newType(0, $kindStruct, "reflect.uncommonType", true, "reflect", false, function(pkgPath_, mcount_, _$2_, moff_, _$4_, _methods_) {
  9043  		this.$val = this;
  9044  		if (arguments.length === 0) {
  9045  			this.pkgPath = 0;
  9046  			this.mcount = 0;
  9047  			this._$2 = 0;
  9048  			this.moff = 0;
  9049  			this._$4 = 0;
  9050  			this._methods = sliceType$5.nil;
  9051  			return;
  9052  		}
  9053  		this.pkgPath = pkgPath_;
  9054  		this.mcount = mcount_;
  9055  		this._$2 = _$2_;
  9056  		this.moff = moff_;
  9057  		this._$4 = _$4_;
  9058  		this._methods = _methods_;
  9059  	});
  9060  	funcType = $pkg.funcType = $newType(0, $kindStruct, "reflect.funcType", true, "reflect", false, function(rtype_, inCount_, outCount_, _in_, _out_) {
  9061  		this.$val = this;
  9062  		if (arguments.length === 0) {
  9063  			this.rtype = new rtype.ptr(0, 0, 0, 0, 0, 0, 0, ptrType$3.nil, ptrType$4.nil, 0, 0);
  9064  			this.inCount = 0;
  9065  			this.outCount = 0;
  9066  			this._in = sliceType$2.nil;
  9067  			this._out = sliceType$2.nil;
  9068  			return;
  9069  		}
  9070  		this.rtype = rtype_;
  9071  		this.inCount = inCount_;
  9072  		this.outCount = outCount_;
  9073  		this._in = _in_;
  9074  		this._out = _out_;
  9075  	});
  9076  	name = $pkg.name = $newType(0, $kindStruct, "reflect.name", true, "reflect", false, function(bytes_) {
  9077  		this.$val = this;
  9078  		if (arguments.length === 0) {
  9079  			this.bytes = ptrType$4.nil;
  9080  			return;
  9081  		}
  9082  		this.bytes = bytes_;
  9083  	});
  9084  	nameData = $pkg.nameData = $newType(0, $kindStruct, "reflect.nameData", true, "reflect", false, function(name_, tag_, exported_) {
  9085  		this.$val = this;
  9086  		if (arguments.length === 0) {
  9087  			this.name = "";
  9088  			this.tag = "";
  9089  			this.exported = false;
  9090  			return;
  9091  		}
  9092  		this.name = name_;
  9093  		this.tag = tag_;
  9094  		this.exported = exported_;
  9095  	});
  9096  	mapIter = $pkg.mapIter = $newType(0, $kindStruct, "reflect.mapIter", true, "reflect", false, function(t_, m_, keys_, i_) {
  9097  		this.$val = this;
  9098  		if (arguments.length === 0) {
  9099  			this.t = $ifaceNil;
  9100  			this.m = null;
  9101  			this.keys = null;
  9102  			this.i = 0;
  9103  			return;
  9104  		}
  9105  		this.t = t_;
  9106  		this.m = m_;
  9107  		this.keys = keys_;
  9108  		this.i = i_;
  9109  	});
  9110  	Type = $pkg.Type = $newType(8, $kindInterface, "reflect.Type", true, "reflect", true, null);
  9111  	Kind = $pkg.Kind = $newType(4, $kindUint, "reflect.Kind", true, "reflect", true, null);
  9112  	tflag = $pkg.tflag = $newType(1, $kindUint8, "reflect.tflag", true, "reflect", false, null);
  9113  	rtype = $pkg.rtype = $newType(0, $kindStruct, "reflect.rtype", true, "reflect", false, function(size_, ptrdata_, hash_, tflag_, align_, fieldAlign_, kind_, alg_, gcdata_, str_, ptrToThis_) {
  9114  		this.$val = this;
  9115  		if (arguments.length === 0) {
  9116  			this.size = 0;
  9117  			this.ptrdata = 0;
  9118  			this.hash = 0;
  9119  			this.tflag = 0;
  9120  			this.align = 0;
  9121  			this.fieldAlign = 0;
  9122  			this.kind = 0;
  9123  			this.alg = ptrType$3.nil;
  9124  			this.gcdata = ptrType$4.nil;
  9125  			this.str = 0;
  9126  			this.ptrToThis = 0;
  9127  			return;
  9128  		}
  9129  		this.size = size_;
  9130  		this.ptrdata = ptrdata_;
  9131  		this.hash = hash_;
  9132  		this.tflag = tflag_;
  9133  		this.align = align_;
  9134  		this.fieldAlign = fieldAlign_;
  9135  		this.kind = kind_;
  9136  		this.alg = alg_;
  9137  		this.gcdata = gcdata_;
  9138  		this.str = str_;
  9139  		this.ptrToThis = ptrToThis_;
  9140  	});
  9141  	typeAlg = $pkg.typeAlg = $newType(0, $kindStruct, "reflect.typeAlg", true, "reflect", false, function(hash_, equal_) {
  9142  		this.$val = this;
  9143  		if (arguments.length === 0) {
  9144  			this.hash = $throwNilPointerError;
  9145  			this.equal = $throwNilPointerError;
  9146  			return;
  9147  		}
  9148  		this.hash = hash_;
  9149  		this.equal = equal_;
  9150  	});
  9151  	method = $pkg.method = $newType(0, $kindStruct, "reflect.method", true, "reflect", false, function(name_, mtyp_, ifn_, tfn_) {
  9152  		this.$val = this;
  9153  		if (arguments.length === 0) {
  9154  			this.name = 0;
  9155  			this.mtyp = 0;
  9156  			this.ifn = 0;
  9157  			this.tfn = 0;
  9158  			return;
  9159  		}
  9160  		this.name = name_;
  9161  		this.mtyp = mtyp_;
  9162  		this.ifn = ifn_;
  9163  		this.tfn = tfn_;
  9164  	});
  9165  	ChanDir = $pkg.ChanDir = $newType(4, $kindInt, "reflect.ChanDir", true, "reflect", true, null);
  9166  	arrayType = $pkg.arrayType = $newType(0, $kindStruct, "reflect.arrayType", true, "reflect", false, function(rtype_, elem_, slice_, len_) {
  9167  		this.$val = this;
  9168  		if (arguments.length === 0) {
  9169  			this.rtype = new rtype.ptr(0, 0, 0, 0, 0, 0, 0, ptrType$3.nil, ptrType$4.nil, 0, 0);
  9170  			this.elem = ptrType$1.nil;
  9171  			this.slice = ptrType$1.nil;
  9172  			this.len = 0;
  9173  			return;
  9174  		}
  9175  		this.rtype = rtype_;
  9176  		this.elem = elem_;
  9177  		this.slice = slice_;
  9178  		this.len = len_;
  9179  	});
  9180  	chanType = $pkg.chanType = $newType(0, $kindStruct, "reflect.chanType", true, "reflect", false, function(rtype_, elem_, dir_) {
  9181  		this.$val = this;
  9182  		if (arguments.length === 0) {
  9183  			this.rtype = new rtype.ptr(0, 0, 0, 0, 0, 0, 0, ptrType$3.nil, ptrType$4.nil, 0, 0);
  9184  			this.elem = ptrType$1.nil;
  9185  			this.dir = 0;
  9186  			return;
  9187  		}
  9188  		this.rtype = rtype_;
  9189  		this.elem = elem_;
  9190  		this.dir = dir_;
  9191  	});
  9192  	imethod = $pkg.imethod = $newType(0, $kindStruct, "reflect.imethod", true, "reflect", false, function(name_, typ_) {
  9193  		this.$val = this;
  9194  		if (arguments.length === 0) {
  9195  			this.name = 0;
  9196  			this.typ = 0;
  9197  			return;
  9198  		}
  9199  		this.name = name_;
  9200  		this.typ = typ_;
  9201  	});
  9202  	interfaceType = $pkg.interfaceType = $newType(0, $kindStruct, "reflect.interfaceType", true, "reflect", false, function(rtype_, pkgPath_, methods_) {
  9203  		this.$val = this;
  9204  		if (arguments.length === 0) {
  9205  			this.rtype = new rtype.ptr(0, 0, 0, 0, 0, 0, 0, ptrType$3.nil, ptrType$4.nil, 0, 0);
  9206  			this.pkgPath = new name.ptr(ptrType$4.nil);
  9207  			this.methods = sliceType$6.nil;
  9208  			return;
  9209  		}
  9210  		this.rtype = rtype_;
  9211  		this.pkgPath = pkgPath_;
  9212  		this.methods = methods_;
  9213  	});
  9214  	mapType = $pkg.mapType = $newType(0, $kindStruct, "reflect.mapType", true, "reflect", false, function(rtype_, key_, elem_, bucket_, hmap_, keysize_, indirectkey_, valuesize_, indirectvalue_, bucketsize_, reflexivekey_, needkeyupdate_) {
  9215  		this.$val = this;
  9216  		if (arguments.length === 0) {
  9217  			this.rtype = new rtype.ptr(0, 0, 0, 0, 0, 0, 0, ptrType$3.nil, ptrType$4.nil, 0, 0);
  9218  			this.key = ptrType$1.nil;
  9219  			this.elem = ptrType$1.nil;
  9220  			this.bucket = ptrType$1.nil;
  9221  			this.hmap = ptrType$1.nil;
  9222  			this.keysize = 0;
  9223  			this.indirectkey = 0;
  9224  			this.valuesize = 0;
  9225  			this.indirectvalue = 0;
  9226  			this.bucketsize = 0;
  9227  			this.reflexivekey = false;
  9228  			this.needkeyupdate = false;
  9229  			return;
  9230  		}
  9231  		this.rtype = rtype_;
  9232  		this.key = key_;
  9233  		this.elem = elem_;
  9234  		this.bucket = bucket_;
  9235  		this.hmap = hmap_;
  9236  		this.keysize = keysize_;
  9237  		this.indirectkey = indirectkey_;
  9238  		this.valuesize = valuesize_;
  9239  		this.indirectvalue = indirectvalue_;
  9240  		this.bucketsize = bucketsize_;
  9241  		this.reflexivekey = reflexivekey_;
  9242  		this.needkeyupdate = needkeyupdate_;
  9243  	});
  9244  	ptrType = $pkg.ptrType = $newType(0, $kindStruct, "reflect.ptrType", true, "reflect", false, function(rtype_, elem_) {
  9245  		this.$val = this;
  9246  		if (arguments.length === 0) {
  9247  			this.rtype = new rtype.ptr(0, 0, 0, 0, 0, 0, 0, ptrType$3.nil, ptrType$4.nil, 0, 0);
  9248  			this.elem = ptrType$1.nil;
  9249  			return;
  9250  		}
  9251  		this.rtype = rtype_;
  9252  		this.elem = elem_;
  9253  	});
  9254  	sliceType = $pkg.sliceType = $newType(0, $kindStruct, "reflect.sliceType", true, "reflect", false, function(rtype_, elem_) {
  9255  		this.$val = this;
  9256  		if (arguments.length === 0) {
  9257  			this.rtype = new rtype.ptr(0, 0, 0, 0, 0, 0, 0, ptrType$3.nil, ptrType$4.nil, 0, 0);
  9258  			this.elem = ptrType$1.nil;
  9259  			return;
  9260  		}
  9261  		this.rtype = rtype_;
  9262  		this.elem = elem_;
  9263  	});
  9264  	structField = $pkg.structField = $newType(0, $kindStruct, "reflect.structField", true, "reflect", false, function(name_, typ_, offsetAnon_) {
  9265  		this.$val = this;
  9266  		if (arguments.length === 0) {
  9267  			this.name = new name.ptr(ptrType$4.nil);
  9268  			this.typ = ptrType$1.nil;
  9269  			this.offsetAnon = 0;
  9270  			return;
  9271  		}
  9272  		this.name = name_;
  9273  		this.typ = typ_;
  9274  		this.offsetAnon = offsetAnon_;
  9275  	});
  9276  	structType = $pkg.structType = $newType(0, $kindStruct, "reflect.structType", true, "reflect", false, function(rtype_, pkgPath_, fields_) {
  9277  		this.$val = this;
  9278  		if (arguments.length === 0) {
  9279  			this.rtype = new rtype.ptr(0, 0, 0, 0, 0, 0, 0, ptrType$3.nil, ptrType$4.nil, 0, 0);
  9280  			this.pkgPath = new name.ptr(ptrType$4.nil);
  9281  			this.fields = sliceType$7.nil;
  9282  			return;
  9283  		}
  9284  		this.rtype = rtype_;
  9285  		this.pkgPath = pkgPath_;
  9286  		this.fields = fields_;
  9287  	});
  9288  	Method = $pkg.Method = $newType(0, $kindStruct, "reflect.Method", true, "reflect", true, function(Name_, PkgPath_, Type_, Func_, Index_) {
  9289  		this.$val = this;
  9290  		if (arguments.length === 0) {
  9291  			this.Name = "";
  9292  			this.PkgPath = "";
  9293  			this.Type = $ifaceNil;
  9294  			this.Func = new Value.ptr(ptrType$1.nil, 0, 0);
  9295  			this.Index = 0;
  9296  			return;
  9297  		}
  9298  		this.Name = Name_;
  9299  		this.PkgPath = PkgPath_;
  9300  		this.Type = Type_;
  9301  		this.Func = Func_;
  9302  		this.Index = Index_;
  9303  	});
  9304  	nameOff = $pkg.nameOff = $newType(4, $kindInt32, "reflect.nameOff", true, "reflect", false, null);
  9305  	typeOff = $pkg.typeOff = $newType(4, $kindInt32, "reflect.typeOff", true, "reflect", false, null);
  9306  	textOff = $pkg.textOff = $newType(4, $kindInt32, "reflect.textOff", true, "reflect", false, null);
  9307  	StructField = $pkg.StructField = $newType(0, $kindStruct, "reflect.StructField", true, "reflect", true, function(Name_, PkgPath_, Type_, Tag_, Offset_, Index_, Anonymous_) {
  9308  		this.$val = this;
  9309  		if (arguments.length === 0) {
  9310  			this.Name = "";
  9311  			this.PkgPath = "";
  9312  			this.Type = $ifaceNil;
  9313  			this.Tag = "";
  9314  			this.Offset = 0;
  9315  			this.Index = sliceType$13.nil;
  9316  			this.Anonymous = false;
  9317  			return;
  9318  		}
  9319  		this.Name = Name_;
  9320  		this.PkgPath = PkgPath_;
  9321  		this.Type = Type_;
  9322  		this.Tag = Tag_;
  9323  		this.Offset = Offset_;
  9324  		this.Index = Index_;
  9325  		this.Anonymous = Anonymous_;
  9326  	});
  9327  	StructTag = $pkg.StructTag = $newType(8, $kindString, "reflect.StructTag", true, "reflect", true, null);
  9328  	fieldScan = $pkg.fieldScan = $newType(0, $kindStruct, "reflect.fieldScan", true, "reflect", false, function(typ_, index_) {
  9329  		this.$val = this;
  9330  		if (arguments.length === 0) {
  9331  			this.typ = ptrType$9.nil;
  9332  			this.index = sliceType$13.nil;
  9333  			return;
  9334  		}
  9335  		this.typ = typ_;
  9336  		this.index = index_;
  9337  	});
  9338  	Value = $pkg.Value = $newType(0, $kindStruct, "reflect.Value", true, "reflect", true, function(typ_, ptr_, flag_) {
  9339  		this.$val = this;
  9340  		if (arguments.length === 0) {
  9341  			this.typ = ptrType$1.nil;
  9342  			this.ptr = 0;
  9343  			this.flag = 0;
  9344  			return;
  9345  		}
  9346  		this.typ = typ_;
  9347  		this.ptr = ptr_;
  9348  		this.flag = flag_;
  9349  	});
  9350  	flag = $pkg.flag = $newType(4, $kindUintptr, "reflect.flag", true, "reflect", false, null);
  9351  	ValueError = $pkg.ValueError = $newType(0, $kindStruct, "reflect.ValueError", true, "reflect", true, function(Method_, Kind_) {
  9352  		this.$val = this;
  9353  		if (arguments.length === 0) {
  9354  			this.Method = "";
  9355  			this.Kind = 0;
  9356  			return;
  9357  		}
  9358  		this.Method = Method_;
  9359  		this.Kind = Kind_;
  9360  	});
  9361  	sliceType$1 = $sliceType(name);
  9362  	ptrType$1 = $ptrType(rtype);
  9363  	sliceType$2 = $sliceType(ptrType$1);
  9364  	sliceType$3 = $sliceType($emptyInterface);
  9365  	ptrType$2 = $ptrType(js.Object);
  9366  	funcType$1 = $funcType([sliceType$3], [ptrType$2], true);
  9367  	sliceType$4 = $sliceType($String);
  9368  	ptrType$3 = $ptrType(typeAlg);
  9369  	ptrType$4 = $ptrType($Uint8);
  9370  	sliceType$5 = $sliceType(method);
  9371  	sliceType$6 = $sliceType(imethod);
  9372  	sliceType$7 = $sliceType(structField);
  9373  	ptrType$5 = $ptrType(uncommonType);
  9374  	ptrType$6 = $ptrType(nameData);
  9375  	structType$3 = $structType("reflect", [{prop: "str", name: "str", anonymous: false, exported: false, typ: $String, tag: ""}]);
  9376  	sliceType$8 = $sliceType(ptrType$2);
  9377  	sliceType$9 = $sliceType(Value);
  9378  	sliceType$10 = $sliceType(Type);
  9379  	sliceType$11 = $sliceType(sliceType$8);
  9380  	arrayType$1 = $arrayType($UnsafePointer, 2);
  9381  	sliceType$12 = $sliceType(arrayType$1);
  9382  	ptrType$7 = $ptrType(interfaceType);
  9383  	ptrType$8 = $ptrType(imethod);
  9384  	sliceType$13 = $sliceType($Int);
  9385  	sliceType$14 = $sliceType(fieldScan);
  9386  	ptrType$9 = $ptrType(structType);
  9387  	sliceType$15 = $sliceType($Uint8);
  9388  	ptrType$15 = $ptrType($UnsafePointer);
  9389  	sliceType$17 = $sliceType($Int32);
  9390  	ptrType$16 = $ptrType(funcType);
  9391  	funcType$3 = $funcType([$String], [$Bool], false);
  9392  	funcType$4 = $funcType([$UnsafePointer, $Uintptr], [$Uintptr], false);
  9393  	funcType$5 = $funcType([$UnsafePointer, $UnsafePointer], [$Bool], false);
  9394  	ptrType$17 = $ptrType(structField);
  9395  	arrayType$12 = $arrayType($Uintptr, 2);
  9396  	ptrType$18 = $ptrType(ValueError);
  9397  	init = function() {
  9398  		var used, x, x$1, x$10, x$11, x$12, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9, $s, $r;
  9399  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; used = $f.used; x = $f.x; x$1 = $f.x$1; x$10 = $f.x$10; x$11 = $f.x$11; x$12 = $f.x$12; x$2 = $f.x$2; x$3 = $f.x$3; x$4 = $f.x$4; x$5 = $f.x$5; x$6 = $f.x$6; x$7 = $f.x$7; x$8 = $f.x$8; x$9 = $f.x$9; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  9400  		used = (function(i) {
  9401  			var i;
  9402  		});
  9403  		$r = used((x = new rtype.ptr(0, 0, 0, 0, 0, 0, 0, ptrType$3.nil, ptrType$4.nil, 0, 0), new x.constructor.elem(x))); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  9404  		$r = used((x$1 = new uncommonType.ptr(0, 0, 0, 0, 0, sliceType$5.nil), new x$1.constructor.elem(x$1))); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  9405  		$r = used((x$2 = new method.ptr(0, 0, 0, 0), new x$2.constructor.elem(x$2))); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  9406  		$r = used((x$3 = new arrayType.ptr(new rtype.ptr(0, 0, 0, 0, 0, 0, 0, ptrType$3.nil, ptrType$4.nil, 0, 0), ptrType$1.nil, ptrType$1.nil, 0), new x$3.constructor.elem(x$3))); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  9407  		$r = used((x$4 = new chanType.ptr(new rtype.ptr(0, 0, 0, 0, 0, 0, 0, ptrType$3.nil, ptrType$4.nil, 0, 0), ptrType$1.nil, 0), new x$4.constructor.elem(x$4))); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  9408  		$r = used((x$5 = new funcType.ptr(new rtype.ptr(0, 0, 0, 0, 0, 0, 0, ptrType$3.nil, ptrType$4.nil, 0, 0), 0, 0, sliceType$2.nil, sliceType$2.nil), new x$5.constructor.elem(x$5))); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  9409  		$r = used((x$6 = new interfaceType.ptr(new rtype.ptr(0, 0, 0, 0, 0, 0, 0, ptrType$3.nil, ptrType$4.nil, 0, 0), new name.ptr(ptrType$4.nil), sliceType$6.nil), new x$6.constructor.elem(x$6))); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  9410  		$r = used((x$7 = new mapType.ptr(new rtype.ptr(0, 0, 0, 0, 0, 0, 0, ptrType$3.nil, ptrType$4.nil, 0, 0), ptrType$1.nil, ptrType$1.nil, ptrType$1.nil, ptrType$1.nil, 0, 0, 0, 0, 0, false, false), new x$7.constructor.elem(x$7))); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  9411  		$r = used((x$8 = new ptrType.ptr(new rtype.ptr(0, 0, 0, 0, 0, 0, 0, ptrType$3.nil, ptrType$4.nil, 0, 0), ptrType$1.nil), new x$8.constructor.elem(x$8))); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  9412  		$r = used((x$9 = new sliceType.ptr(new rtype.ptr(0, 0, 0, 0, 0, 0, 0, ptrType$3.nil, ptrType$4.nil, 0, 0), ptrType$1.nil), new x$9.constructor.elem(x$9))); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  9413  		$r = used((x$10 = new structType.ptr(new rtype.ptr(0, 0, 0, 0, 0, 0, 0, ptrType$3.nil, ptrType$4.nil, 0, 0), new name.ptr(ptrType$4.nil), sliceType$7.nil), new x$10.constructor.elem(x$10))); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  9414  		$r = used((x$11 = new imethod.ptr(0, 0), new x$11.constructor.elem(x$11))); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  9415  		$r = used((x$12 = new structField.ptr(new name.ptr(ptrType$4.nil), ptrType$1.nil, 0), new x$12.constructor.elem(x$12))); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  9416  		initialized = true;
  9417  		uint8Type = $assertType(TypeOf(new $Uint8(0)), ptrType$1);
  9418  		$s = -1; return;
  9419  		/* */ } return; } if ($f === undefined) { $f = { $blk: init }; } $f.used = used; $f.x = x; $f.x$1 = x$1; $f.x$10 = x$10; $f.x$11 = x$11; $f.x$12 = x$12; $f.x$2 = x$2; $f.x$3 = x$3; $f.x$4 = x$4; $f.x$5 = x$5; $f.x$6 = x$6; $f.x$7 = x$7; $f.x$8 = x$8; $f.x$9 = x$9; $f.$s = $s; $f.$r = $r; return $f;
  9420  	};
  9421  	jsType = function(typ) {
  9422  		var typ;
  9423  		return typ.jsType;
  9424  	};
  9425  	reflectType = function(typ) {
  9426  		var _1, _i, _i$1, _i$2, _i$3, _i$4, _key, _ref, _ref$1, _ref$2, _ref$3, _ref$4, dir, f, fields, i, i$1, i$2, i$3, i$4, imethods, in$1, m, m$1, methodSet, methods, offsetAnon, out, outCount, params, reflectFields, reflectMethods, results, rt, typ, ut;
  9427  		if (typ.reflectType === undefined) {
  9428  			rt = new rtype.ptr(((($parseInt(typ.size) >> 0) >>> 0)), 0, 0, 0, 0, 0, ((($parseInt(typ.kind) >> 0) << 24 >>> 24)), ptrType$3.nil, ptrType$4.nil, newNameOff($clone(newName(internalStr(typ.string), "", !!(typ.exported)), name)), 0);
  9429  			rt.jsType = typ;
  9430  			typ.reflectType = rt;
  9431  			methodSet = $methodSet(typ);
  9432  			if (!(($parseInt(methodSet.length) === 0)) || !!(typ.named)) {
  9433  				rt.tflag = (rt.tflag | (1)) >>> 0;
  9434  				if (!!(typ.named)) {
  9435  					rt.tflag = (rt.tflag | (4)) >>> 0;
  9436  				}
  9437  				reflectMethods = $makeSlice(sliceType$5, $parseInt(methodSet.length));
  9438  				_ref = reflectMethods;
  9439  				_i = 0;
  9440  				while (true) {
  9441  					if (!(_i < _ref.$length)) { break; }
  9442  					i = _i;
  9443  					m = methodSet[i];
  9444  					method.copy(((i < 0 || i >= reflectMethods.$length) ? ($throwRuntimeError("index out of range"), undefined) : reflectMethods.$array[reflectMethods.$offset + i]), new method.ptr(newNameOff($clone(newName(internalStr(m.name), "", internalStr(m.pkg) === ""), name)), newTypeOff(reflectType(m.typ)), 0, 0));
  9445  					_i++;
  9446  				}
  9447  				ut = new uncommonType.ptr(newNameOff($clone(newName(internalStr(typ.pkg), "", false), name)), (($parseInt(methodSet.length) << 16 >>> 16)), 0, 0, 0, reflectMethods);
  9448  				_key = rt; (uncommonTypeMap || $throwRuntimeError("assignment to entry in nil map"))[ptrType$1.keyFor(_key)] = { k: _key, v: ut };
  9449  				ut.jsType = typ;
  9450  			}
  9451  			_1 = rt.Kind();
  9452  			if (_1 === (17)) {
  9453  				setKindType(rt, new arrayType.ptr(new rtype.ptr(0, 0, 0, 0, 0, 0, 0, ptrType$3.nil, ptrType$4.nil, 0, 0), reflectType(typ.elem), ptrType$1.nil, ((($parseInt(typ.len) >> 0) >>> 0))));
  9454  			} else if (_1 === (18)) {
  9455  				dir = 3;
  9456  				if (!!(typ.sendOnly)) {
  9457  					dir = 2;
  9458  				}
  9459  				if (!!(typ.recvOnly)) {
  9460  					dir = 1;
  9461  				}
  9462  				setKindType(rt, new chanType.ptr(new rtype.ptr(0, 0, 0, 0, 0, 0, 0, ptrType$3.nil, ptrType$4.nil, 0, 0), reflectType(typ.elem), ((dir >>> 0))));
  9463  			} else if (_1 === (19)) {
  9464  				params = typ.params;
  9465  				in$1 = $makeSlice(sliceType$2, $parseInt(params.length));
  9466  				_ref$1 = in$1;
  9467  				_i$1 = 0;
  9468  				while (true) {
  9469  					if (!(_i$1 < _ref$1.$length)) { break; }
  9470  					i$1 = _i$1;
  9471  					((i$1 < 0 || i$1 >= in$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : in$1.$array[in$1.$offset + i$1] = reflectType(params[i$1]));
  9472  					_i$1++;
  9473  				}
  9474  				results = typ.results;
  9475  				out = $makeSlice(sliceType$2, $parseInt(results.length));
  9476  				_ref$2 = out;
  9477  				_i$2 = 0;
  9478  				while (true) {
  9479  					if (!(_i$2 < _ref$2.$length)) { break; }
  9480  					i$2 = _i$2;
  9481  					((i$2 < 0 || i$2 >= out.$length) ? ($throwRuntimeError("index out of range"), undefined) : out.$array[out.$offset + i$2] = reflectType(results[i$2]));
  9482  					_i$2++;
  9483  				}
  9484  				outCount = (($parseInt(results.length) << 16 >>> 16));
  9485  				if (!!(typ.variadic)) {
  9486  					outCount = (outCount | (32768)) >>> 0;
  9487  				}
  9488  				setKindType(rt, new funcType.ptr($clone(rt, rtype), (($parseInt(params.length) << 16 >>> 16)), outCount, in$1, out));
  9489  			} else if (_1 === (20)) {
  9490  				methods = typ.methods;
  9491  				imethods = $makeSlice(sliceType$6, $parseInt(methods.length));
  9492  				_ref$3 = imethods;
  9493  				_i$3 = 0;
  9494  				while (true) {
  9495  					if (!(_i$3 < _ref$3.$length)) { break; }
  9496  					i$3 = _i$3;
  9497  					m$1 = methods[i$3];
  9498  					imethod.copy(((i$3 < 0 || i$3 >= imethods.$length) ? ($throwRuntimeError("index out of range"), undefined) : imethods.$array[imethods.$offset + i$3]), new imethod.ptr(newNameOff($clone(newName(internalStr(m$1.name), "", internalStr(m$1.pkg) === ""), name)), newTypeOff(reflectType(m$1.typ))));
  9499  					_i$3++;
  9500  				}
  9501  				setKindType(rt, new interfaceType.ptr($clone(rt, rtype), $clone(newName(internalStr(typ.pkg), "", false), name), imethods));
  9502  			} else if (_1 === (21)) {
  9503  				setKindType(rt, new mapType.ptr(new rtype.ptr(0, 0, 0, 0, 0, 0, 0, ptrType$3.nil, ptrType$4.nil, 0, 0), reflectType(typ.key), reflectType(typ.elem), ptrType$1.nil, ptrType$1.nil, 0, 0, 0, 0, 0, false, false));
  9504  			} else if (_1 === (22)) {
  9505  				setKindType(rt, new ptrType.ptr(new rtype.ptr(0, 0, 0, 0, 0, 0, 0, ptrType$3.nil, ptrType$4.nil, 0, 0), reflectType(typ.elem)));
  9506  			} else if (_1 === (23)) {
  9507  				setKindType(rt, new sliceType.ptr(new rtype.ptr(0, 0, 0, 0, 0, 0, 0, ptrType$3.nil, ptrType$4.nil, 0, 0), reflectType(typ.elem)));
  9508  			} else if (_1 === (25)) {
  9509  				fields = typ.fields;
  9510  				reflectFields = $makeSlice(sliceType$7, $parseInt(fields.length));
  9511  				_ref$4 = reflectFields;
  9512  				_i$4 = 0;
  9513  				while (true) {
  9514  					if (!(_i$4 < _ref$4.$length)) { break; }
  9515  					i$4 = _i$4;
  9516  					f = fields[i$4];
  9517  					offsetAnon = ((i$4 >>> 0)) << 1 >>> 0;
  9518  					if (!!(f.anonymous)) {
  9519  						offsetAnon = (offsetAnon | (1)) >>> 0;
  9520  					}
  9521  					structField.copy(((i$4 < 0 || i$4 >= reflectFields.$length) ? ($throwRuntimeError("index out of range"), undefined) : reflectFields.$array[reflectFields.$offset + i$4]), new structField.ptr($clone(newName(internalStr(f.name), internalStr(f.tag), !!(f.exported)), name), reflectType(f.typ), offsetAnon));
  9522  					_i$4++;
  9523  				}
  9524  				setKindType(rt, new structType.ptr($clone(rt, rtype), $clone(newName(internalStr(typ.pkgPath), "", false), name), reflectFields));
  9525  			}
  9526  		}
  9527  		return ((typ.reflectType));
  9528  	};
  9529  	setKindType = function(rt, kindType) {
  9530  		var kindType, rt;
  9531  		rt.kindType = kindType;
  9532  		kindType.rtype = rt;
  9533  	};
  9534  	uncommonType.ptr.prototype.methods = function() {
  9535  		var t;
  9536  		t = this;
  9537  		return t._methods;
  9538  	};
  9539  	uncommonType.prototype.methods = function() { return this.$val.methods(); };
  9540  	rtype.ptr.prototype.uncommon = function() {
  9541  		var _entry, t;
  9542  		t = this;
  9543  		return (_entry = uncommonTypeMap[ptrType$1.keyFor(t)], _entry !== undefined ? _entry.v : ptrType$5.nil);
  9544  	};
  9545  	rtype.prototype.uncommon = function() { return this.$val.uncommon(); };
  9546  	funcType.ptr.prototype.in$ = function() {
  9547  		var t;
  9548  		t = this;
  9549  		return t._in;
  9550  	};
  9551  	funcType.prototype.in$ = function() { return this.$val.in$(); };
  9552  	funcType.ptr.prototype.out = function() {
  9553  		var t;
  9554  		t = this;
  9555  		return t._out;
  9556  	};
  9557  	funcType.prototype.out = function() { return this.$val.out(); };
  9558  	name.ptr.prototype.name = function() {
  9559  		var _entry, n, s;
  9560  		s = "";
  9561  		n = this;
  9562  		s = (_entry = nameMap[ptrType$4.keyFor(n.bytes)], _entry !== undefined ? _entry.v : ptrType$6.nil).name;
  9563  		return s;
  9564  	};
  9565  	name.prototype.name = function() { return this.$val.name(); };
  9566  	name.ptr.prototype.tag = function() {
  9567  		var _entry, n, s;
  9568  		s = "";
  9569  		n = this;
  9570  		s = (_entry = nameMap[ptrType$4.keyFor(n.bytes)], _entry !== undefined ? _entry.v : ptrType$6.nil).tag;
  9571  		return s;
  9572  	};
  9573  	name.prototype.tag = function() { return this.$val.tag(); };
  9574  	name.ptr.prototype.pkgPath = function() {
  9575  		var n;
  9576  		n = this;
  9577  		return "";
  9578  	};
  9579  	name.prototype.pkgPath = function() { return this.$val.pkgPath(); };
  9580  	name.ptr.prototype.isExported = function() {
  9581  		var _entry, n;
  9582  		n = this;
  9583  		return (_entry = nameMap[ptrType$4.keyFor(n.bytes)], _entry !== undefined ? _entry.v : ptrType$6.nil).exported;
  9584  	};
  9585  	name.prototype.isExported = function() { return this.$val.isExported(); };
  9586  	newName = function(n, tag, exported) {
  9587  		var _key, b, exported, n, tag;
  9588  		b = $newDataPointer(0, ptrType$4);
  9589  		_key = b; (nameMap || $throwRuntimeError("assignment to entry in nil map"))[ptrType$4.keyFor(_key)] = { k: _key, v: new nameData.ptr(n, tag, exported) };
  9590  		return new name.ptr(b);
  9591  	};
  9592  	rtype.ptr.prototype.nameOff = function(off) {
  9593  		var off, t, x;
  9594  		t = this;
  9595  		return (x = ((off >> 0)), ((x < 0 || x >= nameOffList.$length) ? ($throwRuntimeError("index out of range"), undefined) : nameOffList.$array[nameOffList.$offset + x]));
  9596  	};
  9597  	rtype.prototype.nameOff = function(off) { return this.$val.nameOff(off); };
  9598  	newNameOff = function(n) {
  9599  		var i, n;
  9600  		i = nameOffList.$length;
  9601  		nameOffList = $append(nameOffList, n);
  9602  		return ((i >> 0));
  9603  	};
  9604  	rtype.ptr.prototype.typeOff = function(off) {
  9605  		var off, t, x;
  9606  		t = this;
  9607  		return (x = ((off >> 0)), ((x < 0 || x >= typeOffList.$length) ? ($throwRuntimeError("index out of range"), undefined) : typeOffList.$array[typeOffList.$offset + x]));
  9608  	};
  9609  	rtype.prototype.typeOff = function(off) { return this.$val.typeOff(off); };
  9610  	newTypeOff = function(t) {
  9611  		var i, t;
  9612  		i = typeOffList.$length;
  9613  		typeOffList = $append(typeOffList, t);
  9614  		return ((i >> 0));
  9615  	};
  9616  	internalStr = function(strObj) {
  9617  		var c, strObj;
  9618  		c = new structType$3.ptr("");
  9619  		c.str = strObj;
  9620  		return c.str;
  9621  	};
  9622  	isWrapped = function(typ) {
  9623  		var typ;
  9624  		return !!(jsType(typ).wrapped);
  9625  	};
  9626  	copyStruct = function(dst, src, typ) {
  9627  		var dst, fields, i, prop, src, typ;
  9628  		fields = jsType(typ).fields;
  9629  		i = 0;
  9630  		while (true) {
  9631  			if (!(i < $parseInt(fields.length))) { break; }
  9632  			prop = $internalize(fields[i].prop, $String);
  9633  			dst[$externalize(prop, $String)] = src[$externalize(prop, $String)];
  9634  			i = i + (1) >> 0;
  9635  		}
  9636  	};
  9637  	makeValue = function(t, v, fl) {
  9638  		var _r, _r$1, _r$2, _r$3, _r$4, _r$5, _v, _v$1, fl, rt, t, v, $s, $r;
  9639  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _v = $f._v; _v$1 = $f._v$1; fl = $f.fl; rt = $f.rt; t = $f.t; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  9640  		_r = t.common(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  9641  		rt = _r;
  9642  		_r$1 = t.Kind(); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  9643  		if (_r$1 === 17) { _v$1 = true; $s = 5; continue s; }
  9644  		_r$2 = t.Kind(); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  9645  		_v$1 = _r$2 === 25; case 5:
  9646  		if (_v$1) { _v = true; $s = 4; continue s; }
  9647  		_r$3 = t.Kind(); /* */ $s = 8; case 8: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  9648  		_v = _r$3 === 22; case 4:
  9649  		/* */ if (_v) { $s = 2; continue; }
  9650  		/* */ $s = 3; continue;
  9651  		/* if (_v) { */ case 2:
  9652  			_r$4 = t.Kind(); /* */ $s = 9; case 9: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
  9653  			$s = -1; return new Value.ptr(rt, (v), (fl | ((_r$4 >>> 0))) >>> 0);
  9654  		/* } */ case 3:
  9655  		_r$5 = t.Kind(); /* */ $s = 10; case 10: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
  9656  		$s = -1; return new Value.ptr(rt, ($newDataPointer(v, jsType(rt.ptrTo()))), (((fl | ((_r$5 >>> 0))) >>> 0) | 128) >>> 0);
  9657  		/* */ } return; } if ($f === undefined) { $f = { $blk: makeValue }; } $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._v = _v; $f._v$1 = _v$1; $f.fl = fl; $f.rt = rt; $f.t = t; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
  9658  	};
  9659  	MakeSlice = function(typ, len, cap) {
  9660  		var _r, _r$1, cap, len, typ, $s, $r;
  9661  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; cap = $f.cap; len = $f.len; typ = $f.typ; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  9662  		typ = [typ];
  9663  		_r = typ[0].Kind(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  9664  		/* */ if (!((_r === 23))) { $s = 1; continue; }
  9665  		/* */ $s = 2; continue;
  9666  		/* if (!((_r === 23))) { */ case 1:
  9667  			$panic(new $String("reflect.MakeSlice of non-slice type"));
  9668  		/* } */ case 2:
  9669  		if (len < 0) {
  9670  			$panic(new $String("reflect.MakeSlice: negative len"));
  9671  		}
  9672  		if (cap < 0) {
  9673  			$panic(new $String("reflect.MakeSlice: negative cap"));
  9674  		}
  9675  		if (len > cap) {
  9676  			$panic(new $String("reflect.MakeSlice: len > cap"));
  9677  		}
  9678  		_r$1 = makeValue(typ[0], $makeSlice(jsType(typ[0]), len, cap, (function(typ) { return function $b() {
  9679  			var _r$1, _r$2, $s, $r;
  9680  			/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; _r$2 = $f._r$2; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  9681  			_r$1 = typ[0].Elem(); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  9682  			_r$2 = jsType(_r$1); /* */ $s = 2; case 2: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  9683  			$s = -1; return _r$2.zero();
  9684  			/* */ } return; } if ($f === undefined) { $f = { $blk: $b }; } $f._r$1 = _r$1; $f._r$2 = _r$2; $f.$s = $s; $f.$r = $r; return $f;
  9685  		}; })(typ)), 0); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  9686  		$s = -1; return _r$1;
  9687  		/* */ } return; } if ($f === undefined) { $f = { $blk: MakeSlice }; } $f._r = _r; $f._r$1 = _r$1; $f.cap = cap; $f.len = len; $f.typ = typ; $f.$s = $s; $f.$r = $r; return $f;
  9688  	};
  9689  	$pkg.MakeSlice = MakeSlice;
  9690  	TypeOf = function(i) {
  9691  		var i;
  9692  		if (!initialized) {
  9693  			return new rtype.ptr(0, 0, 0, 0, 0, 0, 0, ptrType$3.nil, ptrType$4.nil, 0, 0);
  9694  		}
  9695  		if ($interfaceIsEqual(i, $ifaceNil)) {
  9696  			return $ifaceNil;
  9697  		}
  9698  		return reflectType(i.constructor);
  9699  	};
  9700  	$pkg.TypeOf = TypeOf;
  9701  	ValueOf = function(i) {
  9702  		var _r, i, $s, $r;
  9703  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; i = $f.i; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  9704  		if ($interfaceIsEqual(i, $ifaceNil)) {
  9705  			$s = -1; return new Value.ptr(ptrType$1.nil, 0, 0);
  9706  		}
  9707  		_r = makeValue(reflectType(i.constructor), i.$val, 0); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  9708  		$s = -1; return _r;
  9709  		/* */ } return; } if ($f === undefined) { $f = { $blk: ValueOf }; } $f._r = _r; $f.i = i; $f.$s = $s; $f.$r = $r; return $f;
  9710  	};
  9711  	$pkg.ValueOf = ValueOf;
  9712  	FuncOf = function(in$1, out, variadic) {
  9713  		var _i, _i$1, _r, _ref, _ref$1, _v, _v$1, i, i$1, in$1, jsIn, jsOut, out, v, v$1, variadic, x, $s, $r;
  9714  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _i = $f._i; _i$1 = $f._i$1; _r = $f._r; _ref = $f._ref; _ref$1 = $f._ref$1; _v = $f._v; _v$1 = $f._v$1; i = $f.i; i$1 = $f.i$1; in$1 = $f.in$1; jsIn = $f.jsIn; jsOut = $f.jsOut; out = $f.out; v = $f.v; v$1 = $f.v$1; variadic = $f.variadic; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  9715  		if (!(variadic)) { _v = false; $s = 3; continue s; }
  9716  		if (in$1.$length === 0) { _v$1 = true; $s = 4; continue s; }
  9717  		_r = (x = in$1.$length - 1 >> 0, ((x < 0 || x >= in$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : in$1.$array[in$1.$offset + x])).Kind(); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  9718  		_v$1 = !((_r === 23)); case 4:
  9719  		_v = _v$1; case 3:
  9720  		/* */ if (_v) { $s = 1; continue; }
  9721  		/* */ $s = 2; continue;
  9722  		/* if (_v) { */ case 1:
  9723  			$panic(new $String("reflect.FuncOf: last arg of variadic func must be slice"));
  9724  		/* } */ case 2:
  9725  		jsIn = $makeSlice(sliceType$8, in$1.$length);
  9726  		_ref = in$1;
  9727  		_i = 0;
  9728  		while (true) {
  9729  			if (!(_i < _ref.$length)) { break; }
  9730  			i = _i;
  9731  			v = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
  9732  			((i < 0 || i >= jsIn.$length) ? ($throwRuntimeError("index out of range"), undefined) : jsIn.$array[jsIn.$offset + i] = jsType(v));
  9733  			_i++;
  9734  		}
  9735  		jsOut = $makeSlice(sliceType$8, out.$length);
  9736  		_ref$1 = out;
  9737  		_i$1 = 0;
  9738  		while (true) {
  9739  			if (!(_i$1 < _ref$1.$length)) { break; }
  9740  			i$1 = _i$1;
  9741  			v$1 = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]);
  9742  			((i$1 < 0 || i$1 >= jsOut.$length) ? ($throwRuntimeError("index out of range"), undefined) : jsOut.$array[jsOut.$offset + i$1] = jsType(v$1));
  9743  			_i$1++;
  9744  		}
  9745  		$s = -1; return reflectType($funcType($externalize(jsIn, sliceType$8), $externalize(jsOut, sliceType$8), $externalize(variadic, $Bool)));
  9746  		/* */ } return; } if ($f === undefined) { $f = { $blk: FuncOf }; } $f._i = _i; $f._i$1 = _i$1; $f._r = _r; $f._ref = _ref; $f._ref$1 = _ref$1; $f._v = _v; $f._v$1 = _v$1; $f.i = i; $f.i$1 = i$1; $f.in$1 = in$1; $f.jsIn = jsIn; $f.jsOut = jsOut; $f.out = out; $f.v = v; $f.v$1 = v$1; $f.variadic = variadic; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
  9747  	};
  9748  	$pkg.FuncOf = FuncOf;
  9749  	rtype.ptr.prototype.ptrTo = function() {
  9750  		var t;
  9751  		t = this;
  9752  		return reflectType($ptrType(jsType(t)));
  9753  	};
  9754  	rtype.prototype.ptrTo = function() { return this.$val.ptrTo(); };
  9755  	SliceOf = function(t) {
  9756  		var t;
  9757  		return reflectType($sliceType(jsType(t)));
  9758  	};
  9759  	$pkg.SliceOf = SliceOf;
  9760  	Zero = function(typ) {
  9761  		var _r, typ, $s, $r;
  9762  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; typ = $f.typ; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  9763  		_r = makeValue(typ, jsType(typ).zero(), 0); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  9764  		$s = -1; return _r;
  9765  		/* */ } return; } if ($f === undefined) { $f = { $blk: Zero }; } $f._r = _r; $f.typ = typ; $f.$s = $s; $f.$r = $r; return $f;
  9766  	};
  9767  	$pkg.Zero = Zero;
  9768  	unsafe_New = function(typ) {
  9769  		var _1, typ;
  9770  		_1 = typ.Kind();
  9771  		if (_1 === (25)) {
  9772  			return (new (jsType(typ).ptr)());
  9773  		} else if (_1 === (17)) {
  9774  			return (jsType(typ).zero());
  9775  		} else {
  9776  			return ($newDataPointer(jsType(typ).zero(), jsType(typ.ptrTo())));
  9777  		}
  9778  	};
  9779  	makeInt = function(f, bits, t) {
  9780  		var _1, _r, bits, f, ptr, t, typ, $s, $r;
  9781  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _r = $f._r; bits = $f.bits; f = $f.f; ptr = $f.ptr; t = $f.t; typ = $f.typ; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  9782  		_r = t.common(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  9783  		typ = _r;
  9784  		ptr = unsafe_New(typ);
  9785  		_1 = typ.Kind();
  9786  		if (_1 === (3)) {
  9787  			(ptr).$set(((bits.$low << 24 >> 24)));
  9788  		} else if (_1 === (4)) {
  9789  			(ptr).$set(((bits.$low << 16 >> 16)));
  9790  		} else if ((_1 === (2)) || (_1 === (5))) {
  9791  			(ptr).$set(((bits.$low >> 0)));
  9792  		} else if (_1 === (6)) {
  9793  			(ptr).$set((new $Int64(bits.$high, bits.$low)));
  9794  		} else if (_1 === (8)) {
  9795  			(ptr).$set(((bits.$low << 24 >>> 24)));
  9796  		} else if (_1 === (9)) {
  9797  			(ptr).$set(((bits.$low << 16 >>> 16)));
  9798  		} else if ((_1 === (7)) || (_1 === (10)) || (_1 === (12))) {
  9799  			(ptr).$set(((bits.$low >>> 0)));
  9800  		} else if (_1 === (11)) {
  9801  			(ptr).$set((bits));
  9802  		}
  9803  		$s = -1; return new Value.ptr(typ, ptr, (((f | 128) >>> 0) | ((typ.Kind() >>> 0))) >>> 0);
  9804  		/* */ } return; } if ($f === undefined) { $f = { $blk: makeInt }; } $f._1 = _1; $f._r = _r; $f.bits = bits; $f.f = f; $f.ptr = ptr; $f.t = t; $f.typ = typ; $f.$s = $s; $f.$r = $r; return $f;
  9805  	};
  9806  	typedmemmove = function(t, dst, src) {
  9807  		var dst, src, t;
  9808  		dst.$set(src.$get());
  9809  	};
  9810  	makemap = function(t, cap) {
  9811  		var cap, m, t;
  9812  		m = 0;
  9813  		m = (new ($global.Object)());
  9814  		return m;
  9815  	};
  9816  	keyFor = function(t, key) {
  9817  		var k, key, kv, t;
  9818  		kv = key;
  9819  		if (!(kv.$get === undefined)) {
  9820  			kv = kv.$get();
  9821  		}
  9822  		k = $internalize(jsType(t.Key()).keyFor(kv), $String);
  9823  		return [kv, k];
  9824  	};
  9825  	mapaccess = function(t, m, key) {
  9826  		var _tuple, entry, k, key, m, t;
  9827  		_tuple = keyFor(t, key);
  9828  		k = _tuple[1];
  9829  		entry = m[$externalize(k, $String)];
  9830  		if (entry === undefined) {
  9831  			return 0;
  9832  		}
  9833  		return ($newDataPointer(entry.v, jsType(PtrTo(t.Elem()))));
  9834  	};
  9835  	mapassign = function(t, m, key, val) {
  9836  		var _r, _tuple, entry, et, jsVal, k, key, kv, m, newVal, t, val, $s, $r;
  9837  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; entry = $f.entry; et = $f.et; jsVal = $f.jsVal; k = $f.k; key = $f.key; kv = $f.kv; m = $f.m; newVal = $f.newVal; t = $f.t; val = $f.val; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  9838  		_tuple = keyFor(t, key);
  9839  		kv = _tuple[0];
  9840  		k = _tuple[1];
  9841  		jsVal = val.$get();
  9842  		et = t.Elem();
  9843  		_r = et.Kind(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  9844  		/* */ if (_r === 25) { $s = 1; continue; }
  9845  		/* */ $s = 2; continue;
  9846  		/* if (_r === 25) { */ case 1:
  9847  			newVal = jsType(et).zero();
  9848  			copyStruct(newVal, jsVal, et);
  9849  			jsVal = newVal;
  9850  		/* } */ case 2:
  9851  		entry = new ($global.Object)();
  9852  		entry.k = kv;
  9853  		entry.v = jsVal;
  9854  		m[$externalize(k, $String)] = entry;
  9855  		$s = -1; return;
  9856  		/* */ } return; } if ($f === undefined) { $f = { $blk: mapassign }; } $f._r = _r; $f._tuple = _tuple; $f.entry = entry; $f.et = et; $f.jsVal = jsVal; $f.k = k; $f.key = key; $f.kv = kv; $f.m = m; $f.newVal = newVal; $f.t = t; $f.val = val; $f.$s = $s; $f.$r = $r; return $f;
  9857  	};
  9858  	mapdelete = function(t, m, key) {
  9859  		var _tuple, k, key, m, t;
  9860  		_tuple = keyFor(t, key);
  9861  		k = _tuple[1];
  9862  		delete m[$externalize(k, $String)];
  9863  	};
  9864  	mapiterinit = function(t, m) {
  9865  		var m, t;
  9866  		return ((new mapIter.ptr(t, m, $keys(m), 0)));
  9867  	};
  9868  	mapiterkey = function(it) {
  9869  		var _r, _r$1, _r$2, it, iter, k, $s, $r;
  9870  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; it = $f.it; iter = $f.iter; k = $f.k; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  9871  		iter = ((it));
  9872  		k = iter.keys[iter.i];
  9873  		_r = iter.t.Key(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  9874  		_r$1 = PtrTo(_r); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  9875  		_r$2 = jsType(_r$1); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  9876  		$s = -1; return ($newDataPointer(iter.m[$externalize($internalize(k, $String), $String)].k, _r$2));
  9877  		/* */ } return; } if ($f === undefined) { $f = { $blk: mapiterkey }; } $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f.it = it; $f.iter = iter; $f.k = k; $f.$s = $s; $f.$r = $r; return $f;
  9878  	};
  9879  	mapiternext = function(it) {
  9880  		var it, iter;
  9881  		iter = ((it));
  9882  		iter.i = iter.i + (1) >> 0;
  9883  	};
  9884  	maplen = function(m) {
  9885  		var m;
  9886  		return $parseInt($keys(m).length);
  9887  	};
  9888  	cvtDirect = function(v, typ) {
  9889  		var _1, _arg, _arg$1, _arg$2, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, k, slice, srcVal, typ, v, val, $s, $r;
  9890  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _arg = $f._arg; _arg$1 = $f._arg$1; _arg$2 = $f._arg$2; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; k = $f.k; slice = $f.slice; srcVal = $f.srcVal; typ = $f.typ; v = $f.v; val = $f.val; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  9891  		srcVal = $clone(v, Value).object();
  9892  		/* */ if (srcVal === jsType(v.typ).nil) { $s = 1; continue; }
  9893  		/* */ $s = 2; continue;
  9894  		/* if (srcVal === jsType(v.typ).nil) { */ case 1:
  9895  			_r = makeValue(typ, jsType(typ).nil, v.flag); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  9896  			$s = -1; return _r;
  9897  		/* } */ case 2:
  9898  		val = null;
  9899  			_r$1 = typ.Kind(); /* */ $s = 5; case 5: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  9900  			k = _r$1;
  9901  			_1 = k;
  9902  			/* */ if (_1 === (23)) { $s = 6; continue; }
  9903  			/* */ if (_1 === (22)) { $s = 7; continue; }
  9904  			/* */ if (_1 === (25)) { $s = 8; continue; }
  9905  			/* */ if ((_1 === (17)) || (_1 === (1)) || (_1 === (18)) || (_1 === (19)) || (_1 === (20)) || (_1 === (21)) || (_1 === (24))) { $s = 9; continue; }
  9906  			/* */ $s = 10; continue;
  9907  			/* if (_1 === (23)) { */ case 6:
  9908  				slice = new (jsType(typ))(srcVal.$array);
  9909  				slice.$offset = srcVal.$offset;
  9910  				slice.$length = srcVal.$length;
  9911  				slice.$capacity = srcVal.$capacity;
  9912  				val = $newDataPointer(slice, jsType(PtrTo(typ)));
  9913  				$s = 11; continue;
  9914  			/* } else if (_1 === (22)) { */ case 7:
  9915  				_r$2 = typ.Elem(); /* */ $s = 14; case 14: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  9916  				_r$3 = _r$2.Kind(); /* */ $s = 15; case 15: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  9917  				/* */ if (_r$3 === 25) { $s = 12; continue; }
  9918  				/* */ $s = 13; continue;
  9919  				/* if (_r$3 === 25) { */ case 12:
  9920  					_r$4 = typ.Elem(); /* */ $s = 18; case 18: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
  9921  					/* */ if ($interfaceIsEqual(_r$4, v.typ.Elem())) { $s = 16; continue; }
  9922  					/* */ $s = 17; continue;
  9923  					/* if ($interfaceIsEqual(_r$4, v.typ.Elem())) { */ case 16:
  9924  						val = srcVal;
  9925  						/* break; */ $s = 4; continue;
  9926  					/* } */ case 17:
  9927  					val = new (jsType(typ))();
  9928  					_arg = val;
  9929  					_arg$1 = srcVal;
  9930  					_r$5 = typ.Elem(); /* */ $s = 19; case 19: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
  9931  					_arg$2 = _r$5;
  9932  					$r = copyStruct(_arg, _arg$1, _arg$2); /* */ $s = 20; case 20: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  9933  					/* break; */ $s = 4; continue;
  9934  				/* } */ case 13:
  9935  				val = new (jsType(typ))(srcVal.$get, srcVal.$set);
  9936  				$s = 11; continue;
  9937  			/* } else if (_1 === (25)) { */ case 8:
  9938  				val = new (jsType(typ).ptr)();
  9939  				copyStruct(val, srcVal, typ);
  9940  				$s = 11; continue;
  9941  			/* } else if ((_1 === (17)) || (_1 === (1)) || (_1 === (18)) || (_1 === (19)) || (_1 === (20)) || (_1 === (21)) || (_1 === (24))) { */ case 9:
  9942  				val = v.ptr;
  9943  				$s = 11; continue;
  9944  			/* } else { */ case 10:
  9945  				$panic(new ValueError.ptr("reflect.Convert", k));
  9946  			/* } */ case 11:
  9947  		case 4:
  9948  		_r$6 = typ.common(); /* */ $s = 21; case 21: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
  9949  		_r$7 = typ.Kind(); /* */ $s = 22; case 22: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
  9950  		$s = -1; return new Value.ptr(_r$6, (val), (((new flag(v.flag).ro() | ((v.flag & 128) >>> 0)) >>> 0) | ((_r$7 >>> 0))) >>> 0);
  9951  		/* */ } return; } if ($f === undefined) { $f = { $blk: cvtDirect }; } $f._1 = _1; $f._arg = _arg; $f._arg$1 = _arg$1; $f._arg$2 = _arg$2; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f.k = k; $f.slice = slice; $f.srcVal = srcVal; $f.typ = typ; $f.v = v; $f.val = val; $f.$s = $s; $f.$r = $r; return $f;
  9952  	};
  9953  	Copy = function(dst, src) {
  9954  		var _r, _v, dk, dst, dstVal, sk, src, srcVal, stringCopy, $s, $r;
  9955  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _v = $f._v; dk = $f.dk; dst = $f.dst; dstVal = $f.dstVal; sk = $f.sk; src = $f.src; srcVal = $f.srcVal; stringCopy = $f.stringCopy; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  9956  		dk = new flag(dst.flag).kind();
  9957  		if (!((dk === 17)) && !((dk === 23))) {
  9958  			$panic(new ValueError.ptr("reflect.Copy", dk));
  9959  		}
  9960  		if (dk === 17) {
  9961  			new flag(dst.flag).mustBeAssignable();
  9962  		}
  9963  		new flag(dst.flag).mustBeExported();
  9964  		sk = new flag(src.flag).kind();
  9965  		stringCopy = false;
  9966  		/* */ if (!((sk === 17)) && !((sk === 23))) { $s = 1; continue; }
  9967  		/* */ $s = 2; continue;
  9968  		/* if (!((sk === 17)) && !((sk === 23))) { */ case 1:
  9969  			if (!(sk === 24)) { _v = false; $s = 3; continue s; }
  9970  			_r = dst.typ.Elem().Kind(); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  9971  			_v = _r === 8; case 3:
  9972  			stringCopy = _v;
  9973  			if (!stringCopy) {
  9974  				$panic(new ValueError.ptr("reflect.Copy", sk));
  9975  			}
  9976  		/* } */ case 2:
  9977  		new flag(src.flag).mustBeExported();
  9978  		/* */ if (!stringCopy) { $s = 5; continue; }
  9979  		/* */ $s = 6; continue;
  9980  		/* if (!stringCopy) { */ case 5:
  9981  			$r = typesMustMatch("reflect.Copy", dst.typ.Elem(), src.typ.Elem()); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  9982  		/* } */ case 6:
  9983  		dstVal = $clone(dst, Value).object();
  9984  		if (dk === 17) {
  9985  			dstVal = new (jsType(SliceOf(dst.typ.Elem())))(dstVal);
  9986  		}
  9987  		srcVal = $clone(src, Value).object();
  9988  		if (sk === 17) {
  9989  			srcVal = new (jsType(SliceOf(src.typ.Elem())))(srcVal);
  9990  		}
  9991  		if (stringCopy) {
  9992  			$s = -1; return $parseInt($copyString(dstVal, srcVal)) >> 0;
  9993  		}
  9994  		$s = -1; return $parseInt($copySlice(dstVal, srcVal)) >> 0;
  9995  		/* */ } return; } if ($f === undefined) { $f = { $blk: Copy }; } $f._r = _r; $f._v = _v; $f.dk = dk; $f.dst = dst; $f.dstVal = dstVal; $f.sk = sk; $f.src = src; $f.srcVal = srcVal; $f.stringCopy = stringCopy; $f.$s = $s; $f.$r = $r; return $f;
  9996  	};
  9997  	$pkg.Copy = Copy;
  9998  	methodReceiver = function(op, v, i) {
  9999  		var _$38, _r, fn, i, m, m$1, ms, op, prop, rcvr, t, tt, v, x, $s, $r;
 10000  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _$38 = $f._$38; _r = $f._r; fn = $f.fn; i = $f.i; m = $f.m; m$1 = $f.m$1; ms = $f.ms; op = $f.op; prop = $f.prop; rcvr = $f.rcvr; t = $f.t; tt = $f.tt; v = $f.v; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 10001  		_$38 = ptrType$1.nil;
 10002  		t = ptrType$1.nil;
 10003  		fn = 0;
 10004  		prop = "";
 10005  		/* */ if (v.typ.Kind() === 20) { $s = 1; continue; }
 10006  		/* */ $s = 2; continue;
 10007  		/* if (v.typ.Kind() === 20) { */ case 1:
 10008  			tt = (v.typ.kindType);
 10009  			if (i < 0 || i >= tt.methods.$length) {
 10010  				$panic(new $String("reflect: internal error: invalid method index"));
 10011  			}
 10012  			m = (x = tt.methods, ((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i]));
 10013  			if (!$clone(tt.rtype.nameOff(m.name), name).isExported()) {
 10014  				$panic(new $String("reflect: " + op + " of unexported method"));
 10015  			}
 10016  			t = tt.rtype.typeOff(m.typ);
 10017  			prop = $clone(tt.rtype.nameOff(m.name), name).name();
 10018  			$s = 3; continue;
 10019  		/* } else { */ case 2:
 10020  			_r = v.typ.exportedMethods(); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 10021  			ms = _r;
 10022  			if (((i >>> 0)) >= ((ms.$length >>> 0))) {
 10023  				$panic(new $String("reflect: internal error: invalid method index"));
 10024  			}
 10025  			m$1 = $clone(((i < 0 || i >= ms.$length) ? ($throwRuntimeError("index out of range"), undefined) : ms.$array[ms.$offset + i]), method);
 10026  			if (!$clone(v.typ.nameOff(m$1.name), name).isExported()) {
 10027  				$panic(new $String("reflect: " + op + " of unexported method"));
 10028  			}
 10029  			t = v.typ.typeOff(m$1.mtyp);
 10030  			prop = $internalize($methodSet(jsType(v.typ))[i].prop, $String);
 10031  		/* } */ case 3:
 10032  		rcvr = $clone(v, Value).object();
 10033  		if (isWrapped(v.typ)) {
 10034  			rcvr = new (jsType(v.typ))(rcvr);
 10035  		}
 10036  		fn = (rcvr[$externalize(prop, $String)]);
 10037  		$s = -1; return [_$38, t, fn];
 10038  		/* */ } return; } if ($f === undefined) { $f = { $blk: methodReceiver }; } $f._$38 = _$38; $f._r = _r; $f.fn = fn; $f.i = i; $f.m = m; $f.m$1 = m$1; $f.ms = ms; $f.op = op; $f.prop = prop; $f.rcvr = rcvr; $f.t = t; $f.tt = tt; $f.v = v; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
 10039  	};
 10040  	valueInterface = function(v, safe) {
 10041  		var _r, safe, v, $s, $r;
 10042  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; safe = $f.safe; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 10043  		if (v.flag === 0) {
 10044  			$panic(new ValueError.ptr("reflect.Value.Interface", 0));
 10045  		}
 10046  		if (safe && !((((v.flag & 96) >>> 0) === 0))) {
 10047  			$panic(new $String("reflect.Value.Interface: cannot return value obtained from unexported field or method"));
 10048  		}
 10049  		/* */ if (!((((v.flag & 512) >>> 0) === 0))) { $s = 1; continue; }
 10050  		/* */ $s = 2; continue;
 10051  		/* if (!((((v.flag & 512) >>> 0) === 0))) { */ case 1:
 10052  			_r = makeMethodValue("Interface", $clone(v, Value)); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 10053  			v = _r;
 10054  		/* } */ case 2:
 10055  		if (isWrapped(v.typ)) {
 10056  			$s = -1; return ((new (jsType(v.typ))($clone(v, Value).object())));
 10057  		}
 10058  		$s = -1; return (($clone(v, Value).object()));
 10059  		/* */ } return; } if ($f === undefined) { $f = { $blk: valueInterface }; } $f._r = _r; $f.safe = safe; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
 10060  	};
 10061  	ifaceE2I = function(t, src, dst) {
 10062  		var dst, src, t;
 10063  		dst.$set(src);
 10064  	};
 10065  	methodName = function() {
 10066  		return "?FIXME?";
 10067  	};
 10068  	makeMethodValue = function(op, v) {
 10069  		var _r, _r$1, _r$2, _tuple, fn, fv, op, rcvr, v, $s, $r;
 10070  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _tuple = $f._tuple; fn = $f.fn; fv = $f.fv; op = $f.op; rcvr = $f.rcvr; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 10071  		fn = [fn];
 10072  		rcvr = [rcvr];
 10073  		if (((v.flag & 512) >>> 0) === 0) {
 10074  			$panic(new $String("reflect: internal error: invalid use of makePartialFunc"));
 10075  		}
 10076  		_r = methodReceiver(op, $clone(v, Value), ((v.flag >> 0)) >> 10 >> 0); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 10077  		_tuple = _r;
 10078  		fn[0] = _tuple[2];
 10079  		rcvr[0] = $clone(v, Value).object();
 10080  		if (isWrapped(v.typ)) {
 10081  			rcvr[0] = new (jsType(v.typ))(rcvr[0]);
 10082  		}
 10083  		fv = js.MakeFunc((function(fn, rcvr) { return function(this$1, arguments$1) {
 10084  			var arguments$1, this$1;
 10085  			return new $jsObjectPtr(fn[0].apply(rcvr[0], $externalize(arguments$1, sliceType$8)));
 10086  		}; })(fn, rcvr));
 10087  		_r$1 = $clone(v, Value).Type(); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 10088  		_r$2 = _r$1.common(); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 10089  		$s = -1; return new Value.ptr(_r$2, (fv), (new flag(v.flag).ro() | 19) >>> 0);
 10090  		/* */ } return; } if ($f === undefined) { $f = { $blk: makeMethodValue }; } $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._tuple = _tuple; $f.fn = fn; $f.fv = fv; $f.op = op; $f.rcvr = rcvr; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
 10091  	};
 10092  	rtype.ptr.prototype.pointers = function() {
 10093  		var _1, t;
 10094  		t = this;
 10095  		_1 = t.Kind();
 10096  		if ((_1 === (22)) || (_1 === (21)) || (_1 === (18)) || (_1 === (19)) || (_1 === (25)) || (_1 === (17))) {
 10097  			return true;
 10098  		} else {
 10099  			return false;
 10100  		}
 10101  	};
 10102  	rtype.prototype.pointers = function() { return this.$val.pointers(); };
 10103  	rtype.ptr.prototype.Comparable = function() {
 10104  		var _1, _r, _r$1, i, t, $s, $r;
 10105  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _r = $f._r; _r$1 = $f._r$1; i = $f.i; t = $f.t; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 10106  		t = this;
 10107  			_1 = t.Kind();
 10108  			/* */ if ((_1 === (19)) || (_1 === (23)) || (_1 === (21))) { $s = 2; continue; }
 10109  			/* */ if (_1 === (17)) { $s = 3; continue; }
 10110  			/* */ if (_1 === (25)) { $s = 4; continue; }
 10111  			/* */ $s = 5; continue;
 10112  			/* if ((_1 === (19)) || (_1 === (23)) || (_1 === (21))) { */ case 2:
 10113  				$s = -1; return false;
 10114  			/* } else if (_1 === (17)) { */ case 3:
 10115  				_r = t.Elem().Comparable(); /* */ $s = 6; case 6: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 10116  				$s = -1; return _r;
 10117  			/* } else if (_1 === (25)) { */ case 4:
 10118  				i = 0;
 10119  				/* while (true) { */ case 7:
 10120  					/* if (!(i < t.NumField())) { break; } */ if(!(i < t.NumField())) { $s = 8; continue; }
 10121  					_r$1 = t.Field(i).Type.Comparable(); /* */ $s = 11; case 11: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 10122  					/* */ if (!_r$1) { $s = 9; continue; }
 10123  					/* */ $s = 10; continue;
 10124  					/* if (!_r$1) { */ case 9:
 10125  						$s = -1; return false;
 10126  					/* } */ case 10:
 10127  					i = i + (1) >> 0;
 10128  				/* } */ $s = 7; continue; case 8:
 10129  			/* } */ case 5:
 10130  		case 1:
 10131  		$s = -1; return true;
 10132  		/* */ } return; } if ($f === undefined) { $f = { $blk: rtype.ptr.prototype.Comparable }; } $f._1 = _1; $f._r = _r; $f._r$1 = _r$1; $f.i = i; $f.t = t; $f.$s = $s; $f.$r = $r; return $f;
 10133  	};
 10134  	rtype.prototype.Comparable = function() { return this.$val.Comparable(); };
 10135  	rtype.ptr.prototype.Method = function(i) {
 10136  		var _i, _i$1, _r, _r$1, _ref, _ref$1, arg, fl, fn, ft, i, in$1, m, methods, mt, mtyp, out, p, pname, prop, ret, t, tt, $s, $r;
 10137  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _i = $f._i; _i$1 = $f._i$1; _r = $f._r; _r$1 = $f._r$1; _ref = $f._ref; _ref$1 = $f._ref$1; arg = $f.arg; fl = $f.fl; fn = $f.fn; ft = $f.ft; i = $f.i; in$1 = $f.in$1; m = $f.m; methods = $f.methods; mt = $f.mt; mtyp = $f.mtyp; out = $f.out; p = $f.p; pname = $f.pname; prop = $f.prop; ret = $f.ret; t = $f.t; tt = $f.tt; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 10138  		prop = [prop];
 10139  		m = new Method.ptr("", "", $ifaceNil, new Value.ptr(ptrType$1.nil, 0, 0), 0);
 10140  		t = this;
 10141  		if (t.Kind() === 20) {
 10142  			tt = (t.kindType);
 10143  			Method.copy(m, tt.Method(i));
 10144  			$s = -1; return m;
 10145  		}
 10146  		_r = t.exportedMethods(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 10147  		methods = _r;
 10148  		if (i < 0 || i >= methods.$length) {
 10149  			$panic(new $String("reflect: Method index out of range"));
 10150  		}
 10151  		p = $clone(((i < 0 || i >= methods.$length) ? ($throwRuntimeError("index out of range"), undefined) : methods.$array[methods.$offset + i]), method);
 10152  		pname = $clone(t.nameOff(p.name), name);
 10153  		m.Name = $clone(pname, name).name();
 10154  		fl = 19;
 10155  		mtyp = t.typeOff(p.mtyp);
 10156  		ft = (mtyp.kindType);
 10157  		in$1 = $makeSlice(sliceType$10, 0, (1 + ft.in$().$length >> 0));
 10158  		in$1 = $append(in$1, t);
 10159  		_ref = ft.in$();
 10160  		_i = 0;
 10161  		while (true) {
 10162  			if (!(_i < _ref.$length)) { break; }
 10163  			arg = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
 10164  			in$1 = $append(in$1, arg);
 10165  			_i++;
 10166  		}
 10167  		out = $makeSlice(sliceType$10, 0, ft.out().$length);
 10168  		_ref$1 = ft.out();
 10169  		_i$1 = 0;
 10170  		while (true) {
 10171  			if (!(_i$1 < _ref$1.$length)) { break; }
 10172  			ret = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]);
 10173  			out = $append(out, ret);
 10174  			_i$1++;
 10175  		}
 10176  		_r$1 = FuncOf(in$1, out, ft.rtype.IsVariadic()); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 10177  		mt = _r$1;
 10178  		m.Type = mt;
 10179  		prop[0] = $internalize($methodSet(t.jsType)[i].prop, $String);
 10180  		fn = js.MakeFunc((function(prop) { return function(this$1, arguments$1) {
 10181  			var arguments$1, rcvr, this$1;
 10182  			rcvr = (0 >= arguments$1.$length ? ($throwRuntimeError("index out of range"), undefined) : arguments$1.$array[arguments$1.$offset + 0]);
 10183  			return new $jsObjectPtr(rcvr[$externalize(prop[0], $String)].apply(rcvr, $externalize($subslice(arguments$1, 1), sliceType$8)));
 10184  		}; })(prop));
 10185  		m.Func = new Value.ptr($assertType(mt, ptrType$1), (fn), fl);
 10186  		m.Index = i;
 10187  		Method.copy(m, m);
 10188  		$s = -1; return m;
 10189  		/* */ } return; } if ($f === undefined) { $f = { $blk: rtype.ptr.prototype.Method }; } $f._i = _i; $f._i$1 = _i$1; $f._r = _r; $f._r$1 = _r$1; $f._ref = _ref; $f._ref$1 = _ref$1; $f.arg = arg; $f.fl = fl; $f.fn = fn; $f.ft = ft; $f.i = i; $f.in$1 = in$1; $f.m = m; $f.methods = methods; $f.mt = mt; $f.mtyp = mtyp; $f.out = out; $f.p = p; $f.pname = pname; $f.prop = prop; $f.ret = ret; $f.t = t; $f.tt = tt; $f.$s = $s; $f.$r = $r; return $f;
 10190  	};
 10191  	rtype.prototype.Method = function(i) { return this.$val.Method(i); };
 10192  	Value.ptr.prototype.object = function() {
 10193  		var _1, newVal, v, val;
 10194  		v = this;
 10195  		if ((v.typ.Kind() === 17) || (v.typ.Kind() === 25)) {
 10196  			return v.ptr;
 10197  		}
 10198  		if (!((((v.flag & 128) >>> 0) === 0))) {
 10199  			val = v.ptr.$get();
 10200  			if (!(val === $ifaceNil) && !(val.constructor === jsType(v.typ))) {
 10201  				switch (0) { default:
 10202  					_1 = v.typ.Kind();
 10203  					if ((_1 === (11)) || (_1 === (6))) {
 10204  						val = new (jsType(v.typ))(val.$high, val.$low);
 10205  					} else if ((_1 === (15)) || (_1 === (16))) {
 10206  						val = new (jsType(v.typ))(val.$real, val.$imag);
 10207  					} else if (_1 === (23)) {
 10208  						if (val === val.constructor.nil) {
 10209  							val = jsType(v.typ).nil;
 10210  							break;
 10211  						}
 10212  						newVal = new (jsType(v.typ))(val.$array);
 10213  						newVal.$offset = val.$offset;
 10214  						newVal.$length = val.$length;
 10215  						newVal.$capacity = val.$capacity;
 10216  						val = newVal;
 10217  					}
 10218  				}
 10219  			}
 10220  			return val;
 10221  		}
 10222  		return v.ptr;
 10223  	};
 10224  	Value.prototype.object = function() { return this.$val.object(); };
 10225  	Value.ptr.prototype.assignTo = function(context, dst, target) {
 10226  		var _r, _r$1, _r$2, _r$3, context, dst, fl, target, v, x, $s, $r;
 10227  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; context = $f.context; dst = $f.dst; fl = $f.fl; target = $f.target; v = $f.v; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 10228  		v = this;
 10229  		/* */ if (!((((v.flag & 512) >>> 0) === 0))) { $s = 1; continue; }
 10230  		/* */ $s = 2; continue;
 10231  		/* if (!((((v.flag & 512) >>> 0) === 0))) { */ case 1:
 10232  			_r = makeMethodValue(context, $clone(v, Value)); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 10233  			v = _r;
 10234  		/* } */ case 2:
 10235  			_r$1 = directlyAssignable(dst, v.typ); /* */ $s = 8; case 8: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 10236  			/* */ if (_r$1) { $s = 5; continue; }
 10237  			/* */ if (implements$1(dst, v.typ)) { $s = 6; continue; }
 10238  			/* */ $s = 7; continue;
 10239  			/* if (_r$1) { */ case 5:
 10240  				fl = (((v.flag & 384) >>> 0) | new flag(v.flag).ro()) >>> 0;
 10241  				fl = (fl | (((dst.Kind() >>> 0)))) >>> 0;
 10242  				$s = -1; return new Value.ptr(dst, v.ptr, fl);
 10243  			/* } else if (implements$1(dst, v.typ)) { */ case 6:
 10244  				if (target === 0) {
 10245  					target = unsafe_New(dst);
 10246  				}
 10247  				_r$2 = valueInterface($clone(v, Value), false); /* */ $s = 9; case 9: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 10248  				x = _r$2;
 10249  				_r$3 = dst.NumMethod(); /* */ $s = 13; case 13: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 10250  				/* */ if (_r$3 === 0) { $s = 10; continue; }
 10251  				/* */ $s = 11; continue;
 10252  				/* if (_r$3 === 0) { */ case 10:
 10253  					(target).$set(x);
 10254  					$s = 12; continue;
 10255  				/* } else { */ case 11:
 10256  					ifaceE2I(dst, x, target);
 10257  				/* } */ case 12:
 10258  				$s = -1; return new Value.ptr(dst, target, 148);
 10259  			/* } */ case 7:
 10260  		case 4:
 10261  		$panic(new $String(context + ": value of type " + v.typ.String() + " is not assignable to type " + dst.String()));
 10262  		$s = -1; return new Value.ptr(ptrType$1.nil, 0, 0);
 10263  		/* */ } return; } if ($f === undefined) { $f = { $blk: Value.ptr.prototype.assignTo }; } $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f.context = context; $f.dst = dst; $f.fl = fl; $f.target = target; $f.v = v; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
 10264  	};
 10265  	Value.prototype.assignTo = function(context, dst, target) { return this.$val.assignTo(context, dst, target); };
 10266  	Value.ptr.prototype.call = function(op, in$1) {
 10267  		var _1, _arg, _arg$1, _arg$2, _arg$3, _i, _i$1, _i$2, _r, _r$1, _r$10, _r$11, _r$12, _r$13, _r$14, _r$15, _r$16, _r$17, _r$18, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, _ref$1, _ref$2, _tmp, _tmp$1, _tuple, arg, argsArray, elem, fn, i, i$1, i$2, i$3, in$1, isSlice, m, n, nin, nout, op, origIn, rcvr, results, ret, slice, t, targ, v, x, x$1, x$2, xt, xt$1, $s, $r;
 10268  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _arg = $f._arg; _arg$1 = $f._arg$1; _arg$2 = $f._arg$2; _arg$3 = $f._arg$3; _i = $f._i; _i$1 = $f._i$1; _i$2 = $f._i$2; _r = $f._r; _r$1 = $f._r$1; _r$10 = $f._r$10; _r$11 = $f._r$11; _r$12 = $f._r$12; _r$13 = $f._r$13; _r$14 = $f._r$14; _r$15 = $f._r$15; _r$16 = $f._r$16; _r$17 = $f._r$17; _r$18 = $f._r$18; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _r$8 = $f._r$8; _r$9 = $f._r$9; _ref = $f._ref; _ref$1 = $f._ref$1; _ref$2 = $f._ref$2; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tuple = $f._tuple; arg = $f.arg; argsArray = $f.argsArray; elem = $f.elem; fn = $f.fn; i = $f.i; i$1 = $f.i$1; i$2 = $f.i$2; i$3 = $f.i$3; in$1 = $f.in$1; isSlice = $f.isSlice; m = $f.m; n = $f.n; nin = $f.nin; nout = $f.nout; op = $f.op; origIn = $f.origIn; rcvr = $f.rcvr; results = $f.results; ret = $f.ret; slice = $f.slice; t = $f.t; targ = $f.targ; v = $f.v; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; xt = $f.xt; xt$1 = $f.xt$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 10269  		v = this;
 10270  		t = ptrType$1.nil;
 10271  		fn = 0;
 10272  		rcvr = null;
 10273  		/* */ if (!((((v.flag & 512) >>> 0) === 0))) { $s = 1; continue; }
 10274  		/* */ $s = 2; continue;
 10275  		/* if (!((((v.flag & 512) >>> 0) === 0))) { */ case 1:
 10276  			_r = methodReceiver(op, $clone(v, Value), ((v.flag >> 0)) >> 10 >> 0); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 10277  			_tuple = _r;
 10278  			t = _tuple[1];
 10279  			fn = _tuple[2];
 10280  			rcvr = $clone(v, Value).object();
 10281  			if (isWrapped(v.typ)) {
 10282  				rcvr = new (jsType(v.typ))(rcvr);
 10283  			}
 10284  			$s = 3; continue;
 10285  		/* } else { */ case 2:
 10286  			t = v.typ;
 10287  			fn = ($clone(v, Value).object());
 10288  			rcvr = undefined;
 10289  		/* } */ case 3:
 10290  		if (fn === 0) {
 10291  			$panic(new $String("reflect.Value.Call: call of nil function"));
 10292  		}
 10293  		isSlice = op === "CallSlice";
 10294  		n = t.NumIn();
 10295  		if (isSlice) {
 10296  			if (!t.IsVariadic()) {
 10297  				$panic(new $String("reflect: CallSlice of non-variadic function"));
 10298  			}
 10299  			if (in$1.$length < n) {
 10300  				$panic(new $String("reflect: CallSlice with too few input arguments"));
 10301  			}
 10302  			if (in$1.$length > n) {
 10303  				$panic(new $String("reflect: CallSlice with too many input arguments"));
 10304  			}
 10305  		} else {
 10306  			if (t.IsVariadic()) {
 10307  				n = n - (1) >> 0;
 10308  			}
 10309  			if (in$1.$length < n) {
 10310  				$panic(new $String("reflect: Call with too few input arguments"));
 10311  			}
 10312  			if (!t.IsVariadic() && in$1.$length > n) {
 10313  				$panic(new $String("reflect: Call with too many input arguments"));
 10314  			}
 10315  		}
 10316  		_ref = in$1;
 10317  		_i = 0;
 10318  		while (true) {
 10319  			if (!(_i < _ref.$length)) { break; }
 10320  			x = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
 10321  			if ($clone(x, Value).Kind() === 0) {
 10322  				$panic(new $String("reflect: " + op + " using zero Value argument"));
 10323  			}
 10324  			_i++;
 10325  		}
 10326  		i = 0;
 10327  		/* while (true) { */ case 5:
 10328  			/* if (!(i < n)) { break; } */ if(!(i < n)) { $s = 6; continue; }
 10329  			_r$1 = $clone(((i < 0 || i >= in$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : in$1.$array[in$1.$offset + i]), Value).Type(); /* */ $s = 7; case 7: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 10330  			_tmp = _r$1;
 10331  			_tmp$1 = t.In(i);
 10332  			xt = _tmp;
 10333  			targ = _tmp$1;
 10334  			_r$2 = xt.AssignableTo(targ); /* */ $s = 10; case 10: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 10335  			/* */ if (!_r$2) { $s = 8; continue; }
 10336  			/* */ $s = 9; continue;
 10337  			/* if (!_r$2) { */ case 8:
 10338  				_r$3 = xt.String(); /* */ $s = 11; case 11: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 10339  				_r$4 = targ.String(); /* */ $s = 12; case 12: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 10340  				$panic(new $String("reflect: " + op + " using " + _r$3 + " as type " + _r$4));
 10341  			/* } */ case 9:
 10342  			i = i + (1) >> 0;
 10343  		/* } */ $s = 5; continue; case 6:
 10344  		/* */ if (!isSlice && t.IsVariadic()) { $s = 13; continue; }
 10345  		/* */ $s = 14; continue;
 10346  		/* if (!isSlice && t.IsVariadic()) { */ case 13:
 10347  			m = in$1.$length - n >> 0;
 10348  			_r$5 = MakeSlice(t.In(n), m, m); /* */ $s = 15; case 15: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
 10349  			slice = _r$5;
 10350  			_r$6 = t.In(n).Elem(); /* */ $s = 16; case 16: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
 10351  			elem = _r$6;
 10352  			i$1 = 0;
 10353  			/* while (true) { */ case 17:
 10354  				/* if (!(i$1 < m)) { break; } */ if(!(i$1 < m)) { $s = 18; continue; }
 10355  				x$2 = (x$1 = n + i$1 >> 0, ((x$1 < 0 || x$1 >= in$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : in$1.$array[in$1.$offset + x$1]));
 10356  				_r$7 = $clone(x$2, Value).Type(); /* */ $s = 19; case 19: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
 10357  				xt$1 = _r$7;
 10358  				_r$8 = xt$1.AssignableTo(elem); /* */ $s = 22; case 22: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
 10359  				/* */ if (!_r$8) { $s = 20; continue; }
 10360  				/* */ $s = 21; continue;
 10361  				/* if (!_r$8) { */ case 20:
 10362  					_r$9 = xt$1.String(); /* */ $s = 23; case 23: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 10363  					_r$10 = elem.String(); /* */ $s = 24; case 24: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
 10364  					$panic(new $String("reflect: cannot use " + _r$9 + " as type " + _r$10 + " in " + op));
 10365  				/* } */ case 21:
 10366  				_r$11 = $clone(slice, Value).Index(i$1); /* */ $s = 25; case 25: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; }
 10367  				$r = $clone(_r$11, Value).Set($clone(x$2, Value)); /* */ $s = 26; case 26: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 10368  				i$1 = i$1 + (1) >> 0;
 10369  			/* } */ $s = 17; continue; case 18:
 10370  			origIn = in$1;
 10371  			in$1 = $makeSlice(sliceType$9, (n + 1 >> 0));
 10372  			$copySlice($subslice(in$1, 0, n), origIn);
 10373  			((n < 0 || n >= in$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : in$1.$array[in$1.$offset + n] = slice);
 10374  		/* } */ case 14:
 10375  		nin = in$1.$length;
 10376  		if (!((nin === t.NumIn()))) {
 10377  			$panic(new $String("reflect.Value.Call: wrong argument count"));
 10378  		}
 10379  		nout = t.NumOut();
 10380  		argsArray = new ($global.Array)(t.NumIn());
 10381  		_ref$1 = in$1;
 10382  		_i$1 = 0;
 10383  		/* while (true) { */ case 27:
 10384  			/* if (!(_i$1 < _ref$1.$length)) { break; } */ if(!(_i$1 < _ref$1.$length)) { $s = 28; continue; }
 10385  			i$2 = _i$1;
 10386  			arg = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]);
 10387  			_arg = t.In(i$2);
 10388  			_r$12 = t.In(i$2).common(); /* */ $s = 29; case 29: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; }
 10389  			_arg$1 = _r$12;
 10390  			_arg$2 = 0;
 10391  			_r$13 = $clone(arg, Value).assignTo("reflect.Value.Call", _arg$1, _arg$2); /* */ $s = 30; case 30: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; }
 10392  			_r$14 = $clone(_r$13, Value).object(); /* */ $s = 31; case 31: if($c) { $c = false; _r$14 = _r$14.$blk(); } if (_r$14 && _r$14.$blk !== undefined) { break s; }
 10393  			_arg$3 = _r$14;
 10394  			_r$15 = unwrapJsObject(_arg, _arg$3); /* */ $s = 32; case 32: if($c) { $c = false; _r$15 = _r$15.$blk(); } if (_r$15 && _r$15.$blk !== undefined) { break s; }
 10395  			argsArray[i$2] = _r$15;
 10396  			_i$1++;
 10397  		/* } */ $s = 27; continue; case 28:
 10398  		_r$16 = callHelper(new sliceType$3([new $jsObjectPtr(fn), new $jsObjectPtr(rcvr), new $jsObjectPtr(argsArray)])); /* */ $s = 33; case 33: if($c) { $c = false; _r$16 = _r$16.$blk(); } if (_r$16 && _r$16.$blk !== undefined) { break s; }
 10399  		results = _r$16;
 10400  			_1 = nout;
 10401  			/* */ if (_1 === (0)) { $s = 35; continue; }
 10402  			/* */ if (_1 === (1)) { $s = 36; continue; }
 10403  			/* */ $s = 37; continue;
 10404  			/* if (_1 === (0)) { */ case 35:
 10405  				$s = -1; return sliceType$9.nil;
 10406  			/* } else if (_1 === (1)) { */ case 36:
 10407  				_r$17 = makeValue(t.Out(0), wrapJsObject(t.Out(0), results), 0); /* */ $s = 39; case 39: if($c) { $c = false; _r$17 = _r$17.$blk(); } if (_r$17 && _r$17.$blk !== undefined) { break s; }
 10408  				$s = -1; return new sliceType$9([$clone(_r$17, Value)]);
 10409  			/* } else { */ case 37:
 10410  				ret = $makeSlice(sliceType$9, nout);
 10411  				_ref$2 = ret;
 10412  				_i$2 = 0;
 10413  				/* while (true) { */ case 40:
 10414  					/* if (!(_i$2 < _ref$2.$length)) { break; } */ if(!(_i$2 < _ref$2.$length)) { $s = 41; continue; }
 10415  					i$3 = _i$2;
 10416  					_r$18 = makeValue(t.Out(i$3), wrapJsObject(t.Out(i$3), results[i$3]), 0); /* */ $s = 42; case 42: if($c) { $c = false; _r$18 = _r$18.$blk(); } if (_r$18 && _r$18.$blk !== undefined) { break s; }
 10417  					((i$3 < 0 || i$3 >= ret.$length) ? ($throwRuntimeError("index out of range"), undefined) : ret.$array[ret.$offset + i$3] = _r$18);
 10418  					_i$2++;
 10419  				/* } */ $s = 40; continue; case 41:
 10420  				$s = -1; return ret;
 10421  			/* } */ case 38:
 10422  		case 34:
 10423  		$s = -1; return sliceType$9.nil;
 10424  		/* */ } return; } if ($f === undefined) { $f = { $blk: Value.ptr.prototype.call }; } $f._1 = _1; $f._arg = _arg; $f._arg$1 = _arg$1; $f._arg$2 = _arg$2; $f._arg$3 = _arg$3; $f._i = _i; $f._i$1 = _i$1; $f._i$2 = _i$2; $f._r = _r; $f._r$1 = _r$1; $f._r$10 = _r$10; $f._r$11 = _r$11; $f._r$12 = _r$12; $f._r$13 = _r$13; $f._r$14 = _r$14; $f._r$15 = _r$15; $f._r$16 = _r$16; $f._r$17 = _r$17; $f._r$18 = _r$18; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._r$8 = _r$8; $f._r$9 = _r$9; $f._ref = _ref; $f._ref$1 = _ref$1; $f._ref$2 = _ref$2; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tuple = _tuple; $f.arg = arg; $f.argsArray = argsArray; $f.elem = elem; $f.fn = fn; $f.i = i; $f.i$1 = i$1; $f.i$2 = i$2; $f.i$3 = i$3; $f.in$1 = in$1; $f.isSlice = isSlice; $f.m = m; $f.n = n; $f.nin = nin; $f.nout = nout; $f.op = op; $f.origIn = origIn; $f.rcvr = rcvr; $f.results = results; $f.ret = ret; $f.slice = slice; $f.t = t; $f.targ = targ; $f.v = v; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.xt = xt; $f.xt$1 = xt$1; $f.$s = $s; $f.$r = $r; return $f;
 10425  	};
 10426  	Value.prototype.call = function(op, in$1) { return this.$val.call(op, in$1); };
 10427  	Value.ptr.prototype.Cap = function() {
 10428  		var _1, k, v;
 10429  		v = this;
 10430  		k = new flag(v.flag).kind();
 10431  		_1 = k;
 10432  		if (_1 === (17)) {
 10433  			return v.typ.Len();
 10434  		} else if ((_1 === (18)) || (_1 === (23))) {
 10435  			return $parseInt($clone(v, Value).object().$capacity) >> 0;
 10436  		}
 10437  		$panic(new ValueError.ptr("reflect.Value.Cap", k));
 10438  	};
 10439  	Value.prototype.Cap = function() { return this.$val.Cap(); };
 10440  	wrapJsObject = function(typ, val) {
 10441  		var typ, val;
 10442  		if ($interfaceIsEqual(typ, jsObjectPtr)) {
 10443  			return new (jsType(jsObjectPtr))(val);
 10444  		}
 10445  		return val;
 10446  	};
 10447  	unwrapJsObject = function(typ, val) {
 10448  		var typ, val;
 10449  		if ($interfaceIsEqual(typ, jsObjectPtr)) {
 10450  			return val.object;
 10451  		}
 10452  		return val;
 10453  	};
 10454  	Value.ptr.prototype.Elem = function() {
 10455  		var _1, _r, fl, k, tt, typ, v, val, val$1, $s, $r;
 10456  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _r = $f._r; fl = $f.fl; k = $f.k; tt = $f.tt; typ = $f.typ; v = $f.v; val = $f.val; val$1 = $f.val$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 10457  		v = this;
 10458  			k = new flag(v.flag).kind();
 10459  			_1 = k;
 10460  			/* */ if (_1 === (20)) { $s = 2; continue; }
 10461  			/* */ if (_1 === (22)) { $s = 3; continue; }
 10462  			/* */ $s = 4; continue;
 10463  			/* if (_1 === (20)) { */ case 2:
 10464  				val = $clone(v, Value).object();
 10465  				if (val === $ifaceNil) {
 10466  					$s = -1; return new Value.ptr(ptrType$1.nil, 0, 0);
 10467  				}
 10468  				typ = reflectType(val.constructor);
 10469  				_r = makeValue(typ, val.$val, new flag(v.flag).ro()); /* */ $s = 6; case 6: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 10470  				$s = -1; return _r;
 10471  			/* } else if (_1 === (22)) { */ case 3:
 10472  				if ($clone(v, Value).IsNil()) {
 10473  					$s = -1; return new Value.ptr(ptrType$1.nil, 0, 0);
 10474  				}
 10475  				val$1 = $clone(v, Value).object();
 10476  				tt = (v.typ.kindType);
 10477  				fl = (((((v.flag & 96) >>> 0) | 128) >>> 0) | 256) >>> 0;
 10478  				fl = (fl | (((tt.elem.Kind() >>> 0)))) >>> 0;
 10479  				$s = -1; return new Value.ptr(tt.elem, (wrapJsObject(tt.elem, val$1)), fl);
 10480  			/* } else { */ case 4:
 10481  				$panic(new ValueError.ptr("reflect.Value.Elem", k));
 10482  			/* } */ case 5:
 10483  		case 1:
 10484  		$s = -1; return new Value.ptr(ptrType$1.nil, 0, 0);
 10485  		/* */ } return; } if ($f === undefined) { $f = { $blk: Value.ptr.prototype.Elem }; } $f._1 = _1; $f._r = _r; $f.fl = fl; $f.k = k; $f.tt = tt; $f.typ = typ; $f.v = v; $f.val = val; $f.val$1 = val$1; $f.$s = $s; $f.$r = $r; return $f;
 10486  	};
 10487  	Value.prototype.Elem = function() { return this.$val.Elem(); };
 10488  	Value.ptr.prototype.Field = function(i) {
 10489  		var _r, _r$1, _r$2, field, fl, i, jsTag, o, prop, s, tag, tt, typ, v, x, x$1, $s, $r;
 10490  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; field = $f.field; fl = $f.fl; i = $f.i; jsTag = $f.jsTag; o = $f.o; prop = $f.prop; s = $f.s; tag = $f.tag; tt = $f.tt; typ = $f.typ; v = $f.v; x = $f.x; x$1 = $f.x$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 10491  		jsTag = [jsTag];
 10492  		prop = [prop];
 10493  		s = [s];
 10494  		typ = [typ];
 10495  		v = this;
 10496  		if (!((new flag(v.flag).kind() === 25))) {
 10497  			$panic(new ValueError.ptr("reflect.Value.Field", new flag(v.flag).kind()));
 10498  		}
 10499  		tt = (v.typ.kindType);
 10500  		if (((i >>> 0)) >= ((tt.fields.$length >>> 0))) {
 10501  			$panic(new $String("reflect: Field index out of range"));
 10502  		}
 10503  		prop[0] = $internalize(jsType(v.typ).fields[i].prop, $String);
 10504  		field = (x = tt.fields, ((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i]));
 10505  		typ[0] = field.typ;
 10506  		fl = (((v.flag & 416) >>> 0) | ((typ[0].Kind() >>> 0))) >>> 0;
 10507  		if (!$clone(field.name, name).isExported()) {
 10508  			if (field.anon()) {
 10509  				fl = (fl | (64)) >>> 0;
 10510  			} else {
 10511  				fl = (fl | (32)) >>> 0;
 10512  			}
 10513  		}
 10514  		tag = $clone((x$1 = tt.fields, ((i < 0 || i >= x$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + i])).name, name).tag();
 10515  		/* */ if (!(tag === "") && !((i === 0))) { $s = 1; continue; }
 10516  		/* */ $s = 2; continue;
 10517  		/* if (!(tag === "") && !((i === 0))) { */ case 1:
 10518  			jsTag[0] = getJsTag(tag);
 10519  			/* */ if (!(jsTag[0] === "")) { $s = 3; continue; }
 10520  			/* */ $s = 4; continue;
 10521  			/* if (!(jsTag[0] === "")) { */ case 3:
 10522  				/* while (true) { */ case 5:
 10523  					o = [o];
 10524  					_r = $clone(v, Value).Field(0); /* */ $s = 7; case 7: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 10525  					v = _r;
 10526  					/* */ if (v.typ === jsObjectPtr) { $s = 8; continue; }
 10527  					/* */ $s = 9; continue;
 10528  					/* if (v.typ === jsObjectPtr) { */ case 8:
 10529  						o[0] = $clone(v, Value).object().object;
 10530  						$s = -1; return new Value.ptr(typ[0], (new (jsType(PtrTo(typ[0])))((function(jsTag, o, prop, s, typ) { return function() {
 10531  							return $internalize(o[0][$externalize(jsTag[0], $String)], jsType(typ[0]));
 10532  						}; })(jsTag, o, prop, s, typ), (function(jsTag, o, prop, s, typ) { return function(x$2) {
 10533  							var x$2;
 10534  							o[0][$externalize(jsTag[0], $String)] = $externalize(x$2, jsType(typ[0]));
 10535  						}; })(jsTag, o, prop, s, typ))), fl);
 10536  					/* } */ case 9:
 10537  					/* */ if (v.typ.Kind() === 22) { $s = 10; continue; }
 10538  					/* */ $s = 11; continue;
 10539  					/* if (v.typ.Kind() === 22) { */ case 10:
 10540  						_r$1 = $clone(v, Value).Elem(); /* */ $s = 12; case 12: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 10541  						v = _r$1;
 10542  					/* } */ case 11:
 10543  				/* } */ $s = 5; continue; case 6:
 10544  			/* } */ case 4:
 10545  		/* } */ case 2:
 10546  		s[0] = v.ptr;
 10547  		/* */ if (!((((fl & 128) >>> 0) === 0)) && !((typ[0].Kind() === 17)) && !((typ[0].Kind() === 25))) { $s = 13; continue; }
 10548  		/* */ $s = 14; continue;
 10549  		/* if (!((((fl & 128) >>> 0) === 0)) && !((typ[0].Kind() === 17)) && !((typ[0].Kind() === 25))) { */ case 13:
 10550  			$s = -1; return new Value.ptr(typ[0], (new (jsType(PtrTo(typ[0])))((function(jsTag, prop, s, typ) { return function() {
 10551  				return wrapJsObject(typ[0], s[0][$externalize(prop[0], $String)]);
 10552  			}; })(jsTag, prop, s, typ), (function(jsTag, prop, s, typ) { return function(x$2) {
 10553  				var x$2;
 10554  				s[0][$externalize(prop[0], $String)] = unwrapJsObject(typ[0], x$2);
 10555  			}; })(jsTag, prop, s, typ))), fl);
 10556  		/* } */ case 14:
 10557  		_r$2 = makeValue(typ[0], wrapJsObject(typ[0], s[0][$externalize(prop[0], $String)]), fl); /* */ $s = 15; case 15: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 10558  		$s = -1; return _r$2;
 10559  		/* */ } return; } if ($f === undefined) { $f = { $blk: Value.ptr.prototype.Field }; } $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f.field = field; $f.fl = fl; $f.i = i; $f.jsTag = jsTag; $f.o = o; $f.prop = prop; $f.s = s; $f.tag = tag; $f.tt = tt; $f.typ = typ; $f.v = v; $f.x = x; $f.x$1 = x$1; $f.$s = $s; $f.$r = $r; return $f;
 10560  	};
 10561  	Value.prototype.Field = function(i) { return this.$val.Field(i); };
 10562  	getJsTag = function(tag) {
 10563  		var _tuple, i, name$1, qvalue, tag, value;
 10564  		while (true) {
 10565  			if (!(!(tag === ""))) { break; }
 10566  			i = 0;
 10567  			while (true) {
 10568  				if (!(i < tag.length && (tag.charCodeAt(i) === 32))) { break; }
 10569  				i = i + (1) >> 0;
 10570  			}
 10571  			tag = $substring(tag, i);
 10572  			if (tag === "") {
 10573  				break;
 10574  			}
 10575  			i = 0;
 10576  			while (true) {
 10577  				if (!(i < tag.length && !((tag.charCodeAt(i) === 32)) && !((tag.charCodeAt(i) === 58)) && !((tag.charCodeAt(i) === 34)))) { break; }
 10578  				i = i + (1) >> 0;
 10579  			}
 10580  			if ((i + 1 >> 0) >= tag.length || !((tag.charCodeAt(i) === 58)) || !((tag.charCodeAt((i + 1 >> 0)) === 34))) {
 10581  				break;
 10582  			}
 10583  			name$1 = ($substring(tag, 0, i));
 10584  			tag = $substring(tag, (i + 1 >> 0));
 10585  			i = 1;
 10586  			while (true) {
 10587  				if (!(i < tag.length && !((tag.charCodeAt(i) === 34)))) { break; }
 10588  				if (tag.charCodeAt(i) === 92) {
 10589  					i = i + (1) >> 0;
 10590  				}
 10591  				i = i + (1) >> 0;
 10592  			}
 10593  			if (i >= tag.length) {
 10594  				break;
 10595  			}
 10596  			qvalue = ($substring(tag, 0, (i + 1 >> 0)));
 10597  			tag = $substring(tag, (i + 1 >> 0));
 10598  			if (name$1 === "js") {
 10599  				_tuple = strconv.Unquote(qvalue);
 10600  				value = _tuple[0];
 10601  				return value;
 10602  			}
 10603  		}
 10604  		return "";
 10605  	};
 10606  	Value.ptr.prototype.Index = function(i) {
 10607  		var _1, _r, _r$1, a, a$1, c, fl, fl$1, fl$2, i, k, s, str, tt, tt$1, typ, typ$1, v, $s, $r;
 10608  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _r = $f._r; _r$1 = $f._r$1; a = $f.a; a$1 = $f.a$1; c = $f.c; fl = $f.fl; fl$1 = $f.fl$1; fl$2 = $f.fl$2; i = $f.i; k = $f.k; s = $f.s; str = $f.str; tt = $f.tt; tt$1 = $f.tt$1; typ = $f.typ; typ$1 = $f.typ$1; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 10609  		a = [a];
 10610  		a$1 = [a$1];
 10611  		c = [c];
 10612  		i = [i];
 10613  		typ = [typ];
 10614  		typ$1 = [typ$1];
 10615  		v = this;
 10616  			k = new flag(v.flag).kind();
 10617  			_1 = k;
 10618  			/* */ if (_1 === (17)) { $s = 2; continue; }
 10619  			/* */ if (_1 === (23)) { $s = 3; continue; }
 10620  			/* */ if (_1 === (24)) { $s = 4; continue; }
 10621  			/* */ $s = 5; continue;
 10622  			/* if (_1 === (17)) { */ case 2:
 10623  				tt = (v.typ.kindType);
 10624  				if (i[0] < 0 || i[0] > ((tt.len >> 0))) {
 10625  					$panic(new $String("reflect: array index out of range"));
 10626  				}
 10627  				typ[0] = tt.elem;
 10628  				fl = (((((v.flag & 384) >>> 0) | new flag(v.flag).ro()) >>> 0) | ((typ[0].Kind() >>> 0))) >>> 0;
 10629  				a[0] = v.ptr;
 10630  				/* */ if (!((((fl & 128) >>> 0) === 0)) && !((typ[0].Kind() === 17)) && !((typ[0].Kind() === 25))) { $s = 7; continue; }
 10631  				/* */ $s = 8; continue;
 10632  				/* if (!((((fl & 128) >>> 0) === 0)) && !((typ[0].Kind() === 17)) && !((typ[0].Kind() === 25))) { */ case 7:
 10633  					$s = -1; return new Value.ptr(typ[0], (new (jsType(PtrTo(typ[0])))((function(a, a$1, c, i, typ, typ$1) { return function() {
 10634  						return wrapJsObject(typ[0], a[0][i[0]]);
 10635  					}; })(a, a$1, c, i, typ, typ$1), (function(a, a$1, c, i, typ, typ$1) { return function(x) {
 10636  						var x;
 10637  						a[0][i[0]] = unwrapJsObject(typ[0], x);
 10638  					}; })(a, a$1, c, i, typ, typ$1))), fl);
 10639  				/* } */ case 8:
 10640  				_r = makeValue(typ[0], wrapJsObject(typ[0], a[0][i[0]]), fl); /* */ $s = 9; case 9: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 10641  				$s = -1; return _r;
 10642  			/* } else if (_1 === (23)) { */ case 3:
 10643  				s = $clone(v, Value).object();
 10644  				if (i[0] < 0 || i[0] >= ($parseInt(s.$length) >> 0)) {
 10645  					$panic(new $String("reflect: slice index out of range"));
 10646  				}
 10647  				tt$1 = (v.typ.kindType);
 10648  				typ$1[0] = tt$1.elem;
 10649  				fl$1 = (((384 | new flag(v.flag).ro()) >>> 0) | ((typ$1[0].Kind() >>> 0))) >>> 0;
 10650  				i[0] = i[0] + (($parseInt(s.$offset) >> 0)) >> 0;
 10651  				a$1[0] = s.$array;
 10652  				/* */ if (!((((fl$1 & 128) >>> 0) === 0)) && !((typ$1[0].Kind() === 17)) && !((typ$1[0].Kind() === 25))) { $s = 10; continue; }
 10653  				/* */ $s = 11; continue;
 10654  				/* if (!((((fl$1 & 128) >>> 0) === 0)) && !((typ$1[0].Kind() === 17)) && !((typ$1[0].Kind() === 25))) { */ case 10:
 10655  					$s = -1; return new Value.ptr(typ$1[0], (new (jsType(PtrTo(typ$1[0])))((function(a, a$1, c, i, typ, typ$1) { return function() {
 10656  						return wrapJsObject(typ$1[0], a$1[0][i[0]]);
 10657  					}; })(a, a$1, c, i, typ, typ$1), (function(a, a$1, c, i, typ, typ$1) { return function(x) {
 10658  						var x;
 10659  						a$1[0][i[0]] = unwrapJsObject(typ$1[0], x);
 10660  					}; })(a, a$1, c, i, typ, typ$1))), fl$1);
 10661  				/* } */ case 11:
 10662  				_r$1 = makeValue(typ$1[0], wrapJsObject(typ$1[0], a$1[0][i[0]]), fl$1); /* */ $s = 12; case 12: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 10663  				$s = -1; return _r$1;
 10664  			/* } else if (_1 === (24)) { */ case 4:
 10665  				str = (v.ptr).$get();
 10666  				if (i[0] < 0 || i[0] >= str.length) {
 10667  					$panic(new $String("reflect: string index out of range"));
 10668  				}
 10669  				fl$2 = (((new flag(v.flag).ro() | 8) >>> 0) | 128) >>> 0;
 10670  				c[0] = str.charCodeAt(i[0]);
 10671  				$s = -1; return new Value.ptr(uint8Type, ((c.$ptr || (c.$ptr = new ptrType$4(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, c)))), fl$2);
 10672  			/* } else { */ case 5:
 10673  				$panic(new ValueError.ptr("reflect.Value.Index", k));
 10674  			/* } */ case 6:
 10675  		case 1:
 10676  		$s = -1; return new Value.ptr(ptrType$1.nil, 0, 0);
 10677  		/* */ } return; } if ($f === undefined) { $f = { $blk: Value.ptr.prototype.Index }; } $f._1 = _1; $f._r = _r; $f._r$1 = _r$1; $f.a = a; $f.a$1 = a$1; $f.c = c; $f.fl = fl; $f.fl$1 = fl$1; $f.fl$2 = fl$2; $f.i = i; $f.k = k; $f.s = s; $f.str = str; $f.tt = tt; $f.tt$1 = tt$1; $f.typ = typ; $f.typ$1 = typ$1; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
 10678  	};
 10679  	Value.prototype.Index = function(i) { return this.$val.Index(i); };
 10680  	Value.ptr.prototype.InterfaceData = function() {
 10681  		var v;
 10682  		v = this;
 10683  		$panic(errors.New("InterfaceData is not supported by GopherJS"));
 10684  	};
 10685  	Value.prototype.InterfaceData = function() { return this.$val.InterfaceData(); };
 10686  	Value.ptr.prototype.IsNil = function() {
 10687  		var _1, k, v;
 10688  		v = this;
 10689  		k = new flag(v.flag).kind();
 10690  		_1 = k;
 10691  		if ((_1 === (22)) || (_1 === (23))) {
 10692  			return $clone(v, Value).object() === jsType(v.typ).nil;
 10693  		} else if (_1 === (18)) {
 10694  			return $clone(v, Value).object() === $chanNil;
 10695  		} else if (_1 === (19)) {
 10696  			return $clone(v, Value).object() === $throwNilPointerError;
 10697  		} else if (_1 === (21)) {
 10698  			return $clone(v, Value).object() === false;
 10699  		} else if (_1 === (20)) {
 10700  			return $clone(v, Value).object() === $ifaceNil;
 10701  		} else {
 10702  			$panic(new ValueError.ptr("reflect.Value.IsNil", k));
 10703  		}
 10704  	};
 10705  	Value.prototype.IsNil = function() { return this.$val.IsNil(); };
 10706  	Value.ptr.prototype.Len = function() {
 10707  		var _1, k, v;
 10708  		v = this;
 10709  		k = new flag(v.flag).kind();
 10710  		_1 = k;
 10711  		if ((_1 === (17)) || (_1 === (24))) {
 10712  			return $parseInt($clone(v, Value).object().length);
 10713  		} else if (_1 === (23)) {
 10714  			return $parseInt($clone(v, Value).object().$length) >> 0;
 10715  		} else if (_1 === (18)) {
 10716  			return $parseInt($clone(v, Value).object().$buffer.length) >> 0;
 10717  		} else if (_1 === (21)) {
 10718  			return $parseInt($keys($clone(v, Value).object()).length);
 10719  		} else {
 10720  			$panic(new ValueError.ptr("reflect.Value.Len", k));
 10721  		}
 10722  	};
 10723  	Value.prototype.Len = function() { return this.$val.Len(); };
 10724  	Value.ptr.prototype.Pointer = function() {
 10725  		var _1, k, v;
 10726  		v = this;
 10727  		k = new flag(v.flag).kind();
 10728  		_1 = k;
 10729  		if ((_1 === (18)) || (_1 === (21)) || (_1 === (22)) || (_1 === (26))) {
 10730  			if ($clone(v, Value).IsNil()) {
 10731  				return 0;
 10732  			}
 10733  			return $clone(v, Value).object();
 10734  		} else if (_1 === (19)) {
 10735  			if ($clone(v, Value).IsNil()) {
 10736  				return 0;
 10737  			}
 10738  			return 1;
 10739  		} else if (_1 === (23)) {
 10740  			if ($clone(v, Value).IsNil()) {
 10741  				return 0;
 10742  			}
 10743  			return $clone(v, Value).object().$array;
 10744  		} else {
 10745  			$panic(new ValueError.ptr("reflect.Value.Pointer", k));
 10746  		}
 10747  	};
 10748  	Value.prototype.Pointer = function() { return this.$val.Pointer(); };
 10749  	Value.ptr.prototype.Set = function(x) {
 10750  		var _1, _r, _r$1, v, x, $s, $r;
 10751  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _r = $f._r; _r$1 = $f._r$1; v = $f.v; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 10752  		v = this;
 10753  		new flag(v.flag).mustBeAssignable();
 10754  		new flag(x.flag).mustBeExported();
 10755  		_r = $clone(x, Value).assignTo("reflect.Set", v.typ, 0); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 10756  		x = _r;
 10757  		/* */ if (!((((v.flag & 128) >>> 0) === 0))) { $s = 2; continue; }
 10758  		/* */ $s = 3; continue;
 10759  		/* if (!((((v.flag & 128) >>> 0) === 0))) { */ case 2:
 10760  				_1 = v.typ.Kind();
 10761  				/* */ if (_1 === (17)) { $s = 5; continue; }
 10762  				/* */ if (_1 === (20)) { $s = 6; continue; }
 10763  				/* */ if (_1 === (25)) { $s = 7; continue; }
 10764  				/* */ $s = 8; continue;
 10765  				/* if (_1 === (17)) { */ case 5:
 10766  					jsType(v.typ).copy(v.ptr, x.ptr);
 10767  					$s = 9; continue;
 10768  				/* } else if (_1 === (20)) { */ case 6:
 10769  					_r$1 = valueInterface($clone(x, Value), false); /* */ $s = 10; case 10: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 10770  					v.ptr.$set(_r$1);
 10771  					$s = 9; continue;
 10772  				/* } else if (_1 === (25)) { */ case 7:
 10773  					copyStruct(v.ptr, x.ptr, v.typ);
 10774  					$s = 9; continue;
 10775  				/* } else { */ case 8:
 10776  					v.ptr.$set($clone(x, Value).object());
 10777  				/* } */ case 9:
 10778  			case 4:
 10779  			$s = -1; return;
 10780  		/* } */ case 3:
 10781  		v.ptr = x.ptr;
 10782  		$s = -1; return;
 10783  		/* */ } return; } if ($f === undefined) { $f = { $blk: Value.ptr.prototype.Set }; } $f._1 = _1; $f._r = _r; $f._r$1 = _r$1; $f.v = v; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
 10784  	};
 10785  	Value.prototype.Set = function(x) { return this.$val.Set(x); };
 10786  	Value.ptr.prototype.SetBytes = function(x) {
 10787  		var _r, _r$1, _v, slice, typedSlice, v, x, $s, $r;
 10788  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _v = $f._v; slice = $f.slice; typedSlice = $f.typedSlice; v = $f.v; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 10789  		v = this;
 10790  		new flag(v.flag).mustBeAssignable();
 10791  		new flag(v.flag).mustBe(23);
 10792  		_r = v.typ.Elem().Kind(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 10793  		/* */ if (!((_r === 8))) { $s = 1; continue; }
 10794  		/* */ $s = 2; continue;
 10795  		/* if (!((_r === 8))) { */ case 1:
 10796  			$panic(new $String("reflect.Value.SetBytes of non-byte slice"));
 10797  		/* } */ case 2:
 10798  		slice = x;
 10799  		if (!(v.typ.Name() === "")) { _v = true; $s = 6; continue s; }
 10800  		_r$1 = v.typ.Elem().Name(); /* */ $s = 7; case 7: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 10801  		_v = !(_r$1 === ""); case 6:
 10802  		/* */ if (_v) { $s = 4; continue; }
 10803  		/* */ $s = 5; continue;
 10804  		/* if (_v) { */ case 4:
 10805  			typedSlice = new (jsType(v.typ))(slice.$array);
 10806  			typedSlice.$offset = slice.$offset;
 10807  			typedSlice.$length = slice.$length;
 10808  			typedSlice.$capacity = slice.$capacity;
 10809  			slice = typedSlice;
 10810  		/* } */ case 5:
 10811  		v.ptr.$set(slice);
 10812  		$s = -1; return;
 10813  		/* */ } return; } if ($f === undefined) { $f = { $blk: Value.ptr.prototype.SetBytes }; } $f._r = _r; $f._r$1 = _r$1; $f._v = _v; $f.slice = slice; $f.typedSlice = typedSlice; $f.v = v; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
 10814  	};
 10815  	Value.prototype.SetBytes = function(x) { return this.$val.SetBytes(x); };
 10816  	Value.ptr.prototype.SetCap = function(n) {
 10817  		var n, newSlice, s, v;
 10818  		v = this;
 10819  		new flag(v.flag).mustBeAssignable();
 10820  		new flag(v.flag).mustBe(23);
 10821  		s = v.ptr.$get();
 10822  		if (n < ($parseInt(s.$length) >> 0) || n > ($parseInt(s.$capacity) >> 0)) {
 10823  			$panic(new $String("reflect: slice capacity out of range in SetCap"));
 10824  		}
 10825  		newSlice = new (jsType(v.typ))(s.$array);
 10826  		newSlice.$offset = s.$offset;
 10827  		newSlice.$length = s.$length;
 10828  		newSlice.$capacity = n;
 10829  		v.ptr.$set(newSlice);
 10830  	};
 10831  	Value.prototype.SetCap = function(n) { return this.$val.SetCap(n); };
 10832  	Value.ptr.prototype.SetLen = function(n) {
 10833  		var n, newSlice, s, v;
 10834  		v = this;
 10835  		new flag(v.flag).mustBeAssignable();
 10836  		new flag(v.flag).mustBe(23);
 10837  		s = v.ptr.$get();
 10838  		if (n < 0 || n > ($parseInt(s.$capacity) >> 0)) {
 10839  			$panic(new $String("reflect: slice length out of range in SetLen"));
 10840  		}
 10841  		newSlice = new (jsType(v.typ))(s.$array);
 10842  		newSlice.$offset = s.$offset;
 10843  		newSlice.$length = n;
 10844  		newSlice.$capacity = s.$capacity;
 10845  		v.ptr.$set(newSlice);
 10846  	};
 10847  	Value.prototype.SetLen = function(n) { return this.$val.SetLen(n); };
 10848  	Value.ptr.prototype.Slice = function(i, j) {
 10849  		var _1, _r, _r$1, cap, i, j, kind, s, str, tt, typ, v, $s, $r;
 10850  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _r = $f._r; _r$1 = $f._r$1; cap = $f.cap; i = $f.i; j = $f.j; kind = $f.kind; s = $f.s; str = $f.str; tt = $f.tt; typ = $f.typ; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 10851  		v = this;
 10852  		cap = 0;
 10853  		typ = $ifaceNil;
 10854  		s = null;
 10855  			kind = new flag(v.flag).kind();
 10856  			_1 = kind;
 10857  			/* */ if (_1 === (17)) { $s = 2; continue; }
 10858  			/* */ if (_1 === (23)) { $s = 3; continue; }
 10859  			/* */ if (_1 === (24)) { $s = 4; continue; }
 10860  			/* */ $s = 5; continue;
 10861  			/* if (_1 === (17)) { */ case 2:
 10862  				if (((v.flag & 256) >>> 0) === 0) {
 10863  					$panic(new $String("reflect.Value.Slice: slice of unaddressable array"));
 10864  				}
 10865  				tt = (v.typ.kindType);
 10866  				cap = ((tt.len >> 0));
 10867  				typ = SliceOf(tt.elem);
 10868  				s = new (jsType(typ))($clone(v, Value).object());
 10869  				$s = 6; continue;
 10870  			/* } else if (_1 === (23)) { */ case 3:
 10871  				typ = v.typ;
 10872  				s = $clone(v, Value).object();
 10873  				cap = $parseInt(s.$capacity) >> 0;
 10874  				$s = 6; continue;
 10875  			/* } else if (_1 === (24)) { */ case 4:
 10876  				str = (v.ptr).$get();
 10877  				if (i < 0 || j < i || j > str.length) {
 10878  					$panic(new $String("reflect.Value.Slice: string slice index out of bounds"));
 10879  				}
 10880  				_r = ValueOf(new $String($substring(str, i, j))); /* */ $s = 7; case 7: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 10881  				$s = -1; return _r;
 10882  			/* } else { */ case 5:
 10883  				$panic(new ValueError.ptr("reflect.Value.Slice", kind));
 10884  			/* } */ case 6:
 10885  		case 1:
 10886  		if (i < 0 || j < i || j > cap) {
 10887  			$panic(new $String("reflect.Value.Slice: slice index out of bounds"));
 10888  		}
 10889  		_r$1 = makeValue(typ, $subslice(s, i, j), new flag(v.flag).ro()); /* */ $s = 8; case 8: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 10890  		$s = -1; return _r$1;
 10891  		/* */ } return; } if ($f === undefined) { $f = { $blk: Value.ptr.prototype.Slice }; } $f._1 = _1; $f._r = _r; $f._r$1 = _r$1; $f.cap = cap; $f.i = i; $f.j = j; $f.kind = kind; $f.s = s; $f.str = str; $f.tt = tt; $f.typ = typ; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
 10892  	};
 10893  	Value.prototype.Slice = function(i, j) { return this.$val.Slice(i, j); };
 10894  	Value.ptr.prototype.Slice3 = function(i, j, k) {
 10895  		var _1, _r, cap, i, j, k, kind, s, tt, typ, v, $s, $r;
 10896  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _r = $f._r; cap = $f.cap; i = $f.i; j = $f.j; k = $f.k; kind = $f.kind; s = $f.s; tt = $f.tt; typ = $f.typ; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 10897  		v = this;
 10898  		cap = 0;
 10899  		typ = $ifaceNil;
 10900  		s = null;
 10901  		kind = new flag(v.flag).kind();
 10902  		_1 = kind;
 10903  		if (_1 === (17)) {
 10904  			if (((v.flag & 256) >>> 0) === 0) {
 10905  				$panic(new $String("reflect.Value.Slice: slice of unaddressable array"));
 10906  			}
 10907  			tt = (v.typ.kindType);
 10908  			cap = ((tt.len >> 0));
 10909  			typ = SliceOf(tt.elem);
 10910  			s = new (jsType(typ))($clone(v, Value).object());
 10911  		} else if (_1 === (23)) {
 10912  			typ = v.typ;
 10913  			s = $clone(v, Value).object();
 10914  			cap = $parseInt(s.$capacity) >> 0;
 10915  		} else {
 10916  			$panic(new ValueError.ptr("reflect.Value.Slice3", kind));
 10917  		}
 10918  		if (i < 0 || j < i || k < j || k > cap) {
 10919  			$panic(new $String("reflect.Value.Slice3: slice index out of bounds"));
 10920  		}
 10921  		_r = makeValue(typ, $subslice(s, i, j, k), new flag(v.flag).ro()); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 10922  		$s = -1; return _r;
 10923  		/* */ } return; } if ($f === undefined) { $f = { $blk: Value.ptr.prototype.Slice3 }; } $f._1 = _1; $f._r = _r; $f.cap = cap; $f.i = i; $f.j = j; $f.k = k; $f.kind = kind; $f.s = s; $f.tt = tt; $f.typ = typ; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
 10924  	};
 10925  	Value.prototype.Slice3 = function(i, j, k) { return this.$val.Slice3(i, j, k); };
 10926  	Value.ptr.prototype.Close = function() {
 10927  		var v;
 10928  		v = this;
 10929  		new flag(v.flag).mustBe(18);
 10930  		new flag(v.flag).mustBeExported();
 10931  		$close($clone(v, Value).object());
 10932  	};
 10933  	Value.prototype.Close = function() { return this.$val.Close(); };
 10934  	chanrecv = function(ch, nb, val) {
 10935  		var _r, _tmp, _tmp$1, _tmp$2, _tmp$3, ch, comms, nb, received, recvRes, selectRes, selected, val, $s, $r;
 10936  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; ch = $f.ch; comms = $f.comms; nb = $f.nb; received = $f.received; recvRes = $f.recvRes; selectRes = $f.selectRes; selected = $f.selected; val = $f.val; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 10937  		selected = false;
 10938  		received = false;
 10939  		comms = new sliceType$11([new sliceType$8([ch])]);
 10940  		if (nb) {
 10941  			comms = $append(comms, new sliceType$8([]));
 10942  		}
 10943  		_r = selectHelper(new sliceType$3([comms])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 10944  		selectRes = _r;
 10945  		if (nb && (($parseInt(selectRes[0]) >> 0) === 1)) {
 10946  			_tmp = false;
 10947  			_tmp$1 = false;
 10948  			selected = _tmp;
 10949  			received = _tmp$1;
 10950  			$s = -1; return [selected, received];
 10951  		}
 10952  		recvRes = selectRes[1];
 10953  		val.$set(recvRes[0]);
 10954  		_tmp$2 = true;
 10955  		_tmp$3 = !!(recvRes[1]);
 10956  		selected = _tmp$2;
 10957  		received = _tmp$3;
 10958  		$s = -1; return [selected, received];
 10959  		/* */ } return; } if ($f === undefined) { $f = { $blk: chanrecv }; } $f._r = _r; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f.ch = ch; $f.comms = comms; $f.nb = nb; $f.received = received; $f.recvRes = recvRes; $f.selectRes = selectRes; $f.selected = selected; $f.val = val; $f.$s = $s; $f.$r = $r; return $f;
 10960  	};
 10961  	chansend = function(ch, val, nb) {
 10962  		var _r, ch, comms, nb, selectRes, val, $s, $r;
 10963  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; ch = $f.ch; comms = $f.comms; nb = $f.nb; selectRes = $f.selectRes; val = $f.val; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 10964  		comms = new sliceType$11([new sliceType$8([ch, val.$get()])]);
 10965  		if (nb) {
 10966  			comms = $append(comms, new sliceType$8([]));
 10967  		}
 10968  		_r = selectHelper(new sliceType$3([comms])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 10969  		selectRes = _r;
 10970  		if (nb && (($parseInt(selectRes[0]) >> 0) === 1)) {
 10971  			$s = -1; return false;
 10972  		}
 10973  		$s = -1; return true;
 10974  		/* */ } return; } if ($f === undefined) { $f = { $blk: chansend }; } $f._r = _r; $f.ch = ch; $f.comms = comms; $f.nb = nb; $f.selectRes = selectRes; $f.val = val; $f.$s = $s; $f.$r = $r; return $f;
 10975  	};
 10976  	DeepEqual = function(a1, a2) {
 10977  		var _arg, _arg$1, _arg$2, _r, _r$1, _r$2, a1, a2, i1, i2, $s, $r;
 10978  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _arg = $f._arg; _arg$1 = $f._arg$1; _arg$2 = $f._arg$2; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; a1 = $f.a1; a2 = $f.a2; i1 = $f.i1; i2 = $f.i2; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 10979  		i1 = a1;
 10980  		i2 = a2;
 10981  		if (i1 === i2) {
 10982  			$s = -1; return true;
 10983  		}
 10984  		if (i1 === null || i2 === null || !(i1.constructor === i2.constructor)) {
 10985  			$s = -1; return false;
 10986  		}
 10987  		_r = ValueOf(a1); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 10988  		_arg = $clone(_r, Value);
 10989  		_r$1 = ValueOf(a2); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 10990  		_arg$1 = $clone(_r$1, Value);
 10991  		_arg$2 = sliceType$12.nil;
 10992  		_r$2 = deepValueEqualJs(_arg, _arg$1, _arg$2); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 10993  		$s = -1; return _r$2;
 10994  		/* */ } return; } if ($f === undefined) { $f = { $blk: DeepEqual }; } $f._arg = _arg; $f._arg$1 = _arg$1; $f._arg$2 = _arg$2; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f.a1 = a1; $f.a2 = a2; $f.i1 = i1; $f.i2 = i2; $f.$s = $s; $f.$r = $r; return $f;
 10995  	};
 10996  	$pkg.DeepEqual = DeepEqual;
 10997  	deepValueEqualJs = function(v1, v2, visited) {
 10998  		var _1, _2, _arg, _arg$1, _arg$10, _arg$11, _arg$2, _arg$3, _arg$4, _arg$5, _arg$6, _arg$7, _arg$8, _arg$9, _i, _i$1, _r, _r$1, _r$10, _r$11, _r$12, _r$13, _r$14, _r$15, _r$16, _r$17, _r$18, _r$19, _r$2, _r$20, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, _ref$1, _v, entry, i, i$1, k, keys, n, n$1, v1, v2, val1, val2, visited, $s, $r;
 10999  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _2 = $f._2; _arg = $f._arg; _arg$1 = $f._arg$1; _arg$10 = $f._arg$10; _arg$11 = $f._arg$11; _arg$2 = $f._arg$2; _arg$3 = $f._arg$3; _arg$4 = $f._arg$4; _arg$5 = $f._arg$5; _arg$6 = $f._arg$6; _arg$7 = $f._arg$7; _arg$8 = $f._arg$8; _arg$9 = $f._arg$9; _i = $f._i; _i$1 = $f._i$1; _r = $f._r; _r$1 = $f._r$1; _r$10 = $f._r$10; _r$11 = $f._r$11; _r$12 = $f._r$12; _r$13 = $f._r$13; _r$14 = $f._r$14; _r$15 = $f._r$15; _r$16 = $f._r$16; _r$17 = $f._r$17; _r$18 = $f._r$18; _r$19 = $f._r$19; _r$2 = $f._r$2; _r$20 = $f._r$20; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _r$8 = $f._r$8; _r$9 = $f._r$9; _ref = $f._ref; _ref$1 = $f._ref$1; _v = $f._v; entry = $f.entry; i = $f.i; i$1 = $f.i$1; k = $f.k; keys = $f.keys; n = $f.n; n$1 = $f.n$1; v1 = $f.v1; v2 = $f.v2; val1 = $f.val1; val2 = $f.val2; visited = $f.visited; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 11000  		if (!$clone(v1, Value).IsValid() || !$clone(v2, Value).IsValid()) {
 11001  			$s = -1; return !$clone(v1, Value).IsValid() && !$clone(v2, Value).IsValid();
 11002  		}
 11003  		_r = $clone(v1, Value).Type(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 11004  		_r$1 = $clone(v2, Value).Type(); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 11005  		/* */ if (!($interfaceIsEqual(_r, _r$1))) { $s = 1; continue; }
 11006  		/* */ $s = 2; continue;
 11007  		/* if (!($interfaceIsEqual(_r, _r$1))) { */ case 1:
 11008  			$s = -1; return false;
 11009  		/* } */ case 2:
 11010  		_r$2 = $clone(v1, Value).Type(); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 11011  		/* */ if ($interfaceIsEqual(_r$2, jsObjectPtr)) { $s = 5; continue; }
 11012  		/* */ $s = 6; continue;
 11013  		/* if ($interfaceIsEqual(_r$2, jsObjectPtr)) { */ case 5:
 11014  			$s = -1; return unwrapJsObject(jsObjectPtr, $clone(v1, Value).object()) === unwrapJsObject(jsObjectPtr, $clone(v2, Value).object());
 11015  		/* } */ case 6:
 11016  		_1 = $clone(v1, Value).Kind();
 11017  		if ((_1 === (17)) || (_1 === (21)) || (_1 === (23)) || (_1 === (25))) {
 11018  			_ref = visited;
 11019  			_i = 0;
 11020  			while (true) {
 11021  				if (!(_i < _ref.$length)) { break; }
 11022  				entry = $clone(((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]), arrayType$1);
 11023  				if (v1.ptr === entry[0] && v2.ptr === entry[1]) {
 11024  					$s = -1; return true;
 11025  				}
 11026  				_i++;
 11027  			}
 11028  			visited = $append(visited, $toNativeArray($kindUnsafePointer, [v1.ptr, v2.ptr]));
 11029  		}
 11030  			_2 = $clone(v1, Value).Kind();
 11031  			/* */ if ((_2 === (17)) || (_2 === (23))) { $s = 9; continue; }
 11032  			/* */ if (_2 === (20)) { $s = 10; continue; }
 11033  			/* */ if (_2 === (22)) { $s = 11; continue; }
 11034  			/* */ if (_2 === (25)) { $s = 12; continue; }
 11035  			/* */ if (_2 === (21)) { $s = 13; continue; }
 11036  			/* */ if (_2 === (19)) { $s = 14; continue; }
 11037  			/* */ if (_2 === (26)) { $s = 15; continue; }
 11038  			/* */ $s = 16; continue;
 11039  			/* if ((_2 === (17)) || (_2 === (23))) { */ case 9:
 11040  				if ($clone(v1, Value).Kind() === 23) {
 11041  					if (!($clone(v1, Value).IsNil() === $clone(v2, Value).IsNil())) {
 11042  						$s = -1; return false;
 11043  					}
 11044  					if ($clone(v1, Value).object() === $clone(v2, Value).object()) {
 11045  						$s = -1; return true;
 11046  					}
 11047  				}
 11048  				n = $clone(v1, Value).Len();
 11049  				if (!((n === $clone(v2, Value).Len()))) {
 11050  					$s = -1; return false;
 11051  				}
 11052  				i = 0;
 11053  				/* while (true) { */ case 17:
 11054  					/* if (!(i < n)) { break; } */ if(!(i < n)) { $s = 18; continue; }
 11055  					_r$3 = $clone(v1, Value).Index(i); /* */ $s = 21; case 21: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 11056  					_arg = $clone(_r$3, Value);
 11057  					_r$4 = $clone(v2, Value).Index(i); /* */ $s = 22; case 22: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 11058  					_arg$1 = $clone(_r$4, Value);
 11059  					_arg$2 = visited;
 11060  					_r$5 = deepValueEqualJs(_arg, _arg$1, _arg$2); /* */ $s = 23; case 23: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
 11061  					/* */ if (!_r$5) { $s = 19; continue; }
 11062  					/* */ $s = 20; continue;
 11063  					/* if (!_r$5) { */ case 19:
 11064  						$s = -1; return false;
 11065  					/* } */ case 20:
 11066  					i = i + (1) >> 0;
 11067  				/* } */ $s = 17; continue; case 18:
 11068  				$s = -1; return true;
 11069  			/* } else if (_2 === (20)) { */ case 10:
 11070  				if ($clone(v1, Value).IsNil() || $clone(v2, Value).IsNil()) {
 11071  					$s = -1; return $clone(v1, Value).IsNil() && $clone(v2, Value).IsNil();
 11072  				}
 11073  				_r$6 = $clone(v1, Value).Elem(); /* */ $s = 24; case 24: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
 11074  				_arg$3 = $clone(_r$6, Value);
 11075  				_r$7 = $clone(v2, Value).Elem(); /* */ $s = 25; case 25: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
 11076  				_arg$4 = $clone(_r$7, Value);
 11077  				_arg$5 = visited;
 11078  				_r$8 = deepValueEqualJs(_arg$3, _arg$4, _arg$5); /* */ $s = 26; case 26: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
 11079  				$s = -1; return _r$8;
 11080  			/* } else if (_2 === (22)) { */ case 11:
 11081  				_r$9 = $clone(v1, Value).Elem(); /* */ $s = 27; case 27: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 11082  				_arg$6 = $clone(_r$9, Value);
 11083  				_r$10 = $clone(v2, Value).Elem(); /* */ $s = 28; case 28: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
 11084  				_arg$7 = $clone(_r$10, Value);
 11085  				_arg$8 = visited;
 11086  				_r$11 = deepValueEqualJs(_arg$6, _arg$7, _arg$8); /* */ $s = 29; case 29: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; }
 11087  				$s = -1; return _r$11;
 11088  			/* } else if (_2 === (25)) { */ case 12:
 11089  				n$1 = $clone(v1, Value).NumField();
 11090  				i$1 = 0;
 11091  				/* while (true) { */ case 30:
 11092  					/* if (!(i$1 < n$1)) { break; } */ if(!(i$1 < n$1)) { $s = 31; continue; }
 11093  					_r$12 = $clone(v1, Value).Field(i$1); /* */ $s = 34; case 34: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; }
 11094  					_arg$9 = $clone(_r$12, Value);
 11095  					_r$13 = $clone(v2, Value).Field(i$1); /* */ $s = 35; case 35: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; }
 11096  					_arg$10 = $clone(_r$13, Value);
 11097  					_arg$11 = visited;
 11098  					_r$14 = deepValueEqualJs(_arg$9, _arg$10, _arg$11); /* */ $s = 36; case 36: if($c) { $c = false; _r$14 = _r$14.$blk(); } if (_r$14 && _r$14.$blk !== undefined) { break s; }
 11099  					/* */ if (!_r$14) { $s = 32; continue; }
 11100  					/* */ $s = 33; continue;
 11101  					/* if (!_r$14) { */ case 32:
 11102  						$s = -1; return false;
 11103  					/* } */ case 33:
 11104  					i$1 = i$1 + (1) >> 0;
 11105  				/* } */ $s = 30; continue; case 31:
 11106  				$s = -1; return true;
 11107  			/* } else if (_2 === (21)) { */ case 13:
 11108  				if (!($clone(v1, Value).IsNil() === $clone(v2, Value).IsNil())) {
 11109  					$s = -1; return false;
 11110  				}
 11111  				if ($clone(v1, Value).object() === $clone(v2, Value).object()) {
 11112  					$s = -1; return true;
 11113  				}
 11114  				_r$15 = $clone(v1, Value).MapKeys(); /* */ $s = 37; case 37: if($c) { $c = false; _r$15 = _r$15.$blk(); } if (_r$15 && _r$15.$blk !== undefined) { break s; }
 11115  				keys = _r$15;
 11116  				if (!((keys.$length === $clone(v2, Value).Len()))) {
 11117  					$s = -1; return false;
 11118  				}
 11119  				_ref$1 = keys;
 11120  				_i$1 = 0;
 11121  				/* while (true) { */ case 38:
 11122  					/* if (!(_i$1 < _ref$1.$length)) { break; } */ if(!(_i$1 < _ref$1.$length)) { $s = 39; continue; }
 11123  					k = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]);
 11124  					_r$16 = $clone(v1, Value).MapIndex($clone(k, Value)); /* */ $s = 40; case 40: if($c) { $c = false; _r$16 = _r$16.$blk(); } if (_r$16 && _r$16.$blk !== undefined) { break s; }
 11125  					val1 = _r$16;
 11126  					_r$17 = $clone(v2, Value).MapIndex($clone(k, Value)); /* */ $s = 41; case 41: if($c) { $c = false; _r$17 = _r$17.$blk(); } if (_r$17 && _r$17.$blk !== undefined) { break s; }
 11127  					val2 = _r$17;
 11128  					if (!$clone(val1, Value).IsValid() || !$clone(val2, Value).IsValid()) { _v = true; $s = 44; continue s; }
 11129  					_r$18 = deepValueEqualJs($clone(val1, Value), $clone(val2, Value), visited); /* */ $s = 45; case 45: if($c) { $c = false; _r$18 = _r$18.$blk(); } if (_r$18 && _r$18.$blk !== undefined) { break s; }
 11130  					_v = !_r$18; case 44:
 11131  					/* */ if (_v) { $s = 42; continue; }
 11132  					/* */ $s = 43; continue;
 11133  					/* if (_v) { */ case 42:
 11134  						$s = -1; return false;
 11135  					/* } */ case 43:
 11136  					_i$1++;
 11137  				/* } */ $s = 38; continue; case 39:
 11138  				$s = -1; return true;
 11139  			/* } else if (_2 === (19)) { */ case 14:
 11140  				$s = -1; return $clone(v1, Value).IsNil() && $clone(v2, Value).IsNil();
 11141  			/* } else if (_2 === (26)) { */ case 15:
 11142  				$s = -1; return $clone(v1, Value).object() === $clone(v2, Value).object();
 11143  			/* } */ case 16:
 11144  		case 8:
 11145  		_r$19 = valueInterface($clone(v1, Value), false); /* */ $s = 46; case 46: if($c) { $c = false; _r$19 = _r$19.$blk(); } if (_r$19 && _r$19.$blk !== undefined) { break s; }
 11146  		_r$20 = valueInterface($clone(v2, Value), false); /* */ $s = 47; case 47: if($c) { $c = false; _r$20 = _r$20.$blk(); } if (_r$20 && _r$20.$blk !== undefined) { break s; }
 11147  		$s = -1; return !!($interfaceIsEqual(_r$19, _r$20));
 11148  		/* */ } return; } if ($f === undefined) { $f = { $blk: deepValueEqualJs }; } $f._1 = _1; $f._2 = _2; $f._arg = _arg; $f._arg$1 = _arg$1; $f._arg$10 = _arg$10; $f._arg$11 = _arg$11; $f._arg$2 = _arg$2; $f._arg$3 = _arg$3; $f._arg$4 = _arg$4; $f._arg$5 = _arg$5; $f._arg$6 = _arg$6; $f._arg$7 = _arg$7; $f._arg$8 = _arg$8; $f._arg$9 = _arg$9; $f._i = _i; $f._i$1 = _i$1; $f._r = _r; $f._r$1 = _r$1; $f._r$10 = _r$10; $f._r$11 = _r$11; $f._r$12 = _r$12; $f._r$13 = _r$13; $f._r$14 = _r$14; $f._r$15 = _r$15; $f._r$16 = _r$16; $f._r$17 = _r$17; $f._r$18 = _r$18; $f._r$19 = _r$19; $f._r$2 = _r$2; $f._r$20 = _r$20; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._r$8 = _r$8; $f._r$9 = _r$9; $f._ref = _ref; $f._ref$1 = _ref$1; $f._v = _v; $f.entry = entry; $f.i = i; $f.i$1 = i$1; $f.k = k; $f.keys = keys; $f.n = n; $f.n$1 = n$1; $f.v1 = v1; $f.v2 = v2; $f.val1 = val1; $f.val2 = val2; $f.visited = visited; $f.$s = $s; $f.$r = $r; return $f;
 11149  	};
 11150  	Swapper = function(slice) {
 11151  		var _1, _r, a, off, slice, v, vLen, $s, $r;
 11152  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _r = $f._r; a = $f.a; off = $f.off; slice = $f.slice; v = $f.v; vLen = $f.vLen; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 11153  		a = [a];
 11154  		off = [off];
 11155  		vLen = [vLen];
 11156  		_r = ValueOf(slice); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 11157  		v = _r;
 11158  		if (!(($clone(v, Value).Kind() === 23))) {
 11159  			$panic(new ValueError.ptr("Swapper", $clone(v, Value).Kind()));
 11160  		}
 11161  		vLen[0] = (($clone(v, Value).Len() >>> 0));
 11162  		_1 = vLen[0];
 11163  		if (_1 === (0)) {
 11164  			$s = -1; return (function(a, off, vLen) { return function(i, j) {
 11165  				var i, j;
 11166  				$panic(new $String("reflect: slice index out of range"));
 11167  			}; })(a, off, vLen);
 11168  		} else if (_1 === (1)) {
 11169  			$s = -1; return (function(a, off, vLen) { return function(i, j) {
 11170  				var i, j;
 11171  				if (!((i === 0)) || !((j === 0))) {
 11172  					$panic(new $String("reflect: slice index out of range"));
 11173  				}
 11174  			}; })(a, off, vLen);
 11175  		}
 11176  		a[0] = slice.$array;
 11177  		off[0] = $parseInt(slice.$offset) >> 0;
 11178  		$s = -1; return (function(a, off, vLen) { return function(i, j) {
 11179  			var i, j, tmp;
 11180  			if (((i >>> 0)) >= vLen[0] || ((j >>> 0)) >= vLen[0]) {
 11181  				$panic(new $String("reflect: slice index out of range"));
 11182  			}
 11183  			i = i + (off[0]) >> 0;
 11184  			j = j + (off[0]) >> 0;
 11185  			tmp = a[0][i];
 11186  			a[0][i] = a[0][j];
 11187  			a[0][j] = tmp;
 11188  		}; })(a, off, vLen);
 11189  		/* */ } return; } if ($f === undefined) { $f = { $blk: Swapper }; } $f._1 = _1; $f._r = _r; $f.a = a; $f.off = off; $f.slice = slice; $f.v = v; $f.vLen = vLen; $f.$s = $s; $f.$r = $r; return $f;
 11190  	};
 11191  	$pkg.Swapper = Swapper;
 11192  	structField.ptr.prototype.offset = function() {
 11193  		var f;
 11194  		f = this;
 11195  		return f.offsetAnon >>> 1 >>> 0;
 11196  	};
 11197  	structField.prototype.offset = function() { return this.$val.offset(); };
 11198  	structField.ptr.prototype.anon = function() {
 11199  		var f;
 11200  		f = this;
 11201  		return !((((f.offsetAnon & 1) >>> 0) === 0));
 11202  	};
 11203  	structField.prototype.anon = function() { return this.$val.anon(); };
 11204  	Kind.prototype.String = function() {
 11205  		var k;
 11206  		k = this.$val;
 11207  		if (((k >> 0)) < kindNames.$length) {
 11208  			return ((k < 0 || k >= kindNames.$length) ? ($throwRuntimeError("index out of range"), undefined) : kindNames.$array[kindNames.$offset + k]);
 11209  		}
 11210  		return "kind" + strconv.Itoa(((k >> 0)));
 11211  	};
 11212  	$ptrType(Kind).prototype.String = function() { return new Kind(this.$get()).String(); };
 11213  	rtype.ptr.prototype.String = function() {
 11214  		var s, t;
 11215  		t = this;
 11216  		s = $clone(t.nameOff(t.str), name).name();
 11217  		if (!((((t.tflag & 2) >>> 0) === 0))) {
 11218  			return $substring(s, 1);
 11219  		}
 11220  		return s;
 11221  	};
 11222  	rtype.prototype.String = function() { return this.$val.String(); };
 11223  	rtype.ptr.prototype.Size = function() {
 11224  		var t;
 11225  		t = this;
 11226  		return t.size;
 11227  	};
 11228  	rtype.prototype.Size = function() { return this.$val.Size(); };
 11229  	rtype.ptr.prototype.Bits = function() {
 11230  		var k, t;
 11231  		t = this;
 11232  		if (t === ptrType$1.nil) {
 11233  			$panic(new $String("reflect: Bits of nil Type"));
 11234  		}
 11235  		k = t.Kind();
 11236  		if (k < 2 || k > 16) {
 11237  			$panic(new $String("reflect: Bits of non-arithmetic Type " + t.String()));
 11238  		}
 11239  		return $imul(((t.size >> 0)), 8);
 11240  	};
 11241  	rtype.prototype.Bits = function() { return this.$val.Bits(); };
 11242  	rtype.ptr.prototype.Align = function() {
 11243  		var t;
 11244  		t = this;
 11245  		return ((t.align >> 0));
 11246  	};
 11247  	rtype.prototype.Align = function() { return this.$val.Align(); };
 11248  	rtype.ptr.prototype.FieldAlign = function() {
 11249  		var t;
 11250  		t = this;
 11251  		return ((t.fieldAlign >> 0));
 11252  	};
 11253  	rtype.prototype.FieldAlign = function() { return this.$val.FieldAlign(); };
 11254  	rtype.ptr.prototype.Kind = function() {
 11255  		var t;
 11256  		t = this;
 11257  		return ((((t.kind & 31) >>> 0) >>> 0));
 11258  	};
 11259  	rtype.prototype.Kind = function() { return this.$val.Kind(); };
 11260  	rtype.ptr.prototype.common = function() {
 11261  		var t;
 11262  		t = this;
 11263  		return t;
 11264  	};
 11265  	rtype.prototype.common = function() { return this.$val.common(); };
 11266  	rtype.ptr.prototype.exportedMethods = function() {
 11267  		var _i, _i$1, _r, _r$1, _ref, _ref$1, _tuple, _tuple$1, allExported, allm, found, m, m$1, methods, methodsi, name$1, name$2, t, ut, $s, $r;
 11268  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _i = $f._i; _i$1 = $f._i$1; _r = $f._r; _r$1 = $f._r$1; _ref = $f._ref; _ref$1 = $f._ref$1; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; allExported = $f.allExported; allm = $f.allm; found = $f.found; m = $f.m; m$1 = $f.m$1; methods = $f.methods; methodsi = $f.methodsi; name$1 = $f.name$1; name$2 = $f.name$2; t = $f.t; ut = $f.ut; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 11269  		t = this;
 11270  		_r = methodCache.Load(t); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 11271  		_tuple = _r;
 11272  		methodsi = _tuple[0];
 11273  		found = _tuple[1];
 11274  		if (found) {
 11275  			$s = -1; return $assertType(methodsi, sliceType$5);
 11276  		}
 11277  		ut = t.uncommon();
 11278  		if (ut === ptrType$5.nil) {
 11279  			$s = -1; return sliceType$5.nil;
 11280  		}
 11281  		allm = ut.methods();
 11282  		allExported = true;
 11283  		_ref = allm;
 11284  		_i = 0;
 11285  		while (true) {
 11286  			if (!(_i < _ref.$length)) { break; }
 11287  			m = $clone(((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]), method);
 11288  			name$1 = $clone(t.nameOff(m.name), name);
 11289  			if (!$clone(name$1, name).isExported()) {
 11290  				allExported = false;
 11291  				break;
 11292  			}
 11293  			_i++;
 11294  		}
 11295  		methods = sliceType$5.nil;
 11296  		if (allExported) {
 11297  			methods = allm;
 11298  		} else {
 11299  			methods = $makeSlice(sliceType$5, 0, allm.$length);
 11300  			_ref$1 = allm;
 11301  			_i$1 = 0;
 11302  			while (true) {
 11303  				if (!(_i$1 < _ref$1.$length)) { break; }
 11304  				m$1 = $clone(((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]), method);
 11305  				name$2 = $clone(t.nameOff(m$1.name), name);
 11306  				if ($clone(name$2, name).isExported()) {
 11307  					methods = $append(methods, m$1);
 11308  				}
 11309  				_i$1++;
 11310  			}
 11311  			methods = $subslice(methods, 0, methods.$length, methods.$length);
 11312  		}
 11313  		_r$1 = methodCache.LoadOrStore(t, methods); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 11314  		_tuple$1 = _r$1;
 11315  		methodsi = _tuple$1[0];
 11316  		$s = -1; return $assertType(methodsi, sliceType$5);
 11317  		/* */ } return; } if ($f === undefined) { $f = { $blk: rtype.ptr.prototype.exportedMethods }; } $f._i = _i; $f._i$1 = _i$1; $f._r = _r; $f._r$1 = _r$1; $f._ref = _ref; $f._ref$1 = _ref$1; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.allExported = allExported; $f.allm = allm; $f.found = found; $f.m = m; $f.m$1 = m$1; $f.methods = methods; $f.methodsi = methodsi; $f.name$1 = name$1; $f.name$2 = name$2; $f.t = t; $f.ut = ut; $f.$s = $s; $f.$r = $r; return $f;
 11318  	};
 11319  	rtype.prototype.exportedMethods = function() { return this.$val.exportedMethods(); };
 11320  	rtype.ptr.prototype.NumMethod = function() {
 11321  		var _r, t, tt, $s, $r;
 11322  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; t = $f.t; tt = $f.tt; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 11323  		t = this;
 11324  		if (t.Kind() === 20) {
 11325  			tt = (t.kindType);
 11326  			$s = -1; return tt.NumMethod();
 11327  		}
 11328  		if (((t.tflag & 1) >>> 0) === 0) {
 11329  			$s = -1; return 0;
 11330  		}
 11331  		_r = t.exportedMethods(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 11332  		$s = -1; return _r.$length;
 11333  		/* */ } return; } if ($f === undefined) { $f = { $blk: rtype.ptr.prototype.NumMethod }; } $f._r = _r; $f.t = t; $f.tt = tt; $f.$s = $s; $f.$r = $r; return $f;
 11334  	};
 11335  	rtype.prototype.NumMethod = function() { return this.$val.NumMethod(); };
 11336  	rtype.ptr.prototype.MethodByName = function(name$1) {
 11337  		var _r, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tuple, eidx, i, m, name$1, ok, p, pname, t, tt, ut, utmethods, $s, $r;
 11338  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tmp$4 = $f._tmp$4; _tmp$5 = $f._tmp$5; _tuple = $f._tuple; eidx = $f.eidx; i = $f.i; m = $f.m; name$1 = $f.name$1; ok = $f.ok; p = $f.p; pname = $f.pname; t = $f.t; tt = $f.tt; ut = $f.ut; utmethods = $f.utmethods; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 11339  		m = new Method.ptr("", "", $ifaceNil, new Value.ptr(ptrType$1.nil, 0, 0), 0);
 11340  		ok = false;
 11341  		t = this;
 11342  		if (t.Kind() === 20) {
 11343  			tt = (t.kindType);
 11344  			_tuple = tt.MethodByName(name$1);
 11345  			Method.copy(m, _tuple[0]);
 11346  			ok = _tuple[1];
 11347  			$s = -1; return [m, ok];
 11348  		}
 11349  		ut = t.uncommon();
 11350  		if (ut === ptrType$5.nil) {
 11351  			_tmp = new Method.ptr("", "", $ifaceNil, new Value.ptr(ptrType$1.nil, 0, 0), 0);
 11352  			_tmp$1 = false;
 11353  			Method.copy(m, _tmp);
 11354  			ok = _tmp$1;
 11355  			$s = -1; return [m, ok];
 11356  		}
 11357  		utmethods = ut.methods();
 11358  		eidx = 0;
 11359  		i = 0;
 11360  		/* while (true) { */ case 1:
 11361  			/* if (!(i < ((ut.mcount >> 0)))) { break; } */ if(!(i < ((ut.mcount >> 0)))) { $s = 2; continue; }
 11362  			p = $clone(((i < 0 || i >= utmethods.$length) ? ($throwRuntimeError("index out of range"), undefined) : utmethods.$array[utmethods.$offset + i]), method);
 11363  			pname = $clone(t.nameOff(p.name), name);
 11364  			/* */ if ($clone(pname, name).isExported()) { $s = 3; continue; }
 11365  			/* */ $s = 4; continue;
 11366  			/* if ($clone(pname, name).isExported()) { */ case 3:
 11367  				/* */ if ($clone(pname, name).name() === name$1) { $s = 5; continue; }
 11368  				/* */ $s = 6; continue;
 11369  				/* if ($clone(pname, name).name() === name$1) { */ case 5:
 11370  					_r = t.Method(eidx); /* */ $s = 7; case 7: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 11371  					_tmp$2 = $clone(_r, Method);
 11372  					_tmp$3 = true;
 11373  					Method.copy(m, _tmp$2);
 11374  					ok = _tmp$3;
 11375  					$s = -1; return [m, ok];
 11376  				/* } */ case 6:
 11377  				eidx = eidx + (1) >> 0;
 11378  			/* } */ case 4:
 11379  			i = i + (1) >> 0;
 11380  		/* } */ $s = 1; continue; case 2:
 11381  		_tmp$4 = new Method.ptr("", "", $ifaceNil, new Value.ptr(ptrType$1.nil, 0, 0), 0);
 11382  		_tmp$5 = false;
 11383  		Method.copy(m, _tmp$4);
 11384  		ok = _tmp$5;
 11385  		$s = -1; return [m, ok];
 11386  		/* */ } return; } if ($f === undefined) { $f = { $blk: rtype.ptr.prototype.MethodByName }; } $f._r = _r; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tmp$4 = _tmp$4; $f._tmp$5 = _tmp$5; $f._tuple = _tuple; $f.eidx = eidx; $f.i = i; $f.m = m; $f.name$1 = name$1; $f.ok = ok; $f.p = p; $f.pname = pname; $f.t = t; $f.tt = tt; $f.ut = ut; $f.utmethods = utmethods; $f.$s = $s; $f.$r = $r; return $f;
 11387  	};
 11388  	rtype.prototype.MethodByName = function(name$1) { return this.$val.MethodByName(name$1); };
 11389  	rtype.ptr.prototype.PkgPath = function() {
 11390  		var t, ut;
 11391  		t = this;
 11392  		if (((t.tflag & 4) >>> 0) === 0) {
 11393  			return "";
 11394  		}
 11395  		ut = t.uncommon();
 11396  		if (ut === ptrType$5.nil) {
 11397  			return "";
 11398  		}
 11399  		return $clone(t.nameOff(ut.pkgPath), name).name();
 11400  	};
 11401  	rtype.prototype.PkgPath = function() { return this.$val.PkgPath(); };
 11402  	rtype.ptr.prototype.Name = function() {
 11403  		var i, s, t;
 11404  		t = this;
 11405  		if (((t.tflag & 4) >>> 0) === 0) {
 11406  			return "";
 11407  		}
 11408  		s = t.String();
 11409  		i = s.length - 1 >> 0;
 11410  		while (true) {
 11411  			if (!(i >= 0)) { break; }
 11412  			if (s.charCodeAt(i) === 46) {
 11413  				break;
 11414  			}
 11415  			i = i - (1) >> 0;
 11416  		}
 11417  		return $substring(s, (i + 1 >> 0));
 11418  	};
 11419  	rtype.prototype.Name = function() { return this.$val.Name(); };
 11420  	rtype.ptr.prototype.ChanDir = function() {
 11421  		var t, tt;
 11422  		t = this;
 11423  		if (!((t.Kind() === 18))) {
 11424  			$panic(new $String("reflect: ChanDir of non-chan type"));
 11425  		}
 11426  		tt = (t.kindType);
 11427  		return ((tt.dir >> 0));
 11428  	};
 11429  	rtype.prototype.ChanDir = function() { return this.$val.ChanDir(); };
 11430  	rtype.ptr.prototype.IsVariadic = function() {
 11431  		var t, tt;
 11432  		t = this;
 11433  		if (!((t.Kind() === 19))) {
 11434  			$panic(new $String("reflect: IsVariadic of non-func type"));
 11435  		}
 11436  		tt = (t.kindType);
 11437  		return !((((tt.outCount & 32768) >>> 0) === 0));
 11438  	};
 11439  	rtype.prototype.IsVariadic = function() { return this.$val.IsVariadic(); };
 11440  	rtype.ptr.prototype.Elem = function() {
 11441  		var _1, t, tt, tt$1, tt$2, tt$3, tt$4;
 11442  		t = this;
 11443  		_1 = t.Kind();
 11444  		if (_1 === (17)) {
 11445  			tt = (t.kindType);
 11446  			return toType(tt.elem);
 11447  		} else if (_1 === (18)) {
 11448  			tt$1 = (t.kindType);
 11449  			return toType(tt$1.elem);
 11450  		} else if (_1 === (21)) {
 11451  			tt$2 = (t.kindType);
 11452  			return toType(tt$2.elem);
 11453  		} else if (_1 === (22)) {
 11454  			tt$3 = (t.kindType);
 11455  			return toType(tt$3.elem);
 11456  		} else if (_1 === (23)) {
 11457  			tt$4 = (t.kindType);
 11458  			return toType(tt$4.elem);
 11459  		}
 11460  		$panic(new $String("reflect: Elem of invalid type"));
 11461  	};
 11462  	rtype.prototype.Elem = function() { return this.$val.Elem(); };
 11463  	rtype.ptr.prototype.Field = function(i) {
 11464  		var i, t, tt;
 11465  		t = this;
 11466  		if (!((t.Kind() === 25))) {
 11467  			$panic(new $String("reflect: Field of non-struct type"));
 11468  		}
 11469  		tt = (t.kindType);
 11470  		return tt.Field(i);
 11471  	};
 11472  	rtype.prototype.Field = function(i) { return this.$val.Field(i); };
 11473  	rtype.ptr.prototype.FieldByIndex = function(index) {
 11474  		var _r, index, t, tt, $s, $r;
 11475  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; index = $f.index; t = $f.t; tt = $f.tt; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 11476  		t = this;
 11477  		if (!((t.Kind() === 25))) {
 11478  			$panic(new $String("reflect: FieldByIndex of non-struct type"));
 11479  		}
 11480  		tt = (t.kindType);
 11481  		_r = tt.FieldByIndex(index); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 11482  		$s = -1; return _r;
 11483  		/* */ } return; } if ($f === undefined) { $f = { $blk: rtype.ptr.prototype.FieldByIndex }; } $f._r = _r; $f.index = index; $f.t = t; $f.tt = tt; $f.$s = $s; $f.$r = $r; return $f;
 11484  	};
 11485  	rtype.prototype.FieldByIndex = function(index) { return this.$val.FieldByIndex(index); };
 11486  	rtype.ptr.prototype.FieldByName = function(name$1) {
 11487  		var _r, name$1, t, tt, $s, $r;
 11488  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; name$1 = $f.name$1; t = $f.t; tt = $f.tt; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 11489  		t = this;
 11490  		if (!((t.Kind() === 25))) {
 11491  			$panic(new $String("reflect: FieldByName of non-struct type"));
 11492  		}
 11493  		tt = (t.kindType);
 11494  		_r = tt.FieldByName(name$1); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 11495  		$s = -1; return _r;
 11496  		/* */ } return; } if ($f === undefined) { $f = { $blk: rtype.ptr.prototype.FieldByName }; } $f._r = _r; $f.name$1 = name$1; $f.t = t; $f.tt = tt; $f.$s = $s; $f.$r = $r; return $f;
 11497  	};
 11498  	rtype.prototype.FieldByName = function(name$1) { return this.$val.FieldByName(name$1); };
 11499  	rtype.ptr.prototype.FieldByNameFunc = function(match) {
 11500  		var _r, match, t, tt, $s, $r;
 11501  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; match = $f.match; t = $f.t; tt = $f.tt; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 11502  		t = this;
 11503  		if (!((t.Kind() === 25))) {
 11504  			$panic(new $String("reflect: FieldByNameFunc of non-struct type"));
 11505  		}
 11506  		tt = (t.kindType);
 11507  		_r = tt.FieldByNameFunc(match); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 11508  		$s = -1; return _r;
 11509  		/* */ } return; } if ($f === undefined) { $f = { $blk: rtype.ptr.prototype.FieldByNameFunc }; } $f._r = _r; $f.match = match; $f.t = t; $f.tt = tt; $f.$s = $s; $f.$r = $r; return $f;
 11510  	};
 11511  	rtype.prototype.FieldByNameFunc = function(match) { return this.$val.FieldByNameFunc(match); };
 11512  	rtype.ptr.prototype.In = function(i) {
 11513  		var i, t, tt, x;
 11514  		t = this;
 11515  		if (!((t.Kind() === 19))) {
 11516  			$panic(new $String("reflect: In of non-func type"));
 11517  		}
 11518  		tt = (t.kindType);
 11519  		return toType((x = tt.in$(), ((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i])));
 11520  	};
 11521  	rtype.prototype.In = function(i) { return this.$val.In(i); };
 11522  	rtype.ptr.prototype.Key = function() {
 11523  		var t, tt;
 11524  		t = this;
 11525  		if (!((t.Kind() === 21))) {
 11526  			$panic(new $String("reflect: Key of non-map type"));
 11527  		}
 11528  		tt = (t.kindType);
 11529  		return toType(tt.key);
 11530  	};
 11531  	rtype.prototype.Key = function() { return this.$val.Key(); };
 11532  	rtype.ptr.prototype.Len = function() {
 11533  		var t, tt;
 11534  		t = this;
 11535  		if (!((t.Kind() === 17))) {
 11536  			$panic(new $String("reflect: Len of non-array type"));
 11537  		}
 11538  		tt = (t.kindType);
 11539  		return ((tt.len >> 0));
 11540  	};
 11541  	rtype.prototype.Len = function() { return this.$val.Len(); };
 11542  	rtype.ptr.prototype.NumField = function() {
 11543  		var t, tt;
 11544  		t = this;
 11545  		if (!((t.Kind() === 25))) {
 11546  			$panic(new $String("reflect: NumField of non-struct type"));
 11547  		}
 11548  		tt = (t.kindType);
 11549  		return tt.fields.$length;
 11550  	};
 11551  	rtype.prototype.NumField = function() { return this.$val.NumField(); };
 11552  	rtype.ptr.prototype.NumIn = function() {
 11553  		var t, tt;
 11554  		t = this;
 11555  		if (!((t.Kind() === 19))) {
 11556  			$panic(new $String("reflect: NumIn of non-func type"));
 11557  		}
 11558  		tt = (t.kindType);
 11559  		return ((tt.inCount >> 0));
 11560  	};
 11561  	rtype.prototype.NumIn = function() { return this.$val.NumIn(); };
 11562  	rtype.ptr.prototype.NumOut = function() {
 11563  		var t, tt;
 11564  		t = this;
 11565  		if (!((t.Kind() === 19))) {
 11566  			$panic(new $String("reflect: NumOut of non-func type"));
 11567  		}
 11568  		tt = (t.kindType);
 11569  		return tt.out().$length;
 11570  	};
 11571  	rtype.prototype.NumOut = function() { return this.$val.NumOut(); };
 11572  	rtype.ptr.prototype.Out = function(i) {
 11573  		var i, t, tt, x;
 11574  		t = this;
 11575  		if (!((t.Kind() === 19))) {
 11576  			$panic(new $String("reflect: Out of non-func type"));
 11577  		}
 11578  		tt = (t.kindType);
 11579  		return toType((x = tt.out(), ((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i])));
 11580  	};
 11581  	rtype.prototype.Out = function(i) { return this.$val.Out(i); };
 11582  	ChanDir.prototype.String = function() {
 11583  		var _1, d;
 11584  		d = this.$val;
 11585  		_1 = d;
 11586  		if (_1 === (2)) {
 11587  			return "chan<-";
 11588  		} else if (_1 === (1)) {
 11589  			return "<-chan";
 11590  		} else if (_1 === (3)) {
 11591  			return "chan";
 11592  		}
 11593  		return "ChanDir" + strconv.Itoa(((d >> 0)));
 11594  	};
 11595  	$ptrType(ChanDir).prototype.String = function() { return new ChanDir(this.$get()).String(); };
 11596  	interfaceType.ptr.prototype.Method = function(i) {
 11597  		var i, m, p, pname, t, x;
 11598  		m = new Method.ptr("", "", $ifaceNil, new Value.ptr(ptrType$1.nil, 0, 0), 0);
 11599  		t = this;
 11600  		if (i < 0 || i >= t.methods.$length) {
 11601  			return m;
 11602  		}
 11603  		p = (x = t.methods, ((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i]));
 11604  		pname = $clone(t.rtype.nameOff(p.name), name);
 11605  		m.Name = $clone(pname, name).name();
 11606  		if (!$clone(pname, name).isExported()) {
 11607  			m.PkgPath = $clone(pname, name).pkgPath();
 11608  			if (m.PkgPath === "") {
 11609  				m.PkgPath = $clone(t.pkgPath, name).name();
 11610  			}
 11611  		}
 11612  		m.Type = toType(t.rtype.typeOff(p.typ));
 11613  		m.Index = i;
 11614  		return m;
 11615  	};
 11616  	interfaceType.prototype.Method = function(i) { return this.$val.Method(i); };
 11617  	interfaceType.ptr.prototype.NumMethod = function() {
 11618  		var t;
 11619  		t = this;
 11620  		return t.methods.$length;
 11621  	};
 11622  	interfaceType.prototype.NumMethod = function() { return this.$val.NumMethod(); };
 11623  	interfaceType.ptr.prototype.MethodByName = function(name$1) {
 11624  		var _i, _ref, _tmp, _tmp$1, i, m, name$1, ok, p, t, x;
 11625  		m = new Method.ptr("", "", $ifaceNil, new Value.ptr(ptrType$1.nil, 0, 0), 0);
 11626  		ok = false;
 11627  		t = this;
 11628  		if (t === ptrType$7.nil) {
 11629  			return [m, ok];
 11630  		}
 11631  		p = ptrType$8.nil;
 11632  		_ref = t.methods;
 11633  		_i = 0;
 11634  		while (true) {
 11635  			if (!(_i < _ref.$length)) { break; }
 11636  			i = _i;
 11637  			p = (x = t.methods, ((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i]));
 11638  			if ($clone(t.rtype.nameOff(p.name), name).name() === name$1) {
 11639  				_tmp = $clone(t.Method(i), Method);
 11640  				_tmp$1 = true;
 11641  				Method.copy(m, _tmp);
 11642  				ok = _tmp$1;
 11643  				return [m, ok];
 11644  			}
 11645  			_i++;
 11646  		}
 11647  		return [m, ok];
 11648  	};
 11649  	interfaceType.prototype.MethodByName = function(name$1) { return this.$val.MethodByName(name$1); };
 11650  	StructTag.prototype.Get = function(key) {
 11651  		var _tuple, key, tag, v;
 11652  		tag = this.$val;
 11653  		_tuple = new StructTag(tag).Lookup(key);
 11654  		v = _tuple[0];
 11655  		return v;
 11656  	};
 11657  	$ptrType(StructTag).prototype.Get = function(key) { return new StructTag(this.$get()).Get(key); };
 11658  	StructTag.prototype.Lookup = function(key) {
 11659  		var _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, err, i, key, name$1, ok, qvalue, tag, value, value$1;
 11660  		value = "";
 11661  		ok = false;
 11662  		tag = this.$val;
 11663  		while (true) {
 11664  			if (!(!(tag === ""))) { break; }
 11665  			i = 0;
 11666  			while (true) {
 11667  				if (!(i < tag.length && (tag.charCodeAt(i) === 32))) { break; }
 11668  				i = i + (1) >> 0;
 11669  			}
 11670  			tag = $substring(tag, i);
 11671  			if (tag === "") {
 11672  				break;
 11673  			}
 11674  			i = 0;
 11675  			while (true) {
 11676  				if (!(i < tag.length && tag.charCodeAt(i) > 32 && !((tag.charCodeAt(i) === 58)) && !((tag.charCodeAt(i) === 34)) && !((tag.charCodeAt(i) === 127)))) { break; }
 11677  				i = i + (1) >> 0;
 11678  			}
 11679  			if ((i === 0) || (i + 1 >> 0) >= tag.length || !((tag.charCodeAt(i) === 58)) || !((tag.charCodeAt((i + 1 >> 0)) === 34))) {
 11680  				break;
 11681  			}
 11682  			name$1 = ($substring(tag, 0, i));
 11683  			tag = $substring(tag, (i + 1 >> 0));
 11684  			i = 1;
 11685  			while (true) {
 11686  				if (!(i < tag.length && !((tag.charCodeAt(i) === 34)))) { break; }
 11687  				if (tag.charCodeAt(i) === 92) {
 11688  					i = i + (1) >> 0;
 11689  				}
 11690  				i = i + (1) >> 0;
 11691  			}
 11692  			if (i >= tag.length) {
 11693  				break;
 11694  			}
 11695  			qvalue = ($substring(tag, 0, (i + 1 >> 0)));
 11696  			tag = $substring(tag, (i + 1 >> 0));
 11697  			if (key === name$1) {
 11698  				_tuple = strconv.Unquote(qvalue);
 11699  				value$1 = _tuple[0];
 11700  				err = _tuple[1];
 11701  				if (!($interfaceIsEqual(err, $ifaceNil))) {
 11702  					break;
 11703  				}
 11704  				_tmp = value$1;
 11705  				_tmp$1 = true;
 11706  				value = _tmp;
 11707  				ok = _tmp$1;
 11708  				return [value, ok];
 11709  			}
 11710  		}
 11711  		_tmp$2 = "";
 11712  		_tmp$3 = false;
 11713  		value = _tmp$2;
 11714  		ok = _tmp$3;
 11715  		return [value, ok];
 11716  	};
 11717  	$ptrType(StructTag).prototype.Lookup = function(key) { return new StructTag(this.$get()).Lookup(key); };
 11718  	structType.ptr.prototype.Field = function(i) {
 11719  		var f, i, p, t, tag, x;
 11720  		f = new StructField.ptr("", "", $ifaceNil, "", 0, sliceType$13.nil, false);
 11721  		t = this;
 11722  		if (i < 0 || i >= t.fields.$length) {
 11723  			$panic(new $String("reflect: Field index out of bounds"));
 11724  		}
 11725  		p = (x = t.fields, ((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i]));
 11726  		f.Type = toType(p.typ);
 11727  		f.Name = $clone(p.name, name).name();
 11728  		f.Anonymous = p.anon();
 11729  		if (!$clone(p.name, name).isExported()) {
 11730  			f.PkgPath = $clone(t.pkgPath, name).name();
 11731  		}
 11732  		tag = $clone(p.name, name).tag();
 11733  		if (!(tag === "")) {
 11734  			f.Tag = (tag);
 11735  		}
 11736  		f.Offset = p.offset();
 11737  		f.Index = new sliceType$13([i]);
 11738  		return f;
 11739  	};
 11740  	structType.prototype.Field = function(i) { return this.$val.Field(i); };
 11741  	structType.ptr.prototype.FieldByIndex = function(index) {
 11742  		var _i, _r, _r$1, _r$2, _r$3, _r$4, _ref, _v, f, ft, i, index, t, x, $s, $r;
 11743  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _i = $f._i; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _ref = $f._ref; _v = $f._v; f = $f.f; ft = $f.ft; i = $f.i; index = $f.index; t = $f.t; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 11744  		f = new StructField.ptr("", "", $ifaceNil, "", 0, sliceType$13.nil, false);
 11745  		t = this;
 11746  		f.Type = toType(t.rtype);
 11747  		_ref = index;
 11748  		_i = 0;
 11749  		/* while (true) { */ case 1:
 11750  			/* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; }
 11751  			i = _i;
 11752  			x = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
 11753  			/* */ if (i > 0) { $s = 3; continue; }
 11754  			/* */ $s = 4; continue;
 11755  			/* if (i > 0) { */ case 3:
 11756  				ft = f.Type;
 11757  				_r = ft.Kind(); /* */ $s = 8; case 8: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 11758  				if (!(_r === 22)) { _v = false; $s = 7; continue s; }
 11759  				_r$1 = ft.Elem(); /* */ $s = 9; case 9: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 11760  				_r$2 = _r$1.Kind(); /* */ $s = 10; case 10: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 11761  				_v = _r$2 === 25; case 7:
 11762  				/* */ if (_v) { $s = 5; continue; }
 11763  				/* */ $s = 6; continue;
 11764  				/* if (_v) { */ case 5:
 11765  					_r$3 = ft.Elem(); /* */ $s = 11; case 11: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 11766  					ft = _r$3;
 11767  				/* } */ case 6:
 11768  				f.Type = ft;
 11769  			/* } */ case 4:
 11770  			_r$4 = f.Type.Field(x); /* */ $s = 12; case 12: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 11771  			StructField.copy(f, _r$4);
 11772  			_i++;
 11773  		/* } */ $s = 1; continue; case 2:
 11774  		$s = -1; return f;
 11775  		/* */ } return; } if ($f === undefined) { $f = { $blk: structType.ptr.prototype.FieldByIndex }; } $f._i = _i; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._ref = _ref; $f._v = _v; $f.f = f; $f.ft = ft; $f.i = i; $f.index = index; $f.t = t; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
 11776  	};
 11777  	structType.prototype.FieldByIndex = function(index) { return this.$val.FieldByIndex(index); };
 11778  	structType.ptr.prototype.FieldByNameFunc = function(match) {
 11779  		var _entry, _entry$1, _entry$2, _entry$3, _i, _i$1, _key, _key$1, _key$2, _key$3, _r, _r$1, _ref, _ref$1, _tmp, _tmp$1, _tmp$2, _tmp$3, count, current, f, fname, i, index, match, next, nextCount, ntyp, ok, result, scan, styp, t, t$1, visited, x, $s, $r;
 11780  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _entry = $f._entry; _entry$1 = $f._entry$1; _entry$2 = $f._entry$2; _entry$3 = $f._entry$3; _i = $f._i; _i$1 = $f._i$1; _key = $f._key; _key$1 = $f._key$1; _key$2 = $f._key$2; _key$3 = $f._key$3; _r = $f._r; _r$1 = $f._r$1; _ref = $f._ref; _ref$1 = $f._ref$1; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; count = $f.count; current = $f.current; f = $f.f; fname = $f.fname; i = $f.i; index = $f.index; match = $f.match; next = $f.next; nextCount = $f.nextCount; ntyp = $f.ntyp; ok = $f.ok; result = $f.result; scan = $f.scan; styp = $f.styp; t = $f.t; t$1 = $f.t$1; visited = $f.visited; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 11781  		result = new StructField.ptr("", "", $ifaceNil, "", 0, sliceType$13.nil, false);
 11782  		ok = false;
 11783  		t = this;
 11784  		current = new sliceType$14([]);
 11785  		next = new sliceType$14([new fieldScan.ptr(t, sliceType$13.nil)]);
 11786  		nextCount = false;
 11787  		visited = $makeMap(ptrType$9.keyFor, []);
 11788  		/* while (true) { */ case 1:
 11789  			/* if (!(next.$length > 0)) { break; } */ if(!(next.$length > 0)) { $s = 2; continue; }
 11790  			_tmp = next;
 11791  			_tmp$1 = $subslice(current, 0, 0);
 11792  			current = _tmp;
 11793  			next = _tmp$1;
 11794  			count = nextCount;
 11795  			nextCount = false;
 11796  			_ref = current;
 11797  			_i = 0;
 11798  			/* while (true) { */ case 3:
 11799  				/* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 4; continue; }
 11800  				scan = $clone(((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]), fieldScan);
 11801  				t$1 = scan.typ;
 11802  				/* */ if ((_entry = visited[ptrType$9.keyFor(t$1)], _entry !== undefined ? _entry.v : false)) { $s = 5; continue; }
 11803  				/* */ $s = 6; continue;
 11804  				/* if ((_entry = visited[ptrType$9.keyFor(t$1)], _entry !== undefined ? _entry.v : false)) { */ case 5:
 11805  					_i++;
 11806  					/* continue; */ $s = 3; continue;
 11807  				/* } */ case 6:
 11808  				_key = t$1; (visited || $throwRuntimeError("assignment to entry in nil map"))[ptrType$9.keyFor(_key)] = { k: _key, v: true };
 11809  				_ref$1 = t$1.fields;
 11810  				_i$1 = 0;
 11811  				/* while (true) { */ case 7:
 11812  					/* if (!(_i$1 < _ref$1.$length)) { break; } */ if(!(_i$1 < _ref$1.$length)) { $s = 8; continue; }
 11813  					i = _i$1;
 11814  					f = (x = t$1.fields, ((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i]));
 11815  					fname = $clone(f.name, name).name();
 11816  					ntyp = ptrType$1.nil;
 11817  					/* */ if (f.anon()) { $s = 9; continue; }
 11818  					/* */ $s = 10; continue;
 11819  					/* if (f.anon()) { */ case 9:
 11820  						ntyp = f.typ;
 11821  						/* */ if (ntyp.Kind() === 22) { $s = 11; continue; }
 11822  						/* */ $s = 12; continue;
 11823  						/* if (ntyp.Kind() === 22) { */ case 11:
 11824  							_r = ntyp.Elem().common(); /* */ $s = 13; case 13: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 11825  							ntyp = _r;
 11826  						/* } */ case 12:
 11827  					/* } */ case 10:
 11828  					_r$1 = match(fname); /* */ $s = 16; case 16: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 11829  					/* */ if (_r$1) { $s = 14; continue; }
 11830  					/* */ $s = 15; continue;
 11831  					/* if (_r$1) { */ case 14:
 11832  						if ((_entry$1 = count[ptrType$9.keyFor(t$1)], _entry$1 !== undefined ? _entry$1.v : 0) > 1 || ok) {
 11833  							_tmp$2 = new StructField.ptr("", "", $ifaceNil, "", 0, sliceType$13.nil, false);
 11834  							_tmp$3 = false;
 11835  							StructField.copy(result, _tmp$2);
 11836  							ok = _tmp$3;
 11837  							$s = -1; return [result, ok];
 11838  						}
 11839  						StructField.copy(result, t$1.Field(i));
 11840  						result.Index = sliceType$13.nil;
 11841  						result.Index = $appendSlice(result.Index, scan.index);
 11842  						result.Index = $append(result.Index, i);
 11843  						ok = true;
 11844  						_i$1++;
 11845  						/* continue; */ $s = 7; continue;
 11846  					/* } */ case 15:
 11847  					if (ok || ntyp === ptrType$1.nil || !((ntyp.Kind() === 25))) {
 11848  						_i$1++;
 11849  						/* continue; */ $s = 7; continue;
 11850  					}
 11851  					styp = (ntyp.kindType);
 11852  					if ((_entry$2 = nextCount[ptrType$9.keyFor(styp)], _entry$2 !== undefined ? _entry$2.v : 0) > 0) {
 11853  						_key$1 = styp; (nextCount || $throwRuntimeError("assignment to entry in nil map"))[ptrType$9.keyFor(_key$1)] = { k: _key$1, v: 2 };
 11854  						_i$1++;
 11855  						/* continue; */ $s = 7; continue;
 11856  					}
 11857  					if (nextCount === false) {
 11858  						nextCount = $makeMap(ptrType$9.keyFor, []);
 11859  					}
 11860  					_key$2 = styp; (nextCount || $throwRuntimeError("assignment to entry in nil map"))[ptrType$9.keyFor(_key$2)] = { k: _key$2, v: 1 };
 11861  					if ((_entry$3 = count[ptrType$9.keyFor(t$1)], _entry$3 !== undefined ? _entry$3.v : 0) > 1) {
 11862  						_key$3 = styp; (nextCount || $throwRuntimeError("assignment to entry in nil map"))[ptrType$9.keyFor(_key$3)] = { k: _key$3, v: 2 };
 11863  					}
 11864  					index = sliceType$13.nil;
 11865  					index = $appendSlice(index, scan.index);
 11866  					index = $append(index, i);
 11867  					next = $append(next, new fieldScan.ptr(styp, index));
 11868  					_i$1++;
 11869  				/* } */ $s = 7; continue; case 8:
 11870  				_i++;
 11871  			/* } */ $s = 3; continue; case 4:
 11872  			if (ok) {
 11873  				/* break; */ $s = 2; continue;
 11874  			}
 11875  		/* } */ $s = 1; continue; case 2:
 11876  		$s = -1; return [result, ok];
 11877  		/* */ } return; } if ($f === undefined) { $f = { $blk: structType.ptr.prototype.FieldByNameFunc }; } $f._entry = _entry; $f._entry$1 = _entry$1; $f._entry$2 = _entry$2; $f._entry$3 = _entry$3; $f._i = _i; $f._i$1 = _i$1; $f._key = _key; $f._key$1 = _key$1; $f._key$2 = _key$2; $f._key$3 = _key$3; $f._r = _r; $f._r$1 = _r$1; $f._ref = _ref; $f._ref$1 = _ref$1; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f.count = count; $f.current = current; $f.f = f; $f.fname = fname; $f.i = i; $f.index = index; $f.match = match; $f.next = next; $f.nextCount = nextCount; $f.ntyp = ntyp; $f.ok = ok; $f.result = result; $f.scan = scan; $f.styp = styp; $f.t = t; $f.t$1 = t$1; $f.visited = visited; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
 11878  	};
 11879  	structType.prototype.FieldByNameFunc = function(match) { return this.$val.FieldByNameFunc(match); };
 11880  	structType.ptr.prototype.FieldByName = function(name$1) {
 11881  		var _i, _r, _ref, _tmp, _tmp$1, _tuple, f, hasAnon, i, name$1, present, t, tf, x, $s, $r;
 11882  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _i = $f._i; _r = $f._r; _ref = $f._ref; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tuple = $f._tuple; f = $f.f; hasAnon = $f.hasAnon; i = $f.i; name$1 = $f.name$1; present = $f.present; t = $f.t; tf = $f.tf; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 11883  		name$1 = [name$1];
 11884  		f = new StructField.ptr("", "", $ifaceNil, "", 0, sliceType$13.nil, false);
 11885  		present = false;
 11886  		t = this;
 11887  		hasAnon = false;
 11888  		if (!(name$1[0] === "")) {
 11889  			_ref = t.fields;
 11890  			_i = 0;
 11891  			while (true) {
 11892  				if (!(_i < _ref.$length)) { break; }
 11893  				i = _i;
 11894  				tf = (x = t.fields, ((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i]));
 11895  				if ($clone(tf.name, name).name() === name$1[0]) {
 11896  					_tmp = $clone(t.Field(i), StructField);
 11897  					_tmp$1 = true;
 11898  					StructField.copy(f, _tmp);
 11899  					present = _tmp$1;
 11900  					$s = -1; return [f, present];
 11901  				}
 11902  				if (tf.anon()) {
 11903  					hasAnon = true;
 11904  				}
 11905  				_i++;
 11906  			}
 11907  		}
 11908  		if (!hasAnon) {
 11909  			$s = -1; return [f, present];
 11910  		}
 11911  		_r = t.FieldByNameFunc((function(name$1) { return function(s) {
 11912  			var s;
 11913  			return s === name$1[0];
 11914  		}; })(name$1)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 11915  		_tuple = _r;
 11916  		StructField.copy(f, _tuple[0]);
 11917  		present = _tuple[1];
 11918  		$s = -1; return [f, present];
 11919  		/* */ } return; } if ($f === undefined) { $f = { $blk: structType.ptr.prototype.FieldByName }; } $f._i = _i; $f._r = _r; $f._ref = _ref; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tuple = _tuple; $f.f = f; $f.hasAnon = hasAnon; $f.i = i; $f.name$1 = name$1; $f.present = present; $f.t = t; $f.tf = tf; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
 11920  	};
 11921  	structType.prototype.FieldByName = function(name$1) { return this.$val.FieldByName(name$1); };
 11922  	PtrTo = function(t) {
 11923  		var t;
 11924  		return $assertType(t, ptrType$1).ptrTo();
 11925  	};
 11926  	$pkg.PtrTo = PtrTo;
 11927  	rtype.ptr.prototype.Implements = function(u) {
 11928  		var _r, t, u, $s, $r;
 11929  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; t = $f.t; u = $f.u; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 11930  		t = this;
 11931  		if ($interfaceIsEqual(u, $ifaceNil)) {
 11932  			$panic(new $String("reflect: nil type passed to Type.Implements"));
 11933  		}
 11934  		_r = u.Kind(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 11935  		/* */ if (!((_r === 20))) { $s = 1; continue; }
 11936  		/* */ $s = 2; continue;
 11937  		/* if (!((_r === 20))) { */ case 1:
 11938  			$panic(new $String("reflect: non-interface type passed to Type.Implements"));
 11939  		/* } */ case 2:
 11940  		$s = -1; return implements$1($assertType(u, ptrType$1), t);
 11941  		/* */ } return; } if ($f === undefined) { $f = { $blk: rtype.ptr.prototype.Implements }; } $f._r = _r; $f.t = t; $f.u = u; $f.$s = $s; $f.$r = $r; return $f;
 11942  	};
 11943  	rtype.prototype.Implements = function(u) { return this.$val.Implements(u); };
 11944  	rtype.ptr.prototype.AssignableTo = function(u) {
 11945  		var _r, t, u, uu, $s, $r;
 11946  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; t = $f.t; u = $f.u; uu = $f.uu; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 11947  		t = this;
 11948  		if ($interfaceIsEqual(u, $ifaceNil)) {
 11949  			$panic(new $String("reflect: nil type passed to Type.AssignableTo"));
 11950  		}
 11951  		uu = $assertType(u, ptrType$1);
 11952  		_r = directlyAssignable(uu, t); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 11953  		$s = -1; return _r || implements$1(uu, t);
 11954  		/* */ } return; } if ($f === undefined) { $f = { $blk: rtype.ptr.prototype.AssignableTo }; } $f._r = _r; $f.t = t; $f.u = u; $f.uu = uu; $f.$s = $s; $f.$r = $r; return $f;
 11955  	};
 11956  	rtype.prototype.AssignableTo = function(u) { return this.$val.AssignableTo(u); };
 11957  	rtype.ptr.prototype.ConvertibleTo = function(u) {
 11958  		var _r, t, u, uu, $s, $r;
 11959  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; t = $f.t; u = $f.u; uu = $f.uu; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 11960  		t = this;
 11961  		if ($interfaceIsEqual(u, $ifaceNil)) {
 11962  			$panic(new $String("reflect: nil type passed to Type.ConvertibleTo"));
 11963  		}
 11964  		uu = $assertType(u, ptrType$1);
 11965  		_r = convertOp(uu, t); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 11966  		$s = -1; return !(_r === $throwNilPointerError);
 11967  		/* */ } return; } if ($f === undefined) { $f = { $blk: rtype.ptr.prototype.ConvertibleTo }; } $f._r = _r; $f.t = t; $f.u = u; $f.uu = uu; $f.$s = $s; $f.$r = $r; return $f;
 11968  	};
 11969  	rtype.prototype.ConvertibleTo = function(u) { return this.$val.ConvertibleTo(u); };
 11970  	implements$1 = function(T, V) {
 11971  		var T, V, i, i$1, j, j$1, t, tm, tm$1, tmName, tmName$1, tmPkgPath, tmPkgPath$1, v, v$1, vm, vm$1, vmName, vmName$1, vmPkgPath, vmPkgPath$1, vmethods, x, x$1, x$2;
 11972  		if (!((T.Kind() === 20))) {
 11973  			return false;
 11974  		}
 11975  		t = (T.kindType);
 11976  		if (t.methods.$length === 0) {
 11977  			return true;
 11978  		}
 11979  		if (V.Kind() === 20) {
 11980  			v = (V.kindType);
 11981  			i = 0;
 11982  			j = 0;
 11983  			while (true) {
 11984  				if (!(j < v.methods.$length)) { break; }
 11985  				tm = (x = t.methods, ((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i]));
 11986  				tmName = $clone(t.rtype.nameOff(tm.name), name);
 11987  				vm = (x$1 = v.methods, ((j < 0 || j >= x$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + j]));
 11988  				vmName = $clone(V.nameOff(vm.name), name);
 11989  				if ($clone(vmName, name).name() === $clone(tmName, name).name() && V.typeOff(vm.typ) === t.rtype.typeOff(tm.typ)) {
 11990  					if (!$clone(tmName, name).isExported()) {
 11991  						tmPkgPath = $clone(tmName, name).pkgPath();
 11992  						if (tmPkgPath === "") {
 11993  							tmPkgPath = $clone(t.pkgPath, name).name();
 11994  						}
 11995  						vmPkgPath = $clone(vmName, name).pkgPath();
 11996  						if (vmPkgPath === "") {
 11997  							vmPkgPath = $clone(v.pkgPath, name).name();
 11998  						}
 11999  						if (!(tmPkgPath === vmPkgPath)) {
 12000  							j = j + (1) >> 0;
 12001  							continue;
 12002  						}
 12003  					}
 12004  					i = i + (1) >> 0;
 12005  					if (i >= t.methods.$length) {
 12006  						return true;
 12007  					}
 12008  				}
 12009  				j = j + (1) >> 0;
 12010  			}
 12011  			return false;
 12012  		}
 12013  		v$1 = V.uncommon();
 12014  		if (v$1 === ptrType$5.nil) {
 12015  			return false;
 12016  		}
 12017  		i$1 = 0;
 12018  		vmethods = v$1.methods();
 12019  		j$1 = 0;
 12020  		while (true) {
 12021  			if (!(j$1 < ((v$1.mcount >> 0)))) { break; }
 12022  			tm$1 = (x$2 = t.methods, ((i$1 < 0 || i$1 >= x$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + i$1]));
 12023  			tmName$1 = $clone(t.rtype.nameOff(tm$1.name), name);
 12024  			vm$1 = $clone(((j$1 < 0 || j$1 >= vmethods.$length) ? ($throwRuntimeError("index out of range"), undefined) : vmethods.$array[vmethods.$offset + j$1]), method);
 12025  			vmName$1 = $clone(V.nameOff(vm$1.name), name);
 12026  			if ($clone(vmName$1, name).name() === $clone(tmName$1, name).name() && V.typeOff(vm$1.mtyp) === t.rtype.typeOff(tm$1.typ)) {
 12027  				if (!$clone(tmName$1, name).isExported()) {
 12028  					tmPkgPath$1 = $clone(tmName$1, name).pkgPath();
 12029  					if (tmPkgPath$1 === "") {
 12030  						tmPkgPath$1 = $clone(t.pkgPath, name).name();
 12031  					}
 12032  					vmPkgPath$1 = $clone(vmName$1, name).pkgPath();
 12033  					if (vmPkgPath$1 === "") {
 12034  						vmPkgPath$1 = $clone(V.nameOff(v$1.pkgPath), name).name();
 12035  					}
 12036  					if (!(tmPkgPath$1 === vmPkgPath$1)) {
 12037  						j$1 = j$1 + (1) >> 0;
 12038  						continue;
 12039  					}
 12040  				}
 12041  				i$1 = i$1 + (1) >> 0;
 12042  				if (i$1 >= t.methods.$length) {
 12043  					return true;
 12044  				}
 12045  			}
 12046  			j$1 = j$1 + (1) >> 0;
 12047  		}
 12048  		return false;
 12049  	};
 12050  	directlyAssignable = function(T, V) {
 12051  		var T, V, _r, $s, $r;
 12052  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; T = $f.T; V = $f.V; _r = $f._r; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 12053  		if (T === V) {
 12054  			$s = -1; return true;
 12055  		}
 12056  		if (!(T.Name() === "") && !(V.Name() === "") || !((T.Kind() === V.Kind()))) {
 12057  			$s = -1; return false;
 12058  		}
 12059  		_r = haveIdenticalUnderlyingType(T, V, true); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 12060  		$s = -1; return _r;
 12061  		/* */ } return; } if ($f === undefined) { $f = { $blk: directlyAssignable }; } $f.T = T; $f.V = V; $f._r = _r; $f.$s = $s; $f.$r = $r; return $f;
 12062  	};
 12063  	haveIdenticalType = function(T, V, cmpTags) {
 12064  		var T, V, _arg, _arg$1, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _v, cmpTags, $s, $r;
 12065  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; T = $f.T; V = $f.V; _arg = $f._arg; _arg$1 = $f._arg$1; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _v = $f._v; cmpTags = $f.cmpTags; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 12066  		if (cmpTags) {
 12067  			$s = -1; return $interfaceIsEqual(T, V);
 12068  		}
 12069  		_r = T.Name(); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 12070  		_r$1 = V.Name(); /* */ $s = 5; case 5: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 12071  		if (!(_r === _r$1)) { _v = true; $s = 3; continue s; }
 12072  		_r$2 = T.Kind(); /* */ $s = 6; case 6: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 12073  		_r$3 = V.Kind(); /* */ $s = 7; case 7: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 12074  		_v = !((_r$2 === _r$3)); case 3:
 12075  		/* */ if (_v) { $s = 1; continue; }
 12076  		/* */ $s = 2; continue;
 12077  		/* if (_v) { */ case 1:
 12078  			$s = -1; return false;
 12079  		/* } */ case 2:
 12080  		_r$4 = T.common(); /* */ $s = 8; case 8: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 12081  		_arg = _r$4;
 12082  		_r$5 = V.common(); /* */ $s = 9; case 9: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
 12083  		_arg$1 = _r$5;
 12084  		_r$6 = haveIdenticalUnderlyingType(_arg, _arg$1, false); /* */ $s = 10; case 10: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
 12085  		$s = -1; return _r$6;
 12086  		/* */ } return; } if ($f === undefined) { $f = { $blk: haveIdenticalType }; } $f.T = T; $f.V = V; $f._arg = _arg; $f._arg$1 = _arg$1; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._v = _v; $f.cmpTags = cmpTags; $f.$s = $s; $f.$r = $r; return $f;
 12087  	};
 12088  	haveIdenticalUnderlyingType = function(T, V, cmpTags) {
 12089  		var T, V, _1, _i, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _ref, _v, _v$1, _v$2, _v$3, cmpTags, i, i$1, i$2, kind, t, t$1, t$2, tf, v, v$1, v$2, vf, x, x$1, $s, $r;
 12090  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; T = $f.T; V = $f.V; _1 = $f._1; _i = $f._i; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _r$8 = $f._r$8; _ref = $f._ref; _v = $f._v; _v$1 = $f._v$1; _v$2 = $f._v$2; _v$3 = $f._v$3; cmpTags = $f.cmpTags; i = $f.i; i$1 = $f.i$1; i$2 = $f.i$2; kind = $f.kind; t = $f.t; t$1 = $f.t$1; t$2 = $f.t$2; tf = $f.tf; v = $f.v; v$1 = $f.v$1; v$2 = $f.v$2; vf = $f.vf; x = $f.x; x$1 = $f.x$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 12091  		if (T === V) {
 12092  			$s = -1; return true;
 12093  		}
 12094  		kind = T.Kind();
 12095  		if (!((kind === V.Kind()))) {
 12096  			$s = -1; return false;
 12097  		}
 12098  		if (1 <= kind && kind <= 16 || (kind === 24) || (kind === 26)) {
 12099  			$s = -1; return true;
 12100  		}
 12101  			_1 = kind;
 12102  			/* */ if (_1 === (17)) { $s = 2; continue; }
 12103  			/* */ if (_1 === (18)) { $s = 3; continue; }
 12104  			/* */ if (_1 === (19)) { $s = 4; continue; }
 12105  			/* */ if (_1 === (20)) { $s = 5; continue; }
 12106  			/* */ if (_1 === (21)) { $s = 6; continue; }
 12107  			/* */ if ((_1 === (22)) || (_1 === (23))) { $s = 7; continue; }
 12108  			/* */ if (_1 === (25)) { $s = 8; continue; }
 12109  			/* */ $s = 9; continue;
 12110  			/* if (_1 === (17)) { */ case 2:
 12111  				if (!(T.Len() === V.Len())) { _v = false; $s = 10; continue s; }
 12112  				_r = haveIdenticalType(T.Elem(), V.Elem(), cmpTags); /* */ $s = 11; case 11: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 12113  				_v = _r; case 10:
 12114  				$s = -1; return _v;
 12115  			/* } else if (_1 === (18)) { */ case 3:
 12116  				if (!(V.ChanDir() === 3)) { _v$1 = false; $s = 14; continue s; }
 12117  				_r$1 = haveIdenticalType(T.Elem(), V.Elem(), cmpTags); /* */ $s = 15; case 15: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 12118  				_v$1 = _r$1; case 14:
 12119  				/* */ if (_v$1) { $s = 12; continue; }
 12120  				/* */ $s = 13; continue;
 12121  				/* if (_v$1) { */ case 12:
 12122  					$s = -1; return true;
 12123  				/* } */ case 13:
 12124  				if (!(V.ChanDir() === T.ChanDir())) { _v$2 = false; $s = 16; continue s; }
 12125  				_r$2 = haveIdenticalType(T.Elem(), V.Elem(), cmpTags); /* */ $s = 17; case 17: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 12126  				_v$2 = _r$2; case 16:
 12127  				$s = -1; return _v$2;
 12128  			/* } else if (_1 === (19)) { */ case 4:
 12129  				t = (T.kindType);
 12130  				v = (V.kindType);
 12131  				if (!((t.outCount === v.outCount)) || !((t.inCount === v.inCount))) {
 12132  					$s = -1; return false;
 12133  				}
 12134  				i = 0;
 12135  				/* while (true) { */ case 18:
 12136  					/* if (!(i < t.rtype.NumIn())) { break; } */ if(!(i < t.rtype.NumIn())) { $s = 19; continue; }
 12137  					_r$3 = haveIdenticalType(t.rtype.In(i), v.rtype.In(i), cmpTags); /* */ $s = 22; case 22: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 12138  					/* */ if (!_r$3) { $s = 20; continue; }
 12139  					/* */ $s = 21; continue;
 12140  					/* if (!_r$3) { */ case 20:
 12141  						$s = -1; return false;
 12142  					/* } */ case 21:
 12143  					i = i + (1) >> 0;
 12144  				/* } */ $s = 18; continue; case 19:
 12145  				i$1 = 0;
 12146  				/* while (true) { */ case 23:
 12147  					/* if (!(i$1 < t.rtype.NumOut())) { break; } */ if(!(i$1 < t.rtype.NumOut())) { $s = 24; continue; }
 12148  					_r$4 = haveIdenticalType(t.rtype.Out(i$1), v.rtype.Out(i$1), cmpTags); /* */ $s = 27; case 27: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 12149  					/* */ if (!_r$4) { $s = 25; continue; }
 12150  					/* */ $s = 26; continue;
 12151  					/* if (!_r$4) { */ case 25:
 12152  						$s = -1; return false;
 12153  					/* } */ case 26:
 12154  					i$1 = i$1 + (1) >> 0;
 12155  				/* } */ $s = 23; continue; case 24:
 12156  				$s = -1; return true;
 12157  			/* } else if (_1 === (20)) { */ case 5:
 12158  				t$1 = (T.kindType);
 12159  				v$1 = (V.kindType);
 12160  				if ((t$1.methods.$length === 0) && (v$1.methods.$length === 0)) {
 12161  					$s = -1; return true;
 12162  				}
 12163  				$s = -1; return false;
 12164  			/* } else if (_1 === (21)) { */ case 6:
 12165  				_r$5 = haveIdenticalType(T.Key(), V.Key(), cmpTags); /* */ $s = 29; case 29: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
 12166  				if (!(_r$5)) { _v$3 = false; $s = 28; continue s; }
 12167  				_r$6 = haveIdenticalType(T.Elem(), V.Elem(), cmpTags); /* */ $s = 30; case 30: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
 12168  				_v$3 = _r$6; case 28:
 12169  				$s = -1; return _v$3;
 12170  			/* } else if ((_1 === (22)) || (_1 === (23))) { */ case 7:
 12171  				_r$7 = haveIdenticalType(T.Elem(), V.Elem(), cmpTags); /* */ $s = 31; case 31: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
 12172  				$s = -1; return _r$7;
 12173  			/* } else if (_1 === (25)) { */ case 8:
 12174  				t$2 = (T.kindType);
 12175  				v$2 = (V.kindType);
 12176  				if (!((t$2.fields.$length === v$2.fields.$length))) {
 12177  					$s = -1; return false;
 12178  				}
 12179  				if (!($clone(t$2.pkgPath, name).name() === $clone(v$2.pkgPath, name).name())) {
 12180  					$s = -1; return false;
 12181  				}
 12182  				_ref = t$2.fields;
 12183  				_i = 0;
 12184  				/* while (true) { */ case 32:
 12185  					/* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 33; continue; }
 12186  					i$2 = _i;
 12187  					tf = (x = t$2.fields, ((i$2 < 0 || i$2 >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i$2]));
 12188  					vf = (x$1 = v$2.fields, ((i$2 < 0 || i$2 >= x$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + i$2]));
 12189  					if (!($clone(tf.name, name).name() === $clone(vf.name, name).name())) {
 12190  						$s = -1; return false;
 12191  					}
 12192  					_r$8 = haveIdenticalType(tf.typ, vf.typ, cmpTags); /* */ $s = 36; case 36: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
 12193  					/* */ if (!_r$8) { $s = 34; continue; }
 12194  					/* */ $s = 35; continue;
 12195  					/* if (!_r$8) { */ case 34:
 12196  						$s = -1; return false;
 12197  					/* } */ case 35:
 12198  					if (cmpTags && !($clone(tf.name, name).tag() === $clone(vf.name, name).tag())) {
 12199  						$s = -1; return false;
 12200  					}
 12201  					if (!((tf.offsetAnon === vf.offsetAnon))) {
 12202  						$s = -1; return false;
 12203  					}
 12204  					_i++;
 12205  				/* } */ $s = 32; continue; case 33:
 12206  				$s = -1; return true;
 12207  			/* } */ case 9:
 12208  		case 1:
 12209  		$s = -1; return false;
 12210  		/* */ } return; } if ($f === undefined) { $f = { $blk: haveIdenticalUnderlyingType }; } $f.T = T; $f.V = V; $f._1 = _1; $f._i = _i; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._r$8 = _r$8; $f._ref = _ref; $f._v = _v; $f._v$1 = _v$1; $f._v$2 = _v$2; $f._v$3 = _v$3; $f.cmpTags = cmpTags; $f.i = i; $f.i$1 = i$1; $f.i$2 = i$2; $f.kind = kind; $f.t = t; $f.t$1 = t$1; $f.t$2 = t$2; $f.tf = tf; $f.v = v; $f.v$1 = v$1; $f.v$2 = v$2; $f.vf = vf; $f.x = x; $f.x$1 = x$1; $f.$s = $s; $f.$r = $r; return $f;
 12211  	};
 12212  	toType = function(t) {
 12213  		var t;
 12214  		if (t === ptrType$1.nil) {
 12215  			return $ifaceNil;
 12216  		}
 12217  		return t;
 12218  	};
 12219  	ifaceIndir = function(t) {
 12220  		var t;
 12221  		return ((t.kind & 32) >>> 0) === 0;
 12222  	};
 12223  	flag.prototype.kind = function() {
 12224  		var f;
 12225  		f = this.$val;
 12226  		return ((((f & 31) >>> 0) >>> 0));
 12227  	};
 12228  	$ptrType(flag).prototype.kind = function() { return new flag(this.$get()).kind(); };
 12229  	flag.prototype.ro = function() {
 12230  		var f;
 12231  		f = this.$val;
 12232  		if (!((((f & 96) >>> 0) === 0))) {
 12233  			return 32;
 12234  		}
 12235  		return 0;
 12236  	};
 12237  	$ptrType(flag).prototype.ro = function() { return new flag(this.$get()).ro(); };
 12238  	Value.ptr.prototype.pointer = function() {
 12239  		var v;
 12240  		v = this;
 12241  		if (!((v.typ.size === 4)) || !v.typ.pointers()) {
 12242  			$panic(new $String("can't call pointer on a non-pointer Value"));
 12243  		}
 12244  		if (!((((v.flag & 128) >>> 0) === 0))) {
 12245  			return (v.ptr).$get();
 12246  		}
 12247  		return v.ptr;
 12248  	};
 12249  	Value.prototype.pointer = function() { return this.$val.pointer(); };
 12250  	ValueError.ptr.prototype.Error = function() {
 12251  		var e;
 12252  		e = this;
 12253  		if (e.Kind === 0) {
 12254  			return "reflect: call of " + e.Method + " on zero Value";
 12255  		}
 12256  		return "reflect: call of " + e.Method + " on " + new Kind(e.Kind).String() + " Value";
 12257  	};
 12258  	ValueError.prototype.Error = function() { return this.$val.Error(); };
 12259  	flag.prototype.mustBe = function(expected) {
 12260  		var expected, f;
 12261  		f = this.$val;
 12262  		if (!((new flag(f).kind() === expected))) {
 12263  			$panic(new ValueError.ptr(methodName(), new flag(f).kind()));
 12264  		}
 12265  	};
 12266  	$ptrType(flag).prototype.mustBe = function(expected) { return new flag(this.$get()).mustBe(expected); };
 12267  	flag.prototype.mustBeExported = function() {
 12268  		var f;
 12269  		f = this.$val;
 12270  		if (f === 0) {
 12271  			$panic(new ValueError.ptr(methodName(), 0));
 12272  		}
 12273  		if (!((((f & 96) >>> 0) === 0))) {
 12274  			$panic(new $String("reflect: " + methodName() + " using value obtained using unexported field"));
 12275  		}
 12276  	};
 12277  	$ptrType(flag).prototype.mustBeExported = function() { return new flag(this.$get()).mustBeExported(); };
 12278  	flag.prototype.mustBeAssignable = function() {
 12279  		var f;
 12280  		f = this.$val;
 12281  		if (f === 0) {
 12282  			$panic(new ValueError.ptr(methodName(), 0));
 12283  		}
 12284  		if (!((((f & 96) >>> 0) === 0))) {
 12285  			$panic(new $String("reflect: " + methodName() + " using value obtained using unexported field"));
 12286  		}
 12287  		if (((f & 256) >>> 0) === 0) {
 12288  			$panic(new $String("reflect: " + methodName() + " using unaddressable value"));
 12289  		}
 12290  	};
 12291  	$ptrType(flag).prototype.mustBeAssignable = function() { return new flag(this.$get()).mustBeAssignable(); };
 12292  	Value.ptr.prototype.Addr = function() {
 12293  		var v;
 12294  		v = this;
 12295  		if (((v.flag & 256) >>> 0) === 0) {
 12296  			$panic(new $String("reflect.Value.Addr of unaddressable value"));
 12297  		}
 12298  		return new Value.ptr(v.typ.ptrTo(), v.ptr, (new flag(v.flag).ro() | 22) >>> 0);
 12299  	};
 12300  	Value.prototype.Addr = function() { return this.$val.Addr(); };
 12301  	Value.ptr.prototype.Bool = function() {
 12302  		var v;
 12303  		v = this;
 12304  		new flag(v.flag).mustBe(1);
 12305  		return (v.ptr).$get();
 12306  	};
 12307  	Value.prototype.Bool = function() { return this.$val.Bool(); };
 12308  	Value.ptr.prototype.Bytes = function() {
 12309  		var _r, v, $s, $r;
 12310  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 12311  		v = this;
 12312  		new flag(v.flag).mustBe(23);
 12313  		_r = v.typ.Elem().Kind(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 12314  		/* */ if (!((_r === 8))) { $s = 1; continue; }
 12315  		/* */ $s = 2; continue;
 12316  		/* if (!((_r === 8))) { */ case 1:
 12317  			$panic(new $String("reflect.Value.Bytes of non-byte slice"));
 12318  		/* } */ case 2:
 12319  		$s = -1; return (v.ptr).$get();
 12320  		/* */ } return; } if ($f === undefined) { $f = { $blk: Value.ptr.prototype.Bytes }; } $f._r = _r; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
 12321  	};
 12322  	Value.prototype.Bytes = function() { return this.$val.Bytes(); };
 12323  	Value.ptr.prototype.runes = function() {
 12324  		var _r, v, $s, $r;
 12325  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 12326  		v = this;
 12327  		new flag(v.flag).mustBe(23);
 12328  		_r = v.typ.Elem().Kind(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 12329  		/* */ if (!((_r === 5))) { $s = 1; continue; }
 12330  		/* */ $s = 2; continue;
 12331  		/* if (!((_r === 5))) { */ case 1:
 12332  			$panic(new $String("reflect.Value.Bytes of non-rune slice"));
 12333  		/* } */ case 2:
 12334  		$s = -1; return (v.ptr).$get();
 12335  		/* */ } return; } if ($f === undefined) { $f = { $blk: Value.ptr.prototype.runes }; } $f._r = _r; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
 12336  	};
 12337  	Value.prototype.runes = function() { return this.$val.runes(); };
 12338  	Value.ptr.prototype.CanAddr = function() {
 12339  		var v;
 12340  		v = this;
 12341  		return !((((v.flag & 256) >>> 0) === 0));
 12342  	};
 12343  	Value.prototype.CanAddr = function() { return this.$val.CanAddr(); };
 12344  	Value.ptr.prototype.CanSet = function() {
 12345  		var v;
 12346  		v = this;
 12347  		return ((v.flag & 352) >>> 0) === 256;
 12348  	};
 12349  	Value.prototype.CanSet = function() { return this.$val.CanSet(); };
 12350  	Value.ptr.prototype.Call = function(in$1) {
 12351  		var _r, in$1, v, $s, $r;
 12352  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; in$1 = $f.in$1; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 12353  		v = this;
 12354  		new flag(v.flag).mustBe(19);
 12355  		new flag(v.flag).mustBeExported();
 12356  		_r = $clone(v, Value).call("Call", in$1); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 12357  		$s = -1; return _r;
 12358  		/* */ } return; } if ($f === undefined) { $f = { $blk: Value.ptr.prototype.Call }; } $f._r = _r; $f.in$1 = in$1; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
 12359  	};
 12360  	Value.prototype.Call = function(in$1) { return this.$val.Call(in$1); };
 12361  	Value.ptr.prototype.CallSlice = function(in$1) {
 12362  		var _r, in$1, v, $s, $r;
 12363  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; in$1 = $f.in$1; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 12364  		v = this;
 12365  		new flag(v.flag).mustBe(19);
 12366  		new flag(v.flag).mustBeExported();
 12367  		_r = $clone(v, Value).call("CallSlice", in$1); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 12368  		$s = -1; return _r;
 12369  		/* */ } return; } if ($f === undefined) { $f = { $blk: Value.ptr.prototype.CallSlice }; } $f._r = _r; $f.in$1 = in$1; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
 12370  	};
 12371  	Value.prototype.CallSlice = function(in$1) { return this.$val.CallSlice(in$1); };
 12372  	Value.ptr.prototype.Complex = function() {
 12373  		var _1, k, v, x;
 12374  		v = this;
 12375  		k = new flag(v.flag).kind();
 12376  		_1 = k;
 12377  		if (_1 === (15)) {
 12378  			return ((x = (v.ptr).$get(), new $Complex128(x.$real, x.$imag)));
 12379  		} else if (_1 === (16)) {
 12380  			return (v.ptr).$get();
 12381  		}
 12382  		$panic(new ValueError.ptr("reflect.Value.Complex", new flag(v.flag).kind()));
 12383  	};
 12384  	Value.prototype.Complex = function() { return this.$val.Complex(); };
 12385  	Value.ptr.prototype.FieldByIndex = function(index) {
 12386  		var _i, _r, _r$1, _r$2, _r$3, _ref, _v, i, index, v, x, $s, $r;
 12387  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _i = $f._i; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _ref = $f._ref; _v = $f._v; i = $f.i; index = $f.index; v = $f.v; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 12388  		v = this;
 12389  		/* */ if (index.$length === 1) { $s = 1; continue; }
 12390  		/* */ $s = 2; continue;
 12391  		/* if (index.$length === 1) { */ case 1:
 12392  			_r = $clone(v, Value).Field((0 >= index.$length ? ($throwRuntimeError("index out of range"), undefined) : index.$array[index.$offset + 0])); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 12393  			$s = -1; return _r;
 12394  		/* } */ case 2:
 12395  		new flag(v.flag).mustBe(25);
 12396  		_ref = index;
 12397  		_i = 0;
 12398  		/* while (true) { */ case 4:
 12399  			/* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 5; continue; }
 12400  			i = _i;
 12401  			x = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
 12402  			/* */ if (i > 0) { $s = 6; continue; }
 12403  			/* */ $s = 7; continue;
 12404  			/* if (i > 0) { */ case 6:
 12405  				if (!($clone(v, Value).Kind() === 22)) { _v = false; $s = 10; continue s; }
 12406  				_r$1 = v.typ.Elem().Kind(); /* */ $s = 11; case 11: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 12407  				_v = _r$1 === 25; case 10:
 12408  				/* */ if (_v) { $s = 8; continue; }
 12409  				/* */ $s = 9; continue;
 12410  				/* if (_v) { */ case 8:
 12411  					if ($clone(v, Value).IsNil()) {
 12412  						$panic(new $String("reflect: indirection through nil pointer to embedded struct"));
 12413  					}
 12414  					_r$2 = $clone(v, Value).Elem(); /* */ $s = 12; case 12: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 12415  					v = _r$2;
 12416  				/* } */ case 9:
 12417  			/* } */ case 7:
 12418  			_r$3 = $clone(v, Value).Field(x); /* */ $s = 13; case 13: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 12419  			v = _r$3;
 12420  			_i++;
 12421  		/* } */ $s = 4; continue; case 5:
 12422  		$s = -1; return v;
 12423  		/* */ } return; } if ($f === undefined) { $f = { $blk: Value.ptr.prototype.FieldByIndex }; } $f._i = _i; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._ref = _ref; $f._v = _v; $f.i = i; $f.index = index; $f.v = v; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
 12424  	};
 12425  	Value.prototype.FieldByIndex = function(index) { return this.$val.FieldByIndex(index); };
 12426  	Value.ptr.prototype.FieldByName = function(name$1) {
 12427  		var _r, _r$1, _tuple, f, name$1, ok, v, $s, $r;
 12428  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _tuple = $f._tuple; f = $f.f; name$1 = $f.name$1; ok = $f.ok; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 12429  		v = this;
 12430  		new flag(v.flag).mustBe(25);
 12431  		_r = v.typ.FieldByName(name$1); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 12432  		_tuple = _r;
 12433  		f = $clone(_tuple[0], StructField);
 12434  		ok = _tuple[1];
 12435  		/* */ if (ok) { $s = 2; continue; }
 12436  		/* */ $s = 3; continue;
 12437  		/* if (ok) { */ case 2:
 12438  			_r$1 = $clone(v, Value).FieldByIndex(f.Index); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 12439  			$s = -1; return _r$1;
 12440  		/* } */ case 3:
 12441  		$s = -1; return new Value.ptr(ptrType$1.nil, 0, 0);
 12442  		/* */ } return; } if ($f === undefined) { $f = { $blk: Value.ptr.prototype.FieldByName }; } $f._r = _r; $f._r$1 = _r$1; $f._tuple = _tuple; $f.f = f; $f.name$1 = name$1; $f.ok = ok; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
 12443  	};
 12444  	Value.prototype.FieldByName = function(name$1) { return this.$val.FieldByName(name$1); };
 12445  	Value.ptr.prototype.FieldByNameFunc = function(match) {
 12446  		var _r, _r$1, _tuple, f, match, ok, v, $s, $r;
 12447  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _tuple = $f._tuple; f = $f.f; match = $f.match; ok = $f.ok; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 12448  		v = this;
 12449  		_r = v.typ.FieldByNameFunc(match); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 12450  		_tuple = _r;
 12451  		f = $clone(_tuple[0], StructField);
 12452  		ok = _tuple[1];
 12453  		/* */ if (ok) { $s = 2; continue; }
 12454  		/* */ $s = 3; continue;
 12455  		/* if (ok) { */ case 2:
 12456  			_r$1 = $clone(v, Value).FieldByIndex(f.Index); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 12457  			$s = -1; return _r$1;
 12458  		/* } */ case 3:
 12459  		$s = -1; return new Value.ptr(ptrType$1.nil, 0, 0);
 12460  		/* */ } return; } if ($f === undefined) { $f = { $blk: Value.ptr.prototype.FieldByNameFunc }; } $f._r = _r; $f._r$1 = _r$1; $f._tuple = _tuple; $f.f = f; $f.match = match; $f.ok = ok; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
 12461  	};
 12462  	Value.prototype.FieldByNameFunc = function(match) { return this.$val.FieldByNameFunc(match); };
 12463  	Value.ptr.prototype.Float = function() {
 12464  		var _1, k, v;
 12465  		v = this;
 12466  		k = new flag(v.flag).kind();
 12467  		_1 = k;
 12468  		if (_1 === (13)) {
 12469  			return ((v.ptr).$get());
 12470  		} else if (_1 === (14)) {
 12471  			return (v.ptr).$get();
 12472  		}
 12473  		$panic(new ValueError.ptr("reflect.Value.Float", new flag(v.flag).kind()));
 12474  	};
 12475  	Value.prototype.Float = function() { return this.$val.Float(); };
 12476  	Value.ptr.prototype.Int = function() {
 12477  		var _1, k, p, v;
 12478  		v = this;
 12479  		k = new flag(v.flag).kind();
 12480  		p = v.ptr;
 12481  		_1 = k;
 12482  		if (_1 === (2)) {
 12483  			return (new $Int64(0, (p).$get()));
 12484  		} else if (_1 === (3)) {
 12485  			return (new $Int64(0, (p).$get()));
 12486  		} else if (_1 === (4)) {
 12487  			return (new $Int64(0, (p).$get()));
 12488  		} else if (_1 === (5)) {
 12489  			return (new $Int64(0, (p).$get()));
 12490  		} else if (_1 === (6)) {
 12491  			return (p).$get();
 12492  		}
 12493  		$panic(new ValueError.ptr("reflect.Value.Int", new flag(v.flag).kind()));
 12494  	};
 12495  	Value.prototype.Int = function() { return this.$val.Int(); };
 12496  	Value.ptr.prototype.CanInterface = function() {
 12497  		var v;
 12498  		v = this;
 12499  		if (v.flag === 0) {
 12500  			$panic(new ValueError.ptr("reflect.Value.CanInterface", 0));
 12501  		}
 12502  		return ((v.flag & 96) >>> 0) === 0;
 12503  	};
 12504  	Value.prototype.CanInterface = function() { return this.$val.CanInterface(); };
 12505  	Value.ptr.prototype.Interface = function() {
 12506  		var _r, i, v, $s, $r;
 12507  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; i = $f.i; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 12508  		i = $ifaceNil;
 12509  		v = this;
 12510  		_r = valueInterface($clone(v, Value), true); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 12511  		i = _r;
 12512  		$s = -1; return i;
 12513  		/* */ } return; } if ($f === undefined) { $f = { $blk: Value.ptr.prototype.Interface }; } $f._r = _r; $f.i = i; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
 12514  	};
 12515  	Value.prototype.Interface = function() { return this.$val.Interface(); };
 12516  	Value.ptr.prototype.IsValid = function() {
 12517  		var v;
 12518  		v = this;
 12519  		return !((v.flag === 0));
 12520  	};
 12521  	Value.prototype.IsValid = function() { return this.$val.IsValid(); };
 12522  	Value.ptr.prototype.Kind = function() {
 12523  		var v;
 12524  		v = this;
 12525  		return new flag(v.flag).kind();
 12526  	};
 12527  	Value.prototype.Kind = function() { return this.$val.Kind(); };
 12528  	Value.ptr.prototype.MapIndex = function(key) {
 12529  		var _r, c, e, fl, k, key, tt, typ, v, $s, $r;
 12530  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; c = $f.c; e = $f.e; fl = $f.fl; k = $f.k; key = $f.key; tt = $f.tt; typ = $f.typ; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 12531  		v = this;
 12532  		new flag(v.flag).mustBe(21);
 12533  		tt = (v.typ.kindType);
 12534  		_r = $clone(key, Value).assignTo("reflect.Value.MapIndex", tt.key, 0); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 12535  		key = _r;
 12536  		k = 0;
 12537  		if (!((((key.flag & 128) >>> 0) === 0))) {
 12538  			k = key.ptr;
 12539  		} else {
 12540  			k = ((key.$ptr_ptr || (key.$ptr_ptr = new ptrType$15(function() { return this.$target.ptr; }, function($v) { this.$target.ptr = $v; }, key))));
 12541  		}
 12542  		e = mapaccess(v.typ, $clone(v, Value).pointer(), k);
 12543  		if (e === 0) {
 12544  			$s = -1; return new Value.ptr(ptrType$1.nil, 0, 0);
 12545  		}
 12546  		typ = tt.elem;
 12547  		fl = new flag((((v.flag | key.flag) >>> 0))).ro();
 12548  		fl = (fl | (((typ.Kind() >>> 0)))) >>> 0;
 12549  		if (!ifaceIndir(typ)) {
 12550  			$s = -1; return new Value.ptr(typ, (e).$get(), fl);
 12551  		}
 12552  		c = unsafe_New(typ);
 12553  		typedmemmove(typ, c, e);
 12554  		$s = -1; return new Value.ptr(typ, c, (fl | 128) >>> 0);
 12555  		/* */ } return; } if ($f === undefined) { $f = { $blk: Value.ptr.prototype.MapIndex }; } $f._r = _r; $f.c = c; $f.e = e; $f.fl = fl; $f.k = k; $f.key = key; $f.tt = tt; $f.typ = typ; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
 12556  	};
 12557  	Value.prototype.MapIndex = function(key) { return this.$val.MapIndex(key); };
 12558  	Value.ptr.prototype.MapKeys = function() {
 12559  		var _r, a, c, fl, i, it, key, keyType, m, mlen, tt, v, $s, $r;
 12560  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; a = $f.a; c = $f.c; fl = $f.fl; i = $f.i; it = $f.it; key = $f.key; keyType = $f.keyType; m = $f.m; mlen = $f.mlen; tt = $f.tt; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 12561  		v = this;
 12562  		new flag(v.flag).mustBe(21);
 12563  		tt = (v.typ.kindType);
 12564  		keyType = tt.key;
 12565  		fl = (new flag(v.flag).ro() | ((keyType.Kind() >>> 0))) >>> 0;
 12566  		m = $clone(v, Value).pointer();
 12567  		mlen = 0;
 12568  		if (!(m === 0)) {
 12569  			mlen = maplen(m);
 12570  		}
 12571  		it = mapiterinit(v.typ, m);
 12572  		a = $makeSlice(sliceType$9, mlen);
 12573  		i = 0;
 12574  		i = 0;
 12575  		/* while (true) { */ case 1:
 12576  			/* if (!(i < a.$length)) { break; } */ if(!(i < a.$length)) { $s = 2; continue; }
 12577  			_r = mapiterkey(it); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 12578  			key = _r;
 12579  			if (key === 0) {
 12580  				/* break; */ $s = 2; continue;
 12581  			}
 12582  			if (ifaceIndir(keyType)) {
 12583  				c = unsafe_New(keyType);
 12584  				typedmemmove(keyType, c, key);
 12585  				((i < 0 || i >= a.$length) ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + i] = new Value.ptr(keyType, c, (fl | 128) >>> 0));
 12586  			} else {
 12587  				((i < 0 || i >= a.$length) ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + i] = new Value.ptr(keyType, (key).$get(), fl));
 12588  			}
 12589  			mapiternext(it);
 12590  			i = i + (1) >> 0;
 12591  		/* } */ $s = 1; continue; case 2:
 12592  		$s = -1; return $subslice(a, 0, i);
 12593  		/* */ } return; } if ($f === undefined) { $f = { $blk: Value.ptr.prototype.MapKeys }; } $f._r = _r; $f.a = a; $f.c = c; $f.fl = fl; $f.i = i; $f.it = it; $f.key = key; $f.keyType = keyType; $f.m = m; $f.mlen = mlen; $f.tt = tt; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
 12594  	};
 12595  	Value.prototype.MapKeys = function() { return this.$val.MapKeys(); };
 12596  	Value.ptr.prototype.Method = function(i) {
 12597  		var _r, _v, fl, i, v, $s, $r;
 12598  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _v = $f._v; fl = $f.fl; i = $f.i; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 12599  		v = this;
 12600  		if (v.typ === ptrType$1.nil) {
 12601  			$panic(new ValueError.ptr("reflect.Value.Method", 0));
 12602  		}
 12603  		if (!((((v.flag & 512) >>> 0) === 0))) { _v = true; $s = 3; continue s; }
 12604  		_r = v.typ.NumMethod(); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 12605  		_v = ((i >>> 0)) >= ((_r >>> 0)); case 3:
 12606  		/* */ if (_v) { $s = 1; continue; }
 12607  		/* */ $s = 2; continue;
 12608  		/* if (_v) { */ case 1:
 12609  			$panic(new $String("reflect: Method index out of range"));
 12610  		/* } */ case 2:
 12611  		if ((v.typ.Kind() === 20) && $clone(v, Value).IsNil()) {
 12612  			$panic(new $String("reflect: Method on nil interface value"));
 12613  		}
 12614  		fl = (v.flag & 160) >>> 0;
 12615  		fl = (fl | (19)) >>> 0;
 12616  		fl = (fl | ((((((i >>> 0)) << 10 >>> 0) | 512) >>> 0))) >>> 0;
 12617  		$s = -1; return new Value.ptr(v.typ, v.ptr, fl);
 12618  		/* */ } return; } if ($f === undefined) { $f = { $blk: Value.ptr.prototype.Method }; } $f._r = _r; $f._v = _v; $f.fl = fl; $f.i = i; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
 12619  	};
 12620  	Value.prototype.Method = function(i) { return this.$val.Method(i); };
 12621  	Value.ptr.prototype.NumMethod = function() {
 12622  		var _r, v, $s, $r;
 12623  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 12624  		v = this;
 12625  		if (v.typ === ptrType$1.nil) {
 12626  			$panic(new ValueError.ptr("reflect.Value.NumMethod", 0));
 12627  		}
 12628  		if (!((((v.flag & 512) >>> 0) === 0))) {
 12629  			$s = -1; return 0;
 12630  		}
 12631  		_r = v.typ.NumMethod(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 12632  		$s = -1; return _r;
 12633  		/* */ } return; } if ($f === undefined) { $f = { $blk: Value.ptr.prototype.NumMethod }; } $f._r = _r; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
 12634  	};
 12635  	Value.prototype.NumMethod = function() { return this.$val.NumMethod(); };
 12636  	Value.ptr.prototype.MethodByName = function(name$1) {
 12637  		var _r, _r$1, _tuple, m, name$1, ok, v, $s, $r;
 12638  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _tuple = $f._tuple; m = $f.m; name$1 = $f.name$1; ok = $f.ok; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 12639  		v = this;
 12640  		if (v.typ === ptrType$1.nil) {
 12641  			$panic(new ValueError.ptr("reflect.Value.MethodByName", 0));
 12642  		}
 12643  		if (!((((v.flag & 512) >>> 0) === 0))) {
 12644  			$s = -1; return new Value.ptr(ptrType$1.nil, 0, 0);
 12645  		}
 12646  		_r = v.typ.MethodByName(name$1); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 12647  		_tuple = _r;
 12648  		m = $clone(_tuple[0], Method);
 12649  		ok = _tuple[1];
 12650  		if (!ok) {
 12651  			$s = -1; return new Value.ptr(ptrType$1.nil, 0, 0);
 12652  		}
 12653  		_r$1 = $clone(v, Value).Method(m.Index); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 12654  		$s = -1; return _r$1;
 12655  		/* */ } return; } if ($f === undefined) { $f = { $blk: Value.ptr.prototype.MethodByName }; } $f._r = _r; $f._r$1 = _r$1; $f._tuple = _tuple; $f.m = m; $f.name$1 = name$1; $f.ok = ok; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
 12656  	};
 12657  	Value.prototype.MethodByName = function(name$1) { return this.$val.MethodByName(name$1); };
 12658  	Value.ptr.prototype.NumField = function() {
 12659  		var tt, v;
 12660  		v = this;
 12661  		new flag(v.flag).mustBe(25);
 12662  		tt = (v.typ.kindType);
 12663  		return tt.fields.$length;
 12664  	};
 12665  	Value.prototype.NumField = function() { return this.$val.NumField(); };
 12666  	Value.ptr.prototype.OverflowComplex = function(x) {
 12667  		var _1, k, v, x;
 12668  		v = this;
 12669  		k = new flag(v.flag).kind();
 12670  		_1 = k;
 12671  		if (_1 === (15)) {
 12672  			return overflowFloat32(x.$real) || overflowFloat32(x.$imag);
 12673  		} else if (_1 === (16)) {
 12674  			return false;
 12675  		}
 12676  		$panic(new ValueError.ptr("reflect.Value.OverflowComplex", new flag(v.flag).kind()));
 12677  	};
 12678  	Value.prototype.OverflowComplex = function(x) { return this.$val.OverflowComplex(x); };
 12679  	Value.ptr.prototype.OverflowFloat = function(x) {
 12680  		var _1, k, v, x;
 12681  		v = this;
 12682  		k = new flag(v.flag).kind();
 12683  		_1 = k;
 12684  		if (_1 === (13)) {
 12685  			return overflowFloat32(x);
 12686  		} else if (_1 === (14)) {
 12687  			return false;
 12688  		}
 12689  		$panic(new ValueError.ptr("reflect.Value.OverflowFloat", new flag(v.flag).kind()));
 12690  	};
 12691  	Value.prototype.OverflowFloat = function(x) { return this.$val.OverflowFloat(x); };
 12692  	overflowFloat32 = function(x) {
 12693  		var x;
 12694  		if (x < 0) {
 12695  			x = -x;
 12696  		}
 12697  		return 3.4028234663852886e+38 < x && x <= 1.7976931348623157e+308;
 12698  	};
 12699  	Value.ptr.prototype.OverflowInt = function(x) {
 12700  		var _1, bitSize, k, trunc, v, x;
 12701  		v = this;
 12702  		k = new flag(v.flag).kind();
 12703  		_1 = k;
 12704  		if ((_1 === (2)) || (_1 === (3)) || (_1 === (4)) || (_1 === (5)) || (_1 === (6))) {
 12705  			bitSize = $imul(v.typ.size, 8) >>> 0;
 12706  			trunc = $shiftRightInt64(($shiftLeft64(x, ((64 - bitSize >>> 0)))), ((64 - bitSize >>> 0)));
 12707  			return !((x.$high === trunc.$high && x.$low === trunc.$low));
 12708  		}
 12709  		$panic(new ValueError.ptr("reflect.Value.OverflowInt", new flag(v.flag).kind()));
 12710  	};
 12711  	Value.prototype.OverflowInt = function(x) { return this.$val.OverflowInt(x); };
 12712  	Value.ptr.prototype.OverflowUint = function(x) {
 12713  		var _1, bitSize, k, trunc, v, x;
 12714  		v = this;
 12715  		k = new flag(v.flag).kind();
 12716  		_1 = k;
 12717  		if ((_1 === (7)) || (_1 === (12)) || (_1 === (8)) || (_1 === (9)) || (_1 === (10)) || (_1 === (11))) {
 12718  			bitSize = $imul(v.typ.size, 8) >>> 0;
 12719  			trunc = $shiftRightUint64(($shiftLeft64(x, ((64 - bitSize >>> 0)))), ((64 - bitSize >>> 0)));
 12720  			return !((x.$high === trunc.$high && x.$low === trunc.$low));
 12721  		}
 12722  		$panic(new ValueError.ptr("reflect.Value.OverflowUint", new flag(v.flag).kind()));
 12723  	};
 12724  	Value.prototype.OverflowUint = function(x) { return this.$val.OverflowUint(x); };
 12725  	Value.ptr.prototype.Recv = function() {
 12726  		var _r, _tuple, ok, v, x, $s, $r;
 12727  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; ok = $f.ok; v = $f.v; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 12728  		x = new Value.ptr(ptrType$1.nil, 0, 0);
 12729  		ok = false;
 12730  		v = this;
 12731  		new flag(v.flag).mustBe(18);
 12732  		new flag(v.flag).mustBeExported();
 12733  		_r = $clone(v, Value).recv(false); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 12734  		_tuple = _r;
 12735  		x = _tuple[0];
 12736  		ok = _tuple[1];
 12737  		$s = -1; return [x, ok];
 12738  		/* */ } return; } if ($f === undefined) { $f = { $blk: Value.ptr.prototype.Recv }; } $f._r = _r; $f._tuple = _tuple; $f.ok = ok; $f.v = v; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
 12739  	};
 12740  	Value.prototype.Recv = function() { return this.$val.Recv(); };
 12741  	Value.ptr.prototype.recv = function(nb) {
 12742  		var _r, _tuple, nb, ok, p, selected, t, tt, v, val, $s, $r;
 12743  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; nb = $f.nb; ok = $f.ok; p = $f.p; selected = $f.selected; t = $f.t; tt = $f.tt; v = $f.v; val = $f.val; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 12744  		val = new Value.ptr(ptrType$1.nil, 0, 0);
 12745  		ok = false;
 12746  		v = this;
 12747  		tt = (v.typ.kindType);
 12748  		if ((((tt.dir >> 0)) & 1) === 0) {
 12749  			$panic(new $String("reflect: recv on send-only channel"));
 12750  		}
 12751  		t = tt.elem;
 12752  		val = new Value.ptr(t, 0, ((t.Kind() >>> 0)));
 12753  		p = 0;
 12754  		if (ifaceIndir(t)) {
 12755  			p = unsafe_New(t);
 12756  			val.ptr = p;
 12757  			val.flag = (val.flag | (128)) >>> 0;
 12758  		} else {
 12759  			p = ((val.$ptr_ptr || (val.$ptr_ptr = new ptrType$15(function() { return this.$target.ptr; }, function($v) { this.$target.ptr = $v; }, val))));
 12760  		}
 12761  		_r = chanrecv($clone(v, Value).pointer(), nb, p); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 12762  		_tuple = _r;
 12763  		selected = _tuple[0];
 12764  		ok = _tuple[1];
 12765  		if (!selected) {
 12766  			val = new Value.ptr(ptrType$1.nil, 0, 0);
 12767  		}
 12768  		$s = -1; return [val, ok];
 12769  		/* */ } return; } if ($f === undefined) { $f = { $blk: Value.ptr.prototype.recv }; } $f._r = _r; $f._tuple = _tuple; $f.nb = nb; $f.ok = ok; $f.p = p; $f.selected = selected; $f.t = t; $f.tt = tt; $f.v = v; $f.val = val; $f.$s = $s; $f.$r = $r; return $f;
 12770  	};
 12771  	Value.prototype.recv = function(nb) { return this.$val.recv(nb); };
 12772  	Value.ptr.prototype.Send = function(x) {
 12773  		var _r, v, x, $s, $r;
 12774  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; v = $f.v; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 12775  		v = this;
 12776  		new flag(v.flag).mustBe(18);
 12777  		new flag(v.flag).mustBeExported();
 12778  		_r = $clone(v, Value).send($clone(x, Value), false); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 12779  		_r;
 12780  		$s = -1; return;
 12781  		/* */ } return; } if ($f === undefined) { $f = { $blk: Value.ptr.prototype.Send }; } $f._r = _r; $f.v = v; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
 12782  	};
 12783  	Value.prototype.Send = function(x) { return this.$val.Send(x); };
 12784  	Value.ptr.prototype.send = function(x, nb) {
 12785  		var _r, _r$1, nb, p, selected, tt, v, x, $s, $r;
 12786  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; nb = $f.nb; p = $f.p; selected = $f.selected; tt = $f.tt; v = $f.v; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 12787  		selected = false;
 12788  		v = this;
 12789  		tt = (v.typ.kindType);
 12790  		if ((((tt.dir >> 0)) & 2) === 0) {
 12791  			$panic(new $String("reflect: send on recv-only channel"));
 12792  		}
 12793  		new flag(x.flag).mustBeExported();
 12794  		_r = $clone(x, Value).assignTo("reflect.Value.Send", tt.elem, 0); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 12795  		x = _r;
 12796  		p = 0;
 12797  		if (!((((x.flag & 128) >>> 0) === 0))) {
 12798  			p = x.ptr;
 12799  		} else {
 12800  			p = ((x.$ptr_ptr || (x.$ptr_ptr = new ptrType$15(function() { return this.$target.ptr; }, function($v) { this.$target.ptr = $v; }, x))));
 12801  		}
 12802  		_r$1 = chansend($clone(v, Value).pointer(), p, nb); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 12803  		selected = _r$1;
 12804  		$s = -1; return selected;
 12805  		/* */ } return; } if ($f === undefined) { $f = { $blk: Value.ptr.prototype.send }; } $f._r = _r; $f._r$1 = _r$1; $f.nb = nb; $f.p = p; $f.selected = selected; $f.tt = tt; $f.v = v; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
 12806  	};
 12807  	Value.prototype.send = function(x, nb) { return this.$val.send(x, nb); };
 12808  	Value.ptr.prototype.SetBool = function(x) {
 12809  		var v, x;
 12810  		v = this;
 12811  		new flag(v.flag).mustBeAssignable();
 12812  		new flag(v.flag).mustBe(1);
 12813  		(v.ptr).$set(x);
 12814  	};
 12815  	Value.prototype.SetBool = function(x) { return this.$val.SetBool(x); };
 12816  	Value.ptr.prototype.setRunes = function(x) {
 12817  		var _r, v, x, $s, $r;
 12818  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; v = $f.v; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 12819  		v = this;
 12820  		new flag(v.flag).mustBeAssignable();
 12821  		new flag(v.flag).mustBe(23);
 12822  		_r = v.typ.Elem().Kind(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 12823  		/* */ if (!((_r === 5))) { $s = 1; continue; }
 12824  		/* */ $s = 2; continue;
 12825  		/* if (!((_r === 5))) { */ case 1:
 12826  			$panic(new $String("reflect.Value.setRunes of non-rune slice"));
 12827  		/* } */ case 2:
 12828  		(v.ptr).$set(x);
 12829  		$s = -1; return;
 12830  		/* */ } return; } if ($f === undefined) { $f = { $blk: Value.ptr.prototype.setRunes }; } $f._r = _r; $f.v = v; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
 12831  	};
 12832  	Value.prototype.setRunes = function(x) { return this.$val.setRunes(x); };
 12833  	Value.ptr.prototype.SetComplex = function(x) {
 12834  		var _1, k, v, x;
 12835  		v = this;
 12836  		new flag(v.flag).mustBeAssignable();
 12837  		k = new flag(v.flag).kind();
 12838  		_1 = k;
 12839  		if (_1 === (15)) {
 12840  			(v.ptr).$set((new $Complex64(x.$real, x.$imag)));
 12841  		} else if (_1 === (16)) {
 12842  			(v.ptr).$set(x);
 12843  		} else {
 12844  			$panic(new ValueError.ptr("reflect.Value.SetComplex", new flag(v.flag).kind()));
 12845  		}
 12846  	};
 12847  	Value.prototype.SetComplex = function(x) { return this.$val.SetComplex(x); };
 12848  	Value.ptr.prototype.SetFloat = function(x) {
 12849  		var _1, k, v, x;
 12850  		v = this;
 12851  		new flag(v.flag).mustBeAssignable();
 12852  		k = new flag(v.flag).kind();
 12853  		_1 = k;
 12854  		if (_1 === (13)) {
 12855  			(v.ptr).$set(($fround(x)));
 12856  		} else if (_1 === (14)) {
 12857  			(v.ptr).$set(x);
 12858  		} else {
 12859  			$panic(new ValueError.ptr("reflect.Value.SetFloat", new flag(v.flag).kind()));
 12860  		}
 12861  	};
 12862  	Value.prototype.SetFloat = function(x) { return this.$val.SetFloat(x); };
 12863  	Value.ptr.prototype.SetInt = function(x) {
 12864  		var _1, k, v, x;
 12865  		v = this;
 12866  		new flag(v.flag).mustBeAssignable();
 12867  		k = new flag(v.flag).kind();
 12868  		_1 = k;
 12869  		if (_1 === (2)) {
 12870  			(v.ptr).$set((((x.$low + ((x.$high >> 31) * 4294967296)) >> 0)));
 12871  		} else if (_1 === (3)) {
 12872  			(v.ptr).$set((((x.$low + ((x.$high >> 31) * 4294967296)) << 24 >> 24)));
 12873  		} else if (_1 === (4)) {
 12874  			(v.ptr).$set((((x.$low + ((x.$high >> 31) * 4294967296)) << 16 >> 16)));
 12875  		} else if (_1 === (5)) {
 12876  			(v.ptr).$set((((x.$low + ((x.$high >> 31) * 4294967296)) >> 0)));
 12877  		} else if (_1 === (6)) {
 12878  			(v.ptr).$set(x);
 12879  		} else {
 12880  			$panic(new ValueError.ptr("reflect.Value.SetInt", new flag(v.flag).kind()));
 12881  		}
 12882  	};
 12883  	Value.prototype.SetInt = function(x) { return this.$val.SetInt(x); };
 12884  	Value.ptr.prototype.SetMapIndex = function(key, val) {
 12885  		var _r, _r$1, e, k, key, tt, v, val, $s, $r;
 12886  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; e = $f.e; k = $f.k; key = $f.key; tt = $f.tt; v = $f.v; val = $f.val; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 12887  		v = this;
 12888  		new flag(v.flag).mustBe(21);
 12889  		new flag(v.flag).mustBeExported();
 12890  		new flag(key.flag).mustBeExported();
 12891  		tt = (v.typ.kindType);
 12892  		_r = $clone(key, Value).assignTo("reflect.Value.SetMapIndex", tt.key, 0); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 12893  		key = _r;
 12894  		k = 0;
 12895  		if (!((((key.flag & 128) >>> 0) === 0))) {
 12896  			k = key.ptr;
 12897  		} else {
 12898  			k = ((key.$ptr_ptr || (key.$ptr_ptr = new ptrType$15(function() { return this.$target.ptr; }, function($v) { this.$target.ptr = $v; }, key))));
 12899  		}
 12900  		if (val.typ === ptrType$1.nil) {
 12901  			mapdelete(v.typ, $clone(v, Value).pointer(), k);
 12902  			$s = -1; return;
 12903  		}
 12904  		new flag(val.flag).mustBeExported();
 12905  		_r$1 = $clone(val, Value).assignTo("reflect.Value.SetMapIndex", tt.elem, 0); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 12906  		val = _r$1;
 12907  		e = 0;
 12908  		if (!((((val.flag & 128) >>> 0) === 0))) {
 12909  			e = val.ptr;
 12910  		} else {
 12911  			e = ((val.$ptr_ptr || (val.$ptr_ptr = new ptrType$15(function() { return this.$target.ptr; }, function($v) { this.$target.ptr = $v; }, val))));
 12912  		}
 12913  		$r = mapassign(v.typ, $clone(v, Value).pointer(), k, e); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 12914  		$s = -1; return;
 12915  		/* */ } return; } if ($f === undefined) { $f = { $blk: Value.ptr.prototype.SetMapIndex }; } $f._r = _r; $f._r$1 = _r$1; $f.e = e; $f.k = k; $f.key = key; $f.tt = tt; $f.v = v; $f.val = val; $f.$s = $s; $f.$r = $r; return $f;
 12916  	};
 12917  	Value.prototype.SetMapIndex = function(key, val) { return this.$val.SetMapIndex(key, val); };
 12918  	Value.ptr.prototype.SetUint = function(x) {
 12919  		var _1, k, v, x;
 12920  		v = this;
 12921  		new flag(v.flag).mustBeAssignable();
 12922  		k = new flag(v.flag).kind();
 12923  		_1 = k;
 12924  		if (_1 === (7)) {
 12925  			(v.ptr).$set(((x.$low >>> 0)));
 12926  		} else if (_1 === (8)) {
 12927  			(v.ptr).$set(((x.$low << 24 >>> 24)));
 12928  		} else if (_1 === (9)) {
 12929  			(v.ptr).$set(((x.$low << 16 >>> 16)));
 12930  		} else if (_1 === (10)) {
 12931  			(v.ptr).$set(((x.$low >>> 0)));
 12932  		} else if (_1 === (11)) {
 12933  			(v.ptr).$set(x);
 12934  		} else if (_1 === (12)) {
 12935  			(v.ptr).$set(((x.$low >>> 0)));
 12936  		} else {
 12937  			$panic(new ValueError.ptr("reflect.Value.SetUint", new flag(v.flag).kind()));
 12938  		}
 12939  	};
 12940  	Value.prototype.SetUint = function(x) { return this.$val.SetUint(x); };
 12941  	Value.ptr.prototype.SetPointer = function(x) {
 12942  		var v, x;
 12943  		v = this;
 12944  		new flag(v.flag).mustBeAssignable();
 12945  		new flag(v.flag).mustBe(26);
 12946  		(v.ptr).$set(x);
 12947  	};
 12948  	Value.prototype.SetPointer = function(x) { return this.$val.SetPointer(x); };
 12949  	Value.ptr.prototype.SetString = function(x) {
 12950  		var v, x;
 12951  		v = this;
 12952  		new flag(v.flag).mustBeAssignable();
 12953  		new flag(v.flag).mustBe(24);
 12954  		(v.ptr).$set(x);
 12955  	};
 12956  	Value.prototype.SetString = function(x) { return this.$val.SetString(x); };
 12957  	Value.ptr.prototype.String = function() {
 12958  		var _1, _r, _r$1, k, v, $s, $r;
 12959  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _r = $f._r; _r$1 = $f._r$1; k = $f.k; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 12960  		v = this;
 12961  		k = new flag(v.flag).kind();
 12962  		_1 = k;
 12963  		if (_1 === (0)) {
 12964  			$s = -1; return "<invalid Value>";
 12965  		} else if (_1 === (24)) {
 12966  			$s = -1; return (v.ptr).$get();
 12967  		}
 12968  		_r = $clone(v, Value).Type(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 12969  		_r$1 = _r.String(); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 12970  		$s = -1; return "<" + _r$1 + " Value>";
 12971  		/* */ } return; } if ($f === undefined) { $f = { $blk: Value.ptr.prototype.String }; } $f._1 = _1; $f._r = _r; $f._r$1 = _r$1; $f.k = k; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
 12972  	};
 12973  	Value.prototype.String = function() { return this.$val.String(); };
 12974  	Value.ptr.prototype.TryRecv = function() {
 12975  		var _r, _tuple, ok, v, x, $s, $r;
 12976  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; ok = $f.ok; v = $f.v; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 12977  		x = new Value.ptr(ptrType$1.nil, 0, 0);
 12978  		ok = false;
 12979  		v = this;
 12980  		new flag(v.flag).mustBe(18);
 12981  		new flag(v.flag).mustBeExported();
 12982  		_r = $clone(v, Value).recv(true); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 12983  		_tuple = _r;
 12984  		x = _tuple[0];
 12985  		ok = _tuple[1];
 12986  		$s = -1; return [x, ok];
 12987  		/* */ } return; } if ($f === undefined) { $f = { $blk: Value.ptr.prototype.TryRecv }; } $f._r = _r; $f._tuple = _tuple; $f.ok = ok; $f.v = v; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
 12988  	};
 12989  	Value.prototype.TryRecv = function() { return this.$val.TryRecv(); };
 12990  	Value.ptr.prototype.TrySend = function(x) {
 12991  		var _r, v, x, $s, $r;
 12992  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; v = $f.v; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 12993  		v = this;
 12994  		new flag(v.flag).mustBe(18);
 12995  		new flag(v.flag).mustBeExported();
 12996  		_r = $clone(v, Value).send($clone(x, Value), true); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 12997  		$s = -1; return _r;
 12998  		/* */ } return; } if ($f === undefined) { $f = { $blk: Value.ptr.prototype.TrySend }; } $f._r = _r; $f.v = v; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
 12999  	};
 13000  	Value.prototype.TrySend = function(x) { return this.$val.TrySend(x); };
 13001  	Value.ptr.prototype.Type = function() {
 13002  		var _r, f, i, m, m$1, ms, tt, v, x, $s, $r;
 13003  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; f = $f.f; i = $f.i; m = $f.m; m$1 = $f.m$1; ms = $f.ms; tt = $f.tt; v = $f.v; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 13004  		v = this;
 13005  		f = v.flag;
 13006  		if (f === 0) {
 13007  			$panic(new ValueError.ptr("reflect.Value.Type", 0));
 13008  		}
 13009  		if (((f & 512) >>> 0) === 0) {
 13010  			$s = -1; return v.typ;
 13011  		}
 13012  		i = ((v.flag >> 0)) >> 10 >> 0;
 13013  		if (v.typ.Kind() === 20) {
 13014  			tt = (v.typ.kindType);
 13015  			if (((i >>> 0)) >= ((tt.methods.$length >>> 0))) {
 13016  				$panic(new $String("reflect: internal error: invalid method index"));
 13017  			}
 13018  			m = (x = tt.methods, ((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i]));
 13019  			$s = -1; return v.typ.typeOff(m.typ);
 13020  		}
 13021  		_r = v.typ.exportedMethods(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 13022  		ms = _r;
 13023  		if (((i >>> 0)) >= ((ms.$length >>> 0))) {
 13024  			$panic(new $String("reflect: internal error: invalid method index"));
 13025  		}
 13026  		m$1 = $clone(((i < 0 || i >= ms.$length) ? ($throwRuntimeError("index out of range"), undefined) : ms.$array[ms.$offset + i]), method);
 13027  		$s = -1; return v.typ.typeOff(m$1.mtyp);
 13028  		/* */ } return; } if ($f === undefined) { $f = { $blk: Value.ptr.prototype.Type }; } $f._r = _r; $f.f = f; $f.i = i; $f.m = m; $f.m$1 = m$1; $f.ms = ms; $f.tt = tt; $f.v = v; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
 13029  	};
 13030  	Value.prototype.Type = function() { return this.$val.Type(); };
 13031  	Value.ptr.prototype.Uint = function() {
 13032  		var _1, k, p, v, x;
 13033  		v = this;
 13034  		k = new flag(v.flag).kind();
 13035  		p = v.ptr;
 13036  		_1 = k;
 13037  		if (_1 === (7)) {
 13038  			return (new $Uint64(0, (p).$get()));
 13039  		} else if (_1 === (8)) {
 13040  			return (new $Uint64(0, (p).$get()));
 13041  		} else if (_1 === (9)) {
 13042  			return (new $Uint64(0, (p).$get()));
 13043  		} else if (_1 === (10)) {
 13044  			return (new $Uint64(0, (p).$get()));
 13045  		} else if (_1 === (11)) {
 13046  			return (p).$get();
 13047  		} else if (_1 === (12)) {
 13048  			return ((x = (p).$get(), new $Uint64(0, x.constructor === Number ? x : 1)));
 13049  		}
 13050  		$panic(new ValueError.ptr("reflect.Value.Uint", new flag(v.flag).kind()));
 13051  	};
 13052  	Value.prototype.Uint = function() { return this.$val.Uint(); };
 13053  	Value.ptr.prototype.UnsafeAddr = function() {
 13054  		var v;
 13055  		v = this;
 13056  		if (v.typ === ptrType$1.nil) {
 13057  			$panic(new ValueError.ptr("reflect.Value.UnsafeAddr", 0));
 13058  		}
 13059  		if (((v.flag & 256) >>> 0) === 0) {
 13060  			$panic(new $String("reflect.Value.UnsafeAddr of unaddressable value"));
 13061  		}
 13062  		return (v.ptr);
 13063  	};
 13064  	Value.prototype.UnsafeAddr = function() { return this.$val.UnsafeAddr(); };
 13065  	typesMustMatch = function(what, t1, t2) {
 13066  		var _r, _r$1, t1, t2, what, $s, $r;
 13067  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; t1 = $f.t1; t2 = $f.t2; what = $f.what; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 13068  		/* */ if (!($interfaceIsEqual(t1, t2))) { $s = 1; continue; }
 13069  		/* */ $s = 2; continue;
 13070  		/* if (!($interfaceIsEqual(t1, t2))) { */ case 1:
 13071  			_r = t1.String(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 13072  			_r$1 = t2.String(); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 13073  			$panic(new $String(what + ": " + _r + " != " + _r$1));
 13074  		/* } */ case 2:
 13075  		$s = -1; return;
 13076  		/* */ } return; } if ($f === undefined) { $f = { $blk: typesMustMatch }; } $f._r = _r; $f._r$1 = _r$1; $f.t1 = t1; $f.t2 = t2; $f.what = what; $f.$s = $s; $f.$r = $r; return $f;
 13077  	};
 13078  	MakeMap = function(typ) {
 13079  		var _r, typ, $s, $r;
 13080  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; typ = $f.typ; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 13081  		_r = MakeMapWithSize(typ, 0); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 13082  		$s = -1; return _r;
 13083  		/* */ } return; } if ($f === undefined) { $f = { $blk: MakeMap }; } $f._r = _r; $f.typ = typ; $f.$s = $s; $f.$r = $r; return $f;
 13084  	};
 13085  	$pkg.MakeMap = MakeMap;
 13086  	MakeMapWithSize = function(typ, n) {
 13087  		var _r, _r$1, m, n, typ, $s, $r;
 13088  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; m = $f.m; n = $f.n; typ = $f.typ; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 13089  		_r = typ.Kind(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 13090  		/* */ if (!((_r === 21))) { $s = 1; continue; }
 13091  		/* */ $s = 2; continue;
 13092  		/* if (!((_r === 21))) { */ case 1:
 13093  			$panic(new $String("reflect.MakeMapWithSize of non-map type"));
 13094  		/* } */ case 2:
 13095  		m = makemap($assertType(typ, ptrType$1), n);
 13096  		_r$1 = typ.common(); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 13097  		$s = -1; return new Value.ptr(_r$1, m, 21);
 13098  		/* */ } return; } if ($f === undefined) { $f = { $blk: MakeMapWithSize }; } $f._r = _r; $f._r$1 = _r$1; $f.m = m; $f.n = n; $f.typ = typ; $f.$s = $s; $f.$r = $r; return $f;
 13099  	};
 13100  	$pkg.MakeMapWithSize = MakeMapWithSize;
 13101  	New = function(typ) {
 13102  		var _r, _r$1, fl, ptr, typ, $s, $r;
 13103  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; fl = $f.fl; ptr = $f.ptr; typ = $f.typ; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 13104  		if ($interfaceIsEqual(typ, $ifaceNil)) {
 13105  			$panic(new $String("reflect: New(nil)"));
 13106  		}
 13107  		ptr = unsafe_New($assertType(typ, ptrType$1));
 13108  		fl = 22;
 13109  		_r = typ.common(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 13110  		_r$1 = _r.ptrTo(); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 13111  		$s = -1; return new Value.ptr(_r$1, ptr, fl);
 13112  		/* */ } return; } if ($f === undefined) { $f = { $blk: New }; } $f._r = _r; $f._r$1 = _r$1; $f.fl = fl; $f.ptr = ptr; $f.typ = typ; $f.$s = $s; $f.$r = $r; return $f;
 13113  	};
 13114  	$pkg.New = New;
 13115  	Value.ptr.prototype.Convert = function(t) {
 13116  		var _r, _r$1, _r$2, _r$3, _r$4, op, t, v, $s, $r;
 13117  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; op = $f.op; t = $f.t; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 13118  		v = this;
 13119  		/* */ if (!((((v.flag & 512) >>> 0) === 0))) { $s = 1; continue; }
 13120  		/* */ $s = 2; continue;
 13121  		/* if (!((((v.flag & 512) >>> 0) === 0))) { */ case 1:
 13122  			_r = makeMethodValue("Convert", $clone(v, Value)); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 13123  			v = _r;
 13124  		/* } */ case 2:
 13125  		_r$1 = t.common(); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 13126  		_r$2 = convertOp(_r$1, v.typ); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 13127  		op = _r$2;
 13128  		/* */ if (op === $throwNilPointerError) { $s = 6; continue; }
 13129  		/* */ $s = 7; continue;
 13130  		/* if (op === $throwNilPointerError) { */ case 6:
 13131  			_r$3 = t.String(); /* */ $s = 8; case 8: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 13132  			$panic(new $String("reflect.Value.Convert: value of type " + v.typ.String() + " cannot be converted to type " + _r$3));
 13133  		/* } */ case 7:
 13134  		_r$4 = op($clone(v, Value), t); /* */ $s = 9; case 9: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 13135  		$s = -1; return _r$4;
 13136  		/* */ } return; } if ($f === undefined) { $f = { $blk: Value.ptr.prototype.Convert }; } $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f.op = op; $f.t = t; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
 13137  	};
 13138  	Value.prototype.Convert = function(t) { return this.$val.Convert(t); };
 13139  	convertOp = function(dst, src) {
 13140  		var _1, _2, _3, _4, _5, _6, _7, _arg, _arg$1, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _v, _v$1, _v$2, dst, src, $s, $r;
 13141  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _2 = $f._2; _3 = $f._3; _4 = $f._4; _5 = $f._5; _6 = $f._6; _7 = $f._7; _arg = $f._arg; _arg$1 = $f._arg$1; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _v = $f._v; _v$1 = $f._v$1; _v$2 = $f._v$2; dst = $f.dst; src = $f.src; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 13142  			_1 = src.Kind();
 13143  			/* */ if ((_1 === (2)) || (_1 === (3)) || (_1 === (4)) || (_1 === (5)) || (_1 === (6))) { $s = 2; continue; }
 13144  			/* */ if ((_1 === (7)) || (_1 === (8)) || (_1 === (9)) || (_1 === (10)) || (_1 === (11)) || (_1 === (12))) { $s = 3; continue; }
 13145  			/* */ if ((_1 === (13)) || (_1 === (14))) { $s = 4; continue; }
 13146  			/* */ if ((_1 === (15)) || (_1 === (16))) { $s = 5; continue; }
 13147  			/* */ if (_1 === (24)) { $s = 6; continue; }
 13148  			/* */ if (_1 === (23)) { $s = 7; continue; }
 13149  			/* */ $s = 8; continue;
 13150  			/* if ((_1 === (2)) || (_1 === (3)) || (_1 === (4)) || (_1 === (5)) || (_1 === (6))) { */ case 2:
 13151  				_2 = dst.Kind();
 13152  				if ((_2 === (2)) || (_2 === (3)) || (_2 === (4)) || (_2 === (5)) || (_2 === (6)) || (_2 === (7)) || (_2 === (8)) || (_2 === (9)) || (_2 === (10)) || (_2 === (11)) || (_2 === (12))) {
 13153  					$s = -1; return cvtInt;
 13154  				} else if ((_2 === (13)) || (_2 === (14))) {
 13155  					$s = -1; return cvtIntFloat;
 13156  				} else if (_2 === (24)) {
 13157  					$s = -1; return cvtIntString;
 13158  				}
 13159  				$s = 8; continue;
 13160  			/* } else if ((_1 === (7)) || (_1 === (8)) || (_1 === (9)) || (_1 === (10)) || (_1 === (11)) || (_1 === (12))) { */ case 3:
 13161  				_3 = dst.Kind();
 13162  				if ((_3 === (2)) || (_3 === (3)) || (_3 === (4)) || (_3 === (5)) || (_3 === (6)) || (_3 === (7)) || (_3 === (8)) || (_3 === (9)) || (_3 === (10)) || (_3 === (11)) || (_3 === (12))) {
 13163  					$s = -1; return cvtUint;
 13164  				} else if ((_3 === (13)) || (_3 === (14))) {
 13165  					$s = -1; return cvtUintFloat;
 13166  				} else if (_3 === (24)) {
 13167  					$s = -1; return cvtUintString;
 13168  				}
 13169  				$s = 8; continue;
 13170  			/* } else if ((_1 === (13)) || (_1 === (14))) { */ case 4:
 13171  				_4 = dst.Kind();
 13172  				if ((_4 === (2)) || (_4 === (3)) || (_4 === (4)) || (_4 === (5)) || (_4 === (6))) {
 13173  					$s = -1; return cvtFloatInt;
 13174  				} else if ((_4 === (7)) || (_4 === (8)) || (_4 === (9)) || (_4 === (10)) || (_4 === (11)) || (_4 === (12))) {
 13175  					$s = -1; return cvtFloatUint;
 13176  				} else if ((_4 === (13)) || (_4 === (14))) {
 13177  					$s = -1; return cvtFloat;
 13178  				}
 13179  				$s = 8; continue;
 13180  			/* } else if ((_1 === (15)) || (_1 === (16))) { */ case 5:
 13181  				_5 = dst.Kind();
 13182  				if ((_5 === (15)) || (_5 === (16))) {
 13183  					$s = -1; return cvtComplex;
 13184  				}
 13185  				$s = 8; continue;
 13186  			/* } else if (_1 === (24)) { */ case 6:
 13187  				if (!(dst.Kind() === 23)) { _v = false; $s = 11; continue s; }
 13188  				_r = dst.Elem().PkgPath(); /* */ $s = 12; case 12: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 13189  				_v = _r === ""; case 11:
 13190  				/* */ if (_v) { $s = 9; continue; }
 13191  				/* */ $s = 10; continue;
 13192  				/* if (_v) { */ case 9:
 13193  						_r$1 = dst.Elem().Kind(); /* */ $s = 14; case 14: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 13194  						_6 = _r$1;
 13195  						if (_6 === (8)) {
 13196  							$s = -1; return cvtStringBytes;
 13197  						} else if (_6 === (5)) {
 13198  							$s = -1; return cvtStringRunes;
 13199  						}
 13200  					case 13:
 13201  				/* } */ case 10:
 13202  				$s = 8; continue;
 13203  			/* } else if (_1 === (23)) { */ case 7:
 13204  				if (!(dst.Kind() === 24)) { _v$1 = false; $s = 17; continue s; }
 13205  				_r$2 = src.Elem().PkgPath(); /* */ $s = 18; case 18: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 13206  				_v$1 = _r$2 === ""; case 17:
 13207  				/* */ if (_v$1) { $s = 15; continue; }
 13208  				/* */ $s = 16; continue;
 13209  				/* if (_v$1) { */ case 15:
 13210  						_r$3 = src.Elem().Kind(); /* */ $s = 20; case 20: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 13211  						_7 = _r$3;
 13212  						if (_7 === (8)) {
 13213  							$s = -1; return cvtBytesString;
 13214  						} else if (_7 === (5)) {
 13215  							$s = -1; return cvtRunesString;
 13216  						}
 13217  					case 19:
 13218  				/* } */ case 16:
 13219  			/* } */ case 8:
 13220  		case 1:
 13221  		_r$4 = haveIdenticalUnderlyingType(dst, src, false); /* */ $s = 23; case 23: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 13222  		/* */ if (_r$4) { $s = 21; continue; }
 13223  		/* */ $s = 22; continue;
 13224  		/* if (_r$4) { */ case 21:
 13225  			$s = -1; return cvtDirect;
 13226  		/* } */ case 22:
 13227  		if (!((dst.Kind() === 22) && dst.Name() === "" && (src.Kind() === 22) && src.Name() === "")) { _v$2 = false; $s = 26; continue s; }
 13228  		_r$5 = dst.Elem().common(); /* */ $s = 27; case 27: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
 13229  		_arg = _r$5;
 13230  		_r$6 = src.Elem().common(); /* */ $s = 28; case 28: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
 13231  		_arg$1 = _r$6;
 13232  		_r$7 = haveIdenticalUnderlyingType(_arg, _arg$1, false); /* */ $s = 29; case 29: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
 13233  		_v$2 = _r$7; case 26:
 13234  		/* */ if (_v$2) { $s = 24; continue; }
 13235  		/* */ $s = 25; continue;
 13236  		/* if (_v$2) { */ case 24:
 13237  			$s = -1; return cvtDirect;
 13238  		/* } */ case 25:
 13239  		if (implements$1(dst, src)) {
 13240  			if (src.Kind() === 20) {
 13241  				$s = -1; return cvtI2I;
 13242  			}
 13243  			$s = -1; return cvtT2I;
 13244  		}
 13245  		$s = -1; return $throwNilPointerError;
 13246  		/* */ } return; } if ($f === undefined) { $f = { $blk: convertOp }; } $f._1 = _1; $f._2 = _2; $f._3 = _3; $f._4 = _4; $f._5 = _5; $f._6 = _6; $f._7 = _7; $f._arg = _arg; $f._arg$1 = _arg$1; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._v = _v; $f._v$1 = _v$1; $f._v$2 = _v$2; $f.dst = dst; $f.src = src; $f.$s = $s; $f.$r = $r; return $f;
 13247  	};
 13248  	makeFloat = function(f, v, t) {
 13249  		var _1, _r, f, ptr, t, typ, v, $s, $r;
 13250  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _r = $f._r; f = $f.f; ptr = $f.ptr; t = $f.t; typ = $f.typ; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 13251  		_r = t.common(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 13252  		typ = _r;
 13253  		ptr = unsafe_New(typ);
 13254  		_1 = typ.size;
 13255  		if (_1 === (4)) {
 13256  			(ptr).$set(($fround(v)));
 13257  		} else if (_1 === (8)) {
 13258  			(ptr).$set(v);
 13259  		}
 13260  		$s = -1; return new Value.ptr(typ, ptr, (((f | 128) >>> 0) | ((typ.Kind() >>> 0))) >>> 0);
 13261  		/* */ } return; } if ($f === undefined) { $f = { $blk: makeFloat }; } $f._1 = _1; $f._r = _r; $f.f = f; $f.ptr = ptr; $f.t = t; $f.typ = typ; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
 13262  	};
 13263  	makeComplex = function(f, v, t) {
 13264  		var _1, _r, f, ptr, t, typ, v, $s, $r;
 13265  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _r = $f._r; f = $f.f; ptr = $f.ptr; t = $f.t; typ = $f.typ; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 13266  		_r = t.common(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 13267  		typ = _r;
 13268  		ptr = unsafe_New(typ);
 13269  		_1 = typ.size;
 13270  		if (_1 === (8)) {
 13271  			(ptr).$set((new $Complex64(v.$real, v.$imag)));
 13272  		} else if (_1 === (16)) {
 13273  			(ptr).$set(v);
 13274  		}
 13275  		$s = -1; return new Value.ptr(typ, ptr, (((f | 128) >>> 0) | ((typ.Kind() >>> 0))) >>> 0);
 13276  		/* */ } return; } if ($f === undefined) { $f = { $blk: makeComplex }; } $f._1 = _1; $f._r = _r; $f.f = f; $f.ptr = ptr; $f.t = t; $f.typ = typ; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
 13277  	};
 13278  	makeString = function(f, v, t) {
 13279  		var _r, _r$1, f, ret, t, v, $s, $r;
 13280  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; f = $f.f; ret = $f.ret; t = $f.t; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 13281  		_r = New(t); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 13282  		_r$1 = $clone(_r, Value).Elem(); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 13283  		ret = _r$1;
 13284  		$clone(ret, Value).SetString(v);
 13285  		ret.flag = (((ret.flag & ~256) >>> 0) | f) >>> 0;
 13286  		$s = -1; return ret;
 13287  		/* */ } return; } if ($f === undefined) { $f = { $blk: makeString }; } $f._r = _r; $f._r$1 = _r$1; $f.f = f; $f.ret = ret; $f.t = t; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
 13288  	};
 13289  	makeBytes = function(f, v, t) {
 13290  		var _r, _r$1, f, ret, t, v, $s, $r;
 13291  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; f = $f.f; ret = $f.ret; t = $f.t; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 13292  		_r = New(t); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 13293  		_r$1 = $clone(_r, Value).Elem(); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 13294  		ret = _r$1;
 13295  		$r = $clone(ret, Value).SetBytes(v); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 13296  		ret.flag = (((ret.flag & ~256) >>> 0) | f) >>> 0;
 13297  		$s = -1; return ret;
 13298  		/* */ } return; } if ($f === undefined) { $f = { $blk: makeBytes }; } $f._r = _r; $f._r$1 = _r$1; $f.f = f; $f.ret = ret; $f.t = t; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
 13299  	};
 13300  	makeRunes = function(f, v, t) {
 13301  		var _r, _r$1, f, ret, t, v, $s, $r;
 13302  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; f = $f.f; ret = $f.ret; t = $f.t; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 13303  		_r = New(t); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 13304  		_r$1 = $clone(_r, Value).Elem(); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 13305  		ret = _r$1;
 13306  		$r = $clone(ret, Value).setRunes(v); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 13307  		ret.flag = (((ret.flag & ~256) >>> 0) | f) >>> 0;
 13308  		$s = -1; return ret;
 13309  		/* */ } return; } if ($f === undefined) { $f = { $blk: makeRunes }; } $f._r = _r; $f._r$1 = _r$1; $f.f = f; $f.ret = ret; $f.t = t; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
 13310  	};
 13311  	cvtInt = function(v, t) {
 13312  		var _r, t, v, x, $s, $r;
 13313  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; t = $f.t; v = $f.v; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 13314  		_r = makeInt(new flag(v.flag).ro(), ((x = $clone(v, Value).Int(), new $Uint64(x.$high, x.$low))), t); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 13315  		$s = -1; return _r;
 13316  		/* */ } return; } if ($f === undefined) { $f = { $blk: cvtInt }; } $f._r = _r; $f.t = t; $f.v = v; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
 13317  	};
 13318  	cvtUint = function(v, t) {
 13319  		var _r, t, v, $s, $r;
 13320  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; t = $f.t; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 13321  		_r = makeInt(new flag(v.flag).ro(), $clone(v, Value).Uint(), t); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 13322  		$s = -1; return _r;
 13323  		/* */ } return; } if ($f === undefined) { $f = { $blk: cvtUint }; } $f._r = _r; $f.t = t; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
 13324  	};
 13325  	cvtFloatInt = function(v, t) {
 13326  		var _r, t, v, x, $s, $r;
 13327  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; t = $f.t; v = $f.v; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 13328  		_r = makeInt(new flag(v.flag).ro(), ((x = (new $Int64(0, $clone(v, Value).Float())), new $Uint64(x.$high, x.$low))), t); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 13329  		$s = -1; return _r;
 13330  		/* */ } return; } if ($f === undefined) { $f = { $blk: cvtFloatInt }; } $f._r = _r; $f.t = t; $f.v = v; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
 13331  	};
 13332  	cvtFloatUint = function(v, t) {
 13333  		var _r, t, v, $s, $r;
 13334  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; t = $f.t; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 13335  		_r = makeInt(new flag(v.flag).ro(), (new $Uint64(0, $clone(v, Value).Float())), t); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 13336  		$s = -1; return _r;
 13337  		/* */ } return; } if ($f === undefined) { $f = { $blk: cvtFloatUint }; } $f._r = _r; $f.t = t; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
 13338  	};
 13339  	cvtIntFloat = function(v, t) {
 13340  		var _r, t, v, $s, $r;
 13341  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; t = $f.t; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 13342  		_r = makeFloat(new flag(v.flag).ro(), ($flatten64($clone(v, Value).Int())), t); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 13343  		$s = -1; return _r;
 13344  		/* */ } return; } if ($f === undefined) { $f = { $blk: cvtIntFloat }; } $f._r = _r; $f.t = t; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
 13345  	};
 13346  	cvtUintFloat = function(v, t) {
 13347  		var _r, t, v, $s, $r;
 13348  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; t = $f.t; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 13349  		_r = makeFloat(new flag(v.flag).ro(), ($flatten64($clone(v, Value).Uint())), t); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 13350  		$s = -1; return _r;
 13351  		/* */ } return; } if ($f === undefined) { $f = { $blk: cvtUintFloat }; } $f._r = _r; $f.t = t; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
 13352  	};
 13353  	cvtFloat = function(v, t) {
 13354  		var _r, t, v, $s, $r;
 13355  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; t = $f.t; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 13356  		_r = makeFloat(new flag(v.flag).ro(), $clone(v, Value).Float(), t); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 13357  		$s = -1; return _r;
 13358  		/* */ } return; } if ($f === undefined) { $f = { $blk: cvtFloat }; } $f._r = _r; $f.t = t; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
 13359  	};
 13360  	cvtComplex = function(v, t) {
 13361  		var _r, t, v, $s, $r;
 13362  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; t = $f.t; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 13363  		_r = makeComplex(new flag(v.flag).ro(), $clone(v, Value).Complex(), t); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 13364  		$s = -1; return _r;
 13365  		/* */ } return; } if ($f === undefined) { $f = { $blk: cvtComplex }; } $f._r = _r; $f.t = t; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
 13366  	};
 13367  	cvtIntString = function(v, t) {
 13368  		var _r, t, v, $s, $r;
 13369  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; t = $f.t; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 13370  		_r = makeString(new flag(v.flag).ro(), ($encodeRune($clone(v, Value).Int().$low)), t); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 13371  		$s = -1; return _r;
 13372  		/* */ } return; } if ($f === undefined) { $f = { $blk: cvtIntString }; } $f._r = _r; $f.t = t; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
 13373  	};
 13374  	cvtUintString = function(v, t) {
 13375  		var _r, t, v, $s, $r;
 13376  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; t = $f.t; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 13377  		_r = makeString(new flag(v.flag).ro(), ($encodeRune($clone(v, Value).Uint().$low)), t); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 13378  		$s = -1; return _r;
 13379  		/* */ } return; } if ($f === undefined) { $f = { $blk: cvtUintString }; } $f._r = _r; $f.t = t; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
 13380  	};
 13381  	cvtBytesString = function(v, t) {
 13382  		var _arg, _arg$1, _arg$2, _r, _r$1, t, v, $s, $r;
 13383  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _arg = $f._arg; _arg$1 = $f._arg$1; _arg$2 = $f._arg$2; _r = $f._r; _r$1 = $f._r$1; t = $f.t; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 13384  		_arg = new flag(v.flag).ro();
 13385  		_r = $clone(v, Value).Bytes(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 13386  		_arg$1 = ($bytesToString(_r));
 13387  		_arg$2 = t;
 13388  		_r$1 = makeString(_arg, _arg$1, _arg$2); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 13389  		$s = -1; return _r$1;
 13390  		/* */ } return; } if ($f === undefined) { $f = { $blk: cvtBytesString }; } $f._arg = _arg; $f._arg$1 = _arg$1; $f._arg$2 = _arg$2; $f._r = _r; $f._r$1 = _r$1; $f.t = t; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
 13391  	};
 13392  	cvtStringBytes = function(v, t) {
 13393  		var _arg, _arg$1, _arg$2, _r, _r$1, t, v, $s, $r;
 13394  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _arg = $f._arg; _arg$1 = $f._arg$1; _arg$2 = $f._arg$2; _r = $f._r; _r$1 = $f._r$1; t = $f.t; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 13395  		_arg = new flag(v.flag).ro();
 13396  		_r = $clone(v, Value).String(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 13397  		_arg$1 = (new sliceType$15($stringToBytes(_r)));
 13398  		_arg$2 = t;
 13399  		_r$1 = makeBytes(_arg, _arg$1, _arg$2); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 13400  		$s = -1; return _r$1;
 13401  		/* */ } return; } if ($f === undefined) { $f = { $blk: cvtStringBytes }; } $f._arg = _arg; $f._arg$1 = _arg$1; $f._arg$2 = _arg$2; $f._r = _r; $f._r$1 = _r$1; $f.t = t; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
 13402  	};
 13403  	cvtRunesString = function(v, t) {
 13404  		var _arg, _arg$1, _arg$2, _r, _r$1, t, v, $s, $r;
 13405  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _arg = $f._arg; _arg$1 = $f._arg$1; _arg$2 = $f._arg$2; _r = $f._r; _r$1 = $f._r$1; t = $f.t; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 13406  		_arg = new flag(v.flag).ro();
 13407  		_r = $clone(v, Value).runes(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 13408  		_arg$1 = ($runesToString(_r));
 13409  		_arg$2 = t;
 13410  		_r$1 = makeString(_arg, _arg$1, _arg$2); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 13411  		$s = -1; return _r$1;
 13412  		/* */ } return; } if ($f === undefined) { $f = { $blk: cvtRunesString }; } $f._arg = _arg; $f._arg$1 = _arg$1; $f._arg$2 = _arg$2; $f._r = _r; $f._r$1 = _r$1; $f.t = t; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
 13413  	};
 13414  	cvtStringRunes = function(v, t) {
 13415  		var _arg, _arg$1, _arg$2, _r, _r$1, t, v, $s, $r;
 13416  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _arg = $f._arg; _arg$1 = $f._arg$1; _arg$2 = $f._arg$2; _r = $f._r; _r$1 = $f._r$1; t = $f.t; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 13417  		_arg = new flag(v.flag).ro();
 13418  		_r = $clone(v, Value).String(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 13419  		_arg$1 = (new sliceType$17($stringToRunes(_r)));
 13420  		_arg$2 = t;
 13421  		_r$1 = makeRunes(_arg, _arg$1, _arg$2); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 13422  		$s = -1; return _r$1;
 13423  		/* */ } return; } if ($f === undefined) { $f = { $blk: cvtStringRunes }; } $f._arg = _arg; $f._arg$1 = _arg$1; $f._arg$2 = _arg$2; $f._r = _r; $f._r$1 = _r$1; $f.t = t; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
 13424  	};
 13425  	cvtT2I = function(v, typ) {
 13426  		var _r, _r$1, _r$2, _r$3, _r$4, target, typ, v, x, $s, $r;
 13427  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; target = $f.target; typ = $f.typ; v = $f.v; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 13428  		_r = typ.common(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 13429  		_r$1 = unsafe_New(_r); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 13430  		target = _r$1;
 13431  		_r$2 = valueInterface($clone(v, Value), false); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 13432  		x = _r$2;
 13433  		_r$3 = typ.NumMethod(); /* */ $s = 7; case 7: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 13434  		/* */ if (_r$3 === 0) { $s = 4; continue; }
 13435  		/* */ $s = 5; continue;
 13436  		/* if (_r$3 === 0) { */ case 4:
 13437  			(target).$set(x);
 13438  			$s = 6; continue;
 13439  		/* } else { */ case 5:
 13440  			ifaceE2I($assertType(typ, ptrType$1), x, target);
 13441  		/* } */ case 6:
 13442  		_r$4 = typ.common(); /* */ $s = 8; case 8: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 13443  		$s = -1; return new Value.ptr(_r$4, target, (((new flag(v.flag).ro() | 128) >>> 0) | 20) >>> 0);
 13444  		/* */ } return; } if ($f === undefined) { $f = { $blk: cvtT2I }; } $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f.target = target; $f.typ = typ; $f.v = v; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
 13445  	};
 13446  	cvtI2I = function(v, typ) {
 13447  		var _r, _r$1, _r$2, ret, typ, v, $s, $r;
 13448  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; ret = $f.ret; typ = $f.typ; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 13449  		/* */ if ($clone(v, Value).IsNil()) { $s = 1; continue; }
 13450  		/* */ $s = 2; continue;
 13451  		/* if ($clone(v, Value).IsNil()) { */ case 1:
 13452  			_r = Zero(typ); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 13453  			ret = _r;
 13454  			ret.flag = (ret.flag | (new flag(v.flag).ro())) >>> 0;
 13455  			$s = -1; return ret;
 13456  		/* } */ case 2:
 13457  		_r$1 = $clone(v, Value).Elem(); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 13458  		_r$2 = cvtT2I($clone(_r$1, Value), typ); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 13459  		$s = -1; return _r$2;
 13460  		/* */ } return; } if ($f === undefined) { $f = { $blk: cvtI2I }; } $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f.ret = ret; $f.typ = typ; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
 13461  	};
 13462  	ptrType$5.methods = [{prop: "methods", name: "methods", pkg: "reflect", typ: $funcType([], [sliceType$5], false)}];
 13463  	ptrType$16.methods = [{prop: "in$", name: "in", pkg: "reflect", typ: $funcType([], [sliceType$2], false)}, {prop: "out", name: "out", pkg: "reflect", typ: $funcType([], [sliceType$2], false)}];
 13464  	name.methods = [{prop: "name", name: "name", pkg: "reflect", typ: $funcType([], [$String], false)}, {prop: "tag", name: "tag", pkg: "reflect", typ: $funcType([], [$String], false)}, {prop: "pkgPath", name: "pkgPath", pkg: "reflect", typ: $funcType([], [$String], false)}, {prop: "isExported", name: "isExported", pkg: "reflect", typ: $funcType([], [$Bool], false)}, {prop: "data", name: "data", pkg: "reflect", typ: $funcType([$Int, $String], [ptrType$4], false)}, {prop: "nameLen", name: "nameLen", pkg: "reflect", typ: $funcType([], [$Int], false)}, {prop: "tagLen", name: "tagLen", pkg: "reflect", typ: $funcType([], [$Int], false)}];
 13465  	Kind.methods = [{prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}];
 13466  	ptrType$1.methods = [{prop: "uncommon", name: "uncommon", pkg: "reflect", typ: $funcType([], [ptrType$5], false)}, {prop: "nameOff", name: "nameOff", pkg: "reflect", typ: $funcType([nameOff], [name], false)}, {prop: "typeOff", name: "typeOff", pkg: "reflect", typ: $funcType([typeOff], [ptrType$1], false)}, {prop: "ptrTo", name: "ptrTo", pkg: "reflect", typ: $funcType([], [ptrType$1], false)}, {prop: "pointers", name: "pointers", pkg: "reflect", typ: $funcType([], [$Bool], false)}, {prop: "Comparable", name: "Comparable", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "Method", name: "Method", pkg: "", typ: $funcType([$Int], [Method], false)}, {prop: "textOff", name: "textOff", pkg: "reflect", typ: $funcType([textOff], [$UnsafePointer], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Size", name: "Size", pkg: "", typ: $funcType([], [$Uintptr], false)}, {prop: "Bits", name: "Bits", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Align", name: "Align", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "FieldAlign", name: "FieldAlign", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Kind", name: "Kind", pkg: "", typ: $funcType([], [Kind], false)}, {prop: "common", name: "common", pkg: "reflect", typ: $funcType([], [ptrType$1], false)}, {prop: "exportedMethods", name: "exportedMethods", pkg: "reflect", typ: $funcType([], [sliceType$5], false)}, {prop: "NumMethod", name: "NumMethod", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "MethodByName", name: "MethodByName", pkg: "", typ: $funcType([$String], [Method, $Bool], false)}, {prop: "PkgPath", name: "PkgPath", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Name", name: "Name", pkg: "", typ: $funcType([], [$String], false)}, {prop: "ChanDir", name: "ChanDir", pkg: "", typ: $funcType([], [ChanDir], false)}, {prop: "IsVariadic", name: "IsVariadic", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "Elem", name: "Elem", pkg: "", typ: $funcType([], [Type], false)}, {prop: "Field", name: "Field", pkg: "", typ: $funcType([$Int], [StructField], false)}, {prop: "FieldByIndex", name: "FieldByIndex", pkg: "", typ: $funcType([sliceType$13], [StructField], false)}, {prop: "FieldByName", name: "FieldByName", pkg: "", typ: $funcType([$String], [StructField, $Bool], false)}, {prop: "FieldByNameFunc", name: "FieldByNameFunc", pkg: "", typ: $funcType([funcType$3], [StructField, $Bool], false)}, {prop: "In", name: "In", pkg: "", typ: $funcType([$Int], [Type], false)}, {prop: "Key", name: "Key", pkg: "", typ: $funcType([], [Type], false)}, {prop: "Len", name: "Len", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "NumField", name: "NumField", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "NumIn", name: "NumIn", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "NumOut", name: "NumOut", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Out", name: "Out", pkg: "", typ: $funcType([$Int], [Type], false)}, {prop: "Implements", name: "Implements", pkg: "", typ: $funcType([Type], [$Bool], false)}, {prop: "AssignableTo", name: "AssignableTo", pkg: "", typ: $funcType([Type], [$Bool], false)}, {prop: "ConvertibleTo", name: "ConvertibleTo", pkg: "", typ: $funcType([Type], [$Bool], false)}];
 13467  	ChanDir.methods = [{prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}];
 13468  	ptrType$7.methods = [{prop: "Method", name: "Method", pkg: "", typ: $funcType([$Int], [Method], false)}, {prop: "NumMethod", name: "NumMethod", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "MethodByName", name: "MethodByName", pkg: "", typ: $funcType([$String], [Method, $Bool], false)}];
 13469  	ptrType$17.methods = [{prop: "offset", name: "offset", pkg: "reflect", typ: $funcType([], [$Uintptr], false)}, {prop: "anon", name: "anon", pkg: "reflect", typ: $funcType([], [$Bool], false)}];
 13470  	ptrType$9.methods = [{prop: "Field", name: "Field", pkg: "", typ: $funcType([$Int], [StructField], false)}, {prop: "FieldByIndex", name: "FieldByIndex", pkg: "", typ: $funcType([sliceType$13], [StructField], false)}, {prop: "FieldByNameFunc", name: "FieldByNameFunc", pkg: "", typ: $funcType([funcType$3], [StructField, $Bool], false)}, {prop: "FieldByName", name: "FieldByName", pkg: "", typ: $funcType([$String], [StructField, $Bool], false)}];
 13471  	StructTag.methods = [{prop: "Get", name: "Get", pkg: "", typ: $funcType([$String], [$String], false)}, {prop: "Lookup", name: "Lookup", pkg: "", typ: $funcType([$String], [$String, $Bool], false)}];
 13472  	Value.methods = [{prop: "object", name: "object", pkg: "reflect", typ: $funcType([], [ptrType$2], false)}, {prop: "assignTo", name: "assignTo", pkg: "reflect", typ: $funcType([$String, ptrType$1, $UnsafePointer], [Value], false)}, {prop: "call", name: "call", pkg: "reflect", typ: $funcType([$String, sliceType$9], [sliceType$9], false)}, {prop: "Cap", name: "Cap", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Elem", name: "Elem", pkg: "", typ: $funcType([], [Value], false)}, {prop: "Field", name: "Field", pkg: "", typ: $funcType([$Int], [Value], false)}, {prop: "Index", name: "Index", pkg: "", typ: $funcType([$Int], [Value], false)}, {prop: "InterfaceData", name: "InterfaceData", pkg: "", typ: $funcType([], [arrayType$12], false)}, {prop: "IsNil", name: "IsNil", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "Len", name: "Len", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Pointer", name: "Pointer", pkg: "", typ: $funcType([], [$Uintptr], false)}, {prop: "Set", name: "Set", pkg: "", typ: $funcType([Value], [], false)}, {prop: "SetBytes", name: "SetBytes", pkg: "", typ: $funcType([sliceType$15], [], false)}, {prop: "SetCap", name: "SetCap", pkg: "", typ: $funcType([$Int], [], false)}, {prop: "SetLen", name: "SetLen", pkg: "", typ: $funcType([$Int], [], false)}, {prop: "Slice", name: "Slice", pkg: "", typ: $funcType([$Int, $Int], [Value], false)}, {prop: "Slice3", name: "Slice3", pkg: "", typ: $funcType([$Int, $Int, $Int], [Value], false)}, {prop: "Close", name: "Close", pkg: "", typ: $funcType([], [], false)}, {prop: "pointer", name: "pointer", pkg: "reflect", typ: $funcType([], [$UnsafePointer], false)}, {prop: "Addr", name: "Addr", pkg: "", typ: $funcType([], [Value], false)}, {prop: "Bool", name: "Bool", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "Bytes", name: "Bytes", pkg: "", typ: $funcType([], [sliceType$15], false)}, {prop: "runes", name: "runes", pkg: "reflect", typ: $funcType([], [sliceType$17], false)}, {prop: "CanAddr", name: "CanAddr", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "CanSet", name: "CanSet", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "Call", name: "Call", pkg: "", typ: $funcType([sliceType$9], [sliceType$9], false)}, {prop: "CallSlice", name: "CallSlice", pkg: "", typ: $funcType([sliceType$9], [sliceType$9], false)}, {prop: "Complex", name: "Complex", pkg: "", typ: $funcType([], [$Complex128], false)}, {prop: "FieldByIndex", name: "FieldByIndex", pkg: "", typ: $funcType([sliceType$13], [Value], false)}, {prop: "FieldByName", name: "FieldByName", pkg: "", typ: $funcType([$String], [Value], false)}, {prop: "FieldByNameFunc", name: "FieldByNameFunc", pkg: "", typ: $funcType([funcType$3], [Value], false)}, {prop: "Float", name: "Float", pkg: "", typ: $funcType([], [$Float64], false)}, {prop: "Int", name: "Int", pkg: "", typ: $funcType([], [$Int64], false)}, {prop: "CanInterface", name: "CanInterface", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "Interface", name: "Interface", pkg: "", typ: $funcType([], [$emptyInterface], false)}, {prop: "IsValid", name: "IsValid", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "Kind", name: "Kind", pkg: "", typ: $funcType([], [Kind], false)}, {prop: "MapIndex", name: "MapIndex", pkg: "", typ: $funcType([Value], [Value], false)}, {prop: "MapKeys", name: "MapKeys", pkg: "", typ: $funcType([], [sliceType$9], false)}, {prop: "Method", name: "Method", pkg: "", typ: $funcType([$Int], [Value], false)}, {prop: "NumMethod", name: "NumMethod", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "MethodByName", name: "MethodByName", pkg: "", typ: $funcType([$String], [Value], false)}, {prop: "NumField", name: "NumField", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "OverflowComplex", name: "OverflowComplex", pkg: "", typ: $funcType([$Complex128], [$Bool], false)}, {prop: "OverflowFloat", name: "OverflowFloat", pkg: "", typ: $funcType([$Float64], [$Bool], false)}, {prop: "OverflowInt", name: "OverflowInt", pkg: "", typ: $funcType([$Int64], [$Bool], false)}, {prop: "OverflowUint", name: "OverflowUint", pkg: "", typ: $funcType([$Uint64], [$Bool], false)}, {prop: "Recv", name: "Recv", pkg: "", typ: $funcType([], [Value, $Bool], false)}, {prop: "recv", name: "recv", pkg: "reflect", typ: $funcType([$Bool], [Value, $Bool], false)}, {prop: "Send", name: "Send", pkg: "", typ: $funcType([Value], [], false)}, {prop: "send", name: "send", pkg: "reflect", typ: $funcType([Value, $Bool], [$Bool], false)}, {prop: "SetBool", name: "SetBool", pkg: "", typ: $funcType([$Bool], [], false)}, {prop: "setRunes", name: "setRunes", pkg: "reflect", typ: $funcType([sliceType$17], [], false)}, {prop: "SetComplex", name: "SetComplex", pkg: "", typ: $funcType([$Complex128], [], false)}, {prop: "SetFloat", name: "SetFloat", pkg: "", typ: $funcType([$Float64], [], false)}, {prop: "SetInt", name: "SetInt", pkg: "", typ: $funcType([$Int64], [], false)}, {prop: "SetMapIndex", name: "SetMapIndex", pkg: "", typ: $funcType([Value, Value], [], false)}, {prop: "SetUint", name: "SetUint", pkg: "", typ: $funcType([$Uint64], [], false)}, {prop: "SetPointer", name: "SetPointer", pkg: "", typ: $funcType([$UnsafePointer], [], false)}, {prop: "SetString", name: "SetString", pkg: "", typ: $funcType([$String], [], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "TryRecv", name: "TryRecv", pkg: "", typ: $funcType([], [Value, $Bool], false)}, {prop: "TrySend", name: "TrySend", pkg: "", typ: $funcType([Value], [$Bool], false)}, {prop: "Type", name: "Type", pkg: "", typ: $funcType([], [Type], false)}, {prop: "Uint", name: "Uint", pkg: "", typ: $funcType([], [$Uint64], false)}, {prop: "UnsafeAddr", name: "UnsafeAddr", pkg: "", typ: $funcType([], [$Uintptr], false)}, {prop: "Convert", name: "Convert", pkg: "", typ: $funcType([Type], [Value], false)}];
 13473  	flag.methods = [{prop: "kind", name: "kind", pkg: "reflect", typ: $funcType([], [Kind], false)}, {prop: "ro", name: "ro", pkg: "reflect", typ: $funcType([], [flag], false)}, {prop: "mustBe", name: "mustBe", pkg: "reflect", typ: $funcType([Kind], [], false)}, {prop: "mustBeExported", name: "mustBeExported", pkg: "reflect", typ: $funcType([], [], false)}, {prop: "mustBeAssignable", name: "mustBeAssignable", pkg: "reflect", typ: $funcType([], [], false)}];
 13474  	ptrType$18.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}];
 13475  	uncommonType.init("reflect", [{prop: "pkgPath", name: "pkgPath", anonymous: false, exported: false, typ: nameOff, tag: ""}, {prop: "mcount", name: "mcount", anonymous: false, exported: false, typ: $Uint16, tag: ""}, {prop: "_$2", name: "_", anonymous: false, exported: false, typ: $Uint16, tag: ""}, {prop: "moff", name: "moff", anonymous: false, exported: false, typ: $Uint32, tag: ""}, {prop: "_$4", name: "_", anonymous: false, exported: false, typ: $Uint32, tag: ""}, {prop: "_methods", name: "_methods", anonymous: false, exported: false, typ: sliceType$5, tag: ""}]);
 13476  	funcType.init("reflect", [{prop: "rtype", name: "rtype", anonymous: true, exported: false, typ: rtype, tag: "reflect:\"func\""}, {prop: "inCount", name: "inCount", anonymous: false, exported: false, typ: $Uint16, tag: ""}, {prop: "outCount", name: "outCount", anonymous: false, exported: false, typ: $Uint16, tag: ""}, {prop: "_in", name: "_in", anonymous: false, exported: false, typ: sliceType$2, tag: ""}, {prop: "_out", name: "_out", anonymous: false, exported: false, typ: sliceType$2, tag: ""}]);
 13477  	name.init("reflect", [{prop: "bytes", name: "bytes", anonymous: false, exported: false, typ: ptrType$4, tag: ""}]);
 13478  	nameData.init("reflect", [{prop: "name", name: "name", anonymous: false, exported: false, typ: $String, tag: ""}, {prop: "tag", name: "tag", anonymous: false, exported: false, typ: $String, tag: ""}, {prop: "exported", name: "exported", anonymous: false, exported: false, typ: $Bool, tag: ""}]);
 13479  	mapIter.init("reflect", [{prop: "t", name: "t", anonymous: false, exported: false, typ: Type, tag: ""}, {prop: "m", name: "m", anonymous: false, exported: false, typ: ptrType$2, tag: ""}, {prop: "keys", name: "keys", anonymous: false, exported: false, typ: ptrType$2, tag: ""}, {prop: "i", name: "i", anonymous: false, exported: false, typ: $Int, tag: ""}]);
 13480  	Type.init([{prop: "Align", name: "Align", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "AssignableTo", name: "AssignableTo", pkg: "", typ: $funcType([Type], [$Bool], false)}, {prop: "Bits", name: "Bits", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "ChanDir", name: "ChanDir", pkg: "", typ: $funcType([], [ChanDir], false)}, {prop: "Comparable", name: "Comparable", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "ConvertibleTo", name: "ConvertibleTo", pkg: "", typ: $funcType([Type], [$Bool], false)}, {prop: "Elem", name: "Elem", pkg: "", typ: $funcType([], [Type], false)}, {prop: "Field", name: "Field", pkg: "", typ: $funcType([$Int], [StructField], false)}, {prop: "FieldAlign", name: "FieldAlign", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "FieldByIndex", name: "FieldByIndex", pkg: "", typ: $funcType([sliceType$13], [StructField], false)}, {prop: "FieldByName", name: "FieldByName", pkg: "", typ: $funcType([$String], [StructField, $Bool], false)}, {prop: "FieldByNameFunc", name: "FieldByNameFunc", pkg: "", typ: $funcType([funcType$3], [StructField, $Bool], false)}, {prop: "Implements", name: "Implements", pkg: "", typ: $funcType([Type], [$Bool], false)}, {prop: "In", name: "In", pkg: "", typ: $funcType([$Int], [Type], false)}, {prop: "IsVariadic", name: "IsVariadic", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "Key", name: "Key", pkg: "", typ: $funcType([], [Type], false)}, {prop: "Kind", name: "Kind", pkg: "", typ: $funcType([], [Kind], false)}, {prop: "Len", name: "Len", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Method", name: "Method", pkg: "", typ: $funcType([$Int], [Method], false)}, {prop: "MethodByName", name: "MethodByName", pkg: "", typ: $funcType([$String], [Method, $Bool], false)}, {prop: "Name", name: "Name", pkg: "", typ: $funcType([], [$String], false)}, {prop: "NumField", name: "NumField", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "NumIn", name: "NumIn", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "NumMethod", name: "NumMethod", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "NumOut", name: "NumOut", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Out", name: "Out", pkg: "", typ: $funcType([$Int], [Type], false)}, {prop: "PkgPath", name: "PkgPath", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Size", name: "Size", pkg: "", typ: $funcType([], [$Uintptr], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "common", name: "common", pkg: "reflect", typ: $funcType([], [ptrType$1], false)}, {prop: "uncommon", name: "uncommon", pkg: "reflect", typ: $funcType([], [ptrType$5], false)}]);
 13481  	rtype.init("reflect", [{prop: "size", name: "size", anonymous: false, exported: false, typ: $Uintptr, tag: ""}, {prop: "ptrdata", name: "ptrdata", anonymous: false, exported: false, typ: $Uintptr, tag: ""}, {prop: "hash", name: "hash", anonymous: false, exported: false, typ: $Uint32, tag: ""}, {prop: "tflag", name: "tflag", anonymous: false, exported: false, typ: tflag, tag: ""}, {prop: "align", name: "align", anonymous: false, exported: false, typ: $Uint8, tag: ""}, {prop: "fieldAlign", name: "fieldAlign", anonymous: false, exported: false, typ: $Uint8, tag: ""}, {prop: "kind", name: "kind", anonymous: false, exported: false, typ: $Uint8, tag: ""}, {prop: "alg", name: "alg", anonymous: false, exported: false, typ: ptrType$3, tag: ""}, {prop: "gcdata", name: "gcdata", anonymous: false, exported: false, typ: ptrType$4, tag: ""}, {prop: "str", name: "str", anonymous: false, exported: false, typ: nameOff, tag: ""}, {prop: "ptrToThis", name: "ptrToThis", anonymous: false, exported: false, typ: typeOff, tag: ""}]);
 13482  	typeAlg.init("reflect", [{prop: "hash", name: "hash", anonymous: false, exported: false, typ: funcType$4, tag: ""}, {prop: "equal", name: "equal", anonymous: false, exported: false, typ: funcType$5, tag: ""}]);
 13483  	method.init("reflect", [{prop: "name", name: "name", anonymous: false, exported: false, typ: nameOff, tag: ""}, {prop: "mtyp", name: "mtyp", anonymous: false, exported: false, typ: typeOff, tag: ""}, {prop: "ifn", name: "ifn", anonymous: false, exported: false, typ: textOff, tag: ""}, {prop: "tfn", name: "tfn", anonymous: false, exported: false, typ: textOff, tag: ""}]);
 13484  	arrayType.init("reflect", [{prop: "rtype", name: "rtype", anonymous: true, exported: false, typ: rtype, tag: "reflect:\"array\""}, {prop: "elem", name: "elem", anonymous: false, exported: false, typ: ptrType$1, tag: ""}, {prop: "slice", name: "slice", anonymous: false, exported: false, typ: ptrType$1, tag: ""}, {prop: "len", name: "len", anonymous: false, exported: false, typ: $Uintptr, tag: ""}]);
 13485  	chanType.init("reflect", [{prop: "rtype", name: "rtype", anonymous: true, exported: false, typ: rtype, tag: "reflect:\"chan\""}, {prop: "elem", name: "elem", anonymous: false, exported: false, typ: ptrType$1, tag: ""}, {prop: "dir", name: "dir", anonymous: false, exported: false, typ: $Uintptr, tag: ""}]);
 13486  	imethod.init("reflect", [{prop: "name", name: "name", anonymous: false, exported: false, typ: nameOff, tag: ""}, {prop: "typ", name: "typ", anonymous: false, exported: false, typ: typeOff, tag: ""}]);
 13487  	interfaceType.init("reflect", [{prop: "rtype", name: "rtype", anonymous: true, exported: false, typ: rtype, tag: "reflect:\"interface\""}, {prop: "pkgPath", name: "pkgPath", anonymous: false, exported: false, typ: name, tag: ""}, {prop: "methods", name: "methods", anonymous: false, exported: false, typ: sliceType$6, tag: ""}]);
 13488  	mapType.init("reflect", [{prop: "rtype", name: "rtype", anonymous: true, exported: false, typ: rtype, tag: "reflect:\"map\""}, {prop: "key", name: "key", anonymous: false, exported: false, typ: ptrType$1, tag: ""}, {prop: "elem", name: "elem", anonymous: false, exported: false, typ: ptrType$1, tag: ""}, {prop: "bucket", name: "bucket", anonymous: false, exported: false, typ: ptrType$1, tag: ""}, {prop: "hmap", name: "hmap", anonymous: false, exported: false, typ: ptrType$1, tag: ""}, {prop: "keysize", name: "keysize", anonymous: false, exported: false, typ: $Uint8, tag: ""}, {prop: "indirectkey", name: "indirectkey", anonymous: false, exported: false, typ: $Uint8, tag: ""}, {prop: "valuesize", name: "valuesize", anonymous: false, exported: false, typ: $Uint8, tag: ""}, {prop: "indirectvalue", name: "indirectvalue", anonymous: false, exported: false, typ: $Uint8, tag: ""}, {prop: "bucketsize", name: "bucketsize", anonymous: false, exported: false, typ: $Uint16, tag: ""}, {prop: "reflexivekey", name: "reflexivekey", anonymous: false, exported: false, typ: $Bool, tag: ""}, {prop: "needkeyupdate", name: "needkeyupdate", anonymous: false, exported: false, typ: $Bool, tag: ""}]);
 13489  	ptrType.init("reflect", [{prop: "rtype", name: "rtype", anonymous: true, exported: false, typ: rtype, tag: "reflect:\"ptr\""}, {prop: "elem", name: "elem", anonymous: false, exported: false, typ: ptrType$1, tag: ""}]);
 13490  	sliceType.init("reflect", [{prop: "rtype", name: "rtype", anonymous: true, exported: false, typ: rtype, tag: "reflect:\"slice\""}, {prop: "elem", name: "elem", anonymous: false, exported: false, typ: ptrType$1, tag: ""}]);
 13491  	structField.init("reflect", [{prop: "name", name: "name", anonymous: false, exported: false, typ: name, tag: ""}, {prop: "typ", name: "typ", anonymous: false, exported: false, typ: ptrType$1, tag: ""}, {prop: "offsetAnon", name: "offsetAnon", anonymous: false, exported: false, typ: $Uintptr, tag: ""}]);
 13492  	structType.init("reflect", [{prop: "rtype", name: "rtype", anonymous: true, exported: false, typ: rtype, tag: "reflect:\"struct\""}, {prop: "pkgPath", name: "pkgPath", anonymous: false, exported: false, typ: name, tag: ""}, {prop: "fields", name: "fields", anonymous: false, exported: false, typ: sliceType$7, tag: ""}]);
 13493  	Method.init("", [{prop: "Name", name: "Name", anonymous: false, exported: true, typ: $String, tag: ""}, {prop: "PkgPath", name: "PkgPath", anonymous: false, exported: true, typ: $String, tag: ""}, {prop: "Type", name: "Type", anonymous: false, exported: true, typ: Type, tag: ""}, {prop: "Func", name: "Func", anonymous: false, exported: true, typ: Value, tag: ""}, {prop: "Index", name: "Index", anonymous: false, exported: true, typ: $Int, tag: ""}]);
 13494  	StructField.init("", [{prop: "Name", name: "Name", anonymous: false, exported: true, typ: $String, tag: ""}, {prop: "PkgPath", name: "PkgPath", anonymous: false, exported: true, typ: $String, tag: ""}, {prop: "Type", name: "Type", anonymous: false, exported: true, typ: Type, tag: ""}, {prop: "Tag", name: "Tag", anonymous: false, exported: true, typ: StructTag, tag: ""}, {prop: "Offset", name: "Offset", anonymous: false, exported: true, typ: $Uintptr, tag: ""}, {prop: "Index", name: "Index", anonymous: false, exported: true, typ: sliceType$13, tag: ""}, {prop: "Anonymous", name: "Anonymous", anonymous: false, exported: true, typ: $Bool, tag: ""}]);
 13495  	fieldScan.init("reflect", [{prop: "typ", name: "typ", anonymous: false, exported: false, typ: ptrType$9, tag: ""}, {prop: "index", name: "index", anonymous: false, exported: false, typ: sliceType$13, tag: ""}]);
 13496  	Value.init("reflect", [{prop: "typ", name: "typ", anonymous: false, exported: false, typ: ptrType$1, tag: ""}, {prop: "ptr", name: "ptr", anonymous: false, exported: false, typ: $UnsafePointer, tag: ""}, {prop: "flag", name: "flag", anonymous: true, exported: false, typ: flag, tag: ""}]);
 13497  	ValueError.init("", [{prop: "Method", name: "Method", anonymous: false, exported: true, typ: $String, tag: ""}, {prop: "Kind", name: "Kind", anonymous: false, exported: true, typ: Kind, tag: ""}]);
 13498  	$init = function() {
 13499  		$pkg.$init = function() {};
 13500  		/* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 13501  		$r = errors.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 13502  		$r = js.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 13503  		$r = math.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 13504  		$r = runtime.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 13505  		$r = strconv.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 13506  		$r = sync.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 13507  		$r = unicode.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 13508  		$r = utf8.$init(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 13509  		nameOffList = sliceType$1.nil;
 13510  		typeOffList = sliceType$2.nil;
 13511  		methodCache = new sync.Map.ptr(new sync.Mutex.ptr(0, 0), new $packages["sync/atomic"].Value.ptr($ifaceNil), false, 0);
 13512  		initialized = false;
 13513  		uncommonTypeMap = {};
 13514  		nameMap = {};
 13515  		callHelper = $assertType($internalize($call, $emptyInterface), funcType$1);
 13516  		selectHelper = $assertType($internalize($select, $emptyInterface), funcType$1);
 13517  		jsObjectPtr = reflectType($jsObjectPtr);
 13518  		kindNames = new sliceType$4(["invalid", "bool", "int", "int8", "int16", "int32", "int64", "uint", "uint8", "uint16", "uint32", "uint64", "uintptr", "float32", "float64", "complex64", "complex128", "array", "chan", "func", "interface", "map", "ptr", "slice", "string", "struct", "unsafe.Pointer"]);
 13519  		uint8Type = $assertType(TypeOf(new $Uint8(0)), ptrType$1);
 13520  		$r = init(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 13521  		/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
 13522  	};
 13523  	$pkg.$init = $init;
 13524  	return $pkg;
 13525  })();
 13526  $packages["encoding/binary"] = (function() {
 13527  	var $pkg = {}, $init, errors, io, math, reflect, littleEndian, bigEndian, sliceType, overflow;
 13528  	errors = $packages["errors"];
 13529  	io = $packages["io"];
 13530  	math = $packages["math"];
 13531  	reflect = $packages["reflect"];
 13532  	littleEndian = $pkg.littleEndian = $newType(0, $kindStruct, "binary.littleEndian", true, "encoding/binary", false, function() {
 13533  		this.$val = this;
 13534  		if (arguments.length === 0) {
 13535  			return;
 13536  		}
 13537  	});
 13538  	bigEndian = $pkg.bigEndian = $newType(0, $kindStruct, "binary.bigEndian", true, "encoding/binary", false, function() {
 13539  		this.$val = this;
 13540  		if (arguments.length === 0) {
 13541  			return;
 13542  		}
 13543  	});
 13544  	sliceType = $sliceType($Uint8);
 13545  	littleEndian.ptr.prototype.Uint16 = function(b) {
 13546  		var b;
 13547  		$unused((1 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 1]));
 13548  		return ((((0 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 0]) << 16 >>> 16)) | ((((1 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 1]) << 16 >>> 16)) << 8 << 16 >>> 16)) >>> 0;
 13549  	};
 13550  	littleEndian.prototype.Uint16 = function(b) { return this.$val.Uint16(b); };
 13551  	littleEndian.ptr.prototype.PutUint16 = function(b, v) {
 13552  		var b, v;
 13553  		$unused((1 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 1]));
 13554  		(0 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 0] = ((v << 24 >>> 24)));
 13555  		(1 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 1] = (((v >>> 8 << 16 >>> 16) << 24 >>> 24)));
 13556  	};
 13557  	littleEndian.prototype.PutUint16 = function(b, v) { return this.$val.PutUint16(b, v); };
 13558  	littleEndian.ptr.prototype.Uint32 = function(b) {
 13559  		var b;
 13560  		$unused((3 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 3]));
 13561  		return ((((((((0 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 0]) >>> 0)) | ((((1 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 1]) >>> 0)) << 8 >>> 0)) >>> 0) | ((((2 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 2]) >>> 0)) << 16 >>> 0)) >>> 0) | ((((3 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 3]) >>> 0)) << 24 >>> 0)) >>> 0;
 13562  	};
 13563  	littleEndian.prototype.Uint32 = function(b) { return this.$val.Uint32(b); };
 13564  	littleEndian.ptr.prototype.PutUint32 = function(b, v) {
 13565  		var b, v;
 13566  		$unused((3 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 3]));
 13567  		(0 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 0] = ((v << 24 >>> 24)));
 13568  		(1 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 1] = (((v >>> 8 >>> 0) << 24 >>> 24)));
 13569  		(2 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 2] = (((v >>> 16 >>> 0) << 24 >>> 24)));
 13570  		(3 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 3] = (((v >>> 24 >>> 0) << 24 >>> 24)));
 13571  	};
 13572  	littleEndian.prototype.PutUint32 = function(b, v) { return this.$val.PutUint32(b, v); };
 13573  	littleEndian.ptr.prototype.Uint64 = function(b) {
 13574  		var b, x, x$1, x$10, x$11, x$12, x$13, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9;
 13575  		$unused((7 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 7]));
 13576  		return (x = (x$1 = (x$2 = (x$3 = (x$4 = (x$5 = (x$6 = (new $Uint64(0, (0 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 0]))), x$7 = $shiftLeft64((new $Uint64(0, (1 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 1]))), 8), new $Uint64(x$6.$high | x$7.$high, (x$6.$low | x$7.$low) >>> 0)), x$8 = $shiftLeft64((new $Uint64(0, (2 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 2]))), 16), new $Uint64(x$5.$high | x$8.$high, (x$5.$low | x$8.$low) >>> 0)), x$9 = $shiftLeft64((new $Uint64(0, (3 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 3]))), 24), new $Uint64(x$4.$high | x$9.$high, (x$4.$low | x$9.$low) >>> 0)), x$10 = $shiftLeft64((new $Uint64(0, (4 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 4]))), 32), new $Uint64(x$3.$high | x$10.$high, (x$3.$low | x$10.$low) >>> 0)), x$11 = $shiftLeft64((new $Uint64(0, (5 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 5]))), 40), new $Uint64(x$2.$high | x$11.$high, (x$2.$low | x$11.$low) >>> 0)), x$12 = $shiftLeft64((new $Uint64(0, (6 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 6]))), 48), new $Uint64(x$1.$high | x$12.$high, (x$1.$low | x$12.$low) >>> 0)), x$13 = $shiftLeft64((new $Uint64(0, (7 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 7]))), 56), new $Uint64(x.$high | x$13.$high, (x.$low | x$13.$low) >>> 0));
 13577  	};
 13578  	littleEndian.prototype.Uint64 = function(b) { return this.$val.Uint64(b); };
 13579  	littleEndian.ptr.prototype.PutUint64 = function(b, v) {
 13580  		var b, v;
 13581  		$unused((7 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 7]));
 13582  		(0 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 0] = ((v.$low << 24 >>> 24)));
 13583  		(1 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 1] = (($shiftRightUint64(v, 8).$low << 24 >>> 24)));
 13584  		(2 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 2] = (($shiftRightUint64(v, 16).$low << 24 >>> 24)));
 13585  		(3 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 3] = (($shiftRightUint64(v, 24).$low << 24 >>> 24)));
 13586  		(4 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 4] = (($shiftRightUint64(v, 32).$low << 24 >>> 24)));
 13587  		(5 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 5] = (($shiftRightUint64(v, 40).$low << 24 >>> 24)));
 13588  		(6 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 6] = (($shiftRightUint64(v, 48).$low << 24 >>> 24)));
 13589  		(7 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 7] = (($shiftRightUint64(v, 56).$low << 24 >>> 24)));
 13590  	};
 13591  	littleEndian.prototype.PutUint64 = function(b, v) { return this.$val.PutUint64(b, v); };
 13592  	littleEndian.ptr.prototype.String = function() {
 13593  		return "LittleEndian";
 13594  	};
 13595  	littleEndian.prototype.String = function() { return this.$val.String(); };
 13596  	littleEndian.ptr.prototype.GoString = function() {
 13597  		return "binary.LittleEndian";
 13598  	};
 13599  	littleEndian.prototype.GoString = function() { return this.$val.GoString(); };
 13600  	bigEndian.ptr.prototype.Uint16 = function(b) {
 13601  		var b;
 13602  		$unused((1 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 1]));
 13603  		return ((((1 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 1]) << 16 >>> 16)) | ((((0 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 0]) << 16 >>> 16)) << 8 << 16 >>> 16)) >>> 0;
 13604  	};
 13605  	bigEndian.prototype.Uint16 = function(b) { return this.$val.Uint16(b); };
 13606  	bigEndian.ptr.prototype.PutUint16 = function(b, v) {
 13607  		var b, v;
 13608  		$unused((1 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 1]));
 13609  		(0 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 0] = (((v >>> 8 << 16 >>> 16) << 24 >>> 24)));
 13610  		(1 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 1] = ((v << 24 >>> 24)));
 13611  	};
 13612  	bigEndian.prototype.PutUint16 = function(b, v) { return this.$val.PutUint16(b, v); };
 13613  	bigEndian.ptr.prototype.Uint32 = function(b) {
 13614  		var b;
 13615  		$unused((3 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 3]));
 13616  		return ((((((((3 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 3]) >>> 0)) | ((((2 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 2]) >>> 0)) << 8 >>> 0)) >>> 0) | ((((1 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 1]) >>> 0)) << 16 >>> 0)) >>> 0) | ((((0 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 0]) >>> 0)) << 24 >>> 0)) >>> 0;
 13617  	};
 13618  	bigEndian.prototype.Uint32 = function(b) { return this.$val.Uint32(b); };
 13619  	bigEndian.ptr.prototype.PutUint32 = function(b, v) {
 13620  		var b, v;
 13621  		$unused((3 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 3]));
 13622  		(0 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 0] = (((v >>> 24 >>> 0) << 24 >>> 24)));
 13623  		(1 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 1] = (((v >>> 16 >>> 0) << 24 >>> 24)));
 13624  		(2 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 2] = (((v >>> 8 >>> 0) << 24 >>> 24)));
 13625  		(3 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 3] = ((v << 24 >>> 24)));
 13626  	};
 13627  	bigEndian.prototype.PutUint32 = function(b, v) { return this.$val.PutUint32(b, v); };
 13628  	bigEndian.ptr.prototype.Uint64 = function(b) {
 13629  		var b, x, x$1, x$10, x$11, x$12, x$13, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9;
 13630  		$unused((7 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 7]));
 13631  		return (x = (x$1 = (x$2 = (x$3 = (x$4 = (x$5 = (x$6 = (new $Uint64(0, (7 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 7]))), x$7 = $shiftLeft64((new $Uint64(0, (6 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 6]))), 8), new $Uint64(x$6.$high | x$7.$high, (x$6.$low | x$7.$low) >>> 0)), x$8 = $shiftLeft64((new $Uint64(0, (5 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 5]))), 16), new $Uint64(x$5.$high | x$8.$high, (x$5.$low | x$8.$low) >>> 0)), x$9 = $shiftLeft64((new $Uint64(0, (4 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 4]))), 24), new $Uint64(x$4.$high | x$9.$high, (x$4.$low | x$9.$low) >>> 0)), x$10 = $shiftLeft64((new $Uint64(0, (3 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 3]))), 32), new $Uint64(x$3.$high | x$10.$high, (x$3.$low | x$10.$low) >>> 0)), x$11 = $shiftLeft64((new $Uint64(0, (2 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 2]))), 40), new $Uint64(x$2.$high | x$11.$high, (x$2.$low | x$11.$low) >>> 0)), x$12 = $shiftLeft64((new $Uint64(0, (1 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 1]))), 48), new $Uint64(x$1.$high | x$12.$high, (x$1.$low | x$12.$low) >>> 0)), x$13 = $shiftLeft64((new $Uint64(0, (0 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 0]))), 56), new $Uint64(x.$high | x$13.$high, (x.$low | x$13.$low) >>> 0));
 13632  	};
 13633  	bigEndian.prototype.Uint64 = function(b) { return this.$val.Uint64(b); };
 13634  	bigEndian.ptr.prototype.PutUint64 = function(b, v) {
 13635  		var b, v;
 13636  		$unused((7 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 7]));
 13637  		(0 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 0] = (($shiftRightUint64(v, 56).$low << 24 >>> 24)));
 13638  		(1 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 1] = (($shiftRightUint64(v, 48).$low << 24 >>> 24)));
 13639  		(2 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 2] = (($shiftRightUint64(v, 40).$low << 24 >>> 24)));
 13640  		(3 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 3] = (($shiftRightUint64(v, 32).$low << 24 >>> 24)));
 13641  		(4 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 4] = (($shiftRightUint64(v, 24).$low << 24 >>> 24)));
 13642  		(5 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 5] = (($shiftRightUint64(v, 16).$low << 24 >>> 24)));
 13643  		(6 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 6] = (($shiftRightUint64(v, 8).$low << 24 >>> 24)));
 13644  		(7 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 7] = ((v.$low << 24 >>> 24)));
 13645  	};
 13646  	bigEndian.prototype.PutUint64 = function(b, v) { return this.$val.PutUint64(b, v); };
 13647  	bigEndian.ptr.prototype.String = function() {
 13648  		return "BigEndian";
 13649  	};
 13650  	bigEndian.prototype.String = function() { return this.$val.String(); };
 13651  	bigEndian.ptr.prototype.GoString = function() {
 13652  		return "binary.BigEndian";
 13653  	};
 13654  	bigEndian.prototype.GoString = function() { return this.$val.GoString(); };
 13655  	littleEndian.methods = [{prop: "Uint16", name: "Uint16", pkg: "", typ: $funcType([sliceType], [$Uint16], false)}, {prop: "PutUint16", name: "PutUint16", pkg: "", typ: $funcType([sliceType, $Uint16], [], false)}, {prop: "Uint32", name: "Uint32", pkg: "", typ: $funcType([sliceType], [$Uint32], false)}, {prop: "PutUint32", name: "PutUint32", pkg: "", typ: $funcType([sliceType, $Uint32], [], false)}, {prop: "Uint64", name: "Uint64", pkg: "", typ: $funcType([sliceType], [$Uint64], false)}, {prop: "PutUint64", name: "PutUint64", pkg: "", typ: $funcType([sliceType, $Uint64], [], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "GoString", name: "GoString", pkg: "", typ: $funcType([], [$String], false)}];
 13656  	bigEndian.methods = [{prop: "Uint16", name: "Uint16", pkg: "", typ: $funcType([sliceType], [$Uint16], false)}, {prop: "PutUint16", name: "PutUint16", pkg: "", typ: $funcType([sliceType, $Uint16], [], false)}, {prop: "Uint32", name: "Uint32", pkg: "", typ: $funcType([sliceType], [$Uint32], false)}, {prop: "PutUint32", name: "PutUint32", pkg: "", typ: $funcType([sliceType, $Uint32], [], false)}, {prop: "Uint64", name: "Uint64", pkg: "", typ: $funcType([sliceType], [$Uint64], false)}, {prop: "PutUint64", name: "PutUint64", pkg: "", typ: $funcType([sliceType, $Uint64], [], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "GoString", name: "GoString", pkg: "", typ: $funcType([], [$String], false)}];
 13657  	littleEndian.init("", []);
 13658  	bigEndian.init("", []);
 13659  	$init = function() {
 13660  		$pkg.$init = function() {};
 13661  		/* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 13662  		$r = errors.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 13663  		$r = io.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 13664  		$r = math.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 13665  		$r = reflect.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 13666  		$pkg.LittleEndian = new littleEndian.ptr();
 13667  		$pkg.BigEndian = new bigEndian.ptr();
 13668  		overflow = errors.New("binary: varint overflows a 64-bit integer");
 13669  		/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
 13670  	};
 13671  	$pkg.$init = $init;
 13672  	return $pkg;
 13673  })();
 13674  $packages["encoding/base64"] = (function() {
 13675  	var $pkg = {}, $init, binary, io, strconv, Encoding, CorruptInputError, arrayType, arrayType$1, sliceType, ptrType, arrayType$4, NewEncoding;
 13676  	binary = $packages["encoding/binary"];
 13677  	io = $packages["io"];
 13678  	strconv = $packages["strconv"];
 13679  	Encoding = $pkg.Encoding = $newType(0, $kindStruct, "base64.Encoding", true, "encoding/base64", true, function(encode_, decodeMap_, padChar_, strict_) {
 13680  		this.$val = this;
 13681  		if (arguments.length === 0) {
 13682  			this.encode = arrayType.zero();
 13683  			this.decodeMap = arrayType$1.zero();
 13684  			this.padChar = 0;
 13685  			this.strict = false;
 13686  			return;
 13687  		}
 13688  		this.encode = encode_;
 13689  		this.decodeMap = decodeMap_;
 13690  		this.padChar = padChar_;
 13691  		this.strict = strict_;
 13692  	});
 13693  	CorruptInputError = $pkg.CorruptInputError = $newType(8, $kindInt64, "base64.CorruptInputError", true, "encoding/base64", true, null);
 13694  	arrayType = $arrayType($Uint8, 64);
 13695  	arrayType$1 = $arrayType($Uint8, 256);
 13696  	sliceType = $sliceType($Uint8);
 13697  	ptrType = $ptrType(Encoding);
 13698  	arrayType$4 = $arrayType($Uint8, 4);
 13699  	NewEncoding = function(encoder$1) {
 13700  		var e, encoder$1, i, i$1, i$2, x, x$1, x$2;
 13701  		if (!((encoder$1.length === 64))) {
 13702  			$panic(new $String("encoding alphabet is not 64-bytes long"));
 13703  		}
 13704  		i = 0;
 13705  		while (true) {
 13706  			if (!(i < encoder$1.length)) { break; }
 13707  			if ((encoder$1.charCodeAt(i) === 10) || (encoder$1.charCodeAt(i) === 13)) {
 13708  				$panic(new $String("encoding alphabet contains newline character"));
 13709  			}
 13710  			i = i + (1) >> 0;
 13711  		}
 13712  		e = new Encoding.ptr(arrayType.zero(), arrayType$1.zero(), 0, false);
 13713  		e.padChar = 61;
 13714  		$copyString(new sliceType(e.encode), encoder$1);
 13715  		i$1 = 0;
 13716  		while (true) {
 13717  			if (!(i$1 < 256)) { break; }
 13718  			(x = e.decodeMap, ((i$1 < 0 || i$1 >= x.length) ? ($throwRuntimeError("index out of range"), undefined) : x[i$1] = 255));
 13719  			i$1 = i$1 + (1) >> 0;
 13720  		}
 13721  		i$2 = 0;
 13722  		while (true) {
 13723  			if (!(i$2 < encoder$1.length)) { break; }
 13724  			(x$1 = e.decodeMap, x$2 = encoder$1.charCodeAt(i$2), ((x$2 < 0 || x$2 >= x$1.length) ? ($throwRuntimeError("index out of range"), undefined) : x$1[x$2] = ((i$2 << 24 >>> 24))));
 13725  			i$2 = i$2 + (1) >> 0;
 13726  		}
 13727  		return e;
 13728  	};
 13729  	$pkg.NewEncoding = NewEncoding;
 13730  	Encoding.ptr.prototype.WithPadding = function(padding) {
 13731  		var enc, i, padding, x;
 13732  		enc = this;
 13733  		if ((padding === 13) || (padding === 10) || padding > 255) {
 13734  			$panic(new $String("invalid padding"));
 13735  		}
 13736  		i = 0;
 13737  		while (true) {
 13738  			if (!(i < 64)) { break; }
 13739  			if ((((x = enc.encode, ((i < 0 || i >= x.length) ? ($throwRuntimeError("index out of range"), undefined) : x[i])) >> 0)) === padding) {
 13740  				$panic(new $String("padding contained in alphabet"));
 13741  			}
 13742  			i = i + (1) >> 0;
 13743  		}
 13744  		enc.padChar = padding;
 13745  		return enc;
 13746  	};
 13747  	Encoding.prototype.WithPadding = function(padding) { return this.$val.WithPadding(padding); };
 13748  	Encoding.ptr.prototype.Strict = function() {
 13749  		var enc;
 13750  		enc = this;
 13751  		enc.strict = true;
 13752  		return enc;
 13753  	};
 13754  	Encoding.prototype.Strict = function() { return this.$val.Strict(); };
 13755  	Encoding.ptr.prototype.Encode = function(dst, src) {
 13756  		var _1, _q, _tmp, _tmp$1, di, dst, enc, n, remain, si, src, val, val$1, x, x$1, x$10, x$11, x$12, x$13, x$14, x$15, x$16, x$17, x$18, x$19, x$2, x$20, x$21, x$22, x$23, x$24, x$25, x$26, x$27, x$28, x$3, x$4, x$5, x$6, x$7, x$8, x$9;
 13757  		enc = this;
 13758  		if (src.$length === 0) {
 13759  			return;
 13760  		}
 13761  		_tmp = 0;
 13762  		_tmp$1 = 0;
 13763  		di = _tmp;
 13764  		si = _tmp$1;
 13765  		n = $imul(((_q = src.$length / 3, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero"))), 3);
 13766  		while (true) {
 13767  			if (!(si < n)) { break; }
 13768  			val = (((((((x = si + 0 >> 0, ((x < 0 || x >= src.$length) ? ($throwRuntimeError("index out of range"), undefined) : src.$array[src.$offset + x])) >>> 0)) << 16 >>> 0) | ((((x$1 = si + 1 >> 0, ((x$1 < 0 || x$1 >= src.$length) ? ($throwRuntimeError("index out of range"), undefined) : src.$array[src.$offset + x$1])) >>> 0)) << 8 >>> 0)) >>> 0) | (((x$2 = si + 2 >> 0, ((x$2 < 0 || x$2 >= src.$length) ? ($throwRuntimeError("index out of range"), undefined) : src.$array[src.$offset + x$2])) >>> 0))) >>> 0;
 13769  			(x$5 = di + 0 >> 0, ((x$5 < 0 || x$5 >= dst.$length) ? ($throwRuntimeError("index out of range"), undefined) : dst.$array[dst.$offset + x$5] = (x$3 = enc.encode, x$4 = ((val >>> 18 >>> 0) & 63) >>> 0, ((x$4 < 0 || x$4 >= x$3.length) ? ($throwRuntimeError("index out of range"), undefined) : x$3[x$4]))));
 13770  			(x$8 = di + 1 >> 0, ((x$8 < 0 || x$8 >= dst.$length) ? ($throwRuntimeError("index out of range"), undefined) : dst.$array[dst.$offset + x$8] = (x$6 = enc.encode, x$7 = ((val >>> 12 >>> 0) & 63) >>> 0, ((x$7 < 0 || x$7 >= x$6.length) ? ($throwRuntimeError("index out of range"), undefined) : x$6[x$7]))));
 13771  			(x$11 = di + 2 >> 0, ((x$11 < 0 || x$11 >= dst.$length) ? ($throwRuntimeError("index out of range"), undefined) : dst.$array[dst.$offset + x$11] = (x$9 = enc.encode, x$10 = ((val >>> 6 >>> 0) & 63) >>> 0, ((x$10 < 0 || x$10 >= x$9.length) ? ($throwRuntimeError("index out of range"), undefined) : x$9[x$10]))));
 13772  			(x$14 = di + 3 >> 0, ((x$14 < 0 || x$14 >= dst.$length) ? ($throwRuntimeError("index out of range"), undefined) : dst.$array[dst.$offset + x$14] = (x$12 = enc.encode, x$13 = (val & 63) >>> 0, ((x$13 < 0 || x$13 >= x$12.length) ? ($throwRuntimeError("index out of range"), undefined) : x$12[x$13]))));
 13773  			si = si + (3) >> 0;
 13774  			di = di + (4) >> 0;
 13775  		}
 13776  		remain = src.$length - si >> 0;
 13777  		if (remain === 0) {
 13778  			return;
 13779  		}
 13780  		val$1 = (((x$15 = si + 0 >> 0, ((x$15 < 0 || x$15 >= src.$length) ? ($throwRuntimeError("index out of range"), undefined) : src.$array[src.$offset + x$15])) >>> 0)) << 16 >>> 0;
 13781  		if (remain === 2) {
 13782  			val$1 = (val$1 | (((((x$16 = si + 1 >> 0, ((x$16 < 0 || x$16 >= src.$length) ? ($throwRuntimeError("index out of range"), undefined) : src.$array[src.$offset + x$16])) >>> 0)) << 8 >>> 0))) >>> 0;
 13783  		}
 13784  		(x$19 = di + 0 >> 0, ((x$19 < 0 || x$19 >= dst.$length) ? ($throwRuntimeError("index out of range"), undefined) : dst.$array[dst.$offset + x$19] = (x$17 = enc.encode, x$18 = ((val$1 >>> 18 >>> 0) & 63) >>> 0, ((x$18 < 0 || x$18 >= x$17.length) ? ($throwRuntimeError("index out of range"), undefined) : x$17[x$18]))));
 13785  		(x$22 = di + 1 >> 0, ((x$22 < 0 || x$22 >= dst.$length) ? ($throwRuntimeError("index out of range"), undefined) : dst.$array[dst.$offset + x$22] = (x$20 = enc.encode, x$21 = ((val$1 >>> 12 >>> 0) & 63) >>> 0, ((x$21 < 0 || x$21 >= x$20.length) ? ($throwRuntimeError("index out of range"), undefined) : x$20[x$21]))));
 13786  		_1 = remain;
 13787  		if (_1 === (2)) {
 13788  			(x$25 = di + 2 >> 0, ((x$25 < 0 || x$25 >= dst.$length) ? ($throwRuntimeError("index out of range"), undefined) : dst.$array[dst.$offset + x$25] = (x$23 = enc.encode, x$24 = ((val$1 >>> 6 >>> 0) & 63) >>> 0, ((x$24 < 0 || x$24 >= x$23.length) ? ($throwRuntimeError("index out of range"), undefined) : x$23[x$24]))));
 13789  			if (!((enc.padChar === -1))) {
 13790  				(x$26 = di + 3 >> 0, ((x$26 < 0 || x$26 >= dst.$length) ? ($throwRuntimeError("index out of range"), undefined) : dst.$array[dst.$offset + x$26] = ((enc.padChar << 24 >>> 24))));
 13791  			}
 13792  		} else if (_1 === (1)) {
 13793  			if (!((enc.padChar === -1))) {
 13794  				(x$27 = di + 2 >> 0, ((x$27 < 0 || x$27 >= dst.$length) ? ($throwRuntimeError("index out of range"), undefined) : dst.$array[dst.$offset + x$27] = ((enc.padChar << 24 >>> 24))));
 13795  				(x$28 = di + 3 >> 0, ((x$28 < 0 || x$28 >= dst.$length) ? ($throwRuntimeError("index out of range"), undefined) : dst.$array[dst.$offset + x$28] = ((enc.padChar << 24 >>> 24))));
 13796  			}
 13797  		}
 13798  	};
 13799  	Encoding.prototype.Encode = function(dst, src) { return this.$val.Encode(dst, src); };
 13800  	Encoding.ptr.prototype.EncodeToString = function(src) {
 13801  		var buf, enc, src;
 13802  		enc = this;
 13803  		buf = $makeSlice(sliceType, enc.EncodedLen(src.$length));
 13804  		enc.Encode(buf, src);
 13805  		return ($bytesToString(buf));
 13806  	};
 13807  	Encoding.prototype.EncodeToString = function(src) { return this.$val.EncodeToString(src); };
 13808  	Encoding.ptr.prototype.EncodedLen = function(n) {
 13809  		var _q, _q$1, enc, n;
 13810  		enc = this;
 13811  		if (enc.padChar === -1) {
 13812  			return (_q = ((($imul(n, 8)) + 5 >> 0)) / 6, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero"));
 13813  		}
 13814  		return $imul((_q$1 = ((n + 2 >> 0)) / 3, (_q$1 === _q$1 && _q$1 !== 1/0 && _q$1 !== -1/0) ? _q$1 >> 0 : $throwRuntimeError("integer divide by zero")), 4);
 13815  	};
 13816  	Encoding.prototype.EncodedLen = function(n) { return this.$val.EncodedLen(n); };
 13817  	CorruptInputError.prototype.Error = function() {
 13818  		var e;
 13819  		e = this;
 13820  		return "illegal base64 data at input byte " + strconv.FormatInt((new $Int64(e.$high, e.$low)), 10);
 13821  	};
 13822  	$ptrType(CorruptInputError).prototype.Error = function() { return this.$get().Error(); };
 13823  	Encoding.ptr.prototype.decodeQuantum = function(dst, src, si) {
 13824  		var _1, _2, _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$14, _tmp$15, _tmp$16, _tmp$17, _tmp$18, _tmp$19, _tmp$2, _tmp$20, _tmp$21, _tmp$22, _tmp$23, _tmp$24, _tmp$25, _tmp$26, _tmp$27, _tmp$28, _tmp$29, _tmp$3, _tmp$30, _tmp$31, _tmp$32, _tmp$33, _tmp$34, _tmp$35, _tmp$36, _tmp$37, _tmp$38, _tmp$39, _tmp$4, _tmp$40, _tmp$41, _tmp$42, _tmp$43, _tmp$44, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, dbuf, dinc, dlen, dst, enc, err, in$1, j, n, nsi, out, si, src, val, x;
 13825  		nsi = 0;
 13826  		n = 0;
 13827  		err = $ifaceNil;
 13828  		enc = this;
 13829  		dbuf = arrayType$4.zero();
 13830  		_tmp = 3;
 13831  		_tmp$1 = 4;
 13832  		dinc = _tmp;
 13833  		dlen = _tmp$1;
 13834  		j = 0;
 13835  		while (true) {
 13836  			if (!(j < 4)) { break; }
 13837  			if (src.$length === si) {
 13838  				if ((j === 0)) {
 13839  					_tmp$2 = si;
 13840  					_tmp$3 = 0;
 13841  					_tmp$4 = $ifaceNil;
 13842  					nsi = _tmp$2;
 13843  					n = _tmp$3;
 13844  					err = _tmp$4;
 13845  					return [nsi, n, err];
 13846  				} else if (((j === 1)) || (!((enc.padChar === -1)))) {
 13847  					_tmp$5 = si;
 13848  					_tmp$6 = 0;
 13849  					_tmp$7 = (new CorruptInputError(0, (si - j >> 0)));
 13850  					nsi = _tmp$5;
 13851  					n = _tmp$6;
 13852  					err = _tmp$7;
 13853  					return [nsi, n, err];
 13854  				}
 13855  				_tmp$8 = j - 1 >> 0;
 13856  				_tmp$9 = j;
 13857  				dinc = _tmp$8;
 13858  				dlen = _tmp$9;
 13859  				break;
 13860  			}
 13861  			in$1 = ((si < 0 || si >= src.$length) ? ($throwRuntimeError("index out of range"), undefined) : src.$array[src.$offset + si]);
 13862  			si = si + (1) >> 0;
 13863  			out = (x = enc.decodeMap, ((in$1 < 0 || in$1 >= x.length) ? ($throwRuntimeError("index out of range"), undefined) : x[in$1]));
 13864  			if (!((out === 255))) {
 13865  				((j < 0 || j >= dbuf.length) ? ($throwRuntimeError("index out of range"), undefined) : dbuf[j] = out);
 13866  				j = j + (1) >> 0;
 13867  				continue;
 13868  			}
 13869  			if ((in$1 === 10) || (in$1 === 13)) {
 13870  				j = j - (1) >> 0;
 13871  				j = j + (1) >> 0;
 13872  				continue;
 13873  			}
 13874  			if (!((((in$1 >> 0)) === enc.padChar))) {
 13875  				_tmp$10 = si;
 13876  				_tmp$11 = 0;
 13877  				_tmp$12 = (new CorruptInputError(0, (si - 1 >> 0)));
 13878  				nsi = _tmp$10;
 13879  				n = _tmp$11;
 13880  				err = _tmp$12;
 13881  				return [nsi, n, err];
 13882  			}
 13883  			_1 = j;
 13884  			if ((_1 === (0)) || (_1 === (1))) {
 13885  				_tmp$13 = si;
 13886  				_tmp$14 = 0;
 13887  				_tmp$15 = (new CorruptInputError(0, (si - 1 >> 0)));
 13888  				nsi = _tmp$13;
 13889  				n = _tmp$14;
 13890  				err = _tmp$15;
 13891  				return [nsi, n, err];
 13892  			} else if (_1 === (2)) {
 13893  				while (true) {
 13894  					if (!(si < src.$length && ((((si < 0 || si >= src.$length) ? ($throwRuntimeError("index out of range"), undefined) : src.$array[src.$offset + si]) === 10) || (((si < 0 || si >= src.$length) ? ($throwRuntimeError("index out of range"), undefined) : src.$array[src.$offset + si]) === 13)))) { break; }
 13895  					si = si + (1) >> 0;
 13896  				}
 13897  				if (si === src.$length) {
 13898  					_tmp$16 = si;
 13899  					_tmp$17 = 0;
 13900  					_tmp$18 = (new CorruptInputError(0, src.$length));
 13901  					nsi = _tmp$16;
 13902  					n = _tmp$17;
 13903  					err = _tmp$18;
 13904  					return [nsi, n, err];
 13905  				}
 13906  				if (!((((((si < 0 || si >= src.$length) ? ($throwRuntimeError("index out of range"), undefined) : src.$array[src.$offset + si]) >> 0)) === enc.padChar))) {
 13907  					_tmp$19 = si;
 13908  					_tmp$20 = 0;
 13909  					_tmp$21 = (new CorruptInputError(0, (si - 1 >> 0)));
 13910  					nsi = _tmp$19;
 13911  					n = _tmp$20;
 13912  					err = _tmp$21;
 13913  					return [nsi, n, err];
 13914  				}
 13915  				si = si + (1) >> 0;
 13916  			}
 13917  			while (true) {
 13918  				if (!(si < src.$length && ((((si < 0 || si >= src.$length) ? ($throwRuntimeError("index out of range"), undefined) : src.$array[src.$offset + si]) === 10) || (((si < 0 || si >= src.$length) ? ($throwRuntimeError("index out of range"), undefined) : src.$array[src.$offset + si]) === 13)))) { break; }
 13919  				si = si + (1) >> 0;
 13920  			}
 13921  			if (si < src.$length) {
 13922  				err = (new CorruptInputError(0, si));
 13923  			}
 13924  			_tmp$22 = 3;
 13925  			_tmp$23 = j;
 13926  			dinc = _tmp$22;
 13927  			dlen = _tmp$23;
 13928  			break;
 13929  		}
 13930  		val = ((((((((dbuf[0] >>> 0)) << 18 >>> 0) | (((dbuf[1] >>> 0)) << 12 >>> 0)) >>> 0) | (((dbuf[2] >>> 0)) << 6 >>> 0)) >>> 0) | ((dbuf[3] >>> 0))) >>> 0;
 13931  		_tmp$24 = (((val >>> 0 >>> 0) << 24 >>> 24));
 13932  		_tmp$25 = (((val >>> 8 >>> 0) << 24 >>> 24));
 13933  		_tmp$26 = (((val >>> 16 >>> 0) << 24 >>> 24));
 13934  		dbuf[2] = _tmp$24;
 13935  		dbuf[1] = _tmp$25;
 13936  		dbuf[0] = _tmp$26;
 13937  		_2 = dlen;
 13938  		if (_2 === (4)) {
 13939  			(2 >= dst.$length ? ($throwRuntimeError("index out of range"), undefined) : dst.$array[dst.$offset + 2] = dbuf[2]);
 13940  			dbuf[2] = 0;
 13941  			(1 >= dst.$length ? ($throwRuntimeError("index out of range"), undefined) : dst.$array[dst.$offset + 1] = dbuf[1]);
 13942  			if (enc.strict && !((dbuf[2] === 0))) {
 13943  				_tmp$27 = si;
 13944  				_tmp$28 = 0;
 13945  				_tmp$29 = (new CorruptInputError(0, (si - 1 >> 0)));
 13946  				nsi = _tmp$27;
 13947  				n = _tmp$28;
 13948  				err = _tmp$29;
 13949  				return [nsi, n, err];
 13950  			}
 13951  			dbuf[1] = 0;
 13952  			(0 >= dst.$length ? ($throwRuntimeError("index out of range"), undefined) : dst.$array[dst.$offset + 0] = dbuf[0]);
 13953  			if (enc.strict && (!((dbuf[1] === 0)) || !((dbuf[2] === 0)))) {
 13954  				_tmp$30 = si;
 13955  				_tmp$31 = 0;
 13956  				_tmp$32 = (new CorruptInputError(0, (si - 2 >> 0)));
 13957  				nsi = _tmp$30;
 13958  				n = _tmp$31;
 13959  				err = _tmp$32;
 13960  				return [nsi, n, err];
 13961  			}
 13962  		} else if (_2 === (3)) {
 13963  			(1 >= dst.$length ? ($throwRuntimeError("index out of range"), undefined) : dst.$array[dst.$offset + 1] = dbuf[1]);
 13964  			if (enc.strict && !((dbuf[2] === 0))) {
 13965  				_tmp$33 = si;
 13966  				_tmp$34 = 0;
 13967  				_tmp$35 = (new CorruptInputError(0, (si - 1 >> 0)));
 13968  				nsi = _tmp$33;
 13969  				n = _tmp$34;
 13970  				err = _tmp$35;
 13971  				return [nsi, n, err];
 13972  			}
 13973  			dbuf[1] = 0;
 13974  			(0 >= dst.$length ? ($throwRuntimeError("index out of range"), undefined) : dst.$array[dst.$offset + 0] = dbuf[0]);
 13975  			if (enc.strict && (!((dbuf[1] === 0)) || !((dbuf[2] === 0)))) {
 13976  				_tmp$36 = si;
 13977  				_tmp$37 = 0;
 13978  				_tmp$38 = (new CorruptInputError(0, (si - 2 >> 0)));
 13979  				nsi = _tmp$36;
 13980  				n = _tmp$37;
 13981  				err = _tmp$38;
 13982  				return [nsi, n, err];
 13983  			}
 13984  		} else if (_2 === (2)) {
 13985  			(0 >= dst.$length ? ($throwRuntimeError("index out of range"), undefined) : dst.$array[dst.$offset + 0] = dbuf[0]);
 13986  			if (enc.strict && (!((dbuf[1] === 0)) || !((dbuf[2] === 0)))) {
 13987  				_tmp$39 = si;
 13988  				_tmp$40 = 0;
 13989  				_tmp$41 = (new CorruptInputError(0, (si - 2 >> 0)));
 13990  				nsi = _tmp$39;
 13991  				n = _tmp$40;
 13992  				err = _tmp$41;
 13993  				return [nsi, n, err];
 13994  			}
 13995  		}
 13996  		dst = $subslice(dst, dinc);
 13997  		_tmp$42 = si;
 13998  		_tmp$43 = dlen - 1 >> 0;
 13999  		_tmp$44 = err;
 14000  		nsi = _tmp$42;
 14001  		n = _tmp$43;
 14002  		err = _tmp$44;
 14003  		return [nsi, n, err];
 14004  	};
 14005  	Encoding.prototype.decodeQuantum = function(dst, src, si) { return this.$val.decodeQuantum(dst, src, si); };
 14006  	Encoding.ptr.prototype.DecodeString = function(s) {
 14007  		var _tuple, dbuf, enc, err, n, s;
 14008  		enc = this;
 14009  		dbuf = $makeSlice(sliceType, enc.DecodedLen(s.length));
 14010  		_tuple = enc.Decode(dbuf, (new sliceType($stringToBytes(s))));
 14011  		n = _tuple[0];
 14012  		err = _tuple[1];
 14013  		return [$subslice(dbuf, 0, n), err];
 14014  	};
 14015  	Encoding.prototype.DecodeString = function(s) { return this.$val.DecodeString(s); };
 14016  	Encoding.ptr.prototype.Decode = function(dst, src) {
 14017  		var _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, _tuple$1, _tuple$2, dst, enc, err, ilen, n, ninc, ninc$1, ninc$2, ok, ok$1, olen, si, src;
 14018  		n = 0;
 14019  		err = $ifaceNil;
 14020  		enc = this;
 14021  		if (src.$length === 0) {
 14022  			_tmp = 0;
 14023  			_tmp$1 = $ifaceNil;
 14024  			n = _tmp;
 14025  			err = _tmp$1;
 14026  			return [n, err];
 14027  		}
 14028  		si = 0;
 14029  		ilen = src.$length;
 14030  		olen = dst.$length;
 14031  		while (true) {
 14032  			if (!(false && (ilen - si >> 0) >= 8 && (olen - n >> 0) >= 8)) { break; }
 14033  			ok = enc.decode64($subslice(dst, n), $subslice(src, si));
 14034  			if (ok) {
 14035  				n = n + (6) >> 0;
 14036  				si = si + (8) >> 0;
 14037  			} else {
 14038  				ninc = 0;
 14039  				_tuple = enc.decodeQuantum($subslice(dst, n), src, si);
 14040  				si = _tuple[0];
 14041  				ninc = _tuple[1];
 14042  				err = _tuple[2];
 14043  				n = n + (ninc) >> 0;
 14044  				if (!($interfaceIsEqual(err, $ifaceNil))) {
 14045  					_tmp$2 = n;
 14046  					_tmp$3 = err;
 14047  					n = _tmp$2;
 14048  					err = _tmp$3;
 14049  					return [n, err];
 14050  				}
 14051  			}
 14052  		}
 14053  		while (true) {
 14054  			if (!((ilen - si >> 0) >= 4 && (olen - n >> 0) >= 4)) { break; }
 14055  			ok$1 = enc.decode32($subslice(dst, n), $subslice(src, si));
 14056  			if (ok$1) {
 14057  				n = n + (3) >> 0;
 14058  				si = si + (4) >> 0;
 14059  			} else {
 14060  				ninc$1 = 0;
 14061  				_tuple$1 = enc.decodeQuantum($subslice(dst, n), src, si);
 14062  				si = _tuple$1[0];
 14063  				ninc$1 = _tuple$1[1];
 14064  				err = _tuple$1[2];
 14065  				n = n + (ninc$1) >> 0;
 14066  				if (!($interfaceIsEqual(err, $ifaceNil))) {
 14067  					_tmp$4 = n;
 14068  					_tmp$5 = err;
 14069  					n = _tmp$4;
 14070  					err = _tmp$5;
 14071  					return [n, err];
 14072  				}
 14073  			}
 14074  		}
 14075  		while (true) {
 14076  			if (!(si < src.$length)) { break; }
 14077  			ninc$2 = 0;
 14078  			_tuple$2 = enc.decodeQuantum($subslice(dst, n), src, si);
 14079  			si = _tuple$2[0];
 14080  			ninc$2 = _tuple$2[1];
 14081  			err = _tuple$2[2];
 14082  			n = n + (ninc$2) >> 0;
 14083  			if (!($interfaceIsEqual(err, $ifaceNil))) {
 14084  				_tmp$6 = n;
 14085  				_tmp$7 = err;
 14086  				n = _tmp$6;
 14087  				err = _tmp$7;
 14088  				return [n, err];
 14089  			}
 14090  		}
 14091  		_tmp$8 = n;
 14092  		_tmp$9 = err;
 14093  		n = _tmp$8;
 14094  		err = _tmp$9;
 14095  		return [n, err];
 14096  	};
 14097  	Encoding.prototype.Decode = function(dst, src) { return this.$val.Decode(dst, src); };
 14098  	Encoding.ptr.prototype.decode32 = function(dst, src) {
 14099  		var _tmp, _tmp$1, dn, dst, enc, n, src, x, x$1, x$2, x$3, x$4, x$5, x$6, x$7;
 14100  		enc = this;
 14101  		_tmp = 0;
 14102  		_tmp$1 = 0;
 14103  		dn = _tmp;
 14104  		n = _tmp$1;
 14105  		n = (((x = enc.decodeMap, x$1 = (0 >= src.$length ? ($throwRuntimeError("index out of range"), undefined) : src.$array[src.$offset + 0]), ((x$1 < 0 || x$1 >= x.length) ? ($throwRuntimeError("index out of range"), undefined) : x[x$1])) >>> 0));
 14106  		if (n === 255) {
 14107  			return false;
 14108  		}
 14109  		dn = (dn | ((n << 26 >>> 0))) >>> 0;
 14110  		n = (((x$2 = enc.decodeMap, x$3 = (1 >= src.$length ? ($throwRuntimeError("index out of range"), undefined) : src.$array[src.$offset + 1]), ((x$3 < 0 || x$3 >= x$2.length) ? ($throwRuntimeError("index out of range"), undefined) : x$2[x$3])) >>> 0));
 14111  		if (n === 255) {
 14112  			return false;
 14113  		}
 14114  		dn = (dn | ((n << 20 >>> 0))) >>> 0;
 14115  		n = (((x$4 = enc.decodeMap, x$5 = (2 >= src.$length ? ($throwRuntimeError("index out of range"), undefined) : src.$array[src.$offset + 2]), ((x$5 < 0 || x$5 >= x$4.length) ? ($throwRuntimeError("index out of range"), undefined) : x$4[x$5])) >>> 0));
 14116  		if (n === 255) {
 14117  			return false;
 14118  		}
 14119  		dn = (dn | ((n << 14 >>> 0))) >>> 0;
 14120  		n = (((x$6 = enc.decodeMap, x$7 = (3 >= src.$length ? ($throwRuntimeError("index out of range"), undefined) : src.$array[src.$offset + 3]), ((x$7 < 0 || x$7 >= x$6.length) ? ($throwRuntimeError("index out of range"), undefined) : x$6[x$7])) >>> 0));
 14121  		if (n === 255) {
 14122  			return false;
 14123  		}
 14124  		dn = (dn | ((n << 8 >>> 0))) >>> 0;
 14125  		$clone(binary.BigEndian, binary.bigEndian).PutUint32(dst, dn);
 14126  		return true;
 14127  	};
 14128  	Encoding.prototype.decode32 = function(dst, src) { return this.$val.decode32(dst, src); };
 14129  	Encoding.ptr.prototype.decode64 = function(dst, src) {
 14130  		var _tmp, _tmp$1, dn, dst, enc, n, src, x, x$1, x$10, x$11, x$12, x$13, x$14, x$15, x$16, x$17, x$18, x$19, x$2, x$20, x$21, x$22, x$23, x$3, x$4, x$5, x$6, x$7, x$8, x$9;
 14131  		enc = this;
 14132  		_tmp = new $Uint64(0, 0);
 14133  		_tmp$1 = new $Uint64(0, 0);
 14134  		dn = _tmp;
 14135  		n = _tmp$1;
 14136  		n = (new $Uint64(0, (x = enc.decodeMap, x$1 = (0 >= src.$length ? ($throwRuntimeError("index out of range"), undefined) : src.$array[src.$offset + 0]), ((x$1 < 0 || x$1 >= x.length) ? ($throwRuntimeError("index out of range"), undefined) : x[x$1]))));
 14137  		if ((n.$high === 0 && n.$low === 255)) {
 14138  			return false;
 14139  		}
 14140  		dn = (x$2 = $shiftLeft64(n, 58), new $Uint64(dn.$high | x$2.$high, (dn.$low | x$2.$low) >>> 0));
 14141  		n = (new $Uint64(0, (x$3 = enc.decodeMap, x$4 = (1 >= src.$length ? ($throwRuntimeError("index out of range"), undefined) : src.$array[src.$offset + 1]), ((x$4 < 0 || x$4 >= x$3.length) ? ($throwRuntimeError("index out of range"), undefined) : x$3[x$4]))));
 14142  		if ((n.$high === 0 && n.$low === 255)) {
 14143  			return false;
 14144  		}
 14145  		dn = (x$5 = $shiftLeft64(n, 52), new $Uint64(dn.$high | x$5.$high, (dn.$low | x$5.$low) >>> 0));
 14146  		n = (new $Uint64(0, (x$6 = enc.decodeMap, x$7 = (2 >= src.$length ? ($throwRuntimeError("index out of range"), undefined) : src.$array[src.$offset + 2]), ((x$7 < 0 || x$7 >= x$6.length) ? ($throwRuntimeError("index out of range"), undefined) : x$6[x$7]))));
 14147  		if ((n.$high === 0 && n.$low === 255)) {
 14148  			return false;
 14149  		}
 14150  		dn = (x$8 = $shiftLeft64(n, 46), new $Uint64(dn.$high | x$8.$high, (dn.$low | x$8.$low) >>> 0));
 14151  		n = (new $Uint64(0, (x$9 = enc.decodeMap, x$10 = (3 >= src.$length ? ($throwRuntimeError("index out of range"), undefined) : src.$array[src.$offset + 3]), ((x$10 < 0 || x$10 >= x$9.length) ? ($throwRuntimeError("index out of range"), undefined) : x$9[x$10]))));
 14152  		if ((n.$high === 0 && n.$low === 255)) {
 14153  			return false;
 14154  		}
 14155  		dn = (x$11 = $shiftLeft64(n, 40), new $Uint64(dn.$high | x$11.$high, (dn.$low | x$11.$low) >>> 0));
 14156  		n = (new $Uint64(0, (x$12 = enc.decodeMap, x$13 = (4 >= src.$length ? ($throwRuntimeError("index out of range"), undefined) : src.$array[src.$offset + 4]), ((x$13 < 0 || x$13 >= x$12.length) ? ($throwRuntimeError("index out of range"), undefined) : x$12[x$13]))));
 14157  		if ((n.$high === 0 && n.$low === 255)) {
 14158  			return false;
 14159  		}
 14160  		dn = (x$14 = $shiftLeft64(n, 34), new $Uint64(dn.$high | x$14.$high, (dn.$low | x$14.$low) >>> 0));
 14161  		n = (new $Uint64(0, (x$15 = enc.decodeMap, x$16 = (5 >= src.$length ? ($throwRuntimeError("index out of range"), undefined) : src.$array[src.$offset + 5]), ((x$16 < 0 || x$16 >= x$15.length) ? ($throwRuntimeError("index out of range"), undefined) : x$15[x$16]))));
 14162  		if ((n.$high === 0 && n.$low === 255)) {
 14163  			return false;
 14164  		}
 14165  		dn = (x$17 = $shiftLeft64(n, 28), new $Uint64(dn.$high | x$17.$high, (dn.$low | x$17.$low) >>> 0));
 14166  		n = (new $Uint64(0, (x$18 = enc.decodeMap, x$19 = (6 >= src.$length ? ($throwRuntimeError("index out of range"), undefined) : src.$array[src.$offset + 6]), ((x$19 < 0 || x$19 >= x$18.length) ? ($throwRuntimeError("index out of range"), undefined) : x$18[x$19]))));
 14167  		if ((n.$high === 0 && n.$low === 255)) {
 14168  			return false;
 14169  		}
 14170  		dn = (x$20 = $shiftLeft64(n, 22), new $Uint64(dn.$high | x$20.$high, (dn.$low | x$20.$low) >>> 0));
 14171  		n = (new $Uint64(0, (x$21 = enc.decodeMap, x$22 = (7 >= src.$length ? ($throwRuntimeError("index out of range"), undefined) : src.$array[src.$offset + 7]), ((x$22 < 0 || x$22 >= x$21.length) ? ($throwRuntimeError("index out of range"), undefined) : x$21[x$22]))));
 14172  		if ((n.$high === 0 && n.$low === 255)) {
 14173  			return false;
 14174  		}
 14175  		dn = (x$23 = $shiftLeft64(n, 16), new $Uint64(dn.$high | x$23.$high, (dn.$low | x$23.$low) >>> 0));
 14176  		$clone(binary.BigEndian, binary.bigEndian).PutUint64(dst, dn);
 14177  		return true;
 14178  	};
 14179  	Encoding.prototype.decode64 = function(dst, src) { return this.$val.decode64(dst, src); };
 14180  	Encoding.ptr.prototype.DecodedLen = function(n) {
 14181  		var _q, _q$1, enc, n;
 14182  		enc = this;
 14183  		if (enc.padChar === -1) {
 14184  			return (_q = ($imul(n, 6)) / 8, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero"));
 14185  		}
 14186  		return $imul((_q$1 = n / 4, (_q$1 === _q$1 && _q$1 !== 1/0 && _q$1 !== -1/0) ? _q$1 >> 0 : $throwRuntimeError("integer divide by zero")), 3);
 14187  	};
 14188  	Encoding.prototype.DecodedLen = function(n) { return this.$val.DecodedLen(n); };
 14189  	Encoding.methods = [{prop: "WithPadding", name: "WithPadding", pkg: "", typ: $funcType([$Int32], [ptrType], false)}, {prop: "Strict", name: "Strict", pkg: "", typ: $funcType([], [ptrType], false)}];
 14190  	ptrType.methods = [{prop: "Encode", name: "Encode", pkg: "", typ: $funcType([sliceType, sliceType], [], false)}, {prop: "EncodeToString", name: "EncodeToString", pkg: "", typ: $funcType([sliceType], [$String], false)}, {prop: "EncodedLen", name: "EncodedLen", pkg: "", typ: $funcType([$Int], [$Int], false)}, {prop: "decodeQuantum", name: "decodeQuantum", pkg: "encoding/base64", typ: $funcType([sliceType, sliceType, $Int], [$Int, $Int, $error], false)}, {prop: "DecodeString", name: "DecodeString", pkg: "", typ: $funcType([$String], [sliceType, $error], false)}, {prop: "Decode", name: "Decode", pkg: "", typ: $funcType([sliceType, sliceType], [$Int, $error], false)}, {prop: "decode32", name: "decode32", pkg: "encoding/base64", typ: $funcType([sliceType, sliceType], [$Bool], false)}, {prop: "decode64", name: "decode64", pkg: "encoding/base64", typ: $funcType([sliceType, sliceType], [$Bool], false)}, {prop: "DecodedLen", name: "DecodedLen", pkg: "", typ: $funcType([$Int], [$Int], false)}];
 14191  	CorruptInputError.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}];
 14192  	Encoding.init("encoding/base64", [{prop: "encode", name: "encode", anonymous: false, exported: false, typ: arrayType, tag: ""}, {prop: "decodeMap", name: "decodeMap", anonymous: false, exported: false, typ: arrayType$1, tag: ""}, {prop: "padChar", name: "padChar", anonymous: false, exported: false, typ: $Int32, tag: ""}, {prop: "strict", name: "strict", anonymous: false, exported: false, typ: $Bool, tag: ""}]);
 14193  	$init = function() {
 14194  		$pkg.$init = function() {};
 14195  		/* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 14196  		$r = binary.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 14197  		$r = io.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 14198  		$r = strconv.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 14199  		$pkg.StdEncoding = NewEncoding("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/");
 14200  		$pkg.URLEncoding = NewEncoding("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_");
 14201  		$pkg.RawStdEncoding = $clone($pkg.StdEncoding, Encoding).WithPadding(-1);
 14202  		$pkg.RawURLEncoding = $clone($pkg.URLEncoding, Encoding).WithPadding(-1);
 14203  		/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
 14204  	};
 14205  	$pkg.$init = $init;
 14206  	return $pkg;
 14207  })();
 14208  $packages["syscall"] = (function() {
 14209  	var $pkg = {}, $init, js, race, runtime, sync, RawConn, NetlinkRouteRequest, NetlinkMessage, NetlinkRouteAttr, SockaddrLinklayer, SockaddrNetlink, mmapper, Errno, Sockaddr, SockaddrInet4, SockaddrInet6, SockaddrUnix, Timespec, Stat_t, RawSockaddrInet4, RawSockaddrInet6, RawSockaddrUnix, RawSockaddrLinklayer, RawSockaddrNetlink, RawSockaddr, RawSockaddrAny, _Socklen, Linger, Iovec, IPMreq, IPMreqn, IPv6Mreq, Msghdr, NlMsghdr, RtGenmsg, RtAttr, IfInfomsg, IfAddrmsg, sliceType, sliceType$1, ptrType$2, ptrType$4, arrayType$1, ptrType$8, arrayType$2, ptrType$11, sliceType$6, ptrType$12, sliceType$7, ptrType$13, arrayType$4, arrayType$7, arrayType$8, arrayType$9, arrayType$10, ptrType$18, ptrType$19, structType, ptrType$22, funcType, funcType$1, ptrType$23, ptrType$24, ptrType$25, mapType, funcType$2, funcType$3, ptrType$26, ptrType$27, ptrType$28, ptrType$29, arrayType$15, ptrType$31, warningPrinted, lineBuffer, syscallModule, alreadyTriedToLoad, minusOne, envOnce, envLock, env, envs, mapper, errEAGAIN, errEINVAL, errENOENT, ioSync, ioSync$24ptr, errors, init, printWarning, printToConsole, Exit, indexByte, runtime_envs, syscall, Syscall, Syscall6, RawSyscall, BytePtrFromString, readInt, readIntBE, readIntLE, ParseDirent, copyenv, Getenv, CloseOnExec, SetNonblock, msanRead, msanWrite, nlmAlignOf, rtaAlignOf, newNetlinkRouteRequest, NetlinkRIB, ParseNetlinkMessage, netlinkMessageHeaderAndData, ParseNetlinkRouteAttr, netlinkRouteAttrAndValue, itoa, uitoa, Getpagesize, Chmod, Open, Rmdir, Unlink, anyToSockaddr, Accept, Accept4, Getsockname, SetsockoptIPMreqn, Recvmsg, SendmsgN, ReadDirent, direntIno, direntReclen, direntNamlen, errnoErr, Read, Write, Bind, Connect, Getpeername, GetsockoptInt, Recvfrom, Sendto, SetsockoptByte, SetsockoptInt, SetsockoptInet4Addr, SetsockoptIPMreq, SetsockoptIPv6Mreq, SetsockoptLinger, Socket, Sendfile, openat, unlinkat, Close, Dup, Fchdir, Fchmod, Fchmodat, fcntl, Fsync, Getdents, Getpid, read, write, munmap, Fchown, Fstat, Ftruncate, Listen, Lstat, Pread, Pwrite, Seek, sendfile, Shutdown, Stat, accept, accept4, bind, connect, getsockopt, setsockopt, socket, getpeername, getsockname, recvfrom, sendto, recvmsg, sendmsg, mmap;
 14210  	js = $packages["github.com/gopherjs/gopherjs/js"];
 14211  	race = $packages["internal/race"];
 14212  	runtime = $packages["runtime"];
 14213  	sync = $packages["sync"];
 14214  	RawConn = $pkg.RawConn = $newType(8, $kindInterface, "syscall.RawConn", true, "syscall", true, null);
 14215  	NetlinkRouteRequest = $pkg.NetlinkRouteRequest = $newType(0, $kindStruct, "syscall.NetlinkRouteRequest", true, "syscall", true, function(Header_, Data_) {
 14216  		this.$val = this;
 14217  		if (arguments.length === 0) {
 14218  			this.Header = new NlMsghdr.ptr(0, 0, 0, 0, 0);
 14219  			this.Data = new RtGenmsg.ptr(0);
 14220  			return;
 14221  		}
 14222  		this.Header = Header_;
 14223  		this.Data = Data_;
 14224  	});
 14225  	NetlinkMessage = $pkg.NetlinkMessage = $newType(0, $kindStruct, "syscall.NetlinkMessage", true, "syscall", true, function(Header_, Data_) {
 14226  		this.$val = this;
 14227  		if (arguments.length === 0) {
 14228  			this.Header = new NlMsghdr.ptr(0, 0, 0, 0, 0);
 14229  			this.Data = sliceType.nil;
 14230  			return;
 14231  		}
 14232  		this.Header = Header_;
 14233  		this.Data = Data_;
 14234  	});
 14235  	NetlinkRouteAttr = $pkg.NetlinkRouteAttr = $newType(0, $kindStruct, "syscall.NetlinkRouteAttr", true, "syscall", true, function(Attr_, Value_) {
 14236  		this.$val = this;
 14237  		if (arguments.length === 0) {
 14238  			this.Attr = new RtAttr.ptr(0, 0);
 14239  			this.Value = sliceType.nil;
 14240  			return;
 14241  		}
 14242  		this.Attr = Attr_;
 14243  		this.Value = Value_;
 14244  	});
 14245  	SockaddrLinklayer = $pkg.SockaddrLinklayer = $newType(0, $kindStruct, "syscall.SockaddrLinklayer", true, "syscall", true, function(Protocol_, Ifindex_, Hatype_, Pkttype_, Halen_, Addr_, raw_) {
 14246  		this.$val = this;
 14247  		if (arguments.length === 0) {
 14248  			this.Protocol = 0;
 14249  			this.Ifindex = 0;
 14250  			this.Hatype = 0;
 14251  			this.Pkttype = 0;
 14252  			this.Halen = 0;
 14253  			this.Addr = arrayType$1.zero();
 14254  			this.raw = new RawSockaddrLinklayer.ptr(0, 0, 0, 0, 0, 0, arrayType$1.zero());
 14255  			return;
 14256  		}
 14257  		this.Protocol = Protocol_;
 14258  		this.Ifindex = Ifindex_;
 14259  		this.Hatype = Hatype_;
 14260  		this.Pkttype = Pkttype_;
 14261  		this.Halen = Halen_;
 14262  		this.Addr = Addr_;
 14263  		this.raw = raw_;
 14264  	});
 14265  	SockaddrNetlink = $pkg.SockaddrNetlink = $newType(0, $kindStruct, "syscall.SockaddrNetlink", true, "syscall", true, function(Family_, Pad_, Pid_, Groups_, raw_) {
 14266  		this.$val = this;
 14267  		if (arguments.length === 0) {
 14268  			this.Family = 0;
 14269  			this.Pad = 0;
 14270  			this.Pid = 0;
 14271  			this.Groups = 0;
 14272  			this.raw = new RawSockaddrNetlink.ptr(0, 0, 0, 0);
 14273  			return;
 14274  		}
 14275  		this.Family = Family_;
 14276  		this.Pad = Pad_;
 14277  		this.Pid = Pid_;
 14278  		this.Groups = Groups_;
 14279  		this.raw = raw_;
 14280  	});
 14281  	mmapper = $pkg.mmapper = $newType(0, $kindStruct, "syscall.mmapper", true, "syscall", false, function(Mutex_, active_, mmap_, munmap_) {
 14282  		this.$val = this;
 14283  		if (arguments.length === 0) {
 14284  			this.Mutex = new sync.Mutex.ptr(0, 0);
 14285  			this.active = false;
 14286  			this.mmap = $throwNilPointerError;
 14287  			this.munmap = $throwNilPointerError;
 14288  			return;
 14289  		}
 14290  		this.Mutex = Mutex_;
 14291  		this.active = active_;
 14292  		this.mmap = mmap_;
 14293  		this.munmap = munmap_;
 14294  	});
 14295  	Errno = $pkg.Errno = $newType(4, $kindUintptr, "syscall.Errno", true, "syscall", true, null);
 14296  	Sockaddr = $pkg.Sockaddr = $newType(8, $kindInterface, "syscall.Sockaddr", true, "syscall", true, null);
 14297  	SockaddrInet4 = $pkg.SockaddrInet4 = $newType(0, $kindStruct, "syscall.SockaddrInet4", true, "syscall", true, function(Port_, Addr_, raw_) {
 14298  		this.$val = this;
 14299  		if (arguments.length === 0) {
 14300  			this.Port = 0;
 14301  			this.Addr = arrayType$8.zero();
 14302  			this.raw = new RawSockaddrInet4.ptr(0, 0, arrayType$8.zero(), arrayType$1.zero());
 14303  			return;
 14304  		}
 14305  		this.Port = Port_;
 14306  		this.Addr = Addr_;
 14307  		this.raw = raw_;
 14308  	});
 14309  	SockaddrInet6 = $pkg.SockaddrInet6 = $newType(0, $kindStruct, "syscall.SockaddrInet6", true, "syscall", true, function(Port_, ZoneId_, Addr_, raw_) {
 14310  		this.$val = this;
 14311  		if (arguments.length === 0) {
 14312  			this.Port = 0;
 14313  			this.ZoneId = 0;
 14314  			this.Addr = arrayType$2.zero();
 14315  			this.raw = new RawSockaddrInet6.ptr(0, 0, 0, arrayType$2.zero(), 0);
 14316  			return;
 14317  		}
 14318  		this.Port = Port_;
 14319  		this.ZoneId = ZoneId_;
 14320  		this.Addr = Addr_;
 14321  		this.raw = raw_;
 14322  	});
 14323  	SockaddrUnix = $pkg.SockaddrUnix = $newType(0, $kindStruct, "syscall.SockaddrUnix", true, "syscall", true, function(Name_, raw_) {
 14324  		this.$val = this;
 14325  		if (arguments.length === 0) {
 14326  			this.Name = "";
 14327  			this.raw = new RawSockaddrUnix.ptr(0, arrayType$7.zero());
 14328  			return;
 14329  		}
 14330  		this.Name = Name_;
 14331  		this.raw = raw_;
 14332  	});
 14333  	Timespec = $pkg.Timespec = $newType(0, $kindStruct, "syscall.Timespec", true, "syscall", true, function(Sec_, Nsec_) {
 14334  		this.$val = this;
 14335  		if (arguments.length === 0) {
 14336  			this.Sec = new $Int64(0, 0);
 14337  			this.Nsec = new $Int64(0, 0);
 14338  			return;
 14339  		}
 14340  		this.Sec = Sec_;
 14341  		this.Nsec = Nsec_;
 14342  	});
 14343  	Stat_t = $pkg.Stat_t = $newType(0, $kindStruct, "syscall.Stat_t", true, "syscall", true, function(Dev_, Ino_, Nlink_, Mode_, Uid_, Gid_, X__pad0_, Rdev_, Size_, Blksize_, Blocks_, Atim_, Mtim_, Ctim_, X__unused_) {
 14344  		this.$val = this;
 14345  		if (arguments.length === 0) {
 14346  			this.Dev = new $Uint64(0, 0);
 14347  			this.Ino = new $Uint64(0, 0);
 14348  			this.Nlink = new $Uint64(0, 0);
 14349  			this.Mode = 0;
 14350  			this.Uid = 0;
 14351  			this.Gid = 0;
 14352  			this.X__pad0 = 0;
 14353  			this.Rdev = new $Uint64(0, 0);
 14354  			this.Size = new $Int64(0, 0);
 14355  			this.Blksize = new $Int64(0, 0);
 14356  			this.Blocks = new $Int64(0, 0);
 14357  			this.Atim = new Timespec.ptr(new $Int64(0, 0), new $Int64(0, 0));
 14358  			this.Mtim = new Timespec.ptr(new $Int64(0, 0), new $Int64(0, 0));
 14359  			this.Ctim = new Timespec.ptr(new $Int64(0, 0), new $Int64(0, 0));
 14360  			this.X__unused = arrayType$15.zero();
 14361  			return;
 14362  		}
 14363  		this.Dev = Dev_;
 14364  		this.Ino = Ino_;
 14365  		this.Nlink = Nlink_;
 14366  		this.Mode = Mode_;
 14367  		this.Uid = Uid_;
 14368  		this.Gid = Gid_;
 14369  		this.X__pad0 = X__pad0_;
 14370  		this.Rdev = Rdev_;
 14371  		this.Size = Size_;
 14372  		this.Blksize = Blksize_;
 14373  		this.Blocks = Blocks_;
 14374  		this.Atim = Atim_;
 14375  		this.Mtim = Mtim_;
 14376  		this.Ctim = Ctim_;
 14377  		this.X__unused = X__unused_;
 14378  	});
 14379  	RawSockaddrInet4 = $pkg.RawSockaddrInet4 = $newType(0, $kindStruct, "syscall.RawSockaddrInet4", true, "syscall", true, function(Family_, Port_, Addr_, Zero_) {
 14380  		this.$val = this;
 14381  		if (arguments.length === 0) {
 14382  			this.Family = 0;
 14383  			this.Port = 0;
 14384  			this.Addr = arrayType$8.zero();
 14385  			this.Zero = arrayType$1.zero();
 14386  			return;
 14387  		}
 14388  		this.Family = Family_;
 14389  		this.Port = Port_;
 14390  		this.Addr = Addr_;
 14391  		this.Zero = Zero_;
 14392  	});
 14393  	RawSockaddrInet6 = $pkg.RawSockaddrInet6 = $newType(0, $kindStruct, "syscall.RawSockaddrInet6", true, "syscall", true, function(Family_, Port_, Flowinfo_, Addr_, Scope_id_) {
 14394  		this.$val = this;
 14395  		if (arguments.length === 0) {
 14396  			this.Family = 0;
 14397  			this.Port = 0;
 14398  			this.Flowinfo = 0;
 14399  			this.Addr = arrayType$2.zero();
 14400  			this.Scope_id = 0;
 14401  			return;
 14402  		}
 14403  		this.Family = Family_;
 14404  		this.Port = Port_;
 14405  		this.Flowinfo = Flowinfo_;
 14406  		this.Addr = Addr_;
 14407  		this.Scope_id = Scope_id_;
 14408  	});
 14409  	RawSockaddrUnix = $pkg.RawSockaddrUnix = $newType(0, $kindStruct, "syscall.RawSockaddrUnix", true, "syscall", true, function(Family_, Path_) {
 14410  		this.$val = this;
 14411  		if (arguments.length === 0) {
 14412  			this.Family = 0;
 14413  			this.Path = arrayType$7.zero();
 14414  			return;
 14415  		}
 14416  		this.Family = Family_;
 14417  		this.Path = Path_;
 14418  	});
 14419  	RawSockaddrLinklayer = $pkg.RawSockaddrLinklayer = $newType(0, $kindStruct, "syscall.RawSockaddrLinklayer", true, "syscall", true, function(Family_, Protocol_, Ifindex_, Hatype_, Pkttype_, Halen_, Addr_) {
 14420  		this.$val = this;
 14421  		if (arguments.length === 0) {
 14422  			this.Family = 0;
 14423  			this.Protocol = 0;
 14424  			this.Ifindex = 0;
 14425  			this.Hatype = 0;
 14426  			this.Pkttype = 0;
 14427  			this.Halen = 0;
 14428  			this.Addr = arrayType$1.zero();
 14429  			return;
 14430  		}
 14431  		this.Family = Family_;
 14432  		this.Protocol = Protocol_;
 14433  		this.Ifindex = Ifindex_;
 14434  		this.Hatype = Hatype_;
 14435  		this.Pkttype = Pkttype_;
 14436  		this.Halen = Halen_;
 14437  		this.Addr = Addr_;
 14438  	});
 14439  	RawSockaddrNetlink = $pkg.RawSockaddrNetlink = $newType(0, $kindStruct, "syscall.RawSockaddrNetlink", true, "syscall", true, function(Family_, Pad_, Pid_, Groups_) {
 14440  		this.$val = this;
 14441  		if (arguments.length === 0) {
 14442  			this.Family = 0;
 14443  			this.Pad = 0;
 14444  			this.Pid = 0;
 14445  			this.Groups = 0;
 14446  			return;
 14447  		}
 14448  		this.Family = Family_;
 14449  		this.Pad = Pad_;
 14450  		this.Pid = Pid_;
 14451  		this.Groups = Groups_;
 14452  	});
 14453  	RawSockaddr = $pkg.RawSockaddr = $newType(0, $kindStruct, "syscall.RawSockaddr", true, "syscall", true, function(Family_, Data_) {
 14454  		this.$val = this;
 14455  		if (arguments.length === 0) {
 14456  			this.Family = 0;
 14457  			this.Data = arrayType$9.zero();
 14458  			return;
 14459  		}
 14460  		this.Family = Family_;
 14461  		this.Data = Data_;
 14462  	});
 14463  	RawSockaddrAny = $pkg.RawSockaddrAny = $newType(0, $kindStruct, "syscall.RawSockaddrAny", true, "syscall", true, function(Addr_, Pad_) {
 14464  		this.$val = this;
 14465  		if (arguments.length === 0) {
 14466  			this.Addr = new RawSockaddr.ptr(0, arrayType$9.zero());
 14467  			this.Pad = arrayType$10.zero();
 14468  			return;
 14469  		}
 14470  		this.Addr = Addr_;
 14471  		this.Pad = Pad_;
 14472  	});
 14473  	_Socklen = $pkg._Socklen = $newType(4, $kindUint32, "syscall._Socklen", true, "syscall", false, null);
 14474  	Linger = $pkg.Linger = $newType(0, $kindStruct, "syscall.Linger", true, "syscall", true, function(Onoff_, Linger_) {
 14475  		this.$val = this;
 14476  		if (arguments.length === 0) {
 14477  			this.Onoff = 0;
 14478  			this.Linger = 0;
 14479  			return;
 14480  		}
 14481  		this.Onoff = Onoff_;
 14482  		this.Linger = Linger_;
 14483  	});
 14484  	Iovec = $pkg.Iovec = $newType(0, $kindStruct, "syscall.Iovec", true, "syscall", true, function(Base_, Len_) {
 14485  		this.$val = this;
 14486  		if (arguments.length === 0) {
 14487  			this.Base = ptrType$2.nil;
 14488  			this.Len = new $Uint64(0, 0);
 14489  			return;
 14490  		}
 14491  		this.Base = Base_;
 14492  		this.Len = Len_;
 14493  	});
 14494  	IPMreq = $pkg.IPMreq = $newType(0, $kindStruct, "syscall.IPMreq", true, "syscall", true, function(Multiaddr_, Interface_) {
 14495  		this.$val = this;
 14496  		if (arguments.length === 0) {
 14497  			this.Multiaddr = arrayType$8.zero();
 14498  			this.Interface = arrayType$8.zero();
 14499  			return;
 14500  		}
 14501  		this.Multiaddr = Multiaddr_;
 14502  		this.Interface = Interface_;
 14503  	});
 14504  	IPMreqn = $pkg.IPMreqn = $newType(0, $kindStruct, "syscall.IPMreqn", true, "syscall", true, function(Multiaddr_, Address_, Ifindex_) {
 14505  		this.$val = this;
 14506  		if (arguments.length === 0) {
 14507  			this.Multiaddr = arrayType$8.zero();
 14508  			this.Address = arrayType$8.zero();
 14509  			this.Ifindex = 0;
 14510  			return;
 14511  		}
 14512  		this.Multiaddr = Multiaddr_;
 14513  		this.Address = Address_;
 14514  		this.Ifindex = Ifindex_;
 14515  	});
 14516  	IPv6Mreq = $pkg.IPv6Mreq = $newType(0, $kindStruct, "syscall.IPv6Mreq", true, "syscall", true, function(Multiaddr_, Interface_) {
 14517  		this.$val = this;
 14518  		if (arguments.length === 0) {
 14519  			this.Multiaddr = arrayType$2.zero();
 14520  			this.Interface = 0;
 14521  			return;
 14522  		}
 14523  		this.Multiaddr = Multiaddr_;
 14524  		this.Interface = Interface_;
 14525  	});
 14526  	Msghdr = $pkg.Msghdr = $newType(0, $kindStruct, "syscall.Msghdr", true, "syscall", true, function(Name_, Namelen_, Pad_cgo_0_, Iov_, Iovlen_, Control_, Controllen_, Flags_, Pad_cgo_1_) {
 14527  		this.$val = this;
 14528  		if (arguments.length === 0) {
 14529  			this.Name = ptrType$2.nil;
 14530  			this.Namelen = 0;
 14531  			this.Pad_cgo_0 = arrayType$8.zero();
 14532  			this.Iov = ptrType$19.nil;
 14533  			this.Iovlen = new $Uint64(0, 0);
 14534  			this.Control = ptrType$2.nil;
 14535  			this.Controllen = new $Uint64(0, 0);
 14536  			this.Flags = 0;
 14537  			this.Pad_cgo_1 = arrayType$8.zero();
 14538  			return;
 14539  		}
 14540  		this.Name = Name_;
 14541  		this.Namelen = Namelen_;
 14542  		this.Pad_cgo_0 = Pad_cgo_0_;
 14543  		this.Iov = Iov_;
 14544  		this.Iovlen = Iovlen_;
 14545  		this.Control = Control_;
 14546  		this.Controllen = Controllen_;
 14547  		this.Flags = Flags_;
 14548  		this.Pad_cgo_1 = Pad_cgo_1_;
 14549  	});
 14550  	NlMsghdr = $pkg.NlMsghdr = $newType(0, $kindStruct, "syscall.NlMsghdr", true, "syscall", true, function(Len_, Type_, Flags_, Seq_, Pid_) {
 14551  		this.$val = this;
 14552  		if (arguments.length === 0) {
 14553  			this.Len = 0;
 14554  			this.Type = 0;
 14555  			this.Flags = 0;
 14556  			this.Seq = 0;
 14557  			this.Pid = 0;
 14558  			return;
 14559  		}
 14560  		this.Len = Len_;
 14561  		this.Type = Type_;
 14562  		this.Flags = Flags_;
 14563  		this.Seq = Seq_;
 14564  		this.Pid = Pid_;
 14565  	});
 14566  	RtGenmsg = $pkg.RtGenmsg = $newType(0, $kindStruct, "syscall.RtGenmsg", true, "syscall", true, function(Family_) {
 14567  		this.$val = this;
 14568  		if (arguments.length === 0) {
 14569  			this.Family = 0;
 14570  			return;
 14571  		}
 14572  		this.Family = Family_;
 14573  	});
 14574  	RtAttr = $pkg.RtAttr = $newType(0, $kindStruct, "syscall.RtAttr", true, "syscall", true, function(Len_, Type_) {
 14575  		this.$val = this;
 14576  		if (arguments.length === 0) {
 14577  			this.Len = 0;
 14578  			this.Type = 0;
 14579  			return;
 14580  		}
 14581  		this.Len = Len_;
 14582  		this.Type = Type_;
 14583  	});
 14584  	IfInfomsg = $pkg.IfInfomsg = $newType(0, $kindStruct, "syscall.IfInfomsg", true, "syscall", true, function(Family_, X__ifi_pad_, Type_, Index_, Flags_, Change_) {
 14585  		this.$val = this;
 14586  		if (arguments.length === 0) {
 14587  			this.Family = 0;
 14588  			this.X__ifi_pad = 0;
 14589  			this.Type = 0;
 14590  			this.Index = 0;
 14591  			this.Flags = 0;
 14592  			this.Change = 0;
 14593  			return;
 14594  		}
 14595  		this.Family = Family_;
 14596  		this.X__ifi_pad = X__ifi_pad_;
 14597  		this.Type = Type_;
 14598  		this.Index = Index_;
 14599  		this.Flags = Flags_;
 14600  		this.Change = Change_;
 14601  	});
 14602  	IfAddrmsg = $pkg.IfAddrmsg = $newType(0, $kindStruct, "syscall.IfAddrmsg", true, "syscall", true, function(Family_, Prefixlen_, Flags_, Scope_, Index_) {
 14603  		this.$val = this;
 14604  		if (arguments.length === 0) {
 14605  			this.Family = 0;
 14606  			this.Prefixlen = 0;
 14607  			this.Flags = 0;
 14608  			this.Scope = 0;
 14609  			this.Index = 0;
 14610  			return;
 14611  		}
 14612  		this.Family = Family_;
 14613  		this.Prefixlen = Prefixlen_;
 14614  		this.Flags = Flags_;
 14615  		this.Scope = Scope_;
 14616  		this.Index = Index_;
 14617  	});
 14618  	sliceType = $sliceType($Uint8);
 14619  	sliceType$1 = $sliceType($String);
 14620  	ptrType$2 = $ptrType($Uint8);
 14621  	ptrType$4 = $ptrType($Int32);
 14622  	arrayType$1 = $arrayType($Uint8, 8);
 14623  	ptrType$8 = $ptrType($Uint16);
 14624  	arrayType$2 = $arrayType($Uint8, 16);
 14625  	ptrType$11 = $ptrType(SockaddrNetlink);
 14626  	sliceType$6 = $sliceType(NetlinkMessage);
 14627  	ptrType$12 = $ptrType(NlMsghdr);
 14628  	sliceType$7 = $sliceType(NetlinkRouteAttr);
 14629  	ptrType$13 = $ptrType(RtAttr);
 14630  	arrayType$4 = $arrayType($Uint8, 32);
 14631  	arrayType$7 = $arrayType($Int8, 108);
 14632  	arrayType$8 = $arrayType($Uint8, 4);
 14633  	arrayType$9 = $arrayType($Int8, 14);
 14634  	arrayType$10 = $arrayType($Int8, 96);
 14635  	ptrType$18 = $ptrType(_Socklen);
 14636  	ptrType$19 = $ptrType(Iovec);
 14637  	structType = $structType("syscall", [{prop: "addr", name: "addr", anonymous: false, exported: false, typ: $Uintptr, tag: ""}, {prop: "len", name: "len", anonymous: false, exported: false, typ: $Int, tag: ""}, {prop: "cap", name: "cap", anonymous: false, exported: false, typ: $Int, tag: ""}]);
 14638  	ptrType$22 = $ptrType($Int64);
 14639  	funcType = $funcType([$Uintptr], [], false);
 14640  	funcType$1 = $funcType([$Uintptr], [$Bool], false);
 14641  	ptrType$23 = $ptrType(NetlinkRouteRequest);
 14642  	ptrType$24 = $ptrType(SockaddrLinklayer);
 14643  	ptrType$25 = $ptrType(mmapper);
 14644  	mapType = $mapType(ptrType$2, sliceType);
 14645  	funcType$2 = $funcType([$Uintptr, $Uintptr, $Int, $Int, $Int, $Int64], [$Uintptr, $error], false);
 14646  	funcType$3 = $funcType([$Uintptr, $Uintptr], [$error], false);
 14647  	ptrType$26 = $ptrType(SockaddrInet4);
 14648  	ptrType$27 = $ptrType(SockaddrInet6);
 14649  	ptrType$28 = $ptrType(SockaddrUnix);
 14650  	ptrType$29 = $ptrType(Timespec);
 14651  	arrayType$15 = $arrayType($Int64, 3);
 14652  	ptrType$31 = $ptrType(Msghdr);
 14653  	init = function() {
 14654  		$flushConsole = (function() {
 14655  			if (!((lineBuffer.$length === 0))) {
 14656  				$global.console.log($externalize(($bytesToString(lineBuffer)), $String));
 14657  				lineBuffer = sliceType.nil;
 14658  			}
 14659  		});
 14660  	};
 14661  	printWarning = function() {
 14662  		if (!warningPrinted) {
 14663  			$global.console.error($externalize("warning: system calls not available, see https://github.com/gopherjs/gopherjs/blob/master/doc/syscalls.md", $String));
 14664  		}
 14665  		warningPrinted = true;
 14666  	};
 14667  	printToConsole = function(b) {
 14668  		var b, goPrintToConsole, i;
 14669  		goPrintToConsole = $global.goPrintToConsole;
 14670  		if (!(goPrintToConsole === undefined)) {
 14671  			goPrintToConsole(b);
 14672  			return;
 14673  		}
 14674  		lineBuffer = $appendSlice(lineBuffer, b);
 14675  		while (true) {
 14676  			i = indexByte(lineBuffer, 10);
 14677  			if (i === -1) {
 14678  				break;
 14679  			}
 14680  			$global.console.log($externalize(($bytesToString($subslice(lineBuffer, 0, i))), $String));
 14681  			lineBuffer = $subslice(lineBuffer, (i + 1 >> 0));
 14682  		}
 14683  	};
 14684  	Exit = function(code) {
 14685  		var code;
 14686  		Syscall(231, ((code >>> 0)), 0, 0);
 14687  	};
 14688  	$pkg.Exit = Exit;
 14689  	indexByte = function(s, c) {
 14690  		var _i, _ref, b, c, i, s;
 14691  		_ref = s;
 14692  		_i = 0;
 14693  		while (true) {
 14694  			if (!(_i < _ref.$length)) { break; }
 14695  			i = _i;
 14696  			b = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
 14697  			if (b === c) {
 14698  				return i;
 14699  			}
 14700  			_i++;
 14701  		}
 14702  		return -1;
 14703  	};
 14704  	runtime_envs = function() {
 14705  		var envkeys, envs$1, i, jsEnv, key, process;
 14706  		process = $global.process;
 14707  		if (process === undefined) {
 14708  			return sliceType$1.nil;
 14709  		}
 14710  		jsEnv = process.env;
 14711  		envkeys = $global.Object.keys(jsEnv);
 14712  		envs$1 = $makeSlice(sliceType$1, $parseInt(envkeys.length));
 14713  		i = 0;
 14714  		while (true) {
 14715  			if (!(i < $parseInt(envkeys.length))) { break; }
 14716  			key = $internalize(envkeys[i], $String);
 14717  			((i < 0 || i >= envs$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : envs$1.$array[envs$1.$offset + i] = key + "=" + $internalize(jsEnv[$externalize(key, $String)], $String));
 14718  			i = i + (1) >> 0;
 14719  		}
 14720  		return envs$1;
 14721  	};
 14722  	syscall = function(name) {
 14723  		var name, require, $deferred;
 14724  		/* */ var $err = null; try { $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
 14725  		$deferred.push([(function() {
 14726  			$recover();
 14727  		}), []]);
 14728  		if (syscallModule === null) {
 14729  			if (alreadyTriedToLoad) {
 14730  				return null;
 14731  			}
 14732  			alreadyTriedToLoad = true;
 14733  			require = $global.require;
 14734  			if (require === undefined) {
 14735  				$panic(new $String(""));
 14736  			}
 14737  			syscallModule = require($externalize("syscall", $String));
 14738  		}
 14739  		return syscallModule[$externalize(name, $String)];
 14740  		/* */ } catch(err) { $err = err; return null; } finally { $callDeferred($deferred, $err); }
 14741  	};
 14742  	Syscall = function(trap, a1, a2, a3) {
 14743  		var _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, a1, a2, a3, array, err, f, r, r1, r2, slice, trap;
 14744  		r1 = 0;
 14745  		r2 = 0;
 14746  		err = 0;
 14747  		f = syscall("Syscall");
 14748  		if (!(f === null)) {
 14749  			r = f(trap, a1, a2, a3);
 14750  			_tmp = ((($parseInt(r[0]) >> 0) >>> 0));
 14751  			_tmp$1 = ((($parseInt(r[1]) >> 0) >>> 0));
 14752  			_tmp$2 = ((($parseInt(r[2]) >> 0) >>> 0));
 14753  			r1 = _tmp;
 14754  			r2 = _tmp$1;
 14755  			err = _tmp$2;
 14756  			return [r1, r2, err];
 14757  		}
 14758  		if ((trap === 1) && ((a1 === 1) || (a1 === 2))) {
 14759  			array = a2;
 14760  			slice = $makeSlice(sliceType, $parseInt(array.length));
 14761  			slice.$array = array;
 14762  			printToConsole(slice);
 14763  			_tmp$3 = (($parseInt(array.length) >>> 0));
 14764  			_tmp$4 = 0;
 14765  			_tmp$5 = 0;
 14766  			r1 = _tmp$3;
 14767  			r2 = _tmp$4;
 14768  			err = _tmp$5;
 14769  			return [r1, r2, err];
 14770  		}
 14771  		if (trap === 231) {
 14772  			runtime.Goexit();
 14773  		}
 14774  		printWarning();
 14775  		_tmp$6 = ((minusOne >>> 0));
 14776  		_tmp$7 = 0;
 14777  		_tmp$8 = 13;
 14778  		r1 = _tmp$6;
 14779  		r2 = _tmp$7;
 14780  		err = _tmp$8;
 14781  		return [r1, r2, err];
 14782  	};
 14783  	$pkg.Syscall = Syscall;
 14784  	Syscall6 = function(trap, a1, a2, a3, a4, a5, a6) {
 14785  		var _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, a1, a2, a3, a4, a5, a6, err, f, r, r1, r2, trap;
 14786  		r1 = 0;
 14787  		r2 = 0;
 14788  		err = 0;
 14789  		f = syscall("Syscall6");
 14790  		if (!(f === null)) {
 14791  			r = f(trap, a1, a2, a3, a4, a5, a6);
 14792  			_tmp = ((($parseInt(r[0]) >> 0) >>> 0));
 14793  			_tmp$1 = ((($parseInt(r[1]) >> 0) >>> 0));
 14794  			_tmp$2 = ((($parseInt(r[2]) >> 0) >>> 0));
 14795  			r1 = _tmp;
 14796  			r2 = _tmp$1;
 14797  			err = _tmp$2;
 14798  			return [r1, r2, err];
 14799  		}
 14800  		if (!((trap === 202))) {
 14801  			printWarning();
 14802  		}
 14803  		_tmp$3 = ((minusOne >>> 0));
 14804  		_tmp$4 = 0;
 14805  		_tmp$5 = 13;
 14806  		r1 = _tmp$3;
 14807  		r2 = _tmp$4;
 14808  		err = _tmp$5;
 14809  		return [r1, r2, err];
 14810  	};
 14811  	$pkg.Syscall6 = Syscall6;
 14812  	RawSyscall = function(trap, a1, a2, a3) {
 14813  		var _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, a1, a2, a3, err, f, r, r1, r2, trap;
 14814  		r1 = 0;
 14815  		r2 = 0;
 14816  		err = 0;
 14817  		f = syscall("Syscall");
 14818  		if (!(f === null)) {
 14819  			r = f(trap, a1, a2, a3);
 14820  			_tmp = ((($parseInt(r[0]) >> 0) >>> 0));
 14821  			_tmp$1 = ((($parseInt(r[1]) >> 0) >>> 0));
 14822  			_tmp$2 = ((($parseInt(r[2]) >> 0) >>> 0));
 14823  			r1 = _tmp;
 14824  			r2 = _tmp$1;
 14825  			err = _tmp$2;
 14826  			return [r1, r2, err];
 14827  		}
 14828  		printWarning();
 14829  		_tmp$3 = ((minusOne >>> 0));
 14830  		_tmp$4 = 0;
 14831  		_tmp$5 = 13;
 14832  		r1 = _tmp$3;
 14833  		r2 = _tmp$4;
 14834  		err = _tmp$5;
 14835  		return [r1, r2, err];
 14836  	};
 14837  	$pkg.RawSyscall = RawSyscall;
 14838  	BytePtrFromString = function(s) {
 14839  		var _i, _ref, array, b, i, s;
 14840  		array = new ($global.Uint8Array)(s.length + 1 >> 0);
 14841  		_ref = (new sliceType($stringToBytes(s)));
 14842  		_i = 0;
 14843  		while (true) {
 14844  			if (!(_i < _ref.$length)) { break; }
 14845  			i = _i;
 14846  			b = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
 14847  			if (b === 0) {
 14848  				return [ptrType$2.nil, new Errno(22)];
 14849  			}
 14850  			array[i] = b;
 14851  			_i++;
 14852  		}
 14853  		array[s.length] = 0;
 14854  		return [((array)), $ifaceNil];
 14855  	};
 14856  	$pkg.BytePtrFromString = BytePtrFromString;
 14857  	readInt = function(b, off, size) {
 14858  		var _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, b, off, ok, size, u;
 14859  		u = new $Uint64(0, 0);
 14860  		ok = false;
 14861  		if (b.$length < (((off + size >>> 0) >> 0))) {
 14862  			_tmp = new $Uint64(0, 0);
 14863  			_tmp$1 = false;
 14864  			u = _tmp;
 14865  			ok = _tmp$1;
 14866  			return [u, ok];
 14867  		}
 14868  		if (false) {
 14869  			_tmp$2 = readIntBE($subslice(b, off), size);
 14870  			_tmp$3 = true;
 14871  			u = _tmp$2;
 14872  			ok = _tmp$3;
 14873  			return [u, ok];
 14874  		}
 14875  		_tmp$4 = readIntLE($subslice(b, off), size);
 14876  		_tmp$5 = true;
 14877  		u = _tmp$4;
 14878  		ok = _tmp$5;
 14879  		return [u, ok];
 14880  	};
 14881  	readIntBE = function(b, size) {
 14882  		var _1, b, size, x, x$1, x$10, x$11, x$12, x$13, x$14, x$15, x$16, x$17, x$18, x$19, x$2, x$20, x$21, x$3, x$4, x$5, x$6, x$7, x$8, x$9;
 14883  		_1 = size;
 14884  		if (_1 === (1)) {
 14885  			return (new $Uint64(0, (0 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 0])));
 14886  		} else if (_1 === (2)) {
 14887  			$unused((1 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 1]));
 14888  			return (x = (new $Uint64(0, (1 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 1]))), x$1 = $shiftLeft64((new $Uint64(0, (0 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 0]))), 8), new $Uint64(x.$high | x$1.$high, (x.$low | x$1.$low) >>> 0));
 14889  		} else if (_1 === (4)) {
 14890  			$unused((3 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 3]));
 14891  			return (x$2 = (x$3 = (x$4 = (new $Uint64(0, (3 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 3]))), x$5 = $shiftLeft64((new $Uint64(0, (2 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 2]))), 8), new $Uint64(x$4.$high | x$5.$high, (x$4.$low | x$5.$low) >>> 0)), x$6 = $shiftLeft64((new $Uint64(0, (1 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 1]))), 16), new $Uint64(x$3.$high | x$6.$high, (x$3.$low | x$6.$low) >>> 0)), x$7 = $shiftLeft64((new $Uint64(0, (0 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 0]))), 24), new $Uint64(x$2.$high | x$7.$high, (x$2.$low | x$7.$low) >>> 0));
 14892  		} else if (_1 === (8)) {
 14893  			$unused((7 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 7]));
 14894  			return (x$8 = (x$9 = (x$10 = (x$11 = (x$12 = (x$13 = (x$14 = (new $Uint64(0, (7 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 7]))), x$15 = $shiftLeft64((new $Uint64(0, (6 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 6]))), 8), new $Uint64(x$14.$high | x$15.$high, (x$14.$low | x$15.$low) >>> 0)), x$16 = $shiftLeft64((new $Uint64(0, (5 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 5]))), 16), new $Uint64(x$13.$high | x$16.$high, (x$13.$low | x$16.$low) >>> 0)), x$17 = $shiftLeft64((new $Uint64(0, (4 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 4]))), 24), new $Uint64(x$12.$high | x$17.$high, (x$12.$low | x$17.$low) >>> 0)), x$18 = $shiftLeft64((new $Uint64(0, (3 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 3]))), 32), new $Uint64(x$11.$high | x$18.$high, (x$11.$low | x$18.$low) >>> 0)), x$19 = $shiftLeft64((new $Uint64(0, (2 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 2]))), 40), new $Uint64(x$10.$high | x$19.$high, (x$10.$low | x$19.$low) >>> 0)), x$20 = $shiftLeft64((new $Uint64(0, (1 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 1]))), 48), new $Uint64(x$9.$high | x$20.$high, (x$9.$low | x$20.$low) >>> 0)), x$21 = $shiftLeft64((new $Uint64(0, (0 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 0]))), 56), new $Uint64(x$8.$high | x$21.$high, (x$8.$low | x$21.$low) >>> 0));
 14895  		} else {
 14896  			$panic(new $String("syscall: readInt with unsupported size"));
 14897  		}
 14898  	};
 14899  	readIntLE = function(b, size) {
 14900  		var _1, b, size, x, x$1, x$10, x$11, x$12, x$13, x$14, x$15, x$16, x$17, x$18, x$19, x$2, x$20, x$21, x$3, x$4, x$5, x$6, x$7, x$8, x$9;
 14901  		_1 = size;
 14902  		if (_1 === (1)) {
 14903  			return (new $Uint64(0, (0 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 0])));
 14904  		} else if (_1 === (2)) {
 14905  			$unused((1 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 1]));
 14906  			return (x = (new $Uint64(0, (0 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 0]))), x$1 = $shiftLeft64((new $Uint64(0, (1 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 1]))), 8), new $Uint64(x.$high | x$1.$high, (x.$low | x$1.$low) >>> 0));
 14907  		} else if (_1 === (4)) {
 14908  			$unused((3 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 3]));
 14909  			return (x$2 = (x$3 = (x$4 = (new $Uint64(0, (0 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 0]))), x$5 = $shiftLeft64((new $Uint64(0, (1 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 1]))), 8), new $Uint64(x$4.$high | x$5.$high, (x$4.$low | x$5.$low) >>> 0)), x$6 = $shiftLeft64((new $Uint64(0, (2 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 2]))), 16), new $Uint64(x$3.$high | x$6.$high, (x$3.$low | x$6.$low) >>> 0)), x$7 = $shiftLeft64((new $Uint64(0, (3 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 3]))), 24), new $Uint64(x$2.$high | x$7.$high, (x$2.$low | x$7.$low) >>> 0));
 14910  		} else if (_1 === (8)) {
 14911  			$unused((7 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 7]));
 14912  			return (x$8 = (x$9 = (x$10 = (x$11 = (x$12 = (x$13 = (x$14 = (new $Uint64(0, (0 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 0]))), x$15 = $shiftLeft64((new $Uint64(0, (1 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 1]))), 8), new $Uint64(x$14.$high | x$15.$high, (x$14.$low | x$15.$low) >>> 0)), x$16 = $shiftLeft64((new $Uint64(0, (2 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 2]))), 16), new $Uint64(x$13.$high | x$16.$high, (x$13.$low | x$16.$low) >>> 0)), x$17 = $shiftLeft64((new $Uint64(0, (3 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 3]))), 24), new $Uint64(x$12.$high | x$17.$high, (x$12.$low | x$17.$low) >>> 0)), x$18 = $shiftLeft64((new $Uint64(0, (4 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 4]))), 32), new $Uint64(x$11.$high | x$18.$high, (x$11.$low | x$18.$low) >>> 0)), x$19 = $shiftLeft64((new $Uint64(0, (5 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 5]))), 40), new $Uint64(x$10.$high | x$19.$high, (x$10.$low | x$19.$low) >>> 0)), x$20 = $shiftLeft64((new $Uint64(0, (6 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 6]))), 48), new $Uint64(x$9.$high | x$20.$high, (x$9.$low | x$20.$low) >>> 0)), x$21 = $shiftLeft64((new $Uint64(0, (7 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 7]))), 56), new $Uint64(x$8.$high | x$21.$high, (x$8.$low | x$21.$low) >>> 0));
 14913  		} else {
 14914  			$panic(new $String("syscall: readInt with unsupported size"));
 14915  		}
 14916  	};
 14917  	ParseDirent = function(buf, max, names) {
 14918  		var _i, _ref, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tuple, _tuple$1, _tuple$2, buf, c, consumed, count, i, ino, max, name, names, namlen, newnames, ok, origlen, rec, reclen, x, x$1, x$2;
 14919  		consumed = 0;
 14920  		count = 0;
 14921  		newnames = sliceType$1.nil;
 14922  		origlen = buf.$length;
 14923  		count = 0;
 14924  		while (true) {
 14925  			if (!(!((max === 0)) && buf.$length > 0)) { break; }
 14926  			_tuple = direntReclen(buf);
 14927  			reclen = _tuple[0];
 14928  			ok = _tuple[1];
 14929  			if (!ok || (x = (new $Uint64(0, buf.$length)), (reclen.$high > x.$high || (reclen.$high === x.$high && reclen.$low > x.$low)))) {
 14930  				_tmp = origlen;
 14931  				_tmp$1 = count;
 14932  				_tmp$2 = names;
 14933  				consumed = _tmp;
 14934  				count = _tmp$1;
 14935  				newnames = _tmp$2;
 14936  				return [consumed, count, newnames];
 14937  			}
 14938  			rec = $subslice(buf, 0, $flatten64(reclen));
 14939  			buf = $subslice(buf, $flatten64(reclen));
 14940  			_tuple$1 = direntIno(rec);
 14941  			ino = _tuple$1[0];
 14942  			ok = _tuple$1[1];
 14943  			if (!ok) {
 14944  				break;
 14945  			}
 14946  			if ((ino.$high === 0 && ino.$low === 0)) {
 14947  				continue;
 14948  			}
 14949  			_tuple$2 = direntNamlen(rec);
 14950  			namlen = _tuple$2[0];
 14951  			ok = _tuple$2[1];
 14952  			if (!ok || (x$1 = new $Uint64(0 + namlen.$high, 19 + namlen.$low), x$2 = (new $Uint64(0, rec.$length)), (x$1.$high > x$2.$high || (x$1.$high === x$2.$high && x$1.$low > x$2.$low)))) {
 14953  				break;
 14954  			}
 14955  			name = $subslice(rec, 19, $flatten64(new $Uint64(0 + namlen.$high, 19 + namlen.$low)));
 14956  			_ref = name;
 14957  			_i = 0;
 14958  			while (true) {
 14959  				if (!(_i < _ref.$length)) { break; }
 14960  				i = _i;
 14961  				c = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
 14962  				if (c === 0) {
 14963  					name = $subslice(name, 0, i);
 14964  					break;
 14965  				}
 14966  				_i++;
 14967  			}
 14968  			if (($bytesToString(name)) === "." || ($bytesToString(name)) === "..") {
 14969  				continue;
 14970  			}
 14971  			max = max - (1) >> 0;
 14972  			count = count + (1) >> 0;
 14973  			names = $append(names, ($bytesToString(name)));
 14974  		}
 14975  		_tmp$3 = origlen - buf.$length >> 0;
 14976  		_tmp$4 = count;
 14977  		_tmp$5 = names;
 14978  		consumed = _tmp$3;
 14979  		count = _tmp$4;
 14980  		newnames = _tmp$5;
 14981  		return [consumed, count, newnames];
 14982  	};
 14983  	$pkg.ParseDirent = ParseDirent;
 14984  	copyenv = function() {
 14985  		var _entry, _i, _key, _ref, _tuple, i, j, key, ok, s;
 14986  		env = {};
 14987  		_ref = envs;
 14988  		_i = 0;
 14989  		while (true) {
 14990  			if (!(_i < _ref.$length)) { break; }
 14991  			i = _i;
 14992  			s = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
 14993  			j = 0;
 14994  			while (true) {
 14995  				if (!(j < s.length)) { break; }
 14996  				if (s.charCodeAt(j) === 61) {
 14997  					key = $substring(s, 0, j);
 14998  					_tuple = (_entry = env[$String.keyFor(key)], _entry !== undefined ? [_entry.v, true] : [0, false]);
 14999  					ok = _tuple[1];
 15000  					if (!ok) {
 15001  						_key = key; (env || $throwRuntimeError("assignment to entry in nil map"))[$String.keyFor(_key)] = { k: _key, v: i };
 15002  					} else {
 15003  						((i < 0 || i >= envs.$length) ? ($throwRuntimeError("index out of range"), undefined) : envs.$array[envs.$offset + i] = "");
 15004  					}
 15005  					break;
 15006  				}
 15007  				j = j + (1) >> 0;
 15008  			}
 15009  			_i++;
 15010  		}
 15011  	};
 15012  	Getenv = function(key) {
 15013  		var _entry, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tuple, found, i, i$1, key, ok, s, value, $s, $deferred, $r;
 15014  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _entry = $f._entry; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tmp$4 = $f._tmp$4; _tmp$5 = $f._tmp$5; _tmp$6 = $f._tmp$6; _tmp$7 = $f._tmp$7; _tuple = $f._tuple; found = $f.found; i = $f.i; i$1 = $f.i$1; key = $f.key; ok = $f.ok; s = $f.s; value = $f.value; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
 15015  		value = "";
 15016  		found = false;
 15017  		$r = envOnce.Do(copyenv); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 15018  		if (key.length === 0) {
 15019  			_tmp = "";
 15020  			_tmp$1 = false;
 15021  			value = _tmp;
 15022  			found = _tmp$1;
 15023  			$s = -1; return [value, found];
 15024  		}
 15025  		$r = envLock.RLock(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 15026  		$deferred.push([$methodVal(envLock, "RUnlock"), []]);
 15027  		_tuple = (_entry = env[$String.keyFor(key)], _entry !== undefined ? [_entry.v, true] : [0, false]);
 15028  		i = _tuple[0];
 15029  		ok = _tuple[1];
 15030  		if (!ok) {
 15031  			_tmp$2 = "";
 15032  			_tmp$3 = false;
 15033  			value = _tmp$2;
 15034  			found = _tmp$3;
 15035  			$s = -1; return [value, found];
 15036  		}
 15037  		s = ((i < 0 || i >= envs.$length) ? ($throwRuntimeError("index out of range"), undefined) : envs.$array[envs.$offset + i]);
 15038  		i$1 = 0;
 15039  		while (true) {
 15040  			if (!(i$1 < s.length)) { break; }
 15041  			if (s.charCodeAt(i$1) === 61) {
 15042  				_tmp$4 = $substring(s, (i$1 + 1 >> 0));
 15043  				_tmp$5 = true;
 15044  				value = _tmp$4;
 15045  				found = _tmp$5;
 15046  				$s = -1; return [value, found];
 15047  			}
 15048  			i$1 = i$1 + (1) >> 0;
 15049  		}
 15050  		_tmp$6 = "";
 15051  		_tmp$7 = false;
 15052  		value = _tmp$6;
 15053  		found = _tmp$7;
 15054  		$s = -1; return [value, found];
 15055  		/* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if (!$curGoroutine.asleep) { return  [value, found]; } if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: Getenv }; } $f._entry = _entry; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tmp$4 = _tmp$4; $f._tmp$5 = _tmp$5; $f._tmp$6 = _tmp$6; $f._tmp$7 = _tmp$7; $f._tuple = _tuple; $f.found = found; $f.i = i; $f.i$1 = i$1; $f.key = key; $f.ok = ok; $f.s = s; $f.value = value; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
 15056  	};
 15057  	$pkg.Getenv = Getenv;
 15058  	CloseOnExec = function(fd) {
 15059  		var fd;
 15060  		fcntl(fd, 2, 1);
 15061  	};
 15062  	$pkg.CloseOnExec = CloseOnExec;
 15063  	SetNonblock = function(fd, nonblocking) {
 15064  		var _tuple, _tuple$1, err, fd, flag, nonblocking;
 15065  		err = $ifaceNil;
 15066  		_tuple = fcntl(fd, 3, 0);
 15067  		flag = _tuple[0];
 15068  		err = _tuple[1];
 15069  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 15070  			err = err;
 15071  			return err;
 15072  		}
 15073  		if (nonblocking) {
 15074  			flag = flag | (2048);
 15075  		} else {
 15076  			flag = (flag & ~(2048)) >> 0;
 15077  		}
 15078  		_tuple$1 = fcntl(fd, 4, flag);
 15079  		err = _tuple$1[1];
 15080  		err = err;
 15081  		return err;
 15082  	};
 15083  	$pkg.SetNonblock = SetNonblock;
 15084  	msanRead = function(addr, len) {
 15085  		var addr, len;
 15086  	};
 15087  	msanWrite = function(addr, len) {
 15088  		var addr, len;
 15089  	};
 15090  	nlmAlignOf = function(msglen) {
 15091  		var msglen;
 15092  		return (((msglen + 4 >> 0) - 1 >> 0)) & -4;
 15093  	};
 15094  	rtaAlignOf = function(attrlen) {
 15095  		var attrlen;
 15096  		return (((attrlen + 4 >> 0) - 1 >> 0)) & -4;
 15097  	};
 15098  	NetlinkRouteRequest.ptr.prototype.toWireFormat = function() {
 15099  		var b, rr;
 15100  		rr = this;
 15101  		b = $makeSlice(sliceType, rr.Header.Len);
 15102  		(($sliceToArray($subslice(b, 0, 4)))).$set(rr.Header.Len);
 15103  		(($sliceToArray($subslice(b, 4, 6)))).$set(rr.Header.Type);
 15104  		(($sliceToArray($subslice(b, 6, 8)))).$set(rr.Header.Flags);
 15105  		(($sliceToArray($subslice(b, 8, 12)))).$set(rr.Header.Seq);
 15106  		(($sliceToArray($subslice(b, 12, 16)))).$set(rr.Header.Pid);
 15107  		(16 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 16] = (rr.Data.Family));
 15108  		return b;
 15109  	};
 15110  	NetlinkRouteRequest.prototype.toWireFormat = function() { return this.$val.toWireFormat(); };
 15111  	newNetlinkRouteRequest = function(proto, seq, family) {
 15112  		var family, proto, rr, seq;
 15113  		rr = new NetlinkRouteRequest.ptr(new NlMsghdr.ptr(0, 0, 0, 0, 0), new RtGenmsg.ptr(0));
 15114  		rr.Header.Len = 17;
 15115  		rr.Header.Type = ((proto << 16 >>> 16));
 15116  		rr.Header.Flags = 769;
 15117  		rr.Header.Seq = ((seq >>> 0));
 15118  		rr.Data.Family = ((family << 24 >>> 24));
 15119  		return rr.toWireFormat();
 15120  	};
 15121  	NetlinkRIB = function(proto, family) {
 15122  		var _i, _r, _r$1, _ref, _ref$1, _tuple, _tuple$1, _tuple$2, _tuple$3, err, err$1, err$2, err$3, err$4, family, lsa, lsa$1, m, msgs, nr, proto, rb, rbNew, s, tab, v, v$1, wb, $s, $deferred, $r;
 15123  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _i = $f._i; _r = $f._r; _r$1 = $f._r$1; _ref = $f._ref; _ref$1 = $f._ref$1; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; err = $f.err; err$1 = $f.err$1; err$2 = $f.err$2; err$3 = $f.err$3; err$4 = $f.err$4; family = $f.family; lsa = $f.lsa; lsa$1 = $f.lsa$1; m = $f.m; msgs = $f.msgs; nr = $f.nr; proto = $f.proto; rb = $f.rb; rbNew = $f.rbNew; s = $f.s; tab = $f.tab; v = $f.v; v$1 = $f.v$1; wb = $f.wb; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
 15124  		_tuple = Socket(16, 3, 0);
 15125  		s = _tuple[0];
 15126  		err = _tuple[1];
 15127  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 15128  			$s = -1; return [sliceType.nil, err];
 15129  		}
 15130  		$deferred.push([Close, [s]]);
 15131  		lsa = new SockaddrNetlink.ptr(16, 0, 0, 0, new RawSockaddrNetlink.ptr(0, 0, 0, 0));
 15132  		_r = Bind(s, lsa); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 15133  		err$1 = _r;
 15134  		if (!($interfaceIsEqual(err$1, $ifaceNil))) {
 15135  			$s = -1; return [sliceType.nil, err$1];
 15136  		}
 15137  		wb = newNetlinkRouteRequest(proto, 1, family);
 15138  		_r$1 = Sendto(s, wb, 0, lsa); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 15139  		err$2 = _r$1;
 15140  		if (!($interfaceIsEqual(err$2, $ifaceNil))) {
 15141  			$s = -1; return [sliceType.nil, err$2];
 15142  		}
 15143  		tab = sliceType.nil;
 15144  		rbNew = $makeSlice(sliceType, Getpagesize());
 15145  		done:
 15146  		while (true) {
 15147  			rb = rbNew;
 15148  			_tuple$1 = Recvfrom(s, rb, 0);
 15149  			nr = _tuple$1[0];
 15150  			err$3 = _tuple$1[2];
 15151  			if (!($interfaceIsEqual(err$3, $ifaceNil))) {
 15152  				$s = -1; return [sliceType.nil, err$3];
 15153  			}
 15154  			if (nr < 16) {
 15155  				$s = -1; return [sliceType.nil, new Errno(22)];
 15156  			}
 15157  			rb = $subslice(rb, 0, nr);
 15158  			tab = $appendSlice(tab, rb);
 15159  			_tuple$2 = ParseNetlinkMessage(rb);
 15160  			msgs = _tuple$2[0];
 15161  			err$3 = _tuple$2[1];
 15162  			if (!($interfaceIsEqual(err$3, $ifaceNil))) {
 15163  				$s = -1; return [sliceType.nil, err$3];
 15164  			}
 15165  			_ref = msgs;
 15166  			_i = 0;
 15167  			while (true) {
 15168  				if (!(_i < _ref.$length)) { break; }
 15169  				m = $clone(((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]), NetlinkMessage);
 15170  				_tuple$3 = Getsockname(s);
 15171  				lsa$1 = _tuple$3[0];
 15172  				err$4 = _tuple$3[1];
 15173  				if (!($interfaceIsEqual(err$4, $ifaceNil))) {
 15174  					$s = -1; return [sliceType.nil, err$4];
 15175  				}
 15176  				_ref$1 = lsa$1;
 15177  				if ($assertType(_ref$1, ptrType$11, true)[1]) {
 15178  					v = _ref$1.$val;
 15179  					if (!((m.Header.Seq === 1)) || !((m.Header.Pid === v.Pid))) {
 15180  						$s = -1; return [sliceType.nil, new Errno(22)];
 15181  					}
 15182  				} else {
 15183  					v$1 = _ref$1;
 15184  					$s = -1; return [sliceType.nil, new Errno(22)];
 15185  				}
 15186  				if (m.Header.Type === 3) {
 15187  					break done;
 15188  				}
 15189  				if (m.Header.Type === 2) {
 15190  					$s = -1; return [sliceType.nil, new Errno(22)];
 15191  				}
 15192  				_i++;
 15193  			}
 15194  		}
 15195  		$s = -1; return [tab, $ifaceNil];
 15196  		/* */ } return; } } catch(err) { $err = err; $s = -1; return [sliceType.nil, $ifaceNil]; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: NetlinkRIB }; } $f._i = _i; $f._r = _r; $f._r$1 = _r$1; $f._ref = _ref; $f._ref$1 = _ref$1; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f.err = err; $f.err$1 = err$1; $f.err$2 = err$2; $f.err$3 = err$3; $f.err$4 = err$4; $f.family = family; $f.lsa = lsa; $f.lsa$1 = lsa$1; $f.m = m; $f.msgs = msgs; $f.nr = nr; $f.proto = proto; $f.rb = rb; $f.rbNew = rbNew; $f.s = s; $f.tab = tab; $f.v = v; $f.v$1 = v$1; $f.wb = wb; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
 15197  	};
 15198  	$pkg.NetlinkRIB = NetlinkRIB;
 15199  	ParseNetlinkMessage = function(b) {
 15200  		var _tuple, b, dbuf, dlen, err, h, m, msgs;
 15201  		msgs = sliceType$6.nil;
 15202  		while (true) {
 15203  			if (!(b.$length >= 16)) { break; }
 15204  			_tuple = netlinkMessageHeaderAndData(b);
 15205  			h = _tuple[0];
 15206  			dbuf = _tuple[1];
 15207  			dlen = _tuple[2];
 15208  			err = _tuple[3];
 15209  			if (!($interfaceIsEqual(err, $ifaceNil))) {
 15210  				return [sliceType$6.nil, err];
 15211  			}
 15212  			m = new NetlinkMessage.ptr($clone(h, NlMsghdr), $subslice(dbuf, 0, (((h.Len >> 0)) - 16 >> 0)));
 15213  			msgs = $append(msgs, m);
 15214  			b = $subslice(b, dlen);
 15215  		}
 15216  		return [msgs, $ifaceNil];
 15217  	};
 15218  	$pkg.ParseNetlinkMessage = ParseNetlinkMessage;
 15219  	netlinkMessageHeaderAndData = function(b) {
 15220  		var _array, _struct, _view, b, h, l;
 15221  		h = ((_array = ($sliceToArray(b)), _struct = new NlMsghdr.ptr(0, 0, 0, 0, 0), _view = new DataView(_array.buffer, _array.byteOffset), _struct.Len = _view.getUint32(0, true), _struct.Type = _view.getUint16(4, true), _struct.Flags = _view.getUint16(6, true), _struct.Seq = _view.getUint32(8, true), _struct.Pid = _view.getUint32(12, true), _struct));
 15222  		l = nlmAlignOf(((h.Len >> 0)));
 15223  		if (((h.Len >> 0)) < 16 || l > b.$length) {
 15224  			return [ptrType$12.nil, sliceType.nil, 0, new Errno(22)];
 15225  		}
 15226  		return [h, $subslice(b, 16), l, $ifaceNil];
 15227  	};
 15228  	ParseNetlinkRouteAttr = function(m) {
 15229  		var _1, _tuple, a, alen, attrs, b, err, m, ra, vbuf;
 15230  		b = sliceType.nil;
 15231  		_1 = m.Header.Type;
 15232  		if ((_1 === (16)) || (_1 === (17))) {
 15233  			b = $subslice(m.Data, 16);
 15234  		} else if ((_1 === (20)) || (_1 === (21))) {
 15235  			b = $subslice(m.Data, 8);
 15236  		} else if ((_1 === (24)) || (_1 === (25))) {
 15237  			b = $subslice(m.Data, 12);
 15238  		} else {
 15239  			return [sliceType$7.nil, new Errno(22)];
 15240  		}
 15241  		attrs = sliceType$7.nil;
 15242  		while (true) {
 15243  			if (!(b.$length >= 4)) { break; }
 15244  			_tuple = netlinkRouteAttrAndValue(b);
 15245  			a = _tuple[0];
 15246  			vbuf = _tuple[1];
 15247  			alen = _tuple[2];
 15248  			err = _tuple[3];
 15249  			if (!($interfaceIsEqual(err, $ifaceNil))) {
 15250  				return [sliceType$7.nil, err];
 15251  			}
 15252  			ra = new NetlinkRouteAttr.ptr($clone(a, RtAttr), $subslice(vbuf, 0, (((a.Len >> 0)) - 4 >> 0)));
 15253  			attrs = $append(attrs, ra);
 15254  			b = $subslice(b, alen);
 15255  		}
 15256  		return [attrs, $ifaceNil];
 15257  	};
 15258  	$pkg.ParseNetlinkRouteAttr = ParseNetlinkRouteAttr;
 15259  	netlinkRouteAttrAndValue = function(b) {
 15260  		var _array, _struct, _view, a, b;
 15261  		a = ((_array = ($sliceToArray(b)), _struct = new RtAttr.ptr(0, 0), _view = new DataView(_array.buffer, _array.byteOffset), _struct.Len = _view.getUint16(0, true), _struct.Type = _view.getUint16(2, true), _struct));
 15262  		if (((a.Len >> 0)) < 4 || ((a.Len >> 0)) > b.$length) {
 15263  			return [ptrType$13.nil, sliceType.nil, 0, new Errno(22)];
 15264  		}
 15265  		return [a, $subslice(b, 4), rtaAlignOf(((a.Len >> 0))), $ifaceNil];
 15266  	};
 15267  	itoa = function(val) {
 15268  		var val;
 15269  		if (val < 0) {
 15270  			return "-" + uitoa(((-val >>> 0)));
 15271  		}
 15272  		return uitoa(((val >>> 0)));
 15273  	};
 15274  	uitoa = function(val) {
 15275  		var _q, _r, buf, i, val;
 15276  		buf = arrayType$4.zero();
 15277  		i = 31;
 15278  		while (true) {
 15279  			if (!(val >= 10)) { break; }
 15280  			((i < 0 || i >= buf.length) ? ($throwRuntimeError("index out of range"), undefined) : buf[i] = ((((_r = val % 10, _r === _r ? _r : $throwRuntimeError("integer divide by zero")) + 48 >>> 0) << 24 >>> 24)));
 15281  			i = i - (1) >> 0;
 15282  			val = (_q = val / (10), (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >>> 0 : $throwRuntimeError("integer divide by zero"));
 15283  		}
 15284  		((i < 0 || i >= buf.length) ? ($throwRuntimeError("index out of range"), undefined) : buf[i] = (((val + 48 >>> 0) << 24 >>> 24)));
 15285  		return ($bytesToString($subslice(new sliceType(buf), i)));
 15286  	};
 15287  	Timespec.ptr.prototype.Unix = function() {
 15288  		var _tmp, _tmp$1, nsec, sec, ts;
 15289  		sec = new $Int64(0, 0);
 15290  		nsec = new $Int64(0, 0);
 15291  		ts = this;
 15292  		_tmp = (ts.Sec);
 15293  		_tmp$1 = (ts.Nsec);
 15294  		sec = _tmp;
 15295  		nsec = _tmp$1;
 15296  		return [sec, nsec];
 15297  	};
 15298  	Timespec.prototype.Unix = function() { return this.$val.Unix(); };
 15299  	Timespec.ptr.prototype.Nano = function() {
 15300  		var ts, x, x$1;
 15301  		ts = this;
 15302  		return (x = $mul64((ts.Sec), new $Int64(0, 1000000000)), x$1 = (ts.Nsec), new $Int64(x.$high + x$1.$high, x.$low + x$1.$low));
 15303  	};
 15304  	Timespec.prototype.Nano = function() { return this.$val.Nano(); };
 15305  	Getpagesize = function() {
 15306  		$throwRuntimeError("native function not implemented: syscall.Getpagesize");
 15307  	};
 15308  	$pkg.Getpagesize = Getpagesize;
 15309  	Chmod = function(path, mode) {
 15310  		var err, mode, path;
 15311  		err = $ifaceNil;
 15312  		err = Fchmodat(-100, path, mode, 0);
 15313  		return err;
 15314  	};
 15315  	$pkg.Chmod = Chmod;
 15316  	Open = function(path, mode, perm) {
 15317  		var _tuple, err, fd, mode, path, perm;
 15318  		fd = 0;
 15319  		err = $ifaceNil;
 15320  		_tuple = openat(-100, path, mode | 0, perm);
 15321  		fd = _tuple[0];
 15322  		err = _tuple[1];
 15323  		return [fd, err];
 15324  	};
 15325  	$pkg.Open = Open;
 15326  	Rmdir = function(path) {
 15327  		var path;
 15328  		return unlinkat(-100, path, 512);
 15329  	};
 15330  	$pkg.Rmdir = Rmdir;
 15331  	Unlink = function(path) {
 15332  		var path;
 15333  		return unlinkat(-100, path, 0);
 15334  	};
 15335  	$pkg.Unlink = Unlink;
 15336  	SockaddrInet4.ptr.prototype.sockaddr = function() {
 15337  		var _array, _struct, _view, i, p, sa, x, x$1, x$2;
 15338  		sa = this;
 15339  		if (sa.Port < 0 || sa.Port > 65535) {
 15340  			return [0, 0, new Errno(22)];
 15341  		}
 15342  		sa.raw.Family = 2;
 15343  		p = (((x = sa.raw, (x.$ptr_Port || (x.$ptr_Port = new ptrType$8(function() { return this.$target.Port; }, function($v) { this.$target.Port = $v; }, x))))));
 15344  		p.nilCheck, p[0] = (((sa.Port >> 8 >> 0) << 24 >>> 24));
 15345  		p.nilCheck, p[1] = ((sa.Port << 24 >>> 24));
 15346  		i = 0;
 15347  		while (true) {
 15348  			if (!(i < 4)) { break; }
 15349  			(x$2 = sa.raw.Addr, ((i < 0 || i >= x$2.length) ? ($throwRuntimeError("index out of range"), undefined) : x$2[i] = (x$1 = sa.Addr, ((i < 0 || i >= x$1.length) ? ($throwRuntimeError("index out of range"), undefined) : x$1[i]))));
 15350  			i = i + (1) >> 0;
 15351  		}
 15352  		_array = new Uint8Array(16);
 15353  		return [(_array), 16, $ifaceNil];
 15354  	};
 15355  	SockaddrInet4.prototype.sockaddr = function() { return this.$val.sockaddr(); };
 15356  	SockaddrInet6.ptr.prototype.sockaddr = function() {
 15357  		var _array, _struct, _view, i, p, sa, x, x$1, x$2;
 15358  		sa = this;
 15359  		if (sa.Port < 0 || sa.Port > 65535) {
 15360  			return [0, 0, new Errno(22)];
 15361  		}
 15362  		sa.raw.Family = 10;
 15363  		p = (((x = sa.raw, (x.$ptr_Port || (x.$ptr_Port = new ptrType$8(function() { return this.$target.Port; }, function($v) { this.$target.Port = $v; }, x))))));
 15364  		p.nilCheck, p[0] = (((sa.Port >> 8 >> 0) << 24 >>> 24));
 15365  		p.nilCheck, p[1] = ((sa.Port << 24 >>> 24));
 15366  		sa.raw.Scope_id = sa.ZoneId;
 15367  		i = 0;
 15368  		while (true) {
 15369  			if (!(i < 16)) { break; }
 15370  			(x$2 = sa.raw.Addr, ((i < 0 || i >= x$2.length) ? ($throwRuntimeError("index out of range"), undefined) : x$2[i] = (x$1 = sa.Addr, ((i < 0 || i >= x$1.length) ? ($throwRuntimeError("index out of range"), undefined) : x$1[i]))));
 15371  			i = i + (1) >> 0;
 15372  		}
 15373  		_array = new Uint8Array(28);
 15374  		return [(_array), 28, $ifaceNil];
 15375  	};
 15376  	SockaddrInet6.prototype.sockaddr = function() { return this.$val.sockaddr(); };
 15377  	SockaddrUnix.ptr.prototype.sockaddr = function() {
 15378  		var _array, _struct, _view, i, n, name, sa, sl, x;
 15379  		sa = this;
 15380  		name = sa.Name;
 15381  		n = name.length;
 15382  		if (n > 108) {
 15383  			return [0, 0, new Errno(22)];
 15384  		}
 15385  		if ((n === 108) && !((name.charCodeAt(0) === 64))) {
 15386  			return [0, 0, new Errno(22)];
 15387  		}
 15388  		sa.raw.Family = 1;
 15389  		i = 0;
 15390  		while (true) {
 15391  			if (!(i < n)) { break; }
 15392  			(x = sa.raw.Path, ((i < 0 || i >= x.length) ? ($throwRuntimeError("index out of range"), undefined) : x[i] = ((name.charCodeAt(i) << 24 >> 24))));
 15393  			i = i + (1) >> 0;
 15394  		}
 15395  		sl = 2;
 15396  		if (n > 0) {
 15397  			sl = sl + ((((n >>> 0)) + 1 >>> 0)) >>> 0;
 15398  		}
 15399  		if (sa.raw.Path[0] === 64) {
 15400  			sa.raw.Path[0] = 0;
 15401  			sl = sl - (1) >>> 0;
 15402  		}
 15403  		_array = new Uint8Array(110);
 15404  		return [(_array), sl, $ifaceNil];
 15405  	};
 15406  	SockaddrUnix.prototype.sockaddr = function() { return this.$val.sockaddr(); };
 15407  	SockaddrLinklayer.ptr.prototype.sockaddr = function() {
 15408  		var _array, _struct, _view, i, sa, x, x$1;
 15409  		sa = this;
 15410  		if (sa.Ifindex < 0 || sa.Ifindex > 2147483647) {
 15411  			return [0, 0, new Errno(22)];
 15412  		}
 15413  		sa.raw.Family = 17;
 15414  		sa.raw.Protocol = sa.Protocol;
 15415  		sa.raw.Ifindex = ((sa.Ifindex >> 0));
 15416  		sa.raw.Hatype = sa.Hatype;
 15417  		sa.raw.Pkttype = sa.Pkttype;
 15418  		sa.raw.Halen = sa.Halen;
 15419  		i = 0;
 15420  		while (true) {
 15421  			if (!(i < 8)) { break; }
 15422  			(x$1 = sa.raw.Addr, ((i < 0 || i >= x$1.length) ? ($throwRuntimeError("index out of range"), undefined) : x$1[i] = (x = sa.Addr, ((i < 0 || i >= x.length) ? ($throwRuntimeError("index out of range"), undefined) : x[i]))));
 15423  			i = i + (1) >> 0;
 15424  		}
 15425  		_array = new Uint8Array(20);
 15426  		return [(_array), 20, $ifaceNil];
 15427  	};
 15428  	SockaddrLinklayer.prototype.sockaddr = function() { return this.$val.sockaddr(); };
 15429  	SockaddrNetlink.ptr.prototype.sockaddr = function() {
 15430  		var _array, _struct, _view, sa;
 15431  		sa = this;
 15432  		sa.raw.Family = 16;
 15433  		sa.raw.Pad = sa.Pad;
 15434  		sa.raw.Pid = sa.Pid;
 15435  		sa.raw.Groups = sa.Groups;
 15436  		_array = new Uint8Array(12);
 15437  		return [(_array), 12, $ifaceNil];
 15438  	};
 15439  	SockaddrNetlink.prototype.sockaddr = function() { return this.$val.sockaddr(); };
 15440  	anyToSockaddr = function(rsa) {
 15441  		var _1, _array, _array$1, _array$2, _array$3, _array$4, _array$5, _array$6, _array$7, _array$8, _array$9, _struct, _struct$1, _struct$2, _struct$3, _struct$4, _struct$5, _struct$6, _struct$7, _struct$8, _struct$9, _view, _view$1, _view$2, _view$3, _view$4, _view$5, _view$6, _view$7, _view$8, _view$9, bytes, i, i$1, i$2, n, p, p$1, pp, pp$1, pp$2, pp$3, pp$4, rsa, sa, sa$1, sa$2, sa$3, sa$4, x, x$1, x$2, x$3, x$4, x$5, x$6;
 15442  		_1 = rsa.Addr.Family;
 15443  		if (_1 === (16)) {
 15444  			_array$1 = new Uint8Array(112);
 15445  			pp = ((_array = (_array$1), _struct = new RawSockaddrNetlink.ptr(0, 0, 0, 0), _view = new DataView(_array.buffer, _array.byteOffset), _struct.Family = _view.getUint16(0, true), _struct.Pad = _view.getUint16(2, true), _struct.Pid = _view.getUint32(4, true), _struct.Groups = _view.getUint32(8, true), _struct));
 15446  			_struct$1 = rsa, _view$1 = new DataView(_array$1.buffer, _array$1.byteOffset), _struct$1.Addr.Family = _view$1.getUint16(0, true), _struct$1.Addr.Data = new ($nativeArray($kindInt8))(_array$1.buffer, $min(_array$1.byteOffset + 2, _array$1.buffer.byteLength)), _struct$1.Pad = new ($nativeArray($kindInt8))(_array$1.buffer, $min(_array$1.byteOffset + 16, _array$1.buffer.byteLength));
 15447  			sa = new SockaddrNetlink.ptr(0, 0, 0, 0, new RawSockaddrNetlink.ptr(0, 0, 0, 0));
 15448  			sa.Family = pp.Family;
 15449  			sa.Pad = pp.Pad;
 15450  			sa.Pid = pp.Pid;
 15451  			sa.Groups = pp.Groups;
 15452  			return [sa, $ifaceNil];
 15453  		} else if (_1 === (17)) {
 15454  			_array$3 = new Uint8Array(112);
 15455  			pp$1 = ((_array$2 = (_array$3), _struct$2 = new RawSockaddrLinklayer.ptr(0, 0, 0, 0, 0, 0, arrayType$1.zero()), _view$2 = new DataView(_array$2.buffer, _array$2.byteOffset), _struct$2.Family = _view$2.getUint16(0, true), _struct$2.Protocol = _view$2.getUint16(2, true), _struct$2.Ifindex = _view$2.getInt32(4, true), _struct$2.Hatype = _view$2.getUint16(8, true), _struct$2.Pkttype = _view$2.getUint8(10, true), _struct$2.Halen = _view$2.getUint8(11, true), _struct$2.Addr = new ($nativeArray($kindUint8))(_array$2.buffer, $min(_array$2.byteOffset + 12, _array$2.buffer.byteLength)), _struct$2));
 15456  			_struct$3 = rsa, _view$3 = new DataView(_array$3.buffer, _array$3.byteOffset), _struct$3.Addr.Family = _view$3.getUint16(0, true), _struct$3.Addr.Data = new ($nativeArray($kindInt8))(_array$3.buffer, $min(_array$3.byteOffset + 2, _array$3.buffer.byteLength)), _struct$3.Pad = new ($nativeArray($kindInt8))(_array$3.buffer, $min(_array$3.byteOffset + 16, _array$3.buffer.byteLength));
 15457  			sa$1 = new SockaddrLinklayer.ptr(0, 0, 0, 0, 0, arrayType$1.zero(), new RawSockaddrLinklayer.ptr(0, 0, 0, 0, 0, 0, arrayType$1.zero()));
 15458  			sa$1.Protocol = pp$1.Protocol;
 15459  			sa$1.Ifindex = ((pp$1.Ifindex >> 0));
 15460  			sa$1.Hatype = pp$1.Hatype;
 15461  			sa$1.Pkttype = pp$1.Pkttype;
 15462  			sa$1.Halen = pp$1.Halen;
 15463  			i = 0;
 15464  			while (true) {
 15465  				if (!(i < 8)) { break; }
 15466  				(x$1 = sa$1.Addr, ((i < 0 || i >= x$1.length) ? ($throwRuntimeError("index out of range"), undefined) : x$1[i] = (x = pp$1.Addr, ((i < 0 || i >= x.length) ? ($throwRuntimeError("index out of range"), undefined) : x[i]))));
 15467  				i = i + (1) >> 0;
 15468  			}
 15469  			return [sa$1, $ifaceNil];
 15470  		} else if (_1 === (1)) {
 15471  			_array$5 = new Uint8Array(112);
 15472  			pp$2 = ((_array$4 = (_array$5), _struct$4 = new RawSockaddrUnix.ptr(0, arrayType$7.zero()), _view$4 = new DataView(_array$4.buffer, _array$4.byteOffset), _struct$4.Family = _view$4.getUint16(0, true), _struct$4.Path = new ($nativeArray($kindInt8))(_array$4.buffer, $min(_array$4.byteOffset + 2, _array$4.buffer.byteLength)), _struct$4));
 15473  			_struct$5 = rsa, _view$5 = new DataView(_array$5.buffer, _array$5.byteOffset), _struct$5.Addr.Family = _view$5.getUint16(0, true), _struct$5.Addr.Data = new ($nativeArray($kindInt8))(_array$5.buffer, $min(_array$5.byteOffset + 2, _array$5.buffer.byteLength)), _struct$5.Pad = new ($nativeArray($kindInt8))(_array$5.buffer, $min(_array$5.byteOffset + 16, _array$5.buffer.byteLength));
 15474  			sa$2 = new SockaddrUnix.ptr("", new RawSockaddrUnix.ptr(0, arrayType$7.zero()));
 15475  			if (pp$2.Path[0] === 0) {
 15476  				pp$2.Path[0] = 64;
 15477  			}
 15478  			n = 0;
 15479  			while (true) {
 15480  				if (!(n < 108 && !(((x$2 = pp$2.Path, ((n < 0 || n >= x$2.length) ? ($throwRuntimeError("index out of range"), undefined) : x$2[n])) === 0)))) { break; }
 15481  				n = n + (1) >> 0;
 15482  			}
 15483  			bytes = $subslice(new sliceType((($sliceToArray(new sliceType(pp$2.Path))))), 0, n);
 15484  			sa$2.Name = ($bytesToString(bytes));
 15485  			return [sa$2, $ifaceNil];
 15486  		} else if (_1 === (2)) {
 15487  			_array$7 = new Uint8Array(112);
 15488  			pp$3 = ((_array$6 = (_array$7), _struct$6 = new RawSockaddrInet4.ptr(0, 0, arrayType$8.zero(), arrayType$1.zero()), _view$6 = new DataView(_array$6.buffer, _array$6.byteOffset), _struct$6.Family = _view$6.getUint16(0, true), _struct$6.Port = _view$6.getUint16(2, true), _struct$6.Addr = new ($nativeArray($kindUint8))(_array$6.buffer, $min(_array$6.byteOffset + 4, _array$6.buffer.byteLength)), _struct$6.Zero = new ($nativeArray($kindUint8))(_array$6.buffer, $min(_array$6.byteOffset + 8, _array$6.buffer.byteLength)), _struct$6));
 15489  			_struct$7 = rsa, _view$7 = new DataView(_array$7.buffer, _array$7.byteOffset), _struct$7.Addr.Family = _view$7.getUint16(0, true), _struct$7.Addr.Data = new ($nativeArray($kindInt8))(_array$7.buffer, $min(_array$7.byteOffset + 2, _array$7.buffer.byteLength)), _struct$7.Pad = new ($nativeArray($kindInt8))(_array$7.buffer, $min(_array$7.byteOffset + 16, _array$7.buffer.byteLength));
 15490  			sa$3 = new SockaddrInet4.ptr(0, arrayType$8.zero(), new RawSockaddrInet4.ptr(0, 0, arrayType$8.zero(), arrayType$1.zero()));
 15491  			p = (((pp$3.$ptr_Port || (pp$3.$ptr_Port = new ptrType$8(function() { return this.$target.Port; }, function($v) { this.$target.Port = $v; }, pp$3)))));
 15492  			sa$3.Port = ((((p.nilCheck, p[0]) >> 0)) << 8 >> 0) + (((p.nilCheck, p[1]) >> 0)) >> 0;
 15493  			i$1 = 0;
 15494  			while (true) {
 15495  				if (!(i$1 < 4)) { break; }
 15496  				(x$4 = sa$3.Addr, ((i$1 < 0 || i$1 >= x$4.length) ? ($throwRuntimeError("index out of range"), undefined) : x$4[i$1] = (x$3 = pp$3.Addr, ((i$1 < 0 || i$1 >= x$3.length) ? ($throwRuntimeError("index out of range"), undefined) : x$3[i$1]))));
 15497  				i$1 = i$1 + (1) >> 0;
 15498  			}
 15499  			return [sa$3, $ifaceNil];
 15500  		} else if (_1 === (10)) {
 15501  			_array$9 = new Uint8Array(112);
 15502  			pp$4 = ((_array$8 = (_array$9), _struct$8 = new RawSockaddrInet6.ptr(0, 0, 0, arrayType$2.zero(), 0), _view$8 = new DataView(_array$8.buffer, _array$8.byteOffset), _struct$8.Family = _view$8.getUint16(0, true), _struct$8.Port = _view$8.getUint16(2, true), _struct$8.Flowinfo = _view$8.getUint32(4, true), _struct$8.Addr = new ($nativeArray($kindUint8))(_array$8.buffer, $min(_array$8.byteOffset + 8, _array$8.buffer.byteLength)), _struct$8.Scope_id = _view$8.getUint32(24, true), _struct$8));
 15503  			_struct$9 = rsa, _view$9 = new DataView(_array$9.buffer, _array$9.byteOffset), _struct$9.Addr.Family = _view$9.getUint16(0, true), _struct$9.Addr.Data = new ($nativeArray($kindInt8))(_array$9.buffer, $min(_array$9.byteOffset + 2, _array$9.buffer.byteLength)), _struct$9.Pad = new ($nativeArray($kindInt8))(_array$9.buffer, $min(_array$9.byteOffset + 16, _array$9.buffer.byteLength));
 15504  			sa$4 = new SockaddrInet6.ptr(0, 0, arrayType$2.zero(), new RawSockaddrInet6.ptr(0, 0, 0, arrayType$2.zero(), 0));
 15505  			p$1 = (((pp$4.$ptr_Port || (pp$4.$ptr_Port = new ptrType$8(function() { return this.$target.Port; }, function($v) { this.$target.Port = $v; }, pp$4)))));
 15506  			sa$4.Port = ((((p$1.nilCheck, p$1[0]) >> 0)) << 8 >> 0) + (((p$1.nilCheck, p$1[1]) >> 0)) >> 0;
 15507  			sa$4.ZoneId = pp$4.Scope_id;
 15508  			i$2 = 0;
 15509  			while (true) {
 15510  				if (!(i$2 < 16)) { break; }
 15511  				(x$6 = sa$4.Addr, ((i$2 < 0 || i$2 >= x$6.length) ? ($throwRuntimeError("index out of range"), undefined) : x$6[i$2] = (x$5 = pp$4.Addr, ((i$2 < 0 || i$2 >= x$5.length) ? ($throwRuntimeError("index out of range"), undefined) : x$5[i$2]))));
 15512  				i$2 = i$2 + (1) >> 0;
 15513  			}
 15514  			return [sa$4, $ifaceNil];
 15515  		}
 15516  		return [$ifaceNil, new Errno(97)];
 15517  	};
 15518  	Accept = function(fd) {
 15519  		var _tuple, _tuple$1, err, fd, len, len$24ptr, nfd, rsa, sa;
 15520  		nfd = 0;
 15521  		sa = $ifaceNil;
 15522  		err = $ifaceNil;
 15523  		rsa = new RawSockaddrAny.ptr(new RawSockaddr.ptr(0, arrayType$9.zero()), arrayType$10.zero());
 15524  		len = 112;
 15525  		_tuple = accept(fd, rsa, (len$24ptr || (len$24ptr = new ptrType$18(function() { return len; }, function($v) { len = $v; }))));
 15526  		nfd = _tuple[0];
 15527  		err = _tuple[1];
 15528  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 15529  			return [nfd, sa, err];
 15530  		}
 15531  		_tuple$1 = anyToSockaddr(rsa);
 15532  		sa = _tuple$1[0];
 15533  		err = _tuple$1[1];
 15534  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 15535  			Close(nfd);
 15536  			nfd = 0;
 15537  		}
 15538  		return [nfd, sa, err];
 15539  	};
 15540  	$pkg.Accept = Accept;
 15541  	Accept4 = function(fd, flags) {
 15542  		var _tuple, _tuple$1, err, fd, flags, len, len$24ptr, nfd, rsa, sa;
 15543  		nfd = 0;
 15544  		sa = $ifaceNil;
 15545  		err = $ifaceNil;
 15546  		rsa = new RawSockaddrAny.ptr(new RawSockaddr.ptr(0, arrayType$9.zero()), arrayType$10.zero());
 15547  		len = 112;
 15548  		_tuple = accept4(fd, rsa, (len$24ptr || (len$24ptr = new ptrType$18(function() { return len; }, function($v) { len = $v; }))), flags);
 15549  		nfd = _tuple[0];
 15550  		err = _tuple[1];
 15551  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 15552  			return [nfd, sa, err];
 15553  		}
 15554  		if (len > 112) {
 15555  			$panic(new $String("RawSockaddrAny too small"));
 15556  		}
 15557  		_tuple$1 = anyToSockaddr(rsa);
 15558  		sa = _tuple$1[0];
 15559  		err = _tuple$1[1];
 15560  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 15561  			Close(nfd);
 15562  			nfd = 0;
 15563  		}
 15564  		return [nfd, sa, err];
 15565  	};
 15566  	$pkg.Accept4 = Accept4;
 15567  	Getsockname = function(fd) {
 15568  		var _tuple, err, fd, len, len$24ptr, rsa, sa;
 15569  		sa = $ifaceNil;
 15570  		err = $ifaceNil;
 15571  		rsa = new RawSockaddrAny.ptr(new RawSockaddr.ptr(0, arrayType$9.zero()), arrayType$10.zero());
 15572  		len = 112;
 15573  		err = getsockname(fd, rsa, (len$24ptr || (len$24ptr = new ptrType$18(function() { return len; }, function($v) { len = $v; }))));
 15574  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 15575  			return [sa, err];
 15576  		}
 15577  		_tuple = anyToSockaddr(rsa);
 15578  		sa = _tuple[0];
 15579  		err = _tuple[1];
 15580  		return [sa, err];
 15581  	};
 15582  	$pkg.Getsockname = Getsockname;
 15583  	SetsockoptIPMreqn = function(fd, level, opt, mreq) {
 15584  		var _array, _struct, _view, err, fd, level, mreq, opt;
 15585  		err = $ifaceNil;
 15586  		_array = new Uint8Array(12);
 15587  		err = setsockopt(fd, level, opt, (_array), 12);
 15588  		_struct = mreq, _view = new DataView(_array.buffer, _array.byteOffset), _struct.Multiaddr = new ($nativeArray($kindUint8))(_array.buffer, $min(_array.byteOffset + 0, _array.buffer.byteLength)), _struct.Address = new ($nativeArray($kindUint8))(_array.buffer, $min(_array.byteOffset + 4, _array.buffer.byteLength)), _struct.Ifindex = _view.getInt32(8, true);
 15589  		return err;
 15590  	};
 15591  	$pkg.SetsockoptIPMreqn = SetsockoptIPMreqn;
 15592  	Recvmsg = function(fd, p, oob, flags) {
 15593  		var _array, _struct, _tuple, _tuple$1, _tuple$2, _view, dummy, dummy$24ptr, err, fd, flags, from, iov, msg, n, oob, oobn, p, recvflags, rsa, sockType;
 15594  		n = 0;
 15595  		oobn = 0;
 15596  		recvflags = 0;
 15597  		from = $ifaceNil;
 15598  		err = $ifaceNil;
 15599  		msg = new Msghdr.ptr(ptrType$2.nil, 0, arrayType$8.zero(), ptrType$19.nil, new $Uint64(0, 0), ptrType$2.nil, new $Uint64(0, 0), 0, arrayType$8.zero());
 15600  		rsa = new RawSockaddrAny.ptr(new RawSockaddr.ptr(0, arrayType$9.zero()), arrayType$10.zero());
 15601  		_array = new Uint8Array(112);
 15602  		msg.Name = ((_array));
 15603  		_struct = rsa, _view = new DataView(_array.buffer, _array.byteOffset), _struct.Addr.Family = _view.getUint16(0, true), _struct.Addr.Data = new ($nativeArray($kindInt8))(_array.buffer, $min(_array.byteOffset + 2, _array.buffer.byteLength)), _struct.Pad = new ($nativeArray($kindInt8))(_array.buffer, $min(_array.byteOffset + 16, _array.buffer.byteLength));
 15604  		msg.Namelen = 112;
 15605  		iov = new Iovec.ptr(ptrType$2.nil, new $Uint64(0, 0));
 15606  		if (p.$length > 0) {
 15607  			iov.Base = $indexPtr(p.$array, p.$offset + 0, ptrType$2);
 15608  			iov.SetLen(p.$length);
 15609  		}
 15610  		dummy = 0;
 15611  		if (oob.$length > 0) {
 15612  			sockType = 0;
 15613  			_tuple = GetsockoptInt(fd, 1, 3);
 15614  			sockType = _tuple[0];
 15615  			err = _tuple[1];
 15616  			if (!($interfaceIsEqual(err, $ifaceNil))) {
 15617  				return [n, oobn, recvflags, from, err];
 15618  			}
 15619  			if (!((sockType === 2)) && (p.$length === 0)) {
 15620  				iov.Base = (dummy$24ptr || (dummy$24ptr = new ptrType$2(function() { return dummy; }, function($v) { dummy = $v; })));
 15621  				iov.SetLen(1);
 15622  			}
 15623  			msg.Control = $indexPtr(oob.$array, oob.$offset + 0, ptrType$2);
 15624  			msg.SetControllen(oob.$length);
 15625  		}
 15626  		msg.Iov = iov;
 15627  		msg.Iovlen = new $Uint64(0, 1);
 15628  		_tuple$1 = recvmsg(fd, msg, flags);
 15629  		n = _tuple$1[0];
 15630  		err = _tuple$1[1];
 15631  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 15632  			return [n, oobn, recvflags, from, err];
 15633  		}
 15634  		oobn = ((msg.Controllen.$low >> 0));
 15635  		recvflags = ((msg.Flags >> 0));
 15636  		if (!((rsa.Addr.Family === 0))) {
 15637  			_tuple$2 = anyToSockaddr(rsa);
 15638  			from = _tuple$2[0];
 15639  			err = _tuple$2[1];
 15640  		}
 15641  		return [n, oobn, recvflags, from, err];
 15642  	};
 15643  	$pkg.Recvmsg = Recvmsg;
 15644  	SendmsgN = function(fd, p, oob, to, flags) {
 15645  		var _r, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tuple, _tuple$1, _tuple$2, dummy, err, err$1, fd, flags, iov, msg, n, oob, p, ptr, salen, sockType, to, $s, $r;
 15646  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tmp$4 = $f._tmp$4; _tmp$5 = $f._tmp$5; _tmp$6 = $f._tmp$6; _tmp$7 = $f._tmp$7; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; dummy = $f.dummy; err = $f.err; err$1 = $f.err$1; fd = $f.fd; flags = $f.flags; iov = $f.iov; msg = $f.msg; n = $f.n; oob = $f.oob; p = $f.p; ptr = $f.ptr; salen = $f.salen; sockType = $f.sockType; to = $f.to; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 15647  		dummy = [dummy];
 15648  		iov = [iov];
 15649  		msg = [msg];
 15650  		n = 0;
 15651  		err = $ifaceNil;
 15652  		ptr = 0;
 15653  		salen = 0;
 15654  		/* */ if (!($interfaceIsEqual(to, $ifaceNil))) { $s = 1; continue; }
 15655  		/* */ $s = 2; continue;
 15656  		/* if (!($interfaceIsEqual(to, $ifaceNil))) { */ case 1:
 15657  			err$1 = $ifaceNil;
 15658  			_r = to.sockaddr(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 15659  			_tuple = _r;
 15660  			ptr = _tuple[0];
 15661  			salen = _tuple[1];
 15662  			err$1 = _tuple[2];
 15663  			if (!($interfaceIsEqual(err$1, $ifaceNil))) {
 15664  				_tmp = 0;
 15665  				_tmp$1 = err$1;
 15666  				n = _tmp;
 15667  				err = _tmp$1;
 15668  				$s = -1; return [n, err];
 15669  			}
 15670  		/* } */ case 2:
 15671  		msg[0] = new Msghdr.ptr(ptrType$2.nil, 0, arrayType$8.zero(), ptrType$19.nil, new $Uint64(0, 0), ptrType$2.nil, new $Uint64(0, 0), 0, arrayType$8.zero());
 15672  		msg[0].Name = (ptr);
 15673  		msg[0].Namelen = ((salen >>> 0));
 15674  		iov[0] = new Iovec.ptr(ptrType$2.nil, new $Uint64(0, 0));
 15675  		if (p.$length > 0) {
 15676  			iov[0].Base = $indexPtr(p.$array, p.$offset + 0, ptrType$2);
 15677  			iov[0].SetLen(p.$length);
 15678  		}
 15679  		dummy[0] = 0;
 15680  		if (oob.$length > 0) {
 15681  			sockType = 0;
 15682  			_tuple$1 = GetsockoptInt(fd, 1, 3);
 15683  			sockType = _tuple$1[0];
 15684  			err = _tuple$1[1];
 15685  			if (!($interfaceIsEqual(err, $ifaceNil))) {
 15686  				_tmp$2 = 0;
 15687  				_tmp$3 = err;
 15688  				n = _tmp$2;
 15689  				err = _tmp$3;
 15690  				$s = -1; return [n, err];
 15691  			}
 15692  			if (!((sockType === 2)) && (p.$length === 0)) {
 15693  				iov[0].Base = (dummy.$ptr || (dummy.$ptr = new ptrType$2(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, dummy)));
 15694  				iov[0].SetLen(1);
 15695  			}
 15696  			msg[0].Control = $indexPtr(oob.$array, oob.$offset + 0, ptrType$2);
 15697  			msg[0].SetControllen(oob.$length);
 15698  		}
 15699  		msg[0].Iov = iov[0];
 15700  		msg[0].Iovlen = new $Uint64(0, 1);
 15701  		_tuple$2 = sendmsg(fd, msg[0], flags);
 15702  		n = _tuple$2[0];
 15703  		err = _tuple$2[1];
 15704  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 15705  			_tmp$4 = 0;
 15706  			_tmp$5 = err;
 15707  			n = _tmp$4;
 15708  			err = _tmp$5;
 15709  			$s = -1; return [n, err];
 15710  		}
 15711  		if (oob.$length > 0 && (p.$length === 0)) {
 15712  			n = 0;
 15713  		}
 15714  		_tmp$6 = n;
 15715  		_tmp$7 = $ifaceNil;
 15716  		n = _tmp$6;
 15717  		err = _tmp$7;
 15718  		$s = -1; return [n, err];
 15719  		/* */ } return; } if ($f === undefined) { $f = { $blk: SendmsgN }; } $f._r = _r; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tmp$4 = _tmp$4; $f._tmp$5 = _tmp$5; $f._tmp$6 = _tmp$6; $f._tmp$7 = _tmp$7; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f.dummy = dummy; $f.err = err; $f.err$1 = err$1; $f.fd = fd; $f.flags = flags; $f.iov = iov; $f.msg = msg; $f.n = n; $f.oob = oob; $f.p = p; $f.ptr = ptr; $f.salen = salen; $f.sockType = sockType; $f.to = to; $f.$s = $s; $f.$r = $r; return $f;
 15720  	};
 15721  	$pkg.SendmsgN = SendmsgN;
 15722  	ReadDirent = function(fd, buf) {
 15723  		var _tuple, buf, err, fd, n;
 15724  		n = 0;
 15725  		err = $ifaceNil;
 15726  		_tuple = Getdents(fd, buf);
 15727  		n = _tuple[0];
 15728  		err = _tuple[1];
 15729  		return [n, err];
 15730  	};
 15731  	$pkg.ReadDirent = ReadDirent;
 15732  	direntIno = function(buf) {
 15733  		var buf;
 15734  		return readInt(buf, 0, 8);
 15735  	};
 15736  	direntReclen = function(buf) {
 15737  		var buf;
 15738  		return readInt(buf, 16, 2);
 15739  	};
 15740  	direntNamlen = function(buf) {
 15741  		var _tuple, buf, ok, reclen;
 15742  		_tuple = direntReclen(buf);
 15743  		reclen = _tuple[0];
 15744  		ok = _tuple[1];
 15745  		if (!ok) {
 15746  			return [new $Uint64(0, 0), false];
 15747  		}
 15748  		return [new $Uint64(reclen.$high - 0, reclen.$low - 19), true];
 15749  	};
 15750  	Iovec.ptr.prototype.SetLen = function(length) {
 15751  		var iov, length;
 15752  		iov = this;
 15753  		iov.Len = (new $Uint64(0, length));
 15754  	};
 15755  	Iovec.prototype.SetLen = function(length) { return this.$val.SetLen(length); };
 15756  	Msghdr.ptr.prototype.SetControllen = function(length) {
 15757  		var length, msghdr;
 15758  		msghdr = this;
 15759  		msghdr.Controllen = (new $Uint64(0, length));
 15760  	};
 15761  	Msghdr.prototype.SetControllen = function(length) { return this.$val.SetControllen(length); };
 15762  	mmapper.ptr.prototype.Mmap = function(fd, offset, length, prot, flags) {
 15763  		var _key, _r, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tuple, addr, b, data, err, errno, fd, flags, length, m, offset, p, prot, sl, $s, $deferred, $r;
 15764  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _key = $f._key; _r = $f._r; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tmp$4 = $f._tmp$4; _tmp$5 = $f._tmp$5; _tuple = $f._tuple; addr = $f.addr; b = $f.b; data = $f.data; err = $f.err; errno = $f.errno; fd = $f.fd; flags = $f.flags; length = $f.length; m = $f.m; offset = $f.offset; p = $f.p; prot = $f.prot; sl = $f.sl; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
 15765  		sl = [sl];
 15766  		data = sliceType.nil;
 15767  		err = $ifaceNil;
 15768  		m = this;
 15769  		if (length <= 0) {
 15770  			_tmp = sliceType.nil;
 15771  			_tmp$1 = new Errno(22);
 15772  			data = _tmp;
 15773  			err = _tmp$1;
 15774  			$s = -1; return [data, err];
 15775  		}
 15776  		_r = m.mmap(0, ((length >>> 0)), prot, flags, fd, offset); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 15777  		_tuple = _r;
 15778  		addr = _tuple[0];
 15779  		errno = _tuple[1];
 15780  		if (!($interfaceIsEqual(errno, $ifaceNil))) {
 15781  			_tmp$2 = sliceType.nil;
 15782  			_tmp$3 = errno;
 15783  			data = _tmp$2;
 15784  			err = _tmp$3;
 15785  			$s = -1; return [data, err];
 15786  		}
 15787  		sl[0] = new structType.ptr(addr, length, length);
 15788  		b = sl[0];
 15789  		p = $indexPtr(b.$array, b.$offset + (b.$capacity - 1 >> 0), ptrType$2);
 15790  		$r = m.Mutex.Lock(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 15791  		$deferred.push([$methodVal(m.Mutex, "Unlock"), []]);
 15792  		_key = p; (m.active || $throwRuntimeError("assignment to entry in nil map"))[ptrType$2.keyFor(_key)] = { k: _key, v: b };
 15793  		_tmp$4 = b;
 15794  		_tmp$5 = $ifaceNil;
 15795  		data = _tmp$4;
 15796  		err = _tmp$5;
 15797  		$s = -1; return [data, err];
 15798  		/* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if (!$curGoroutine.asleep) { return  [data, err]; } if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: mmapper.ptr.prototype.Mmap }; } $f._key = _key; $f._r = _r; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tmp$4 = _tmp$4; $f._tmp$5 = _tmp$5; $f._tuple = _tuple; $f.addr = addr; $f.b = b; $f.data = data; $f.err = err; $f.errno = errno; $f.fd = fd; $f.flags = flags; $f.length = length; $f.m = m; $f.offset = offset; $f.p = p; $f.prot = prot; $f.sl = sl; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
 15799  	};
 15800  	mmapper.prototype.Mmap = function(fd, offset, length, prot, flags) { return this.$val.Mmap(fd, offset, length, prot, flags); };
 15801  	mmapper.ptr.prototype.Munmap = function(data) {
 15802  		var _entry, _r, b, data, err, errno, m, p, $s, $deferred, $r;
 15803  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _entry = $f._entry; _r = $f._r; b = $f.b; data = $f.data; err = $f.err; errno = $f.errno; m = $f.m; p = $f.p; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
 15804  		err = $ifaceNil;
 15805  		m = this;
 15806  		if ((data.$length === 0) || !((data.$length === data.$capacity))) {
 15807  			err = new Errno(22);
 15808  			$s = -1; return err;
 15809  		}
 15810  		p = $indexPtr(data.$array, data.$offset + (data.$capacity - 1 >> 0), ptrType$2);
 15811  		$r = m.Mutex.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 15812  		$deferred.push([$methodVal(m.Mutex, "Unlock"), []]);
 15813  		b = (_entry = m.active[ptrType$2.keyFor(p)], _entry !== undefined ? _entry.v : sliceType.nil);
 15814  		if (b === sliceType.nil || !($indexPtr(b.$array, b.$offset + 0, ptrType$2) === $indexPtr(data.$array, data.$offset + 0, ptrType$2))) {
 15815  			err = new Errno(22);
 15816  			$s = -1; return err;
 15817  		}
 15818  		_r = m.munmap((($sliceToArray(b))), ((b.$length >>> 0))); /* */ $s = 2; case 2: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 15819  		errno = _r;
 15820  		if (!($interfaceIsEqual(errno, $ifaceNil))) {
 15821  			err = errno;
 15822  			$s = -1; return err;
 15823  		}
 15824  		delete m.active[ptrType$2.keyFor(p)];
 15825  		err = $ifaceNil;
 15826  		$s = -1; return err;
 15827  		/* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if (!$curGoroutine.asleep) { return  err; } if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: mmapper.ptr.prototype.Munmap }; } $f._entry = _entry; $f._r = _r; $f.b = b; $f.data = data; $f.err = err; $f.errno = errno; $f.m = m; $f.p = p; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
 15828  	};
 15829  	mmapper.prototype.Munmap = function(data) { return this.$val.Munmap(data); };
 15830  	Errno.prototype.Error = function() {
 15831  		var e, s;
 15832  		e = this.$val;
 15833  		if (0 <= ((e >> 0)) && ((e >> 0)) < 133) {
 15834  			s = ((e < 0 || e >= errors.length) ? ($throwRuntimeError("index out of range"), undefined) : errors[e]);
 15835  			if (!(s === "")) {
 15836  				return s;
 15837  			}
 15838  		}
 15839  		return "errno " + itoa(((e >> 0)));
 15840  	};
 15841  	$ptrType(Errno).prototype.Error = function() { return new Errno(this.$get()).Error(); };
 15842  	Errno.prototype.Temporary = function() {
 15843  		var e;
 15844  		e = this.$val;
 15845  		return (e === 4) || (e === 24) || (e === 104) || (e === 103) || new Errno(e).Timeout();
 15846  	};
 15847  	$ptrType(Errno).prototype.Temporary = function() { return new Errno(this.$get()).Temporary(); };
 15848  	Errno.prototype.Timeout = function() {
 15849  		var e;
 15850  		e = this.$val;
 15851  		return (e === 11) || (e === 11) || (e === 110);
 15852  	};
 15853  	$ptrType(Errno).prototype.Timeout = function() { return new Errno(this.$get()).Timeout(); };
 15854  	errnoErr = function(e) {
 15855  		var _1, e;
 15856  		_1 = e;
 15857  		if (_1 === (0)) {
 15858  			return $ifaceNil;
 15859  		} else if (_1 === (11)) {
 15860  			return errEAGAIN;
 15861  		} else if (_1 === (22)) {
 15862  			return errEINVAL;
 15863  		} else if (_1 === (2)) {
 15864  			return errENOENT;
 15865  		}
 15866  		return new Errno(e);
 15867  	};
 15868  	Read = function(fd, p) {
 15869  		var _tuple, err, fd, n, p;
 15870  		n = 0;
 15871  		err = $ifaceNil;
 15872  		_tuple = read(fd, p);
 15873  		n = _tuple[0];
 15874  		err = _tuple[1];
 15875  		if (false) {
 15876  			if (n > 0) {
 15877  				race.WriteRange(($sliceToArray(p)), n);
 15878  			}
 15879  			if ($interfaceIsEqual(err, $ifaceNil)) {
 15880  				race.Acquire(((ioSync$24ptr || (ioSync$24ptr = new ptrType$22(function() { return ioSync; }, function($v) { ioSync = $v; })))));
 15881  			}
 15882  		}
 15883  		if (false && n > 0) {
 15884  			msanWrite(($sliceToArray(p)), n);
 15885  		}
 15886  		return [n, err];
 15887  	};
 15888  	$pkg.Read = Read;
 15889  	Write = function(fd, p) {
 15890  		var _tuple, err, fd, n, p;
 15891  		n = 0;
 15892  		err = $ifaceNil;
 15893  		if (false) {
 15894  			race.ReleaseMerge(((ioSync$24ptr || (ioSync$24ptr = new ptrType$22(function() { return ioSync; }, function($v) { ioSync = $v; })))));
 15895  		}
 15896  		_tuple = write(fd, p);
 15897  		n = _tuple[0];
 15898  		err = _tuple[1];
 15899  		if (false && n > 0) {
 15900  			race.ReadRange(($sliceToArray(p)), n);
 15901  		}
 15902  		if (false && n > 0) {
 15903  			msanRead(($sliceToArray(p)), n);
 15904  		}
 15905  		return [n, err];
 15906  	};
 15907  	$pkg.Write = Write;
 15908  	Bind = function(fd, sa) {
 15909  		var _r, _tuple, err, fd, n, ptr, sa, $s, $r;
 15910  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; err = $f.err; fd = $f.fd; n = $f.n; ptr = $f.ptr; sa = $f.sa; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 15911  		err = $ifaceNil;
 15912  		_r = sa.sockaddr(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 15913  		_tuple = _r;
 15914  		ptr = _tuple[0];
 15915  		n = _tuple[1];
 15916  		err = _tuple[2];
 15917  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 15918  			err = err;
 15919  			$s = -1; return err;
 15920  		}
 15921  		err = bind(fd, ptr, n);
 15922  		$s = -1; return err;
 15923  		/* */ } return; } if ($f === undefined) { $f = { $blk: Bind }; } $f._r = _r; $f._tuple = _tuple; $f.err = err; $f.fd = fd; $f.n = n; $f.ptr = ptr; $f.sa = sa; $f.$s = $s; $f.$r = $r; return $f;
 15924  	};
 15925  	$pkg.Bind = Bind;
 15926  	Connect = function(fd, sa) {
 15927  		var _r, _tuple, err, fd, n, ptr, sa, $s, $r;
 15928  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; err = $f.err; fd = $f.fd; n = $f.n; ptr = $f.ptr; sa = $f.sa; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 15929  		err = $ifaceNil;
 15930  		_r = sa.sockaddr(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 15931  		_tuple = _r;
 15932  		ptr = _tuple[0];
 15933  		n = _tuple[1];
 15934  		err = _tuple[2];
 15935  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 15936  			err = err;
 15937  			$s = -1; return err;
 15938  		}
 15939  		err = connect(fd, ptr, n);
 15940  		$s = -1; return err;
 15941  		/* */ } return; } if ($f === undefined) { $f = { $blk: Connect }; } $f._r = _r; $f._tuple = _tuple; $f.err = err; $f.fd = fd; $f.n = n; $f.ptr = ptr; $f.sa = sa; $f.$s = $s; $f.$r = $r; return $f;
 15942  	};
 15943  	$pkg.Connect = Connect;
 15944  	Getpeername = function(fd) {
 15945  		var _tuple, err, fd, len, len$24ptr, rsa, sa;
 15946  		sa = $ifaceNil;
 15947  		err = $ifaceNil;
 15948  		rsa = new RawSockaddrAny.ptr(new RawSockaddr.ptr(0, arrayType$9.zero()), arrayType$10.zero());
 15949  		len = 112;
 15950  		err = getpeername(fd, rsa, (len$24ptr || (len$24ptr = new ptrType$18(function() { return len; }, function($v) { len = $v; }))));
 15951  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 15952  			return [sa, err];
 15953  		}
 15954  		_tuple = anyToSockaddr(rsa);
 15955  		sa = _tuple[0];
 15956  		err = _tuple[1];
 15957  		return [sa, err];
 15958  	};
 15959  	$pkg.Getpeername = Getpeername;
 15960  	GetsockoptInt = function(fd, level, opt) {
 15961  		var _tmp, _tmp$1, err, fd, level, n, n$24ptr, opt, vallen, vallen$24ptr, value;
 15962  		value = 0;
 15963  		err = $ifaceNil;
 15964  		n = 0;
 15965  		vallen = 4;
 15966  		err = getsockopt(fd, level, opt, ((n$24ptr || (n$24ptr = new ptrType$4(function() { return n; }, function($v) { n = $v; })))), (vallen$24ptr || (vallen$24ptr = new ptrType$18(function() { return vallen; }, function($v) { vallen = $v; }))));
 15967  		_tmp = ((n >> 0));
 15968  		_tmp$1 = err;
 15969  		value = _tmp;
 15970  		err = _tmp$1;
 15971  		return [value, err];
 15972  	};
 15973  	$pkg.GetsockoptInt = GetsockoptInt;
 15974  	Recvfrom = function(fd, p, flags) {
 15975  		var _tuple, _tuple$1, err, fd, flags, from, len, len$24ptr, n, p, rsa;
 15976  		n = 0;
 15977  		from = $ifaceNil;
 15978  		err = $ifaceNil;
 15979  		rsa = new RawSockaddrAny.ptr(new RawSockaddr.ptr(0, arrayType$9.zero()), arrayType$10.zero());
 15980  		len = 112;
 15981  		_tuple = recvfrom(fd, p, flags, rsa, (len$24ptr || (len$24ptr = new ptrType$18(function() { return len; }, function($v) { len = $v; }))));
 15982  		n = _tuple[0];
 15983  		err = _tuple[1];
 15984  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 15985  			return [n, from, err];
 15986  		}
 15987  		if (!((rsa.Addr.Family === 0))) {
 15988  			_tuple$1 = anyToSockaddr(rsa);
 15989  			from = _tuple$1[0];
 15990  			err = _tuple$1[1];
 15991  		}
 15992  		return [n, from, err];
 15993  	};
 15994  	$pkg.Recvfrom = Recvfrom;
 15995  	Sendto = function(fd, p, flags, to) {
 15996  		var _r, _tuple, err, fd, flags, n, p, ptr, to, $s, $r;
 15997  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; err = $f.err; fd = $f.fd; flags = $f.flags; n = $f.n; p = $f.p; ptr = $f.ptr; to = $f.to; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 15998  		err = $ifaceNil;
 15999  		_r = to.sockaddr(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 16000  		_tuple = _r;
 16001  		ptr = _tuple[0];
 16002  		n = _tuple[1];
 16003  		err = _tuple[2];
 16004  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 16005  			err = err;
 16006  			$s = -1; return err;
 16007  		}
 16008  		err = sendto(fd, p, flags, ptr, n);
 16009  		$s = -1; return err;
 16010  		/* */ } return; } if ($f === undefined) { $f = { $blk: Sendto }; } $f._r = _r; $f._tuple = _tuple; $f.err = err; $f.fd = fd; $f.flags = flags; $f.n = n; $f.p = p; $f.ptr = ptr; $f.to = to; $f.$s = $s; $f.$r = $r; return $f;
 16011  	};
 16012  	$pkg.Sendto = Sendto;
 16013  	SetsockoptByte = function(fd, level, opt, value) {
 16014  		var err, fd, level, opt, value, value$24ptr;
 16015  		err = $ifaceNil;
 16016  		err = setsockopt(fd, level, opt, ((value$24ptr || (value$24ptr = new ptrType$2(function() { return value; }, function($v) { value = $v; })))), 1);
 16017  		return err;
 16018  	};
 16019  	$pkg.SetsockoptByte = SetsockoptByte;
 16020  	SetsockoptInt = function(fd, level, opt, value) {
 16021  		var err, fd, level, n, n$24ptr, opt, value;
 16022  		err = $ifaceNil;
 16023  		n = ((value >> 0));
 16024  		err = setsockopt(fd, level, opt, ((n$24ptr || (n$24ptr = new ptrType$4(function() { return n; }, function($v) { n = $v; })))), 4);
 16025  		return err;
 16026  	};
 16027  	$pkg.SetsockoptInt = SetsockoptInt;
 16028  	SetsockoptInet4Addr = function(fd, level, opt, value) {
 16029  		var err, fd, level, opt, value;
 16030  		err = $ifaceNil;
 16031  		err = setsockopt(fd, level, opt, ($sliceToArray(new sliceType(value))), 4);
 16032  		return err;
 16033  	};
 16034  	$pkg.SetsockoptInet4Addr = SetsockoptInet4Addr;
 16035  	SetsockoptIPMreq = function(fd, level, opt, mreq) {
 16036  		var _array, _struct, _view, err, fd, level, mreq, opt;
 16037  		err = $ifaceNil;
 16038  		_array = new Uint8Array(8);
 16039  		err = setsockopt(fd, level, opt, (_array), 8);
 16040  		_struct = mreq, _view = new DataView(_array.buffer, _array.byteOffset), _struct.Multiaddr = new ($nativeArray($kindUint8))(_array.buffer, $min(_array.byteOffset + 0, _array.buffer.byteLength)), _struct.Interface = new ($nativeArray($kindUint8))(_array.buffer, $min(_array.byteOffset + 4, _array.buffer.byteLength));
 16041  		return err;
 16042  	};
 16043  	$pkg.SetsockoptIPMreq = SetsockoptIPMreq;
 16044  	SetsockoptIPv6Mreq = function(fd, level, opt, mreq) {
 16045  		var _array, _struct, _view, err, fd, level, mreq, opt;
 16046  		err = $ifaceNil;
 16047  		_array = new Uint8Array(20);
 16048  		err = setsockopt(fd, level, opt, (_array), 20);
 16049  		_struct = mreq, _view = new DataView(_array.buffer, _array.byteOffset), _struct.Multiaddr = new ($nativeArray($kindUint8))(_array.buffer, $min(_array.byteOffset + 0, _array.buffer.byteLength)), _struct.Interface = _view.getUint32(16, true);
 16050  		return err;
 16051  	};
 16052  	$pkg.SetsockoptIPv6Mreq = SetsockoptIPv6Mreq;
 16053  	SetsockoptLinger = function(fd, level, opt, l) {
 16054  		var _array, _struct, _view, err, fd, l, level, opt;
 16055  		err = $ifaceNil;
 16056  		_array = new Uint8Array(8);
 16057  		err = setsockopt(fd, level, opt, (_array), 8);
 16058  		_struct = l, _view = new DataView(_array.buffer, _array.byteOffset), _struct.Onoff = _view.getInt32(0, true), _struct.Linger = _view.getInt32(4, true);
 16059  		return err;
 16060  	};
 16061  	$pkg.SetsockoptLinger = SetsockoptLinger;
 16062  	Socket = function(domain, typ, proto) {
 16063  		var _tmp, _tmp$1, _tuple, domain, err, fd, proto, typ;
 16064  		fd = 0;
 16065  		err = $ifaceNil;
 16066  		if ((domain === 10) && $pkg.SocketDisableIPv6) {
 16067  			_tmp = -1;
 16068  			_tmp$1 = new Errno(97);
 16069  			fd = _tmp;
 16070  			err = _tmp$1;
 16071  			return [fd, err];
 16072  		}
 16073  		_tuple = socket(domain, typ, proto);
 16074  		fd = _tuple[0];
 16075  		err = _tuple[1];
 16076  		return [fd, err];
 16077  	};
 16078  	$pkg.Socket = Socket;
 16079  	Sendfile = function(outfd, infd, offset, count) {
 16080  		var _tuple, count, err, infd, offset, outfd, written;
 16081  		written = 0;
 16082  		err = $ifaceNil;
 16083  		if (false) {
 16084  			race.ReleaseMerge(((ioSync$24ptr || (ioSync$24ptr = new ptrType$22(function() { return ioSync; }, function($v) { ioSync = $v; })))));
 16085  		}
 16086  		_tuple = sendfile(outfd, infd, offset, count);
 16087  		written = _tuple[0];
 16088  		err = _tuple[1];
 16089  		return [written, err];
 16090  	};
 16091  	$pkg.Sendfile = Sendfile;
 16092  	openat = function(dirfd, path, flags, mode) {
 16093  		var _p0, _tuple, _tuple$1, dirfd, e1, err, fd, flags, mode, path, r0;
 16094  		fd = 0;
 16095  		err = $ifaceNil;
 16096  		_p0 = ptrType$2.nil;
 16097  		_tuple = BytePtrFromString(path);
 16098  		_p0 = _tuple[0];
 16099  		err = _tuple[1];
 16100  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 16101  			return [fd, err];
 16102  		}
 16103  		_tuple$1 = Syscall6(257, ((dirfd >>> 0)), ((_p0)), ((flags >>> 0)), ((mode >>> 0)), 0, 0);
 16104  		r0 = _tuple$1[0];
 16105  		e1 = _tuple$1[2];
 16106  		fd = ((r0 >> 0));
 16107  		if (!((e1 === 0))) {
 16108  			err = errnoErr(e1);
 16109  		}
 16110  		return [fd, err];
 16111  	};
 16112  	unlinkat = function(dirfd, path, flags) {
 16113  		var _p0, _tuple, _tuple$1, dirfd, e1, err, flags, path;
 16114  		err = $ifaceNil;
 16115  		_p0 = ptrType$2.nil;
 16116  		_tuple = BytePtrFromString(path);
 16117  		_p0 = _tuple[0];
 16118  		err = _tuple[1];
 16119  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 16120  			return err;
 16121  		}
 16122  		_tuple$1 = Syscall(263, ((dirfd >>> 0)), ((_p0)), ((flags >>> 0)));
 16123  		e1 = _tuple$1[2];
 16124  		if (!((e1 === 0))) {
 16125  			err = errnoErr(e1);
 16126  		}
 16127  		return err;
 16128  	};
 16129  	Close = function(fd) {
 16130  		var _tuple, e1, err, fd;
 16131  		err = $ifaceNil;
 16132  		_tuple = Syscall(3, ((fd >>> 0)), 0, 0);
 16133  		e1 = _tuple[2];
 16134  		if (!((e1 === 0))) {
 16135  			err = errnoErr(e1);
 16136  		}
 16137  		return err;
 16138  	};
 16139  	$pkg.Close = Close;
 16140  	Dup = function(oldfd) {
 16141  		var _tuple, e1, err, fd, oldfd, r0;
 16142  		fd = 0;
 16143  		err = $ifaceNil;
 16144  		_tuple = Syscall(32, ((oldfd >>> 0)), 0, 0);
 16145  		r0 = _tuple[0];
 16146  		e1 = _tuple[2];
 16147  		fd = ((r0 >> 0));
 16148  		if (!((e1 === 0))) {
 16149  			err = errnoErr(e1);
 16150  		}
 16151  		return [fd, err];
 16152  	};
 16153  	$pkg.Dup = Dup;
 16154  	Fchdir = function(fd) {
 16155  		var _tuple, e1, err, fd;
 16156  		err = $ifaceNil;
 16157  		_tuple = Syscall(81, ((fd >>> 0)), 0, 0);
 16158  		e1 = _tuple[2];
 16159  		if (!((e1 === 0))) {
 16160  			err = errnoErr(e1);
 16161  		}
 16162  		return err;
 16163  	};
 16164  	$pkg.Fchdir = Fchdir;
 16165  	Fchmod = function(fd, mode) {
 16166  		var _tuple, e1, err, fd, mode;
 16167  		err = $ifaceNil;
 16168  		_tuple = Syscall(91, ((fd >>> 0)), ((mode >>> 0)), 0);
 16169  		e1 = _tuple[2];
 16170  		if (!((e1 === 0))) {
 16171  			err = errnoErr(e1);
 16172  		}
 16173  		return err;
 16174  	};
 16175  	$pkg.Fchmod = Fchmod;
 16176  	Fchmodat = function(dirfd, path, mode, flags) {
 16177  		var _p0, _tuple, _tuple$1, dirfd, e1, err, flags, mode, path;
 16178  		err = $ifaceNil;
 16179  		_p0 = ptrType$2.nil;
 16180  		_tuple = BytePtrFromString(path);
 16181  		_p0 = _tuple[0];
 16182  		err = _tuple[1];
 16183  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 16184  			return err;
 16185  		}
 16186  		_tuple$1 = Syscall6(268, ((dirfd >>> 0)), ((_p0)), ((mode >>> 0)), ((flags >>> 0)), 0, 0);
 16187  		e1 = _tuple$1[2];
 16188  		if (!((e1 === 0))) {
 16189  			err = errnoErr(e1);
 16190  		}
 16191  		return err;
 16192  	};
 16193  	$pkg.Fchmodat = Fchmodat;
 16194  	fcntl = function(fd, cmd, arg) {
 16195  		var _tuple, arg, cmd, e1, err, fd, r0, val;
 16196  		val = 0;
 16197  		err = $ifaceNil;
 16198  		_tuple = Syscall(72, ((fd >>> 0)), ((cmd >>> 0)), ((arg >>> 0)));
 16199  		r0 = _tuple[0];
 16200  		e1 = _tuple[2];
 16201  		val = ((r0 >> 0));
 16202  		if (!((e1 === 0))) {
 16203  			err = errnoErr(e1);
 16204  		}
 16205  		return [val, err];
 16206  	};
 16207  	Fsync = function(fd) {
 16208  		var _tuple, e1, err, fd;
 16209  		err = $ifaceNil;
 16210  		_tuple = Syscall(74, ((fd >>> 0)), 0, 0);
 16211  		e1 = _tuple[2];
 16212  		if (!((e1 === 0))) {
 16213  			err = errnoErr(e1);
 16214  		}
 16215  		return err;
 16216  	};
 16217  	$pkg.Fsync = Fsync;
 16218  	Getdents = function(fd, buf) {
 16219  		var _p0, _tuple, buf, e1, err, fd, n, r0;
 16220  		n = 0;
 16221  		err = $ifaceNil;
 16222  		_p0 = 0;
 16223  		if (buf.$length > 0) {
 16224  			_p0 = ($sliceToArray(buf));
 16225  		} else {
 16226  			_p0 = (new Uint8Array(0));
 16227  		}
 16228  		_tuple = Syscall(217, ((fd >>> 0)), (_p0), ((buf.$length >>> 0)));
 16229  		r0 = _tuple[0];
 16230  		e1 = _tuple[2];
 16231  		n = ((r0 >> 0));
 16232  		if (!((e1 === 0))) {
 16233  			err = errnoErr(e1);
 16234  		}
 16235  		return [n, err];
 16236  	};
 16237  	$pkg.Getdents = Getdents;
 16238  	Getpid = function() {
 16239  		var _tuple, pid, r0;
 16240  		pid = 0;
 16241  		_tuple = RawSyscall(39, 0, 0, 0);
 16242  		r0 = _tuple[0];
 16243  		pid = ((r0 >> 0));
 16244  		return pid;
 16245  	};
 16246  	$pkg.Getpid = Getpid;
 16247  	read = function(fd, p) {
 16248  		var _p0, _tuple, e1, err, fd, n, p, r0;
 16249  		n = 0;
 16250  		err = $ifaceNil;
 16251  		_p0 = 0;
 16252  		if (p.$length > 0) {
 16253  			_p0 = ($sliceToArray(p));
 16254  		} else {
 16255  			_p0 = (new Uint8Array(0));
 16256  		}
 16257  		_tuple = Syscall(0, ((fd >>> 0)), (_p0), ((p.$length >>> 0)));
 16258  		r0 = _tuple[0];
 16259  		e1 = _tuple[2];
 16260  		n = ((r0 >> 0));
 16261  		if (!((e1 === 0))) {
 16262  			err = errnoErr(e1);
 16263  		}
 16264  		return [n, err];
 16265  	};
 16266  	write = function(fd, p) {
 16267  		var _p0, _tuple, e1, err, fd, n, p, r0;
 16268  		n = 0;
 16269  		err = $ifaceNil;
 16270  		_p0 = 0;
 16271  		if (p.$length > 0) {
 16272  			_p0 = ($sliceToArray(p));
 16273  		} else {
 16274  			_p0 = (new Uint8Array(0));
 16275  		}
 16276  		_tuple = Syscall(1, ((fd >>> 0)), (_p0), ((p.$length >>> 0)));
 16277  		r0 = _tuple[0];
 16278  		e1 = _tuple[2];
 16279  		n = ((r0 >> 0));
 16280  		if (!((e1 === 0))) {
 16281  			err = errnoErr(e1);
 16282  		}
 16283  		return [n, err];
 16284  	};
 16285  	munmap = function(addr, length) {
 16286  		var _tuple, addr, e1, err, length;
 16287  		err = $ifaceNil;
 16288  		_tuple = Syscall(11, (addr), (length), 0);
 16289  		e1 = _tuple[2];
 16290  		if (!((e1 === 0))) {
 16291  			err = errnoErr(e1);
 16292  		}
 16293  		return err;
 16294  	};
 16295  	Fchown = function(fd, uid, gid) {
 16296  		var _tuple, e1, err, fd, gid, uid;
 16297  		err = $ifaceNil;
 16298  		_tuple = Syscall(93, ((fd >>> 0)), ((uid >>> 0)), ((gid >>> 0)));
 16299  		e1 = _tuple[2];
 16300  		if (!((e1 === 0))) {
 16301  			err = errnoErr(e1);
 16302  		}
 16303  		return err;
 16304  	};
 16305  	$pkg.Fchown = Fchown;
 16306  	Fstat = function(fd, stat) {
 16307  		var _array, _struct, _tuple, _view, e1, err, fd, stat;
 16308  		err = $ifaceNil;
 16309  		_array = new Uint8Array(144);
 16310  		_tuple = Syscall(5, ((fd >>> 0)), ((_array)), 0);
 16311  		_struct = stat, _view = new DataView(_array.buffer, _array.byteOffset), _struct.Dev = new $Uint64(_view.getUint32(4, true), _view.getUint32(0, true)), _struct.Ino = new $Uint64(_view.getUint32(12, true), _view.getUint32(8, true)), _struct.Nlink = new $Uint64(_view.getUint32(20, true), _view.getUint32(16, true)), _struct.Mode = _view.getUint32(24, true), _struct.Uid = _view.getUint32(28, true), _struct.Gid = _view.getUint32(32, true), _struct.X__pad0 = _view.getInt32(36, true), _struct.Rdev = new $Uint64(_view.getUint32(44, true), _view.getUint32(40, true)), _struct.Size = new $Int64(_view.getUint32(52, true), _view.getUint32(48, true)), _struct.Blksize = new $Int64(_view.getUint32(60, true), _view.getUint32(56, true)), _struct.Blocks = new $Int64(_view.getUint32(68, true), _view.getUint32(64, true)), _struct.Atim.Sec = new $Int64(_view.getUint32(76, true), _view.getUint32(72, true)), _struct.Atim.Nsec = new $Int64(_view.getUint32(84, true), _view.getUint32(80, true)), _struct.Mtim.Sec = new $Int64(_view.getUint32(92, true), _view.getUint32(88, true)), _struct.Mtim.Nsec = new $Int64(_view.getUint32(100, true), _view.getUint32(96, true)), _struct.Ctim.Sec = new $Int64(_view.getUint32(108, true), _view.getUint32(104, true)), _struct.Ctim.Nsec = new $Int64(_view.getUint32(116, true), _view.getUint32(112, true)), _struct.X__unused = new ($nativeArray($kindInt64))(_array.buffer, $min(_array.byteOffset + 120, _array.buffer.byteLength));
 16312  		e1 = _tuple[2];
 16313  		if (!((e1 === 0))) {
 16314  			err = errnoErr(e1);
 16315  		}
 16316  		return err;
 16317  	};
 16318  	$pkg.Fstat = Fstat;
 16319  	Ftruncate = function(fd, length) {
 16320  		var _tuple, e1, err, fd, length;
 16321  		err = $ifaceNil;
 16322  		_tuple = Syscall(77, ((fd >>> 0)), ((length.$low >>> 0)), 0);
 16323  		e1 = _tuple[2];
 16324  		if (!((e1 === 0))) {
 16325  			err = errnoErr(e1);
 16326  		}
 16327  		return err;
 16328  	};
 16329  	$pkg.Ftruncate = Ftruncate;
 16330  	Listen = function(s, n) {
 16331  		var _tuple, e1, err, n, s;
 16332  		err = $ifaceNil;
 16333  		_tuple = Syscall(50, ((s >>> 0)), ((n >>> 0)), 0);
 16334  		e1 = _tuple[2];
 16335  		if (!((e1 === 0))) {
 16336  			err = errnoErr(e1);
 16337  		}
 16338  		return err;
 16339  	};
 16340  	$pkg.Listen = Listen;
 16341  	Lstat = function(path, stat) {
 16342  		var _array, _p0, _struct, _tuple, _tuple$1, _view, e1, err, path, stat;
 16343  		err = $ifaceNil;
 16344  		_p0 = ptrType$2.nil;
 16345  		_tuple = BytePtrFromString(path);
 16346  		_p0 = _tuple[0];
 16347  		err = _tuple[1];
 16348  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 16349  			return err;
 16350  		}
 16351  		_array = new Uint8Array(144);
 16352  		_tuple$1 = Syscall(6, ((_p0)), ((_array)), 0);
 16353  		_struct = stat, _view = new DataView(_array.buffer, _array.byteOffset), _struct.Dev = new $Uint64(_view.getUint32(4, true), _view.getUint32(0, true)), _struct.Ino = new $Uint64(_view.getUint32(12, true), _view.getUint32(8, true)), _struct.Nlink = new $Uint64(_view.getUint32(20, true), _view.getUint32(16, true)), _struct.Mode = _view.getUint32(24, true), _struct.Uid = _view.getUint32(28, true), _struct.Gid = _view.getUint32(32, true), _struct.X__pad0 = _view.getInt32(36, true), _struct.Rdev = new $Uint64(_view.getUint32(44, true), _view.getUint32(40, true)), _struct.Size = new $Int64(_view.getUint32(52, true), _view.getUint32(48, true)), _struct.Blksize = new $Int64(_view.getUint32(60, true), _view.getUint32(56, true)), _struct.Blocks = new $Int64(_view.getUint32(68, true), _view.getUint32(64, true)), _struct.Atim.Sec = new $Int64(_view.getUint32(76, true), _view.getUint32(72, true)), _struct.Atim.Nsec = new $Int64(_view.getUint32(84, true), _view.getUint32(80, true)), _struct.Mtim.Sec = new $Int64(_view.getUint32(92, true), _view.getUint32(88, true)), _struct.Mtim.Nsec = new $Int64(_view.getUint32(100, true), _view.getUint32(96, true)), _struct.Ctim.Sec = new $Int64(_view.getUint32(108, true), _view.getUint32(104, true)), _struct.Ctim.Nsec = new $Int64(_view.getUint32(116, true), _view.getUint32(112, true)), _struct.X__unused = new ($nativeArray($kindInt64))(_array.buffer, $min(_array.byteOffset + 120, _array.buffer.byteLength));
 16354  		e1 = _tuple$1[2];
 16355  		if (!((e1 === 0))) {
 16356  			err = errnoErr(e1);
 16357  		}
 16358  		return err;
 16359  	};
 16360  	$pkg.Lstat = Lstat;
 16361  	Pread = function(fd, p, offset) {
 16362  		var _p0, _tuple, e1, err, fd, n, offset, p, r0;
 16363  		n = 0;
 16364  		err = $ifaceNil;
 16365  		_p0 = 0;
 16366  		if (p.$length > 0) {
 16367  			_p0 = ($sliceToArray(p));
 16368  		} else {
 16369  			_p0 = (new Uint8Array(0));
 16370  		}
 16371  		_tuple = Syscall6(17, ((fd >>> 0)), (_p0), ((p.$length >>> 0)), ((offset.$low >>> 0)), 0, 0);
 16372  		r0 = _tuple[0];
 16373  		e1 = _tuple[2];
 16374  		n = ((r0 >> 0));
 16375  		if (!((e1 === 0))) {
 16376  			err = errnoErr(e1);
 16377  		}
 16378  		return [n, err];
 16379  	};
 16380  	$pkg.Pread = Pread;
 16381  	Pwrite = function(fd, p, offset) {
 16382  		var _p0, _tuple, e1, err, fd, n, offset, p, r0;
 16383  		n = 0;
 16384  		err = $ifaceNil;
 16385  		_p0 = 0;
 16386  		if (p.$length > 0) {
 16387  			_p0 = ($sliceToArray(p));
 16388  		} else {
 16389  			_p0 = (new Uint8Array(0));
 16390  		}
 16391  		_tuple = Syscall6(18, ((fd >>> 0)), (_p0), ((p.$length >>> 0)), ((offset.$low >>> 0)), 0, 0);
 16392  		r0 = _tuple[0];
 16393  		e1 = _tuple[2];
 16394  		n = ((r0 >> 0));
 16395  		if (!((e1 === 0))) {
 16396  			err = errnoErr(e1);
 16397  		}
 16398  		return [n, err];
 16399  	};
 16400  	$pkg.Pwrite = Pwrite;
 16401  	Seek = function(fd, offset, whence) {
 16402  		var _tuple, e1, err, fd, off, offset, r0, whence;
 16403  		off = new $Int64(0, 0);
 16404  		err = $ifaceNil;
 16405  		_tuple = Syscall(8, ((fd >>> 0)), ((offset.$low >>> 0)), ((whence >>> 0)));
 16406  		r0 = _tuple[0];
 16407  		e1 = _tuple[2];
 16408  		off = (new $Int64(0, r0.constructor === Number ? r0 : 1));
 16409  		if (!((e1 === 0))) {
 16410  			err = errnoErr(e1);
 16411  		}
 16412  		return [off, err];
 16413  	};
 16414  	$pkg.Seek = Seek;
 16415  	sendfile = function(outfd, infd, offset, count) {
 16416  		var _tuple, count, e1, err, infd, offset, outfd, r0, written;
 16417  		written = 0;
 16418  		err = $ifaceNil;
 16419  		_tuple = Syscall6(40, ((outfd >>> 0)), ((infd >>> 0)), ((offset)), ((count >>> 0)), 0, 0);
 16420  		r0 = _tuple[0];
 16421  		e1 = _tuple[2];
 16422  		written = ((r0 >> 0));
 16423  		if (!((e1 === 0))) {
 16424  			err = errnoErr(e1);
 16425  		}
 16426  		return [written, err];
 16427  	};
 16428  	Shutdown = function(fd, how) {
 16429  		var _tuple, e1, err, fd, how;
 16430  		err = $ifaceNil;
 16431  		_tuple = Syscall(48, ((fd >>> 0)), ((how >>> 0)), 0);
 16432  		e1 = _tuple[2];
 16433  		if (!((e1 === 0))) {
 16434  			err = errnoErr(e1);
 16435  		}
 16436  		return err;
 16437  	};
 16438  	$pkg.Shutdown = Shutdown;
 16439  	Stat = function(path, stat) {
 16440  		var _array, _p0, _struct, _tuple, _tuple$1, _view, e1, err, path, stat;
 16441  		err = $ifaceNil;
 16442  		_p0 = ptrType$2.nil;
 16443  		_tuple = BytePtrFromString(path);
 16444  		_p0 = _tuple[0];
 16445  		err = _tuple[1];
 16446  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 16447  			return err;
 16448  		}
 16449  		_array = new Uint8Array(144);
 16450  		_tuple$1 = Syscall(4, ((_p0)), ((_array)), 0);
 16451  		_struct = stat, _view = new DataView(_array.buffer, _array.byteOffset), _struct.Dev = new $Uint64(_view.getUint32(4, true), _view.getUint32(0, true)), _struct.Ino = new $Uint64(_view.getUint32(12, true), _view.getUint32(8, true)), _struct.Nlink = new $Uint64(_view.getUint32(20, true), _view.getUint32(16, true)), _struct.Mode = _view.getUint32(24, true), _struct.Uid = _view.getUint32(28, true), _struct.Gid = _view.getUint32(32, true), _struct.X__pad0 = _view.getInt32(36, true), _struct.Rdev = new $Uint64(_view.getUint32(44, true), _view.getUint32(40, true)), _struct.Size = new $Int64(_view.getUint32(52, true), _view.getUint32(48, true)), _struct.Blksize = new $Int64(_view.getUint32(60, true), _view.getUint32(56, true)), _struct.Blocks = new $Int64(_view.getUint32(68, true), _view.getUint32(64, true)), _struct.Atim.Sec = new $Int64(_view.getUint32(76, true), _view.getUint32(72, true)), _struct.Atim.Nsec = new $Int64(_view.getUint32(84, true), _view.getUint32(80, true)), _struct.Mtim.Sec = new $Int64(_view.getUint32(92, true), _view.getUint32(88, true)), _struct.Mtim.Nsec = new $Int64(_view.getUint32(100, true), _view.getUint32(96, true)), _struct.Ctim.Sec = new $Int64(_view.getUint32(108, true), _view.getUint32(104, true)), _struct.Ctim.Nsec = new $Int64(_view.getUint32(116, true), _view.getUint32(112, true)), _struct.X__unused = new ($nativeArray($kindInt64))(_array.buffer, $min(_array.byteOffset + 120, _array.buffer.byteLength));
 16452  		e1 = _tuple$1[2];
 16453  		if (!((e1 === 0))) {
 16454  			err = errnoErr(e1);
 16455  		}
 16456  		return err;
 16457  	};
 16458  	$pkg.Stat = Stat;
 16459  	accept = function(s, rsa, addrlen) {
 16460  		var _array, _struct, _tuple, _view, addrlen, e1, err, fd, r0, rsa, s;
 16461  		fd = 0;
 16462  		err = $ifaceNil;
 16463  		_array = new Uint8Array(112);
 16464  		_tuple = Syscall(43, ((s >>> 0)), ((_array)), ((addrlen)));
 16465  		_struct = rsa, _view = new DataView(_array.buffer, _array.byteOffset), _struct.Addr.Family = _view.getUint16(0, true), _struct.Addr.Data = new ($nativeArray($kindInt8))(_array.buffer, $min(_array.byteOffset + 2, _array.buffer.byteLength)), _struct.Pad = new ($nativeArray($kindInt8))(_array.buffer, $min(_array.byteOffset + 16, _array.buffer.byteLength));
 16466  		r0 = _tuple[0];
 16467  		e1 = _tuple[2];
 16468  		fd = ((r0 >> 0));
 16469  		if (!((e1 === 0))) {
 16470  			err = errnoErr(e1);
 16471  		}
 16472  		return [fd, err];
 16473  	};
 16474  	accept4 = function(s, rsa, addrlen, flags) {
 16475  		var _array, _struct, _tuple, _view, addrlen, e1, err, fd, flags, r0, rsa, s;
 16476  		fd = 0;
 16477  		err = $ifaceNil;
 16478  		_array = new Uint8Array(112);
 16479  		_tuple = Syscall6(288, ((s >>> 0)), ((_array)), ((addrlen)), ((flags >>> 0)), 0, 0);
 16480  		_struct = rsa, _view = new DataView(_array.buffer, _array.byteOffset), _struct.Addr.Family = _view.getUint16(0, true), _struct.Addr.Data = new ($nativeArray($kindInt8))(_array.buffer, $min(_array.byteOffset + 2, _array.buffer.byteLength)), _struct.Pad = new ($nativeArray($kindInt8))(_array.buffer, $min(_array.byteOffset + 16, _array.buffer.byteLength));
 16481  		r0 = _tuple[0];
 16482  		e1 = _tuple[2];
 16483  		fd = ((r0 >> 0));
 16484  		if (!((e1 === 0))) {
 16485  			err = errnoErr(e1);
 16486  		}
 16487  		return [fd, err];
 16488  	};
 16489  	bind = function(s, addr, addrlen) {
 16490  		var _tuple, addr, addrlen, e1, err, s;
 16491  		err = $ifaceNil;
 16492  		_tuple = Syscall(49, ((s >>> 0)), (addr), ((addrlen >>> 0)));
 16493  		e1 = _tuple[2];
 16494  		if (!((e1 === 0))) {
 16495  			err = errnoErr(e1);
 16496  		}
 16497  		return err;
 16498  	};
 16499  	connect = function(s, addr, addrlen) {
 16500  		var _tuple, addr, addrlen, e1, err, s;
 16501  		err = $ifaceNil;
 16502  		_tuple = Syscall(42, ((s >>> 0)), (addr), ((addrlen >>> 0)));
 16503  		e1 = _tuple[2];
 16504  		if (!((e1 === 0))) {
 16505  			err = errnoErr(e1);
 16506  		}
 16507  		return err;
 16508  	};
 16509  	getsockopt = function(s, level, name, val, vallen) {
 16510  		var _tuple, e1, err, level, name, s, val, vallen;
 16511  		err = $ifaceNil;
 16512  		_tuple = Syscall6(55, ((s >>> 0)), ((level >>> 0)), ((name >>> 0)), (val), ((vallen)), 0);
 16513  		e1 = _tuple[2];
 16514  		if (!((e1 === 0))) {
 16515  			err = errnoErr(e1);
 16516  		}
 16517  		return err;
 16518  	};
 16519  	setsockopt = function(s, level, name, val, vallen) {
 16520  		var _tuple, e1, err, level, name, s, val, vallen;
 16521  		err = $ifaceNil;
 16522  		_tuple = Syscall6(54, ((s >>> 0)), ((level >>> 0)), ((name >>> 0)), (val), (vallen), 0);
 16523  		e1 = _tuple[2];
 16524  		if (!((e1 === 0))) {
 16525  			err = errnoErr(e1);
 16526  		}
 16527  		return err;
 16528  	};
 16529  	socket = function(domain, typ, proto) {
 16530  		var _tuple, domain, e1, err, fd, proto, r0, typ;
 16531  		fd = 0;
 16532  		err = $ifaceNil;
 16533  		_tuple = RawSyscall(41, ((domain >>> 0)), ((typ >>> 0)), ((proto >>> 0)));
 16534  		r0 = _tuple[0];
 16535  		e1 = _tuple[2];
 16536  		fd = ((r0 >> 0));
 16537  		if (!((e1 === 0))) {
 16538  			err = errnoErr(e1);
 16539  		}
 16540  		return [fd, err];
 16541  	};
 16542  	getpeername = function(fd, rsa, addrlen) {
 16543  		var _array, _struct, _tuple, _view, addrlen, e1, err, fd, rsa;
 16544  		err = $ifaceNil;
 16545  		_array = new Uint8Array(112);
 16546  		_tuple = RawSyscall(52, ((fd >>> 0)), ((_array)), ((addrlen)));
 16547  		_struct = rsa, _view = new DataView(_array.buffer, _array.byteOffset), _struct.Addr.Family = _view.getUint16(0, true), _struct.Addr.Data = new ($nativeArray($kindInt8))(_array.buffer, $min(_array.byteOffset + 2, _array.buffer.byteLength)), _struct.Pad = new ($nativeArray($kindInt8))(_array.buffer, $min(_array.byteOffset + 16, _array.buffer.byteLength));
 16548  		e1 = _tuple[2];
 16549  		if (!((e1 === 0))) {
 16550  			err = errnoErr(e1);
 16551  		}
 16552  		return err;
 16553  	};
 16554  	getsockname = function(fd, rsa, addrlen) {
 16555  		var _array, _struct, _tuple, _view, addrlen, e1, err, fd, rsa;
 16556  		err = $ifaceNil;
 16557  		_array = new Uint8Array(112);
 16558  		_tuple = RawSyscall(51, ((fd >>> 0)), ((_array)), ((addrlen)));
 16559  		_struct = rsa, _view = new DataView(_array.buffer, _array.byteOffset), _struct.Addr.Family = _view.getUint16(0, true), _struct.Addr.Data = new ($nativeArray($kindInt8))(_array.buffer, $min(_array.byteOffset + 2, _array.buffer.byteLength)), _struct.Pad = new ($nativeArray($kindInt8))(_array.buffer, $min(_array.byteOffset + 16, _array.buffer.byteLength));
 16560  		e1 = _tuple[2];
 16561  		if (!((e1 === 0))) {
 16562  			err = errnoErr(e1);
 16563  		}
 16564  		return err;
 16565  	};
 16566  	recvfrom = function(fd, p, flags, from, fromlen) {
 16567  		var _array, _p0, _struct, _tuple, _view, e1, err, fd, flags, from, fromlen, n, p, r0;
 16568  		n = 0;
 16569  		err = $ifaceNil;
 16570  		_p0 = 0;
 16571  		if (p.$length > 0) {
 16572  			_p0 = ($sliceToArray(p));
 16573  		} else {
 16574  			_p0 = (new Uint8Array(0));
 16575  		}
 16576  		_array = new Uint8Array(112);
 16577  		_tuple = Syscall6(45, ((fd >>> 0)), (_p0), ((p.$length >>> 0)), ((flags >>> 0)), ((_array)), ((fromlen)));
 16578  		_struct = from, _view = new DataView(_array.buffer, _array.byteOffset), _struct.Addr.Family = _view.getUint16(0, true), _struct.Addr.Data = new ($nativeArray($kindInt8))(_array.buffer, $min(_array.byteOffset + 2, _array.buffer.byteLength)), _struct.Pad = new ($nativeArray($kindInt8))(_array.buffer, $min(_array.byteOffset + 16, _array.buffer.byteLength));
 16579  		r0 = _tuple[0];
 16580  		e1 = _tuple[2];
 16581  		n = ((r0 >> 0));
 16582  		if (!((e1 === 0))) {
 16583  			err = errnoErr(e1);
 16584  		}
 16585  		return [n, err];
 16586  	};
 16587  	sendto = function(s, buf, flags, to, addrlen) {
 16588  		var _p0, _tuple, addrlen, buf, e1, err, flags, s, to;
 16589  		err = $ifaceNil;
 16590  		_p0 = 0;
 16591  		if (buf.$length > 0) {
 16592  			_p0 = ($sliceToArray(buf));
 16593  		} else {
 16594  			_p0 = (new Uint8Array(0));
 16595  		}
 16596  		_tuple = Syscall6(44, ((s >>> 0)), (_p0), ((buf.$length >>> 0)), ((flags >>> 0)), (to), ((addrlen >>> 0)));
 16597  		e1 = _tuple[2];
 16598  		if (!((e1 === 0))) {
 16599  			err = errnoErr(e1);
 16600  		}
 16601  		return err;
 16602  	};
 16603  	recvmsg = function(s, msg, flags) {
 16604  		var _array, _struct, _tuple, _view, e1, err, flags, msg, n, r0, s;
 16605  		n = 0;
 16606  		err = $ifaceNil;
 16607  		_array = new Uint8Array(48);
 16608  		_tuple = Syscall(47, ((s >>> 0)), ((_array)), ((flags >>> 0)));
 16609  		_struct = msg, _view = new DataView(_array.buffer, _array.byteOffset), _struct.Namelen = _view.getUint32(4, true), _struct.Pad_cgo_0 = new ($nativeArray($kindUint8))(_array.buffer, $min(_array.byteOffset + 8, _array.buffer.byteLength)), _struct.Iovlen = new $Uint64(_view.getUint32(20, true), _view.getUint32(16, true)), _struct.Controllen = new $Uint64(_view.getUint32(36, true), _view.getUint32(32, true)), _struct.Flags = _view.getInt32(40, true), _struct.Pad_cgo_1 = new ($nativeArray($kindUint8))(_array.buffer, $min(_array.byteOffset + 44, _array.buffer.byteLength));
 16610  		r0 = _tuple[0];
 16611  		e1 = _tuple[2];
 16612  		n = ((r0 >> 0));
 16613  		if (!((e1 === 0))) {
 16614  			err = errnoErr(e1);
 16615  		}
 16616  		return [n, err];
 16617  	};
 16618  	sendmsg = function(s, msg, flags) {
 16619  		var _array, _struct, _tuple, _view, e1, err, flags, msg, n, r0, s;
 16620  		n = 0;
 16621  		err = $ifaceNil;
 16622  		_array = new Uint8Array(48);
 16623  		_tuple = Syscall(46, ((s >>> 0)), ((_array)), ((flags >>> 0)));
 16624  		_struct = msg, _view = new DataView(_array.buffer, _array.byteOffset), _struct.Namelen = _view.getUint32(4, true), _struct.Pad_cgo_0 = new ($nativeArray($kindUint8))(_array.buffer, $min(_array.byteOffset + 8, _array.buffer.byteLength)), _struct.Iovlen = new $Uint64(_view.getUint32(20, true), _view.getUint32(16, true)), _struct.Controllen = new $Uint64(_view.getUint32(36, true), _view.getUint32(32, true)), _struct.Flags = _view.getInt32(40, true), _struct.Pad_cgo_1 = new ($nativeArray($kindUint8))(_array.buffer, $min(_array.byteOffset + 44, _array.buffer.byteLength));
 16625  		r0 = _tuple[0];
 16626  		e1 = _tuple[2];
 16627  		n = ((r0 >> 0));
 16628  		if (!((e1 === 0))) {
 16629  			err = errnoErr(e1);
 16630  		}
 16631  		return [n, err];
 16632  	};
 16633  	mmap = function(addr, length, prot, flags, fd, offset) {
 16634  		var _tuple, addr, e1, err, fd, flags, length, offset, prot, r0, xaddr;
 16635  		xaddr = 0;
 16636  		err = $ifaceNil;
 16637  		_tuple = Syscall6(9, (addr), (length), ((prot >>> 0)), ((flags >>> 0)), ((fd >>> 0)), ((offset.$low >>> 0)));
 16638  		r0 = _tuple[0];
 16639  		e1 = _tuple[2];
 16640  		xaddr = (r0);
 16641  		if (!((e1 === 0))) {
 16642  			err = errnoErr(e1);
 16643  		}
 16644  		return [xaddr, err];
 16645  	};
 16646  	ptrType$23.methods = [{prop: "toWireFormat", name: "toWireFormat", pkg: "syscall", typ: $funcType([], [sliceType], false)}];
 16647  	ptrType$24.methods = [{prop: "sockaddr", name: "sockaddr", pkg: "syscall", typ: $funcType([], [$UnsafePointer, _Socklen, $error], false)}];
 16648  	ptrType$11.methods = [{prop: "sockaddr", name: "sockaddr", pkg: "syscall", typ: $funcType([], [$UnsafePointer, _Socklen, $error], false)}];
 16649  	ptrType$25.methods = [{prop: "Mmap", name: "Mmap", pkg: "", typ: $funcType([$Int, $Int64, $Int, $Int, $Int], [sliceType, $error], false)}, {prop: "Munmap", name: "Munmap", pkg: "", typ: $funcType([sliceType], [$error], false)}];
 16650  	Errno.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Temporary", name: "Temporary", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "Timeout", name: "Timeout", pkg: "", typ: $funcType([], [$Bool], false)}];
 16651  	ptrType$26.methods = [{prop: "sockaddr", name: "sockaddr", pkg: "syscall", typ: $funcType([], [$UnsafePointer, _Socklen, $error], false)}];
 16652  	ptrType$27.methods = [{prop: "sockaddr", name: "sockaddr", pkg: "syscall", typ: $funcType([], [$UnsafePointer, _Socklen, $error], false)}];
 16653  	ptrType$28.methods = [{prop: "sockaddr", name: "sockaddr", pkg: "syscall", typ: $funcType([], [$UnsafePointer, _Socklen, $error], false)}];
 16654  	ptrType$29.methods = [{prop: "Unix", name: "Unix", pkg: "", typ: $funcType([], [$Int64, $Int64], false)}, {prop: "Nano", name: "Nano", pkg: "", typ: $funcType([], [$Int64], false)}];
 16655  	ptrType$19.methods = [{prop: "SetLen", name: "SetLen", pkg: "", typ: $funcType([$Int], [], false)}];
 16656  	ptrType$31.methods = [{prop: "SetControllen", name: "SetControllen", pkg: "", typ: $funcType([$Int], [], false)}];
 16657  	RawConn.init([{prop: "Control", name: "Control", pkg: "", typ: $funcType([funcType], [$error], false)}, {prop: "Read", name: "Read", pkg: "", typ: $funcType([funcType$1], [$error], false)}, {prop: "Write", name: "Write", pkg: "", typ: $funcType([funcType$1], [$error], false)}]);
 16658  	NetlinkRouteRequest.init("", [{prop: "Header", name: "Header", anonymous: false, exported: true, typ: NlMsghdr, tag: ""}, {prop: "Data", name: "Data", anonymous: false, exported: true, typ: RtGenmsg, tag: ""}]);
 16659  	NetlinkMessage.init("", [{prop: "Header", name: "Header", anonymous: false, exported: true, typ: NlMsghdr, tag: ""}, {prop: "Data", name: "Data", anonymous: false, exported: true, typ: sliceType, tag: ""}]);
 16660  	NetlinkRouteAttr.init("", [{prop: "Attr", name: "Attr", anonymous: false, exported: true, typ: RtAttr, tag: ""}, {prop: "Value", name: "Value", anonymous: false, exported: true, typ: sliceType, tag: ""}]);
 16661  	SockaddrLinklayer.init("syscall", [{prop: "Protocol", name: "Protocol", anonymous: false, exported: true, typ: $Uint16, tag: ""}, {prop: "Ifindex", name: "Ifindex", anonymous: false, exported: true, typ: $Int, tag: ""}, {prop: "Hatype", name: "Hatype", anonymous: false, exported: true, typ: $Uint16, tag: ""}, {prop: "Pkttype", name: "Pkttype", anonymous: false, exported: true, typ: $Uint8, tag: ""}, {prop: "Halen", name: "Halen", anonymous: false, exported: true, typ: $Uint8, tag: ""}, {prop: "Addr", name: "Addr", anonymous: false, exported: true, typ: arrayType$1, tag: ""}, {prop: "raw", name: "raw", anonymous: false, exported: false, typ: RawSockaddrLinklayer, tag: ""}]);
 16662  	SockaddrNetlink.init("syscall", [{prop: "Family", name: "Family", anonymous: false, exported: true, typ: $Uint16, tag: ""}, {prop: "Pad", name: "Pad", anonymous: false, exported: true, typ: $Uint16, tag: ""}, {prop: "Pid", name: "Pid", anonymous: false, exported: true, typ: $Uint32, tag: ""}, {prop: "Groups", name: "Groups", anonymous: false, exported: true, typ: $Uint32, tag: ""}, {prop: "raw", name: "raw", anonymous: false, exported: false, typ: RawSockaddrNetlink, tag: ""}]);
 16663  	mmapper.init("syscall", [{prop: "Mutex", name: "Mutex", anonymous: true, exported: true, typ: sync.Mutex, tag: ""}, {prop: "active", name: "active", anonymous: false, exported: false, typ: mapType, tag: ""}, {prop: "mmap", name: "mmap", anonymous: false, exported: false, typ: funcType$2, tag: ""}, {prop: "munmap", name: "munmap", anonymous: false, exported: false, typ: funcType$3, tag: ""}]);
 16664  	Sockaddr.init([{prop: "sockaddr", name: "sockaddr", pkg: "syscall", typ: $funcType([], [$UnsafePointer, _Socklen, $error], false)}]);
 16665  	SockaddrInet4.init("syscall", [{prop: "Port", name: "Port", anonymous: false, exported: true, typ: $Int, tag: ""}, {prop: "Addr", name: "Addr", anonymous: false, exported: true, typ: arrayType$8, tag: ""}, {prop: "raw", name: "raw", anonymous: false, exported: false, typ: RawSockaddrInet4, tag: ""}]);
 16666  	SockaddrInet6.init("syscall", [{prop: "Port", name: "Port", anonymous: false, exported: true, typ: $Int, tag: ""}, {prop: "ZoneId", name: "ZoneId", anonymous: false, exported: true, typ: $Uint32, tag: ""}, {prop: "Addr", name: "Addr", anonymous: false, exported: true, typ: arrayType$2, tag: ""}, {prop: "raw", name: "raw", anonymous: false, exported: false, typ: RawSockaddrInet6, tag: ""}]);
 16667  	SockaddrUnix.init("syscall", [{prop: "Name", name: "Name", anonymous: false, exported: true, typ: $String, tag: ""}, {prop: "raw", name: "raw", anonymous: false, exported: false, typ: RawSockaddrUnix, tag: ""}]);
 16668  	Timespec.init("", [{prop: "Sec", name: "Sec", anonymous: false, exported: true, typ: $Int64, tag: ""}, {prop: "Nsec", name: "Nsec", anonymous: false, exported: true, typ: $Int64, tag: ""}]);
 16669  	Stat_t.init("", [{prop: "Dev", name: "Dev", anonymous: false, exported: true, typ: $Uint64, tag: ""}, {prop: "Ino", name: "Ino", anonymous: false, exported: true, typ: $Uint64, tag: ""}, {prop: "Nlink", name: "Nlink", anonymous: false, exported: true, typ: $Uint64, tag: ""}, {prop: "Mode", name: "Mode", anonymous: false, exported: true, typ: $Uint32, tag: ""}, {prop: "Uid", name: "Uid", anonymous: false, exported: true, typ: $Uint32, tag: ""}, {prop: "Gid", name: "Gid", anonymous: false, exported: true, typ: $Uint32, tag: ""}, {prop: "X__pad0", name: "X__pad0", anonymous: false, exported: true, typ: $Int32, tag: ""}, {prop: "Rdev", name: "Rdev", anonymous: false, exported: true, typ: $Uint64, tag: ""}, {prop: "Size", name: "Size", anonymous: false, exported: true, typ: $Int64, tag: ""}, {prop: "Blksize", name: "Blksize", anonymous: false, exported: true, typ: $Int64, tag: ""}, {prop: "Blocks", name: "Blocks", anonymous: false, exported: true, typ: $Int64, tag: ""}, {prop: "Atim", name: "Atim", anonymous: false, exported: true, typ: Timespec, tag: ""}, {prop: "Mtim", name: "Mtim", anonymous: false, exported: true, typ: Timespec, tag: ""}, {prop: "Ctim", name: "Ctim", anonymous: false, exported: true, typ: Timespec, tag: ""}, {prop: "X__unused", name: "X__unused", anonymous: false, exported: true, typ: arrayType$15, tag: ""}]);
 16670  	RawSockaddrInet4.init("", [{prop: "Family", name: "Family", anonymous: false, exported: true, typ: $Uint16, tag: ""}, {prop: "Port", name: "Port", anonymous: false, exported: true, typ: $Uint16, tag: ""}, {prop: "Addr", name: "Addr", anonymous: false, exported: true, typ: arrayType$8, tag: ""}, {prop: "Zero", name: "Zero", anonymous: false, exported: true, typ: arrayType$1, tag: ""}]);
 16671  	RawSockaddrInet6.init("", [{prop: "Family", name: "Family", anonymous: false, exported: true, typ: $Uint16, tag: ""}, {prop: "Port", name: "Port", anonymous: false, exported: true, typ: $Uint16, tag: ""}, {prop: "Flowinfo", name: "Flowinfo", anonymous: false, exported: true, typ: $Uint32, tag: ""}, {prop: "Addr", name: "Addr", anonymous: false, exported: true, typ: arrayType$2, tag: ""}, {prop: "Scope_id", name: "Scope_id", anonymous: false, exported: true, typ: $Uint32, tag: ""}]);
 16672  	RawSockaddrUnix.init("", [{prop: "Family", name: "Family", anonymous: false, exported: true, typ: $Uint16, tag: ""}, {prop: "Path", name: "Path", anonymous: false, exported: true, typ: arrayType$7, tag: ""}]);
 16673  	RawSockaddrLinklayer.init("", [{prop: "Family", name: "Family", anonymous: false, exported: true, typ: $Uint16, tag: ""}, {prop: "Protocol", name: "Protocol", anonymous: false, exported: true, typ: $Uint16, tag: ""}, {prop: "Ifindex", name: "Ifindex", anonymous: false, exported: true, typ: $Int32, tag: ""}, {prop: "Hatype", name: "Hatype", anonymous: false, exported: true, typ: $Uint16, tag: ""}, {prop: "Pkttype", name: "Pkttype", anonymous: false, exported: true, typ: $Uint8, tag: ""}, {prop: "Halen", name: "Halen", anonymous: false, exported: true, typ: $Uint8, tag: ""}, {prop: "Addr", name: "Addr", anonymous: false, exported: true, typ: arrayType$1, tag: ""}]);
 16674  	RawSockaddrNetlink.init("", [{prop: "Family", name: "Family", anonymous: false, exported: true, typ: $Uint16, tag: ""}, {prop: "Pad", name: "Pad", anonymous: false, exported: true, typ: $Uint16, tag: ""}, {prop: "Pid", name: "Pid", anonymous: false, exported: true, typ: $Uint32, tag: ""}, {prop: "Groups", name: "Groups", anonymous: false, exported: true, typ: $Uint32, tag: ""}]);
 16675  	RawSockaddr.init("", [{prop: "Family", name: "Family", anonymous: false, exported: true, typ: $Uint16, tag: ""}, {prop: "Data", name: "Data", anonymous: false, exported: true, typ: arrayType$9, tag: ""}]);
 16676  	RawSockaddrAny.init("", [{prop: "Addr", name: "Addr", anonymous: false, exported: true, typ: RawSockaddr, tag: ""}, {prop: "Pad", name: "Pad", anonymous: false, exported: true, typ: arrayType$10, tag: ""}]);
 16677  	Linger.init("", [{prop: "Onoff", name: "Onoff", anonymous: false, exported: true, typ: $Int32, tag: ""}, {prop: "Linger", name: "Linger", anonymous: false, exported: true, typ: $Int32, tag: ""}]);
 16678  	Iovec.init("", [{prop: "Base", name: "Base", anonymous: false, exported: true, typ: ptrType$2, tag: ""}, {prop: "Len", name: "Len", anonymous: false, exported: true, typ: $Uint64, tag: ""}]);
 16679  	IPMreq.init("", [{prop: "Multiaddr", name: "Multiaddr", anonymous: false, exported: true, typ: arrayType$8, tag: ""}, {prop: "Interface", name: "Interface", anonymous: false, exported: true, typ: arrayType$8, tag: ""}]);
 16680  	IPMreqn.init("", [{prop: "Multiaddr", name: "Multiaddr", anonymous: false, exported: true, typ: arrayType$8, tag: ""}, {prop: "Address", name: "Address", anonymous: false, exported: true, typ: arrayType$8, tag: ""}, {prop: "Ifindex", name: "Ifindex", anonymous: false, exported: true, typ: $Int32, tag: ""}]);
 16681  	IPv6Mreq.init("", [{prop: "Multiaddr", name: "Multiaddr", anonymous: false, exported: true, typ: arrayType$2, tag: ""}, {prop: "Interface", name: "Interface", anonymous: false, exported: true, typ: $Uint32, tag: ""}]);
 16682  	Msghdr.init("", [{prop: "Name", name: "Name", anonymous: false, exported: true, typ: ptrType$2, tag: ""}, {prop: "Namelen", name: "Namelen", anonymous: false, exported: true, typ: $Uint32, tag: ""}, {prop: "Pad_cgo_0", name: "Pad_cgo_0", anonymous: false, exported: true, typ: arrayType$8, tag: ""}, {prop: "Iov", name: "Iov", anonymous: false, exported: true, typ: ptrType$19, tag: ""}, {prop: "Iovlen", name: "Iovlen", anonymous: false, exported: true, typ: $Uint64, tag: ""}, {prop: "Control", name: "Control", anonymous: false, exported: true, typ: ptrType$2, tag: ""}, {prop: "Controllen", name: "Controllen", anonymous: false, exported: true, typ: $Uint64, tag: ""}, {prop: "Flags", name: "Flags", anonymous: false, exported: true, typ: $Int32, tag: ""}, {prop: "Pad_cgo_1", name: "Pad_cgo_1", anonymous: false, exported: true, typ: arrayType$8, tag: ""}]);
 16683  	NlMsghdr.init("", [{prop: "Len", name: "Len", anonymous: false, exported: true, typ: $Uint32, tag: ""}, {prop: "Type", name: "Type", anonymous: false, exported: true, typ: $Uint16, tag: ""}, {prop: "Flags", name: "Flags", anonymous: false, exported: true, typ: $Uint16, tag: ""}, {prop: "Seq", name: "Seq", anonymous: false, exported: true, typ: $Uint32, tag: ""}, {prop: "Pid", name: "Pid", anonymous: false, exported: true, typ: $Uint32, tag: ""}]);
 16684  	RtGenmsg.init("", [{prop: "Family", name: "Family", anonymous: false, exported: true, typ: $Uint8, tag: ""}]);
 16685  	RtAttr.init("", [{prop: "Len", name: "Len", anonymous: false, exported: true, typ: $Uint16, tag: ""}, {prop: "Type", name: "Type", anonymous: false, exported: true, typ: $Uint16, tag: ""}]);
 16686  	IfInfomsg.init("", [{prop: "Family", name: "Family", anonymous: false, exported: true, typ: $Uint8, tag: ""}, {prop: "X__ifi_pad", name: "X__ifi_pad", anonymous: false, exported: true, typ: $Uint8, tag: ""}, {prop: "Type", name: "Type", anonymous: false, exported: true, typ: $Uint16, tag: ""}, {prop: "Index", name: "Index", anonymous: false, exported: true, typ: $Int32, tag: ""}, {prop: "Flags", name: "Flags", anonymous: false, exported: true, typ: $Uint32, tag: ""}, {prop: "Change", name: "Change", anonymous: false, exported: true, typ: $Uint32, tag: ""}]);
 16687  	IfAddrmsg.init("", [{prop: "Family", name: "Family", anonymous: false, exported: true, typ: $Uint8, tag: ""}, {prop: "Prefixlen", name: "Prefixlen", anonymous: false, exported: true, typ: $Uint8, tag: ""}, {prop: "Flags", name: "Flags", anonymous: false, exported: true, typ: $Uint8, tag: ""}, {prop: "Scope", name: "Scope", anonymous: false, exported: true, typ: $Uint8, tag: ""}, {prop: "Index", name: "Index", anonymous: false, exported: true, typ: $Uint32, tag: ""}]);
 16688  	$init = function() {
 16689  		$pkg.$init = function() {};
 16690  		/* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 16691  		$r = js.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 16692  		$r = race.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 16693  		$r = runtime.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 16694  		$r = sync.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 16695  		lineBuffer = sliceType.nil;
 16696  		syscallModule = null;
 16697  		envOnce = new sync.Once.ptr(new sync.Mutex.ptr(0, 0), 0);
 16698  		envLock = new sync.RWMutex.ptr(new sync.Mutex.ptr(0, 0), 0, 0, 0, 0);
 16699  		env = false;
 16700  		$pkg.ForkLock = new sync.RWMutex.ptr(new sync.Mutex.ptr(0, 0), 0, 0, 0, 0);
 16701  		$pkg.SocketDisableIPv6 = false;
 16702  		ioSync = new $Int64(0, 0);
 16703  		warningPrinted = false;
 16704  		alreadyTriedToLoad = false;
 16705  		minusOne = -1;
 16706  		envs = runtime_envs();
 16707  		$pkg.Stdin = 0;
 16708  		$pkg.Stdout = 1;
 16709  		$pkg.Stderr = 2;
 16710  		errEAGAIN = new Errno(11);
 16711  		errEINVAL = new Errno(22);
 16712  		errENOENT = new Errno(2);
 16713  		errors = $toNativeArray($kindString, ["", "operation not permitted", "no such file or directory", "no such process", "interrupted system call", "input/output error", "no such device or address", "argument list too long", "exec format error", "bad file descriptor", "no child processes", "resource temporarily unavailable", "cannot allocate memory", "permission denied", "bad address", "block device required", "device or resource busy", "file exists", "invalid cross-device link", "no such device", "not a directory", "is a directory", "invalid argument", "too many open files in system", "too many open files", "inappropriate ioctl for device", "text file busy", "file too large", "no space left on device", "illegal seek", "read-only file system", "too many links", "broken pipe", "numerical argument out of domain", "numerical result out of range", "resource deadlock avoided", "file name too long", "no locks available", "function not implemented", "directory not empty", "too many levels of symbolic links", "", "no message of desired type", "identifier removed", "channel number out of range", "level 2 not synchronized", "level 3 halted", "level 3 reset", "link number out of range", "protocol driver not attached", "no CSI structure available", "level 2 halted", "invalid exchange", "invalid request descriptor", "exchange full", "no anode", "invalid request code", "invalid slot", "", "bad font file format", "device not a stream", "no data available", "timer expired", "out of streams resources", "machine is not on the network", "package not installed", "object is remote", "link has been severed", "advertise error", "srmount error", "communication error on send", "protocol error", "multihop attempted", "RFS specific error", "bad message", "value too large for defined data type", "name not unique on network", "file descriptor in bad state", "remote address changed", "can not access a needed shared library", "accessing a corrupted shared library", ".lib section in a.out corrupted", "attempting to link in too many shared libraries", "cannot exec a shared library directly", "invalid or incomplete multibyte or wide character", "interrupted system call should be restarted", "streams pipe error", "too many users", "socket operation on non-socket", "destination address required", "message too long", "protocol wrong type for socket", "protocol not available", "protocol not supported", "socket type not supported", "operation not supported", "protocol family not supported", "address family not supported by protocol", "address already in use", "cannot assign requested address", "network is down", "network is unreachable", "network dropped connection on reset", "software caused connection abort", "connection reset by peer", "no buffer space available", "transport endpoint is already connected", "transport endpoint is not connected", "cannot send after transport endpoint shutdown", "too many references: cannot splice", "connection timed out", "connection refused", "host is down", "no route to host", "operation already in progress", "operation now in progress", "stale NFS file handle", "structure needs cleaning", "not a XENIX named type file", "no XENIX semaphores available", "is a named type file", "remote I/O error", "disk quota exceeded", "no medium found", "wrong medium type", "operation canceled", "required key not available", "key has expired", "key has been revoked", "key was rejected by service", "owner died", "state not recoverable", "operation not possible due to RF-kill"]);
 16714  		mapper = new mmapper.ptr(new sync.Mutex.ptr(0, 0), {}, mmap, munmap);
 16715  		init();
 16716  		/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
 16717  	};
 16718  	$pkg.$init = $init;
 16719  	return $pkg;
 16720  })();
 16721  $packages["github.com/gopherjs/gopherjs/nosync"] = (function() {
 16722  	var $pkg = {}, $init, Mutex, Once, Pool, ptrType$1, funcType$1, ptrType$4, sliceType, ptrType$5, funcType$2;
 16723  	Mutex = $pkg.Mutex = $newType(0, $kindStruct, "nosync.Mutex", true, "github.com/gopherjs/gopherjs/nosync", true, function(locked_) {
 16724  		this.$val = this;
 16725  		if (arguments.length === 0) {
 16726  			this.locked = false;
 16727  			return;
 16728  		}
 16729  		this.locked = locked_;
 16730  	});
 16731  	Once = $pkg.Once = $newType(0, $kindStruct, "nosync.Once", true, "github.com/gopherjs/gopherjs/nosync", true, function(doing_, done_) {
 16732  		this.$val = this;
 16733  		if (arguments.length === 0) {
 16734  			this.doing = false;
 16735  			this.done = false;
 16736  			return;
 16737  		}
 16738  		this.doing = doing_;
 16739  		this.done = done_;
 16740  	});
 16741  	Pool = $pkg.Pool = $newType(0, $kindStruct, "nosync.Pool", true, "github.com/gopherjs/gopherjs/nosync", true, function(store_, New_) {
 16742  		this.$val = this;
 16743  		if (arguments.length === 0) {
 16744  			this.store = sliceType.nil;
 16745  			this.New = $throwNilPointerError;
 16746  			return;
 16747  		}
 16748  		this.store = store_;
 16749  		this.New = New_;
 16750  	});
 16751  	ptrType$1 = $ptrType(Mutex);
 16752  	funcType$1 = $funcType([], [], false);
 16753  	ptrType$4 = $ptrType(Once);
 16754  	sliceType = $sliceType($emptyInterface);
 16755  	ptrType$5 = $ptrType(Pool);
 16756  	funcType$2 = $funcType([], [$emptyInterface], false);
 16757  	Mutex.ptr.prototype.Lock = function() {
 16758  		var m;
 16759  		m = this;
 16760  		if (m.locked) {
 16761  			$panic(new $String("nosync: mutex is already locked"));
 16762  		}
 16763  		m.locked = true;
 16764  	};
 16765  	Mutex.prototype.Lock = function() { return this.$val.Lock(); };
 16766  	Mutex.ptr.prototype.Unlock = function() {
 16767  		var m;
 16768  		m = this;
 16769  		if (!m.locked) {
 16770  			$panic(new $String("nosync: unlock of unlocked mutex"));
 16771  		}
 16772  		m.locked = false;
 16773  	};
 16774  	Mutex.prototype.Unlock = function() { return this.$val.Unlock(); };
 16775  	Once.ptr.prototype.Do = function(f) {
 16776  		var f, o, $s, $deferred, $r;
 16777  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; f = $f.f; o = $f.o; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
 16778  		o = [o];
 16779  		o[0] = this;
 16780  		if (o[0].done) {
 16781  			$s = -1; return;
 16782  		}
 16783  		if (o[0].doing) {
 16784  			$panic(new $String("nosync: Do called within f"));
 16785  		}
 16786  		o[0].doing = true;
 16787  		$deferred.push([(function(o) { return function() {
 16788  			o[0].doing = false;
 16789  			o[0].done = true;
 16790  		}; })(o), []]);
 16791  		$r = f(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 16792  		$s = -1; return;
 16793  		/* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: Once.ptr.prototype.Do }; } $f.f = f; $f.o = o; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
 16794  	};
 16795  	Once.prototype.Do = function(f) { return this.$val.Do(f); };
 16796  	Pool.ptr.prototype.Get = function() {
 16797  		var _r, p, x, x$1, x$2, $s, $r;
 16798  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; p = $f.p; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 16799  		p = this;
 16800  		/* */ if (p.store.$length === 0) { $s = 1; continue; }
 16801  		/* */ $s = 2; continue;
 16802  		/* if (p.store.$length === 0) { */ case 1:
 16803  			/* */ if (!(p.New === $throwNilPointerError)) { $s = 3; continue; }
 16804  			/* */ $s = 4; continue;
 16805  			/* if (!(p.New === $throwNilPointerError)) { */ case 3:
 16806  				_r = p.New(); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 16807  				$s = -1; return _r;
 16808  			/* } */ case 4:
 16809  			$s = -1; return $ifaceNil;
 16810  		/* } */ case 2:
 16811  		x$2 = (x = p.store, x$1 = p.store.$length - 1 >> 0, ((x$1 < 0 || x$1 >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + x$1]));
 16812  		p.store = $subslice(p.store, 0, (p.store.$length - 1 >> 0));
 16813  		$s = -1; return x$2;
 16814  		/* */ } return; } if ($f === undefined) { $f = { $blk: Pool.ptr.prototype.Get }; } $f._r = _r; $f.p = p; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.$s = $s; $f.$r = $r; return $f;
 16815  	};
 16816  	Pool.prototype.Get = function() { return this.$val.Get(); };
 16817  	Pool.ptr.prototype.Put = function(x) {
 16818  		var p, x;
 16819  		p = this;
 16820  		if ($interfaceIsEqual(x, $ifaceNil)) {
 16821  			return;
 16822  		}
 16823  		p.store = $append(p.store, x);
 16824  	};
 16825  	Pool.prototype.Put = function(x) { return this.$val.Put(x); };
 16826  	ptrType$1.methods = [{prop: "Lock", name: "Lock", pkg: "", typ: $funcType([], [], false)}, {prop: "Unlock", name: "Unlock", pkg: "", typ: $funcType([], [], false)}];
 16827  	ptrType$4.methods = [{prop: "Do", name: "Do", pkg: "", typ: $funcType([funcType$1], [], false)}];
 16828  	ptrType$5.methods = [{prop: "Get", name: "Get", pkg: "", typ: $funcType([], [$emptyInterface], false)}, {prop: "Put", name: "Put", pkg: "", typ: $funcType([$emptyInterface], [], false)}];
 16829  	Mutex.init("github.com/gopherjs/gopherjs/nosync", [{prop: "locked", name: "locked", anonymous: false, exported: false, typ: $Bool, tag: ""}]);
 16830  	Once.init("github.com/gopherjs/gopherjs/nosync", [{prop: "doing", name: "doing", anonymous: false, exported: false, typ: $Bool, tag: ""}, {prop: "done", name: "done", anonymous: false, exported: false, typ: $Bool, tag: ""}]);
 16831  	Pool.init("github.com/gopherjs/gopherjs/nosync", [{prop: "store", name: "store", anonymous: false, exported: false, typ: sliceType, tag: ""}, {prop: "New", name: "New", anonymous: false, exported: true, typ: funcType$2, tag: ""}]);
 16832  	$init = function() {
 16833  		$pkg.$init = function() {};
 16834  		/* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 16835  		/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
 16836  	};
 16837  	$pkg.$init = $init;
 16838  	return $pkg;
 16839  })();
 16840  $packages["time"] = (function() {
 16841  	var $pkg = {}, $init, errors, js, nosync, runtime, syscall, runtimeTimer, ParseError, Timer, Ticker, Time, Month, Weekday, Duration, Location, zone, zoneTrans, sliceType, sliceType$1, ptrType, sliceType$2, structType, arrayType, sliceType$3, arrayType$1, arrayType$2, ptrType$2, chanType, funcType, arrayType$3, funcType$1, ptrType$3, ptrType$4, ptrType$5, chanType$1, ptrType$6, ptrType$7, zoneSources, std0x, longDayNames, shortDayNames, shortMonthNames, longMonthNames, atoiError, errBad, errLeadingInt, months, days, daysBefore, utcLoc, utcLoc$24ptr, localLoc, localLoc$24ptr, localOnce, errLocation, badData, init, initLocal, runtimeNano, now, Sleep, startTimer, stopTimer, indexByte, startsWithLowerCase, nextStdChunk, match, lookup, appendInt, atoi, formatNano, quote, isDigit, getnum, cutspace, skip, Parse, parse, parseTimeZone, parseGMT, parseNanoseconds, leadingInt, when, NewTimer, sendTime, After, AfterFunc, goFunc, NewTicker, absWeekday, absClock, fmtFrac, fmtInt, lessThanHalf, Since, Until, absDate, daysIn, Now, unixTime, Unix, isLeap, norm, Date, div, FixedZone;
 16842  	errors = $packages["errors"];
 16843  	js = $packages["github.com/gopherjs/gopherjs/js"];
 16844  	nosync = $packages["github.com/gopherjs/gopherjs/nosync"];
 16845  	runtime = $packages["runtime"];
 16846  	syscall = $packages["syscall"];
 16847  	runtimeTimer = $pkg.runtimeTimer = $newType(0, $kindStruct, "time.runtimeTimer", true, "time", false, function(i_, when_, period_, f_, arg_, timeout_, active_) {
 16848  		this.$val = this;
 16849  		if (arguments.length === 0) {
 16850  			this.i = 0;
 16851  			this.when = new $Int64(0, 0);
 16852  			this.period = new $Int64(0, 0);
 16853  			this.f = $throwNilPointerError;
 16854  			this.arg = $ifaceNil;
 16855  			this.timeout = null;
 16856  			this.active = false;
 16857  			return;
 16858  		}
 16859  		this.i = i_;
 16860  		this.when = when_;
 16861  		this.period = period_;
 16862  		this.f = f_;
 16863  		this.arg = arg_;
 16864  		this.timeout = timeout_;
 16865  		this.active = active_;
 16866  	});
 16867  	ParseError = $pkg.ParseError = $newType(0, $kindStruct, "time.ParseError", true, "time", true, function(Layout_, Value_, LayoutElem_, ValueElem_, Message_) {
 16868  		this.$val = this;
 16869  		if (arguments.length === 0) {
 16870  			this.Layout = "";
 16871  			this.Value = "";
 16872  			this.LayoutElem = "";
 16873  			this.ValueElem = "";
 16874  			this.Message = "";
 16875  			return;
 16876  		}
 16877  		this.Layout = Layout_;
 16878  		this.Value = Value_;
 16879  		this.LayoutElem = LayoutElem_;
 16880  		this.ValueElem = ValueElem_;
 16881  		this.Message = Message_;
 16882  	});
 16883  	Timer = $pkg.Timer = $newType(0, $kindStruct, "time.Timer", true, "time", true, function(C_, r_) {
 16884  		this.$val = this;
 16885  		if (arguments.length === 0) {
 16886  			this.C = $chanNil;
 16887  			this.r = new runtimeTimer.ptr(0, new $Int64(0, 0), new $Int64(0, 0), $throwNilPointerError, $ifaceNil, null, false);
 16888  			return;
 16889  		}
 16890  		this.C = C_;
 16891  		this.r = r_;
 16892  	});
 16893  	Ticker = $pkg.Ticker = $newType(0, $kindStruct, "time.Ticker", true, "time", true, function(C_, r_) {
 16894  		this.$val = this;
 16895  		if (arguments.length === 0) {
 16896  			this.C = $chanNil;
 16897  			this.r = new runtimeTimer.ptr(0, new $Int64(0, 0), new $Int64(0, 0), $throwNilPointerError, $ifaceNil, null, false);
 16898  			return;
 16899  		}
 16900  		this.C = C_;
 16901  		this.r = r_;
 16902  	});
 16903  	Time = $pkg.Time = $newType(0, $kindStruct, "time.Time", true, "time", true, function(wall_, ext_, loc_) {
 16904  		this.$val = this;
 16905  		if (arguments.length === 0) {
 16906  			this.wall = new $Uint64(0, 0);
 16907  			this.ext = new $Int64(0, 0);
 16908  			this.loc = ptrType$2.nil;
 16909  			return;
 16910  		}
 16911  		this.wall = wall_;
 16912  		this.ext = ext_;
 16913  		this.loc = loc_;
 16914  	});
 16915  	Month = $pkg.Month = $newType(4, $kindInt, "time.Month", true, "time", true, null);
 16916  	Weekday = $pkg.Weekday = $newType(4, $kindInt, "time.Weekday", true, "time", true, null);
 16917  	Duration = $pkg.Duration = $newType(8, $kindInt64, "time.Duration", true, "time", true, null);
 16918  	Location = $pkg.Location = $newType(0, $kindStruct, "time.Location", true, "time", true, function(name_, zone_, tx_, cacheStart_, cacheEnd_, cacheZone_) {
 16919  		this.$val = this;
 16920  		if (arguments.length === 0) {
 16921  			this.name = "";
 16922  			this.zone = sliceType.nil;
 16923  			this.tx = sliceType$1.nil;
 16924  			this.cacheStart = new $Int64(0, 0);
 16925  			this.cacheEnd = new $Int64(0, 0);
 16926  			this.cacheZone = ptrType.nil;
 16927  			return;
 16928  		}
 16929  		this.name = name_;
 16930  		this.zone = zone_;
 16931  		this.tx = tx_;
 16932  		this.cacheStart = cacheStart_;
 16933  		this.cacheEnd = cacheEnd_;
 16934  		this.cacheZone = cacheZone_;
 16935  	});
 16936  	zone = $pkg.zone = $newType(0, $kindStruct, "time.zone", true, "time", false, function(name_, offset_, isDST_) {
 16937  		this.$val = this;
 16938  		if (arguments.length === 0) {
 16939  			this.name = "";
 16940  			this.offset = 0;
 16941  			this.isDST = false;
 16942  			return;
 16943  		}
 16944  		this.name = name_;
 16945  		this.offset = offset_;
 16946  		this.isDST = isDST_;
 16947  	});
 16948  	zoneTrans = $pkg.zoneTrans = $newType(0, $kindStruct, "time.zoneTrans", true, "time", false, function(when_, index_, isstd_, isutc_) {
 16949  		this.$val = this;
 16950  		if (arguments.length === 0) {
 16951  			this.when = new $Int64(0, 0);
 16952  			this.index = 0;
 16953  			this.isstd = false;
 16954  			this.isutc = false;
 16955  			return;
 16956  		}
 16957  		this.when = when_;
 16958  		this.index = index_;
 16959  		this.isstd = isstd_;
 16960  		this.isutc = isutc_;
 16961  	});
 16962  	sliceType = $sliceType(zone);
 16963  	sliceType$1 = $sliceType(zoneTrans);
 16964  	ptrType = $ptrType(zone);
 16965  	sliceType$2 = $sliceType($String);
 16966  	structType = $structType("", []);
 16967  	arrayType = $arrayType($Uint8, 20);
 16968  	sliceType$3 = $sliceType($Uint8);
 16969  	arrayType$1 = $arrayType($Uint8, 9);
 16970  	arrayType$2 = $arrayType($Uint8, 64);
 16971  	ptrType$2 = $ptrType(Location);
 16972  	chanType = $chanType(Time, false, false);
 16973  	funcType = $funcType([], [], false);
 16974  	arrayType$3 = $arrayType($Uint8, 32);
 16975  	funcType$1 = $funcType([$emptyInterface, $Uintptr], [], false);
 16976  	ptrType$3 = $ptrType(js.Object);
 16977  	ptrType$4 = $ptrType(ParseError);
 16978  	ptrType$5 = $ptrType(Timer);
 16979  	chanType$1 = $chanType(Time, false, true);
 16980  	ptrType$6 = $ptrType(Ticker);
 16981  	ptrType$7 = $ptrType(Time);
 16982  	init = function() {
 16983  		$unused(Unix(new $Int64(0, 0), new $Int64(0, 0)));
 16984  	};
 16985  	initLocal = function() {
 16986  		var d, i, j, s;
 16987  		d = new ($global.Date)();
 16988  		s = $internalize(d, $String);
 16989  		i = indexByte(s, 40);
 16990  		j = indexByte(s, 41);
 16991  		if ((i === -1) || (j === -1)) {
 16992  			localLoc.name = "UTC";
 16993  			return;
 16994  		}
 16995  		localLoc.name = $substring(s, (i + 1 >> 0), j);
 16996  		localLoc.zone = new sliceType([new zone.ptr(localLoc.name, $imul(($parseInt(d.getTimezoneOffset()) >> 0), -60), false)]);
 16997  	};
 16998  	runtimeNano = function() {
 16999  		return $mul64($internalize(new ($global.Date)().getTime(), $Int64), new $Int64(0, 1000000));
 17000  	};
 17001  	now = function() {
 17002  		var _tmp, _tmp$1, _tmp$2, mono, n, nsec, sec, x;
 17003  		sec = new $Int64(0, 0);
 17004  		nsec = 0;
 17005  		mono = new $Int64(0, 0);
 17006  		n = runtimeNano();
 17007  		_tmp = $div64(n, new $Int64(0, 1000000000), false);
 17008  		_tmp$1 = (((x = $div64(n, new $Int64(0, 1000000000), true), x.$low + ((x.$high >> 31) * 4294967296)) >> 0));
 17009  		_tmp$2 = n;
 17010  		sec = _tmp;
 17011  		nsec = _tmp$1;
 17012  		mono = _tmp$2;
 17013  		return [sec, nsec, mono];
 17014  	};
 17015  	Sleep = function(d) {
 17016  		var _r, c, d, x, $s, $r;
 17017  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; c = $f.c; d = $f.d; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 17018  		c = [c];
 17019  		c[0] = new $Chan(structType, 0);
 17020  		$setTimeout((function(c) { return function() {
 17021  			$close(c[0]);
 17022  		}; })(c), (((x = $div64(d, new Duration(0, 1000000), false), x.$low + ((x.$high >> 31) * 4294967296)) >> 0)));
 17023  		_r = $recv(c[0]); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 17024  		_r[0];
 17025  		$s = -1; return;
 17026  		/* */ } return; } if ($f === undefined) { $f = { $blk: Sleep }; } $f._r = _r; $f.c = c; $f.d = d; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
 17027  	};
 17028  	$pkg.Sleep = Sleep;
 17029  	startTimer = function(t) {
 17030  		var diff, t, x, x$1;
 17031  		t.active = true;
 17032  		diff = $div64(((x = t.when, x$1 = runtimeNano(), new $Int64(x.$high - x$1.$high, x.$low - x$1.$low))), new $Int64(0, 1000000), false);
 17033  		if ((diff.$high > 0 || (diff.$high === 0 && diff.$low > 2147483647))) {
 17034  			return;
 17035  		}
 17036  		if ((diff.$high < 0 || (diff.$high === 0 && diff.$low < 0))) {
 17037  			diff = new $Int64(0, 0);
 17038  		}
 17039  		t.timeout = $setTimeout((function() {
 17040  			var x$2, x$3, x$4;
 17041  			t.active = false;
 17042  			if (!((x$2 = t.period, (x$2.$high === 0 && x$2.$low === 0)))) {
 17043  				t.when = (x$3 = t.when, x$4 = t.period, new $Int64(x$3.$high + x$4.$high, x$3.$low + x$4.$low));
 17044  				startTimer(t);
 17045  			}
 17046  			$go(t.f, [t.arg, 0]);
 17047  		}), $externalize(new $Int64(diff.$high + 0, diff.$low + 1), $Int64));
 17048  	};
 17049  	stopTimer = function(t) {
 17050  		var t, wasActive;
 17051  		$global.clearTimeout(t.timeout);
 17052  		wasActive = t.active;
 17053  		t.active = false;
 17054  		return wasActive;
 17055  	};
 17056  	indexByte = function(s, c) {
 17057  		var c, s;
 17058  		return $parseInt(s.indexOf($global.String.fromCharCode(c))) >> 0;
 17059  	};
 17060  	startsWithLowerCase = function(str) {
 17061  		var c, str;
 17062  		if (str.length === 0) {
 17063  			return false;
 17064  		}
 17065  		c = str.charCodeAt(0);
 17066  		return 97 <= c && c <= 122;
 17067  	};
 17068  	nextStdChunk = function(layout) {
 17069  		var _1, _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$14, _tmp$15, _tmp$16, _tmp$17, _tmp$18, _tmp$19, _tmp$2, _tmp$20, _tmp$21, _tmp$22, _tmp$23, _tmp$24, _tmp$25, _tmp$26, _tmp$27, _tmp$28, _tmp$29, _tmp$3, _tmp$30, _tmp$31, _tmp$32, _tmp$33, _tmp$34, _tmp$35, _tmp$36, _tmp$37, _tmp$38, _tmp$39, _tmp$4, _tmp$40, _tmp$41, _tmp$42, _tmp$43, _tmp$44, _tmp$45, _tmp$46, _tmp$47, _tmp$48, _tmp$49, _tmp$5, _tmp$50, _tmp$51, _tmp$52, _tmp$53, _tmp$54, _tmp$55, _tmp$56, _tmp$57, _tmp$58, _tmp$59, _tmp$6, _tmp$60, _tmp$61, _tmp$62, _tmp$63, _tmp$64, _tmp$65, _tmp$66, _tmp$67, _tmp$68, _tmp$69, _tmp$7, _tmp$70, _tmp$71, _tmp$72, _tmp$73, _tmp$74, _tmp$75, _tmp$76, _tmp$77, _tmp$78, _tmp$79, _tmp$8, _tmp$80, _tmp$81, _tmp$82, _tmp$83, _tmp$84, _tmp$85, _tmp$86, _tmp$9, c, ch, i, j, layout, prefix, std, std$1, suffix, x;
 17070  		prefix = "";
 17071  		std = 0;
 17072  		suffix = "";
 17073  		i = 0;
 17074  		while (true) {
 17075  			if (!(i < layout.length)) { break; }
 17076  			c = ((layout.charCodeAt(i) >> 0));
 17077  			_1 = c;
 17078  			if (_1 === (74)) {
 17079  				if (layout.length >= (i + 3 >> 0) && $substring(layout, i, (i + 3 >> 0)) === "Jan") {
 17080  					if (layout.length >= (i + 7 >> 0) && $substring(layout, i, (i + 7 >> 0)) === "January") {
 17081  						_tmp = $substring(layout, 0, i);
 17082  						_tmp$1 = 257;
 17083  						_tmp$2 = $substring(layout, (i + 7 >> 0));
 17084  						prefix = _tmp;
 17085  						std = _tmp$1;
 17086  						suffix = _tmp$2;
 17087  						return [prefix, std, suffix];
 17088  					}
 17089  					if (!startsWithLowerCase($substring(layout, (i + 3 >> 0)))) {
 17090  						_tmp$3 = $substring(layout, 0, i);
 17091  						_tmp$4 = 258;
 17092  						_tmp$5 = $substring(layout, (i + 3 >> 0));
 17093  						prefix = _tmp$3;
 17094  						std = _tmp$4;
 17095  						suffix = _tmp$5;
 17096  						return [prefix, std, suffix];
 17097  					}
 17098  				}
 17099  			} else if (_1 === (77)) {
 17100  				if (layout.length >= (i + 3 >> 0)) {
 17101  					if ($substring(layout, i, (i + 3 >> 0)) === "Mon") {
 17102  						if (layout.length >= (i + 6 >> 0) && $substring(layout, i, (i + 6 >> 0)) === "Monday") {
 17103  							_tmp$6 = $substring(layout, 0, i);
 17104  							_tmp$7 = 261;
 17105  							_tmp$8 = $substring(layout, (i + 6 >> 0));
 17106  							prefix = _tmp$6;
 17107  							std = _tmp$7;
 17108  							suffix = _tmp$8;
 17109  							return [prefix, std, suffix];
 17110  						}
 17111  						if (!startsWithLowerCase($substring(layout, (i + 3 >> 0)))) {
 17112  							_tmp$9 = $substring(layout, 0, i);
 17113  							_tmp$10 = 262;
 17114  							_tmp$11 = $substring(layout, (i + 3 >> 0));
 17115  							prefix = _tmp$9;
 17116  							std = _tmp$10;
 17117  							suffix = _tmp$11;
 17118  							return [prefix, std, suffix];
 17119  						}
 17120  					}
 17121  					if ($substring(layout, i, (i + 3 >> 0)) === "MST") {
 17122  						_tmp$12 = $substring(layout, 0, i);
 17123  						_tmp$13 = 21;
 17124  						_tmp$14 = $substring(layout, (i + 3 >> 0));
 17125  						prefix = _tmp$12;
 17126  						std = _tmp$13;
 17127  						suffix = _tmp$14;
 17128  						return [prefix, std, suffix];
 17129  					}
 17130  				}
 17131  			} else if (_1 === (48)) {
 17132  				if (layout.length >= (i + 2 >> 0) && 49 <= layout.charCodeAt((i + 1 >> 0)) && layout.charCodeAt((i + 1 >> 0)) <= 54) {
 17133  					_tmp$15 = $substring(layout, 0, i);
 17134  					_tmp$16 = (x = layout.charCodeAt((i + 1 >> 0)) - 49 << 24 >>> 24, ((x < 0 || x >= std0x.length) ? ($throwRuntimeError("index out of range"), undefined) : std0x[x]));
 17135  					_tmp$17 = $substring(layout, (i + 2 >> 0));
 17136  					prefix = _tmp$15;
 17137  					std = _tmp$16;
 17138  					suffix = _tmp$17;
 17139  					return [prefix, std, suffix];
 17140  				}
 17141  			} else if (_1 === (49)) {
 17142  				if (layout.length >= (i + 2 >> 0) && (layout.charCodeAt((i + 1 >> 0)) === 53)) {
 17143  					_tmp$18 = $substring(layout, 0, i);
 17144  					_tmp$19 = 522;
 17145  					_tmp$20 = $substring(layout, (i + 2 >> 0));
 17146  					prefix = _tmp$18;
 17147  					std = _tmp$19;
 17148  					suffix = _tmp$20;
 17149  					return [prefix, std, suffix];
 17150  				}
 17151  				_tmp$21 = $substring(layout, 0, i);
 17152  				_tmp$22 = 259;
 17153  				_tmp$23 = $substring(layout, (i + 1 >> 0));
 17154  				prefix = _tmp$21;
 17155  				std = _tmp$22;
 17156  				suffix = _tmp$23;
 17157  				return [prefix, std, suffix];
 17158  			} else if (_1 === (50)) {
 17159  				if (layout.length >= (i + 4 >> 0) && $substring(layout, i, (i + 4 >> 0)) === "2006") {
 17160  					_tmp$24 = $substring(layout, 0, i);
 17161  					_tmp$25 = 273;
 17162  					_tmp$26 = $substring(layout, (i + 4 >> 0));
 17163  					prefix = _tmp$24;
 17164  					std = _tmp$25;
 17165  					suffix = _tmp$26;
 17166  					return [prefix, std, suffix];
 17167  				}
 17168  				_tmp$27 = $substring(layout, 0, i);
 17169  				_tmp$28 = 263;
 17170  				_tmp$29 = $substring(layout, (i + 1 >> 0));
 17171  				prefix = _tmp$27;
 17172  				std = _tmp$28;
 17173  				suffix = _tmp$29;
 17174  				return [prefix, std, suffix];
 17175  			} else if (_1 === (95)) {
 17176  				if (layout.length >= (i + 2 >> 0) && (layout.charCodeAt((i + 1 >> 0)) === 50)) {
 17177  					if (layout.length >= (i + 5 >> 0) && $substring(layout, (i + 1 >> 0), (i + 5 >> 0)) === "2006") {
 17178  						_tmp$30 = $substring(layout, 0, (i + 1 >> 0));
 17179  						_tmp$31 = 273;
 17180  						_tmp$32 = $substring(layout, (i + 5 >> 0));
 17181  						prefix = _tmp$30;
 17182  						std = _tmp$31;
 17183  						suffix = _tmp$32;
 17184  						return [prefix, std, suffix];
 17185  					}
 17186  					_tmp$33 = $substring(layout, 0, i);
 17187  					_tmp$34 = 264;
 17188  					_tmp$35 = $substring(layout, (i + 2 >> 0));
 17189  					prefix = _tmp$33;
 17190  					std = _tmp$34;
 17191  					suffix = _tmp$35;
 17192  					return [prefix, std, suffix];
 17193  				}
 17194  			} else if (_1 === (51)) {
 17195  				_tmp$36 = $substring(layout, 0, i);
 17196  				_tmp$37 = 523;
 17197  				_tmp$38 = $substring(layout, (i + 1 >> 0));
 17198  				prefix = _tmp$36;
 17199  				std = _tmp$37;
 17200  				suffix = _tmp$38;
 17201  				return [prefix, std, suffix];
 17202  			} else if (_1 === (52)) {
 17203  				_tmp$39 = $substring(layout, 0, i);
 17204  				_tmp$40 = 525;
 17205  				_tmp$41 = $substring(layout, (i + 1 >> 0));
 17206  				prefix = _tmp$39;
 17207  				std = _tmp$40;
 17208  				suffix = _tmp$41;
 17209  				return [prefix, std, suffix];
 17210  			} else if (_1 === (53)) {
 17211  				_tmp$42 = $substring(layout, 0, i);
 17212  				_tmp$43 = 527;
 17213  				_tmp$44 = $substring(layout, (i + 1 >> 0));
 17214  				prefix = _tmp$42;
 17215  				std = _tmp$43;
 17216  				suffix = _tmp$44;
 17217  				return [prefix, std, suffix];
 17218  			} else if (_1 === (80)) {
 17219  				if (layout.length >= (i + 2 >> 0) && (layout.charCodeAt((i + 1 >> 0)) === 77)) {
 17220  					_tmp$45 = $substring(layout, 0, i);
 17221  					_tmp$46 = 531;
 17222  					_tmp$47 = $substring(layout, (i + 2 >> 0));
 17223  					prefix = _tmp$45;
 17224  					std = _tmp$46;
 17225  					suffix = _tmp$47;
 17226  					return [prefix, std, suffix];
 17227  				}
 17228  			} else if (_1 === (112)) {
 17229  				if (layout.length >= (i + 2 >> 0) && (layout.charCodeAt((i + 1 >> 0)) === 109)) {
 17230  					_tmp$48 = $substring(layout, 0, i);
 17231  					_tmp$49 = 532;
 17232  					_tmp$50 = $substring(layout, (i + 2 >> 0));
 17233  					prefix = _tmp$48;
 17234  					std = _tmp$49;
 17235  					suffix = _tmp$50;
 17236  					return [prefix, std, suffix];
 17237  				}
 17238  			} else if (_1 === (45)) {
 17239  				if (layout.length >= (i + 7 >> 0) && $substring(layout, i, (i + 7 >> 0)) === "-070000") {
 17240  					_tmp$51 = $substring(layout, 0, i);
 17241  					_tmp$52 = 28;
 17242  					_tmp$53 = $substring(layout, (i + 7 >> 0));
 17243  					prefix = _tmp$51;
 17244  					std = _tmp$52;
 17245  					suffix = _tmp$53;
 17246  					return [prefix, std, suffix];
 17247  				}
 17248  				if (layout.length >= (i + 9 >> 0) && $substring(layout, i, (i + 9 >> 0)) === "-07:00:00") {
 17249  					_tmp$54 = $substring(layout, 0, i);
 17250  					_tmp$55 = 31;
 17251  					_tmp$56 = $substring(layout, (i + 9 >> 0));
 17252  					prefix = _tmp$54;
 17253  					std = _tmp$55;
 17254  					suffix = _tmp$56;
 17255  					return [prefix, std, suffix];
 17256  				}
 17257  				if (layout.length >= (i + 5 >> 0) && $substring(layout, i, (i + 5 >> 0)) === "-0700") {
 17258  					_tmp$57 = $substring(layout, 0, i);
 17259  					_tmp$58 = 27;
 17260  					_tmp$59 = $substring(layout, (i + 5 >> 0));
 17261  					prefix = _tmp$57;
 17262  					std = _tmp$58;
 17263  					suffix = _tmp$59;
 17264  					return [prefix, std, suffix];
 17265  				}
 17266  				if (layout.length >= (i + 6 >> 0) && $substring(layout, i, (i + 6 >> 0)) === "-07:00") {
 17267  					_tmp$60 = $substring(layout, 0, i);
 17268  					_tmp$61 = 30;
 17269  					_tmp$62 = $substring(layout, (i + 6 >> 0));
 17270  					prefix = _tmp$60;
 17271  					std = _tmp$61;
 17272  					suffix = _tmp$62;
 17273  					return [prefix, std, suffix];
 17274  				}
 17275  				if (layout.length >= (i + 3 >> 0) && $substring(layout, i, (i + 3 >> 0)) === "-07") {
 17276  					_tmp$63 = $substring(layout, 0, i);
 17277  					_tmp$64 = 29;
 17278  					_tmp$65 = $substring(layout, (i + 3 >> 0));
 17279  					prefix = _tmp$63;
 17280  					std = _tmp$64;
 17281  					suffix = _tmp$65;
 17282  					return [prefix, std, suffix];
 17283  				}
 17284  			} else if (_1 === (90)) {
 17285  				if (layout.length >= (i + 7 >> 0) && $substring(layout, i, (i + 7 >> 0)) === "Z070000") {
 17286  					_tmp$66 = $substring(layout, 0, i);
 17287  					_tmp$67 = 23;
 17288  					_tmp$68 = $substring(layout, (i + 7 >> 0));
 17289  					prefix = _tmp$66;
 17290  					std = _tmp$67;
 17291  					suffix = _tmp$68;
 17292  					return [prefix, std, suffix];
 17293  				}
 17294  				if (layout.length >= (i + 9 >> 0) && $substring(layout, i, (i + 9 >> 0)) === "Z07:00:00") {
 17295  					_tmp$69 = $substring(layout, 0, i);
 17296  					_tmp$70 = 26;
 17297  					_tmp$71 = $substring(layout, (i + 9 >> 0));
 17298  					prefix = _tmp$69;
 17299  					std = _tmp$70;
 17300  					suffix = _tmp$71;
 17301  					return [prefix, std, suffix];
 17302  				}
 17303  				if (layout.length >= (i + 5 >> 0) && $substring(layout, i, (i + 5 >> 0)) === "Z0700") {
 17304  					_tmp$72 = $substring(layout, 0, i);
 17305  					_tmp$73 = 22;
 17306  					_tmp$74 = $substring(layout, (i + 5 >> 0));
 17307  					prefix = _tmp$72;
 17308  					std = _tmp$73;
 17309  					suffix = _tmp$74;
 17310  					return [prefix, std, suffix];
 17311  				}
 17312  				if (layout.length >= (i + 6 >> 0) && $substring(layout, i, (i + 6 >> 0)) === "Z07:00") {
 17313  					_tmp$75 = $substring(layout, 0, i);
 17314  					_tmp$76 = 25;
 17315  					_tmp$77 = $substring(layout, (i + 6 >> 0));
 17316  					prefix = _tmp$75;
 17317  					std = _tmp$76;
 17318  					suffix = _tmp$77;
 17319  					return [prefix, std, suffix];
 17320  				}
 17321  				if (layout.length >= (i + 3 >> 0) && $substring(layout, i, (i + 3 >> 0)) === "Z07") {
 17322  					_tmp$78 = $substring(layout, 0, i);
 17323  					_tmp$79 = 24;
 17324  					_tmp$80 = $substring(layout, (i + 3 >> 0));
 17325  					prefix = _tmp$78;
 17326  					std = _tmp$79;
 17327  					suffix = _tmp$80;
 17328  					return [prefix, std, suffix];
 17329  				}
 17330  			} else if (_1 === (46)) {
 17331  				if ((i + 1 >> 0) < layout.length && ((layout.charCodeAt((i + 1 >> 0)) === 48) || (layout.charCodeAt((i + 1 >> 0)) === 57))) {
 17332  					ch = layout.charCodeAt((i + 1 >> 0));
 17333  					j = i + 1 >> 0;
 17334  					while (true) {
 17335  						if (!(j < layout.length && (layout.charCodeAt(j) === ch))) { break; }
 17336  						j = j + (1) >> 0;
 17337  					}
 17338  					if (!isDigit(layout, j)) {
 17339  						std$1 = 32;
 17340  						if (layout.charCodeAt((i + 1 >> 0)) === 57) {
 17341  							std$1 = 33;
 17342  						}
 17343  						std$1 = std$1 | ((((j - ((i + 1 >> 0)) >> 0)) << 16 >> 0));
 17344  						_tmp$81 = $substring(layout, 0, i);
 17345  						_tmp$82 = std$1;
 17346  						_tmp$83 = $substring(layout, j);
 17347  						prefix = _tmp$81;
 17348  						std = _tmp$82;
 17349  						suffix = _tmp$83;
 17350  						return [prefix, std, suffix];
 17351  					}
 17352  				}
 17353  			}
 17354  			i = i + (1) >> 0;
 17355  		}
 17356  		_tmp$84 = layout;
 17357  		_tmp$85 = 0;
 17358  		_tmp$86 = "";
 17359  		prefix = _tmp$84;
 17360  		std = _tmp$85;
 17361  		suffix = _tmp$86;
 17362  		return [prefix, std, suffix];
 17363  	};
 17364  	match = function(s1, s2) {
 17365  		var c1, c2, i, s1, s2;
 17366  		i = 0;
 17367  		while (true) {
 17368  			if (!(i < s1.length)) { break; }
 17369  			c1 = s1.charCodeAt(i);
 17370  			c2 = s2.charCodeAt(i);
 17371  			if (!((c1 === c2))) {
 17372  				c1 = (c1 | (32)) >>> 0;
 17373  				c2 = (c2 | (32)) >>> 0;
 17374  				if (!((c1 === c2)) || c1 < 97 || c1 > 122) {
 17375  					return false;
 17376  				}
 17377  			}
 17378  			i = i + (1) >> 0;
 17379  		}
 17380  		return true;
 17381  	};
 17382  	lookup = function(tab, val) {
 17383  		var _i, _ref, i, tab, v, val;
 17384  		_ref = tab;
 17385  		_i = 0;
 17386  		while (true) {
 17387  			if (!(_i < _ref.$length)) { break; }
 17388  			i = _i;
 17389  			v = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
 17390  			if (val.length >= v.length && match($substring(val, 0, v.length), v)) {
 17391  				return [i, $substring(val, v.length), $ifaceNil];
 17392  			}
 17393  			_i++;
 17394  		}
 17395  		return [-1, val, errBad];
 17396  	};
 17397  	appendInt = function(b, x, width) {
 17398  		var _q, b, buf, i, q, u, w, width, x;
 17399  		u = ((x >>> 0));
 17400  		if (x < 0) {
 17401  			b = $append(b, 45);
 17402  			u = ((-x >>> 0));
 17403  		}
 17404  		buf = arrayType.zero();
 17405  		i = 20;
 17406  		while (true) {
 17407  			if (!(u >= 10)) { break; }
 17408  			i = i - (1) >> 0;
 17409  			q = (_q = u / 10, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >>> 0 : $throwRuntimeError("integer divide by zero"));
 17410  			((i < 0 || i >= buf.length) ? ($throwRuntimeError("index out of range"), undefined) : buf[i] = ((((48 + u >>> 0) - (q * 10 >>> 0) >>> 0) << 24 >>> 24)));
 17411  			u = q;
 17412  		}
 17413  		i = i - (1) >> 0;
 17414  		((i < 0 || i >= buf.length) ? ($throwRuntimeError("index out of range"), undefined) : buf[i] = (((48 + u >>> 0) << 24 >>> 24)));
 17415  		w = 20 - i >> 0;
 17416  		while (true) {
 17417  			if (!(w < width)) { break; }
 17418  			b = $append(b, 48);
 17419  			w = w + (1) >> 0;
 17420  		}
 17421  		return $appendSlice(b, $subslice(new sliceType$3(buf), i));
 17422  	};
 17423  	atoi = function(s) {
 17424  		var _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, err, neg, q, rem, s, x;
 17425  		x = 0;
 17426  		err = $ifaceNil;
 17427  		neg = false;
 17428  		if (!(s === "") && ((s.charCodeAt(0) === 45) || (s.charCodeAt(0) === 43))) {
 17429  			neg = s.charCodeAt(0) === 45;
 17430  			s = $substring(s, 1);
 17431  		}
 17432  		_tuple = leadingInt(s);
 17433  		q = _tuple[0];
 17434  		rem = _tuple[1];
 17435  		err = _tuple[2];
 17436  		x = (((q.$low + ((q.$high >> 31) * 4294967296)) >> 0));
 17437  		if (!($interfaceIsEqual(err, $ifaceNil)) || !(rem === "")) {
 17438  			_tmp = 0;
 17439  			_tmp$1 = atoiError;
 17440  			x = _tmp;
 17441  			err = _tmp$1;
 17442  			return [x, err];
 17443  		}
 17444  		if (neg) {
 17445  			x = -x;
 17446  		}
 17447  		_tmp$2 = x;
 17448  		_tmp$3 = $ifaceNil;
 17449  		x = _tmp$2;
 17450  		err = _tmp$3;
 17451  		return [x, err];
 17452  	};
 17453  	formatNano = function(b, nanosec, n, trim) {
 17454  		var _q, _r, b, buf, n, nanosec, start, trim, u, x;
 17455  		u = nanosec;
 17456  		buf = arrayType$1.zero();
 17457  		start = 9;
 17458  		while (true) {
 17459  			if (!(start > 0)) { break; }
 17460  			start = start - (1) >> 0;
 17461  			((start < 0 || start >= buf.length) ? ($throwRuntimeError("index out of range"), undefined) : buf[start] = ((((_r = u % 10, _r === _r ? _r : $throwRuntimeError("integer divide by zero")) + 48 >>> 0) << 24 >>> 24)));
 17462  			u = (_q = u / (10), (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >>> 0 : $throwRuntimeError("integer divide by zero"));
 17463  		}
 17464  		if (n > 9) {
 17465  			n = 9;
 17466  		}
 17467  		if (trim) {
 17468  			while (true) {
 17469  				if (!(n > 0 && ((x = n - 1 >> 0, ((x < 0 || x >= buf.length) ? ($throwRuntimeError("index out of range"), undefined) : buf[x])) === 48))) { break; }
 17470  				n = n - (1) >> 0;
 17471  			}
 17472  			if (n === 0) {
 17473  				return b;
 17474  			}
 17475  		}
 17476  		b = $append(b, 46);
 17477  		return $appendSlice(b, $subslice(new sliceType$3(buf), 0, n));
 17478  	};
 17479  	Time.ptr.prototype.String = function() {
 17480  		var _r, _tmp, _tmp$1, _tmp$2, _tmp$3, buf, m0, m1, m2, s, sign, t, wid, x, x$1, x$2, x$3, $s, $r;
 17481  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; buf = $f.buf; m0 = $f.m0; m1 = $f.m1; m2 = $f.m2; s = $f.s; sign = $f.sign; t = $f.t; wid = $f.wid; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; x$3 = $f.x$3; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 17482  		t = this;
 17483  		_r = $clone(t, Time).Format("2006-01-02 15:04:05.999999999 -0700 MST"); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 17484  		s = _r;
 17485  		if (!((x = (x$1 = t.wall, new $Uint64(x$1.$high & 2147483648, (x$1.$low & 0) >>> 0)), (x.$high === 0 && x.$low === 0)))) {
 17486  			m2 = ((x$2 = t.ext, new $Uint64(x$2.$high, x$2.$low)));
 17487  			sign = 43;
 17488  			if ((x$3 = t.ext, (x$3.$high < 0 || (x$3.$high === 0 && x$3.$low < 0)))) {
 17489  				sign = 45;
 17490  				m2 = new $Uint64(-m2.$high, -m2.$low);
 17491  			}
 17492  			_tmp = $div64(m2, new $Uint64(0, 1000000000), false);
 17493  			_tmp$1 = $div64(m2, new $Uint64(0, 1000000000), true);
 17494  			m1 = _tmp;
 17495  			m2 = _tmp$1;
 17496  			_tmp$2 = $div64(m1, new $Uint64(0, 1000000000), false);
 17497  			_tmp$3 = $div64(m1, new $Uint64(0, 1000000000), true);
 17498  			m0 = _tmp$2;
 17499  			m1 = _tmp$3;
 17500  			buf = sliceType$3.nil;
 17501  			buf = $appendSlice(buf, " m=");
 17502  			buf = $append(buf, sign);
 17503  			wid = 0;
 17504  			if (!((m0.$high === 0 && m0.$low === 0))) {
 17505  				buf = appendInt(buf, ((m0.$low >> 0)), 0);
 17506  				wid = 9;
 17507  			}
 17508  			buf = appendInt(buf, ((m1.$low >> 0)), wid);
 17509  			buf = $append(buf, 46);
 17510  			buf = appendInt(buf, ((m2.$low >> 0)), 9);
 17511  			s = s + (($bytesToString(buf)));
 17512  		}
 17513  		$s = -1; return s;
 17514  		/* */ } return; } if ($f === undefined) { $f = { $blk: Time.ptr.prototype.String }; } $f._r = _r; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f.buf = buf; $f.m0 = m0; $f.m1 = m1; $f.m2 = m2; $f.s = s; $f.sign = sign; $f.t = t; $f.wid = wid; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.x$3 = x$3; $f.$s = $s; $f.$r = $r; return $f;
 17515  	};
 17516  	Time.prototype.String = function() { return this.$val.String(); };
 17517  	Time.ptr.prototype.Format = function(layout) {
 17518  		var _r, b, buf, layout, max, t, $s, $r;
 17519  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; b = $f.b; buf = $f.buf; layout = $f.layout; max = $f.max; t = $f.t; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 17520  		t = this;
 17521  		b = sliceType$3.nil;
 17522  		max = layout.length + 10 >> 0;
 17523  		if (max < 64) {
 17524  			buf = arrayType$2.zero();
 17525  			b = $subslice(new sliceType$3(buf), 0, 0);
 17526  		} else {
 17527  			b = $makeSlice(sliceType$3, 0, max);
 17528  		}
 17529  		_r = $clone(t, Time).AppendFormat(b, layout); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 17530  		b = _r;
 17531  		$s = -1; return ($bytesToString(b));
 17532  		/* */ } return; } if ($f === undefined) { $f = { $blk: Time.ptr.prototype.Format }; } $f._r = _r; $f.b = b; $f.buf = buf; $f.layout = layout; $f.max = max; $f.t = t; $f.$s = $s; $f.$r = $r; return $f;
 17533  	};
 17534  	Time.prototype.Format = function(layout) { return this.$val.Format(layout); };
 17535  	Time.ptr.prototype.AppendFormat = function(b, layout) {
 17536  		var _1, _q, _q$1, _q$2, _q$3, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _tuple, _tuple$1, _tuple$2, _tuple$3, abs, absoffset, b, day, hour, hr, hr$1, layout, m, min, month, name, offset, prefix, s, sec, std, suffix, t, y, year, zone$1, zone$2, $s, $r;
 17537  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _q = $f._q; _q$1 = $f._q$1; _q$2 = $f._q$2; _q$3 = $f._q$3; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; abs = $f.abs; absoffset = $f.absoffset; b = $f.b; day = $f.day; hour = $f.hour; hr = $f.hr; hr$1 = $f.hr$1; layout = $f.layout; m = $f.m; min = $f.min; month = $f.month; name = $f.name; offset = $f.offset; prefix = $f.prefix; s = $f.s; sec = $f.sec; std = $f.std; suffix = $f.suffix; t = $f.t; y = $f.y; year = $f.year; zone$1 = $f.zone$1; zone$2 = $f.zone$2; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 17538  		t = this;
 17539  		_r = $clone(t, Time).locabs(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 17540  		_tuple = _r;
 17541  		name = _tuple[0];
 17542  		offset = _tuple[1];
 17543  		abs = _tuple[2];
 17544  		year = -1;
 17545  		month = 0;
 17546  		day = 0;
 17547  		hour = -1;
 17548  		min = 0;
 17549  		sec = 0;
 17550  		while (true) {
 17551  			if (!(!(layout === ""))) { break; }
 17552  			_tuple$1 = nextStdChunk(layout);
 17553  			prefix = _tuple$1[0];
 17554  			std = _tuple$1[1];
 17555  			suffix = _tuple$1[2];
 17556  			if (!(prefix === "")) {
 17557  				b = $appendSlice(b, prefix);
 17558  			}
 17559  			if (std === 0) {
 17560  				break;
 17561  			}
 17562  			layout = suffix;
 17563  			if (year < 0 && !(((std & 256) === 0))) {
 17564  				_tuple$2 = absDate(abs, true);
 17565  				year = _tuple$2[0];
 17566  				month = _tuple$2[1];
 17567  				day = _tuple$2[2];
 17568  			}
 17569  			if (hour < 0 && !(((std & 512) === 0))) {
 17570  				_tuple$3 = absClock(abs);
 17571  				hour = _tuple$3[0];
 17572  				min = _tuple$3[1];
 17573  				sec = _tuple$3[2];
 17574  			}
 17575  			switch (0) { default:
 17576  				_1 = std & 65535;
 17577  				if (_1 === (274)) {
 17578  					y = year;
 17579  					if (y < 0) {
 17580  						y = -y;
 17581  					}
 17582  					b = appendInt(b, (_r$1 = y % 100, _r$1 === _r$1 ? _r$1 : $throwRuntimeError("integer divide by zero")), 2);
 17583  				} else if (_1 === (273)) {
 17584  					b = appendInt(b, year, 4);
 17585  				} else if (_1 === (258)) {
 17586  					b = $appendSlice(b, $substring(new Month(month).String(), 0, 3));
 17587  				} else if (_1 === (257)) {
 17588  					m = new Month(month).String();
 17589  					b = $appendSlice(b, m);
 17590  				} else if (_1 === (259)) {
 17591  					b = appendInt(b, ((month >> 0)), 0);
 17592  				} else if (_1 === (260)) {
 17593  					b = appendInt(b, ((month >> 0)), 2);
 17594  				} else if (_1 === (262)) {
 17595  					b = $appendSlice(b, $substring(new Weekday(absWeekday(abs)).String(), 0, 3));
 17596  				} else if (_1 === (261)) {
 17597  					s = new Weekday(absWeekday(abs)).String();
 17598  					b = $appendSlice(b, s);
 17599  				} else if (_1 === (263)) {
 17600  					b = appendInt(b, day, 0);
 17601  				} else if (_1 === (264)) {
 17602  					if (day < 10) {
 17603  						b = $append(b, 32);
 17604  					}
 17605  					b = appendInt(b, day, 0);
 17606  				} else if (_1 === (265)) {
 17607  					b = appendInt(b, day, 2);
 17608  				} else if (_1 === (522)) {
 17609  					b = appendInt(b, hour, 2);
 17610  				} else if (_1 === (523)) {
 17611  					hr = (_r$2 = hour % 12, _r$2 === _r$2 ? _r$2 : $throwRuntimeError("integer divide by zero"));
 17612  					if (hr === 0) {
 17613  						hr = 12;
 17614  					}
 17615  					b = appendInt(b, hr, 0);
 17616  				} else if (_1 === (524)) {
 17617  					hr$1 = (_r$3 = hour % 12, _r$3 === _r$3 ? _r$3 : $throwRuntimeError("integer divide by zero"));
 17618  					if (hr$1 === 0) {
 17619  						hr$1 = 12;
 17620  					}
 17621  					b = appendInt(b, hr$1, 2);
 17622  				} else if (_1 === (525)) {
 17623  					b = appendInt(b, min, 0);
 17624  				} else if (_1 === (526)) {
 17625  					b = appendInt(b, min, 2);
 17626  				} else if (_1 === (527)) {
 17627  					b = appendInt(b, sec, 0);
 17628  				} else if (_1 === (528)) {
 17629  					b = appendInt(b, sec, 2);
 17630  				} else if (_1 === (531)) {
 17631  					if (hour >= 12) {
 17632  						b = $appendSlice(b, "PM");
 17633  					} else {
 17634  						b = $appendSlice(b, "AM");
 17635  					}
 17636  				} else if (_1 === (532)) {
 17637  					if (hour >= 12) {
 17638  						b = $appendSlice(b, "pm");
 17639  					} else {
 17640  						b = $appendSlice(b, "am");
 17641  					}
 17642  				} else if ((_1 === (22)) || (_1 === (25)) || (_1 === (23)) || (_1 === (24)) || (_1 === (26)) || (_1 === (27)) || (_1 === (30)) || (_1 === (28)) || (_1 === (29)) || (_1 === (31))) {
 17643  					if ((offset === 0) && ((std === 22) || (std === 25) || (std === 23) || (std === 24) || (std === 26))) {
 17644  						b = $append(b, 90);
 17645  						break;
 17646  					}
 17647  					zone$1 = (_q = offset / 60, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero"));
 17648  					absoffset = offset;
 17649  					if (zone$1 < 0) {
 17650  						b = $append(b, 45);
 17651  						zone$1 = -zone$1;
 17652  						absoffset = -absoffset;
 17653  					} else {
 17654  						b = $append(b, 43);
 17655  					}
 17656  					b = appendInt(b, (_q$1 = zone$1 / 60, (_q$1 === _q$1 && _q$1 !== 1/0 && _q$1 !== -1/0) ? _q$1 >> 0 : $throwRuntimeError("integer divide by zero")), 2);
 17657  					if ((std === 25) || (std === 30) || (std === 26) || (std === 31)) {
 17658  						b = $append(b, 58);
 17659  					}
 17660  					if (!((std === 29)) && !((std === 24))) {
 17661  						b = appendInt(b, (_r$4 = zone$1 % 60, _r$4 === _r$4 ? _r$4 : $throwRuntimeError("integer divide by zero")), 2);
 17662  					}
 17663  					if ((std === 23) || (std === 28) || (std === 31) || (std === 26)) {
 17664  						if ((std === 31) || (std === 26)) {
 17665  							b = $append(b, 58);
 17666  						}
 17667  						b = appendInt(b, (_r$5 = absoffset % 60, _r$5 === _r$5 ? _r$5 : $throwRuntimeError("integer divide by zero")), 2);
 17668  					}
 17669  				} else if (_1 === (21)) {
 17670  					if (!(name === "")) {
 17671  						b = $appendSlice(b, name);
 17672  						break;
 17673  					}
 17674  					zone$2 = (_q$2 = offset / 60, (_q$2 === _q$2 && _q$2 !== 1/0 && _q$2 !== -1/0) ? _q$2 >> 0 : $throwRuntimeError("integer divide by zero"));
 17675  					if (zone$2 < 0) {
 17676  						b = $append(b, 45);
 17677  						zone$2 = -zone$2;
 17678  					} else {
 17679  						b = $append(b, 43);
 17680  					}
 17681  					b = appendInt(b, (_q$3 = zone$2 / 60, (_q$3 === _q$3 && _q$3 !== 1/0 && _q$3 !== -1/0) ? _q$3 >> 0 : $throwRuntimeError("integer divide by zero")), 2);
 17682  					b = appendInt(b, (_r$6 = zone$2 % 60, _r$6 === _r$6 ? _r$6 : $throwRuntimeError("integer divide by zero")), 2);
 17683  				} else if ((_1 === (32)) || (_1 === (33))) {
 17684  					b = formatNano(b, (($clone(t, Time).Nanosecond() >>> 0)), std >> 16 >> 0, (std & 65535) === 33);
 17685  				}
 17686  			}
 17687  		}
 17688  		$s = -1; return b;
 17689  		/* */ } return; } if ($f === undefined) { $f = { $blk: Time.ptr.prototype.AppendFormat }; } $f._1 = _1; $f._q = _q; $f._q$1 = _q$1; $f._q$2 = _q$2; $f._q$3 = _q$3; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f.abs = abs; $f.absoffset = absoffset; $f.b = b; $f.day = day; $f.hour = hour; $f.hr = hr; $f.hr$1 = hr$1; $f.layout = layout; $f.m = m; $f.min = min; $f.month = month; $f.name = name; $f.offset = offset; $f.prefix = prefix; $f.s = s; $f.sec = sec; $f.std = std; $f.suffix = suffix; $f.t = t; $f.y = y; $f.year = year; $f.zone$1 = zone$1; $f.zone$2 = zone$2; $f.$s = $s; $f.$r = $r; return $f;
 17690  	};
 17691  	Time.prototype.AppendFormat = function(b, layout) { return this.$val.AppendFormat(b, layout); };
 17692  	quote = function(s) {
 17693  		var s;
 17694  		return "\"" + s + "\"";
 17695  	};
 17696  	ParseError.ptr.prototype.Error = function() {
 17697  		var e;
 17698  		e = this;
 17699  		if (e.Message === "") {
 17700  			return "parsing time " + quote(e.Value) + " as " + quote(e.Layout) + ": cannot parse " + quote(e.ValueElem) + " as " + quote(e.LayoutElem);
 17701  		}
 17702  		return "parsing time " + quote(e.Value) + e.Message;
 17703  	};
 17704  	ParseError.prototype.Error = function() { return this.$val.Error(); };
 17705  	isDigit = function(s, i) {
 17706  		var c, i, s;
 17707  		if (s.length <= i) {
 17708  			return false;
 17709  		}
 17710  		c = s.charCodeAt(i);
 17711  		return 48 <= c && c <= 57;
 17712  	};
 17713  	getnum = function(s, fixed) {
 17714  		var fixed, s;
 17715  		if (!isDigit(s, 0)) {
 17716  			return [0, s, errBad];
 17717  		}
 17718  		if (!isDigit(s, 1)) {
 17719  			if (fixed) {
 17720  				return [0, s, errBad];
 17721  			}
 17722  			return [(((s.charCodeAt(0) - 48 << 24 >>> 24) >> 0)), $substring(s, 1), $ifaceNil];
 17723  		}
 17724  		return [($imul((((s.charCodeAt(0) - 48 << 24 >>> 24) >> 0)), 10)) + (((s.charCodeAt(1) - 48 << 24 >>> 24) >> 0)) >> 0, $substring(s, 2), $ifaceNil];
 17725  	};
 17726  	cutspace = function(s) {
 17727  		var s;
 17728  		while (true) {
 17729  			if (!(s.length > 0 && (s.charCodeAt(0) === 32))) { break; }
 17730  			s = $substring(s, 1);
 17731  		}
 17732  		return s;
 17733  	};
 17734  	skip = function(value, prefix) {
 17735  		var prefix, value;
 17736  		while (true) {
 17737  			if (!(prefix.length > 0)) { break; }
 17738  			if (prefix.charCodeAt(0) === 32) {
 17739  				if (value.length > 0 && !((value.charCodeAt(0) === 32))) {
 17740  					return [value, errBad];
 17741  				}
 17742  				prefix = cutspace(prefix);
 17743  				value = cutspace(value);
 17744  				continue;
 17745  			}
 17746  			if ((value.length === 0) || !((value.charCodeAt(0) === prefix.charCodeAt(0)))) {
 17747  				return [value, errBad];
 17748  			}
 17749  			prefix = $substring(prefix, 1);
 17750  			value = $substring(value, 1);
 17751  		}
 17752  		return [value, $ifaceNil];
 17753  	};
 17754  	Parse = function(layout, value) {
 17755  		var _r, layout, value, $s, $r;
 17756  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; layout = $f.layout; value = $f.value; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 17757  		_r = parse(layout, value, $pkg.UTC, $pkg.Local); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 17758  		$s = -1; return _r;
 17759  		/* */ } return; } if ($f === undefined) { $f = { $blk: Parse }; } $f._r = _r; $f.layout = layout; $f.value = value; $f.$s = $s; $f.$r = $r; return $f;
 17760  	};
 17761  	$pkg.Parse = Parse;
 17762  	parse = function(layout, value, defaultLocation, local) {
 17763  		var _1, _2, _3, _4, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$14, _tmp$15, _tmp$16, _tmp$17, _tmp$18, _tmp$19, _tmp$2, _tmp$20, _tmp$21, _tmp$22, _tmp$23, _tmp$24, _tmp$25, _tmp$26, _tmp$27, _tmp$28, _tmp$29, _tmp$3, _tmp$30, _tmp$31, _tmp$32, _tmp$33, _tmp$34, _tmp$35, _tmp$36, _tmp$37, _tmp$38, _tmp$39, _tmp$4, _tmp$40, _tmp$41, _tmp$42, _tmp$43, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, _tuple$1, _tuple$10, _tuple$11, _tuple$12, _tuple$13, _tuple$14, _tuple$15, _tuple$16, _tuple$17, _tuple$18, _tuple$19, _tuple$2, _tuple$20, _tuple$21, _tuple$22, _tuple$23, _tuple$24, _tuple$3, _tuple$4, _tuple$5, _tuple$6, _tuple$7, _tuple$8, _tuple$9, alayout, amSet, avalue, day, defaultLocation, err, hour, hour$1, hr, i, layout, local, min, min$1, mm, month, n, n$1, name, ndigit, nsec, offset, offset$1, ok, ok$1, p, pmSet, prefix, rangeErrString, sec, seconds, sign, ss, std, stdstr, suffix, t, t$1, value, x, x$1, year, z, zoneName, zoneOffset, $s, $r;
 17764  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _2 = $f._2; _3 = $f._3; _4 = $f._4; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$10 = $f._tmp$10; _tmp$11 = $f._tmp$11; _tmp$12 = $f._tmp$12; _tmp$13 = $f._tmp$13; _tmp$14 = $f._tmp$14; _tmp$15 = $f._tmp$15; _tmp$16 = $f._tmp$16; _tmp$17 = $f._tmp$17; _tmp$18 = $f._tmp$18; _tmp$19 = $f._tmp$19; _tmp$2 = $f._tmp$2; _tmp$20 = $f._tmp$20; _tmp$21 = $f._tmp$21; _tmp$22 = $f._tmp$22; _tmp$23 = $f._tmp$23; _tmp$24 = $f._tmp$24; _tmp$25 = $f._tmp$25; _tmp$26 = $f._tmp$26; _tmp$27 = $f._tmp$27; _tmp$28 = $f._tmp$28; _tmp$29 = $f._tmp$29; _tmp$3 = $f._tmp$3; _tmp$30 = $f._tmp$30; _tmp$31 = $f._tmp$31; _tmp$32 = $f._tmp$32; _tmp$33 = $f._tmp$33; _tmp$34 = $f._tmp$34; _tmp$35 = $f._tmp$35; _tmp$36 = $f._tmp$36; _tmp$37 = $f._tmp$37; _tmp$38 = $f._tmp$38; _tmp$39 = $f._tmp$39; _tmp$4 = $f._tmp$4; _tmp$40 = $f._tmp$40; _tmp$41 = $f._tmp$41; _tmp$42 = $f._tmp$42; _tmp$43 = $f._tmp$43; _tmp$5 = $f._tmp$5; _tmp$6 = $f._tmp$6; _tmp$7 = $f._tmp$7; _tmp$8 = $f._tmp$8; _tmp$9 = $f._tmp$9; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$10 = $f._tuple$10; _tuple$11 = $f._tuple$11; _tuple$12 = $f._tuple$12; _tuple$13 = $f._tuple$13; _tuple$14 = $f._tuple$14; _tuple$15 = $f._tuple$15; _tuple$16 = $f._tuple$16; _tuple$17 = $f._tuple$17; _tuple$18 = $f._tuple$18; _tuple$19 = $f._tuple$19; _tuple$2 = $f._tuple$2; _tuple$20 = $f._tuple$20; _tuple$21 = $f._tuple$21; _tuple$22 = $f._tuple$22; _tuple$23 = $f._tuple$23; _tuple$24 = $f._tuple$24; _tuple$3 = $f._tuple$3; _tuple$4 = $f._tuple$4; _tuple$5 = $f._tuple$5; _tuple$6 = $f._tuple$6; _tuple$7 = $f._tuple$7; _tuple$8 = $f._tuple$8; _tuple$9 = $f._tuple$9; alayout = $f.alayout; amSet = $f.amSet; avalue = $f.avalue; day = $f.day; defaultLocation = $f.defaultLocation; err = $f.err; hour = $f.hour; hour$1 = $f.hour$1; hr = $f.hr; i = $f.i; layout = $f.layout; local = $f.local; min = $f.min; min$1 = $f.min$1; mm = $f.mm; month = $f.month; n = $f.n; n$1 = $f.n$1; name = $f.name; ndigit = $f.ndigit; nsec = $f.nsec; offset = $f.offset; offset$1 = $f.offset$1; ok = $f.ok; ok$1 = $f.ok$1; p = $f.p; pmSet = $f.pmSet; prefix = $f.prefix; rangeErrString = $f.rangeErrString; sec = $f.sec; seconds = $f.seconds; sign = $f.sign; ss = $f.ss; std = $f.std; stdstr = $f.stdstr; suffix = $f.suffix; t = $f.t; t$1 = $f.t$1; value = $f.value; x = $f.x; x$1 = $f.x$1; year = $f.year; z = $f.z; zoneName = $f.zoneName; zoneOffset = $f.zoneOffset; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 17765  		_tmp = layout;
 17766  		_tmp$1 = value;
 17767  		alayout = _tmp;
 17768  		avalue = _tmp$1;
 17769  		rangeErrString = "";
 17770  		amSet = false;
 17771  		pmSet = false;
 17772  		year = 0;
 17773  		month = 1;
 17774  		day = 1;
 17775  		hour = 0;
 17776  		min = 0;
 17777  		sec = 0;
 17778  		nsec = 0;
 17779  		z = ptrType$2.nil;
 17780  		zoneOffset = -1;
 17781  		zoneName = "";
 17782  		while (true) {
 17783  			err = $ifaceNil;
 17784  			_tuple = nextStdChunk(layout);
 17785  			prefix = _tuple[0];
 17786  			std = _tuple[1];
 17787  			suffix = _tuple[2];
 17788  			stdstr = $substring(layout, prefix.length, (layout.length - suffix.length >> 0));
 17789  			_tuple$1 = skip(value, prefix);
 17790  			value = _tuple$1[0];
 17791  			err = _tuple$1[1];
 17792  			if (!($interfaceIsEqual(err, $ifaceNil))) {
 17793  				$s = -1; return [new Time.ptr(new $Uint64(0, 0), new $Int64(0, 0), ptrType$2.nil), new ParseError.ptr(alayout, avalue, prefix, value, "")];
 17794  			}
 17795  			if (std === 0) {
 17796  				if (!((value.length === 0))) {
 17797  					$s = -1; return [new Time.ptr(new $Uint64(0, 0), new $Int64(0, 0), ptrType$2.nil), new ParseError.ptr(alayout, avalue, "", value, ": extra text: " + value)];
 17798  				}
 17799  				break;
 17800  			}
 17801  			layout = suffix;
 17802  			p = "";
 17803  			switch (0) { default:
 17804  				_1 = std & 65535;
 17805  				if (_1 === (274)) {
 17806  					if (value.length < 2) {
 17807  						err = errBad;
 17808  						break;
 17809  					}
 17810  					_tmp$2 = $substring(value, 0, 2);
 17811  					_tmp$3 = $substring(value, 2);
 17812  					p = _tmp$2;
 17813  					value = _tmp$3;
 17814  					_tuple$2 = atoi(p);
 17815  					year = _tuple$2[0];
 17816  					err = _tuple$2[1];
 17817  					if (year >= 69) {
 17818  						year = year + (1900) >> 0;
 17819  					} else {
 17820  						year = year + (2000) >> 0;
 17821  					}
 17822  				} else if (_1 === (273)) {
 17823  					if (value.length < 4 || !isDigit(value, 0)) {
 17824  						err = errBad;
 17825  						break;
 17826  					}
 17827  					_tmp$4 = $substring(value, 0, 4);
 17828  					_tmp$5 = $substring(value, 4);
 17829  					p = _tmp$4;
 17830  					value = _tmp$5;
 17831  					_tuple$3 = atoi(p);
 17832  					year = _tuple$3[0];
 17833  					err = _tuple$3[1];
 17834  				} else if (_1 === (258)) {
 17835  					_tuple$4 = lookup(shortMonthNames, value);
 17836  					month = _tuple$4[0];
 17837  					value = _tuple$4[1];
 17838  					err = _tuple$4[2];
 17839  					month = month + (1) >> 0;
 17840  				} else if (_1 === (257)) {
 17841  					_tuple$5 = lookup(longMonthNames, value);
 17842  					month = _tuple$5[0];
 17843  					value = _tuple$5[1];
 17844  					err = _tuple$5[2];
 17845  					month = month + (1) >> 0;
 17846  				} else if ((_1 === (259)) || (_1 === (260))) {
 17847  					_tuple$6 = getnum(value, std === 260);
 17848  					month = _tuple$6[0];
 17849  					value = _tuple$6[1];
 17850  					err = _tuple$6[2];
 17851  					if (month <= 0 || 12 < month) {
 17852  						rangeErrString = "month";
 17853  					}
 17854  				} else if (_1 === (262)) {
 17855  					_tuple$7 = lookup(shortDayNames, value);
 17856  					value = _tuple$7[1];
 17857  					err = _tuple$7[2];
 17858  				} else if (_1 === (261)) {
 17859  					_tuple$8 = lookup(longDayNames, value);
 17860  					value = _tuple$8[1];
 17861  					err = _tuple$8[2];
 17862  				} else if ((_1 === (263)) || (_1 === (264)) || (_1 === (265))) {
 17863  					if ((std === 264) && value.length > 0 && (value.charCodeAt(0) === 32)) {
 17864  						value = $substring(value, 1);
 17865  					}
 17866  					_tuple$9 = getnum(value, std === 265);
 17867  					day = _tuple$9[0];
 17868  					value = _tuple$9[1];
 17869  					err = _tuple$9[2];
 17870  					if (day < 0) {
 17871  						rangeErrString = "day";
 17872  					}
 17873  				} else if (_1 === (522)) {
 17874  					_tuple$10 = getnum(value, false);
 17875  					hour = _tuple$10[0];
 17876  					value = _tuple$10[1];
 17877  					err = _tuple$10[2];
 17878  					if (hour < 0 || 24 <= hour) {
 17879  						rangeErrString = "hour";
 17880  					}
 17881  				} else if ((_1 === (523)) || (_1 === (524))) {
 17882  					_tuple$11 = getnum(value, std === 524);
 17883  					hour = _tuple$11[0];
 17884  					value = _tuple$11[1];
 17885  					err = _tuple$11[2];
 17886  					if (hour < 0 || 12 < hour) {
 17887  						rangeErrString = "hour";
 17888  					}
 17889  				} else if ((_1 === (525)) || (_1 === (526))) {
 17890  					_tuple$12 = getnum(value, std === 526);
 17891  					min = _tuple$12[0];
 17892  					value = _tuple$12[1];
 17893  					err = _tuple$12[2];
 17894  					if (min < 0 || 60 <= min) {
 17895  						rangeErrString = "minute";
 17896  					}
 17897  				} else if ((_1 === (527)) || (_1 === (528))) {
 17898  					_tuple$13 = getnum(value, std === 528);
 17899  					sec = _tuple$13[0];
 17900  					value = _tuple$13[1];
 17901  					err = _tuple$13[2];
 17902  					if (sec < 0 || 60 <= sec) {
 17903  						rangeErrString = "second";
 17904  						break;
 17905  					}
 17906  					if (value.length >= 2 && (value.charCodeAt(0) === 46) && isDigit(value, 1)) {
 17907  						_tuple$14 = nextStdChunk(layout);
 17908  						std = _tuple$14[1];
 17909  						std = std & (65535);
 17910  						if ((std === 32) || (std === 33)) {
 17911  							break;
 17912  						}
 17913  						n = 2;
 17914  						while (true) {
 17915  							if (!(n < value.length && isDigit(value, n))) { break; }
 17916  							n = n + (1) >> 0;
 17917  						}
 17918  						_tuple$15 = parseNanoseconds(value, n);
 17919  						nsec = _tuple$15[0];
 17920  						rangeErrString = _tuple$15[1];
 17921  						err = _tuple$15[2];
 17922  						value = $substring(value, n);
 17923  					}
 17924  				} else if (_1 === (531)) {
 17925  					if (value.length < 2) {
 17926  						err = errBad;
 17927  						break;
 17928  					}
 17929  					_tmp$6 = $substring(value, 0, 2);
 17930  					_tmp$7 = $substring(value, 2);
 17931  					p = _tmp$6;
 17932  					value = _tmp$7;
 17933  					_2 = p;
 17934  					if (_2 === ("PM")) {
 17935  						pmSet = true;
 17936  					} else if (_2 === ("AM")) {
 17937  						amSet = true;
 17938  					} else {
 17939  						err = errBad;
 17940  					}
 17941  				} else if (_1 === (532)) {
 17942  					if (value.length < 2) {
 17943  						err = errBad;
 17944  						break;
 17945  					}
 17946  					_tmp$8 = $substring(value, 0, 2);
 17947  					_tmp$9 = $substring(value, 2);
 17948  					p = _tmp$8;
 17949  					value = _tmp$9;
 17950  					_3 = p;
 17951  					if (_3 === ("pm")) {
 17952  						pmSet = true;
 17953  					} else if (_3 === ("am")) {
 17954  						amSet = true;
 17955  					} else {
 17956  						err = errBad;
 17957  					}
 17958  				} else if ((_1 === (22)) || (_1 === (25)) || (_1 === (23)) || (_1 === (24)) || (_1 === (26)) || (_1 === (27)) || (_1 === (29)) || (_1 === (30)) || (_1 === (28)) || (_1 === (31))) {
 17959  					if (((std === 22) || (std === 24) || (std === 25)) && value.length >= 1 && (value.charCodeAt(0) === 90)) {
 17960  						value = $substring(value, 1);
 17961  						z = $pkg.UTC;
 17962  						break;
 17963  					}
 17964  					_tmp$10 = "";
 17965  					_tmp$11 = "";
 17966  					_tmp$12 = "";
 17967  					_tmp$13 = "";
 17968  					sign = _tmp$10;
 17969  					hour$1 = _tmp$11;
 17970  					min$1 = _tmp$12;
 17971  					seconds = _tmp$13;
 17972  					if ((std === 25) || (std === 30)) {
 17973  						if (value.length < 6) {
 17974  							err = errBad;
 17975  							break;
 17976  						}
 17977  						if (!((value.charCodeAt(3) === 58))) {
 17978  							err = errBad;
 17979  							break;
 17980  						}
 17981  						_tmp$14 = $substring(value, 0, 1);
 17982  						_tmp$15 = $substring(value, 1, 3);
 17983  						_tmp$16 = $substring(value, 4, 6);
 17984  						_tmp$17 = "00";
 17985  						_tmp$18 = $substring(value, 6);
 17986  						sign = _tmp$14;
 17987  						hour$1 = _tmp$15;
 17988  						min$1 = _tmp$16;
 17989  						seconds = _tmp$17;
 17990  						value = _tmp$18;
 17991  					} else if ((std === 29) || (std === 24)) {
 17992  						if (value.length < 3) {
 17993  							err = errBad;
 17994  							break;
 17995  						}
 17996  						_tmp$19 = $substring(value, 0, 1);
 17997  						_tmp$20 = $substring(value, 1, 3);
 17998  						_tmp$21 = "00";
 17999  						_tmp$22 = "00";
 18000  						_tmp$23 = $substring(value, 3);
 18001  						sign = _tmp$19;
 18002  						hour$1 = _tmp$20;
 18003  						min$1 = _tmp$21;
 18004  						seconds = _tmp$22;
 18005  						value = _tmp$23;
 18006  					} else if ((std === 26) || (std === 31)) {
 18007  						if (value.length < 9) {
 18008  							err = errBad;
 18009  							break;
 18010  						}
 18011  						if (!((value.charCodeAt(3) === 58)) || !((value.charCodeAt(6) === 58))) {
 18012  							err = errBad;
 18013  							break;
 18014  						}
 18015  						_tmp$24 = $substring(value, 0, 1);
 18016  						_tmp$25 = $substring(value, 1, 3);
 18017  						_tmp$26 = $substring(value, 4, 6);
 18018  						_tmp$27 = $substring(value, 7, 9);
 18019  						_tmp$28 = $substring(value, 9);
 18020  						sign = _tmp$24;
 18021  						hour$1 = _tmp$25;
 18022  						min$1 = _tmp$26;
 18023  						seconds = _tmp$27;
 18024  						value = _tmp$28;
 18025  					} else if ((std === 23) || (std === 28)) {
 18026  						if (value.length < 7) {
 18027  							err = errBad;
 18028  							break;
 18029  						}
 18030  						_tmp$29 = $substring(value, 0, 1);
 18031  						_tmp$30 = $substring(value, 1, 3);
 18032  						_tmp$31 = $substring(value, 3, 5);
 18033  						_tmp$32 = $substring(value, 5, 7);
 18034  						_tmp$33 = $substring(value, 7);
 18035  						sign = _tmp$29;
 18036  						hour$1 = _tmp$30;
 18037  						min$1 = _tmp$31;
 18038  						seconds = _tmp$32;
 18039  						value = _tmp$33;
 18040  					} else {
 18041  						if (value.length < 5) {
 18042  							err = errBad;
 18043  							break;
 18044  						}
 18045  						_tmp$34 = $substring(value, 0, 1);
 18046  						_tmp$35 = $substring(value, 1, 3);
 18047  						_tmp$36 = $substring(value, 3, 5);
 18048  						_tmp$37 = "00";
 18049  						_tmp$38 = $substring(value, 5);
 18050  						sign = _tmp$34;
 18051  						hour$1 = _tmp$35;
 18052  						min$1 = _tmp$36;
 18053  						seconds = _tmp$37;
 18054  						value = _tmp$38;
 18055  					}
 18056  					_tmp$39 = 0;
 18057  					_tmp$40 = 0;
 18058  					_tmp$41 = 0;
 18059  					hr = _tmp$39;
 18060  					mm = _tmp$40;
 18061  					ss = _tmp$41;
 18062  					_tuple$16 = atoi(hour$1);
 18063  					hr = _tuple$16[0];
 18064  					err = _tuple$16[1];
 18065  					if ($interfaceIsEqual(err, $ifaceNil)) {
 18066  						_tuple$17 = atoi(min$1);
 18067  						mm = _tuple$17[0];
 18068  						err = _tuple$17[1];
 18069  					}
 18070  					if ($interfaceIsEqual(err, $ifaceNil)) {
 18071  						_tuple$18 = atoi(seconds);
 18072  						ss = _tuple$18[0];
 18073  						err = _tuple$18[1];
 18074  					}
 18075  					zoneOffset = ($imul(((($imul(hr, 60)) + mm >> 0)), 60)) + ss >> 0;
 18076  					_4 = sign.charCodeAt(0);
 18077  					if (_4 === (43)) {
 18078  					} else if (_4 === (45)) {
 18079  						zoneOffset = -zoneOffset;
 18080  					} else {
 18081  						err = errBad;
 18082  					}
 18083  				} else if (_1 === (21)) {
 18084  					if (value.length >= 3 && $substring(value, 0, 3) === "UTC") {
 18085  						z = $pkg.UTC;
 18086  						value = $substring(value, 3);
 18087  						break;
 18088  					}
 18089  					_tuple$19 = parseTimeZone(value);
 18090  					n$1 = _tuple$19[0];
 18091  					ok = _tuple$19[1];
 18092  					if (!ok) {
 18093  						err = errBad;
 18094  						break;
 18095  					}
 18096  					_tmp$42 = $substring(value, 0, n$1);
 18097  					_tmp$43 = $substring(value, n$1);
 18098  					zoneName = _tmp$42;
 18099  					value = _tmp$43;
 18100  				} else if (_1 === (32)) {
 18101  					ndigit = 1 + ((std >> 16 >> 0)) >> 0;
 18102  					if (value.length < ndigit) {
 18103  						err = errBad;
 18104  						break;
 18105  					}
 18106  					_tuple$20 = parseNanoseconds(value, ndigit);
 18107  					nsec = _tuple$20[0];
 18108  					rangeErrString = _tuple$20[1];
 18109  					err = _tuple$20[2];
 18110  					value = $substring(value, ndigit);
 18111  				} else if (_1 === (33)) {
 18112  					if (value.length < 2 || !((value.charCodeAt(0) === 46)) || value.charCodeAt(1) < 48 || 57 < value.charCodeAt(1)) {
 18113  						break;
 18114  					}
 18115  					i = 0;
 18116  					while (true) {
 18117  						if (!(i < 9 && (i + 1 >> 0) < value.length && 48 <= value.charCodeAt((i + 1 >> 0)) && value.charCodeAt((i + 1 >> 0)) <= 57)) { break; }
 18118  						i = i + (1) >> 0;
 18119  					}
 18120  					_tuple$21 = parseNanoseconds(value, 1 + i >> 0);
 18121  					nsec = _tuple$21[0];
 18122  					rangeErrString = _tuple$21[1];
 18123  					err = _tuple$21[2];
 18124  					value = $substring(value, (1 + i >> 0));
 18125  				}
 18126  			}
 18127  			if (!(rangeErrString === "")) {
 18128  				$s = -1; return [new Time.ptr(new $Uint64(0, 0), new $Int64(0, 0), ptrType$2.nil), new ParseError.ptr(alayout, avalue, stdstr, value, ": " + rangeErrString + " out of range")];
 18129  			}
 18130  			if (!($interfaceIsEqual(err, $ifaceNil))) {
 18131  				$s = -1; return [new Time.ptr(new $Uint64(0, 0), new $Int64(0, 0), ptrType$2.nil), new ParseError.ptr(alayout, avalue, stdstr, value, "")];
 18132  			}
 18133  		}
 18134  		if (pmSet && hour < 12) {
 18135  			hour = hour + (12) >> 0;
 18136  		} else if (amSet && (hour === 12)) {
 18137  			hour = 0;
 18138  		}
 18139  		if (day < 1 || day > daysIn(((month >> 0)), year)) {
 18140  			$s = -1; return [new Time.ptr(new $Uint64(0, 0), new $Int64(0, 0), ptrType$2.nil), new ParseError.ptr(alayout, avalue, "", value, ": day out of range")];
 18141  		}
 18142  		/* */ if (!(z === ptrType$2.nil)) { $s = 1; continue; }
 18143  		/* */ $s = 2; continue;
 18144  		/* if (!(z === ptrType$2.nil)) { */ case 1:
 18145  			_r = Date(year, ((month >> 0)), day, hour, min, sec, nsec, z); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 18146  			$s = -1; return [_r, $ifaceNil];
 18147  		/* } */ case 2:
 18148  		/* */ if (!((zoneOffset === -1))) { $s = 4; continue; }
 18149  		/* */ $s = 5; continue;
 18150  		/* if (!((zoneOffset === -1))) { */ case 4:
 18151  			_r$1 = Date(year, ((month >> 0)), day, hour, min, sec, nsec, $pkg.UTC); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 18152  			t = $clone(_r$1, Time);
 18153  			t.addSec((x = (new $Int64(0, zoneOffset)), new $Int64(-x.$high, -x.$low)));
 18154  			_r$2 = local.lookup(t.unixSec()); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 18155  			_tuple$22 = _r$2;
 18156  			name = _tuple$22[0];
 18157  			offset = _tuple$22[1];
 18158  			if ((offset === zoneOffset) && (zoneName === "" || name === zoneName)) {
 18159  				t.setLoc(local);
 18160  				$s = -1; return [t, $ifaceNil];
 18161  			}
 18162  			t.setLoc(FixedZone(zoneName, zoneOffset));
 18163  			$s = -1; return [t, $ifaceNil];
 18164  		/* } */ case 5:
 18165  		/* */ if (!(zoneName === "")) { $s = 8; continue; }
 18166  		/* */ $s = 9; continue;
 18167  		/* if (!(zoneName === "")) { */ case 8:
 18168  			_r$3 = Date(year, ((month >> 0)), day, hour, min, sec, nsec, $pkg.UTC); /* */ $s = 10; case 10: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 18169  			t$1 = $clone(_r$3, Time);
 18170  			_r$4 = local.lookupName(zoneName, t$1.unixSec()); /* */ $s = 11; case 11: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 18171  			_tuple$23 = _r$4;
 18172  			offset$1 = _tuple$23[0];
 18173  			ok$1 = _tuple$23[1];
 18174  			if (ok$1) {
 18175  				t$1.addSec((x$1 = (new $Int64(0, offset$1)), new $Int64(-x$1.$high, -x$1.$low)));
 18176  				t$1.setLoc(local);
 18177  				$s = -1; return [t$1, $ifaceNil];
 18178  			}
 18179  			if (zoneName.length > 3 && $substring(zoneName, 0, 3) === "GMT") {
 18180  				_tuple$24 = atoi($substring(zoneName, 3));
 18181  				offset$1 = _tuple$24[0];
 18182  				offset$1 = $imul(offset$1, (3600));
 18183  			}
 18184  			t$1.setLoc(FixedZone(zoneName, offset$1));
 18185  			$s = -1; return [t$1, $ifaceNil];
 18186  		/* } */ case 9:
 18187  		_r$5 = Date(year, ((month >> 0)), day, hour, min, sec, nsec, defaultLocation); /* */ $s = 12; case 12: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
 18188  		$s = -1; return [_r$5, $ifaceNil];
 18189  		/* */ } return; } if ($f === undefined) { $f = { $blk: parse }; } $f._1 = _1; $f._2 = _2; $f._3 = _3; $f._4 = _4; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$10 = _tmp$10; $f._tmp$11 = _tmp$11; $f._tmp$12 = _tmp$12; $f._tmp$13 = _tmp$13; $f._tmp$14 = _tmp$14; $f._tmp$15 = _tmp$15; $f._tmp$16 = _tmp$16; $f._tmp$17 = _tmp$17; $f._tmp$18 = _tmp$18; $f._tmp$19 = _tmp$19; $f._tmp$2 = _tmp$2; $f._tmp$20 = _tmp$20; $f._tmp$21 = _tmp$21; $f._tmp$22 = _tmp$22; $f._tmp$23 = _tmp$23; $f._tmp$24 = _tmp$24; $f._tmp$25 = _tmp$25; $f._tmp$26 = _tmp$26; $f._tmp$27 = _tmp$27; $f._tmp$28 = _tmp$28; $f._tmp$29 = _tmp$29; $f._tmp$3 = _tmp$3; $f._tmp$30 = _tmp$30; $f._tmp$31 = _tmp$31; $f._tmp$32 = _tmp$32; $f._tmp$33 = _tmp$33; $f._tmp$34 = _tmp$34; $f._tmp$35 = _tmp$35; $f._tmp$36 = _tmp$36; $f._tmp$37 = _tmp$37; $f._tmp$38 = _tmp$38; $f._tmp$39 = _tmp$39; $f._tmp$4 = _tmp$4; $f._tmp$40 = _tmp$40; $f._tmp$41 = _tmp$41; $f._tmp$42 = _tmp$42; $f._tmp$43 = _tmp$43; $f._tmp$5 = _tmp$5; $f._tmp$6 = _tmp$6; $f._tmp$7 = _tmp$7; $f._tmp$8 = _tmp$8; $f._tmp$9 = _tmp$9; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$10 = _tuple$10; $f._tuple$11 = _tuple$11; $f._tuple$12 = _tuple$12; $f._tuple$13 = _tuple$13; $f._tuple$14 = _tuple$14; $f._tuple$15 = _tuple$15; $f._tuple$16 = _tuple$16; $f._tuple$17 = _tuple$17; $f._tuple$18 = _tuple$18; $f._tuple$19 = _tuple$19; $f._tuple$2 = _tuple$2; $f._tuple$20 = _tuple$20; $f._tuple$21 = _tuple$21; $f._tuple$22 = _tuple$22; $f._tuple$23 = _tuple$23; $f._tuple$24 = _tuple$24; $f._tuple$3 = _tuple$3; $f._tuple$4 = _tuple$4; $f._tuple$5 = _tuple$5; $f._tuple$6 = _tuple$6; $f._tuple$7 = _tuple$7; $f._tuple$8 = _tuple$8; $f._tuple$9 = _tuple$9; $f.alayout = alayout; $f.amSet = amSet; $f.avalue = avalue; $f.day = day; $f.defaultLocation = defaultLocation; $f.err = err; $f.hour = hour; $f.hour$1 = hour$1; $f.hr = hr; $f.i = i; $f.layout = layout; $f.local = local; $f.min = min; $f.min$1 = min$1; $f.mm = mm; $f.month = month; $f.n = n; $f.n$1 = n$1; $f.name = name; $f.ndigit = ndigit; $f.nsec = nsec; $f.offset = offset; $f.offset$1 = offset$1; $f.ok = ok; $f.ok$1 = ok$1; $f.p = p; $f.pmSet = pmSet; $f.prefix = prefix; $f.rangeErrString = rangeErrString; $f.sec = sec; $f.seconds = seconds; $f.sign = sign; $f.ss = ss; $f.std = std; $f.stdstr = stdstr; $f.suffix = suffix; $f.t = t; $f.t$1 = t$1; $f.value = value; $f.x = x; $f.x$1 = x$1; $f.year = year; $f.z = z; $f.zoneName = zoneName; $f.zoneOffset = zoneOffset; $f.$s = $s; $f.$r = $r; return $f;
 18190  	};
 18191  	parseTimeZone = function(value) {
 18192  		var _1, _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$14, _tmp$15, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, c, length, nUpper, ok, value;
 18193  		length = 0;
 18194  		ok = false;
 18195  		if (value.length < 3) {
 18196  			_tmp = 0;
 18197  			_tmp$1 = false;
 18198  			length = _tmp;
 18199  			ok = _tmp$1;
 18200  			return [length, ok];
 18201  		}
 18202  		if (value.length >= 4 && ($substring(value, 0, 4) === "ChST" || $substring(value, 0, 4) === "MeST")) {
 18203  			_tmp$2 = 4;
 18204  			_tmp$3 = true;
 18205  			length = _tmp$2;
 18206  			ok = _tmp$3;
 18207  			return [length, ok];
 18208  		}
 18209  		if ($substring(value, 0, 3) === "GMT") {
 18210  			length = parseGMT(value);
 18211  			_tmp$4 = length;
 18212  			_tmp$5 = true;
 18213  			length = _tmp$4;
 18214  			ok = _tmp$5;
 18215  			return [length, ok];
 18216  		}
 18217  		nUpper = 0;
 18218  		nUpper = 0;
 18219  		while (true) {
 18220  			if (!(nUpper < 6)) { break; }
 18221  			if (nUpper >= value.length) {
 18222  				break;
 18223  			}
 18224  			c = value.charCodeAt(nUpper);
 18225  			if (c < 65 || 90 < c) {
 18226  				break;
 18227  			}
 18228  			nUpper = nUpper + (1) >> 0;
 18229  		}
 18230  		_1 = nUpper;
 18231  		if ((_1 === (0)) || (_1 === (1)) || (_1 === (2)) || (_1 === (6))) {
 18232  			_tmp$6 = 0;
 18233  			_tmp$7 = false;
 18234  			length = _tmp$6;
 18235  			ok = _tmp$7;
 18236  			return [length, ok];
 18237  		} else if (_1 === (5)) {
 18238  			if (value.charCodeAt(4) === 84) {
 18239  				_tmp$8 = 5;
 18240  				_tmp$9 = true;
 18241  				length = _tmp$8;
 18242  				ok = _tmp$9;
 18243  				return [length, ok];
 18244  			}
 18245  		} else if (_1 === (4)) {
 18246  			if ((value.charCodeAt(3) === 84) || $substring(value, 0, 4) === "WITA") {
 18247  				_tmp$10 = 4;
 18248  				_tmp$11 = true;
 18249  				length = _tmp$10;
 18250  				ok = _tmp$11;
 18251  				return [length, ok];
 18252  			}
 18253  		} else if (_1 === (3)) {
 18254  			_tmp$12 = 3;
 18255  			_tmp$13 = true;
 18256  			length = _tmp$12;
 18257  			ok = _tmp$13;
 18258  			return [length, ok];
 18259  		}
 18260  		_tmp$14 = 0;
 18261  		_tmp$15 = false;
 18262  		length = _tmp$14;
 18263  		ok = _tmp$15;
 18264  		return [length, ok];
 18265  	};
 18266  	parseGMT = function(value) {
 18267  		var _tuple, err, rem, sign, value, x;
 18268  		value = $substring(value, 3);
 18269  		if (value.length === 0) {
 18270  			return 3;
 18271  		}
 18272  		sign = value.charCodeAt(0);
 18273  		if (!((sign === 45)) && !((sign === 43))) {
 18274  			return 3;
 18275  		}
 18276  		_tuple = leadingInt($substring(value, 1));
 18277  		x = _tuple[0];
 18278  		rem = _tuple[1];
 18279  		err = _tuple[2];
 18280  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 18281  			return 3;
 18282  		}
 18283  		if (sign === 45) {
 18284  			x = new $Int64(-x.$high, -x.$low);
 18285  		}
 18286  		if ((x.$high === 0 && x.$low === 0) || (x.$high < -1 || (x.$high === -1 && x.$low < 4294967282)) || (0 < x.$high || (0 === x.$high && 12 < x.$low))) {
 18287  			return 3;
 18288  		}
 18289  		return (3 + value.length >> 0) - rem.length >> 0;
 18290  	};
 18291  	parseNanoseconds = function(value, nbytes) {
 18292  		var _tuple, err, i, nbytes, ns, rangeErrString, scaleDigits, value;
 18293  		ns = 0;
 18294  		rangeErrString = "";
 18295  		err = $ifaceNil;
 18296  		if (!((value.charCodeAt(0) === 46))) {
 18297  			err = errBad;
 18298  			return [ns, rangeErrString, err];
 18299  		}
 18300  		_tuple = atoi($substring(value, 1, nbytes));
 18301  		ns = _tuple[0];
 18302  		err = _tuple[1];
 18303  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 18304  			return [ns, rangeErrString, err];
 18305  		}
 18306  		if (ns < 0 || 1000000000 <= ns) {
 18307  			rangeErrString = "fractional second";
 18308  			return [ns, rangeErrString, err];
 18309  		}
 18310  		scaleDigits = 10 - nbytes >> 0;
 18311  		i = 0;
 18312  		while (true) {
 18313  			if (!(i < scaleDigits)) { break; }
 18314  			ns = $imul(ns, (10));
 18315  			i = i + (1) >> 0;
 18316  		}
 18317  		return [ns, rangeErrString, err];
 18318  	};
 18319  	leadingInt = function(s) {
 18320  		var _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, c, err, i, rem, s, x, x$1, x$2, x$3;
 18321  		x = new $Int64(0, 0);
 18322  		rem = "";
 18323  		err = $ifaceNil;
 18324  		i = 0;
 18325  		while (true) {
 18326  			if (!(i < s.length)) { break; }
 18327  			c = s.charCodeAt(i);
 18328  			if (c < 48 || c > 57) {
 18329  				break;
 18330  			}
 18331  			if ((x.$high > 214748364 || (x.$high === 214748364 && x.$low > 3435973836))) {
 18332  				_tmp = new $Int64(0, 0);
 18333  				_tmp$1 = "";
 18334  				_tmp$2 = errLeadingInt;
 18335  				x = _tmp;
 18336  				rem = _tmp$1;
 18337  				err = _tmp$2;
 18338  				return [x, rem, err];
 18339  			}
 18340  			x = (x$1 = (x$2 = $mul64(x, new $Int64(0, 10)), x$3 = (new $Int64(0, c)), new $Int64(x$2.$high + x$3.$high, x$2.$low + x$3.$low)), new $Int64(x$1.$high - 0, x$1.$low - 48));
 18341  			if ((x.$high < 0 || (x.$high === 0 && x.$low < 0))) {
 18342  				_tmp$3 = new $Int64(0, 0);
 18343  				_tmp$4 = "";
 18344  				_tmp$5 = errLeadingInt;
 18345  				x = _tmp$3;
 18346  				rem = _tmp$4;
 18347  				err = _tmp$5;
 18348  				return [x, rem, err];
 18349  			}
 18350  			i = i + (1) >> 0;
 18351  		}
 18352  		_tmp$6 = x;
 18353  		_tmp$7 = $substring(s, i);
 18354  		_tmp$8 = $ifaceNil;
 18355  		x = _tmp$6;
 18356  		rem = _tmp$7;
 18357  		err = _tmp$8;
 18358  		return [x, rem, err];
 18359  	};
 18360  	when = function(d) {
 18361  		var d, t, x, x$1;
 18362  		if ((d.$high < 0 || (d.$high === 0 && d.$low <= 0))) {
 18363  			return runtimeNano();
 18364  		}
 18365  		t = (x = runtimeNano(), x$1 = (new $Int64(d.$high, d.$low)), new $Int64(x.$high + x$1.$high, x.$low + x$1.$low));
 18366  		if ((t.$high < 0 || (t.$high === 0 && t.$low < 0))) {
 18367  			t = new $Int64(2147483647, 4294967295);
 18368  		}
 18369  		return t;
 18370  	};
 18371  	Timer.ptr.prototype.Stop = function() {
 18372  		var t;
 18373  		t = this;
 18374  		if (t.r.f === $throwNilPointerError) {
 18375  			$panic(new $String("time: Stop called on uninitialized Timer"));
 18376  		}
 18377  		return stopTimer(t.r);
 18378  	};
 18379  	Timer.prototype.Stop = function() { return this.$val.Stop(); };
 18380  	NewTimer = function(d) {
 18381  		var c, d, t;
 18382  		c = new $Chan(Time, 1);
 18383  		t = new Timer.ptr(c, new runtimeTimer.ptr(0, when(d), new $Int64(0, 0), sendTime, new chanType(c), null, false));
 18384  		startTimer(t.r);
 18385  		return t;
 18386  	};
 18387  	$pkg.NewTimer = NewTimer;
 18388  	Timer.ptr.prototype.Reset = function(d) {
 18389  		var active, d, t, w;
 18390  		t = this;
 18391  		if (t.r.f === $throwNilPointerError) {
 18392  			$panic(new $String("time: Reset called on uninitialized Timer"));
 18393  		}
 18394  		w = when(d);
 18395  		active = stopTimer(t.r);
 18396  		t.r.when = w;
 18397  		startTimer(t.r);
 18398  		return active;
 18399  	};
 18400  	Timer.prototype.Reset = function(d) { return this.$val.Reset(d); };
 18401  	sendTime = function(c, seq) {
 18402  		var _selection, c, seq, $r;
 18403  		/* */ var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _selection = $f._selection; c = $f.c; seq = $f.seq; $r = $f.$r; }
 18404  		_selection = $select([[$assertType(c, chanType), $clone(Now(), Time)], []]);
 18405  		if (_selection[0] === 0) {
 18406  		} else if (_selection[0] === 1) {
 18407  		}
 18408  		/* */ if ($f === undefined) { $f = { $blk: sendTime }; } $f._selection = _selection; $f.c = c; $f.seq = seq; $f.$r = $r; return $f;
 18409  	};
 18410  	After = function(d) {
 18411  		var d;
 18412  		return NewTimer(d).C;
 18413  	};
 18414  	$pkg.After = After;
 18415  	AfterFunc = function(d, f) {
 18416  		var d, f, t;
 18417  		t = new Timer.ptr($chanNil, new runtimeTimer.ptr(0, when(d), new $Int64(0, 0), goFunc, new funcType(f), null, false));
 18418  		startTimer(t.r);
 18419  		return t;
 18420  	};
 18421  	$pkg.AfterFunc = AfterFunc;
 18422  	goFunc = function(arg, seq) {
 18423  		var arg, seq;
 18424  		$go($assertType(arg, funcType), []);
 18425  	};
 18426  	NewTicker = function(d) {
 18427  		var c, d, t;
 18428  		if ((d.$high < 0 || (d.$high === 0 && d.$low <= 0))) {
 18429  			$panic(errors.New("non-positive interval for NewTicker"));
 18430  		}
 18431  		c = new $Chan(Time, 1);
 18432  		t = new Ticker.ptr(c, new runtimeTimer.ptr(0, when(d), (new $Int64(d.$high, d.$low)), sendTime, new chanType(c), null, false));
 18433  		startTimer(t.r);
 18434  		return t;
 18435  	};
 18436  	$pkg.NewTicker = NewTicker;
 18437  	Ticker.ptr.prototype.Stop = function() {
 18438  		var t;
 18439  		t = this;
 18440  		stopTimer(t.r);
 18441  	};
 18442  	Ticker.prototype.Stop = function() { return this.$val.Stop(); };
 18443  	Time.ptr.prototype.nsec = function() {
 18444  		var t, x;
 18445  		t = this;
 18446  		return (((x = t.wall, new $Uint64(x.$high & 0, (x.$low & 1073741823) >>> 0)).$low >> 0));
 18447  	};
 18448  	Time.prototype.nsec = function() { return this.$val.nsec(); };
 18449  	Time.ptr.prototype.sec = function() {
 18450  		var t, x, x$1, x$2, x$3;
 18451  		t = this;
 18452  		if (!((x = (x$1 = t.wall, new $Uint64(x$1.$high & 2147483648, (x$1.$low & 0) >>> 0)), (x.$high === 0 && x.$low === 0)))) {
 18453  			return (x$2 = ((x$3 = $shiftRightUint64($shiftLeft64(t.wall, 1), 31), new $Int64(x$3.$high, x$3.$low))), new $Int64(13 + x$2.$high, 3618733952 + x$2.$low));
 18454  		}
 18455  		return (t.ext);
 18456  	};
 18457  	Time.prototype.sec = function() { return this.$val.sec(); };
 18458  	Time.ptr.prototype.unixSec = function() {
 18459  		var t, x;
 18460  		t = this;
 18461  		return (x = t.sec(), new $Int64(x.$high + -15, x.$low + 2288912640));
 18462  	};
 18463  	Time.prototype.unixSec = function() { return this.$val.unixSec(); };
 18464  	Time.ptr.prototype.addSec = function(d) {
 18465  		var d, dsec, sec, t, x, x$1, x$2, x$3, x$4, x$5, x$6, x$7, x$8;
 18466  		t = this;
 18467  		if (!((x = (x$1 = t.wall, new $Uint64(x$1.$high & 2147483648, (x$1.$low & 0) >>> 0)), (x.$high === 0 && x.$low === 0)))) {
 18468  			sec = ((x$2 = $shiftRightUint64($shiftLeft64(t.wall, 1), 31), new $Int64(x$2.$high, x$2.$low)));
 18469  			dsec = new $Int64(sec.$high + d.$high, sec.$low + d.$low);
 18470  			if ((0 < dsec.$high || (0 === dsec.$high && 0 <= dsec.$low)) && (dsec.$high < 1 || (dsec.$high === 1 && dsec.$low <= 4294967295))) {
 18471  				t.wall = (x$3 = (x$4 = (x$5 = t.wall, new $Uint64(x$5.$high & 0, (x$5.$low & 1073741823) >>> 0)), x$6 = $shiftLeft64((new $Uint64(dsec.$high, dsec.$low)), 30), new $Uint64(x$4.$high | x$6.$high, (x$4.$low | x$6.$low) >>> 0)), new $Uint64(x$3.$high | 2147483648, (x$3.$low | 0) >>> 0));
 18472  				return;
 18473  			}
 18474  			t.stripMono();
 18475  		}
 18476  		t.ext = (x$7 = t.ext, x$8 = d, new $Int64(x$7.$high + x$8.$high, x$7.$low + x$8.$low));
 18477  	};
 18478  	Time.prototype.addSec = function(d) { return this.$val.addSec(d); };
 18479  	Time.ptr.prototype.setLoc = function(loc) {
 18480  		var loc, t;
 18481  		t = this;
 18482  		if (loc === utcLoc) {
 18483  			loc = ptrType$2.nil;
 18484  		}
 18485  		t.stripMono();
 18486  		t.loc = loc;
 18487  	};
 18488  	Time.prototype.setLoc = function(loc) { return this.$val.setLoc(loc); };
 18489  	Time.ptr.prototype.stripMono = function() {
 18490  		var t, x, x$1, x$2, x$3;
 18491  		t = this;
 18492  		if (!((x = (x$1 = t.wall, new $Uint64(x$1.$high & 2147483648, (x$1.$low & 0) >>> 0)), (x.$high === 0 && x.$low === 0)))) {
 18493  			t.ext = t.sec();
 18494  			t.wall = (x$2 = t.wall, x$3 = new $Uint64(0, 1073741823), new $Uint64(x$2.$high & x$3.$high, (x$2.$low & x$3.$low) >>> 0));
 18495  		}
 18496  	};
 18497  	Time.prototype.stripMono = function() { return this.$val.stripMono(); };
 18498  	Time.ptr.prototype.After = function(u) {
 18499  		var t, ts, u, us, x, x$1, x$2, x$3, x$4, x$5;
 18500  		t = this;
 18501  		if (!((x = (x$1 = (x$2 = t.wall, x$3 = u.wall, new $Uint64(x$2.$high & x$3.$high, (x$2.$low & x$3.$low) >>> 0)), new $Uint64(x$1.$high & 2147483648, (x$1.$low & 0) >>> 0)), (x.$high === 0 && x.$low === 0)))) {
 18502  			return (x$4 = t.ext, x$5 = u.ext, (x$4.$high > x$5.$high || (x$4.$high === x$5.$high && x$4.$low > x$5.$low)));
 18503  		}
 18504  		ts = t.sec();
 18505  		us = u.sec();
 18506  		return (ts.$high > us.$high || (ts.$high === us.$high && ts.$low > us.$low)) || (ts.$high === us.$high && ts.$low === us.$low) && t.nsec() > u.nsec();
 18507  	};
 18508  	Time.prototype.After = function(u) { return this.$val.After(u); };
 18509  	Time.ptr.prototype.Before = function(u) {
 18510  		var t, u, x, x$1, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9;
 18511  		t = this;
 18512  		if (!((x = (x$1 = (x$2 = t.wall, x$3 = u.wall, new $Uint64(x$2.$high & x$3.$high, (x$2.$low & x$3.$low) >>> 0)), new $Uint64(x$1.$high & 2147483648, (x$1.$low & 0) >>> 0)), (x.$high === 0 && x.$low === 0)))) {
 18513  			return (x$4 = t.ext, x$5 = u.ext, (x$4.$high < x$5.$high || (x$4.$high === x$5.$high && x$4.$low < x$5.$low)));
 18514  		}
 18515  		return (x$6 = t.sec(), x$7 = u.sec(), (x$6.$high < x$7.$high || (x$6.$high === x$7.$high && x$6.$low < x$7.$low))) || (x$8 = t.sec(), x$9 = u.sec(), (x$8.$high === x$9.$high && x$8.$low === x$9.$low)) && t.nsec() < u.nsec();
 18516  	};
 18517  	Time.prototype.Before = function(u) { return this.$val.Before(u); };
 18518  	Time.ptr.prototype.Equal = function(u) {
 18519  		var t, u, x, x$1, x$2, x$3, x$4, x$5, x$6, x$7;
 18520  		t = this;
 18521  		if (!((x = (x$1 = (x$2 = t.wall, x$3 = u.wall, new $Uint64(x$2.$high & x$3.$high, (x$2.$low & x$3.$low) >>> 0)), new $Uint64(x$1.$high & 2147483648, (x$1.$low & 0) >>> 0)), (x.$high === 0 && x.$low === 0)))) {
 18522  			return (x$4 = t.ext, x$5 = u.ext, (x$4.$high === x$5.$high && x$4.$low === x$5.$low));
 18523  		}
 18524  		return (x$6 = t.sec(), x$7 = u.sec(), (x$6.$high === x$7.$high && x$6.$low === x$7.$low)) && (t.nsec() === u.nsec());
 18525  	};
 18526  	Time.prototype.Equal = function(u) { return this.$val.Equal(u); };
 18527  	Month.prototype.String = function() {
 18528  		var buf, m, n, x;
 18529  		m = this.$val;
 18530  		if (1 <= m && m <= 12) {
 18531  			return (x = m - 1 >> 0, ((x < 0 || x >= months.length) ? ($throwRuntimeError("index out of range"), undefined) : months[x]));
 18532  		}
 18533  		buf = $makeSlice(sliceType$3, 20);
 18534  		n = fmtInt(buf, (new $Uint64(0, m)));
 18535  		return "%!Month(" + ($bytesToString($subslice(buf, n))) + ")";
 18536  	};
 18537  	$ptrType(Month).prototype.String = function() { return new Month(this.$get()).String(); };
 18538  	Weekday.prototype.String = function() {
 18539  		var d;
 18540  		d = this.$val;
 18541  		return ((d < 0 || d >= days.length) ? ($throwRuntimeError("index out of range"), undefined) : days[d]);
 18542  	};
 18543  	$ptrType(Weekday).prototype.String = function() { return new Weekday(this.$get()).String(); };
 18544  	Time.ptr.prototype.IsZero = function() {
 18545  		var t, x;
 18546  		t = this;
 18547  		return (x = t.sec(), (x.$high === 0 && x.$low === 0)) && (t.nsec() === 0);
 18548  	};
 18549  	Time.prototype.IsZero = function() { return this.$val.IsZero(); };
 18550  	Time.ptr.prototype.abs = function() {
 18551  		var _r, _r$1, _tuple, l, offset, sec, t, x, x$1, x$2, x$3, x$4, $s, $r;
 18552  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _tuple = $f._tuple; l = $f.l; offset = $f.offset; sec = $f.sec; t = $f.t; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; x$3 = $f.x$3; x$4 = $f.x$4; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 18553  		t = this;
 18554  		l = t.loc;
 18555  		/* */ if (l === ptrType$2.nil || l === localLoc) { $s = 1; continue; }
 18556  		/* */ $s = 2; continue;
 18557  		/* if (l === ptrType$2.nil || l === localLoc) { */ case 1:
 18558  			_r = l.get(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 18559  			l = _r;
 18560  		/* } */ case 2:
 18561  		sec = t.unixSec();
 18562  		/* */ if (!(l === utcLoc)) { $s = 4; continue; }
 18563  		/* */ $s = 5; continue;
 18564  		/* if (!(l === utcLoc)) { */ case 4:
 18565  			/* */ if (!(l.cacheZone === ptrType.nil) && (x = l.cacheStart, (x.$high < sec.$high || (x.$high === sec.$high && x.$low <= sec.$low))) && (x$1 = l.cacheEnd, (sec.$high < x$1.$high || (sec.$high === x$1.$high && sec.$low < x$1.$low)))) { $s = 6; continue; }
 18566  			/* */ $s = 7; continue;
 18567  			/* if (!(l.cacheZone === ptrType.nil) && (x = l.cacheStart, (x.$high < sec.$high || (x.$high === sec.$high && x.$low <= sec.$low))) && (x$1 = l.cacheEnd, (sec.$high < x$1.$high || (sec.$high === x$1.$high && sec.$low < x$1.$low)))) { */ case 6:
 18568  				sec = (x$2 = (new $Int64(0, l.cacheZone.offset)), new $Int64(sec.$high + x$2.$high, sec.$low + x$2.$low));
 18569  				$s = 8; continue;
 18570  			/* } else { */ case 7:
 18571  				_r$1 = l.lookup(sec); /* */ $s = 9; case 9: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 18572  				_tuple = _r$1;
 18573  				offset = _tuple[1];
 18574  				sec = (x$3 = (new $Int64(0, offset)), new $Int64(sec.$high + x$3.$high, sec.$low + x$3.$low));
 18575  			/* } */ case 8:
 18576  		/* } */ case 5:
 18577  		$s = -1; return ((x$4 = new $Int64(sec.$high + 2147483646, sec.$low + 450480384), new $Uint64(x$4.$high, x$4.$low)));
 18578  		/* */ } return; } if ($f === undefined) { $f = { $blk: Time.ptr.prototype.abs }; } $f._r = _r; $f._r$1 = _r$1; $f._tuple = _tuple; $f.l = l; $f.offset = offset; $f.sec = sec; $f.t = t; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.x$3 = x$3; $f.x$4 = x$4; $f.$s = $s; $f.$r = $r; return $f;
 18579  	};
 18580  	Time.prototype.abs = function() { return this.$val.abs(); };
 18581  	Time.ptr.prototype.locabs = function() {
 18582  		var _r, _r$1, _tuple, abs, l, name, offset, sec, t, x, x$1, x$2, x$3, $s, $r;
 18583  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _tuple = $f._tuple; abs = $f.abs; l = $f.l; name = $f.name; offset = $f.offset; sec = $f.sec; t = $f.t; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; x$3 = $f.x$3; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 18584  		name = "";
 18585  		offset = 0;
 18586  		abs = new $Uint64(0, 0);
 18587  		t = this;
 18588  		l = t.loc;
 18589  		/* */ if (l === ptrType$2.nil || l === localLoc) { $s = 1; continue; }
 18590  		/* */ $s = 2; continue;
 18591  		/* if (l === ptrType$2.nil || l === localLoc) { */ case 1:
 18592  			_r = l.get(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 18593  			l = _r;
 18594  		/* } */ case 2:
 18595  		sec = t.unixSec();
 18596  		/* */ if (!(l === utcLoc)) { $s = 4; continue; }
 18597  		/* */ $s = 5; continue;
 18598  		/* if (!(l === utcLoc)) { */ case 4:
 18599  			/* */ if (!(l.cacheZone === ptrType.nil) && (x = l.cacheStart, (x.$high < sec.$high || (x.$high === sec.$high && x.$low <= sec.$low))) && (x$1 = l.cacheEnd, (sec.$high < x$1.$high || (sec.$high === x$1.$high && sec.$low < x$1.$low)))) { $s = 7; continue; }
 18600  			/* */ $s = 8; continue;
 18601  			/* if (!(l.cacheZone === ptrType.nil) && (x = l.cacheStart, (x.$high < sec.$high || (x.$high === sec.$high && x.$low <= sec.$low))) && (x$1 = l.cacheEnd, (sec.$high < x$1.$high || (sec.$high === x$1.$high && sec.$low < x$1.$low)))) { */ case 7:
 18602  				name = l.cacheZone.name;
 18603  				offset = l.cacheZone.offset;
 18604  				$s = 9; continue;
 18605  			/* } else { */ case 8:
 18606  				_r$1 = l.lookup(sec); /* */ $s = 10; case 10: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 18607  				_tuple = _r$1;
 18608  				name = _tuple[0];
 18609  				offset = _tuple[1];
 18610  			/* } */ case 9:
 18611  			sec = (x$2 = (new $Int64(0, offset)), new $Int64(sec.$high + x$2.$high, sec.$low + x$2.$low));
 18612  			$s = 6; continue;
 18613  		/* } else { */ case 5:
 18614  			name = "UTC";
 18615  		/* } */ case 6:
 18616  		abs = ((x$3 = new $Int64(sec.$high + 2147483646, sec.$low + 450480384), new $Uint64(x$3.$high, x$3.$low)));
 18617  		$s = -1; return [name, offset, abs];
 18618  		/* */ } return; } if ($f === undefined) { $f = { $blk: Time.ptr.prototype.locabs }; } $f._r = _r; $f._r$1 = _r$1; $f._tuple = _tuple; $f.abs = abs; $f.l = l; $f.name = name; $f.offset = offset; $f.sec = sec; $f.t = t; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.x$3 = x$3; $f.$s = $s; $f.$r = $r; return $f;
 18619  	};
 18620  	Time.prototype.locabs = function() { return this.$val.locabs(); };
 18621  	Time.ptr.prototype.Date = function() {
 18622  		var _r, _tuple, day, month, t, year, $s, $r;
 18623  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; day = $f.day; month = $f.month; t = $f.t; year = $f.year; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 18624  		year = 0;
 18625  		month = 0;
 18626  		day = 0;
 18627  		t = this;
 18628  		_r = $clone(t, Time).date(true); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 18629  		_tuple = _r;
 18630  		year = _tuple[0];
 18631  		month = _tuple[1];
 18632  		day = _tuple[2];
 18633  		$s = -1; return [year, month, day];
 18634  		/* */ } return; } if ($f === undefined) { $f = { $blk: Time.ptr.prototype.Date }; } $f._r = _r; $f._tuple = _tuple; $f.day = day; $f.month = month; $f.t = t; $f.year = year; $f.$s = $s; $f.$r = $r; return $f;
 18635  	};
 18636  	Time.prototype.Date = function() { return this.$val.Date(); };
 18637  	Time.ptr.prototype.Year = function() {
 18638  		var _r, _tuple, t, year, $s, $r;
 18639  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; t = $f.t; year = $f.year; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 18640  		t = this;
 18641  		_r = $clone(t, Time).date(false); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 18642  		_tuple = _r;
 18643  		year = _tuple[0];
 18644  		$s = -1; return year;
 18645  		/* */ } return; } if ($f === undefined) { $f = { $blk: Time.ptr.prototype.Year }; } $f._r = _r; $f._tuple = _tuple; $f.t = t; $f.year = year; $f.$s = $s; $f.$r = $r; return $f;
 18646  	};
 18647  	Time.prototype.Year = function() { return this.$val.Year(); };
 18648  	Time.ptr.prototype.Month = function() {
 18649  		var _r, _tuple, month, t, $s, $r;
 18650  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; month = $f.month; t = $f.t; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 18651  		t = this;
 18652  		_r = $clone(t, Time).date(true); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 18653  		_tuple = _r;
 18654  		month = _tuple[1];
 18655  		$s = -1; return month;
 18656  		/* */ } return; } if ($f === undefined) { $f = { $blk: Time.ptr.prototype.Month }; } $f._r = _r; $f._tuple = _tuple; $f.month = month; $f.t = t; $f.$s = $s; $f.$r = $r; return $f;
 18657  	};
 18658  	Time.prototype.Month = function() { return this.$val.Month(); };
 18659  	Time.ptr.prototype.Day = function() {
 18660  		var _r, _tuple, day, t, $s, $r;
 18661  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; day = $f.day; t = $f.t; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 18662  		t = this;
 18663  		_r = $clone(t, Time).date(true); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 18664  		_tuple = _r;
 18665  		day = _tuple[2];
 18666  		$s = -1; return day;
 18667  		/* */ } return; } if ($f === undefined) { $f = { $blk: Time.ptr.prototype.Day }; } $f._r = _r; $f._tuple = _tuple; $f.day = day; $f.t = t; $f.$s = $s; $f.$r = $r; return $f;
 18668  	};
 18669  	Time.prototype.Day = function() { return this.$val.Day(); };
 18670  	Time.ptr.prototype.Weekday = function() {
 18671  		var _r, _r$1, t, $s, $r;
 18672  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; t = $f.t; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 18673  		t = this;
 18674  		_r = $clone(t, Time).abs(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 18675  		_r$1 = absWeekday(_r); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 18676  		$s = -1; return _r$1;
 18677  		/* */ } return; } if ($f === undefined) { $f = { $blk: Time.ptr.prototype.Weekday }; } $f._r = _r; $f._r$1 = _r$1; $f.t = t; $f.$s = $s; $f.$r = $r; return $f;
 18678  	};
 18679  	Time.prototype.Weekday = function() { return this.$val.Weekday(); };
 18680  	absWeekday = function(abs) {
 18681  		var _q, abs, sec;
 18682  		sec = $div64((new $Uint64(abs.$high + 0, abs.$low + 86400)), new $Uint64(0, 604800), true);
 18683  		return (((_q = ((sec.$low >> 0)) / 86400, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")) >> 0));
 18684  	};
 18685  	Time.ptr.prototype.ISOWeek = function() {
 18686  		var _q, _r, _r$1, _r$2, _r$3, _r$4, _tuple, day, dec31wday, jan1wday, month, t, wday, week, yday, year, $s, $r;
 18687  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _q = $f._q; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _tuple = $f._tuple; day = $f.day; dec31wday = $f.dec31wday; jan1wday = $f.jan1wday; month = $f.month; t = $f.t; wday = $f.wday; week = $f.week; yday = $f.yday; year = $f.year; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 18688  		year = 0;
 18689  		week = 0;
 18690  		t = this;
 18691  		_r = $clone(t, Time).date(true); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 18692  		_tuple = _r;
 18693  		year = _tuple[0];
 18694  		month = _tuple[1];
 18695  		day = _tuple[2];
 18696  		yday = _tuple[3];
 18697  		_r$2 = $clone(t, Time).Weekday(); /* */ $s = 2; case 2: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 18698  		wday = (_r$1 = (((_r$2 + 6 >> 0) >> 0)) % 7, _r$1 === _r$1 ? _r$1 : $throwRuntimeError("integer divide by zero"));
 18699  		week = (_q = (((yday - wday >> 0) + 7 >> 0)) / 7, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero"));
 18700  		jan1wday = (_r$3 = (((wday - yday >> 0) + 371 >> 0)) % 7, _r$3 === _r$3 ? _r$3 : $throwRuntimeError("integer divide by zero"));
 18701  		if (1 <= jan1wday && jan1wday <= 3) {
 18702  			week = week + (1) >> 0;
 18703  		}
 18704  		if (week === 0) {
 18705  			year = year - (1) >> 0;
 18706  			week = 52;
 18707  			if ((jan1wday === 4) || ((jan1wday === 5) && isLeap(year))) {
 18708  				week = week + (1) >> 0;
 18709  			}
 18710  		}
 18711  		if ((month === 12) && day >= 29 && wday < 3) {
 18712  			dec31wday = (_r$4 = (((wday + 31 >> 0) - day >> 0)) % 7, _r$4 === _r$4 ? _r$4 : $throwRuntimeError("integer divide by zero"));
 18713  			if (0 <= dec31wday && dec31wday <= 2) {
 18714  				year = year + (1) >> 0;
 18715  				week = 1;
 18716  			}
 18717  		}
 18718  		$s = -1; return [year, week];
 18719  		/* */ } return; } if ($f === undefined) { $f = { $blk: Time.ptr.prototype.ISOWeek }; } $f._q = _q; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._tuple = _tuple; $f.day = day; $f.dec31wday = dec31wday; $f.jan1wday = jan1wday; $f.month = month; $f.t = t; $f.wday = wday; $f.week = week; $f.yday = yday; $f.year = year; $f.$s = $s; $f.$r = $r; return $f;
 18720  	};
 18721  	Time.prototype.ISOWeek = function() { return this.$val.ISOWeek(); };
 18722  	Time.ptr.prototype.Clock = function() {
 18723  		var _r, _r$1, _tuple, hour, min, sec, t, $s, $r;
 18724  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _tuple = $f._tuple; hour = $f.hour; min = $f.min; sec = $f.sec; t = $f.t; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 18725  		hour = 0;
 18726  		min = 0;
 18727  		sec = 0;
 18728  		t = this;
 18729  		_r = $clone(t, Time).abs(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 18730  		_r$1 = absClock(_r); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 18731  		_tuple = _r$1;
 18732  		hour = _tuple[0];
 18733  		min = _tuple[1];
 18734  		sec = _tuple[2];
 18735  		$s = -1; return [hour, min, sec];
 18736  		/* */ } return; } if ($f === undefined) { $f = { $blk: Time.ptr.prototype.Clock }; } $f._r = _r; $f._r$1 = _r$1; $f._tuple = _tuple; $f.hour = hour; $f.min = min; $f.sec = sec; $f.t = t; $f.$s = $s; $f.$r = $r; return $f;
 18737  	};
 18738  	Time.prototype.Clock = function() { return this.$val.Clock(); };
 18739  	absClock = function(abs) {
 18740  		var _q, _q$1, abs, hour, min, sec;
 18741  		hour = 0;
 18742  		min = 0;
 18743  		sec = 0;
 18744  		sec = (($div64(abs, new $Uint64(0, 86400), true).$low >> 0));
 18745  		hour = (_q = sec / 3600, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero"));
 18746  		sec = sec - (($imul(hour, 3600))) >> 0;
 18747  		min = (_q$1 = sec / 60, (_q$1 === _q$1 && _q$1 !== 1/0 && _q$1 !== -1/0) ? _q$1 >> 0 : $throwRuntimeError("integer divide by zero"));
 18748  		sec = sec - (($imul(min, 60))) >> 0;
 18749  		return [hour, min, sec];
 18750  	};
 18751  	Time.ptr.prototype.Hour = function() {
 18752  		var _q, _r, t, $s, $r;
 18753  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _q = $f._q; _r = $f._r; t = $f.t; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 18754  		t = this;
 18755  		_r = $clone(t, Time).abs(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 18756  		$s = -1; return (_q = (($div64(_r, new $Uint64(0, 86400), true).$low >> 0)) / 3600, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero"));
 18757  		/* */ } return; } if ($f === undefined) { $f = { $blk: Time.ptr.prototype.Hour }; } $f._q = _q; $f._r = _r; $f.t = t; $f.$s = $s; $f.$r = $r; return $f;
 18758  	};
 18759  	Time.prototype.Hour = function() { return this.$val.Hour(); };
 18760  	Time.ptr.prototype.Minute = function() {
 18761  		var _q, _r, t, $s, $r;
 18762  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _q = $f._q; _r = $f._r; t = $f.t; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 18763  		t = this;
 18764  		_r = $clone(t, Time).abs(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 18765  		$s = -1; return (_q = (($div64(_r, new $Uint64(0, 3600), true).$low >> 0)) / 60, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero"));
 18766  		/* */ } return; } if ($f === undefined) { $f = { $blk: Time.ptr.prototype.Minute }; } $f._q = _q; $f._r = _r; $f.t = t; $f.$s = $s; $f.$r = $r; return $f;
 18767  	};
 18768  	Time.prototype.Minute = function() { return this.$val.Minute(); };
 18769  	Time.ptr.prototype.Second = function() {
 18770  		var _r, t, $s, $r;
 18771  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; t = $f.t; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 18772  		t = this;
 18773  		_r = $clone(t, Time).abs(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 18774  		$s = -1; return (($div64(_r, new $Uint64(0, 60), true).$low >> 0));
 18775  		/* */ } return; } if ($f === undefined) { $f = { $blk: Time.ptr.prototype.Second }; } $f._r = _r; $f.t = t; $f.$s = $s; $f.$r = $r; return $f;
 18776  	};
 18777  	Time.prototype.Second = function() { return this.$val.Second(); };
 18778  	Time.ptr.prototype.Nanosecond = function() {
 18779  		var t;
 18780  		t = this;
 18781  		return ((t.nsec() >> 0));
 18782  	};
 18783  	Time.prototype.Nanosecond = function() { return this.$val.Nanosecond(); };
 18784  	Time.ptr.prototype.YearDay = function() {
 18785  		var _r, _tuple, t, yday, $s, $r;
 18786  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; t = $f.t; yday = $f.yday; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 18787  		t = this;
 18788  		_r = $clone(t, Time).date(false); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 18789  		_tuple = _r;
 18790  		yday = _tuple[3];
 18791  		$s = -1; return yday + 1 >> 0;
 18792  		/* */ } return; } if ($f === undefined) { $f = { $blk: Time.ptr.prototype.YearDay }; } $f._r = _r; $f._tuple = _tuple; $f.t = t; $f.yday = yday; $f.$s = $s; $f.$r = $r; return $f;
 18793  	};
 18794  	Time.prototype.YearDay = function() { return this.$val.YearDay(); };
 18795  	Duration.prototype.String = function() {
 18796  		var _tuple, _tuple$1, buf, d, neg, prec, u, w;
 18797  		d = this;
 18798  		buf = arrayType$3.zero();
 18799  		w = 32;
 18800  		u = (new $Uint64(d.$high, d.$low));
 18801  		neg = (d.$high < 0 || (d.$high === 0 && d.$low < 0));
 18802  		if (neg) {
 18803  			u = new $Uint64(-u.$high, -u.$low);
 18804  		}
 18805  		if ((u.$high < 0 || (u.$high === 0 && u.$low < 1000000000))) {
 18806  			prec = 0;
 18807  			w = w - (1) >> 0;
 18808  			((w < 0 || w >= buf.length) ? ($throwRuntimeError("index out of range"), undefined) : buf[w] = 115);
 18809  			w = w - (1) >> 0;
 18810  			if ((u.$high === 0 && u.$low === 0)) {
 18811  				return "0s";
 18812  			} else if ((u.$high < 0 || (u.$high === 0 && u.$low < 1000))) {
 18813  				prec = 0;
 18814  				((w < 0 || w >= buf.length) ? ($throwRuntimeError("index out of range"), undefined) : buf[w] = 110);
 18815  			} else if ((u.$high < 0 || (u.$high === 0 && u.$low < 1000000))) {
 18816  				prec = 3;
 18817  				w = w - (1) >> 0;
 18818  				$copyString($subslice(new sliceType$3(buf), w), "\xC2\xB5");
 18819  			} else {
 18820  				prec = 6;
 18821  				((w < 0 || w >= buf.length) ? ($throwRuntimeError("index out of range"), undefined) : buf[w] = 109);
 18822  			}
 18823  			_tuple = fmtFrac($subslice(new sliceType$3(buf), 0, w), u, prec);
 18824  			w = _tuple[0];
 18825  			u = _tuple[1];
 18826  			w = fmtInt($subslice(new sliceType$3(buf), 0, w), u);
 18827  		} else {
 18828  			w = w - (1) >> 0;
 18829  			((w < 0 || w >= buf.length) ? ($throwRuntimeError("index out of range"), undefined) : buf[w] = 115);
 18830  			_tuple$1 = fmtFrac($subslice(new sliceType$3(buf), 0, w), u, 9);
 18831  			w = _tuple$1[0];
 18832  			u = _tuple$1[1];
 18833  			w = fmtInt($subslice(new sliceType$3(buf), 0, w), $div64(u, new $Uint64(0, 60), true));
 18834  			u = $div64(u, (new $Uint64(0, 60)), false);
 18835  			if ((u.$high > 0 || (u.$high === 0 && u.$low > 0))) {
 18836  				w = w - (1) >> 0;
 18837  				((w < 0 || w >= buf.length) ? ($throwRuntimeError("index out of range"), undefined) : buf[w] = 109);
 18838  				w = fmtInt($subslice(new sliceType$3(buf), 0, w), $div64(u, new $Uint64(0, 60), true));
 18839  				u = $div64(u, (new $Uint64(0, 60)), false);
 18840  				if ((u.$high > 0 || (u.$high === 0 && u.$low > 0))) {
 18841  					w = w - (1) >> 0;
 18842  					((w < 0 || w >= buf.length) ? ($throwRuntimeError("index out of range"), undefined) : buf[w] = 104);
 18843  					w = fmtInt($subslice(new sliceType$3(buf), 0, w), u);
 18844  				}
 18845  			}
 18846  		}
 18847  		if (neg) {
 18848  			w = w - (1) >> 0;
 18849  			((w < 0 || w >= buf.length) ? ($throwRuntimeError("index out of range"), undefined) : buf[w] = 45);
 18850  		}
 18851  		return ($bytesToString($subslice(new sliceType$3(buf), w)));
 18852  	};
 18853  	$ptrType(Duration).prototype.String = function() { return this.$get().String(); };
 18854  	fmtFrac = function(buf, v, prec) {
 18855  		var _tmp, _tmp$1, buf, digit, i, nv, nw, prec, print, v, w;
 18856  		nw = 0;
 18857  		nv = new $Uint64(0, 0);
 18858  		w = buf.$length;
 18859  		print = false;
 18860  		i = 0;
 18861  		while (true) {
 18862  			if (!(i < prec)) { break; }
 18863  			digit = $div64(v, new $Uint64(0, 10), true);
 18864  			print = print || !((digit.$high === 0 && digit.$low === 0));
 18865  			if (print) {
 18866  				w = w - (1) >> 0;
 18867  				((w < 0 || w >= buf.$length) ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + w] = (((digit.$low << 24 >>> 24)) + 48 << 24 >>> 24));
 18868  			}
 18869  			v = $div64(v, (new $Uint64(0, 10)), false);
 18870  			i = i + (1) >> 0;
 18871  		}
 18872  		if (print) {
 18873  			w = w - (1) >> 0;
 18874  			((w < 0 || w >= buf.$length) ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + w] = 46);
 18875  		}
 18876  		_tmp = w;
 18877  		_tmp$1 = v;
 18878  		nw = _tmp;
 18879  		nv = _tmp$1;
 18880  		return [nw, nv];
 18881  	};
 18882  	fmtInt = function(buf, v) {
 18883  		var buf, v, w;
 18884  		w = buf.$length;
 18885  		if ((v.$high === 0 && v.$low === 0)) {
 18886  			w = w - (1) >> 0;
 18887  			((w < 0 || w >= buf.$length) ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + w] = 48);
 18888  		} else {
 18889  			while (true) {
 18890  				if (!((v.$high > 0 || (v.$high === 0 && v.$low > 0)))) { break; }
 18891  				w = w - (1) >> 0;
 18892  				((w < 0 || w >= buf.$length) ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + w] = ((($div64(v, new $Uint64(0, 10), true).$low << 24 >>> 24)) + 48 << 24 >>> 24));
 18893  				v = $div64(v, (new $Uint64(0, 10)), false);
 18894  			}
 18895  		}
 18896  		return w;
 18897  	};
 18898  	Duration.prototype.Nanoseconds = function() {
 18899  		var d;
 18900  		d = this;
 18901  		return (new $Int64(d.$high, d.$low));
 18902  	};
 18903  	$ptrType(Duration).prototype.Nanoseconds = function() { return this.$get().Nanoseconds(); };
 18904  	Duration.prototype.Seconds = function() {
 18905  		var d, nsec, sec;
 18906  		d = this;
 18907  		sec = $div64(d, new Duration(0, 1000000000), false);
 18908  		nsec = $div64(d, new Duration(0, 1000000000), true);
 18909  		return ($flatten64(sec)) + ($flatten64(nsec)) / 1e+09;
 18910  	};
 18911  	$ptrType(Duration).prototype.Seconds = function() { return this.$get().Seconds(); };
 18912  	Duration.prototype.Minutes = function() {
 18913  		var d, min, nsec;
 18914  		d = this;
 18915  		min = $div64(d, new Duration(13, 4165425152), false);
 18916  		nsec = $div64(d, new Duration(13, 4165425152), true);
 18917  		return ($flatten64(min)) + ($flatten64(nsec)) / 6e+10;
 18918  	};
 18919  	$ptrType(Duration).prototype.Minutes = function() { return this.$get().Minutes(); };
 18920  	Duration.prototype.Hours = function() {
 18921  		var d, hour, nsec;
 18922  		d = this;
 18923  		hour = $div64(d, new Duration(838, 817405952), false);
 18924  		nsec = $div64(d, new Duration(838, 817405952), true);
 18925  		return ($flatten64(hour)) + ($flatten64(nsec)) / 3.6e+12;
 18926  	};
 18927  	$ptrType(Duration).prototype.Hours = function() { return this.$get().Hours(); };
 18928  	Duration.prototype.Truncate = function(m) {
 18929  		var d, m, x;
 18930  		d = this;
 18931  		if ((m.$high < 0 || (m.$high === 0 && m.$low <= 0))) {
 18932  			return d;
 18933  		}
 18934  		return (x = $div64(d, m, true), new Duration(d.$high - x.$high, d.$low - x.$low));
 18935  	};
 18936  	$ptrType(Duration).prototype.Truncate = function(m) { return this.$get().Truncate(m); };
 18937  	lessThanHalf = function(x, y) {
 18938  		var x, x$1, x$2, x$3, x$4, y;
 18939  		return (x$1 = (x$2 = (new $Uint64(x.$high, x.$low)), x$3 = (new $Uint64(x.$high, x.$low)), new $Uint64(x$2.$high + x$3.$high, x$2.$low + x$3.$low)), x$4 = (new $Uint64(y.$high, y.$low)), (x$1.$high < x$4.$high || (x$1.$high === x$4.$high && x$1.$low < x$4.$low)));
 18940  	};
 18941  	Duration.prototype.Round = function(m) {
 18942  		var d, d1, d1$1, m, r, x, x$1;
 18943  		d = this;
 18944  		if ((m.$high < 0 || (m.$high === 0 && m.$low <= 0))) {
 18945  			return d;
 18946  		}
 18947  		r = $div64(d, m, true);
 18948  		if ((d.$high < 0 || (d.$high === 0 && d.$low < 0))) {
 18949  			r = new Duration(-r.$high, -r.$low);
 18950  			if (lessThanHalf(r, m)) {
 18951  				return new Duration(d.$high + r.$high, d.$low + r.$low);
 18952  			}
 18953  			d1 = (x = new Duration(d.$high - m.$high, d.$low - m.$low), new Duration(x.$high + r.$high, x.$low + r.$low));
 18954  			if ((d1.$high < d.$high || (d1.$high === d.$high && d1.$low < d.$low))) {
 18955  				return d1;
 18956  			}
 18957  			return new Duration(-2147483648, 0);
 18958  		}
 18959  		if (lessThanHalf(r, m)) {
 18960  			return new Duration(d.$high - r.$high, d.$low - r.$low);
 18961  		}
 18962  		d1$1 = (x$1 = new Duration(d.$high + m.$high, d.$low + m.$low), new Duration(x$1.$high - r.$high, x$1.$low - r.$low));
 18963  		if ((d1$1.$high > d.$high || (d1$1.$high === d.$high && d1$1.$low > d.$low))) {
 18964  			return d1$1;
 18965  		}
 18966  		return new Duration(2147483647, 4294967295);
 18967  	};
 18968  	$ptrType(Duration).prototype.Round = function(m) { return this.$get().Round(m); };
 18969  	Time.ptr.prototype.Add = function(d) {
 18970  		var d, dsec, nsec, t, te, x, x$1, x$10, x$11, x$12, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9;
 18971  		t = this;
 18972  		dsec = ((x = $div64(d, new Duration(0, 1000000000), false), new $Int64(x.$high, x.$low)));
 18973  		nsec = t.nsec() + (((x$1 = $div64(d, new Duration(0, 1000000000), true), x$1.$low + ((x$1.$high >> 31) * 4294967296)) >> 0)) >> 0;
 18974  		if (nsec >= 1000000000) {
 18975  			dsec = (x$2 = new $Int64(0, 1), new $Int64(dsec.$high + x$2.$high, dsec.$low + x$2.$low));
 18976  			nsec = nsec - (1000000000) >> 0;
 18977  		} else if (nsec < 0) {
 18978  			dsec = (x$3 = new $Int64(0, 1), new $Int64(dsec.$high - x$3.$high, dsec.$low - x$3.$low));
 18979  			nsec = nsec + (1000000000) >> 0;
 18980  		}
 18981  		t.wall = (x$4 = (x$5 = t.wall, new $Uint64(x$5.$high & ~0, (x$5.$low & ~1073741823) >>> 0)), x$6 = (new $Uint64(0, nsec)), new $Uint64(x$4.$high | x$6.$high, (x$4.$low | x$6.$low) >>> 0));
 18982  		t.addSec(dsec);
 18983  		if (!((x$7 = (x$8 = t.wall, new $Uint64(x$8.$high & 2147483648, (x$8.$low & 0) >>> 0)), (x$7.$high === 0 && x$7.$low === 0)))) {
 18984  			te = (x$9 = t.ext, x$10 = (new $Int64(d.$high, d.$low)), new $Int64(x$9.$high + x$10.$high, x$9.$low + x$10.$low));
 18985  			if ((d.$high < 0 || (d.$high === 0 && d.$low < 0)) && (x$11 = (t.ext), (te.$high > x$11.$high || (te.$high === x$11.$high && te.$low > x$11.$low))) || (d.$high > 0 || (d.$high === 0 && d.$low > 0)) && (x$12 = (t.ext), (te.$high < x$12.$high || (te.$high === x$12.$high && te.$low < x$12.$low)))) {
 18986  				t.stripMono();
 18987  			} else {
 18988  				t.ext = te;
 18989  			}
 18990  		}
 18991  		return t;
 18992  	};
 18993  	Time.prototype.Add = function(d) { return this.$val.Add(d); };
 18994  	Time.ptr.prototype.Sub = function(u) {
 18995  		var d, d$1, t, te, u, ue, x, x$1, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9;
 18996  		t = this;
 18997  		if (!((x = (x$1 = (x$2 = t.wall, x$3 = u.wall, new $Uint64(x$2.$high & x$3.$high, (x$2.$low & x$3.$low) >>> 0)), new $Uint64(x$1.$high & 2147483648, (x$1.$low & 0) >>> 0)), (x.$high === 0 && x.$low === 0)))) {
 18998  			te = (t.ext);
 18999  			ue = (u.ext);
 19000  			d = ((x$4 = new $Int64(te.$high - ue.$high, te.$low - ue.$low), new Duration(x$4.$high, x$4.$low)));
 19001  			if ((d.$high < 0 || (d.$high === 0 && d.$low < 0)) && (te.$high > ue.$high || (te.$high === ue.$high && te.$low > ue.$low))) {
 19002  				return new Duration(2147483647, 4294967295);
 19003  			}
 19004  			if ((d.$high > 0 || (d.$high === 0 && d.$low > 0)) && (te.$high < ue.$high || (te.$high === ue.$high && te.$low < ue.$low))) {
 19005  				return new Duration(-2147483648, 0);
 19006  			}
 19007  			return d;
 19008  		}
 19009  		d$1 = (x$5 = $mul64(((x$6 = (x$7 = t.sec(), x$8 = u.sec(), new $Int64(x$7.$high - x$8.$high, x$7.$low - x$8.$low)), new Duration(x$6.$high, x$6.$low))), new Duration(0, 1000000000)), x$9 = (new Duration(0, (t.nsec() - u.nsec() >> 0))), new Duration(x$5.$high + x$9.$high, x$5.$low + x$9.$low));
 19010  		if ($clone($clone(u, Time).Add(d$1), Time).Equal($clone(t, Time))) {
 19011  			return d$1;
 19012  		} else if ($clone(t, Time).Before($clone(u, Time))) {
 19013  			return new Duration(-2147483648, 0);
 19014  		} else {
 19015  			return new Duration(2147483647, 4294967295);
 19016  		}
 19017  	};
 19018  	Time.prototype.Sub = function(u) { return this.$val.Sub(u); };
 19019  	Since = function(t) {
 19020  		var t;
 19021  		return $clone(Now(), Time).Sub($clone(t, Time));
 19022  	};
 19023  	$pkg.Since = Since;
 19024  	Until = function(t) {
 19025  		var t;
 19026  		return $clone(t, Time).Sub($clone(Now(), Time));
 19027  	};
 19028  	$pkg.Until = Until;
 19029  	Time.ptr.prototype.AddDate = function(years, months$1, days$1) {
 19030  		var _r, _r$1, _r$2, _tuple, _tuple$1, day, days$1, hour, min, month, months$1, sec, t, year, years, $s, $r;
 19031  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; day = $f.day; days$1 = $f.days$1; hour = $f.hour; min = $f.min; month = $f.month; months$1 = $f.months$1; sec = $f.sec; t = $f.t; year = $f.year; years = $f.years; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 19032  		t = this;
 19033  		_r = $clone(t, Time).Date(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 19034  		_tuple = _r;
 19035  		year = _tuple[0];
 19036  		month = _tuple[1];
 19037  		day = _tuple[2];
 19038  		_r$1 = $clone(t, Time).Clock(); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 19039  		_tuple$1 = _r$1;
 19040  		hour = _tuple$1[0];
 19041  		min = _tuple$1[1];
 19042  		sec = _tuple$1[2];
 19043  		_r$2 = Date(year + years >> 0, month + ((months$1 >> 0)) >> 0, day + days$1 >> 0, hour, min, sec, ((t.nsec() >> 0)), $clone(t, Time).Location()); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 19044  		$s = -1; return _r$2;
 19045  		/* */ } return; } if ($f === undefined) { $f = { $blk: Time.ptr.prototype.AddDate }; } $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.day = day; $f.days$1 = days$1; $f.hour = hour; $f.min = min; $f.month = month; $f.months$1 = months$1; $f.sec = sec; $f.t = t; $f.year = year; $f.years = years; $f.$s = $s; $f.$r = $r; return $f;
 19046  	};
 19047  	Time.prototype.AddDate = function(years, months$1, days$1) { return this.$val.AddDate(years, months$1, days$1); };
 19048  	Time.ptr.prototype.date = function(full) {
 19049  		var _r, _r$1, _tuple, day, full, month, t, yday, year, $s, $r;
 19050  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _tuple = $f._tuple; day = $f.day; full = $f.full; month = $f.month; t = $f.t; yday = $f.yday; year = $f.year; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 19051  		year = 0;
 19052  		month = 0;
 19053  		day = 0;
 19054  		yday = 0;
 19055  		t = this;
 19056  		_r = $clone(t, Time).abs(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 19057  		_r$1 = absDate(_r, full); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 19058  		_tuple = _r$1;
 19059  		year = _tuple[0];
 19060  		month = _tuple[1];
 19061  		day = _tuple[2];
 19062  		yday = _tuple[3];
 19063  		$s = -1; return [year, month, day, yday];
 19064  		/* */ } return; } if ($f === undefined) { $f = { $blk: Time.ptr.prototype.date }; } $f._r = _r; $f._r$1 = _r$1; $f._tuple = _tuple; $f.day = day; $f.full = full; $f.month = month; $f.t = t; $f.yday = yday; $f.year = year; $f.$s = $s; $f.$r = $r; return $f;
 19065  	};
 19066  	Time.prototype.date = function(full) { return this.$val.date(full); };
 19067  	absDate = function(abs, full) {
 19068  		var _q, abs, begin, d, day, end, full, month, n, x, x$1, x$10, x$11, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9, y, yday, year;
 19069  		year = 0;
 19070  		month = 0;
 19071  		day = 0;
 19072  		yday = 0;
 19073  		d = $div64(abs, new $Uint64(0, 86400), false);
 19074  		n = $div64(d, new $Uint64(0, 146097), false);
 19075  		y = $mul64(new $Uint64(0, 400), n);
 19076  		d = (x = $mul64(new $Uint64(0, 146097), n), new $Uint64(d.$high - x.$high, d.$low - x.$low));
 19077  		n = $div64(d, new $Uint64(0, 36524), false);
 19078  		n = (x$1 = $shiftRightUint64(n, 2), new $Uint64(n.$high - x$1.$high, n.$low - x$1.$low));
 19079  		y = (x$2 = $mul64(new $Uint64(0, 100), n), new $Uint64(y.$high + x$2.$high, y.$low + x$2.$low));
 19080  		d = (x$3 = $mul64(new $Uint64(0, 36524), n), new $Uint64(d.$high - x$3.$high, d.$low - x$3.$low));
 19081  		n = $div64(d, new $Uint64(0, 1461), false);
 19082  		y = (x$4 = $mul64(new $Uint64(0, 4), n), new $Uint64(y.$high + x$4.$high, y.$low + x$4.$low));
 19083  		d = (x$5 = $mul64(new $Uint64(0, 1461), n), new $Uint64(d.$high - x$5.$high, d.$low - x$5.$low));
 19084  		n = $div64(d, new $Uint64(0, 365), false);
 19085  		n = (x$6 = $shiftRightUint64(n, 2), new $Uint64(n.$high - x$6.$high, n.$low - x$6.$low));
 19086  		y = (x$7 = n, new $Uint64(y.$high + x$7.$high, y.$low + x$7.$low));
 19087  		d = (x$8 = $mul64(new $Uint64(0, 365), n), new $Uint64(d.$high - x$8.$high, d.$low - x$8.$low));
 19088  		year = (((x$9 = (x$10 = (new $Int64(y.$high, y.$low)), new $Int64(x$10.$high + -69, x$10.$low + 4075721025)), x$9.$low + ((x$9.$high >> 31) * 4294967296)) >> 0));
 19089  		yday = ((d.$low >> 0));
 19090  		if (!full) {
 19091  			return [year, month, day, yday];
 19092  		}
 19093  		day = yday;
 19094  		if (isLeap(year)) {
 19095  			if (day > 59) {
 19096  				day = day - (1) >> 0;
 19097  			} else if ((day === 59)) {
 19098  				month = 2;
 19099  				day = 29;
 19100  				return [year, month, day, yday];
 19101  			}
 19102  		}
 19103  		month = (((_q = day / 31, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")) >> 0));
 19104  		end = (((x$11 = month + 1 >> 0, ((x$11 < 0 || x$11 >= daysBefore.length) ? ($throwRuntimeError("index out of range"), undefined) : daysBefore[x$11])) >> 0));
 19105  		begin = 0;
 19106  		if (day >= end) {
 19107  			month = month + (1) >> 0;
 19108  			begin = end;
 19109  		} else {
 19110  			begin = ((((month < 0 || month >= daysBefore.length) ? ($throwRuntimeError("index out of range"), undefined) : daysBefore[month]) >> 0));
 19111  		}
 19112  		month = month + (1) >> 0;
 19113  		day = (day - begin >> 0) + 1 >> 0;
 19114  		return [year, month, day, yday];
 19115  	};
 19116  	daysIn = function(m, year) {
 19117  		var m, x, year;
 19118  		if ((m === 2) && isLeap(year)) {
 19119  			return 29;
 19120  		}
 19121  		return (((((m < 0 || m >= daysBefore.length) ? ($throwRuntimeError("index out of range"), undefined) : daysBefore[m]) - (x = m - 1 >> 0, ((x < 0 || x >= daysBefore.length) ? ($throwRuntimeError("index out of range"), undefined) : daysBefore[x])) >> 0) >> 0));
 19122  	};
 19123  	Now = function() {
 19124  		var _tuple, mono, nsec, sec, x, x$1, x$2, x$3, x$4;
 19125  		_tuple = now();
 19126  		sec = _tuple[0];
 19127  		nsec = _tuple[1];
 19128  		mono = _tuple[2];
 19129  		sec = (x = new $Int64(0, 2682288000), new $Int64(sec.$high + x.$high, sec.$low + x.$low));
 19130  		if (!((x$1 = $shiftRightUint64((new $Uint64(sec.$high, sec.$low)), 33), (x$1.$high === 0 && x$1.$low === 0)))) {
 19131  			return new Time.ptr((new $Uint64(0, nsec)), new $Int64(sec.$high + 13, sec.$low + 3618733952), $pkg.Local);
 19132  		}
 19133  		return new Time.ptr((x$2 = (x$3 = $shiftLeft64((new $Uint64(sec.$high, sec.$low)), 30), new $Uint64(2147483648 | x$3.$high, (0 | x$3.$low) >>> 0)), x$4 = (new $Uint64(0, nsec)), new $Uint64(x$2.$high | x$4.$high, (x$2.$low | x$4.$low) >>> 0)), mono, $pkg.Local);
 19134  	};
 19135  	$pkg.Now = Now;
 19136  	unixTime = function(sec, nsec) {
 19137  		var nsec, sec;
 19138  		return new Time.ptr((new $Uint64(0, nsec)), new $Int64(sec.$high + 14, sec.$low + 2006054656), $pkg.Local);
 19139  	};
 19140  	Time.ptr.prototype.UTC = function() {
 19141  		var t;
 19142  		t = this;
 19143  		t.setLoc(utcLoc);
 19144  		return t;
 19145  	};
 19146  	Time.prototype.UTC = function() { return this.$val.UTC(); };
 19147  	Time.ptr.prototype.Local = function() {
 19148  		var t;
 19149  		t = this;
 19150  		t.setLoc($pkg.Local);
 19151  		return t;
 19152  	};
 19153  	Time.prototype.Local = function() { return this.$val.Local(); };
 19154  	Time.ptr.prototype.In = function(loc) {
 19155  		var loc, t;
 19156  		t = this;
 19157  		if (loc === ptrType$2.nil) {
 19158  			$panic(new $String("time: missing Location in call to Time.In"));
 19159  		}
 19160  		t.setLoc(loc);
 19161  		return t;
 19162  	};
 19163  	Time.prototype.In = function(loc) { return this.$val.In(loc); };
 19164  	Time.ptr.prototype.Location = function() {
 19165  		var l, t;
 19166  		t = this;
 19167  		l = t.loc;
 19168  		if (l === ptrType$2.nil) {
 19169  			l = $pkg.UTC;
 19170  		}
 19171  		return l;
 19172  	};
 19173  	Time.prototype.Location = function() { return this.$val.Location(); };
 19174  	Time.ptr.prototype.Zone = function() {
 19175  		var _r, _tuple, name, offset, t, $s, $r;
 19176  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; name = $f.name; offset = $f.offset; t = $f.t; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 19177  		name = "";
 19178  		offset = 0;
 19179  		t = this;
 19180  		_r = t.loc.lookup(t.unixSec()); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 19181  		_tuple = _r;
 19182  		name = _tuple[0];
 19183  		offset = _tuple[1];
 19184  		$s = -1; return [name, offset];
 19185  		/* */ } return; } if ($f === undefined) { $f = { $blk: Time.ptr.prototype.Zone }; } $f._r = _r; $f._tuple = _tuple; $f.name = name; $f.offset = offset; $f.t = t; $f.$s = $s; $f.$r = $r; return $f;
 19186  	};
 19187  	Time.prototype.Zone = function() { return this.$val.Zone(); };
 19188  	Time.ptr.prototype.Unix = function() {
 19189  		var t;
 19190  		t = this;
 19191  		return t.unixSec();
 19192  	};
 19193  	Time.prototype.Unix = function() { return this.$val.Unix(); };
 19194  	Time.ptr.prototype.UnixNano = function() {
 19195  		var t, x, x$1;
 19196  		t = this;
 19197  		return (x = $mul64((t.unixSec()), new $Int64(0, 1000000000)), x$1 = (new $Int64(0, t.nsec())), new $Int64(x.$high + x$1.$high, x.$low + x$1.$low));
 19198  	};
 19199  	Time.prototype.UnixNano = function() { return this.$val.UnixNano(); };
 19200  	Time.ptr.prototype.MarshalBinary = function() {
 19201  		var _q, _r, _r$1, _tuple, enc, nsec, offset, offsetMin, sec, t, $s, $r;
 19202  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _q = $f._q; _r = $f._r; _r$1 = $f._r$1; _tuple = $f._tuple; enc = $f.enc; nsec = $f.nsec; offset = $f.offset; offsetMin = $f.offsetMin; sec = $f.sec; t = $f.t; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 19203  		t = this;
 19204  		offsetMin = 0;
 19205  		/* */ if ($clone(t, Time).Location() === $pkg.UTC) { $s = 1; continue; }
 19206  		/* */ $s = 2; continue;
 19207  		/* if ($clone(t, Time).Location() === $pkg.UTC) { */ case 1:
 19208  			offsetMin = -1;
 19209  			$s = 3; continue;
 19210  		/* } else { */ case 2:
 19211  			_r = $clone(t, Time).Zone(); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 19212  			_tuple = _r;
 19213  			offset = _tuple[1];
 19214  			if (!(((_r$1 = offset % 60, _r$1 === _r$1 ? _r$1 : $throwRuntimeError("integer divide by zero")) === 0))) {
 19215  				$s = -1; return [sliceType$3.nil, errors.New("Time.MarshalBinary: zone offset has fractional minute")];
 19216  			}
 19217  			offset = (_q = offset / (60), (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero"));
 19218  			if (offset < -32768 || (offset === -1) || offset > 32767) {
 19219  				$s = -1; return [sliceType$3.nil, errors.New("Time.MarshalBinary: unexpected zone offset")];
 19220  			}
 19221  			offsetMin = ((offset << 16 >> 16));
 19222  		/* } */ case 3:
 19223  		sec = t.sec();
 19224  		nsec = t.nsec();
 19225  		enc = new sliceType$3([1, (($shiftRightInt64(sec, 56).$low << 24 >>> 24)), (($shiftRightInt64(sec, 48).$low << 24 >>> 24)), (($shiftRightInt64(sec, 40).$low << 24 >>> 24)), (($shiftRightInt64(sec, 32).$low << 24 >>> 24)), (($shiftRightInt64(sec, 24).$low << 24 >>> 24)), (($shiftRightInt64(sec, 16).$low << 24 >>> 24)), (($shiftRightInt64(sec, 8).$low << 24 >>> 24)), ((sec.$low << 24 >>> 24)), (((nsec >> 24 >> 0) << 24 >>> 24)), (((nsec >> 16 >> 0) << 24 >>> 24)), (((nsec >> 8 >> 0) << 24 >>> 24)), ((nsec << 24 >>> 24)), (((offsetMin >> 8 << 16 >> 16) << 24 >>> 24)), ((offsetMin << 24 >>> 24))]);
 19226  		$s = -1; return [enc, $ifaceNil];
 19227  		/* */ } return; } if ($f === undefined) { $f = { $blk: Time.ptr.prototype.MarshalBinary }; } $f._q = _q; $f._r = _r; $f._r$1 = _r$1; $f._tuple = _tuple; $f.enc = enc; $f.nsec = nsec; $f.offset = offset; $f.offsetMin = offsetMin; $f.sec = sec; $f.t = t; $f.$s = $s; $f.$r = $r; return $f;
 19228  	};
 19229  	Time.prototype.MarshalBinary = function() { return this.$val.MarshalBinary(); };
 19230  	Time.ptr.prototype.UnmarshalBinary = function(data) {
 19231  		var _r, _tuple, buf, data, localoff, nsec, offset, sec, t, x, x$1, x$10, x$11, x$12, x$13, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9, $s, $r;
 19232  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; buf = $f.buf; data = $f.data; localoff = $f.localoff; nsec = $f.nsec; offset = $f.offset; sec = $f.sec; t = $f.t; x = $f.x; x$1 = $f.x$1; x$10 = $f.x$10; x$11 = $f.x$11; x$12 = $f.x$12; x$13 = $f.x$13; x$2 = $f.x$2; x$3 = $f.x$3; x$4 = $f.x$4; x$5 = $f.x$5; x$6 = $f.x$6; x$7 = $f.x$7; x$8 = $f.x$8; x$9 = $f.x$9; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 19233  		t = this;
 19234  		buf = data;
 19235  		if (buf.$length === 0) {
 19236  			$s = -1; return errors.New("Time.UnmarshalBinary: no data");
 19237  		}
 19238  		if (!(((0 >= buf.$length ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + 0]) === 1))) {
 19239  			$s = -1; return errors.New("Time.UnmarshalBinary: unsupported version");
 19240  		}
 19241  		if (!((buf.$length === 15))) {
 19242  			$s = -1; return errors.New("Time.UnmarshalBinary: invalid length");
 19243  		}
 19244  		buf = $subslice(buf, 1);
 19245  		sec = (x = (x$1 = (x$2 = (x$3 = (x$4 = (x$5 = (x$6 = (new $Int64(0, (7 >= buf.$length ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + 7]))), x$7 = $shiftLeft64((new $Int64(0, (6 >= buf.$length ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + 6]))), 8), new $Int64(x$6.$high | x$7.$high, (x$6.$low | x$7.$low) >>> 0)), x$8 = $shiftLeft64((new $Int64(0, (5 >= buf.$length ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + 5]))), 16), new $Int64(x$5.$high | x$8.$high, (x$5.$low | x$8.$low) >>> 0)), x$9 = $shiftLeft64((new $Int64(0, (4 >= buf.$length ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + 4]))), 24), new $Int64(x$4.$high | x$9.$high, (x$4.$low | x$9.$low) >>> 0)), x$10 = $shiftLeft64((new $Int64(0, (3 >= buf.$length ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + 3]))), 32), new $Int64(x$3.$high | x$10.$high, (x$3.$low | x$10.$low) >>> 0)), x$11 = $shiftLeft64((new $Int64(0, (2 >= buf.$length ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + 2]))), 40), new $Int64(x$2.$high | x$11.$high, (x$2.$low | x$11.$low) >>> 0)), x$12 = $shiftLeft64((new $Int64(0, (1 >= buf.$length ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + 1]))), 48), new $Int64(x$1.$high | x$12.$high, (x$1.$low | x$12.$low) >>> 0)), x$13 = $shiftLeft64((new $Int64(0, (0 >= buf.$length ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + 0]))), 56), new $Int64(x.$high | x$13.$high, (x.$low | x$13.$low) >>> 0));
 19246  		buf = $subslice(buf, 8);
 19247  		nsec = (((((3 >= buf.$length ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + 3]) >> 0)) | ((((2 >= buf.$length ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + 2]) >> 0)) << 8 >> 0)) | ((((1 >= buf.$length ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + 1]) >> 0)) << 16 >> 0)) | ((((0 >= buf.$length ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + 0]) >> 0)) << 24 >> 0);
 19248  		buf = $subslice(buf, 4);
 19249  		offset = $imul(((((((1 >= buf.$length ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + 1]) << 16 >> 16)) | ((((0 >= buf.$length ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + 0]) << 16 >> 16)) << 8 << 16 >> 16)) >> 0)), 60);
 19250  		Time.copy(t, new Time.ptr(new $Uint64(0, 0), new $Int64(0, 0), ptrType$2.nil));
 19251  		t.wall = (new $Uint64(0, nsec));
 19252  		t.ext = sec;
 19253  		/* */ if (offset === -60) { $s = 1; continue; }
 19254  		/* */ $s = 2; continue;
 19255  		/* if (offset === -60) { */ case 1:
 19256  			t.setLoc(utcLoc);
 19257  			$s = 3; continue;
 19258  		/* } else { */ case 2:
 19259  			_r = $pkg.Local.lookup(t.unixSec()); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 19260  			_tuple = _r;
 19261  			localoff = _tuple[1];
 19262  			if (offset === localoff) {
 19263  				t.setLoc($pkg.Local);
 19264  			} else {
 19265  				t.setLoc(FixedZone("", offset));
 19266  			}
 19267  		/* } */ case 3:
 19268  		$s = -1; return $ifaceNil;
 19269  		/* */ } return; } if ($f === undefined) { $f = { $blk: Time.ptr.prototype.UnmarshalBinary }; } $f._r = _r; $f._tuple = _tuple; $f.buf = buf; $f.data = data; $f.localoff = localoff; $f.nsec = nsec; $f.offset = offset; $f.sec = sec; $f.t = t; $f.x = x; $f.x$1 = x$1; $f.x$10 = x$10; $f.x$11 = x$11; $f.x$12 = x$12; $f.x$13 = x$13; $f.x$2 = x$2; $f.x$3 = x$3; $f.x$4 = x$4; $f.x$5 = x$5; $f.x$6 = x$6; $f.x$7 = x$7; $f.x$8 = x$8; $f.x$9 = x$9; $f.$s = $s; $f.$r = $r; return $f;
 19270  	};
 19271  	Time.prototype.UnmarshalBinary = function(data) { return this.$val.UnmarshalBinary(data); };
 19272  	Time.ptr.prototype.GobEncode = function() {
 19273  		var _r, t, $s, $r;
 19274  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; t = $f.t; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 19275  		t = this;
 19276  		_r = $clone(t, Time).MarshalBinary(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 19277  		$s = -1; return _r;
 19278  		/* */ } return; } if ($f === undefined) { $f = { $blk: Time.ptr.prototype.GobEncode }; } $f._r = _r; $f.t = t; $f.$s = $s; $f.$r = $r; return $f;
 19279  	};
 19280  	Time.prototype.GobEncode = function() { return this.$val.GobEncode(); };
 19281  	Time.ptr.prototype.GobDecode = function(data) {
 19282  		var _r, data, t, $s, $r;
 19283  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; data = $f.data; t = $f.t; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 19284  		t = this;
 19285  		_r = t.UnmarshalBinary(data); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 19286  		$s = -1; return _r;
 19287  		/* */ } return; } if ($f === undefined) { $f = { $blk: Time.ptr.prototype.GobDecode }; } $f._r = _r; $f.data = data; $f.t = t; $f.$s = $s; $f.$r = $r; return $f;
 19288  	};
 19289  	Time.prototype.GobDecode = function(data) { return this.$val.GobDecode(data); };
 19290  	Time.ptr.prototype.MarshalJSON = function() {
 19291  		var _r, _r$1, b, t, y, $s, $r;
 19292  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; b = $f.b; t = $f.t; y = $f.y; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 19293  		t = this;
 19294  		_r = $clone(t, Time).Year(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 19295  		y = _r;
 19296  		if (y < 0 || y >= 10000) {
 19297  			$s = -1; return [sliceType$3.nil, errors.New("Time.MarshalJSON: year outside of range [0,9999]")];
 19298  		}
 19299  		b = $makeSlice(sliceType$3, 0, 37);
 19300  		b = $append(b, 34);
 19301  		_r$1 = $clone(t, Time).AppendFormat(b, "2006-01-02T15:04:05.999999999Z07:00"); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 19302  		b = _r$1;
 19303  		b = $append(b, 34);
 19304  		$s = -1; return [b, $ifaceNil];
 19305  		/* */ } return; } if ($f === undefined) { $f = { $blk: Time.ptr.prototype.MarshalJSON }; } $f._r = _r; $f._r$1 = _r$1; $f.b = b; $f.t = t; $f.y = y; $f.$s = $s; $f.$r = $r; return $f;
 19306  	};
 19307  	Time.prototype.MarshalJSON = function() { return this.$val.MarshalJSON(); };
 19308  	Time.ptr.prototype.UnmarshalJSON = function(data) {
 19309  		var _r, _tuple, data, err, t, $s, $r;
 19310  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; data = $f.data; err = $f.err; t = $f.t; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 19311  		t = this;
 19312  		if (($bytesToString(data)) === "null") {
 19313  			$s = -1; return $ifaceNil;
 19314  		}
 19315  		err = $ifaceNil;
 19316  		_r = Parse("\"2006-01-02T15:04:05Z07:00\"", ($bytesToString(data))); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 19317  		_tuple = _r;
 19318  		Time.copy(t, _tuple[0]);
 19319  		err = _tuple[1];
 19320  		$s = -1; return err;
 19321  		/* */ } return; } if ($f === undefined) { $f = { $blk: Time.ptr.prototype.UnmarshalJSON }; } $f._r = _r; $f._tuple = _tuple; $f.data = data; $f.err = err; $f.t = t; $f.$s = $s; $f.$r = $r; return $f;
 19322  	};
 19323  	Time.prototype.UnmarshalJSON = function(data) { return this.$val.UnmarshalJSON(data); };
 19324  	Time.ptr.prototype.MarshalText = function() {
 19325  		var _r, _r$1, b, t, y, $s, $r;
 19326  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; b = $f.b; t = $f.t; y = $f.y; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 19327  		t = this;
 19328  		_r = $clone(t, Time).Year(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 19329  		y = _r;
 19330  		if (y < 0 || y >= 10000) {
 19331  			$s = -1; return [sliceType$3.nil, errors.New("Time.MarshalText: year outside of range [0,9999]")];
 19332  		}
 19333  		b = $makeSlice(sliceType$3, 0, 35);
 19334  		_r$1 = $clone(t, Time).AppendFormat(b, "2006-01-02T15:04:05.999999999Z07:00"); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 19335  		$s = -1; return [_r$1, $ifaceNil];
 19336  		/* */ } return; } if ($f === undefined) { $f = { $blk: Time.ptr.prototype.MarshalText }; } $f._r = _r; $f._r$1 = _r$1; $f.b = b; $f.t = t; $f.y = y; $f.$s = $s; $f.$r = $r; return $f;
 19337  	};
 19338  	Time.prototype.MarshalText = function() { return this.$val.MarshalText(); };
 19339  	Time.ptr.prototype.UnmarshalText = function(data) {
 19340  		var _r, _tuple, data, err, t, $s, $r;
 19341  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; data = $f.data; err = $f.err; t = $f.t; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 19342  		t = this;
 19343  		err = $ifaceNil;
 19344  		_r = Parse("2006-01-02T15:04:05Z07:00", ($bytesToString(data))); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 19345  		_tuple = _r;
 19346  		Time.copy(t, _tuple[0]);
 19347  		err = _tuple[1];
 19348  		$s = -1; return err;
 19349  		/* */ } return; } if ($f === undefined) { $f = { $blk: Time.ptr.prototype.UnmarshalText }; } $f._r = _r; $f._tuple = _tuple; $f.data = data; $f.err = err; $f.t = t; $f.$s = $s; $f.$r = $r; return $f;
 19350  	};
 19351  	Time.prototype.UnmarshalText = function(data) { return this.$val.UnmarshalText(data); };
 19352  	Unix = function(sec, nsec) {
 19353  		var n, nsec, sec, x, x$1, x$2, x$3;
 19354  		if ((nsec.$high < 0 || (nsec.$high === 0 && nsec.$low < 0)) || (nsec.$high > 0 || (nsec.$high === 0 && nsec.$low >= 1000000000))) {
 19355  			n = $div64(nsec, new $Int64(0, 1000000000), false);
 19356  			sec = (x = n, new $Int64(sec.$high + x.$high, sec.$low + x.$low));
 19357  			nsec = (x$1 = $mul64(n, new $Int64(0, 1000000000)), new $Int64(nsec.$high - x$1.$high, nsec.$low - x$1.$low));
 19358  			if ((nsec.$high < 0 || (nsec.$high === 0 && nsec.$low < 0))) {
 19359  				nsec = (x$2 = new $Int64(0, 1000000000), new $Int64(nsec.$high + x$2.$high, nsec.$low + x$2.$low));
 19360  				sec = (x$3 = new $Int64(0, 1), new $Int64(sec.$high - x$3.$high, sec.$low - x$3.$low));
 19361  			}
 19362  		}
 19363  		return unixTime(sec, (((nsec.$low + ((nsec.$high >> 31) * 4294967296)) >> 0)));
 19364  	};
 19365  	$pkg.Unix = Unix;
 19366  	isLeap = function(year) {
 19367  		var _r, _r$1, _r$2, year;
 19368  		return ((_r = year % 4, _r === _r ? _r : $throwRuntimeError("integer divide by zero")) === 0) && (!(((_r$1 = year % 100, _r$1 === _r$1 ? _r$1 : $throwRuntimeError("integer divide by zero")) === 0)) || ((_r$2 = year % 400, _r$2 === _r$2 ? _r$2 : $throwRuntimeError("integer divide by zero")) === 0));
 19369  	};
 19370  	norm = function(hi, lo, base) {
 19371  		var _q, _q$1, _tmp, _tmp$1, base, hi, lo, n, n$1, nhi, nlo;
 19372  		nhi = 0;
 19373  		nlo = 0;
 19374  		if (lo < 0) {
 19375  			n = (_q = ((-lo - 1 >> 0)) / base, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")) + 1 >> 0;
 19376  			hi = hi - (n) >> 0;
 19377  			lo = lo + (($imul(n, base))) >> 0;
 19378  		}
 19379  		if (lo >= base) {
 19380  			n$1 = (_q$1 = lo / base, (_q$1 === _q$1 && _q$1 !== 1/0 && _q$1 !== -1/0) ? _q$1 >> 0 : $throwRuntimeError("integer divide by zero"));
 19381  			hi = hi + (n$1) >> 0;
 19382  			lo = lo - (($imul(n$1, base))) >> 0;
 19383  		}
 19384  		_tmp = hi;
 19385  		_tmp$1 = lo;
 19386  		nhi = _tmp;
 19387  		nlo = _tmp$1;
 19388  		return [nhi, nlo];
 19389  	};
 19390  	Date = function(year, month, day, hour, min, sec, nsec, loc) {
 19391  		var _r, _r$1, _r$2, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, _tuple$5, _tuple$6, _tuple$7, abs, d, day, end, hour, loc, m, min, month, n, nsec, offset, sec, start, t, unix, utc, x, x$1, x$10, x$11, x$12, x$13, x$14, x$15, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9, y, year, $s, $r;
 19392  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; _tuple$4 = $f._tuple$4; _tuple$5 = $f._tuple$5; _tuple$6 = $f._tuple$6; _tuple$7 = $f._tuple$7; abs = $f.abs; d = $f.d; day = $f.day; end = $f.end; hour = $f.hour; loc = $f.loc; m = $f.m; min = $f.min; month = $f.month; n = $f.n; nsec = $f.nsec; offset = $f.offset; sec = $f.sec; start = $f.start; t = $f.t; unix = $f.unix; utc = $f.utc; x = $f.x; x$1 = $f.x$1; x$10 = $f.x$10; x$11 = $f.x$11; x$12 = $f.x$12; x$13 = $f.x$13; x$14 = $f.x$14; x$15 = $f.x$15; x$2 = $f.x$2; x$3 = $f.x$3; x$4 = $f.x$4; x$5 = $f.x$5; x$6 = $f.x$6; x$7 = $f.x$7; x$8 = $f.x$8; x$9 = $f.x$9; y = $f.y; year = $f.year; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 19393  		if (loc === ptrType$2.nil) {
 19394  			$panic(new $String("time: missing Location in call to Date"));
 19395  		}
 19396  		m = ((month >> 0)) - 1 >> 0;
 19397  		_tuple = norm(year, m, 12);
 19398  		year = _tuple[0];
 19399  		m = _tuple[1];
 19400  		month = ((m >> 0)) + 1 >> 0;
 19401  		_tuple$1 = norm(sec, nsec, 1000000000);
 19402  		sec = _tuple$1[0];
 19403  		nsec = _tuple$1[1];
 19404  		_tuple$2 = norm(min, sec, 60);
 19405  		min = _tuple$2[0];
 19406  		sec = _tuple$2[1];
 19407  		_tuple$3 = norm(hour, min, 60);
 19408  		hour = _tuple$3[0];
 19409  		min = _tuple$3[1];
 19410  		_tuple$4 = norm(day, hour, 24);
 19411  		day = _tuple$4[0];
 19412  		hour = _tuple$4[1];
 19413  		y = ((x = (x$1 = (new $Int64(0, year)), new $Int64(x$1.$high - -69, x$1.$low - 4075721025)), new $Uint64(x.$high, x.$low)));
 19414  		n = $div64(y, new $Uint64(0, 400), false);
 19415  		y = (x$2 = $mul64(new $Uint64(0, 400), n), new $Uint64(y.$high - x$2.$high, y.$low - x$2.$low));
 19416  		d = $mul64(new $Uint64(0, 146097), n);
 19417  		n = $div64(y, new $Uint64(0, 100), false);
 19418  		y = (x$3 = $mul64(new $Uint64(0, 100), n), new $Uint64(y.$high - x$3.$high, y.$low - x$3.$low));
 19419  		d = (x$4 = $mul64(new $Uint64(0, 36524), n), new $Uint64(d.$high + x$4.$high, d.$low + x$4.$low));
 19420  		n = $div64(y, new $Uint64(0, 4), false);
 19421  		y = (x$5 = $mul64(new $Uint64(0, 4), n), new $Uint64(y.$high - x$5.$high, y.$low - x$5.$low));
 19422  		d = (x$6 = $mul64(new $Uint64(0, 1461), n), new $Uint64(d.$high + x$6.$high, d.$low + x$6.$low));
 19423  		n = y;
 19424  		d = (x$7 = $mul64(new $Uint64(0, 365), n), new $Uint64(d.$high + x$7.$high, d.$low + x$7.$low));
 19425  		d = (x$8 = (new $Uint64(0, (x$9 = month - 1 >> 0, ((x$9 < 0 || x$9 >= daysBefore.length) ? ($throwRuntimeError("index out of range"), undefined) : daysBefore[x$9])))), new $Uint64(d.$high + x$8.$high, d.$low + x$8.$low));
 19426  		if (isLeap(year) && month >= 3) {
 19427  			d = (x$10 = new $Uint64(0, 1), new $Uint64(d.$high + x$10.$high, d.$low + x$10.$low));
 19428  		}
 19429  		d = (x$11 = (new $Uint64(0, (day - 1 >> 0))), new $Uint64(d.$high + x$11.$high, d.$low + x$11.$low));
 19430  		abs = $mul64(d, new $Uint64(0, 86400));
 19431  		abs = (x$12 = (new $Uint64(0, ((($imul(hour, 3600)) + ($imul(min, 60)) >> 0) + sec >> 0))), new $Uint64(abs.$high + x$12.$high, abs.$low + x$12.$low));
 19432  		unix = (x$13 = (new $Int64(abs.$high, abs.$low)), new $Int64(x$13.$high + -2147483647, x$13.$low + 3844486912));
 19433  		_r = loc.lookup(unix); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 19434  		_tuple$5 = _r;
 19435  		offset = _tuple$5[1];
 19436  		start = _tuple$5[3];
 19437  		end = _tuple$5[4];
 19438  		/* */ if (!((offset === 0))) { $s = 2; continue; }
 19439  		/* */ $s = 3; continue;
 19440  		/* if (!((offset === 0))) { */ case 2:
 19441  				utc = (x$14 = (new $Int64(0, offset)), new $Int64(unix.$high - x$14.$high, unix.$low - x$14.$low));
 19442  				/* */ if ((utc.$high < start.$high || (utc.$high === start.$high && utc.$low < start.$low))) { $s = 5; continue; }
 19443  				/* */ if ((utc.$high > end.$high || (utc.$high === end.$high && utc.$low >= end.$low))) { $s = 6; continue; }
 19444  				/* */ $s = 7; continue;
 19445  				/* if ((utc.$high < start.$high || (utc.$high === start.$high && utc.$low < start.$low))) { */ case 5:
 19446  					_r$1 = loc.lookup(new $Int64(start.$high - 0, start.$low - 1)); /* */ $s = 8; case 8: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 19447  					_tuple$6 = _r$1;
 19448  					offset = _tuple$6[1];
 19449  					$s = 7; continue;
 19450  				/* } else if ((utc.$high > end.$high || (utc.$high === end.$high && utc.$low >= end.$low))) { */ case 6:
 19451  					_r$2 = loc.lookup(end); /* */ $s = 9; case 9: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 19452  					_tuple$7 = _r$2;
 19453  					offset = _tuple$7[1];
 19454  				/* } */ case 7:
 19455  			case 4:
 19456  			unix = (x$15 = (new $Int64(0, offset)), new $Int64(unix.$high - x$15.$high, unix.$low - x$15.$low));
 19457  		/* } */ case 3:
 19458  		t = $clone(unixTime(unix, ((nsec >> 0))), Time);
 19459  		t.setLoc(loc);
 19460  		$s = -1; return t;
 19461  		/* */ } return; } if ($f === undefined) { $f = { $blk: Date }; } $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f._tuple$4 = _tuple$4; $f._tuple$5 = _tuple$5; $f._tuple$6 = _tuple$6; $f._tuple$7 = _tuple$7; $f.abs = abs; $f.d = d; $f.day = day; $f.end = end; $f.hour = hour; $f.loc = loc; $f.m = m; $f.min = min; $f.month = month; $f.n = n; $f.nsec = nsec; $f.offset = offset; $f.sec = sec; $f.start = start; $f.t = t; $f.unix = unix; $f.utc = utc; $f.x = x; $f.x$1 = x$1; $f.x$10 = x$10; $f.x$11 = x$11; $f.x$12 = x$12; $f.x$13 = x$13; $f.x$14 = x$14; $f.x$15 = x$15; $f.x$2 = x$2; $f.x$3 = x$3; $f.x$4 = x$4; $f.x$5 = x$5; $f.x$6 = x$6; $f.x$7 = x$7; $f.x$8 = x$8; $f.x$9 = x$9; $f.y = y; $f.year = year; $f.$s = $s; $f.$r = $r; return $f;
 19462  	};
 19463  	$pkg.Date = Date;
 19464  	Time.ptr.prototype.Truncate = function(d) {
 19465  		var _tuple, d, r, t;
 19466  		t = this;
 19467  		t.stripMono();
 19468  		if ((d.$high < 0 || (d.$high === 0 && d.$low <= 0))) {
 19469  			return t;
 19470  		}
 19471  		_tuple = div($clone(t, Time), d);
 19472  		r = _tuple[1];
 19473  		return $clone(t, Time).Add(new Duration(-r.$high, -r.$low));
 19474  	};
 19475  	Time.prototype.Truncate = function(d) { return this.$val.Truncate(d); };
 19476  	Time.ptr.prototype.Round = function(d) {
 19477  		var _tuple, d, r, t;
 19478  		t = this;
 19479  		t.stripMono();
 19480  		if ((d.$high < 0 || (d.$high === 0 && d.$low <= 0))) {
 19481  			return t;
 19482  		}
 19483  		_tuple = div($clone(t, Time), d);
 19484  		r = _tuple[1];
 19485  		if (lessThanHalf(r, d)) {
 19486  			return $clone(t, Time).Add(new Duration(-r.$high, -r.$low));
 19487  		}
 19488  		return $clone(t, Time).Add(new Duration(d.$high - r.$high, d.$low - r.$low));
 19489  	};
 19490  	Time.prototype.Round = function(d) { return this.$val.Round(d); };
 19491  	div = function(t, d) {
 19492  		var _q, _r, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, d, d0, d1, d1$1, neg, nsec, qmod2, r, sec, sec$1, t, tmp, u0, u0x, u1, x, x$1, x$10, x$11, x$12, x$13, x$14, x$15, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9;
 19493  		qmod2 = 0;
 19494  		r = new Duration(0, 0);
 19495  		neg = false;
 19496  		nsec = t.nsec();
 19497  		sec = t.sec();
 19498  		if ((sec.$high < 0 || (sec.$high === 0 && sec.$low < 0))) {
 19499  			neg = true;
 19500  			sec = new $Int64(-sec.$high, -sec.$low);
 19501  			nsec = -nsec;
 19502  			if (nsec < 0) {
 19503  				nsec = nsec + (1000000000) >> 0;
 19504  				sec = (x = new $Int64(0, 1), new $Int64(sec.$high - x.$high, sec.$low - x.$low));
 19505  			}
 19506  		}
 19507  		if ((d.$high < 0 || (d.$high === 0 && d.$low < 1000000000)) && (x$1 = $div64(new Duration(0, 1000000000), (new Duration(d.$high + d.$high, d.$low + d.$low)), true), (x$1.$high === 0 && x$1.$low === 0))) {
 19508  			qmod2 = (((_q = nsec / (((d.$low + ((d.$high >> 31) * 4294967296)) >> 0)), (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")) >> 0)) & 1;
 19509  			r = (new Duration(0, (_r = nsec % (((d.$low + ((d.$high >> 31) * 4294967296)) >> 0)), _r === _r ? _r : $throwRuntimeError("integer divide by zero"))));
 19510  		} else if ((x$2 = $div64(d, new Duration(0, 1000000000), true), (x$2.$high === 0 && x$2.$low === 0))) {
 19511  			d1 = ((x$3 = $div64(d, new Duration(0, 1000000000), false), new $Int64(x$3.$high, x$3.$low)));
 19512  			qmod2 = (((x$4 = $div64(sec, d1, false), x$4.$low + ((x$4.$high >> 31) * 4294967296)) >> 0)) & 1;
 19513  			r = (x$5 = $mul64(((x$6 = $div64(sec, d1, true), new Duration(x$6.$high, x$6.$low))), new Duration(0, 1000000000)), x$7 = (new Duration(0, nsec)), new Duration(x$5.$high + x$7.$high, x$5.$low + x$7.$low));
 19514  		} else {
 19515  			sec$1 = (new $Uint64(sec.$high, sec.$low));
 19516  			tmp = $mul64(($shiftRightUint64(sec$1, 32)), new $Uint64(0, 1000000000));
 19517  			u1 = $shiftRightUint64(tmp, 32);
 19518  			u0 = $shiftLeft64(tmp, 32);
 19519  			tmp = $mul64((new $Uint64(sec$1.$high & 0, (sec$1.$low & 4294967295) >>> 0)), new $Uint64(0, 1000000000));
 19520  			_tmp = u0;
 19521  			_tmp$1 = new $Uint64(u0.$high + tmp.$high, u0.$low + tmp.$low);
 19522  			u0x = _tmp;
 19523  			u0 = _tmp$1;
 19524  			if ((u0.$high < u0x.$high || (u0.$high === u0x.$high && u0.$low < u0x.$low))) {
 19525  				u1 = (x$8 = new $Uint64(0, 1), new $Uint64(u1.$high + x$8.$high, u1.$low + x$8.$low));
 19526  			}
 19527  			_tmp$2 = u0;
 19528  			_tmp$3 = (x$9 = (new $Uint64(0, nsec)), new $Uint64(u0.$high + x$9.$high, u0.$low + x$9.$low));
 19529  			u0x = _tmp$2;
 19530  			u0 = _tmp$3;
 19531  			if ((u0.$high < u0x.$high || (u0.$high === u0x.$high && u0.$low < u0x.$low))) {
 19532  				u1 = (x$10 = new $Uint64(0, 1), new $Uint64(u1.$high + x$10.$high, u1.$low + x$10.$low));
 19533  			}
 19534  			d1$1 = (new $Uint64(d.$high, d.$low));
 19535  			while (true) {
 19536  				if (!(!((x$11 = $shiftRightUint64(d1$1, 63), (x$11.$high === 0 && x$11.$low === 1))))) { break; }
 19537  				d1$1 = $shiftLeft64(d1$1, (1));
 19538  			}
 19539  			d0 = new $Uint64(0, 0);
 19540  			while (true) {
 19541  				qmod2 = 0;
 19542  				if ((u1.$high > d1$1.$high || (u1.$high === d1$1.$high && u1.$low > d1$1.$low)) || (u1.$high === d1$1.$high && u1.$low === d1$1.$low) && (u0.$high > d0.$high || (u0.$high === d0.$high && u0.$low >= d0.$low))) {
 19543  					qmod2 = 1;
 19544  					_tmp$4 = u0;
 19545  					_tmp$5 = new $Uint64(u0.$high - d0.$high, u0.$low - d0.$low);
 19546  					u0x = _tmp$4;
 19547  					u0 = _tmp$5;
 19548  					if ((u0.$high > u0x.$high || (u0.$high === u0x.$high && u0.$low > u0x.$low))) {
 19549  						u1 = (x$12 = new $Uint64(0, 1), new $Uint64(u1.$high - x$12.$high, u1.$low - x$12.$low));
 19550  					}
 19551  					u1 = (x$13 = d1$1, new $Uint64(u1.$high - x$13.$high, u1.$low - x$13.$low));
 19552  				}
 19553  				if ((d1$1.$high === 0 && d1$1.$low === 0) && (x$14 = (new $Uint64(d.$high, d.$low)), (d0.$high === x$14.$high && d0.$low === x$14.$low))) {
 19554  					break;
 19555  				}
 19556  				d0 = $shiftRightUint64(d0, (1));
 19557  				d0 = (x$15 = $shiftLeft64((new $Uint64(d1$1.$high & 0, (d1$1.$low & 1) >>> 0)), 63), new $Uint64(d0.$high | x$15.$high, (d0.$low | x$15.$low) >>> 0));
 19558  				d1$1 = $shiftRightUint64(d1$1, (1));
 19559  			}
 19560  			r = (new Duration(u0.$high, u0.$low));
 19561  		}
 19562  		if (neg && !((r.$high === 0 && r.$low === 0))) {
 19563  			qmod2 = (qmod2 ^ (1)) >> 0;
 19564  			r = new Duration(d.$high - r.$high, d.$low - r.$low);
 19565  		}
 19566  		return [qmod2, r];
 19567  	};
 19568  	Location.ptr.prototype.get = function() {
 19569  		var l, $s, $r;
 19570  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; l = $f.l; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 19571  		l = this;
 19572  		if (l === ptrType$2.nil) {
 19573  			$s = -1; return utcLoc;
 19574  		}
 19575  		/* */ if (l === localLoc) { $s = 1; continue; }
 19576  		/* */ $s = 2; continue;
 19577  		/* if (l === localLoc) { */ case 1:
 19578  			$r = localOnce.Do(initLocal); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 19579  		/* } */ case 2:
 19580  		$s = -1; return l;
 19581  		/* */ } return; } if ($f === undefined) { $f = { $blk: Location.ptr.prototype.get }; } $f.l = l; $f.$s = $s; $f.$r = $r; return $f;
 19582  	};
 19583  	Location.prototype.get = function() { return this.$val.get(); };
 19584  	Location.ptr.prototype.String = function() {
 19585  		var _r, l, $s, $r;
 19586  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; l = $f.l; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 19587  		l = this;
 19588  		_r = l.get(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 19589  		$s = -1; return _r.name;
 19590  		/* */ } return; } if ($f === undefined) { $f = { $blk: Location.ptr.prototype.String }; } $f._r = _r; $f.l = l; $f.$s = $s; $f.$r = $r; return $f;
 19591  	};
 19592  	Location.prototype.String = function() { return this.$val.String(); };
 19593  	FixedZone = function(name, offset) {
 19594  		var l, name, offset, x;
 19595  		l = new Location.ptr(name, new sliceType([new zone.ptr(name, offset, false)]), new sliceType$1([new zoneTrans.ptr(new $Int64(-2147483648, 0), 0, false, false)]), new $Int64(-2147483648, 0), new $Int64(2147483647, 4294967295), ptrType.nil);
 19596  		l.cacheZone = (x = l.zone, (0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0]));
 19597  		return l;
 19598  	};
 19599  	$pkg.FixedZone = FixedZone;
 19600  	Location.ptr.prototype.lookup = function(sec) {
 19601  		var _q, _r, end, hi, isDST, l, lim, lo, m, name, offset, sec, start, tx, x, x$1, x$2, x$3, x$4, x$5, x$6, x$7, x$8, zone$1, zone$2, zone$3, $s, $r;
 19602  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _q = $f._q; _r = $f._r; end = $f.end; hi = $f.hi; isDST = $f.isDST; l = $f.l; lim = $f.lim; lo = $f.lo; m = $f.m; name = $f.name; offset = $f.offset; sec = $f.sec; start = $f.start; tx = $f.tx; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; x$3 = $f.x$3; x$4 = $f.x$4; x$5 = $f.x$5; x$6 = $f.x$6; x$7 = $f.x$7; x$8 = $f.x$8; zone$1 = $f.zone$1; zone$2 = $f.zone$2; zone$3 = $f.zone$3; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 19603  		name = "";
 19604  		offset = 0;
 19605  		isDST = false;
 19606  		start = new $Int64(0, 0);
 19607  		end = new $Int64(0, 0);
 19608  		l = this;
 19609  		_r = l.get(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 19610  		l = _r;
 19611  		if (l.zone.$length === 0) {
 19612  			name = "UTC";
 19613  			offset = 0;
 19614  			isDST = false;
 19615  			start = new $Int64(-2147483648, 0);
 19616  			end = new $Int64(2147483647, 4294967295);
 19617  			$s = -1; return [name, offset, isDST, start, end];
 19618  		}
 19619  		zone$1 = l.cacheZone;
 19620  		if (!(zone$1 === ptrType.nil) && (x = l.cacheStart, (x.$high < sec.$high || (x.$high === sec.$high && x.$low <= sec.$low))) && (x$1 = l.cacheEnd, (sec.$high < x$1.$high || (sec.$high === x$1.$high && sec.$low < x$1.$low)))) {
 19621  			name = zone$1.name;
 19622  			offset = zone$1.offset;
 19623  			isDST = zone$1.isDST;
 19624  			start = l.cacheStart;
 19625  			end = l.cacheEnd;
 19626  			$s = -1; return [name, offset, isDST, start, end];
 19627  		}
 19628  		if ((l.tx.$length === 0) || (x$2 = (x$3 = l.tx, (0 >= x$3.$length ? ($throwRuntimeError("index out of range"), undefined) : x$3.$array[x$3.$offset + 0])).when, (sec.$high < x$2.$high || (sec.$high === x$2.$high && sec.$low < x$2.$low)))) {
 19629  			zone$2 = (x$4 = l.zone, x$5 = l.lookupFirstZone(), ((x$5 < 0 || x$5 >= x$4.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$4.$array[x$4.$offset + x$5]));
 19630  			name = zone$2.name;
 19631  			offset = zone$2.offset;
 19632  			isDST = zone$2.isDST;
 19633  			start = new $Int64(-2147483648, 0);
 19634  			if (l.tx.$length > 0) {
 19635  				end = (x$6 = l.tx, (0 >= x$6.$length ? ($throwRuntimeError("index out of range"), undefined) : x$6.$array[x$6.$offset + 0])).when;
 19636  			} else {
 19637  				end = new $Int64(2147483647, 4294967295);
 19638  			}
 19639  			$s = -1; return [name, offset, isDST, start, end];
 19640  		}
 19641  		tx = l.tx;
 19642  		end = new $Int64(2147483647, 4294967295);
 19643  		lo = 0;
 19644  		hi = tx.$length;
 19645  		while (true) {
 19646  			if (!((hi - lo >> 0) > 1)) { break; }
 19647  			m = lo + (_q = ((hi - lo >> 0)) / 2, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")) >> 0;
 19648  			lim = ((m < 0 || m >= tx.$length) ? ($throwRuntimeError("index out of range"), undefined) : tx.$array[tx.$offset + m]).when;
 19649  			if ((sec.$high < lim.$high || (sec.$high === lim.$high && sec.$low < lim.$low))) {
 19650  				end = lim;
 19651  				hi = m;
 19652  			} else {
 19653  				lo = m;
 19654  			}
 19655  		}
 19656  		zone$3 = (x$7 = l.zone, x$8 = ((lo < 0 || lo >= tx.$length) ? ($throwRuntimeError("index out of range"), undefined) : tx.$array[tx.$offset + lo]).index, ((x$8 < 0 || x$8 >= x$7.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$7.$array[x$7.$offset + x$8]));
 19657  		name = zone$3.name;
 19658  		offset = zone$3.offset;
 19659  		isDST = zone$3.isDST;
 19660  		start = ((lo < 0 || lo >= tx.$length) ? ($throwRuntimeError("index out of range"), undefined) : tx.$array[tx.$offset + lo]).when;
 19661  		$s = -1; return [name, offset, isDST, start, end];
 19662  		/* */ } return; } if ($f === undefined) { $f = { $blk: Location.ptr.prototype.lookup }; } $f._q = _q; $f._r = _r; $f.end = end; $f.hi = hi; $f.isDST = isDST; $f.l = l; $f.lim = lim; $f.lo = lo; $f.m = m; $f.name = name; $f.offset = offset; $f.sec = sec; $f.start = start; $f.tx = tx; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.x$3 = x$3; $f.x$4 = x$4; $f.x$5 = x$5; $f.x$6 = x$6; $f.x$7 = x$7; $f.x$8 = x$8; $f.zone$1 = zone$1; $f.zone$2 = zone$2; $f.zone$3 = zone$3; $f.$s = $s; $f.$r = $r; return $f;
 19663  	};
 19664  	Location.prototype.lookup = function(sec) { return this.$val.lookup(sec); };
 19665  	Location.ptr.prototype.lookupFirstZone = function() {
 19666  		var _i, _ref, l, x, x$1, x$2, x$3, x$4, x$5, zi, zi$1;
 19667  		l = this;
 19668  		if (!l.firstZoneUsed()) {
 19669  			return 0;
 19670  		}
 19671  		if (l.tx.$length > 0 && (x = l.zone, x$1 = (x$2 = l.tx, (0 >= x$2.$length ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + 0])).index, ((x$1 < 0 || x$1 >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + x$1])).isDST) {
 19672  			zi = (((x$3 = l.tx, (0 >= x$3.$length ? ($throwRuntimeError("index out of range"), undefined) : x$3.$array[x$3.$offset + 0])).index >> 0)) - 1 >> 0;
 19673  			while (true) {
 19674  				if (!(zi >= 0)) { break; }
 19675  				if (!(x$4 = l.zone, ((zi < 0 || zi >= x$4.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$4.$array[x$4.$offset + zi])).isDST) {
 19676  					return zi;
 19677  				}
 19678  				zi = zi - (1) >> 0;
 19679  			}
 19680  		}
 19681  		_ref = l.zone;
 19682  		_i = 0;
 19683  		while (true) {
 19684  			if (!(_i < _ref.$length)) { break; }
 19685  			zi$1 = _i;
 19686  			if (!(x$5 = l.zone, ((zi$1 < 0 || zi$1 >= x$5.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$5.$array[x$5.$offset + zi$1])).isDST) {
 19687  				return zi$1;
 19688  			}
 19689  			_i++;
 19690  		}
 19691  		return 0;
 19692  	};
 19693  	Location.prototype.lookupFirstZone = function() { return this.$val.lookupFirstZone(); };
 19694  	Location.ptr.prototype.firstZoneUsed = function() {
 19695  		var _i, _ref, l, tx;
 19696  		l = this;
 19697  		_ref = l.tx;
 19698  		_i = 0;
 19699  		while (true) {
 19700  			if (!(_i < _ref.$length)) { break; }
 19701  			tx = $clone(((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]), zoneTrans);
 19702  			if (tx.index === 0) {
 19703  				return true;
 19704  			}
 19705  			_i++;
 19706  		}
 19707  		return false;
 19708  	};
 19709  	Location.prototype.firstZoneUsed = function() { return this.$val.firstZoneUsed(); };
 19710  	Location.ptr.prototype.lookupName = function(name, unix) {
 19711  		var _i, _i$1, _r, _r$1, _ref, _ref$1, _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, i, i$1, l, nam, name, offset, offset$1, ok, unix, x, x$1, x$2, zone$1, zone$2, $s, $r;
 19712  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _i = $f._i; _i$1 = $f._i$1; _r = $f._r; _r$1 = $f._r$1; _ref = $f._ref; _ref$1 = $f._ref$1; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tuple = $f._tuple; i = $f.i; i$1 = $f.i$1; l = $f.l; nam = $f.nam; name = $f.name; offset = $f.offset; offset$1 = $f.offset$1; ok = $f.ok; unix = $f.unix; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; zone$1 = $f.zone$1; zone$2 = $f.zone$2; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 19713  		offset = 0;
 19714  		ok = false;
 19715  		l = this;
 19716  		_r = l.get(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 19717  		l = _r;
 19718  		_ref = l.zone;
 19719  		_i = 0;
 19720  		/* while (true) { */ case 2:
 19721  			/* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 3; continue; }
 19722  			i = _i;
 19723  			zone$1 = (x = l.zone, ((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i]));
 19724  			/* */ if (zone$1.name === name) { $s = 4; continue; }
 19725  			/* */ $s = 5; continue;
 19726  			/* if (zone$1.name === name) { */ case 4:
 19727  				_r$1 = l.lookup((x$1 = (new $Int64(0, zone$1.offset)), new $Int64(unix.$high - x$1.$high, unix.$low - x$1.$low))); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 19728  				_tuple = _r$1;
 19729  				nam = _tuple[0];
 19730  				offset$1 = _tuple[1];
 19731  				if (nam === zone$1.name) {
 19732  					_tmp = offset$1;
 19733  					_tmp$1 = true;
 19734  					offset = _tmp;
 19735  					ok = _tmp$1;
 19736  					$s = -1; return [offset, ok];
 19737  				}
 19738  			/* } */ case 5:
 19739  			_i++;
 19740  		/* } */ $s = 2; continue; case 3:
 19741  		_ref$1 = l.zone;
 19742  		_i$1 = 0;
 19743  		while (true) {
 19744  			if (!(_i$1 < _ref$1.$length)) { break; }
 19745  			i$1 = _i$1;
 19746  			zone$2 = (x$2 = l.zone, ((i$1 < 0 || i$1 >= x$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + i$1]));
 19747  			if (zone$2.name === name) {
 19748  				_tmp$2 = zone$2.offset;
 19749  				_tmp$3 = true;
 19750  				offset = _tmp$2;
 19751  				ok = _tmp$3;
 19752  				$s = -1; return [offset, ok];
 19753  			}
 19754  			_i$1++;
 19755  		}
 19756  		$s = -1; return [offset, ok];
 19757  		/* */ } return; } if ($f === undefined) { $f = { $blk: Location.ptr.prototype.lookupName }; } $f._i = _i; $f._i$1 = _i$1; $f._r = _r; $f._r$1 = _r$1; $f._ref = _ref; $f._ref$1 = _ref$1; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tuple = _tuple; $f.i = i; $f.i$1 = i$1; $f.l = l; $f.nam = nam; $f.name = name; $f.offset = offset; $f.offset$1 = offset$1; $f.ok = ok; $f.unix = unix; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.zone$1 = zone$1; $f.zone$2 = zone$2; $f.$s = $s; $f.$r = $r; return $f;
 19758  	};
 19759  	Location.prototype.lookupName = function(name, unix) { return this.$val.lookupName(name, unix); };
 19760  	ptrType$4.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}];
 19761  	ptrType$5.methods = [{prop: "Stop", name: "Stop", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "Reset", name: "Reset", pkg: "", typ: $funcType([Duration], [$Bool], false)}];
 19762  	ptrType$6.methods = [{prop: "Stop", name: "Stop", pkg: "", typ: $funcType([], [], false)}];
 19763  	Time.methods = [{prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Format", name: "Format", pkg: "", typ: $funcType([$String], [$String], false)}, {prop: "AppendFormat", name: "AppendFormat", pkg: "", typ: $funcType([sliceType$3, $String], [sliceType$3], false)}, {prop: "After", name: "After", pkg: "", typ: $funcType([Time], [$Bool], false)}, {prop: "Before", name: "Before", pkg: "", typ: $funcType([Time], [$Bool], false)}, {prop: "Equal", name: "Equal", pkg: "", typ: $funcType([Time], [$Bool], false)}, {prop: "IsZero", name: "IsZero", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "abs", name: "abs", pkg: "time", typ: $funcType([], [$Uint64], false)}, {prop: "locabs", name: "locabs", pkg: "time", typ: $funcType([], [$String, $Int, $Uint64], false)}, {prop: "Date", name: "Date", pkg: "", typ: $funcType([], [$Int, Month, $Int], false)}, {prop: "Year", name: "Year", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Month", name: "Month", pkg: "", typ: $funcType([], [Month], false)}, {prop: "Day", name: "Day", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Weekday", name: "Weekday", pkg: "", typ: $funcType([], [Weekday], false)}, {prop: "ISOWeek", name: "ISOWeek", pkg: "", typ: $funcType([], [$Int, $Int], false)}, {prop: "Clock", name: "Clock", pkg: "", typ: $funcType([], [$Int, $Int, $Int], false)}, {prop: "Hour", name: "Hour", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Minute", name: "Minute", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Second", name: "Second", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Nanosecond", name: "Nanosecond", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "YearDay", name: "YearDay", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Add", name: "Add", pkg: "", typ: $funcType([Duration], [Time], false)}, {prop: "Sub", name: "Sub", pkg: "", typ: $funcType([Time], [Duration], false)}, {prop: "AddDate", name: "AddDate", pkg: "", typ: $funcType([$Int, $Int, $Int], [Time], false)}, {prop: "date", name: "date", pkg: "time", typ: $funcType([$Bool], [$Int, Month, $Int, $Int], false)}, {prop: "UTC", name: "UTC", pkg: "", typ: $funcType([], [Time], false)}, {prop: "Local", name: "Local", pkg: "", typ: $funcType([], [Time], false)}, {prop: "In", name: "In", pkg: "", typ: $funcType([ptrType$2], [Time], false)}, {prop: "Location", name: "Location", pkg: "", typ: $funcType([], [ptrType$2], false)}, {prop: "Zone", name: "Zone", pkg: "", typ: $funcType([], [$String, $Int], false)}, {prop: "Unix", name: "Unix", pkg: "", typ: $funcType([], [$Int64], false)}, {prop: "UnixNano", name: "UnixNano", pkg: "", typ: $funcType([], [$Int64], false)}, {prop: "MarshalBinary", name: "MarshalBinary", pkg: "", typ: $funcType([], [sliceType$3, $error], false)}, {prop: "GobEncode", name: "GobEncode", pkg: "", typ: $funcType([], [sliceType$3, $error], false)}, {prop: "MarshalJSON", name: "MarshalJSON", pkg: "", typ: $funcType([], [sliceType$3, $error], false)}, {prop: "MarshalText", name: "MarshalText", pkg: "", typ: $funcType([], [sliceType$3, $error], false)}, {prop: "Truncate", name: "Truncate", pkg: "", typ: $funcType([Duration], [Time], false)}, {prop: "Round", name: "Round", pkg: "", typ: $funcType([Duration], [Time], false)}];
 19764  	ptrType$7.methods = [{prop: "nsec", name: "nsec", pkg: "time", typ: $funcType([], [$Int32], false)}, {prop: "sec", name: "sec", pkg: "time", typ: $funcType([], [$Int64], false)}, {prop: "unixSec", name: "unixSec", pkg: "time", typ: $funcType([], [$Int64], false)}, {prop: "addSec", name: "addSec", pkg: "time", typ: $funcType([$Int64], [], false)}, {prop: "setLoc", name: "setLoc", pkg: "time", typ: $funcType([ptrType$2], [], false)}, {prop: "stripMono", name: "stripMono", pkg: "time", typ: $funcType([], [], false)}, {prop: "setMono", name: "setMono", pkg: "time", typ: $funcType([$Int64], [], false)}, {prop: "mono", name: "mono", pkg: "time", typ: $funcType([], [$Int64], false)}, {prop: "UnmarshalBinary", name: "UnmarshalBinary", pkg: "", typ: $funcType([sliceType$3], [$error], false)}, {prop: "GobDecode", name: "GobDecode", pkg: "", typ: $funcType([sliceType$3], [$error], false)}, {prop: "UnmarshalJSON", name: "UnmarshalJSON", pkg: "", typ: $funcType([sliceType$3], [$error], false)}, {prop: "UnmarshalText", name: "UnmarshalText", pkg: "", typ: $funcType([sliceType$3], [$error], false)}];
 19765  	Month.methods = [{prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}];
 19766  	Weekday.methods = [{prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}];
 19767  	Duration.methods = [{prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Nanoseconds", name: "Nanoseconds", pkg: "", typ: $funcType([], [$Int64], false)}, {prop: "Seconds", name: "Seconds", pkg: "", typ: $funcType([], [$Float64], false)}, {prop: "Minutes", name: "Minutes", pkg: "", typ: $funcType([], [$Float64], false)}, {prop: "Hours", name: "Hours", pkg: "", typ: $funcType([], [$Float64], false)}, {prop: "Truncate", name: "Truncate", pkg: "", typ: $funcType([Duration], [Duration], false)}, {prop: "Round", name: "Round", pkg: "", typ: $funcType([Duration], [Duration], false)}];
 19768  	ptrType$2.methods = [{prop: "get", name: "get", pkg: "time", typ: $funcType([], [ptrType$2], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "lookup", name: "lookup", pkg: "time", typ: $funcType([$Int64], [$String, $Int, $Bool, $Int64, $Int64], false)}, {prop: "lookupFirstZone", name: "lookupFirstZone", pkg: "time", typ: $funcType([], [$Int], false)}, {prop: "firstZoneUsed", name: "firstZoneUsed", pkg: "time", typ: $funcType([], [$Bool], false)}, {prop: "lookupName", name: "lookupName", pkg: "time", typ: $funcType([$String, $Int64], [$Int, $Bool], false)}];
 19769  	runtimeTimer.init("time", [{prop: "i", name: "i", anonymous: false, exported: false, typ: $Int32, tag: ""}, {prop: "when", name: "when", anonymous: false, exported: false, typ: $Int64, tag: ""}, {prop: "period", name: "period", anonymous: false, exported: false, typ: $Int64, tag: ""}, {prop: "f", name: "f", anonymous: false, exported: false, typ: funcType$1, tag: ""}, {prop: "arg", name: "arg", anonymous: false, exported: false, typ: $emptyInterface, tag: ""}, {prop: "timeout", name: "timeout", anonymous: false, exported: false, typ: ptrType$3, tag: ""}, {prop: "active", name: "active", anonymous: false, exported: false, typ: $Bool, tag: ""}]);
 19770  	ParseError.init("", [{prop: "Layout", name: "Layout", anonymous: false, exported: true, typ: $String, tag: ""}, {prop: "Value", name: "Value", anonymous: false, exported: true, typ: $String, tag: ""}, {prop: "LayoutElem", name: "LayoutElem", anonymous: false, exported: true, typ: $String, tag: ""}, {prop: "ValueElem", name: "ValueElem", anonymous: false, exported: true, typ: $String, tag: ""}, {prop: "Message", name: "Message", anonymous: false, exported: true, typ: $String, tag: ""}]);
 19771  	Timer.init("time", [{prop: "C", name: "C", anonymous: false, exported: true, typ: chanType$1, tag: ""}, {prop: "r", name: "r", anonymous: false, exported: false, typ: runtimeTimer, tag: ""}]);
 19772  	Ticker.init("time", [{prop: "C", name: "C", anonymous: false, exported: true, typ: chanType$1, tag: ""}, {prop: "r", name: "r", anonymous: false, exported: false, typ: runtimeTimer, tag: ""}]);
 19773  	Time.init("time", [{prop: "wall", name: "wall", anonymous: false, exported: false, typ: $Uint64, tag: ""}, {prop: "ext", name: "ext", anonymous: false, exported: false, typ: $Int64, tag: ""}, {prop: "loc", name: "loc", anonymous: false, exported: false, typ: ptrType$2, tag: ""}]);
 19774  	Location.init("time", [{prop: "name", name: "name", anonymous: false, exported: false, typ: $String, tag: ""}, {prop: "zone", name: "zone", anonymous: false, exported: false, typ: sliceType, tag: ""}, {prop: "tx", name: "tx", anonymous: false, exported: false, typ: sliceType$1, tag: ""}, {prop: "cacheStart", name: "cacheStart", anonymous: false, exported: false, typ: $Int64, tag: ""}, {prop: "cacheEnd", name: "cacheEnd", anonymous: false, exported: false, typ: $Int64, tag: ""}, {prop: "cacheZone", name: "cacheZone", anonymous: false, exported: false, typ: ptrType, tag: ""}]);
 19775  	zone.init("time", [{prop: "name", name: "name", anonymous: false, exported: false, typ: $String, tag: ""}, {prop: "offset", name: "offset", anonymous: false, exported: false, typ: $Int, tag: ""}, {prop: "isDST", name: "isDST", anonymous: false, exported: false, typ: $Bool, tag: ""}]);
 19776  	zoneTrans.init("time", [{prop: "when", name: "when", anonymous: false, exported: false, typ: $Int64, tag: ""}, {prop: "index", name: "index", anonymous: false, exported: false, typ: $Uint8, tag: ""}, {prop: "isstd", name: "isstd", anonymous: false, exported: false, typ: $Bool, tag: ""}, {prop: "isutc", name: "isutc", anonymous: false, exported: false, typ: $Bool, tag: ""}]);
 19777  	$init = function() {
 19778  		$pkg.$init = function() {};
 19779  		/* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 19780  		$r = errors.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 19781  		$r = js.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 19782  		$r = nosync.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 19783  		$r = runtime.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 19784  		$r = syscall.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 19785  		localLoc = new Location.ptr("", sliceType.nil, sliceType$1.nil, new $Int64(0, 0), new $Int64(0, 0), ptrType.nil);
 19786  		localOnce = new nosync.Once.ptr(false, false);
 19787  		zoneSources = new sliceType$2([runtime.GOROOT() + "/lib/time/zoneinfo.zip"]);
 19788  		std0x = $toNativeArray($kindInt, [260, 265, 524, 526, 528, 274]);
 19789  		longDayNames = new sliceType$2(["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"]);
 19790  		shortDayNames = new sliceType$2(["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"]);
 19791  		shortMonthNames = new sliceType$2(["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]);
 19792  		longMonthNames = new sliceType$2(["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]);
 19793  		atoiError = errors.New("time: invalid number");
 19794  		errBad = errors.New("bad value for field");
 19795  		errLeadingInt = errors.New("time: bad [0-9]*");
 19796  		months = $toNativeArray($kindString, ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]);
 19797  		days = $toNativeArray($kindString, ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"]);
 19798  		daysBefore = $toNativeArray($kindInt32, [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334, 365]);
 19799  		utcLoc = new Location.ptr("UTC", sliceType.nil, sliceType$1.nil, new $Int64(0, 0), new $Int64(0, 0), ptrType.nil);
 19800  		$pkg.UTC = utcLoc;
 19801  		$pkg.Local = localLoc;
 19802  		errLocation = errors.New("time: invalid location name");
 19803  		badData = errors.New("malformed time zone information");
 19804  		$unused(new sliceType$2(["/usr/share/zoneinfo/", "/usr/share/lib/zoneinfo/", "/usr/lib/locale/TZ/", runtime.GOROOT() + "/lib/time/zoneinfo.zip"]));
 19805  		init();
 19806  		/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
 19807  	};
 19808  	$pkg.$init = $init;
 19809  	return $pkg;
 19810  })();
 19811  $packages["internal/poll"] = (function() {
 19812  	var $pkg = {}, $init, errors, io, runtime, atomic, syscall, time, pollDesc, TimeoutError, fdMutex, FD, ptrType, chanType, sliceType, ptrType$1, ptrType$2, arrayType, sliceType$1, ptrType$3, ptrType$4, ptrType$5, ptrType$6, ptrType$7, ptrType$8, sliceType$2, ptrType$9, funcType, funcType$1, ptrType$10, ptrType$11, ptrType$12, ptrType$13, sliceType$3, ptrType$14, semWaiters, runtime_Semacquire, runtime_Semrelease, errClosing, consume, SendFile, accept;
 19813  	errors = $packages["errors"];
 19814  	io = $packages["io"];
 19815  	runtime = $packages["runtime"];
 19816  	atomic = $packages["sync/atomic"];
 19817  	syscall = $packages["syscall"];
 19818  	time = $packages["time"];
 19819  	pollDesc = $pkg.pollDesc = $newType(0, $kindStruct, "poll.pollDesc", true, "internal/poll", false, function(closing_) {
 19820  		this.$val = this;
 19821  		if (arguments.length === 0) {
 19822  			this.closing = false;
 19823  			return;
 19824  		}
 19825  		this.closing = closing_;
 19826  	});
 19827  	TimeoutError = $pkg.TimeoutError = $newType(0, $kindStruct, "poll.TimeoutError", true, "internal/poll", true, function() {
 19828  		this.$val = this;
 19829  		if (arguments.length === 0) {
 19830  			return;
 19831  		}
 19832  	});
 19833  	fdMutex = $pkg.fdMutex = $newType(0, $kindStruct, "poll.fdMutex", true, "internal/poll", false, function(state_, rsema_, wsema_) {
 19834  		this.$val = this;
 19835  		if (arguments.length === 0) {
 19836  			this.state = new $Uint64(0, 0);
 19837  			this.rsema = 0;
 19838  			this.wsema = 0;
 19839  			return;
 19840  		}
 19841  		this.state = state_;
 19842  		this.rsema = rsema_;
 19843  		this.wsema = wsema_;
 19844  	});
 19845  	FD = $pkg.FD = $newType(0, $kindStruct, "poll.FD", true, "internal/poll", true, function(fdmu_, Sysfd_, pd_, iovecs_, csema_, IsStream_, ZeroReadIsEOF_, isFile_, isBlocking_) {
 19846  		this.$val = this;
 19847  		if (arguments.length === 0) {
 19848  			this.fdmu = new fdMutex.ptr(new $Uint64(0, 0), 0, 0);
 19849  			this.Sysfd = 0;
 19850  			this.pd = new pollDesc.ptr(false);
 19851  			this.iovecs = ptrType$3.nil;
 19852  			this.csema = 0;
 19853  			this.IsStream = false;
 19854  			this.ZeroReadIsEOF = false;
 19855  			this.isFile = false;
 19856  			this.isBlocking = false;
 19857  			return;
 19858  		}
 19859  		this.fdmu = fdmu_;
 19860  		this.Sysfd = Sysfd_;
 19861  		this.pd = pd_;
 19862  		this.iovecs = iovecs_;
 19863  		this.csema = csema_;
 19864  		this.IsStream = IsStream_;
 19865  		this.ZeroReadIsEOF = ZeroReadIsEOF_;
 19866  		this.isFile = isFile_;
 19867  		this.isBlocking = isBlocking_;
 19868  	});
 19869  	ptrType = $ptrType($Uint32);
 19870  	chanType = $chanType($Bool, false, false);
 19871  	sliceType = $sliceType(chanType);
 19872  	ptrType$1 = $ptrType($Uint64);
 19873  	ptrType$2 = $ptrType($Int64);
 19874  	arrayType = $arrayType($Uint8, 4);
 19875  	sliceType$1 = $sliceType(syscall.Iovec);
 19876  	ptrType$3 = $ptrType(sliceType$1);
 19877  	ptrType$4 = $ptrType($Uint8);
 19878  	ptrType$5 = $ptrType(FD);
 19879  	ptrType$6 = $ptrType(pollDesc);
 19880  	ptrType$7 = $ptrType(TimeoutError);
 19881  	ptrType$8 = $ptrType(fdMutex);
 19882  	sliceType$2 = $sliceType($Uint8);
 19883  	ptrType$9 = $ptrType(syscall.Stat_t);
 19884  	funcType = $funcType([$Uintptr], [], false);
 19885  	funcType$1 = $funcType([$Uintptr], [$Bool], false);
 19886  	ptrType$10 = $ptrType(syscall.Linger);
 19887  	ptrType$11 = $ptrType(syscall.IPMreqn);
 19888  	ptrType$12 = $ptrType(syscall.IPMreq);
 19889  	ptrType$13 = $ptrType(syscall.IPv6Mreq);
 19890  	sliceType$3 = $sliceType(sliceType$2);
 19891  	ptrType$14 = $ptrType(sliceType$3);
 19892  	pollDesc.ptr.prototype.init = function(fd) {
 19893  		var fd, pd;
 19894  		pd = this;
 19895  		return $ifaceNil;
 19896  	};
 19897  	pollDesc.prototype.init = function(fd) { return this.$val.init(fd); };
 19898  	pollDesc.ptr.prototype.close = function() {
 19899  		var pd;
 19900  		pd = this;
 19901  	};
 19902  	pollDesc.prototype.close = function() { return this.$val.close(); };
 19903  	pollDesc.ptr.prototype.evict = function() {
 19904  		var pd;
 19905  		pd = this;
 19906  		pd.closing = true;
 19907  	};
 19908  	pollDesc.prototype.evict = function() { return this.$val.evict(); };
 19909  	pollDesc.ptr.prototype.prepare = function(mode, isFile) {
 19910  		var isFile, mode, pd;
 19911  		pd = this;
 19912  		if (pd.closing) {
 19913  			return errClosing(isFile);
 19914  		}
 19915  		return $ifaceNil;
 19916  	};
 19917  	pollDesc.prototype.prepare = function(mode, isFile) { return this.$val.prepare(mode, isFile); };
 19918  	pollDesc.ptr.prototype.prepareRead = function(isFile) {
 19919  		var isFile, pd;
 19920  		pd = this;
 19921  		return pd.prepare(114, isFile);
 19922  	};
 19923  	pollDesc.prototype.prepareRead = function(isFile) { return this.$val.prepareRead(isFile); };
 19924  	pollDesc.ptr.prototype.prepareWrite = function(isFile) {
 19925  		var isFile, pd;
 19926  		pd = this;
 19927  		return pd.prepare(119, isFile);
 19928  	};
 19929  	pollDesc.prototype.prepareWrite = function(isFile) { return this.$val.prepareWrite(isFile); };
 19930  	pollDesc.ptr.prototype.wait = function(mode, isFile) {
 19931  		var isFile, mode, pd;
 19932  		pd = this;
 19933  		if (pd.closing) {
 19934  			return errClosing(isFile);
 19935  		}
 19936  		return $pkg.ErrTimeout;
 19937  	};
 19938  	pollDesc.prototype.wait = function(mode, isFile) { return this.$val.wait(mode, isFile); };
 19939  	pollDesc.ptr.prototype.waitRead = function(isFile) {
 19940  		var isFile, pd;
 19941  		pd = this;
 19942  		return pd.wait(114, isFile);
 19943  	};
 19944  	pollDesc.prototype.waitRead = function(isFile) { return this.$val.waitRead(isFile); };
 19945  	pollDesc.ptr.prototype.waitWrite = function(isFile) {
 19946  		var isFile, pd;
 19947  		pd = this;
 19948  		return pd.wait(119, isFile);
 19949  	};
 19950  	pollDesc.prototype.waitWrite = function(isFile) { return this.$val.waitWrite(isFile); };
 19951  	pollDesc.ptr.prototype.pollable = function() {
 19952  		return true;
 19953  	};
 19954  	pollDesc.prototype.pollable = function() { return this.$val.pollable(); };
 19955  	FD.ptr.prototype.SetDeadline = function(t) {
 19956  		var t;
 19957  		return $ifaceNil;
 19958  	};
 19959  	FD.prototype.SetDeadline = function(t) { return this.$val.SetDeadline(t); };
 19960  	FD.ptr.prototype.SetReadDeadline = function(t) {
 19961  		var t;
 19962  		return $ifaceNil;
 19963  	};
 19964  	FD.prototype.SetReadDeadline = function(t) { return this.$val.SetReadDeadline(t); };
 19965  	FD.ptr.prototype.SetWriteDeadline = function(t) {
 19966  		var t;
 19967  		return $ifaceNil;
 19968  	};
 19969  	FD.prototype.SetWriteDeadline = function(t) { return this.$val.SetWriteDeadline(t); };
 19970  	runtime_Semacquire = function(s) {
 19971  		var _entry, _key, _r, ch, s, $s, $r;
 19972  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _entry = $f._entry; _key = $f._key; _r = $f._r; ch = $f.ch; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 19973  		/* */ if (s.$get() === 0) { $s = 1; continue; }
 19974  		/* */ $s = 2; continue;
 19975  		/* if (s.$get() === 0) { */ case 1:
 19976  			ch = new $Chan($Bool, 0);
 19977  			_key = s; (semWaiters || $throwRuntimeError("assignment to entry in nil map"))[ptrType.keyFor(_key)] = { k: _key, v: $append((_entry = semWaiters[ptrType.keyFor(s)], _entry !== undefined ? _entry.v : sliceType.nil), ch) };
 19978  			_r = $recv(ch); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 19979  			_r[0];
 19980  		/* } */ case 2:
 19981  		s.$set(s.$get() - (1) >>> 0);
 19982  		$s = -1; return;
 19983  		/* */ } return; } if ($f === undefined) { $f = { $blk: runtime_Semacquire }; } $f._entry = _entry; $f._key = _key; $f._r = _r; $f.ch = ch; $f.s = s; $f.$s = $s; $f.$r = $r; return $f;
 19984  	};
 19985  	runtime_Semrelease = function(s) {
 19986  		var _entry, _key, ch, s, w, $s, $r;
 19987  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _entry = $f._entry; _key = $f._key; ch = $f.ch; s = $f.s; w = $f.w; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 19988  		s.$set(s.$get() + (1) >>> 0);
 19989  		w = (_entry = semWaiters[ptrType.keyFor(s)], _entry !== undefined ? _entry.v : sliceType.nil);
 19990  		if (w.$length === 0) {
 19991  			$s = -1; return;
 19992  		}
 19993  		ch = (0 >= w.$length ? ($throwRuntimeError("index out of range"), undefined) : w.$array[w.$offset + 0]);
 19994  		w = $subslice(w, 1);
 19995  		_key = s; (semWaiters || $throwRuntimeError("assignment to entry in nil map"))[ptrType.keyFor(_key)] = { k: _key, v: w };
 19996  		if (w.$length === 0) {
 19997  			delete semWaiters[ptrType.keyFor(s)];
 19998  		}
 19999  		$r = $send(ch, true); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 20000  		$s = -1; return;
 20001  		/* */ } return; } if ($f === undefined) { $f = { $blk: runtime_Semrelease }; } $f._entry = _entry; $f._key = _key; $f.ch = ch; $f.s = s; $f.w = w; $f.$s = $s; $f.$r = $r; return $f;
 20002  	};
 20003  	errClosing = function(isFile) {
 20004  		var isFile;
 20005  		if (isFile) {
 20006  			return $pkg.ErrFileClosing;
 20007  		}
 20008  		return $pkg.ErrNetClosing;
 20009  	};
 20010  	TimeoutError.ptr.prototype.Error = function() {
 20011  		var e;
 20012  		e = this;
 20013  		return "i/o timeout";
 20014  	};
 20015  	TimeoutError.prototype.Error = function() { return this.$val.Error(); };
 20016  	TimeoutError.ptr.prototype.Timeout = function() {
 20017  		var e;
 20018  		e = this;
 20019  		return true;
 20020  	};
 20021  	TimeoutError.prototype.Timeout = function() { return this.$val.Timeout(); };
 20022  	TimeoutError.ptr.prototype.Temporary = function() {
 20023  		var e;
 20024  		e = this;
 20025  		return true;
 20026  	};
 20027  	TimeoutError.prototype.Temporary = function() { return this.$val.Temporary(); };
 20028  	consume = function(v, n) {
 20029  		var ln0, n, v, x, x$1, x$2, x$3;
 20030  		while (true) {
 20031  			if (!(v.$get().$length > 0)) { break; }
 20032  			ln0 = (new $Int64(0, (x = v.$get(), (0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0])).$length));
 20033  			if ((ln0.$high > n.$high || (ln0.$high === n.$high && ln0.$low > n.$low))) {
 20034  				(x$2 = v.$get(), (0 >= x$2.$length ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + 0] = $subslice((x$1 = v.$get(), (0 >= x$1.$length ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + 0])), $flatten64(n))));
 20035  				return;
 20036  			}
 20037  			n = (x$3 = ln0, new $Int64(n.$high - x$3.$high, n.$low - x$3.$low));
 20038  			v.$set($subslice((v.$get()), 1));
 20039  		}
 20040  	};
 20041  	fdMutex.ptr.prototype.incref = function() {
 20042  		var mu, new$1, old, x, x$1;
 20043  		mu = this;
 20044  		while (true) {
 20045  			old = atomic.LoadUint64((mu.$ptr_state || (mu.$ptr_state = new ptrType$1(function() { return this.$target.state; }, function($v) { this.$target.state = $v; }, mu))));
 20046  			if (!((x = new $Uint64(old.$high & 0, (old.$low & 1) >>> 0), (x.$high === 0 && x.$low === 0)))) {
 20047  				return false;
 20048  			}
 20049  			new$1 = new $Uint64(old.$high + 0, old.$low + 8);
 20050  			if ((x$1 = new $Uint64(new$1.$high & 0, (new$1.$low & 8388600) >>> 0), (x$1.$high === 0 && x$1.$low === 0))) {
 20051  				$panic(new $String("inconsistent poll.fdMutex"));
 20052  			}
 20053  			if (atomic.CompareAndSwapUint64((mu.$ptr_state || (mu.$ptr_state = new ptrType$1(function() { return this.$target.state; }, function($v) { this.$target.state = $v; }, mu))), old, new$1)) {
 20054  				return true;
 20055  			}
 20056  		}
 20057  	};
 20058  	fdMutex.prototype.incref = function() { return this.$val.incref(); };
 20059  	fdMutex.ptr.prototype.increfAndClose = function() {
 20060  		var mu, new$1, old, x, x$1, x$2, x$3, x$4, x$5, x$6, x$7, $s, $r;
 20061  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; mu = $f.mu; new$1 = $f.new$1; old = $f.old; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; x$3 = $f.x$3; x$4 = $f.x$4; x$5 = $f.x$5; x$6 = $f.x$6; x$7 = $f.x$7; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 20062  		mu = this;
 20063  		/* while (true) { */ case 1:
 20064  			old = atomic.LoadUint64((mu.$ptr_state || (mu.$ptr_state = new ptrType$1(function() { return this.$target.state; }, function($v) { this.$target.state = $v; }, mu))));
 20065  			if (!((x = new $Uint64(old.$high & 0, (old.$low & 1) >>> 0), (x.$high === 0 && x.$low === 0)))) {
 20066  				$s = -1; return false;
 20067  			}
 20068  			new$1 = (x$1 = new $Uint64(old.$high | 0, (old.$low | 1) >>> 0), new $Uint64(x$1.$high + 0, x$1.$low + 8));
 20069  			if ((x$2 = new $Uint64(new$1.$high & 0, (new$1.$low & 8388600) >>> 0), (x$2.$high === 0 && x$2.$low === 0))) {
 20070  				$panic(new $String("inconsistent poll.fdMutex"));
 20071  			}
 20072  			new$1 = (x$3 = new $Uint64(2147483647, 4286578688), new $Uint64(new$1.$high & ~x$3.$high, (new$1.$low & ~x$3.$low) >>> 0));
 20073  			/* */ if (atomic.CompareAndSwapUint64((mu.$ptr_state || (mu.$ptr_state = new ptrType$1(function() { return this.$target.state; }, function($v) { this.$target.state = $v; }, mu))), old, new$1)) { $s = 3; continue; }
 20074  			/* */ $s = 4; continue;
 20075  			/* if (atomic.CompareAndSwapUint64((mu.$ptr_state || (mu.$ptr_state = new ptrType$1(function() { return this.$target.state; }, function($v) { this.$target.state = $v; }, mu))), old, new$1)) { */ case 3:
 20076  				/* while (true) { */ case 5:
 20077  					/* if (!(!((x$4 = new $Uint64(old.$high & 2047, (old.$low & 4286578688) >>> 0), (x$4.$high === 0 && x$4.$low === 0))))) { break; } */ if(!(!((x$4 = new $Uint64(old.$high & 2047, (old.$low & 4286578688) >>> 0), (x$4.$high === 0 && x$4.$low === 0))))) { $s = 6; continue; }
 20078  					old = (x$5 = new $Uint64(0, 8388608), new $Uint64(old.$high - x$5.$high, old.$low - x$5.$low));
 20079  					$r = runtime_Semrelease((mu.$ptr_rsema || (mu.$ptr_rsema = new ptrType(function() { return this.$target.rsema; }, function($v) { this.$target.rsema = $v; }, mu)))); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 20080  				/* } */ $s = 5; continue; case 6:
 20081  				/* while (true) { */ case 8:
 20082  					/* if (!(!((x$6 = new $Uint64(old.$high & 2147481600, (old.$low & 0) >>> 0), (x$6.$high === 0 && x$6.$low === 0))))) { break; } */ if(!(!((x$6 = new $Uint64(old.$high & 2147481600, (old.$low & 0) >>> 0), (x$6.$high === 0 && x$6.$low === 0))))) { $s = 9; continue; }
 20083  					old = (x$7 = new $Uint64(2048, 0), new $Uint64(old.$high - x$7.$high, old.$low - x$7.$low));
 20084  					$r = runtime_Semrelease((mu.$ptr_wsema || (mu.$ptr_wsema = new ptrType(function() { return this.$target.wsema; }, function($v) { this.$target.wsema = $v; }, mu)))); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 20085  				/* } */ $s = 8; continue; case 9:
 20086  				$s = -1; return true;
 20087  			/* } */ case 4:
 20088  		/* } */ $s = 1; continue; case 2:
 20089  		$s = -1; return false;
 20090  		/* */ } return; } if ($f === undefined) { $f = { $blk: fdMutex.ptr.prototype.increfAndClose }; } $f.mu = mu; $f.new$1 = new$1; $f.old = old; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.x$3 = x$3; $f.x$4 = x$4; $f.x$5 = x$5; $f.x$6 = x$6; $f.x$7 = x$7; $f.$s = $s; $f.$r = $r; return $f;
 20091  	};
 20092  	fdMutex.prototype.increfAndClose = function() { return this.$val.increfAndClose(); };
 20093  	fdMutex.ptr.prototype.decref = function() {
 20094  		var mu, new$1, old, x, x$1;
 20095  		mu = this;
 20096  		while (true) {
 20097  			old = atomic.LoadUint64((mu.$ptr_state || (mu.$ptr_state = new ptrType$1(function() { return this.$target.state; }, function($v) { this.$target.state = $v; }, mu))));
 20098  			if ((x = new $Uint64(old.$high & 0, (old.$low & 8388600) >>> 0), (x.$high === 0 && x.$low === 0))) {
 20099  				$panic(new $String("inconsistent poll.fdMutex"));
 20100  			}
 20101  			new$1 = new $Uint64(old.$high - 0, old.$low - 8);
 20102  			if (atomic.CompareAndSwapUint64((mu.$ptr_state || (mu.$ptr_state = new ptrType$1(function() { return this.$target.state; }, function($v) { this.$target.state = $v; }, mu))), old, new$1)) {
 20103  				return (x$1 = new $Uint64(new$1.$high & 0, (new$1.$low & 8388601) >>> 0), (x$1.$high === 0 && x$1.$low === 1));
 20104  			}
 20105  		}
 20106  	};
 20107  	fdMutex.prototype.decref = function() { return this.$val.decref(); };
 20108  	fdMutex.ptr.prototype.rwlock = function(read) {
 20109  		var _tmp, _tmp$1, _tmp$2, mu, mutexBit, mutexMask, mutexSema, mutexWait, new$1, old, read, x, x$1, x$2, x$3, x$4, x$5, $s, $r;
 20110  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; mu = $f.mu; mutexBit = $f.mutexBit; mutexMask = $f.mutexMask; mutexSema = $f.mutexSema; mutexWait = $f.mutexWait; new$1 = $f.new$1; old = $f.old; read = $f.read; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; x$3 = $f.x$3; x$4 = $f.x$4; x$5 = $f.x$5; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 20111  		mu = this;
 20112  		_tmp = new $Uint64(0, 0);
 20113  		_tmp$1 = new $Uint64(0, 0);
 20114  		_tmp$2 = new $Uint64(0, 0);
 20115  		mutexBit = _tmp;
 20116  		mutexWait = _tmp$1;
 20117  		mutexMask = _tmp$2;
 20118  		mutexSema = ptrType.nil;
 20119  		if (read) {
 20120  			mutexBit = new $Uint64(0, 2);
 20121  			mutexWait = new $Uint64(0, 8388608);
 20122  			mutexMask = new $Uint64(2047, 4286578688);
 20123  			mutexSema = (mu.$ptr_rsema || (mu.$ptr_rsema = new ptrType(function() { return this.$target.rsema; }, function($v) { this.$target.rsema = $v; }, mu)));
 20124  		} else {
 20125  			mutexBit = new $Uint64(0, 4);
 20126  			mutexWait = new $Uint64(2048, 0);
 20127  			mutexMask = new $Uint64(2147481600, 0);
 20128  			mutexSema = (mu.$ptr_wsema || (mu.$ptr_wsema = new ptrType(function() { return this.$target.wsema; }, function($v) { this.$target.wsema = $v; }, mu)));
 20129  		}
 20130  		/* while (true) { */ case 1:
 20131  			old = atomic.LoadUint64((mu.$ptr_state || (mu.$ptr_state = new ptrType$1(function() { return this.$target.state; }, function($v) { this.$target.state = $v; }, mu))));
 20132  			if (!((x = new $Uint64(old.$high & 0, (old.$low & 1) >>> 0), (x.$high === 0 && x.$low === 0)))) {
 20133  				$s = -1; return false;
 20134  			}
 20135  			new$1 = new $Uint64(0, 0);
 20136  			if ((x$1 = new $Uint64(old.$high & mutexBit.$high, (old.$low & mutexBit.$low) >>> 0), (x$1.$high === 0 && x$1.$low === 0))) {
 20137  				new$1 = (x$2 = new $Uint64(old.$high | mutexBit.$high, (old.$low | mutexBit.$low) >>> 0), new $Uint64(x$2.$high + 0, x$2.$low + 8));
 20138  				if ((x$3 = new $Uint64(new$1.$high & 0, (new$1.$low & 8388600) >>> 0), (x$3.$high === 0 && x$3.$low === 0))) {
 20139  					$panic(new $String("inconsistent poll.fdMutex"));
 20140  				}
 20141  			} else {
 20142  				new$1 = new $Uint64(old.$high + mutexWait.$high, old.$low + mutexWait.$low);
 20143  				if ((x$4 = new $Uint64(new$1.$high & mutexMask.$high, (new$1.$low & mutexMask.$low) >>> 0), (x$4.$high === 0 && x$4.$low === 0))) {
 20144  					$panic(new $String("inconsistent poll.fdMutex"));
 20145  				}
 20146  			}
 20147  			/* */ if (atomic.CompareAndSwapUint64((mu.$ptr_state || (mu.$ptr_state = new ptrType$1(function() { return this.$target.state; }, function($v) { this.$target.state = $v; }, mu))), old, new$1)) { $s = 3; continue; }
 20148  			/* */ $s = 4; continue;
 20149  			/* if (atomic.CompareAndSwapUint64((mu.$ptr_state || (mu.$ptr_state = new ptrType$1(function() { return this.$target.state; }, function($v) { this.$target.state = $v; }, mu))), old, new$1)) { */ case 3:
 20150  				if ((x$5 = new $Uint64(old.$high & mutexBit.$high, (old.$low & mutexBit.$low) >>> 0), (x$5.$high === 0 && x$5.$low === 0))) {
 20151  					$s = -1; return true;
 20152  				}
 20153  				$r = runtime_Semacquire(mutexSema); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 20154  			/* } */ case 4:
 20155  		/* } */ $s = 1; continue; case 2:
 20156  		$s = -1; return false;
 20157  		/* */ } return; } if ($f === undefined) { $f = { $blk: fdMutex.ptr.prototype.rwlock }; } $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f.mu = mu; $f.mutexBit = mutexBit; $f.mutexMask = mutexMask; $f.mutexSema = mutexSema; $f.mutexWait = mutexWait; $f.new$1 = new$1; $f.old = old; $f.read = read; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.x$3 = x$3; $f.x$4 = x$4; $f.x$5 = x$5; $f.$s = $s; $f.$r = $r; return $f;
 20158  	};
 20159  	fdMutex.prototype.rwlock = function(read) { return this.$val.rwlock(read); };
 20160  	fdMutex.ptr.prototype.rwunlock = function(read) {
 20161  		var _tmp, _tmp$1, _tmp$2, mu, mutexBit, mutexMask, mutexSema, mutexWait, new$1, old, read, x, x$1, x$2, x$3, x$4, x$5, x$6, $s, $r;
 20162  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; mu = $f.mu; mutexBit = $f.mutexBit; mutexMask = $f.mutexMask; mutexSema = $f.mutexSema; mutexWait = $f.mutexWait; new$1 = $f.new$1; old = $f.old; read = $f.read; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; x$3 = $f.x$3; x$4 = $f.x$4; x$5 = $f.x$5; x$6 = $f.x$6; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 20163  		mu = this;
 20164  		_tmp = new $Uint64(0, 0);
 20165  		_tmp$1 = new $Uint64(0, 0);
 20166  		_tmp$2 = new $Uint64(0, 0);
 20167  		mutexBit = _tmp;
 20168  		mutexWait = _tmp$1;
 20169  		mutexMask = _tmp$2;
 20170  		mutexSema = ptrType.nil;
 20171  		if (read) {
 20172  			mutexBit = new $Uint64(0, 2);
 20173  			mutexWait = new $Uint64(0, 8388608);
 20174  			mutexMask = new $Uint64(2047, 4286578688);
 20175  			mutexSema = (mu.$ptr_rsema || (mu.$ptr_rsema = new ptrType(function() { return this.$target.rsema; }, function($v) { this.$target.rsema = $v; }, mu)));
 20176  		} else {
 20177  			mutexBit = new $Uint64(0, 4);
 20178  			mutexWait = new $Uint64(2048, 0);
 20179  			mutexMask = new $Uint64(2147481600, 0);
 20180  			mutexSema = (mu.$ptr_wsema || (mu.$ptr_wsema = new ptrType(function() { return this.$target.wsema; }, function($v) { this.$target.wsema = $v; }, mu)));
 20181  		}
 20182  		/* while (true) { */ case 1:
 20183  			old = atomic.LoadUint64((mu.$ptr_state || (mu.$ptr_state = new ptrType$1(function() { return this.$target.state; }, function($v) { this.$target.state = $v; }, mu))));
 20184  			if ((x = new $Uint64(old.$high & mutexBit.$high, (old.$low & mutexBit.$low) >>> 0), (x.$high === 0 && x.$low === 0)) || (x$1 = new $Uint64(old.$high & 0, (old.$low & 8388600) >>> 0), (x$1.$high === 0 && x$1.$low === 0))) {
 20185  				$panic(new $String("inconsistent poll.fdMutex"));
 20186  			}
 20187  			new$1 = (x$2 = new $Uint64(old.$high & ~mutexBit.$high, (old.$low & ~mutexBit.$low) >>> 0), new $Uint64(x$2.$high - 0, x$2.$low - 8));
 20188  			if (!((x$3 = new $Uint64(old.$high & mutexMask.$high, (old.$low & mutexMask.$low) >>> 0), (x$3.$high === 0 && x$3.$low === 0)))) {
 20189  				new$1 = (x$4 = mutexWait, new $Uint64(new$1.$high - x$4.$high, new$1.$low - x$4.$low));
 20190  			}
 20191  			/* */ if (atomic.CompareAndSwapUint64((mu.$ptr_state || (mu.$ptr_state = new ptrType$1(function() { return this.$target.state; }, function($v) { this.$target.state = $v; }, mu))), old, new$1)) { $s = 3; continue; }
 20192  			/* */ $s = 4; continue;
 20193  			/* if (atomic.CompareAndSwapUint64((mu.$ptr_state || (mu.$ptr_state = new ptrType$1(function() { return this.$target.state; }, function($v) { this.$target.state = $v; }, mu))), old, new$1)) { */ case 3:
 20194  				/* */ if (!((x$5 = new $Uint64(old.$high & mutexMask.$high, (old.$low & mutexMask.$low) >>> 0), (x$5.$high === 0 && x$5.$low === 0)))) { $s = 5; continue; }
 20195  				/* */ $s = 6; continue;
 20196  				/* if (!((x$5 = new $Uint64(old.$high & mutexMask.$high, (old.$low & mutexMask.$low) >>> 0), (x$5.$high === 0 && x$5.$low === 0)))) { */ case 5:
 20197  					$r = runtime_Semrelease(mutexSema); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 20198  				/* } */ case 6:
 20199  				$s = -1; return (x$6 = new $Uint64(new$1.$high & 0, (new$1.$low & 8388601) >>> 0), (x$6.$high === 0 && x$6.$low === 1));
 20200  			/* } */ case 4:
 20201  		/* } */ $s = 1; continue; case 2:
 20202  		$s = -1; return false;
 20203  		/* */ } return; } if ($f === undefined) { $f = { $blk: fdMutex.ptr.prototype.rwunlock }; } $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f.mu = mu; $f.mutexBit = mutexBit; $f.mutexMask = mutexMask; $f.mutexSema = mutexSema; $f.mutexWait = mutexWait; $f.new$1 = new$1; $f.old = old; $f.read = read; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.x$3 = x$3; $f.x$4 = x$4; $f.x$5 = x$5; $f.x$6 = x$6; $f.$s = $s; $f.$r = $r; return $f;
 20204  	};
 20205  	fdMutex.prototype.rwunlock = function(read) { return this.$val.rwunlock(read); };
 20206  	FD.ptr.prototype.incref = function() {
 20207  		var fd;
 20208  		fd = this;
 20209  		if (!fd.fdmu.incref()) {
 20210  			return errClosing(fd.isFile);
 20211  		}
 20212  		return $ifaceNil;
 20213  	};
 20214  	FD.prototype.incref = function() { return this.$val.incref(); };
 20215  	FD.ptr.prototype.decref = function() {
 20216  		var _r, fd, $s, $r;
 20217  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; fd = $f.fd; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 20218  		fd = this;
 20219  		/* */ if (fd.fdmu.decref()) { $s = 1; continue; }
 20220  		/* */ $s = 2; continue;
 20221  		/* if (fd.fdmu.decref()) { */ case 1:
 20222  			_r = fd.destroy(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 20223  			$s = -1; return _r;
 20224  		/* } */ case 2:
 20225  		$s = -1; return $ifaceNil;
 20226  		/* */ } return; } if ($f === undefined) { $f = { $blk: FD.ptr.prototype.decref }; } $f._r = _r; $f.fd = fd; $f.$s = $s; $f.$r = $r; return $f;
 20227  	};
 20228  	FD.prototype.decref = function() { return this.$val.decref(); };
 20229  	FD.ptr.prototype.readLock = function() {
 20230  		var _r, fd, $s, $r;
 20231  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; fd = $f.fd; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 20232  		fd = this;
 20233  		_r = fd.fdmu.rwlock(true); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 20234  		/* */ if (!_r) { $s = 1; continue; }
 20235  		/* */ $s = 2; continue;
 20236  		/* if (!_r) { */ case 1:
 20237  			$s = -1; return errClosing(fd.isFile);
 20238  		/* } */ case 2:
 20239  		$s = -1; return $ifaceNil;
 20240  		/* */ } return; } if ($f === undefined) { $f = { $blk: FD.ptr.prototype.readLock }; } $f._r = _r; $f.fd = fd; $f.$s = $s; $f.$r = $r; return $f;
 20241  	};
 20242  	FD.prototype.readLock = function() { return this.$val.readLock(); };
 20243  	FD.ptr.prototype.readUnlock = function() {
 20244  		var _r, _r$1, fd, $s, $r;
 20245  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; fd = $f.fd; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 20246  		fd = this;
 20247  		_r = fd.fdmu.rwunlock(true); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 20248  		/* */ if (_r) { $s = 1; continue; }
 20249  		/* */ $s = 2; continue;
 20250  		/* if (_r) { */ case 1:
 20251  			_r$1 = fd.destroy(); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 20252  			_r$1;
 20253  		/* } */ case 2:
 20254  		$s = -1; return;
 20255  		/* */ } return; } if ($f === undefined) { $f = { $blk: FD.ptr.prototype.readUnlock }; } $f._r = _r; $f._r$1 = _r$1; $f.fd = fd; $f.$s = $s; $f.$r = $r; return $f;
 20256  	};
 20257  	FD.prototype.readUnlock = function() { return this.$val.readUnlock(); };
 20258  	FD.ptr.prototype.writeLock = function() {
 20259  		var _r, fd, $s, $r;
 20260  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; fd = $f.fd; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 20261  		fd = this;
 20262  		_r = fd.fdmu.rwlock(false); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 20263  		/* */ if (!_r) { $s = 1; continue; }
 20264  		/* */ $s = 2; continue;
 20265  		/* if (!_r) { */ case 1:
 20266  			$s = -1; return errClosing(fd.isFile);
 20267  		/* } */ case 2:
 20268  		$s = -1; return $ifaceNil;
 20269  		/* */ } return; } if ($f === undefined) { $f = { $blk: FD.ptr.prototype.writeLock }; } $f._r = _r; $f.fd = fd; $f.$s = $s; $f.$r = $r; return $f;
 20270  	};
 20271  	FD.prototype.writeLock = function() { return this.$val.writeLock(); };
 20272  	FD.ptr.prototype.writeUnlock = function() {
 20273  		var _r, _r$1, fd, $s, $r;
 20274  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; fd = $f.fd; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 20275  		fd = this;
 20276  		_r = fd.fdmu.rwunlock(false); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 20277  		/* */ if (_r) { $s = 1; continue; }
 20278  		/* */ $s = 2; continue;
 20279  		/* if (_r) { */ case 1:
 20280  			_r$1 = fd.destroy(); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 20281  			_r$1;
 20282  		/* } */ case 2:
 20283  		$s = -1; return;
 20284  		/* */ } return; } if ($f === undefined) { $f = { $blk: FD.ptr.prototype.writeUnlock }; } $f._r = _r; $f._r$1 = _r$1; $f.fd = fd; $f.$s = $s; $f.$r = $r; return $f;
 20285  	};
 20286  	FD.prototype.writeUnlock = function() { return this.$val.writeUnlock(); };
 20287  	FD.ptr.prototype.eofError = function(n, err) {
 20288  		var err, fd, n;
 20289  		fd = this;
 20290  		if ((n === 0) && $interfaceIsEqual(err, $ifaceNil) && fd.ZeroReadIsEOF) {
 20291  			return io.EOF;
 20292  		}
 20293  		return err;
 20294  	};
 20295  	FD.prototype.eofError = function(n, err) { return this.$val.eofError(n, err); };
 20296  	FD.ptr.prototype.Fchmod = function(mode) {
 20297  		var err, fd, mode, $s, $deferred, $r;
 20298  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; err = $f.err; fd = $f.fd; mode = $f.mode; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
 20299  		fd = this;
 20300  		err = fd.incref();
 20301  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 20302  			$s = -1; return err;
 20303  		}
 20304  		$deferred.push([$methodVal(fd, "decref"), []]);
 20305  		$s = -1; return syscall.Fchmod(fd.Sysfd, mode);
 20306  		/* */ } return; } } catch(err) { $err = err; $s = -1; return $ifaceNil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: FD.ptr.prototype.Fchmod }; } $f.err = err; $f.fd = fd; $f.mode = mode; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
 20307  	};
 20308  	FD.prototype.Fchmod = function(mode) { return this.$val.Fchmod(mode); };
 20309  	FD.ptr.prototype.Fchown = function(uid, gid) {
 20310  		var err, fd, gid, uid, $s, $deferred, $r;
 20311  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; err = $f.err; fd = $f.fd; gid = $f.gid; uid = $f.uid; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
 20312  		fd = this;
 20313  		err = fd.incref();
 20314  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 20315  			$s = -1; return err;
 20316  		}
 20317  		$deferred.push([$methodVal(fd, "decref"), []]);
 20318  		$s = -1; return syscall.Fchown(fd.Sysfd, uid, gid);
 20319  		/* */ } return; } } catch(err) { $err = err; $s = -1; return $ifaceNil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: FD.ptr.prototype.Fchown }; } $f.err = err; $f.fd = fd; $f.gid = gid; $f.uid = uid; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
 20320  	};
 20321  	FD.prototype.Fchown = function(uid, gid) { return this.$val.Fchown(uid, gid); };
 20322  	FD.ptr.prototype.Ftruncate = function(size) {
 20323  		var err, fd, size, $s, $deferred, $r;
 20324  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; err = $f.err; fd = $f.fd; size = $f.size; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
 20325  		fd = this;
 20326  		err = fd.incref();
 20327  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 20328  			$s = -1; return err;
 20329  		}
 20330  		$deferred.push([$methodVal(fd, "decref"), []]);
 20331  		$s = -1; return syscall.Ftruncate(fd.Sysfd, size);
 20332  		/* */ } return; } } catch(err) { $err = err; $s = -1; return $ifaceNil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: FD.ptr.prototype.Ftruncate }; } $f.err = err; $f.fd = fd; $f.size = size; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
 20333  	};
 20334  	FD.prototype.Ftruncate = function(size) { return this.$val.Ftruncate(size); };
 20335  	FD.ptr.prototype.Fsync = function() {
 20336  		var err, fd, $s, $deferred, $r;
 20337  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; err = $f.err; fd = $f.fd; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
 20338  		fd = this;
 20339  		err = fd.incref();
 20340  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 20341  			$s = -1; return err;
 20342  		}
 20343  		$deferred.push([$methodVal(fd, "decref"), []]);
 20344  		$s = -1; return syscall.Fsync(fd.Sysfd);
 20345  		/* */ } return; } } catch(err) { $err = err; $s = -1; return $ifaceNil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: FD.ptr.prototype.Fsync }; } $f.err = err; $f.fd = fd; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
 20346  	};
 20347  	FD.prototype.Fsync = function() { return this.$val.Fsync(); };
 20348  	FD.ptr.prototype.Init = function(net, pollable) {
 20349  		var fd, net, pollable;
 20350  		fd = this;
 20351  		if (net === "file") {
 20352  			fd.isFile = true;
 20353  		}
 20354  		if (!pollable) {
 20355  			fd.isBlocking = true;
 20356  			return $ifaceNil;
 20357  		}
 20358  		return fd.pd.init(fd);
 20359  	};
 20360  	FD.prototype.Init = function(net, pollable) { return this.$val.Init(net, pollable); };
 20361  	FD.ptr.prototype.destroy = function() {
 20362  		var _r, err, fd, $s, $r;
 20363  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; err = $f.err; fd = $f.fd; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 20364  		fd = this;
 20365  		fd.pd.close();
 20366  		_r = $pkg.CloseFunc(fd.Sysfd); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 20367  		err = _r;
 20368  		fd.Sysfd = -1;
 20369  		$r = runtime_Semrelease((fd.$ptr_csema || (fd.$ptr_csema = new ptrType(function() { return this.$target.csema; }, function($v) { this.$target.csema = $v; }, fd)))); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 20370  		$s = -1; return err;
 20371  		/* */ } return; } if ($f === undefined) { $f = { $blk: FD.ptr.prototype.destroy }; } $f._r = _r; $f.err = err; $f.fd = fd; $f.$s = $s; $f.$r = $r; return $f;
 20372  	};
 20373  	FD.prototype.destroy = function() { return this.$val.destroy(); };
 20374  	FD.ptr.prototype.Close = function() {
 20375  		var _r, _r$1, err, fd, $s, $r;
 20376  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; err = $f.err; fd = $f.fd; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 20377  		fd = this;
 20378  		_r = fd.fdmu.increfAndClose(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 20379  		/* */ if (!_r) { $s = 1; continue; }
 20380  		/* */ $s = 2; continue;
 20381  		/* if (!_r) { */ case 1:
 20382  			$s = -1; return errClosing(fd.isFile);
 20383  		/* } */ case 2:
 20384  		fd.pd.evict();
 20385  		_r$1 = fd.decref(); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 20386  		err = _r$1;
 20387  		/* */ if (!fd.isBlocking) { $s = 5; continue; }
 20388  		/* */ $s = 6; continue;
 20389  		/* if (!fd.isBlocking) { */ case 5:
 20390  			$r = runtime_Semacquire((fd.$ptr_csema || (fd.$ptr_csema = new ptrType(function() { return this.$target.csema; }, function($v) { this.$target.csema = $v; }, fd)))); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 20391  		/* } */ case 6:
 20392  		$s = -1; return err;
 20393  		/* */ } return; } if ($f === undefined) { $f = { $blk: FD.ptr.prototype.Close }; } $f._r = _r; $f._r$1 = _r$1; $f.err = err; $f.fd = fd; $f.$s = $s; $f.$r = $r; return $f;
 20394  	};
 20395  	FD.prototype.Close = function() { return this.$val.Close(); };
 20396  	FD.ptr.prototype.Shutdown = function(how) {
 20397  		var err, fd, how, $s, $deferred, $r;
 20398  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; err = $f.err; fd = $f.fd; how = $f.how; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
 20399  		fd = this;
 20400  		err = fd.incref();
 20401  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 20402  			$s = -1; return err;
 20403  		}
 20404  		$deferred.push([$methodVal(fd, "decref"), []]);
 20405  		$s = -1; return syscall.Shutdown(fd.Sysfd, how);
 20406  		/* */ } return; } } catch(err) { $err = err; $s = -1; return $ifaceNil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: FD.ptr.prototype.Shutdown }; } $f.err = err; $f.fd = fd; $f.how = how; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
 20407  	};
 20408  	FD.prototype.Shutdown = function(how) { return this.$val.Shutdown(how); };
 20409  	FD.ptr.prototype.SetBlocking = function() {
 20410  		var err, fd, $s, $deferred, $r;
 20411  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; err = $f.err; fd = $f.fd; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
 20412  		fd = this;
 20413  		err = fd.incref();
 20414  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 20415  			$s = -1; return err;
 20416  		}
 20417  		$deferred.push([$methodVal(fd, "decref"), []]);
 20418  		fd.isBlocking = true;
 20419  		$s = -1; return syscall.SetNonblock(fd.Sysfd, false);
 20420  		/* */ } return; } } catch(err) { $err = err; $s = -1; return $ifaceNil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: FD.ptr.prototype.SetBlocking }; } $f.err = err; $f.fd = fd; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
 20421  	};
 20422  	FD.prototype.SetBlocking = function() { return this.$val.SetBlocking(); };
 20423  	FD.ptr.prototype.Read = function(p) {
 20424  		var _r, _tuple, err, err$1, err$2, fd, n, p, $s, $deferred, $r;
 20425  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; err = $f.err; err$1 = $f.err$1; err$2 = $f.err$2; fd = $f.fd; n = $f.n; p = $f.p; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
 20426  		fd = this;
 20427  		_r = fd.readLock(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 20428  		err = _r;
 20429  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 20430  			$s = -1; return [0, err];
 20431  		}
 20432  		$deferred.push([$methodVal(fd, "readUnlock"), []]);
 20433  		if (p.$length === 0) {
 20434  			$s = -1; return [0, $ifaceNil];
 20435  		}
 20436  		err$1 = fd.pd.prepareRead(fd.isFile);
 20437  		if (!($interfaceIsEqual(err$1, $ifaceNil))) {
 20438  			$s = -1; return [0, err$1];
 20439  		}
 20440  		if (fd.IsStream && p.$length > 1073741824) {
 20441  			p = $subslice(p, 0, 1073741824);
 20442  		}
 20443  		while (true) {
 20444  			_tuple = syscall.Read(fd.Sysfd, p);
 20445  			n = _tuple[0];
 20446  			err$2 = _tuple[1];
 20447  			if (!($interfaceIsEqual(err$2, $ifaceNil))) {
 20448  				n = 0;
 20449  				if ($interfaceIsEqual(err$2, new syscall.Errno(11)) && fd.pd.pollable()) {
 20450  					err$2 = fd.pd.waitRead(fd.isFile);
 20451  					if ($interfaceIsEqual(err$2, $ifaceNil)) {
 20452  						continue;
 20453  					}
 20454  				}
 20455  				if (false && $interfaceIsEqual(err$2, new syscall.Errno(4))) {
 20456  					continue;
 20457  				}
 20458  			}
 20459  			err$2 = fd.eofError(n, err$2);
 20460  			$s = -1; return [n, err$2];
 20461  		}
 20462  		$s = -1; return [0, $ifaceNil];
 20463  		/* */ } return; } } catch(err) { $err = err; $s = -1; return [0, $ifaceNil]; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: FD.ptr.prototype.Read }; } $f._r = _r; $f._tuple = _tuple; $f.err = err; $f.err$1 = err$1; $f.err$2 = err$2; $f.fd = fd; $f.n = n; $f.p = p; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
 20464  	};
 20465  	FD.prototype.Read = function(p) { return this.$val.Read(p); };
 20466  	FD.ptr.prototype.Pread = function(p, off) {
 20467  		var _r, _tuple, err, err$1, fd, n, off, p, $s, $r;
 20468  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; err = $f.err; err$1 = $f.err$1; fd = $f.fd; n = $f.n; off = $f.off; p = $f.p; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 20469  		fd = this;
 20470  		err = fd.incref();
 20471  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 20472  			$s = -1; return [0, err];
 20473  		}
 20474  		if (fd.IsStream && p.$length > 1073741824) {
 20475  			p = $subslice(p, 0, 1073741824);
 20476  		}
 20477  		_tuple = syscall.Pread(fd.Sysfd, p, off);
 20478  		n = _tuple[0];
 20479  		err$1 = _tuple[1];
 20480  		if (!($interfaceIsEqual(err$1, $ifaceNil))) {
 20481  			n = 0;
 20482  		}
 20483  		_r = fd.decref(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 20484  		_r;
 20485  		err$1 = fd.eofError(n, err$1);
 20486  		$s = -1; return [n, err$1];
 20487  		/* */ } return; } if ($f === undefined) { $f = { $blk: FD.ptr.prototype.Pread }; } $f._r = _r; $f._tuple = _tuple; $f.err = err; $f.err$1 = err$1; $f.fd = fd; $f.n = n; $f.off = off; $f.p = p; $f.$s = $s; $f.$r = $r; return $f;
 20488  	};
 20489  	FD.prototype.Pread = function(p, off) { return this.$val.Pread(p, off); };
 20490  	FD.ptr.prototype.ReadFrom = function(p) {
 20491  		var _r, _tuple, err, err$1, err$2, fd, n, p, sa, $s, $deferred, $r;
 20492  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; err = $f.err; err$1 = $f.err$1; err$2 = $f.err$2; fd = $f.fd; n = $f.n; p = $f.p; sa = $f.sa; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
 20493  		fd = this;
 20494  		_r = fd.readLock(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 20495  		err = _r;
 20496  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 20497  			$s = -1; return [0, $ifaceNil, err];
 20498  		}
 20499  		$deferred.push([$methodVal(fd, "readUnlock"), []]);
 20500  		err$1 = fd.pd.prepareRead(fd.isFile);
 20501  		if (!($interfaceIsEqual(err$1, $ifaceNil))) {
 20502  			$s = -1; return [0, $ifaceNil, err$1];
 20503  		}
 20504  		while (true) {
 20505  			_tuple = syscall.Recvfrom(fd.Sysfd, p, 0);
 20506  			n = _tuple[0];
 20507  			sa = _tuple[1];
 20508  			err$2 = _tuple[2];
 20509  			if (!($interfaceIsEqual(err$2, $ifaceNil))) {
 20510  				n = 0;
 20511  				if ($interfaceIsEqual(err$2, new syscall.Errno(11)) && fd.pd.pollable()) {
 20512  					err$2 = fd.pd.waitRead(fd.isFile);
 20513  					if ($interfaceIsEqual(err$2, $ifaceNil)) {
 20514  						continue;
 20515  					}
 20516  				}
 20517  			}
 20518  			err$2 = fd.eofError(n, err$2);
 20519  			$s = -1; return [n, sa, err$2];
 20520  		}
 20521  		$s = -1; return [0, $ifaceNil, $ifaceNil];
 20522  		/* */ } return; } } catch(err) { $err = err; $s = -1; return [0, $ifaceNil, $ifaceNil]; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: FD.ptr.prototype.ReadFrom }; } $f._r = _r; $f._tuple = _tuple; $f.err = err; $f.err$1 = err$1; $f.err$2 = err$2; $f.fd = fd; $f.n = n; $f.p = p; $f.sa = sa; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
 20523  	};
 20524  	FD.prototype.ReadFrom = function(p) { return this.$val.ReadFrom(p); };
 20525  	FD.ptr.prototype.ReadMsg = function(p, oob) {
 20526  		var _r, _tuple, err, err$1, err$2, fd, flags, n, oob, oobn, p, sa, $s, $deferred, $r;
 20527  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; err = $f.err; err$1 = $f.err$1; err$2 = $f.err$2; fd = $f.fd; flags = $f.flags; n = $f.n; oob = $f.oob; oobn = $f.oobn; p = $f.p; sa = $f.sa; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
 20528  		fd = this;
 20529  		_r = fd.readLock(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 20530  		err = _r;
 20531  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 20532  			$s = -1; return [0, 0, 0, $ifaceNil, err];
 20533  		}
 20534  		$deferred.push([$methodVal(fd, "readUnlock"), []]);
 20535  		err$1 = fd.pd.prepareRead(fd.isFile);
 20536  		if (!($interfaceIsEqual(err$1, $ifaceNil))) {
 20537  			$s = -1; return [0, 0, 0, $ifaceNil, err$1];
 20538  		}
 20539  		while (true) {
 20540  			_tuple = syscall.Recvmsg(fd.Sysfd, p, oob, 0);
 20541  			n = _tuple[0];
 20542  			oobn = _tuple[1];
 20543  			flags = _tuple[2];
 20544  			sa = _tuple[3];
 20545  			err$2 = _tuple[4];
 20546  			if (!($interfaceIsEqual(err$2, $ifaceNil))) {
 20547  				if ($interfaceIsEqual(err$2, new syscall.Errno(11)) && fd.pd.pollable()) {
 20548  					err$2 = fd.pd.waitRead(fd.isFile);
 20549  					if ($interfaceIsEqual(err$2, $ifaceNil)) {
 20550  						continue;
 20551  					}
 20552  				}
 20553  			}
 20554  			err$2 = fd.eofError(n, err$2);
 20555  			$s = -1; return [n, oobn, flags, sa, err$2];
 20556  		}
 20557  		$s = -1; return [0, 0, 0, $ifaceNil, $ifaceNil];
 20558  		/* */ } return; } } catch(err) { $err = err; $s = -1; return [0, 0, 0, $ifaceNil, $ifaceNil]; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: FD.ptr.prototype.ReadMsg }; } $f._r = _r; $f._tuple = _tuple; $f.err = err; $f.err$1 = err$1; $f.err$2 = err$2; $f.fd = fd; $f.flags = flags; $f.n = n; $f.oob = oob; $f.oobn = oobn; $f.p = p; $f.sa = sa; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
 20559  	};
 20560  	FD.prototype.ReadMsg = function(p, oob) { return this.$val.ReadMsg(p, oob); };
 20561  	FD.ptr.prototype.Write = function(p) {
 20562  		var _r, _tuple, err, err$1, err$2, fd, max, n, nn, p, $s, $deferred, $r;
 20563  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; err = $f.err; err$1 = $f.err$1; err$2 = $f.err$2; fd = $f.fd; max = $f.max; n = $f.n; nn = $f.nn; p = $f.p; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
 20564  		fd = this;
 20565  		_r = fd.writeLock(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 20566  		err = _r;
 20567  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 20568  			$s = -1; return [0, err];
 20569  		}
 20570  		$deferred.push([$methodVal(fd, "writeUnlock"), []]);
 20571  		err$1 = fd.pd.prepareWrite(fd.isFile);
 20572  		if (!($interfaceIsEqual(err$1, $ifaceNil))) {
 20573  			$s = -1; return [0, err$1];
 20574  		}
 20575  		nn = 0;
 20576  		while (true) {
 20577  			max = p.$length;
 20578  			if (fd.IsStream && (max - nn >> 0) > 1073741824) {
 20579  				max = nn + 1073741824 >> 0;
 20580  			}
 20581  			_tuple = syscall.Write(fd.Sysfd, $subslice(p, nn, max));
 20582  			n = _tuple[0];
 20583  			err$2 = _tuple[1];
 20584  			if (n > 0) {
 20585  				nn = nn + (n) >> 0;
 20586  			}
 20587  			if (nn === p.$length) {
 20588  				$s = -1; return [nn, err$2];
 20589  			}
 20590  			if ($interfaceIsEqual(err$2, new syscall.Errno(11)) && fd.pd.pollable()) {
 20591  				err$2 = fd.pd.waitWrite(fd.isFile);
 20592  				if ($interfaceIsEqual(err$2, $ifaceNil)) {
 20593  					continue;
 20594  				}
 20595  			}
 20596  			if (!($interfaceIsEqual(err$2, $ifaceNil))) {
 20597  				$s = -1; return [nn, err$2];
 20598  			}
 20599  			if (n === 0) {
 20600  				$s = -1; return [nn, io.ErrUnexpectedEOF];
 20601  			}
 20602  		}
 20603  		$s = -1; return [0, $ifaceNil];
 20604  		/* */ } return; } } catch(err) { $err = err; $s = -1; return [0, $ifaceNil]; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: FD.ptr.prototype.Write }; } $f._r = _r; $f._tuple = _tuple; $f.err = err; $f.err$1 = err$1; $f.err$2 = err$2; $f.fd = fd; $f.max = max; $f.n = n; $f.nn = nn; $f.p = p; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
 20605  	};
 20606  	FD.prototype.Write = function(p) { return this.$val.Write(p); };
 20607  	FD.ptr.prototype.Pwrite = function(p, off) {
 20608  		var _tuple, err, err$1, fd, max, n, nn, off, p, x, $s, $deferred, $r;
 20609  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _tuple = $f._tuple; err = $f.err; err$1 = $f.err$1; fd = $f.fd; max = $f.max; n = $f.n; nn = $f.nn; off = $f.off; p = $f.p; x = $f.x; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
 20610  		fd = this;
 20611  		err = fd.incref();
 20612  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 20613  			$s = -1; return [0, err];
 20614  		}
 20615  		$deferred.push([$methodVal(fd, "decref"), []]);
 20616  		nn = 0;
 20617  		while (true) {
 20618  			max = p.$length;
 20619  			if (fd.IsStream && (max - nn >> 0) > 1073741824) {
 20620  				max = nn + 1073741824 >> 0;
 20621  			}
 20622  			_tuple = syscall.Pwrite(fd.Sysfd, $subslice(p, nn, max), (x = (new $Int64(0, nn)), new $Int64(off.$high + x.$high, off.$low + x.$low)));
 20623  			n = _tuple[0];
 20624  			err$1 = _tuple[1];
 20625  			if (n > 0) {
 20626  				nn = nn + (n) >> 0;
 20627  			}
 20628  			if (nn === p.$length) {
 20629  				$s = -1; return [nn, err$1];
 20630  			}
 20631  			if (!($interfaceIsEqual(err$1, $ifaceNil))) {
 20632  				$s = -1; return [nn, err$1];
 20633  			}
 20634  			if (n === 0) {
 20635  				$s = -1; return [nn, io.ErrUnexpectedEOF];
 20636  			}
 20637  		}
 20638  		$s = -1; return [0, $ifaceNil];
 20639  		/* */ } return; } } catch(err) { $err = err; $s = -1; return [0, $ifaceNil]; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: FD.ptr.prototype.Pwrite }; } $f._tuple = _tuple; $f.err = err; $f.err$1 = err$1; $f.fd = fd; $f.max = max; $f.n = n; $f.nn = nn; $f.off = off; $f.p = p; $f.x = x; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
 20640  	};
 20641  	FD.prototype.Pwrite = function(p, off) { return this.$val.Pwrite(p, off); };
 20642  	FD.ptr.prototype.WriteTo = function(p, sa) {
 20643  		var _r, _r$1, err, err$1, err$2, fd, p, sa, $s, $deferred, $r;
 20644  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; err = $f.err; err$1 = $f.err$1; err$2 = $f.err$2; fd = $f.fd; p = $f.p; sa = $f.sa; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
 20645  		fd = this;
 20646  		_r = fd.writeLock(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 20647  		err = _r;
 20648  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 20649  			$s = -1; return [0, err];
 20650  		}
 20651  		$deferred.push([$methodVal(fd, "writeUnlock"), []]);
 20652  		err$1 = fd.pd.prepareWrite(fd.isFile);
 20653  		if (!($interfaceIsEqual(err$1, $ifaceNil))) {
 20654  			$s = -1; return [0, err$1];
 20655  		}
 20656  		/* while (true) { */ case 2:
 20657  			_r$1 = syscall.Sendto(fd.Sysfd, p, 0, sa); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 20658  			err$2 = _r$1;
 20659  			if ($interfaceIsEqual(err$2, new syscall.Errno(11)) && fd.pd.pollable()) {
 20660  				err$2 = fd.pd.waitWrite(fd.isFile);
 20661  				if ($interfaceIsEqual(err$2, $ifaceNil)) {
 20662  					/* continue; */ $s = 2; continue;
 20663  				}
 20664  			}
 20665  			if (!($interfaceIsEqual(err$2, $ifaceNil))) {
 20666  				$s = -1; return [0, err$2];
 20667  			}
 20668  			$s = -1; return [p.$length, $ifaceNil];
 20669  		/* } */ $s = 2; continue; case 3:
 20670  		$s = -1; return [0, $ifaceNil];
 20671  		/* */ } return; } } catch(err) { $err = err; $s = -1; return [0, $ifaceNil]; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: FD.ptr.prototype.WriteTo }; } $f._r = _r; $f._r$1 = _r$1; $f.err = err; $f.err$1 = err$1; $f.err$2 = err$2; $f.fd = fd; $f.p = p; $f.sa = sa; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
 20672  	};
 20673  	FD.prototype.WriteTo = function(p, sa) { return this.$val.WriteTo(p, sa); };
 20674  	FD.ptr.prototype.WriteMsg = function(p, oob, sa) {
 20675  		var _r, _r$1, _tuple, err, err$1, err$2, fd, n, oob, p, sa, $s, $deferred, $r;
 20676  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _tuple = $f._tuple; err = $f.err; err$1 = $f.err$1; err$2 = $f.err$2; fd = $f.fd; n = $f.n; oob = $f.oob; p = $f.p; sa = $f.sa; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
 20677  		fd = this;
 20678  		_r = fd.writeLock(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 20679  		err = _r;
 20680  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 20681  			$s = -1; return [0, 0, err];
 20682  		}
 20683  		$deferred.push([$methodVal(fd, "writeUnlock"), []]);
 20684  		err$1 = fd.pd.prepareWrite(fd.isFile);
 20685  		if (!($interfaceIsEqual(err$1, $ifaceNil))) {
 20686  			$s = -1; return [0, 0, err$1];
 20687  		}
 20688  		/* while (true) { */ case 2:
 20689  			_r$1 = syscall.SendmsgN(fd.Sysfd, p, oob, sa, 0); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 20690  			_tuple = _r$1;
 20691  			n = _tuple[0];
 20692  			err$2 = _tuple[1];
 20693  			if ($interfaceIsEqual(err$2, new syscall.Errno(11)) && fd.pd.pollable()) {
 20694  				err$2 = fd.pd.waitWrite(fd.isFile);
 20695  				if ($interfaceIsEqual(err$2, $ifaceNil)) {
 20696  					/* continue; */ $s = 2; continue;
 20697  				}
 20698  			}
 20699  			if (!($interfaceIsEqual(err$2, $ifaceNil))) {
 20700  				$s = -1; return [n, 0, err$2];
 20701  			}
 20702  			$s = -1; return [n, oob.$length, err$2];
 20703  		/* } */ $s = 2; continue; case 3:
 20704  		$s = -1; return [0, 0, $ifaceNil];
 20705  		/* */ } return; } } catch(err) { $err = err; $s = -1; return [0, 0, $ifaceNil]; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: FD.ptr.prototype.WriteMsg }; } $f._r = _r; $f._r$1 = _r$1; $f._tuple = _tuple; $f.err = err; $f.err$1 = err$1; $f.err$2 = err$2; $f.fd = fd; $f.n = n; $f.oob = oob; $f.p = p; $f.sa = sa; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
 20706  	};
 20707  	FD.prototype.WriteMsg = function(p, oob, sa) { return this.$val.WriteMsg(p, oob, sa); };
 20708  	FD.ptr.prototype.Accept = function() {
 20709  		var _1, _r, _r$1, _tuple, err, err$1, err$2, errcall, fd, rsa, s, $s, $deferred, $r;
 20710  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _r = $f._r; _r$1 = $f._r$1; _tuple = $f._tuple; err = $f.err; err$1 = $f.err$1; err$2 = $f.err$2; errcall = $f.errcall; fd = $f.fd; rsa = $f.rsa; s = $f.s; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
 20711  		fd = this;
 20712  		_r = fd.readLock(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 20713  		err = _r;
 20714  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 20715  			$s = -1; return [-1, $ifaceNil, "", err];
 20716  		}
 20717  		$deferred.push([$methodVal(fd, "readUnlock"), []]);
 20718  		err$1 = fd.pd.prepareRead(fd.isFile);
 20719  		if (!($interfaceIsEqual(err$1, $ifaceNil))) {
 20720  			$s = -1; return [-1, $ifaceNil, "", err$1];
 20721  		}
 20722  		/* while (true) { */ case 2:
 20723  			_r$1 = accept(fd.Sysfd); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 20724  			_tuple = _r$1;
 20725  			s = _tuple[0];
 20726  			rsa = _tuple[1];
 20727  			errcall = _tuple[2];
 20728  			err$2 = _tuple[3];
 20729  			if ($interfaceIsEqual(err$2, $ifaceNil)) {
 20730  				$s = -1; return [s, rsa, "", err$2];
 20731  			}
 20732  			_1 = err$2;
 20733  			if ($interfaceIsEqual(_1, new syscall.Errno((11)))) {
 20734  				if (fd.pd.pollable()) {
 20735  					err$2 = fd.pd.waitRead(fd.isFile);
 20736  					if ($interfaceIsEqual(err$2, $ifaceNil)) {
 20737  						/* continue; */ $s = 2; continue;
 20738  					}
 20739  				}
 20740  			} else if ($interfaceIsEqual(_1, new syscall.Errno((103)))) {
 20741  				/* continue; */ $s = 2; continue;
 20742  			}
 20743  			$s = -1; return [-1, $ifaceNil, errcall, err$2];
 20744  		/* } */ $s = 2; continue; case 3:
 20745  		$s = -1; return [0, $ifaceNil, "", $ifaceNil];
 20746  		/* */ } return; } } catch(err) { $err = err; $s = -1; return [0, $ifaceNil, "", $ifaceNil]; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: FD.ptr.prototype.Accept }; } $f._1 = _1; $f._r = _r; $f._r$1 = _r$1; $f._tuple = _tuple; $f.err = err; $f.err$1 = err$1; $f.err$2 = err$2; $f.errcall = errcall; $f.fd = fd; $f.rsa = rsa; $f.s = s; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
 20747  	};
 20748  	FD.prototype.Accept = function() { return this.$val.Accept(); };
 20749  	FD.ptr.prototype.Seek = function(offset, whence) {
 20750  		var err, fd, offset, whence, $s, $deferred, $r;
 20751  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; err = $f.err; fd = $f.fd; offset = $f.offset; whence = $f.whence; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
 20752  		fd = this;
 20753  		err = fd.incref();
 20754  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 20755  			$s = -1; return [new $Int64(0, 0), err];
 20756  		}
 20757  		$deferred.push([$methodVal(fd, "decref"), []]);
 20758  		$s = -1; return syscall.Seek(fd.Sysfd, offset, whence);
 20759  		/* */ } return; } } catch(err) { $err = err; $s = -1; return [new $Int64(0, 0), $ifaceNil]; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: FD.ptr.prototype.Seek }; } $f.err = err; $f.fd = fd; $f.offset = offset; $f.whence = whence; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
 20760  	};
 20761  	FD.prototype.Seek = function(offset, whence) { return this.$val.Seek(offset, whence); };
 20762  	FD.ptr.prototype.ReadDirent = function(buf) {
 20763  		var _tuple, buf, err, err$1, fd, n, $s, $deferred, $r;
 20764  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _tuple = $f._tuple; buf = $f.buf; err = $f.err; err$1 = $f.err$1; fd = $f.fd; n = $f.n; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
 20765  		fd = this;
 20766  		err = fd.incref();
 20767  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 20768  			$s = -1; return [0, err];
 20769  		}
 20770  		$deferred.push([$methodVal(fd, "decref"), []]);
 20771  		while (true) {
 20772  			_tuple = syscall.ReadDirent(fd.Sysfd, buf);
 20773  			n = _tuple[0];
 20774  			err$1 = _tuple[1];
 20775  			if (!($interfaceIsEqual(err$1, $ifaceNil))) {
 20776  				n = 0;
 20777  				if ($interfaceIsEqual(err$1, new syscall.Errno(11)) && fd.pd.pollable()) {
 20778  					err$1 = fd.pd.waitRead(fd.isFile);
 20779  					if ($interfaceIsEqual(err$1, $ifaceNil)) {
 20780  						continue;
 20781  					}
 20782  				}
 20783  			}
 20784  			$s = -1; return [n, err$1];
 20785  		}
 20786  		$s = -1; return [0, $ifaceNil];
 20787  		/* */ } return; } } catch(err) { $err = err; $s = -1; return [0, $ifaceNil]; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: FD.ptr.prototype.ReadDirent }; } $f._tuple = _tuple; $f.buf = buf; $f.err = err; $f.err$1 = err$1; $f.fd = fd; $f.n = n; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
 20788  	};
 20789  	FD.prototype.ReadDirent = function(buf) { return this.$val.ReadDirent(buf); };
 20790  	FD.ptr.prototype.Fchdir = function() {
 20791  		var err, fd, $s, $deferred, $r;
 20792  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; err = $f.err; fd = $f.fd; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
 20793  		fd = this;
 20794  		err = fd.incref();
 20795  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 20796  			$s = -1; return err;
 20797  		}
 20798  		$deferred.push([$methodVal(fd, "decref"), []]);
 20799  		$s = -1; return syscall.Fchdir(fd.Sysfd);
 20800  		/* */ } return; } } catch(err) { $err = err; $s = -1; return $ifaceNil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: FD.ptr.prototype.Fchdir }; } $f.err = err; $f.fd = fd; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
 20801  	};
 20802  	FD.prototype.Fchdir = function() { return this.$val.Fchdir(); };
 20803  	FD.ptr.prototype.Fstat = function(s) {
 20804  		var err, fd, s, $s, $deferred, $r;
 20805  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; err = $f.err; fd = $f.fd; s = $f.s; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
 20806  		fd = this;
 20807  		err = fd.incref();
 20808  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 20809  			$s = -1; return err;
 20810  		}
 20811  		$deferred.push([$methodVal(fd, "decref"), []]);
 20812  		$s = -1; return syscall.Fstat(fd.Sysfd, s);
 20813  		/* */ } return; } } catch(err) { $err = err; $s = -1; return $ifaceNil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: FD.ptr.prototype.Fstat }; } $f.err = err; $f.fd = fd; $f.s = s; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
 20814  	};
 20815  	FD.prototype.Fstat = function(s) { return this.$val.Fstat(s); };
 20816  	FD.ptr.prototype.WaitWrite = function() {
 20817  		var fd;
 20818  		fd = this;
 20819  		return fd.pd.waitWrite(fd.isFile);
 20820  	};
 20821  	FD.prototype.WaitWrite = function() { return this.$val.WaitWrite(); };
 20822  	FD.ptr.prototype.WriteOnce = function(p) {
 20823  		var _r, err, fd, p, $s, $deferred, $r;
 20824  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; err = $f.err; fd = $f.fd; p = $f.p; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
 20825  		fd = this;
 20826  		_r = fd.writeLock(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 20827  		err = _r;
 20828  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 20829  			$s = -1; return [0, err];
 20830  		}
 20831  		$deferred.push([$methodVal(fd, "writeUnlock"), []]);
 20832  		$s = -1; return syscall.Write(fd.Sysfd, p);
 20833  		/* */ } return; } } catch(err) { $err = err; $s = -1; return [0, $ifaceNil]; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: FD.ptr.prototype.WriteOnce }; } $f._r = _r; $f.err = err; $f.fd = fd; $f.p = p; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
 20834  	};
 20835  	FD.prototype.WriteOnce = function(p) { return this.$val.WriteOnce(p); };
 20836  	FD.ptr.prototype.RawControl = function(f) {
 20837  		var err, f, fd, $s, $deferred, $r;
 20838  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; err = $f.err; f = $f.f; fd = $f.fd; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
 20839  		fd = this;
 20840  		err = fd.incref();
 20841  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 20842  			$s = -1; return err;
 20843  		}
 20844  		$deferred.push([$methodVal(fd, "decref"), []]);
 20845  		$r = f(((fd.Sysfd >>> 0))); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 20846  		$s = -1; return $ifaceNil;
 20847  		/* */ } return; } } catch(err) { $err = err; $s = -1; return $ifaceNil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: FD.ptr.prototype.RawControl }; } $f.err = err; $f.f = f; $f.fd = fd; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
 20848  	};
 20849  	FD.prototype.RawControl = function(f) { return this.$val.RawControl(f); };
 20850  	FD.ptr.prototype.RawRead = function(f) {
 20851  		var _r, _r$1, err, err$1, err$2, f, fd, $s, $deferred, $r;
 20852  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; err = $f.err; err$1 = $f.err$1; err$2 = $f.err$2; f = $f.f; fd = $f.fd; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
 20853  		fd = this;
 20854  		_r = fd.readLock(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 20855  		err = _r;
 20856  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 20857  			$s = -1; return err;
 20858  		}
 20859  		$deferred.push([$methodVal(fd, "readUnlock"), []]);
 20860  		err$1 = fd.pd.prepareRead(fd.isFile);
 20861  		if (!($interfaceIsEqual(err$1, $ifaceNil))) {
 20862  			$s = -1; return err$1;
 20863  		}
 20864  		/* while (true) { */ case 2:
 20865  			_r$1 = f(((fd.Sysfd >>> 0))); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 20866  			/* */ if (_r$1) { $s = 4; continue; }
 20867  			/* */ $s = 5; continue;
 20868  			/* if (_r$1) { */ case 4:
 20869  				$s = -1; return $ifaceNil;
 20870  			/* } */ case 5:
 20871  			err$2 = fd.pd.waitRead(fd.isFile);
 20872  			if (!($interfaceIsEqual(err$2, $ifaceNil))) {
 20873  				$s = -1; return err$2;
 20874  			}
 20875  		/* } */ $s = 2; continue; case 3:
 20876  		$s = -1; return $ifaceNil;
 20877  		/* */ } return; } } catch(err) { $err = err; $s = -1; return $ifaceNil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: FD.ptr.prototype.RawRead }; } $f._r = _r; $f._r$1 = _r$1; $f.err = err; $f.err$1 = err$1; $f.err$2 = err$2; $f.f = f; $f.fd = fd; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
 20878  	};
 20879  	FD.prototype.RawRead = function(f) { return this.$val.RawRead(f); };
 20880  	FD.ptr.prototype.RawWrite = function(f) {
 20881  		var _r, _r$1, err, err$1, err$2, f, fd, $s, $deferred, $r;
 20882  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; err = $f.err; err$1 = $f.err$1; err$2 = $f.err$2; f = $f.f; fd = $f.fd; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
 20883  		fd = this;
 20884  		_r = fd.writeLock(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 20885  		err = _r;
 20886  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 20887  			$s = -1; return err;
 20888  		}
 20889  		$deferred.push([$methodVal(fd, "writeUnlock"), []]);
 20890  		err$1 = fd.pd.prepareWrite(fd.isFile);
 20891  		if (!($interfaceIsEqual(err$1, $ifaceNil))) {
 20892  			$s = -1; return err$1;
 20893  		}
 20894  		/* while (true) { */ case 2:
 20895  			_r$1 = f(((fd.Sysfd >>> 0))); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 20896  			/* */ if (_r$1) { $s = 4; continue; }
 20897  			/* */ $s = 5; continue;
 20898  			/* if (_r$1) { */ case 4:
 20899  				$s = -1; return $ifaceNil;
 20900  			/* } */ case 5:
 20901  			err$2 = fd.pd.waitWrite(fd.isFile);
 20902  			if (!($interfaceIsEqual(err$2, $ifaceNil))) {
 20903  				$s = -1; return err$2;
 20904  			}
 20905  		/* } */ $s = 2; continue; case 3:
 20906  		$s = -1; return $ifaceNil;
 20907  		/* */ } return; } } catch(err) { $err = err; $s = -1; return $ifaceNil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: FD.ptr.prototype.RawWrite }; } $f._r = _r; $f._r$1 = _r$1; $f.err = err; $f.err$1 = err$1; $f.err$2 = err$2; $f.f = f; $f.fd = fd; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
 20908  	};
 20909  	FD.prototype.RawWrite = function(f) { return this.$val.RawWrite(f); };
 20910  	SendFile = function(dstFD, src, remain) {
 20911  		var _r, _tuple, dst, dstFD, err, err$1, err1, n, remain, src, written, x, x$1, x$2, $s, $deferred, $r;
 20912  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; dst = $f.dst; dstFD = $f.dstFD; err = $f.err; err$1 = $f.err$1; err1 = $f.err1; n = $f.n; remain = $f.remain; src = $f.src; written = $f.written; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
 20913  		_r = dstFD.writeLock(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 20914  		err = _r;
 20915  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 20916  			$s = -1; return [new $Int64(0, 0), err];
 20917  		}
 20918  		$deferred.push([$methodVal(dstFD, "writeUnlock"), []]);
 20919  		dst = (dstFD.Sysfd);
 20920  		written = new $Int64(0, 0);
 20921  		err$1 = $ifaceNil;
 20922  		while (true) {
 20923  			if (!((remain.$high > 0 || (remain.$high === 0 && remain.$low > 0)))) { break; }
 20924  			n = 4194304;
 20925  			if ((x = (new $Int64(0, n)), (x.$high > remain.$high || (x.$high === remain.$high && x.$low > remain.$low)))) {
 20926  				n = (((remain.$low + ((remain.$high >> 31) * 4294967296)) >> 0));
 20927  			}
 20928  			_tuple = syscall.Sendfile(dst, src, ptrType$2.nil, n);
 20929  			n = _tuple[0];
 20930  			err1 = _tuple[1];
 20931  			if (n > 0) {
 20932  				written = (x$1 = (new $Int64(0, n)), new $Int64(written.$high + x$1.$high, written.$low + x$1.$low));
 20933  				remain = (x$2 = (new $Int64(0, n)), new $Int64(remain.$high - x$2.$high, remain.$low - x$2.$low));
 20934  			}
 20935  			if ((n === 0) && $interfaceIsEqual(err1, $ifaceNil)) {
 20936  				break;
 20937  			}
 20938  			if ($interfaceIsEqual(err1, new syscall.Errno(11))) {
 20939  				err1 = dstFD.pd.waitWrite(dstFD.isFile);
 20940  				if ($interfaceIsEqual(err1, $ifaceNil)) {
 20941  					continue;
 20942  				}
 20943  			}
 20944  			if (!($interfaceIsEqual(err1, $ifaceNil))) {
 20945  				err$1 = err1;
 20946  				break;
 20947  			}
 20948  		}
 20949  		$s = -1; return [written, err$1];
 20950  		/* */ } return; } } catch(err) { $err = err; $s = -1; return [new $Int64(0, 0), $ifaceNil]; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: SendFile }; } $f._r = _r; $f._tuple = _tuple; $f.dst = dst; $f.dstFD = dstFD; $f.err = err; $f.err$1 = err$1; $f.err1 = err1; $f.n = n; $f.remain = remain; $f.src = src; $f.written = written; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
 20951  	};
 20952  	$pkg.SendFile = SendFile;
 20953  	accept = function(s) {
 20954  		var _1, _r, _r$1, _r$2, _tuple, _tuple$1, err, ns, s, sa, $s, $r;
 20955  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; err = $f.err; ns = $f.ns; s = $f.s; sa = $f.sa; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 20956  		_r = $pkg.Accept4Func(s, 526336); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 20957  		_tuple = _r;
 20958  		ns = _tuple[0];
 20959  		sa = _tuple[1];
 20960  		err = _tuple[2];
 20961  		_1 = err;
 20962  		if ($interfaceIsEqual(_1, $ifaceNil)) {
 20963  			$s = -1; return [ns, sa, "", $ifaceNil];
 20964  		} else if ($interfaceIsEqual(_1, new syscall.Errno((38)))) {
 20965  		} else if ($interfaceIsEqual(_1, new syscall.Errno((22)))) {
 20966  		} else if ($interfaceIsEqual(_1, new syscall.Errno((13)))) {
 20967  		} else if ($interfaceIsEqual(_1, new syscall.Errno((14)))) {
 20968  		} else {
 20969  			$s = -1; return [-1, sa, "accept4", err];
 20970  		}
 20971  		_r$1 = $pkg.AcceptFunc(s); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 20972  		_tuple$1 = _r$1;
 20973  		ns = _tuple$1[0];
 20974  		sa = _tuple$1[1];
 20975  		err = _tuple$1[2];
 20976  		if ($interfaceIsEqual(err, $ifaceNil)) {
 20977  			syscall.CloseOnExec(ns);
 20978  		}
 20979  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 20980  			$s = -1; return [-1, $ifaceNil, "accept", err];
 20981  		}
 20982  		err = syscall.SetNonblock(ns, true);
 20983  		/* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 3; continue; }
 20984  		/* */ $s = 4; continue;
 20985  		/* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 3:
 20986  			_r$2 = $pkg.CloseFunc(ns); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 20987  			_r$2;
 20988  			$s = -1; return [-1, $ifaceNil, "setnonblock", err];
 20989  		/* } */ case 4:
 20990  		$s = -1; return [ns, sa, "", $ifaceNil];
 20991  		/* */ } return; } if ($f === undefined) { $f = { $blk: accept }; } $f._1 = _1; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.err = err; $f.ns = ns; $f.s = s; $f.sa = sa; $f.$s = $s; $f.$r = $r; return $f;
 20992  	};
 20993  	FD.ptr.prototype.SetsockoptInt = function(level, name, arg) {
 20994  		var arg, err, fd, level, name, $s, $deferred, $r;
 20995  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; arg = $f.arg; err = $f.err; fd = $f.fd; level = $f.level; name = $f.name; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
 20996  		fd = this;
 20997  		err = fd.incref();
 20998  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 20999  			$s = -1; return err;
 21000  		}
 21001  		$deferred.push([$methodVal(fd, "decref"), []]);
 21002  		$s = -1; return syscall.SetsockoptInt(fd.Sysfd, level, name, arg);
 21003  		/* */ } return; } } catch(err) { $err = err; $s = -1; return $ifaceNil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: FD.ptr.prototype.SetsockoptInt }; } $f.arg = arg; $f.err = err; $f.fd = fd; $f.level = level; $f.name = name; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
 21004  	};
 21005  	FD.prototype.SetsockoptInt = function(level, name, arg) { return this.$val.SetsockoptInt(level, name, arg); };
 21006  	FD.ptr.prototype.SetsockoptInet4Addr = function(level, name, arg) {
 21007  		var arg, err, fd, level, name, $s, $deferred, $r;
 21008  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; arg = $f.arg; err = $f.err; fd = $f.fd; level = $f.level; name = $f.name; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
 21009  		fd = this;
 21010  		err = fd.incref();
 21011  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 21012  			$s = -1; return err;
 21013  		}
 21014  		$deferred.push([$methodVal(fd, "decref"), []]);
 21015  		$s = -1; return syscall.SetsockoptInet4Addr(fd.Sysfd, level, name, $clone(arg, arrayType));
 21016  		/* */ } return; } } catch(err) { $err = err; $s = -1; return $ifaceNil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: FD.ptr.prototype.SetsockoptInet4Addr }; } $f.arg = arg; $f.err = err; $f.fd = fd; $f.level = level; $f.name = name; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
 21017  	};
 21018  	FD.prototype.SetsockoptInet4Addr = function(level, name, arg) { return this.$val.SetsockoptInet4Addr(level, name, arg); };
 21019  	FD.ptr.prototype.SetsockoptLinger = function(level, name, l) {
 21020  		var err, fd, l, level, name, $s, $deferred, $r;
 21021  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; err = $f.err; fd = $f.fd; l = $f.l; level = $f.level; name = $f.name; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
 21022  		fd = this;
 21023  		err = fd.incref();
 21024  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 21025  			$s = -1; return err;
 21026  		}
 21027  		$deferred.push([$methodVal(fd, "decref"), []]);
 21028  		$s = -1; return syscall.SetsockoptLinger(fd.Sysfd, level, name, l);
 21029  		/* */ } return; } } catch(err) { $err = err; $s = -1; return $ifaceNil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: FD.ptr.prototype.SetsockoptLinger }; } $f.err = err; $f.fd = fd; $f.l = l; $f.level = level; $f.name = name; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
 21030  	};
 21031  	FD.prototype.SetsockoptLinger = function(level, name, l) { return this.$val.SetsockoptLinger(level, name, l); };
 21032  	FD.ptr.prototype.SetsockoptIPMreqn = function(level, name, mreq) {
 21033  		var err, fd, level, mreq, name, $s, $deferred, $r;
 21034  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; err = $f.err; fd = $f.fd; level = $f.level; mreq = $f.mreq; name = $f.name; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
 21035  		fd = this;
 21036  		err = fd.incref();
 21037  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 21038  			$s = -1; return err;
 21039  		}
 21040  		$deferred.push([$methodVal(fd, "decref"), []]);
 21041  		$s = -1; return syscall.SetsockoptIPMreqn(fd.Sysfd, level, name, mreq);
 21042  		/* */ } return; } } catch(err) { $err = err; $s = -1; return $ifaceNil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: FD.ptr.prototype.SetsockoptIPMreqn }; } $f.err = err; $f.fd = fd; $f.level = level; $f.mreq = mreq; $f.name = name; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
 21043  	};
 21044  	FD.prototype.SetsockoptIPMreqn = function(level, name, mreq) { return this.$val.SetsockoptIPMreqn(level, name, mreq); };
 21045  	FD.ptr.prototype.SetsockoptByte = function(level, name, arg) {
 21046  		var arg, err, fd, level, name, $s, $deferred, $r;
 21047  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; arg = $f.arg; err = $f.err; fd = $f.fd; level = $f.level; name = $f.name; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
 21048  		fd = this;
 21049  		err = fd.incref();
 21050  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 21051  			$s = -1; return err;
 21052  		}
 21053  		$deferred.push([$methodVal(fd, "decref"), []]);
 21054  		$s = -1; return syscall.SetsockoptByte(fd.Sysfd, level, name, arg);
 21055  		/* */ } return; } } catch(err) { $err = err; $s = -1; return $ifaceNil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: FD.ptr.prototype.SetsockoptByte }; } $f.arg = arg; $f.err = err; $f.fd = fd; $f.level = level; $f.name = name; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
 21056  	};
 21057  	FD.prototype.SetsockoptByte = function(level, name, arg) { return this.$val.SetsockoptByte(level, name, arg); };
 21058  	FD.ptr.prototype.SetsockoptIPMreq = function(level, name, mreq) {
 21059  		var err, fd, level, mreq, name, $s, $deferred, $r;
 21060  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; err = $f.err; fd = $f.fd; level = $f.level; mreq = $f.mreq; name = $f.name; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
 21061  		fd = this;
 21062  		err = fd.incref();
 21063  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 21064  			$s = -1; return err;
 21065  		}
 21066  		$deferred.push([$methodVal(fd, "decref"), []]);
 21067  		$s = -1; return syscall.SetsockoptIPMreq(fd.Sysfd, level, name, mreq);
 21068  		/* */ } return; } } catch(err) { $err = err; $s = -1; return $ifaceNil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: FD.ptr.prototype.SetsockoptIPMreq }; } $f.err = err; $f.fd = fd; $f.level = level; $f.mreq = mreq; $f.name = name; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
 21069  	};
 21070  	FD.prototype.SetsockoptIPMreq = function(level, name, mreq) { return this.$val.SetsockoptIPMreq(level, name, mreq); };
 21071  	FD.ptr.prototype.SetsockoptIPv6Mreq = function(level, name, mreq) {
 21072  		var err, fd, level, mreq, name, $s, $deferred, $r;
 21073  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; err = $f.err; fd = $f.fd; level = $f.level; mreq = $f.mreq; name = $f.name; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
 21074  		fd = this;
 21075  		err = fd.incref();
 21076  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 21077  			$s = -1; return err;
 21078  		}
 21079  		$deferred.push([$methodVal(fd, "decref"), []]);
 21080  		$s = -1; return syscall.SetsockoptIPv6Mreq(fd.Sysfd, level, name, mreq);
 21081  		/* */ } return; } } catch(err) { $err = err; $s = -1; return $ifaceNil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: FD.ptr.prototype.SetsockoptIPv6Mreq }; } $f.err = err; $f.fd = fd; $f.level = level; $f.mreq = mreq; $f.name = name; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
 21082  	};
 21083  	FD.prototype.SetsockoptIPv6Mreq = function(level, name, mreq) { return this.$val.SetsockoptIPv6Mreq(level, name, mreq); };
 21084  	FD.ptr.prototype.Writev = function(v) {
 21085  		var _i, _r, _ref, _tuple, chunk, e0, err, err$1, err$2, fd, iovecs, maxVec, n, v, wrote, x, x$1, x$2, $s, $deferred, $r;
 21086  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _i = $f._i; _r = $f._r; _ref = $f._ref; _tuple = $f._tuple; chunk = $f.chunk; e0 = $f.e0; err = $f.err; err$1 = $f.err$1; err$2 = $f.err$2; fd = $f.fd; iovecs = $f.iovecs; maxVec = $f.maxVec; n = $f.n; v = $f.v; wrote = $f.wrote; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
 21087  		iovecs = [iovecs];
 21088  		fd = this;
 21089  		_r = fd.writeLock(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 21090  		err = _r;
 21091  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 21092  			$s = -1; return [new $Int64(0, 0), err];
 21093  		}
 21094  		$deferred.push([$methodVal(fd, "writeUnlock"), []]);
 21095  		err$1 = fd.pd.prepareWrite(fd.isFile);
 21096  		if (!($interfaceIsEqual(err$1, $ifaceNil))) {
 21097  			$s = -1; return [new $Int64(0, 0), err$1];
 21098  		}
 21099  		iovecs[0] = sliceType$1.nil;
 21100  		if (!(fd.iovecs === ptrType$3.nil)) {
 21101  			iovecs[0] = fd.iovecs.$get();
 21102  		}
 21103  		maxVec = 1024;
 21104  		n = new $Int64(0, 0);
 21105  		err$2 = $ifaceNil;
 21106  		/* while (true) { */ case 2:
 21107  			/* if (!(v.$get().$length > 0)) { break; } */ if(!(v.$get().$length > 0)) { $s = 3; continue; }
 21108  			iovecs[0] = $subslice(iovecs[0], 0, 0);
 21109  			_ref = v.$get();
 21110  			_i = 0;
 21111  			/* while (true) { */ case 4:
 21112  				/* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 5; continue; }
 21113  				chunk = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
 21114  				if (chunk.$length === 0) {
 21115  					_i++;
 21116  					/* continue; */ $s = 4; continue;
 21117  				}
 21118  				iovecs[0] = $append(iovecs[0], new syscall.Iovec.ptr($indexPtr(chunk.$array, chunk.$offset + 0, ptrType$4), new $Uint64(0, 0)));
 21119  				if (fd.IsStream && chunk.$length > 1073741824) {
 21120  					(x = iovecs[0].$length - 1 >> 0, ((x < 0 || x >= iovecs[0].$length) ? ($throwRuntimeError("index out of range"), undefined) : iovecs[0].$array[iovecs[0].$offset + x])).SetLen(1073741824);
 21121  					/* break; */ $s = 5; continue;
 21122  				}
 21123  				(x$1 = iovecs[0].$length - 1 >> 0, ((x$1 < 0 || x$1 >= iovecs[0].$length) ? ($throwRuntimeError("index out of range"), undefined) : iovecs[0].$array[iovecs[0].$offset + x$1])).SetLen(chunk.$length);
 21124  				if (iovecs[0].$length === maxVec) {
 21125  					/* break; */ $s = 5; continue;
 21126  				}
 21127  				_i++;
 21128  			/* } */ $s = 4; continue; case 5:
 21129  			if (iovecs[0].$length === 0) {
 21130  				/* break; */ $s = 3; continue;
 21131  			}
 21132  			fd.iovecs = (iovecs.$ptr || (iovecs.$ptr = new ptrType$3(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, iovecs)));
 21133  			_tuple = syscall.Syscall(20, ((fd.Sysfd >>> 0)), (($sliceToArray(iovecs[0]))), ((iovecs[0].$length >>> 0)));
 21134  			wrote = _tuple[0];
 21135  			e0 = _tuple[2];
 21136  			if (wrote === 4294967295) {
 21137  				wrote = 0;
 21138  			}
 21139  			$r = $pkg.TestHookDidWritev(((wrote >> 0))); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 21140  			n = (x$2 = (new $Int64(0, wrote.constructor === Number ? wrote : 1)), new $Int64(n.$high + x$2.$high, n.$low + x$2.$low));
 21141  			consume(v, (new $Int64(0, wrote.constructor === Number ? wrote : 1)));
 21142  			if (e0 === 11) {
 21143  				err$2 = fd.pd.waitWrite(fd.isFile);
 21144  				if ($interfaceIsEqual(err$2, $ifaceNil)) {
 21145  					/* continue; */ $s = 2; continue;
 21146  				}
 21147  			} else if (!((e0 === 0))) {
 21148  				err$2 = new syscall.Errno((e0));
 21149  			}
 21150  			if (!($interfaceIsEqual(err$2, $ifaceNil))) {
 21151  				/* break; */ $s = 3; continue;
 21152  			}
 21153  			if ((n.$high === 0 && n.$low === 0)) {
 21154  				err$2 = io.ErrUnexpectedEOF;
 21155  				/* break; */ $s = 3; continue;
 21156  			}
 21157  		/* } */ $s = 2; continue; case 3:
 21158  		$s = -1; return [n, err$2];
 21159  		/* */ } return; } } catch(err) { $err = err; $s = -1; return [new $Int64(0, 0), $ifaceNil]; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: FD.ptr.prototype.Writev }; } $f._i = _i; $f._r = _r; $f._ref = _ref; $f._tuple = _tuple; $f.chunk = chunk; $f.e0 = e0; $f.err = err; $f.err$1 = err$1; $f.err$2 = err$2; $f.fd = fd; $f.iovecs = iovecs; $f.maxVec = maxVec; $f.n = n; $f.v = v; $f.wrote = wrote; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
 21160  	};
 21161  	FD.prototype.Writev = function(v) { return this.$val.Writev(v); };
 21162  	ptrType$6.methods = [{prop: "init", name: "init", pkg: "internal/poll", typ: $funcType([ptrType$5], [$error], false)}, {prop: "close", name: "close", pkg: "internal/poll", typ: $funcType([], [], false)}, {prop: "evict", name: "evict", pkg: "internal/poll", typ: $funcType([], [], false)}, {prop: "prepare", name: "prepare", pkg: "internal/poll", typ: $funcType([$Int, $Bool], [$error], false)}, {prop: "prepareRead", name: "prepareRead", pkg: "internal/poll", typ: $funcType([$Bool], [$error], false)}, {prop: "prepareWrite", name: "prepareWrite", pkg: "internal/poll", typ: $funcType([$Bool], [$error], false)}, {prop: "wait", name: "wait", pkg: "internal/poll", typ: $funcType([$Int, $Bool], [$error], false)}, {prop: "waitRead", name: "waitRead", pkg: "internal/poll", typ: $funcType([$Bool], [$error], false)}, {prop: "waitWrite", name: "waitWrite", pkg: "internal/poll", typ: $funcType([$Bool], [$error], false)}, {prop: "waitCanceled", name: "waitCanceled", pkg: "internal/poll", typ: $funcType([$Int], [], false)}, {prop: "pollable", name: "pollable", pkg: "internal/poll", typ: $funcType([], [$Bool], false)}];
 21163  	ptrType$7.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Timeout", name: "Timeout", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "Temporary", name: "Temporary", pkg: "", typ: $funcType([], [$Bool], false)}];
 21164  	ptrType$8.methods = [{prop: "incref", name: "incref", pkg: "internal/poll", typ: $funcType([], [$Bool], false)}, {prop: "increfAndClose", name: "increfAndClose", pkg: "internal/poll", typ: $funcType([], [$Bool], false)}, {prop: "decref", name: "decref", pkg: "internal/poll", typ: $funcType([], [$Bool], false)}, {prop: "rwlock", name: "rwlock", pkg: "internal/poll", typ: $funcType([$Bool], [$Bool], false)}, {prop: "rwunlock", name: "rwunlock", pkg: "internal/poll", typ: $funcType([$Bool], [$Bool], false)}];
 21165  	ptrType$5.methods = [{prop: "SetDeadline", name: "SetDeadline", pkg: "", typ: $funcType([time.Time], [$error], false)}, {prop: "SetReadDeadline", name: "SetReadDeadline", pkg: "", typ: $funcType([time.Time], [$error], false)}, {prop: "SetWriteDeadline", name: "SetWriteDeadline", pkg: "", typ: $funcType([time.Time], [$error], false)}, {prop: "incref", name: "incref", pkg: "internal/poll", typ: $funcType([], [$error], false)}, {prop: "decref", name: "decref", pkg: "internal/poll", typ: $funcType([], [$error], false)}, {prop: "readLock", name: "readLock", pkg: "internal/poll", typ: $funcType([], [$error], false)}, {prop: "readUnlock", name: "readUnlock", pkg: "internal/poll", typ: $funcType([], [], false)}, {prop: "writeLock", name: "writeLock", pkg: "internal/poll", typ: $funcType([], [$error], false)}, {prop: "writeUnlock", name: "writeUnlock", pkg: "internal/poll", typ: $funcType([], [], false)}, {prop: "eofError", name: "eofError", pkg: "internal/poll", typ: $funcType([$Int, $error], [$error], false)}, {prop: "Fchmod", name: "Fchmod", pkg: "", typ: $funcType([$Uint32], [$error], false)}, {prop: "Fchown", name: "Fchown", pkg: "", typ: $funcType([$Int, $Int], [$error], false)}, {prop: "Ftruncate", name: "Ftruncate", pkg: "", typ: $funcType([$Int64], [$error], false)}, {prop: "Fsync", name: "Fsync", pkg: "", typ: $funcType([], [$error], false)}, {prop: "Init", name: "Init", pkg: "", typ: $funcType([$String, $Bool], [$error], false)}, {prop: "destroy", name: "destroy", pkg: "internal/poll", typ: $funcType([], [$error], false)}, {prop: "Close", name: "Close", pkg: "", typ: $funcType([], [$error], false)}, {prop: "Shutdown", name: "Shutdown", pkg: "", typ: $funcType([$Int], [$error], false)}, {prop: "SetBlocking", name: "SetBlocking", pkg: "", typ: $funcType([], [$error], false)}, {prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType$2], [$Int, $error], false)}, {prop: "Pread", name: "Pread", pkg: "", typ: $funcType([sliceType$2, $Int64], [$Int, $error], false)}, {prop: "ReadFrom", name: "ReadFrom", pkg: "", typ: $funcType([sliceType$2], [$Int, syscall.Sockaddr, $error], false)}, {prop: "ReadMsg", name: "ReadMsg", pkg: "", typ: $funcType([sliceType$2, sliceType$2], [$Int, $Int, $Int, syscall.Sockaddr, $error], false)}, {prop: "Write", name: "Write", pkg: "", typ: $funcType([sliceType$2], [$Int, $error], false)}, {prop: "Pwrite", name: "Pwrite", pkg: "", typ: $funcType([sliceType$2, $Int64], [$Int, $error], false)}, {prop: "WriteTo", name: "WriteTo", pkg: "", typ: $funcType([sliceType$2, syscall.Sockaddr], [$Int, $error], false)}, {prop: "WriteMsg", name: "WriteMsg", pkg: "", typ: $funcType([sliceType$2, sliceType$2, syscall.Sockaddr], [$Int, $Int, $error], false)}, {prop: "Accept", name: "Accept", pkg: "", typ: $funcType([], [$Int, syscall.Sockaddr, $String, $error], false)}, {prop: "Seek", name: "Seek", pkg: "", typ: $funcType([$Int64, $Int], [$Int64, $error], false)}, {prop: "ReadDirent", name: "ReadDirent", pkg: "", typ: $funcType([sliceType$2], [$Int, $error], false)}, {prop: "Fchdir", name: "Fchdir", pkg: "", typ: $funcType([], [$error], false)}, {prop: "Fstat", name: "Fstat", pkg: "", typ: $funcType([ptrType$9], [$error], false)}, {prop: "WaitWrite", name: "WaitWrite", pkg: "", typ: $funcType([], [$error], false)}, {prop: "WriteOnce", name: "WriteOnce", pkg: "", typ: $funcType([sliceType$2], [$Int, $error], false)}, {prop: "RawControl", name: "RawControl", pkg: "", typ: $funcType([funcType], [$error], false)}, {prop: "RawRead", name: "RawRead", pkg: "", typ: $funcType([funcType$1], [$error], false)}, {prop: "RawWrite", name: "RawWrite", pkg: "", typ: $funcType([funcType$1], [$error], false)}, {prop: "SetsockoptInt", name: "SetsockoptInt", pkg: "", typ: $funcType([$Int, $Int, $Int], [$error], false)}, {prop: "SetsockoptInet4Addr", name: "SetsockoptInet4Addr", pkg: "", typ: $funcType([$Int, $Int, arrayType], [$error], false)}, {prop: "SetsockoptLinger", name: "SetsockoptLinger", pkg: "", typ: $funcType([$Int, $Int, ptrType$10], [$error], false)}, {prop: "SetsockoptIPMreqn", name: "SetsockoptIPMreqn", pkg: "", typ: $funcType([$Int, $Int, ptrType$11], [$error], false)}, {prop: "SetsockoptByte", name: "SetsockoptByte", pkg: "", typ: $funcType([$Int, $Int, $Uint8], [$error], false)}, {prop: "SetsockoptIPMreq", name: "SetsockoptIPMreq", pkg: "", typ: $funcType([$Int, $Int, ptrType$12], [$error], false)}, {prop: "SetsockoptIPv6Mreq", name: "SetsockoptIPv6Mreq", pkg: "", typ: $funcType([$Int, $Int, ptrType$13], [$error], false)}, {prop: "Writev", name: "Writev", pkg: "", typ: $funcType([ptrType$14], [$Int64, $error], false)}];
 21166  	pollDesc.init("internal/poll", [{prop: "closing", name: "closing", anonymous: false, exported: false, typ: $Bool, tag: ""}]);
 21167  	TimeoutError.init("", []);
 21168  	fdMutex.init("internal/poll", [{prop: "state", name: "state", anonymous: false, exported: false, typ: $Uint64, tag: ""}, {prop: "rsema", name: "rsema", anonymous: false, exported: false, typ: $Uint32, tag: ""}, {prop: "wsema", name: "wsema", anonymous: false, exported: false, typ: $Uint32, tag: ""}]);
 21169  	FD.init("internal/poll", [{prop: "fdmu", name: "fdmu", anonymous: false, exported: false, typ: fdMutex, tag: ""}, {prop: "Sysfd", name: "Sysfd", anonymous: false, exported: true, typ: $Int, tag: ""}, {prop: "pd", name: "pd", anonymous: false, exported: false, typ: pollDesc, tag: ""}, {prop: "iovecs", name: "iovecs", anonymous: false, exported: false, typ: ptrType$3, tag: ""}, {prop: "csema", name: "csema", anonymous: false, exported: false, typ: $Uint32, tag: ""}, {prop: "IsStream", name: "IsStream", anonymous: false, exported: true, typ: $Bool, tag: ""}, {prop: "ZeroReadIsEOF", name: "ZeroReadIsEOF", anonymous: false, exported: true, typ: $Bool, tag: ""}, {prop: "isFile", name: "isFile", anonymous: false, exported: false, typ: $Bool, tag: ""}, {prop: "isBlocking", name: "isBlocking", anonymous: false, exported: false, typ: $Bool, tag: ""}]);
 21170  	$init = function() {
 21171  		$pkg.$init = function() {};
 21172  		/* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 21173  		$r = errors.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 21174  		$r = io.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 21175  		$r = runtime.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 21176  		$r = atomic.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 21177  		$r = syscall.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 21178  		$r = time.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 21179  		semWaiters = {};
 21180  		$pkg.ErrNetClosing = errors.New("use of closed network connection");
 21181  		$pkg.ErrFileClosing = errors.New("use of closed file");
 21182  		$pkg.ErrNoDeadline = errors.New("file type does not support deadline");
 21183  		$pkg.ErrTimeout = new TimeoutError.ptr();
 21184  		$pkg.TestHookDidWritev = (function(wrote) {
 21185  			var wrote;
 21186  		});
 21187  		$pkg.Accept4Func = syscall.Accept4;
 21188  		$pkg.CloseFunc = syscall.Close;
 21189  		$pkg.AcceptFunc = syscall.Accept;
 21190  		/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
 21191  	};
 21192  	$pkg.$init = $init;
 21193  	return $pkg;
 21194  })();
 21195  $packages["internal/testlog"] = (function() {
 21196  	var $pkg = {}, $init, atomic, Interface, ptrType, logger, Logger, Getenv, Open, Stat;
 21197  	atomic = $packages["sync/atomic"];
 21198  	Interface = $pkg.Interface = $newType(8, $kindInterface, "testlog.Interface", true, "internal/testlog", true, null);
 21199  	ptrType = $ptrType(Interface);
 21200  	Logger = function() {
 21201  		var impl;
 21202  		impl = logger.Load();
 21203  		if ($interfaceIsEqual(impl, $ifaceNil)) {
 21204  			return $ifaceNil;
 21205  		}
 21206  		return $assertType(impl, ptrType).$get();
 21207  	};
 21208  	$pkg.Logger = Logger;
 21209  	Getenv = function(name) {
 21210  		var log, name, $s, $r;
 21211  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; log = $f.log; name = $f.name; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 21212  		log = Logger();
 21213  		/* */ if (!($interfaceIsEqual(log, $ifaceNil))) { $s = 1; continue; }
 21214  		/* */ $s = 2; continue;
 21215  		/* if (!($interfaceIsEqual(log, $ifaceNil))) { */ case 1:
 21216  			$r = log.Getenv(name); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 21217  		/* } */ case 2:
 21218  		$s = -1; return;
 21219  		/* */ } return; } if ($f === undefined) { $f = { $blk: Getenv }; } $f.log = log; $f.name = name; $f.$s = $s; $f.$r = $r; return $f;
 21220  	};
 21221  	$pkg.Getenv = Getenv;
 21222  	Open = function(name) {
 21223  		var log, name, $s, $r;
 21224  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; log = $f.log; name = $f.name; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 21225  		log = Logger();
 21226  		/* */ if (!($interfaceIsEqual(log, $ifaceNil))) { $s = 1; continue; }
 21227  		/* */ $s = 2; continue;
 21228  		/* if (!($interfaceIsEqual(log, $ifaceNil))) { */ case 1:
 21229  			$r = log.Open(name); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 21230  		/* } */ case 2:
 21231  		$s = -1; return;
 21232  		/* */ } return; } if ($f === undefined) { $f = { $blk: Open }; } $f.log = log; $f.name = name; $f.$s = $s; $f.$r = $r; return $f;
 21233  	};
 21234  	$pkg.Open = Open;
 21235  	Stat = function(name) {
 21236  		var log, name, $s, $r;
 21237  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; log = $f.log; name = $f.name; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 21238  		log = Logger();
 21239  		/* */ if (!($interfaceIsEqual(log, $ifaceNil))) { $s = 1; continue; }
 21240  		/* */ $s = 2; continue;
 21241  		/* if (!($interfaceIsEqual(log, $ifaceNil))) { */ case 1:
 21242  			$r = log.Stat(name); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 21243  		/* } */ case 2:
 21244  		$s = -1; return;
 21245  		/* */ } return; } if ($f === undefined) { $f = { $blk: Stat }; } $f.log = log; $f.name = name; $f.$s = $s; $f.$r = $r; return $f;
 21246  	};
 21247  	$pkg.Stat = Stat;
 21248  	Interface.init([{prop: "Chdir", name: "Chdir", pkg: "", typ: $funcType([$String], [], false)}, {prop: "Getenv", name: "Getenv", pkg: "", typ: $funcType([$String], [], false)}, {prop: "Open", name: "Open", pkg: "", typ: $funcType([$String], [], false)}, {prop: "Stat", name: "Stat", pkg: "", typ: $funcType([$String], [], false)}]);
 21249  	$init = function() {
 21250  		$pkg.$init = function() {};
 21251  		/* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 21252  		$r = atomic.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 21253  		logger = new atomic.Value.ptr($ifaceNil);
 21254  		/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
 21255  	};
 21256  	$pkg.$init = $init;
 21257  	return $pkg;
 21258  })();
 21259  $packages["os"] = (function() {
 21260  	var $pkg = {}, $init, errors, js, poll, testlog, io, runtime, sync, atomic, syscall, time, timeout, PathError, SyscallError, LinkError, file, dirInfo, File, FileInfo, FileMode, fileStat, sliceType, ptrType, sliceType$1, ptrType$1, sliceType$2, ptrType$2, ptrType$3, ptrType$4, sliceType$5, ptrType$12, ptrType$13, funcType$1, ptrType$15, arrayType$2, arrayType$4, arrayType$5, ptrType$16, errFinished, lstat, runtime_args, init, runtime_beforeExit, Getenv, NewSyscallError, IsExist, IsNotExist, IsPermission, underlyingError, wrapSyscallError, isExist, isNotExist, isPermission, Getpid, Open, OpenFile, TempDir, Chmod, sigpipe, syscallMode, chmod, fixLongPath, NewFile, newFile, epipecheck, openFileNolog, Remove, tempDir, IsPathSeparator, basename, init$1, Exit, Stat, Lstat, fillFileStatFromSys, timespecToTime, statNolog, lstatNolog, Hostname, hostname;
 21261  	errors = $packages["errors"];
 21262  	js = $packages["github.com/gopherjs/gopherjs/js"];
 21263  	poll = $packages["internal/poll"];
 21264  	testlog = $packages["internal/testlog"];
 21265  	io = $packages["io"];
 21266  	runtime = $packages["runtime"];
 21267  	sync = $packages["sync"];
 21268  	atomic = $packages["sync/atomic"];
 21269  	syscall = $packages["syscall"];
 21270  	time = $packages["time"];
 21271  	timeout = $pkg.timeout = $newType(8, $kindInterface, "os.timeout", true, "os", false, null);
 21272  	PathError = $pkg.PathError = $newType(0, $kindStruct, "os.PathError", true, "os", true, function(Op_, Path_, Err_) {
 21273  		this.$val = this;
 21274  		if (arguments.length === 0) {
 21275  			this.Op = "";
 21276  			this.Path = "";
 21277  			this.Err = $ifaceNil;
 21278  			return;
 21279  		}
 21280  		this.Op = Op_;
 21281  		this.Path = Path_;
 21282  		this.Err = Err_;
 21283  	});
 21284  	SyscallError = $pkg.SyscallError = $newType(0, $kindStruct, "os.SyscallError", true, "os", true, function(Syscall_, Err_) {
 21285  		this.$val = this;
 21286  		if (arguments.length === 0) {
 21287  			this.Syscall = "";
 21288  			this.Err = $ifaceNil;
 21289  			return;
 21290  		}
 21291  		this.Syscall = Syscall_;
 21292  		this.Err = Err_;
 21293  	});
 21294  	LinkError = $pkg.LinkError = $newType(0, $kindStruct, "os.LinkError", true, "os", true, function(Op_, Old_, New_, Err_) {
 21295  		this.$val = this;
 21296  		if (arguments.length === 0) {
 21297  			this.Op = "";
 21298  			this.Old = "";
 21299  			this.New = "";
 21300  			this.Err = $ifaceNil;
 21301  			return;
 21302  		}
 21303  		this.Op = Op_;
 21304  		this.Old = Old_;
 21305  		this.New = New_;
 21306  		this.Err = Err_;
 21307  	});
 21308  	file = $pkg.file = $newType(0, $kindStruct, "os.file", true, "os", false, function(pfd_, name_, dirinfo_, nonblock_, stdoutOrErr_) {
 21309  		this.$val = this;
 21310  		if (arguments.length === 0) {
 21311  			this.pfd = new poll.FD.ptr(new poll.fdMutex.ptr(new $Uint64(0, 0), 0, 0), 0, new poll.pollDesc.ptr(false), ptrType$12.nil, 0, false, false, false, false);
 21312  			this.name = "";
 21313  			this.dirinfo = ptrType$1.nil;
 21314  			this.nonblock = false;
 21315  			this.stdoutOrErr = false;
 21316  			return;
 21317  		}
 21318  		this.pfd = pfd_;
 21319  		this.name = name_;
 21320  		this.dirinfo = dirinfo_;
 21321  		this.nonblock = nonblock_;
 21322  		this.stdoutOrErr = stdoutOrErr_;
 21323  	});
 21324  	dirInfo = $pkg.dirInfo = $newType(0, $kindStruct, "os.dirInfo", true, "os", false, function(buf_, nbuf_, bufp_) {
 21325  		this.$val = this;
 21326  		if (arguments.length === 0) {
 21327  			this.buf = sliceType$2.nil;
 21328  			this.nbuf = 0;
 21329  			this.bufp = 0;
 21330  			return;
 21331  		}
 21332  		this.buf = buf_;
 21333  		this.nbuf = nbuf_;
 21334  		this.bufp = bufp_;
 21335  	});
 21336  	File = $pkg.File = $newType(0, $kindStruct, "os.File", true, "os", true, function(file_) {
 21337  		this.$val = this;
 21338  		if (arguments.length === 0) {
 21339  			this.file = ptrType$13.nil;
 21340  			return;
 21341  		}
 21342  		this.file = file_;
 21343  	});
 21344  	FileInfo = $pkg.FileInfo = $newType(8, $kindInterface, "os.FileInfo", true, "os", true, null);
 21345  	FileMode = $pkg.FileMode = $newType(4, $kindUint32, "os.FileMode", true, "os", true, null);
 21346  	fileStat = $pkg.fileStat = $newType(0, $kindStruct, "os.fileStat", true, "os", false, function(name_, size_, mode_, modTime_, sys_) {
 21347  		this.$val = this;
 21348  		if (arguments.length === 0) {
 21349  			this.name = "";
 21350  			this.size = new $Int64(0, 0);
 21351  			this.mode = 0;
 21352  			this.modTime = new time.Time.ptr(new $Uint64(0, 0), new $Int64(0, 0), ptrType$15.nil);
 21353  			this.sys = new syscall.Stat_t.ptr(new $Uint64(0, 0), new $Uint64(0, 0), new $Uint64(0, 0), 0, 0, 0, 0, new $Uint64(0, 0), new $Int64(0, 0), new $Int64(0, 0), new $Int64(0, 0), new syscall.Timespec.ptr(new $Int64(0, 0), new $Int64(0, 0)), new syscall.Timespec.ptr(new $Int64(0, 0), new $Int64(0, 0)), new syscall.Timespec.ptr(new $Int64(0, 0), new $Int64(0, 0)), arrayType$2.zero());
 21354  			return;
 21355  		}
 21356  		this.name = name_;
 21357  		this.size = size_;
 21358  		this.mode = mode_;
 21359  		this.modTime = modTime_;
 21360  		this.sys = sys_;
 21361  	});
 21362  	sliceType = $sliceType($String);
 21363  	ptrType = $ptrType(File);
 21364  	sliceType$1 = $sliceType(FileInfo);
 21365  	ptrType$1 = $ptrType(dirInfo);
 21366  	sliceType$2 = $sliceType($Uint8);
 21367  	ptrType$2 = $ptrType(PathError);
 21368  	ptrType$3 = $ptrType(LinkError);
 21369  	ptrType$4 = $ptrType(SyscallError);
 21370  	sliceType$5 = $sliceType(syscall.Iovec);
 21371  	ptrType$12 = $ptrType(sliceType$5);
 21372  	ptrType$13 = $ptrType(file);
 21373  	funcType$1 = $funcType([ptrType$13], [$error], false);
 21374  	ptrType$15 = $ptrType(time.Location);
 21375  	arrayType$2 = $arrayType($Int64, 3);
 21376  	arrayType$4 = $arrayType($Uint8, 512);
 21377  	arrayType$5 = $arrayType($Uint8, 32);
 21378  	ptrType$16 = $ptrType(fileStat);
 21379  	runtime_args = function() {
 21380  		return $pkg.Args;
 21381  	};
 21382  	init = function() {
 21383  		var argv, i, process;
 21384  		process = $global.process;
 21385  		if (!(process === undefined)) {
 21386  			argv = process.argv;
 21387  			$pkg.Args = $makeSlice(sliceType, ($parseInt(argv.length) - 1 >> 0));
 21388  			i = 0;
 21389  			while (true) {
 21390  				if (!(i < ($parseInt(argv.length) - 1 >> 0))) { break; }
 21391  				((i < 0 || i >= $pkg.Args.$length) ? ($throwRuntimeError("index out of range"), undefined) : $pkg.Args.$array[$pkg.Args.$offset + i] = $internalize(argv[(i + 1 >> 0)], $String));
 21392  				i = i + (1) >> 0;
 21393  			}
 21394  		}
 21395  		if ($pkg.Args.$length === 0) {
 21396  			$pkg.Args = new sliceType(["?"]);
 21397  		}
 21398  	};
 21399  	runtime_beforeExit = function() {
 21400  	};
 21401  	File.ptr.prototype.Readdir = function(n) {
 21402  		var _r, f, n, $s, $r;
 21403  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; f = $f.f; n = $f.n; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 21404  		f = this;
 21405  		if (f === ptrType.nil) {
 21406  			$s = -1; return [sliceType$1.nil, $pkg.ErrInvalid];
 21407  		}
 21408  		_r = f.readdir(n); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 21409  		$s = -1; return _r;
 21410  		/* */ } return; } if ($f === undefined) { $f = { $blk: File.ptr.prototype.Readdir }; } $f._r = _r; $f.f = f; $f.n = n; $f.$s = $s; $f.$r = $r; return $f;
 21411  	};
 21412  	File.prototype.Readdir = function(n) { return this.$val.Readdir(n); };
 21413  	File.ptr.prototype.Readdirnames = function(n) {
 21414  		var _r, _tmp, _tmp$1, _tuple, err, f, n, names, $s, $r;
 21415  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tuple = $f._tuple; err = $f.err; f = $f.f; n = $f.n; names = $f.names; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 21416  		names = sliceType.nil;
 21417  		err = $ifaceNil;
 21418  		f = this;
 21419  		if (f === ptrType.nil) {
 21420  			_tmp = sliceType.nil;
 21421  			_tmp$1 = $pkg.ErrInvalid;
 21422  			names = _tmp;
 21423  			err = _tmp$1;
 21424  			$s = -1; return [names, err];
 21425  		}
 21426  		_r = f.readdirnames(n); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 21427  		_tuple = _r;
 21428  		names = _tuple[0];
 21429  		err = _tuple[1];
 21430  		$s = -1; return [names, err];
 21431  		/* */ } return; } if ($f === undefined) { $f = { $blk: File.ptr.prototype.Readdirnames }; } $f._r = _r; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tuple = _tuple; $f.err = err; $f.f = f; $f.n = n; $f.names = names; $f.$s = $s; $f.$r = $r; return $f;
 21432  	};
 21433  	File.prototype.Readdirnames = function(n) { return this.$val.Readdirnames(n); };
 21434  	File.ptr.prototype.readdir = function(n) {
 21435  		var _i, _r, _r$1, _ref, _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, _tuple$1, dirname, err, f, fi, filename, fip, lerr, n, names, $s, $r;
 21436  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _i = $f._i; _r = $f._r; _r$1 = $f._r$1; _ref = $f._ref; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; dirname = $f.dirname; err = $f.err; f = $f.f; fi = $f.fi; filename = $f.filename; fip = $f.fip; lerr = $f.lerr; n = $f.n; names = $f.names; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 21437  		fi = sliceType$1.nil;
 21438  		err = $ifaceNil;
 21439  		f = this;
 21440  		dirname = f.file.name;
 21441  		if (dirname === "") {
 21442  			dirname = ".";
 21443  		}
 21444  		_r = f.Readdirnames(n); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 21445  		_tuple = _r;
 21446  		names = _tuple[0];
 21447  		err = _tuple[1];
 21448  		fi = $makeSlice(sliceType$1, 0, names.$length);
 21449  		_ref = names;
 21450  		_i = 0;
 21451  		/* while (true) { */ case 2:
 21452  			/* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 3; continue; }
 21453  			filename = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
 21454  			_r$1 = lstat(dirname + "/" + filename); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 21455  			_tuple$1 = _r$1;
 21456  			fip = _tuple$1[0];
 21457  			lerr = _tuple$1[1];
 21458  			if (IsNotExist(lerr)) {
 21459  				_i++;
 21460  				/* continue; */ $s = 2; continue;
 21461  			}
 21462  			if (!($interfaceIsEqual(lerr, $ifaceNil))) {
 21463  				_tmp = fi;
 21464  				_tmp$1 = lerr;
 21465  				fi = _tmp;
 21466  				err = _tmp$1;
 21467  				$s = -1; return [fi, err];
 21468  			}
 21469  			fi = $append(fi, fip);
 21470  			_i++;
 21471  		/* } */ $s = 2; continue; case 3:
 21472  		if ((fi.$length === 0) && $interfaceIsEqual(err, $ifaceNil) && n > 0) {
 21473  			err = io.EOF;
 21474  		}
 21475  		_tmp$2 = fi;
 21476  		_tmp$3 = err;
 21477  		fi = _tmp$2;
 21478  		err = _tmp$3;
 21479  		$s = -1; return [fi, err];
 21480  		/* */ } return; } if ($f === undefined) { $f = { $blk: File.ptr.prototype.readdir }; } $f._i = _i; $f._r = _r; $f._r$1 = _r$1; $f._ref = _ref; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.dirname = dirname; $f.err = err; $f.f = f; $f.fi = fi; $f.filename = filename; $f.fip = fip; $f.lerr = lerr; $f.n = n; $f.names = names; $f.$s = $s; $f.$r = $r; return $f;
 21481  	};
 21482  	File.prototype.readdir = function(n) { return this.$val.readdir(n); };
 21483  	File.ptr.prototype.readdirnames = function(n) {
 21484  		var _r, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tuple, _tuple$1, d, err, errno, f, n, names, nb, nc, size, $s, $r;
 21485  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tmp$4 = $f._tmp$4; _tmp$5 = $f._tmp$5; _tmp$6 = $f._tmp$6; _tmp$7 = $f._tmp$7; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; d = $f.d; err = $f.err; errno = $f.errno; f = $f.f; n = $f.n; names = $f.names; nb = $f.nb; nc = $f.nc; size = $f.size; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 21486  		names = sliceType.nil;
 21487  		err = $ifaceNil;
 21488  		f = this;
 21489  		if (f.file.dirinfo === ptrType$1.nil) {
 21490  			f.file.dirinfo = new dirInfo.ptr(sliceType$2.nil, 0, 0);
 21491  			f.file.dirinfo.buf = $makeSlice(sliceType$2, 4096);
 21492  		}
 21493  		d = f.file.dirinfo;
 21494  		size = n;
 21495  		if (size <= 0) {
 21496  			size = 100;
 21497  			n = -1;
 21498  		}
 21499  		names = $makeSlice(sliceType, 0, size);
 21500  		/* while (true) { */ case 1:
 21501  			/* if (!(!((n === 0)))) { break; } */ if(!(!((n === 0)))) { $s = 2; continue; }
 21502  			/* */ if (d.bufp >= d.nbuf) { $s = 3; continue; }
 21503  			/* */ $s = 4; continue;
 21504  			/* if (d.bufp >= d.nbuf) { */ case 3:
 21505  				d.bufp = 0;
 21506  				errno = $ifaceNil;
 21507  				_r = f.file.pfd.ReadDirent(d.buf); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 21508  				_tuple = _r;
 21509  				d.nbuf = _tuple[0];
 21510  				errno = _tuple[1];
 21511  				runtime.KeepAlive(f);
 21512  				if (!($interfaceIsEqual(errno, $ifaceNil))) {
 21513  					_tmp = names;
 21514  					_tmp$1 = wrapSyscallError("readdirent", errno);
 21515  					names = _tmp;
 21516  					err = _tmp$1;
 21517  					$s = -1; return [names, err];
 21518  				}
 21519  				if (d.nbuf <= 0) {
 21520  					/* break; */ $s = 2; continue;
 21521  				}
 21522  			/* } */ case 4:
 21523  			_tmp$2 = 0;
 21524  			_tmp$3 = 0;
 21525  			nb = _tmp$2;
 21526  			nc = _tmp$3;
 21527  			_tuple$1 = syscall.ParseDirent($subslice(d.buf, d.bufp, d.nbuf), n, names);
 21528  			nb = _tuple$1[0];
 21529  			nc = _tuple$1[1];
 21530  			names = _tuple$1[2];
 21531  			d.bufp = d.bufp + (nb) >> 0;
 21532  			n = n - (nc) >> 0;
 21533  		/* } */ $s = 1; continue; case 2:
 21534  		if (n >= 0 && (names.$length === 0)) {
 21535  			_tmp$4 = names;
 21536  			_tmp$5 = io.EOF;
 21537  			names = _tmp$4;
 21538  			err = _tmp$5;
 21539  			$s = -1; return [names, err];
 21540  		}
 21541  		_tmp$6 = names;
 21542  		_tmp$7 = $ifaceNil;
 21543  		names = _tmp$6;
 21544  		err = _tmp$7;
 21545  		$s = -1; return [names, err];
 21546  		/* */ } return; } if ($f === undefined) { $f = { $blk: File.ptr.prototype.readdirnames }; } $f._r = _r; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tmp$4 = _tmp$4; $f._tmp$5 = _tmp$5; $f._tmp$6 = _tmp$6; $f._tmp$7 = _tmp$7; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.d = d; $f.err = err; $f.errno = errno; $f.f = f; $f.n = n; $f.names = names; $f.nb = nb; $f.nc = nc; $f.size = size; $f.$s = $s; $f.$r = $r; return $f;
 21547  	};
 21548  	File.prototype.readdirnames = function(n) { return this.$val.readdirnames(n); };
 21549  	Getenv = function(key) {
 21550  		var _r, _tuple, key, v, $s, $r;
 21551  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; key = $f.key; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 21552  		$r = testlog.Getenv(key); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 21553  		_r = syscall.Getenv(key); /* */ $s = 2; case 2: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 21554  		_tuple = _r;
 21555  		v = _tuple[0];
 21556  		$s = -1; return v;
 21557  		/* */ } return; } if ($f === undefined) { $f = { $blk: Getenv }; } $f._r = _r; $f._tuple = _tuple; $f.key = key; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
 21558  	};
 21559  	$pkg.Getenv = Getenv;
 21560  	PathError.ptr.prototype.Error = function() {
 21561  		var _r, e, $s, $r;
 21562  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; e = $f.e; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 21563  		e = this;
 21564  		_r = e.Err.Error(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 21565  		$s = -1; return e.Op + " " + e.Path + ": " + _r;
 21566  		/* */ } return; } if ($f === undefined) { $f = { $blk: PathError.ptr.prototype.Error }; } $f._r = _r; $f.e = e; $f.$s = $s; $f.$r = $r; return $f;
 21567  	};
 21568  	PathError.prototype.Error = function() { return this.$val.Error(); };
 21569  	PathError.ptr.prototype.Timeout = function() {
 21570  		var _r, _tuple, _v, e, ok, t, $s, $r;
 21571  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; _v = $f._v; e = $f.e; ok = $f.ok; t = $f.t; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 21572  		e = this;
 21573  		_tuple = $assertType(e.Err, timeout, true);
 21574  		t = _tuple[0];
 21575  		ok = _tuple[1];
 21576  		if (!(ok)) { _v = false; $s = 1; continue s; }
 21577  		_r = t.Timeout(); /* */ $s = 2; case 2: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 21578  		_v = _r; case 1:
 21579  		$s = -1; return _v;
 21580  		/* */ } return; } if ($f === undefined) { $f = { $blk: PathError.ptr.prototype.Timeout }; } $f._r = _r; $f._tuple = _tuple; $f._v = _v; $f.e = e; $f.ok = ok; $f.t = t; $f.$s = $s; $f.$r = $r; return $f;
 21581  	};
 21582  	PathError.prototype.Timeout = function() { return this.$val.Timeout(); };
 21583  	SyscallError.ptr.prototype.Error = function() {
 21584  		var _r, e, $s, $r;
 21585  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; e = $f.e; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 21586  		e = this;
 21587  		_r = e.Err.Error(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 21588  		$s = -1; return e.Syscall + ": " + _r;
 21589  		/* */ } return; } if ($f === undefined) { $f = { $blk: SyscallError.ptr.prototype.Error }; } $f._r = _r; $f.e = e; $f.$s = $s; $f.$r = $r; return $f;
 21590  	};
 21591  	SyscallError.prototype.Error = function() { return this.$val.Error(); };
 21592  	SyscallError.ptr.prototype.Timeout = function() {
 21593  		var _r, _tuple, _v, e, ok, t, $s, $r;
 21594  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; _v = $f._v; e = $f.e; ok = $f.ok; t = $f.t; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 21595  		e = this;
 21596  		_tuple = $assertType(e.Err, timeout, true);
 21597  		t = _tuple[0];
 21598  		ok = _tuple[1];
 21599  		if (!(ok)) { _v = false; $s = 1; continue s; }
 21600  		_r = t.Timeout(); /* */ $s = 2; case 2: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 21601  		_v = _r; case 1:
 21602  		$s = -1; return _v;
 21603  		/* */ } return; } if ($f === undefined) { $f = { $blk: SyscallError.ptr.prototype.Timeout }; } $f._r = _r; $f._tuple = _tuple; $f._v = _v; $f.e = e; $f.ok = ok; $f.t = t; $f.$s = $s; $f.$r = $r; return $f;
 21604  	};
 21605  	SyscallError.prototype.Timeout = function() { return this.$val.Timeout(); };
 21606  	NewSyscallError = function(syscall$1, err) {
 21607  		var err, syscall$1;
 21608  		if ($interfaceIsEqual(err, $ifaceNil)) {
 21609  			return $ifaceNil;
 21610  		}
 21611  		return new SyscallError.ptr(syscall$1, err);
 21612  	};
 21613  	$pkg.NewSyscallError = NewSyscallError;
 21614  	IsExist = function(err) {
 21615  		var err;
 21616  		return isExist(err);
 21617  	};
 21618  	$pkg.IsExist = IsExist;
 21619  	IsNotExist = function(err) {
 21620  		var err;
 21621  		return isNotExist(err);
 21622  	};
 21623  	$pkg.IsNotExist = IsNotExist;
 21624  	IsPermission = function(err) {
 21625  		var err;
 21626  		return isPermission(err);
 21627  	};
 21628  	$pkg.IsPermission = IsPermission;
 21629  	underlyingError = function(err) {
 21630  		var _ref, err, err$1, err$2, err$3;
 21631  		_ref = err;
 21632  		if ($assertType(_ref, ptrType$2, true)[1]) {
 21633  			err$1 = _ref.$val;
 21634  			return err$1.Err;
 21635  		} else if ($assertType(_ref, ptrType$3, true)[1]) {
 21636  			err$2 = _ref.$val;
 21637  			return err$2.Err;
 21638  		} else if ($assertType(_ref, ptrType$4, true)[1]) {
 21639  			err$3 = _ref.$val;
 21640  			return err$3.Err;
 21641  		}
 21642  		return err;
 21643  	};
 21644  	wrapSyscallError = function(name, err) {
 21645  		var _tuple, err, name, ok;
 21646  		_tuple = $assertType(err, syscall.Errno, true);
 21647  		ok = _tuple[1];
 21648  		if (ok) {
 21649  			err = NewSyscallError(name, err);
 21650  		}
 21651  		return err;
 21652  	};
 21653  	isExist = function(err) {
 21654  		var err;
 21655  		err = underlyingError(err);
 21656  		return $interfaceIsEqual(err, new syscall.Errno(17)) || $interfaceIsEqual(err, new syscall.Errno(39)) || $interfaceIsEqual(err, $pkg.ErrExist);
 21657  	};
 21658  	isNotExist = function(err) {
 21659  		var err;
 21660  		err = underlyingError(err);
 21661  		return $interfaceIsEqual(err, new syscall.Errno(2)) || $interfaceIsEqual(err, $pkg.ErrNotExist);
 21662  	};
 21663  	isPermission = function(err) {
 21664  		var err;
 21665  		err = underlyingError(err);
 21666  		return $interfaceIsEqual(err, new syscall.Errno(13)) || $interfaceIsEqual(err, new syscall.Errno(1)) || $interfaceIsEqual(err, $pkg.ErrPermission);
 21667  	};
 21668  	Getpid = function() {
 21669  		return syscall.Getpid();
 21670  	};
 21671  	$pkg.Getpid = Getpid;
 21672  	File.ptr.prototype.Name = function() {
 21673  		var f;
 21674  		f = this;
 21675  		return f.file.name;
 21676  	};
 21677  	File.prototype.Name = function() { return this.$val.Name(); };
 21678  	LinkError.ptr.prototype.Error = function() {
 21679  		var _r, e, $s, $r;
 21680  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; e = $f.e; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 21681  		e = this;
 21682  		_r = e.Err.Error(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 21683  		$s = -1; return e.Op + " " + e.Old + " " + e.New + ": " + _r;
 21684  		/* */ } return; } if ($f === undefined) { $f = { $blk: LinkError.ptr.prototype.Error }; } $f._r = _r; $f.e = e; $f.$s = $s; $f.$r = $r; return $f;
 21685  	};
 21686  	LinkError.prototype.Error = function() { return this.$val.Error(); };
 21687  	File.ptr.prototype.Read = function(b) {
 21688  		var _r, _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, b, e, err, err$1, f, n, $s, $r;
 21689  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tuple = $f._tuple; b = $f.b; e = $f.e; err = $f.err; err$1 = $f.err$1; f = $f.f; n = $f.n; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 21690  		n = 0;
 21691  		err = $ifaceNil;
 21692  		f = this;
 21693  		err$1 = f.checkValid("read");
 21694  		if (!($interfaceIsEqual(err$1, $ifaceNil))) {
 21695  			_tmp = 0;
 21696  			_tmp$1 = err$1;
 21697  			n = _tmp;
 21698  			err = _tmp$1;
 21699  			$s = -1; return [n, err];
 21700  		}
 21701  		_r = f.read(b); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 21702  		_tuple = _r;
 21703  		n = _tuple[0];
 21704  		e = _tuple[1];
 21705  		_tmp$2 = n;
 21706  		_tmp$3 = f.wrapErr("read", e);
 21707  		n = _tmp$2;
 21708  		err = _tmp$3;
 21709  		$s = -1; return [n, err];
 21710  		/* */ } return; } if ($f === undefined) { $f = { $blk: File.ptr.prototype.Read }; } $f._r = _r; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tuple = _tuple; $f.b = b; $f.e = e; $f.err = err; $f.err$1 = err$1; $f.f = f; $f.n = n; $f.$s = $s; $f.$r = $r; return $f;
 21711  	};
 21712  	File.prototype.Read = function(b) { return this.$val.Read(b); };
 21713  	File.ptr.prototype.ReadAt = function(b, off) {
 21714  		var _r, _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, b, e, err, err$1, f, m, n, off, x, $s, $r;
 21715  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tuple = $f._tuple; b = $f.b; e = $f.e; err = $f.err; err$1 = $f.err$1; f = $f.f; m = $f.m; n = $f.n; off = $f.off; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 21716  		n = 0;
 21717  		err = $ifaceNil;
 21718  		f = this;
 21719  		err$1 = f.checkValid("read");
 21720  		if (!($interfaceIsEqual(err$1, $ifaceNil))) {
 21721  			_tmp = 0;
 21722  			_tmp$1 = err$1;
 21723  			n = _tmp;
 21724  			err = _tmp$1;
 21725  			$s = -1; return [n, err];
 21726  		}
 21727  		if ((off.$high < 0 || (off.$high === 0 && off.$low < 0))) {
 21728  			_tmp$2 = 0;
 21729  			_tmp$3 = new PathError.ptr("readat", f.file.name, errors.New("negative offset"));
 21730  			n = _tmp$2;
 21731  			err = _tmp$3;
 21732  			$s = -1; return [n, err];
 21733  		}
 21734  		/* while (true) { */ case 1:
 21735  			/* if (!(b.$length > 0)) { break; } */ if(!(b.$length > 0)) { $s = 2; continue; }
 21736  			_r = f.pread(b, off); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 21737  			_tuple = _r;
 21738  			m = _tuple[0];
 21739  			e = _tuple[1];
 21740  			if (!($interfaceIsEqual(e, $ifaceNil))) {
 21741  				err = f.wrapErr("read", e);
 21742  				/* break; */ $s = 2; continue;
 21743  			}
 21744  			n = n + (m) >> 0;
 21745  			b = $subslice(b, m);
 21746  			off = (x = (new $Int64(0, m)), new $Int64(off.$high + x.$high, off.$low + x.$low));
 21747  		/* } */ $s = 1; continue; case 2:
 21748  		$s = -1; return [n, err];
 21749  		/* */ } return; } if ($f === undefined) { $f = { $blk: File.ptr.prototype.ReadAt }; } $f._r = _r; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tuple = _tuple; $f.b = b; $f.e = e; $f.err = err; $f.err$1 = err$1; $f.f = f; $f.m = m; $f.n = n; $f.off = off; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
 21750  	};
 21751  	File.prototype.ReadAt = function(b, off) { return this.$val.ReadAt(b, off); };
 21752  	File.ptr.prototype.Write = function(b) {
 21753  		var _r, _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, b, e, err, err$1, f, n, $s, $r;
 21754  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tuple = $f._tuple; b = $f.b; e = $f.e; err = $f.err; err$1 = $f.err$1; f = $f.f; n = $f.n; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 21755  		n = 0;
 21756  		err = $ifaceNil;
 21757  		f = this;
 21758  		err$1 = f.checkValid("write");
 21759  		if (!($interfaceIsEqual(err$1, $ifaceNil))) {
 21760  			_tmp = 0;
 21761  			_tmp$1 = err$1;
 21762  			n = _tmp;
 21763  			err = _tmp$1;
 21764  			$s = -1; return [n, err];
 21765  		}
 21766  		_r = f.write(b); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 21767  		_tuple = _r;
 21768  		n = _tuple[0];
 21769  		e = _tuple[1];
 21770  		if (n < 0) {
 21771  			n = 0;
 21772  		}
 21773  		if (!((n === b.$length))) {
 21774  			err = io.ErrShortWrite;
 21775  		}
 21776  		epipecheck(f, e);
 21777  		if (!($interfaceIsEqual(e, $ifaceNil))) {
 21778  			err = f.wrapErr("write", e);
 21779  		}
 21780  		_tmp$2 = n;
 21781  		_tmp$3 = err;
 21782  		n = _tmp$2;
 21783  		err = _tmp$3;
 21784  		$s = -1; return [n, err];
 21785  		/* */ } return; } if ($f === undefined) { $f = { $blk: File.ptr.prototype.Write }; } $f._r = _r; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tuple = _tuple; $f.b = b; $f.e = e; $f.err = err; $f.err$1 = err$1; $f.f = f; $f.n = n; $f.$s = $s; $f.$r = $r; return $f;
 21786  	};
 21787  	File.prototype.Write = function(b) { return this.$val.Write(b); };
 21788  	File.ptr.prototype.WriteAt = function(b, off) {
 21789  		var _r, _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, b, e, err, err$1, f, m, n, off, x, $s, $r;
 21790  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tuple = $f._tuple; b = $f.b; e = $f.e; err = $f.err; err$1 = $f.err$1; f = $f.f; m = $f.m; n = $f.n; off = $f.off; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 21791  		n = 0;
 21792  		err = $ifaceNil;
 21793  		f = this;
 21794  		err$1 = f.checkValid("write");
 21795  		if (!($interfaceIsEqual(err$1, $ifaceNil))) {
 21796  			_tmp = 0;
 21797  			_tmp$1 = err$1;
 21798  			n = _tmp;
 21799  			err = _tmp$1;
 21800  			$s = -1; return [n, err];
 21801  		}
 21802  		if ((off.$high < 0 || (off.$high === 0 && off.$low < 0))) {
 21803  			_tmp$2 = 0;
 21804  			_tmp$3 = new PathError.ptr("writeat", f.file.name, errors.New("negative offset"));
 21805  			n = _tmp$2;
 21806  			err = _tmp$3;
 21807  			$s = -1; return [n, err];
 21808  		}
 21809  		/* while (true) { */ case 1:
 21810  			/* if (!(b.$length > 0)) { break; } */ if(!(b.$length > 0)) { $s = 2; continue; }
 21811  			_r = f.pwrite(b, off); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 21812  			_tuple = _r;
 21813  			m = _tuple[0];
 21814  			e = _tuple[1];
 21815  			if (!($interfaceIsEqual(e, $ifaceNil))) {
 21816  				err = f.wrapErr("write", e);
 21817  				/* break; */ $s = 2; continue;
 21818  			}
 21819  			n = n + (m) >> 0;
 21820  			b = $subslice(b, m);
 21821  			off = (x = (new $Int64(0, m)), new $Int64(off.$high + x.$high, off.$low + x.$low));
 21822  		/* } */ $s = 1; continue; case 2:
 21823  		$s = -1; return [n, err];
 21824  		/* */ } return; } if ($f === undefined) { $f = { $blk: File.ptr.prototype.WriteAt }; } $f._r = _r; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tuple = _tuple; $f.b = b; $f.e = e; $f.err = err; $f.err$1 = err$1; $f.f = f; $f.m = m; $f.n = n; $f.off = off; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
 21825  	};
 21826  	File.prototype.WriteAt = function(b, off) { return this.$val.WriteAt(b, off); };
 21827  	File.ptr.prototype.Seek = function(offset, whence) {
 21828  		var _r, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tuple, e, err, err$1, f, offset, r, ret, whence, $s, $r;
 21829  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tmp$4 = $f._tmp$4; _tmp$5 = $f._tmp$5; _tuple = $f._tuple; e = $f.e; err = $f.err; err$1 = $f.err$1; f = $f.f; offset = $f.offset; r = $f.r; ret = $f.ret; whence = $f.whence; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 21830  		ret = new $Int64(0, 0);
 21831  		err = $ifaceNil;
 21832  		f = this;
 21833  		err$1 = f.checkValid("seek");
 21834  		if (!($interfaceIsEqual(err$1, $ifaceNil))) {
 21835  			_tmp = new $Int64(0, 0);
 21836  			_tmp$1 = err$1;
 21837  			ret = _tmp;
 21838  			err = _tmp$1;
 21839  			$s = -1; return [ret, err];
 21840  		}
 21841  		_r = f.seek(offset, whence); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 21842  		_tuple = _r;
 21843  		r = _tuple[0];
 21844  		e = _tuple[1];
 21845  		if ($interfaceIsEqual(e, $ifaceNil) && !(f.file.dirinfo === ptrType$1.nil) && !((r.$high === 0 && r.$low === 0))) {
 21846  			e = new syscall.Errno(21);
 21847  		}
 21848  		if (!($interfaceIsEqual(e, $ifaceNil))) {
 21849  			_tmp$2 = new $Int64(0, 0);
 21850  			_tmp$3 = f.wrapErr("seek", e);
 21851  			ret = _tmp$2;
 21852  			err = _tmp$3;
 21853  			$s = -1; return [ret, err];
 21854  		}
 21855  		_tmp$4 = r;
 21856  		_tmp$5 = $ifaceNil;
 21857  		ret = _tmp$4;
 21858  		err = _tmp$5;
 21859  		$s = -1; return [ret, err];
 21860  		/* */ } return; } if ($f === undefined) { $f = { $blk: File.ptr.prototype.Seek }; } $f._r = _r; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tmp$4 = _tmp$4; $f._tmp$5 = _tmp$5; $f._tuple = _tuple; $f.e = e; $f.err = err; $f.err$1 = err$1; $f.f = f; $f.offset = offset; $f.r = r; $f.ret = ret; $f.whence = whence; $f.$s = $s; $f.$r = $r; return $f;
 21861  	};
 21862  	File.prototype.Seek = function(offset, whence) { return this.$val.Seek(offset, whence); };
 21863  	File.ptr.prototype.WriteString = function(s) {
 21864  		var _r, _tuple, err, f, n, s, $s, $r;
 21865  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; err = $f.err; f = $f.f; n = $f.n; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 21866  		n = 0;
 21867  		err = $ifaceNil;
 21868  		f = this;
 21869  		_r = f.Write((new sliceType$2($stringToBytes(s)))); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 21870  		_tuple = _r;
 21871  		n = _tuple[0];
 21872  		err = _tuple[1];
 21873  		$s = -1; return [n, err];
 21874  		/* */ } return; } if ($f === undefined) { $f = { $blk: File.ptr.prototype.WriteString }; } $f._r = _r; $f._tuple = _tuple; $f.err = err; $f.f = f; $f.n = n; $f.s = s; $f.$s = $s; $f.$r = $r; return $f;
 21875  	};
 21876  	File.prototype.WriteString = function(s) { return this.$val.WriteString(s); };
 21877  	Open = function(name) {
 21878  		var _r, name, $s, $r;
 21879  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; name = $f.name; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 21880  		_r = OpenFile(name, 0, 0); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 21881  		$s = -1; return _r;
 21882  		/* */ } return; } if ($f === undefined) { $f = { $blk: Open }; } $f._r = _r; $f.name = name; $f.$s = $s; $f.$r = $r; return $f;
 21883  	};
 21884  	$pkg.Open = Open;
 21885  	OpenFile = function(name, flag, perm) {
 21886  		var _r, flag, name, perm, $s, $r;
 21887  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; flag = $f.flag; name = $f.name; perm = $f.perm; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 21888  		$r = testlog.Open(name); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 21889  		_r = openFileNolog(name, flag, perm); /* */ $s = 2; case 2: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 21890  		$s = -1; return _r;
 21891  		/* */ } return; } if ($f === undefined) { $f = { $blk: OpenFile }; } $f._r = _r; $f.flag = flag; $f.name = name; $f.perm = perm; $f.$s = $s; $f.$r = $r; return $f;
 21892  	};
 21893  	$pkg.OpenFile = OpenFile;
 21894  	File.ptr.prototype.wrapErr = function(op, err) {
 21895  		var err, f, op;
 21896  		f = this;
 21897  		if ($interfaceIsEqual(err, $ifaceNil) || $interfaceIsEqual(err, io.EOF)) {
 21898  			return err;
 21899  		}
 21900  		if ($interfaceIsEqual(err, poll.ErrFileClosing)) {
 21901  			err = $pkg.ErrClosed;
 21902  		}
 21903  		return new PathError.ptr(op, f.file.name, err);
 21904  	};
 21905  	File.prototype.wrapErr = function(op, err) { return this.$val.wrapErr(op, err); };
 21906  	TempDir = function() {
 21907  		var _r, $s, $r;
 21908  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 21909  		_r = tempDir(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 21910  		$s = -1; return _r;
 21911  		/* */ } return; } if ($f === undefined) { $f = { $blk: TempDir }; } $f._r = _r; $f.$s = $s; $f.$r = $r; return $f;
 21912  	};
 21913  	$pkg.TempDir = TempDir;
 21914  	Chmod = function(name, mode) {
 21915  		var mode, name;
 21916  		return chmod(name, mode);
 21917  	};
 21918  	$pkg.Chmod = Chmod;
 21919  	File.ptr.prototype.Chmod = function(mode) {
 21920  		var _r, f, mode, $s, $r;
 21921  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; f = $f.f; mode = $f.mode; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 21922  		f = this;
 21923  		_r = f.chmod(mode); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 21924  		$s = -1; return _r;
 21925  		/* */ } return; } if ($f === undefined) { $f = { $blk: File.ptr.prototype.Chmod }; } $f._r = _r; $f.f = f; $f.mode = mode; $f.$s = $s; $f.$r = $r; return $f;
 21926  	};
 21927  	File.prototype.Chmod = function(mode) { return this.$val.Chmod(mode); };
 21928  	File.ptr.prototype.SetDeadline = function(t) {
 21929  		var f, t;
 21930  		f = this;
 21931  		return f.setDeadline($clone(t, time.Time));
 21932  	};
 21933  	File.prototype.SetDeadline = function(t) { return this.$val.SetDeadline(t); };
 21934  	File.ptr.prototype.SetReadDeadline = function(t) {
 21935  		var f, t;
 21936  		f = this;
 21937  		return f.setReadDeadline($clone(t, time.Time));
 21938  	};
 21939  	File.prototype.SetReadDeadline = function(t) { return this.$val.SetReadDeadline(t); };
 21940  	File.ptr.prototype.SetWriteDeadline = function(t) {
 21941  		var f, t;
 21942  		f = this;
 21943  		return f.setWriteDeadline($clone(t, time.Time));
 21944  	};
 21945  	File.prototype.SetWriteDeadline = function(t) { return this.$val.SetWriteDeadline(t); };
 21946  	sigpipe = function() {
 21947  		$throwRuntimeError("native function not implemented: os.sigpipe");
 21948  	};
 21949  	syscallMode = function(i) {
 21950  		var i, o;
 21951  		o = 0;
 21952  		o = (o | (((new FileMode(i).Perm() >>> 0)))) >>> 0;
 21953  		if (!((((i & 8388608) >>> 0) === 0))) {
 21954  			o = (o | (2048)) >>> 0;
 21955  		}
 21956  		if (!((((i & 4194304) >>> 0) === 0))) {
 21957  			o = (o | (1024)) >>> 0;
 21958  		}
 21959  		if (!((((i & 1048576) >>> 0) === 0))) {
 21960  			o = (o | (512)) >>> 0;
 21961  		}
 21962  		return o;
 21963  	};
 21964  	chmod = function(name, mode) {
 21965  		var e, mode, name;
 21966  		e = syscall.Chmod(fixLongPath(name), syscallMode(mode));
 21967  		if (!($interfaceIsEqual(e, $ifaceNil))) {
 21968  			return new PathError.ptr("chmod", name, e);
 21969  		}
 21970  		return $ifaceNil;
 21971  	};
 21972  	File.ptr.prototype.chmod = function(mode) {
 21973  		var _r, e, err, f, mode, $s, $r;
 21974  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; e = $f.e; err = $f.err; f = $f.f; mode = $f.mode; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 21975  		f = this;
 21976  		err = f.checkValid("chmod");
 21977  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 21978  			$s = -1; return err;
 21979  		}
 21980  		_r = f.file.pfd.Fchmod(syscallMode(mode)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 21981  		e = _r;
 21982  		if (!($interfaceIsEqual(e, $ifaceNil))) {
 21983  			$s = -1; return f.wrapErr("chmod", e);
 21984  		}
 21985  		$s = -1; return $ifaceNil;
 21986  		/* */ } return; } if ($f === undefined) { $f = { $blk: File.ptr.prototype.chmod }; } $f._r = _r; $f.e = e; $f.err = err; $f.f = f; $f.mode = mode; $f.$s = $s; $f.$r = $r; return $f;
 21987  	};
 21988  	File.prototype.chmod = function(mode) { return this.$val.chmod(mode); };
 21989  	File.ptr.prototype.Chown = function(uid, gid) {
 21990  		var _r, e, err, f, gid, uid, $s, $r;
 21991  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; e = $f.e; err = $f.err; f = $f.f; gid = $f.gid; uid = $f.uid; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 21992  		f = this;
 21993  		err = f.checkValid("chown");
 21994  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 21995  			$s = -1; return err;
 21996  		}
 21997  		_r = f.file.pfd.Fchown(uid, gid); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 21998  		e = _r;
 21999  		if (!($interfaceIsEqual(e, $ifaceNil))) {
 22000  			$s = -1; return f.wrapErr("chown", e);
 22001  		}
 22002  		$s = -1; return $ifaceNil;
 22003  		/* */ } return; } if ($f === undefined) { $f = { $blk: File.ptr.prototype.Chown }; } $f._r = _r; $f.e = e; $f.err = err; $f.f = f; $f.gid = gid; $f.uid = uid; $f.$s = $s; $f.$r = $r; return $f;
 22004  	};
 22005  	File.prototype.Chown = function(uid, gid) { return this.$val.Chown(uid, gid); };
 22006  	File.ptr.prototype.Truncate = function(size) {
 22007  		var _r, e, err, f, size, $s, $r;
 22008  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; e = $f.e; err = $f.err; f = $f.f; size = $f.size; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 22009  		f = this;
 22010  		err = f.checkValid("truncate");
 22011  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 22012  			$s = -1; return err;
 22013  		}
 22014  		_r = f.file.pfd.Ftruncate(size); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 22015  		e = _r;
 22016  		if (!($interfaceIsEqual(e, $ifaceNil))) {
 22017  			$s = -1; return f.wrapErr("truncate", e);
 22018  		}
 22019  		$s = -1; return $ifaceNil;
 22020  		/* */ } return; } if ($f === undefined) { $f = { $blk: File.ptr.prototype.Truncate }; } $f._r = _r; $f.e = e; $f.err = err; $f.f = f; $f.size = size; $f.$s = $s; $f.$r = $r; return $f;
 22021  	};
 22022  	File.prototype.Truncate = function(size) { return this.$val.Truncate(size); };
 22023  	File.ptr.prototype.Sync = function() {
 22024  		var _r, e, err, f, $s, $r;
 22025  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; e = $f.e; err = $f.err; f = $f.f; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 22026  		f = this;
 22027  		err = f.checkValid("sync");
 22028  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 22029  			$s = -1; return err;
 22030  		}
 22031  		_r = f.file.pfd.Fsync(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 22032  		e = _r;
 22033  		if (!($interfaceIsEqual(e, $ifaceNil))) {
 22034  			$s = -1; return f.wrapErr("sync", e);
 22035  		}
 22036  		$s = -1; return $ifaceNil;
 22037  		/* */ } return; } if ($f === undefined) { $f = { $blk: File.ptr.prototype.Sync }; } $f._r = _r; $f.e = e; $f.err = err; $f.f = f; $f.$s = $s; $f.$r = $r; return $f;
 22038  	};
 22039  	File.prototype.Sync = function() { return this.$val.Sync(); };
 22040  	File.ptr.prototype.Chdir = function() {
 22041  		var _r, e, err, f, $s, $r;
 22042  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; e = $f.e; err = $f.err; f = $f.f; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 22043  		f = this;
 22044  		err = f.checkValid("chdir");
 22045  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 22046  			$s = -1; return err;
 22047  		}
 22048  		_r = f.file.pfd.Fchdir(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 22049  		e = _r;
 22050  		if (!($interfaceIsEqual(e, $ifaceNil))) {
 22051  			$s = -1; return f.wrapErr("chdir", e);
 22052  		}
 22053  		$s = -1; return $ifaceNil;
 22054  		/* */ } return; } if ($f === undefined) { $f = { $blk: File.ptr.prototype.Chdir }; } $f._r = _r; $f.e = e; $f.err = err; $f.f = f; $f.$s = $s; $f.$r = $r; return $f;
 22055  	};
 22056  	File.prototype.Chdir = function() { return this.$val.Chdir(); };
 22057  	File.ptr.prototype.setDeadline = function(t) {
 22058  		var err, f, t;
 22059  		f = this;
 22060  		err = f.checkValid("SetDeadline");
 22061  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 22062  			return err;
 22063  		}
 22064  		return f.file.pfd.SetDeadline($clone(t, time.Time));
 22065  	};
 22066  	File.prototype.setDeadline = function(t) { return this.$val.setDeadline(t); };
 22067  	File.ptr.prototype.setReadDeadline = function(t) {
 22068  		var err, f, t;
 22069  		f = this;
 22070  		err = f.checkValid("SetReadDeadline");
 22071  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 22072  			return err;
 22073  		}
 22074  		return f.file.pfd.SetReadDeadline($clone(t, time.Time));
 22075  	};
 22076  	File.prototype.setReadDeadline = function(t) { return this.$val.setReadDeadline(t); };
 22077  	File.ptr.prototype.setWriteDeadline = function(t) {
 22078  		var err, f, t;
 22079  		f = this;
 22080  		err = f.checkValid("SetWriteDeadline");
 22081  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 22082  			return err;
 22083  		}
 22084  		return f.file.pfd.SetWriteDeadline($clone(t, time.Time));
 22085  	};
 22086  	File.prototype.setWriteDeadline = function(t) { return this.$val.setWriteDeadline(t); };
 22087  	File.ptr.prototype.checkValid = function(op) {
 22088  		var f, op;
 22089  		f = this;
 22090  		if (f === ptrType.nil) {
 22091  			return $pkg.ErrInvalid;
 22092  		}
 22093  		return $ifaceNil;
 22094  	};
 22095  	File.prototype.checkValid = function(op) { return this.$val.checkValid(op); };
 22096  	fixLongPath = function(path) {
 22097  		var path;
 22098  		return path;
 22099  	};
 22100  	File.ptr.prototype.Fd = function() {
 22101  		var _r, f, $s, $r;
 22102  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; f = $f.f; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 22103  		f = this;
 22104  		if (f === ptrType.nil) {
 22105  			$s = -1; return 4294967295;
 22106  		}
 22107  		/* */ if (f.file.nonblock) { $s = 1; continue; }
 22108  		/* */ $s = 2; continue;
 22109  		/* if (f.file.nonblock) { */ case 1:
 22110  			_r = f.file.pfd.SetBlocking(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 22111  			_r;
 22112  		/* } */ case 2:
 22113  		$s = -1; return ((f.file.pfd.Sysfd >>> 0));
 22114  		/* */ } return; } if ($f === undefined) { $f = { $blk: File.ptr.prototype.Fd }; } $f._r = _r; $f.f = f; $f.$s = $s; $f.$r = $r; return $f;
 22115  	};
 22116  	File.prototype.Fd = function() { return this.$val.Fd(); };
 22117  	NewFile = function(fd, name) {
 22118  		var fd, name;
 22119  		return newFile(fd, name, 0);
 22120  	};
 22121  	$pkg.NewFile = NewFile;
 22122  	newFile = function(fd, name, kind) {
 22123  		var err, err$1, f, fd, fdi, kind, name, pollable;
 22124  		fdi = ((fd >> 0));
 22125  		if (fdi < 0) {
 22126  			return ptrType.nil;
 22127  		}
 22128  		f = new File.ptr(new file.ptr(new poll.FD.ptr(new poll.fdMutex.ptr(new $Uint64(0, 0), 0, 0), fdi, new poll.pollDesc.ptr(false), ptrType$12.nil, 0, true, true, false, false), name, ptrType$1.nil, false, (fdi === 1) || (fdi === 2)));
 22129  		if (false && (kind === 1)) {
 22130  			kind = 0;
 22131  		}
 22132  		pollable = (kind === 1) || (kind === 2);
 22133  		err = f.file.pfd.Init("file", pollable);
 22134  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 22135  		} else if (pollable) {
 22136  			err$1 = syscall.SetNonblock(fdi, true);
 22137  			if ($interfaceIsEqual(err$1, $ifaceNil)) {
 22138  				f.file.nonblock = true;
 22139  			}
 22140  		}
 22141  		runtime.SetFinalizer(f.file, new funcType$1($methodExpr(ptrType$13, "close")));
 22142  		return f;
 22143  	};
 22144  	epipecheck = function(file$1, e) {
 22145  		var e, file$1;
 22146  		if ($interfaceIsEqual(e, new syscall.Errno(32)) && file$1.file.stdoutOrErr) {
 22147  			sigpipe();
 22148  		}
 22149  	};
 22150  	openFileNolog = function(name, flag, perm) {
 22151  		var _r, _tuple, _tuple$1, chmod$1, e, err, flag, name, perm, r, $s, $r;
 22152  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; chmod$1 = $f.chmod$1; e = $f.e; err = $f.err; flag = $f.flag; name = $f.name; perm = $f.perm; r = $f.r; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 22153  		chmod$1 = false;
 22154  		/* */ if (false && !(((flag & 64) === 0)) && !((((perm & 1048576) >>> 0) === 0))) { $s = 1; continue; }
 22155  		/* */ $s = 2; continue;
 22156  		/* if (false && !(((flag & 64) === 0)) && !((((perm & 1048576) >>> 0) === 0))) { */ case 1:
 22157  			_r = Stat(name); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 22158  			_tuple = _r;
 22159  			err = _tuple[1];
 22160  			if (IsNotExist(err)) {
 22161  				chmod$1 = true;
 22162  			}
 22163  		/* } */ case 2:
 22164  		r = 0;
 22165  		while (true) {
 22166  			e = $ifaceNil;
 22167  			_tuple$1 = syscall.Open(name, flag | 524288, syscallMode(perm));
 22168  			r = _tuple$1[0];
 22169  			e = _tuple$1[1];
 22170  			if ($interfaceIsEqual(e, $ifaceNil)) {
 22171  				break;
 22172  			}
 22173  			if (false && $interfaceIsEqual(e, new syscall.Errno(4))) {
 22174  				continue;
 22175  			}
 22176  			$s = -1; return [ptrType.nil, new PathError.ptr("open", name, e)];
 22177  		}
 22178  		if (chmod$1) {
 22179  			Chmod(name, perm);
 22180  		}
 22181  		if (false) {
 22182  			syscall.CloseOnExec(r);
 22183  		}
 22184  		$s = -1; return [newFile(((r >>> 0)), name, 1), $ifaceNil];
 22185  		/* */ } return; } if ($f === undefined) { $f = { $blk: openFileNolog }; } $f._r = _r; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.chmod$1 = chmod$1; $f.e = e; $f.err = err; $f.flag = flag; $f.name = name; $f.perm = perm; $f.r = r; $f.$s = $s; $f.$r = $r; return $f;
 22186  	};
 22187  	File.ptr.prototype.Close = function() {
 22188  		var _r, f, $s, $r;
 22189  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; f = $f.f; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 22190  		f = this;
 22191  		if (f === ptrType.nil) {
 22192  			$s = -1; return $pkg.ErrInvalid;
 22193  		}
 22194  		_r = f.file.close(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 22195  		$s = -1; return _r;
 22196  		/* */ } return; } if ($f === undefined) { $f = { $blk: File.ptr.prototype.Close }; } $f._r = _r; $f.f = f; $f.$s = $s; $f.$r = $r; return $f;
 22197  	};
 22198  	File.prototype.Close = function() { return this.$val.Close(); };
 22199  	file.ptr.prototype.close = function() {
 22200  		var _r, e, err, file$1, $s, $r;
 22201  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; e = $f.e; err = $f.err; file$1 = $f.file$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 22202  		file$1 = this;
 22203  		if (file$1 === ptrType$13.nil) {
 22204  			$s = -1; return new syscall.Errno(22);
 22205  		}
 22206  		err = $ifaceNil;
 22207  		_r = file$1.pfd.Close(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 22208  		e = _r;
 22209  		if (!($interfaceIsEqual(e, $ifaceNil))) {
 22210  			if ($interfaceIsEqual(e, poll.ErrFileClosing)) {
 22211  				e = $pkg.ErrClosed;
 22212  			}
 22213  			err = new PathError.ptr("close", file$1.name, e);
 22214  		}
 22215  		runtime.SetFinalizer(file$1, $ifaceNil);
 22216  		$s = -1; return err;
 22217  		/* */ } return; } if ($f === undefined) { $f = { $blk: file.ptr.prototype.close }; } $f._r = _r; $f.e = e; $f.err = err; $f.file$1 = file$1; $f.$s = $s; $f.$r = $r; return $f;
 22218  	};
 22219  	file.prototype.close = function() { return this.$val.close(); };
 22220  	File.ptr.prototype.read = function(b) {
 22221  		var _r, _tmp, _tmp$1, _tuple, b, err, f, n, $s, $r;
 22222  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tuple = $f._tuple; b = $f.b; err = $f.err; f = $f.f; n = $f.n; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 22223  		n = 0;
 22224  		err = $ifaceNil;
 22225  		f = this;
 22226  		_r = f.file.pfd.Read(b); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 22227  		_tuple = _r;
 22228  		n = _tuple[0];
 22229  		err = _tuple[1];
 22230  		runtime.KeepAlive(f);
 22231  		_tmp = n;
 22232  		_tmp$1 = err;
 22233  		n = _tmp;
 22234  		err = _tmp$1;
 22235  		$s = -1; return [n, err];
 22236  		/* */ } return; } if ($f === undefined) { $f = { $blk: File.ptr.prototype.read }; } $f._r = _r; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tuple = _tuple; $f.b = b; $f.err = err; $f.f = f; $f.n = n; $f.$s = $s; $f.$r = $r; return $f;
 22237  	};
 22238  	File.prototype.read = function(b) { return this.$val.read(b); };
 22239  	File.ptr.prototype.pread = function(b, off) {
 22240  		var _r, _tmp, _tmp$1, _tuple, b, err, f, n, off, $s, $r;
 22241  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tuple = $f._tuple; b = $f.b; err = $f.err; f = $f.f; n = $f.n; off = $f.off; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 22242  		n = 0;
 22243  		err = $ifaceNil;
 22244  		f = this;
 22245  		_r = f.file.pfd.Pread(b, off); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 22246  		_tuple = _r;
 22247  		n = _tuple[0];
 22248  		err = _tuple[1];
 22249  		runtime.KeepAlive(f);
 22250  		_tmp = n;
 22251  		_tmp$1 = err;
 22252  		n = _tmp;
 22253  		err = _tmp$1;
 22254  		$s = -1; return [n, err];
 22255  		/* */ } return; } if ($f === undefined) { $f = { $blk: File.ptr.prototype.pread }; } $f._r = _r; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tuple = _tuple; $f.b = b; $f.err = err; $f.f = f; $f.n = n; $f.off = off; $f.$s = $s; $f.$r = $r; return $f;
 22256  	};
 22257  	File.prototype.pread = function(b, off) { return this.$val.pread(b, off); };
 22258  	File.ptr.prototype.write = function(b) {
 22259  		var _r, _tmp, _tmp$1, _tuple, b, err, f, n, $s, $r;
 22260  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tuple = $f._tuple; b = $f.b; err = $f.err; f = $f.f; n = $f.n; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 22261  		n = 0;
 22262  		err = $ifaceNil;
 22263  		f = this;
 22264  		_r = f.file.pfd.Write(b); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 22265  		_tuple = _r;
 22266  		n = _tuple[0];
 22267  		err = _tuple[1];
 22268  		runtime.KeepAlive(f);
 22269  		_tmp = n;
 22270  		_tmp$1 = err;
 22271  		n = _tmp;
 22272  		err = _tmp$1;
 22273  		$s = -1; return [n, err];
 22274  		/* */ } return; } if ($f === undefined) { $f = { $blk: File.ptr.prototype.write }; } $f._r = _r; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tuple = _tuple; $f.b = b; $f.err = err; $f.f = f; $f.n = n; $f.$s = $s; $f.$r = $r; return $f;
 22275  	};
 22276  	File.prototype.write = function(b) { return this.$val.write(b); };
 22277  	File.ptr.prototype.pwrite = function(b, off) {
 22278  		var _r, _tmp, _tmp$1, _tuple, b, err, f, n, off, $s, $r;
 22279  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tuple = $f._tuple; b = $f.b; err = $f.err; f = $f.f; n = $f.n; off = $f.off; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 22280  		n = 0;
 22281  		err = $ifaceNil;
 22282  		f = this;
 22283  		_r = f.file.pfd.Pwrite(b, off); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 22284  		_tuple = _r;
 22285  		n = _tuple[0];
 22286  		err = _tuple[1];
 22287  		runtime.KeepAlive(f);
 22288  		_tmp = n;
 22289  		_tmp$1 = err;
 22290  		n = _tmp;
 22291  		err = _tmp$1;
 22292  		$s = -1; return [n, err];
 22293  		/* */ } return; } if ($f === undefined) { $f = { $blk: File.ptr.prototype.pwrite }; } $f._r = _r; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tuple = _tuple; $f.b = b; $f.err = err; $f.f = f; $f.n = n; $f.off = off; $f.$s = $s; $f.$r = $r; return $f;
 22294  	};
 22295  	File.prototype.pwrite = function(b, off) { return this.$val.pwrite(b, off); };
 22296  	File.ptr.prototype.seek = function(offset, whence) {
 22297  		var _r, _tmp, _tmp$1, _tuple, err, f, offset, ret, whence, $s, $r;
 22298  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tuple = $f._tuple; err = $f.err; f = $f.f; offset = $f.offset; ret = $f.ret; whence = $f.whence; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 22299  		ret = new $Int64(0, 0);
 22300  		err = $ifaceNil;
 22301  		f = this;
 22302  		_r = f.file.pfd.Seek(offset, whence); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 22303  		_tuple = _r;
 22304  		ret = _tuple[0];
 22305  		err = _tuple[1];
 22306  		runtime.KeepAlive(f);
 22307  		_tmp = ret;
 22308  		_tmp$1 = err;
 22309  		ret = _tmp;
 22310  		err = _tmp$1;
 22311  		$s = -1; return [ret, err];
 22312  		/* */ } return; } if ($f === undefined) { $f = { $blk: File.ptr.prototype.seek }; } $f._r = _r; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tuple = _tuple; $f.err = err; $f.f = f; $f.offset = offset; $f.ret = ret; $f.whence = whence; $f.$s = $s; $f.$r = $r; return $f;
 22313  	};
 22314  	File.prototype.seek = function(offset, whence) { return this.$val.seek(offset, whence); };
 22315  	Remove = function(name) {
 22316  		var e, e1, name;
 22317  		e = syscall.Unlink(name);
 22318  		if ($interfaceIsEqual(e, $ifaceNil)) {
 22319  			return $ifaceNil;
 22320  		}
 22321  		e1 = syscall.Rmdir(name);
 22322  		if ($interfaceIsEqual(e1, $ifaceNil)) {
 22323  			return $ifaceNil;
 22324  		}
 22325  		if (!($interfaceIsEqual(e1, new syscall.Errno(20)))) {
 22326  			e = e1;
 22327  		}
 22328  		return new PathError.ptr("remove", name, e);
 22329  	};
 22330  	$pkg.Remove = Remove;
 22331  	tempDir = function() {
 22332  		var _r, dir, $s, $r;
 22333  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; dir = $f.dir; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 22334  		_r = Getenv("TMPDIR"); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 22335  		dir = _r;
 22336  		if (dir === "") {
 22337  			if (false) {
 22338  				dir = "/data/local/tmp";
 22339  			} else {
 22340  				dir = "/tmp";
 22341  			}
 22342  		}
 22343  		$s = -1; return dir;
 22344  		/* */ } return; } if ($f === undefined) { $f = { $blk: tempDir }; } $f._r = _r; $f.dir = dir; $f.$s = $s; $f.$r = $r; return $f;
 22345  	};
 22346  	IsPathSeparator = function(c) {
 22347  		var c;
 22348  		return 47 === c;
 22349  	};
 22350  	$pkg.IsPathSeparator = IsPathSeparator;
 22351  	basename = function(name) {
 22352  		var i, name;
 22353  		i = name.length - 1 >> 0;
 22354  		while (true) {
 22355  			if (!(i > 0 && (name.charCodeAt(i) === 47))) { break; }
 22356  			name = $substring(name, 0, i);
 22357  			i = i - (1) >> 0;
 22358  		}
 22359  		i = i - (1) >> 0;
 22360  		while (true) {
 22361  			if (!(i >= 0)) { break; }
 22362  			if (name.charCodeAt(i) === 47) {
 22363  				name = $substring(name, (i + 1 >> 0));
 22364  				break;
 22365  			}
 22366  			i = i - (1) >> 0;
 22367  		}
 22368  		return name;
 22369  	};
 22370  	init$1 = function() {
 22371  		if (false) {
 22372  			return;
 22373  		}
 22374  		$pkg.Args = runtime_args();
 22375  	};
 22376  	Exit = function(code) {
 22377  		var code;
 22378  		if (code === 0) {
 22379  			runtime_beforeExit();
 22380  		}
 22381  		syscall.Exit(code);
 22382  	};
 22383  	$pkg.Exit = Exit;
 22384  	Stat = function(name) {
 22385  		var name, $s, $r;
 22386  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; name = $f.name; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 22387  		$r = testlog.Stat(name); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 22388  		$s = -1; return statNolog(name);
 22389  		/* */ } return; } if ($f === undefined) { $f = { $blk: Stat }; } $f.name = name; $f.$s = $s; $f.$r = $r; return $f;
 22390  	};
 22391  	$pkg.Stat = Stat;
 22392  	Lstat = function(name) {
 22393  		var name, $s, $r;
 22394  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; name = $f.name; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 22395  		$r = testlog.Stat(name); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 22396  		$s = -1; return lstatNolog(name);
 22397  		/* */ } return; } if ($f === undefined) { $f = { $blk: Lstat }; } $f.name = name; $f.$s = $s; $f.$r = $r; return $f;
 22398  	};
 22399  	$pkg.Lstat = Lstat;
 22400  	fillFileStatFromSys = function(fs, name) {
 22401  		var _1, fs, name;
 22402  		fs.name = basename(name);
 22403  		fs.size = fs.sys.Size;
 22404  		time.Time.copy(fs.modTime, timespecToTime($clone(fs.sys.Mtim, syscall.Timespec)));
 22405  		fs.mode = ((((fs.sys.Mode & 511) >>> 0) >>> 0));
 22406  		_1 = (fs.sys.Mode & 61440) >>> 0;
 22407  		if (_1 === (24576)) {
 22408  			fs.mode = (fs.mode | (67108864)) >>> 0;
 22409  		} else if (_1 === (8192)) {
 22410  			fs.mode = (fs.mode | (69206016)) >>> 0;
 22411  		} else if (_1 === (16384)) {
 22412  			fs.mode = (fs.mode | (2147483648)) >>> 0;
 22413  		} else if (_1 === (4096)) {
 22414  			fs.mode = (fs.mode | (33554432)) >>> 0;
 22415  		} else if (_1 === (40960)) {
 22416  			fs.mode = (fs.mode | (134217728)) >>> 0;
 22417  		} else if (_1 === (32768)) {
 22418  		} else if (_1 === (49152)) {
 22419  			fs.mode = (fs.mode | (16777216)) >>> 0;
 22420  		}
 22421  		if (!((((fs.sys.Mode & 1024) >>> 0) === 0))) {
 22422  			fs.mode = (fs.mode | (4194304)) >>> 0;
 22423  		}
 22424  		if (!((((fs.sys.Mode & 2048) >>> 0) === 0))) {
 22425  			fs.mode = (fs.mode | (8388608)) >>> 0;
 22426  		}
 22427  		if (!((((fs.sys.Mode & 512) >>> 0) === 0))) {
 22428  			fs.mode = (fs.mode | (1048576)) >>> 0;
 22429  		}
 22430  	};
 22431  	timespecToTime = function(ts) {
 22432  		var ts;
 22433  		return time.Unix((ts.Sec), (ts.Nsec));
 22434  	};
 22435  	File.ptr.prototype.Stat = function() {
 22436  		var _r, err, f, fs, $s, $r;
 22437  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; err = $f.err; f = $f.f; fs = $f.fs; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 22438  		fs = [fs];
 22439  		f = this;
 22440  		if (f === ptrType.nil) {
 22441  			$s = -1; return [$ifaceNil, $pkg.ErrInvalid];
 22442  		}
 22443  		fs[0] = new fileStat.ptr("", new $Int64(0, 0), 0, new time.Time.ptr(new $Uint64(0, 0), new $Int64(0, 0), ptrType$15.nil), new syscall.Stat_t.ptr(new $Uint64(0, 0), new $Uint64(0, 0), new $Uint64(0, 0), 0, 0, 0, 0, new $Uint64(0, 0), new $Int64(0, 0), new $Int64(0, 0), new $Int64(0, 0), new syscall.Timespec.ptr(new $Int64(0, 0), new $Int64(0, 0)), new syscall.Timespec.ptr(new $Int64(0, 0), new $Int64(0, 0)), new syscall.Timespec.ptr(new $Int64(0, 0), new $Int64(0, 0)), arrayType$2.zero()));
 22444  		_r = f.file.pfd.Fstat(fs[0].sys); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 22445  		err = _r;
 22446  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 22447  			$s = -1; return [$ifaceNil, new PathError.ptr("stat", f.file.name, err)];
 22448  		}
 22449  		fillFileStatFromSys(fs[0], f.file.name);
 22450  		$s = -1; return [fs[0], $ifaceNil];
 22451  		/* */ } return; } if ($f === undefined) { $f = { $blk: File.ptr.prototype.Stat }; } $f._r = _r; $f.err = err; $f.f = f; $f.fs = fs; $f.$s = $s; $f.$r = $r; return $f;
 22452  	};
 22453  	File.prototype.Stat = function() { return this.$val.Stat(); };
 22454  	statNolog = function(name) {
 22455  		var err, fs, name;
 22456  		fs = new fileStat.ptr("", new $Int64(0, 0), 0, new time.Time.ptr(new $Uint64(0, 0), new $Int64(0, 0), ptrType$15.nil), new syscall.Stat_t.ptr(new $Uint64(0, 0), new $Uint64(0, 0), new $Uint64(0, 0), 0, 0, 0, 0, new $Uint64(0, 0), new $Int64(0, 0), new $Int64(0, 0), new $Int64(0, 0), new syscall.Timespec.ptr(new $Int64(0, 0), new $Int64(0, 0)), new syscall.Timespec.ptr(new $Int64(0, 0), new $Int64(0, 0)), new syscall.Timespec.ptr(new $Int64(0, 0), new $Int64(0, 0)), arrayType$2.zero()));
 22457  		err = syscall.Stat(name, fs.sys);
 22458  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 22459  			return [$ifaceNil, new PathError.ptr("stat", name, err)];
 22460  		}
 22461  		fillFileStatFromSys(fs, name);
 22462  		return [fs, $ifaceNil];
 22463  	};
 22464  	lstatNolog = function(name) {
 22465  		var err, fs, name;
 22466  		fs = new fileStat.ptr("", new $Int64(0, 0), 0, new time.Time.ptr(new $Uint64(0, 0), new $Int64(0, 0), ptrType$15.nil), new syscall.Stat_t.ptr(new $Uint64(0, 0), new $Uint64(0, 0), new $Uint64(0, 0), 0, 0, 0, 0, new $Uint64(0, 0), new $Int64(0, 0), new $Int64(0, 0), new $Int64(0, 0), new syscall.Timespec.ptr(new $Int64(0, 0), new $Int64(0, 0)), new syscall.Timespec.ptr(new $Int64(0, 0), new $Int64(0, 0)), new syscall.Timespec.ptr(new $Int64(0, 0), new $Int64(0, 0)), arrayType$2.zero()));
 22467  		err = syscall.Lstat(name, fs.sys);
 22468  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 22469  			return [$ifaceNil, new PathError.ptr("lstat", name, err)];
 22470  		}
 22471  		fillFileStatFromSys(fs, name);
 22472  		return [fs, $ifaceNil];
 22473  	};
 22474  	Hostname = function() {
 22475  		var _r, _tuple, err, name, $s, $r;
 22476  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; err = $f.err; name = $f.name; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 22477  		name = "";
 22478  		err = $ifaceNil;
 22479  		_r = hostname(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 22480  		_tuple = _r;
 22481  		name = _tuple[0];
 22482  		err = _tuple[1];
 22483  		$s = -1; return [name, err];
 22484  		/* */ } return; } if ($f === undefined) { $f = { $blk: Hostname }; } $f._r = _r; $f._tuple = _tuple; $f.err = err; $f.name = name; $f.$s = $s; $f.$r = $r; return $f;
 22485  	};
 22486  	$pkg.Hostname = Hostname;
 22487  	hostname = function() {
 22488  		var _r, _r$1, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tuple, _tuple$1, buf, err, f, n, name, x, $s, $deferred, $r;
 22489  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tmp$4 = $f._tmp$4; _tmp$5 = $f._tmp$5; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; buf = $f.buf; err = $f.err; f = $f.f; n = $f.n; name = $f.name; x = $f.x; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
 22490  		name = "";
 22491  		err = $ifaceNil;
 22492  		_r = Open("/proc/sys/kernel/hostname"); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 22493  		_tuple = _r;
 22494  		f = _tuple[0];
 22495  		err = _tuple[1];
 22496  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 22497  			_tmp = "";
 22498  			_tmp$1 = err;
 22499  			name = _tmp;
 22500  			err = _tmp$1;
 22501  			$s = -1; return [name, err];
 22502  		}
 22503  		$deferred.push([$methodVal(f, "Close"), []]);
 22504  		buf = arrayType$4.zero();
 22505  		_r$1 = f.Read($subslice(new sliceType$2(buf), 0)); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 22506  		_tuple$1 = _r$1;
 22507  		n = _tuple$1[0];
 22508  		err = _tuple$1[1];
 22509  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 22510  			_tmp$2 = "";
 22511  			_tmp$3 = err;
 22512  			name = _tmp$2;
 22513  			err = _tmp$3;
 22514  			$s = -1; return [name, err];
 22515  		}
 22516  		if (n > 0 && ((x = n - 1 >> 0, ((x < 0 || x >= buf.length) ? ($throwRuntimeError("index out of range"), undefined) : buf[x])) === 10)) {
 22517  			n = n - (1) >> 0;
 22518  		}
 22519  		_tmp$4 = ($bytesToString($subslice(new sliceType$2(buf), 0, n)));
 22520  		_tmp$5 = $ifaceNil;
 22521  		name = _tmp$4;
 22522  		err = _tmp$5;
 22523  		$s = -1; return [name, err];
 22524  		/* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if (!$curGoroutine.asleep) { return  [name, err]; } if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: hostname }; } $f._r = _r; $f._r$1 = _r$1; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tmp$4 = _tmp$4; $f._tmp$5 = _tmp$5; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.buf = buf; $f.err = err; $f.f = f; $f.n = n; $f.name = name; $f.x = x; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
 22525  	};
 22526  	FileMode.prototype.String = function() {
 22527  		var _i, _i$1, _ref, _ref$1, _rune, _rune$1, buf, c, c$1, i, i$1, m, w, y, y$1;
 22528  		m = this.$val;
 22529  		buf = arrayType$5.zero();
 22530  		w = 0;
 22531  		_ref = "dalTLDpSugct";
 22532  		_i = 0;
 22533  		while (true) {
 22534  			if (!(_i < _ref.length)) { break; }
 22535  			_rune = $decodeRune(_ref, _i);
 22536  			i = _i;
 22537  			c = _rune[0];
 22538  			if (!((((m & (((y = (((31 - i >> 0) >>> 0)), y < 32 ? (1 << y) : 0) >>> 0))) >>> 0) === 0))) {
 22539  				((w < 0 || w >= buf.length) ? ($throwRuntimeError("index out of range"), undefined) : buf[w] = ((c << 24 >>> 24)));
 22540  				w = w + (1) >> 0;
 22541  			}
 22542  			_i += _rune[1];
 22543  		}
 22544  		if (w === 0) {
 22545  			((w < 0 || w >= buf.length) ? ($throwRuntimeError("index out of range"), undefined) : buf[w] = 45);
 22546  			w = w + (1) >> 0;
 22547  		}
 22548  		_ref$1 = "rwxrwxrwx";
 22549  		_i$1 = 0;
 22550  		while (true) {
 22551  			if (!(_i$1 < _ref$1.length)) { break; }
 22552  			_rune$1 = $decodeRune(_ref$1, _i$1);
 22553  			i$1 = _i$1;
 22554  			c$1 = _rune$1[0];
 22555  			if (!((((m & (((y$1 = (((8 - i$1 >> 0) >>> 0)), y$1 < 32 ? (1 << y$1) : 0) >>> 0))) >>> 0) === 0))) {
 22556  				((w < 0 || w >= buf.length) ? ($throwRuntimeError("index out of range"), undefined) : buf[w] = ((c$1 << 24 >>> 24)));
 22557  			} else {
 22558  				((w < 0 || w >= buf.length) ? ($throwRuntimeError("index out of range"), undefined) : buf[w] = 45);
 22559  			}
 22560  			w = w + (1) >> 0;
 22561  			_i$1 += _rune$1[1];
 22562  		}
 22563  		return ($bytesToString($subslice(new sliceType$2(buf), 0, w)));
 22564  	};
 22565  	$ptrType(FileMode).prototype.String = function() { return new FileMode(this.$get()).String(); };
 22566  	FileMode.prototype.IsDir = function() {
 22567  		var m;
 22568  		m = this.$val;
 22569  		return !((((m & 2147483648) >>> 0) === 0));
 22570  	};
 22571  	$ptrType(FileMode).prototype.IsDir = function() { return new FileMode(this.$get()).IsDir(); };
 22572  	FileMode.prototype.IsRegular = function() {
 22573  		var m;
 22574  		m = this.$val;
 22575  		return ((m & 2399141888) >>> 0) === 0;
 22576  	};
 22577  	$ptrType(FileMode).prototype.IsRegular = function() { return new FileMode(this.$get()).IsRegular(); };
 22578  	FileMode.prototype.Perm = function() {
 22579  		var m;
 22580  		m = this.$val;
 22581  		return (m & 511) >>> 0;
 22582  	};
 22583  	$ptrType(FileMode).prototype.Perm = function() { return new FileMode(this.$get()).Perm(); };
 22584  	fileStat.ptr.prototype.Name = function() {
 22585  		var fs;
 22586  		fs = this;
 22587  		return fs.name;
 22588  	};
 22589  	fileStat.prototype.Name = function() { return this.$val.Name(); };
 22590  	fileStat.ptr.prototype.IsDir = function() {
 22591  		var fs;
 22592  		fs = this;
 22593  		return new FileMode(fs.Mode()).IsDir();
 22594  	};
 22595  	fileStat.prototype.IsDir = function() { return this.$val.IsDir(); };
 22596  	fileStat.ptr.prototype.Size = function() {
 22597  		var fs;
 22598  		fs = this;
 22599  		return fs.size;
 22600  	};
 22601  	fileStat.prototype.Size = function() { return this.$val.Size(); };
 22602  	fileStat.ptr.prototype.Mode = function() {
 22603  		var fs;
 22604  		fs = this;
 22605  		return fs.mode;
 22606  	};
 22607  	fileStat.prototype.Mode = function() { return this.$val.Mode(); };
 22608  	fileStat.ptr.prototype.ModTime = function() {
 22609  		var fs;
 22610  		fs = this;
 22611  		return fs.modTime;
 22612  	};
 22613  	fileStat.prototype.ModTime = function() { return this.$val.ModTime(); };
 22614  	fileStat.ptr.prototype.Sys = function() {
 22615  		var fs;
 22616  		fs = this;
 22617  		return fs.sys;
 22618  	};
 22619  	fileStat.prototype.Sys = function() { return this.$val.Sys(); };
 22620  	ptrType$2.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Timeout", name: "Timeout", pkg: "", typ: $funcType([], [$Bool], false)}];
 22621  	ptrType$4.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Timeout", name: "Timeout", pkg: "", typ: $funcType([], [$Bool], false)}];
 22622  	ptrType$3.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}];
 22623  	ptrType$13.methods = [{prop: "close", name: "close", pkg: "os", typ: $funcType([], [$error], false)}];
 22624  	ptrType.methods = [{prop: "Readdir", name: "Readdir", pkg: "", typ: $funcType([$Int], [sliceType$1, $error], false)}, {prop: "Readdirnames", name: "Readdirnames", pkg: "", typ: $funcType([$Int], [sliceType, $error], false)}, {prop: "readdir", name: "readdir", pkg: "os", typ: $funcType([$Int], [sliceType$1, $error], false)}, {prop: "readdirnames", name: "readdirnames", pkg: "os", typ: $funcType([$Int], [sliceType, $error], false)}, {prop: "Name", name: "Name", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType$2], [$Int, $error], false)}, {prop: "ReadAt", name: "ReadAt", pkg: "", typ: $funcType([sliceType$2, $Int64], [$Int, $error], false)}, {prop: "Write", name: "Write", pkg: "", typ: $funcType([sliceType$2], [$Int, $error], false)}, {prop: "WriteAt", name: "WriteAt", pkg: "", typ: $funcType([sliceType$2, $Int64], [$Int, $error], false)}, {prop: "Seek", name: "Seek", pkg: "", typ: $funcType([$Int64, $Int], [$Int64, $error], false)}, {prop: "WriteString", name: "WriteString", pkg: "", typ: $funcType([$String], [$Int, $error], false)}, {prop: "wrapErr", name: "wrapErr", pkg: "os", typ: $funcType([$String, $error], [$error], false)}, {prop: "Chmod", name: "Chmod", pkg: "", typ: $funcType([FileMode], [$error], false)}, {prop: "SetDeadline", name: "SetDeadline", pkg: "", typ: $funcType([time.Time], [$error], false)}, {prop: "SetReadDeadline", name: "SetReadDeadline", pkg: "", typ: $funcType([time.Time], [$error], false)}, {prop: "SetWriteDeadline", name: "SetWriteDeadline", pkg: "", typ: $funcType([time.Time], [$error], false)}, {prop: "chmod", name: "chmod", pkg: "os", typ: $funcType([FileMode], [$error], false)}, {prop: "Chown", name: "Chown", pkg: "", typ: $funcType([$Int, $Int], [$error], false)}, {prop: "Truncate", name: "Truncate", pkg: "", typ: $funcType([$Int64], [$error], false)}, {prop: "Sync", name: "Sync", pkg: "", typ: $funcType([], [$error], false)}, {prop: "Chdir", name: "Chdir", pkg: "", typ: $funcType([], [$error], false)}, {prop: "setDeadline", name: "setDeadline", pkg: "os", typ: $funcType([time.Time], [$error], false)}, {prop: "setReadDeadline", name: "setReadDeadline", pkg: "os", typ: $funcType([time.Time], [$error], false)}, {prop: "setWriteDeadline", name: "setWriteDeadline", pkg: "os", typ: $funcType([time.Time], [$error], false)}, {prop: "checkValid", name: "checkValid", pkg: "os", typ: $funcType([$String], [$error], false)}, {prop: "Fd", name: "Fd", pkg: "", typ: $funcType([], [$Uintptr], false)}, {prop: "Close", name: "Close", pkg: "", typ: $funcType([], [$error], false)}, {prop: "read", name: "read", pkg: "os", typ: $funcType([sliceType$2], [$Int, $error], false)}, {prop: "pread", name: "pread", pkg: "os", typ: $funcType([sliceType$2, $Int64], [$Int, $error], false)}, {prop: "write", name: "write", pkg: "os", typ: $funcType([sliceType$2], [$Int, $error], false)}, {prop: "pwrite", name: "pwrite", pkg: "os", typ: $funcType([sliceType$2, $Int64], [$Int, $error], false)}, {prop: "seek", name: "seek", pkg: "os", typ: $funcType([$Int64, $Int], [$Int64, $error], false)}, {prop: "Stat", name: "Stat", pkg: "", typ: $funcType([], [FileInfo, $error], false)}];
 22625  	FileMode.methods = [{prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "IsDir", name: "IsDir", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "IsRegular", name: "IsRegular", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "Perm", name: "Perm", pkg: "", typ: $funcType([], [FileMode], false)}];
 22626  	ptrType$16.methods = [{prop: "Name", name: "Name", pkg: "", typ: $funcType([], [$String], false)}, {prop: "IsDir", name: "IsDir", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "Size", name: "Size", pkg: "", typ: $funcType([], [$Int64], false)}, {prop: "Mode", name: "Mode", pkg: "", typ: $funcType([], [FileMode], false)}, {prop: "ModTime", name: "ModTime", pkg: "", typ: $funcType([], [time.Time], false)}, {prop: "Sys", name: "Sys", pkg: "", typ: $funcType([], [$emptyInterface], false)}];
 22627  	timeout.init([{prop: "Timeout", name: "Timeout", pkg: "", typ: $funcType([], [$Bool], false)}]);
 22628  	PathError.init("", [{prop: "Op", name: "Op", anonymous: false, exported: true, typ: $String, tag: ""}, {prop: "Path", name: "Path", anonymous: false, exported: true, typ: $String, tag: ""}, {prop: "Err", name: "Err", anonymous: false, exported: true, typ: $error, tag: ""}]);
 22629  	SyscallError.init("", [{prop: "Syscall", name: "Syscall", anonymous: false, exported: true, typ: $String, tag: ""}, {prop: "Err", name: "Err", anonymous: false, exported: true, typ: $error, tag: ""}]);
 22630  	LinkError.init("", [{prop: "Op", name: "Op", anonymous: false, exported: true, typ: $String, tag: ""}, {prop: "Old", name: "Old", anonymous: false, exported: true, typ: $String, tag: ""}, {prop: "New", name: "New", anonymous: false, exported: true, typ: $String, tag: ""}, {prop: "Err", name: "Err", anonymous: false, exported: true, typ: $error, tag: ""}]);
 22631  	file.init("os", [{prop: "pfd", name: "pfd", anonymous: false, exported: false, typ: poll.FD, tag: ""}, {prop: "name", name: "name", anonymous: false, exported: false, typ: $String, tag: ""}, {prop: "dirinfo", name: "dirinfo", anonymous: false, exported: false, typ: ptrType$1, tag: ""}, {prop: "nonblock", name: "nonblock", anonymous: false, exported: false, typ: $Bool, tag: ""}, {prop: "stdoutOrErr", name: "stdoutOrErr", anonymous: false, exported: false, typ: $Bool, tag: ""}]);
 22632  	dirInfo.init("os", [{prop: "buf", name: "buf", anonymous: false, exported: false, typ: sliceType$2, tag: ""}, {prop: "nbuf", name: "nbuf", anonymous: false, exported: false, typ: $Int, tag: ""}, {prop: "bufp", name: "bufp", anonymous: false, exported: false, typ: $Int, tag: ""}]);
 22633  	File.init("os", [{prop: "file", name: "file", anonymous: true, exported: false, typ: ptrType$13, tag: ""}]);
 22634  	FileInfo.init([{prop: "IsDir", name: "IsDir", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "ModTime", name: "ModTime", pkg: "", typ: $funcType([], [time.Time], false)}, {prop: "Mode", name: "Mode", pkg: "", typ: $funcType([], [FileMode], false)}, {prop: "Name", name: "Name", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Size", name: "Size", pkg: "", typ: $funcType([], [$Int64], false)}, {prop: "Sys", name: "Sys", pkg: "", typ: $funcType([], [$emptyInterface], false)}]);
 22635  	fileStat.init("os", [{prop: "name", name: "name", anonymous: false, exported: false, typ: $String, tag: ""}, {prop: "size", name: "size", anonymous: false, exported: false, typ: $Int64, tag: ""}, {prop: "mode", name: "mode", anonymous: false, exported: false, typ: FileMode, tag: ""}, {prop: "modTime", name: "modTime", anonymous: false, exported: false, typ: time.Time, tag: ""}, {prop: "sys", name: "sys", anonymous: false, exported: false, typ: syscall.Stat_t, tag: ""}]);
 22636  	$init = function() {
 22637  		$pkg.$init = function() {};
 22638  		/* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 22639  		$r = errors.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 22640  		$r = js.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 22641  		$r = poll.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 22642  		$r = testlog.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 22643  		$r = io.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 22644  		$r = runtime.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 22645  		$r = sync.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 22646  		$r = atomic.$init(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 22647  		$r = syscall.$init(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 22648  		$r = time.$init(); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 22649  		$pkg.Args = sliceType.nil;
 22650  		$pkg.ErrInvalid = errors.New("invalid argument");
 22651  		$pkg.ErrPermission = errors.New("permission denied");
 22652  		$pkg.ErrExist = errors.New("file already exists");
 22653  		$pkg.ErrNotExist = errors.New("file does not exist");
 22654  		$pkg.ErrClosed = errors.New("file already closed");
 22655  		errFinished = errors.New("os: process already finished");
 22656  		$pkg.Stdin = NewFile(((syscall.Stdin >>> 0)), "/dev/stdin");
 22657  		$pkg.Stdout = NewFile(((syscall.Stdout >>> 0)), "/dev/stdout");
 22658  		$pkg.Stderr = NewFile(((syscall.Stderr >>> 0)), "/dev/stderr");
 22659  		lstat = Lstat;
 22660  		init();
 22661  		init$1();
 22662  		/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
 22663  	};
 22664  	$pkg.$init = $init;
 22665  	return $pkg;
 22666  })();
 22667  $packages["fmt"] = (function() {
 22668  	var $pkg = {}, $init, errors, io, math, os, reflect, strconv, sync, utf8, fmtFlags, fmt, State, Formatter, Stringer, GoStringer, buffer, pp, ScanState, scanError, ss, ssave, sliceType, ptrType, ptrType$1, arrayType, arrayType$1, sliceType$1, sliceType$2, arrayType$2, ptrType$2, ptrType$5, ptrType$25, funcType, ppFree, space, ssFree, complexError, boolError, newPrinter, Fprintf, Sprintf, Errorf, Fprint, Sprint, Fprintln, Println, Sprintln, getField, tooLarge, parsenum, intFromArg, parseArgNumber, isSpace, notSpace, indexRune;
 22669  	errors = $packages["errors"];
 22670  	io = $packages["io"];
 22671  	math = $packages["math"];
 22672  	os = $packages["os"];
 22673  	reflect = $packages["reflect"];
 22674  	strconv = $packages["strconv"];
 22675  	sync = $packages["sync"];
 22676  	utf8 = $packages["unicode/utf8"];
 22677  	fmtFlags = $pkg.fmtFlags = $newType(0, $kindStruct, "fmt.fmtFlags", true, "fmt", false, function(widPresent_, precPresent_, minus_, plus_, sharp_, space_, zero_, plusV_, sharpV_) {
 22678  		this.$val = this;
 22679  		if (arguments.length === 0) {
 22680  			this.widPresent = false;
 22681  			this.precPresent = false;
 22682  			this.minus = false;
 22683  			this.plus = false;
 22684  			this.sharp = false;
 22685  			this.space = false;
 22686  			this.zero = false;
 22687  			this.plusV = false;
 22688  			this.sharpV = false;
 22689  			return;
 22690  		}
 22691  		this.widPresent = widPresent_;
 22692  		this.precPresent = precPresent_;
 22693  		this.minus = minus_;
 22694  		this.plus = plus_;
 22695  		this.sharp = sharp_;
 22696  		this.space = space_;
 22697  		this.zero = zero_;
 22698  		this.plusV = plusV_;
 22699  		this.sharpV = sharpV_;
 22700  	});
 22701  	fmt = $pkg.fmt = $newType(0, $kindStruct, "fmt.fmt", true, "fmt", false, function(buf_, fmtFlags_, wid_, prec_, intbuf_) {
 22702  		this.$val = this;
 22703  		if (arguments.length === 0) {
 22704  			this.buf = ptrType$1.nil;
 22705  			this.fmtFlags = new fmtFlags.ptr(false, false, false, false, false, false, false, false, false);
 22706  			this.wid = 0;
 22707  			this.prec = 0;
 22708  			this.intbuf = arrayType.zero();
 22709  			return;
 22710  		}
 22711  		this.buf = buf_;
 22712  		this.fmtFlags = fmtFlags_;
 22713  		this.wid = wid_;
 22714  		this.prec = prec_;
 22715  		this.intbuf = intbuf_;
 22716  	});
 22717  	State = $pkg.State = $newType(8, $kindInterface, "fmt.State", true, "fmt", true, null);
 22718  	Formatter = $pkg.Formatter = $newType(8, $kindInterface, "fmt.Formatter", true, "fmt", true, null);
 22719  	Stringer = $pkg.Stringer = $newType(8, $kindInterface, "fmt.Stringer", true, "fmt", true, null);
 22720  	GoStringer = $pkg.GoStringer = $newType(8, $kindInterface, "fmt.GoStringer", true, "fmt", true, null);
 22721  	buffer = $pkg.buffer = $newType(12, $kindSlice, "fmt.buffer", true, "fmt", false, null);
 22722  	pp = $pkg.pp = $newType(0, $kindStruct, "fmt.pp", true, "fmt", false, function(buf_, arg_, value_, fmt_, reordered_, goodArgNum_, panicking_, erroring_) {
 22723  		this.$val = this;
 22724  		if (arguments.length === 0) {
 22725  			this.buf = buffer.nil;
 22726  			this.arg = $ifaceNil;
 22727  			this.value = new reflect.Value.ptr(ptrType.nil, 0, 0);
 22728  			this.fmt = new fmt.ptr(ptrType$1.nil, new fmtFlags.ptr(false, false, false, false, false, false, false, false, false), 0, 0, arrayType.zero());
 22729  			this.reordered = false;
 22730  			this.goodArgNum = false;
 22731  			this.panicking = false;
 22732  			this.erroring = false;
 22733  			return;
 22734  		}
 22735  		this.buf = buf_;
 22736  		this.arg = arg_;
 22737  		this.value = value_;
 22738  		this.fmt = fmt_;
 22739  		this.reordered = reordered_;
 22740  		this.goodArgNum = goodArgNum_;
 22741  		this.panicking = panicking_;
 22742  		this.erroring = erroring_;
 22743  	});
 22744  	ScanState = $pkg.ScanState = $newType(8, $kindInterface, "fmt.ScanState", true, "fmt", true, null);
 22745  	scanError = $pkg.scanError = $newType(0, $kindStruct, "fmt.scanError", true, "fmt", false, function(err_) {
 22746  		this.$val = this;
 22747  		if (arguments.length === 0) {
 22748  			this.err = $ifaceNil;
 22749  			return;
 22750  		}
 22751  		this.err = err_;
 22752  	});
 22753  	ss = $pkg.ss = $newType(0, $kindStruct, "fmt.ss", true, "fmt", false, function(rs_, buf_, count_, atEOF_, ssave_) {
 22754  		this.$val = this;
 22755  		if (arguments.length === 0) {
 22756  			this.rs = $ifaceNil;
 22757  			this.buf = buffer.nil;
 22758  			this.count = 0;
 22759  			this.atEOF = false;
 22760  			this.ssave = new ssave.ptr(false, false, false, 0, 0, 0);
 22761  			return;
 22762  		}
 22763  		this.rs = rs_;
 22764  		this.buf = buf_;
 22765  		this.count = count_;
 22766  		this.atEOF = atEOF_;
 22767  		this.ssave = ssave_;
 22768  	});
 22769  	ssave = $pkg.ssave = $newType(0, $kindStruct, "fmt.ssave", true, "fmt", false, function(validSave_, nlIsEnd_, nlIsSpace_, argLimit_, limit_, maxWid_) {
 22770  		this.$val = this;
 22771  		if (arguments.length === 0) {
 22772  			this.validSave = false;
 22773  			this.nlIsEnd = false;
 22774  			this.nlIsSpace = false;
 22775  			this.argLimit = 0;
 22776  			this.limit = 0;
 22777  			this.maxWid = 0;
 22778  			return;
 22779  		}
 22780  		this.validSave = validSave_;
 22781  		this.nlIsEnd = nlIsEnd_;
 22782  		this.nlIsSpace = nlIsSpace_;
 22783  		this.argLimit = argLimit_;
 22784  		this.limit = limit_;
 22785  		this.maxWid = maxWid_;
 22786  	});
 22787  	sliceType = $sliceType($emptyInterface);
 22788  	ptrType = $ptrType(reflect.rtype);
 22789  	ptrType$1 = $ptrType(buffer);
 22790  	arrayType = $arrayType($Uint8, 68);
 22791  	arrayType$1 = $arrayType($Uint16, 2);
 22792  	sliceType$1 = $sliceType(arrayType$1);
 22793  	sliceType$2 = $sliceType($Uint8);
 22794  	arrayType$2 = $arrayType($Uint8, 5);
 22795  	ptrType$2 = $ptrType(pp);
 22796  	ptrType$5 = $ptrType(ss);
 22797  	ptrType$25 = $ptrType(fmt);
 22798  	funcType = $funcType([$Int32], [$Bool], false);
 22799  	fmt.ptr.prototype.clearflags = function() {
 22800  		var f;
 22801  		f = this;
 22802  		fmtFlags.copy(f.fmtFlags, new fmtFlags.ptr(false, false, false, false, false, false, false, false, false));
 22803  	};
 22804  	fmt.prototype.clearflags = function() { return this.$val.clearflags(); };
 22805  	fmt.ptr.prototype.init = function(buf) {
 22806  		var buf, f;
 22807  		f = this;
 22808  		f.buf = buf;
 22809  		f.clearflags();
 22810  	};
 22811  	fmt.prototype.init = function(buf) { return this.$val.init(buf); };
 22812  	fmt.ptr.prototype.writePadding = function(n) {
 22813  		var _i, _ref, buf, f, i, n, newLen, oldLen, padByte, padding;
 22814  		f = this;
 22815  		if (n <= 0) {
 22816  			return;
 22817  		}
 22818  		buf = f.buf.$get();
 22819  		oldLen = buf.$length;
 22820  		newLen = oldLen + n >> 0;
 22821  		if (newLen > buf.$capacity) {
 22822  			buf = $makeSlice(buffer, (($imul(buf.$capacity, 2)) + n >> 0));
 22823  			$copySlice(buf, f.buf.$get());
 22824  		}
 22825  		padByte = 32;
 22826  		if (f.fmtFlags.zero) {
 22827  			padByte = 48;
 22828  		}
 22829  		padding = $subslice(buf, oldLen, newLen);
 22830  		_ref = padding;
 22831  		_i = 0;
 22832  		while (true) {
 22833  			if (!(_i < _ref.$length)) { break; }
 22834  			i = _i;
 22835  			((i < 0 || i >= padding.$length) ? ($throwRuntimeError("index out of range"), undefined) : padding.$array[padding.$offset + i] = padByte);
 22836  			_i++;
 22837  		}
 22838  		f.buf.$set($subslice(buf, 0, newLen));
 22839  	};
 22840  	fmt.prototype.writePadding = function(n) { return this.$val.writePadding(n); };
 22841  	fmt.ptr.prototype.pad = function(b) {
 22842  		var b, f, width;
 22843  		f = this;
 22844  		if (!f.fmtFlags.widPresent || (f.wid === 0)) {
 22845  			f.buf.Write(b);
 22846  			return;
 22847  		}
 22848  		width = f.wid - utf8.RuneCount(b) >> 0;
 22849  		if (!f.fmtFlags.minus) {
 22850  			f.writePadding(width);
 22851  			f.buf.Write(b);
 22852  		} else {
 22853  			f.buf.Write(b);
 22854  			f.writePadding(width);
 22855  		}
 22856  	};
 22857  	fmt.prototype.pad = function(b) { return this.$val.pad(b); };
 22858  	fmt.ptr.prototype.padString = function(s) {
 22859  		var f, s, width;
 22860  		f = this;
 22861  		if (!f.fmtFlags.widPresent || (f.wid === 0)) {
 22862  			f.buf.WriteString(s);
 22863  			return;
 22864  		}
 22865  		width = f.wid - utf8.RuneCountInString(s) >> 0;
 22866  		if (!f.fmtFlags.minus) {
 22867  			f.writePadding(width);
 22868  			f.buf.WriteString(s);
 22869  		} else {
 22870  			f.buf.WriteString(s);
 22871  			f.writePadding(width);
 22872  		}
 22873  	};
 22874  	fmt.prototype.padString = function(s) { return this.$val.padString(s); };
 22875  	fmt.ptr.prototype.fmt_boolean = function(v) {
 22876  		var f, v;
 22877  		f = this;
 22878  		if (v) {
 22879  			f.padString("true");
 22880  		} else {
 22881  			f.padString("false");
 22882  		}
 22883  	};
 22884  	fmt.prototype.fmt_boolean = function(v) { return this.$val.fmt_boolean(v); };
 22885  	fmt.ptr.prototype.fmt_unicode = function(u) {
 22886  		var buf, f, i, oldZero, prec, u, width;
 22887  		f = this;
 22888  		buf = $subslice(new sliceType$2(f.intbuf), 0);
 22889  		prec = 4;
 22890  		if (f.fmtFlags.precPresent && f.prec > 4) {
 22891  			prec = f.prec;
 22892  			width = (((2 + prec >> 0) + 2 >> 0) + 4 >> 0) + 1 >> 0;
 22893  			if (width > buf.$length) {
 22894  				buf = $makeSlice(sliceType$2, width);
 22895  			}
 22896  		}
 22897  		i = buf.$length;
 22898  		if (f.fmtFlags.sharp && (u.$high < 0 || (u.$high === 0 && u.$low <= 1114111)) && strconv.IsPrint(((u.$low >> 0)))) {
 22899  			i = i - (1) >> 0;
 22900  			((i < 0 || i >= buf.$length) ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + i] = 39);
 22901  			i = i - (utf8.RuneLen(((u.$low >> 0)))) >> 0;
 22902  			utf8.EncodeRune($subslice(buf, i), ((u.$low >> 0)));
 22903  			i = i - (1) >> 0;
 22904  			((i < 0 || i >= buf.$length) ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + i] = 39);
 22905  			i = i - (1) >> 0;
 22906  			((i < 0 || i >= buf.$length) ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + i] = 32);
 22907  		}
 22908  		while (true) {
 22909  			if (!((u.$high > 0 || (u.$high === 0 && u.$low >= 16)))) { break; }
 22910  			i = i - (1) >> 0;
 22911  			((i < 0 || i >= buf.$length) ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + i] = "0123456789ABCDEFX".charCodeAt($flatten64(new $Uint64(u.$high & 0, (u.$low & 15) >>> 0))));
 22912  			prec = prec - (1) >> 0;
 22913  			u = $shiftRightUint64(u, (4));
 22914  		}
 22915  		i = i - (1) >> 0;
 22916  		((i < 0 || i >= buf.$length) ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + i] = "0123456789ABCDEFX".charCodeAt($flatten64(u)));
 22917  		prec = prec - (1) >> 0;
 22918  		while (true) {
 22919  			if (!(prec > 0)) { break; }
 22920  			i = i - (1) >> 0;
 22921  			((i < 0 || i >= buf.$length) ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + i] = 48);
 22922  			prec = prec - (1) >> 0;
 22923  		}
 22924  		i = i - (1) >> 0;
 22925  		((i < 0 || i >= buf.$length) ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + i] = 43);
 22926  		i = i - (1) >> 0;
 22927  		((i < 0 || i >= buf.$length) ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + i] = 85);
 22928  		oldZero = f.fmtFlags.zero;
 22929  		f.fmtFlags.zero = false;
 22930  		f.pad($subslice(buf, i));
 22931  		f.fmtFlags.zero = oldZero;
 22932  	};
 22933  	fmt.prototype.fmt_unicode = function(u) { return this.$val.fmt_unicode(u); };
 22934  	fmt.ptr.prototype.fmt_integer = function(u, base, isSigned, digits) {
 22935  		var _1, _2, base, buf, digits, f, i, isSigned, negative, next, oldZero, oldZero$1, prec, u, width, x, x$1, x$2, x$3, x$4;
 22936  		f = this;
 22937  		negative = isSigned && (x = (new $Int64(u.$high, u.$low)), (x.$high < 0 || (x.$high === 0 && x.$low < 0)));
 22938  		if (negative) {
 22939  			u = new $Uint64(-u.$high, -u.$low);
 22940  		}
 22941  		buf = $subslice(new sliceType$2(f.intbuf), 0);
 22942  		if (f.fmtFlags.widPresent || f.fmtFlags.precPresent) {
 22943  			width = (3 + f.wid >> 0) + f.prec >> 0;
 22944  			if (width > buf.$length) {
 22945  				buf = $makeSlice(sliceType$2, width);
 22946  			}
 22947  		}
 22948  		prec = 0;
 22949  		if (f.fmtFlags.precPresent) {
 22950  			prec = f.prec;
 22951  			if ((prec === 0) && (u.$high === 0 && u.$low === 0)) {
 22952  				oldZero = f.fmtFlags.zero;
 22953  				f.fmtFlags.zero = false;
 22954  				f.writePadding(f.wid);
 22955  				f.fmtFlags.zero = oldZero;
 22956  				return;
 22957  			}
 22958  		} else if (f.fmtFlags.zero && f.fmtFlags.widPresent) {
 22959  			prec = f.wid;
 22960  			if (negative || f.fmtFlags.plus || f.fmtFlags.space) {
 22961  				prec = prec - (1) >> 0;
 22962  			}
 22963  		}
 22964  		i = buf.$length;
 22965  		_1 = base;
 22966  		if (_1 === (10)) {
 22967  			while (true) {
 22968  				if (!((u.$high > 0 || (u.$high === 0 && u.$low >= 10)))) { break; }
 22969  				i = i - (1) >> 0;
 22970  				next = $div64(u, new $Uint64(0, 10), false);
 22971  				((i < 0 || i >= buf.$length) ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + i] = (((x$1 = new $Uint64(0 + u.$high, 48 + u.$low), x$2 = $mul64(next, new $Uint64(0, 10)), new $Uint64(x$1.$high - x$2.$high, x$1.$low - x$2.$low)).$low << 24 >>> 24)));
 22972  				u = next;
 22973  			}
 22974  		} else if (_1 === (16)) {
 22975  			while (true) {
 22976  				if (!((u.$high > 0 || (u.$high === 0 && u.$low >= 16)))) { break; }
 22977  				i = i - (1) >> 0;
 22978  				((i < 0 || i >= buf.$length) ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + i] = digits.charCodeAt($flatten64(new $Uint64(u.$high & 0, (u.$low & 15) >>> 0))));
 22979  				u = $shiftRightUint64(u, (4));
 22980  			}
 22981  		} else if (_1 === (8)) {
 22982  			while (true) {
 22983  				if (!((u.$high > 0 || (u.$high === 0 && u.$low >= 8)))) { break; }
 22984  				i = i - (1) >> 0;
 22985  				((i < 0 || i >= buf.$length) ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + i] = (((x$3 = new $Uint64(u.$high & 0, (u.$low & 7) >>> 0), new $Uint64(0 + x$3.$high, 48 + x$3.$low)).$low << 24 >>> 24)));
 22986  				u = $shiftRightUint64(u, (3));
 22987  			}
 22988  		} else if (_1 === (2)) {
 22989  			while (true) {
 22990  				if (!((u.$high > 0 || (u.$high === 0 && u.$low >= 2)))) { break; }
 22991  				i = i - (1) >> 0;
 22992  				((i < 0 || i >= buf.$length) ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + i] = (((x$4 = new $Uint64(u.$high & 0, (u.$low & 1) >>> 0), new $Uint64(0 + x$4.$high, 48 + x$4.$low)).$low << 24 >>> 24)));
 22993  				u = $shiftRightUint64(u, (1));
 22994  			}
 22995  		} else {
 22996  			$panic(new $String("fmt: unknown base; can't happen"));
 22997  		}
 22998  		i = i - (1) >> 0;
 22999  		((i < 0 || i >= buf.$length) ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + i] = digits.charCodeAt($flatten64(u)));
 23000  		while (true) {
 23001  			if (!(i > 0 && prec > (buf.$length - i >> 0))) { break; }
 23002  			i = i - (1) >> 0;
 23003  			((i < 0 || i >= buf.$length) ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + i] = 48);
 23004  		}
 23005  		if (f.fmtFlags.sharp) {
 23006  			_2 = base;
 23007  			if (_2 === (8)) {
 23008  				if (!((((i < 0 || i >= buf.$length) ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + i]) === 48))) {
 23009  					i = i - (1) >> 0;
 23010  					((i < 0 || i >= buf.$length) ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + i] = 48);
 23011  				}
 23012  			} else if (_2 === (16)) {
 23013  				i = i - (1) >> 0;
 23014  				((i < 0 || i >= buf.$length) ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + i] = digits.charCodeAt(16));
 23015  				i = i - (1) >> 0;
 23016  				((i < 0 || i >= buf.$length) ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + i] = 48);
 23017  			}
 23018  		}
 23019  		if (negative) {
 23020  			i = i - (1) >> 0;
 23021  			((i < 0 || i >= buf.$length) ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + i] = 45);
 23022  		} else if (f.fmtFlags.plus) {
 23023  			i = i - (1) >> 0;
 23024  			((i < 0 || i >= buf.$length) ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + i] = 43);
 23025  		} else if (f.fmtFlags.space) {
 23026  			i = i - (1) >> 0;
 23027  			((i < 0 || i >= buf.$length) ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + i] = 32);
 23028  		}
 23029  		oldZero$1 = f.fmtFlags.zero;
 23030  		f.fmtFlags.zero = false;
 23031  		f.pad($subslice(buf, i));
 23032  		f.fmtFlags.zero = oldZero$1;
 23033  	};
 23034  	fmt.prototype.fmt_integer = function(u, base, isSigned, digits) { return this.$val.fmt_integer(u, base, isSigned, digits); };
 23035  	fmt.ptr.prototype.truncate = function(s) {
 23036  		var _i, _ref, _rune, f, i, n, s;
 23037  		f = this;
 23038  		if (f.fmtFlags.precPresent) {
 23039  			n = f.prec;
 23040  			_ref = s;
 23041  			_i = 0;
 23042  			while (true) {
 23043  				if (!(_i < _ref.length)) { break; }
 23044  				_rune = $decodeRune(_ref, _i);
 23045  				i = _i;
 23046  				n = n - (1) >> 0;
 23047  				if (n < 0) {
 23048  					return $substring(s, 0, i);
 23049  				}
 23050  				_i += _rune[1];
 23051  			}
 23052  		}
 23053  		return s;
 23054  	};
 23055  	fmt.prototype.truncate = function(s) { return this.$val.truncate(s); };
 23056  	fmt.ptr.prototype.fmt_s = function(s) {
 23057  		var f, s;
 23058  		f = this;
 23059  		s = f.truncate(s);
 23060  		f.padString(s);
 23061  	};
 23062  	fmt.prototype.fmt_s = function(s) { return this.$val.fmt_s(s); };
 23063  	fmt.ptr.prototype.fmt_sbx = function(s, b, digits) {
 23064  		var b, buf, c, digits, f, i, length, s, width;
 23065  		f = this;
 23066  		length = b.$length;
 23067  		if (b === sliceType$2.nil) {
 23068  			length = s.length;
 23069  		}
 23070  		if (f.fmtFlags.precPresent && f.prec < length) {
 23071  			length = f.prec;
 23072  		}
 23073  		width = $imul(2, length);
 23074  		if (width > 0) {
 23075  			if (f.fmtFlags.space) {
 23076  				if (f.fmtFlags.sharp) {
 23077  					width = $imul(width, (2));
 23078  				}
 23079  				width = width + ((length - 1 >> 0)) >> 0;
 23080  			} else if (f.fmtFlags.sharp) {
 23081  				width = width + (2) >> 0;
 23082  			}
 23083  		} else {
 23084  			if (f.fmtFlags.widPresent) {
 23085  				f.writePadding(f.wid);
 23086  			}
 23087  			return;
 23088  		}
 23089  		if (f.fmtFlags.widPresent && f.wid > width && !f.fmtFlags.minus) {
 23090  			f.writePadding(f.wid - width >> 0);
 23091  		}
 23092  		buf = f.buf.$get();
 23093  		if (f.fmtFlags.sharp) {
 23094  			buf = $append(buf, 48, digits.charCodeAt(16));
 23095  		}
 23096  		c = 0;
 23097  		i = 0;
 23098  		while (true) {
 23099  			if (!(i < length)) { break; }
 23100  			if (f.fmtFlags.space && i > 0) {
 23101  				buf = $append(buf, 32);
 23102  				if (f.fmtFlags.sharp) {
 23103  					buf = $append(buf, 48, digits.charCodeAt(16));
 23104  				}
 23105  			}
 23106  			if (!(b === sliceType$2.nil)) {
 23107  				c = ((i < 0 || i >= b.$length) ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + i]);
 23108  			} else {
 23109  				c = s.charCodeAt(i);
 23110  			}
 23111  			buf = $append(buf, digits.charCodeAt((c >>> 4 << 24 >>> 24)), digits.charCodeAt(((c & 15) >>> 0)));
 23112  			i = i + (1) >> 0;
 23113  		}
 23114  		f.buf.$set(buf);
 23115  		if (f.fmtFlags.widPresent && f.wid > width && f.fmtFlags.minus) {
 23116  			f.writePadding(f.wid - width >> 0);
 23117  		}
 23118  	};
 23119  	fmt.prototype.fmt_sbx = function(s, b, digits) { return this.$val.fmt_sbx(s, b, digits); };
 23120  	fmt.ptr.prototype.fmt_sx = function(s, digits) {
 23121  		var digits, f, s;
 23122  		f = this;
 23123  		f.fmt_sbx(s, sliceType$2.nil, digits);
 23124  	};
 23125  	fmt.prototype.fmt_sx = function(s, digits) { return this.$val.fmt_sx(s, digits); };
 23126  	fmt.ptr.prototype.fmt_bx = function(b, digits) {
 23127  		var b, digits, f;
 23128  		f = this;
 23129  		f.fmt_sbx("", b, digits);
 23130  	};
 23131  	fmt.prototype.fmt_bx = function(b, digits) { return this.$val.fmt_bx(b, digits); };
 23132  	fmt.ptr.prototype.fmt_q = function(s) {
 23133  		var buf, f, s;
 23134  		f = this;
 23135  		s = f.truncate(s);
 23136  		if (f.fmtFlags.sharp && strconv.CanBackquote(s)) {
 23137  			f.padString("`" + s + "`");
 23138  			return;
 23139  		}
 23140  		buf = $subslice(new sliceType$2(f.intbuf), 0, 0);
 23141  		if (f.fmtFlags.plus) {
 23142  			f.pad(strconv.AppendQuoteToASCII(buf, s));
 23143  		} else {
 23144  			f.pad(strconv.AppendQuote(buf, s));
 23145  		}
 23146  	};
 23147  	fmt.prototype.fmt_q = function(s) { return this.$val.fmt_q(s); };
 23148  	fmt.ptr.prototype.fmt_c = function(c) {
 23149  		var buf, c, f, r, w;
 23150  		f = this;
 23151  		r = ((c.$low >> 0));
 23152  		if ((c.$high > 0 || (c.$high === 0 && c.$low > 1114111))) {
 23153  			r = 65533;
 23154  		}
 23155  		buf = $subslice(new sliceType$2(f.intbuf), 0, 0);
 23156  		w = utf8.EncodeRune($subslice(buf, 0, 4), r);
 23157  		f.pad($subslice(buf, 0, w));
 23158  	};
 23159  	fmt.prototype.fmt_c = function(c) { return this.$val.fmt_c(c); };
 23160  	fmt.ptr.prototype.fmt_qc = function(c) {
 23161  		var buf, c, f, r;
 23162  		f = this;
 23163  		r = ((c.$low >> 0));
 23164  		if ((c.$high > 0 || (c.$high === 0 && c.$low > 1114111))) {
 23165  			r = 65533;
 23166  		}
 23167  		buf = $subslice(new sliceType$2(f.intbuf), 0, 0);
 23168  		if (f.fmtFlags.plus) {
 23169  			f.pad(strconv.AppendQuoteRuneToASCII(buf, r));
 23170  		} else {
 23171  			f.pad(strconv.AppendQuoteRune(buf, r));
 23172  		}
 23173  	};
 23174  	fmt.prototype.fmt_qc = function(c) { return this.$val.fmt_qc(c); };
 23175  	fmt.ptr.prototype.fmt_float = function(v, size, verb, prec) {
 23176  		var _1, _2, digits, f, hasDecimalPoint, i, num, oldZero, prec, size, tail, tailBuf, v, verb;
 23177  		f = this;
 23178  		if (f.fmtFlags.precPresent) {
 23179  			prec = f.prec;
 23180  		}
 23181  		num = strconv.AppendFloat($subslice(new sliceType$2(f.intbuf), 0, 1), v, ((verb << 24 >>> 24)), prec, size);
 23182  		if (((1 >= num.$length ? ($throwRuntimeError("index out of range"), undefined) : num.$array[num.$offset + 1]) === 45) || ((1 >= num.$length ? ($throwRuntimeError("index out of range"), undefined) : num.$array[num.$offset + 1]) === 43)) {
 23183  			num = $subslice(num, 1);
 23184  		} else {
 23185  			(0 >= num.$length ? ($throwRuntimeError("index out of range"), undefined) : num.$array[num.$offset + 0] = 43);
 23186  		}
 23187  		if (f.fmtFlags.space && ((0 >= num.$length ? ($throwRuntimeError("index out of range"), undefined) : num.$array[num.$offset + 0]) === 43) && !f.fmtFlags.plus) {
 23188  			(0 >= num.$length ? ($throwRuntimeError("index out of range"), undefined) : num.$array[num.$offset + 0] = 32);
 23189  		}
 23190  		if (((1 >= num.$length ? ($throwRuntimeError("index out of range"), undefined) : num.$array[num.$offset + 1]) === 73) || ((1 >= num.$length ? ($throwRuntimeError("index out of range"), undefined) : num.$array[num.$offset + 1]) === 78)) {
 23191  			oldZero = f.fmtFlags.zero;
 23192  			f.fmtFlags.zero = false;
 23193  			if (((1 >= num.$length ? ($throwRuntimeError("index out of range"), undefined) : num.$array[num.$offset + 1]) === 78) && !f.fmtFlags.space && !f.fmtFlags.plus) {
 23194  				num = $subslice(num, 1);
 23195  			}
 23196  			f.pad(num);
 23197  			f.fmtFlags.zero = oldZero;
 23198  			return;
 23199  		}
 23200  		if (f.fmtFlags.sharp && !((verb === 98))) {
 23201  			digits = 0;
 23202  			_1 = verb;
 23203  			if ((_1 === (118)) || (_1 === (103)) || (_1 === (71))) {
 23204  				digits = prec;
 23205  				if (digits === -1) {
 23206  					digits = 6;
 23207  				}
 23208  			}
 23209  			tailBuf = arrayType$2.zero();
 23210  			tail = $subslice(new sliceType$2(tailBuf), 0, 0);
 23211  			hasDecimalPoint = false;
 23212  			i = 1;
 23213  			while (true) {
 23214  				if (!(i < num.$length)) { break; }
 23215  				_2 = ((i < 0 || i >= num.$length) ? ($throwRuntimeError("index out of range"), undefined) : num.$array[num.$offset + i]);
 23216  				if (_2 === (46)) {
 23217  					hasDecimalPoint = true;
 23218  				} else if ((_2 === (101)) || (_2 === (69))) {
 23219  					tail = $appendSlice(tail, $subslice(num, i));
 23220  					num = $subslice(num, 0, i);
 23221  				} else {
 23222  					digits = digits - (1) >> 0;
 23223  				}
 23224  				i = i + (1) >> 0;
 23225  			}
 23226  			if (!hasDecimalPoint) {
 23227  				num = $append(num, 46);
 23228  			}
 23229  			while (true) {
 23230  				if (!(digits > 0)) { break; }
 23231  				num = $append(num, 48);
 23232  				digits = digits - (1) >> 0;
 23233  			}
 23234  			num = $appendSlice(num, tail);
 23235  		}
 23236  		if (f.fmtFlags.plus || !(((0 >= num.$length ? ($throwRuntimeError("index out of range"), undefined) : num.$array[num.$offset + 0]) === 43))) {
 23237  			if (f.fmtFlags.zero && f.fmtFlags.widPresent && f.wid > num.$length) {
 23238  				f.buf.WriteByte((0 >= num.$length ? ($throwRuntimeError("index out of range"), undefined) : num.$array[num.$offset + 0]));
 23239  				f.writePadding(f.wid - num.$length >> 0);
 23240  				f.buf.Write($subslice(num, 1));
 23241  				return;
 23242  			}
 23243  			f.pad(num);
 23244  			return;
 23245  		}
 23246  		f.pad($subslice(num, 1));
 23247  	};
 23248  	fmt.prototype.fmt_float = function(v, size, verb, prec) { return this.$val.fmt_float(v, size, verb, prec); };
 23249  	$ptrType(buffer).prototype.Write = function(p) {
 23250  		var b, p;
 23251  		b = this;
 23252  		b.$set($appendSlice(b.$get(), p));
 23253  	};
 23254  	$ptrType(buffer).prototype.WriteString = function(s) {
 23255  		var b, s;
 23256  		b = this;
 23257  		b.$set($appendSlice(b.$get(), s));
 23258  	};
 23259  	$ptrType(buffer).prototype.WriteByte = function(c) {
 23260  		var b, c;
 23261  		b = this;
 23262  		b.$set($append(b.$get(), c));
 23263  	};
 23264  	$ptrType(buffer).prototype.WriteRune = function(r) {
 23265  		var b, bp, n, r, w, x;
 23266  		bp = this;
 23267  		if (r < 128) {
 23268  			bp.$set($append(bp.$get(), ((r << 24 >>> 24))));
 23269  			return;
 23270  		}
 23271  		b = bp.$get();
 23272  		n = b.$length;
 23273  		while (true) {
 23274  			if (!((n + 4 >> 0) > b.$capacity)) { break; }
 23275  			b = $append(b, 0);
 23276  		}
 23277  		w = utf8.EncodeRune((x = $subslice(b, n, (n + 4 >> 0)), $subslice(new sliceType$2(x.$array), x.$offset, x.$offset + x.$length)), r);
 23278  		bp.$set($subslice(b, 0, (n + w >> 0)));
 23279  	};
 23280  	newPrinter = function() {
 23281  		var _r, p, $s, $r;
 23282  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; p = $f.p; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 23283  		_r = ppFree.Get(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 23284  		p = $assertType(_r, ptrType$2);
 23285  		p.panicking = false;
 23286  		p.erroring = false;
 23287  		p.fmt.init((p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))));
 23288  		$s = -1; return p;
 23289  		/* */ } return; } if ($f === undefined) { $f = { $blk: newPrinter }; } $f._r = _r; $f.p = p; $f.$s = $s; $f.$r = $r; return $f;
 23290  	};
 23291  	pp.ptr.prototype.free = function() {
 23292  		var p;
 23293  		p = this;
 23294  		p.buf = $subslice(p.buf, 0, 0);
 23295  		p.arg = $ifaceNil;
 23296  		p.value = new reflect.Value.ptr(ptrType.nil, 0, 0);
 23297  		ppFree.Put(p);
 23298  	};
 23299  	pp.prototype.free = function() { return this.$val.free(); };
 23300  	pp.ptr.prototype.Width = function() {
 23301  		var _tmp, _tmp$1, ok, p, wid;
 23302  		wid = 0;
 23303  		ok = false;
 23304  		p = this;
 23305  		_tmp = p.fmt.wid;
 23306  		_tmp$1 = p.fmt.fmtFlags.widPresent;
 23307  		wid = _tmp;
 23308  		ok = _tmp$1;
 23309  		return [wid, ok];
 23310  	};
 23311  	pp.prototype.Width = function() { return this.$val.Width(); };
 23312  	pp.ptr.prototype.Precision = function() {
 23313  		var _tmp, _tmp$1, ok, p, prec;
 23314  		prec = 0;
 23315  		ok = false;
 23316  		p = this;
 23317  		_tmp = p.fmt.prec;
 23318  		_tmp$1 = p.fmt.fmtFlags.precPresent;
 23319  		prec = _tmp;
 23320  		ok = _tmp$1;
 23321  		return [prec, ok];
 23322  	};
 23323  	pp.prototype.Precision = function() { return this.$val.Precision(); };
 23324  	pp.ptr.prototype.Flag = function(b) {
 23325  		var _1, b, p;
 23326  		p = this;
 23327  		_1 = b;
 23328  		if (_1 === (45)) {
 23329  			return p.fmt.fmtFlags.minus;
 23330  		} else if (_1 === (43)) {
 23331  			return p.fmt.fmtFlags.plus || p.fmt.fmtFlags.plusV;
 23332  		} else if (_1 === (35)) {
 23333  			return p.fmt.fmtFlags.sharp || p.fmt.fmtFlags.sharpV;
 23334  		} else if (_1 === (32)) {
 23335  			return p.fmt.fmtFlags.space;
 23336  		} else if (_1 === (48)) {
 23337  			return p.fmt.fmtFlags.zero;
 23338  		}
 23339  		return false;
 23340  	};
 23341  	pp.prototype.Flag = function(b) { return this.$val.Flag(b); };
 23342  	pp.ptr.prototype.Write = function(b) {
 23343  		var _tmp, _tmp$1, b, err, p, ret;
 23344  		ret = 0;
 23345  		err = $ifaceNil;
 23346  		p = this;
 23347  		(p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).Write(b);
 23348  		_tmp = b.$length;
 23349  		_tmp$1 = $ifaceNil;
 23350  		ret = _tmp;
 23351  		err = _tmp$1;
 23352  		return [ret, err];
 23353  	};
 23354  	pp.prototype.Write = function(b) { return this.$val.Write(b); };
 23355  	pp.ptr.prototype.WriteString = function(s) {
 23356  		var _tmp, _tmp$1, err, p, ret, s;
 23357  		ret = 0;
 23358  		err = $ifaceNil;
 23359  		p = this;
 23360  		(p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString(s);
 23361  		_tmp = s.length;
 23362  		_tmp$1 = $ifaceNil;
 23363  		ret = _tmp;
 23364  		err = _tmp$1;
 23365  		return [ret, err];
 23366  	};
 23367  	pp.prototype.WriteString = function(s) { return this.$val.WriteString(s); };
 23368  	Fprintf = function(w, format, a) {
 23369  		var _r, _r$1, _tuple, a, err, format, n, p, w, x, $s, $r;
 23370  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _tuple = $f._tuple; a = $f.a; err = $f.err; format = $f.format; n = $f.n; p = $f.p; w = $f.w; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 23371  		n = 0;
 23372  		err = $ifaceNil;
 23373  		_r = newPrinter(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 23374  		p = _r;
 23375  		$r = p.doPrintf(format, a); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 23376  		_r$1 = w.Write((x = p.buf, $subslice(new sliceType$2(x.$array), x.$offset, x.$offset + x.$length))); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 23377  		_tuple = _r$1;
 23378  		n = _tuple[0];
 23379  		err = _tuple[1];
 23380  		p.free();
 23381  		$s = -1; return [n, err];
 23382  		/* */ } return; } if ($f === undefined) { $f = { $blk: Fprintf }; } $f._r = _r; $f._r$1 = _r$1; $f._tuple = _tuple; $f.a = a; $f.err = err; $f.format = format; $f.n = n; $f.p = p; $f.w = w; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
 23383  	};
 23384  	$pkg.Fprintf = Fprintf;
 23385  	Sprintf = function(format, a) {
 23386  		var _r, a, format, p, s, $s, $r;
 23387  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; a = $f.a; format = $f.format; p = $f.p; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 23388  		_r = newPrinter(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 23389  		p = _r;
 23390  		$r = p.doPrintf(format, a); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 23391  		s = ($bytesToString(p.buf));
 23392  		p.free();
 23393  		$s = -1; return s;
 23394  		/* */ } return; } if ($f === undefined) { $f = { $blk: Sprintf }; } $f._r = _r; $f.a = a; $f.format = format; $f.p = p; $f.s = s; $f.$s = $s; $f.$r = $r; return $f;
 23395  	};
 23396  	$pkg.Sprintf = Sprintf;
 23397  	Errorf = function(format, a) {
 23398  		var _r, _r$1, a, format, $s, $r;
 23399  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; a = $f.a; format = $f.format; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 23400  		_r = Sprintf(format, a); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 23401  		_r$1 = errors.New(_r); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 23402  		$s = -1; return _r$1;
 23403  		/* */ } return; } if ($f === undefined) { $f = { $blk: Errorf }; } $f._r = _r; $f._r$1 = _r$1; $f.a = a; $f.format = format; $f.$s = $s; $f.$r = $r; return $f;
 23404  	};
 23405  	$pkg.Errorf = Errorf;
 23406  	Fprint = function(w, a) {
 23407  		var _r, _r$1, _tuple, a, err, n, p, w, x, $s, $r;
 23408  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _tuple = $f._tuple; a = $f.a; err = $f.err; n = $f.n; p = $f.p; w = $f.w; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 23409  		n = 0;
 23410  		err = $ifaceNil;
 23411  		_r = newPrinter(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 23412  		p = _r;
 23413  		$r = p.doPrint(a); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 23414  		_r$1 = w.Write((x = p.buf, $subslice(new sliceType$2(x.$array), x.$offset, x.$offset + x.$length))); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 23415  		_tuple = _r$1;
 23416  		n = _tuple[0];
 23417  		err = _tuple[1];
 23418  		p.free();
 23419  		$s = -1; return [n, err];
 23420  		/* */ } return; } if ($f === undefined) { $f = { $blk: Fprint }; } $f._r = _r; $f._r$1 = _r$1; $f._tuple = _tuple; $f.a = a; $f.err = err; $f.n = n; $f.p = p; $f.w = w; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
 23421  	};
 23422  	$pkg.Fprint = Fprint;
 23423  	Sprint = function(a) {
 23424  		var _r, a, p, s, $s, $r;
 23425  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; a = $f.a; p = $f.p; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 23426  		_r = newPrinter(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 23427  		p = _r;
 23428  		$r = p.doPrint(a); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 23429  		s = ($bytesToString(p.buf));
 23430  		p.free();
 23431  		$s = -1; return s;
 23432  		/* */ } return; } if ($f === undefined) { $f = { $blk: Sprint }; } $f._r = _r; $f.a = a; $f.p = p; $f.s = s; $f.$s = $s; $f.$r = $r; return $f;
 23433  	};
 23434  	$pkg.Sprint = Sprint;
 23435  	Fprintln = function(w, a) {
 23436  		var _r, _r$1, _tuple, a, err, n, p, w, x, $s, $r;
 23437  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _tuple = $f._tuple; a = $f.a; err = $f.err; n = $f.n; p = $f.p; w = $f.w; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 23438  		n = 0;
 23439  		err = $ifaceNil;
 23440  		_r = newPrinter(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 23441  		p = _r;
 23442  		$r = p.doPrintln(a); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 23443  		_r$1 = w.Write((x = p.buf, $subslice(new sliceType$2(x.$array), x.$offset, x.$offset + x.$length))); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 23444  		_tuple = _r$1;
 23445  		n = _tuple[0];
 23446  		err = _tuple[1];
 23447  		p.free();
 23448  		$s = -1; return [n, err];
 23449  		/* */ } return; } if ($f === undefined) { $f = { $blk: Fprintln }; } $f._r = _r; $f._r$1 = _r$1; $f._tuple = _tuple; $f.a = a; $f.err = err; $f.n = n; $f.p = p; $f.w = w; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
 23450  	};
 23451  	$pkg.Fprintln = Fprintln;
 23452  	Println = function(a) {
 23453  		var _r, _tuple, a, err, n, $s, $r;
 23454  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; a = $f.a; err = $f.err; n = $f.n; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 23455  		n = 0;
 23456  		err = $ifaceNil;
 23457  		_r = Fprintln(os.Stdout, a); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 23458  		_tuple = _r;
 23459  		n = _tuple[0];
 23460  		err = _tuple[1];
 23461  		$s = -1; return [n, err];
 23462  		/* */ } return; } if ($f === undefined) { $f = { $blk: Println }; } $f._r = _r; $f._tuple = _tuple; $f.a = a; $f.err = err; $f.n = n; $f.$s = $s; $f.$r = $r; return $f;
 23463  	};
 23464  	$pkg.Println = Println;
 23465  	Sprintln = function(a) {
 23466  		var _r, a, p, s, $s, $r;
 23467  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; a = $f.a; p = $f.p; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 23468  		_r = newPrinter(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 23469  		p = _r;
 23470  		$r = p.doPrintln(a); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 23471  		s = ($bytesToString(p.buf));
 23472  		p.free();
 23473  		$s = -1; return s;
 23474  		/* */ } return; } if ($f === undefined) { $f = { $blk: Sprintln }; } $f._r = _r; $f.a = a; $f.p = p; $f.s = s; $f.$s = $s; $f.$r = $r; return $f;
 23475  	};
 23476  	$pkg.Sprintln = Sprintln;
 23477  	getField = function(v, i) {
 23478  		var _r, _r$1, i, v, val, $s, $r;
 23479  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; i = $f.i; v = $f.v; val = $f.val; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 23480  		_r = $clone(v, reflect.Value).Field(i); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 23481  		val = _r;
 23482  		/* */ if (($clone(val, reflect.Value).Kind() === 20) && !$clone(val, reflect.Value).IsNil()) { $s = 2; continue; }
 23483  		/* */ $s = 3; continue;
 23484  		/* if (($clone(val, reflect.Value).Kind() === 20) && !$clone(val, reflect.Value).IsNil()) { */ case 2:
 23485  			_r$1 = $clone(val, reflect.Value).Elem(); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 23486  			val = _r$1;
 23487  		/* } */ case 3:
 23488  		$s = -1; return val;
 23489  		/* */ } return; } if ($f === undefined) { $f = { $blk: getField }; } $f._r = _r; $f._r$1 = _r$1; $f.i = i; $f.v = v; $f.val = val; $f.$s = $s; $f.$r = $r; return $f;
 23490  	};
 23491  	tooLarge = function(x) {
 23492  		var x;
 23493  		return x > 1000000 || x < -1000000;
 23494  	};
 23495  	parsenum = function(s, start, end) {
 23496  		var _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, end, isnum, newi, num, s, start;
 23497  		num = 0;
 23498  		isnum = false;
 23499  		newi = 0;
 23500  		if (start >= end) {
 23501  			_tmp = 0;
 23502  			_tmp$1 = false;
 23503  			_tmp$2 = end;
 23504  			num = _tmp;
 23505  			isnum = _tmp$1;
 23506  			newi = _tmp$2;
 23507  			return [num, isnum, newi];
 23508  		}
 23509  		newi = start;
 23510  		while (true) {
 23511  			if (!(newi < end && 48 <= s.charCodeAt(newi) && s.charCodeAt(newi) <= 57)) { break; }
 23512  			if (tooLarge(num)) {
 23513  				_tmp$3 = 0;
 23514  				_tmp$4 = false;
 23515  				_tmp$5 = end;
 23516  				num = _tmp$3;
 23517  				isnum = _tmp$4;
 23518  				newi = _tmp$5;
 23519  				return [num, isnum, newi];
 23520  			}
 23521  			num = ($imul(num, 10)) + (((s.charCodeAt(newi) - 48 << 24 >>> 24) >> 0)) >> 0;
 23522  			isnum = true;
 23523  			newi = newi + (1) >> 0;
 23524  		}
 23525  		return [num, isnum, newi];
 23526  	};
 23527  	pp.ptr.prototype.unknownType = function(v) {
 23528  		var _r, _r$1, p, v, $s, $r;
 23529  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; p = $f.p; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 23530  		p = this;
 23531  		if (!$clone(v, reflect.Value).IsValid()) {
 23532  			(p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString("<nil>");
 23533  			$s = -1; return;
 23534  		}
 23535  		(p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteByte(63);
 23536  		_r = $clone(v, reflect.Value).Type(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 23537  		_r$1 = _r.String(); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 23538  		$r = (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString(_r$1); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 23539  		(p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteByte(63);
 23540  		$s = -1; return;
 23541  		/* */ } return; } if ($f === undefined) { $f = { $blk: pp.ptr.prototype.unknownType }; } $f._r = _r; $f._r$1 = _r$1; $f.p = p; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
 23542  	};
 23543  	pp.prototype.unknownType = function(v) { return this.$val.unknownType(v); };
 23544  	pp.ptr.prototype.badVerb = function(verb) {
 23545  		var _r, _r$1, _r$2, p, verb, $s, $r;
 23546  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; p = $f.p; verb = $f.verb; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 23547  		p = this;
 23548  		p.erroring = true;
 23549  		(p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString("%!");
 23550  		(p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteRune(verb);
 23551  		(p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteByte(40);
 23552  			/* */ if (!($interfaceIsEqual(p.arg, $ifaceNil))) { $s = 2; continue; }
 23553  			/* */ if ($clone(p.value, reflect.Value).IsValid()) { $s = 3; continue; }
 23554  			/* */ $s = 4; continue;
 23555  			/* if (!($interfaceIsEqual(p.arg, $ifaceNil))) { */ case 2:
 23556  				_r = reflect.TypeOf(p.arg).String(); /* */ $s = 6; case 6: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 23557  				$r = (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString(_r); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 23558  				(p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteByte(61);
 23559  				$r = p.printArg(p.arg, 118); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 23560  				$s = 5; continue;
 23561  			/* } else if ($clone(p.value, reflect.Value).IsValid()) { */ case 3:
 23562  				_r$1 = $clone(p.value, reflect.Value).Type(); /* */ $s = 9; case 9: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 23563  				_r$2 = _r$1.String(); /* */ $s = 10; case 10: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 23564  				$r = (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString(_r$2); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 23565  				(p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteByte(61);
 23566  				$r = p.printValue($clone(p.value, reflect.Value), 118, 0); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 23567  				$s = 5; continue;
 23568  			/* } else { */ case 4:
 23569  				(p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString("<nil>");
 23570  			/* } */ case 5:
 23571  		case 1:
 23572  		(p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteByte(41);
 23573  		p.erroring = false;
 23574  		$s = -1; return;
 23575  		/* */ } return; } if ($f === undefined) { $f = { $blk: pp.ptr.prototype.badVerb }; } $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f.p = p; $f.verb = verb; $f.$s = $s; $f.$r = $r; return $f;
 23576  	};
 23577  	pp.prototype.badVerb = function(verb) { return this.$val.badVerb(verb); };
 23578  	pp.ptr.prototype.fmtBool = function(v, verb) {
 23579  		var _1, p, v, verb, $s, $r;
 23580  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; p = $f.p; v = $f.v; verb = $f.verb; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 23581  		p = this;
 23582  			_1 = verb;
 23583  			/* */ if ((_1 === (116)) || (_1 === (118))) { $s = 2; continue; }
 23584  			/* */ $s = 3; continue;
 23585  			/* if ((_1 === (116)) || (_1 === (118))) { */ case 2:
 23586  				p.fmt.fmt_boolean(v);
 23587  				$s = 4; continue;
 23588  			/* } else { */ case 3:
 23589  				$r = p.badVerb(verb); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 23590  			/* } */ case 4:
 23591  		case 1:
 23592  		$s = -1; return;
 23593  		/* */ } return; } if ($f === undefined) { $f = { $blk: pp.ptr.prototype.fmtBool }; } $f._1 = _1; $f.p = p; $f.v = v; $f.verb = verb; $f.$s = $s; $f.$r = $r; return $f;
 23594  	};
 23595  	pp.prototype.fmtBool = function(v, verb) { return this.$val.fmtBool(v, verb); };
 23596  	pp.ptr.prototype.fmt0x64 = function(v, leading0x) {
 23597  		var leading0x, p, sharp, v;
 23598  		p = this;
 23599  		sharp = p.fmt.fmtFlags.sharp;
 23600  		p.fmt.fmtFlags.sharp = leading0x;
 23601  		p.fmt.fmt_integer(v, 16, false, "0123456789abcdefx");
 23602  		p.fmt.fmtFlags.sharp = sharp;
 23603  	};
 23604  	pp.prototype.fmt0x64 = function(v, leading0x) { return this.$val.fmt0x64(v, leading0x); };
 23605  	pp.ptr.prototype.fmtInteger = function(v, isSigned, verb) {
 23606  		var _1, isSigned, p, v, verb, $s, $r;
 23607  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; isSigned = $f.isSigned; p = $f.p; v = $f.v; verb = $f.verb; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 23608  		p = this;
 23609  			_1 = verb;
 23610  			/* */ if (_1 === (118)) { $s = 2; continue; }
 23611  			/* */ if (_1 === (100)) { $s = 3; continue; }
 23612  			/* */ if (_1 === (98)) { $s = 4; continue; }
 23613  			/* */ if (_1 === (111)) { $s = 5; continue; }
 23614  			/* */ if (_1 === (120)) { $s = 6; continue; }
 23615  			/* */ if (_1 === (88)) { $s = 7; continue; }
 23616  			/* */ if (_1 === (99)) { $s = 8; continue; }
 23617  			/* */ if (_1 === (113)) { $s = 9; continue; }
 23618  			/* */ if (_1 === (85)) { $s = 10; continue; }
 23619  			/* */ $s = 11; continue;
 23620  			/* if (_1 === (118)) { */ case 2:
 23621  				if (p.fmt.fmtFlags.sharpV && !isSigned) {
 23622  					p.fmt0x64(v, true);
 23623  				} else {
 23624  					p.fmt.fmt_integer(v, 10, isSigned, "0123456789abcdefx");
 23625  				}
 23626  				$s = 12; continue;
 23627  			/* } else if (_1 === (100)) { */ case 3:
 23628  				p.fmt.fmt_integer(v, 10, isSigned, "0123456789abcdefx");
 23629  				$s = 12; continue;
 23630  			/* } else if (_1 === (98)) { */ case 4:
 23631  				p.fmt.fmt_integer(v, 2, isSigned, "0123456789abcdefx");
 23632  				$s = 12; continue;
 23633  			/* } else if (_1 === (111)) { */ case 5:
 23634  				p.fmt.fmt_integer(v, 8, isSigned, "0123456789abcdefx");
 23635  				$s = 12; continue;
 23636  			/* } else if (_1 === (120)) { */ case 6:
 23637  				p.fmt.fmt_integer(v, 16, isSigned, "0123456789abcdefx");
 23638  				$s = 12; continue;
 23639  			/* } else if (_1 === (88)) { */ case 7:
 23640  				p.fmt.fmt_integer(v, 16, isSigned, "0123456789ABCDEFX");
 23641  				$s = 12; continue;
 23642  			/* } else if (_1 === (99)) { */ case 8:
 23643  				p.fmt.fmt_c(v);
 23644  				$s = 12; continue;
 23645  			/* } else if (_1 === (113)) { */ case 9:
 23646  				/* */ if ((v.$high < 0 || (v.$high === 0 && v.$low <= 1114111))) { $s = 13; continue; }
 23647  				/* */ $s = 14; continue;
 23648  				/* if ((v.$high < 0 || (v.$high === 0 && v.$low <= 1114111))) { */ case 13:
 23649  					p.fmt.fmt_qc(v);
 23650  					$s = 15; continue;
 23651  				/* } else { */ case 14:
 23652  					$r = p.badVerb(verb); /* */ $s = 16; case 16: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 23653  				/* } */ case 15:
 23654  				$s = 12; continue;
 23655  			/* } else if (_1 === (85)) { */ case 10:
 23656  				p.fmt.fmt_unicode(v);
 23657  				$s = 12; continue;
 23658  			/* } else { */ case 11:
 23659  				$r = p.badVerb(verb); /* */ $s = 17; case 17: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 23660  			/* } */ case 12:
 23661  		case 1:
 23662  		$s = -1; return;
 23663  		/* */ } return; } if ($f === undefined) { $f = { $blk: pp.ptr.prototype.fmtInteger }; } $f._1 = _1; $f.isSigned = isSigned; $f.p = p; $f.v = v; $f.verb = verb; $f.$s = $s; $f.$r = $r; return $f;
 23664  	};
 23665  	pp.prototype.fmtInteger = function(v, isSigned, verb) { return this.$val.fmtInteger(v, isSigned, verb); };
 23666  	pp.ptr.prototype.fmtFloat = function(v, size, verb) {
 23667  		var _1, p, size, v, verb, $s, $r;
 23668  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; p = $f.p; size = $f.size; v = $f.v; verb = $f.verb; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 23669  		p = this;
 23670  			_1 = verb;
 23671  			/* */ if (_1 === (118)) { $s = 2; continue; }
 23672  			/* */ if ((_1 === (98)) || (_1 === (103)) || (_1 === (71))) { $s = 3; continue; }
 23673  			/* */ if ((_1 === (102)) || (_1 === (101)) || (_1 === (69))) { $s = 4; continue; }
 23674  			/* */ if (_1 === (70)) { $s = 5; continue; }
 23675  			/* */ $s = 6; continue;
 23676  			/* if (_1 === (118)) { */ case 2:
 23677  				p.fmt.fmt_float(v, size, 103, -1);
 23678  				$s = 7; continue;
 23679  			/* } else if ((_1 === (98)) || (_1 === (103)) || (_1 === (71))) { */ case 3:
 23680  				p.fmt.fmt_float(v, size, verb, -1);
 23681  				$s = 7; continue;
 23682  			/* } else if ((_1 === (102)) || (_1 === (101)) || (_1 === (69))) { */ case 4:
 23683  				p.fmt.fmt_float(v, size, verb, 6);
 23684  				$s = 7; continue;
 23685  			/* } else if (_1 === (70)) { */ case 5:
 23686  				p.fmt.fmt_float(v, size, 102, 6);
 23687  				$s = 7; continue;
 23688  			/* } else { */ case 6:
 23689  				$r = p.badVerb(verb); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 23690  			/* } */ case 7:
 23691  		case 1:
 23692  		$s = -1; return;
 23693  		/* */ } return; } if ($f === undefined) { $f = { $blk: pp.ptr.prototype.fmtFloat }; } $f._1 = _1; $f.p = p; $f.size = size; $f.v = v; $f.verb = verb; $f.$s = $s; $f.$r = $r; return $f;
 23694  	};
 23695  	pp.prototype.fmtFloat = function(v, size, verb) { return this.$val.fmtFloat(v, size, verb); };
 23696  	pp.ptr.prototype.fmtComplex = function(v, size, verb) {
 23697  		var _1, _q, _q$1, oldPlus, p, size, v, verb, $s, $r;
 23698  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _q = $f._q; _q$1 = $f._q$1; oldPlus = $f.oldPlus; p = $f.p; size = $f.size; v = $f.v; verb = $f.verb; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 23699  		p = this;
 23700  			_1 = verb;
 23701  			/* */ if ((_1 === (118)) || (_1 === (98)) || (_1 === (103)) || (_1 === (71)) || (_1 === (102)) || (_1 === (70)) || (_1 === (101)) || (_1 === (69))) { $s = 2; continue; }
 23702  			/* */ $s = 3; continue;
 23703  			/* if ((_1 === (118)) || (_1 === (98)) || (_1 === (103)) || (_1 === (71)) || (_1 === (102)) || (_1 === (70)) || (_1 === (101)) || (_1 === (69))) { */ case 2:
 23704  				oldPlus = p.fmt.fmtFlags.plus;
 23705  				(p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteByte(40);
 23706  				$r = p.fmtFloat(v.$real, (_q = size / 2, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")), verb); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 23707  				p.fmt.fmtFlags.plus = true;
 23708  				$r = p.fmtFloat(v.$imag, (_q$1 = size / 2, (_q$1 === _q$1 && _q$1 !== 1/0 && _q$1 !== -1/0) ? _q$1 >> 0 : $throwRuntimeError("integer divide by zero")), verb); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 23709  				(p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString("i)");
 23710  				p.fmt.fmtFlags.plus = oldPlus;
 23711  				$s = 4; continue;
 23712  			/* } else { */ case 3:
 23713  				$r = p.badVerb(verb); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 23714  			/* } */ case 4:
 23715  		case 1:
 23716  		$s = -1; return;
 23717  		/* */ } return; } if ($f === undefined) { $f = { $blk: pp.ptr.prototype.fmtComplex }; } $f._1 = _1; $f._q = _q; $f._q$1 = _q$1; $f.oldPlus = oldPlus; $f.p = p; $f.size = size; $f.v = v; $f.verb = verb; $f.$s = $s; $f.$r = $r; return $f;
 23718  	};
 23719  	pp.prototype.fmtComplex = function(v, size, verb) { return this.$val.fmtComplex(v, size, verb); };
 23720  	pp.ptr.prototype.fmtString = function(v, verb) {
 23721  		var _1, p, v, verb, $s, $r;
 23722  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; p = $f.p; v = $f.v; verb = $f.verb; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 23723  		p = this;
 23724  			_1 = verb;
 23725  			/* */ if (_1 === (118)) { $s = 2; continue; }
 23726  			/* */ if (_1 === (115)) { $s = 3; continue; }
 23727  			/* */ if (_1 === (120)) { $s = 4; continue; }
 23728  			/* */ if (_1 === (88)) { $s = 5; continue; }
 23729  			/* */ if (_1 === (113)) { $s = 6; continue; }
 23730  			/* */ $s = 7; continue;
 23731  			/* if (_1 === (118)) { */ case 2:
 23732  				if (p.fmt.fmtFlags.sharpV) {
 23733  					p.fmt.fmt_q(v);
 23734  				} else {
 23735  					p.fmt.fmt_s(v);
 23736  				}
 23737  				$s = 8; continue;
 23738  			/* } else if (_1 === (115)) { */ case 3:
 23739  				p.fmt.fmt_s(v);
 23740  				$s = 8; continue;
 23741  			/* } else if (_1 === (120)) { */ case 4:
 23742  				p.fmt.fmt_sx(v, "0123456789abcdefx");
 23743  				$s = 8; continue;
 23744  			/* } else if (_1 === (88)) { */ case 5:
 23745  				p.fmt.fmt_sx(v, "0123456789ABCDEFX");
 23746  				$s = 8; continue;
 23747  			/* } else if (_1 === (113)) { */ case 6:
 23748  				p.fmt.fmt_q(v);
 23749  				$s = 8; continue;
 23750  			/* } else { */ case 7:
 23751  				$r = p.badVerb(verb); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 23752  			/* } */ case 8:
 23753  		case 1:
 23754  		$s = -1; return;
 23755  		/* */ } return; } if ($f === undefined) { $f = { $blk: pp.ptr.prototype.fmtString }; } $f._1 = _1; $f.p = p; $f.v = v; $f.verb = verb; $f.$s = $s; $f.$r = $r; return $f;
 23756  	};
 23757  	pp.prototype.fmtString = function(v, verb) { return this.$val.fmtString(v, verb); };
 23758  	pp.ptr.prototype.fmtBytes = function(v, verb, typeString) {
 23759  		var _1, _i, _i$1, _r, _ref, _ref$1, c, c$1, i, i$1, p, typeString, v, verb, $s, $r;
 23760  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _i = $f._i; _i$1 = $f._i$1; _r = $f._r; _ref = $f._ref; _ref$1 = $f._ref$1; c = $f.c; c$1 = $f.c$1; i = $f.i; i$1 = $f.i$1; p = $f.p; typeString = $f.typeString; v = $f.v; verb = $f.verb; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 23761  		p = this;
 23762  			_1 = verb;
 23763  			/* */ if ((_1 === (118)) || (_1 === (100))) { $s = 2; continue; }
 23764  			/* */ if (_1 === (115)) { $s = 3; continue; }
 23765  			/* */ if (_1 === (120)) { $s = 4; continue; }
 23766  			/* */ if (_1 === (88)) { $s = 5; continue; }
 23767  			/* */ if (_1 === (113)) { $s = 6; continue; }
 23768  			/* */ $s = 7; continue;
 23769  			/* if ((_1 === (118)) || (_1 === (100))) { */ case 2:
 23770  				if (p.fmt.fmtFlags.sharpV) {
 23771  					(p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString(typeString);
 23772  					if (v === sliceType$2.nil) {
 23773  						(p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString("(nil)");
 23774  						$s = -1; return;
 23775  					}
 23776  					(p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteByte(123);
 23777  					_ref = v;
 23778  					_i = 0;
 23779  					while (true) {
 23780  						if (!(_i < _ref.$length)) { break; }
 23781  						i = _i;
 23782  						c = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
 23783  						if (i > 0) {
 23784  							(p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString(", ");
 23785  						}
 23786  						p.fmt0x64((new $Uint64(0, c)), true);
 23787  						_i++;
 23788  					}
 23789  					(p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteByte(125);
 23790  				} else {
 23791  					(p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteByte(91);
 23792  					_ref$1 = v;
 23793  					_i$1 = 0;
 23794  					while (true) {
 23795  						if (!(_i$1 < _ref$1.$length)) { break; }
 23796  						i$1 = _i$1;
 23797  						c$1 = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]);
 23798  						if (i$1 > 0) {
 23799  							(p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteByte(32);
 23800  						}
 23801  						p.fmt.fmt_integer((new $Uint64(0, c$1)), 10, false, "0123456789abcdefx");
 23802  						_i$1++;
 23803  					}
 23804  					(p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteByte(93);
 23805  				}
 23806  				$s = 8; continue;
 23807  			/* } else if (_1 === (115)) { */ case 3:
 23808  				p.fmt.fmt_s(($bytesToString(v)));
 23809  				$s = 8; continue;
 23810  			/* } else if (_1 === (120)) { */ case 4:
 23811  				p.fmt.fmt_bx(v, "0123456789abcdefx");
 23812  				$s = 8; continue;
 23813  			/* } else if (_1 === (88)) { */ case 5:
 23814  				p.fmt.fmt_bx(v, "0123456789ABCDEFX");
 23815  				$s = 8; continue;
 23816  			/* } else if (_1 === (113)) { */ case 6:
 23817  				p.fmt.fmt_q(($bytesToString(v)));
 23818  				$s = 8; continue;
 23819  			/* } else { */ case 7:
 23820  				_r = reflect.ValueOf(v); /* */ $s = 9; case 9: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 23821  				$r = p.printValue($clone(_r, reflect.Value), verb, 0); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 23822  			/* } */ case 8:
 23823  		case 1:
 23824  		$s = -1; return;
 23825  		/* */ } return; } if ($f === undefined) { $f = { $blk: pp.ptr.prototype.fmtBytes }; } $f._1 = _1; $f._i = _i; $f._i$1 = _i$1; $f._r = _r; $f._ref = _ref; $f._ref$1 = _ref$1; $f.c = c; $f.c$1 = c$1; $f.i = i; $f.i$1 = i$1; $f.p = p; $f.typeString = typeString; $f.v = v; $f.verb = verb; $f.$s = $s; $f.$r = $r; return $f;
 23826  	};
 23827  	pp.prototype.fmtBytes = function(v, verb, typeString) { return this.$val.fmtBytes(v, verb, typeString); };
 23828  	pp.ptr.prototype.fmtPointer = function(value, verb) {
 23829  		var _1, _2, _r, _r$1, p, u, value, verb, $s, $r;
 23830  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _2 = $f._2; _r = $f._r; _r$1 = $f._r$1; p = $f.p; u = $f.u; value = $f.value; verb = $f.verb; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 23831  		p = this;
 23832  		u = 0;
 23833  			_1 = $clone(value, reflect.Value).Kind();
 23834  			/* */ if ((_1 === (18)) || (_1 === (19)) || (_1 === (21)) || (_1 === (22)) || (_1 === (23)) || (_1 === (26))) { $s = 2; continue; }
 23835  			/* */ $s = 3; continue;
 23836  			/* if ((_1 === (18)) || (_1 === (19)) || (_1 === (21)) || (_1 === (22)) || (_1 === (23)) || (_1 === (26))) { */ case 2:
 23837  				u = $clone(value, reflect.Value).Pointer();
 23838  				$s = 4; continue;
 23839  			/* } else { */ case 3:
 23840  				$r = p.badVerb(verb); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 23841  				$s = -1; return;
 23842  			/* } */ case 4:
 23843  		case 1:
 23844  			_2 = verb;
 23845  			/* */ if (_2 === (118)) { $s = 7; continue; }
 23846  			/* */ if (_2 === (112)) { $s = 8; continue; }
 23847  			/* */ if ((_2 === (98)) || (_2 === (111)) || (_2 === (100)) || (_2 === (120)) || (_2 === (88))) { $s = 9; continue; }
 23848  			/* */ $s = 10; continue;
 23849  			/* if (_2 === (118)) { */ case 7:
 23850  				/* */ if (p.fmt.fmtFlags.sharpV) { $s = 12; continue; }
 23851  				/* */ $s = 13; continue;
 23852  				/* if (p.fmt.fmtFlags.sharpV) { */ case 12:
 23853  					(p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteByte(40);
 23854  					_r = $clone(value, reflect.Value).Type(); /* */ $s = 15; case 15: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 23855  					_r$1 = _r.String(); /* */ $s = 16; case 16: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 23856  					$r = (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString(_r$1); /* */ $s = 17; case 17: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 23857  					(p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString(")(");
 23858  					if (u === 0) {
 23859  						(p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString("nil");
 23860  					} else {
 23861  						p.fmt0x64((new $Uint64(0, u.constructor === Number ? u : 1)), true);
 23862  					}
 23863  					(p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteByte(41);
 23864  					$s = 14; continue;
 23865  				/* } else { */ case 13:
 23866  					if (u === 0) {
 23867  						p.fmt.padString("<nil>");
 23868  					} else {
 23869  						p.fmt0x64((new $Uint64(0, u.constructor === Number ? u : 1)), !p.fmt.fmtFlags.sharp);
 23870  					}
 23871  				/* } */ case 14:
 23872  				$s = 11; continue;
 23873  			/* } else if (_2 === (112)) { */ case 8:
 23874  				p.fmt0x64((new $Uint64(0, u.constructor === Number ? u : 1)), !p.fmt.fmtFlags.sharp);
 23875  				$s = 11; continue;
 23876  			/* } else if ((_2 === (98)) || (_2 === (111)) || (_2 === (100)) || (_2 === (120)) || (_2 === (88))) { */ case 9:
 23877  				$r = p.fmtInteger((new $Uint64(0, u.constructor === Number ? u : 1)), false, verb); /* */ $s = 18; case 18: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 23878  				$s = 11; continue;
 23879  			/* } else { */ case 10:
 23880  				$r = p.badVerb(verb); /* */ $s = 19; case 19: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 23881  			/* } */ case 11:
 23882  		case 6:
 23883  		$s = -1; return;
 23884  		/* */ } return; } if ($f === undefined) { $f = { $blk: pp.ptr.prototype.fmtPointer }; } $f._1 = _1; $f._2 = _2; $f._r = _r; $f._r$1 = _r$1; $f.p = p; $f.u = u; $f.value = value; $f.verb = verb; $f.$s = $s; $f.$r = $r; return $f;
 23885  	};
 23886  	pp.prototype.fmtPointer = function(value, verb) { return this.$val.fmtPointer(value, verb); };
 23887  	pp.ptr.prototype.catchPanic = function(arg, verb) {
 23888  		var _r, arg, err, oldFlags, p, v, verb, $s, $r;
 23889  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; arg = $f.arg; err = $f.err; oldFlags = $f.oldFlags; p = $f.p; v = $f.v; verb = $f.verb; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 23890  		p = this;
 23891  		err = $recover();
 23892  		/* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 1; continue; }
 23893  		/* */ $s = 2; continue;
 23894  		/* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 1:
 23895  			_r = reflect.ValueOf(arg); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 23896  			v = _r;
 23897  			if (($clone(v, reflect.Value).Kind() === 22) && $clone(v, reflect.Value).IsNil()) {
 23898  				(p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString("<nil>");
 23899  				$s = -1; return;
 23900  			}
 23901  			if (p.panicking) {
 23902  				$panic(err);
 23903  			}
 23904  			oldFlags = $clone(p.fmt.fmtFlags, fmtFlags);
 23905  			p.fmt.clearflags();
 23906  			(p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString("%!");
 23907  			(p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteRune(verb);
 23908  			(p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString("(PANIC=");
 23909  			p.panicking = true;
 23910  			$r = p.printArg(err, 118); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 23911  			p.panicking = false;
 23912  			(p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteByte(41);
 23913  			fmtFlags.copy(p.fmt.fmtFlags, oldFlags);
 23914  		/* } */ case 2:
 23915  		$s = -1; return;
 23916  		/* */ } return; } if ($f === undefined) { $f = { $blk: pp.ptr.prototype.catchPanic }; } $f._r = _r; $f.arg = arg; $f.err = err; $f.oldFlags = oldFlags; $f.p = p; $f.v = v; $f.verb = verb; $f.$s = $s; $f.$r = $r; return $f;
 23917  	};
 23918  	pp.prototype.catchPanic = function(arg, verb) { return this.$val.catchPanic(arg, verb); };
 23919  	pp.ptr.prototype.handleMethods = function(verb) {
 23920  		var _1, _r, _r$1, _r$2, _ref, _tuple, _tuple$1, formatter, handled, ok, ok$1, p, stringer, v, v$1, verb, $s, $deferred, $r;
 23921  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _ref = $f._ref; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; formatter = $f.formatter; handled = $f.handled; ok = $f.ok; ok$1 = $f.ok$1; p = $f.p; stringer = $f.stringer; v = $f.v; v$1 = $f.v$1; verb = $f.verb; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
 23922  		handled = false;
 23923  		p = this;
 23924  		if (p.erroring) {
 23925  			$s = -1; return handled;
 23926  		}
 23927  		_tuple = $assertType(p.arg, Formatter, true);
 23928  		formatter = _tuple[0];
 23929  		ok = _tuple[1];
 23930  		/* */ if (ok) { $s = 1; continue; }
 23931  		/* */ $s = 2; continue;
 23932  		/* if (ok) { */ case 1:
 23933  			handled = true;
 23934  			$deferred.push([$methodVal(p, "catchPanic"), [p.arg, verb]]);
 23935  			$r = formatter.Format(p, verb); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 23936  			$s = -1; return handled;
 23937  		/* } */ case 2:
 23938  		/* */ if (p.fmt.fmtFlags.sharpV) { $s = 4; continue; }
 23939  		/* */ $s = 5; continue;
 23940  		/* if (p.fmt.fmtFlags.sharpV) { */ case 4:
 23941  			_tuple$1 = $assertType(p.arg, GoStringer, true);
 23942  			stringer = _tuple$1[0];
 23943  			ok$1 = _tuple$1[1];
 23944  			/* */ if (ok$1) { $s = 7; continue; }
 23945  			/* */ $s = 8; continue;
 23946  			/* if (ok$1) { */ case 7:
 23947  				handled = true;
 23948  				$deferred.push([$methodVal(p, "catchPanic"), [p.arg, verb]]);
 23949  				_r = stringer.GoString(); /* */ $s = 9; case 9: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 23950  				$r = p.fmt.fmt_s(_r); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 23951  				$s = -1; return handled;
 23952  			/* } */ case 8:
 23953  			$s = 6; continue;
 23954  		/* } else { */ case 5:
 23955  				_1 = verb;
 23956  				/* */ if ((_1 === (118)) || (_1 === (115)) || (_1 === (120)) || (_1 === (88)) || (_1 === (113))) { $s = 12; continue; }
 23957  				/* */ $s = 13; continue;
 23958  				/* if ((_1 === (118)) || (_1 === (115)) || (_1 === (120)) || (_1 === (88)) || (_1 === (113))) { */ case 12:
 23959  					_ref = p.arg;
 23960  					/* */ if ($assertType(_ref, $error, true)[1]) { $s = 14; continue; }
 23961  					/* */ if ($assertType(_ref, Stringer, true)[1]) { $s = 15; continue; }
 23962  					/* */ $s = 16; continue;
 23963  					/* if ($assertType(_ref, $error, true)[1]) { */ case 14:
 23964  						v = _ref;
 23965  						handled = true;
 23966  						$deferred.push([$methodVal(p, "catchPanic"), [p.arg, verb]]);
 23967  						_r$1 = v.Error(); /* */ $s = 17; case 17: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 23968  						$r = p.fmtString(_r$1, verb); /* */ $s = 18; case 18: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 23969  						$s = -1; return handled;
 23970  					/* } else if ($assertType(_ref, Stringer, true)[1]) { */ case 15:
 23971  						v$1 = _ref;
 23972  						handled = true;
 23973  						$deferred.push([$methodVal(p, "catchPanic"), [p.arg, verb]]);
 23974  						_r$2 = v$1.String(); /* */ $s = 19; case 19: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 23975  						$r = p.fmtString(_r$2, verb); /* */ $s = 20; case 20: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 23976  						$s = -1; return handled;
 23977  					/* } */ case 16:
 23978  				/* } */ case 13:
 23979  			case 11:
 23980  		/* } */ case 6:
 23981  		handled = false;
 23982  		$s = -1; return handled;
 23983  		/* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if (!$curGoroutine.asleep) { return  handled; } if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: pp.ptr.prototype.handleMethods }; } $f._1 = _1; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._ref = _ref; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.formatter = formatter; $f.handled = handled; $f.ok = ok; $f.ok$1 = ok$1; $f.p = p; $f.stringer = stringer; $f.v = v; $f.v$1 = v$1; $f.verb = verb; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
 23984  	};
 23985  	pp.prototype.handleMethods = function(verb) { return this.$val.handleMethods(verb); };
 23986  	pp.ptr.prototype.printArg = function(arg, verb) {
 23987  		var _1, _2, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _ref, arg, f, f$1, f$10, f$11, f$12, f$13, f$14, f$15, f$16, f$17, f$18, f$19, f$2, f$3, f$4, f$5, f$6, f$7, f$8, f$9, p, verb, $s, $r;
 23988  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _2 = $f._2; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _ref = $f._ref; arg = $f.arg; f = $f.f; f$1 = $f.f$1; f$10 = $f.f$10; f$11 = $f.f$11; f$12 = $f.f$12; f$13 = $f.f$13; f$14 = $f.f$14; f$15 = $f.f$15; f$16 = $f.f$16; f$17 = $f.f$17; f$18 = $f.f$18; f$19 = $f.f$19; f$2 = $f.f$2; f$3 = $f.f$3; f$4 = $f.f$4; f$5 = $f.f$5; f$6 = $f.f$6; f$7 = $f.f$7; f$8 = $f.f$8; f$9 = $f.f$9; p = $f.p; verb = $f.verb; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 23989  		p = this;
 23990  		p.arg = arg;
 23991  		p.value = new reflect.Value.ptr(ptrType.nil, 0, 0);
 23992  		/* */ if ($interfaceIsEqual(arg, $ifaceNil)) { $s = 1; continue; }
 23993  		/* */ $s = 2; continue;
 23994  		/* if ($interfaceIsEqual(arg, $ifaceNil)) { */ case 1:
 23995  				_1 = verb;
 23996  				/* */ if ((_1 === (84)) || (_1 === (118))) { $s = 4; continue; }
 23997  				/* */ $s = 5; continue;
 23998  				/* if ((_1 === (84)) || (_1 === (118))) { */ case 4:
 23999  					p.fmt.padString("<nil>");
 24000  					$s = 6; continue;
 24001  				/* } else { */ case 5:
 24002  					$r = p.badVerb(verb); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 24003  				/* } */ case 6:
 24004  			case 3:
 24005  			$s = -1; return;
 24006  		/* } */ case 2:
 24007  			_2 = verb;
 24008  			/* */ if (_2 === (84)) { $s = 9; continue; }
 24009  			/* */ if (_2 === (112)) { $s = 10; continue; }
 24010  			/* */ $s = 11; continue;
 24011  			/* if (_2 === (84)) { */ case 9:
 24012  				_r = reflect.TypeOf(arg).String(); /* */ $s = 12; case 12: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 24013  				$r = p.fmt.fmt_s(_r); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 24014  				$s = -1; return;
 24015  			/* } else if (_2 === (112)) { */ case 10:
 24016  				_r$1 = reflect.ValueOf(arg); /* */ $s = 14; case 14: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 24017  				$r = p.fmtPointer($clone(_r$1, reflect.Value), 112); /* */ $s = 15; case 15: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 24018  				$s = -1; return;
 24019  			/* } */ case 11:
 24020  		case 8:
 24021  		_ref = arg;
 24022  		/* */ if ($assertType(_ref, $Bool, true)[1]) { $s = 16; continue; }
 24023  		/* */ if ($assertType(_ref, $Float32, true)[1]) { $s = 17; continue; }
 24024  		/* */ if ($assertType(_ref, $Float64, true)[1]) { $s = 18; continue; }
 24025  		/* */ if ($assertType(_ref, $Complex64, true)[1]) { $s = 19; continue; }
 24026  		/* */ if ($assertType(_ref, $Complex128, true)[1]) { $s = 20; continue; }
 24027  		/* */ if ($assertType(_ref, $Int, true)[1]) { $s = 21; continue; }
 24028  		/* */ if ($assertType(_ref, $Int8, true)[1]) { $s = 22; continue; }
 24029  		/* */ if ($assertType(_ref, $Int16, true)[1]) { $s = 23; continue; }
 24030  		/* */ if ($assertType(_ref, $Int32, true)[1]) { $s = 24; continue; }
 24031  		/* */ if ($assertType(_ref, $Int64, true)[1]) { $s = 25; continue; }
 24032  		/* */ if ($assertType(_ref, $Uint, true)[1]) { $s = 26; continue; }
 24033  		/* */ if ($assertType(_ref, $Uint8, true)[1]) { $s = 27; continue; }
 24034  		/* */ if ($assertType(_ref, $Uint16, true)[1]) { $s = 28; continue; }
 24035  		/* */ if ($assertType(_ref, $Uint32, true)[1]) { $s = 29; continue; }
 24036  		/* */ if ($assertType(_ref, $Uint64, true)[1]) { $s = 30; continue; }
 24037  		/* */ if ($assertType(_ref, $Uintptr, true)[1]) { $s = 31; continue; }
 24038  		/* */ if ($assertType(_ref, $String, true)[1]) { $s = 32; continue; }
 24039  		/* */ if ($assertType(_ref, sliceType$2, true)[1]) { $s = 33; continue; }
 24040  		/* */ if ($assertType(_ref, reflect.Value, true)[1]) { $s = 34; continue; }
 24041  		/* */ $s = 35; continue;
 24042  		/* if ($assertType(_ref, $Bool, true)[1]) { */ case 16:
 24043  			f = _ref.$val;
 24044  			$r = p.fmtBool(f, verb); /* */ $s = 37; case 37: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 24045  			$s = 36; continue;
 24046  		/* } else if ($assertType(_ref, $Float32, true)[1]) { */ case 17:
 24047  			f$1 = _ref.$val;
 24048  			$r = p.fmtFloat((f$1), 32, verb); /* */ $s = 38; case 38: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 24049  			$s = 36; continue;
 24050  		/* } else if ($assertType(_ref, $Float64, true)[1]) { */ case 18:
 24051  			f$2 = _ref.$val;
 24052  			$r = p.fmtFloat(f$2, 64, verb); /* */ $s = 39; case 39: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 24053  			$s = 36; continue;
 24054  		/* } else if ($assertType(_ref, $Complex64, true)[1]) { */ case 19:
 24055  			f$3 = _ref.$val;
 24056  			$r = p.fmtComplex((new $Complex128(f$3.$real, f$3.$imag)), 64, verb); /* */ $s = 40; case 40: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 24057  			$s = 36; continue;
 24058  		/* } else if ($assertType(_ref, $Complex128, true)[1]) { */ case 20:
 24059  			f$4 = _ref.$val;
 24060  			$r = p.fmtComplex(f$4, 128, verb); /* */ $s = 41; case 41: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 24061  			$s = 36; continue;
 24062  		/* } else if ($assertType(_ref, $Int, true)[1]) { */ case 21:
 24063  			f$5 = _ref.$val;
 24064  			$r = p.fmtInteger((new $Uint64(0, f$5)), true, verb); /* */ $s = 42; case 42: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 24065  			$s = 36; continue;
 24066  		/* } else if ($assertType(_ref, $Int8, true)[1]) { */ case 22:
 24067  			f$6 = _ref.$val;
 24068  			$r = p.fmtInteger((new $Uint64(0, f$6)), true, verb); /* */ $s = 43; case 43: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 24069  			$s = 36; continue;
 24070  		/* } else if ($assertType(_ref, $Int16, true)[1]) { */ case 23:
 24071  			f$7 = _ref.$val;
 24072  			$r = p.fmtInteger((new $Uint64(0, f$7)), true, verb); /* */ $s = 44; case 44: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 24073  			$s = 36; continue;
 24074  		/* } else if ($assertType(_ref, $Int32, true)[1]) { */ case 24:
 24075  			f$8 = _ref.$val;
 24076  			$r = p.fmtInteger((new $Uint64(0, f$8)), true, verb); /* */ $s = 45; case 45: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 24077  			$s = 36; continue;
 24078  		/* } else if ($assertType(_ref, $Int64, true)[1]) { */ case 25:
 24079  			f$9 = _ref.$val;
 24080  			$r = p.fmtInteger((new $Uint64(f$9.$high, f$9.$low)), true, verb); /* */ $s = 46; case 46: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 24081  			$s = 36; continue;
 24082  		/* } else if ($assertType(_ref, $Uint, true)[1]) { */ case 26:
 24083  			f$10 = _ref.$val;
 24084  			$r = p.fmtInteger((new $Uint64(0, f$10)), false, verb); /* */ $s = 47; case 47: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 24085  			$s = 36; continue;
 24086  		/* } else if ($assertType(_ref, $Uint8, true)[1]) { */ case 27:
 24087  			f$11 = _ref.$val;
 24088  			$r = p.fmtInteger((new $Uint64(0, f$11)), false, verb); /* */ $s = 48; case 48: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 24089  			$s = 36; continue;
 24090  		/* } else if ($assertType(_ref, $Uint16, true)[1]) { */ case 28:
 24091  			f$12 = _ref.$val;
 24092  			$r = p.fmtInteger((new $Uint64(0, f$12)), false, verb); /* */ $s = 49; case 49: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 24093  			$s = 36; continue;
 24094  		/* } else if ($assertType(_ref, $Uint32, true)[1]) { */ case 29:
 24095  			f$13 = _ref.$val;
 24096  			$r = p.fmtInteger((new $Uint64(0, f$13)), false, verb); /* */ $s = 50; case 50: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 24097  			$s = 36; continue;
 24098  		/* } else if ($assertType(_ref, $Uint64, true)[1]) { */ case 30:
 24099  			f$14 = _ref.$val;
 24100  			$r = p.fmtInteger(f$14, false, verb); /* */ $s = 51; case 51: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 24101  			$s = 36; continue;
 24102  		/* } else if ($assertType(_ref, $Uintptr, true)[1]) { */ case 31:
 24103  			f$15 = _ref.$val;
 24104  			$r = p.fmtInteger((new $Uint64(0, f$15.constructor === Number ? f$15 : 1)), false, verb); /* */ $s = 52; case 52: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 24105  			$s = 36; continue;
 24106  		/* } else if ($assertType(_ref, $String, true)[1]) { */ case 32:
 24107  			f$16 = _ref.$val;
 24108  			$r = p.fmtString(f$16, verb); /* */ $s = 53; case 53: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 24109  			$s = 36; continue;
 24110  		/* } else if ($assertType(_ref, sliceType$2, true)[1]) { */ case 33:
 24111  			f$17 = _ref.$val;
 24112  			$r = p.fmtBytes(f$17, verb, "[]byte"); /* */ $s = 54; case 54: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 24113  			$s = 36; continue;
 24114  		/* } else if ($assertType(_ref, reflect.Value, true)[1]) { */ case 34:
 24115  			f$18 = _ref.$val;
 24116  			/* */ if ($clone(f$18, reflect.Value).IsValid() && $clone(f$18, reflect.Value).CanInterface()) { $s = 55; continue; }
 24117  			/* */ $s = 56; continue;
 24118  			/* if ($clone(f$18, reflect.Value).IsValid() && $clone(f$18, reflect.Value).CanInterface()) { */ case 55:
 24119  				_r$2 = $clone(f$18, reflect.Value).Interface(); /* */ $s = 57; case 57: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 24120  				p.arg = _r$2;
 24121  				_r$3 = p.handleMethods(verb); /* */ $s = 60; case 60: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 24122  				/* */ if (_r$3) { $s = 58; continue; }
 24123  				/* */ $s = 59; continue;
 24124  				/* if (_r$3) { */ case 58:
 24125  					$s = -1; return;
 24126  				/* } */ case 59:
 24127  			/* } */ case 56:
 24128  			$r = p.printValue($clone(f$18, reflect.Value), verb, 0); /* */ $s = 61; case 61: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 24129  			$s = 36; continue;
 24130  		/* } else { */ case 35:
 24131  			f$19 = _ref;
 24132  			_r$4 = p.handleMethods(verb); /* */ $s = 64; case 64: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 24133  			/* */ if (!_r$4) { $s = 62; continue; }
 24134  			/* */ $s = 63; continue;
 24135  			/* if (!_r$4) { */ case 62:
 24136  				_r$5 = reflect.ValueOf(f$19); /* */ $s = 65; case 65: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
 24137  				$r = p.printValue($clone(_r$5, reflect.Value), verb, 0); /* */ $s = 66; case 66: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 24138  			/* } */ case 63:
 24139  		/* } */ case 36:
 24140  		$s = -1; return;
 24141  		/* */ } return; } if ($f === undefined) { $f = { $blk: pp.ptr.prototype.printArg }; } $f._1 = _1; $f._2 = _2; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._ref = _ref; $f.arg = arg; $f.f = f; $f.f$1 = f$1; $f.f$10 = f$10; $f.f$11 = f$11; $f.f$12 = f$12; $f.f$13 = f$13; $f.f$14 = f$14; $f.f$15 = f$15; $f.f$16 = f$16; $f.f$17 = f$17; $f.f$18 = f$18; $f.f$19 = f$19; $f.f$2 = f$2; $f.f$3 = f$3; $f.f$4 = f$4; $f.f$5 = f$5; $f.f$6 = f$6; $f.f$7 = f$7; $f.f$8 = f$8; $f.f$9 = f$9; $f.p = p; $f.verb = verb; $f.$s = $s; $f.$r = $r; return $f;
 24142  	};
 24143  	pp.prototype.printArg = function(arg, verb) { return this.$val.printArg(arg, verb); };
 24144  	pp.ptr.prototype.printValue = function(value, verb, depth) {
 24145  		var _1, _2, _3, _4, _arg, _arg$1, _arg$2, _i, _i$1, _r, _r$1, _r$10, _r$11, _r$12, _r$13, _r$14, _r$15, _r$16, _r$17, _r$18, _r$19, _r$2, _r$20, _r$21, _r$22, _r$23, _r$24, _r$25, _r$26, _r$27, _r$28, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, _ref$1, a, bytes, depth, f, i, i$1, i$2, i$3, i$4, key, keys, name, p, t, value, value$1, verb, x, $s, $r;
 24146  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _2 = $f._2; _3 = $f._3; _4 = $f._4; _arg = $f._arg; _arg$1 = $f._arg$1; _arg$2 = $f._arg$2; _i = $f._i; _i$1 = $f._i$1; _r = $f._r; _r$1 = $f._r$1; _r$10 = $f._r$10; _r$11 = $f._r$11; _r$12 = $f._r$12; _r$13 = $f._r$13; _r$14 = $f._r$14; _r$15 = $f._r$15; _r$16 = $f._r$16; _r$17 = $f._r$17; _r$18 = $f._r$18; _r$19 = $f._r$19; _r$2 = $f._r$2; _r$20 = $f._r$20; _r$21 = $f._r$21; _r$22 = $f._r$22; _r$23 = $f._r$23; _r$24 = $f._r$24; _r$25 = $f._r$25; _r$26 = $f._r$26; _r$27 = $f._r$27; _r$28 = $f._r$28; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _r$8 = $f._r$8; _r$9 = $f._r$9; _ref = $f._ref; _ref$1 = $f._ref$1; a = $f.a; bytes = $f.bytes; depth = $f.depth; f = $f.f; i = $f.i; i$1 = $f.i$1; i$2 = $f.i$2; i$3 = $f.i$3; i$4 = $f.i$4; key = $f.key; keys = $f.keys; name = $f.name; p = $f.p; t = $f.t; value = $f.value; value$1 = $f.value$1; verb = $f.verb; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 24147  		p = this;
 24148  		/* */ if (depth > 0 && $clone(value, reflect.Value).IsValid() && $clone(value, reflect.Value).CanInterface()) { $s = 1; continue; }
 24149  		/* */ $s = 2; continue;
 24150  		/* if (depth > 0 && $clone(value, reflect.Value).IsValid() && $clone(value, reflect.Value).CanInterface()) { */ case 1:
 24151  			_r = $clone(value, reflect.Value).Interface(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 24152  			p.arg = _r;
 24153  			_r$1 = p.handleMethods(verb); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 24154  			/* */ if (_r$1) { $s = 4; continue; }
 24155  			/* */ $s = 5; continue;
 24156  			/* if (_r$1) { */ case 4:
 24157  				$s = -1; return;
 24158  			/* } */ case 5:
 24159  		/* } */ case 2:
 24160  		p.arg = $ifaceNil;
 24161  		p.value = value;
 24162  			f = value;
 24163  			_1 = $clone(value, reflect.Value).Kind();
 24164  			/* */ if (_1 === (0)) { $s = 8; continue; }
 24165  			/* */ if (_1 === (1)) { $s = 9; continue; }
 24166  			/* */ if ((_1 === (2)) || (_1 === (3)) || (_1 === (4)) || (_1 === (5)) || (_1 === (6))) { $s = 10; continue; }
 24167  			/* */ if ((_1 === (7)) || (_1 === (8)) || (_1 === (9)) || (_1 === (10)) || (_1 === (11)) || (_1 === (12))) { $s = 11; continue; }
 24168  			/* */ if (_1 === (13)) { $s = 12; continue; }
 24169  			/* */ if (_1 === (14)) { $s = 13; continue; }
 24170  			/* */ if (_1 === (15)) { $s = 14; continue; }
 24171  			/* */ if (_1 === (16)) { $s = 15; continue; }
 24172  			/* */ if (_1 === (24)) { $s = 16; continue; }
 24173  			/* */ if (_1 === (21)) { $s = 17; continue; }
 24174  			/* */ if (_1 === (25)) { $s = 18; continue; }
 24175  			/* */ if (_1 === (20)) { $s = 19; continue; }
 24176  			/* */ if ((_1 === (17)) || (_1 === (23))) { $s = 20; continue; }
 24177  			/* */ if (_1 === (22)) { $s = 21; continue; }
 24178  			/* */ if ((_1 === (18)) || (_1 === (19)) || (_1 === (26))) { $s = 22; continue; }
 24179  			/* */ $s = 23; continue;
 24180  			/* if (_1 === (0)) { */ case 8:
 24181  				/* */ if (depth === 0) { $s = 25; continue; }
 24182  				/* */ $s = 26; continue;
 24183  				/* if (depth === 0) { */ case 25:
 24184  					(p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString("<invalid reflect.Value>");
 24185  					$s = 27; continue;
 24186  				/* } else { */ case 26:
 24187  						_2 = verb;
 24188  						/* */ if (_2 === (118)) { $s = 29; continue; }
 24189  						/* */ $s = 30; continue;
 24190  						/* if (_2 === (118)) { */ case 29:
 24191  							(p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString("<nil>");
 24192  							$s = 31; continue;
 24193  						/* } else { */ case 30:
 24194  							$r = p.badVerb(verb); /* */ $s = 32; case 32: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 24195  						/* } */ case 31:
 24196  					case 28:
 24197  				/* } */ case 27:
 24198  				$s = 24; continue;
 24199  			/* } else if (_1 === (1)) { */ case 9:
 24200  				$r = p.fmtBool($clone(f, reflect.Value).Bool(), verb); /* */ $s = 33; case 33: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 24201  				$s = 24; continue;
 24202  			/* } else if ((_1 === (2)) || (_1 === (3)) || (_1 === (4)) || (_1 === (5)) || (_1 === (6))) { */ case 10:
 24203  				$r = p.fmtInteger(((x = $clone(f, reflect.Value).Int(), new $Uint64(x.$high, x.$low))), true, verb); /* */ $s = 34; case 34: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 24204  				$s = 24; continue;
 24205  			/* } else if ((_1 === (7)) || (_1 === (8)) || (_1 === (9)) || (_1 === (10)) || (_1 === (11)) || (_1 === (12))) { */ case 11:
 24206  				$r = p.fmtInteger($clone(f, reflect.Value).Uint(), false, verb); /* */ $s = 35; case 35: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 24207  				$s = 24; continue;
 24208  			/* } else if (_1 === (13)) { */ case 12:
 24209  				$r = p.fmtFloat($clone(f, reflect.Value).Float(), 32, verb); /* */ $s = 36; case 36: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 24210  				$s = 24; continue;
 24211  			/* } else if (_1 === (14)) { */ case 13:
 24212  				$r = p.fmtFloat($clone(f, reflect.Value).Float(), 64, verb); /* */ $s = 37; case 37: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 24213  				$s = 24; continue;
 24214  			/* } else if (_1 === (15)) { */ case 14:
 24215  				$r = p.fmtComplex($clone(f, reflect.Value).Complex(), 64, verb); /* */ $s = 38; case 38: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 24216  				$s = 24; continue;
 24217  			/* } else if (_1 === (16)) { */ case 15:
 24218  				$r = p.fmtComplex($clone(f, reflect.Value).Complex(), 128, verb); /* */ $s = 39; case 39: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 24219  				$s = 24; continue;
 24220  			/* } else if (_1 === (24)) { */ case 16:
 24221  				_r$2 = $clone(f, reflect.Value).String(); /* */ $s = 40; case 40: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 24222  				$r = p.fmtString(_r$2, verb); /* */ $s = 41; case 41: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 24223  				$s = 24; continue;
 24224  			/* } else if (_1 === (21)) { */ case 17:
 24225  				/* */ if (p.fmt.fmtFlags.sharpV) { $s = 42; continue; }
 24226  				/* */ $s = 43; continue;
 24227  				/* if (p.fmt.fmtFlags.sharpV) { */ case 42:
 24228  					_r$3 = $clone(f, reflect.Value).Type(); /* */ $s = 45; case 45: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 24229  					_r$4 = _r$3.String(); /* */ $s = 46; case 46: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 24230  					$r = (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString(_r$4); /* */ $s = 47; case 47: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 24231  					if ($clone(f, reflect.Value).IsNil()) {
 24232  						(p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString("(nil)");
 24233  						$s = -1; return;
 24234  					}
 24235  					(p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteByte(123);
 24236  					$s = 44; continue;
 24237  				/* } else { */ case 43:
 24238  					(p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString("map[");
 24239  				/* } */ case 44:
 24240  				_r$5 = $clone(f, reflect.Value).MapKeys(); /* */ $s = 48; case 48: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
 24241  				keys = _r$5;
 24242  				_ref = keys;
 24243  				_i = 0;
 24244  				/* while (true) { */ case 49:
 24245  					/* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 50; continue; }
 24246  					i = _i;
 24247  					key = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
 24248  					if (i > 0) {
 24249  						if (p.fmt.fmtFlags.sharpV) {
 24250  							(p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString(", ");
 24251  						} else {
 24252  							(p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteByte(32);
 24253  						}
 24254  					}
 24255  					$r = p.printValue($clone(key, reflect.Value), verb, depth + 1 >> 0); /* */ $s = 51; case 51: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 24256  					(p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteByte(58);
 24257  					_r$6 = $clone(f, reflect.Value).MapIndex($clone(key, reflect.Value)); /* */ $s = 52; case 52: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
 24258  					$r = p.printValue($clone(_r$6, reflect.Value), verb, depth + 1 >> 0); /* */ $s = 53; case 53: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 24259  					_i++;
 24260  				/* } */ $s = 49; continue; case 50:
 24261  				if (p.fmt.fmtFlags.sharpV) {
 24262  					(p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteByte(125);
 24263  				} else {
 24264  					(p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteByte(93);
 24265  				}
 24266  				$s = 24; continue;
 24267  			/* } else if (_1 === (25)) { */ case 18:
 24268  				/* */ if (p.fmt.fmtFlags.sharpV) { $s = 54; continue; }
 24269  				/* */ $s = 55; continue;
 24270  				/* if (p.fmt.fmtFlags.sharpV) { */ case 54:
 24271  					_r$7 = $clone(f, reflect.Value).Type(); /* */ $s = 56; case 56: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
 24272  					_r$8 = _r$7.String(); /* */ $s = 57; case 57: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
 24273  					$r = (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString(_r$8); /* */ $s = 58; case 58: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 24274  				/* } */ case 55:
 24275  				(p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteByte(123);
 24276  				i$1 = 0;
 24277  				/* while (true) { */ case 59:
 24278  					/* if (!(i$1 < $clone(f, reflect.Value).NumField())) { break; } */ if(!(i$1 < $clone(f, reflect.Value).NumField())) { $s = 60; continue; }
 24279  					if (i$1 > 0) {
 24280  						if (p.fmt.fmtFlags.sharpV) {
 24281  							(p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString(", ");
 24282  						} else {
 24283  							(p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteByte(32);
 24284  						}
 24285  					}
 24286  					/* */ if (p.fmt.fmtFlags.plusV || p.fmt.fmtFlags.sharpV) { $s = 61; continue; }
 24287  					/* */ $s = 62; continue;
 24288  					/* if (p.fmt.fmtFlags.plusV || p.fmt.fmtFlags.sharpV) { */ case 61:
 24289  						_r$9 = $clone(f, reflect.Value).Type(); /* */ $s = 63; case 63: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 24290  						_r$10 = _r$9.Field(i$1); /* */ $s = 64; case 64: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
 24291  						name = _r$10.Name;
 24292  						if (!(name === "")) {
 24293  							(p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString(name);
 24294  							(p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteByte(58);
 24295  						}
 24296  					/* } */ case 62:
 24297  					_r$11 = getField($clone(f, reflect.Value), i$1); /* */ $s = 65; case 65: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; }
 24298  					$r = p.printValue($clone(_r$11, reflect.Value), verb, depth + 1 >> 0); /* */ $s = 66; case 66: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 24299  					i$1 = i$1 + (1) >> 0;
 24300  				/* } */ $s = 59; continue; case 60:
 24301  				(p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteByte(125);
 24302  				$s = 24; continue;
 24303  			/* } else if (_1 === (20)) { */ case 19:
 24304  				_r$12 = $clone(f, reflect.Value).Elem(); /* */ $s = 67; case 67: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; }
 24305  				value$1 = _r$12;
 24306  				/* */ if (!$clone(value$1, reflect.Value).IsValid()) { $s = 68; continue; }
 24307  				/* */ $s = 69; continue;
 24308  				/* if (!$clone(value$1, reflect.Value).IsValid()) { */ case 68:
 24309  					/* */ if (p.fmt.fmtFlags.sharpV) { $s = 71; continue; }
 24310  					/* */ $s = 72; continue;
 24311  					/* if (p.fmt.fmtFlags.sharpV) { */ case 71:
 24312  						_r$13 = $clone(f, reflect.Value).Type(); /* */ $s = 74; case 74: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; }
 24313  						_r$14 = _r$13.String(); /* */ $s = 75; case 75: if($c) { $c = false; _r$14 = _r$14.$blk(); } if (_r$14 && _r$14.$blk !== undefined) { break s; }
 24314  						$r = (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString(_r$14); /* */ $s = 76; case 76: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 24315  						(p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString("(nil)");
 24316  						$s = 73; continue;
 24317  					/* } else { */ case 72:
 24318  						(p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString("<nil>");
 24319  					/* } */ case 73:
 24320  					$s = 70; continue;
 24321  				/* } else { */ case 69:
 24322  					$r = p.printValue($clone(value$1, reflect.Value), verb, depth + 1 >> 0); /* */ $s = 77; case 77: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 24323  				/* } */ case 70:
 24324  				$s = 24; continue;
 24325  			/* } else if ((_1 === (17)) || (_1 === (23))) { */ case 20:
 24326  					_3 = verb;
 24327  					/* */ if ((_3 === (115)) || (_3 === (113)) || (_3 === (120)) || (_3 === (88))) { $s = 79; continue; }
 24328  					/* */ $s = 80; continue;
 24329  					/* if ((_3 === (115)) || (_3 === (113)) || (_3 === (120)) || (_3 === (88))) { */ case 79:
 24330  						_r$15 = $clone(f, reflect.Value).Type(); /* */ $s = 81; case 81: if($c) { $c = false; _r$15 = _r$15.$blk(); } if (_r$15 && _r$15.$blk !== undefined) { break s; }
 24331  						t = _r$15;
 24332  						_r$16 = t.Elem(); /* */ $s = 84; case 84: if($c) { $c = false; _r$16 = _r$16.$blk(); } if (_r$16 && _r$16.$blk !== undefined) { break s; }
 24333  						_r$17 = _r$16.Kind(); /* */ $s = 85; case 85: if($c) { $c = false; _r$17 = _r$17.$blk(); } if (_r$17 && _r$17.$blk !== undefined) { break s; }
 24334  						/* */ if (_r$17 === 8) { $s = 82; continue; }
 24335  						/* */ $s = 83; continue;
 24336  						/* if (_r$17 === 8) { */ case 82:
 24337  							bytes = sliceType$2.nil;
 24338  							/* */ if ($clone(f, reflect.Value).Kind() === 23) { $s = 86; continue; }
 24339  							/* */ if ($clone(f, reflect.Value).CanAddr()) { $s = 87; continue; }
 24340  							/* */ $s = 88; continue;
 24341  							/* if ($clone(f, reflect.Value).Kind() === 23) { */ case 86:
 24342  								_r$18 = $clone(f, reflect.Value).Bytes(); /* */ $s = 90; case 90: if($c) { $c = false; _r$18 = _r$18.$blk(); } if (_r$18 && _r$18.$blk !== undefined) { break s; }
 24343  								bytes = _r$18;
 24344  								$s = 89; continue;
 24345  							/* } else if ($clone(f, reflect.Value).CanAddr()) { */ case 87:
 24346  								_r$19 = $clone(f, reflect.Value).Slice(0, $clone(f, reflect.Value).Len()); /* */ $s = 91; case 91: if($c) { $c = false; _r$19 = _r$19.$blk(); } if (_r$19 && _r$19.$blk !== undefined) { break s; }
 24347  								_r$20 = $clone(_r$19, reflect.Value).Bytes(); /* */ $s = 92; case 92: if($c) { $c = false; _r$20 = _r$20.$blk(); } if (_r$20 && _r$20.$blk !== undefined) { break s; }
 24348  								bytes = _r$20;
 24349  								$s = 89; continue;
 24350  							/* } else { */ case 88:
 24351  								bytes = $makeSlice(sliceType$2, $clone(f, reflect.Value).Len());
 24352  								_ref$1 = bytes;
 24353  								_i$1 = 0;
 24354  								/* while (true) { */ case 93:
 24355  									/* if (!(_i$1 < _ref$1.$length)) { break; } */ if(!(_i$1 < _ref$1.$length)) { $s = 94; continue; }
 24356  									i$2 = _i$1;
 24357  									_r$21 = $clone(f, reflect.Value).Index(i$2); /* */ $s = 95; case 95: if($c) { $c = false; _r$21 = _r$21.$blk(); } if (_r$21 && _r$21.$blk !== undefined) { break s; }
 24358  									_r$22 = $clone(_r$21, reflect.Value).Uint(); /* */ $s = 96; case 96: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; }
 24359  									((i$2 < 0 || i$2 >= bytes.$length) ? ($throwRuntimeError("index out of range"), undefined) : bytes.$array[bytes.$offset + i$2] = ((_r$22.$low << 24 >>> 24)));
 24360  									_i$1++;
 24361  								/* } */ $s = 93; continue; case 94:
 24362  							/* } */ case 89:
 24363  							_arg = bytes;
 24364  							_arg$1 = verb;
 24365  							_r$23 = t.String(); /* */ $s = 97; case 97: if($c) { $c = false; _r$23 = _r$23.$blk(); } if (_r$23 && _r$23.$blk !== undefined) { break s; }
 24366  							_arg$2 = _r$23;
 24367  							$r = p.fmtBytes(_arg, _arg$1, _arg$2); /* */ $s = 98; case 98: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 24368  							$s = -1; return;
 24369  						/* } */ case 83:
 24370  					/* } */ case 80:
 24371  				case 78:
 24372  				/* */ if (p.fmt.fmtFlags.sharpV) { $s = 99; continue; }
 24373  				/* */ $s = 100; continue;
 24374  				/* if (p.fmt.fmtFlags.sharpV) { */ case 99:
 24375  					_r$24 = $clone(f, reflect.Value).Type(); /* */ $s = 102; case 102: if($c) { $c = false; _r$24 = _r$24.$blk(); } if (_r$24 && _r$24.$blk !== undefined) { break s; }
 24376  					_r$25 = _r$24.String(); /* */ $s = 103; case 103: if($c) { $c = false; _r$25 = _r$25.$blk(); } if (_r$25 && _r$25.$blk !== undefined) { break s; }
 24377  					$r = (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString(_r$25); /* */ $s = 104; case 104: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 24378  					if (($clone(f, reflect.Value).Kind() === 23) && $clone(f, reflect.Value).IsNil()) {
 24379  						(p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString("(nil)");
 24380  						$s = -1; return;
 24381  					}
 24382  					(p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteByte(123);
 24383  					i$3 = 0;
 24384  					/* while (true) { */ case 105:
 24385  						/* if (!(i$3 < $clone(f, reflect.Value).Len())) { break; } */ if(!(i$3 < $clone(f, reflect.Value).Len())) { $s = 106; continue; }
 24386  						if (i$3 > 0) {
 24387  							(p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString(", ");
 24388  						}
 24389  						_r$26 = $clone(f, reflect.Value).Index(i$3); /* */ $s = 107; case 107: if($c) { $c = false; _r$26 = _r$26.$blk(); } if (_r$26 && _r$26.$blk !== undefined) { break s; }
 24390  						$r = p.printValue($clone(_r$26, reflect.Value), verb, depth + 1 >> 0); /* */ $s = 108; case 108: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 24391  						i$3 = i$3 + (1) >> 0;
 24392  					/* } */ $s = 105; continue; case 106:
 24393  					(p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteByte(125);
 24394  					$s = 101; continue;
 24395  				/* } else { */ case 100:
 24396  					(p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteByte(91);
 24397  					i$4 = 0;
 24398  					/* while (true) { */ case 109:
 24399  						/* if (!(i$4 < $clone(f, reflect.Value).Len())) { break; } */ if(!(i$4 < $clone(f, reflect.Value).Len())) { $s = 110; continue; }
 24400  						if (i$4 > 0) {
 24401  							(p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteByte(32);
 24402  						}
 24403  						_r$27 = $clone(f, reflect.Value).Index(i$4); /* */ $s = 111; case 111: if($c) { $c = false; _r$27 = _r$27.$blk(); } if (_r$27 && _r$27.$blk !== undefined) { break s; }
 24404  						$r = p.printValue($clone(_r$27, reflect.Value), verb, depth + 1 >> 0); /* */ $s = 112; case 112: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 24405  						i$4 = i$4 + (1) >> 0;
 24406  					/* } */ $s = 109; continue; case 110:
 24407  					(p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteByte(93);
 24408  				/* } */ case 101:
 24409  				$s = 24; continue;
 24410  			/* } else if (_1 === (22)) { */ case 21:
 24411  				/* */ if ((depth === 0) && !(($clone(f, reflect.Value).Pointer() === 0))) { $s = 113; continue; }
 24412  				/* */ $s = 114; continue;
 24413  				/* if ((depth === 0) && !(($clone(f, reflect.Value).Pointer() === 0))) { */ case 113:
 24414  						_r$28 = $clone(f, reflect.Value).Elem(); /* */ $s = 116; case 116: if($c) { $c = false; _r$28 = _r$28.$blk(); } if (_r$28 && _r$28.$blk !== undefined) { break s; }
 24415  						a = _r$28;
 24416  						_4 = $clone(a, reflect.Value).Kind();
 24417  						/* */ if ((_4 === (17)) || (_4 === (23)) || (_4 === (25)) || (_4 === (21))) { $s = 117; continue; }
 24418  						/* */ $s = 118; continue;
 24419  						/* if ((_4 === (17)) || (_4 === (23)) || (_4 === (25)) || (_4 === (21))) { */ case 117:
 24420  							(p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteByte(38);
 24421  							$r = p.printValue($clone(a, reflect.Value), verb, depth + 1 >> 0); /* */ $s = 119; case 119: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 24422  							$s = -1; return;
 24423  						/* } */ case 118:
 24424  					case 115:
 24425  				/* } */ case 114:
 24426  				$r = p.fmtPointer($clone(f, reflect.Value), verb); /* */ $s = 120; case 120: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 24427  				$s = 24; continue;
 24428  			/* } else if ((_1 === (18)) || (_1 === (19)) || (_1 === (26))) { */ case 22:
 24429  				$r = p.fmtPointer($clone(f, reflect.Value), verb); /* */ $s = 121; case 121: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 24430  				$s = 24; continue;
 24431  			/* } else { */ case 23:
 24432  				$r = p.unknownType($clone(f, reflect.Value)); /* */ $s = 122; case 122: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 24433  			/* } */ case 24:
 24434  		case 7:
 24435  		$s = -1; return;
 24436  		/* */ } return; } if ($f === undefined) { $f = { $blk: pp.ptr.prototype.printValue }; } $f._1 = _1; $f._2 = _2; $f._3 = _3; $f._4 = _4; $f._arg = _arg; $f._arg$1 = _arg$1; $f._arg$2 = _arg$2; $f._i = _i; $f._i$1 = _i$1; $f._r = _r; $f._r$1 = _r$1; $f._r$10 = _r$10; $f._r$11 = _r$11; $f._r$12 = _r$12; $f._r$13 = _r$13; $f._r$14 = _r$14; $f._r$15 = _r$15; $f._r$16 = _r$16; $f._r$17 = _r$17; $f._r$18 = _r$18; $f._r$19 = _r$19; $f._r$2 = _r$2; $f._r$20 = _r$20; $f._r$21 = _r$21; $f._r$22 = _r$22; $f._r$23 = _r$23; $f._r$24 = _r$24; $f._r$25 = _r$25; $f._r$26 = _r$26; $f._r$27 = _r$27; $f._r$28 = _r$28; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._r$8 = _r$8; $f._r$9 = _r$9; $f._ref = _ref; $f._ref$1 = _ref$1; $f.a = a; $f.bytes = bytes; $f.depth = depth; $f.f = f; $f.i = i; $f.i$1 = i$1; $f.i$2 = i$2; $f.i$3 = i$3; $f.i$4 = i$4; $f.key = key; $f.keys = keys; $f.name = name; $f.p = p; $f.t = t; $f.value = value; $f.value$1 = value$1; $f.verb = verb; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
 24437  	};
 24438  	pp.prototype.printValue = function(value, verb, depth) { return this.$val.printValue(value, verb, depth); };
 24439  	intFromArg = function(a, argNum) {
 24440  		var _1, _r, _tuple, a, argNum, isInt, n, n$1, newArgNum, num, v, x, x$1, x$2, $s, $r;
 24441  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _r = $f._r; _tuple = $f._tuple; a = $f.a; argNum = $f.argNum; isInt = $f.isInt; n = $f.n; n$1 = $f.n$1; newArgNum = $f.newArgNum; num = $f.num; v = $f.v; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 24442  		num = 0;
 24443  		isInt = false;
 24444  		newArgNum = 0;
 24445  		newArgNum = argNum;
 24446  		/* */ if (argNum < a.$length) { $s = 1; continue; }
 24447  		/* */ $s = 2; continue;
 24448  		/* if (argNum < a.$length) { */ case 1:
 24449  			_tuple = $assertType(((argNum < 0 || argNum >= a.$length) ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + argNum]), $Int, true);
 24450  			num = _tuple[0];
 24451  			isInt = _tuple[1];
 24452  			/* */ if (!isInt) { $s = 3; continue; }
 24453  			/* */ $s = 4; continue;
 24454  			/* if (!isInt) { */ case 3:
 24455  					_r = reflect.ValueOf(((argNum < 0 || argNum >= a.$length) ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + argNum])); /* */ $s = 6; case 6: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 24456  					v = _r;
 24457  					_1 = $clone(v, reflect.Value).Kind();
 24458  					if ((_1 === (2)) || (_1 === (3)) || (_1 === (4)) || (_1 === (5)) || (_1 === (6))) {
 24459  						n = $clone(v, reflect.Value).Int();
 24460  						if ((x = (new $Int64(0, (((n.$low + ((n.$high >> 31) * 4294967296)) >> 0)))), (x.$high === n.$high && x.$low === n.$low))) {
 24461  							num = (((n.$low + ((n.$high >> 31) * 4294967296)) >> 0));
 24462  							isInt = true;
 24463  						}
 24464  					} else if ((_1 === (7)) || (_1 === (8)) || (_1 === (9)) || (_1 === (10)) || (_1 === (11)) || (_1 === (12))) {
 24465  						n$1 = $clone(v, reflect.Value).Uint();
 24466  						if ((x$1 = (new $Int64(n$1.$high, n$1.$low)), (x$1.$high > 0 || (x$1.$high === 0 && x$1.$low >= 0))) && (x$2 = (new $Uint64(0, ((n$1.$low >> 0)))), (x$2.$high === n$1.$high && x$2.$low === n$1.$low))) {
 24467  							num = ((n$1.$low >> 0));
 24468  							isInt = true;
 24469  						}
 24470  					}
 24471  				case 5:
 24472  			/* } */ case 4:
 24473  			newArgNum = argNum + 1 >> 0;
 24474  			if (tooLarge(num)) {
 24475  				num = 0;
 24476  				isInt = false;
 24477  			}
 24478  		/* } */ case 2:
 24479  		$s = -1; return [num, isInt, newArgNum];
 24480  		/* */ } return; } if ($f === undefined) { $f = { $blk: intFromArg }; } $f._1 = _1; $f._r = _r; $f._tuple = _tuple; $f.a = a; $f.argNum = argNum; $f.isInt = isInt; $f.n = n; $f.n$1 = n$1; $f.newArgNum = newArgNum; $f.num = num; $f.v = v; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.$s = $s; $f.$r = $r; return $f;
 24481  	};
 24482  	parseArgNumber = function(format) {
 24483  		var _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, format, i, index, newi, ok, ok$1, wid, width;
 24484  		index = 0;
 24485  		wid = 0;
 24486  		ok = false;
 24487  		if (format.length < 3) {
 24488  			_tmp = 0;
 24489  			_tmp$1 = 1;
 24490  			_tmp$2 = false;
 24491  			index = _tmp;
 24492  			wid = _tmp$1;
 24493  			ok = _tmp$2;
 24494  			return [index, wid, ok];
 24495  		}
 24496  		i = 1;
 24497  		while (true) {
 24498  			if (!(i < format.length)) { break; }
 24499  			if (format.charCodeAt(i) === 93) {
 24500  				_tuple = parsenum(format, 1, i);
 24501  				width = _tuple[0];
 24502  				ok$1 = _tuple[1];
 24503  				newi = _tuple[2];
 24504  				if (!ok$1 || !((newi === i))) {
 24505  					_tmp$3 = 0;
 24506  					_tmp$4 = i + 1 >> 0;
 24507  					_tmp$5 = false;
 24508  					index = _tmp$3;
 24509  					wid = _tmp$4;
 24510  					ok = _tmp$5;
 24511  					return [index, wid, ok];
 24512  				}
 24513  				_tmp$6 = width - 1 >> 0;
 24514  				_tmp$7 = i + 1 >> 0;
 24515  				_tmp$8 = true;
 24516  				index = _tmp$6;
 24517  				wid = _tmp$7;
 24518  				ok = _tmp$8;
 24519  				return [index, wid, ok];
 24520  			}
 24521  			i = i + (1) >> 0;
 24522  		}
 24523  		_tmp$9 = 0;
 24524  		_tmp$10 = 1;
 24525  		_tmp$11 = false;
 24526  		index = _tmp$9;
 24527  		wid = _tmp$10;
 24528  		ok = _tmp$11;
 24529  		return [index, wid, ok];
 24530  	};
 24531  	pp.ptr.prototype.argNumber = function(argNum, format, i, numArgs) {
 24532  		var _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tuple, argNum, format, found, i, index, newArgNum, newi, numArgs, ok, p, wid;
 24533  		newArgNum = 0;
 24534  		newi = 0;
 24535  		found = false;
 24536  		p = this;
 24537  		if (format.length <= i || !((format.charCodeAt(i) === 91))) {
 24538  			_tmp = argNum;
 24539  			_tmp$1 = i;
 24540  			_tmp$2 = false;
 24541  			newArgNum = _tmp;
 24542  			newi = _tmp$1;
 24543  			found = _tmp$2;
 24544  			return [newArgNum, newi, found];
 24545  		}
 24546  		p.reordered = true;
 24547  		_tuple = parseArgNumber($substring(format, i));
 24548  		index = _tuple[0];
 24549  		wid = _tuple[1];
 24550  		ok = _tuple[2];
 24551  		if (ok && 0 <= index && index < numArgs) {
 24552  			_tmp$3 = index;
 24553  			_tmp$4 = i + wid >> 0;
 24554  			_tmp$5 = true;
 24555  			newArgNum = _tmp$3;
 24556  			newi = _tmp$4;
 24557  			found = _tmp$5;
 24558  			return [newArgNum, newi, found];
 24559  		}
 24560  		p.goodArgNum = false;
 24561  		_tmp$6 = argNum;
 24562  		_tmp$7 = i + wid >> 0;
 24563  		_tmp$8 = ok;
 24564  		newArgNum = _tmp$6;
 24565  		newi = _tmp$7;
 24566  		found = _tmp$8;
 24567  		return [newArgNum, newi, found];
 24568  	};
 24569  	pp.prototype.argNumber = function(argNum, format, i, numArgs) { return this.$val.argNumber(argNum, format, i, numArgs); };
 24570  	pp.ptr.prototype.badArgNum = function(verb) {
 24571  		var p, verb;
 24572  		p = this;
 24573  		(p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString("%!");
 24574  		(p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteRune(verb);
 24575  		(p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString("(BADINDEX)");
 24576  	};
 24577  	pp.prototype.badArgNum = function(verb) { return this.$val.badArgNum(verb); };
 24578  	pp.ptr.prototype.missingArg = function(verb) {
 24579  		var p, verb;
 24580  		p = this;
 24581  		(p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString("%!");
 24582  		(p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteRune(verb);
 24583  		(p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString("(MISSING)");
 24584  	};
 24585  	pp.prototype.missingArg = function(verb) { return this.$val.missingArg(verb); };
 24586  	pp.ptr.prototype.doPrintf = function(format, a) {
 24587  		var _1, _i, _r, _r$1, _r$2, _ref, _tmp, _tmp$1, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, _tuple$5, _tuple$6, _tuple$7, a, afterIndex, arg, argNum, c, end, format, i, i$1, lasti, p, size, verb, $s, $r;
 24588  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _i = $f._i; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _ref = $f._ref; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; _tuple$4 = $f._tuple$4; _tuple$5 = $f._tuple$5; _tuple$6 = $f._tuple$6; _tuple$7 = $f._tuple$7; a = $f.a; afterIndex = $f.afterIndex; arg = $f.arg; argNum = $f.argNum; c = $f.c; end = $f.end; format = $f.format; i = $f.i; i$1 = $f.i$1; lasti = $f.lasti; p = $f.p; size = $f.size; verb = $f.verb; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 24589  		p = this;
 24590  		end = format.length;
 24591  		argNum = 0;
 24592  		afterIndex = false;
 24593  		p.reordered = false;
 24594  		i = 0;
 24595  		/* while (true) { */ case 1:
 24596  			/* if (!(i < end)) { break; } */ if(!(i < end)) { $s = 2; continue; }
 24597  			p.goodArgNum = true;
 24598  			lasti = i;
 24599  			while (true) {
 24600  				if (!(i < end && !((format.charCodeAt(i) === 37)))) { break; }
 24601  				i = i + (1) >> 0;
 24602  			}
 24603  			if (i > lasti) {
 24604  				(p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString($substring(format, lasti, i));
 24605  			}
 24606  			if (i >= end) {
 24607  				/* break; */ $s = 2; continue;
 24608  			}
 24609  			i = i + (1) >> 0;
 24610  			p.fmt.clearflags();
 24611  			/* while (true) { */ case 3:
 24612  				/* if (!(i < end)) { break; } */ if(!(i < end)) { $s = 4; continue; }
 24613  				c = format.charCodeAt(i);
 24614  					_1 = c;
 24615  					/* */ if (_1 === (35)) { $s = 6; continue; }
 24616  					/* */ if (_1 === (48)) { $s = 7; continue; }
 24617  					/* */ if (_1 === (43)) { $s = 8; continue; }
 24618  					/* */ if (_1 === (45)) { $s = 9; continue; }
 24619  					/* */ if (_1 === (32)) { $s = 10; continue; }
 24620  					/* */ $s = 11; continue;
 24621  					/* if (_1 === (35)) { */ case 6:
 24622  						p.fmt.fmtFlags.sharp = true;
 24623  						$s = 12; continue;
 24624  					/* } else if (_1 === (48)) { */ case 7:
 24625  						p.fmt.fmtFlags.zero = !p.fmt.fmtFlags.minus;
 24626  						$s = 12; continue;
 24627  					/* } else if (_1 === (43)) { */ case 8:
 24628  						p.fmt.fmtFlags.plus = true;
 24629  						$s = 12; continue;
 24630  					/* } else if (_1 === (45)) { */ case 9:
 24631  						p.fmt.fmtFlags.minus = true;
 24632  						p.fmt.fmtFlags.zero = false;
 24633  						$s = 12; continue;
 24634  					/* } else if (_1 === (32)) { */ case 10:
 24635  						p.fmt.fmtFlags.space = true;
 24636  						$s = 12; continue;
 24637  					/* } else { */ case 11:
 24638  						/* */ if (97 <= c && c <= 122 && argNum < a.$length) { $s = 13; continue; }
 24639  						/* */ $s = 14; continue;
 24640  						/* if (97 <= c && c <= 122 && argNum < a.$length) { */ case 13:
 24641  							if (c === 118) {
 24642  								p.fmt.fmtFlags.sharpV = p.fmt.fmtFlags.sharp;
 24643  								p.fmt.fmtFlags.sharp = false;
 24644  								p.fmt.fmtFlags.plusV = p.fmt.fmtFlags.plus;
 24645  								p.fmt.fmtFlags.plus = false;
 24646  							}
 24647  							$r = p.printArg(((argNum < 0 || argNum >= a.$length) ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + argNum]), ((c >> 0))); /* */ $s = 15; case 15: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 24648  							argNum = argNum + (1) >> 0;
 24649  							i = i + (1) >> 0;
 24650  							/* continue formatLoop; */ $s = 1; continue s;
 24651  						/* } */ case 14:
 24652  						/* break simpleFormat; */ $s = 4; continue s;
 24653  					/* } */ case 12:
 24654  				case 5:
 24655  				i = i + (1) >> 0;
 24656  			/* } */ $s = 3; continue; case 4:
 24657  			_tuple = p.argNumber(argNum, format, i, a.$length);
 24658  			argNum = _tuple[0];
 24659  			i = _tuple[1];
 24660  			afterIndex = _tuple[2];
 24661  			/* */ if (i < end && (format.charCodeAt(i) === 42)) { $s = 16; continue; }
 24662  			/* */ $s = 17; continue;
 24663  			/* if (i < end && (format.charCodeAt(i) === 42)) { */ case 16:
 24664  				i = i + (1) >> 0;
 24665  				_r = intFromArg(a, argNum); /* */ $s = 19; case 19: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 24666  				_tuple$1 = _r;
 24667  				p.fmt.wid = _tuple$1[0];
 24668  				p.fmt.fmtFlags.widPresent = _tuple$1[1];
 24669  				argNum = _tuple$1[2];
 24670  				if (!p.fmt.fmtFlags.widPresent) {
 24671  					(p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString("%!(BADWIDTH)");
 24672  				}
 24673  				if (p.fmt.wid < 0) {
 24674  					p.fmt.wid = -p.fmt.wid;
 24675  					p.fmt.fmtFlags.minus = true;
 24676  					p.fmt.fmtFlags.zero = false;
 24677  				}
 24678  				afterIndex = false;
 24679  				$s = 18; continue;
 24680  			/* } else { */ case 17:
 24681  				_tuple$2 = parsenum(format, i, end);
 24682  				p.fmt.wid = _tuple$2[0];
 24683  				p.fmt.fmtFlags.widPresent = _tuple$2[1];
 24684  				i = _tuple$2[2];
 24685  				if (afterIndex && p.fmt.fmtFlags.widPresent) {
 24686  					p.goodArgNum = false;
 24687  				}
 24688  			/* } */ case 18:
 24689  			/* */ if ((i + 1 >> 0) < end && (format.charCodeAt(i) === 46)) { $s = 20; continue; }
 24690  			/* */ $s = 21; continue;
 24691  			/* if ((i + 1 >> 0) < end && (format.charCodeAt(i) === 46)) { */ case 20:
 24692  				i = i + (1) >> 0;
 24693  				if (afterIndex) {
 24694  					p.goodArgNum = false;
 24695  				}
 24696  				_tuple$3 = p.argNumber(argNum, format, i, a.$length);
 24697  				argNum = _tuple$3[0];
 24698  				i = _tuple$3[1];
 24699  				afterIndex = _tuple$3[2];
 24700  				/* */ if (i < end && (format.charCodeAt(i) === 42)) { $s = 22; continue; }
 24701  				/* */ $s = 23; continue;
 24702  				/* if (i < end && (format.charCodeAt(i) === 42)) { */ case 22:
 24703  					i = i + (1) >> 0;
 24704  					_r$1 = intFromArg(a, argNum); /* */ $s = 25; case 25: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 24705  					_tuple$4 = _r$1;
 24706  					p.fmt.prec = _tuple$4[0];
 24707  					p.fmt.fmtFlags.precPresent = _tuple$4[1];
 24708  					argNum = _tuple$4[2];
 24709  					if (p.fmt.prec < 0) {
 24710  						p.fmt.prec = 0;
 24711  						p.fmt.fmtFlags.precPresent = false;
 24712  					}
 24713  					if (!p.fmt.fmtFlags.precPresent) {
 24714  						(p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString("%!(BADPREC)");
 24715  					}
 24716  					afterIndex = false;
 24717  					$s = 24; continue;
 24718  				/* } else { */ case 23:
 24719  					_tuple$5 = parsenum(format, i, end);
 24720  					p.fmt.prec = _tuple$5[0];
 24721  					p.fmt.fmtFlags.precPresent = _tuple$5[1];
 24722  					i = _tuple$5[2];
 24723  					if (!p.fmt.fmtFlags.precPresent) {
 24724  						p.fmt.prec = 0;
 24725  						p.fmt.fmtFlags.precPresent = true;
 24726  					}
 24727  				/* } */ case 24:
 24728  			/* } */ case 21:
 24729  			if (!afterIndex) {
 24730  				_tuple$6 = p.argNumber(argNum, format, i, a.$length);
 24731  				argNum = _tuple$6[0];
 24732  				i = _tuple$6[1];
 24733  				afterIndex = _tuple$6[2];
 24734  			}
 24735  			if (i >= end) {
 24736  				(p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString("%!(NOVERB)");
 24737  				/* break; */ $s = 2; continue;
 24738  			}
 24739  			_tmp = ((format.charCodeAt(i) >> 0));
 24740  			_tmp$1 = 1;
 24741  			verb = _tmp;
 24742  			size = _tmp$1;
 24743  			if (verb >= 128) {
 24744  				_tuple$7 = utf8.DecodeRuneInString($substring(format, i));
 24745  				verb = _tuple$7[0];
 24746  				size = _tuple$7[1];
 24747  			}
 24748  			i = i + (size) >> 0;
 24749  				/* */ if ((verb === 37)) { $s = 27; continue; }
 24750  				/* */ if (!p.goodArgNum) { $s = 28; continue; }
 24751  				/* */ if (argNum >= a.$length) { $s = 29; continue; }
 24752  				/* */ if ((verb === 118)) { $s = 30; continue; }
 24753  				/* */ $s = 31; continue;
 24754  				/* if ((verb === 37)) { */ case 27:
 24755  					(p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteByte(37);
 24756  					$s = 32; continue;
 24757  				/* } else if (!p.goodArgNum) { */ case 28:
 24758  					p.badArgNum(verb);
 24759  					$s = 32; continue;
 24760  				/* } else if (argNum >= a.$length) { */ case 29:
 24761  					p.missingArg(verb);
 24762  					$s = 32; continue;
 24763  				/* } else if ((verb === 118)) { */ case 30:
 24764  					p.fmt.fmtFlags.sharpV = p.fmt.fmtFlags.sharp;
 24765  					p.fmt.fmtFlags.sharp = false;
 24766  					p.fmt.fmtFlags.plusV = p.fmt.fmtFlags.plus;
 24767  					p.fmt.fmtFlags.plus = false;
 24768  					$r = p.printArg(((argNum < 0 || argNum >= a.$length) ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + argNum]), verb); /* */ $s = 33; case 33: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 24769  					argNum = argNum + (1) >> 0;
 24770  					$s = 32; continue;
 24771  				/* } else { */ case 31:
 24772  					$r = p.printArg(((argNum < 0 || argNum >= a.$length) ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + argNum]), verb); /* */ $s = 34; case 34: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 24773  					argNum = argNum + (1) >> 0;
 24774  				/* } */ case 32:
 24775  			case 26:
 24776  		/* } */ $s = 1; continue; case 2:
 24777  		/* */ if (!p.reordered && argNum < a.$length) { $s = 35; continue; }
 24778  		/* */ $s = 36; continue;
 24779  		/* if (!p.reordered && argNum < a.$length) { */ case 35:
 24780  			p.fmt.clearflags();
 24781  			(p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString("%!(EXTRA ");
 24782  			_ref = $subslice(a, argNum);
 24783  			_i = 0;
 24784  			/* while (true) { */ case 37:
 24785  				/* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 38; continue; }
 24786  				i$1 = _i;
 24787  				arg = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
 24788  				if (i$1 > 0) {
 24789  					(p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString(", ");
 24790  				}
 24791  				/* */ if ($interfaceIsEqual(arg, $ifaceNil)) { $s = 39; continue; }
 24792  				/* */ $s = 40; continue;
 24793  				/* if ($interfaceIsEqual(arg, $ifaceNil)) { */ case 39:
 24794  					(p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString("<nil>");
 24795  					$s = 41; continue;
 24796  				/* } else { */ case 40:
 24797  					_r$2 = reflect.TypeOf(arg).String(); /* */ $s = 42; case 42: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 24798  					$r = (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString(_r$2); /* */ $s = 43; case 43: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 24799  					(p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteByte(61);
 24800  					$r = p.printArg(arg, 118); /* */ $s = 44; case 44: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 24801  				/* } */ case 41:
 24802  				_i++;
 24803  			/* } */ $s = 37; continue; case 38:
 24804  			(p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteByte(41);
 24805  		/* } */ case 36:
 24806  		$s = -1; return;
 24807  		/* */ } return; } if ($f === undefined) { $f = { $blk: pp.ptr.prototype.doPrintf }; } $f._1 = _1; $f._i = _i; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._ref = _ref; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f._tuple$4 = _tuple$4; $f._tuple$5 = _tuple$5; $f._tuple$6 = _tuple$6; $f._tuple$7 = _tuple$7; $f.a = a; $f.afterIndex = afterIndex; $f.arg = arg; $f.argNum = argNum; $f.c = c; $f.end = end; $f.format = format; $f.i = i; $f.i$1 = i$1; $f.lasti = lasti; $f.p = p; $f.size = size; $f.verb = verb; $f.$s = $s; $f.$r = $r; return $f;
 24808  	};
 24809  	pp.prototype.doPrintf = function(format, a) { return this.$val.doPrintf(format, a); };
 24810  	pp.ptr.prototype.doPrint = function(a) {
 24811  		var _i, _r, _ref, _v, a, arg, argNum, isString, p, prevString, $s, $r;
 24812  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _i = $f._i; _r = $f._r; _ref = $f._ref; _v = $f._v; a = $f.a; arg = $f.arg; argNum = $f.argNum; isString = $f.isString; p = $f.p; prevString = $f.prevString; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 24813  		p = this;
 24814  		prevString = false;
 24815  		_ref = a;
 24816  		_i = 0;
 24817  		/* while (true) { */ case 1:
 24818  			/* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; }
 24819  			argNum = _i;
 24820  			arg = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
 24821  			if (!(!($interfaceIsEqual(arg, $ifaceNil)))) { _v = false; $s = 3; continue s; }
 24822  			_r = reflect.TypeOf(arg).Kind(); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 24823  			_v = _r === 24; case 3:
 24824  			isString = _v;
 24825  			if (argNum > 0 && !isString && !prevString) {
 24826  				(p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteByte(32);
 24827  			}
 24828  			$r = p.printArg(arg, 118); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 24829  			prevString = isString;
 24830  			_i++;
 24831  		/* } */ $s = 1; continue; case 2:
 24832  		$s = -1; return;
 24833  		/* */ } return; } if ($f === undefined) { $f = { $blk: pp.ptr.prototype.doPrint }; } $f._i = _i; $f._r = _r; $f._ref = _ref; $f._v = _v; $f.a = a; $f.arg = arg; $f.argNum = argNum; $f.isString = isString; $f.p = p; $f.prevString = prevString; $f.$s = $s; $f.$r = $r; return $f;
 24834  	};
 24835  	pp.prototype.doPrint = function(a) { return this.$val.doPrint(a); };
 24836  	pp.ptr.prototype.doPrintln = function(a) {
 24837  		var _i, _ref, a, arg, argNum, p, $s, $r;
 24838  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _i = $f._i; _ref = $f._ref; a = $f.a; arg = $f.arg; argNum = $f.argNum; p = $f.p; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 24839  		p = this;
 24840  		_ref = a;
 24841  		_i = 0;
 24842  		/* while (true) { */ case 1:
 24843  			/* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; }
 24844  			argNum = _i;
 24845  			arg = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
 24846  			if (argNum > 0) {
 24847  				(p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteByte(32);
 24848  			}
 24849  			$r = p.printArg(arg, 118); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 24850  			_i++;
 24851  		/* } */ $s = 1; continue; case 2:
 24852  		(p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteByte(10);
 24853  		$s = -1; return;
 24854  		/* */ } return; } if ($f === undefined) { $f = { $blk: pp.ptr.prototype.doPrintln }; } $f._i = _i; $f._ref = _ref; $f.a = a; $f.arg = arg; $f.argNum = argNum; $f.p = p; $f.$s = $s; $f.$r = $r; return $f;
 24855  	};
 24856  	pp.prototype.doPrintln = function(a) { return this.$val.doPrintln(a); };
 24857  	ss.ptr.prototype.Read = function(buf) {
 24858  		var _tmp, _tmp$1, buf, err, n, s;
 24859  		n = 0;
 24860  		err = $ifaceNil;
 24861  		s = this;
 24862  		_tmp = 0;
 24863  		_tmp$1 = errors.New("ScanState's Read should not be called. Use ReadRune");
 24864  		n = _tmp;
 24865  		err = _tmp$1;
 24866  		return [n, err];
 24867  	};
 24868  	ss.prototype.Read = function(buf) { return this.$val.Read(buf); };
 24869  	ss.ptr.prototype.ReadRune = function() {
 24870  		var _r, _tuple, err, r, s, size, $s, $r;
 24871  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; err = $f.err; r = $f.r; s = $f.s; size = $f.size; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 24872  		r = 0;
 24873  		size = 0;
 24874  		err = $ifaceNil;
 24875  		s = this;
 24876  		if (s.atEOF || s.count >= s.ssave.argLimit) {
 24877  			err = io.EOF;
 24878  			$s = -1; return [r, size, err];
 24879  		}
 24880  		_r = s.rs.ReadRune(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 24881  		_tuple = _r;
 24882  		r = _tuple[0];
 24883  		size = _tuple[1];
 24884  		err = _tuple[2];
 24885  		if ($interfaceIsEqual(err, $ifaceNil)) {
 24886  			s.count = s.count + (1) >> 0;
 24887  			if (s.ssave.nlIsEnd && (r === 10)) {
 24888  				s.atEOF = true;
 24889  			}
 24890  		} else if ($interfaceIsEqual(err, io.EOF)) {
 24891  			s.atEOF = true;
 24892  		}
 24893  		$s = -1; return [r, size, err];
 24894  		/* */ } return; } if ($f === undefined) { $f = { $blk: ss.ptr.prototype.ReadRune }; } $f._r = _r; $f._tuple = _tuple; $f.err = err; $f.r = r; $f.s = s; $f.size = size; $f.$s = $s; $f.$r = $r; return $f;
 24895  	};
 24896  	ss.prototype.ReadRune = function() { return this.$val.ReadRune(); };
 24897  	ss.ptr.prototype.Width = function() {
 24898  		var _tmp, _tmp$1, _tmp$2, _tmp$3, ok, s, wid;
 24899  		wid = 0;
 24900  		ok = false;
 24901  		s = this;
 24902  		if (s.ssave.maxWid === 1073741824) {
 24903  			_tmp = 0;
 24904  			_tmp$1 = false;
 24905  			wid = _tmp;
 24906  			ok = _tmp$1;
 24907  			return [wid, ok];
 24908  		}
 24909  		_tmp$2 = s.ssave.maxWid;
 24910  		_tmp$3 = true;
 24911  		wid = _tmp$2;
 24912  		ok = _tmp$3;
 24913  		return [wid, ok];
 24914  	};
 24915  	ss.prototype.Width = function() { return this.$val.Width(); };
 24916  	ss.ptr.prototype.getRune = function() {
 24917  		var _r, _tuple, err, r, s, $s, $r;
 24918  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; err = $f.err; r = $f.r; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 24919  		r = 0;
 24920  		s = this;
 24921  		_r = s.ReadRune(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 24922  		_tuple = _r;
 24923  		r = _tuple[0];
 24924  		err = _tuple[2];
 24925  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 24926  			if ($interfaceIsEqual(err, io.EOF)) {
 24927  				r = -1;
 24928  				$s = -1; return r;
 24929  			}
 24930  			s.error(err);
 24931  		}
 24932  		$s = -1; return r;
 24933  		/* */ } return; } if ($f === undefined) { $f = { $blk: ss.ptr.prototype.getRune }; } $f._r = _r; $f._tuple = _tuple; $f.err = err; $f.r = r; $f.s = s; $f.$s = $s; $f.$r = $r; return $f;
 24934  	};
 24935  	ss.prototype.getRune = function() { return this.$val.getRune(); };
 24936  	ss.ptr.prototype.UnreadRune = function() {
 24937  		var _r, s, $s, $r;
 24938  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 24939  		s = this;
 24940  		_r = s.rs.UnreadRune(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 24941  		_r;
 24942  		s.atEOF = false;
 24943  		s.count = s.count - (1) >> 0;
 24944  		$s = -1; return $ifaceNil;
 24945  		/* */ } return; } if ($f === undefined) { $f = { $blk: ss.ptr.prototype.UnreadRune }; } $f._r = _r; $f.s = s; $f.$s = $s; $f.$r = $r; return $f;
 24946  	};
 24947  	ss.prototype.UnreadRune = function() { return this.$val.UnreadRune(); };
 24948  	ss.ptr.prototype.error = function(err) {
 24949  		var err, s, x;
 24950  		s = this;
 24951  		$panic((x = new scanError.ptr(err), new x.constructor.elem(x)));
 24952  	};
 24953  	ss.prototype.error = function(err) { return this.$val.error(err); };
 24954  	ss.ptr.prototype.errorString = function(err) {
 24955  		var err, s, x;
 24956  		s = this;
 24957  		$panic((x = new scanError.ptr(errors.New(err)), new x.constructor.elem(x)));
 24958  	};
 24959  	ss.prototype.errorString = function(err) { return this.$val.errorString(err); };
 24960  	ss.ptr.prototype.Token = function(skipSpace, f) {
 24961  		var _r, err, f, s, skipSpace, tok, $s, $deferred, $r;
 24962  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; err = $f.err; f = $f.f; s = $f.s; skipSpace = $f.skipSpace; tok = $f.tok; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
 24963  		err = [err];
 24964  		tok = sliceType$2.nil;
 24965  		err[0] = $ifaceNil;
 24966  		s = this;
 24967  		$deferred.push([(function(err) { return function() {
 24968  			var _tuple, e, ok, se;
 24969  			e = $recover();
 24970  			if (!($interfaceIsEqual(e, $ifaceNil))) {
 24971  				_tuple = $assertType(e, scanError, true);
 24972  				se = $clone(_tuple[0], scanError);
 24973  				ok = _tuple[1];
 24974  				if (ok) {
 24975  					err[0] = se.err;
 24976  				} else {
 24977  					$panic(e);
 24978  				}
 24979  			}
 24980  		}; })(err), []]);
 24981  		if (f === $throwNilPointerError) {
 24982  			f = notSpace;
 24983  		}
 24984  		s.buf = $subslice(s.buf, 0, 0);
 24985  		_r = s.token(skipSpace, f); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 24986  		tok = _r;
 24987  		$s = -1; return [tok, err[0]];
 24988  		/* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if (!$curGoroutine.asleep) { return  [tok, err[0]]; } if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: ss.ptr.prototype.Token }; } $f._r = _r; $f.err = err; $f.f = f; $f.s = s; $f.skipSpace = skipSpace; $f.tok = tok; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
 24989  	};
 24990  	ss.prototype.Token = function(skipSpace, f) { return this.$val.Token(skipSpace, f); };
 24991  	isSpace = function(r) {
 24992  		var _i, _ref, r, rng, rx;
 24993  		if (r >= 65536) {
 24994  			return false;
 24995  		}
 24996  		rx = ((r << 16 >>> 16));
 24997  		_ref = space;
 24998  		_i = 0;
 24999  		while (true) {
 25000  			if (!(_i < _ref.$length)) { break; }
 25001  			rng = $clone(((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]), arrayType$1);
 25002  			if (rx < rng[0]) {
 25003  				return false;
 25004  			}
 25005  			if (rx <= rng[1]) {
 25006  				return true;
 25007  			}
 25008  			_i++;
 25009  		}
 25010  		return false;
 25011  	};
 25012  	notSpace = function(r) {
 25013  		var r;
 25014  		return !isSpace(r);
 25015  	};
 25016  	ss.ptr.prototype.free = function(old) {
 25017  		var old, s;
 25018  		s = this;
 25019  		if (old.validSave) {
 25020  			ssave.copy(s.ssave, old);
 25021  			return;
 25022  		}
 25023  		if (s.buf.$capacity > 1024) {
 25024  			return;
 25025  		}
 25026  		s.buf = $subslice(s.buf, 0, 0);
 25027  		s.rs = $ifaceNil;
 25028  		ssFree.Put(s);
 25029  	};
 25030  	ss.prototype.free = function(old) { return this.$val.free(old); };
 25031  	ss.ptr.prototype.SkipSpace = function() {
 25032  		var _r, _r$1, _r$2, _v, r, s, $s, $r;
 25033  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _v = $f._v; r = $f.r; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 25034  		s = this;
 25035  		/* while (true) { */ case 1:
 25036  			_r = s.getRune(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 25037  			r = _r;
 25038  			if (r === -1) {
 25039  				$s = -1; return;
 25040  			}
 25041  			if (!(r === 13)) { _v = false; $s = 6; continue s; }
 25042  			_r$1 = s.peek("\n"); /* */ $s = 7; case 7: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 25043  			_v = _r$1; case 6:
 25044  			/* */ if (_v) { $s = 4; continue; }
 25045  			/* */ $s = 5; continue;
 25046  			/* if (_v) { */ case 4:
 25047  				/* continue; */ $s = 1; continue;
 25048  			/* } */ case 5:
 25049  			/* */ if (r === 10) { $s = 8; continue; }
 25050  			/* */ $s = 9; continue;
 25051  			/* if (r === 10) { */ case 8:
 25052  				if (s.ssave.nlIsSpace) {
 25053  					/* continue; */ $s = 1; continue;
 25054  				}
 25055  				s.errorString("unexpected newline");
 25056  				$s = -1; return;
 25057  			/* } */ case 9:
 25058  			/* */ if (!isSpace(r)) { $s = 10; continue; }
 25059  			/* */ $s = 11; continue;
 25060  			/* if (!isSpace(r)) { */ case 10:
 25061  				_r$2 = s.UnreadRune(); /* */ $s = 12; case 12: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 25062  				_r$2;
 25063  				/* break; */ $s = 2; continue;
 25064  			/* } */ case 11:
 25065  		/* } */ $s = 1; continue; case 2:
 25066  		$s = -1; return;
 25067  		/* */ } return; } if ($f === undefined) { $f = { $blk: ss.ptr.prototype.SkipSpace }; } $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._v = _v; $f.r = r; $f.s = s; $f.$s = $s; $f.$r = $r; return $f;
 25068  	};
 25069  	ss.prototype.SkipSpace = function() { return this.$val.SkipSpace(); };
 25070  	ss.ptr.prototype.token = function(skipSpace, f) {
 25071  		var _r, _r$1, _r$2, f, r, s, skipSpace, x, $s, $r;
 25072  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; f = $f.f; r = $f.r; s = $f.s; skipSpace = $f.skipSpace; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 25073  		s = this;
 25074  		/* */ if (skipSpace) { $s = 1; continue; }
 25075  		/* */ $s = 2; continue;
 25076  		/* if (skipSpace) { */ case 1:
 25077  			$r = s.SkipSpace(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 25078  		/* } */ case 2:
 25079  		/* while (true) { */ case 4:
 25080  			_r = s.getRune(); /* */ $s = 6; case 6: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 25081  			r = _r;
 25082  			if (r === -1) {
 25083  				/* break; */ $s = 5; continue;
 25084  			}
 25085  			_r$1 = f(r); /* */ $s = 9; case 9: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 25086  			/* */ if (!_r$1) { $s = 7; continue; }
 25087  			/* */ $s = 8; continue;
 25088  			/* if (!_r$1) { */ case 7:
 25089  				_r$2 = s.UnreadRune(); /* */ $s = 10; case 10: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 25090  				_r$2;
 25091  				/* break; */ $s = 5; continue;
 25092  			/* } */ case 8:
 25093  			(s.$ptr_buf || (s.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, s))).WriteRune(r);
 25094  		/* } */ $s = 4; continue; case 5:
 25095  		$s = -1; return (x = s.buf, $subslice(new sliceType$2(x.$array), x.$offset, x.$offset + x.$length));
 25096  		/* */ } return; } if ($f === undefined) { $f = { $blk: ss.ptr.prototype.token }; } $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f.f = f; $f.r = r; $f.s = s; $f.skipSpace = skipSpace; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
 25097  	};
 25098  	ss.prototype.token = function(skipSpace, f) { return this.$val.token(skipSpace, f); };
 25099  	indexRune = function(s, r) {
 25100  		var _i, _ref, _rune, c, i, r, s;
 25101  		_ref = s;
 25102  		_i = 0;
 25103  		while (true) {
 25104  			if (!(_i < _ref.length)) { break; }
 25105  			_rune = $decodeRune(_ref, _i);
 25106  			i = _i;
 25107  			c = _rune[0];
 25108  			if (c === r) {
 25109  				return i;
 25110  			}
 25111  			_i += _rune[1];
 25112  		}
 25113  		return -1;
 25114  	};
 25115  	ss.ptr.prototype.peek = function(ok) {
 25116  		var _r, _r$1, ok, r, s, $s, $r;
 25117  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; ok = $f.ok; r = $f.r; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 25118  		s = this;
 25119  		_r = s.getRune(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 25120  		r = _r;
 25121  		/* */ if (!((r === -1))) { $s = 2; continue; }
 25122  		/* */ $s = 3; continue;
 25123  		/* if (!((r === -1))) { */ case 2:
 25124  			_r$1 = s.UnreadRune(); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 25125  			_r$1;
 25126  		/* } */ case 3:
 25127  		$s = -1; return indexRune(ok, r) >= 0;
 25128  		/* */ } return; } if ($f === undefined) { $f = { $blk: ss.ptr.prototype.peek }; } $f._r = _r; $f._r$1 = _r$1; $f.ok = ok; $f.r = r; $f.s = s; $f.$s = $s; $f.$r = $r; return $f;
 25129  	};
 25130  	ss.prototype.peek = function(ok) { return this.$val.peek(ok); };
 25131  	ptrType$25.methods = [{prop: "clearflags", name: "clearflags", pkg: "fmt", typ: $funcType([], [], false)}, {prop: "init", name: "init", pkg: "fmt", typ: $funcType([ptrType$1], [], false)}, {prop: "writePadding", name: "writePadding", pkg: "fmt", typ: $funcType([$Int], [], false)}, {prop: "pad", name: "pad", pkg: "fmt", typ: $funcType([sliceType$2], [], false)}, {prop: "padString", name: "padString", pkg: "fmt", typ: $funcType([$String], [], false)}, {prop: "fmt_boolean", name: "fmt_boolean", pkg: "fmt", typ: $funcType([$Bool], [], false)}, {prop: "fmt_unicode", name: "fmt_unicode", pkg: "fmt", typ: $funcType([$Uint64], [], false)}, {prop: "fmt_integer", name: "fmt_integer", pkg: "fmt", typ: $funcType([$Uint64, $Int, $Bool, $String], [], false)}, {prop: "truncate", name: "truncate", pkg: "fmt", typ: $funcType([$String], [$String], false)}, {prop: "fmt_s", name: "fmt_s", pkg: "fmt", typ: $funcType([$String], [], false)}, {prop: "fmt_sbx", name: "fmt_sbx", pkg: "fmt", typ: $funcType([$String, sliceType$2, $String], [], false)}, {prop: "fmt_sx", name: "fmt_sx", pkg: "fmt", typ: $funcType([$String, $String], [], false)}, {prop: "fmt_bx", name: "fmt_bx", pkg: "fmt", typ: $funcType([sliceType$2, $String], [], false)}, {prop: "fmt_q", name: "fmt_q", pkg: "fmt", typ: $funcType([$String], [], false)}, {prop: "fmt_c", name: "fmt_c", pkg: "fmt", typ: $funcType([$Uint64], [], false)}, {prop: "fmt_qc", name: "fmt_qc", pkg: "fmt", typ: $funcType([$Uint64], [], false)}, {prop: "fmt_float", name: "fmt_float", pkg: "fmt", typ: $funcType([$Float64, $Int, $Int32, $Int], [], false)}];
 25132  	ptrType$1.methods = [{prop: "Write", name: "Write", pkg: "", typ: $funcType([sliceType$2], [], false)}, {prop: "WriteString", name: "WriteString", pkg: "", typ: $funcType([$String], [], false)}, {prop: "WriteByte", name: "WriteByte", pkg: "", typ: $funcType([$Uint8], [], false)}, {prop: "WriteRune", name: "WriteRune", pkg: "", typ: $funcType([$Int32], [], false)}];
 25133  	ptrType$2.methods = [{prop: "free", name: "free", pkg: "fmt", typ: $funcType([], [], false)}, {prop: "Width", name: "Width", pkg: "", typ: $funcType([], [$Int, $Bool], false)}, {prop: "Precision", name: "Precision", pkg: "", typ: $funcType([], [$Int, $Bool], false)}, {prop: "Flag", name: "Flag", pkg: "", typ: $funcType([$Int], [$Bool], false)}, {prop: "Write", name: "Write", pkg: "", typ: $funcType([sliceType$2], [$Int, $error], false)}, {prop: "WriteString", name: "WriteString", pkg: "", typ: $funcType([$String], [$Int, $error], false)}, {prop: "unknownType", name: "unknownType", pkg: "fmt", typ: $funcType([reflect.Value], [], false)}, {prop: "badVerb", name: "badVerb", pkg: "fmt", typ: $funcType([$Int32], [], false)}, {prop: "fmtBool", name: "fmtBool", pkg: "fmt", typ: $funcType([$Bool, $Int32], [], false)}, {prop: "fmt0x64", name: "fmt0x64", pkg: "fmt", typ: $funcType([$Uint64, $Bool], [], false)}, {prop: "fmtInteger", name: "fmtInteger", pkg: "fmt", typ: $funcType([$Uint64, $Bool, $Int32], [], false)}, {prop: "fmtFloat", name: "fmtFloat", pkg: "fmt", typ: $funcType([$Float64, $Int, $Int32], [], false)}, {prop: "fmtComplex", name: "fmtComplex", pkg: "fmt", typ: $funcType([$Complex128, $Int, $Int32], [], false)}, {prop: "fmtString", name: "fmtString", pkg: "fmt", typ: $funcType([$String, $Int32], [], false)}, {prop: "fmtBytes", name: "fmtBytes", pkg: "fmt", typ: $funcType([sliceType$2, $Int32, $String], [], false)}, {prop: "fmtPointer", name: "fmtPointer", pkg: "fmt", typ: $funcType([reflect.Value, $Int32], [], false)}, {prop: "catchPanic", name: "catchPanic", pkg: "fmt", typ: $funcType([$emptyInterface, $Int32], [], false)}, {prop: "handleMethods", name: "handleMethods", pkg: "fmt", typ: $funcType([$Int32], [$Bool], false)}, {prop: "printArg", name: "printArg", pkg: "fmt", typ: $funcType([$emptyInterface, $Int32], [], false)}, {prop: "printValue", name: "printValue", pkg: "fmt", typ: $funcType([reflect.Value, $Int32, $Int], [], false)}, {prop: "argNumber", name: "argNumber", pkg: "fmt", typ: $funcType([$Int, $String, $Int, $Int], [$Int, $Int, $Bool], false)}, {prop: "badArgNum", name: "badArgNum", pkg: "fmt", typ: $funcType([$Int32], [], false)}, {prop: "missingArg", name: "missingArg", pkg: "fmt", typ: $funcType([$Int32], [], false)}, {prop: "doPrintf", name: "doPrintf", pkg: "fmt", typ: $funcType([$String, sliceType], [], false)}, {prop: "doPrint", name: "doPrint", pkg: "fmt", typ: $funcType([sliceType], [], false)}, {prop: "doPrintln", name: "doPrintln", pkg: "fmt", typ: $funcType([sliceType], [], false)}];
 25134  	ptrType$5.methods = [{prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType$2], [$Int, $error], false)}, {prop: "ReadRune", name: "ReadRune", pkg: "", typ: $funcType([], [$Int32, $Int, $error], false)}, {prop: "Width", name: "Width", pkg: "", typ: $funcType([], [$Int, $Bool], false)}, {prop: "getRune", name: "getRune", pkg: "fmt", typ: $funcType([], [$Int32], false)}, {prop: "mustReadRune", name: "mustReadRune", pkg: "fmt", typ: $funcType([], [$Int32], false)}, {prop: "UnreadRune", name: "UnreadRune", pkg: "", typ: $funcType([], [$error], false)}, {prop: "error", name: "error", pkg: "fmt", typ: $funcType([$error], [], false)}, {prop: "errorString", name: "errorString", pkg: "fmt", typ: $funcType([$String], [], false)}, {prop: "Token", name: "Token", pkg: "", typ: $funcType([$Bool, funcType], [sliceType$2, $error], false)}, {prop: "free", name: "free", pkg: "fmt", typ: $funcType([ssave], [], false)}, {prop: "SkipSpace", name: "SkipSpace", pkg: "", typ: $funcType([], [], false)}, {prop: "token", name: "token", pkg: "fmt", typ: $funcType([$Bool, funcType], [sliceType$2], false)}, {prop: "consume", name: "consume", pkg: "fmt", typ: $funcType([$String, $Bool], [$Bool], false)}, {prop: "peek", name: "peek", pkg: "fmt", typ: $funcType([$String], [$Bool], false)}, {prop: "notEOF", name: "notEOF", pkg: "fmt", typ: $funcType([], [], false)}, {prop: "accept", name: "accept", pkg: "fmt", typ: $funcType([$String], [$Bool], false)}, {prop: "okVerb", name: "okVerb", pkg: "fmt", typ: $funcType([$Int32, $String, $String], [$Bool], false)}, {prop: "scanBool", name: "scanBool", pkg: "fmt", typ: $funcType([$Int32], [$Bool], false)}, {prop: "getBase", name: "getBase", pkg: "fmt", typ: $funcType([$Int32], [$Int, $String], false)}, {prop: "scanNumber", name: "scanNumber", pkg: "fmt", typ: $funcType([$String, $Bool], [$String], false)}, {prop: "scanRune", name: "scanRune", pkg: "fmt", typ: $funcType([$Int], [$Int64], false)}, {prop: "scanBasePrefix", name: "scanBasePrefix", pkg: "fmt", typ: $funcType([], [$Int, $String, $Bool], false)}, {prop: "scanInt", name: "scanInt", pkg: "fmt", typ: $funcType([$Int32, $Int], [$Int64], false)}, {prop: "scanUint", name: "scanUint", pkg: "fmt", typ: $funcType([$Int32, $Int], [$Uint64], false)}, {prop: "floatToken", name: "floatToken", pkg: "fmt", typ: $funcType([], [$String], false)}, {prop: "complexTokens", name: "complexTokens", pkg: "fmt", typ: $funcType([], [$String, $String], false)}, {prop: "convertFloat", name: "convertFloat", pkg: "fmt", typ: $funcType([$String, $Int], [$Float64], false)}, {prop: "scanComplex", name: "scanComplex", pkg: "fmt", typ: $funcType([$Int32, $Int], [$Complex128], false)}, {prop: "convertString", name: "convertString", pkg: "fmt", typ: $funcType([$Int32], [$String], false)}, {prop: "quotedString", name: "quotedString", pkg: "fmt", typ: $funcType([], [$String], false)}, {prop: "hexByte", name: "hexByte", pkg: "fmt", typ: $funcType([], [$Uint8, $Bool], false)}, {prop: "hexString", name: "hexString", pkg: "fmt", typ: $funcType([], [$String], false)}, {prop: "scanOne", name: "scanOne", pkg: "fmt", typ: $funcType([$Int32, $emptyInterface], [], false)}, {prop: "doScan", name: "doScan", pkg: "fmt", typ: $funcType([sliceType], [$Int, $error], false)}, {prop: "advance", name: "advance", pkg: "fmt", typ: $funcType([$String], [$Int], false)}, {prop: "doScanf", name: "doScanf", pkg: "fmt", typ: $funcType([$String, sliceType], [$Int, $error], false)}];
 25135  	fmtFlags.init("fmt", [{prop: "widPresent", name: "widPresent", anonymous: false, exported: false, typ: $Bool, tag: ""}, {prop: "precPresent", name: "precPresent", anonymous: false, exported: false, typ: $Bool, tag: ""}, {prop: "minus", name: "minus", anonymous: false, exported: false, typ: $Bool, tag: ""}, {prop: "plus", name: "plus", anonymous: false, exported: false, typ: $Bool, tag: ""}, {prop: "sharp", name: "sharp", anonymous: false, exported: false, typ: $Bool, tag: ""}, {prop: "space", name: "space", anonymous: false, exported: false, typ: $Bool, tag: ""}, {prop: "zero", name: "zero", anonymous: false, exported: false, typ: $Bool, tag: ""}, {prop: "plusV", name: "plusV", anonymous: false, exported: false, typ: $Bool, tag: ""}, {prop: "sharpV", name: "sharpV", anonymous: false, exported: false, typ: $Bool, tag: ""}]);
 25136  	fmt.init("fmt", [{prop: "buf", name: "buf", anonymous: false, exported: false, typ: ptrType$1, tag: ""}, {prop: "fmtFlags", name: "fmtFlags", anonymous: true, exported: false, typ: fmtFlags, tag: ""}, {prop: "wid", name: "wid", anonymous: false, exported: false, typ: $Int, tag: ""}, {prop: "prec", name: "prec", anonymous: false, exported: false, typ: $Int, tag: ""}, {prop: "intbuf", name: "intbuf", anonymous: false, exported: false, typ: arrayType, tag: ""}]);
 25137  	State.init([{prop: "Flag", name: "Flag", pkg: "", typ: $funcType([$Int], [$Bool], false)}, {prop: "Precision", name: "Precision", pkg: "", typ: $funcType([], [$Int, $Bool], false)}, {prop: "Width", name: "Width", pkg: "", typ: $funcType([], [$Int, $Bool], false)}, {prop: "Write", name: "Write", pkg: "", typ: $funcType([sliceType$2], [$Int, $error], false)}]);
 25138  	Formatter.init([{prop: "Format", name: "Format", pkg: "", typ: $funcType([State, $Int32], [], false)}]);
 25139  	Stringer.init([{prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}]);
 25140  	GoStringer.init([{prop: "GoString", name: "GoString", pkg: "", typ: $funcType([], [$String], false)}]);
 25141  	buffer.init($Uint8);
 25142  	pp.init("fmt", [{prop: "buf", name: "buf", anonymous: false, exported: false, typ: buffer, tag: ""}, {prop: "arg", name: "arg", anonymous: false, exported: false, typ: $emptyInterface, tag: ""}, {prop: "value", name: "value", anonymous: false, exported: false, typ: reflect.Value, tag: ""}, {prop: "fmt", name: "fmt", anonymous: false, exported: false, typ: fmt, tag: ""}, {prop: "reordered", name: "reordered", anonymous: false, exported: false, typ: $Bool, tag: ""}, {prop: "goodArgNum", name: "goodArgNum", anonymous: false, exported: false, typ: $Bool, tag: ""}, {prop: "panicking", name: "panicking", anonymous: false, exported: false, typ: $Bool, tag: ""}, {prop: "erroring", name: "erroring", anonymous: false, exported: false, typ: $Bool, tag: ""}]);
 25143  	ScanState.init([{prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType$2], [$Int, $error], false)}, {prop: "ReadRune", name: "ReadRune", pkg: "", typ: $funcType([], [$Int32, $Int, $error], false)}, {prop: "SkipSpace", name: "SkipSpace", pkg: "", typ: $funcType([], [], false)}, {prop: "Token", name: "Token", pkg: "", typ: $funcType([$Bool, funcType], [sliceType$2, $error], false)}, {prop: "UnreadRune", name: "UnreadRune", pkg: "", typ: $funcType([], [$error], false)}, {prop: "Width", name: "Width", pkg: "", typ: $funcType([], [$Int, $Bool], false)}]);
 25144  	scanError.init("fmt", [{prop: "err", name: "err", anonymous: false, exported: false, typ: $error, tag: ""}]);
 25145  	ss.init("fmt", [{prop: "rs", name: "rs", anonymous: false, exported: false, typ: io.RuneScanner, tag: ""}, {prop: "buf", name: "buf", anonymous: false, exported: false, typ: buffer, tag: ""}, {prop: "count", name: "count", anonymous: false, exported: false, typ: $Int, tag: ""}, {prop: "atEOF", name: "atEOF", anonymous: false, exported: false, typ: $Bool, tag: ""}, {prop: "ssave", name: "ssave", anonymous: true, exported: false, typ: ssave, tag: ""}]);
 25146  	ssave.init("fmt", [{prop: "validSave", name: "validSave", anonymous: false, exported: false, typ: $Bool, tag: ""}, {prop: "nlIsEnd", name: "nlIsEnd", anonymous: false, exported: false, typ: $Bool, tag: ""}, {prop: "nlIsSpace", name: "nlIsSpace", anonymous: false, exported: false, typ: $Bool, tag: ""}, {prop: "argLimit", name: "argLimit", anonymous: false, exported: false, typ: $Int, tag: ""}, {prop: "limit", name: "limit", anonymous: false, exported: false, typ: $Int, tag: ""}, {prop: "maxWid", name: "maxWid", anonymous: false, exported: false, typ: $Int, tag: ""}]);
 25147  	$init = function() {
 25148  		$pkg.$init = function() {};
 25149  		/* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 25150  		$r = errors.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 25151  		$r = io.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 25152  		$r = math.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 25153  		$r = os.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 25154  		$r = reflect.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 25155  		$r = strconv.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 25156  		$r = sync.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 25157  		$r = utf8.$init(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 25158  		ppFree = new sync.Pool.ptr(0, 0, sliceType.nil, (function() {
 25159  			return new pp.ptr(buffer.nil, $ifaceNil, new reflect.Value.ptr(ptrType.nil, 0, 0), new fmt.ptr(ptrType$1.nil, new fmtFlags.ptr(false, false, false, false, false, false, false, false, false), 0, 0, arrayType.zero()), false, false, false, false);
 25160  		}));
 25161  		space = new sliceType$1([$toNativeArray($kindUint16, [9, 13]), $toNativeArray($kindUint16, [32, 32]), $toNativeArray($kindUint16, [133, 133]), $toNativeArray($kindUint16, [160, 160]), $toNativeArray($kindUint16, [5760, 5760]), $toNativeArray($kindUint16, [8192, 8202]), $toNativeArray($kindUint16, [8232, 8233]), $toNativeArray($kindUint16, [8239, 8239]), $toNativeArray($kindUint16, [8287, 8287]), $toNativeArray($kindUint16, [12288, 12288])]);
 25162  		ssFree = new sync.Pool.ptr(0, 0, sliceType.nil, (function() {
 25163  			return new ss.ptr($ifaceNil, buffer.nil, 0, false, new ssave.ptr(false, false, false, 0, 0, 0));
 25164  		}));
 25165  		complexError = errors.New("syntax error scanning complex number");
 25166  		boolError = errors.New("syntax error scanning boolean");
 25167  		/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
 25168  	};
 25169  	$pkg.$init = $init;
 25170  	return $pkg;
 25171  })();
 25172  $packages["sort"] = (function() {
 25173  	var $pkg = {}, $init, reflect, Interface, lessSwap, reverse, StringSlice, sliceType$2, funcType, funcType$1, Search, SearchStrings, Slice, insertionSort, siftDown, heapSort, medianOfThree, swapRange, doPivot, quickSort, Sort, maxDepth, Reverse, Strings, Stable, stable, symMerge, rotate, insertionSort_func, siftDown_func, heapSort_func, medianOfThree_func, doPivot_func, quickSort_func;
 25174  	reflect = $packages["reflect"];
 25175  	Interface = $pkg.Interface = $newType(8, $kindInterface, "sort.Interface", true, "sort", true, null);
 25176  	lessSwap = $pkg.lessSwap = $newType(0, $kindStruct, "sort.lessSwap", true, "sort", false, function(Less_, Swap_) {
 25177  		this.$val = this;
 25178  		if (arguments.length === 0) {
 25179  			this.Less = $throwNilPointerError;
 25180  			this.Swap = $throwNilPointerError;
 25181  			return;
 25182  		}
 25183  		this.Less = Less_;
 25184  		this.Swap = Swap_;
 25185  	});
 25186  	reverse = $pkg.reverse = $newType(0, $kindStruct, "sort.reverse", true, "sort", false, function(Interface_) {
 25187  		this.$val = this;
 25188  		if (arguments.length === 0) {
 25189  			this.Interface = $ifaceNil;
 25190  			return;
 25191  		}
 25192  		this.Interface = Interface_;
 25193  	});
 25194  	StringSlice = $pkg.StringSlice = $newType(12, $kindSlice, "sort.StringSlice", true, "sort", true, null);
 25195  	sliceType$2 = $sliceType($String);
 25196  	funcType = $funcType([$Int, $Int], [$Bool], false);
 25197  	funcType$1 = $funcType([$Int, $Int], [], false);
 25198  	Search = function(n, f) {
 25199  		var _r, _tmp, _tmp$1, f, h, i, j, n, $s, $r;
 25200  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; f = $f.f; h = $f.h; i = $f.i; j = $f.j; n = $f.n; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 25201  		_tmp = 0;
 25202  		_tmp$1 = n;
 25203  		i = _tmp;
 25204  		j = _tmp$1;
 25205  		/* while (true) { */ case 1:
 25206  			/* if (!(i < j)) { break; } */ if(!(i < j)) { $s = 2; continue; }
 25207  			h = ((((((i + j >> 0) >>> 0)) >>> 1 >>> 0) >> 0));
 25208  			_r = f(h); /* */ $s = 6; case 6: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 25209  			/* */ if (!_r) { $s = 3; continue; }
 25210  			/* */ $s = 4; continue;
 25211  			/* if (!_r) { */ case 3:
 25212  				i = h + 1 >> 0;
 25213  				$s = 5; continue;
 25214  			/* } else { */ case 4:
 25215  				j = h;
 25216  			/* } */ case 5:
 25217  		/* } */ $s = 1; continue; case 2:
 25218  		$s = -1; return i;
 25219  		/* */ } return; } if ($f === undefined) { $f = { $blk: Search }; } $f._r = _r; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f.f = f; $f.h = h; $f.i = i; $f.j = j; $f.n = n; $f.$s = $s; $f.$r = $r; return $f;
 25220  	};
 25221  	$pkg.Search = Search;
 25222  	SearchStrings = function(a, x) {
 25223  		var _r, a, x, $s, $r;
 25224  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; a = $f.a; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 25225  		a = [a];
 25226  		x = [x];
 25227  		_r = Search(a[0].$length, (function(a, x) { return function(i) {
 25228  			var i;
 25229  			return ((i < 0 || i >= a[0].$length) ? ($throwRuntimeError("index out of range"), undefined) : a[0].$array[a[0].$offset + i]) >= x[0];
 25230  		}; })(a, x)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 25231  		$s = -1; return _r;
 25232  		/* */ } return; } if ($f === undefined) { $f = { $blk: SearchStrings }; } $f._r = _r; $f.a = a; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
 25233  	};
 25234  	$pkg.SearchStrings = SearchStrings;
 25235  	StringSlice.prototype.Search = function(x) {
 25236  		var _r, p, x, $s, $r;
 25237  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; p = $f.p; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 25238  		p = this;
 25239  		_r = SearchStrings($subslice(new sliceType$2(p.$array), p.$offset, p.$offset + p.$length), x); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 25240  		$s = -1; return _r;
 25241  		/* */ } return; } if ($f === undefined) { $f = { $blk: StringSlice.prototype.Search }; } $f._r = _r; $f.p = p; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
 25242  	};
 25243  	$ptrType(StringSlice).prototype.Search = function(x) { return this.$get().Search(x); };
 25244  	Slice = function(slice, less) {
 25245  		var _r, _r$1, length, less, rv, slice, swap, $s, $r;
 25246  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; length = $f.length; less = $f.less; rv = $f.rv; slice = $f.slice; swap = $f.swap; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 25247  		_r = reflect.ValueOf(slice); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 25248  		rv = _r;
 25249  		_r$1 = reflect.Swapper(slice); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 25250  		swap = _r$1;
 25251  		length = $clone(rv, reflect.Value).Len();
 25252  		$r = quickSort_func(new lessSwap.ptr(less, swap), 0, length, maxDepth(length)); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 25253  		$s = -1; return;
 25254  		/* */ } return; } if ($f === undefined) { $f = { $blk: Slice }; } $f._r = _r; $f._r$1 = _r$1; $f.length = length; $f.less = less; $f.rv = rv; $f.slice = slice; $f.swap = swap; $f.$s = $s; $f.$r = $r; return $f;
 25255  	};
 25256  	$pkg.Slice = Slice;
 25257  	insertionSort = function(data, a, b) {
 25258  		var _r, _v, a, b, data, i, j, $s, $r;
 25259  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _v = $f._v; a = $f.a; b = $f.b; data = $f.data; i = $f.i; j = $f.j; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 25260  		i = a + 1 >> 0;
 25261  		/* while (true) { */ case 1:
 25262  			/* if (!(i < b)) { break; } */ if(!(i < b)) { $s = 2; continue; }
 25263  			j = i;
 25264  			/* while (true) { */ case 3:
 25265  				if (!(j > a)) { _v = false; $s = 5; continue s; }
 25266  				_r = data.Less(j, j - 1 >> 0); /* */ $s = 6; case 6: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 25267  				_v = _r; case 5:
 25268  				/* if (!(_v)) { break; } */ if(!(_v)) { $s = 4; continue; }
 25269  				$r = data.Swap(j, j - 1 >> 0); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 25270  				j = j - (1) >> 0;
 25271  			/* } */ $s = 3; continue; case 4:
 25272  			i = i + (1) >> 0;
 25273  		/* } */ $s = 1; continue; case 2:
 25274  		$s = -1; return;
 25275  		/* */ } return; } if ($f === undefined) { $f = { $blk: insertionSort }; } $f._r = _r; $f._v = _v; $f.a = a; $f.b = b; $f.data = data; $f.i = i; $f.j = j; $f.$s = $s; $f.$r = $r; return $f;
 25276  	};
 25277  	siftDown = function(data, lo, hi, first) {
 25278  		var _r, _r$1, _v, child, data, first, hi, lo, root, $s, $r;
 25279  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _v = $f._v; child = $f.child; data = $f.data; first = $f.first; hi = $f.hi; lo = $f.lo; root = $f.root; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 25280  		root = lo;
 25281  		/* while (true) { */ case 1:
 25282  			child = ($imul(2, root)) + 1 >> 0;
 25283  			if (child >= hi) {
 25284  				/* break; */ $s = 2; continue;
 25285  			}
 25286  			if (!((child + 1 >> 0) < hi)) { _v = false; $s = 5; continue s; }
 25287  			_r = data.Less(first + child >> 0, (first + child >> 0) + 1 >> 0); /* */ $s = 6; case 6: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 25288  			_v = _r; case 5:
 25289  			/* */ if (_v) { $s = 3; continue; }
 25290  			/* */ $s = 4; continue;
 25291  			/* if (_v) { */ case 3:
 25292  				child = child + (1) >> 0;
 25293  			/* } */ case 4:
 25294  			_r$1 = data.Less(first + root >> 0, first + child >> 0); /* */ $s = 9; case 9: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 25295  			/* */ if (!_r$1) { $s = 7; continue; }
 25296  			/* */ $s = 8; continue;
 25297  			/* if (!_r$1) { */ case 7:
 25298  				$s = -1; return;
 25299  			/* } */ case 8:
 25300  			$r = data.Swap(first + root >> 0, first + child >> 0); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 25301  			root = child;
 25302  		/* } */ $s = 1; continue; case 2:
 25303  		$s = -1; return;
 25304  		/* */ } return; } if ($f === undefined) { $f = { $blk: siftDown }; } $f._r = _r; $f._r$1 = _r$1; $f._v = _v; $f.child = child; $f.data = data; $f.first = first; $f.hi = hi; $f.lo = lo; $f.root = root; $f.$s = $s; $f.$r = $r; return $f;
 25305  	};
 25306  	heapSort = function(data, a, b) {
 25307  		var _q, a, b, data, first, hi, i, i$1, lo, $s, $r;
 25308  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _q = $f._q; a = $f.a; b = $f.b; data = $f.data; first = $f.first; hi = $f.hi; i = $f.i; i$1 = $f.i$1; lo = $f.lo; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 25309  		first = a;
 25310  		lo = 0;
 25311  		hi = b - a >> 0;
 25312  		i = (_q = ((hi - 1 >> 0)) / 2, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero"));
 25313  		/* while (true) { */ case 1:
 25314  			/* if (!(i >= 0)) { break; } */ if(!(i >= 0)) { $s = 2; continue; }
 25315  			$r = siftDown(data, i, hi, first); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 25316  			i = i - (1) >> 0;
 25317  		/* } */ $s = 1; continue; case 2:
 25318  		i$1 = hi - 1 >> 0;
 25319  		/* while (true) { */ case 4:
 25320  			/* if (!(i$1 >= 0)) { break; } */ if(!(i$1 >= 0)) { $s = 5; continue; }
 25321  			$r = data.Swap(first, first + i$1 >> 0); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 25322  			$r = siftDown(data, lo, i$1, first); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 25323  			i$1 = i$1 - (1) >> 0;
 25324  		/* } */ $s = 4; continue; case 5:
 25325  		$s = -1; return;
 25326  		/* */ } return; } if ($f === undefined) { $f = { $blk: heapSort }; } $f._q = _q; $f.a = a; $f.b = b; $f.data = data; $f.first = first; $f.hi = hi; $f.i = i; $f.i$1 = i$1; $f.lo = lo; $f.$s = $s; $f.$r = $r; return $f;
 25327  	};
 25328  	medianOfThree = function(data, m1, m0, m2) {
 25329  		var _r, _r$1, _r$2, data, m0, m1, m2, $s, $r;
 25330  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; data = $f.data; m0 = $f.m0; m1 = $f.m1; m2 = $f.m2; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 25331  		_r = data.Less(m1, m0); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 25332  		/* */ if (_r) { $s = 1; continue; }
 25333  		/* */ $s = 2; continue;
 25334  		/* if (_r) { */ case 1:
 25335  			$r = data.Swap(m1, m0); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 25336  		/* } */ case 2:
 25337  		_r$1 = data.Less(m2, m1); /* */ $s = 7; case 7: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 25338  		/* */ if (_r$1) { $s = 5; continue; }
 25339  		/* */ $s = 6; continue;
 25340  		/* if (_r$1) { */ case 5:
 25341  			$r = data.Swap(m2, m1); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 25342  			_r$2 = data.Less(m1, m0); /* */ $s = 11; case 11: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 25343  			/* */ if (_r$2) { $s = 9; continue; }
 25344  			/* */ $s = 10; continue;
 25345  			/* if (_r$2) { */ case 9:
 25346  				$r = data.Swap(m1, m0); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 25347  			/* } */ case 10:
 25348  		/* } */ case 6:
 25349  		$s = -1; return;
 25350  		/* */ } return; } if ($f === undefined) { $f = { $blk: medianOfThree }; } $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f.data = data; $f.m0 = m0; $f.m1 = m1; $f.m2 = m2; $f.$s = $s; $f.$r = $r; return $f;
 25351  	};
 25352  	swapRange = function(data, a, b, n) {
 25353  		var a, b, data, i, n, $s, $r;
 25354  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; a = $f.a; b = $f.b; data = $f.data; i = $f.i; n = $f.n; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 25355  		i = 0;
 25356  		/* while (true) { */ case 1:
 25357  			/* if (!(i < n)) { break; } */ if(!(i < n)) { $s = 2; continue; }
 25358  			$r = data.Swap(a + i >> 0, b + i >> 0); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 25359  			i = i + (1) >> 0;
 25360  		/* } */ $s = 1; continue; case 2:
 25361  		$s = -1; return;
 25362  		/* */ } return; } if ($f === undefined) { $f = { $blk: swapRange }; } $f.a = a; $f.b = b; $f.data = data; $f.i = i; $f.n = n; $f.$s = $s; $f.$r = $r; return $f;
 25363  	};
 25364  	doPivot = function(data, lo, hi) {
 25365  		var _q, _q$1, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _tmp, _tmp$1, _tmp$2, _tmp$3, _v, _v$1, _v$2, _v$3, _v$4, a, b, c, data, dups, hi, lo, m, midhi, midlo, pivot, protect, s, $s, $r;
 25366  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _q = $f._q; _q$1 = $f._q$1; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _v = $f._v; _v$1 = $f._v$1; _v$2 = $f._v$2; _v$3 = $f._v$3; _v$4 = $f._v$4; a = $f.a; b = $f.b; c = $f.c; data = $f.data; dups = $f.dups; hi = $f.hi; lo = $f.lo; m = $f.m; midhi = $f.midhi; midlo = $f.midlo; pivot = $f.pivot; protect = $f.protect; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 25367  		midlo = 0;
 25368  		midhi = 0;
 25369  		m = ((((((lo + hi >> 0) >>> 0)) >>> 1 >>> 0) >> 0));
 25370  		/* */ if ((hi - lo >> 0) > 40) { $s = 1; continue; }
 25371  		/* */ $s = 2; continue;
 25372  		/* if ((hi - lo >> 0) > 40) { */ case 1:
 25373  			s = (_q = ((hi - lo >> 0)) / 8, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero"));
 25374  			$r = medianOfThree(data, lo, lo + s >> 0, lo + ($imul(2, s)) >> 0); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 25375  			$r = medianOfThree(data, m, m - s >> 0, m + s >> 0); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 25376  			$r = medianOfThree(data, hi - 1 >> 0, (hi - 1 >> 0) - s >> 0, (hi - 1 >> 0) - ($imul(2, s)) >> 0); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 25377  		/* } */ case 2:
 25378  		$r = medianOfThree(data, lo, m, hi - 1 >> 0); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 25379  		pivot = lo;
 25380  		_tmp = lo + 1 >> 0;
 25381  		_tmp$1 = hi - 1 >> 0;
 25382  		a = _tmp;
 25383  		c = _tmp$1;
 25384  		/* while (true) { */ case 7:
 25385  			if (!(a < c)) { _v = false; $s = 9; continue s; }
 25386  			_r = data.Less(a, pivot); /* */ $s = 10; case 10: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 25387  			_v = _r; case 9:
 25388  			/* if (!(_v)) { break; } */ if(!(_v)) { $s = 8; continue; }
 25389  			a = a + (1) >> 0;
 25390  		/* } */ $s = 7; continue; case 8:
 25391  		b = a;
 25392  		/* while (true) { */ case 11:
 25393  			/* while (true) { */ case 13:
 25394  				if (!(b < c)) { _v$1 = false; $s = 15; continue s; }
 25395  				_r$1 = data.Less(pivot, b); /* */ $s = 16; case 16: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 25396  				_v$1 = !_r$1; case 15:
 25397  				/* if (!(_v$1)) { break; } */ if(!(_v$1)) { $s = 14; continue; }
 25398  				b = b + (1) >> 0;
 25399  			/* } */ $s = 13; continue; case 14:
 25400  			/* while (true) { */ case 17:
 25401  				if (!(b < c)) { _v$2 = false; $s = 19; continue s; }
 25402  				_r$2 = data.Less(pivot, c - 1 >> 0); /* */ $s = 20; case 20: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 25403  				_v$2 = _r$2; case 19:
 25404  				/* if (!(_v$2)) { break; } */ if(!(_v$2)) { $s = 18; continue; }
 25405  				c = c - (1) >> 0;
 25406  			/* } */ $s = 17; continue; case 18:
 25407  			if (b >= c) {
 25408  				/* break; */ $s = 12; continue;
 25409  			}
 25410  			$r = data.Swap(b, c - 1 >> 0); /* */ $s = 21; case 21: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 25411  			b = b + (1) >> 0;
 25412  			c = c - (1) >> 0;
 25413  		/* } */ $s = 11; continue; case 12:
 25414  		protect = (hi - c >> 0) < 5;
 25415  		/* */ if (!protect && (hi - c >> 0) < (_q$1 = ((hi - lo >> 0)) / 4, (_q$1 === _q$1 && _q$1 !== 1/0 && _q$1 !== -1/0) ? _q$1 >> 0 : $throwRuntimeError("integer divide by zero"))) { $s = 22; continue; }
 25416  		/* */ $s = 23; continue;
 25417  		/* if (!protect && (hi - c >> 0) < (_q$1 = ((hi - lo >> 0)) / 4, (_q$1 === _q$1 && _q$1 !== 1/0 && _q$1 !== -1/0) ? _q$1 >> 0 : $throwRuntimeError("integer divide by zero"))) { */ case 22:
 25418  			dups = 0;
 25419  			_r$3 = data.Less(pivot, hi - 1 >> 0); /* */ $s = 26; case 26: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 25420  			/* */ if (!_r$3) { $s = 24; continue; }
 25421  			/* */ $s = 25; continue;
 25422  			/* if (!_r$3) { */ case 24:
 25423  				$r = data.Swap(c, hi - 1 >> 0); /* */ $s = 27; case 27: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 25424  				c = c + (1) >> 0;
 25425  				dups = dups + (1) >> 0;
 25426  			/* } */ case 25:
 25427  			_r$4 = data.Less(b - 1 >> 0, pivot); /* */ $s = 30; case 30: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 25428  			/* */ if (!_r$4) { $s = 28; continue; }
 25429  			/* */ $s = 29; continue;
 25430  			/* if (!_r$4) { */ case 28:
 25431  				b = b - (1) >> 0;
 25432  				dups = dups + (1) >> 0;
 25433  			/* } */ case 29:
 25434  			_r$5 = data.Less(m, pivot); /* */ $s = 33; case 33: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
 25435  			/* */ if (!_r$5) { $s = 31; continue; }
 25436  			/* */ $s = 32; continue;
 25437  			/* if (!_r$5) { */ case 31:
 25438  				$r = data.Swap(m, b - 1 >> 0); /* */ $s = 34; case 34: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 25439  				b = b - (1) >> 0;
 25440  				dups = dups + (1) >> 0;
 25441  			/* } */ case 32:
 25442  			protect = dups > 1;
 25443  		/* } */ case 23:
 25444  		/* */ if (protect) { $s = 35; continue; }
 25445  		/* */ $s = 36; continue;
 25446  		/* if (protect) { */ case 35:
 25447  			/* while (true) { */ case 37:
 25448  				/* while (true) { */ case 39:
 25449  					if (!(a < b)) { _v$3 = false; $s = 41; continue s; }
 25450  					_r$6 = data.Less(b - 1 >> 0, pivot); /* */ $s = 42; case 42: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
 25451  					_v$3 = !_r$6; case 41:
 25452  					/* if (!(_v$3)) { break; } */ if(!(_v$3)) { $s = 40; continue; }
 25453  					b = b - (1) >> 0;
 25454  				/* } */ $s = 39; continue; case 40:
 25455  				/* while (true) { */ case 43:
 25456  					if (!(a < b)) { _v$4 = false; $s = 45; continue s; }
 25457  					_r$7 = data.Less(a, pivot); /* */ $s = 46; case 46: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
 25458  					_v$4 = _r$7; case 45:
 25459  					/* if (!(_v$4)) { break; } */ if(!(_v$4)) { $s = 44; continue; }
 25460  					a = a + (1) >> 0;
 25461  				/* } */ $s = 43; continue; case 44:
 25462  				if (a >= b) {
 25463  					/* break; */ $s = 38; continue;
 25464  				}
 25465  				$r = data.Swap(a, b - 1 >> 0); /* */ $s = 47; case 47: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 25466  				a = a + (1) >> 0;
 25467  				b = b - (1) >> 0;
 25468  			/* } */ $s = 37; continue; case 38:
 25469  		/* } */ case 36:
 25470  		$r = data.Swap(pivot, b - 1 >> 0); /* */ $s = 48; case 48: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 25471  		_tmp$2 = b - 1 >> 0;
 25472  		_tmp$3 = c;
 25473  		midlo = _tmp$2;
 25474  		midhi = _tmp$3;
 25475  		$s = -1; return [midlo, midhi];
 25476  		/* */ } return; } if ($f === undefined) { $f = { $blk: doPivot }; } $f._q = _q; $f._q$1 = _q$1; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._v = _v; $f._v$1 = _v$1; $f._v$2 = _v$2; $f._v$3 = _v$3; $f._v$4 = _v$4; $f.a = a; $f.b = b; $f.c = c; $f.data = data; $f.dups = dups; $f.hi = hi; $f.lo = lo; $f.m = m; $f.midhi = midhi; $f.midlo = midlo; $f.pivot = pivot; $f.protect = protect; $f.s = s; $f.$s = $s; $f.$r = $r; return $f;
 25477  	};
 25478  	quickSort = function(data, a, b, maxDepth$1) {
 25479  		var _r, _r$1, _tuple, a, b, data, i, maxDepth$1, mhi, mlo, $s, $r;
 25480  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _tuple = $f._tuple; a = $f.a; b = $f.b; data = $f.data; i = $f.i; maxDepth$1 = $f.maxDepth$1; mhi = $f.mhi; mlo = $f.mlo; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 25481  		/* while (true) { */ case 1:
 25482  			/* if (!((b - a >> 0) > 12)) { break; } */ if(!((b - a >> 0) > 12)) { $s = 2; continue; }
 25483  			/* */ if (maxDepth$1 === 0) { $s = 3; continue; }
 25484  			/* */ $s = 4; continue;
 25485  			/* if (maxDepth$1 === 0) { */ case 3:
 25486  				$r = heapSort(data, a, b); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 25487  				$s = -1; return;
 25488  			/* } */ case 4:
 25489  			maxDepth$1 = maxDepth$1 - (1) >> 0;
 25490  			_r = doPivot(data, a, b); /* */ $s = 6; case 6: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 25491  			_tuple = _r;
 25492  			mlo = _tuple[0];
 25493  			mhi = _tuple[1];
 25494  			/* */ if ((mlo - a >> 0) < (b - mhi >> 0)) { $s = 7; continue; }
 25495  			/* */ $s = 8; continue;
 25496  			/* if ((mlo - a >> 0) < (b - mhi >> 0)) { */ case 7:
 25497  				$r = quickSort(data, a, mlo, maxDepth$1); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 25498  				a = mhi;
 25499  				$s = 9; continue;
 25500  			/* } else { */ case 8:
 25501  				$r = quickSort(data, mhi, b, maxDepth$1); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 25502  				b = mlo;
 25503  			/* } */ case 9:
 25504  		/* } */ $s = 1; continue; case 2:
 25505  		/* */ if ((b - a >> 0) > 1) { $s = 12; continue; }
 25506  		/* */ $s = 13; continue;
 25507  		/* if ((b - a >> 0) > 1) { */ case 12:
 25508  			i = a + 6 >> 0;
 25509  			/* while (true) { */ case 14:
 25510  				/* if (!(i < b)) { break; } */ if(!(i < b)) { $s = 15; continue; }
 25511  				_r$1 = data.Less(i, i - 6 >> 0); /* */ $s = 18; case 18: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 25512  				/* */ if (_r$1) { $s = 16; continue; }
 25513  				/* */ $s = 17; continue;
 25514  				/* if (_r$1) { */ case 16:
 25515  					$r = data.Swap(i, i - 6 >> 0); /* */ $s = 19; case 19: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 25516  				/* } */ case 17:
 25517  				i = i + (1) >> 0;
 25518  			/* } */ $s = 14; continue; case 15:
 25519  			$r = insertionSort(data, a, b); /* */ $s = 20; case 20: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 25520  		/* } */ case 13:
 25521  		$s = -1; return;
 25522  		/* */ } return; } if ($f === undefined) { $f = { $blk: quickSort }; } $f._r = _r; $f._r$1 = _r$1; $f._tuple = _tuple; $f.a = a; $f.b = b; $f.data = data; $f.i = i; $f.maxDepth$1 = maxDepth$1; $f.mhi = mhi; $f.mlo = mlo; $f.$s = $s; $f.$r = $r; return $f;
 25523  	};
 25524  	Sort = function(data) {
 25525  		var _r, data, n, $s, $r;
 25526  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; data = $f.data; n = $f.n; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 25527  		_r = data.Len(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 25528  		n = _r;
 25529  		$r = quickSort(data, 0, n, maxDepth(n)); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 25530  		$s = -1; return;
 25531  		/* */ } return; } if ($f === undefined) { $f = { $blk: Sort }; } $f._r = _r; $f.data = data; $f.n = n; $f.$s = $s; $f.$r = $r; return $f;
 25532  	};
 25533  	$pkg.Sort = Sort;
 25534  	maxDepth = function(n) {
 25535  		var depth, i, n;
 25536  		depth = 0;
 25537  		i = n;
 25538  		while (true) {
 25539  			if (!(i > 0)) { break; }
 25540  			depth = depth + (1) >> 0;
 25541  			i = (i >> $min((1), 31)) >> 0;
 25542  		}
 25543  		return $imul(depth, 2);
 25544  	};
 25545  	reverse.ptr.prototype.Less = function(i, j) {
 25546  		var _r, i, j, r, $s, $r;
 25547  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; i = $f.i; j = $f.j; r = $f.r; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 25548  		r = this;
 25549  		_r = r.Interface.Less(j, i); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 25550  		$s = -1; return _r;
 25551  		/* */ } return; } if ($f === undefined) { $f = { $blk: reverse.ptr.prototype.Less }; } $f._r = _r; $f.i = i; $f.j = j; $f.r = r; $f.$s = $s; $f.$r = $r; return $f;
 25552  	};
 25553  	reverse.prototype.Less = function(i, j) { return this.$val.Less(i, j); };
 25554  	Reverse = function(data) {
 25555  		var data;
 25556  		return new reverse.ptr(data);
 25557  	};
 25558  	$pkg.Reverse = Reverse;
 25559  	StringSlice.prototype.Len = function() {
 25560  		var p;
 25561  		p = this;
 25562  		return p.$length;
 25563  	};
 25564  	$ptrType(StringSlice).prototype.Len = function() { return this.$get().Len(); };
 25565  	StringSlice.prototype.Less = function(i, j) {
 25566  		var i, j, p;
 25567  		p = this;
 25568  		return ((i < 0 || i >= p.$length) ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + i]) < ((j < 0 || j >= p.$length) ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + j]);
 25569  	};
 25570  	$ptrType(StringSlice).prototype.Less = function(i, j) { return this.$get().Less(i, j); };
 25571  	StringSlice.prototype.Swap = function(i, j) {
 25572  		var _tmp, _tmp$1, i, j, p;
 25573  		p = this;
 25574  		_tmp = ((j < 0 || j >= p.$length) ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + j]);
 25575  		_tmp$1 = ((i < 0 || i >= p.$length) ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + i]);
 25576  		((i < 0 || i >= p.$length) ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + i] = _tmp);
 25577  		((j < 0 || j >= p.$length) ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + j] = _tmp$1);
 25578  	};
 25579  	$ptrType(StringSlice).prototype.Swap = function(i, j) { return this.$get().Swap(i, j); };
 25580  	StringSlice.prototype.Sort = function() {
 25581  		var p, $s, $r;
 25582  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; p = $f.p; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 25583  		p = this;
 25584  		$r = Sort(p); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 25585  		$s = -1; return;
 25586  		/* */ } return; } if ($f === undefined) { $f = { $blk: StringSlice.prototype.Sort }; } $f.p = p; $f.$s = $s; $f.$r = $r; return $f;
 25587  	};
 25588  	$ptrType(StringSlice).prototype.Sort = function() { return this.$get().Sort(); };
 25589  	Strings = function(a) {
 25590  		var a, $s, $r;
 25591  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; a = $f.a; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 25592  		$r = Sort(($subslice(new StringSlice(a.$array), a.$offset, a.$offset + a.$length))); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 25593  		$s = -1; return;
 25594  		/* */ } return; } if ($f === undefined) { $f = { $blk: Strings }; } $f.a = a; $f.$s = $s; $f.$r = $r; return $f;
 25595  	};
 25596  	$pkg.Strings = Strings;
 25597  	Stable = function(data) {
 25598  		var _arg, _arg$1, _r, data, $s, $r;
 25599  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _arg = $f._arg; _arg$1 = $f._arg$1; _r = $f._r; data = $f.data; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 25600  		_arg = data;
 25601  		_r = data.Len(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 25602  		_arg$1 = _r;
 25603  		$r = stable(_arg, _arg$1); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 25604  		$s = -1; return;
 25605  		/* */ } return; } if ($f === undefined) { $f = { $blk: Stable }; } $f._arg = _arg; $f._arg$1 = _arg$1; $f._r = _r; $f.data = data; $f.$s = $s; $f.$r = $r; return $f;
 25606  	};
 25607  	$pkg.Stable = Stable;
 25608  	stable = function(data, n) {
 25609  		var _tmp, _tmp$1, _tmp$2, _tmp$3, a, b, blockSize, data, m, n, $s, $r;
 25610  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; a = $f.a; b = $f.b; blockSize = $f.blockSize; data = $f.data; m = $f.m; n = $f.n; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 25611  		blockSize = 20;
 25612  		_tmp = 0;
 25613  		_tmp$1 = blockSize;
 25614  		a = _tmp;
 25615  		b = _tmp$1;
 25616  		/* while (true) { */ case 1:
 25617  			/* if (!(b <= n)) { break; } */ if(!(b <= n)) { $s = 2; continue; }
 25618  			$r = insertionSort(data, a, b); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 25619  			a = b;
 25620  			b = b + (blockSize) >> 0;
 25621  		/* } */ $s = 1; continue; case 2:
 25622  		$r = insertionSort(data, a, n); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 25623  		/* while (true) { */ case 5:
 25624  			/* if (!(blockSize < n)) { break; } */ if(!(blockSize < n)) { $s = 6; continue; }
 25625  			_tmp$2 = 0;
 25626  			_tmp$3 = $imul(2, blockSize);
 25627  			a = _tmp$2;
 25628  			b = _tmp$3;
 25629  			/* while (true) { */ case 7:
 25630  				/* if (!(b <= n)) { break; } */ if(!(b <= n)) { $s = 8; continue; }
 25631  				$r = symMerge(data, a, a + blockSize >> 0, b); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 25632  				a = b;
 25633  				b = b + (($imul(2, blockSize))) >> 0;
 25634  			/* } */ $s = 7; continue; case 8:
 25635  			m = a + blockSize >> 0;
 25636  			/* */ if (m < n) { $s = 10; continue; }
 25637  			/* */ $s = 11; continue;
 25638  			/* if (m < n) { */ case 10:
 25639  				$r = symMerge(data, a, m, n); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 25640  			/* } */ case 11:
 25641  			blockSize = $imul(blockSize, (2));
 25642  		/* } */ $s = 5; continue; case 6:
 25643  		$s = -1; return;
 25644  		/* */ } return; } if ($f === undefined) { $f = { $blk: stable }; } $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f.a = a; $f.b = b; $f.blockSize = blockSize; $f.data = data; $f.m = m; $f.n = n; $f.$s = $s; $f.$r = $r; return $f;
 25645  	};
 25646  	symMerge = function(data, a, m, b) {
 25647  		var _r, _r$1, _r$2, _tmp, _tmp$1, a, b, c, data, end, h, h$1, i, i$1, j, j$1, k, k$1, m, mid, n, p, r, start, $s, $r;
 25648  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; a = $f.a; b = $f.b; c = $f.c; data = $f.data; end = $f.end; h = $f.h; h$1 = $f.h$1; i = $f.i; i$1 = $f.i$1; j = $f.j; j$1 = $f.j$1; k = $f.k; k$1 = $f.k$1; m = $f.m; mid = $f.mid; n = $f.n; p = $f.p; r = $f.r; start = $f.start; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 25649  		/* */ if ((m - a >> 0) === 1) { $s = 1; continue; }
 25650  		/* */ $s = 2; continue;
 25651  		/* if ((m - a >> 0) === 1) { */ case 1:
 25652  			i = m;
 25653  			j = b;
 25654  			/* while (true) { */ case 3:
 25655  				/* if (!(i < j)) { break; } */ if(!(i < j)) { $s = 4; continue; }
 25656  				h = ((((((i + j >> 0) >>> 0)) >>> 1 >>> 0) >> 0));
 25657  				_r = data.Less(h, a); /* */ $s = 8; case 8: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 25658  				/* */ if (_r) { $s = 5; continue; }
 25659  				/* */ $s = 6; continue;
 25660  				/* if (_r) { */ case 5:
 25661  					i = h + 1 >> 0;
 25662  					$s = 7; continue;
 25663  				/* } else { */ case 6:
 25664  					j = h;
 25665  				/* } */ case 7:
 25666  			/* } */ $s = 3; continue; case 4:
 25667  			k = a;
 25668  			/* while (true) { */ case 9:
 25669  				/* if (!(k < (i - 1 >> 0))) { break; } */ if(!(k < (i - 1 >> 0))) { $s = 10; continue; }
 25670  				$r = data.Swap(k, k + 1 >> 0); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 25671  				k = k + (1) >> 0;
 25672  			/* } */ $s = 9; continue; case 10:
 25673  			$s = -1; return;
 25674  		/* } */ case 2:
 25675  		/* */ if ((b - m >> 0) === 1) { $s = 12; continue; }
 25676  		/* */ $s = 13; continue;
 25677  		/* if ((b - m >> 0) === 1) { */ case 12:
 25678  			i$1 = a;
 25679  			j$1 = m;
 25680  			/* while (true) { */ case 14:
 25681  				/* if (!(i$1 < j$1)) { break; } */ if(!(i$1 < j$1)) { $s = 15; continue; }
 25682  				h$1 = ((((((i$1 + j$1 >> 0) >>> 0)) >>> 1 >>> 0) >> 0));
 25683  				_r$1 = data.Less(m, h$1); /* */ $s = 19; case 19: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 25684  				/* */ if (!_r$1) { $s = 16; continue; }
 25685  				/* */ $s = 17; continue;
 25686  				/* if (!_r$1) { */ case 16:
 25687  					i$1 = h$1 + 1 >> 0;
 25688  					$s = 18; continue;
 25689  				/* } else { */ case 17:
 25690  					j$1 = h$1;
 25691  				/* } */ case 18:
 25692  			/* } */ $s = 14; continue; case 15:
 25693  			k$1 = m;
 25694  			/* while (true) { */ case 20:
 25695  				/* if (!(k$1 > i$1)) { break; } */ if(!(k$1 > i$1)) { $s = 21; continue; }
 25696  				$r = data.Swap(k$1, k$1 - 1 >> 0); /* */ $s = 22; case 22: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 25697  				k$1 = k$1 - (1) >> 0;
 25698  			/* } */ $s = 20; continue; case 21:
 25699  			$s = -1; return;
 25700  		/* } */ case 13:
 25701  		mid = ((((((a + b >> 0) >>> 0)) >>> 1 >>> 0) >> 0));
 25702  		n = mid + m >> 0;
 25703  		_tmp = 0;
 25704  		_tmp$1 = 0;
 25705  		start = _tmp;
 25706  		r = _tmp$1;
 25707  		if (m > mid) {
 25708  			start = n - b >> 0;
 25709  			r = mid;
 25710  		} else {
 25711  			start = a;
 25712  			r = m;
 25713  		}
 25714  		p = n - 1 >> 0;
 25715  		/* while (true) { */ case 23:
 25716  			/* if (!(start < r)) { break; } */ if(!(start < r)) { $s = 24; continue; }
 25717  			c = ((((((start + r >> 0) >>> 0)) >>> 1 >>> 0) >> 0));
 25718  			_r$2 = data.Less(p - c >> 0, c); /* */ $s = 28; case 28: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 25719  			/* */ if (!_r$2) { $s = 25; continue; }
 25720  			/* */ $s = 26; continue;
 25721  			/* if (!_r$2) { */ case 25:
 25722  				start = c + 1 >> 0;
 25723  				$s = 27; continue;
 25724  			/* } else { */ case 26:
 25725  				r = c;
 25726  			/* } */ case 27:
 25727  		/* } */ $s = 23; continue; case 24:
 25728  		end = n - start >> 0;
 25729  		/* */ if (start < m && m < end) { $s = 29; continue; }
 25730  		/* */ $s = 30; continue;
 25731  		/* if (start < m && m < end) { */ case 29:
 25732  			$r = rotate(data, start, m, end); /* */ $s = 31; case 31: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 25733  		/* } */ case 30:
 25734  		/* */ if (a < start && start < mid) { $s = 32; continue; }
 25735  		/* */ $s = 33; continue;
 25736  		/* if (a < start && start < mid) { */ case 32:
 25737  			$r = symMerge(data, a, start, mid); /* */ $s = 34; case 34: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 25738  		/* } */ case 33:
 25739  		/* */ if (mid < end && end < b) { $s = 35; continue; }
 25740  		/* */ $s = 36; continue;
 25741  		/* if (mid < end && end < b) { */ case 35:
 25742  			$r = symMerge(data, mid, end, b); /* */ $s = 37; case 37: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 25743  		/* } */ case 36:
 25744  		$s = -1; return;
 25745  		/* */ } return; } if ($f === undefined) { $f = { $blk: symMerge }; } $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f.a = a; $f.b = b; $f.c = c; $f.data = data; $f.end = end; $f.h = h; $f.h$1 = h$1; $f.i = i; $f.i$1 = i$1; $f.j = j; $f.j$1 = j$1; $f.k = k; $f.k$1 = k$1; $f.m = m; $f.mid = mid; $f.n = n; $f.p = p; $f.r = r; $f.start = start; $f.$s = $s; $f.$r = $r; return $f;
 25746  	};
 25747  	rotate = function(data, a, m, b) {
 25748  		var a, b, data, i, j, m, $s, $r;
 25749  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; a = $f.a; b = $f.b; data = $f.data; i = $f.i; j = $f.j; m = $f.m; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 25750  		i = m - a >> 0;
 25751  		j = b - m >> 0;
 25752  		/* while (true) { */ case 1:
 25753  			/* if (!(!((i === j)))) { break; } */ if(!(!((i === j)))) { $s = 2; continue; }
 25754  			/* */ if (i > j) { $s = 3; continue; }
 25755  			/* */ $s = 4; continue;
 25756  			/* if (i > j) { */ case 3:
 25757  				$r = swapRange(data, m - i >> 0, m, j); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 25758  				i = i - (j) >> 0;
 25759  				$s = 5; continue;
 25760  			/* } else { */ case 4:
 25761  				$r = swapRange(data, m - i >> 0, (m + j >> 0) - i >> 0, i); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 25762  				j = j - (i) >> 0;
 25763  			/* } */ case 5:
 25764  		/* } */ $s = 1; continue; case 2:
 25765  		$r = swapRange(data, m - i >> 0, m, i); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 25766  		$s = -1; return;
 25767  		/* */ } return; } if ($f === undefined) { $f = { $blk: rotate }; } $f.a = a; $f.b = b; $f.data = data; $f.i = i; $f.j = j; $f.m = m; $f.$s = $s; $f.$r = $r; return $f;
 25768  	};
 25769  	insertionSort_func = function(data, a, b) {
 25770  		var _r, _v, a, b, data, i, j, $s, $r;
 25771  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _v = $f._v; a = $f.a; b = $f.b; data = $f.data; i = $f.i; j = $f.j; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 25772  		i = a + 1 >> 0;
 25773  		/* while (true) { */ case 1:
 25774  			/* if (!(i < b)) { break; } */ if(!(i < b)) { $s = 2; continue; }
 25775  			j = i;
 25776  			/* while (true) { */ case 3:
 25777  				if (!(j > a)) { _v = false; $s = 5; continue s; }
 25778  				_r = data.Less(j, j - 1 >> 0); /* */ $s = 6; case 6: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 25779  				_v = _r; case 5:
 25780  				/* if (!(_v)) { break; } */ if(!(_v)) { $s = 4; continue; }
 25781  				$r = data.Swap(j, j - 1 >> 0); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 25782  				j = j - (1) >> 0;
 25783  			/* } */ $s = 3; continue; case 4:
 25784  			i = i + (1) >> 0;
 25785  		/* } */ $s = 1; continue; case 2:
 25786  		$s = -1; return;
 25787  		/* */ } return; } if ($f === undefined) { $f = { $blk: insertionSort_func }; } $f._r = _r; $f._v = _v; $f.a = a; $f.b = b; $f.data = data; $f.i = i; $f.j = j; $f.$s = $s; $f.$r = $r; return $f;
 25788  	};
 25789  	siftDown_func = function(data, lo, hi, first) {
 25790  		var _r, _r$1, _v, child, data, first, hi, lo, root, $s, $r;
 25791  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _v = $f._v; child = $f.child; data = $f.data; first = $f.first; hi = $f.hi; lo = $f.lo; root = $f.root; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 25792  		root = lo;
 25793  		/* while (true) { */ case 1:
 25794  			child = ($imul(2, root)) + 1 >> 0;
 25795  			if (child >= hi) {
 25796  				/* break; */ $s = 2; continue;
 25797  			}
 25798  			if (!((child + 1 >> 0) < hi)) { _v = false; $s = 5; continue s; }
 25799  			_r = data.Less(first + child >> 0, (first + child >> 0) + 1 >> 0); /* */ $s = 6; case 6: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 25800  			_v = _r; case 5:
 25801  			/* */ if (_v) { $s = 3; continue; }
 25802  			/* */ $s = 4; continue;
 25803  			/* if (_v) { */ case 3:
 25804  				child = child + (1) >> 0;
 25805  			/* } */ case 4:
 25806  			_r$1 = data.Less(first + root >> 0, first + child >> 0); /* */ $s = 9; case 9: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 25807  			/* */ if (!_r$1) { $s = 7; continue; }
 25808  			/* */ $s = 8; continue;
 25809  			/* if (!_r$1) { */ case 7:
 25810  				$s = -1; return;
 25811  			/* } */ case 8:
 25812  			$r = data.Swap(first + root >> 0, first + child >> 0); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 25813  			root = child;
 25814  		/* } */ $s = 1; continue; case 2:
 25815  		$s = -1; return;
 25816  		/* */ } return; } if ($f === undefined) { $f = { $blk: siftDown_func }; } $f._r = _r; $f._r$1 = _r$1; $f._v = _v; $f.child = child; $f.data = data; $f.first = first; $f.hi = hi; $f.lo = lo; $f.root = root; $f.$s = $s; $f.$r = $r; return $f;
 25817  	};
 25818  	heapSort_func = function(data, a, b) {
 25819  		var _q, a, b, data, first, hi, i, i$1, lo, $s, $r;
 25820  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _q = $f._q; a = $f.a; b = $f.b; data = $f.data; first = $f.first; hi = $f.hi; i = $f.i; i$1 = $f.i$1; lo = $f.lo; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 25821  		first = a;
 25822  		lo = 0;
 25823  		hi = b - a >> 0;
 25824  		i = (_q = ((hi - 1 >> 0)) / 2, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero"));
 25825  		/* while (true) { */ case 1:
 25826  			/* if (!(i >= 0)) { break; } */ if(!(i >= 0)) { $s = 2; continue; }
 25827  			$r = siftDown_func($clone(data, lessSwap), i, hi, first); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 25828  			i = i - (1) >> 0;
 25829  		/* } */ $s = 1; continue; case 2:
 25830  		i$1 = hi - 1 >> 0;
 25831  		/* while (true) { */ case 4:
 25832  			/* if (!(i$1 >= 0)) { break; } */ if(!(i$1 >= 0)) { $s = 5; continue; }
 25833  			$r = data.Swap(first, first + i$1 >> 0); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 25834  			$r = siftDown_func($clone(data, lessSwap), lo, i$1, first); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 25835  			i$1 = i$1 - (1) >> 0;
 25836  		/* } */ $s = 4; continue; case 5:
 25837  		$s = -1; return;
 25838  		/* */ } return; } if ($f === undefined) { $f = { $blk: heapSort_func }; } $f._q = _q; $f.a = a; $f.b = b; $f.data = data; $f.first = first; $f.hi = hi; $f.i = i; $f.i$1 = i$1; $f.lo = lo; $f.$s = $s; $f.$r = $r; return $f;
 25839  	};
 25840  	medianOfThree_func = function(data, m1, m0, m2) {
 25841  		var _r, _r$1, _r$2, data, m0, m1, m2, $s, $r;
 25842  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; data = $f.data; m0 = $f.m0; m1 = $f.m1; m2 = $f.m2; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 25843  		_r = data.Less(m1, m0); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 25844  		/* */ if (_r) { $s = 1; continue; }
 25845  		/* */ $s = 2; continue;
 25846  		/* if (_r) { */ case 1:
 25847  			$r = data.Swap(m1, m0); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 25848  		/* } */ case 2:
 25849  		_r$1 = data.Less(m2, m1); /* */ $s = 7; case 7: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 25850  		/* */ if (_r$1) { $s = 5; continue; }
 25851  		/* */ $s = 6; continue;
 25852  		/* if (_r$1) { */ case 5:
 25853  			$r = data.Swap(m2, m1); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 25854  			_r$2 = data.Less(m1, m0); /* */ $s = 11; case 11: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 25855  			/* */ if (_r$2) { $s = 9; continue; }
 25856  			/* */ $s = 10; continue;
 25857  			/* if (_r$2) { */ case 9:
 25858  				$r = data.Swap(m1, m0); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 25859  			/* } */ case 10:
 25860  		/* } */ case 6:
 25861  		$s = -1; return;
 25862  		/* */ } return; } if ($f === undefined) { $f = { $blk: medianOfThree_func }; } $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f.data = data; $f.m0 = m0; $f.m1 = m1; $f.m2 = m2; $f.$s = $s; $f.$r = $r; return $f;
 25863  	};
 25864  	doPivot_func = function(data, lo, hi) {
 25865  		var _q, _q$1, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _tmp, _tmp$1, _tmp$2, _tmp$3, _v, _v$1, _v$2, _v$3, _v$4, a, b, c, data, dups, hi, lo, m, midhi, midlo, pivot, protect, s, $s, $r;
 25866  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _q = $f._q; _q$1 = $f._q$1; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _v = $f._v; _v$1 = $f._v$1; _v$2 = $f._v$2; _v$3 = $f._v$3; _v$4 = $f._v$4; a = $f.a; b = $f.b; c = $f.c; data = $f.data; dups = $f.dups; hi = $f.hi; lo = $f.lo; m = $f.m; midhi = $f.midhi; midlo = $f.midlo; pivot = $f.pivot; protect = $f.protect; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 25867  		midlo = 0;
 25868  		midhi = 0;
 25869  		m = ((((((lo + hi >> 0) >>> 0)) >>> 1 >>> 0) >> 0));
 25870  		/* */ if ((hi - lo >> 0) > 40) { $s = 1; continue; }
 25871  		/* */ $s = 2; continue;
 25872  		/* if ((hi - lo >> 0) > 40) { */ case 1:
 25873  			s = (_q = ((hi - lo >> 0)) / 8, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero"));
 25874  			$r = medianOfThree_func($clone(data, lessSwap), lo, lo + s >> 0, lo + ($imul(2, s)) >> 0); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 25875  			$r = medianOfThree_func($clone(data, lessSwap), m, m - s >> 0, m + s >> 0); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 25876  			$r = medianOfThree_func($clone(data, lessSwap), hi - 1 >> 0, (hi - 1 >> 0) - s >> 0, (hi - 1 >> 0) - ($imul(2, s)) >> 0); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 25877  		/* } */ case 2:
 25878  		$r = medianOfThree_func($clone(data, lessSwap), lo, m, hi - 1 >> 0); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 25879  		pivot = lo;
 25880  		_tmp = lo + 1 >> 0;
 25881  		_tmp$1 = hi - 1 >> 0;
 25882  		a = _tmp;
 25883  		c = _tmp$1;
 25884  		/* while (true) { */ case 7:
 25885  			if (!(a < c)) { _v = false; $s = 9; continue s; }
 25886  			_r = data.Less(a, pivot); /* */ $s = 10; case 10: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 25887  			_v = _r; case 9:
 25888  			/* if (!(_v)) { break; } */ if(!(_v)) { $s = 8; continue; }
 25889  			a = a + (1) >> 0;
 25890  		/* } */ $s = 7; continue; case 8:
 25891  		b = a;
 25892  		/* while (true) { */ case 11:
 25893  			/* while (true) { */ case 13:
 25894  				if (!(b < c)) { _v$1 = false; $s = 15; continue s; }
 25895  				_r$1 = data.Less(pivot, b); /* */ $s = 16; case 16: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 25896  				_v$1 = !_r$1; case 15:
 25897  				/* if (!(_v$1)) { break; } */ if(!(_v$1)) { $s = 14; continue; }
 25898  				b = b + (1) >> 0;
 25899  			/* } */ $s = 13; continue; case 14:
 25900  			/* while (true) { */ case 17:
 25901  				if (!(b < c)) { _v$2 = false; $s = 19; continue s; }
 25902  				_r$2 = data.Less(pivot, c - 1 >> 0); /* */ $s = 20; case 20: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 25903  				_v$2 = _r$2; case 19:
 25904  				/* if (!(_v$2)) { break; } */ if(!(_v$2)) { $s = 18; continue; }
 25905  				c = c - (1) >> 0;
 25906  			/* } */ $s = 17; continue; case 18:
 25907  			if (b >= c) {
 25908  				/* break; */ $s = 12; continue;
 25909  			}
 25910  			$r = data.Swap(b, c - 1 >> 0); /* */ $s = 21; case 21: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 25911  			b = b + (1) >> 0;
 25912  			c = c - (1) >> 0;
 25913  		/* } */ $s = 11; continue; case 12:
 25914  		protect = (hi - c >> 0) < 5;
 25915  		/* */ if (!protect && (hi - c >> 0) < (_q$1 = ((hi - lo >> 0)) / 4, (_q$1 === _q$1 && _q$1 !== 1/0 && _q$1 !== -1/0) ? _q$1 >> 0 : $throwRuntimeError("integer divide by zero"))) { $s = 22; continue; }
 25916  		/* */ $s = 23; continue;
 25917  		/* if (!protect && (hi - c >> 0) < (_q$1 = ((hi - lo >> 0)) / 4, (_q$1 === _q$1 && _q$1 !== 1/0 && _q$1 !== -1/0) ? _q$1 >> 0 : $throwRuntimeError("integer divide by zero"))) { */ case 22:
 25918  			dups = 0;
 25919  			_r$3 = data.Less(pivot, hi - 1 >> 0); /* */ $s = 26; case 26: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 25920  			/* */ if (!_r$3) { $s = 24; continue; }
 25921  			/* */ $s = 25; continue;
 25922  			/* if (!_r$3) { */ case 24:
 25923  				$r = data.Swap(c, hi - 1 >> 0); /* */ $s = 27; case 27: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 25924  				c = c + (1) >> 0;
 25925  				dups = dups + (1) >> 0;
 25926  			/* } */ case 25:
 25927  			_r$4 = data.Less(b - 1 >> 0, pivot); /* */ $s = 30; case 30: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 25928  			/* */ if (!_r$4) { $s = 28; continue; }
 25929  			/* */ $s = 29; continue;
 25930  			/* if (!_r$4) { */ case 28:
 25931  				b = b - (1) >> 0;
 25932  				dups = dups + (1) >> 0;
 25933  			/* } */ case 29:
 25934  			_r$5 = data.Less(m, pivot); /* */ $s = 33; case 33: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
 25935  			/* */ if (!_r$5) { $s = 31; continue; }
 25936  			/* */ $s = 32; continue;
 25937  			/* if (!_r$5) { */ case 31:
 25938  				$r = data.Swap(m, b - 1 >> 0); /* */ $s = 34; case 34: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 25939  				b = b - (1) >> 0;
 25940  				dups = dups + (1) >> 0;
 25941  			/* } */ case 32:
 25942  			protect = dups > 1;
 25943  		/* } */ case 23:
 25944  		/* */ if (protect) { $s = 35; continue; }
 25945  		/* */ $s = 36; continue;
 25946  		/* if (protect) { */ case 35:
 25947  			/* while (true) { */ case 37:
 25948  				/* while (true) { */ case 39:
 25949  					if (!(a < b)) { _v$3 = false; $s = 41; continue s; }
 25950  					_r$6 = data.Less(b - 1 >> 0, pivot); /* */ $s = 42; case 42: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
 25951  					_v$3 = !_r$6; case 41:
 25952  					/* if (!(_v$3)) { break; } */ if(!(_v$3)) { $s = 40; continue; }
 25953  					b = b - (1) >> 0;
 25954  				/* } */ $s = 39; continue; case 40:
 25955  				/* while (true) { */ case 43:
 25956  					if (!(a < b)) { _v$4 = false; $s = 45; continue s; }
 25957  					_r$7 = data.Less(a, pivot); /* */ $s = 46; case 46: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
 25958  					_v$4 = _r$7; case 45:
 25959  					/* if (!(_v$4)) { break; } */ if(!(_v$4)) { $s = 44; continue; }
 25960  					a = a + (1) >> 0;
 25961  				/* } */ $s = 43; continue; case 44:
 25962  				if (a >= b) {
 25963  					/* break; */ $s = 38; continue;
 25964  				}
 25965  				$r = data.Swap(a, b - 1 >> 0); /* */ $s = 47; case 47: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 25966  				a = a + (1) >> 0;
 25967  				b = b - (1) >> 0;
 25968  			/* } */ $s = 37; continue; case 38:
 25969  		/* } */ case 36:
 25970  		$r = data.Swap(pivot, b - 1 >> 0); /* */ $s = 48; case 48: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 25971  		_tmp$2 = b - 1 >> 0;
 25972  		_tmp$3 = c;
 25973  		midlo = _tmp$2;
 25974  		midhi = _tmp$3;
 25975  		$s = -1; return [midlo, midhi];
 25976  		/* */ } return; } if ($f === undefined) { $f = { $blk: doPivot_func }; } $f._q = _q; $f._q$1 = _q$1; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._v = _v; $f._v$1 = _v$1; $f._v$2 = _v$2; $f._v$3 = _v$3; $f._v$4 = _v$4; $f.a = a; $f.b = b; $f.c = c; $f.data = data; $f.dups = dups; $f.hi = hi; $f.lo = lo; $f.m = m; $f.midhi = midhi; $f.midlo = midlo; $f.pivot = pivot; $f.protect = protect; $f.s = s; $f.$s = $s; $f.$r = $r; return $f;
 25977  	};
 25978  	quickSort_func = function(data, a, b, maxDepth$1) {
 25979  		var _r, _r$1, _tuple, a, b, data, i, maxDepth$1, mhi, mlo, $s, $r;
 25980  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _tuple = $f._tuple; a = $f.a; b = $f.b; data = $f.data; i = $f.i; maxDepth$1 = $f.maxDepth$1; mhi = $f.mhi; mlo = $f.mlo; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 25981  		/* while (true) { */ case 1:
 25982  			/* if (!((b - a >> 0) > 12)) { break; } */ if(!((b - a >> 0) > 12)) { $s = 2; continue; }
 25983  			/* */ if (maxDepth$1 === 0) { $s = 3; continue; }
 25984  			/* */ $s = 4; continue;
 25985  			/* if (maxDepth$1 === 0) { */ case 3:
 25986  				$r = heapSort_func($clone(data, lessSwap), a, b); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 25987  				$s = -1; return;
 25988  			/* } */ case 4:
 25989  			maxDepth$1 = maxDepth$1 - (1) >> 0;
 25990  			_r = doPivot_func($clone(data, lessSwap), a, b); /* */ $s = 6; case 6: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 25991  			_tuple = _r;
 25992  			mlo = _tuple[0];
 25993  			mhi = _tuple[1];
 25994  			/* */ if ((mlo - a >> 0) < (b - mhi >> 0)) { $s = 7; continue; }
 25995  			/* */ $s = 8; continue;
 25996  			/* if ((mlo - a >> 0) < (b - mhi >> 0)) { */ case 7:
 25997  				$r = quickSort_func($clone(data, lessSwap), a, mlo, maxDepth$1); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 25998  				a = mhi;
 25999  				$s = 9; continue;
 26000  			/* } else { */ case 8:
 26001  				$r = quickSort_func($clone(data, lessSwap), mhi, b, maxDepth$1); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 26002  				b = mlo;
 26003  			/* } */ case 9:
 26004  		/* } */ $s = 1; continue; case 2:
 26005  		/* */ if ((b - a >> 0) > 1) { $s = 12; continue; }
 26006  		/* */ $s = 13; continue;
 26007  		/* if ((b - a >> 0) > 1) { */ case 12:
 26008  			i = a + 6 >> 0;
 26009  			/* while (true) { */ case 14:
 26010  				/* if (!(i < b)) { break; } */ if(!(i < b)) { $s = 15; continue; }
 26011  				_r$1 = data.Less(i, i - 6 >> 0); /* */ $s = 18; case 18: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 26012  				/* */ if (_r$1) { $s = 16; continue; }
 26013  				/* */ $s = 17; continue;
 26014  				/* if (_r$1) { */ case 16:
 26015  					$r = data.Swap(i, i - 6 >> 0); /* */ $s = 19; case 19: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 26016  				/* } */ case 17:
 26017  				i = i + (1) >> 0;
 26018  			/* } */ $s = 14; continue; case 15:
 26019  			$r = insertionSort_func($clone(data, lessSwap), a, b); /* */ $s = 20; case 20: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 26020  		/* } */ case 13:
 26021  		$s = -1; return;
 26022  		/* */ } return; } if ($f === undefined) { $f = { $blk: quickSort_func }; } $f._r = _r; $f._r$1 = _r$1; $f._tuple = _tuple; $f.a = a; $f.b = b; $f.data = data; $f.i = i; $f.maxDepth$1 = maxDepth$1; $f.mhi = mhi; $f.mlo = mlo; $f.$s = $s; $f.$r = $r; return $f;
 26023  	};
 26024  	reverse.methods = [{prop: "Less", name: "Less", pkg: "", typ: $funcType([$Int, $Int], [$Bool], false)}];
 26025  	StringSlice.methods = [{prop: "Search", name: "Search", pkg: "", typ: $funcType([$String], [$Int], false)}, {prop: "Len", name: "Len", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Less", name: "Less", pkg: "", typ: $funcType([$Int, $Int], [$Bool], false)}, {prop: "Swap", name: "Swap", pkg: "", typ: $funcType([$Int, $Int], [], false)}, {prop: "Sort", name: "Sort", pkg: "", typ: $funcType([], [], false)}];
 26026  	Interface.init([{prop: "Len", name: "Len", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Less", name: "Less", pkg: "", typ: $funcType([$Int, $Int], [$Bool], false)}, {prop: "Swap", name: "Swap", pkg: "", typ: $funcType([$Int, $Int], [], false)}]);
 26027  	lessSwap.init("", [{prop: "Less", name: "Less", anonymous: false, exported: true, typ: funcType, tag: ""}, {prop: "Swap", name: "Swap", anonymous: false, exported: true, typ: funcType$1, tag: ""}]);
 26028  	reverse.init("", [{prop: "Interface", name: "Interface", anonymous: true, exported: true, typ: Interface, tag: ""}]);
 26029  	StringSlice.init($String);
 26030  	$init = function() {
 26031  		$pkg.$init = function() {};
 26032  		/* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 26033  		$r = reflect.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 26034  		/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
 26035  	};
 26036  	$pkg.$init = $init;
 26037  	return $pkg;
 26038  })();
 26039  $packages["strings"] = (function() {
 26040  	var $pkg = {}, $init, errors, js, io, unicode, utf8, Reader, Replacer, replacer, trieNode, genericReplacer, appendSliceWriter, stringWriterIface, stringWriter, singleStringReplacer, byteReplacer, byteStringReplacer, stringFinder, asciiSet, span, sliceType, arrayType, ptrType$1, arrayType$1, ptrType$2, ptrType$3, sliceType$1, ptrType$4, ptrType$5, arrayType$2, sliceType$2, sliceType$3, ptrType$6, sliceType$4, arrayType$3, ptrType$7, ptrType$8, ptrType$9, ptrType$10, asciiSpace, IndexByte, Index, LastIndex, Count, NewReader, NewReplacer, makeGenericReplacer, getStringWriter, makeSingleStringReplacer, makeStringFinder, longestCommonSuffix, max, explode, Contains, ContainsRune, IndexRune, IndexAny, LastIndexByte, genSplit, SplitN, Split, Fields, FieldsFunc, Join, HasPrefix, HasSuffix, Map, ToLower, TrimLeftFunc, TrimRightFunc, TrimFunc, IndexFunc, indexFunc, lastIndexFunc, makeASCIISet, makeCutsetFunc, Trim, TrimLeft, TrimRight, TrimSpace, TrimPrefix, TrimSuffix, Replace, EqualFold;
 26041  	errors = $packages["errors"];
 26042  	js = $packages["github.com/gopherjs/gopherjs/js"];
 26043  	io = $packages["io"];
 26044  	unicode = $packages["unicode"];
 26045  	utf8 = $packages["unicode/utf8"];
 26046  	Reader = $pkg.Reader = $newType(0, $kindStruct, "strings.Reader", true, "strings", true, function(s_, i_, prevRune_) {
 26047  		this.$val = this;
 26048  		if (arguments.length === 0) {
 26049  			this.s = "";
 26050  			this.i = new $Int64(0, 0);
 26051  			this.prevRune = 0;
 26052  			return;
 26053  		}
 26054  		this.s = s_;
 26055  		this.i = i_;
 26056  		this.prevRune = prevRune_;
 26057  	});
 26058  	Replacer = $pkg.Replacer = $newType(0, $kindStruct, "strings.Replacer", true, "strings", true, function(r_) {
 26059  		this.$val = this;
 26060  		if (arguments.length === 0) {
 26061  			this.r = $ifaceNil;
 26062  			return;
 26063  		}
 26064  		this.r = r_;
 26065  	});
 26066  	replacer = $pkg.replacer = $newType(8, $kindInterface, "strings.replacer", true, "strings", false, null);
 26067  	trieNode = $pkg.trieNode = $newType(0, $kindStruct, "strings.trieNode", true, "strings", false, function(value_, priority_, prefix_, next_, table_) {
 26068  		this.$val = this;
 26069  		if (arguments.length === 0) {
 26070  			this.value = "";
 26071  			this.priority = 0;
 26072  			this.prefix = "";
 26073  			this.next = ptrType$3.nil;
 26074  			this.table = sliceType$1.nil;
 26075  			return;
 26076  		}
 26077  		this.value = value_;
 26078  		this.priority = priority_;
 26079  		this.prefix = prefix_;
 26080  		this.next = next_;
 26081  		this.table = table_;
 26082  	});
 26083  	genericReplacer = $pkg.genericReplacer = $newType(0, $kindStruct, "strings.genericReplacer", true, "strings", false, function(root_, tableSize_, mapping_) {
 26084  		this.$val = this;
 26085  		if (arguments.length === 0) {
 26086  			this.root = new trieNode.ptr("", 0, "", ptrType$3.nil, sliceType$1.nil);
 26087  			this.tableSize = 0;
 26088  			this.mapping = arrayType.zero();
 26089  			return;
 26090  		}
 26091  		this.root = root_;
 26092  		this.tableSize = tableSize_;
 26093  		this.mapping = mapping_;
 26094  	});
 26095  	appendSliceWriter = $pkg.appendSliceWriter = $newType(12, $kindSlice, "strings.appendSliceWriter", true, "strings", false, null);
 26096  	stringWriterIface = $pkg.stringWriterIface = $newType(8, $kindInterface, "strings.stringWriterIface", true, "strings", false, null);
 26097  	stringWriter = $pkg.stringWriter = $newType(0, $kindStruct, "strings.stringWriter", true, "strings", false, function(w_) {
 26098  		this.$val = this;
 26099  		if (arguments.length === 0) {
 26100  			this.w = $ifaceNil;
 26101  			return;
 26102  		}
 26103  		this.w = w_;
 26104  	});
 26105  	singleStringReplacer = $pkg.singleStringReplacer = $newType(0, $kindStruct, "strings.singleStringReplacer", true, "strings", false, function(finder_, value_) {
 26106  		this.$val = this;
 26107  		if (arguments.length === 0) {
 26108  			this.finder = ptrType$5.nil;
 26109  			this.value = "";
 26110  			return;
 26111  		}
 26112  		this.finder = finder_;
 26113  		this.value = value_;
 26114  	});
 26115  	byteReplacer = $pkg.byteReplacer = $newType(256, $kindArray, "strings.byteReplacer", true, "strings", false, null);
 26116  	byteStringReplacer = $pkg.byteStringReplacer = $newType(3072, $kindArray, "strings.byteStringReplacer", true, "strings", false, null);
 26117  	stringFinder = $pkg.stringFinder = $newType(0, $kindStruct, "strings.stringFinder", true, "strings", false, function(pattern_, badCharSkip_, goodSuffixSkip_) {
 26118  		this.$val = this;
 26119  		if (arguments.length === 0) {
 26120  			this.pattern = "";
 26121  			this.badCharSkip = arrayType$2.zero();
 26122  			this.goodSuffixSkip = sliceType$2.nil;
 26123  			return;
 26124  		}
 26125  		this.pattern = pattern_;
 26126  		this.badCharSkip = badCharSkip_;
 26127  		this.goodSuffixSkip = goodSuffixSkip_;
 26128  	});
 26129  	asciiSet = $pkg.asciiSet = $newType(32, $kindArray, "strings.asciiSet", true, "strings", false, null);
 26130  	span = $newType(0, $kindStruct, "strings.span", true, "strings", false, function(start_, end_) {
 26131  		this.$val = this;
 26132  		if (arguments.length === 0) {
 26133  			this.start = 0;
 26134  			this.end = 0;
 26135  			return;
 26136  		}
 26137  		this.start = start_;
 26138  		this.end = end_;
 26139  	});
 26140  	sliceType = $sliceType($Uint8);
 26141  	arrayType = $arrayType($Uint8, 256);
 26142  	ptrType$1 = $ptrType(byteReplacer);
 26143  	arrayType$1 = $arrayType(sliceType, 256);
 26144  	ptrType$2 = $ptrType(byteStringReplacer);
 26145  	ptrType$3 = $ptrType(trieNode);
 26146  	sliceType$1 = $sliceType(ptrType$3);
 26147  	ptrType$4 = $ptrType(appendSliceWriter);
 26148  	ptrType$5 = $ptrType(stringFinder);
 26149  	arrayType$2 = $arrayType($Int, 256);
 26150  	sliceType$2 = $sliceType($Int);
 26151  	sliceType$3 = $sliceType($String);
 26152  	ptrType$6 = $ptrType(asciiSet);
 26153  	sliceType$4 = $sliceType(span);
 26154  	arrayType$3 = $arrayType($Uint32, 8);
 26155  	ptrType$7 = $ptrType(Reader);
 26156  	ptrType$8 = $ptrType(Replacer);
 26157  	ptrType$9 = $ptrType(genericReplacer);
 26158  	ptrType$10 = $ptrType(singleStringReplacer);
 26159  	IndexByte = function(s, c) {
 26160  		var c, s;
 26161  		return $parseInt(s.indexOf($global.String.fromCharCode(c))) >> 0;
 26162  	};
 26163  	$pkg.IndexByte = IndexByte;
 26164  	Index = function(s, sep) {
 26165  		var s, sep;
 26166  		return $parseInt(s.indexOf(sep)) >> 0;
 26167  	};
 26168  	$pkg.Index = Index;
 26169  	LastIndex = function(s, sep) {
 26170  		var s, sep;
 26171  		return $parseInt(s.lastIndexOf(sep)) >> 0;
 26172  	};
 26173  	$pkg.LastIndex = LastIndex;
 26174  	Count = function(s, sep) {
 26175  		var n, pos, s, sep;
 26176  		n = 0;
 26177  		if ((sep.length === 0)) {
 26178  			return utf8.RuneCountInString(s) + 1 >> 0;
 26179  		} else if (sep.length > s.length) {
 26180  			return 0;
 26181  		} else if ((sep.length === s.length)) {
 26182  			if (sep === s) {
 26183  				return 1;
 26184  			}
 26185  			return 0;
 26186  		}
 26187  		while (true) {
 26188  			pos = Index(s, sep);
 26189  			if (pos === -1) {
 26190  				break;
 26191  			}
 26192  			n = n + (1) >> 0;
 26193  			s = $substring(s, (pos + sep.length >> 0));
 26194  		}
 26195  		return n;
 26196  	};
 26197  	$pkg.Count = Count;
 26198  	Reader.ptr.prototype.Len = function() {
 26199  		var r, x, x$1, x$2, x$3, x$4;
 26200  		r = this;
 26201  		if ((x = r.i, x$1 = (new $Int64(0, r.s.length)), (x.$high > x$1.$high || (x.$high === x$1.$high && x.$low >= x$1.$low)))) {
 26202  			return 0;
 26203  		}
 26204  		return (((x$2 = (x$3 = (new $Int64(0, r.s.length)), x$4 = r.i, new $Int64(x$3.$high - x$4.$high, x$3.$low - x$4.$low)), x$2.$low + ((x$2.$high >> 31) * 4294967296)) >> 0));
 26205  	};
 26206  	Reader.prototype.Len = function() { return this.$val.Len(); };
 26207  	Reader.ptr.prototype.Size = function() {
 26208  		var r;
 26209  		r = this;
 26210  		return (new $Int64(0, r.s.length));
 26211  	};
 26212  	Reader.prototype.Size = function() { return this.$val.Size(); };
 26213  	Reader.ptr.prototype.Read = function(b) {
 26214  		var _tmp, _tmp$1, b, err, n, r, x, x$1, x$2, x$3;
 26215  		n = 0;
 26216  		err = $ifaceNil;
 26217  		r = this;
 26218  		if ((x = r.i, x$1 = (new $Int64(0, r.s.length)), (x.$high > x$1.$high || (x.$high === x$1.$high && x.$low >= x$1.$low)))) {
 26219  			_tmp = 0;
 26220  			_tmp$1 = io.EOF;
 26221  			n = _tmp;
 26222  			err = _tmp$1;
 26223  			return [n, err];
 26224  		}
 26225  		r.prevRune = -1;
 26226  		n = $copyString(b, $substring(r.s, $flatten64(r.i)));
 26227  		r.i = (x$2 = r.i, x$3 = (new $Int64(0, n)), new $Int64(x$2.$high + x$3.$high, x$2.$low + x$3.$low));
 26228  		return [n, err];
 26229  	};
 26230  	Reader.prototype.Read = function(b) { return this.$val.Read(b); };
 26231  	Reader.ptr.prototype.ReadAt = function(b, off) {
 26232  		var _tmp, _tmp$1, _tmp$2, _tmp$3, b, err, n, off, r, x;
 26233  		n = 0;
 26234  		err = $ifaceNil;
 26235  		r = this;
 26236  		if ((off.$high < 0 || (off.$high === 0 && off.$low < 0))) {
 26237  			_tmp = 0;
 26238  			_tmp$1 = errors.New("strings.Reader.ReadAt: negative offset");
 26239  			n = _tmp;
 26240  			err = _tmp$1;
 26241  			return [n, err];
 26242  		}
 26243  		if ((x = (new $Int64(0, r.s.length)), (off.$high > x.$high || (off.$high === x.$high && off.$low >= x.$low)))) {
 26244  			_tmp$2 = 0;
 26245  			_tmp$3 = io.EOF;
 26246  			n = _tmp$2;
 26247  			err = _tmp$3;
 26248  			return [n, err];
 26249  		}
 26250  		n = $copyString(b, $substring(r.s, $flatten64(off)));
 26251  		if (n < b.$length) {
 26252  			err = io.EOF;
 26253  		}
 26254  		return [n, err];
 26255  	};
 26256  	Reader.prototype.ReadAt = function(b, off) { return this.$val.ReadAt(b, off); };
 26257  	Reader.ptr.prototype.ReadByte = function() {
 26258  		var b, r, x, x$1, x$2, x$3;
 26259  		r = this;
 26260  		r.prevRune = -1;
 26261  		if ((x = r.i, x$1 = (new $Int64(0, r.s.length)), (x.$high > x$1.$high || (x.$high === x$1.$high && x.$low >= x$1.$low)))) {
 26262  			return [0, io.EOF];
 26263  		}
 26264  		b = r.s.charCodeAt($flatten64(r.i));
 26265  		r.i = (x$2 = r.i, x$3 = new $Int64(0, 1), new $Int64(x$2.$high + x$3.$high, x$2.$low + x$3.$low));
 26266  		return [b, $ifaceNil];
 26267  	};
 26268  	Reader.prototype.ReadByte = function() { return this.$val.ReadByte(); };
 26269  	Reader.ptr.prototype.UnreadByte = function() {
 26270  		var r, x, x$1, x$2;
 26271  		r = this;
 26272  		r.prevRune = -1;
 26273  		if ((x = r.i, (x.$high < 0 || (x.$high === 0 && x.$low <= 0)))) {
 26274  			return errors.New("strings.Reader.UnreadByte: at beginning of string");
 26275  		}
 26276  		r.i = (x$1 = r.i, x$2 = new $Int64(0, 1), new $Int64(x$1.$high - x$2.$high, x$1.$low - x$2.$low));
 26277  		return $ifaceNil;
 26278  	};
 26279  	Reader.prototype.UnreadByte = function() { return this.$val.UnreadByte(); };
 26280  	Reader.ptr.prototype.ReadRune = function() {
 26281  		var _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tuple, c, ch, err, r, size, x, x$1, x$2, x$3, x$4, x$5, x$6;
 26282  		ch = 0;
 26283  		size = 0;
 26284  		err = $ifaceNil;
 26285  		r = this;
 26286  		if ((x = r.i, x$1 = (new $Int64(0, r.s.length)), (x.$high > x$1.$high || (x.$high === x$1.$high && x.$low >= x$1.$low)))) {
 26287  			r.prevRune = -1;
 26288  			_tmp = 0;
 26289  			_tmp$1 = 0;
 26290  			_tmp$2 = io.EOF;
 26291  			ch = _tmp;
 26292  			size = _tmp$1;
 26293  			err = _tmp$2;
 26294  			return [ch, size, err];
 26295  		}
 26296  		r.prevRune = (((x$2 = r.i, x$2.$low + ((x$2.$high >> 31) * 4294967296)) >> 0));
 26297  		c = r.s.charCodeAt($flatten64(r.i));
 26298  		if (c < 128) {
 26299  			r.i = (x$3 = r.i, x$4 = new $Int64(0, 1), new $Int64(x$3.$high + x$4.$high, x$3.$low + x$4.$low));
 26300  			_tmp$3 = ((c >> 0));
 26301  			_tmp$4 = 1;
 26302  			_tmp$5 = $ifaceNil;
 26303  			ch = _tmp$3;
 26304  			size = _tmp$4;
 26305  			err = _tmp$5;
 26306  			return [ch, size, err];
 26307  		}
 26308  		_tuple = utf8.DecodeRuneInString($substring(r.s, $flatten64(r.i)));
 26309  		ch = _tuple[0];
 26310  		size = _tuple[1];
 26311  		r.i = (x$5 = r.i, x$6 = (new $Int64(0, size)), new $Int64(x$5.$high + x$6.$high, x$5.$low + x$6.$low));
 26312  		return [ch, size, err];
 26313  	};
 26314  	Reader.prototype.ReadRune = function() { return this.$val.ReadRune(); };
 26315  	Reader.ptr.prototype.UnreadRune = function() {
 26316  		var r;
 26317  		r = this;
 26318  		if (r.prevRune < 0) {
 26319  			return errors.New("strings.Reader.UnreadRune: previous operation was not ReadRune");
 26320  		}
 26321  		r.i = (new $Int64(0, r.prevRune));
 26322  		r.prevRune = -1;
 26323  		return $ifaceNil;
 26324  	};
 26325  	Reader.prototype.UnreadRune = function() { return this.$val.UnreadRune(); };
 26326  	Reader.ptr.prototype.Seek = function(offset, whence) {
 26327  		var _1, abs, offset, r, whence, x, x$1;
 26328  		r = this;
 26329  		r.prevRune = -1;
 26330  		abs = new $Int64(0, 0);
 26331  		_1 = whence;
 26332  		if (_1 === (0)) {
 26333  			abs = offset;
 26334  		} else if (_1 === (1)) {
 26335  			abs = (x = r.i, new $Int64(x.$high + offset.$high, x.$low + offset.$low));
 26336  		} else if (_1 === (2)) {
 26337  			abs = (x$1 = (new $Int64(0, r.s.length)), new $Int64(x$1.$high + offset.$high, x$1.$low + offset.$low));
 26338  		} else {
 26339  			return [new $Int64(0, 0), errors.New("strings.Reader.Seek: invalid whence")];
 26340  		}
 26341  		if ((abs.$high < 0 || (abs.$high === 0 && abs.$low < 0))) {
 26342  			return [new $Int64(0, 0), errors.New("strings.Reader.Seek: negative position")];
 26343  		}
 26344  		r.i = abs;
 26345  		return [abs, $ifaceNil];
 26346  	};
 26347  	Reader.prototype.Seek = function(offset, whence) { return this.$val.Seek(offset, whence); };
 26348  	Reader.ptr.prototype.WriteTo = function(w) {
 26349  		var _r, _tmp, _tmp$1, _tuple, err, m, n, r, s, w, x, x$1, x$2, x$3, $s, $r;
 26350  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tuple = $f._tuple; err = $f.err; m = $f.m; n = $f.n; r = $f.r; s = $f.s; w = $f.w; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; x$3 = $f.x$3; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 26351  		n = new $Int64(0, 0);
 26352  		err = $ifaceNil;
 26353  		r = this;
 26354  		r.prevRune = -1;
 26355  		if ((x = r.i, x$1 = (new $Int64(0, r.s.length)), (x.$high > x$1.$high || (x.$high === x$1.$high && x.$low >= x$1.$low)))) {
 26356  			_tmp = new $Int64(0, 0);
 26357  			_tmp$1 = $ifaceNil;
 26358  			n = _tmp;
 26359  			err = _tmp$1;
 26360  			$s = -1; return [n, err];
 26361  		}
 26362  		s = $substring(r.s, $flatten64(r.i));
 26363  		_r = io.WriteString(w, s); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 26364  		_tuple = _r;
 26365  		m = _tuple[0];
 26366  		err = _tuple[1];
 26367  		if (m > s.length) {
 26368  			$panic(new $String("strings.Reader.WriteTo: invalid WriteString count"));
 26369  		}
 26370  		r.i = (x$2 = r.i, x$3 = (new $Int64(0, m)), new $Int64(x$2.$high + x$3.$high, x$2.$low + x$3.$low));
 26371  		n = (new $Int64(0, m));
 26372  		if (!((m === s.length)) && $interfaceIsEqual(err, $ifaceNil)) {
 26373  			err = io.ErrShortWrite;
 26374  		}
 26375  		$s = -1; return [n, err];
 26376  		/* */ } return; } if ($f === undefined) { $f = { $blk: Reader.ptr.prototype.WriteTo }; } $f._r = _r; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tuple = _tuple; $f.err = err; $f.m = m; $f.n = n; $f.r = r; $f.s = s; $f.w = w; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.x$3 = x$3; $f.$s = $s; $f.$r = $r; return $f;
 26377  	};
 26378  	Reader.prototype.WriteTo = function(w) { return this.$val.WriteTo(w); };
 26379  	Reader.ptr.prototype.Reset = function(s) {
 26380  		var r, s;
 26381  		r = this;
 26382  		Reader.copy(r, new Reader.ptr(s, new $Int64(0, 0), -1));
 26383  	};
 26384  	Reader.prototype.Reset = function(s) { return this.$val.Reset(s); };
 26385  	NewReader = function(s) {
 26386  		var s;
 26387  		return new Reader.ptr(s, new $Int64(0, 0), -1);
 26388  	};
 26389  	$pkg.NewReader = NewReader;
 26390  	NewReplacer = function(oldnew) {
 26391  		var _i, _r, _ref, allNewBytes, i, i$1, i$2, i$3, n, n$1, o, o$1, oldnew, r, r$1, x, x$1, x$2;
 26392  		if ((_r = oldnew.$length % 2, _r === _r ? _r : $throwRuntimeError("integer divide by zero")) === 1) {
 26393  			$panic(new $String("strings.NewReplacer: odd argument count"));
 26394  		}
 26395  		if ((oldnew.$length === 2) && (0 >= oldnew.$length ? ($throwRuntimeError("index out of range"), undefined) : oldnew.$array[oldnew.$offset + 0]).length > 1) {
 26396  			return new Replacer.ptr(makeSingleStringReplacer((0 >= oldnew.$length ? ($throwRuntimeError("index out of range"), undefined) : oldnew.$array[oldnew.$offset + 0]), (1 >= oldnew.$length ? ($throwRuntimeError("index out of range"), undefined) : oldnew.$array[oldnew.$offset + 1])));
 26397  		}
 26398  		allNewBytes = true;
 26399  		i = 0;
 26400  		while (true) {
 26401  			if (!(i < oldnew.$length)) { break; }
 26402  			if (!((((i < 0 || i >= oldnew.$length) ? ($throwRuntimeError("index out of range"), undefined) : oldnew.$array[oldnew.$offset + i]).length === 1))) {
 26403  				return new Replacer.ptr(makeGenericReplacer(oldnew));
 26404  			}
 26405  			if (!(((x = i + 1 >> 0, ((x < 0 || x >= oldnew.$length) ? ($throwRuntimeError("index out of range"), undefined) : oldnew.$array[oldnew.$offset + x])).length === 1))) {
 26406  				allNewBytes = false;
 26407  			}
 26408  			i = i + (2) >> 0;
 26409  		}
 26410  		if (allNewBytes) {
 26411  			r = arrayType.zero();
 26412  			_ref = r;
 26413  			_i = 0;
 26414  			while (true) {
 26415  				if (!(_i < 256)) { break; }
 26416  				i$1 = _i;
 26417  				((i$1 < 0 || i$1 >= r.length) ? ($throwRuntimeError("index out of range"), undefined) : r[i$1] = ((i$1 << 24 >>> 24)));
 26418  				_i++;
 26419  			}
 26420  			i$2 = oldnew.$length - 2 >> 0;
 26421  			while (true) {
 26422  				if (!(i$2 >= 0)) { break; }
 26423  				o = ((i$2 < 0 || i$2 >= oldnew.$length) ? ($throwRuntimeError("index out of range"), undefined) : oldnew.$array[oldnew.$offset + i$2]).charCodeAt(0);
 26424  				n = (x$1 = i$2 + 1 >> 0, ((x$1 < 0 || x$1 >= oldnew.$length) ? ($throwRuntimeError("index out of range"), undefined) : oldnew.$array[oldnew.$offset + x$1])).charCodeAt(0);
 26425  				((o < 0 || o >= r.length) ? ($throwRuntimeError("index out of range"), undefined) : r[o] = n);
 26426  				i$2 = i$2 - (2) >> 0;
 26427  			}
 26428  			return new Replacer.ptr(new ptrType$1(r));
 26429  		}
 26430  		r$1 = arrayType$1.zero();
 26431  		i$3 = oldnew.$length - 2 >> 0;
 26432  		while (true) {
 26433  			if (!(i$3 >= 0)) { break; }
 26434  			o$1 = ((i$3 < 0 || i$3 >= oldnew.$length) ? ($throwRuntimeError("index out of range"), undefined) : oldnew.$array[oldnew.$offset + i$3]).charCodeAt(0);
 26435  			n$1 = (x$2 = i$3 + 1 >> 0, ((x$2 < 0 || x$2 >= oldnew.$length) ? ($throwRuntimeError("index out of range"), undefined) : oldnew.$array[oldnew.$offset + x$2]));
 26436  			((o$1 < 0 || o$1 >= r$1.length) ? ($throwRuntimeError("index out of range"), undefined) : r$1[o$1] = (new sliceType($stringToBytes(n$1))));
 26437  			i$3 = i$3 - (2) >> 0;
 26438  		}
 26439  		return new Replacer.ptr(new ptrType$2(r$1));
 26440  	};
 26441  	$pkg.NewReplacer = NewReplacer;
 26442  	Replacer.ptr.prototype.Replace = function(s) {
 26443  		var _r, r, s, $s, $r;
 26444  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; r = $f.r; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 26445  		r = this;
 26446  		_r = r.r.Replace(s); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 26447  		$s = -1; return _r;
 26448  		/* */ } return; } if ($f === undefined) { $f = { $blk: Replacer.ptr.prototype.Replace }; } $f._r = _r; $f.r = r; $f.s = s; $f.$s = $s; $f.$r = $r; return $f;
 26449  	};
 26450  	Replacer.prototype.Replace = function(s) { return this.$val.Replace(s); };
 26451  	Replacer.ptr.prototype.WriteString = function(w, s) {
 26452  		var _r, _tuple, err, n, r, s, w, $s, $r;
 26453  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; err = $f.err; n = $f.n; r = $f.r; s = $f.s; w = $f.w; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 26454  		n = 0;
 26455  		err = $ifaceNil;
 26456  		r = this;
 26457  		_r = r.r.WriteString(w, s); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 26458  		_tuple = _r;
 26459  		n = _tuple[0];
 26460  		err = _tuple[1];
 26461  		$s = -1; return [n, err];
 26462  		/* */ } return; } if ($f === undefined) { $f = { $blk: Replacer.ptr.prototype.WriteString }; } $f._r = _r; $f._tuple = _tuple; $f.err = err; $f.n = n; $f.r = r; $f.s = s; $f.w = w; $f.$s = $s; $f.$r = $r; return $f;
 26463  	};
 26464  	Replacer.prototype.WriteString = function(w, s) { return this.$val.WriteString(w, s); };
 26465  	trieNode.ptr.prototype.add = function(key, val, priority, r) {
 26466  		var key, keyNode, m, n, next, prefixNode, priority, r, t, val, x, x$1, x$10, x$11, x$12, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9;
 26467  		t = this;
 26468  		if (key === "") {
 26469  			if (t.priority === 0) {
 26470  				t.value = val;
 26471  				t.priority = priority;
 26472  			}
 26473  			return;
 26474  		}
 26475  		if (!(t.prefix === "")) {
 26476  			n = 0;
 26477  			while (true) {
 26478  				if (!(n < t.prefix.length && n < key.length)) { break; }
 26479  				if (!((t.prefix.charCodeAt(n) === key.charCodeAt(n)))) {
 26480  					break;
 26481  				}
 26482  				n = n + (1) >> 0;
 26483  			}
 26484  			if (n === t.prefix.length) {
 26485  				t.next.add($substring(key, n), val, priority, r);
 26486  			} else if (n === 0) {
 26487  				prefixNode = ptrType$3.nil;
 26488  				if (t.prefix.length === 1) {
 26489  					prefixNode = t.next;
 26490  				} else {
 26491  					prefixNode = new trieNode.ptr("", 0, $substring(t.prefix, 1), t.next, sliceType$1.nil);
 26492  				}
 26493  				keyNode = new trieNode.ptr("", 0, "", ptrType$3.nil, sliceType$1.nil);
 26494  				t.table = $makeSlice(sliceType$1, r.tableSize);
 26495  				(x = t.table, x$1 = (x$2 = r.mapping, x$3 = t.prefix.charCodeAt(0), ((x$3 < 0 || x$3 >= x$2.length) ? ($throwRuntimeError("index out of range"), undefined) : x$2[x$3])), ((x$1 < 0 || x$1 >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + x$1] = prefixNode));
 26496  				(x$4 = t.table, x$5 = (x$6 = r.mapping, x$7 = key.charCodeAt(0), ((x$7 < 0 || x$7 >= x$6.length) ? ($throwRuntimeError("index out of range"), undefined) : x$6[x$7])), ((x$5 < 0 || x$5 >= x$4.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$4.$array[x$4.$offset + x$5] = keyNode));
 26497  				t.prefix = "";
 26498  				t.next = ptrType$3.nil;
 26499  				keyNode.add($substring(key, 1), val, priority, r);
 26500  			} else {
 26501  				next = new trieNode.ptr("", 0, $substring(t.prefix, n), t.next, sliceType$1.nil);
 26502  				t.prefix = $substring(t.prefix, 0, n);
 26503  				t.next = next;
 26504  				next.add($substring(key, n), val, priority, r);
 26505  			}
 26506  		} else if (!(t.table === sliceType$1.nil)) {
 26507  			m = (x$8 = r.mapping, x$9 = key.charCodeAt(0), ((x$9 < 0 || x$9 >= x$8.length) ? ($throwRuntimeError("index out of range"), undefined) : x$8[x$9]));
 26508  			if ((x$10 = t.table, ((m < 0 || m >= x$10.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$10.$array[x$10.$offset + m])) === ptrType$3.nil) {
 26509  				(x$11 = t.table, ((m < 0 || m >= x$11.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$11.$array[x$11.$offset + m] = new trieNode.ptr("", 0, "", ptrType$3.nil, sliceType$1.nil)));
 26510  			}
 26511  			(x$12 = t.table, ((m < 0 || m >= x$12.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$12.$array[x$12.$offset + m])).add($substring(key, 1), val, priority, r);
 26512  		} else {
 26513  			t.prefix = key;
 26514  			t.next = new trieNode.ptr("", 0, "", ptrType$3.nil, sliceType$1.nil);
 26515  			t.next.add("", val, priority, r);
 26516  		}
 26517  	};
 26518  	trieNode.prototype.add = function(key, val, priority, r) { return this.$val.add(key, val, priority, r); };
 26519  	genericReplacer.ptr.prototype.lookup = function(s, ignoreRoot) {
 26520  		var bestPriority, found, ignoreRoot, index, keylen, n, node, r, s, val, x, x$1, x$2;
 26521  		val = "";
 26522  		keylen = 0;
 26523  		found = false;
 26524  		r = this;
 26525  		bestPriority = 0;
 26526  		node = r.root;
 26527  		n = 0;
 26528  		while (true) {
 26529  			if (!(!(node === ptrType$3.nil))) { break; }
 26530  			if (node.priority > bestPriority && !(ignoreRoot && node === r.root)) {
 26531  				bestPriority = node.priority;
 26532  				val = node.value;
 26533  				keylen = n;
 26534  				found = true;
 26535  			}
 26536  			if (s === "") {
 26537  				break;
 26538  			}
 26539  			if (!(node.table === sliceType$1.nil)) {
 26540  				index = (x = r.mapping, x$1 = s.charCodeAt(0), ((x$1 < 0 || x$1 >= x.length) ? ($throwRuntimeError("index out of range"), undefined) : x[x$1]));
 26541  				if (((index >> 0)) === r.tableSize) {
 26542  					break;
 26543  				}
 26544  				node = (x$2 = node.table, ((index < 0 || index >= x$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + index]));
 26545  				s = $substring(s, 1);
 26546  				n = n + (1) >> 0;
 26547  			} else if (!(node.prefix === "") && HasPrefix(s, node.prefix)) {
 26548  				n = n + (node.prefix.length) >> 0;
 26549  				s = $substring(s, node.prefix.length);
 26550  				node = node.next;
 26551  			} else {
 26552  				break;
 26553  			}
 26554  		}
 26555  		return [val, keylen, found];
 26556  	};
 26557  	genericReplacer.prototype.lookup = function(s, ignoreRoot) { return this.$val.lookup(s, ignoreRoot); };
 26558  	makeGenericReplacer = function(oldnew) {
 26559  		var _i, _i$1, _ref, _ref$1, b, b$1, i, i$1, i$2, index, j, key, oldnew, r, x, x$1, x$2, x$3, x$4;
 26560  		r = new genericReplacer.ptr(new trieNode.ptr("", 0, "", ptrType$3.nil, sliceType$1.nil), 0, arrayType.zero());
 26561  		i = 0;
 26562  		while (true) {
 26563  			if (!(i < oldnew.$length)) { break; }
 26564  			key = ((i < 0 || i >= oldnew.$length) ? ($throwRuntimeError("index out of range"), undefined) : oldnew.$array[oldnew.$offset + i]);
 26565  			j = 0;
 26566  			while (true) {
 26567  				if (!(j < key.length)) { break; }
 26568  				(x = r.mapping, x$1 = key.charCodeAt(j), ((x$1 < 0 || x$1 >= x.length) ? ($throwRuntimeError("index out of range"), undefined) : x[x$1] = 1));
 26569  				j = j + (1) >> 0;
 26570  			}
 26571  			i = i + (2) >> 0;
 26572  		}
 26573  		_ref = r.mapping;
 26574  		_i = 0;
 26575  		while (true) {
 26576  			if (!(_i < 256)) { break; }
 26577  			b = ((_i < 0 || _i >= _ref.length) ? ($throwRuntimeError("index out of range"), undefined) : _ref[_i]);
 26578  			r.tableSize = r.tableSize + (((b >> 0))) >> 0;
 26579  			_i++;
 26580  		}
 26581  		index = 0;
 26582  		_ref$1 = r.mapping;
 26583  		_i$1 = 0;
 26584  		while (true) {
 26585  			if (!(_i$1 < 256)) { break; }
 26586  			i$1 = _i$1;
 26587  			b$1 = ((_i$1 < 0 || _i$1 >= _ref$1.length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1[_i$1]);
 26588  			if (b$1 === 0) {
 26589  				(x$2 = r.mapping, ((i$1 < 0 || i$1 >= x$2.length) ? ($throwRuntimeError("index out of range"), undefined) : x$2[i$1] = ((r.tableSize << 24 >>> 24))));
 26590  			} else {
 26591  				(x$3 = r.mapping, ((i$1 < 0 || i$1 >= x$3.length) ? ($throwRuntimeError("index out of range"), undefined) : x$3[i$1] = index));
 26592  				index = index + (1) << 24 >>> 24;
 26593  			}
 26594  			_i$1++;
 26595  		}
 26596  		r.root.table = $makeSlice(sliceType$1, r.tableSize);
 26597  		i$2 = 0;
 26598  		while (true) {
 26599  			if (!(i$2 < oldnew.$length)) { break; }
 26600  			r.root.add(((i$2 < 0 || i$2 >= oldnew.$length) ? ($throwRuntimeError("index out of range"), undefined) : oldnew.$array[oldnew.$offset + i$2]), (x$4 = i$2 + 1 >> 0, ((x$4 < 0 || x$4 >= oldnew.$length) ? ($throwRuntimeError("index out of range"), undefined) : oldnew.$array[oldnew.$offset + x$4])), oldnew.$length - i$2 >> 0, r);
 26601  			i$2 = i$2 + (2) >> 0;
 26602  		}
 26603  		return r;
 26604  	};
 26605  	$ptrType(appendSliceWriter).prototype.Write = function(p) {
 26606  		var p, w;
 26607  		w = this;
 26608  		w.$set($appendSlice(w.$get(), p));
 26609  		return [p.$length, $ifaceNil];
 26610  	};
 26611  	$ptrType(appendSliceWriter).prototype.WriteString = function(s) {
 26612  		var s, w;
 26613  		w = this;
 26614  		w.$set($appendSlice(w.$get(), s));
 26615  		return [s.length, $ifaceNil];
 26616  	};
 26617  	stringWriter.ptr.prototype.WriteString = function(s) {
 26618  		var _r, s, w, $s, $r;
 26619  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; s = $f.s; w = $f.w; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 26620  		w = this;
 26621  		_r = w.w.Write((new sliceType($stringToBytes(s)))); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 26622  		$s = -1; return _r;
 26623  		/* */ } return; } if ($f === undefined) { $f = { $blk: stringWriter.ptr.prototype.WriteString }; } $f._r = _r; $f.s = s; $f.w = w; $f.$s = $s; $f.$r = $r; return $f;
 26624  	};
 26625  	stringWriter.prototype.WriteString = function(s) { return this.$val.WriteString(s); };
 26626  	getStringWriter = function(w) {
 26627  		var _tuple, ok, sw, w, x;
 26628  		_tuple = $assertType(w, stringWriterIface, true);
 26629  		sw = _tuple[0];
 26630  		ok = _tuple[1];
 26631  		if (!ok) {
 26632  			sw = (x = new stringWriter.ptr(w), new x.constructor.elem(x));
 26633  		}
 26634  		return sw;
 26635  	};
 26636  	genericReplacer.ptr.prototype.Replace = function(s) {
 26637  		var _r, buf, r, s, $s, $r;
 26638  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; buf = $f.buf; r = $f.r; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 26639  		buf = [buf];
 26640  		r = this;
 26641  		buf[0] = $makeSlice(appendSliceWriter, 0, s.length);
 26642  		_r = r.WriteString((buf.$ptr || (buf.$ptr = new ptrType$4(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, buf))), s); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 26643  		_r;
 26644  		$s = -1; return ($bytesToString(buf[0]));
 26645  		/* */ } return; } if ($f === undefined) { $f = { $blk: genericReplacer.ptr.prototype.Replace }; } $f._r = _r; $f.buf = buf; $f.r = r; $f.s = s; $f.$s = $s; $f.$r = $r; return $f;
 26646  	};
 26647  	genericReplacer.prototype.Replace = function(s) { return this.$val.Replace(s); };
 26648  	genericReplacer.ptr.prototype.WriteString = function(w, s) {
 26649  		var _r, _r$1, _r$2, _tmp, _tmp$1, _tuple, _tuple$1, _tuple$2, _tuple$3, err, i, index, keylen, last, match, n, prevMatchEmpty, r, s, sw, val, w, wn, x, x$1, x$2, $s, $r;
 26650  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; err = $f.err; i = $f.i; index = $f.index; keylen = $f.keylen; last = $f.last; match = $f.match; n = $f.n; prevMatchEmpty = $f.prevMatchEmpty; r = $f.r; s = $f.s; sw = $f.sw; val = $f.val; w = $f.w; wn = $f.wn; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 26651  		n = 0;
 26652  		err = $ifaceNil;
 26653  		r = this;
 26654  		sw = getStringWriter(w);
 26655  		_tmp = 0;
 26656  		_tmp$1 = 0;
 26657  		last = _tmp;
 26658  		wn = _tmp$1;
 26659  		prevMatchEmpty = false;
 26660  		i = 0;
 26661  		/* while (true) { */ case 1:
 26662  			/* if (!(i <= s.length)) { break; } */ if(!(i <= s.length)) { $s = 2; continue; }
 26663  			/* */ if (!((i === s.length)) && (r.root.priority === 0)) { $s = 3; continue; }
 26664  			/* */ $s = 4; continue;
 26665  			/* if (!((i === s.length)) && (r.root.priority === 0)) { */ case 3:
 26666  				index = (((x = r.mapping, x$1 = s.charCodeAt(i), ((x$1 < 0 || x$1 >= x.length) ? ($throwRuntimeError("index out of range"), undefined) : x[x$1])) >> 0));
 26667  				if ((index === r.tableSize) || (x$2 = r.root.table, ((index < 0 || index >= x$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + index])) === ptrType$3.nil) {
 26668  					i = i + (1) >> 0;
 26669  					/* continue; */ $s = 1; continue;
 26670  				}
 26671  			/* } */ case 4:
 26672  			_tuple = r.lookup($substring(s, i), prevMatchEmpty);
 26673  			val = _tuple[0];
 26674  			keylen = _tuple[1];
 26675  			match = _tuple[2];
 26676  			prevMatchEmpty = match && (keylen === 0);
 26677  			/* */ if (match) { $s = 5; continue; }
 26678  			/* */ $s = 6; continue;
 26679  			/* if (match) { */ case 5:
 26680  				_r = sw.WriteString($substring(s, last, i)); /* */ $s = 7; case 7: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 26681  				_tuple$1 = _r;
 26682  				wn = _tuple$1[0];
 26683  				err = _tuple$1[1];
 26684  				n = n + (wn) >> 0;
 26685  				if (!($interfaceIsEqual(err, $ifaceNil))) {
 26686  					$s = -1; return [n, err];
 26687  				}
 26688  				_r$1 = sw.WriteString(val); /* */ $s = 8; case 8: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 26689  				_tuple$2 = _r$1;
 26690  				wn = _tuple$2[0];
 26691  				err = _tuple$2[1];
 26692  				n = n + (wn) >> 0;
 26693  				if (!($interfaceIsEqual(err, $ifaceNil))) {
 26694  					$s = -1; return [n, err];
 26695  				}
 26696  				i = i + (keylen) >> 0;
 26697  				last = i;
 26698  				/* continue; */ $s = 1; continue;
 26699  			/* } */ case 6:
 26700  			i = i + (1) >> 0;
 26701  		/* } */ $s = 1; continue; case 2:
 26702  		/* */ if (!((last === s.length))) { $s = 9; continue; }
 26703  		/* */ $s = 10; continue;
 26704  		/* if (!((last === s.length))) { */ case 9:
 26705  			_r$2 = sw.WriteString($substring(s, last)); /* */ $s = 11; case 11: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 26706  			_tuple$3 = _r$2;
 26707  			wn = _tuple$3[0];
 26708  			err = _tuple$3[1];
 26709  			n = n + (wn) >> 0;
 26710  		/* } */ case 10:
 26711  		$s = -1; return [n, err];
 26712  		/* */ } return; } if ($f === undefined) { $f = { $blk: genericReplacer.ptr.prototype.WriteString }; } $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f.err = err; $f.i = i; $f.index = index; $f.keylen = keylen; $f.last = last; $f.match = match; $f.n = n; $f.prevMatchEmpty = prevMatchEmpty; $f.r = r; $f.s = s; $f.sw = sw; $f.val = val; $f.w = w; $f.wn = wn; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.$s = $s; $f.$r = $r; return $f;
 26713  	};
 26714  	genericReplacer.prototype.WriteString = function(w, s) { return this.$val.WriteString(w, s); };
 26715  	makeSingleStringReplacer = function(pattern, value) {
 26716  		var pattern, value;
 26717  		return new singleStringReplacer.ptr(makeStringFinder(pattern), value);
 26718  	};
 26719  	singleStringReplacer.ptr.prototype.Replace = function(s) {
 26720  		var _tmp, _tmp$1, buf, i, match, matched, r, s;
 26721  		r = this;
 26722  		buf = sliceType.nil;
 26723  		_tmp = 0;
 26724  		_tmp$1 = false;
 26725  		i = _tmp;
 26726  		matched = _tmp$1;
 26727  		while (true) {
 26728  			match = r.finder.next($substring(s, i));
 26729  			if (match === -1) {
 26730  				break;
 26731  			}
 26732  			matched = true;
 26733  			buf = $appendSlice(buf, $substring(s, i, (i + match >> 0)));
 26734  			buf = $appendSlice(buf, r.value);
 26735  			i = i + ((match + r.finder.pattern.length >> 0)) >> 0;
 26736  		}
 26737  		if (!matched) {
 26738  			return s;
 26739  		}
 26740  		buf = $appendSlice(buf, $substring(s, i));
 26741  		return ($bytesToString(buf));
 26742  	};
 26743  	singleStringReplacer.prototype.Replace = function(s) { return this.$val.Replace(s); };
 26744  	singleStringReplacer.ptr.prototype.WriteString = function(w, s) {
 26745  		var _r, _r$1, _r$2, _tmp, _tmp$1, _tuple, _tuple$1, _tuple$2, err, i, match, n, r, s, sw, w, wn, $s, $r;
 26746  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; err = $f.err; i = $f.i; match = $f.match; n = $f.n; r = $f.r; s = $f.s; sw = $f.sw; w = $f.w; wn = $f.wn; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 26747  		n = 0;
 26748  		err = $ifaceNil;
 26749  		r = this;
 26750  		sw = getStringWriter(w);
 26751  		_tmp = 0;
 26752  		_tmp$1 = 0;
 26753  		i = _tmp;
 26754  		wn = _tmp$1;
 26755  		/* while (true) { */ case 1:
 26756  			match = r.finder.next($substring(s, i));
 26757  			if (match === -1) {
 26758  				/* break; */ $s = 2; continue;
 26759  			}
 26760  			_r = sw.WriteString($substring(s, i, (i + match >> 0))); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 26761  			_tuple = _r;
 26762  			wn = _tuple[0];
 26763  			err = _tuple[1];
 26764  			n = n + (wn) >> 0;
 26765  			if (!($interfaceIsEqual(err, $ifaceNil))) {
 26766  				$s = -1; return [n, err];
 26767  			}
 26768  			_r$1 = sw.WriteString(r.value); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 26769  			_tuple$1 = _r$1;
 26770  			wn = _tuple$1[0];
 26771  			err = _tuple$1[1];
 26772  			n = n + (wn) >> 0;
 26773  			if (!($interfaceIsEqual(err, $ifaceNil))) {
 26774  				$s = -1; return [n, err];
 26775  			}
 26776  			i = i + ((match + r.finder.pattern.length >> 0)) >> 0;
 26777  		/* } */ $s = 1; continue; case 2:
 26778  		_r$2 = sw.WriteString($substring(s, i)); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 26779  		_tuple$2 = _r$2;
 26780  		wn = _tuple$2[0];
 26781  		err = _tuple$2[1];
 26782  		n = n + (wn) >> 0;
 26783  		$s = -1; return [n, err];
 26784  		/* */ } return; } if ($f === undefined) { $f = { $blk: singleStringReplacer.ptr.prototype.WriteString }; } $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f.err = err; $f.i = i; $f.match = match; $f.n = n; $f.r = r; $f.s = s; $f.sw = sw; $f.w = w; $f.wn = wn; $f.$s = $s; $f.$r = $r; return $f;
 26785  	};
 26786  	singleStringReplacer.prototype.WriteString = function(w, s) { return this.$val.WriteString(w, s); };
 26787  	byteReplacer.prototype.Replace = function(s) {
 26788  		var b, buf, i, r, s;
 26789  		r = this.$val;
 26790  		buf = sliceType.nil;
 26791  		i = 0;
 26792  		while (true) {
 26793  			if (!(i < s.length)) { break; }
 26794  			b = s.charCodeAt(i);
 26795  			if (!(((r.nilCheck, ((b < 0 || b >= r.length) ? ($throwRuntimeError("index out of range"), undefined) : r[b])) === b))) {
 26796  				if (buf === sliceType.nil) {
 26797  					buf = (new sliceType($stringToBytes(s)));
 26798  				}
 26799  				((i < 0 || i >= buf.$length) ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + i] = (r.nilCheck, ((b < 0 || b >= r.length) ? ($throwRuntimeError("index out of range"), undefined) : r[b])));
 26800  			}
 26801  			i = i + (1) >> 0;
 26802  		}
 26803  		if (buf === sliceType.nil) {
 26804  			return s;
 26805  		}
 26806  		return ($bytesToString(buf));
 26807  	};
 26808  	$ptrType(byteReplacer).prototype.Replace = function(s) { return (new byteReplacer(this.$get())).Replace(s); };
 26809  	byteReplacer.prototype.WriteString = function(w, s) {
 26810  		var _i, _r, _ref, _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, b, buf, bufsize, err, err$1, i, n, ncopy, r, s, w, wn, $s, $r;
 26811  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _i = $f._i; _r = $f._r; _ref = $f._ref; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tuple = $f._tuple; b = $f.b; buf = $f.buf; bufsize = $f.bufsize; err = $f.err; err$1 = $f.err$1; i = $f.i; n = $f.n; ncopy = $f.ncopy; r = $f.r; s = $f.s; w = $f.w; wn = $f.wn; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 26812  		n = 0;
 26813  		err = $ifaceNil;
 26814  		r = this.$val;
 26815  		bufsize = 32768;
 26816  		if (s.length < bufsize) {
 26817  			bufsize = s.length;
 26818  		}
 26819  		buf = $makeSlice(sliceType, bufsize);
 26820  		/* while (true) { */ case 1:
 26821  			/* if (!(s.length > 0)) { break; } */ if(!(s.length > 0)) { $s = 2; continue; }
 26822  			ncopy = $copyString(buf, s);
 26823  			s = $substring(s, ncopy);
 26824  			_ref = $subslice(buf, 0, ncopy);
 26825  			_i = 0;
 26826  			while (true) {
 26827  				if (!(_i < _ref.$length)) { break; }
 26828  				i = _i;
 26829  				b = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
 26830  				((i < 0 || i >= buf.$length) ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + i] = (r.nilCheck, ((b < 0 || b >= r.length) ? ($throwRuntimeError("index out of range"), undefined) : r[b])));
 26831  				_i++;
 26832  			}
 26833  			_r = w.Write($subslice(buf, 0, ncopy)); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 26834  			_tuple = _r;
 26835  			wn = _tuple[0];
 26836  			err$1 = _tuple[1];
 26837  			n = n + (wn) >> 0;
 26838  			if (!($interfaceIsEqual(err$1, $ifaceNil))) {
 26839  				_tmp = n;
 26840  				_tmp$1 = err$1;
 26841  				n = _tmp;
 26842  				err = _tmp$1;
 26843  				$s = -1; return [n, err];
 26844  			}
 26845  		/* } */ $s = 1; continue; case 2:
 26846  		_tmp$2 = n;
 26847  		_tmp$3 = $ifaceNil;
 26848  		n = _tmp$2;
 26849  		err = _tmp$3;
 26850  		$s = -1; return [n, err];
 26851  		/* */ } return; } if ($f === undefined) { $f = { $blk: byteReplacer.prototype.WriteString }; } $f._i = _i; $f._r = _r; $f._ref = _ref; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tuple = _tuple; $f.b = b; $f.buf = buf; $f.bufsize = bufsize; $f.err = err; $f.err$1 = err$1; $f.i = i; $f.n = n; $f.ncopy = ncopy; $f.r = r; $f.s = s; $f.w = w; $f.wn = wn; $f.$s = $s; $f.$r = $r; return $f;
 26852  	};
 26853  	$ptrType(byteReplacer).prototype.WriteString = function(w, s) { return (new byteReplacer(this.$get())).WriteString(w, s); };
 26854  	byteStringReplacer.prototype.Replace = function(s) {
 26855  		var anyChanges, b, b$1, bi, buf, i, i$1, n, newSize, r, s;
 26856  		r = this.$val;
 26857  		newSize = s.length;
 26858  		anyChanges = false;
 26859  		i = 0;
 26860  		while (true) {
 26861  			if (!(i < s.length)) { break; }
 26862  			b = s.charCodeAt(i);
 26863  			if (!((r.nilCheck, ((b < 0 || b >= r.length) ? ($throwRuntimeError("index out of range"), undefined) : r[b])) === sliceType.nil)) {
 26864  				anyChanges = true;
 26865  				newSize = newSize + (((r.nilCheck, ((b < 0 || b >= r.length) ? ($throwRuntimeError("index out of range"), undefined) : r[b])).$length - 1 >> 0)) >> 0;
 26866  			}
 26867  			i = i + (1) >> 0;
 26868  		}
 26869  		if (!anyChanges) {
 26870  			return s;
 26871  		}
 26872  		buf = $makeSlice(sliceType, newSize);
 26873  		bi = buf;
 26874  		i$1 = 0;
 26875  		while (true) {
 26876  			if (!(i$1 < s.length)) { break; }
 26877  			b$1 = s.charCodeAt(i$1);
 26878  			if (!((r.nilCheck, ((b$1 < 0 || b$1 >= r.length) ? ($throwRuntimeError("index out of range"), undefined) : r[b$1])) === sliceType.nil)) {
 26879  				n = $copySlice(bi, (r.nilCheck, ((b$1 < 0 || b$1 >= r.length) ? ($throwRuntimeError("index out of range"), undefined) : r[b$1])));
 26880  				bi = $subslice(bi, n);
 26881  			} else {
 26882  				(0 >= bi.$length ? ($throwRuntimeError("index out of range"), undefined) : bi.$array[bi.$offset + 0] = b$1);
 26883  				bi = $subslice(bi, 1);
 26884  			}
 26885  			i$1 = i$1 + (1) >> 0;
 26886  		}
 26887  		return ($bytesToString(buf));
 26888  	};
 26889  	$ptrType(byteStringReplacer).prototype.Replace = function(s) { return (new byteStringReplacer(this.$get())).Replace(s); };
 26890  	byteStringReplacer.prototype.WriteString = function(w, s) {
 26891  		var _r, _r$1, _r$2, _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, _tuple$1, _tuple$2, b, err, err$1, err$2, i, last, n, nw, nw$1, nw$2, r, s, sw, w, $s, $r;
 26892  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; b = $f.b; err = $f.err; err$1 = $f.err$1; err$2 = $f.err$2; i = $f.i; last = $f.last; n = $f.n; nw = $f.nw; nw$1 = $f.nw$1; nw$2 = $f.nw$2; r = $f.r; s = $f.s; sw = $f.sw; w = $f.w; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 26893  		n = 0;
 26894  		err = $ifaceNil;
 26895  		r = this.$val;
 26896  		sw = getStringWriter(w);
 26897  		last = 0;
 26898  		i = 0;
 26899  		/* while (true) { */ case 1:
 26900  			/* if (!(i < s.length)) { break; } */ if(!(i < s.length)) { $s = 2; continue; }
 26901  			b = s.charCodeAt(i);
 26902  			/* */ if ((r.nilCheck, ((b < 0 || b >= r.length) ? ($throwRuntimeError("index out of range"), undefined) : r[b])) === sliceType.nil) { $s = 3; continue; }
 26903  			/* */ $s = 4; continue;
 26904  			/* if ((r.nilCheck, ((b < 0 || b >= r.length) ? ($throwRuntimeError("index out of range"), undefined) : r[b])) === sliceType.nil) { */ case 3:
 26905  				i = i + (1) >> 0;
 26906  				/* continue; */ $s = 1; continue;
 26907  			/* } */ case 4:
 26908  			/* */ if (!((last === i))) { $s = 5; continue; }
 26909  			/* */ $s = 6; continue;
 26910  			/* if (!((last === i))) { */ case 5:
 26911  				_r = sw.WriteString($substring(s, last, i)); /* */ $s = 7; case 7: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 26912  				_tuple = _r;
 26913  				nw = _tuple[0];
 26914  				err$1 = _tuple[1];
 26915  				n = n + (nw) >> 0;
 26916  				if (!($interfaceIsEqual(err$1, $ifaceNil))) {
 26917  					_tmp = n;
 26918  					_tmp$1 = err$1;
 26919  					n = _tmp;
 26920  					err = _tmp$1;
 26921  					$s = -1; return [n, err];
 26922  				}
 26923  			/* } */ case 6:
 26924  			last = i + 1 >> 0;
 26925  			_r$1 = w.Write((r.nilCheck, ((b < 0 || b >= r.length) ? ($throwRuntimeError("index out of range"), undefined) : r[b]))); /* */ $s = 8; case 8: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 26926  			_tuple$1 = _r$1;
 26927  			nw$1 = _tuple$1[0];
 26928  			err$2 = _tuple$1[1];
 26929  			n = n + (nw$1) >> 0;
 26930  			if (!($interfaceIsEqual(err$2, $ifaceNil))) {
 26931  				_tmp$2 = n;
 26932  				_tmp$3 = err$2;
 26933  				n = _tmp$2;
 26934  				err = _tmp$3;
 26935  				$s = -1; return [n, err];
 26936  			}
 26937  			i = i + (1) >> 0;
 26938  		/* } */ $s = 1; continue; case 2:
 26939  		/* */ if (!((last === s.length))) { $s = 9; continue; }
 26940  		/* */ $s = 10; continue;
 26941  		/* if (!((last === s.length))) { */ case 9:
 26942  			nw$2 = 0;
 26943  			_r$2 = sw.WriteString($substring(s, last)); /* */ $s = 11; case 11: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 26944  			_tuple$2 = _r$2;
 26945  			nw$2 = _tuple$2[0];
 26946  			err = _tuple$2[1];
 26947  			n = n + (nw$2) >> 0;
 26948  		/* } */ case 10:
 26949  		$s = -1; return [n, err];
 26950  		/* */ } return; } if ($f === undefined) { $f = { $blk: byteStringReplacer.prototype.WriteString }; } $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f.b = b; $f.err = err; $f.err$1 = err$1; $f.err$2 = err$2; $f.i = i; $f.last = last; $f.n = n; $f.nw = nw; $f.nw$1 = nw$1; $f.nw$2 = nw$2; $f.r = r; $f.s = s; $f.sw = sw; $f.w = w; $f.$s = $s; $f.$r = $r; return $f;
 26951  	};
 26952  	$ptrType(byteStringReplacer).prototype.WriteString = function(w, s) { return (new byteStringReplacer(this.$get())).WriteString(w, s); };
 26953  	makeStringFinder = function(pattern) {
 26954  		var _i, _ref, f, i, i$1, i$2, i$3, last, lastPrefix, lenSuffix, pattern, x, x$1, x$2, x$3, x$4, x$5;
 26955  		f = new stringFinder.ptr(pattern, arrayType$2.zero(), $makeSlice(sliceType$2, pattern.length));
 26956  		last = pattern.length - 1 >> 0;
 26957  		_ref = f.badCharSkip;
 26958  		_i = 0;
 26959  		while (true) {
 26960  			if (!(_i < 256)) { break; }
 26961  			i = _i;
 26962  			(x = f.badCharSkip, ((i < 0 || i >= x.length) ? ($throwRuntimeError("index out of range"), undefined) : x[i] = pattern.length));
 26963  			_i++;
 26964  		}
 26965  		i$1 = 0;
 26966  		while (true) {
 26967  			if (!(i$1 < last)) { break; }
 26968  			(x$1 = f.badCharSkip, x$2 = pattern.charCodeAt(i$1), ((x$2 < 0 || x$2 >= x$1.length) ? ($throwRuntimeError("index out of range"), undefined) : x$1[x$2] = (last - i$1 >> 0)));
 26969  			i$1 = i$1 + (1) >> 0;
 26970  		}
 26971  		lastPrefix = last;
 26972  		i$2 = last;
 26973  		while (true) {
 26974  			if (!(i$2 >= 0)) { break; }
 26975  			if (HasPrefix(pattern, $substring(pattern, (i$2 + 1 >> 0)))) {
 26976  				lastPrefix = i$2 + 1 >> 0;
 26977  			}
 26978  			(x$3 = f.goodSuffixSkip, ((i$2 < 0 || i$2 >= x$3.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$3.$array[x$3.$offset + i$2] = ((lastPrefix + last >> 0) - i$2 >> 0)));
 26979  			i$2 = i$2 - (1) >> 0;
 26980  		}
 26981  		i$3 = 0;
 26982  		while (true) {
 26983  			if (!(i$3 < last)) { break; }
 26984  			lenSuffix = longestCommonSuffix(pattern, $substring(pattern, 1, (i$3 + 1 >> 0)));
 26985  			if (!((pattern.charCodeAt((i$3 - lenSuffix >> 0)) === pattern.charCodeAt((last - lenSuffix >> 0))))) {
 26986  				(x$4 = f.goodSuffixSkip, x$5 = last - lenSuffix >> 0, ((x$5 < 0 || x$5 >= x$4.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$4.$array[x$4.$offset + x$5] = ((lenSuffix + last >> 0) - i$3 >> 0)));
 26987  			}
 26988  			i$3 = i$3 + (1) >> 0;
 26989  		}
 26990  		return f;
 26991  	};
 26992  	longestCommonSuffix = function(a, b) {
 26993  		var a, b, i;
 26994  		i = 0;
 26995  		while (true) {
 26996  			if (!(i < a.length && i < b.length)) { break; }
 26997  			if (!((a.charCodeAt(((a.length - 1 >> 0) - i >> 0)) === b.charCodeAt(((b.length - 1 >> 0) - i >> 0))))) {
 26998  				break;
 26999  			}
 27000  			i = i + (1) >> 0;
 27001  		}
 27002  		return i;
 27003  	};
 27004  	stringFinder.ptr.prototype.next = function(text) {
 27005  		var f, i, j, text, x, x$1, x$2;
 27006  		f = this;
 27007  		i = f.pattern.length - 1 >> 0;
 27008  		while (true) {
 27009  			if (!(i < text.length)) { break; }
 27010  			j = f.pattern.length - 1 >> 0;
 27011  			while (true) {
 27012  				if (!(j >= 0 && (text.charCodeAt(i) === f.pattern.charCodeAt(j)))) { break; }
 27013  				i = i - (1) >> 0;
 27014  				j = j - (1) >> 0;
 27015  			}
 27016  			if (j < 0) {
 27017  				return i + 1 >> 0;
 27018  			}
 27019  			i = i + (max((x = f.badCharSkip, x$1 = text.charCodeAt(i), ((x$1 < 0 || x$1 >= x.length) ? ($throwRuntimeError("index out of range"), undefined) : x[x$1])), (x$2 = f.goodSuffixSkip, ((j < 0 || j >= x$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + j])))) >> 0;
 27020  		}
 27021  		return -1;
 27022  	};
 27023  	stringFinder.prototype.next = function(text) { return this.$val.next(text); };
 27024  	max = function(a, b) {
 27025  		var a, b;
 27026  		if (a > b) {
 27027  			return a;
 27028  		}
 27029  		return b;
 27030  	};
 27031  	explode = function(s, n) {
 27032  		var _tuple, a, ch, i, l, n, s, size, x;
 27033  		l = utf8.RuneCountInString(s);
 27034  		if (n < 0 || n > l) {
 27035  			n = l;
 27036  		}
 27037  		a = $makeSlice(sliceType$3, n);
 27038  		i = 0;
 27039  		while (true) {
 27040  			if (!(i < (n - 1 >> 0))) { break; }
 27041  			_tuple = utf8.DecodeRuneInString(s);
 27042  			ch = _tuple[0];
 27043  			size = _tuple[1];
 27044  			((i < 0 || i >= a.$length) ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + i] = $substring(s, 0, size));
 27045  			s = $substring(s, size);
 27046  			if (ch === 65533) {
 27047  				((i < 0 || i >= a.$length) ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + i] = "\xEF\xBF\xBD");
 27048  			}
 27049  			i = i + (1) >> 0;
 27050  		}
 27051  		if (n > 0) {
 27052  			(x = n - 1 >> 0, ((x < 0 || x >= a.$length) ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + x] = s));
 27053  		}
 27054  		return a;
 27055  	};
 27056  	Contains = function(s, substr) {
 27057  		var s, substr;
 27058  		return Index(s, substr) >= 0;
 27059  	};
 27060  	$pkg.Contains = Contains;
 27061  	ContainsRune = function(s, r) {
 27062  		var r, s;
 27063  		return IndexRune(s, r) >= 0;
 27064  	};
 27065  	$pkg.ContainsRune = ContainsRune;
 27066  	IndexRune = function(s, r) {
 27067  		var _i, _ref, _rune, i, r, r$1, s;
 27068  		if (0 <= r && r < 128) {
 27069  			return IndexByte(s, ((r << 24 >>> 24)));
 27070  		} else if ((r === 65533)) {
 27071  			_ref = s;
 27072  			_i = 0;
 27073  			while (true) {
 27074  				if (!(_i < _ref.length)) { break; }
 27075  				_rune = $decodeRune(_ref, _i);
 27076  				i = _i;
 27077  				r$1 = _rune[0];
 27078  				if (r$1 === 65533) {
 27079  					return i;
 27080  				}
 27081  				_i += _rune[1];
 27082  			}
 27083  			return -1;
 27084  		} else if (!utf8.ValidRune(r)) {
 27085  			return -1;
 27086  		} else {
 27087  			return Index(s, ($encodeRune(r)));
 27088  		}
 27089  	};
 27090  	$pkg.IndexRune = IndexRune;
 27091  	IndexAny = function(s, chars) {
 27092  		var _i, _i$1, _ref, _ref$1, _rune, _rune$1, _tuple, as, c, chars, i, i$1, isASCII, m, s;
 27093  		if (chars === "") {
 27094  			return -1;
 27095  		}
 27096  		if (s.length > 8) {
 27097  			_tuple = makeASCIISet(chars);
 27098  			as = $clone(_tuple[0], asciiSet);
 27099  			isASCII = _tuple[1];
 27100  			if (isASCII) {
 27101  				i = 0;
 27102  				while (true) {
 27103  					if (!(i < s.length)) { break; }
 27104  					if (new ptrType$6(as).contains(s.charCodeAt(i))) {
 27105  						return i;
 27106  					}
 27107  					i = i + (1) >> 0;
 27108  				}
 27109  				return -1;
 27110  			}
 27111  		}
 27112  		_ref = s;
 27113  		_i = 0;
 27114  		while (true) {
 27115  			if (!(_i < _ref.length)) { break; }
 27116  			_rune = $decodeRune(_ref, _i);
 27117  			i$1 = _i;
 27118  			c = _rune[0];
 27119  			_ref$1 = chars;
 27120  			_i$1 = 0;
 27121  			while (true) {
 27122  				if (!(_i$1 < _ref$1.length)) { break; }
 27123  				_rune$1 = $decodeRune(_ref$1, _i$1);
 27124  				m = _rune$1[0];
 27125  				if (c === m) {
 27126  					return i$1;
 27127  				}
 27128  				_i$1 += _rune$1[1];
 27129  			}
 27130  			_i += _rune[1];
 27131  		}
 27132  		return -1;
 27133  	};
 27134  	$pkg.IndexAny = IndexAny;
 27135  	LastIndexByte = function(s, c) {
 27136  		var c, i, s;
 27137  		i = s.length - 1 >> 0;
 27138  		while (true) {
 27139  			if (!(i >= 0)) { break; }
 27140  			if (s.charCodeAt(i) === c) {
 27141  				return i;
 27142  			}
 27143  			i = i - (1) >> 0;
 27144  		}
 27145  		return -1;
 27146  	};
 27147  	$pkg.LastIndexByte = LastIndexByte;
 27148  	genSplit = function(s, sep, sepSave, n) {
 27149  		var a, i, m, n, s, sep, sepSave;
 27150  		if (n === 0) {
 27151  			return sliceType$3.nil;
 27152  		}
 27153  		if (sep === "") {
 27154  			return explode(s, n);
 27155  		}
 27156  		if (n < 0) {
 27157  			n = Count(s, sep) + 1 >> 0;
 27158  		}
 27159  		a = $makeSlice(sliceType$3, n);
 27160  		n = n - (1) >> 0;
 27161  		i = 0;
 27162  		while (true) {
 27163  			if (!(i < n)) { break; }
 27164  			m = Index(s, sep);
 27165  			if (m < 0) {
 27166  				break;
 27167  			}
 27168  			((i < 0 || i >= a.$length) ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + i] = $substring(s, 0, (m + sepSave >> 0)));
 27169  			s = $substring(s, (m + sep.length >> 0));
 27170  			i = i + (1) >> 0;
 27171  		}
 27172  		((i < 0 || i >= a.$length) ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + i] = s);
 27173  		return $subslice(a, 0, (i + 1 >> 0));
 27174  	};
 27175  	SplitN = function(s, sep, n) {
 27176  		var n, s, sep;
 27177  		return genSplit(s, sep, 0, n);
 27178  	};
 27179  	$pkg.SplitN = SplitN;
 27180  	Split = function(s, sep) {
 27181  		var s, sep;
 27182  		return genSplit(s, sep, 0, -1);
 27183  	};
 27184  	$pkg.Split = Split;
 27185  	Fields = function(s) {
 27186  		var _r, a, fieldStart, i, i$1, isSpace, n, na, r, s, setBits, wasSpace, x, x$1, x$2, $s, $r;
 27187  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; a = $f.a; fieldStart = $f.fieldStart; i = $f.i; i$1 = $f.i$1; isSpace = $f.isSpace; n = $f.n; na = $f.na; r = $f.r; s = $f.s; setBits = $f.setBits; wasSpace = $f.wasSpace; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 27188  		n = 0;
 27189  		wasSpace = 1;
 27190  		setBits = 0;
 27191  		i = 0;
 27192  		while (true) {
 27193  			if (!(i < s.length)) { break; }
 27194  			r = s.charCodeAt(i);
 27195  			setBits = (setBits | (r)) >>> 0;
 27196  			isSpace = ((((r < 0 || r >= asciiSpace.length) ? ($throwRuntimeError("index out of range"), undefined) : asciiSpace[r]) >> 0));
 27197  			n = n + ((wasSpace & (~isSpace >> 0))) >> 0;
 27198  			wasSpace = isSpace;
 27199  			i = i + (1) >> 0;
 27200  		}
 27201  		/* */ if (setBits < 128) { $s = 1; continue; }
 27202  		/* */ $s = 2; continue;
 27203  		/* if (setBits < 128) { */ case 1:
 27204  			a = $makeSlice(sliceType$3, n);
 27205  			na = 0;
 27206  			fieldStart = 0;
 27207  			i$1 = 0;
 27208  			while (true) {
 27209  				if (!(i$1 < s.length && !(((x = s.charCodeAt(i$1), ((x < 0 || x >= asciiSpace.length) ? ($throwRuntimeError("index out of range"), undefined) : asciiSpace[x])) === 0)))) { break; }
 27210  				i$1 = i$1 + (1) >> 0;
 27211  			}
 27212  			fieldStart = i$1;
 27213  			while (true) {
 27214  				if (!(i$1 < s.length)) { break; }
 27215  				if ((x$1 = s.charCodeAt(i$1), ((x$1 < 0 || x$1 >= asciiSpace.length) ? ($throwRuntimeError("index out of range"), undefined) : asciiSpace[x$1])) === 0) {
 27216  					i$1 = i$1 + (1) >> 0;
 27217  					continue;
 27218  				}
 27219  				((na < 0 || na >= a.$length) ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + na] = $substring(s, fieldStart, i$1));
 27220  				na = na + (1) >> 0;
 27221  				i$1 = i$1 + (1) >> 0;
 27222  				while (true) {
 27223  					if (!(i$1 < s.length && !(((x$2 = s.charCodeAt(i$1), ((x$2 < 0 || x$2 >= asciiSpace.length) ? ($throwRuntimeError("index out of range"), undefined) : asciiSpace[x$2])) === 0)))) { break; }
 27224  					i$1 = i$1 + (1) >> 0;
 27225  				}
 27226  				fieldStart = i$1;
 27227  			}
 27228  			if (fieldStart < s.length) {
 27229  				((na < 0 || na >= a.$length) ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + na] = $substring(s, fieldStart));
 27230  			}
 27231  			$s = -1; return a;
 27232  		/* } */ case 2:
 27233  		_r = FieldsFunc(s, unicode.IsSpace); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 27234  		$s = -1; return _r;
 27235  		/* */ } return; } if ($f === undefined) { $f = { $blk: Fields }; } $f._r = _r; $f.a = a; $f.fieldStart = fieldStart; $f.i = i; $f.i$1 = i$1; $f.isSpace = isSpace; $f.n = n; $f.na = na; $f.r = r; $f.s = s; $f.setBits = setBits; $f.wasSpace = wasSpace; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.$s = $s; $f.$r = $r; return $f;
 27236  	};
 27237  	$pkg.Fields = Fields;
 27238  	FieldsFunc = function(s, f) {
 27239  		var _i, _i$1, _r, _ref, _ref$1, _rune, a, f, fromIndex, i, i$1, rune, s, span$1, spans, wasField, $s, $r;
 27240  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _i = $f._i; _i$1 = $f._i$1; _r = $f._r; _ref = $f._ref; _ref$1 = $f._ref$1; _rune = $f._rune; a = $f.a; f = $f.f; fromIndex = $f.fromIndex; i = $f.i; i$1 = $f.i$1; rune = $f.rune; s = $f.s; span$1 = $f.span$1; spans = $f.spans; wasField = $f.wasField; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 27241  		spans = $makeSlice(sliceType$4, 0, 32);
 27242  		wasField = false;
 27243  		fromIndex = 0;
 27244  		_ref = s;
 27245  		_i = 0;
 27246  		/* while (true) { */ case 1:
 27247  			/* if (!(_i < _ref.length)) { break; } */ if(!(_i < _ref.length)) { $s = 2; continue; }
 27248  			_rune = $decodeRune(_ref, _i);
 27249  			i = _i;
 27250  			rune = _rune[0];
 27251  			_r = f(rune); /* */ $s = 6; case 6: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 27252  			/* */ if (_r) { $s = 3; continue; }
 27253  			/* */ $s = 4; continue;
 27254  			/* if (_r) { */ case 3:
 27255  				if (wasField) {
 27256  					spans = $append(spans, new span.ptr(fromIndex, i));
 27257  					wasField = false;
 27258  				}
 27259  				$s = 5; continue;
 27260  			/* } else { */ case 4:
 27261  				if (!wasField) {
 27262  					fromIndex = i;
 27263  					wasField = true;
 27264  				}
 27265  			/* } */ case 5:
 27266  			_i += _rune[1];
 27267  		/* } */ $s = 1; continue; case 2:
 27268  		if (wasField) {
 27269  			spans = $append(spans, new span.ptr(fromIndex, s.length));
 27270  		}
 27271  		a = $makeSlice(sliceType$3, spans.$length);
 27272  		_ref$1 = spans;
 27273  		_i$1 = 0;
 27274  		while (true) {
 27275  			if (!(_i$1 < _ref$1.$length)) { break; }
 27276  			i$1 = _i$1;
 27277  			span$1 = $clone(((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]), span);
 27278  			((i$1 < 0 || i$1 >= a.$length) ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + i$1] = $substring(s, span$1.start, span$1.end));
 27279  			_i$1++;
 27280  		}
 27281  		$s = -1; return a;
 27282  		/* */ } return; } if ($f === undefined) { $f = { $blk: FieldsFunc }; } $f._i = _i; $f._i$1 = _i$1; $f._r = _r; $f._ref = _ref; $f._ref$1 = _ref$1; $f._rune = _rune; $f.a = a; $f.f = f; $f.fromIndex = fromIndex; $f.i = i; $f.i$1 = i$1; $f.rune = rune; $f.s = s; $f.span$1 = span$1; $f.spans = spans; $f.wasField = wasField; $f.$s = $s; $f.$r = $r; return $f;
 27283  	};
 27284  	$pkg.FieldsFunc = FieldsFunc;
 27285  	Join = function(a, sep) {
 27286  		var _1, _i, _ref, a, b, bp, i, n, s, sep;
 27287  		_1 = a.$length;
 27288  		if (_1 === (0)) {
 27289  			return "";
 27290  		} else if (_1 === (1)) {
 27291  			return (0 >= a.$length ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + 0]);
 27292  		} else if (_1 === (2)) {
 27293  			return (0 >= a.$length ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + 0]) + sep + (1 >= a.$length ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + 1]);
 27294  		} else if (_1 === (3)) {
 27295  			return (0 >= a.$length ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + 0]) + sep + (1 >= a.$length ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + 1]) + sep + (2 >= a.$length ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + 2]);
 27296  		}
 27297  		n = $imul(sep.length, ((a.$length - 1 >> 0)));
 27298  		i = 0;
 27299  		while (true) {
 27300  			if (!(i < a.$length)) { break; }
 27301  			n = n + (((i < 0 || i >= a.$length) ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + i]).length) >> 0;
 27302  			i = i + (1) >> 0;
 27303  		}
 27304  		b = $makeSlice(sliceType, n);
 27305  		bp = $copyString(b, (0 >= a.$length ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + 0]));
 27306  		_ref = $subslice(a, 1);
 27307  		_i = 0;
 27308  		while (true) {
 27309  			if (!(_i < _ref.$length)) { break; }
 27310  			s = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
 27311  			bp = bp + ($copyString($subslice(b, bp), sep)) >> 0;
 27312  			bp = bp + ($copyString($subslice(b, bp), s)) >> 0;
 27313  			_i++;
 27314  		}
 27315  		return ($bytesToString(b));
 27316  	};
 27317  	$pkg.Join = Join;
 27318  	HasPrefix = function(s, prefix) {
 27319  		var prefix, s;
 27320  		return s.length >= prefix.length && $substring(s, 0, prefix.length) === prefix;
 27321  	};
 27322  	$pkg.HasPrefix = HasPrefix;
 27323  	HasSuffix = function(s, suffix) {
 27324  		var s, suffix;
 27325  		return s.length >= suffix.length && $substring(s, (s.length - suffix.length >> 0)) === suffix;
 27326  	};
 27327  	$pkg.HasSuffix = HasSuffix;
 27328  	Map = function(mapping, s) {
 27329  		var _i, _i$1, _r, _r$1, _ref, _ref$1, _rune, _rune$1, _tuple, b, c, c$1, i, mapping, nb, nbytes, r, r$1, s, w, $s, $r;
 27330  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _i = $f._i; _i$1 = $f._i$1; _r = $f._r; _r$1 = $f._r$1; _ref = $f._ref; _ref$1 = $f._ref$1; _rune = $f._rune; _rune$1 = $f._rune$1; _tuple = $f._tuple; b = $f.b; c = $f.c; c$1 = $f.c$1; i = $f.i; mapping = $f.mapping; nb = $f.nb; nbytes = $f.nbytes; r = $f.r; r$1 = $f.r$1; s = $f.s; w = $f.w; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 27331  		b = sliceType.nil;
 27332  		nbytes = 0;
 27333  		_ref = s;
 27334  		_i = 0;
 27335  		/* while (true) { */ case 1:
 27336  			/* if (!(_i < _ref.length)) { break; } */ if(!(_i < _ref.length)) { $s = 2; continue; }
 27337  			_rune = $decodeRune(_ref, _i);
 27338  			i = _i;
 27339  			c = _rune[0];
 27340  			_r = mapping(c); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 27341  			r = _r;
 27342  			if (r === c) {
 27343  				_i += _rune[1];
 27344  				/* continue; */ $s = 1; continue;
 27345  			}
 27346  			b = $makeSlice(sliceType, (s.length + 4 >> 0));
 27347  			nbytes = $copyString(b, $substring(s, 0, i));
 27348  			if (r >= 0) {
 27349  				if (r <= 128) {
 27350  					((nbytes < 0 || nbytes >= b.$length) ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + nbytes] = ((r << 24 >>> 24)));
 27351  					nbytes = nbytes + (1) >> 0;
 27352  				} else {
 27353  					nbytes = nbytes + (utf8.EncodeRune($subslice(b, nbytes), r)) >> 0;
 27354  				}
 27355  			}
 27356  			if (c === 65533) {
 27357  				_tuple = utf8.DecodeRuneInString($substring(s, i));
 27358  				w = _tuple[1];
 27359  				i = i + (w) >> 0;
 27360  			} else {
 27361  				i = i + (utf8.RuneLen(c)) >> 0;
 27362  			}
 27363  			s = $substring(s, i);
 27364  			/* break; */ $s = 2; continue;
 27365  		/* } */ $s = 1; continue; case 2:
 27366  		if (b === sliceType.nil) {
 27367  			$s = -1; return s;
 27368  		}
 27369  		_ref$1 = s;
 27370  		_i$1 = 0;
 27371  		/* while (true) { */ case 4:
 27372  			/* if (!(_i$1 < _ref$1.length)) { break; } */ if(!(_i$1 < _ref$1.length)) { $s = 5; continue; }
 27373  			_rune$1 = $decodeRune(_ref$1, _i$1);
 27374  			c$1 = _rune$1[0];
 27375  			_r$1 = mapping(c$1); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 27376  			r$1 = _r$1;
 27377  			if ((0 <= r$1 && r$1 <= 128) && nbytes < b.$length) {
 27378  				((nbytes < 0 || nbytes >= b.$length) ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + nbytes] = ((r$1 << 24 >>> 24)));
 27379  				nbytes = nbytes + (1) >> 0;
 27380  				_i$1 += _rune$1[1];
 27381  				/* continue; */ $s = 4; continue;
 27382  			}
 27383  			if (r$1 >= 0) {
 27384  				if ((nbytes + 4 >> 0) >= b.$length) {
 27385  					nb = $makeSlice(sliceType, ($imul(2, b.$length)));
 27386  					$copySlice(nb, $subslice(b, 0, nbytes));
 27387  					b = nb;
 27388  				}
 27389  				nbytes = nbytes + (utf8.EncodeRune($subslice(b, nbytes), r$1)) >> 0;
 27390  			}
 27391  			_i$1 += _rune$1[1];
 27392  		/* } */ $s = 4; continue; case 5:
 27393  		$s = -1; return ($bytesToString($subslice(b, 0, nbytes)));
 27394  		/* */ } return; } if ($f === undefined) { $f = { $blk: Map }; } $f._i = _i; $f._i$1 = _i$1; $f._r = _r; $f._r$1 = _r$1; $f._ref = _ref; $f._ref$1 = _ref$1; $f._rune = _rune; $f._rune$1 = _rune$1; $f._tuple = _tuple; $f.b = b; $f.c = c; $f.c$1 = c$1; $f.i = i; $f.mapping = mapping; $f.nb = nb; $f.nbytes = nbytes; $f.r = r; $f.r$1 = r$1; $f.s = s; $f.w = w; $f.$s = $s; $f.$r = $r; return $f;
 27395  	};
 27396  	$pkg.Map = Map;
 27397  	ToLower = function(s) {
 27398  		var _r, _tmp, _tmp$1, b, c, c$1, hasUpper, i, i$1, isASCII, s, $s, $r;
 27399  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; b = $f.b; c = $f.c; c$1 = $f.c$1; hasUpper = $f.hasUpper; i = $f.i; i$1 = $f.i$1; isASCII = $f.isASCII; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 27400  		_tmp = true;
 27401  		_tmp$1 = false;
 27402  		isASCII = _tmp;
 27403  		hasUpper = _tmp$1;
 27404  		i = 0;
 27405  		while (true) {
 27406  			if (!(i < s.length)) { break; }
 27407  			c = s.charCodeAt(i);
 27408  			if (c >= 128) {
 27409  				isASCII = false;
 27410  				break;
 27411  			}
 27412  			hasUpper = hasUpper || (c >= 65 && c <= 90);
 27413  			i = i + (1) >> 0;
 27414  		}
 27415  		if (isASCII) {
 27416  			if (!hasUpper) {
 27417  				$s = -1; return s;
 27418  			}
 27419  			b = $makeSlice(sliceType, s.length);
 27420  			i$1 = 0;
 27421  			while (true) {
 27422  				if (!(i$1 < s.length)) { break; }
 27423  				c$1 = s.charCodeAt(i$1);
 27424  				if (c$1 >= 65 && c$1 <= 90) {
 27425  					c$1 = c$1 + (32) << 24 >>> 24;
 27426  				}
 27427  				((i$1 < 0 || i$1 >= b.$length) ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + i$1] = c$1);
 27428  				i$1 = i$1 + (1) >> 0;
 27429  			}
 27430  			$s = -1; return ($bytesToString(b));
 27431  		}
 27432  		_r = Map(unicode.ToLower, s); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 27433  		$s = -1; return _r;
 27434  		/* */ } return; } if ($f === undefined) { $f = { $blk: ToLower }; } $f._r = _r; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f.b = b; $f.c = c; $f.c$1 = c$1; $f.hasUpper = hasUpper; $f.i = i; $f.i$1 = i$1; $f.isASCII = isASCII; $f.s = s; $f.$s = $s; $f.$r = $r; return $f;
 27435  	};
 27436  	$pkg.ToLower = ToLower;
 27437  	TrimLeftFunc = function(s, f) {
 27438  		var _r, f, i, s, $s, $r;
 27439  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; f = $f.f; i = $f.i; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 27440  		_r = indexFunc(s, f, false); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 27441  		i = _r;
 27442  		if (i === -1) {
 27443  			$s = -1; return "";
 27444  		}
 27445  		$s = -1; return $substring(s, i);
 27446  		/* */ } return; } if ($f === undefined) { $f = { $blk: TrimLeftFunc }; } $f._r = _r; $f.f = f; $f.i = i; $f.s = s; $f.$s = $s; $f.$r = $r; return $f;
 27447  	};
 27448  	$pkg.TrimLeftFunc = TrimLeftFunc;
 27449  	TrimRightFunc = function(s, f) {
 27450  		var _r, _tuple, f, i, s, wid, $s, $r;
 27451  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; f = $f.f; i = $f.i; s = $f.s; wid = $f.wid; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 27452  		_r = lastIndexFunc(s, f, false); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 27453  		i = _r;
 27454  		if (i >= 0 && s.charCodeAt(i) >= 128) {
 27455  			_tuple = utf8.DecodeRuneInString($substring(s, i));
 27456  			wid = _tuple[1];
 27457  			i = i + (wid) >> 0;
 27458  		} else {
 27459  			i = i + (1) >> 0;
 27460  		}
 27461  		$s = -1; return $substring(s, 0, i);
 27462  		/* */ } return; } if ($f === undefined) { $f = { $blk: TrimRightFunc }; } $f._r = _r; $f._tuple = _tuple; $f.f = f; $f.i = i; $f.s = s; $f.wid = wid; $f.$s = $s; $f.$r = $r; return $f;
 27463  	};
 27464  	$pkg.TrimRightFunc = TrimRightFunc;
 27465  	TrimFunc = function(s, f) {
 27466  		var _r, _r$1, f, s, $s, $r;
 27467  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; f = $f.f; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 27468  		_r = TrimLeftFunc(s, f); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 27469  		_r$1 = TrimRightFunc(_r, f); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 27470  		$s = -1; return _r$1;
 27471  		/* */ } return; } if ($f === undefined) { $f = { $blk: TrimFunc }; } $f._r = _r; $f._r$1 = _r$1; $f.f = f; $f.s = s; $f.$s = $s; $f.$r = $r; return $f;
 27472  	};
 27473  	$pkg.TrimFunc = TrimFunc;
 27474  	IndexFunc = function(s, f) {
 27475  		var _r, f, s, $s, $r;
 27476  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; f = $f.f; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 27477  		_r = indexFunc(s, f, true); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 27478  		$s = -1; return _r;
 27479  		/* */ } return; } if ($f === undefined) { $f = { $blk: IndexFunc }; } $f._r = _r; $f.f = f; $f.s = s; $f.$s = $s; $f.$r = $r; return $f;
 27480  	};
 27481  	$pkg.IndexFunc = IndexFunc;
 27482  	indexFunc = function(s, f, truth) {
 27483  		var _i, _r, _ref, _rune, f, i, r, s, truth, $s, $r;
 27484  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _i = $f._i; _r = $f._r; _ref = $f._ref; _rune = $f._rune; f = $f.f; i = $f.i; r = $f.r; s = $f.s; truth = $f.truth; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 27485  		_ref = s;
 27486  		_i = 0;
 27487  		/* while (true) { */ case 1:
 27488  			/* if (!(_i < _ref.length)) { break; } */ if(!(_i < _ref.length)) { $s = 2; continue; }
 27489  			_rune = $decodeRune(_ref, _i);
 27490  			i = _i;
 27491  			r = _rune[0];
 27492  			_r = f(r); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 27493  			/* */ if (_r === truth) { $s = 3; continue; }
 27494  			/* */ $s = 4; continue;
 27495  			/* if (_r === truth) { */ case 3:
 27496  				$s = -1; return i;
 27497  			/* } */ case 4:
 27498  			_i += _rune[1];
 27499  		/* } */ $s = 1; continue; case 2:
 27500  		$s = -1; return -1;
 27501  		/* */ } return; } if ($f === undefined) { $f = { $blk: indexFunc }; } $f._i = _i; $f._r = _r; $f._ref = _ref; $f._rune = _rune; $f.f = f; $f.i = i; $f.r = r; $f.s = s; $f.truth = truth; $f.$s = $s; $f.$r = $r; return $f;
 27502  	};
 27503  	lastIndexFunc = function(s, f, truth) {
 27504  		var _r, _tuple, f, i, r, s, size, truth, $s, $r;
 27505  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; f = $f.f; i = $f.i; r = $f.r; s = $f.s; size = $f.size; truth = $f.truth; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 27506  		i = s.length;
 27507  		/* while (true) { */ case 1:
 27508  			/* if (!(i > 0)) { break; } */ if(!(i > 0)) { $s = 2; continue; }
 27509  			_tuple = utf8.DecodeLastRuneInString($substring(s, 0, i));
 27510  			r = _tuple[0];
 27511  			size = _tuple[1];
 27512  			i = i - (size) >> 0;
 27513  			_r = f(r); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 27514  			/* */ if (_r === truth) { $s = 3; continue; }
 27515  			/* */ $s = 4; continue;
 27516  			/* if (_r === truth) { */ case 3:
 27517  				$s = -1; return i;
 27518  			/* } */ case 4:
 27519  		/* } */ $s = 1; continue; case 2:
 27520  		$s = -1; return -1;
 27521  		/* */ } return; } if ($f === undefined) { $f = { $blk: lastIndexFunc }; } $f._r = _r; $f._tuple = _tuple; $f.f = f; $f.i = i; $f.r = r; $f.s = s; $f.size = size; $f.truth = truth; $f.$s = $s; $f.$r = $r; return $f;
 27522  	};
 27523  	makeASCIISet = function(chars) {
 27524  		var _index, _tmp, _tmp$1, _tmp$2, _tmp$3, as, c, chars, i, ok, y;
 27525  		as = arrayType$3.zero();
 27526  		ok = false;
 27527  		i = 0;
 27528  		while (true) {
 27529  			if (!(i < chars.length)) { break; }
 27530  			c = chars.charCodeAt(i);
 27531  			if (c >= 128) {
 27532  				_tmp = $clone(as, asciiSet);
 27533  				_tmp$1 = false;
 27534  				asciiSet.copy(as, _tmp);
 27535  				ok = _tmp$1;
 27536  				return [as, ok];
 27537  			}
 27538  			_index = c >>> 5 << 24 >>> 24;
 27539  			((_index < 0 || _index >= as.length) ? ($throwRuntimeError("index out of range"), undefined) : as[_index] = ((((_index < 0 || _index >= as.length) ? ($throwRuntimeError("index out of range"), undefined) : as[_index]) | (((y = ((((c & 31) >>> 0) >>> 0)), y < 32 ? (1 << y) : 0) >>> 0))) >>> 0));
 27540  			i = i + (1) >> 0;
 27541  		}
 27542  		_tmp$2 = $clone(as, asciiSet);
 27543  		_tmp$3 = true;
 27544  		asciiSet.copy(as, _tmp$2);
 27545  		ok = _tmp$3;
 27546  		return [as, ok];
 27547  	};
 27548  	asciiSet.prototype.contains = function(c) {
 27549  		var as, c, x, y;
 27550  		as = this.$val;
 27551  		return !((((((x = c >>> 5 << 24 >>> 24, (as.nilCheck, ((x < 0 || x >= as.length) ? ($throwRuntimeError("index out of range"), undefined) : as[x]))) & (((y = ((((c & 31) >>> 0) >>> 0)), y < 32 ? (1 << y) : 0) >>> 0))) >>> 0)) === 0));
 27552  	};
 27553  	$ptrType(asciiSet).prototype.contains = function(c) { return (new asciiSet(this.$get())).contains(c); };
 27554  	makeCutsetFunc = function(cutset) {
 27555  		var _tuple, as, cutset, isASCII;
 27556  		if ((cutset.length === 1) && cutset.charCodeAt(0) < 128) {
 27557  			return (function(r) {
 27558  				var r;
 27559  				return r === ((cutset.charCodeAt(0) >> 0));
 27560  			});
 27561  		}
 27562  		_tuple = makeASCIISet(cutset);
 27563  		as = $clone(_tuple[0], asciiSet);
 27564  		isASCII = _tuple[1];
 27565  		if (isASCII) {
 27566  			return (function(r) {
 27567  				var r;
 27568  				return r < 128 && new ptrType$6(as).contains(((r << 24 >>> 24)));
 27569  			});
 27570  		}
 27571  		return (function(r) {
 27572  			var r;
 27573  			return IndexRune(cutset, r) >= 0;
 27574  		});
 27575  	};
 27576  	Trim = function(s, cutset) {
 27577  		var _r, cutset, s, $s, $r;
 27578  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; cutset = $f.cutset; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 27579  		if (s === "" || cutset === "") {
 27580  			$s = -1; return s;
 27581  		}
 27582  		_r = TrimFunc(s, makeCutsetFunc(cutset)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 27583  		$s = -1; return _r;
 27584  		/* */ } return; } if ($f === undefined) { $f = { $blk: Trim }; } $f._r = _r; $f.cutset = cutset; $f.s = s; $f.$s = $s; $f.$r = $r; return $f;
 27585  	};
 27586  	$pkg.Trim = Trim;
 27587  	TrimLeft = function(s, cutset) {
 27588  		var _r, cutset, s, $s, $r;
 27589  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; cutset = $f.cutset; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 27590  		if (s === "" || cutset === "") {
 27591  			$s = -1; return s;
 27592  		}
 27593  		_r = TrimLeftFunc(s, makeCutsetFunc(cutset)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 27594  		$s = -1; return _r;
 27595  		/* */ } return; } if ($f === undefined) { $f = { $blk: TrimLeft }; } $f._r = _r; $f.cutset = cutset; $f.s = s; $f.$s = $s; $f.$r = $r; return $f;
 27596  	};
 27597  	$pkg.TrimLeft = TrimLeft;
 27598  	TrimRight = function(s, cutset) {
 27599  		var _r, cutset, s, $s, $r;
 27600  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; cutset = $f.cutset; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 27601  		if (s === "" || cutset === "") {
 27602  			$s = -1; return s;
 27603  		}
 27604  		_r = TrimRightFunc(s, makeCutsetFunc(cutset)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 27605  		$s = -1; return _r;
 27606  		/* */ } return; } if ($f === undefined) { $f = { $blk: TrimRight }; } $f._r = _r; $f.cutset = cutset; $f.s = s; $f.$s = $s; $f.$r = $r; return $f;
 27607  	};
 27608  	$pkg.TrimRight = TrimRight;
 27609  	TrimSpace = function(s) {
 27610  		var _r, s, $s, $r;
 27611  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 27612  		_r = TrimFunc(s, unicode.IsSpace); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 27613  		$s = -1; return _r;
 27614  		/* */ } return; } if ($f === undefined) { $f = { $blk: TrimSpace }; } $f._r = _r; $f.s = s; $f.$s = $s; $f.$r = $r; return $f;
 27615  	};
 27616  	$pkg.TrimSpace = TrimSpace;
 27617  	TrimPrefix = function(s, prefix) {
 27618  		var prefix, s;
 27619  		if (HasPrefix(s, prefix)) {
 27620  			return $substring(s, prefix.length);
 27621  		}
 27622  		return s;
 27623  	};
 27624  	$pkg.TrimPrefix = TrimPrefix;
 27625  	TrimSuffix = function(s, suffix) {
 27626  		var s, suffix;
 27627  		if (HasSuffix(s, suffix)) {
 27628  			return $substring(s, 0, (s.length - suffix.length >> 0));
 27629  		}
 27630  		return s;
 27631  	};
 27632  	$pkg.TrimSuffix = TrimSuffix;
 27633  	Replace = function(s, old, new$1, n) {
 27634  		var _tuple, i, j, m, n, new$1, old, s, start, t, w, wid;
 27635  		if (old === new$1 || (n === 0)) {
 27636  			return s;
 27637  		}
 27638  		m = Count(s, old);
 27639  		if (m === 0) {
 27640  			return s;
 27641  		} else if (n < 0 || m < n) {
 27642  			n = m;
 27643  		}
 27644  		t = $makeSlice(sliceType, (s.length + ($imul(n, ((new$1.length - old.length >> 0)))) >> 0));
 27645  		w = 0;
 27646  		start = 0;
 27647  		i = 0;
 27648  		while (true) {
 27649  			if (!(i < n)) { break; }
 27650  			j = start;
 27651  			if (old.length === 0) {
 27652  				if (i > 0) {
 27653  					_tuple = utf8.DecodeRuneInString($substring(s, start));
 27654  					wid = _tuple[1];
 27655  					j = j + (wid) >> 0;
 27656  				}
 27657  			} else {
 27658  				j = j + (Index($substring(s, start), old)) >> 0;
 27659  			}
 27660  			w = w + ($copyString($subslice(t, w), $substring(s, start, j))) >> 0;
 27661  			w = w + ($copyString($subslice(t, w), new$1)) >> 0;
 27662  			start = j + old.length >> 0;
 27663  			i = i + (1) >> 0;
 27664  		}
 27665  		w = w + ($copyString($subslice(t, w), $substring(s, start))) >> 0;
 27666  		return ($bytesToString($subslice(t, 0, w)));
 27667  	};
 27668  	$pkg.Replace = Replace;
 27669  	EqualFold = function(s, t) {
 27670  		var _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, _tuple$1, r, r$1, r$2, s, size, size$1, sr, t, tr;
 27671  		while (true) {
 27672  			if (!(!(s === "") && !(t === ""))) { break; }
 27673  			_tmp = 0;
 27674  			_tmp$1 = 0;
 27675  			sr = _tmp;
 27676  			tr = _tmp$1;
 27677  			if (s.charCodeAt(0) < 128) {
 27678  				_tmp$2 = ((s.charCodeAt(0) >> 0));
 27679  				_tmp$3 = $substring(s, 1);
 27680  				sr = _tmp$2;
 27681  				s = _tmp$3;
 27682  			} else {
 27683  				_tuple = utf8.DecodeRuneInString(s);
 27684  				r = _tuple[0];
 27685  				size = _tuple[1];
 27686  				_tmp$4 = r;
 27687  				_tmp$5 = $substring(s, size);
 27688  				sr = _tmp$4;
 27689  				s = _tmp$5;
 27690  			}
 27691  			if (t.charCodeAt(0) < 128) {
 27692  				_tmp$6 = ((t.charCodeAt(0) >> 0));
 27693  				_tmp$7 = $substring(t, 1);
 27694  				tr = _tmp$6;
 27695  				t = _tmp$7;
 27696  			} else {
 27697  				_tuple$1 = utf8.DecodeRuneInString(t);
 27698  				r$1 = _tuple$1[0];
 27699  				size$1 = _tuple$1[1];
 27700  				_tmp$8 = r$1;
 27701  				_tmp$9 = $substring(t, size$1);
 27702  				tr = _tmp$8;
 27703  				t = _tmp$9;
 27704  			}
 27705  			if (tr === sr) {
 27706  				continue;
 27707  			}
 27708  			if (tr < sr) {
 27709  				_tmp$10 = sr;
 27710  				_tmp$11 = tr;
 27711  				tr = _tmp$10;
 27712  				sr = _tmp$11;
 27713  			}
 27714  			if (tr < 128 && 65 <= sr && sr <= 90) {
 27715  				if (tr === ((sr + 97 >> 0) - 65 >> 0)) {
 27716  					continue;
 27717  				}
 27718  				return false;
 27719  			}
 27720  			r$2 = unicode.SimpleFold(sr);
 27721  			while (true) {
 27722  				if (!(!((r$2 === sr)) && r$2 < tr)) { break; }
 27723  				r$2 = unicode.SimpleFold(r$2);
 27724  			}
 27725  			if (r$2 === tr) {
 27726  				continue;
 27727  			}
 27728  			return false;
 27729  		}
 27730  		return s === t;
 27731  	};
 27732  	$pkg.EqualFold = EqualFold;
 27733  	ptrType$7.methods = [{prop: "Len", name: "Len", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Size", name: "Size", pkg: "", typ: $funcType([], [$Int64], false)}, {prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType], [$Int, $error], false)}, {prop: "ReadAt", name: "ReadAt", pkg: "", typ: $funcType([sliceType, $Int64], [$Int, $error], false)}, {prop: "ReadByte", name: "ReadByte", pkg: "", typ: $funcType([], [$Uint8, $error], false)}, {prop: "UnreadByte", name: "UnreadByte", pkg: "", typ: $funcType([], [$error], false)}, {prop: "ReadRune", name: "ReadRune", pkg: "", typ: $funcType([], [$Int32, $Int, $error], false)}, {prop: "UnreadRune", name: "UnreadRune", pkg: "", typ: $funcType([], [$error], false)}, {prop: "Seek", name: "Seek", pkg: "", typ: $funcType([$Int64, $Int], [$Int64, $error], false)}, {prop: "WriteTo", name: "WriteTo", pkg: "", typ: $funcType([io.Writer], [$Int64, $error], false)}, {prop: "Reset", name: "Reset", pkg: "", typ: $funcType([$String], [], false)}];
 27734  	ptrType$8.methods = [{prop: "Replace", name: "Replace", pkg: "", typ: $funcType([$String], [$String], false)}, {prop: "WriteString", name: "WriteString", pkg: "", typ: $funcType([io.Writer, $String], [$Int, $error], false)}];
 27735  	ptrType$3.methods = [{prop: "add", name: "add", pkg: "strings", typ: $funcType([$String, $String, $Int, ptrType$9], [], false)}];
 27736  	ptrType$9.methods = [{prop: "lookup", name: "lookup", pkg: "strings", typ: $funcType([$String, $Bool], [$String, $Int, $Bool], false)}, {prop: "Replace", name: "Replace", pkg: "", typ: $funcType([$String], [$String], false)}, {prop: "WriteString", name: "WriteString", pkg: "", typ: $funcType([io.Writer, $String], [$Int, $error], false)}];
 27737  	ptrType$4.methods = [{prop: "Write", name: "Write", pkg: "", typ: $funcType([sliceType], [$Int, $error], false)}, {prop: "WriteString", name: "WriteString", pkg: "", typ: $funcType([$String], [$Int, $error], false)}];
 27738  	stringWriter.methods = [{prop: "WriteString", name: "WriteString", pkg: "", typ: $funcType([$String], [$Int, $error], false)}];
 27739  	ptrType$10.methods = [{prop: "Replace", name: "Replace", pkg: "", typ: $funcType([$String], [$String], false)}, {prop: "WriteString", name: "WriteString", pkg: "", typ: $funcType([io.Writer, $String], [$Int, $error], false)}];
 27740  	ptrType$1.methods = [{prop: "Replace", name: "Replace", pkg: "", typ: $funcType([$String], [$String], false)}, {prop: "WriteString", name: "WriteString", pkg: "", typ: $funcType([io.Writer, $String], [$Int, $error], false)}];
 27741  	ptrType$2.methods = [{prop: "Replace", name: "Replace", pkg: "", typ: $funcType([$String], [$String], false)}, {prop: "WriteString", name: "WriteString", pkg: "", typ: $funcType([io.Writer, $String], [$Int, $error], false)}];
 27742  	ptrType$5.methods = [{prop: "next", name: "next", pkg: "strings", typ: $funcType([$String], [$Int], false)}];
 27743  	ptrType$6.methods = [{prop: "contains", name: "contains", pkg: "strings", typ: $funcType([$Uint8], [$Bool], false)}];
 27744  	Reader.init("strings", [{prop: "s", name: "s", anonymous: false, exported: false, typ: $String, tag: ""}, {prop: "i", name: "i", anonymous: false, exported: false, typ: $Int64, tag: ""}, {prop: "prevRune", name: "prevRune", anonymous: false, exported: false, typ: $Int, tag: ""}]);
 27745  	Replacer.init("strings", [{prop: "r", name: "r", anonymous: false, exported: false, typ: replacer, tag: ""}]);
 27746  	replacer.init([{prop: "Replace", name: "Replace", pkg: "", typ: $funcType([$String], [$String], false)}, {prop: "WriteString", name: "WriteString", pkg: "", typ: $funcType([io.Writer, $String], [$Int, $error], false)}]);
 27747  	trieNode.init("strings", [{prop: "value", name: "value", anonymous: false, exported: false, typ: $String, tag: ""}, {prop: "priority", name: "priority", anonymous: false, exported: false, typ: $Int, tag: ""}, {prop: "prefix", name: "prefix", anonymous: false, exported: false, typ: $String, tag: ""}, {prop: "next", name: "next", anonymous: false, exported: false, typ: ptrType$3, tag: ""}, {prop: "table", name: "table", anonymous: false, exported: false, typ: sliceType$1, tag: ""}]);
 27748  	genericReplacer.init("strings", [{prop: "root", name: "root", anonymous: false, exported: false, typ: trieNode, tag: ""}, {prop: "tableSize", name: "tableSize", anonymous: false, exported: false, typ: $Int, tag: ""}, {prop: "mapping", name: "mapping", anonymous: false, exported: false, typ: arrayType, tag: ""}]);
 27749  	appendSliceWriter.init($Uint8);
 27750  	stringWriterIface.init([{prop: "WriteString", name: "WriteString", pkg: "", typ: $funcType([$String], [$Int, $error], false)}]);
 27751  	stringWriter.init("strings", [{prop: "w", name: "w", anonymous: false, exported: false, typ: io.Writer, tag: ""}]);
 27752  	singleStringReplacer.init("strings", [{prop: "finder", name: "finder", anonymous: false, exported: false, typ: ptrType$5, tag: ""}, {prop: "value", name: "value", anonymous: false, exported: false, typ: $String, tag: ""}]);
 27753  	byteReplacer.init($Uint8, 256);
 27754  	byteStringReplacer.init(sliceType, 256);
 27755  	stringFinder.init("strings", [{prop: "pattern", name: "pattern", anonymous: false, exported: false, typ: $String, tag: ""}, {prop: "badCharSkip", name: "badCharSkip", anonymous: false, exported: false, typ: arrayType$2, tag: ""}, {prop: "goodSuffixSkip", name: "goodSuffixSkip", anonymous: false, exported: false, typ: sliceType$2, tag: ""}]);
 27756  	asciiSet.init($Uint32, 8);
 27757  	span.init("strings", [{prop: "start", name: "start", anonymous: false, exported: false, typ: $Int, tag: ""}, {prop: "end", name: "end", anonymous: false, exported: false, typ: $Int, tag: ""}]);
 27758  	$init = function() {
 27759  		$pkg.$init = function() {};
 27760  		/* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 27761  		$r = errors.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 27762  		$r = js.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 27763  		$r = io.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 27764  		$r = unicode.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 27765  		$r = utf8.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 27766  		asciiSpace = $toNativeArray($kindUint8, [0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]);
 27767  		/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
 27768  	};
 27769  	$pkg.$init = $init;
 27770  	return $pkg;
 27771  })();
 27772  $packages["unicode/utf16"] = (function() {
 27773  	var $pkg = {}, $init, IsSurrogate, DecodeRune;
 27774  	IsSurrogate = function(r) {
 27775  		var r;
 27776  		return 55296 <= r && r < 57344;
 27777  	};
 27778  	$pkg.IsSurrogate = IsSurrogate;
 27779  	DecodeRune = function(r1, r2) {
 27780  		var r1, r2;
 27781  		if (55296 <= r1 && r1 < 56320 && 56320 <= r2 && r2 < 57344) {
 27782  			return ((((r1 - 55296 >> 0)) << 10 >> 0) | ((r2 - 56320 >> 0))) + 65536 >> 0;
 27783  		}
 27784  		return 65533;
 27785  	};
 27786  	$pkg.DecodeRune = DecodeRune;
 27787  	$init = function() {
 27788  		$pkg.$init = function() {};
 27789  		/* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 27790  		/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
 27791  	};
 27792  	$pkg.$init = $init;
 27793  	return $pkg;
 27794  })();
 27795  $packages["encoding/json"] = (function() {
 27796  	var $pkg = {}, $init, bytes, encoding, base64, errors, fmt, nosync, io, math, reflect, runtime, sort, strconv, strings, atomic, unicode, utf16, utf8, Unmarshaler, UnmarshalTypeError, InvalidUnmarshalError, Number, decodeState, unquotedValue, Marshaler, field, byIndex, SyntaxError, scanner, Decoder, Token, Delim, tagOptions, sliceType, structType, sliceType$1, ptrType, ptrType$1, ptrType$2, sliceType$2, structType$1, ptrType$4, ptrType$5, mapType, ptrType$6, sliceType$3, mapType$1, ptrType$9, ptrType$10, ptrType$12, ptrType$13, funcType, ptrType$25, ptrType$26, funcType$1, ptrType$27, errPhase, nullLiteral, textUnmarshalerType, numberType, marshalerType, textMarshalerType, fieldCache, _r, _r$1, _r$2, isValidNumber, getu4, unquote, unquoteBytes, isValidTag, fillField, typeFields, dominantField, cachedTypeFields, foldFunc, equalFoldRight, asciiEqualFold, simpleLetterEqualFold, nextValue, isSpace, stateBeginValueOrEmpty, stateBeginValue, stateBeginStringOrEmpty, stateBeginString, stateEndValue, stateEndTop, stateInString, stateInStringEsc, stateInStringEscU, stateInStringEscU1, stateInStringEscU12, stateInStringEscU123, stateNeg, state1, state0, stateDot, stateDot0, stateE, stateESign, stateE0, stateT, stateTr, stateTru, stateF, stateFa, stateFal, stateFals, stateN, stateNu, stateNul, stateError, quoteChar, stateRedo, NewDecoder, nonSpace, parseTag;
 27797  	bytes = $packages["bytes"];
 27798  	encoding = $packages["encoding"];
 27799  	base64 = $packages["encoding/base64"];
 27800  	errors = $packages["errors"];
 27801  	fmt = $packages["fmt"];
 27802  	nosync = $packages["github.com/gopherjs/gopherjs/nosync"];
 27803  	io = $packages["io"];
 27804  	math = $packages["math"];
 27805  	reflect = $packages["reflect"];
 27806  	runtime = $packages["runtime"];
 27807  	sort = $packages["sort"];
 27808  	strconv = $packages["strconv"];
 27809  	strings = $packages["strings"];
 27810  	atomic = $packages["sync/atomic"];
 27811  	unicode = $packages["unicode"];
 27812  	utf16 = $packages["unicode/utf16"];
 27813  	utf8 = $packages["unicode/utf8"];
 27814  	Unmarshaler = $pkg.Unmarshaler = $newType(8, $kindInterface, "json.Unmarshaler", true, "encoding/json", true, null);
 27815  	UnmarshalTypeError = $pkg.UnmarshalTypeError = $newType(0, $kindStruct, "json.UnmarshalTypeError", true, "encoding/json", true, function(Value_, Type_, Offset_, Struct_, Field_) {
 27816  		this.$val = this;
 27817  		if (arguments.length === 0) {
 27818  			this.Value = "";
 27819  			this.Type = $ifaceNil;
 27820  			this.Offset = new $Int64(0, 0);
 27821  			this.Struct = "";
 27822  			this.Field = "";
 27823  			return;
 27824  		}
 27825  		this.Value = Value_;
 27826  		this.Type = Type_;
 27827  		this.Offset = Offset_;
 27828  		this.Struct = Struct_;
 27829  		this.Field = Field_;
 27830  	});
 27831  	InvalidUnmarshalError = $pkg.InvalidUnmarshalError = $newType(0, $kindStruct, "json.InvalidUnmarshalError", true, "encoding/json", true, function(Type_) {
 27832  		this.$val = this;
 27833  		if (arguments.length === 0) {
 27834  			this.Type = $ifaceNil;
 27835  			return;
 27836  		}
 27837  		this.Type = Type_;
 27838  	});
 27839  	Number = $pkg.Number = $newType(8, $kindString, "json.Number", true, "encoding/json", true, null);
 27840  	decodeState = $pkg.decodeState = $newType(0, $kindStruct, "json.decodeState", true, "encoding/json", false, function(data_, off_, scan_, nextscan_, errorContext_, savedError_, useNumber_, disallowUnknownFields_) {
 27841  		this.$val = this;
 27842  		if (arguments.length === 0) {
 27843  			this.data = sliceType$1.nil;
 27844  			this.off = 0;
 27845  			this.scan = new scanner.ptr($throwNilPointerError, false, sliceType$2.nil, $ifaceNil, false, 0, $throwNilPointerError, new $Int64(0, 0));
 27846  			this.nextscan = new scanner.ptr($throwNilPointerError, false, sliceType$2.nil, $ifaceNil, false, 0, $throwNilPointerError, new $Int64(0, 0));
 27847  			this.errorContext = new structType$1.ptr("", "");
 27848  			this.savedError = $ifaceNil;
 27849  			this.useNumber = false;
 27850  			this.disallowUnknownFields = false;
 27851  			return;
 27852  		}
 27853  		this.data = data_;
 27854  		this.off = off_;
 27855  		this.scan = scan_;
 27856  		this.nextscan = nextscan_;
 27857  		this.errorContext = errorContext_;
 27858  		this.savedError = savedError_;
 27859  		this.useNumber = useNumber_;
 27860  		this.disallowUnknownFields = disallowUnknownFields_;
 27861  	});
 27862  	unquotedValue = $pkg.unquotedValue = $newType(0, $kindStruct, "json.unquotedValue", true, "encoding/json", false, function() {
 27863  		this.$val = this;
 27864  		if (arguments.length === 0) {
 27865  			return;
 27866  		}
 27867  	});
 27868  	Marshaler = $pkg.Marshaler = $newType(8, $kindInterface, "json.Marshaler", true, "encoding/json", true, null);
 27869  	field = $pkg.field = $newType(0, $kindStruct, "json.field", true, "encoding/json", false, function(name_, nameBytes_, equalFold_, tag_, index_, typ_, omitEmpty_, quoted_) {
 27870  		this.$val = this;
 27871  		if (arguments.length === 0) {
 27872  			this.name = "";
 27873  			this.nameBytes = sliceType$1.nil;
 27874  			this.equalFold = $throwNilPointerError;
 27875  			this.tag = false;
 27876  			this.index = sliceType$2.nil;
 27877  			this.typ = $ifaceNil;
 27878  			this.omitEmpty = false;
 27879  			this.quoted = false;
 27880  			return;
 27881  		}
 27882  		this.name = name_;
 27883  		this.nameBytes = nameBytes_;
 27884  		this.equalFold = equalFold_;
 27885  		this.tag = tag_;
 27886  		this.index = index_;
 27887  		this.typ = typ_;
 27888  		this.omitEmpty = omitEmpty_;
 27889  		this.quoted = quoted_;
 27890  	});
 27891  	byIndex = $pkg.byIndex = $newType(12, $kindSlice, "json.byIndex", true, "encoding/json", false, null);
 27892  	SyntaxError = $pkg.SyntaxError = $newType(0, $kindStruct, "json.SyntaxError", true, "encoding/json", true, function(msg_, Offset_) {
 27893  		this.$val = this;
 27894  		if (arguments.length === 0) {
 27895  			this.msg = "";
 27896  			this.Offset = new $Int64(0, 0);
 27897  			return;
 27898  		}
 27899  		this.msg = msg_;
 27900  		this.Offset = Offset_;
 27901  	});
 27902  	scanner = $pkg.scanner = $newType(0, $kindStruct, "json.scanner", true, "encoding/json", false, function(step_, endTop_, parseState_, err_, redo_, redoCode_, redoState_, bytes_) {
 27903  		this.$val = this;
 27904  		if (arguments.length === 0) {
 27905  			this.step = $throwNilPointerError;
 27906  			this.endTop = false;
 27907  			this.parseState = sliceType$2.nil;
 27908  			this.err = $ifaceNil;
 27909  			this.redo = false;
 27910  			this.redoCode = 0;
 27911  			this.redoState = $throwNilPointerError;
 27912  			this.bytes = new $Int64(0, 0);
 27913  			return;
 27914  		}
 27915  		this.step = step_;
 27916  		this.endTop = endTop_;
 27917  		this.parseState = parseState_;
 27918  		this.err = err_;
 27919  		this.redo = redo_;
 27920  		this.redoCode = redoCode_;
 27921  		this.redoState = redoState_;
 27922  		this.bytes = bytes_;
 27923  	});
 27924  	Decoder = $pkg.Decoder = $newType(0, $kindStruct, "json.Decoder", true, "encoding/json", true, function(r_, buf_, d_, scanp_, scanned_, scan_, err_, tokenState_, tokenStack_) {
 27925  		this.$val = this;
 27926  		if (arguments.length === 0) {
 27927  			this.r = $ifaceNil;
 27928  			this.buf = sliceType$1.nil;
 27929  			this.d = new decodeState.ptr(sliceType$1.nil, 0, new scanner.ptr($throwNilPointerError, false, sliceType$2.nil, $ifaceNil, false, 0, $throwNilPointerError, new $Int64(0, 0)), new scanner.ptr($throwNilPointerError, false, sliceType$2.nil, $ifaceNil, false, 0, $throwNilPointerError, new $Int64(0, 0)), new structType$1.ptr("", ""), $ifaceNil, false, false);
 27930  			this.scanp = 0;
 27931  			this.scanned = new $Int64(0, 0);
 27932  			this.scan = new scanner.ptr($throwNilPointerError, false, sliceType$2.nil, $ifaceNil, false, 0, $throwNilPointerError, new $Int64(0, 0));
 27933  			this.err = $ifaceNil;
 27934  			this.tokenState = 0;
 27935  			this.tokenStack = sliceType$2.nil;
 27936  			return;
 27937  		}
 27938  		this.r = r_;
 27939  		this.buf = buf_;
 27940  		this.d = d_;
 27941  		this.scanp = scanp_;
 27942  		this.scanned = scanned_;
 27943  		this.scan = scan_;
 27944  		this.err = err_;
 27945  		this.tokenState = tokenState_;
 27946  		this.tokenStack = tokenStack_;
 27947  	});
 27948  	Token = $pkg.Token = $newType(8, $kindInterface, "json.Token", true, "encoding/json", true, null);
 27949  	Delim = $pkg.Delim = $newType(4, $kindInt32, "json.Delim", true, "encoding/json", true, null);
 27950  	tagOptions = $pkg.tagOptions = $newType(8, $kindString, "json.tagOptions", true, "encoding/json", false, null);
 27951  	sliceType = $sliceType($emptyInterface);
 27952  	structType = $structType("encoding/json", [{prop: "value", name: "value", anonymous: false, exported: false, typ: atomic.Value, tag: ""}, {prop: "mu", name: "mu", anonymous: false, exported: false, typ: nosync.Mutex, tag: ""}]);
 27953  	sliceType$1 = $sliceType($Uint8);
 27954  	ptrType = $ptrType(encoding.TextUnmarshaler);
 27955  	ptrType$1 = $ptrType(Marshaler);
 27956  	ptrType$2 = $ptrType(encoding.TextMarshaler);
 27957  	sliceType$2 = $sliceType($Int);
 27958  	structType$1 = $structType("", [{prop: "Struct", name: "Struct", anonymous: false, exported: true, typ: $String, tag: ""}, {prop: "Field", name: "Field", anonymous: false, exported: true, typ: $String, tag: ""}]);
 27959  	ptrType$4 = $ptrType(UnmarshalTypeError);
 27960  	ptrType$5 = $ptrType(reflect.rtype);
 27961  	mapType = $mapType($String, $emptyInterface);
 27962  	ptrType$6 = $ptrType(field);
 27963  	sliceType$3 = $sliceType(field);
 27964  	mapType$1 = $mapType(reflect.Type, sliceType$3);
 27965  	ptrType$9 = $ptrType($String);
 27966  	ptrType$10 = $ptrType($emptyInterface);
 27967  	ptrType$12 = $ptrType(InvalidUnmarshalError);
 27968  	ptrType$13 = $ptrType(decodeState);
 27969  	funcType = $funcType([sliceType$1, sliceType$1], [$Bool], false);
 27970  	ptrType$25 = $ptrType(SyntaxError);
 27971  	ptrType$26 = $ptrType(scanner);
 27972  	funcType$1 = $funcType([ptrType$26, $Uint8], [$Int], false);
 27973  	ptrType$27 = $ptrType(Decoder);
 27974  	UnmarshalTypeError.ptr.prototype.Error = function() {
 27975  		var _r$3, _r$4, e, $s, $r;
 27976  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$3 = $f._r$3; _r$4 = $f._r$4; e = $f.e; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 27977  		e = this;
 27978  		/* */ if (!(e.Struct === "") || !(e.Field === "")) { $s = 1; continue; }
 27979  		/* */ $s = 2; continue;
 27980  		/* if (!(e.Struct === "") || !(e.Field === "")) { */ case 1:
 27981  			_r$3 = e.Type.String(); /* */ $s = 3; case 3: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 27982  			$s = -1; return "json: cannot unmarshal " + e.Value + " into Go struct field " + e.Struct + "." + e.Field + " of type " + _r$3;
 27983  		/* } */ case 2:
 27984  		_r$4 = e.Type.String(); /* */ $s = 4; case 4: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 27985  		$s = -1; return "json: cannot unmarshal " + e.Value + " into Go value of type " + _r$4;
 27986  		/* */ } return; } if ($f === undefined) { $f = { $blk: UnmarshalTypeError.ptr.prototype.Error }; } $f._r$3 = _r$3; $f._r$4 = _r$4; $f.e = e; $f.$s = $s; $f.$r = $r; return $f;
 27987  	};
 27988  	UnmarshalTypeError.prototype.Error = function() { return this.$val.Error(); };
 27989  	InvalidUnmarshalError.ptr.prototype.Error = function() {
 27990  		var _r$3, _r$4, _r$5, e, $s, $r;
 27991  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; e = $f.e; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 27992  		e = this;
 27993  		if ($interfaceIsEqual(e.Type, $ifaceNil)) {
 27994  			$s = -1; return "json: Unmarshal(nil)";
 27995  		}
 27996  		_r$3 = e.Type.Kind(); /* */ $s = 3; case 3: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 27997  		/* */ if (!((_r$3 === 22))) { $s = 1; continue; }
 27998  		/* */ $s = 2; continue;
 27999  		/* if (!((_r$3 === 22))) { */ case 1:
 28000  			_r$4 = e.Type.String(); /* */ $s = 4; case 4: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 28001  			$s = -1; return "json: Unmarshal(non-pointer " + _r$4 + ")";
 28002  		/* } */ case 2:
 28003  		_r$5 = e.Type.String(); /* */ $s = 5; case 5: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
 28004  		$s = -1; return "json: Unmarshal(nil " + _r$5 + ")";
 28005  		/* */ } return; } if ($f === undefined) { $f = { $blk: InvalidUnmarshalError.ptr.prototype.Error }; } $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f.e = e; $f.$s = $s; $f.$r = $r; return $f;
 28006  	};
 28007  	InvalidUnmarshalError.prototype.Error = function() { return this.$val.Error(); };
 28008  	decodeState.ptr.prototype.unmarshal = function(v) {
 28009  		var _r$3, d, err, rv, v, $s, $deferred, $r;
 28010  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$3 = $f._r$3; d = $f.d; err = $f.err; rv = $f.rv; v = $f.v; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
 28011  		err = [err];
 28012  		err[0] = $ifaceNil;
 28013  		d = this;
 28014  		$deferred.push([(function(err) { return function() {
 28015  			var _tuple, ok, r;
 28016  			r = $recover();
 28017  			if (!($interfaceIsEqual(r, $ifaceNil))) {
 28018  				_tuple = $assertType(r, runtime.Error, true);
 28019  				ok = _tuple[1];
 28020  				if (ok) {
 28021  					$panic(r);
 28022  				}
 28023  				err[0] = $assertType(r, $error);
 28024  			}
 28025  		}; })(err), []]);
 28026  		_r$3 = reflect.ValueOf(v); /* */ $s = 1; case 1: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 28027  		rv = _r$3;
 28028  		if (!(($clone(rv, reflect.Value).Kind() === 22)) || $clone(rv, reflect.Value).IsNil()) {
 28029  			err[0] = new InvalidUnmarshalError.ptr(reflect.TypeOf(v));
 28030  			$s = -1; return err[0];
 28031  		}
 28032  		d.scan.reset();
 28033  		$r = d.value($clone(rv, reflect.Value)); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 28034  		err[0] = d.savedError;
 28035  		$s = -1; return err[0];
 28036  		/* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if (!$curGoroutine.asleep) { return  err[0]; } if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: decodeState.ptr.prototype.unmarshal }; } $f._r$3 = _r$3; $f.d = d; $f.err = err; $f.rv = rv; $f.v = v; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
 28037  	};
 28038  	decodeState.prototype.unmarshal = function(v) { return this.$val.unmarshal(v); };
 28039  	Number.prototype.String = function() {
 28040  		var n;
 28041  		n = this.$val;
 28042  		return (n);
 28043  	};
 28044  	$ptrType(Number).prototype.String = function() { return new Number(this.$get()).String(); };
 28045  	Number.prototype.Float64 = function() {
 28046  		var n;
 28047  		n = this.$val;
 28048  		return strconv.ParseFloat((n), 64);
 28049  	};
 28050  	$ptrType(Number).prototype.Float64 = function() { return new Number(this.$get()).Float64(); };
 28051  	Number.prototype.Int64 = function() {
 28052  		var n;
 28053  		n = this.$val;
 28054  		return strconv.ParseInt((n), 10, 64);
 28055  	};
 28056  	$ptrType(Number).prototype.Int64 = function() { return new Number(this.$get()).Int64(); };
 28057  	isValidNumber = function(s) {
 28058  		var s;
 28059  		if (s === "") {
 28060  			return false;
 28061  		}
 28062  		if (s.charCodeAt(0) === 45) {
 28063  			s = $substring(s, 1);
 28064  			if (s === "") {
 28065  				return false;
 28066  			}
 28067  		}
 28068  		if ((s.charCodeAt(0) === 48)) {
 28069  			s = $substring(s, 1);
 28070  		} else if (49 <= s.charCodeAt(0) && s.charCodeAt(0) <= 57) {
 28071  			s = $substring(s, 1);
 28072  			while (true) {
 28073  				if (!(s.length > 0 && 48 <= s.charCodeAt(0) && s.charCodeAt(0) <= 57)) { break; }
 28074  				s = $substring(s, 1);
 28075  			}
 28076  		} else {
 28077  			return false;
 28078  		}
 28079  		if (s.length >= 2 && (s.charCodeAt(0) === 46) && 48 <= s.charCodeAt(1) && s.charCodeAt(1) <= 57) {
 28080  			s = $substring(s, 2);
 28081  			while (true) {
 28082  				if (!(s.length > 0 && 48 <= s.charCodeAt(0) && s.charCodeAt(0) <= 57)) { break; }
 28083  				s = $substring(s, 1);
 28084  			}
 28085  		}
 28086  		if (s.length >= 2 && ((s.charCodeAt(0) === 101) || (s.charCodeAt(0) === 69))) {
 28087  			s = $substring(s, 1);
 28088  			if ((s.charCodeAt(0) === 43) || (s.charCodeAt(0) === 45)) {
 28089  				s = $substring(s, 1);
 28090  				if (s === "") {
 28091  					return false;
 28092  				}
 28093  			}
 28094  			while (true) {
 28095  				if (!(s.length > 0 && 48 <= s.charCodeAt(0) && s.charCodeAt(0) <= 57)) { break; }
 28096  				s = $substring(s, 1);
 28097  			}
 28098  		}
 28099  		return s === "";
 28100  	};
 28101  	decodeState.ptr.prototype.init = function(data) {
 28102  		var d, data;
 28103  		d = this;
 28104  		d.data = data;
 28105  		d.off = 0;
 28106  		d.savedError = $ifaceNil;
 28107  		d.errorContext.Struct = "";
 28108  		d.errorContext.Field = "";
 28109  		return d;
 28110  	};
 28111  	decodeState.prototype.init = function(data) { return this.$val.init(data); };
 28112  	decodeState.ptr.prototype.error = function(err) {
 28113  		var d, err;
 28114  		d = this;
 28115  		$panic(d.addErrorContext(err));
 28116  	};
 28117  	decodeState.prototype.error = function(err) { return this.$val.error(err); };
 28118  	decodeState.ptr.prototype.saveError = function(err) {
 28119  		var d, err;
 28120  		d = this;
 28121  		if ($interfaceIsEqual(d.savedError, $ifaceNil)) {
 28122  			d.savedError = d.addErrorContext(err);
 28123  		}
 28124  	};
 28125  	decodeState.prototype.saveError = function(err) { return this.$val.saveError(err); };
 28126  	decodeState.ptr.prototype.addErrorContext = function(err) {
 28127  		var _ref, d, err, err$1;
 28128  		d = this;
 28129  		if (!(d.errorContext.Struct === "") || !(d.errorContext.Field === "")) {
 28130  			_ref = err;
 28131  			if ($assertType(_ref, ptrType$4, true)[1]) {
 28132  				err$1 = _ref.$val;
 28133  				err$1.Struct = d.errorContext.Struct;
 28134  				err$1.Field = d.errorContext.Field;
 28135  				return err$1;
 28136  			}
 28137  		}
 28138  		return err;
 28139  	};
 28140  	decodeState.prototype.addErrorContext = function(err) { return this.$val.addErrorContext(err); };
 28141  	decodeState.ptr.prototype.next = function() {
 28142  		var _r$3, _r$4, _r$5, _tuple, c, d, err, item, rest, x, x$1, $s, $r;
 28143  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _tuple = $f._tuple; c = $f.c; d = $f.d; err = $f.err; item = $f.item; rest = $f.rest; x = $f.x; x$1 = $f.x$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 28144  		d = this;
 28145  		c = (x = d.data, x$1 = d.off, ((x$1 < 0 || x$1 >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + x$1]));
 28146  		_r$3 = nextValue($subslice(d.data, d.off), d.nextscan); /* */ $s = 1; case 1: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 28147  		_tuple = _r$3;
 28148  		item = _tuple[0];
 28149  		rest = _tuple[1];
 28150  		err = _tuple[2];
 28151  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 28152  			d.error(err);
 28153  		}
 28154  		d.off = d.data.$length - rest.$length >> 0;
 28155  		/* */ if (c === 123) { $s = 2; continue; }
 28156  		/* */ $s = 3; continue;
 28157  		/* if (c === 123) { */ case 2:
 28158  			_r$4 = d.scan.step(d.scan, 125); /* */ $s = 5; case 5: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 28159  			_r$4;
 28160  			$s = 4; continue;
 28161  		/* } else { */ case 3:
 28162  			_r$5 = d.scan.step(d.scan, 93); /* */ $s = 6; case 6: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
 28163  			_r$5;
 28164  		/* } */ case 4:
 28165  		$s = -1; return item;
 28166  		/* */ } return; } if ($f === undefined) { $f = { $blk: decodeState.ptr.prototype.next }; } $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._tuple = _tuple; $f.c = c; $f.d = d; $f.err = err; $f.item = item; $f.rest = rest; $f.x = x; $f.x$1 = x$1; $f.$s = $s; $f.$r = $r; return $f;
 28167  	};
 28168  	decodeState.prototype.next = function() { return this.$val.next(); };
 28169  	decodeState.ptr.prototype.scanWhile = function(op) {
 28170  		var _r$3, _r$4, c, d, newOp, op, x, x$1, $s, $r;
 28171  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$3 = $f._r$3; _r$4 = $f._r$4; c = $f.c; d = $f.d; newOp = $f.newOp; op = $f.op; x = $f.x; x$1 = $f.x$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 28172  		d = this;
 28173  		newOp = 0;
 28174  		/* while (true) { */ case 1:
 28175  			/* */ if (d.off >= d.data.$length) { $s = 3; continue; }
 28176  			/* */ $s = 4; continue;
 28177  			/* if (d.off >= d.data.$length) { */ case 3:
 28178  				_r$3 = d.scan.eof(); /* */ $s = 6; case 6: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 28179  				newOp = _r$3;
 28180  				d.off = d.data.$length + 1 >> 0;
 28181  				$s = 5; continue;
 28182  			/* } else { */ case 4:
 28183  				c = (x = d.data, x$1 = d.off, ((x$1 < 0 || x$1 >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + x$1]));
 28184  				d.off = d.off + (1) >> 0;
 28185  				_r$4 = d.scan.step(d.scan, c); /* */ $s = 7; case 7: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 28186  				newOp = _r$4;
 28187  			/* } */ case 5:
 28188  			if (!((newOp === op))) {
 28189  				/* break; */ $s = 2; continue;
 28190  			}
 28191  		/* } */ $s = 1; continue; case 2:
 28192  		$s = -1; return newOp;
 28193  		/* */ } return; } if ($f === undefined) { $f = { $blk: decodeState.ptr.prototype.scanWhile }; } $f._r$3 = _r$3; $f._r$4 = _r$4; $f.c = c; $f.d = d; $f.newOp = newOp; $f.op = op; $f.x = x; $f.x$1 = x$1; $f.$s = $s; $f.$r = $r; return $f;
 28194  	};
 28195  	decodeState.prototype.scanWhile = function(op) { return this.$val.scanWhile(op); };
 28196  	decodeState.ptr.prototype.value = function(v) {
 28197  		var _1, _r$10, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _tuple, d, err, n, op, rest, v, x, x$1, $s, $r;
 28198  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _r$10 = $f._r$10; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _r$8 = $f._r$8; _r$9 = $f._r$9; _tuple = $f._tuple; d = $f.d; err = $f.err; n = $f.n; op = $f.op; rest = $f.rest; v = $f.v; x = $f.x; x$1 = $f.x$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 28199  		d = this;
 28200  		/* */ if (!$clone(v, reflect.Value).IsValid()) { $s = 1; continue; }
 28201  		/* */ $s = 2; continue;
 28202  		/* if (!$clone(v, reflect.Value).IsValid()) { */ case 1:
 28203  			_r$3 = nextValue($subslice(d.data, d.off), d.nextscan); /* */ $s = 3; case 3: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 28204  			_tuple = _r$3;
 28205  			rest = _tuple[1];
 28206  			err = _tuple[2];
 28207  			if (!($interfaceIsEqual(err, $ifaceNil))) {
 28208  				d.error(err);
 28209  			}
 28210  			d.off = d.data.$length - rest.$length >> 0;
 28211  			if (d.scan.redo) {
 28212  				d.scan.redo = false;
 28213  				d.scan.step = stateBeginValue;
 28214  			}
 28215  			_r$4 = d.scan.step(d.scan, 34); /* */ $s = 4; case 4: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 28216  			_r$4;
 28217  			_r$5 = d.scan.step(d.scan, 34); /* */ $s = 5; case 5: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
 28218  			_r$5;
 28219  			n = d.scan.parseState.$length;
 28220  			/* */ if (n > 0 && ((x = d.scan.parseState, x$1 = n - 1 >> 0, ((x$1 < 0 || x$1 >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + x$1])) === 0)) { $s = 6; continue; }
 28221  			/* */ $s = 7; continue;
 28222  			/* if (n > 0 && ((x = d.scan.parseState, x$1 = n - 1 >> 0, ((x$1 < 0 || x$1 >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + x$1])) === 0)) { */ case 6:
 28223  				_r$6 = d.scan.step(d.scan, 58); /* */ $s = 8; case 8: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
 28224  				_r$6;
 28225  				_r$7 = d.scan.step(d.scan, 34); /* */ $s = 9; case 9: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
 28226  				_r$7;
 28227  				_r$8 = d.scan.step(d.scan, 34); /* */ $s = 10; case 10: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
 28228  				_r$8;
 28229  				_r$9 = d.scan.step(d.scan, 125); /* */ $s = 11; case 11: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 28230  				_r$9;
 28231  			/* } */ case 7:
 28232  			$s = -1; return;
 28233  		/* } */ case 2:
 28234  			_r$10 = d.scanWhile(9); /* */ $s = 13; case 13: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
 28235  			op = _r$10;
 28236  			_1 = op;
 28237  			/* */ if (_1 === (6)) { $s = 14; continue; }
 28238  			/* */ if (_1 === (2)) { $s = 15; continue; }
 28239  			/* */ if (_1 === (1)) { $s = 16; continue; }
 28240  			/* */ $s = 17; continue;
 28241  			/* if (_1 === (6)) { */ case 14:
 28242  				$r = d.array($clone(v, reflect.Value)); /* */ $s = 19; case 19: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 28243  				$s = 18; continue;
 28244  			/* } else if (_1 === (2)) { */ case 15:
 28245  				$r = d.object($clone(v, reflect.Value)); /* */ $s = 20; case 20: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 28246  				$s = 18; continue;
 28247  			/* } else if (_1 === (1)) { */ case 16:
 28248  				$r = d.literal($clone(v, reflect.Value)); /* */ $s = 21; case 21: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 28249  				$s = 18; continue;
 28250  			/* } else { */ case 17:
 28251  				d.error(errPhase);
 28252  			/* } */ case 18:
 28253  		case 12:
 28254  		$s = -1; return;
 28255  		/* */ } return; } if ($f === undefined) { $f = { $blk: decodeState.ptr.prototype.value }; } $f._1 = _1; $f._r$10 = _r$10; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._r$8 = _r$8; $f._r$9 = _r$9; $f._tuple = _tuple; $f.d = d; $f.err = err; $f.n = n; $f.op = op; $f.rest = rest; $f.v = v; $f.x = x; $f.x$1 = x$1; $f.$s = $s; $f.$r = $r; return $f;
 28256  	};
 28257  	decodeState.prototype.value = function(v) { return this.$val.value(v); };
 28258  	decodeState.ptr.prototype.valueQuoted = function() {
 28259  		var _1, _r$3, _r$4, _ref, d, op, v, x, $s, $r;
 28260  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _r$3 = $f._r$3; _r$4 = $f._r$4; _ref = $f._ref; d = $f.d; op = $f.op; v = $f.v; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 28261  		d = this;
 28262  			_r$3 = d.scanWhile(9); /* */ $s = 2; case 2: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 28263  			op = _r$3;
 28264  			_1 = op;
 28265  			/* */ if (_1 === (6)) { $s = 3; continue; }
 28266  			/* */ if (_1 === (2)) { $s = 4; continue; }
 28267  			/* */ if (_1 === (1)) { $s = 5; continue; }
 28268  			/* */ $s = 6; continue;
 28269  			/* if (_1 === (6)) { */ case 3:
 28270  				$r = d.array(new reflect.Value.ptr(ptrType$5.nil, 0, 0)); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 28271  				$s = 7; continue;
 28272  			/* } else if (_1 === (2)) { */ case 4:
 28273  				$r = d.object(new reflect.Value.ptr(ptrType$5.nil, 0, 0)); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 28274  				$s = 7; continue;
 28275  			/* } else if (_1 === (1)) { */ case 5:
 28276  				_r$4 = d.literalInterface(); /* */ $s = 10; case 10: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 28277  				_ref = _r$4;
 28278  				/* */ if (_ref === $ifaceNil || $assertType(_ref, $String, true)[1]) { $s = 11; continue; }
 28279  				/* */ $s = 12; continue;
 28280  				/* if (_ref === $ifaceNil || $assertType(_ref, $String, true)[1]) { */ case 11:
 28281  					v = _ref;
 28282  					$s = -1; return v;
 28283  				/* } */ case 12:
 28284  				$s = 7; continue;
 28285  			/* } else { */ case 6:
 28286  				d.error(errPhase);
 28287  			/* } */ case 7:
 28288  		case 1:
 28289  		$s = -1; return (x = new unquotedValue.ptr(), new x.constructor.elem(x));
 28290  		/* */ } return; } if ($f === undefined) { $f = { $blk: decodeState.ptr.prototype.valueQuoted }; } $f._1 = _1; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._ref = _ref; $f.d = d; $f.op = op; $f.v = v; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
 28291  	};
 28292  	decodeState.prototype.valueQuoted = function() { return this.$val.valueQuoted(); };
 28293  	decodeState.ptr.prototype.indirect = function(v, decodingNull) {
 28294  		var _r$10, _r$11, _r$12, _r$13, _r$14, _r$15, _r$16, _r$17, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _tuple, _tuple$1, _v, _v$1, _v$2, d, decodingNull, e, ok, ok$1, u, u$1, v, $s, $r;
 28295  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$10 = $f._r$10; _r$11 = $f._r$11; _r$12 = $f._r$12; _r$13 = $f._r$13; _r$14 = $f._r$14; _r$15 = $f._r$15; _r$16 = $f._r$16; _r$17 = $f._r$17; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _r$8 = $f._r$8; _r$9 = $f._r$9; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _v = $f._v; _v$1 = $f._v$1; _v$2 = $f._v$2; d = $f.d; decodingNull = $f.decodingNull; e = $f.e; ok = $f.ok; ok$1 = $f.ok$1; u = $f.u; u$1 = $f.u$1; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 28296  		d = this;
 28297  		if (!(!(($clone(v, reflect.Value).Kind() === 22)))) { _v = false; $s = 3; continue s; }
 28298  		_r$3 = $clone(v, reflect.Value).Type(); /* */ $s = 4; case 4: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 28299  		_r$4 = _r$3.Name(); /* */ $s = 5; case 5: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 28300  		_v = !(_r$4 === ""); case 3:
 28301  		/* */ if (_v && $clone(v, reflect.Value).CanAddr()) { $s = 1; continue; }
 28302  		/* */ $s = 2; continue;
 28303  		/* if (_v && $clone(v, reflect.Value).CanAddr()) { */ case 1:
 28304  			v = $clone(v, reflect.Value).Addr();
 28305  		/* } */ case 2:
 28306  		/* while (true) { */ case 6:
 28307  			/* */ if (($clone(v, reflect.Value).Kind() === 20) && !$clone(v, reflect.Value).IsNil()) { $s = 8; continue; }
 28308  			/* */ $s = 9; continue;
 28309  			/* if (($clone(v, reflect.Value).Kind() === 20) && !$clone(v, reflect.Value).IsNil()) { */ case 8:
 28310  				_r$5 = $clone(v, reflect.Value).Elem(); /* */ $s = 10; case 10: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
 28311  				e = _r$5;
 28312  				if (!(($clone(e, reflect.Value).Kind() === 22) && !$clone(e, reflect.Value).IsNil())) { _v$1 = false; $s = 13; continue s; }
 28313  				if (!decodingNull) { _v$2 = true; $s = 14; continue s; }
 28314  				_r$6 = $clone(e, reflect.Value).Elem(); /* */ $s = 15; case 15: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
 28315  				_r$7 = $clone(_r$6, reflect.Value).Kind(); /* */ $s = 16; case 16: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
 28316  				_v$2 = _r$7 === 22; case 14:
 28317  				_v$1 = _v$2; case 13:
 28318  				/* */ if (_v$1) { $s = 11; continue; }
 28319  				/* */ $s = 12; continue;
 28320  				/* if (_v$1) { */ case 11:
 28321  					v = e;
 28322  					/* continue; */ $s = 6; continue;
 28323  				/* } */ case 12:
 28324  			/* } */ case 9:
 28325  			if (!(($clone(v, reflect.Value).Kind() === 22))) {
 28326  				/* break; */ $s = 7; continue;
 28327  			}
 28328  			_r$8 = $clone(v, reflect.Value).Elem(); /* */ $s = 19; case 19: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
 28329  			_r$9 = $clone(_r$8, reflect.Value).Kind(); /* */ $s = 20; case 20: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 28330  			/* */ if (!((_r$9 === 22)) && decodingNull && $clone(v, reflect.Value).CanSet()) { $s = 17; continue; }
 28331  			/* */ $s = 18; continue;
 28332  			/* if (!((_r$9 === 22)) && decodingNull && $clone(v, reflect.Value).CanSet()) { */ case 17:
 28333  				/* break; */ $s = 7; continue;
 28334  			/* } */ case 18:
 28335  			/* */ if ($clone(v, reflect.Value).IsNil()) { $s = 21; continue; }
 28336  			/* */ $s = 22; continue;
 28337  			/* if ($clone(v, reflect.Value).IsNil()) { */ case 21:
 28338  				_r$10 = $clone(v, reflect.Value).Type(); /* */ $s = 23; case 23: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
 28339  				_r$11 = _r$10.Elem(); /* */ $s = 24; case 24: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; }
 28340  				_r$12 = reflect.New(_r$11); /* */ $s = 25; case 25: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; }
 28341  				$r = $clone(v, reflect.Value).Set($clone(_r$12, reflect.Value)); /* */ $s = 26; case 26: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 28342  			/* } */ case 22:
 28343  			_r$13 = $clone(v, reflect.Value).Type(); /* */ $s = 29; case 29: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; }
 28344  			_r$14 = _r$13.NumMethod(); /* */ $s = 30; case 30: if($c) { $c = false; _r$14 = _r$14.$blk(); } if (_r$14 && _r$14.$blk !== undefined) { break s; }
 28345  			/* */ if (_r$14 > 0) { $s = 27; continue; }
 28346  			/* */ $s = 28; continue;
 28347  			/* if (_r$14 > 0) { */ case 27:
 28348  				_r$15 = $clone(v, reflect.Value).Interface(); /* */ $s = 31; case 31: if($c) { $c = false; _r$15 = _r$15.$blk(); } if (_r$15 && _r$15.$blk !== undefined) { break s; }
 28349  				_tuple = $assertType(_r$15, Unmarshaler, true);
 28350  				u = _tuple[0];
 28351  				ok = _tuple[1];
 28352  				if (ok) {
 28353  					$s = -1; return [u, $ifaceNil, new reflect.Value.ptr(ptrType$5.nil, 0, 0)];
 28354  				}
 28355  				/* */ if (!decodingNull) { $s = 32; continue; }
 28356  				/* */ $s = 33; continue;
 28357  				/* if (!decodingNull) { */ case 32:
 28358  					_r$16 = $clone(v, reflect.Value).Interface(); /* */ $s = 34; case 34: if($c) { $c = false; _r$16 = _r$16.$blk(); } if (_r$16 && _r$16.$blk !== undefined) { break s; }
 28359  					_tuple$1 = $assertType(_r$16, encoding.TextUnmarshaler, true);
 28360  					u$1 = _tuple$1[0];
 28361  					ok$1 = _tuple$1[1];
 28362  					if (ok$1) {
 28363  						$s = -1; return [$ifaceNil, u$1, new reflect.Value.ptr(ptrType$5.nil, 0, 0)];
 28364  					}
 28365  				/* } */ case 33:
 28366  			/* } */ case 28:
 28367  			_r$17 = $clone(v, reflect.Value).Elem(); /* */ $s = 35; case 35: if($c) { $c = false; _r$17 = _r$17.$blk(); } if (_r$17 && _r$17.$blk !== undefined) { break s; }
 28368  			v = _r$17;
 28369  		/* } */ $s = 6; continue; case 7:
 28370  		$s = -1; return [$ifaceNil, $ifaceNil, v];
 28371  		/* */ } return; } if ($f === undefined) { $f = { $blk: decodeState.ptr.prototype.indirect }; } $f._r$10 = _r$10; $f._r$11 = _r$11; $f._r$12 = _r$12; $f._r$13 = _r$13; $f._r$14 = _r$14; $f._r$15 = _r$15; $f._r$16 = _r$16; $f._r$17 = _r$17; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._r$8 = _r$8; $f._r$9 = _r$9; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._v = _v; $f._v$1 = _v$1; $f._v$2 = _v$2; $f.d = d; $f.decodingNull = decodingNull; $f.e = e; $f.ok = ok; $f.ok$1 = ok$1; $f.u = u; $f.u$1 = u$1; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
 28372  	};
 28373  	decodeState.prototype.indirect = function(v, decodingNull) { return this.$val.indirect(v, decodingNull); };
 28374  	decodeState.ptr.prototype.array = function(v) {
 28375  		var _1, _q, _r$10, _r$11, _r$12, _r$13, _r$14, _r$15, _r$16, _r$17, _r$18, _r$19, _r$20, _r$21, _r$22, _r$23, _r$24, _r$25, _r$26, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _tuple, d, err, i, newcap, newv, op, pv, u, ut, v, z, $s, $r;
 28376  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _q = $f._q; _r$10 = $f._r$10; _r$11 = $f._r$11; _r$12 = $f._r$12; _r$13 = $f._r$13; _r$14 = $f._r$14; _r$15 = $f._r$15; _r$16 = $f._r$16; _r$17 = $f._r$17; _r$18 = $f._r$18; _r$19 = $f._r$19; _r$20 = $f._r$20; _r$21 = $f._r$21; _r$22 = $f._r$22; _r$23 = $f._r$23; _r$24 = $f._r$24; _r$25 = $f._r$25; _r$26 = $f._r$26; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _r$8 = $f._r$8; _r$9 = $f._r$9; _tuple = $f._tuple; d = $f.d; err = $f.err; i = $f.i; newcap = $f.newcap; newv = $f.newv; op = $f.op; pv = $f.pv; u = $f.u; ut = $f.ut; v = $f.v; z = $f.z; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 28377  		d = this;
 28378  		_r$3 = d.indirect($clone(v, reflect.Value), false); /* */ $s = 1; case 1: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 28379  		_tuple = _r$3;
 28380  		u = _tuple[0];
 28381  		ut = _tuple[1];
 28382  		pv = _tuple[2];
 28383  		/* */ if (!($interfaceIsEqual(u, $ifaceNil))) { $s = 2; continue; }
 28384  		/* */ $s = 3; continue;
 28385  		/* if (!($interfaceIsEqual(u, $ifaceNil))) { */ case 2:
 28386  			d.off = d.off - (1) >> 0;
 28387  			_r$4 = d.next(); /* */ $s = 4; case 4: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 28388  			_r$5 = u.UnmarshalJSON(_r$4); /* */ $s = 5; case 5: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
 28389  			err = _r$5;
 28390  			if (!($interfaceIsEqual(err, $ifaceNil))) {
 28391  				d.error(err);
 28392  			}
 28393  			$s = -1; return;
 28394  		/* } */ case 3:
 28395  		/* */ if (!($interfaceIsEqual(ut, $ifaceNil))) { $s = 6; continue; }
 28396  		/* */ $s = 7; continue;
 28397  		/* if (!($interfaceIsEqual(ut, $ifaceNil))) { */ case 6:
 28398  			_r$6 = $clone(v, reflect.Value).Type(); /* */ $s = 8; case 8: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
 28399  			$r = d.saveError(new UnmarshalTypeError.ptr("array", _r$6, (new $Int64(0, d.off)), "", "")); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 28400  			d.off = d.off - (1) >> 0;
 28401  			_r$7 = d.next(); /* */ $s = 10; case 10: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
 28402  			_r$7;
 28403  			$s = -1; return;
 28404  		/* } */ case 7:
 28405  		v = pv;
 28406  			_1 = $clone(v, reflect.Value).Kind();
 28407  			/* */ if (_1 === (20)) { $s = 12; continue; }
 28408  			/* */ if (_1 === (17)) { $s = 13; continue; }
 28409  			/* */ if (_1 === (23)) { $s = 14; continue; }
 28410  			/* */ $s = 15; continue;
 28411  			/* if (_1 === (20)) { */ case 12:
 28412  				_r$8 = $clone(v, reflect.Value).NumMethod(); /* */ $s = 19; case 19: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
 28413  				/* */ if (_r$8 === 0) { $s = 17; continue; }
 28414  				/* */ $s = 18; continue;
 28415  				/* if (_r$8 === 0) { */ case 17:
 28416  					_r$9 = d.arrayInterface(); /* */ $s = 20; case 20: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 28417  					_r$10 = reflect.ValueOf(_r$9); /* */ $s = 21; case 21: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
 28418  					$r = $clone(v, reflect.Value).Set($clone(_r$10, reflect.Value)); /* */ $s = 22; case 22: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 28419  					$s = -1; return;
 28420  				/* } */ case 18:
 28421  				_r$11 = $clone(v, reflect.Value).Type(); /* */ $s = 23; case 23: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; }
 28422  				$r = d.saveError(new UnmarshalTypeError.ptr("array", _r$11, (new $Int64(0, d.off)), "", "")); /* */ $s = 24; case 24: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 28423  				d.off = d.off - (1) >> 0;
 28424  				_r$12 = d.next(); /* */ $s = 25; case 25: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; }
 28425  				_r$12;
 28426  				$s = -1; return;
 28427  			/* } else if (_1 === (17)) { */ case 13:
 28428  				$s = 16; continue;
 28429  			/* } else if (_1 === (23)) { */ case 14:
 28430  				/* break; */ $s = 11; continue;
 28431  				$s = 16; continue;
 28432  			/* } else { */ case 15:
 28433  				_r$13 = $clone(v, reflect.Value).Type(); /* */ $s = 26; case 26: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; }
 28434  				$r = d.saveError(new UnmarshalTypeError.ptr("array", _r$13, (new $Int64(0, d.off)), "", "")); /* */ $s = 27; case 27: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 28435  				d.off = d.off - (1) >> 0;
 28436  				_r$14 = d.next(); /* */ $s = 28; case 28: if($c) { $c = false; _r$14 = _r$14.$blk(); } if (_r$14 && _r$14.$blk !== undefined) { break s; }
 28437  				_r$14;
 28438  				$s = -1; return;
 28439  			/* } */ case 16:
 28440  		case 11:
 28441  		i = 0;
 28442  		/* while (true) { */ case 29:
 28443  			_r$15 = d.scanWhile(9); /* */ $s = 31; case 31: if($c) { $c = false; _r$15 = _r$15.$blk(); } if (_r$15 && _r$15.$blk !== undefined) { break s; }
 28444  			op = _r$15;
 28445  			if (op === 8) {
 28446  				/* break; */ $s = 30; continue;
 28447  			}
 28448  			d.off = d.off - (1) >> 0;
 28449  			d.scan.undo(op);
 28450  			/* */ if ($clone(v, reflect.Value).Kind() === 23) { $s = 32; continue; }
 28451  			/* */ $s = 33; continue;
 28452  			/* if ($clone(v, reflect.Value).Kind() === 23) { */ case 32:
 28453  				/* */ if (i >= $clone(v, reflect.Value).Cap()) { $s = 34; continue; }
 28454  				/* */ $s = 35; continue;
 28455  				/* if (i >= $clone(v, reflect.Value).Cap()) { */ case 34:
 28456  					newcap = $clone(v, reflect.Value).Cap() + (_q = $clone(v, reflect.Value).Cap() / 2, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")) >> 0;
 28457  					if (newcap < 4) {
 28458  						newcap = 4;
 28459  					}
 28460  					_r$16 = $clone(v, reflect.Value).Type(); /* */ $s = 36; case 36: if($c) { $c = false; _r$16 = _r$16.$blk(); } if (_r$16 && _r$16.$blk !== undefined) { break s; }
 28461  					_r$17 = reflect.MakeSlice(_r$16, $clone(v, reflect.Value).Len(), newcap); /* */ $s = 37; case 37: if($c) { $c = false; _r$17 = _r$17.$blk(); } if (_r$17 && _r$17.$blk !== undefined) { break s; }
 28462  					newv = _r$17;
 28463  					_r$18 = reflect.Copy($clone(newv, reflect.Value), $clone(v, reflect.Value)); /* */ $s = 38; case 38: if($c) { $c = false; _r$18 = _r$18.$blk(); } if (_r$18 && _r$18.$blk !== undefined) { break s; }
 28464  					_r$18;
 28465  					$r = $clone(v, reflect.Value).Set($clone(newv, reflect.Value)); /* */ $s = 39; case 39: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 28466  				/* } */ case 35:
 28467  				if (i >= $clone(v, reflect.Value).Len()) {
 28468  					$clone(v, reflect.Value).SetLen(i + 1 >> 0);
 28469  				}
 28470  			/* } */ case 33:
 28471  			/* */ if (i < $clone(v, reflect.Value).Len()) { $s = 40; continue; }
 28472  			/* */ $s = 41; continue;
 28473  			/* if (i < $clone(v, reflect.Value).Len()) { */ case 40:
 28474  				_r$19 = $clone(v, reflect.Value).Index(i); /* */ $s = 43; case 43: if($c) { $c = false; _r$19 = _r$19.$blk(); } if (_r$19 && _r$19.$blk !== undefined) { break s; }
 28475  				$r = d.value($clone(_r$19, reflect.Value)); /* */ $s = 44; case 44: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 28476  				$s = 42; continue;
 28477  			/* } else { */ case 41:
 28478  				$r = d.value(new reflect.Value.ptr(ptrType$5.nil, 0, 0)); /* */ $s = 45; case 45: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 28479  			/* } */ case 42:
 28480  			i = i + (1) >> 0;
 28481  			_r$20 = d.scanWhile(9); /* */ $s = 46; case 46: if($c) { $c = false; _r$20 = _r$20.$blk(); } if (_r$20 && _r$20.$blk !== undefined) { break s; }
 28482  			op = _r$20;
 28483  			if (op === 8) {
 28484  				/* break; */ $s = 30; continue;
 28485  			}
 28486  			if (!((op === 7))) {
 28487  				d.error(errPhase);
 28488  			}
 28489  		/* } */ $s = 29; continue; case 30:
 28490  		/* */ if (i < $clone(v, reflect.Value).Len()) { $s = 47; continue; }
 28491  		/* */ $s = 48; continue;
 28492  		/* if (i < $clone(v, reflect.Value).Len()) { */ case 47:
 28493  			/* */ if ($clone(v, reflect.Value).Kind() === 17) { $s = 49; continue; }
 28494  			/* */ $s = 50; continue;
 28495  			/* if ($clone(v, reflect.Value).Kind() === 17) { */ case 49:
 28496  				_r$21 = $clone(v, reflect.Value).Type(); /* */ $s = 52; case 52: if($c) { $c = false; _r$21 = _r$21.$blk(); } if (_r$21 && _r$21.$blk !== undefined) { break s; }
 28497  				_r$22 = _r$21.Elem(); /* */ $s = 53; case 53: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; }
 28498  				_r$23 = reflect.Zero(_r$22); /* */ $s = 54; case 54: if($c) { $c = false; _r$23 = _r$23.$blk(); } if (_r$23 && _r$23.$blk !== undefined) { break s; }
 28499  				z = _r$23;
 28500  				/* while (true) { */ case 55:
 28501  					/* if (!(i < $clone(v, reflect.Value).Len())) { break; } */ if(!(i < $clone(v, reflect.Value).Len())) { $s = 56; continue; }
 28502  					_r$24 = $clone(v, reflect.Value).Index(i); /* */ $s = 57; case 57: if($c) { $c = false; _r$24 = _r$24.$blk(); } if (_r$24 && _r$24.$blk !== undefined) { break s; }
 28503  					$r = $clone(_r$24, reflect.Value).Set($clone(z, reflect.Value)); /* */ $s = 58; case 58: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 28504  					i = i + (1) >> 0;
 28505  				/* } */ $s = 55; continue; case 56:
 28506  				$s = 51; continue;
 28507  			/* } else { */ case 50:
 28508  				$clone(v, reflect.Value).SetLen(i);
 28509  			/* } */ case 51:
 28510  		/* } */ case 48:
 28511  		/* */ if ((i === 0) && ($clone(v, reflect.Value).Kind() === 23)) { $s = 59; continue; }
 28512  		/* */ $s = 60; continue;
 28513  		/* if ((i === 0) && ($clone(v, reflect.Value).Kind() === 23)) { */ case 59:
 28514  			_r$25 = $clone(v, reflect.Value).Type(); /* */ $s = 61; case 61: if($c) { $c = false; _r$25 = _r$25.$blk(); } if (_r$25 && _r$25.$blk !== undefined) { break s; }
 28515  			_r$26 = reflect.MakeSlice(_r$25, 0, 0); /* */ $s = 62; case 62: if($c) { $c = false; _r$26 = _r$26.$blk(); } if (_r$26 && _r$26.$blk !== undefined) { break s; }
 28516  			$r = $clone(v, reflect.Value).Set($clone(_r$26, reflect.Value)); /* */ $s = 63; case 63: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 28517  		/* } */ case 60:
 28518  		$s = -1; return;
 28519  		/* */ } return; } if ($f === undefined) { $f = { $blk: decodeState.ptr.prototype.array }; } $f._1 = _1; $f._q = _q; $f._r$10 = _r$10; $f._r$11 = _r$11; $f._r$12 = _r$12; $f._r$13 = _r$13; $f._r$14 = _r$14; $f._r$15 = _r$15; $f._r$16 = _r$16; $f._r$17 = _r$17; $f._r$18 = _r$18; $f._r$19 = _r$19; $f._r$20 = _r$20; $f._r$21 = _r$21; $f._r$22 = _r$22; $f._r$23 = _r$23; $f._r$24 = _r$24; $f._r$25 = _r$25; $f._r$26 = _r$26; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._r$8 = _r$8; $f._r$9 = _r$9; $f._tuple = _tuple; $f.d = d; $f.err = err; $f.i = i; $f.newcap = newcap; $f.newv = newv; $f.op = op; $f.pv = pv; $f.u = u; $f.ut = ut; $f.v = v; $f.z = z; $f.$s = $s; $f.$r = $r; return $f;
 28520  	};
 28521  	decodeState.prototype.array = function(v) { return this.$val.array(v); };
 28522  	decodeState.ptr.prototype.object = function(v) {
 28523  		var _1, _2, _3, _arg, _arg$1, _i, _i$1, _r$10, _r$11, _r$12, _r$13, _r$14, _r$15, _r$16, _r$17, _r$18, _r$19, _r$20, _r$21, _r$22, _r$23, _r$24, _r$25, _r$26, _r$27, _r$28, _r$29, _r$3, _r$30, _r$31, _r$32, _r$33, _r$34, _r$35, _r$36, _r$37, _r$38, _r$39, _r$4, _r$40, _r$41, _r$42, _r$43, _r$44, _r$45, _r$46, _r$47, _r$48, _r$49, _r$5, _r$50, _r$51, _r$52, _r$53, _r$54, _r$55, _r$56, _r$57, _r$58, _r$59, _r$6, _r$60, _r$61, _r$62, _r$63, _r$64, _r$65, _r$66, _r$7, _r$8, _r$9, _ref, _ref$1, _ref$2, _tuple, _tuple$1, _tuple$2, _tuple$3, _v, _v$1, _v$2, _v$3, d, destring, elemType, err, err$1, err$2, f, ff, fields, i, i$1, item, key, kt, kv, mapElem, n, n$1, ok, op, pv, qv, qv$1, qv$2, s, s$1, start, subv, t, u, ut, v, $s, $r;
 28524  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _2 = $f._2; _3 = $f._3; _arg = $f._arg; _arg$1 = $f._arg$1; _i = $f._i; _i$1 = $f._i$1; _r$10 = $f._r$10; _r$11 = $f._r$11; _r$12 = $f._r$12; _r$13 = $f._r$13; _r$14 = $f._r$14; _r$15 = $f._r$15; _r$16 = $f._r$16; _r$17 = $f._r$17; _r$18 = $f._r$18; _r$19 = $f._r$19; _r$20 = $f._r$20; _r$21 = $f._r$21; _r$22 = $f._r$22; _r$23 = $f._r$23; _r$24 = $f._r$24; _r$25 = $f._r$25; _r$26 = $f._r$26; _r$27 = $f._r$27; _r$28 = $f._r$28; _r$29 = $f._r$29; _r$3 = $f._r$3; _r$30 = $f._r$30; _r$31 = $f._r$31; _r$32 = $f._r$32; _r$33 = $f._r$33; _r$34 = $f._r$34; _r$35 = $f._r$35; _r$36 = $f._r$36; _r$37 = $f._r$37; _r$38 = $f._r$38; _r$39 = $f._r$39; _r$4 = $f._r$4; _r$40 = $f._r$40; _r$41 = $f._r$41; _r$42 = $f._r$42; _r$43 = $f._r$43; _r$44 = $f._r$44; _r$45 = $f._r$45; _r$46 = $f._r$46; _r$47 = $f._r$47; _r$48 = $f._r$48; _r$49 = $f._r$49; _r$5 = $f._r$5; _r$50 = $f._r$50; _r$51 = $f._r$51; _r$52 = $f._r$52; _r$53 = $f._r$53; _r$54 = $f._r$54; _r$55 = $f._r$55; _r$56 = $f._r$56; _r$57 = $f._r$57; _r$58 = $f._r$58; _r$59 = $f._r$59; _r$6 = $f._r$6; _r$60 = $f._r$60; _r$61 = $f._r$61; _r$62 = $f._r$62; _r$63 = $f._r$63; _r$64 = $f._r$64; _r$65 = $f._r$65; _r$66 = $f._r$66; _r$7 = $f._r$7; _r$8 = $f._r$8; _r$9 = $f._r$9; _ref = $f._ref; _ref$1 = $f._ref$1; _ref$2 = $f._ref$2; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; _v = $f._v; _v$1 = $f._v$1; _v$2 = $f._v$2; _v$3 = $f._v$3; d = $f.d; destring = $f.destring; elemType = $f.elemType; err = $f.err; err$1 = $f.err$1; err$2 = $f.err$2; f = $f.f; ff = $f.ff; fields = $f.fields; i = $f.i; i$1 = $f.i$1; item = $f.item; key = $f.key; kt = $f.kt; kv = $f.kv; mapElem = $f.mapElem; n = $f.n; n$1 = $f.n$1; ok = $f.ok; op = $f.op; pv = $f.pv; qv = $f.qv; qv$1 = $f.qv$1; qv$2 = $f.qv$2; s = $f.s; s$1 = $f.s$1; start = $f.start; subv = $f.subv; t = $f.t; u = $f.u; ut = $f.ut; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 28525  		d = this;
 28526  		_r$3 = d.indirect($clone(v, reflect.Value), false); /* */ $s = 1; case 1: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 28527  		_tuple = _r$3;
 28528  		u = _tuple[0];
 28529  		ut = _tuple[1];
 28530  		pv = _tuple[2];
 28531  		/* */ if (!($interfaceIsEqual(u, $ifaceNil))) { $s = 2; continue; }
 28532  		/* */ $s = 3; continue;
 28533  		/* if (!($interfaceIsEqual(u, $ifaceNil))) { */ case 2:
 28534  			d.off = d.off - (1) >> 0;
 28535  			_r$4 = d.next(); /* */ $s = 4; case 4: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 28536  			_r$5 = u.UnmarshalJSON(_r$4); /* */ $s = 5; case 5: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
 28537  			err = _r$5;
 28538  			if (!($interfaceIsEqual(err, $ifaceNil))) {
 28539  				d.error(err);
 28540  			}
 28541  			$s = -1; return;
 28542  		/* } */ case 3:
 28543  		/* */ if (!($interfaceIsEqual(ut, $ifaceNil))) { $s = 6; continue; }
 28544  		/* */ $s = 7; continue;
 28545  		/* if (!($interfaceIsEqual(ut, $ifaceNil))) { */ case 6:
 28546  			_r$6 = $clone(v, reflect.Value).Type(); /* */ $s = 8; case 8: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
 28547  			$r = d.saveError(new UnmarshalTypeError.ptr("object", _r$6, (new $Int64(0, d.off)), "", "")); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 28548  			d.off = d.off - (1) >> 0;
 28549  			_r$7 = d.next(); /* */ $s = 10; case 10: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
 28550  			_r$7;
 28551  			$s = -1; return;
 28552  		/* } */ case 7:
 28553  		v = pv;
 28554  		if (!($clone(v, reflect.Value).Kind() === 20)) { _v = false; $s = 13; continue s; }
 28555  		_r$8 = $clone(v, reflect.Value).NumMethod(); /* */ $s = 14; case 14: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
 28556  		_v = _r$8 === 0; case 13:
 28557  		/* */ if (_v) { $s = 11; continue; }
 28558  		/* */ $s = 12; continue;
 28559  		/* if (_v) { */ case 11:
 28560  			_r$9 = d.objectInterface(); /* */ $s = 15; case 15: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 28561  			_r$10 = reflect.ValueOf(new mapType(_r$9)); /* */ $s = 16; case 16: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
 28562  			$r = $clone(v, reflect.Value).Set($clone(_r$10, reflect.Value)); /* */ $s = 17; case 17: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 28563  			$s = -1; return;
 28564  		/* } */ case 12:
 28565  			_1 = $clone(v, reflect.Value).Kind();
 28566  			/* */ if (_1 === (21)) { $s = 19; continue; }
 28567  			/* */ if (_1 === (25)) { $s = 20; continue; }
 28568  			/* */ $s = 21; continue;
 28569  			/* if (_1 === (21)) { */ case 19:
 28570  				_r$11 = $clone(v, reflect.Value).Type(); /* */ $s = 23; case 23: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; }
 28571  				t = _r$11;
 28572  					_r$12 = t.Key(); /* */ $s = 25; case 25: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; }
 28573  					_r$13 = _r$12.Kind(); /* */ $s = 26; case 26: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; }
 28574  					_2 = _r$13;
 28575  					/* */ if ((_2 === (24)) || (_2 === (2)) || (_2 === (3)) || (_2 === (4)) || (_2 === (5)) || (_2 === (6)) || (_2 === (7)) || (_2 === (8)) || (_2 === (9)) || (_2 === (10)) || (_2 === (11)) || (_2 === (12))) { $s = 27; continue; }
 28576  					_r$14 = t.Key(); /* */ $s = 30; case 30: if($c) { $c = false; _r$14 = _r$14.$blk(); } if (_r$14 && _r$14.$blk !== undefined) { break s; }
 28577  					_r$15 = reflect.PtrTo(_r$14); /* */ $s = 31; case 31: if($c) { $c = false; _r$15 = _r$15.$blk(); } if (_r$15 && _r$15.$blk !== undefined) { break s; }
 28578  					_r$16 = _r$15.Implements(textUnmarshalerType); /* */ $s = 32; case 32: if($c) { $c = false; _r$16 = _r$16.$blk(); } if (_r$16 && _r$16.$blk !== undefined) { break s; }
 28579  					/* */ if (!_r$16) { $s = 28; continue; }
 28580  					/* */ $s = 29; continue;
 28581  					/* if ((_2 === (24)) || (_2 === (2)) || (_2 === (3)) || (_2 === (4)) || (_2 === (5)) || (_2 === (6)) || (_2 === (7)) || (_2 === (8)) || (_2 === (9)) || (_2 === (10)) || (_2 === (11)) || (_2 === (12))) { */ case 27:
 28582  						$s = 29; continue;
 28583  					/* } else if (!_r$16) { */ case 28:
 28584  						_r$17 = $clone(v, reflect.Value).Type(); /* */ $s = 33; case 33: if($c) { $c = false; _r$17 = _r$17.$blk(); } if (_r$17 && _r$17.$blk !== undefined) { break s; }
 28585  						$r = d.saveError(new UnmarshalTypeError.ptr("object", _r$17, (new $Int64(0, d.off)), "", "")); /* */ $s = 34; case 34: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 28586  						d.off = d.off - (1) >> 0;
 28587  						_r$18 = d.next(); /* */ $s = 35; case 35: if($c) { $c = false; _r$18 = _r$18.$blk(); } if (_r$18 && _r$18.$blk !== undefined) { break s; }
 28588  						_r$18;
 28589  						$s = -1; return;
 28590  					/* } */ case 29:
 28591  				case 24:
 28592  				/* */ if ($clone(v, reflect.Value).IsNil()) { $s = 36; continue; }
 28593  				/* */ $s = 37; continue;
 28594  				/* if ($clone(v, reflect.Value).IsNil()) { */ case 36:
 28595  					_r$19 = reflect.MakeMap(t); /* */ $s = 38; case 38: if($c) { $c = false; _r$19 = _r$19.$blk(); } if (_r$19 && _r$19.$blk !== undefined) { break s; }
 28596  					$r = $clone(v, reflect.Value).Set($clone(_r$19, reflect.Value)); /* */ $s = 39; case 39: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 28597  				/* } */ case 37:
 28598  				$s = 22; continue;
 28599  			/* } else if (_1 === (25)) { */ case 20:
 28600  				$s = 22; continue;
 28601  			/* } else { */ case 21:
 28602  				_r$20 = $clone(v, reflect.Value).Type(); /* */ $s = 40; case 40: if($c) { $c = false; _r$20 = _r$20.$blk(); } if (_r$20 && _r$20.$blk !== undefined) { break s; }
 28603  				$r = d.saveError(new UnmarshalTypeError.ptr("object", _r$20, (new $Int64(0, d.off)), "", "")); /* */ $s = 41; case 41: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 28604  				d.off = d.off - (1) >> 0;
 28605  				_r$21 = d.next(); /* */ $s = 42; case 42: if($c) { $c = false; _r$21 = _r$21.$blk(); } if (_r$21 && _r$21.$blk !== undefined) { break s; }
 28606  				_r$21;
 28607  				$s = -1; return;
 28608  			/* } */ case 22:
 28609  		case 18:
 28610  		mapElem = new reflect.Value.ptr(ptrType$5.nil, 0, 0);
 28611  		/* while (true) { */ case 43:
 28612  			_r$22 = d.scanWhile(9); /* */ $s = 45; case 45: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; }
 28613  			op = _r$22;
 28614  			if (op === 5) {
 28615  				/* break; */ $s = 44; continue;
 28616  			}
 28617  			if (!((op === 1))) {
 28618  				d.error(errPhase);
 28619  			}
 28620  			start = d.off - 1 >> 0;
 28621  			_r$23 = d.scanWhile(0); /* */ $s = 46; case 46: if($c) { $c = false; _r$23 = _r$23.$blk(); } if (_r$23 && _r$23.$blk !== undefined) { break s; }
 28622  			op = _r$23;
 28623  			item = $subslice(d.data, start, (d.off - 1 >> 0));
 28624  			_tuple$1 = unquoteBytes(item);
 28625  			key = _tuple$1[0];
 28626  			ok = _tuple$1[1];
 28627  			if (!ok) {
 28628  				d.error(errPhase);
 28629  			}
 28630  			subv = new reflect.Value.ptr(ptrType$5.nil, 0, 0);
 28631  			destring = false;
 28632  			/* */ if ($clone(v, reflect.Value).Kind() === 21) { $s = 47; continue; }
 28633  			/* */ $s = 48; continue;
 28634  			/* if ($clone(v, reflect.Value).Kind() === 21) { */ case 47:
 28635  				_r$24 = $clone(v, reflect.Value).Type(); /* */ $s = 50; case 50: if($c) { $c = false; _r$24 = _r$24.$blk(); } if (_r$24 && _r$24.$blk !== undefined) { break s; }
 28636  				_r$25 = _r$24.Elem(); /* */ $s = 51; case 51: if($c) { $c = false; _r$25 = _r$25.$blk(); } if (_r$25 && _r$25.$blk !== undefined) { break s; }
 28637  				elemType = _r$25;
 28638  				/* */ if (!$clone(mapElem, reflect.Value).IsValid()) { $s = 52; continue; }
 28639  				/* */ $s = 53; continue;
 28640  				/* if (!$clone(mapElem, reflect.Value).IsValid()) { */ case 52:
 28641  					_r$26 = reflect.New(elemType); /* */ $s = 55; case 55: if($c) { $c = false; _r$26 = _r$26.$blk(); } if (_r$26 && _r$26.$blk !== undefined) { break s; }
 28642  					_r$27 = $clone(_r$26, reflect.Value).Elem(); /* */ $s = 56; case 56: if($c) { $c = false; _r$27 = _r$27.$blk(); } if (_r$27 && _r$27.$blk !== undefined) { break s; }
 28643  					mapElem = _r$27;
 28644  					$s = 54; continue;
 28645  				/* } else { */ case 53:
 28646  					_r$28 = reflect.Zero(elemType); /* */ $s = 57; case 57: if($c) { $c = false; _r$28 = _r$28.$blk(); } if (_r$28 && _r$28.$blk !== undefined) { break s; }
 28647  					$r = $clone(mapElem, reflect.Value).Set($clone(_r$28, reflect.Value)); /* */ $s = 58; case 58: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 28648  				/* } */ case 54:
 28649  				subv = mapElem;
 28650  				$s = 49; continue;
 28651  			/* } else { */ case 48:
 28652  				f = ptrType$6.nil;
 28653  				_r$29 = $clone(v, reflect.Value).Type(); /* */ $s = 59; case 59: if($c) { $c = false; _r$29 = _r$29.$blk(); } if (_r$29 && _r$29.$blk !== undefined) { break s; }
 28654  				_r$30 = cachedTypeFields(_r$29); /* */ $s = 60; case 60: if($c) { $c = false; _r$30 = _r$30.$blk(); } if (_r$30 && _r$30.$blk !== undefined) { break s; }
 28655  				fields = _r$30;
 28656  				_ref = fields;
 28657  				_i = 0;
 28658  				/* while (true) { */ case 61:
 28659  					/* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 62; continue; }
 28660  					i = _i;
 28661  					ff = ((i < 0 || i >= fields.$length) ? ($throwRuntimeError("index out of range"), undefined) : fields.$array[fields.$offset + i]);
 28662  					if (bytes.Equal(ff.nameBytes, key)) {
 28663  						f = ff;
 28664  						/* break; */ $s = 62; continue;
 28665  					}
 28666  					if (!(f === ptrType$6.nil)) { _v$1 = false; $s = 65; continue s; }
 28667  					_r$31 = ff.equalFold(ff.nameBytes, key); /* */ $s = 66; case 66: if($c) { $c = false; _r$31 = _r$31.$blk(); } if (_r$31 && _r$31.$blk !== undefined) { break s; }
 28668  					_v$1 = _r$31; case 65:
 28669  					/* */ if (_v$1) { $s = 63; continue; }
 28670  					/* */ $s = 64; continue;
 28671  					/* if (_v$1) { */ case 63:
 28672  						f = ff;
 28673  					/* } */ case 64:
 28674  					_i++;
 28675  				/* } */ $s = 61; continue; case 62:
 28676  				/* */ if (!(f === ptrType$6.nil)) { $s = 67; continue; }
 28677  				/* */ if (d.disallowUnknownFields) { $s = 68; continue; }
 28678  				/* */ $s = 69; continue;
 28679  				/* if (!(f === ptrType$6.nil)) { */ case 67:
 28680  					subv = v;
 28681  					destring = f.quoted;
 28682  					_ref$1 = f.index;
 28683  					_i$1 = 0;
 28684  					/* while (true) { */ case 70:
 28685  						/* if (!(_i$1 < _ref$1.$length)) { break; } */ if(!(_i$1 < _ref$1.$length)) { $s = 71; continue; }
 28686  						i$1 = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]);
 28687  						/* */ if ($clone(subv, reflect.Value).Kind() === 22) { $s = 72; continue; }
 28688  						/* */ $s = 73; continue;
 28689  						/* if ($clone(subv, reflect.Value).Kind() === 22) { */ case 72:
 28690  							/* */ if ($clone(subv, reflect.Value).IsNil()) { $s = 74; continue; }
 28691  							/* */ $s = 75; continue;
 28692  							/* if ($clone(subv, reflect.Value).IsNil()) { */ case 74:
 28693  								/* */ if (!$clone(subv, reflect.Value).CanSet()) { $s = 76; continue; }
 28694  								/* */ $s = 77; continue;
 28695  								/* if (!$clone(subv, reflect.Value).CanSet()) { */ case 76:
 28696  									_r$32 = $clone(subv, reflect.Value).Type(); /* */ $s = 78; case 78: if($c) { $c = false; _r$32 = _r$32.$blk(); } if (_r$32 && _r$32.$blk !== undefined) { break s; }
 28697  									_r$33 = _r$32.Elem(); /* */ $s = 79; case 79: if($c) { $c = false; _r$33 = _r$33.$blk(); } if (_r$33 && _r$33.$blk !== undefined) { break s; }
 28698  									_arg = _r$33;
 28699  									_r$34 = fmt.Errorf("json: cannot set embedded pointer to unexported struct: %v", new sliceType([_arg])); /* */ $s = 80; case 80: if($c) { $c = false; _r$34 = _r$34.$blk(); } if (_r$34 && _r$34.$blk !== undefined) { break s; }
 28700  									$r = d.saveError(_r$34); /* */ $s = 81; case 81: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 28701  									subv = new reflect.Value.ptr(ptrType$5.nil, 0, 0);
 28702  									destring = false;
 28703  									/* break; */ $s = 71; continue;
 28704  								/* } */ case 77:
 28705  								_r$35 = $clone(subv, reflect.Value).Type(); /* */ $s = 82; case 82: if($c) { $c = false; _r$35 = _r$35.$blk(); } if (_r$35 && _r$35.$blk !== undefined) { break s; }
 28706  								_r$36 = _r$35.Elem(); /* */ $s = 83; case 83: if($c) { $c = false; _r$36 = _r$36.$blk(); } if (_r$36 && _r$36.$blk !== undefined) { break s; }
 28707  								_r$37 = reflect.New(_r$36); /* */ $s = 84; case 84: if($c) { $c = false; _r$37 = _r$37.$blk(); } if (_r$37 && _r$37.$blk !== undefined) { break s; }
 28708  								$r = $clone(subv, reflect.Value).Set($clone(_r$37, reflect.Value)); /* */ $s = 85; case 85: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 28709  							/* } */ case 75:
 28710  							_r$38 = $clone(subv, reflect.Value).Elem(); /* */ $s = 86; case 86: if($c) { $c = false; _r$38 = _r$38.$blk(); } if (_r$38 && _r$38.$blk !== undefined) { break s; }
 28711  							subv = _r$38;
 28712  						/* } */ case 73:
 28713  						_r$39 = $clone(subv, reflect.Value).Field(i$1); /* */ $s = 87; case 87: if($c) { $c = false; _r$39 = _r$39.$blk(); } if (_r$39 && _r$39.$blk !== undefined) { break s; }
 28714  						subv = _r$39;
 28715  						_i$1++;
 28716  					/* } */ $s = 70; continue; case 71:
 28717  					d.errorContext.Field = f.name;
 28718  					_r$40 = $clone(v, reflect.Value).Type(); /* */ $s = 88; case 88: if($c) { $c = false; _r$40 = _r$40.$blk(); } if (_r$40 && _r$40.$blk !== undefined) { break s; }
 28719  					_r$41 = _r$40.Name(); /* */ $s = 89; case 89: if($c) { $c = false; _r$41 = _r$41.$blk(); } if (_r$41 && _r$41.$blk !== undefined) { break s; }
 28720  					d.errorContext.Struct = _r$41;
 28721  					$s = 69; continue;
 28722  				/* } else if (d.disallowUnknownFields) { */ case 68:
 28723  					_r$42 = fmt.Errorf("json: unknown field %q", new sliceType([key])); /* */ $s = 90; case 90: if($c) { $c = false; _r$42 = _r$42.$blk(); } if (_r$42 && _r$42.$blk !== undefined) { break s; }
 28724  					$r = d.saveError(_r$42); /* */ $s = 91; case 91: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 28725  				/* } */ case 69:
 28726  			/* } */ case 49:
 28727  			/* */ if (op === 9) { $s = 92; continue; }
 28728  			/* */ $s = 93; continue;
 28729  			/* if (op === 9) { */ case 92:
 28730  				_r$43 = d.scanWhile(9); /* */ $s = 94; case 94: if($c) { $c = false; _r$43 = _r$43.$blk(); } if (_r$43 && _r$43.$blk !== undefined) { break s; }
 28731  				op = _r$43;
 28732  			/* } */ case 93:
 28733  			if (!((op === 3))) {
 28734  				d.error(errPhase);
 28735  			}
 28736  			/* */ if (destring) { $s = 95; continue; }
 28737  			/* */ $s = 96; continue;
 28738  			/* if (destring) { */ case 95:
 28739  				_r$44 = d.valueQuoted(); /* */ $s = 98; case 98: if($c) { $c = false; _r$44 = _r$44.$blk(); } if (_r$44 && _r$44.$blk !== undefined) { break s; }
 28740  				_ref$2 = _r$44;
 28741  				/* */ if (_ref$2 === $ifaceNil) { $s = 99; continue; }
 28742  				/* */ if ($assertType(_ref$2, $String, true)[1]) { $s = 100; continue; }
 28743  				/* */ $s = 101; continue;
 28744  				/* if (_ref$2 === $ifaceNil) { */ case 99:
 28745  					qv = _ref$2;
 28746  					$r = d.literalStore(nullLiteral, $clone(subv, reflect.Value), false); /* */ $s = 103; case 103: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 28747  					$s = 102; continue;
 28748  				/* } else if ($assertType(_ref$2, $String, true)[1]) { */ case 100:
 28749  					qv$1 = _ref$2.$val;
 28750  					$r = d.literalStore((new sliceType$1($stringToBytes(qv$1))), $clone(subv, reflect.Value), true); /* */ $s = 104; case 104: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 28751  					$s = 102; continue;
 28752  				/* } else { */ case 101:
 28753  					qv$2 = _ref$2;
 28754  					_r$45 = $clone(subv, reflect.Value).Type(); /* */ $s = 105; case 105: if($c) { $c = false; _r$45 = _r$45.$blk(); } if (_r$45 && _r$45.$blk !== undefined) { break s; }
 28755  					_arg$1 = _r$45;
 28756  					_r$46 = fmt.Errorf("json: invalid use of ,string struct tag, trying to unmarshal unquoted value into %v", new sliceType([_arg$1])); /* */ $s = 106; case 106: if($c) { $c = false; _r$46 = _r$46.$blk(); } if (_r$46 && _r$46.$blk !== undefined) { break s; }
 28757  					$r = d.saveError(_r$46); /* */ $s = 107; case 107: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 28758  				/* } */ case 102:
 28759  				$s = 97; continue;
 28760  			/* } else { */ case 96:
 28761  				$r = d.value($clone(subv, reflect.Value)); /* */ $s = 108; case 108: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 28762  			/* } */ case 97:
 28763  			/* */ if ($clone(v, reflect.Value).Kind() === 21) { $s = 109; continue; }
 28764  			/* */ $s = 110; continue;
 28765  			/* if ($clone(v, reflect.Value).Kind() === 21) { */ case 109:
 28766  				_r$47 = $clone(v, reflect.Value).Type(); /* */ $s = 111; case 111: if($c) { $c = false; _r$47 = _r$47.$blk(); } if (_r$47 && _r$47.$blk !== undefined) { break s; }
 28767  				_r$48 = _r$47.Key(); /* */ $s = 112; case 112: if($c) { $c = false; _r$48 = _r$48.$blk(); } if (_r$48 && _r$48.$blk !== undefined) { break s; }
 28768  				kt = _r$48;
 28769  				kv = new reflect.Value.ptr(ptrType$5.nil, 0, 0);
 28770  					_r$49 = kt.Kind(); /* */ $s = 118; case 118: if($c) { $c = false; _r$49 = _r$49.$blk(); } if (_r$49 && _r$49.$blk !== undefined) { break s; }
 28771  					/* */ if ((_r$49 === 24)) { $s = 114; continue; }
 28772  					_r$50 = reflect.PtrTo(kt).Implements(textUnmarshalerType); /* */ $s = 119; case 119: if($c) { $c = false; _r$50 = _r$50.$blk(); } if (_r$50 && _r$50.$blk !== undefined) { break s; }
 28773  					/* */ if (_r$50) { $s = 115; continue; }
 28774  					/* */ $s = 116; continue;
 28775  					/* if ((_r$49 === 24)) { */ case 114:
 28776  						_r$51 = reflect.ValueOf(key); /* */ $s = 120; case 120: if($c) { $c = false; _r$51 = _r$51.$blk(); } if (_r$51 && _r$51.$blk !== undefined) { break s; }
 28777  						_r$52 = $clone(_r$51, reflect.Value).Convert(kt); /* */ $s = 121; case 121: if($c) { $c = false; _r$52 = _r$52.$blk(); } if (_r$52 && _r$52.$blk !== undefined) { break s; }
 28778  						kv = _r$52;
 28779  						$s = 117; continue;
 28780  					/* } else if (_r$50) { */ case 115:
 28781  						_r$53 = $clone(v, reflect.Value).Type(); /* */ $s = 122; case 122: if($c) { $c = false; _r$53 = _r$53.$blk(); } if (_r$53 && _r$53.$blk !== undefined) { break s; }
 28782  						_r$54 = _r$53.Key(); /* */ $s = 123; case 123: if($c) { $c = false; _r$54 = _r$54.$blk(); } if (_r$54 && _r$54.$blk !== undefined) { break s; }
 28783  						_r$55 = reflect.New(_r$54); /* */ $s = 124; case 124: if($c) { $c = false; _r$55 = _r$55.$blk(); } if (_r$55 && _r$55.$blk !== undefined) { break s; }
 28784  						kv = _r$55;
 28785  						$r = d.literalStore(item, $clone(kv, reflect.Value), true); /* */ $s = 125; case 125: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 28786  						_r$56 = $clone(kv, reflect.Value).Elem(); /* */ $s = 126; case 126: if($c) { $c = false; _r$56 = _r$56.$blk(); } if (_r$56 && _r$56.$blk !== undefined) { break s; }
 28787  						kv = _r$56;
 28788  						$s = 117; continue;
 28789  					/* } else { */ case 116:
 28790  							_r$57 = kt.Kind(); /* */ $s = 128; case 128: if($c) { $c = false; _r$57 = _r$57.$blk(); } if (_r$57 && _r$57.$blk !== undefined) { break s; }
 28791  							_3 = _r$57;
 28792  							/* */ if ((_3 === (2)) || (_3 === (3)) || (_3 === (4)) || (_3 === (5)) || (_3 === (6))) { $s = 129; continue; }
 28793  							/* */ if ((_3 === (7)) || (_3 === (8)) || (_3 === (9)) || (_3 === (10)) || (_3 === (11)) || (_3 === (12))) { $s = 130; continue; }
 28794  							/* */ $s = 131; continue;
 28795  							/* if ((_3 === (2)) || (_3 === (3)) || (_3 === (4)) || (_3 === (5)) || (_3 === (6))) { */ case 129:
 28796  								s = ($bytesToString(key));
 28797  								_tuple$2 = strconv.ParseInt(s, 10, 64);
 28798  								n = _tuple$2[0];
 28799  								err$1 = _tuple$2[1];
 28800  								if (!($interfaceIsEqual(err$1, $ifaceNil))) { _v$2 = true; $s = 135; continue s; }
 28801  								_r$58 = reflect.Zero(kt); /* */ $s = 136; case 136: if($c) { $c = false; _r$58 = _r$58.$blk(); } if (_r$58 && _r$58.$blk !== undefined) { break s; }
 28802  								_r$59 = $clone(_r$58, reflect.Value).OverflowInt(n); /* */ $s = 137; case 137: if($c) { $c = false; _r$59 = _r$59.$blk(); } if (_r$59 && _r$59.$blk !== undefined) { break s; }
 28803  								_v$2 = _r$59; case 135:
 28804  								/* */ if (_v$2) { $s = 133; continue; }
 28805  								/* */ $s = 134; continue;
 28806  								/* if (_v$2) { */ case 133:
 28807  									d.saveError(new UnmarshalTypeError.ptr("number " + s, kt, (new $Int64(0, (start + 1 >> 0))), "", ""));
 28808  									$s = -1; return;
 28809  								/* } */ case 134:
 28810  								_r$60 = reflect.ValueOf(n); /* */ $s = 138; case 138: if($c) { $c = false; _r$60 = _r$60.$blk(); } if (_r$60 && _r$60.$blk !== undefined) { break s; }
 28811  								_r$61 = $clone(_r$60, reflect.Value).Convert(kt); /* */ $s = 139; case 139: if($c) { $c = false; _r$61 = _r$61.$blk(); } if (_r$61 && _r$61.$blk !== undefined) { break s; }
 28812  								kv = _r$61;
 28813  								$s = 132; continue;
 28814  							/* } else if ((_3 === (7)) || (_3 === (8)) || (_3 === (9)) || (_3 === (10)) || (_3 === (11)) || (_3 === (12))) { */ case 130:
 28815  								s$1 = ($bytesToString(key));
 28816  								_tuple$3 = strconv.ParseUint(s$1, 10, 64);
 28817  								n$1 = _tuple$3[0];
 28818  								err$2 = _tuple$3[1];
 28819  								if (!($interfaceIsEqual(err$2, $ifaceNil))) { _v$3 = true; $s = 142; continue s; }
 28820  								_r$62 = reflect.Zero(kt); /* */ $s = 143; case 143: if($c) { $c = false; _r$62 = _r$62.$blk(); } if (_r$62 && _r$62.$blk !== undefined) { break s; }
 28821  								_r$63 = $clone(_r$62, reflect.Value).OverflowUint(n$1); /* */ $s = 144; case 144: if($c) { $c = false; _r$63 = _r$63.$blk(); } if (_r$63 && _r$63.$blk !== undefined) { break s; }
 28822  								_v$3 = _r$63; case 142:
 28823  								/* */ if (_v$3) { $s = 140; continue; }
 28824  								/* */ $s = 141; continue;
 28825  								/* if (_v$3) { */ case 140:
 28826  									d.saveError(new UnmarshalTypeError.ptr("number " + s$1, kt, (new $Int64(0, (start + 1 >> 0))), "", ""));
 28827  									$s = -1; return;
 28828  								/* } */ case 141:
 28829  								_r$64 = reflect.ValueOf(n$1); /* */ $s = 145; case 145: if($c) { $c = false; _r$64 = _r$64.$blk(); } if (_r$64 && _r$64.$blk !== undefined) { break s; }
 28830  								_r$65 = $clone(_r$64, reflect.Value).Convert(kt); /* */ $s = 146; case 146: if($c) { $c = false; _r$65 = _r$65.$blk(); } if (_r$65 && _r$65.$blk !== undefined) { break s; }
 28831  								kv = _r$65;
 28832  								$s = 132; continue;
 28833  							/* } else { */ case 131:
 28834  								$panic(new $String("json: Unexpected key type"));
 28835  							/* } */ case 132:
 28836  						case 127:
 28837  					/* } */ case 117:
 28838  				case 113:
 28839  				$r = $clone(v, reflect.Value).SetMapIndex($clone(kv, reflect.Value), $clone(subv, reflect.Value)); /* */ $s = 147; case 147: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 28840  			/* } */ case 110:
 28841  			_r$66 = d.scanWhile(9); /* */ $s = 148; case 148: if($c) { $c = false; _r$66 = _r$66.$blk(); } if (_r$66 && _r$66.$blk !== undefined) { break s; }
 28842  			op = _r$66;
 28843  			if (op === 5) {
 28844  				/* break; */ $s = 44; continue;
 28845  			}
 28846  			if (!((op === 4))) {
 28847  				d.error(errPhase);
 28848  			}
 28849  			d.errorContext.Struct = "";
 28850  			d.errorContext.Field = "";
 28851  		/* } */ $s = 43; continue; case 44:
 28852  		$s = -1; return;
 28853  		/* */ } return; } if ($f === undefined) { $f = { $blk: decodeState.ptr.prototype.object }; } $f._1 = _1; $f._2 = _2; $f._3 = _3; $f._arg = _arg; $f._arg$1 = _arg$1; $f._i = _i; $f._i$1 = _i$1; $f._r$10 = _r$10; $f._r$11 = _r$11; $f._r$12 = _r$12; $f._r$13 = _r$13; $f._r$14 = _r$14; $f._r$15 = _r$15; $f._r$16 = _r$16; $f._r$17 = _r$17; $f._r$18 = _r$18; $f._r$19 = _r$19; $f._r$20 = _r$20; $f._r$21 = _r$21; $f._r$22 = _r$22; $f._r$23 = _r$23; $f._r$24 = _r$24; $f._r$25 = _r$25; $f._r$26 = _r$26; $f._r$27 = _r$27; $f._r$28 = _r$28; $f._r$29 = _r$29; $f._r$3 = _r$3; $f._r$30 = _r$30; $f._r$31 = _r$31; $f._r$32 = _r$32; $f._r$33 = _r$33; $f._r$34 = _r$34; $f._r$35 = _r$35; $f._r$36 = _r$36; $f._r$37 = _r$37; $f._r$38 = _r$38; $f._r$39 = _r$39; $f._r$4 = _r$4; $f._r$40 = _r$40; $f._r$41 = _r$41; $f._r$42 = _r$42; $f._r$43 = _r$43; $f._r$44 = _r$44; $f._r$45 = _r$45; $f._r$46 = _r$46; $f._r$47 = _r$47; $f._r$48 = _r$48; $f._r$49 = _r$49; $f._r$5 = _r$5; $f._r$50 = _r$50; $f._r$51 = _r$51; $f._r$52 = _r$52; $f._r$53 = _r$53; $f._r$54 = _r$54; $f._r$55 = _r$55; $f._r$56 = _r$56; $f._r$57 = _r$57; $f._r$58 = _r$58; $f._r$59 = _r$59; $f._r$6 = _r$6; $f._r$60 = _r$60; $f._r$61 = _r$61; $f._r$62 = _r$62; $f._r$63 = _r$63; $f._r$64 = _r$64; $f._r$65 = _r$65; $f._r$66 = _r$66; $f._r$7 = _r$7; $f._r$8 = _r$8; $f._r$9 = _r$9; $f._ref = _ref; $f._ref$1 = _ref$1; $f._ref$2 = _ref$2; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f._v = _v; $f._v$1 = _v$1; $f._v$2 = _v$2; $f._v$3 = _v$3; $f.d = d; $f.destring = destring; $f.elemType = elemType; $f.err = err; $f.err$1 = err$1; $f.err$2 = err$2; $f.f = f; $f.ff = ff; $f.fields = fields; $f.i = i; $f.i$1 = i$1; $f.item = item; $f.key = key; $f.kt = kt; $f.kv = kv; $f.mapElem = mapElem; $f.n = n; $f.n$1 = n$1; $f.ok = ok; $f.op = op; $f.pv = pv; $f.qv = qv; $f.qv$1 = qv$1; $f.qv$2 = qv$2; $f.s = s; $f.s$1 = s$1; $f.start = start; $f.subv = subv; $f.t = t; $f.u = u; $f.ut = ut; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
 28854  	};
 28855  	decodeState.prototype.object = function(v) { return this.$val.object(v); };
 28856  	decodeState.ptr.prototype.literal = function(v) {
 28857  		var _r$3, d, op, start, v, $s, $r;
 28858  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$3 = $f._r$3; d = $f.d; op = $f.op; start = $f.start; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 28859  		d = this;
 28860  		start = d.off - 1 >> 0;
 28861  		_r$3 = d.scanWhile(0); /* */ $s = 1; case 1: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 28862  		op = _r$3;
 28863  		d.off = d.off - (1) >> 0;
 28864  		d.scan.undo(op);
 28865  		$r = d.literalStore($subslice(d.data, start, d.off), $clone(v, reflect.Value), false); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 28866  		$s = -1; return;
 28867  		/* */ } return; } if ($f === undefined) { $f = { $blk: decodeState.ptr.prototype.literal }; } $f._r$3 = _r$3; $f.d = d; $f.op = op; $f.start = start; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
 28868  	};
 28869  	decodeState.prototype.literal = function(v) { return this.$val.literal(v); };
 28870  	decodeState.ptr.prototype.convertNumber = function(s) {
 28871  		var _tuple, d, err, f, s;
 28872  		d = this;
 28873  		if (d.useNumber) {
 28874  			return [new Number((s)), $ifaceNil];
 28875  		}
 28876  		_tuple = strconv.ParseFloat(s, 64);
 28877  		f = _tuple[0];
 28878  		err = _tuple[1];
 28879  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 28880  			return [$ifaceNil, new UnmarshalTypeError.ptr("number " + s, reflect.TypeOf(new $Float64(0)), (new $Int64(0, d.off)), "", "")];
 28881  		}
 28882  		return [new $Float64(f), $ifaceNil];
 28883  	};
 28884  	decodeState.prototype.convertNumber = function(s) { return this.$val.convertNumber(s); };
 28885  	decodeState.ptr.prototype.literalStore = function(item, v, fromQuoted) {
 28886  		var _1, _2, _3, _4, _5, _6, _arg, _arg$1, _arg$10, _arg$11, _arg$12, _arg$13, _arg$14, _arg$15, _arg$16, _arg$17, _arg$18, _arg$19, _arg$2, _arg$3, _arg$4, _arg$5, _arg$6, _arg$7, _arg$8, _arg$9, _r$10, _r$11, _r$12, _r$13, _r$14, _r$15, _r$16, _r$17, _r$18, _r$19, _r$20, _r$21, _r$22, _r$23, _r$24, _r$25, _r$26, _r$27, _r$28, _r$29, _r$3, _r$30, _r$31, _r$32, _r$33, _r$34, _r$35, _r$36, _r$37, _r$38, _r$39, _r$4, _r$40, _r$41, _r$42, _r$43, _r$44, _r$45, _r$46, _r$47, _r$48, _r$49, _r$5, _r$50, _r$6, _r$7, _r$8, _r$9, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, _tuple$5, _tuple$6, _tuple$7, _v, b, c, d, err, err$1, err$2, err$3, err$4, err$5, err$6, fromQuoted, isNull, item, n, n$1, n$2, n$3, n$4, ok, ok$1, pv, s, s$1, s$2, u, ut, v, val, value, $s, $r;
 28887  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _2 = $f._2; _3 = $f._3; _4 = $f._4; _5 = $f._5; _6 = $f._6; _arg = $f._arg; _arg$1 = $f._arg$1; _arg$10 = $f._arg$10; _arg$11 = $f._arg$11; _arg$12 = $f._arg$12; _arg$13 = $f._arg$13; _arg$14 = $f._arg$14; _arg$15 = $f._arg$15; _arg$16 = $f._arg$16; _arg$17 = $f._arg$17; _arg$18 = $f._arg$18; _arg$19 = $f._arg$19; _arg$2 = $f._arg$2; _arg$3 = $f._arg$3; _arg$4 = $f._arg$4; _arg$5 = $f._arg$5; _arg$6 = $f._arg$6; _arg$7 = $f._arg$7; _arg$8 = $f._arg$8; _arg$9 = $f._arg$9; _r$10 = $f._r$10; _r$11 = $f._r$11; _r$12 = $f._r$12; _r$13 = $f._r$13; _r$14 = $f._r$14; _r$15 = $f._r$15; _r$16 = $f._r$16; _r$17 = $f._r$17; _r$18 = $f._r$18; _r$19 = $f._r$19; _r$20 = $f._r$20; _r$21 = $f._r$21; _r$22 = $f._r$22; _r$23 = $f._r$23; _r$24 = $f._r$24; _r$25 = $f._r$25; _r$26 = $f._r$26; _r$27 = $f._r$27; _r$28 = $f._r$28; _r$29 = $f._r$29; _r$3 = $f._r$3; _r$30 = $f._r$30; _r$31 = $f._r$31; _r$32 = $f._r$32; _r$33 = $f._r$33; _r$34 = $f._r$34; _r$35 = $f._r$35; _r$36 = $f._r$36; _r$37 = $f._r$37; _r$38 = $f._r$38; _r$39 = $f._r$39; _r$4 = $f._r$4; _r$40 = $f._r$40; _r$41 = $f._r$41; _r$42 = $f._r$42; _r$43 = $f._r$43; _r$44 = $f._r$44; _r$45 = $f._r$45; _r$46 = $f._r$46; _r$47 = $f._r$47; _r$48 = $f._r$48; _r$49 = $f._r$49; _r$5 = $f._r$5; _r$50 = $f._r$50; _r$6 = $f._r$6; _r$7 = $f._r$7; _r$8 = $f._r$8; _r$9 = $f._r$9; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; _tuple$4 = $f._tuple$4; _tuple$5 = $f._tuple$5; _tuple$6 = $f._tuple$6; _tuple$7 = $f._tuple$7; _v = $f._v; b = $f.b; c = $f.c; d = $f.d; err = $f.err; err$1 = $f.err$1; err$2 = $f.err$2; err$3 = $f.err$3; err$4 = $f.err$4; err$5 = $f.err$5; err$6 = $f.err$6; fromQuoted = $f.fromQuoted; isNull = $f.isNull; item = $f.item; n = $f.n; n$1 = $f.n$1; n$2 = $f.n$2; n$3 = $f.n$3; n$4 = $f.n$4; ok = $f.ok; ok$1 = $f.ok$1; pv = $f.pv; s = $f.s; s$1 = $f.s$1; s$2 = $f.s$2; u = $f.u; ut = $f.ut; v = $f.v; val = $f.val; value = $f.value; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 28888  		d = this;
 28889  		/* */ if (item.$length === 0) { $s = 1; continue; }
 28890  		/* */ $s = 2; continue;
 28891  		/* if (item.$length === 0) { */ case 1:
 28892  			_arg = item;
 28893  			_r$3 = $clone(v, reflect.Value).Type(); /* */ $s = 3; case 3: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 28894  			_arg$1 = _r$3;
 28895  			_r$4 = fmt.Errorf("json: invalid use of ,string struct tag, trying to unmarshal %q into %v", new sliceType([_arg, _arg$1])); /* */ $s = 4; case 4: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 28896  			$r = d.saveError(_r$4); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 28897  			$s = -1; return;
 28898  		/* } */ case 2:
 28899  		isNull = (0 >= item.$length ? ($throwRuntimeError("index out of range"), undefined) : item.$array[item.$offset + 0]) === 110;
 28900  		_r$5 = d.indirect($clone(v, reflect.Value), isNull); /* */ $s = 6; case 6: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
 28901  		_tuple = _r$5;
 28902  		u = _tuple[0];
 28903  		ut = _tuple[1];
 28904  		pv = _tuple[2];
 28905  		/* */ if (!($interfaceIsEqual(u, $ifaceNil))) { $s = 7; continue; }
 28906  		/* */ $s = 8; continue;
 28907  		/* if (!($interfaceIsEqual(u, $ifaceNil))) { */ case 7:
 28908  			_r$6 = u.UnmarshalJSON(item); /* */ $s = 9; case 9: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
 28909  			err = _r$6;
 28910  			if (!($interfaceIsEqual(err, $ifaceNil))) {
 28911  				d.error(err);
 28912  			}
 28913  			$s = -1; return;
 28914  		/* } */ case 8:
 28915  		/* */ if (!($interfaceIsEqual(ut, $ifaceNil))) { $s = 10; continue; }
 28916  		/* */ $s = 11; continue;
 28917  		/* if (!($interfaceIsEqual(ut, $ifaceNil))) { */ case 10:
 28918  			/* */ if (!(((0 >= item.$length ? ($throwRuntimeError("index out of range"), undefined) : item.$array[item.$offset + 0]) === 34))) { $s = 12; continue; }
 28919  			/* */ $s = 13; continue;
 28920  			/* if (!(((0 >= item.$length ? ($throwRuntimeError("index out of range"), undefined) : item.$array[item.$offset + 0]) === 34))) { */ case 12:
 28921  				/* */ if (fromQuoted) { $s = 14; continue; }
 28922  				/* */ $s = 15; continue;
 28923  				/* if (fromQuoted) { */ case 14:
 28924  					_arg$2 = item;
 28925  					_r$7 = $clone(v, reflect.Value).Type(); /* */ $s = 17; case 17: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
 28926  					_arg$3 = _r$7;
 28927  					_r$8 = fmt.Errorf("json: invalid use of ,string struct tag, trying to unmarshal %q into %v", new sliceType([_arg$2, _arg$3])); /* */ $s = 18; case 18: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
 28928  					$r = d.saveError(_r$8); /* */ $s = 19; case 19: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 28929  					$s = 16; continue;
 28930  				/* } else { */ case 15:
 28931  					val = "";
 28932  					_1 = (0 >= item.$length ? ($throwRuntimeError("index out of range"), undefined) : item.$array[item.$offset + 0]);
 28933  					if (_1 === (110)) {
 28934  						val = "null";
 28935  					} else if ((_1 === (116)) || (_1 === (102))) {
 28936  						val = "bool";
 28937  					} else {
 28938  						val = "number";
 28939  					}
 28940  					_r$9 = $clone(v, reflect.Value).Type(); /* */ $s = 20; case 20: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 28941  					$r = d.saveError(new UnmarshalTypeError.ptr(val, _r$9, (new $Int64(0, d.off)), "", "")); /* */ $s = 21; case 21: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 28942  				/* } */ case 16:
 28943  				$s = -1; return;
 28944  			/* } */ case 13:
 28945  			_tuple$1 = unquoteBytes(item);
 28946  			s = _tuple$1[0];
 28947  			ok = _tuple$1[1];
 28948  			/* */ if (!ok) { $s = 22; continue; }
 28949  			/* */ $s = 23; continue;
 28950  			/* if (!ok) { */ case 22:
 28951  				/* */ if (fromQuoted) { $s = 24; continue; }
 28952  				/* */ $s = 25; continue;
 28953  				/* if (fromQuoted) { */ case 24:
 28954  					_arg$4 = item;
 28955  					_r$10 = $clone(v, reflect.Value).Type(); /* */ $s = 27; case 27: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
 28956  					_arg$5 = _r$10;
 28957  					_r$11 = fmt.Errorf("json: invalid use of ,string struct tag, trying to unmarshal %q into %v", new sliceType([_arg$4, _arg$5])); /* */ $s = 28; case 28: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; }
 28958  					$r = d.error(_r$11); /* */ $s = 29; case 29: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 28959  					$s = 26; continue;
 28960  				/* } else { */ case 25:
 28961  					d.error(errPhase);
 28962  				/* } */ case 26:
 28963  			/* } */ case 23:
 28964  			_r$12 = ut.UnmarshalText(s); /* */ $s = 30; case 30: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; }
 28965  			err$1 = _r$12;
 28966  			if (!($interfaceIsEqual(err$1, $ifaceNil))) {
 28967  				d.error(err$1);
 28968  			}
 28969  			$s = -1; return;
 28970  		/* } */ case 11:
 28971  		v = pv;
 28972  			c = (0 >= item.$length ? ($throwRuntimeError("index out of range"), undefined) : item.$array[item.$offset + 0]);
 28973  			_2 = c;
 28974  			/* */ if (_2 === (110)) { $s = 32; continue; }
 28975  			/* */ if ((_2 === (116)) || (_2 === (102))) { $s = 33; continue; }
 28976  			/* */ if (_2 === (34)) { $s = 34; continue; }
 28977  			/* */ $s = 35; continue;
 28978  			/* if (_2 === (110)) { */ case 32:
 28979  				/* */ if (fromQuoted && !(($bytesToString(item)) === "null")) { $s = 37; continue; }
 28980  				/* */ $s = 38; continue;
 28981  				/* if (fromQuoted && !(($bytesToString(item)) === "null")) { */ case 37:
 28982  					_arg$6 = item;
 28983  					_r$13 = $clone(v, reflect.Value).Type(); /* */ $s = 39; case 39: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; }
 28984  					_arg$7 = _r$13;
 28985  					_r$14 = fmt.Errorf("json: invalid use of ,string struct tag, trying to unmarshal %q into %v", new sliceType([_arg$6, _arg$7])); /* */ $s = 40; case 40: if($c) { $c = false; _r$14 = _r$14.$blk(); } if (_r$14 && _r$14.$blk !== undefined) { break s; }
 28986  					$r = d.saveError(_r$14); /* */ $s = 41; case 41: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 28987  					/* break; */ $s = 31; continue;
 28988  				/* } */ case 38:
 28989  					_3 = $clone(v, reflect.Value).Kind();
 28990  					/* */ if ((_3 === (20)) || (_3 === (22)) || (_3 === (21)) || (_3 === (23))) { $s = 43; continue; }
 28991  					/* */ $s = 44; continue;
 28992  					/* if ((_3 === (20)) || (_3 === (22)) || (_3 === (21)) || (_3 === (23))) { */ case 43:
 28993  						_r$15 = $clone(v, reflect.Value).Type(); /* */ $s = 45; case 45: if($c) { $c = false; _r$15 = _r$15.$blk(); } if (_r$15 && _r$15.$blk !== undefined) { break s; }
 28994  						_r$16 = reflect.Zero(_r$15); /* */ $s = 46; case 46: if($c) { $c = false; _r$16 = _r$16.$blk(); } if (_r$16 && _r$16.$blk !== undefined) { break s; }
 28995  						$r = $clone(v, reflect.Value).Set($clone(_r$16, reflect.Value)); /* */ $s = 47; case 47: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 28996  					/* } */ case 44:
 28997  				case 42:
 28998  				$s = 36; continue;
 28999  			/* } else if ((_2 === (116)) || (_2 === (102))) { */ case 33:
 29000  				value = (0 >= item.$length ? ($throwRuntimeError("index out of range"), undefined) : item.$array[item.$offset + 0]) === 116;
 29001  				/* */ if (fromQuoted && !(($bytesToString(item)) === "true") && !(($bytesToString(item)) === "false")) { $s = 48; continue; }
 29002  				/* */ $s = 49; continue;
 29003  				/* if (fromQuoted && !(($bytesToString(item)) === "true") && !(($bytesToString(item)) === "false")) { */ case 48:
 29004  					_arg$8 = item;
 29005  					_r$17 = $clone(v, reflect.Value).Type(); /* */ $s = 50; case 50: if($c) { $c = false; _r$17 = _r$17.$blk(); } if (_r$17 && _r$17.$blk !== undefined) { break s; }
 29006  					_arg$9 = _r$17;
 29007  					_r$18 = fmt.Errorf("json: invalid use of ,string struct tag, trying to unmarshal %q into %v", new sliceType([_arg$8, _arg$9])); /* */ $s = 51; case 51: if($c) { $c = false; _r$18 = _r$18.$blk(); } if (_r$18 && _r$18.$blk !== undefined) { break s; }
 29008  					$r = d.saveError(_r$18); /* */ $s = 52; case 52: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 29009  					/* break; */ $s = 31; continue;
 29010  				/* } */ case 49:
 29011  					_4 = $clone(v, reflect.Value).Kind();
 29012  					/* */ if (_4 === (1)) { $s = 54; continue; }
 29013  					/* */ if (_4 === (20)) { $s = 55; continue; }
 29014  					/* */ if (fromQuoted) { $s = 56; continue; }
 29015  					/* */ $s = 57; continue;
 29016  					/* if (_4 === (1)) { */ case 54:
 29017  						$clone(v, reflect.Value).SetBool(value);
 29018  						$s = 58; continue;
 29019  					/* } else if (_4 === (20)) { */ case 55:
 29020  						_r$19 = $clone(v, reflect.Value).NumMethod(); /* */ $s = 62; case 62: if($c) { $c = false; _r$19 = _r$19.$blk(); } if (_r$19 && _r$19.$blk !== undefined) { break s; }
 29021  						/* */ if (_r$19 === 0) { $s = 59; continue; }
 29022  						/* */ $s = 60; continue;
 29023  						/* if (_r$19 === 0) { */ case 59:
 29024  							_r$20 = reflect.ValueOf(new $Bool(value)); /* */ $s = 63; case 63: if($c) { $c = false; _r$20 = _r$20.$blk(); } if (_r$20 && _r$20.$blk !== undefined) { break s; }
 29025  							$r = $clone(v, reflect.Value).Set($clone(_r$20, reflect.Value)); /* */ $s = 64; case 64: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 29026  							$s = 61; continue;
 29027  						/* } else { */ case 60:
 29028  							_r$21 = $clone(v, reflect.Value).Type(); /* */ $s = 65; case 65: if($c) { $c = false; _r$21 = _r$21.$blk(); } if (_r$21 && _r$21.$blk !== undefined) { break s; }
 29029  							$r = d.saveError(new UnmarshalTypeError.ptr("bool", _r$21, (new $Int64(0, d.off)), "", "")); /* */ $s = 66; case 66: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 29030  						/* } */ case 61:
 29031  						$s = 58; continue;
 29032  					/* } else if (fromQuoted) { */ case 56:
 29033  						_arg$10 = item;
 29034  						_r$22 = $clone(v, reflect.Value).Type(); /* */ $s = 67; case 67: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; }
 29035  						_arg$11 = _r$22;
 29036  						_r$23 = fmt.Errorf("json: invalid use of ,string struct tag, trying to unmarshal %q into %v", new sliceType([_arg$10, _arg$11])); /* */ $s = 68; case 68: if($c) { $c = false; _r$23 = _r$23.$blk(); } if (_r$23 && _r$23.$blk !== undefined) { break s; }
 29037  						$r = d.saveError(_r$23); /* */ $s = 69; case 69: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 29038  						$s = 58; continue;
 29039  					/* } else { */ case 57:
 29040  						_r$24 = $clone(v, reflect.Value).Type(); /* */ $s = 70; case 70: if($c) { $c = false; _r$24 = _r$24.$blk(); } if (_r$24 && _r$24.$blk !== undefined) { break s; }
 29041  						$r = d.saveError(new UnmarshalTypeError.ptr("bool", _r$24, (new $Int64(0, d.off)), "", "")); /* */ $s = 71; case 71: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 29042  					/* } */ case 58:
 29043  				case 53:
 29044  				$s = 36; continue;
 29045  			/* } else if (_2 === (34)) { */ case 34:
 29046  				_tuple$2 = unquoteBytes(item);
 29047  				s$1 = _tuple$2[0];
 29048  				ok$1 = _tuple$2[1];
 29049  				/* */ if (!ok$1) { $s = 72; continue; }
 29050  				/* */ $s = 73; continue;
 29051  				/* if (!ok$1) { */ case 72:
 29052  					/* */ if (fromQuoted) { $s = 74; continue; }
 29053  					/* */ $s = 75; continue;
 29054  					/* if (fromQuoted) { */ case 74:
 29055  						_arg$12 = item;
 29056  						_r$25 = $clone(v, reflect.Value).Type(); /* */ $s = 77; case 77: if($c) { $c = false; _r$25 = _r$25.$blk(); } if (_r$25 && _r$25.$blk !== undefined) { break s; }
 29057  						_arg$13 = _r$25;
 29058  						_r$26 = fmt.Errorf("json: invalid use of ,string struct tag, trying to unmarshal %q into %v", new sliceType([_arg$12, _arg$13])); /* */ $s = 78; case 78: if($c) { $c = false; _r$26 = _r$26.$blk(); } if (_r$26 && _r$26.$blk !== undefined) { break s; }
 29059  						$r = d.error(_r$26); /* */ $s = 79; case 79: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 29060  						$s = 76; continue;
 29061  					/* } else { */ case 75:
 29062  						d.error(errPhase);
 29063  					/* } */ case 76:
 29064  				/* } */ case 73:
 29065  					_5 = $clone(v, reflect.Value).Kind();
 29066  					/* */ if (_5 === (23)) { $s = 81; continue; }
 29067  					/* */ if (_5 === (24)) { $s = 82; continue; }
 29068  					/* */ if (_5 === (20)) { $s = 83; continue; }
 29069  					/* */ $s = 84; continue;
 29070  					/* if (_5 === (23)) { */ case 81:
 29071  						_r$27 = $clone(v, reflect.Value).Type(); /* */ $s = 88; case 88: if($c) { $c = false; _r$27 = _r$27.$blk(); } if (_r$27 && _r$27.$blk !== undefined) { break s; }
 29072  						_r$28 = _r$27.Elem(); /* */ $s = 89; case 89: if($c) { $c = false; _r$28 = _r$28.$blk(); } if (_r$28 && _r$28.$blk !== undefined) { break s; }
 29073  						_r$29 = _r$28.Kind(); /* */ $s = 90; case 90: if($c) { $c = false; _r$29 = _r$29.$blk(); } if (_r$29 && _r$29.$blk !== undefined) { break s; }
 29074  						/* */ if (!((_r$29 === 8))) { $s = 86; continue; }
 29075  						/* */ $s = 87; continue;
 29076  						/* if (!((_r$29 === 8))) { */ case 86:
 29077  							_r$30 = $clone(v, reflect.Value).Type(); /* */ $s = 91; case 91: if($c) { $c = false; _r$30 = _r$30.$blk(); } if (_r$30 && _r$30.$blk !== undefined) { break s; }
 29078  							$r = d.saveError(new UnmarshalTypeError.ptr("string", _r$30, (new $Int64(0, d.off)), "", "")); /* */ $s = 92; case 92: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 29079  							/* break; */ $s = 80; continue;
 29080  						/* } */ case 87:
 29081  						b = $makeSlice(sliceType$1, base64.StdEncoding.DecodedLen(s$1.$length));
 29082  						_tuple$3 = base64.StdEncoding.Decode(b, s$1);
 29083  						n = _tuple$3[0];
 29084  						err$2 = _tuple$3[1];
 29085  						if (!($interfaceIsEqual(err$2, $ifaceNil))) {
 29086  							d.saveError(err$2);
 29087  							/* break; */ $s = 80; continue;
 29088  						}
 29089  						$r = $clone(v, reflect.Value).SetBytes($subslice(b, 0, n)); /* */ $s = 93; case 93: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 29090  						$s = 85; continue;
 29091  					/* } else if (_5 === (24)) { */ case 82:
 29092  						$clone(v, reflect.Value).SetString(($bytesToString(s$1)));
 29093  						$s = 85; continue;
 29094  					/* } else if (_5 === (20)) { */ case 83:
 29095  						_r$31 = $clone(v, reflect.Value).NumMethod(); /* */ $s = 97; case 97: if($c) { $c = false; _r$31 = _r$31.$blk(); } if (_r$31 && _r$31.$blk !== undefined) { break s; }
 29096  						/* */ if (_r$31 === 0) { $s = 94; continue; }
 29097  						/* */ $s = 95; continue;
 29098  						/* if (_r$31 === 0) { */ case 94:
 29099  							_r$32 = reflect.ValueOf(new $String(($bytesToString(s$1)))); /* */ $s = 98; case 98: if($c) { $c = false; _r$32 = _r$32.$blk(); } if (_r$32 && _r$32.$blk !== undefined) { break s; }
 29100  							$r = $clone(v, reflect.Value).Set($clone(_r$32, reflect.Value)); /* */ $s = 99; case 99: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 29101  							$s = 96; continue;
 29102  						/* } else { */ case 95:
 29103  							_r$33 = $clone(v, reflect.Value).Type(); /* */ $s = 100; case 100: if($c) { $c = false; _r$33 = _r$33.$blk(); } if (_r$33 && _r$33.$blk !== undefined) { break s; }
 29104  							$r = d.saveError(new UnmarshalTypeError.ptr("string", _r$33, (new $Int64(0, d.off)), "", "")); /* */ $s = 101; case 101: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 29105  						/* } */ case 96:
 29106  						$s = 85; continue;
 29107  					/* } else { */ case 84:
 29108  						_r$34 = $clone(v, reflect.Value).Type(); /* */ $s = 102; case 102: if($c) { $c = false; _r$34 = _r$34.$blk(); } if (_r$34 && _r$34.$blk !== undefined) { break s; }
 29109  						$r = d.saveError(new UnmarshalTypeError.ptr("string", _r$34, (new $Int64(0, d.off)), "", "")); /* */ $s = 103; case 103: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 29110  					/* } */ case 85:
 29111  				case 80:
 29112  				$s = 36; continue;
 29113  			/* } else { */ case 35:
 29114  				/* */ if (!((c === 45)) && (c < 48 || c > 57)) { $s = 104; continue; }
 29115  				/* */ $s = 105; continue;
 29116  				/* if (!((c === 45)) && (c < 48 || c > 57)) { */ case 104:
 29117  					/* */ if (fromQuoted) { $s = 106; continue; }
 29118  					/* */ $s = 107; continue;
 29119  					/* if (fromQuoted) { */ case 106:
 29120  						_arg$14 = item;
 29121  						_r$35 = $clone(v, reflect.Value).Type(); /* */ $s = 109; case 109: if($c) { $c = false; _r$35 = _r$35.$blk(); } if (_r$35 && _r$35.$blk !== undefined) { break s; }
 29122  						_arg$15 = _r$35;
 29123  						_r$36 = fmt.Errorf("json: invalid use of ,string struct tag, trying to unmarshal %q into %v", new sliceType([_arg$14, _arg$15])); /* */ $s = 110; case 110: if($c) { $c = false; _r$36 = _r$36.$blk(); } if (_r$36 && _r$36.$blk !== undefined) { break s; }
 29124  						$r = d.error(_r$36); /* */ $s = 111; case 111: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 29125  						$s = 108; continue;
 29126  					/* } else { */ case 107:
 29127  						d.error(errPhase);
 29128  					/* } */ case 108:
 29129  				/* } */ case 105:
 29130  				s$2 = ($bytesToString(item));
 29131  					_6 = $clone(v, reflect.Value).Kind();
 29132  					/* */ if (_6 === (20)) { $s = 113; continue; }
 29133  					/* */ if ((_6 === (2)) || (_6 === (3)) || (_6 === (4)) || (_6 === (5)) || (_6 === (6))) { $s = 114; continue; }
 29134  					/* */ if ((_6 === (7)) || (_6 === (8)) || (_6 === (9)) || (_6 === (10)) || (_6 === (11)) || (_6 === (12))) { $s = 115; continue; }
 29135  					/* */ if ((_6 === (13)) || (_6 === (14))) { $s = 116; continue; }
 29136  					/* */ $s = 117; continue;
 29137  					/* if (_6 === (20)) { */ case 113:
 29138  						_tuple$4 = d.convertNumber(s$2);
 29139  						n$1 = _tuple$4[0];
 29140  						err$3 = _tuple$4[1];
 29141  						if (!($interfaceIsEqual(err$3, $ifaceNil))) {
 29142  							d.saveError(err$3);
 29143  							/* break; */ $s = 112; continue;
 29144  						}
 29145  						_r$37 = $clone(v, reflect.Value).NumMethod(); /* */ $s = 121; case 121: if($c) { $c = false; _r$37 = _r$37.$blk(); } if (_r$37 && _r$37.$blk !== undefined) { break s; }
 29146  						/* */ if (!((_r$37 === 0))) { $s = 119; continue; }
 29147  						/* */ $s = 120; continue;
 29148  						/* if (!((_r$37 === 0))) { */ case 119:
 29149  							_r$38 = $clone(v, reflect.Value).Type(); /* */ $s = 122; case 122: if($c) { $c = false; _r$38 = _r$38.$blk(); } if (_r$38 && _r$38.$blk !== undefined) { break s; }
 29150  							$r = d.saveError(new UnmarshalTypeError.ptr("number", _r$38, (new $Int64(0, d.off)), "", "")); /* */ $s = 123; case 123: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 29151  							/* break; */ $s = 112; continue;
 29152  						/* } */ case 120:
 29153  						_r$39 = reflect.ValueOf(n$1); /* */ $s = 124; case 124: if($c) { $c = false; _r$39 = _r$39.$blk(); } if (_r$39 && _r$39.$blk !== undefined) { break s; }
 29154  						$r = $clone(v, reflect.Value).Set($clone(_r$39, reflect.Value)); /* */ $s = 125; case 125: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 29155  						$s = 118; continue;
 29156  					/* } else if ((_6 === (2)) || (_6 === (3)) || (_6 === (4)) || (_6 === (5)) || (_6 === (6))) { */ case 114:
 29157  						_tuple$5 = strconv.ParseInt(s$2, 10, 64);
 29158  						n$2 = _tuple$5[0];
 29159  						err$4 = _tuple$5[1];
 29160  						/* */ if (!($interfaceIsEqual(err$4, $ifaceNil)) || $clone(v, reflect.Value).OverflowInt(n$2)) { $s = 126; continue; }
 29161  						/* */ $s = 127; continue;
 29162  						/* if (!($interfaceIsEqual(err$4, $ifaceNil)) || $clone(v, reflect.Value).OverflowInt(n$2)) { */ case 126:
 29163  							_r$40 = $clone(v, reflect.Value).Type(); /* */ $s = 128; case 128: if($c) { $c = false; _r$40 = _r$40.$blk(); } if (_r$40 && _r$40.$blk !== undefined) { break s; }
 29164  							$r = d.saveError(new UnmarshalTypeError.ptr("number " + s$2, _r$40, (new $Int64(0, d.off)), "", "")); /* */ $s = 129; case 129: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 29165  							/* break; */ $s = 112; continue;
 29166  						/* } */ case 127:
 29167  						$clone(v, reflect.Value).SetInt(n$2);
 29168  						$s = 118; continue;
 29169  					/* } else if ((_6 === (7)) || (_6 === (8)) || (_6 === (9)) || (_6 === (10)) || (_6 === (11)) || (_6 === (12))) { */ case 115:
 29170  						_tuple$6 = strconv.ParseUint(s$2, 10, 64);
 29171  						n$3 = _tuple$6[0];
 29172  						err$5 = _tuple$6[1];
 29173  						/* */ if (!($interfaceIsEqual(err$5, $ifaceNil)) || $clone(v, reflect.Value).OverflowUint(n$3)) { $s = 130; continue; }
 29174  						/* */ $s = 131; continue;
 29175  						/* if (!($interfaceIsEqual(err$5, $ifaceNil)) || $clone(v, reflect.Value).OverflowUint(n$3)) { */ case 130:
 29176  							_r$41 = $clone(v, reflect.Value).Type(); /* */ $s = 132; case 132: if($c) { $c = false; _r$41 = _r$41.$blk(); } if (_r$41 && _r$41.$blk !== undefined) { break s; }
 29177  							$r = d.saveError(new UnmarshalTypeError.ptr("number " + s$2, _r$41, (new $Int64(0, d.off)), "", "")); /* */ $s = 133; case 133: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 29178  							/* break; */ $s = 112; continue;
 29179  						/* } */ case 131:
 29180  						$clone(v, reflect.Value).SetUint(n$3);
 29181  						$s = 118; continue;
 29182  					/* } else if ((_6 === (13)) || (_6 === (14))) { */ case 116:
 29183  						_arg$16 = s$2;
 29184  						_r$42 = $clone(v, reflect.Value).Type(); /* */ $s = 134; case 134: if($c) { $c = false; _r$42 = _r$42.$blk(); } if (_r$42 && _r$42.$blk !== undefined) { break s; }
 29185  						_r$43 = _r$42.Bits(); /* */ $s = 135; case 135: if($c) { $c = false; _r$43 = _r$43.$blk(); } if (_r$43 && _r$43.$blk !== undefined) { break s; }
 29186  						_arg$17 = _r$43;
 29187  						_r$44 = strconv.ParseFloat(_arg$16, _arg$17); /* */ $s = 136; case 136: if($c) { $c = false; _r$44 = _r$44.$blk(); } if (_r$44 && _r$44.$blk !== undefined) { break s; }
 29188  						_tuple$7 = _r$44;
 29189  						n$4 = _tuple$7[0];
 29190  						err$6 = _tuple$7[1];
 29191  						/* */ if (!($interfaceIsEqual(err$6, $ifaceNil)) || $clone(v, reflect.Value).OverflowFloat(n$4)) { $s = 137; continue; }
 29192  						/* */ $s = 138; continue;
 29193  						/* if (!($interfaceIsEqual(err$6, $ifaceNil)) || $clone(v, reflect.Value).OverflowFloat(n$4)) { */ case 137:
 29194  							_r$45 = $clone(v, reflect.Value).Type(); /* */ $s = 139; case 139: if($c) { $c = false; _r$45 = _r$45.$blk(); } if (_r$45 && _r$45.$blk !== undefined) { break s; }
 29195  							$r = d.saveError(new UnmarshalTypeError.ptr("number " + s$2, _r$45, (new $Int64(0, d.off)), "", "")); /* */ $s = 140; case 140: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 29196  							/* break; */ $s = 112; continue;
 29197  						/* } */ case 138:
 29198  						$clone(v, reflect.Value).SetFloat(n$4);
 29199  						$s = 118; continue;
 29200  					/* } else { */ case 117:
 29201  						if (!($clone(v, reflect.Value).Kind() === 24)) { _v = false; $s = 143; continue s; }
 29202  						_r$46 = $clone(v, reflect.Value).Type(); /* */ $s = 144; case 144: if($c) { $c = false; _r$46 = _r$46.$blk(); } if (_r$46 && _r$46.$blk !== undefined) { break s; }
 29203  						_v = $interfaceIsEqual(_r$46, numberType); case 143:
 29204  						/* */ if (_v) { $s = 141; continue; }
 29205  						/* */ $s = 142; continue;
 29206  						/* if (_v) { */ case 141:
 29207  							$clone(v, reflect.Value).SetString(s$2);
 29208  							/* */ if (!isValidNumber(s$2)) { $s = 145; continue; }
 29209  							/* */ $s = 146; continue;
 29210  							/* if (!isValidNumber(s$2)) { */ case 145:
 29211  								_r$47 = fmt.Errorf("json: invalid number literal, trying to unmarshal %q into Number", new sliceType([item])); /* */ $s = 147; case 147: if($c) { $c = false; _r$47 = _r$47.$blk(); } if (_r$47 && _r$47.$blk !== undefined) { break s; }
 29212  								$r = d.error(_r$47); /* */ $s = 148; case 148: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 29213  							/* } */ case 146:
 29214  							/* break; */ $s = 112; continue;
 29215  						/* } */ case 142:
 29216  						/* */ if (fromQuoted) { $s = 149; continue; }
 29217  						/* */ $s = 150; continue;
 29218  						/* if (fromQuoted) { */ case 149:
 29219  							_arg$18 = item;
 29220  							_r$48 = $clone(v, reflect.Value).Type(); /* */ $s = 152; case 152: if($c) { $c = false; _r$48 = _r$48.$blk(); } if (_r$48 && _r$48.$blk !== undefined) { break s; }
 29221  							_arg$19 = _r$48;
 29222  							_r$49 = fmt.Errorf("json: invalid use of ,string struct tag, trying to unmarshal %q into %v", new sliceType([_arg$18, _arg$19])); /* */ $s = 153; case 153: if($c) { $c = false; _r$49 = _r$49.$blk(); } if (_r$49 && _r$49.$blk !== undefined) { break s; }
 29223  							$r = d.error(_r$49); /* */ $s = 154; case 154: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 29224  							$s = 151; continue;
 29225  						/* } else { */ case 150:
 29226  							_r$50 = $clone(v, reflect.Value).Type(); /* */ $s = 155; case 155: if($c) { $c = false; _r$50 = _r$50.$blk(); } if (_r$50 && _r$50.$blk !== undefined) { break s; }
 29227  							$r = d.error(new UnmarshalTypeError.ptr("number", _r$50, (new $Int64(0, d.off)), "", "")); /* */ $s = 156; case 156: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 29228  						/* } */ case 151:
 29229  					/* } */ case 118:
 29230  				case 112:
 29231  			/* } */ case 36:
 29232  		case 31:
 29233  		$s = -1; return;
 29234  		/* */ } return; } if ($f === undefined) { $f = { $blk: decodeState.ptr.prototype.literalStore }; } $f._1 = _1; $f._2 = _2; $f._3 = _3; $f._4 = _4; $f._5 = _5; $f._6 = _6; $f._arg = _arg; $f._arg$1 = _arg$1; $f._arg$10 = _arg$10; $f._arg$11 = _arg$11; $f._arg$12 = _arg$12; $f._arg$13 = _arg$13; $f._arg$14 = _arg$14; $f._arg$15 = _arg$15; $f._arg$16 = _arg$16; $f._arg$17 = _arg$17; $f._arg$18 = _arg$18; $f._arg$19 = _arg$19; $f._arg$2 = _arg$2; $f._arg$3 = _arg$3; $f._arg$4 = _arg$4; $f._arg$5 = _arg$5; $f._arg$6 = _arg$6; $f._arg$7 = _arg$7; $f._arg$8 = _arg$8; $f._arg$9 = _arg$9; $f._r$10 = _r$10; $f._r$11 = _r$11; $f._r$12 = _r$12; $f._r$13 = _r$13; $f._r$14 = _r$14; $f._r$15 = _r$15; $f._r$16 = _r$16; $f._r$17 = _r$17; $f._r$18 = _r$18; $f._r$19 = _r$19; $f._r$20 = _r$20; $f._r$21 = _r$21; $f._r$22 = _r$22; $f._r$23 = _r$23; $f._r$24 = _r$24; $f._r$25 = _r$25; $f._r$26 = _r$26; $f._r$27 = _r$27; $f._r$28 = _r$28; $f._r$29 = _r$29; $f._r$3 = _r$3; $f._r$30 = _r$30; $f._r$31 = _r$31; $f._r$32 = _r$32; $f._r$33 = _r$33; $f._r$34 = _r$34; $f._r$35 = _r$35; $f._r$36 = _r$36; $f._r$37 = _r$37; $f._r$38 = _r$38; $f._r$39 = _r$39; $f._r$4 = _r$4; $f._r$40 = _r$40; $f._r$41 = _r$41; $f._r$42 = _r$42; $f._r$43 = _r$43; $f._r$44 = _r$44; $f._r$45 = _r$45; $f._r$46 = _r$46; $f._r$47 = _r$47; $f._r$48 = _r$48; $f._r$49 = _r$49; $f._r$5 = _r$5; $f._r$50 = _r$50; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._r$8 = _r$8; $f._r$9 = _r$9; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f._tuple$4 = _tuple$4; $f._tuple$5 = _tuple$5; $f._tuple$6 = _tuple$6; $f._tuple$7 = _tuple$7; $f._v = _v; $f.b = b; $f.c = c; $f.d = d; $f.err = err; $f.err$1 = err$1; $f.err$2 = err$2; $f.err$3 = err$3; $f.err$4 = err$4; $f.err$5 = err$5; $f.err$6 = err$6; $f.fromQuoted = fromQuoted; $f.isNull = isNull; $f.item = item; $f.n = n; $f.n$1 = n$1; $f.n$2 = n$2; $f.n$3 = n$3; $f.n$4 = n$4; $f.ok = ok; $f.ok$1 = ok$1; $f.pv = pv; $f.s = s; $f.s$1 = s$1; $f.s$2 = s$2; $f.u = u; $f.ut = ut; $f.v = v; $f.val = val; $f.value = value; $f.$s = $s; $f.$r = $r; return $f;
 29235  	};
 29236  	decodeState.prototype.literalStore = function(item, v, fromQuoted) { return this.$val.literalStore(item, v, fromQuoted); };
 29237  	decodeState.ptr.prototype.valueInterface = function() {
 29238  		var _1, _r$3, _r$4, _r$5, _r$6, d, $s, $r;
 29239  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; d = $f.d; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 29240  		d = this;
 29241  			_r$3 = d.scanWhile(9); /* */ $s = 2; case 2: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 29242  			_1 = _r$3;
 29243  			/* */ if (_1 === (6)) { $s = 3; continue; }
 29244  			/* */ if (_1 === (2)) { $s = 4; continue; }
 29245  			/* */ if (_1 === (1)) { $s = 5; continue; }
 29246  			/* */ $s = 6; continue;
 29247  			/* if (_1 === (6)) { */ case 3:
 29248  				_r$4 = d.arrayInterface(); /* */ $s = 8; case 8: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 29249  				$s = -1; return _r$4;
 29250  			/* } else if (_1 === (2)) { */ case 4:
 29251  				_r$5 = d.objectInterface(); /* */ $s = 9; case 9: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
 29252  				$s = -1; return new mapType(_r$5);
 29253  			/* } else if (_1 === (1)) { */ case 5:
 29254  				_r$6 = d.literalInterface(); /* */ $s = 10; case 10: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
 29255  				$s = -1; return _r$6;
 29256  			/* } else { */ case 6:
 29257  				d.error(errPhase);
 29258  				$panic(new $String("unreachable"));
 29259  			/* } */ case 7:
 29260  		case 1:
 29261  		$s = -1; return $ifaceNil;
 29262  		/* */ } return; } if ($f === undefined) { $f = { $blk: decodeState.ptr.prototype.valueInterface }; } $f._1 = _1; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f.d = d; $f.$s = $s; $f.$r = $r; return $f;
 29263  	};
 29264  	decodeState.prototype.valueInterface = function() { return this.$val.valueInterface(); };
 29265  	decodeState.ptr.prototype.arrayInterface = function() {
 29266  		var _r$3, _r$4, _r$5, d, op, v, $s, $r;
 29267  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; d = $f.d; op = $f.op; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 29268  		d = this;
 29269  		v = $makeSlice(sliceType, 0);
 29270  		/* while (true) { */ case 1:
 29271  			_r$3 = d.scanWhile(9); /* */ $s = 3; case 3: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 29272  			op = _r$3;
 29273  			if (op === 8) {
 29274  				/* break; */ $s = 2; continue;
 29275  			}
 29276  			d.off = d.off - (1) >> 0;
 29277  			d.scan.undo(op);
 29278  			_r$4 = d.valueInterface(); /* */ $s = 4; case 4: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 29279  			v = $append(v, _r$4);
 29280  			_r$5 = d.scanWhile(9); /* */ $s = 5; case 5: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
 29281  			op = _r$5;
 29282  			if (op === 8) {
 29283  				/* break; */ $s = 2; continue;
 29284  			}
 29285  			if (!((op === 7))) {
 29286  				d.error(errPhase);
 29287  			}
 29288  		/* } */ $s = 1; continue; case 2:
 29289  		$s = -1; return v;
 29290  		/* */ } return; } if ($f === undefined) { $f = { $blk: decodeState.ptr.prototype.arrayInterface }; } $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f.d = d; $f.op = op; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
 29291  	};
 29292  	decodeState.prototype.arrayInterface = function() { return this.$val.arrayInterface(); };
 29293  	decodeState.ptr.prototype.objectInterface = function() {
 29294  		var _key, _r$3, _r$4, _r$5, _r$6, _r$7, _tuple, d, item, key, m, ok, op, start, $s, $r;
 29295  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _key = $f._key; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _tuple = $f._tuple; d = $f.d; item = $f.item; key = $f.key; m = $f.m; ok = $f.ok; op = $f.op; start = $f.start; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 29296  		d = this;
 29297  		m = {};
 29298  		/* while (true) { */ case 1:
 29299  			_r$3 = d.scanWhile(9); /* */ $s = 3; case 3: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 29300  			op = _r$3;
 29301  			if (op === 5) {
 29302  				/* break; */ $s = 2; continue;
 29303  			}
 29304  			if (!((op === 1))) {
 29305  				d.error(errPhase);
 29306  			}
 29307  			start = d.off - 1 >> 0;
 29308  			_r$4 = d.scanWhile(0); /* */ $s = 4; case 4: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 29309  			op = _r$4;
 29310  			item = $subslice(d.data, start, (d.off - 1 >> 0));
 29311  			_tuple = unquote(item);
 29312  			key = _tuple[0];
 29313  			ok = _tuple[1];
 29314  			if (!ok) {
 29315  				d.error(errPhase);
 29316  			}
 29317  			/* */ if (op === 9) { $s = 5; continue; }
 29318  			/* */ $s = 6; continue;
 29319  			/* if (op === 9) { */ case 5:
 29320  				_r$5 = d.scanWhile(9); /* */ $s = 7; case 7: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
 29321  				op = _r$5;
 29322  			/* } */ case 6:
 29323  			if (!((op === 3))) {
 29324  				d.error(errPhase);
 29325  			}
 29326  			_r$6 = d.valueInterface(); /* */ $s = 8; case 8: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
 29327  			_key = key; (m || $throwRuntimeError("assignment to entry in nil map"))[$String.keyFor(_key)] = { k: _key, v: _r$6 };
 29328  			_r$7 = d.scanWhile(9); /* */ $s = 9; case 9: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
 29329  			op = _r$7;
 29330  			if (op === 5) {
 29331  				/* break; */ $s = 2; continue;
 29332  			}
 29333  			if (!((op === 4))) {
 29334  				d.error(errPhase);
 29335  			}
 29336  		/* } */ $s = 1; continue; case 2:
 29337  		$s = -1; return m;
 29338  		/* */ } return; } if ($f === undefined) { $f = { $blk: decodeState.ptr.prototype.objectInterface }; } $f._key = _key; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._tuple = _tuple; $f.d = d; $f.item = item; $f.key = key; $f.m = m; $f.ok = ok; $f.op = op; $f.start = start; $f.$s = $s; $f.$r = $r; return $f;
 29339  	};
 29340  	decodeState.prototype.objectInterface = function() { return this.$val.objectInterface(); };
 29341  	decodeState.ptr.prototype.literalInterface = function() {
 29342  		var _1, _r$3, _tuple, _tuple$1, c, d, err, item, n, ok, op, s, start, $s, $r;
 29343  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _r$3 = $f._r$3; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; c = $f.c; d = $f.d; err = $f.err; item = $f.item; n = $f.n; ok = $f.ok; op = $f.op; s = $f.s; start = $f.start; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 29344  		d = this;
 29345  		start = d.off - 1 >> 0;
 29346  		_r$3 = d.scanWhile(0); /* */ $s = 1; case 1: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 29347  		op = _r$3;
 29348  		d.off = d.off - (1) >> 0;
 29349  		d.scan.undo(op);
 29350  		item = $subslice(d.data, start, d.off);
 29351  		c = (0 >= item.$length ? ($throwRuntimeError("index out of range"), undefined) : item.$array[item.$offset + 0]);
 29352  		_1 = c;
 29353  		if (_1 === (110)) {
 29354  			$s = -1; return $ifaceNil;
 29355  		} else if ((_1 === (116)) || (_1 === (102))) {
 29356  			$s = -1; return new $Bool((c === 116));
 29357  		} else if (_1 === (34)) {
 29358  			_tuple = unquote(item);
 29359  			s = _tuple[0];
 29360  			ok = _tuple[1];
 29361  			if (!ok) {
 29362  				d.error(errPhase);
 29363  			}
 29364  			$s = -1; return new $String(s);
 29365  		} else {
 29366  			if (!((c === 45)) && (c < 48 || c > 57)) {
 29367  				d.error(errPhase);
 29368  			}
 29369  			_tuple$1 = d.convertNumber(($bytesToString(item)));
 29370  			n = _tuple$1[0];
 29371  			err = _tuple$1[1];
 29372  			if (!($interfaceIsEqual(err, $ifaceNil))) {
 29373  				d.saveError(err);
 29374  			}
 29375  			$s = -1; return n;
 29376  		}
 29377  		$s = -1; return $ifaceNil;
 29378  		/* */ } return; } if ($f === undefined) { $f = { $blk: decodeState.ptr.prototype.literalInterface }; } $f._1 = _1; $f._r$3 = _r$3; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.c = c; $f.d = d; $f.err = err; $f.item = item; $f.n = n; $f.ok = ok; $f.op = op; $f.s = s; $f.start = start; $f.$s = $s; $f.$r = $r; return $f;
 29379  	};
 29380  	decodeState.prototype.literalInterface = function() { return this.$val.literalInterface(); };
 29381  	getu4 = function(s) {
 29382  		var _i, _ref, c, r, s;
 29383  		if (s.$length < 6 || !(((0 >= s.$length ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + 0]) === 92)) || !(((1 >= s.$length ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + 1]) === 117))) {
 29384  			return -1;
 29385  		}
 29386  		r = 0;
 29387  		_ref = $subslice(s, 2, 6);
 29388  		_i = 0;
 29389  		while (true) {
 29390  			if (!(_i < _ref.$length)) { break; }
 29391  			c = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
 29392  			if (48 <= c && c <= 57) {
 29393  				c = c - 48 << 24 >>> 24;
 29394  			} else if (97 <= c && c <= 102) {
 29395  				c = (c - 97 << 24 >>> 24) + 10 << 24 >>> 24;
 29396  			} else if (65 <= c && c <= 70) {
 29397  				c = (c - 65 << 24 >>> 24) + 10 << 24 >>> 24;
 29398  			} else {
 29399  				return -1;
 29400  			}
 29401  			r = ($imul(r, 16)) + ((c >> 0)) >> 0;
 29402  			_i++;
 29403  		}
 29404  		return r;
 29405  	};
 29406  	unquote = function(s) {
 29407  		var _tuple, ok, s, t;
 29408  		t = "";
 29409  		ok = false;
 29410  		_tuple = unquoteBytes(s);
 29411  		s = _tuple[0];
 29412  		ok = _tuple[1];
 29413  		t = ($bytesToString(s));
 29414  		return [t, ok];
 29415  	};
 29416  	unquoteBytes = function(s) {
 29417  		var _1, _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, _tuple$1, b, c, c$1, dec, nb, ok, r, rr, rr$1, rr$2, rr1, s, size, size$1, t, w, x;
 29418  		t = sliceType$1.nil;
 29419  		ok = false;
 29420  		if (s.$length < 2 || !(((0 >= s.$length ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + 0]) === 34)) || !(((x = s.$length - 1 >> 0, ((x < 0 || x >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + x])) === 34))) {
 29421  			return [t, ok];
 29422  		}
 29423  		s = $subslice(s, 1, (s.$length - 1 >> 0));
 29424  		r = 0;
 29425  		while (true) {
 29426  			if (!(r < s.$length)) { break; }
 29427  			c = ((r < 0 || r >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + r]);
 29428  			if ((c === 92) || (c === 34) || c < 32) {
 29429  				break;
 29430  			}
 29431  			if (c < 128) {
 29432  				r = r + (1) >> 0;
 29433  				continue;
 29434  			}
 29435  			_tuple = utf8.DecodeRune($subslice(s, r));
 29436  			rr = _tuple[0];
 29437  			size = _tuple[1];
 29438  			if ((rr === 65533) && (size === 1)) {
 29439  				break;
 29440  			}
 29441  			r = r + (size) >> 0;
 29442  		}
 29443  		if (r === s.$length) {
 29444  			_tmp = s;
 29445  			_tmp$1 = true;
 29446  			t = _tmp;
 29447  			ok = _tmp$1;
 29448  			return [t, ok];
 29449  		}
 29450  		b = $makeSlice(sliceType$1, (s.$length + 8 >> 0));
 29451  		w = $copySlice(b, $subslice(s, 0, r));
 29452  		while (true) {
 29453  			if (!(r < s.$length)) { break; }
 29454  			if (w >= (b.$length - 8 >> 0)) {
 29455  				nb = $makeSlice(sliceType$1, ($imul(((b.$length + 4 >> 0)), 2)));
 29456  				$copySlice(nb, $subslice(b, 0, w));
 29457  				b = nb;
 29458  			}
 29459  			c$1 = ((r < 0 || r >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + r]);
 29460  			if ((c$1 === 92)) {
 29461  				r = r + (1) >> 0;
 29462  				if (r >= s.$length) {
 29463  					return [t, ok];
 29464  				}
 29465  				switch (0) { default:
 29466  					_1 = ((r < 0 || r >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + r]);
 29467  					if ((_1 === (34)) || (_1 === (92)) || (_1 === (47)) || (_1 === (39))) {
 29468  						((w < 0 || w >= b.$length) ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + w] = ((r < 0 || r >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + r]));
 29469  						r = r + (1) >> 0;
 29470  						w = w + (1) >> 0;
 29471  					} else if (_1 === (98)) {
 29472  						((w < 0 || w >= b.$length) ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + w] = 8);
 29473  						r = r + (1) >> 0;
 29474  						w = w + (1) >> 0;
 29475  					} else if (_1 === (102)) {
 29476  						((w < 0 || w >= b.$length) ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + w] = 12);
 29477  						r = r + (1) >> 0;
 29478  						w = w + (1) >> 0;
 29479  					} else if (_1 === (110)) {
 29480  						((w < 0 || w >= b.$length) ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + w] = 10);
 29481  						r = r + (1) >> 0;
 29482  						w = w + (1) >> 0;
 29483  					} else if (_1 === (114)) {
 29484  						((w < 0 || w >= b.$length) ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + w] = 13);
 29485  						r = r + (1) >> 0;
 29486  						w = w + (1) >> 0;
 29487  					} else if (_1 === (116)) {
 29488  						((w < 0 || w >= b.$length) ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + w] = 9);
 29489  						r = r + (1) >> 0;
 29490  						w = w + (1) >> 0;
 29491  					} else if (_1 === (117)) {
 29492  						r = r - (1) >> 0;
 29493  						rr$1 = getu4($subslice(s, r));
 29494  						if (rr$1 < 0) {
 29495  							return [t, ok];
 29496  						}
 29497  						r = r + (6) >> 0;
 29498  						if (utf16.IsSurrogate(rr$1)) {
 29499  							rr1 = getu4($subslice(s, r));
 29500  							dec = utf16.DecodeRune(rr$1, rr1);
 29501  							if (!((dec === 65533))) {
 29502  								r = r + (6) >> 0;
 29503  								w = w + (utf8.EncodeRune($subslice(b, w), dec)) >> 0;
 29504  								break;
 29505  							}
 29506  							rr$1 = 65533;
 29507  						}
 29508  						w = w + (utf8.EncodeRune($subslice(b, w), rr$1)) >> 0;
 29509  					} else {
 29510  						return [t, ok];
 29511  					}
 29512  				}
 29513  			} else if (((c$1 === 34)) || (c$1 < 32)) {
 29514  				return [t, ok];
 29515  			} else if (c$1 < 128) {
 29516  				((w < 0 || w >= b.$length) ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + w] = c$1);
 29517  				r = r + (1) >> 0;
 29518  				w = w + (1) >> 0;
 29519  			} else {
 29520  				_tuple$1 = utf8.DecodeRune($subslice(s, r));
 29521  				rr$2 = _tuple$1[0];
 29522  				size$1 = _tuple$1[1];
 29523  				r = r + (size$1) >> 0;
 29524  				w = w + (utf8.EncodeRune($subslice(b, w), rr$2)) >> 0;
 29525  			}
 29526  		}
 29527  		_tmp$2 = $subslice(b, 0, w);
 29528  		_tmp$3 = true;
 29529  		t = _tmp$2;
 29530  		ok = _tmp$3;
 29531  		return [t, ok];
 29532  	};
 29533  	isValidTag = function(s) {
 29534  		var _i, _ref, _rune, c, s;
 29535  		if (s === "") {
 29536  			return false;
 29537  		}
 29538  		_ref = s;
 29539  		_i = 0;
 29540  		while (true) {
 29541  			if (!(_i < _ref.length)) { break; }
 29542  			_rune = $decodeRune(_ref, _i);
 29543  			c = _rune[0];
 29544  			if (strings.ContainsRune("!#$%&()*+-./:<=>?@[]^_{|}~ ", c)) {
 29545  			} else if (!unicode.IsLetter(c) && !unicode.IsDigit(c)) {
 29546  				return false;
 29547  			}
 29548  			_i += _rune[1];
 29549  		}
 29550  		return true;
 29551  	};
 29552  	fillField = function(f) {
 29553  		var f;
 29554  		f.nameBytes = (new sliceType$1($stringToBytes(f.name)));
 29555  		f.equalFold = foldFunc(f.nameBytes);
 29556  		return f;
 29557  	};
 29558  	byIndex.prototype.Len = function() {
 29559  		var x;
 29560  		x = this;
 29561  		return x.$length;
 29562  	};
 29563  	$ptrType(byIndex).prototype.Len = function() { return this.$get().Len(); };
 29564  	byIndex.prototype.Swap = function(i, j) {
 29565  		var _tmp, _tmp$1, i, j, x;
 29566  		x = this;
 29567  		_tmp = $clone(((j < 0 || j >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + j]), field);
 29568  		_tmp$1 = $clone(((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i]), field);
 29569  		field.copy(((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i]), _tmp);
 29570  		field.copy(((j < 0 || j >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + j]), _tmp$1);
 29571  	};
 29572  	$ptrType(byIndex).prototype.Swap = function(i, j) { return this.$get().Swap(i, j); };
 29573  	byIndex.prototype.Less = function(i, j) {
 29574  		var _i, _ref, i, j, k, x, x$1, x$2, xik;
 29575  		x = this;
 29576  		_ref = ((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i]).index;
 29577  		_i = 0;
 29578  		while (true) {
 29579  			if (!(_i < _ref.$length)) { break; }
 29580  			k = _i;
 29581  			xik = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
 29582  			if (k >= ((j < 0 || j >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + j]).index.$length) {
 29583  				return false;
 29584  			}
 29585  			if (!((xik === (x$1 = ((j < 0 || j >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + j]).index, ((k < 0 || k >= x$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + k]))))) {
 29586  				return xik < (x$2 = ((j < 0 || j >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + j]).index, ((k < 0 || k >= x$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + k]));
 29587  			}
 29588  			_i++;
 29589  		}
 29590  		return ((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i]).index.$length < ((j < 0 || j >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + j]).index.$length;
 29591  	};
 29592  	$ptrType(byIndex).prototype.Less = function(i, j) { return this.$get().Less(i, j); };
 29593  	typeFields = function(t) {
 29594  		var _1, _entry, _entry$1, _entry$2, _entry$3, _i, _key, _key$1, _r$10, _r$11, _r$12, _r$13, _r$14, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tuple, _tuple$1, _v, _v$1, _v$2, advance, count, current, dominant, f, fi, fields, fj, ft, i, i$1, index, isUnexported, name, name$1, next, nextCount, ok, opts, out, quoted, sf, t, t$1, tag, tagged, visited, x, x$1, x$2, $s, $r;
 29595  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _entry = $f._entry; _entry$1 = $f._entry$1; _entry$2 = $f._entry$2; _entry$3 = $f._entry$3; _i = $f._i; _key = $f._key; _key$1 = $f._key$1; _r$10 = $f._r$10; _r$11 = $f._r$11; _r$12 = $f._r$12; _r$13 = $f._r$13; _r$14 = $f._r$14; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _r$8 = $f._r$8; _r$9 = $f._r$9; _ref = $f._ref; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tmp$4 = $f._tmp$4; _tmp$5 = $f._tmp$5; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _v = $f._v; _v$1 = $f._v$1; _v$2 = $f._v$2; advance = $f.advance; count = $f.count; current = $f.current; dominant = $f.dominant; f = $f.f; fi = $f.fi; fields = $f.fields; fj = $f.fj; ft = $f.ft; i = $f.i; i$1 = $f.i$1; index = $f.index; isUnexported = $f.isUnexported; name = $f.name; name$1 = $f.name$1; next = $f.next; nextCount = $f.nextCount; ok = $f.ok; opts = $f.opts; out = $f.out; quoted = $f.quoted; sf = $f.sf; t = $f.t; t$1 = $f.t$1; tag = $f.tag; tagged = $f.tagged; visited = $f.visited; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 29596  		fields = [fields];
 29597  		current = new sliceType$3([]);
 29598  		next = new sliceType$3([new field.ptr("", sliceType$1.nil, $throwNilPointerError, false, sliceType$2.nil, t, false, false)]);
 29599  		count = $makeMap(reflect.Type.keyFor, []);
 29600  		nextCount = $makeMap(reflect.Type.keyFor, []);
 29601  		visited = $makeMap(reflect.Type.keyFor, []);
 29602  		fields[0] = sliceType$3.nil;
 29603  		/* while (true) { */ case 1:
 29604  			/* if (!(next.$length > 0)) { break; } */ if(!(next.$length > 0)) { $s = 2; continue; }
 29605  			_tmp = next;
 29606  			_tmp$1 = $subslice(current, 0, 0);
 29607  			current = _tmp;
 29608  			next = _tmp$1;
 29609  			_tmp$2 = nextCount;
 29610  			_tmp$3 = $makeMap(reflect.Type.keyFor, []);
 29611  			count = _tmp$2;
 29612  			nextCount = _tmp$3;
 29613  			_ref = current;
 29614  			_i = 0;
 29615  			/* while (true) { */ case 3:
 29616  				/* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 4; continue; }
 29617  				f = $clone(((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]), field);
 29618  				/* */ if ((_entry = visited[reflect.Type.keyFor(f.typ)], _entry !== undefined ? _entry.v : false)) { $s = 5; continue; }
 29619  				/* */ $s = 6; continue;
 29620  				/* if ((_entry = visited[reflect.Type.keyFor(f.typ)], _entry !== undefined ? _entry.v : false)) { */ case 5:
 29621  					_i++;
 29622  					/* continue; */ $s = 3; continue;
 29623  				/* } */ case 6:
 29624  				_key = f.typ; (visited || $throwRuntimeError("assignment to entry in nil map"))[reflect.Type.keyFor(_key)] = { k: _key, v: true };
 29625  				i = 0;
 29626  				/* while (true) { */ case 7:
 29627  					_r$3 = f.typ.NumField(); /* */ $s = 9; case 9: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 29628  					/* if (!(i < _r$3)) { break; } */ if(!(i < _r$3)) { $s = 8; continue; }
 29629  					_r$4 = f.typ.Field(i); /* */ $s = 10; case 10: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 29630  					sf = $clone(_r$4, reflect.StructField);
 29631  					isUnexported = !(sf.PkgPath === "");
 29632  					/* */ if (sf.Anonymous) { $s = 11; continue; }
 29633  					/* */ if (isUnexported) { $s = 12; continue; }
 29634  					/* */ $s = 13; continue;
 29635  					/* if (sf.Anonymous) { */ case 11:
 29636  						t$1 = sf.Type;
 29637  						_r$5 = t$1.Kind(); /* */ $s = 16; case 16: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
 29638  						/* */ if (_r$5 === 22) { $s = 14; continue; }
 29639  						/* */ $s = 15; continue;
 29640  						/* if (_r$5 === 22) { */ case 14:
 29641  							_r$6 = t$1.Elem(); /* */ $s = 17; case 17: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
 29642  							t$1 = _r$6;
 29643  						/* } */ case 15:
 29644  						if (!(isUnexported)) { _v = false; $s = 20; continue s; }
 29645  						_r$7 = t$1.Kind(); /* */ $s = 21; case 21: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
 29646  						_v = !((_r$7 === 25)); case 20:
 29647  						/* */ if (_v) { $s = 18; continue; }
 29648  						/* */ $s = 19; continue;
 29649  						/* if (_v) { */ case 18:
 29650  							i = i + (1) >> 0;
 29651  							/* continue; */ $s = 7; continue;
 29652  						/* } */ case 19:
 29653  						$s = 13; continue;
 29654  					/* } else if (isUnexported) { */ case 12:
 29655  						i = i + (1) >> 0;
 29656  						/* continue; */ $s = 7; continue;
 29657  					/* } */ case 13:
 29658  					tag = new reflect.StructTag(sf.Tag).Get("json");
 29659  					/* */ if (tag === "-") { $s = 22; continue; }
 29660  					/* */ $s = 23; continue;
 29661  					/* if (tag === "-") { */ case 22:
 29662  						i = i + (1) >> 0;
 29663  						/* continue; */ $s = 7; continue;
 29664  					/* } */ case 23:
 29665  					_tuple = parseTag(tag);
 29666  					name = _tuple[0];
 29667  					opts = _tuple[1];
 29668  					if (!isValidTag(name)) {
 29669  						name = "";
 29670  					}
 29671  					index = $makeSlice(sliceType$2, (f.index.$length + 1 >> 0));
 29672  					$copySlice(index, f.index);
 29673  					(x = f.index.$length, ((x < 0 || x >= index.$length) ? ($throwRuntimeError("index out of range"), undefined) : index.$array[index.$offset + x] = i));
 29674  					ft = sf.Type;
 29675  					_r$8 = ft.Name(); /* */ $s = 27; case 27: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
 29676  					if (!(_r$8 === "")) { _v$1 = false; $s = 26; continue s; }
 29677  					_r$9 = ft.Kind(); /* */ $s = 28; case 28: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 29678  					_v$1 = _r$9 === 22; case 26:
 29679  					/* */ if (_v$1) { $s = 24; continue; }
 29680  					/* */ $s = 25; continue;
 29681  					/* if (_v$1) { */ case 24:
 29682  						_r$10 = ft.Elem(); /* */ $s = 29; case 29: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
 29683  						ft = _r$10;
 29684  					/* } */ case 25:
 29685  					quoted = false;
 29686  					/* */ if (new tagOptions(opts).Contains("string")) { $s = 30; continue; }
 29687  					/* */ $s = 31; continue;
 29688  					/* if (new tagOptions(opts).Contains("string")) { */ case 30:
 29689  							_r$11 = ft.Kind(); /* */ $s = 33; case 33: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; }
 29690  							_1 = _r$11;
 29691  							if ((_1 === (1)) || (_1 === (2)) || (_1 === (3)) || (_1 === (4)) || (_1 === (5)) || (_1 === (6)) || (_1 === (7)) || (_1 === (8)) || (_1 === (9)) || (_1 === (10)) || (_1 === (11)) || (_1 === (12)) || (_1 === (13)) || (_1 === (14)) || (_1 === (24))) {
 29692  								quoted = true;
 29693  							}
 29694  						case 32:
 29695  					/* } */ case 31:
 29696  					if (!(name === "") || !sf.Anonymous) { _v$2 = true; $s = 36; continue s; }
 29697  					_r$12 = ft.Kind(); /* */ $s = 37; case 37: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; }
 29698  					_v$2 = !((_r$12 === 25)); case 36:
 29699  					/* */ if (_v$2) { $s = 34; continue; }
 29700  					/* */ $s = 35; continue;
 29701  					/* if (_v$2) { */ case 34:
 29702  						tagged = !(name === "");
 29703  						if (name === "") {
 29704  							name = sf.Name;
 29705  						}
 29706  						fields[0] = $append(fields[0], fillField(new field.ptr(name, sliceType$1.nil, $throwNilPointerError, tagged, index, ft, new tagOptions(opts).Contains("omitempty"), quoted)));
 29707  						if ((_entry$1 = count[reflect.Type.keyFor(f.typ)], _entry$1 !== undefined ? _entry$1.v : 0) > 1) {
 29708  							fields[0] = $append(fields[0], (x$1 = fields[0].$length - 1 >> 0, ((x$1 < 0 || x$1 >= fields[0].$length) ? ($throwRuntimeError("index out of range"), undefined) : fields[0].$array[fields[0].$offset + x$1])));
 29709  						}
 29710  						i = i + (1) >> 0;
 29711  						/* continue; */ $s = 7; continue;
 29712  					/* } */ case 35:
 29713  					_key$1 = ft; (nextCount || $throwRuntimeError("assignment to entry in nil map"))[reflect.Type.keyFor(_key$1)] = { k: _key$1, v: (_entry$2 = nextCount[reflect.Type.keyFor(ft)], _entry$2 !== undefined ? _entry$2.v : 0) + (1) >> 0 };
 29714  					/* */ if ((_entry$3 = nextCount[reflect.Type.keyFor(ft)], _entry$3 !== undefined ? _entry$3.v : 0) === 1) { $s = 38; continue; }
 29715  					/* */ $s = 39; continue;
 29716  					/* if ((_entry$3 = nextCount[reflect.Type.keyFor(ft)], _entry$3 !== undefined ? _entry$3.v : 0) === 1) { */ case 38:
 29717  						_r$13 = ft.Name(); /* */ $s = 40; case 40: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; }
 29718  						_r$14 = fillField(new field.ptr(_r$13, sliceType$1.nil, $throwNilPointerError, false, index, ft, false, false)); /* */ $s = 41; case 41: if($c) { $c = false; _r$14 = _r$14.$blk(); } if (_r$14 && _r$14.$blk !== undefined) { break s; }
 29719  						next = $append(next, _r$14);
 29720  					/* } */ case 39:
 29721  					i = i + (1) >> 0;
 29722  				/* } */ $s = 7; continue; case 8:
 29723  				_i++;
 29724  			/* } */ $s = 3; continue; case 4:
 29725  		/* } */ $s = 1; continue; case 2:
 29726  		$r = sort.Slice(fields[0], (function(fields) { return function(i$1, j) {
 29727  			var i$1, j, x$2;
 29728  			x$2 = fields[0];
 29729  			if (!(((i$1 < 0 || i$1 >= x$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + i$1]).name === ((j < 0 || j >= x$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + j]).name)) {
 29730  				return ((i$1 < 0 || i$1 >= x$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + i$1]).name < ((j < 0 || j >= x$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + j]).name;
 29731  			}
 29732  			if (!((((i$1 < 0 || i$1 >= x$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + i$1]).index.$length === ((j < 0 || j >= x$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + j]).index.$length))) {
 29733  				return ((i$1 < 0 || i$1 >= x$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + i$1]).index.$length < ((j < 0 || j >= x$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + j]).index.$length;
 29734  			}
 29735  			if (!(((i$1 < 0 || i$1 >= x$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + i$1]).tag === ((j < 0 || j >= x$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + j]).tag)) {
 29736  				return ((i$1 < 0 || i$1 >= x$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + i$1]).tag;
 29737  			}
 29738  			return ($subslice(new byIndex(x$2.$array), x$2.$offset, x$2.$offset + x$2.$length)).Less(i$1, j);
 29739  		}; })(fields)); /* */ $s = 42; case 42: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 29740  		out = $subslice(fields[0], 0, 0);
 29741  		_tmp$4 = 0;
 29742  		_tmp$5 = 0;
 29743  		advance = _tmp$4;
 29744  		i$1 = _tmp$5;
 29745  		/* while (true) { */ case 43:
 29746  			/* if (!(i$1 < fields[0].$length)) { break; } */ if(!(i$1 < fields[0].$length)) { $s = 44; continue; }
 29747  			fi = $clone(((i$1 < 0 || i$1 >= fields[0].$length) ? ($throwRuntimeError("index out of range"), undefined) : fields[0].$array[fields[0].$offset + i$1]), field);
 29748  			name$1 = fi.name;
 29749  			advance = 1;
 29750  			while (true) {
 29751  				if (!((i$1 + advance >> 0) < fields[0].$length)) { break; }
 29752  				fj = $clone((x$2 = i$1 + advance >> 0, ((x$2 < 0 || x$2 >= fields[0].$length) ? ($throwRuntimeError("index out of range"), undefined) : fields[0].$array[fields[0].$offset + x$2])), field);
 29753  				if (!(fj.name === name$1)) {
 29754  					break;
 29755  				}
 29756  				advance = advance + (1) >> 0;
 29757  			}
 29758  			if (advance === 1) {
 29759  				out = $append(out, fi);
 29760  				i$1 = i$1 + (advance) >> 0;
 29761  				/* continue; */ $s = 43; continue;
 29762  			}
 29763  			_tuple$1 = dominantField($subslice(fields[0], i$1, (i$1 + advance >> 0)));
 29764  			dominant = $clone(_tuple$1[0], field);
 29765  			ok = _tuple$1[1];
 29766  			if (ok) {
 29767  				out = $append(out, dominant);
 29768  			}
 29769  			i$1 = i$1 + (advance) >> 0;
 29770  		/* } */ $s = 43; continue; case 44:
 29771  		fields[0] = out;
 29772  		$r = sort.Sort(($subslice(new byIndex(fields[0].$array), fields[0].$offset, fields[0].$offset + fields[0].$length))); /* */ $s = 45; case 45: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 29773  		$s = -1; return fields[0];
 29774  		/* */ } return; } if ($f === undefined) { $f = { $blk: typeFields }; } $f._1 = _1; $f._entry = _entry; $f._entry$1 = _entry$1; $f._entry$2 = _entry$2; $f._entry$3 = _entry$3; $f._i = _i; $f._key = _key; $f._key$1 = _key$1; $f._r$10 = _r$10; $f._r$11 = _r$11; $f._r$12 = _r$12; $f._r$13 = _r$13; $f._r$14 = _r$14; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._r$8 = _r$8; $f._r$9 = _r$9; $f._ref = _ref; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tmp$4 = _tmp$4; $f._tmp$5 = _tmp$5; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._v = _v; $f._v$1 = _v$1; $f._v$2 = _v$2; $f.advance = advance; $f.count = count; $f.current = current; $f.dominant = dominant; $f.f = f; $f.fi = fi; $f.fields = fields; $f.fj = fj; $f.ft = ft; $f.i = i; $f.i$1 = i$1; $f.index = index; $f.isUnexported = isUnexported; $f.name = name; $f.name$1 = name$1; $f.next = next; $f.nextCount = nextCount; $f.ok = ok; $f.opts = opts; $f.out = out; $f.quoted = quoted; $f.sf = sf; $f.t = t; $f.t$1 = t$1; $f.tag = tag; $f.tagged = tagged; $f.visited = visited; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.$s = $s; $f.$r = $r; return $f;
 29775  	};
 29776  	dominantField = function(fields) {
 29777  		var _i, _ref, f, fields, i, length, tagged;
 29778  		length = (0 >= fields.$length ? ($throwRuntimeError("index out of range"), undefined) : fields.$array[fields.$offset + 0]).index.$length;
 29779  		tagged = -1;
 29780  		_ref = fields;
 29781  		_i = 0;
 29782  		while (true) {
 29783  			if (!(_i < _ref.$length)) { break; }
 29784  			i = _i;
 29785  			f = $clone(((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]), field);
 29786  			if (f.index.$length > length) {
 29787  				fields = $subslice(fields, 0, i);
 29788  				break;
 29789  			}
 29790  			if (f.tag) {
 29791  				if (tagged >= 0) {
 29792  					return [new field.ptr("", sliceType$1.nil, $throwNilPointerError, false, sliceType$2.nil, $ifaceNil, false, false), false];
 29793  				}
 29794  				tagged = i;
 29795  			}
 29796  			_i++;
 29797  		}
 29798  		if (tagged >= 0) {
 29799  			return [((tagged < 0 || tagged >= fields.$length) ? ($throwRuntimeError("index out of range"), undefined) : fields.$array[fields.$offset + tagged]), true];
 29800  		}
 29801  		if (fields.$length > 1) {
 29802  			return [new field.ptr("", sliceType$1.nil, $throwNilPointerError, false, sliceType$2.nil, $ifaceNil, false, false), false];
 29803  		}
 29804  		return [(0 >= fields.$length ? ($throwRuntimeError("index out of range"), undefined) : fields.$array[fields.$offset + 0]), true];
 29805  	};
 29806  	cachedTypeFields = function(t) {
 29807  		var _entry, _entry$1, _i, _key, _key$1, _keys, _r$3, _ref, _tuple, _tuple$1, f, k, m, newM, t, v, x, $s, $r;
 29808  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _entry = $f._entry; _entry$1 = $f._entry$1; _i = $f._i; _key = $f._key; _key$1 = $f._key$1; _keys = $f._keys; _r$3 = $f._r$3; _ref = $f._ref; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; f = $f.f; k = $f.k; m = $f.m; newM = $f.newM; t = $f.t; v = $f.v; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 29809  		_tuple = $assertType(fieldCache.value.Load(), mapType$1, true);
 29810  		m = _tuple[0];
 29811  		f = (_entry = m[reflect.Type.keyFor(t)], _entry !== undefined ? _entry.v : sliceType$3.nil);
 29812  		if (!(f === sliceType$3.nil)) {
 29813  			$s = -1; return f;
 29814  		}
 29815  		_r$3 = typeFields(t); /* */ $s = 1; case 1: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 29816  		f = _r$3;
 29817  		if (f === sliceType$3.nil) {
 29818  			f = new sliceType$3([]);
 29819  		}
 29820  		fieldCache.mu.Lock();
 29821  		_tuple$1 = $assertType(fieldCache.value.Load(), mapType$1, true);
 29822  		m = _tuple$1[0];
 29823  		newM = (x = $keys(m).length + 1 >> 0, ((x < 0 || x > 2147483647) ? $throwRuntimeError("makemap: size out of range") : {}));
 29824  		_ref = m;
 29825  		_i = 0;
 29826  		_keys = $keys(_ref);
 29827  		while (true) {
 29828  			if (!(_i < _keys.length)) { break; }
 29829  			_entry$1 = _ref[_keys[_i]];
 29830  			if (_entry$1 === undefined) {
 29831  				_i++;
 29832  				continue;
 29833  			}
 29834  			k = _entry$1.k;
 29835  			v = _entry$1.v;
 29836  			_key = k; (newM || $throwRuntimeError("assignment to entry in nil map"))[reflect.Type.keyFor(_key)] = { k: _key, v: v };
 29837  			_i++;
 29838  		}
 29839  		_key$1 = t; (newM || $throwRuntimeError("assignment to entry in nil map"))[reflect.Type.keyFor(_key$1)] = { k: _key$1, v: f };
 29840  		fieldCache.value.Store(new mapType$1(newM));
 29841  		fieldCache.mu.Unlock();
 29842  		$s = -1; return f;
 29843  		/* */ } return; } if ($f === undefined) { $f = { $blk: cachedTypeFields }; } $f._entry = _entry; $f._entry$1 = _entry$1; $f._i = _i; $f._key = _key; $f._key$1 = _key$1; $f._keys = _keys; $f._r$3 = _r$3; $f._ref = _ref; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.f = f; $f.k = k; $f.m = m; $f.newM = newM; $f.t = t; $f.v = v; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
 29844  	};
 29845  	foldFunc = function(s) {
 29846  		var _i, _ref, b, nonLetter, s, special, upper;
 29847  		nonLetter = false;
 29848  		special = false;
 29849  		_ref = s;
 29850  		_i = 0;
 29851  		while (true) {
 29852  			if (!(_i < _ref.$length)) { break; }
 29853  			b = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
 29854  			if (b >= 128) {
 29855  				return bytes.EqualFold;
 29856  			}
 29857  			upper = (b & 223) >>> 0;
 29858  			if (upper < 65 || upper > 90) {
 29859  				nonLetter = true;
 29860  			} else if ((upper === 75) || (upper === 83)) {
 29861  				special = true;
 29862  			}
 29863  			_i++;
 29864  		}
 29865  		if (special) {
 29866  			return equalFoldRight;
 29867  		}
 29868  		if (nonLetter) {
 29869  			return asciiEqualFold;
 29870  		}
 29871  		return simpleLetterEqualFold;
 29872  	};
 29873  	equalFoldRight = function(s, t) {
 29874  		var _1, _i, _ref, _tuple, s, sb, sbUpper, size, t, tb, tr;
 29875  		_ref = s;
 29876  		_i = 0;
 29877  		while (true) {
 29878  			if (!(_i < _ref.$length)) { break; }
 29879  			sb = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
 29880  			if (t.$length === 0) {
 29881  				return false;
 29882  			}
 29883  			tb = (0 >= t.$length ? ($throwRuntimeError("index out of range"), undefined) : t.$array[t.$offset + 0]);
 29884  			if (tb < 128) {
 29885  				if (!((sb === tb))) {
 29886  					sbUpper = (sb & 223) >>> 0;
 29887  					if (65 <= sbUpper && sbUpper <= 90) {
 29888  						if (!((sbUpper === ((tb & 223) >>> 0)))) {
 29889  							return false;
 29890  						}
 29891  					} else {
 29892  						return false;
 29893  					}
 29894  				}
 29895  				t = $subslice(t, 1);
 29896  				_i++;
 29897  				continue;
 29898  			}
 29899  			_tuple = utf8.DecodeRune(t);
 29900  			tr = _tuple[0];
 29901  			size = _tuple[1];
 29902  			_1 = sb;
 29903  			if ((_1 === (115)) || (_1 === (83))) {
 29904  				if (!((tr === 383))) {
 29905  					return false;
 29906  				}
 29907  			} else if ((_1 === (107)) || (_1 === (75))) {
 29908  				if (!((tr === 8490))) {
 29909  					return false;
 29910  				}
 29911  			} else {
 29912  				return false;
 29913  			}
 29914  			t = $subslice(t, size);
 29915  			_i++;
 29916  		}
 29917  		if (t.$length > 0) {
 29918  			return false;
 29919  		}
 29920  		return true;
 29921  	};
 29922  	asciiEqualFold = function(s, t) {
 29923  		var _i, _ref, i, s, sb, t, tb;
 29924  		if (!((s.$length === t.$length))) {
 29925  			return false;
 29926  		}
 29927  		_ref = s;
 29928  		_i = 0;
 29929  		while (true) {
 29930  			if (!(_i < _ref.$length)) { break; }
 29931  			i = _i;
 29932  			sb = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
 29933  			tb = ((i < 0 || i >= t.$length) ? ($throwRuntimeError("index out of range"), undefined) : t.$array[t.$offset + i]);
 29934  			if (sb === tb) {
 29935  				_i++;
 29936  				continue;
 29937  			}
 29938  			if ((97 <= sb && sb <= 122) || (65 <= sb && sb <= 90)) {
 29939  				if (!((((sb & 223) >>> 0) === ((tb & 223) >>> 0)))) {
 29940  					return false;
 29941  				}
 29942  			} else {
 29943  				return false;
 29944  			}
 29945  			_i++;
 29946  		}
 29947  		return true;
 29948  	};
 29949  	simpleLetterEqualFold = function(s, t) {
 29950  		var _i, _ref, b, i, s, t;
 29951  		if (!((s.$length === t.$length))) {
 29952  			return false;
 29953  		}
 29954  		_ref = s;
 29955  		_i = 0;
 29956  		while (true) {
 29957  			if (!(_i < _ref.$length)) { break; }
 29958  			i = _i;
 29959  			b = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
 29960  			if (!((((b & 223) >>> 0) === ((((i < 0 || i >= t.$length) ? ($throwRuntimeError("index out of range"), undefined) : t.$array[t.$offset + i]) & 223) >>> 0)))) {
 29961  				return false;
 29962  			}
 29963  			_i++;
 29964  		}
 29965  		return true;
 29966  	};
 29967  	nextValue = function(data, scan) {
 29968  		var _1, _i, _r$3, _r$4, _r$5, _ref, _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$14, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, c, data, err, i, rest, scan, v, value, $s, $r;
 29969  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _i = $f._i; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _ref = $f._ref; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$10 = $f._tmp$10; _tmp$11 = $f._tmp$11; _tmp$12 = $f._tmp$12; _tmp$13 = $f._tmp$13; _tmp$14 = $f._tmp$14; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tmp$4 = $f._tmp$4; _tmp$5 = $f._tmp$5; _tmp$6 = $f._tmp$6; _tmp$7 = $f._tmp$7; _tmp$8 = $f._tmp$8; _tmp$9 = $f._tmp$9; c = $f.c; data = $f.data; err = $f.err; i = $f.i; rest = $f.rest; scan = $f.scan; v = $f.v; value = $f.value; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 29970  		value = sliceType$1.nil;
 29971  		rest = sliceType$1.nil;
 29972  		err = $ifaceNil;
 29973  		scan.reset();
 29974  		_ref = data;
 29975  		_i = 0;
 29976  		/* while (true) { */ case 1:
 29977  			/* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; }
 29978  			i = _i;
 29979  			c = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
 29980  			_r$3 = scan.step(scan, c); /* */ $s = 3; case 3: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 29981  			v = _r$3;
 29982  			/* */ if (v >= 5) { $s = 4; continue; }
 29983  			/* */ $s = 5; continue;
 29984  			/* if (v >= 5) { */ case 4:
 29985  					_1 = v;
 29986  					/* */ if ((_1 === (5)) || (_1 === (8))) { $s = 7; continue; }
 29987  					/* */ if (_1 === (11)) { $s = 8; continue; }
 29988  					/* */ if (_1 === (10)) { $s = 9; continue; }
 29989  					/* */ $s = 10; continue;
 29990  					/* if ((_1 === (5)) || (_1 === (8))) { */ case 7:
 29991  						_r$4 = scan.step(scan, 32); /* */ $s = 13; case 13: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 29992  						/* */ if (_r$4 === 10) { $s = 11; continue; }
 29993  						/* */ $s = 12; continue;
 29994  						/* if (_r$4 === 10) { */ case 11:
 29995  							_tmp = $subslice(data, 0, (i + 1 >> 0));
 29996  							_tmp$1 = $subslice(data, (i + 1 >> 0));
 29997  							_tmp$2 = $ifaceNil;
 29998  							value = _tmp;
 29999  							rest = _tmp$1;
 30000  							err = _tmp$2;
 30001  							$s = -1; return [value, rest, err];
 30002  						/* } */ case 12:
 30003  						$s = 10; continue;
 30004  					/* } else if (_1 === (11)) { */ case 8:
 30005  						_tmp$3 = sliceType$1.nil;
 30006  						_tmp$4 = sliceType$1.nil;
 30007  						_tmp$5 = scan.err;
 30008  						value = _tmp$3;
 30009  						rest = _tmp$4;
 30010  						err = _tmp$5;
 30011  						$s = -1; return [value, rest, err];
 30012  					/* } else if (_1 === (10)) { */ case 9:
 30013  						_tmp$6 = $subslice(data, 0, i);
 30014  						_tmp$7 = $subslice(data, i);
 30015  						_tmp$8 = $ifaceNil;
 30016  						value = _tmp$6;
 30017  						rest = _tmp$7;
 30018  						err = _tmp$8;
 30019  						$s = -1; return [value, rest, err];
 30020  					/* } */ case 10:
 30021  				case 6:
 30022  			/* } */ case 5:
 30023  			_i++;
 30024  		/* } */ $s = 1; continue; case 2:
 30025  		_r$5 = scan.eof(); /* */ $s = 16; case 16: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
 30026  		/* */ if (_r$5 === 11) { $s = 14; continue; }
 30027  		/* */ $s = 15; continue;
 30028  		/* if (_r$5 === 11) { */ case 14:
 30029  			_tmp$9 = sliceType$1.nil;
 30030  			_tmp$10 = sliceType$1.nil;
 30031  			_tmp$11 = scan.err;
 30032  			value = _tmp$9;
 30033  			rest = _tmp$10;
 30034  			err = _tmp$11;
 30035  			$s = -1; return [value, rest, err];
 30036  		/* } */ case 15:
 30037  		_tmp$12 = data;
 30038  		_tmp$13 = sliceType$1.nil;
 30039  		_tmp$14 = $ifaceNil;
 30040  		value = _tmp$12;
 30041  		rest = _tmp$13;
 30042  		err = _tmp$14;
 30043  		$s = -1; return [value, rest, err];
 30044  		/* */ } return; } if ($f === undefined) { $f = { $blk: nextValue }; } $f._1 = _1; $f._i = _i; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._ref = _ref; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$10 = _tmp$10; $f._tmp$11 = _tmp$11; $f._tmp$12 = _tmp$12; $f._tmp$13 = _tmp$13; $f._tmp$14 = _tmp$14; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tmp$4 = _tmp$4; $f._tmp$5 = _tmp$5; $f._tmp$6 = _tmp$6; $f._tmp$7 = _tmp$7; $f._tmp$8 = _tmp$8; $f._tmp$9 = _tmp$9; $f.c = c; $f.data = data; $f.err = err; $f.i = i; $f.rest = rest; $f.scan = scan; $f.v = v; $f.value = value; $f.$s = $s; $f.$r = $r; return $f;
 30045  	};
 30046  	SyntaxError.ptr.prototype.Error = function() {
 30047  		var e;
 30048  		e = this;
 30049  		return e.msg;
 30050  	};
 30051  	SyntaxError.prototype.Error = function() { return this.$val.Error(); };
 30052  	scanner.ptr.prototype.reset = function() {
 30053  		var s;
 30054  		s = this;
 30055  		s.step = stateBeginValue;
 30056  		s.parseState = $subslice(s.parseState, 0, 0);
 30057  		s.err = $ifaceNil;
 30058  		s.redo = false;
 30059  		s.endTop = false;
 30060  	};
 30061  	scanner.prototype.reset = function() { return this.$val.reset(); };
 30062  	scanner.ptr.prototype.eof = function() {
 30063  		var _r$3, s, $s, $r;
 30064  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$3 = $f._r$3; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 30065  		s = this;
 30066  		if (!($interfaceIsEqual(s.err, $ifaceNil))) {
 30067  			$s = -1; return 11;
 30068  		}
 30069  		if (s.endTop) {
 30070  			$s = -1; return 10;
 30071  		}
 30072  		_r$3 = s.step(s, 32); /* */ $s = 1; case 1: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 30073  		_r$3;
 30074  		if (s.endTop) {
 30075  			$s = -1; return 10;
 30076  		}
 30077  		if ($interfaceIsEqual(s.err, $ifaceNil)) {
 30078  			s.err = new SyntaxError.ptr("unexpected end of JSON input", s.bytes);
 30079  		}
 30080  		$s = -1; return 11;
 30081  		/* */ } return; } if ($f === undefined) { $f = { $blk: scanner.ptr.prototype.eof }; } $f._r$3 = _r$3; $f.s = s; $f.$s = $s; $f.$r = $r; return $f;
 30082  	};
 30083  	scanner.prototype.eof = function() { return this.$val.eof(); };
 30084  	scanner.ptr.prototype.pushParseState = function(p) {
 30085  		var p, s;
 30086  		s = this;
 30087  		s.parseState = $append(s.parseState, p);
 30088  	};
 30089  	scanner.prototype.pushParseState = function(p) { return this.$val.pushParseState(p); };
 30090  	scanner.ptr.prototype.popParseState = function() {
 30091  		var n, s;
 30092  		s = this;
 30093  		n = s.parseState.$length - 1 >> 0;
 30094  		s.parseState = $subslice(s.parseState, 0, n);
 30095  		s.redo = false;
 30096  		if (n === 0) {
 30097  			s.step = stateEndTop;
 30098  			s.endTop = true;
 30099  		} else {
 30100  			s.step = stateEndValue;
 30101  		}
 30102  	};
 30103  	scanner.prototype.popParseState = function() { return this.$val.popParseState(); };
 30104  	isSpace = function(c) {
 30105  		var c;
 30106  		return (c === 32) || (c === 9) || (c === 13) || (c === 10);
 30107  	};
 30108  	stateBeginValueOrEmpty = function(s, c) {
 30109  		var c, s;
 30110  		if (c <= 32 && isSpace(c)) {
 30111  			return 9;
 30112  		}
 30113  		if (c === 93) {
 30114  			return stateEndValue(s, c);
 30115  		}
 30116  		return stateBeginValue(s, c);
 30117  	};
 30118  	stateBeginValue = function(s, c) {
 30119  		var _1, c, s;
 30120  		if (c <= 32 && isSpace(c)) {
 30121  			return 9;
 30122  		}
 30123  		_1 = c;
 30124  		if (_1 === (123)) {
 30125  			s.step = stateBeginStringOrEmpty;
 30126  			s.pushParseState(0);
 30127  			return 2;
 30128  		} else if (_1 === (91)) {
 30129  			s.step = stateBeginValueOrEmpty;
 30130  			s.pushParseState(2);
 30131  			return 6;
 30132  		} else if (_1 === (34)) {
 30133  			s.step = stateInString;
 30134  			return 1;
 30135  		} else if (_1 === (45)) {
 30136  			s.step = stateNeg;
 30137  			return 1;
 30138  		} else if (_1 === (48)) {
 30139  			s.step = state0;
 30140  			return 1;
 30141  		} else if (_1 === (116)) {
 30142  			s.step = stateT;
 30143  			return 1;
 30144  		} else if (_1 === (102)) {
 30145  			s.step = stateF;
 30146  			return 1;
 30147  		} else if (_1 === (110)) {
 30148  			s.step = stateN;
 30149  			return 1;
 30150  		}
 30151  		if (49 <= c && c <= 57) {
 30152  			s.step = state1;
 30153  			return 1;
 30154  		}
 30155  		return s.error(c, "looking for beginning of value");
 30156  	};
 30157  	stateBeginStringOrEmpty = function(s, c) {
 30158  		var c, n, s, x, x$1;
 30159  		if (c <= 32 && isSpace(c)) {
 30160  			return 9;
 30161  		}
 30162  		if (c === 125) {
 30163  			n = s.parseState.$length;
 30164  			(x = s.parseState, x$1 = n - 1 >> 0, ((x$1 < 0 || x$1 >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + x$1] = 1));
 30165  			return stateEndValue(s, c);
 30166  		}
 30167  		return stateBeginString(s, c);
 30168  	};
 30169  	stateBeginString = function(s, c) {
 30170  		var c, s;
 30171  		if (c <= 32 && isSpace(c)) {
 30172  			return 9;
 30173  		}
 30174  		if (c === 34) {
 30175  			s.step = stateInString;
 30176  			return 1;
 30177  		}
 30178  		return s.error(c, "looking for beginning of object key string");
 30179  	};
 30180  	stateEndValue = function(s, c) {
 30181  		var _1, c, n, ps, s, x, x$1, x$2, x$3, x$4, x$5;
 30182  		n = s.parseState.$length;
 30183  		if (n === 0) {
 30184  			s.step = stateEndTop;
 30185  			s.endTop = true;
 30186  			return stateEndTop(s, c);
 30187  		}
 30188  		if (c <= 32 && isSpace(c)) {
 30189  			s.step = stateEndValue;
 30190  			return 9;
 30191  		}
 30192  		ps = (x = s.parseState, x$1 = n - 1 >> 0, ((x$1 < 0 || x$1 >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + x$1]));
 30193  		_1 = ps;
 30194  		if (_1 === (0)) {
 30195  			if (c === 58) {
 30196  				(x$2 = s.parseState, x$3 = n - 1 >> 0, ((x$3 < 0 || x$3 >= x$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + x$3] = 1));
 30197  				s.step = stateBeginValue;
 30198  				return 3;
 30199  			}
 30200  			return s.error(c, "after object key");
 30201  		} else if (_1 === (1)) {
 30202  			if (c === 44) {
 30203  				(x$4 = s.parseState, x$5 = n - 1 >> 0, ((x$5 < 0 || x$5 >= x$4.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$4.$array[x$4.$offset + x$5] = 0));
 30204  				s.step = stateBeginString;
 30205  				return 4;
 30206  			}
 30207  			if (c === 125) {
 30208  				s.popParseState();
 30209  				return 5;
 30210  			}
 30211  			return s.error(c, "after object key:value pair");
 30212  		} else if (_1 === (2)) {
 30213  			if (c === 44) {
 30214  				s.step = stateBeginValue;
 30215  				return 7;
 30216  			}
 30217  			if (c === 93) {
 30218  				s.popParseState();
 30219  				return 8;
 30220  			}
 30221  			return s.error(c, "after array element");
 30222  		}
 30223  		return s.error(c, "");
 30224  	};
 30225  	stateEndTop = function(s, c) {
 30226  		var c, s;
 30227  		if (!((c === 32)) && !((c === 9)) && !((c === 13)) && !((c === 10))) {
 30228  			s.error(c, "after top-level value");
 30229  		}
 30230  		return 10;
 30231  	};
 30232  	stateInString = function(s, c) {
 30233  		var c, s;
 30234  		if (c === 34) {
 30235  			s.step = stateEndValue;
 30236  			return 0;
 30237  		}
 30238  		if (c === 92) {
 30239  			s.step = stateInStringEsc;
 30240  			return 0;
 30241  		}
 30242  		if (c < 32) {
 30243  			return s.error(c, "in string literal");
 30244  		}
 30245  		return 0;
 30246  	};
 30247  	stateInStringEsc = function(s, c) {
 30248  		var _1, c, s;
 30249  		_1 = c;
 30250  		if ((_1 === (98)) || (_1 === (102)) || (_1 === (110)) || (_1 === (114)) || (_1 === (116)) || (_1 === (92)) || (_1 === (47)) || (_1 === (34))) {
 30251  			s.step = stateInString;
 30252  			return 0;
 30253  		} else if (_1 === (117)) {
 30254  			s.step = stateInStringEscU;
 30255  			return 0;
 30256  		}
 30257  		return s.error(c, "in string escape code");
 30258  	};
 30259  	stateInStringEscU = function(s, c) {
 30260  		var c, s;
 30261  		if (48 <= c && c <= 57 || 97 <= c && c <= 102 || 65 <= c && c <= 70) {
 30262  			s.step = stateInStringEscU1;
 30263  			return 0;
 30264  		}
 30265  		return s.error(c, "in \\u hexadecimal character escape");
 30266  	};
 30267  	stateInStringEscU1 = function(s, c) {
 30268  		var c, s;
 30269  		if (48 <= c && c <= 57 || 97 <= c && c <= 102 || 65 <= c && c <= 70) {
 30270  			s.step = stateInStringEscU12;
 30271  			return 0;
 30272  		}
 30273  		return s.error(c, "in \\u hexadecimal character escape");
 30274  	};
 30275  	stateInStringEscU12 = function(s, c) {
 30276  		var c, s;
 30277  		if (48 <= c && c <= 57 || 97 <= c && c <= 102 || 65 <= c && c <= 70) {
 30278  			s.step = stateInStringEscU123;
 30279  			return 0;
 30280  		}
 30281  		return s.error(c, "in \\u hexadecimal character escape");
 30282  	};
 30283  	stateInStringEscU123 = function(s, c) {
 30284  		var c, s;
 30285  		if (48 <= c && c <= 57 || 97 <= c && c <= 102 || 65 <= c && c <= 70) {
 30286  			s.step = stateInString;
 30287  			return 0;
 30288  		}
 30289  		return s.error(c, "in \\u hexadecimal character escape");
 30290  	};
 30291  	stateNeg = function(s, c) {
 30292  		var c, s;
 30293  		if (c === 48) {
 30294  			s.step = state0;
 30295  			return 0;
 30296  		}
 30297  		if (49 <= c && c <= 57) {
 30298  			s.step = state1;
 30299  			return 0;
 30300  		}
 30301  		return s.error(c, "in numeric literal");
 30302  	};
 30303  	state1 = function(s, c) {
 30304  		var c, s;
 30305  		if (48 <= c && c <= 57) {
 30306  			s.step = state1;
 30307  			return 0;
 30308  		}
 30309  		return state0(s, c);
 30310  	};
 30311  	state0 = function(s, c) {
 30312  		var c, s;
 30313  		if (c === 46) {
 30314  			s.step = stateDot;
 30315  			return 0;
 30316  		}
 30317  		if ((c === 101) || (c === 69)) {
 30318  			s.step = stateE;
 30319  			return 0;
 30320  		}
 30321  		return stateEndValue(s, c);
 30322  	};
 30323  	stateDot = function(s, c) {
 30324  		var c, s;
 30325  		if (48 <= c && c <= 57) {
 30326  			s.step = stateDot0;
 30327  			return 0;
 30328  		}
 30329  		return s.error(c, "after decimal point in numeric literal");
 30330  	};
 30331  	stateDot0 = function(s, c) {
 30332  		var c, s;
 30333  		if (48 <= c && c <= 57) {
 30334  			return 0;
 30335  		}
 30336  		if ((c === 101) || (c === 69)) {
 30337  			s.step = stateE;
 30338  			return 0;
 30339  		}
 30340  		return stateEndValue(s, c);
 30341  	};
 30342  	stateE = function(s, c) {
 30343  		var c, s;
 30344  		if ((c === 43) || (c === 45)) {
 30345  			s.step = stateESign;
 30346  			return 0;
 30347  		}
 30348  		return stateESign(s, c);
 30349  	};
 30350  	stateESign = function(s, c) {
 30351  		var c, s;
 30352  		if (48 <= c && c <= 57) {
 30353  			s.step = stateE0;
 30354  			return 0;
 30355  		}
 30356  		return s.error(c, "in exponent of numeric literal");
 30357  	};
 30358  	stateE0 = function(s, c) {
 30359  		var c, s;
 30360  		if (48 <= c && c <= 57) {
 30361  			return 0;
 30362  		}
 30363  		return stateEndValue(s, c);
 30364  	};
 30365  	stateT = function(s, c) {
 30366  		var c, s;
 30367  		if (c === 114) {
 30368  			s.step = stateTr;
 30369  			return 0;
 30370  		}
 30371  		return s.error(c, "in literal true (expecting 'r')");
 30372  	};
 30373  	stateTr = function(s, c) {
 30374  		var c, s;
 30375  		if (c === 117) {
 30376  			s.step = stateTru;
 30377  			return 0;
 30378  		}
 30379  		return s.error(c, "in literal true (expecting 'u')");
 30380  	};
 30381  	stateTru = function(s, c) {
 30382  		var c, s;
 30383  		if (c === 101) {
 30384  			s.step = stateEndValue;
 30385  			return 0;
 30386  		}
 30387  		return s.error(c, "in literal true (expecting 'e')");
 30388  	};
 30389  	stateF = function(s, c) {
 30390  		var c, s;
 30391  		if (c === 97) {
 30392  			s.step = stateFa;
 30393  			return 0;
 30394  		}
 30395  		return s.error(c, "in literal false (expecting 'a')");
 30396  	};
 30397  	stateFa = function(s, c) {
 30398  		var c, s;
 30399  		if (c === 108) {
 30400  			s.step = stateFal;
 30401  			return 0;
 30402  		}
 30403  		return s.error(c, "in literal false (expecting 'l')");
 30404  	};
 30405  	stateFal = function(s, c) {
 30406  		var c, s;
 30407  		if (c === 115) {
 30408  			s.step = stateFals;
 30409  			return 0;
 30410  		}
 30411  		return s.error(c, "in literal false (expecting 's')");
 30412  	};
 30413  	stateFals = function(s, c) {
 30414  		var c, s;
 30415  		if (c === 101) {
 30416  			s.step = stateEndValue;
 30417  			return 0;
 30418  		}
 30419  		return s.error(c, "in literal false (expecting 'e')");
 30420  	};
 30421  	stateN = function(s, c) {
 30422  		var c, s;
 30423  		if (c === 117) {
 30424  			s.step = stateNu;
 30425  			return 0;
 30426  		}
 30427  		return s.error(c, "in literal null (expecting 'u')");
 30428  	};
 30429  	stateNu = function(s, c) {
 30430  		var c, s;
 30431  		if (c === 108) {
 30432  			s.step = stateNul;
 30433  			return 0;
 30434  		}
 30435  		return s.error(c, "in literal null (expecting 'l')");
 30436  	};
 30437  	stateNul = function(s, c) {
 30438  		var c, s;
 30439  		if (c === 108) {
 30440  			s.step = stateEndValue;
 30441  			return 0;
 30442  		}
 30443  		return s.error(c, "in literal null (expecting 'l')");
 30444  	};
 30445  	stateError = function(s, c) {
 30446  		var c, s;
 30447  		return 11;
 30448  	};
 30449  	scanner.ptr.prototype.error = function(c, context) {
 30450  		var c, context, s;
 30451  		s = this;
 30452  		s.step = stateError;
 30453  		s.err = new SyntaxError.ptr("invalid character " + quoteChar(c) + " " + context, s.bytes);
 30454  		return 11;
 30455  	};
 30456  	scanner.prototype.error = function(c, context) { return this.$val.error(c, context); };
 30457  	quoteChar = function(c) {
 30458  		var c, s;
 30459  		if (c === 39) {
 30460  			return "'\\''";
 30461  		}
 30462  		if (c === 34) {
 30463  			return "'\"'";
 30464  		}
 30465  		s = strconv.Quote(($encodeRune(c)));
 30466  		return "'" + $substring(s, 1, (s.length - 1 >> 0)) + "'";
 30467  	};
 30468  	scanner.ptr.prototype.undo = function(scanCode) {
 30469  		var s, scanCode;
 30470  		s = this;
 30471  		if (s.redo) {
 30472  			$panic(new $String("json: invalid use of scanner"));
 30473  		}
 30474  		s.redoCode = scanCode;
 30475  		s.redoState = s.step;
 30476  		s.step = stateRedo;
 30477  		s.redo = true;
 30478  	};
 30479  	scanner.prototype.undo = function(scanCode) { return this.$val.undo(scanCode); };
 30480  	stateRedo = function(s, c) {
 30481  		var c, s;
 30482  		s.redo = false;
 30483  		s.step = s.redoState;
 30484  		return s.redoCode;
 30485  	};
 30486  	NewDecoder = function(r) {
 30487  		var r;
 30488  		return new Decoder.ptr(r, sliceType$1.nil, new decodeState.ptr(sliceType$1.nil, 0, new scanner.ptr($throwNilPointerError, false, sliceType$2.nil, $ifaceNil, false, 0, $throwNilPointerError, new $Int64(0, 0)), new scanner.ptr($throwNilPointerError, false, sliceType$2.nil, $ifaceNil, false, 0, $throwNilPointerError, new $Int64(0, 0)), new structType$1.ptr("", ""), $ifaceNil, false, false), 0, new $Int64(0, 0), new scanner.ptr($throwNilPointerError, false, sliceType$2.nil, $ifaceNil, false, 0, $throwNilPointerError, new $Int64(0, 0)), $ifaceNil, 0, sliceType$2.nil);
 30489  	};
 30490  	$pkg.NewDecoder = NewDecoder;
 30491  	Decoder.ptr.prototype.UseNumber = function() {
 30492  		var dec;
 30493  		dec = this;
 30494  		dec.d.useNumber = true;
 30495  	};
 30496  	Decoder.prototype.UseNumber = function() { return this.$val.UseNumber(); };
 30497  	Decoder.ptr.prototype.DisallowUnknownFields = function() {
 30498  		var dec;
 30499  		dec = this;
 30500  		dec.d.disallowUnknownFields = true;
 30501  	};
 30502  	Decoder.prototype.DisallowUnknownFields = function() { return this.$val.DisallowUnknownFields(); };
 30503  	Decoder.ptr.prototype.Decode = function(v) {
 30504  		var _r$3, _r$4, _r$5, _tuple, dec, err, err$1, n, v, $s, $r;
 30505  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _tuple = $f._tuple; dec = $f.dec; err = $f.err; err$1 = $f.err$1; n = $f.n; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 30506  		dec = this;
 30507  		if (!($interfaceIsEqual(dec.err, $ifaceNil))) {
 30508  			$s = -1; return dec.err;
 30509  		}
 30510  		_r$3 = dec.tokenPrepareForDecode(); /* */ $s = 1; case 1: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 30511  		err = _r$3;
 30512  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 30513  			$s = -1; return err;
 30514  		}
 30515  		if (!dec.tokenValueAllowed()) {
 30516  			$s = -1; return new SyntaxError.ptr("not at beginning of value", dec.offset());
 30517  		}
 30518  		_r$4 = dec.readValue(); /* */ $s = 2; case 2: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 30519  		_tuple = _r$4;
 30520  		n = _tuple[0];
 30521  		err$1 = _tuple[1];
 30522  		if (!($interfaceIsEqual(err$1, $ifaceNil))) {
 30523  			$s = -1; return err$1;
 30524  		}
 30525  		dec.d.init($subslice(dec.buf, dec.scanp, (dec.scanp + n >> 0)));
 30526  		dec.scanp = dec.scanp + (n) >> 0;
 30527  		_r$5 = dec.d.unmarshal(v); /* */ $s = 3; case 3: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
 30528  		err$1 = _r$5;
 30529  		dec.tokenValueEnd();
 30530  		$s = -1; return err$1;
 30531  		/* */ } return; } if ($f === undefined) { $f = { $blk: Decoder.ptr.prototype.Decode }; } $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._tuple = _tuple; $f.dec = dec; $f.err = err; $f.err$1 = err$1; $f.n = n; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
 30532  	};
 30533  	Decoder.prototype.Decode = function(v) { return this.$val.Decode(v); };
 30534  	Decoder.ptr.prototype.Buffered = function() {
 30535  		var dec;
 30536  		dec = this;
 30537  		return bytes.NewReader($subslice(dec.buf, dec.scanp));
 30538  	};
 30539  	Decoder.prototype.Buffered = function() { return this.$val.Buffered(); };
 30540  	Decoder.ptr.prototype.readValue = function() {
 30541  		var _i, _r$3, _r$4, _r$5, _r$6, _ref, _v, c, dec, err, i, n, scanp, v, x, x$1, $s, $r;
 30542  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _i = $f._i; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _ref = $f._ref; _v = $f._v; c = $f.c; dec = $f.dec; err = $f.err; i = $f.i; n = $f.n; scanp = $f.scanp; v = $f.v; x = $f.x; x$1 = $f.x$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 30543  		dec = this;
 30544  		dec.scan.reset();
 30545  		scanp = dec.scanp;
 30546  		err = $ifaceNil;
 30547  		/* while (true) { */ case 1:
 30548  			_ref = $subslice(dec.buf, scanp);
 30549  			_i = 0;
 30550  			/* while (true) { */ case 3:
 30551  				/* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 4; continue; }
 30552  				i = _i;
 30553  				c = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
 30554  				dec.scan.bytes = (x = dec.scan.bytes, x$1 = new $Int64(0, 1), new $Int64(x.$high + x$1.$high, x.$low + x$1.$low));
 30555  				_r$3 = dec.scan.step(dec.scan, c); /* */ $s = 5; case 5: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 30556  				v = _r$3;
 30557  				if (v === 10) {
 30558  					scanp = scanp + (i) >> 0;
 30559  					/* break Input; */ $s = 2; continue s;
 30560  				}
 30561  				if (!((v === 5) || (v === 8))) { _v = false; $s = 8; continue s; }
 30562  				_r$4 = dec.scan.step(dec.scan, 32); /* */ $s = 9; case 9: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 30563  				_v = _r$4 === 10; case 8:
 30564  				/* */ if (_v) { $s = 6; continue; }
 30565  				/* */ $s = 7; continue;
 30566  				/* if (_v) { */ case 6:
 30567  					scanp = scanp + ((i + 1 >> 0)) >> 0;
 30568  					/* break Input; */ $s = 2; continue s;
 30569  				/* } */ case 7:
 30570  				if (v === 11) {
 30571  					dec.err = dec.scan.err;
 30572  					$s = -1; return [0, dec.scan.err];
 30573  				}
 30574  				_i++;
 30575  			/* } */ $s = 3; continue; case 4:
 30576  			scanp = dec.buf.$length;
 30577  			/* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 10; continue; }
 30578  			/* */ $s = 11; continue;
 30579  			/* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 10:
 30580  				/* */ if ($interfaceIsEqual(err, io.EOF)) { $s = 12; continue; }
 30581  				/* */ $s = 13; continue;
 30582  				/* if ($interfaceIsEqual(err, io.EOF)) { */ case 12:
 30583  					_r$5 = dec.scan.step(dec.scan, 32); /* */ $s = 16; case 16: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
 30584  					/* */ if (_r$5 === 10) { $s = 14; continue; }
 30585  					/* */ $s = 15; continue;
 30586  					/* if (_r$5 === 10) { */ case 14:
 30587  						/* break Input; */ $s = 2; continue s;
 30588  					/* } */ case 15:
 30589  					if (nonSpace(dec.buf)) {
 30590  						err = io.ErrUnexpectedEOF;
 30591  					}
 30592  				/* } */ case 13:
 30593  				dec.err = err;
 30594  				$s = -1; return [0, err];
 30595  			/* } */ case 11:
 30596  			n = scanp - dec.scanp >> 0;
 30597  			_r$6 = dec.refill(); /* */ $s = 17; case 17: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
 30598  			err = _r$6;
 30599  			scanp = dec.scanp + n >> 0;
 30600  		/* } */ $s = 1; continue; case 2:
 30601  		$s = -1; return [scanp - dec.scanp >> 0, $ifaceNil];
 30602  		/* */ } return; } if ($f === undefined) { $f = { $blk: Decoder.ptr.prototype.readValue }; } $f._i = _i; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._ref = _ref; $f._v = _v; $f.c = c; $f.dec = dec; $f.err = err; $f.i = i; $f.n = n; $f.scanp = scanp; $f.v = v; $f.x = x; $f.x$1 = x$1; $f.$s = $s; $f.$r = $r; return $f;
 30603  	};
 30604  	Decoder.prototype.readValue = function() { return this.$val.readValue(); };
 30605  	Decoder.ptr.prototype.refill = function() {
 30606  		var _r$3, _tuple, dec, err, n, n$1, newBuf, x, x$1, $s, $r;
 30607  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$3 = $f._r$3; _tuple = $f._tuple; dec = $f.dec; err = $f.err; n = $f.n; n$1 = $f.n$1; newBuf = $f.newBuf; x = $f.x; x$1 = $f.x$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 30608  		dec = this;
 30609  		if (dec.scanp > 0) {
 30610  			dec.scanned = (x = dec.scanned, x$1 = (new $Int64(0, dec.scanp)), new $Int64(x.$high + x$1.$high, x.$low + x$1.$low));
 30611  			n = $copySlice(dec.buf, $subslice(dec.buf, dec.scanp));
 30612  			dec.buf = $subslice(dec.buf, 0, n);
 30613  			dec.scanp = 0;
 30614  		}
 30615  		if ((dec.buf.$capacity - dec.buf.$length >> 0) < 512) {
 30616  			newBuf = $makeSlice(sliceType$1, dec.buf.$length, (($imul(2, dec.buf.$capacity)) + 512 >> 0));
 30617  			$copySlice(newBuf, dec.buf);
 30618  			dec.buf = newBuf;
 30619  		}
 30620  		_r$3 = dec.r.Read($subslice(dec.buf, dec.buf.$length, dec.buf.$capacity)); /* */ $s = 1; case 1: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 30621  		_tuple = _r$3;
 30622  		n$1 = _tuple[0];
 30623  		err = _tuple[1];
 30624  		dec.buf = $subslice(dec.buf, 0, (dec.buf.$length + n$1 >> 0));
 30625  		$s = -1; return err;
 30626  		/* */ } return; } if ($f === undefined) { $f = { $blk: Decoder.ptr.prototype.refill }; } $f._r$3 = _r$3; $f._tuple = _tuple; $f.dec = dec; $f.err = err; $f.n = n; $f.n$1 = n$1; $f.newBuf = newBuf; $f.x = x; $f.x$1 = x$1; $f.$s = $s; $f.$r = $r; return $f;
 30627  	};
 30628  	Decoder.prototype.refill = function() { return this.$val.refill(); };
 30629  	nonSpace = function(b) {
 30630  		var _i, _ref, b, c;
 30631  		_ref = b;
 30632  		_i = 0;
 30633  		while (true) {
 30634  			if (!(_i < _ref.$length)) { break; }
 30635  			c = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
 30636  			if (!isSpace(c)) {
 30637  				return true;
 30638  			}
 30639  			_i++;
 30640  		}
 30641  		return false;
 30642  	};
 30643  	Decoder.ptr.prototype.tokenPrepareForDecode = function() {
 30644  		var _1, _r$3, _r$4, _tuple, _tuple$1, c, c$1, dec, err, err$1, $s, $r;
 30645  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _r$3 = $f._r$3; _r$4 = $f._r$4; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; c = $f.c; c$1 = $f.c$1; dec = $f.dec; err = $f.err; err$1 = $f.err$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 30646  		dec = this;
 30647  			_1 = dec.tokenState;
 30648  			/* */ if (_1 === (3)) { $s = 2; continue; }
 30649  			/* */ if (_1 === (6)) { $s = 3; continue; }
 30650  			/* */ $s = 4; continue;
 30651  			/* if (_1 === (3)) { */ case 2:
 30652  				_r$3 = dec.peek(); /* */ $s = 5; case 5: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 30653  				_tuple = _r$3;
 30654  				c = _tuple[0];
 30655  				err = _tuple[1];
 30656  				if (!($interfaceIsEqual(err, $ifaceNil))) {
 30657  					$s = -1; return err;
 30658  				}
 30659  				if (!((c === 44))) {
 30660  					$s = -1; return new SyntaxError.ptr("expected comma after array element", dec.offset());
 30661  				}
 30662  				dec.scanp = dec.scanp + (1) >> 0;
 30663  				dec.tokenState = 2;
 30664  				$s = 4; continue;
 30665  			/* } else if (_1 === (6)) { */ case 3:
 30666  				_r$4 = dec.peek(); /* */ $s = 6; case 6: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 30667  				_tuple$1 = _r$4;
 30668  				c$1 = _tuple$1[0];
 30669  				err$1 = _tuple$1[1];
 30670  				if (!($interfaceIsEqual(err$1, $ifaceNil))) {
 30671  					$s = -1; return err$1;
 30672  				}
 30673  				if (!((c$1 === 58))) {
 30674  					$s = -1; return new SyntaxError.ptr("expected colon after object key", dec.offset());
 30675  				}
 30676  				dec.scanp = dec.scanp + (1) >> 0;
 30677  				dec.tokenState = 7;
 30678  			/* } */ case 4:
 30679  		case 1:
 30680  		$s = -1; return $ifaceNil;
 30681  		/* */ } return; } if ($f === undefined) { $f = { $blk: Decoder.ptr.prototype.tokenPrepareForDecode }; } $f._1 = _1; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.c = c; $f.c$1 = c$1; $f.dec = dec; $f.err = err; $f.err$1 = err$1; $f.$s = $s; $f.$r = $r; return $f;
 30682  	};
 30683  	Decoder.prototype.tokenPrepareForDecode = function() { return this.$val.tokenPrepareForDecode(); };
 30684  	Decoder.ptr.prototype.tokenValueAllowed = function() {
 30685  		var _1, dec;
 30686  		dec = this;
 30687  		_1 = dec.tokenState;
 30688  		if ((_1 === (0)) || (_1 === (1)) || (_1 === (2)) || (_1 === (7))) {
 30689  			return true;
 30690  		}
 30691  		return false;
 30692  	};
 30693  	Decoder.prototype.tokenValueAllowed = function() { return this.$val.tokenValueAllowed(); };
 30694  	Decoder.ptr.prototype.tokenValueEnd = function() {
 30695  		var _1, dec;
 30696  		dec = this;
 30697  		_1 = dec.tokenState;
 30698  		if ((_1 === (1)) || (_1 === (2))) {
 30699  			dec.tokenState = 3;
 30700  		} else if (_1 === (7)) {
 30701  			dec.tokenState = 8;
 30702  		}
 30703  	};
 30704  	Decoder.prototype.tokenValueEnd = function() { return this.$val.tokenValueEnd(); };
 30705  	Delim.prototype.String = function() {
 30706  		var d;
 30707  		d = this.$val;
 30708  		return ($encodeRune(d));
 30709  	};
 30710  	$ptrType(Delim).prototype.String = function() { return new Delim(this.$get()).String(); };
 30711  	Decoder.ptr.prototype.Token = function() {
 30712  		var _1, _r$3, _r$4, _r$5, _r$6, _tuple, c, dec, err, err$1, err$2, old, x, x$1, x$2, x$3, x$4, x$5, $s, $r;
 30713  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _tuple = $f._tuple; c = $f.c; dec = $f.dec; err = $f.err; err$1 = $f.err$1; err$2 = $f.err$2; old = $f.old; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; x$3 = $f.x$3; x$4 = $f.x$4; x$5 = $f.x$5; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 30714  		dec = this;
 30715  		/* while (true) { */ case 1:
 30716  			x = [x];
 30717  			x$1 = [x$1];
 30718  			_r$3 = dec.peek(); /* */ $s = 3; case 3: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 30719  			_tuple = _r$3;
 30720  			c = _tuple[0];
 30721  			err = _tuple[1];
 30722  			if (!($interfaceIsEqual(err, $ifaceNil))) {
 30723  				$s = -1; return [$ifaceNil, err];
 30724  			}
 30725  				_1 = c;
 30726  				/* */ if (_1 === (91)) { $s = 5; continue; }
 30727  				/* */ if (_1 === (93)) { $s = 6; continue; }
 30728  				/* */ if (_1 === (123)) { $s = 7; continue; }
 30729  				/* */ if (_1 === (125)) { $s = 8; continue; }
 30730  				/* */ if (_1 === (58)) { $s = 9; continue; }
 30731  				/* */ if (_1 === (44)) { $s = 10; continue; }
 30732  				/* */ if (_1 === (34)) { $s = 11; continue; }
 30733  				/* */ $s = 12; continue;
 30734  				/* if (_1 === (91)) { */ case 5:
 30735  					if (!dec.tokenValueAllowed()) {
 30736  						$s = -1; return dec.tokenError(c);
 30737  					}
 30738  					dec.scanp = dec.scanp + (1) >> 0;
 30739  					dec.tokenStack = $append(dec.tokenStack, dec.tokenState);
 30740  					dec.tokenState = 1;
 30741  					$s = -1; return [new Delim(91), $ifaceNil];
 30742  				/* } else if (_1 === (93)) { */ case 6:
 30743  					if (!((dec.tokenState === 1)) && !((dec.tokenState === 3))) {
 30744  						$s = -1; return dec.tokenError(c);
 30745  					}
 30746  					dec.scanp = dec.scanp + (1) >> 0;
 30747  					dec.tokenState = (x$2 = dec.tokenStack, x$3 = dec.tokenStack.$length - 1 >> 0, ((x$3 < 0 || x$3 >= x$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + x$3]));
 30748  					dec.tokenStack = $subslice(dec.tokenStack, 0, (dec.tokenStack.$length - 1 >> 0));
 30749  					dec.tokenValueEnd();
 30750  					$s = -1; return [new Delim(93), $ifaceNil];
 30751  				/* } else if (_1 === (123)) { */ case 7:
 30752  					if (!dec.tokenValueAllowed()) {
 30753  						$s = -1; return dec.tokenError(c);
 30754  					}
 30755  					dec.scanp = dec.scanp + (1) >> 0;
 30756  					dec.tokenStack = $append(dec.tokenStack, dec.tokenState);
 30757  					dec.tokenState = 4;
 30758  					$s = -1; return [new Delim(123), $ifaceNil];
 30759  				/* } else if (_1 === (125)) { */ case 8:
 30760  					if (!((dec.tokenState === 4)) && !((dec.tokenState === 8))) {
 30761  						$s = -1; return dec.tokenError(c);
 30762  					}
 30763  					dec.scanp = dec.scanp + (1) >> 0;
 30764  					dec.tokenState = (x$4 = dec.tokenStack, x$5 = dec.tokenStack.$length - 1 >> 0, ((x$5 < 0 || x$5 >= x$4.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$4.$array[x$4.$offset + x$5]));
 30765  					dec.tokenStack = $subslice(dec.tokenStack, 0, (dec.tokenStack.$length - 1 >> 0));
 30766  					dec.tokenValueEnd();
 30767  					$s = -1; return [new Delim(125), $ifaceNil];
 30768  				/* } else if (_1 === (58)) { */ case 9:
 30769  					if (!((dec.tokenState === 6))) {
 30770  						$s = -1; return dec.tokenError(c);
 30771  					}
 30772  					dec.scanp = dec.scanp + (1) >> 0;
 30773  					dec.tokenState = 7;
 30774  					/* continue; */ $s = 1; continue;
 30775  					$s = 13; continue;
 30776  				/* } else if (_1 === (44)) { */ case 10:
 30777  					/* */ if (dec.tokenState === 3) { $s = 14; continue; }
 30778  					/* */ $s = 15; continue;
 30779  					/* if (dec.tokenState === 3) { */ case 14:
 30780  						dec.scanp = dec.scanp + (1) >> 0;
 30781  						dec.tokenState = 2;
 30782  						/* continue; */ $s = 1; continue;
 30783  					/* } */ case 15:
 30784  					if (dec.tokenState === 8) {
 30785  						dec.scanp = dec.scanp + (1) >> 0;
 30786  						dec.tokenState = 5;
 30787  						/* continue; */ $s = 1; continue;
 30788  					}
 30789  					$s = -1; return dec.tokenError(c);
 30790  				/* } else if (_1 === (34)) { */ case 11:
 30791  					/* */ if ((dec.tokenState === 4) || (dec.tokenState === 5)) { $s = 16; continue; }
 30792  					/* */ $s = 17; continue;
 30793  					/* if ((dec.tokenState === 4) || (dec.tokenState === 5)) { */ case 16:
 30794  						x[0] = "";
 30795  						old = dec.tokenState;
 30796  						dec.tokenState = 0;
 30797  						_r$4 = dec.Decode((x.$ptr || (x.$ptr = new ptrType$9(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, x)))); /* */ $s = 18; case 18: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 30798  						err$1 = _r$4;
 30799  						dec.tokenState = old;
 30800  						if (!($interfaceIsEqual(err$1, $ifaceNil))) {
 30801  							$s = -1; return [$ifaceNil, err$1];
 30802  						}
 30803  						dec.tokenState = 6;
 30804  						$s = -1; return [new $String(x[0]), $ifaceNil];
 30805  					/* } */ case 17:
 30806  					if (!dec.tokenValueAllowed()) {
 30807  						$s = -1; return dec.tokenError(c);
 30808  					}
 30809  					x$1[0] = $ifaceNil;
 30810  					_r$5 = dec.Decode((x$1.$ptr || (x$1.$ptr = new ptrType$10(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, x$1)))); /* */ $s = 19; case 19: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
 30811  					err$2 = _r$5;
 30812  					if (!($interfaceIsEqual(err$2, $ifaceNil))) {
 30813  						$s = -1; return [$ifaceNil, err$2];
 30814  					}
 30815  					$s = -1; return [x$1[0], $ifaceNil];
 30816  				/* } else { */ case 12:
 30817  					if (!dec.tokenValueAllowed()) {
 30818  						$s = -1; return dec.tokenError(c);
 30819  					}
 30820  					x$1[0] = $ifaceNil;
 30821  					_r$6 = dec.Decode((x$1.$ptr || (x$1.$ptr = new ptrType$10(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, x$1)))); /* */ $s = 20; case 20: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
 30822  					err$2 = _r$6;
 30823  					if (!($interfaceIsEqual(err$2, $ifaceNil))) {
 30824  						$s = -1; return [$ifaceNil, err$2];
 30825  					}
 30826  					$s = -1; return [x$1[0], $ifaceNil];
 30827  				/* } */ case 13:
 30828  			case 4:
 30829  		/* } */ $s = 1; continue; case 2:
 30830  		$s = -1; return [$ifaceNil, $ifaceNil];
 30831  		/* */ } return; } if ($f === undefined) { $f = { $blk: Decoder.ptr.prototype.Token }; } $f._1 = _1; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._tuple = _tuple; $f.c = c; $f.dec = dec; $f.err = err; $f.err$1 = err$1; $f.err$2 = err$2; $f.old = old; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.x$3 = x$3; $f.x$4 = x$4; $f.x$5 = x$5; $f.$s = $s; $f.$r = $r; return $f;
 30832  	};
 30833  	Decoder.prototype.Token = function() { return this.$val.Token(); };
 30834  	Decoder.ptr.prototype.tokenError = function(c) {
 30835  		var _1, c, context, dec;
 30836  		dec = this;
 30837  		context = "";
 30838  		_1 = dec.tokenState;
 30839  		if (_1 === (0)) {
 30840  			context = " looking for beginning of value";
 30841  		} else if ((_1 === (1)) || (_1 === (2)) || (_1 === (7))) {
 30842  			context = " looking for beginning of value";
 30843  		} else if (_1 === (3)) {
 30844  			context = " after array element";
 30845  		} else if (_1 === (5)) {
 30846  			context = " looking for beginning of object key string";
 30847  		} else if (_1 === (6)) {
 30848  			context = " after object key";
 30849  		} else if (_1 === (8)) {
 30850  			context = " after object key:value pair";
 30851  		}
 30852  		return [$ifaceNil, new SyntaxError.ptr("invalid character " + quoteChar(c) + " " + context, dec.offset())];
 30853  	};
 30854  	Decoder.prototype.tokenError = function(c) { return this.$val.tokenError(c); };
 30855  	Decoder.ptr.prototype.More = function() {
 30856  		var _r$3, _tuple, c, dec, err, $s, $r;
 30857  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$3 = $f._r$3; _tuple = $f._tuple; c = $f.c; dec = $f.dec; err = $f.err; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 30858  		dec = this;
 30859  		_r$3 = dec.peek(); /* */ $s = 1; case 1: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 30860  		_tuple = _r$3;
 30861  		c = _tuple[0];
 30862  		err = _tuple[1];
 30863  		$s = -1; return $interfaceIsEqual(err, $ifaceNil) && !((c === 93)) && !((c === 125));
 30864  		/* */ } return; } if ($f === undefined) { $f = { $blk: Decoder.ptr.prototype.More }; } $f._r$3 = _r$3; $f._tuple = _tuple; $f.c = c; $f.dec = dec; $f.err = err; $f.$s = $s; $f.$r = $r; return $f;
 30865  	};
 30866  	Decoder.prototype.More = function() { return this.$val.More(); };
 30867  	Decoder.ptr.prototype.peek = function() {
 30868  		var _r$3, c, dec, err, i, x, $s, $r;
 30869  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$3 = $f._r$3; c = $f.c; dec = $f.dec; err = $f.err; i = $f.i; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 30870  		dec = this;
 30871  		err = $ifaceNil;
 30872  		/* while (true) { */ case 1:
 30873  			i = dec.scanp;
 30874  			/* while (true) { */ case 3:
 30875  				/* if (!(i < dec.buf.$length)) { break; } */ if(!(i < dec.buf.$length)) { $s = 4; continue; }
 30876  				c = (x = dec.buf, ((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i]));
 30877  				if (isSpace(c)) {
 30878  					i = i + (1) >> 0;
 30879  					/* continue; */ $s = 3; continue;
 30880  				}
 30881  				dec.scanp = i;
 30882  				$s = -1; return [c, $ifaceNil];
 30883  			/* } */ $s = 3; continue; case 4:
 30884  			if (!($interfaceIsEqual(err, $ifaceNil))) {
 30885  				$s = -1; return [0, err];
 30886  			}
 30887  			_r$3 = dec.refill(); /* */ $s = 5; case 5: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 30888  			err = _r$3;
 30889  		/* } */ $s = 1; continue; case 2:
 30890  		$s = -1; return [0, $ifaceNil];
 30891  		/* */ } return; } if ($f === undefined) { $f = { $blk: Decoder.ptr.prototype.peek }; } $f._r$3 = _r$3; $f.c = c; $f.dec = dec; $f.err = err; $f.i = i; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
 30892  	};
 30893  	Decoder.prototype.peek = function() { return this.$val.peek(); };
 30894  	Decoder.ptr.prototype.offset = function() {
 30895  		var dec, x, x$1;
 30896  		dec = this;
 30897  		return (x = dec.scanned, x$1 = (new $Int64(0, dec.scanp)), new $Int64(x.$high + x$1.$high, x.$low + x$1.$low));
 30898  	};
 30899  	Decoder.prototype.offset = function() { return this.$val.offset(); };
 30900  	parseTag = function(tag) {
 30901  		var idx, tag;
 30902  		idx = strings.Index(tag, ",");
 30903  		if (!((idx === -1))) {
 30904  			return [$substring(tag, 0, idx), ($substring(tag, (idx + 1 >> 0)))];
 30905  		}
 30906  		return [tag, ""];
 30907  	};
 30908  	tagOptions.prototype.Contains = function(optionName) {
 30909  		var _tmp, _tmp$1, i, next, o, optionName, s;
 30910  		o = this.$val;
 30911  		if (o.length === 0) {
 30912  			return false;
 30913  		}
 30914  		s = (o);
 30915  		while (true) {
 30916  			if (!(!(s === ""))) { break; }
 30917  			next = "";
 30918  			i = strings.Index(s, ",");
 30919  			if (i >= 0) {
 30920  				_tmp = $substring(s, 0, i);
 30921  				_tmp$1 = $substring(s, (i + 1 >> 0));
 30922  				s = _tmp;
 30923  				next = _tmp$1;
 30924  			}
 30925  			if (s === optionName) {
 30926  				return true;
 30927  			}
 30928  			s = next;
 30929  		}
 30930  		return false;
 30931  	};
 30932  	$ptrType(tagOptions).prototype.Contains = function(optionName) { return new tagOptions(this.$get()).Contains(optionName); };
 30933  	ptrType$4.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}];
 30934  	ptrType$12.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}];
 30935  	Number.methods = [{prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Float64", name: "Float64", pkg: "", typ: $funcType([], [$Float64, $error], false)}, {prop: "Int64", name: "Int64", pkg: "", typ: $funcType([], [$Int64, $error], false)}];
 30936  	ptrType$13.methods = [{prop: "unmarshal", name: "unmarshal", pkg: "encoding/json", typ: $funcType([$emptyInterface], [$error], false)}, {prop: "init", name: "init", pkg: "encoding/json", typ: $funcType([sliceType$1], [ptrType$13], false)}, {prop: "error", name: "error", pkg: "encoding/json", typ: $funcType([$error], [], false)}, {prop: "saveError", name: "saveError", pkg: "encoding/json", typ: $funcType([$error], [], false)}, {prop: "addErrorContext", name: "addErrorContext", pkg: "encoding/json", typ: $funcType([$error], [$error], false)}, {prop: "next", name: "next", pkg: "encoding/json", typ: $funcType([], [sliceType$1], false)}, {prop: "scanWhile", name: "scanWhile", pkg: "encoding/json", typ: $funcType([$Int], [$Int], false)}, {prop: "value", name: "value", pkg: "encoding/json", typ: $funcType([reflect.Value], [], false)}, {prop: "valueQuoted", name: "valueQuoted", pkg: "encoding/json", typ: $funcType([], [$emptyInterface], false)}, {prop: "indirect", name: "indirect", pkg: "encoding/json", typ: $funcType([reflect.Value, $Bool], [Unmarshaler, encoding.TextUnmarshaler, reflect.Value], false)}, {prop: "array", name: "array", pkg: "encoding/json", typ: $funcType([reflect.Value], [], false)}, {prop: "object", name: "object", pkg: "encoding/json", typ: $funcType([reflect.Value], [], false)}, {prop: "literal", name: "literal", pkg: "encoding/json", typ: $funcType([reflect.Value], [], false)}, {prop: "convertNumber", name: "convertNumber", pkg: "encoding/json", typ: $funcType([$String], [$emptyInterface, $error], false)}, {prop: "literalStore", name: "literalStore", pkg: "encoding/json", typ: $funcType([sliceType$1, reflect.Value, $Bool], [], false)}, {prop: "valueInterface", name: "valueInterface", pkg: "encoding/json", typ: $funcType([], [$emptyInterface], false)}, {prop: "arrayInterface", name: "arrayInterface", pkg: "encoding/json", typ: $funcType([], [sliceType], false)}, {prop: "objectInterface", name: "objectInterface", pkg: "encoding/json", typ: $funcType([], [mapType], false)}, {prop: "literalInterface", name: "literalInterface", pkg: "encoding/json", typ: $funcType([], [$emptyInterface], false)}];
 30937  	byIndex.methods = [{prop: "Len", name: "Len", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Swap", name: "Swap", pkg: "", typ: $funcType([$Int, $Int], [], false)}, {prop: "Less", name: "Less", pkg: "", typ: $funcType([$Int, $Int], [$Bool], false)}];
 30938  	ptrType$25.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}];
 30939  	ptrType$26.methods = [{prop: "reset", name: "reset", pkg: "encoding/json", typ: $funcType([], [], false)}, {prop: "eof", name: "eof", pkg: "encoding/json", typ: $funcType([], [$Int], false)}, {prop: "pushParseState", name: "pushParseState", pkg: "encoding/json", typ: $funcType([$Int], [], false)}, {prop: "popParseState", name: "popParseState", pkg: "encoding/json", typ: $funcType([], [], false)}, {prop: "error", name: "error", pkg: "encoding/json", typ: $funcType([$Uint8, $String], [$Int], false)}, {prop: "undo", name: "undo", pkg: "encoding/json", typ: $funcType([$Int], [], false)}];
 30940  	ptrType$27.methods = [{prop: "UseNumber", name: "UseNumber", pkg: "", typ: $funcType([], [], false)}, {prop: "DisallowUnknownFields", name: "DisallowUnknownFields", pkg: "", typ: $funcType([], [], false)}, {prop: "Decode", name: "Decode", pkg: "", typ: $funcType([$emptyInterface], [$error], false)}, {prop: "Buffered", name: "Buffered", pkg: "", typ: $funcType([], [io.Reader], false)}, {prop: "readValue", name: "readValue", pkg: "encoding/json", typ: $funcType([], [$Int, $error], false)}, {prop: "refill", name: "refill", pkg: "encoding/json", typ: $funcType([], [$error], false)}, {prop: "tokenPrepareForDecode", name: "tokenPrepareForDecode", pkg: "encoding/json", typ: $funcType([], [$error], false)}, {prop: "tokenValueAllowed", name: "tokenValueAllowed", pkg: "encoding/json", typ: $funcType([], [$Bool], false)}, {prop: "tokenValueEnd", name: "tokenValueEnd", pkg: "encoding/json", typ: $funcType([], [], false)}, {prop: "Token", name: "Token", pkg: "", typ: $funcType([], [Token, $error], false)}, {prop: "tokenError", name: "tokenError", pkg: "encoding/json", typ: $funcType([$Uint8], [Token, $error], false)}, {prop: "More", name: "More", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "peek", name: "peek", pkg: "encoding/json", typ: $funcType([], [$Uint8, $error], false)}, {prop: "offset", name: "offset", pkg: "encoding/json", typ: $funcType([], [$Int64], false)}];
 30941  	Delim.methods = [{prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}];
 30942  	tagOptions.methods = [{prop: "Contains", name: "Contains", pkg: "", typ: $funcType([$String], [$Bool], false)}];
 30943  	Unmarshaler.init([{prop: "UnmarshalJSON", name: "UnmarshalJSON", pkg: "", typ: $funcType([sliceType$1], [$error], false)}]);
 30944  	UnmarshalTypeError.init("", [{prop: "Value", name: "Value", anonymous: false, exported: true, typ: $String, tag: ""}, {prop: "Type", name: "Type", anonymous: false, exported: true, typ: reflect.Type, tag: ""}, {prop: "Offset", name: "Offset", anonymous: false, exported: true, typ: $Int64, tag: ""}, {prop: "Struct", name: "Struct", anonymous: false, exported: true, typ: $String, tag: ""}, {prop: "Field", name: "Field", anonymous: false, exported: true, typ: $String, tag: ""}]);
 30945  	InvalidUnmarshalError.init("", [{prop: "Type", name: "Type", anonymous: false, exported: true, typ: reflect.Type, tag: ""}]);
 30946  	decodeState.init("encoding/json", [{prop: "data", name: "data", anonymous: false, exported: false, typ: sliceType$1, tag: ""}, {prop: "off", name: "off", anonymous: false, exported: false, typ: $Int, tag: ""}, {prop: "scan", name: "scan", anonymous: false, exported: false, typ: scanner, tag: ""}, {prop: "nextscan", name: "nextscan", anonymous: false, exported: false, typ: scanner, tag: ""}, {prop: "errorContext", name: "errorContext", anonymous: false, exported: false, typ: structType$1, tag: ""}, {prop: "savedError", name: "savedError", anonymous: false, exported: false, typ: $error, tag: ""}, {prop: "useNumber", name: "useNumber", anonymous: false, exported: false, typ: $Bool, tag: ""}, {prop: "disallowUnknownFields", name: "disallowUnknownFields", anonymous: false, exported: false, typ: $Bool, tag: ""}]);
 30947  	unquotedValue.init("", []);
 30948  	Marshaler.init([{prop: "MarshalJSON", name: "MarshalJSON", pkg: "", typ: $funcType([], [sliceType$1, $error], false)}]);
 30949  	field.init("encoding/json", [{prop: "name", name: "name", anonymous: false, exported: false, typ: $String, tag: ""}, {prop: "nameBytes", name: "nameBytes", anonymous: false, exported: false, typ: sliceType$1, tag: ""}, {prop: "equalFold", name: "equalFold", anonymous: false, exported: false, typ: funcType, tag: ""}, {prop: "tag", name: "tag", anonymous: false, exported: false, typ: $Bool, tag: ""}, {prop: "index", name: "index", anonymous: false, exported: false, typ: sliceType$2, tag: ""}, {prop: "typ", name: "typ", anonymous: false, exported: false, typ: reflect.Type, tag: ""}, {prop: "omitEmpty", name: "omitEmpty", anonymous: false, exported: false, typ: $Bool, tag: ""}, {prop: "quoted", name: "quoted", anonymous: false, exported: false, typ: $Bool, tag: ""}]);
 30950  	byIndex.init(field);
 30951  	SyntaxError.init("encoding/json", [{prop: "msg", name: "msg", anonymous: false, exported: false, typ: $String, tag: ""}, {prop: "Offset", name: "Offset", anonymous: false, exported: true, typ: $Int64, tag: ""}]);
 30952  	scanner.init("encoding/json", [{prop: "step", name: "step", anonymous: false, exported: false, typ: funcType$1, tag: ""}, {prop: "endTop", name: "endTop", anonymous: false, exported: false, typ: $Bool, tag: ""}, {prop: "parseState", name: "parseState", anonymous: false, exported: false, typ: sliceType$2, tag: ""}, {prop: "err", name: "err", anonymous: false, exported: false, typ: $error, tag: ""}, {prop: "redo", name: "redo", anonymous: false, exported: false, typ: $Bool, tag: ""}, {prop: "redoCode", name: "redoCode", anonymous: false, exported: false, typ: $Int, tag: ""}, {prop: "redoState", name: "redoState", anonymous: false, exported: false, typ: funcType$1, tag: ""}, {prop: "bytes", name: "bytes", anonymous: false, exported: false, typ: $Int64, tag: ""}]);
 30953  	Decoder.init("encoding/json", [{prop: "r", name: "r", anonymous: false, exported: false, typ: io.Reader, tag: ""}, {prop: "buf", name: "buf", anonymous: false, exported: false, typ: sliceType$1, tag: ""}, {prop: "d", name: "d", anonymous: false, exported: false, typ: decodeState, tag: ""}, {prop: "scanp", name: "scanp", anonymous: false, exported: false, typ: $Int, tag: ""}, {prop: "scanned", name: "scanned", anonymous: false, exported: false, typ: $Int64, tag: ""}, {prop: "scan", name: "scan", anonymous: false, exported: false, typ: scanner, tag: ""}, {prop: "err", name: "err", anonymous: false, exported: false, typ: $error, tag: ""}, {prop: "tokenState", name: "tokenState", anonymous: false, exported: false, typ: $Int, tag: ""}, {prop: "tokenStack", name: "tokenStack", anonymous: false, exported: false, typ: sliceType$2, tag: ""}]);
 30954  	Token.init([]);
 30955  	$init = function() {
 30956  		$pkg.$init = function() {};
 30957  		/* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 30958  		$r = bytes.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 30959  		$r = encoding.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 30960  		$r = base64.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 30961  		$r = errors.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 30962  		$r = fmt.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 30963  		$r = nosync.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 30964  		$r = io.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 30965  		$r = math.$init(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 30966  		$r = reflect.$init(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 30967  		$r = runtime.$init(); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 30968  		$r = sort.$init(); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 30969  		$r = strconv.$init(); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 30970  		$r = strings.$init(); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 30971  		$r = atomic.$init(); /* */ $s = 14; case 14: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 30972  		$r = unicode.$init(); /* */ $s = 15; case 15: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 30973  		$r = utf16.$init(); /* */ $s = 16; case 16: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 30974  		$r = utf8.$init(); /* */ $s = 17; case 17: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 30975  		fieldCache = new structType.ptr(new atomic.Value.ptr($ifaceNil), new nosync.Mutex.ptr(false));
 30976  		errPhase = errors.New("JSON decoder out of sync - data changing underfoot?");
 30977  		nullLiteral = (new sliceType$1($stringToBytes("null")));
 30978  		_r = reflect.TypeOf($newDataPointer($ifaceNil, ptrType)).Elem(); /* */ $s = 18; case 18: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 30979  		textUnmarshalerType = _r;
 30980  		numberType = reflect.TypeOf(new Number(""));
 30981  		_r$1 = reflect.TypeOf($newDataPointer($ifaceNil, ptrType$1)).Elem(); /* */ $s = 19; case 19: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 30982  		marshalerType = _r$1;
 30983  		_r$2 = reflect.TypeOf($newDataPointer($ifaceNil, ptrType$2)).Elem(); /* */ $s = 20; case 20: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 30984  		textMarshalerType = _r$2;
 30985  		/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
 30986  	};
 30987  	$pkg.$init = $init;
 30988  	return $pkg;
 30989  })();
 30990  $packages["path"] = (function() {
 30991  	var $pkg = {}, $init, errors, strings, utf8, lazybuf, sliceType, ptrType, Clean, Split, Base;
 30992  	errors = $packages["errors"];
 30993  	strings = $packages["strings"];
 30994  	utf8 = $packages["unicode/utf8"];
 30995  	lazybuf = $pkg.lazybuf = $newType(0, $kindStruct, "path.lazybuf", true, "path", false, function(s_, buf_, w_) {
 30996  		this.$val = this;
 30997  		if (arguments.length === 0) {
 30998  			this.s = "";
 30999  			this.buf = sliceType.nil;
 31000  			this.w = 0;
 31001  			return;
 31002  		}
 31003  		this.s = s_;
 31004  		this.buf = buf_;
 31005  		this.w = w_;
 31006  	});
 31007  	sliceType = $sliceType($Uint8);
 31008  	ptrType = $ptrType(lazybuf);
 31009  	lazybuf.ptr.prototype.index = function(i) {
 31010  		var b, i, x;
 31011  		b = this;
 31012  		if (!(b.buf === sliceType.nil)) {
 31013  			return (x = b.buf, ((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i]));
 31014  		}
 31015  		return b.s.charCodeAt(i);
 31016  	};
 31017  	lazybuf.prototype.index = function(i) { return this.$val.index(i); };
 31018  	lazybuf.ptr.prototype.append = function(c) {
 31019  		var b, c, x, x$1;
 31020  		b = this;
 31021  		if (b.buf === sliceType.nil) {
 31022  			if (b.w < b.s.length && (b.s.charCodeAt(b.w) === c)) {
 31023  				b.w = b.w + (1) >> 0;
 31024  				return;
 31025  			}
 31026  			b.buf = $makeSlice(sliceType, b.s.length);
 31027  			$copyString(b.buf, $substring(b.s, 0, b.w));
 31028  		}
 31029  		(x = b.buf, x$1 = b.w, ((x$1 < 0 || x$1 >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + x$1] = c));
 31030  		b.w = b.w + (1) >> 0;
 31031  	};
 31032  	lazybuf.prototype.append = function(c) { return this.$val.append(c); };
 31033  	lazybuf.ptr.prototype.string = function() {
 31034  		var b;
 31035  		b = this;
 31036  		if (b.buf === sliceType.nil) {
 31037  			return $substring(b.s, 0, b.w);
 31038  		}
 31039  		return ($bytesToString($subslice(b.buf, 0, b.w)));
 31040  	};
 31041  	lazybuf.prototype.string = function() { return this.$val.string(); };
 31042  	Clean = function(path) {
 31043  		var _tmp, _tmp$1, _tmp$2, _tmp$3, dotdot, n, out, path, r, rooted;
 31044  		if (path === "") {
 31045  			return ".";
 31046  		}
 31047  		rooted = path.charCodeAt(0) === 47;
 31048  		n = path.length;
 31049  		out = new lazybuf.ptr(path, sliceType.nil, 0);
 31050  		_tmp = 0;
 31051  		_tmp$1 = 0;
 31052  		r = _tmp;
 31053  		dotdot = _tmp$1;
 31054  		if (rooted) {
 31055  			out.append(47);
 31056  			_tmp$2 = 1;
 31057  			_tmp$3 = 1;
 31058  			r = _tmp$2;
 31059  			dotdot = _tmp$3;
 31060  		}
 31061  		while (true) {
 31062  			if (!(r < n)) { break; }
 31063  			if ((path.charCodeAt(r) === 47)) {
 31064  				r = r + (1) >> 0;
 31065  			} else if ((path.charCodeAt(r) === 46) && (((r + 1 >> 0) === n) || (path.charCodeAt((r + 1 >> 0)) === 47))) {
 31066  				r = r + (1) >> 0;
 31067  			} else if ((path.charCodeAt(r) === 46) && (path.charCodeAt((r + 1 >> 0)) === 46) && (((r + 2 >> 0) === n) || (path.charCodeAt((r + 2 >> 0)) === 47))) {
 31068  				r = r + (2) >> 0;
 31069  				if (out.w > dotdot) {
 31070  					out.w = out.w - (1) >> 0;
 31071  					while (true) {
 31072  						if (!(out.w > dotdot && !((out.index(out.w) === 47)))) { break; }
 31073  						out.w = out.w - (1) >> 0;
 31074  					}
 31075  				} else if (!rooted) {
 31076  					if (out.w > 0) {
 31077  						out.append(47);
 31078  					}
 31079  					out.append(46);
 31080  					out.append(46);
 31081  					dotdot = out.w;
 31082  				}
 31083  			} else {
 31084  				if (rooted && !((out.w === 1)) || !rooted && !((out.w === 0))) {
 31085  					out.append(47);
 31086  				}
 31087  				while (true) {
 31088  					if (!(r < n && !((path.charCodeAt(r) === 47)))) { break; }
 31089  					out.append(path.charCodeAt(r));
 31090  					r = r + (1) >> 0;
 31091  				}
 31092  			}
 31093  		}
 31094  		if (out.w === 0) {
 31095  			return ".";
 31096  		}
 31097  		return out.string();
 31098  	};
 31099  	$pkg.Clean = Clean;
 31100  	Split = function(path) {
 31101  		var _tmp, _tmp$1, dir, file, i, path;
 31102  		dir = "";
 31103  		file = "";
 31104  		i = strings.LastIndex(path, "/");
 31105  		_tmp = $substring(path, 0, (i + 1 >> 0));
 31106  		_tmp$1 = $substring(path, (i + 1 >> 0));
 31107  		dir = _tmp;
 31108  		file = _tmp$1;
 31109  		return [dir, file];
 31110  	};
 31111  	$pkg.Split = Split;
 31112  	Base = function(path) {
 31113  		var i, path;
 31114  		if (path === "") {
 31115  			return ".";
 31116  		}
 31117  		while (true) {
 31118  			if (!(path.length > 0 && (path.charCodeAt((path.length - 1 >> 0)) === 47))) { break; }
 31119  			path = $substring(path, 0, (path.length - 1 >> 0));
 31120  		}
 31121  		i = strings.LastIndex(path, "/");
 31122  		if (i >= 0) {
 31123  			path = $substring(path, (i + 1 >> 0));
 31124  		}
 31125  		if (path === "") {
 31126  			return "/";
 31127  		}
 31128  		return path;
 31129  	};
 31130  	$pkg.Base = Base;
 31131  	ptrType.methods = [{prop: "index", name: "index", pkg: "path", typ: $funcType([$Int], [$Uint8], false)}, {prop: "append", name: "append", pkg: "path", typ: $funcType([$Uint8], [], false)}, {prop: "string", name: "string", pkg: "path", typ: $funcType([], [$String], false)}];
 31132  	lazybuf.init("path", [{prop: "s", name: "s", anonymous: false, exported: false, typ: $String, tag: ""}, {prop: "buf", name: "buf", anonymous: false, exported: false, typ: sliceType, tag: ""}, {prop: "w", name: "w", anonymous: false, exported: false, typ: $Int, tag: ""}]);
 31133  	$init = function() {
 31134  		$pkg.$init = function() {};
 31135  		/* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 31136  		$r = errors.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 31137  		$r = strings.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 31138  		$r = utf8.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 31139  		$pkg.ErrBadPattern = errors.New("syntax error in pattern");
 31140  		/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
 31141  	};
 31142  	$pkg.$init = $init;
 31143  	return $pkg;
 31144  })();
 31145  $packages["github.com/StackExchange/dnscontrol/vendor/github.com/pkg/errors"] = (function() {
 31146  	var $pkg = {}, $init, fmt, io, path, runtime, strings, fundamental, Frame, StackTrace, stack, ptrType, sliceType, ptrType$1, sliceType$1, arrayType, sliceType$2, ptrType$2, Errorf, callers, funcname;
 31147  	fmt = $packages["fmt"];
 31148  	io = $packages["io"];
 31149  	path = $packages["path"];
 31150  	runtime = $packages["runtime"];
 31151  	strings = $packages["strings"];
 31152  	fundamental = $pkg.fundamental = $newType(0, $kindStruct, "errors.fundamental", true, "github.com/StackExchange/dnscontrol/vendor/github.com/pkg/errors", false, function(msg_, stack_) {
 31153  		this.$val = this;
 31154  		if (arguments.length === 0) {
 31155  			this.msg = "";
 31156  			this.stack = ptrType.nil;
 31157  			return;
 31158  		}
 31159  		this.msg = msg_;
 31160  		this.stack = stack_;
 31161  	});
 31162  	Frame = $pkg.Frame = $newType(4, $kindUintptr, "errors.Frame", true, "github.com/StackExchange/dnscontrol/vendor/github.com/pkg/errors", true, null);
 31163  	StackTrace = $pkg.StackTrace = $newType(12, $kindSlice, "errors.StackTrace", true, "github.com/StackExchange/dnscontrol/vendor/github.com/pkg/errors", true, null);
 31164  	stack = $pkg.stack = $newType(12, $kindSlice, "errors.stack", true, "github.com/StackExchange/dnscontrol/vendor/github.com/pkg/errors", false, null);
 31165  	ptrType = $ptrType(stack);
 31166  	sliceType = $sliceType($emptyInterface);
 31167  	ptrType$1 = $ptrType(runtime.Func);
 31168  	sliceType$1 = $sliceType(Frame);
 31169  	arrayType = $arrayType($Uintptr, 32);
 31170  	sliceType$2 = $sliceType($Uintptr);
 31171  	ptrType$2 = $ptrType(fundamental);
 31172  	Errorf = function(format, args) {
 31173  		var _r, args, format, $s, $r;
 31174  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; args = $f.args; format = $f.format; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 31175  		_r = fmt.Sprintf(format, args); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 31176  		$s = -1; return new fundamental.ptr(_r, callers());
 31177  		/* */ } return; } if ($f === undefined) { $f = { $blk: Errorf }; } $f._r = _r; $f.args = args; $f.format = format; $f.$s = $s; $f.$r = $r; return $f;
 31178  	};
 31179  	$pkg.Errorf = Errorf;
 31180  	fundamental.ptr.prototype.Error = function() {
 31181  		var f;
 31182  		f = this;
 31183  		return f.msg;
 31184  	};
 31185  	fundamental.prototype.Error = function() { return this.$val.Error(); };
 31186  	fundamental.ptr.prototype.Format = function(s, verb) {
 31187  		var _1, _r, _r$1, _r$2, _r$3, _r$4, f, s, verb, $s, $r;
 31188  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; f = $f.f; s = $f.s; verb = $f.verb; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 31189  		f = this;
 31190  			_1 = verb;
 31191  			/* */ if (_1 === (118)) { $s = 2; continue; }
 31192  			/* */ if (_1 === (115)) { $s = 3; continue; }
 31193  			/* */ if (_1 === (113)) { $s = 4; continue; }
 31194  			/* */ $s = 5; continue;
 31195  			/* if (_1 === (118)) { */ case 2:
 31196  				_r = s.Flag(43); /* */ $s = 8; case 8: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 31197  				/* */ if (_r) { $s = 6; continue; }
 31198  				/* */ $s = 7; continue;
 31199  				/* if (_r) { */ case 6:
 31200  					_r$1 = io.WriteString(s, f.msg); /* */ $s = 9; case 9: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 31201  					_r$1;
 31202  					$r = f.stack.Format(s, verb); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 31203  					$s = -1; return;
 31204  				/* } */ case 7:
 31205  				_r$2 = io.WriteString(s, f.msg); /* */ $s = 11; case 11: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 31206  				_r$2;
 31207  				$s = 5; continue;
 31208  			/* } else if (_1 === (115)) { */ case 3:
 31209  				_r$3 = io.WriteString(s, f.msg); /* */ $s = 12; case 12: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 31210  				_r$3;
 31211  				$s = 5; continue;
 31212  			/* } else if (_1 === (113)) { */ case 4:
 31213  				_r$4 = fmt.Fprintf(s, "%q", new sliceType([new $String(f.msg)])); /* */ $s = 13; case 13: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 31214  				_r$4;
 31215  			/* } */ case 5:
 31216  		case 1:
 31217  		$s = -1; return;
 31218  		/* */ } return; } if ($f === undefined) { $f = { $blk: fundamental.ptr.prototype.Format }; } $f._1 = _1; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f.f = f; $f.s = s; $f.verb = verb; $f.$s = $s; $f.$r = $r; return $f;
 31219  	};
 31220  	fundamental.prototype.Format = function(s, verb) { return this.$val.Format(s, verb); };
 31221  	Frame.prototype.pc = function() {
 31222  		var f;
 31223  		f = this.$val;
 31224  		return ((f >>> 0)) - 1 >>> 0;
 31225  	};
 31226  	$ptrType(Frame).prototype.pc = function() { return new Frame(this.$get()).pc(); };
 31227  	Frame.prototype.file = function() {
 31228  		var _tuple, f, file, fn;
 31229  		f = this.$val;
 31230  		fn = runtime.FuncForPC(new Frame(f).pc());
 31231  		if (fn === ptrType$1.nil) {
 31232  			return "unknown";
 31233  		}
 31234  		_tuple = fn.FileLine(new Frame(f).pc());
 31235  		file = _tuple[0];
 31236  		return file;
 31237  	};
 31238  	$ptrType(Frame).prototype.file = function() { return new Frame(this.$get()).file(); };
 31239  	Frame.prototype.line = function() {
 31240  		var _tuple, f, fn, line;
 31241  		f = this.$val;
 31242  		fn = runtime.FuncForPC(new Frame(f).pc());
 31243  		if (fn === ptrType$1.nil) {
 31244  			return 0;
 31245  		}
 31246  		_tuple = fn.FileLine(new Frame(f).pc());
 31247  		line = _tuple[1];
 31248  		return line;
 31249  	};
 31250  	$ptrType(Frame).prototype.line = function() { return new Frame(this.$get()).line(); };
 31251  	Frame.prototype.Format = function(s, verb) {
 31252  		var _1, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _tuple, f, file, fn, name, pc, s, verb, $s, $r;
 31253  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _tuple = $f._tuple; f = $f.f; file = $f.file; fn = $f.fn; name = $f.name; pc = $f.pc; s = $f.s; verb = $f.verb; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 31254  		f = this.$val;
 31255  			_1 = verb;
 31256  			/* */ if (_1 === (115)) { $s = 2; continue; }
 31257  			/* */ if (_1 === (100)) { $s = 3; continue; }
 31258  			/* */ if (_1 === (110)) { $s = 4; continue; }
 31259  			/* */ if (_1 === (118)) { $s = 5; continue; }
 31260  			/* */ $s = 6; continue;
 31261  			/* if (_1 === (115)) { */ case 2:
 31262  					_r = s.Flag(43); /* */ $s = 11; case 11: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 31263  					/* */ if (_r) { $s = 8; continue; }
 31264  					/* */ $s = 9; continue;
 31265  					/* if (_r) { */ case 8:
 31266  						pc = new Frame(f).pc();
 31267  						fn = runtime.FuncForPC(pc);
 31268  						/* */ if (fn === ptrType$1.nil) { $s = 12; continue; }
 31269  						/* */ $s = 13; continue;
 31270  						/* if (fn === ptrType$1.nil) { */ case 12:
 31271  							_r$1 = io.WriteString(s, "unknown"); /* */ $s = 15; case 15: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 31272  							_r$1;
 31273  							$s = 14; continue;
 31274  						/* } else { */ case 13:
 31275  							_tuple = fn.FileLine(pc);
 31276  							file = _tuple[0];
 31277  							_r$2 = fmt.Fprintf(s, "%s\n\t%s", new sliceType([new $String(fn.Name()), new $String(file)])); /* */ $s = 16; case 16: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 31278  							_r$2;
 31279  						/* } */ case 14:
 31280  						$s = 10; continue;
 31281  					/* } else { */ case 9:
 31282  						_r$3 = io.WriteString(s, path.Base(new Frame(f).file())); /* */ $s = 17; case 17: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 31283  						_r$3;
 31284  					/* } */ case 10:
 31285  				case 7:
 31286  				$s = 6; continue;
 31287  			/* } else if (_1 === (100)) { */ case 3:
 31288  				_r$4 = fmt.Fprintf(s, "%d", new sliceType([new $Int(new Frame(f).line())])); /* */ $s = 18; case 18: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 31289  				_r$4;
 31290  				$s = 6; continue;
 31291  			/* } else if (_1 === (110)) { */ case 4:
 31292  				name = runtime.FuncForPC(new Frame(f).pc()).Name();
 31293  				_r$5 = io.WriteString(s, funcname(name)); /* */ $s = 19; case 19: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
 31294  				_r$5;
 31295  				$s = 6; continue;
 31296  			/* } else if (_1 === (118)) { */ case 5:
 31297  				$r = new Frame(f).Format(s, 115); /* */ $s = 20; case 20: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 31298  				_r$6 = io.WriteString(s, ":"); /* */ $s = 21; case 21: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
 31299  				_r$6;
 31300  				$r = new Frame(f).Format(s, 100); /* */ $s = 22; case 22: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 31301  			/* } */ case 6:
 31302  		case 1:
 31303  		$s = -1; return;
 31304  		/* */ } return; } if ($f === undefined) { $f = { $blk: Frame.prototype.Format }; } $f._1 = _1; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._tuple = _tuple; $f.f = f; $f.file = file; $f.fn = fn; $f.name = name; $f.pc = pc; $f.s = s; $f.verb = verb; $f.$s = $s; $f.$r = $r; return $f;
 31305  	};
 31306  	$ptrType(Frame).prototype.Format = function(s, verb) { return new Frame(this.$get()).Format(s, verb); };
 31307  	StackTrace.prototype.Format = function(s, verb) {
 31308  		var _1, _i, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _ref, f, s, st, verb, $s, $r;
 31309  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _i = $f._i; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _ref = $f._ref; f = $f.f; s = $f.s; st = $f.st; verb = $f.verb; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 31310  		st = this;
 31311  			_1 = verb;
 31312  			/* */ if (_1 === (118)) { $s = 2; continue; }
 31313  			/* */ if (_1 === (115)) { $s = 3; continue; }
 31314  			/* */ $s = 4; continue;
 31315  			/* if (_1 === (118)) { */ case 2:
 31316  					_r = s.Flag(43); /* */ $s = 10; case 10: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 31317  					/* */ if (_r) { $s = 6; continue; }
 31318  					_r$1 = s.Flag(35); /* */ $s = 11; case 11: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 31319  					/* */ if (_r$1) { $s = 7; continue; }
 31320  					/* */ $s = 8; continue;
 31321  					/* if (_r) { */ case 6:
 31322  						_ref = st;
 31323  						_i = 0;
 31324  						/* while (true) { */ case 12:
 31325  							/* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 13; continue; }
 31326  							f = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
 31327  							_r$2 = fmt.Fprintf(s, "\n%+v", new sliceType([new Frame(f)])); /* */ $s = 14; case 14: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 31328  							_r$2;
 31329  							_i++;
 31330  						/* } */ $s = 12; continue; case 13:
 31331  						$s = 9; continue;
 31332  					/* } else if (_r$1) { */ case 7:
 31333  						_r$3 = fmt.Fprintf(s, "%#v", new sliceType([($subslice(new sliceType$1(st.$array), st.$offset, st.$offset + st.$length))])); /* */ $s = 15; case 15: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 31334  						_r$3;
 31335  						$s = 9; continue;
 31336  					/* } else { */ case 8:
 31337  						_r$4 = fmt.Fprintf(s, "%v", new sliceType([($subslice(new sliceType$1(st.$array), st.$offset, st.$offset + st.$length))])); /* */ $s = 16; case 16: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 31338  						_r$4;
 31339  					/* } */ case 9:
 31340  				case 5:
 31341  				$s = 4; continue;
 31342  			/* } else if (_1 === (115)) { */ case 3:
 31343  				_r$5 = fmt.Fprintf(s, "%s", new sliceType([($subslice(new sliceType$1(st.$array), st.$offset, st.$offset + st.$length))])); /* */ $s = 17; case 17: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
 31344  				_r$5;
 31345  			/* } */ case 4:
 31346  		case 1:
 31347  		$s = -1; return;
 31348  		/* */ } return; } if ($f === undefined) { $f = { $blk: StackTrace.prototype.Format }; } $f._1 = _1; $f._i = _i; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._ref = _ref; $f.f = f; $f.s = s; $f.st = st; $f.verb = verb; $f.$s = $s; $f.$r = $r; return $f;
 31349  	};
 31350  	$ptrType(StackTrace).prototype.Format = function(s, verb) { return this.$get().Format(s, verb); };
 31351  	$ptrType(stack).prototype.Format = function(st, verb) {
 31352  		var _1, _i, _r, _r$1, _ref, f, pc, s, st, verb, $s, $r;
 31353  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _i = $f._i; _r = $f._r; _r$1 = $f._r$1; _ref = $f._ref; f = $f.f; pc = $f.pc; s = $f.s; st = $f.st; verb = $f.verb; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 31354  		s = this;
 31355  			_1 = verb;
 31356  			/* */ if (_1 === (118)) { $s = 2; continue; }
 31357  			/* */ $s = 3; continue;
 31358  			/* if (_1 === (118)) { */ case 2:
 31359  					_r = st.Flag(43); /* */ $s = 7; case 7: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 31360  					/* */ if (_r) { $s = 5; continue; }
 31361  					/* */ $s = 6; continue;
 31362  					/* if (_r) { */ case 5:
 31363  						_ref = s.$get();
 31364  						_i = 0;
 31365  						/* while (true) { */ case 8:
 31366  							/* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 9; continue; }
 31367  							pc = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
 31368  							f = ((pc >>> 0));
 31369  							_r$1 = fmt.Fprintf(st, "\n%+v", new sliceType([new Frame(f)])); /* */ $s = 10; case 10: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 31370  							_r$1;
 31371  							_i++;
 31372  						/* } */ $s = 8; continue; case 9:
 31373  					/* } */ case 6:
 31374  				case 4:
 31375  			/* } */ case 3:
 31376  		case 1:
 31377  		$s = -1; return;
 31378  		/* */ } return; } if ($f === undefined) { $f = { $blk: $ptrType(stack).prototype.Format }; } $f._1 = _1; $f._i = _i; $f._r = _r; $f._r$1 = _r$1; $f._ref = _ref; $f.f = f; $f.pc = pc; $f.s = s; $f.st = st; $f.verb = verb; $f.$s = $s; $f.$r = $r; return $f;
 31379  	};
 31380  	$ptrType(stack).prototype.StackTrace = function() {
 31381  		var f, i, s, x;
 31382  		s = this;
 31383  		f = $makeSlice(sliceType$1, s.$get().$length);
 31384  		i = 0;
 31385  		while (true) {
 31386  			if (!(i < f.$length)) { break; }
 31387  			((i < 0 || i >= f.$length) ? ($throwRuntimeError("index out of range"), undefined) : f.$array[f.$offset + i] = (((x = s.$get(), ((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i])) >>> 0)));
 31388  			i = i + (1) >> 0;
 31389  		}
 31390  		return $subslice(new StackTrace(f.$array), f.$offset, f.$offset + f.$length);
 31391  	};
 31392  	callers = function() {
 31393  		var n, pcs, st, st$24ptr, x;
 31394  		pcs = arrayType.zero();
 31395  		n = runtime.Callers(3, new sliceType$2(pcs));
 31396  		st = (x = $subslice(new sliceType$2(pcs), 0, n), $subslice(new stack(x.$array), x.$offset, x.$offset + x.$length));
 31397  		return (st$24ptr || (st$24ptr = new ptrType(function() { return st; }, function($v) { st = $subslice(new stack($v.$array), $v.$offset, $v.$offset + $v.$length); })));
 31398  	};
 31399  	funcname = function(name) {
 31400  		var i, name;
 31401  		i = strings.LastIndex(name, "/");
 31402  		name = $substring(name, (i + 1 >> 0));
 31403  		i = strings.Index(name, ".");
 31404  		return $substring(name, (i + 1 >> 0));
 31405  	};
 31406  	ptrType$2.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Format", name: "Format", pkg: "", typ: $funcType([fmt.State, $Int32], [], false)}];
 31407  	Frame.methods = [{prop: "pc", name: "pc", pkg: "github.com/StackExchange/dnscontrol/vendor/github.com/pkg/errors", typ: $funcType([], [$Uintptr], false)}, {prop: "file", name: "file", pkg: "github.com/StackExchange/dnscontrol/vendor/github.com/pkg/errors", typ: $funcType([], [$String], false)}, {prop: "line", name: "line", pkg: "github.com/StackExchange/dnscontrol/vendor/github.com/pkg/errors", typ: $funcType([], [$Int], false)}, {prop: "Format", name: "Format", pkg: "", typ: $funcType([fmt.State, $Int32], [], false)}];
 31408  	StackTrace.methods = [{prop: "Format", name: "Format", pkg: "", typ: $funcType([fmt.State, $Int32], [], false)}];
 31409  	ptrType.methods = [{prop: "Format", name: "Format", pkg: "", typ: $funcType([fmt.State, $Int32], [], false)}, {prop: "StackTrace", name: "StackTrace", pkg: "", typ: $funcType([], [StackTrace], false)}];
 31410  	fundamental.init("github.com/StackExchange/dnscontrol/vendor/github.com/pkg/errors", [{prop: "msg", name: "msg", anonymous: false, exported: false, typ: $String, tag: ""}, {prop: "stack", name: "stack", anonymous: true, exported: false, typ: ptrType, tag: ""}]);
 31411  	StackTrace.init(Frame);
 31412  	stack.init($Uintptr);
 31413  	$init = function() {
 31414  		$pkg.$init = function() {};
 31415  		/* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 31416  		$r = fmt.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 31417  		$r = io.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 31418  		$r = path.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 31419  		$r = runtime.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 31420  		$r = strings.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 31421  		/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
 31422  	};
 31423  	$pkg.$init = $init;
 31424  	return $pkg;
 31425  })();
 31426  $packages["path/filepath"] = (function() {
 31427  	var $pkg = {}, $init, errors, os, runtime, sort, strings, utf8, lazybuf, sliceType$1, ptrType$1, Clean, FromSlash, Join, volumeNameLen, join;
 31428  	errors = $packages["errors"];
 31429  	os = $packages["os"];
 31430  	runtime = $packages["runtime"];
 31431  	sort = $packages["sort"];
 31432  	strings = $packages["strings"];
 31433  	utf8 = $packages["unicode/utf8"];
 31434  	lazybuf = $pkg.lazybuf = $newType(0, $kindStruct, "filepath.lazybuf", true, "path/filepath", false, function(path_, buf_, w_, volAndPath_, volLen_) {
 31435  		this.$val = this;
 31436  		if (arguments.length === 0) {
 31437  			this.path = "";
 31438  			this.buf = sliceType$1.nil;
 31439  			this.w = 0;
 31440  			this.volAndPath = "";
 31441  			this.volLen = 0;
 31442  			return;
 31443  		}
 31444  		this.path = path_;
 31445  		this.buf = buf_;
 31446  		this.w = w_;
 31447  		this.volAndPath = volAndPath_;
 31448  		this.volLen = volLen_;
 31449  	});
 31450  	sliceType$1 = $sliceType($Uint8);
 31451  	ptrType$1 = $ptrType(lazybuf);
 31452  	lazybuf.ptr.prototype.index = function(i) {
 31453  		var b, i, x;
 31454  		b = this;
 31455  		if (!(b.buf === sliceType$1.nil)) {
 31456  			return (x = b.buf, ((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i]));
 31457  		}
 31458  		return b.path.charCodeAt(i);
 31459  	};
 31460  	lazybuf.prototype.index = function(i) { return this.$val.index(i); };
 31461  	lazybuf.ptr.prototype.append = function(c) {
 31462  		var b, c, x, x$1;
 31463  		b = this;
 31464  		if (b.buf === sliceType$1.nil) {
 31465  			if (b.w < b.path.length && (b.path.charCodeAt(b.w) === c)) {
 31466  				b.w = b.w + (1) >> 0;
 31467  				return;
 31468  			}
 31469  			b.buf = $makeSlice(sliceType$1, b.path.length);
 31470  			$copyString(b.buf, $substring(b.path, 0, b.w));
 31471  		}
 31472  		(x = b.buf, x$1 = b.w, ((x$1 < 0 || x$1 >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + x$1] = c));
 31473  		b.w = b.w + (1) >> 0;
 31474  	};
 31475  	lazybuf.prototype.append = function(c) { return this.$val.append(c); };
 31476  	lazybuf.ptr.prototype.string = function() {
 31477  		var b;
 31478  		b = this;
 31479  		if (b.buf === sliceType$1.nil) {
 31480  			return $substring(b.volAndPath, 0, (b.volLen + b.w >> 0));
 31481  		}
 31482  		return $substring(b.volAndPath, 0, b.volLen) + ($bytesToString($subslice(b.buf, 0, b.w)));
 31483  	};
 31484  	lazybuf.prototype.string = function() { return this.$val.string(); };
 31485  	Clean = function(path) {
 31486  		var _tmp, _tmp$1, _tmp$2, _tmp$3, dotdot, n, originalPath, out, path, r, rooted, volLen;
 31487  		originalPath = path;
 31488  		volLen = volumeNameLen(path);
 31489  		path = $substring(path, volLen);
 31490  		if (path === "") {
 31491  			if (volLen > 1 && !((originalPath.charCodeAt(1) === 58))) {
 31492  				return FromSlash(originalPath);
 31493  			}
 31494  			return originalPath + ".";
 31495  		}
 31496  		rooted = os.IsPathSeparator(path.charCodeAt(0));
 31497  		n = path.length;
 31498  		out = new lazybuf.ptr(path, sliceType$1.nil, 0, originalPath, volLen);
 31499  		_tmp = 0;
 31500  		_tmp$1 = 0;
 31501  		r = _tmp;
 31502  		dotdot = _tmp$1;
 31503  		if (rooted) {
 31504  			out.append(47);
 31505  			_tmp$2 = 1;
 31506  			_tmp$3 = 1;
 31507  			r = _tmp$2;
 31508  			dotdot = _tmp$3;
 31509  		}
 31510  		while (true) {
 31511  			if (!(r < n)) { break; }
 31512  			if (os.IsPathSeparator(path.charCodeAt(r))) {
 31513  				r = r + (1) >> 0;
 31514  			} else if ((path.charCodeAt(r) === 46) && (((r + 1 >> 0) === n) || os.IsPathSeparator(path.charCodeAt((r + 1 >> 0))))) {
 31515  				r = r + (1) >> 0;
 31516  			} else if ((path.charCodeAt(r) === 46) && (path.charCodeAt((r + 1 >> 0)) === 46) && (((r + 2 >> 0) === n) || os.IsPathSeparator(path.charCodeAt((r + 2 >> 0))))) {
 31517  				r = r + (2) >> 0;
 31518  				if (out.w > dotdot) {
 31519  					out.w = out.w - (1) >> 0;
 31520  					while (true) {
 31521  						if (!(out.w > dotdot && !os.IsPathSeparator(out.index(out.w)))) { break; }
 31522  						out.w = out.w - (1) >> 0;
 31523  					}
 31524  				} else if (!rooted) {
 31525  					if (out.w > 0) {
 31526  						out.append(47);
 31527  					}
 31528  					out.append(46);
 31529  					out.append(46);
 31530  					dotdot = out.w;
 31531  				}
 31532  			} else {
 31533  				if (rooted && !((out.w === 1)) || !rooted && !((out.w === 0))) {
 31534  					out.append(47);
 31535  				}
 31536  				while (true) {
 31537  					if (!(r < n && !os.IsPathSeparator(path.charCodeAt(r)))) { break; }
 31538  					out.append(path.charCodeAt(r));
 31539  					r = r + (1) >> 0;
 31540  				}
 31541  			}
 31542  		}
 31543  		if (out.w === 0) {
 31544  			out.append(46);
 31545  		}
 31546  		return FromSlash(out.string());
 31547  	};
 31548  	$pkg.Clean = Clean;
 31549  	FromSlash = function(path) {
 31550  		var path;
 31551  		if (true) {
 31552  			return path;
 31553  		}
 31554  		return strings.Replace(path, "/", "/", -1);
 31555  	};
 31556  	$pkg.FromSlash = FromSlash;
 31557  	Join = function(elem) {
 31558  		var elem;
 31559  		return join(elem);
 31560  	};
 31561  	$pkg.Join = Join;
 31562  	volumeNameLen = function(path) {
 31563  		var path;
 31564  		return 0;
 31565  	};
 31566  	join = function(elem) {
 31567  		var _i, _ref, e, elem, i;
 31568  		_ref = elem;
 31569  		_i = 0;
 31570  		while (true) {
 31571  			if (!(_i < _ref.$length)) { break; }
 31572  			i = _i;
 31573  			e = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
 31574  			if (!(e === "")) {
 31575  				return Clean(strings.Join($subslice(elem, i), "/"));
 31576  			}
 31577  			_i++;
 31578  		}
 31579  		return "";
 31580  	};
 31581  	ptrType$1.methods = [{prop: "index", name: "index", pkg: "path/filepath", typ: $funcType([$Int], [$Uint8], false)}, {prop: "append", name: "append", pkg: "path/filepath", typ: $funcType([$Uint8], [], false)}, {prop: "string", name: "string", pkg: "path/filepath", typ: $funcType([], [$String], false)}];
 31582  	lazybuf.init("path/filepath", [{prop: "path", name: "path", anonymous: false, exported: false, typ: $String, tag: ""}, {prop: "buf", name: "buf", anonymous: false, exported: false, typ: sliceType$1, tag: ""}, {prop: "w", name: "w", anonymous: false, exported: false, typ: $Int, tag: ""}, {prop: "volAndPath", name: "volAndPath", anonymous: false, exported: false, typ: $String, tag: ""}, {prop: "volLen", name: "volLen", anonymous: false, exported: false, typ: $Int, tag: ""}]);
 31583  	$init = function() {
 31584  		$pkg.$init = function() {};
 31585  		/* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 31586  		$r = errors.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 31587  		$r = os.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 31588  		$r = runtime.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 31589  		$r = sort.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 31590  		$r = strings.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 31591  		$r = utf8.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 31592  		$pkg.ErrBadPattern = errors.New("syntax error in pattern");
 31593  		$pkg.SkipDir = errors.New("skip this directory");
 31594  		/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
 31595  	};
 31596  	$pkg.$init = $init;
 31597  	return $pkg;
 31598  })();
 31599  $packages["io/ioutil"] = (function() {
 31600  	var $pkg = {}, $init, bytes, io, os, filepath, sort, strconv, sync, time, nopCloser, devNull, sliceType, sliceType$1, ptrType, arrayType, ptrType$1, sliceType$3, blackHolePool, rand, randmu, readAll, ReadAll, ReadFile, NopCloser, reseed, nextSuffix, TempFile;
 31601  	bytes = $packages["bytes"];
 31602  	io = $packages["io"];
 31603  	os = $packages["os"];
 31604  	filepath = $packages["path/filepath"];
 31605  	sort = $packages["sort"];
 31606  	strconv = $packages["strconv"];
 31607  	sync = $packages["sync"];
 31608  	time = $packages["time"];
 31609  	nopCloser = $pkg.nopCloser = $newType(0, $kindStruct, "ioutil.nopCloser", true, "io/ioutil", false, function(Reader_) {
 31610  		this.$val = this;
 31611  		if (arguments.length === 0) {
 31612  			this.Reader = $ifaceNil;
 31613  			return;
 31614  		}
 31615  		this.Reader = Reader_;
 31616  	});
 31617  	devNull = $pkg.devNull = $newType(4, $kindInt, "ioutil.devNull", true, "io/ioutil", false, null);
 31618  	sliceType = $sliceType($emptyInterface);
 31619  	sliceType$1 = $sliceType($Uint8);
 31620  	ptrType = $ptrType(sliceType$1);
 31621  	arrayType = $arrayType($Uint8, 64);
 31622  	ptrType$1 = $ptrType(os.File);
 31623  	sliceType$3 = $sliceType($String);
 31624  	readAll = function(r, capacity) {
 31625  		var _r, _tmp, _tmp$1, _tuple, b, buf, capacity, err, r, x, $s, $deferred, $r;
 31626  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tuple = $f._tuple; b = $f.b; buf = $f.buf; capacity = $f.capacity; err = $f.err; r = $f.r; x = $f.x; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
 31627  		err = [err];
 31628  		b = sliceType$1.nil;
 31629  		err[0] = $ifaceNil;
 31630  		buf = new bytes.Buffer.ptr(sliceType$1.nil, 0, arrayType.zero(), 0);
 31631  		$deferred.push([(function(err) { return function() {
 31632  			var _tuple, e, ok, panicErr;
 31633  			e = $recover();
 31634  			if ($interfaceIsEqual(e, $ifaceNil)) {
 31635  				return;
 31636  			}
 31637  			_tuple = $assertType(e, $error, true);
 31638  			panicErr = _tuple[0];
 31639  			ok = _tuple[1];
 31640  			if (ok && $interfaceIsEqual(panicErr, bytes.ErrTooLarge)) {
 31641  				err[0] = panicErr;
 31642  			} else {
 31643  				$panic(e);
 31644  			}
 31645  		}; })(err), []]);
 31646  		if ((x = (new $Int64(0, (((capacity.$low + ((capacity.$high >> 31) * 4294967296)) >> 0)))), (x.$high === capacity.$high && x.$low === capacity.$low))) {
 31647  			buf.Grow((((capacity.$low + ((capacity.$high >> 31) * 4294967296)) >> 0)));
 31648  		}
 31649  		_r = buf.ReadFrom(r); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 31650  		_tuple = _r;
 31651  		err[0] = _tuple[1];
 31652  		_tmp = buf.Bytes();
 31653  		_tmp$1 = err[0];
 31654  		b = _tmp;
 31655  		err[0] = _tmp$1;
 31656  		$s = -1; return [b, err[0]];
 31657  		/* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if (!$curGoroutine.asleep) { return  [b, err[0]]; } if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: readAll }; } $f._r = _r; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tuple = _tuple; $f.b = b; $f.buf = buf; $f.capacity = capacity; $f.err = err; $f.r = r; $f.x = x; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
 31658  	};
 31659  	ReadAll = function(r) {
 31660  		var _r, r, $s, $r;
 31661  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; r = $f.r; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 31662  		_r = readAll(r, new $Int64(0, 512)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 31663  		$s = -1; return _r;
 31664  		/* */ } return; } if ($f === undefined) { $f = { $blk: ReadAll }; } $f._r = _r; $f.r = r; $f.$s = $s; $f.$r = $r; return $f;
 31665  	};
 31666  	$pkg.ReadAll = ReadAll;
 31667  	ReadFile = function(filename) {
 31668  		var _r, _r$1, _r$2, _r$3, _tuple, _tuple$1, err, err$1, f, fi, filename, n, size, x, $s, $deferred, $r;
 31669  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; err = $f.err; err$1 = $f.err$1; f = $f.f; fi = $f.fi; filename = $f.filename; n = $f.n; size = $f.size; x = $f.x; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
 31670  		_r = os.Open(filename); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 31671  		_tuple = _r;
 31672  		f = _tuple[0];
 31673  		err = _tuple[1];
 31674  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 31675  			$s = -1; return [sliceType$1.nil, err];
 31676  		}
 31677  		$deferred.push([$methodVal(f, "Close"), []]);
 31678  		n = new $Int64(0, 512);
 31679  		_r$1 = f.Stat(); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 31680  		_tuple$1 = _r$1;
 31681  		fi = _tuple$1[0];
 31682  		err$1 = _tuple$1[1];
 31683  		/* */ if ($interfaceIsEqual(err$1, $ifaceNil)) { $s = 3; continue; }
 31684  		/* */ $s = 4; continue;
 31685  		/* if ($interfaceIsEqual(err$1, $ifaceNil)) { */ case 3:
 31686  			_r$2 = fi.Size(); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 31687  			size = (x = _r$2, new $Int64(x.$high + 0, x.$low + 512));
 31688  			if ((size.$high > n.$high || (size.$high === n.$high && size.$low > n.$low))) {
 31689  				n = size;
 31690  			}
 31691  		/* } */ case 4:
 31692  		_r$3 = readAll(f, n); /* */ $s = 6; case 6: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 31693  		$s = -1; return _r$3;
 31694  		/* */ } return; } } catch(err) { $err = err; $s = -1; return [sliceType$1.nil, $ifaceNil]; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: ReadFile }; } $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.err = err; $f.err$1 = err$1; $f.f = f; $f.fi = fi; $f.filename = filename; $f.n = n; $f.size = size; $f.x = x; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
 31695  	};
 31696  	$pkg.ReadFile = ReadFile;
 31697  	nopCloser.ptr.prototype.Close = function() {
 31698  		return $ifaceNil;
 31699  	};
 31700  	nopCloser.prototype.Close = function() { return this.$val.Close(); };
 31701  	NopCloser = function(r) {
 31702  		var r, x;
 31703  		return (x = new nopCloser.ptr(r), new x.constructor.elem(x));
 31704  	};
 31705  	$pkg.NopCloser = NopCloser;
 31706  	devNull.prototype.Write = function(p) {
 31707  		var p;
 31708  		return [p.$length, $ifaceNil];
 31709  	};
 31710  	$ptrType(devNull).prototype.Write = function(p) { return new devNull(this.$get()).Write(p); };
 31711  	devNull.prototype.WriteString = function(s) {
 31712  		var s;
 31713  		return [s.length, $ifaceNil];
 31714  	};
 31715  	$ptrType(devNull).prototype.WriteString = function(s) { return new devNull(this.$get()).WriteString(s); };
 31716  	devNull.prototype.ReadFrom = function(r) {
 31717  		var _r, _r$1, _tmp, _tmp$1, _tuple, bufp, err, n, r, readSize, x, $s, $r;
 31718  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tuple = $f._tuple; bufp = $f.bufp; err = $f.err; n = $f.n; r = $f.r; readSize = $f.readSize; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 31719  		n = new $Int64(0, 0);
 31720  		err = $ifaceNil;
 31721  		_r = blackHolePool.Get(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 31722  		bufp = $assertType(_r, ptrType);
 31723  		readSize = 0;
 31724  		/* while (true) { */ case 2:
 31725  			_r$1 = r.Read(bufp.$get()); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 31726  			_tuple = _r$1;
 31727  			readSize = _tuple[0];
 31728  			err = _tuple[1];
 31729  			n = (x = (new $Int64(0, readSize)), new $Int64(n.$high + x.$high, n.$low + x.$low));
 31730  			if (!($interfaceIsEqual(err, $ifaceNil))) {
 31731  				blackHolePool.Put(bufp);
 31732  				if ($interfaceIsEqual(err, io.EOF)) {
 31733  					_tmp = n;
 31734  					_tmp$1 = $ifaceNil;
 31735  					n = _tmp;
 31736  					err = _tmp$1;
 31737  					$s = -1; return [n, err];
 31738  				}
 31739  				$s = -1; return [n, err];
 31740  			}
 31741  		/* } */ $s = 2; continue; case 3:
 31742  		$s = -1; return [n, err];
 31743  		/* */ } return; } if ($f === undefined) { $f = { $blk: devNull.prototype.ReadFrom }; } $f._r = _r; $f._r$1 = _r$1; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tuple = _tuple; $f.bufp = bufp; $f.err = err; $f.n = n; $f.r = r; $f.readSize = readSize; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
 31744  	};
 31745  	$ptrType(devNull).prototype.ReadFrom = function(r) { return new devNull(this.$get()).ReadFrom(r); };
 31746  	reseed = function() {
 31747  		var x, x$1;
 31748  		return (((x = $clone(time.Now(), time.Time).UnixNano(), x$1 = (new $Int64(0, os.Getpid())), new $Int64(x.$high + x$1.$high, x.$low + x$1.$low)).$low >>> 0));
 31749  	};
 31750  	nextSuffix = function() {
 31751  		var _r, r, $s, $r;
 31752  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; r = $f.r; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 31753  		$r = randmu.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 31754  		r = rand;
 31755  		if (r === 0) {
 31756  			r = reseed();
 31757  		}
 31758  		r = ($imul(r, 1664525) >>> 0) + 1013904223 >>> 0;
 31759  		rand = r;
 31760  		$r = randmu.Unlock(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 31761  		$s = -1; return $substring(strconv.Itoa((((1000000000 + (_r = r % 1000000000, _r === _r ? _r : $throwRuntimeError("integer divide by zero")) >>> 0) >> 0))), 1);
 31762  		/* */ } return; } if ($f === undefined) { $f = { $blk: nextSuffix }; } $f._r = _r; $f.r = r; $f.$s = $s; $f.$r = $r; return $f;
 31763  	};
 31764  	TempFile = function(dir, prefix) {
 31765  		var _arg, _arg$1, _r, _r$1, _r$2, _r$3, _tuple, dir, err, f, i, name, nconflict, prefix, $s, $r;
 31766  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _arg = $f._arg; _arg$1 = $f._arg$1; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _tuple = $f._tuple; dir = $f.dir; err = $f.err; f = $f.f; i = $f.i; name = $f.name; nconflict = $f.nconflict; prefix = $f.prefix; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 31767  		f = ptrType$1.nil;
 31768  		err = $ifaceNil;
 31769  		/* */ if (dir === "") { $s = 1; continue; }
 31770  		/* */ $s = 2; continue;
 31771  		/* if (dir === "") { */ case 1:
 31772  			_r = os.TempDir(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 31773  			dir = _r;
 31774  		/* } */ case 2:
 31775  		nconflict = 0;
 31776  		i = 0;
 31777  		/* while (true) { */ case 4:
 31778  			/* if (!(i < 10000)) { break; } */ if(!(i < 10000)) { $s = 5; continue; }
 31779  			_arg = dir;
 31780  			_r$1 = nextSuffix(); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 31781  			_arg$1 = prefix + _r$1;
 31782  			_r$2 = filepath.Join(new sliceType$3([_arg, _arg$1])); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 31783  			name = _r$2;
 31784  			_r$3 = os.OpenFile(name, 194, 384); /* */ $s = 8; case 8: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 31785  			_tuple = _r$3;
 31786  			f = _tuple[0];
 31787  			err = _tuple[1];
 31788  			/* */ if (os.IsExist(err)) { $s = 9; continue; }
 31789  			/* */ $s = 10; continue;
 31790  			/* if (os.IsExist(err)) { */ case 9:
 31791  				nconflict = nconflict + (1) >> 0;
 31792  				/* */ if (nconflict > 10) { $s = 11; continue; }
 31793  				/* */ $s = 12; continue;
 31794  				/* if (nconflict > 10) { */ case 11:
 31795  					$r = randmu.Lock(); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 31796  					rand = reseed();
 31797  					$r = randmu.Unlock(); /* */ $s = 14; case 14: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 31798  				/* } */ case 12:
 31799  				i = i + (1) >> 0;
 31800  				/* continue; */ $s = 4; continue;
 31801  			/* } */ case 10:
 31802  			/* break; */ $s = 5; continue;
 31803  		/* } */ $s = 4; continue; case 5:
 31804  		$s = -1; return [f, err];
 31805  		/* */ } return; } if ($f === undefined) { $f = { $blk: TempFile }; } $f._arg = _arg; $f._arg$1 = _arg$1; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._tuple = _tuple; $f.dir = dir; $f.err = err; $f.f = f; $f.i = i; $f.name = name; $f.nconflict = nconflict; $f.prefix = prefix; $f.$s = $s; $f.$r = $r; return $f;
 31806  	};
 31807  	$pkg.TempFile = TempFile;
 31808  	nopCloser.methods = [{prop: "Close", name: "Close", pkg: "", typ: $funcType([], [$error], false)}];
 31809  	devNull.methods = [{prop: "Write", name: "Write", pkg: "", typ: $funcType([sliceType$1], [$Int, $error], false)}, {prop: "WriteString", name: "WriteString", pkg: "", typ: $funcType([$String], [$Int, $error], false)}, {prop: "ReadFrom", name: "ReadFrom", pkg: "", typ: $funcType([io.Reader], [$Int64, $error], false)}];
 31810  	nopCloser.init("", [{prop: "Reader", name: "Reader", anonymous: true, exported: true, typ: io.Reader, tag: ""}]);
 31811  	$init = function() {
 31812  		$pkg.$init = function() {};
 31813  		/* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 31814  		$r = bytes.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 31815  		$r = io.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 31816  		$r = os.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 31817  		$r = filepath.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 31818  		$r = sort.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 31819  		$r = strconv.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 31820  		$r = sync.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 31821  		$r = time.$init(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 31822  		rand = 0;
 31823  		randmu = new sync.Mutex.ptr(0, 0);
 31824  		blackHolePool = new sync.Pool.ptr(0, 0, sliceType.nil, (function() {
 31825  			var b, b$24ptr;
 31826  			b = $makeSlice(sliceType$1, 8192);
 31827  			return (b$24ptr || (b$24ptr = new ptrType(function() { return b; }, function($v) { b = $subslice(new sliceType$1($v.$array), $v.$offset, $v.$offset + $v.$length); })));
 31828  		}));
 31829  		$pkg.Discard = new devNull(0);
 31830  		/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
 31831  	};
 31832  	$pkg.$init = $init;
 31833  	return $pkg;
 31834  })();
 31835  $packages["context"] = (function() {
 31836  	var $pkg = {}, $init, errors, fmt, reflect, sync, time, Context, deadlineExceededError, emptyCtx, CancelFunc, canceler, cancelCtx, timerCtx, valueCtx, ptrType, structType, ptrType$1, ptrType$2, ptrType$3, ptrType$4, sliceType, ptrType$5, chanType, chanType$1, mapType, background, todo, closedchan, x, Background, WithCancel, newCancelCtx, propagateCancel, parentCancelCtx, removeChild, init, WithDeadline, WithValue;
 31837  	errors = $packages["errors"];
 31838  	fmt = $packages["fmt"];
 31839  	reflect = $packages["reflect"];
 31840  	sync = $packages["sync"];
 31841  	time = $packages["time"];
 31842  	Context = $pkg.Context = $newType(8, $kindInterface, "context.Context", true, "context", true, null);
 31843  	deadlineExceededError = $pkg.deadlineExceededError = $newType(0, $kindStruct, "context.deadlineExceededError", true, "context", false, function() {
 31844  		this.$val = this;
 31845  		if (arguments.length === 0) {
 31846  			return;
 31847  		}
 31848  	});
 31849  	emptyCtx = $pkg.emptyCtx = $newType(4, $kindInt, "context.emptyCtx", true, "context", false, null);
 31850  	CancelFunc = $pkg.CancelFunc = $newType(4, $kindFunc, "context.CancelFunc", true, "context", true, null);
 31851  	canceler = $pkg.canceler = $newType(8, $kindInterface, "context.canceler", true, "context", false, null);
 31852  	cancelCtx = $pkg.cancelCtx = $newType(0, $kindStruct, "context.cancelCtx", true, "context", false, function(Context_, mu_, done_, children_, err_) {
 31853  		this.$val = this;
 31854  		if (arguments.length === 0) {
 31855  			this.Context = $ifaceNil;
 31856  			this.mu = new sync.Mutex.ptr(0, 0);
 31857  			this.done = $chanNil;
 31858  			this.children = false;
 31859  			this.err = $ifaceNil;
 31860  			return;
 31861  		}
 31862  		this.Context = Context_;
 31863  		this.mu = mu_;
 31864  		this.done = done_;
 31865  		this.children = children_;
 31866  		this.err = err_;
 31867  	});
 31868  	timerCtx = $pkg.timerCtx = $newType(0, $kindStruct, "context.timerCtx", true, "context", false, function(cancelCtx_, timer_, deadline_) {
 31869  		this.$val = this;
 31870  		if (arguments.length === 0) {
 31871  			this.cancelCtx = new cancelCtx.ptr($ifaceNil, new sync.Mutex.ptr(0, 0), $chanNil, false, $ifaceNil);
 31872  			this.timer = ptrType$5.nil;
 31873  			this.deadline = new time.Time.ptr(new $Uint64(0, 0), new $Int64(0, 0), ptrType$1.nil);
 31874  			return;
 31875  		}
 31876  		this.cancelCtx = cancelCtx_;
 31877  		this.timer = timer_;
 31878  		this.deadline = deadline_;
 31879  	});
 31880  	valueCtx = $pkg.valueCtx = $newType(0, $kindStruct, "context.valueCtx", true, "context", false, function(Context_, key_, val_) {
 31881  		this.$val = this;
 31882  		if (arguments.length === 0) {
 31883  			this.Context = $ifaceNil;
 31884  			this.key = $ifaceNil;
 31885  			this.val = $ifaceNil;
 31886  			return;
 31887  		}
 31888  		this.Context = Context_;
 31889  		this.key = key_;
 31890  		this.val = val_;
 31891  	});
 31892  	ptrType = $ptrType(emptyCtx);
 31893  	structType = $structType("", []);
 31894  	ptrType$1 = $ptrType(time.Location);
 31895  	ptrType$2 = $ptrType(cancelCtx);
 31896  	ptrType$3 = $ptrType(timerCtx);
 31897  	ptrType$4 = $ptrType(valueCtx);
 31898  	sliceType = $sliceType($emptyInterface);
 31899  	ptrType$5 = $ptrType(time.Timer);
 31900  	chanType = $chanType(structType, false, true);
 31901  	chanType$1 = $chanType(structType, false, false);
 31902  	mapType = $mapType(canceler, structType);
 31903  	deadlineExceededError.ptr.prototype.Error = function() {
 31904  		return "context deadline exceeded";
 31905  	};
 31906  	deadlineExceededError.prototype.Error = function() { return this.$val.Error(); };
 31907  	deadlineExceededError.ptr.prototype.Timeout = function() {
 31908  		return true;
 31909  	};
 31910  	deadlineExceededError.prototype.Timeout = function() { return this.$val.Timeout(); };
 31911  	deadlineExceededError.ptr.prototype.Temporary = function() {
 31912  		return true;
 31913  	};
 31914  	deadlineExceededError.prototype.Temporary = function() { return this.$val.Temporary(); };
 31915  	$ptrType(emptyCtx).prototype.Deadline = function() {
 31916  		var deadline, ok;
 31917  		deadline = new time.Time.ptr(new $Uint64(0, 0), new $Int64(0, 0), ptrType$1.nil);
 31918  		ok = false;
 31919  		return [deadline, ok];
 31920  	};
 31921  	$ptrType(emptyCtx).prototype.Done = function() {
 31922  		return $chanNil;
 31923  	};
 31924  	$ptrType(emptyCtx).prototype.Err = function() {
 31925  		return $ifaceNil;
 31926  	};
 31927  	$ptrType(emptyCtx).prototype.Value = function(key) {
 31928  		var key;
 31929  		return $ifaceNil;
 31930  	};
 31931  	$ptrType(emptyCtx).prototype.String = function() {
 31932  		var _1, e;
 31933  		e = this;
 31934  		_1 = e;
 31935  		if (_1 === (background)) {
 31936  			return "context.Background";
 31937  		} else if (_1 === (todo)) {
 31938  			return "context.TODO";
 31939  		}
 31940  		return "unknown empty Context";
 31941  	};
 31942  	Background = function() {
 31943  		return background;
 31944  	};
 31945  	$pkg.Background = Background;
 31946  	WithCancel = function(parent) {
 31947  		var _tmp, _tmp$1, c, cancel, ctx, parent, $s, $r;
 31948  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; c = $f.c; cancel = $f.cancel; ctx = $f.ctx; parent = $f.parent; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 31949  		c = [c];
 31950  		ctx = $ifaceNil;
 31951  		cancel = $throwNilPointerError;
 31952  		c[0] = $clone(newCancelCtx(parent), cancelCtx);
 31953  		$r = propagateCancel(parent, c[0]); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 31954  		_tmp = c[0];
 31955  		_tmp$1 = (function(c) { return function $b() {
 31956  			var $s, $r;
 31957  			/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 31958  			$r = c[0].cancel(true, $pkg.Canceled); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 31959  			$s = -1; return;
 31960  			/* */ } return; } if ($f === undefined) { $f = { $blk: $b }; } $f.$s = $s; $f.$r = $r; return $f;
 31961  		}; })(c);
 31962  		ctx = _tmp;
 31963  		cancel = _tmp$1;
 31964  		$s = -1; return [ctx, cancel];
 31965  		/* */ } return; } if ($f === undefined) { $f = { $blk: WithCancel }; } $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f.c = c; $f.cancel = cancel; $f.ctx = ctx; $f.parent = parent; $f.$s = $s; $f.$r = $r; return $f;
 31966  	};
 31967  	$pkg.WithCancel = WithCancel;
 31968  	newCancelCtx = function(parent) {
 31969  		var parent;
 31970  		return new cancelCtx.ptr(parent, new sync.Mutex.ptr(0, 0), $chanNil, false, $ifaceNil);
 31971  	};
 31972  	propagateCancel = function(parent, child) {
 31973  		var _key, _r, _tuple, child, ok, p, parent, $s, $r;
 31974  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _key = $f._key; _r = $f._r; _tuple = $f._tuple; child = $f.child; ok = $f.ok; p = $f.p; parent = $f.parent; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 31975  		child = [child];
 31976  		parent = [parent];
 31977  		_r = parent[0].Done(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 31978  		/* */ if (_r === $chanNil) { $s = 1; continue; }
 31979  		/* */ $s = 2; continue;
 31980  		/* if (_r === $chanNil) { */ case 1:
 31981  			$s = -1; return;
 31982  		/* } */ case 2:
 31983  		_tuple = parentCancelCtx(parent[0]);
 31984  		p = _tuple[0];
 31985  		ok = _tuple[1];
 31986  		/* */ if (ok) { $s = 4; continue; }
 31987  		/* */ $s = 5; continue;
 31988  		/* if (ok) { */ case 4:
 31989  			$r = p.mu.Lock(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 31990  			/* */ if (!($interfaceIsEqual(p.err, $ifaceNil))) { $s = 8; continue; }
 31991  			/* */ $s = 9; continue;
 31992  			/* if (!($interfaceIsEqual(p.err, $ifaceNil))) { */ case 8:
 31993  				$r = child[0].cancel(false, p.err); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 31994  				$s = 10; continue;
 31995  			/* } else { */ case 9:
 31996  				if (p.children === false) {
 31997  					p.children = {};
 31998  				}
 31999  				_key = child[0]; (p.children || $throwRuntimeError("assignment to entry in nil map"))[canceler.keyFor(_key)] = { k: _key, v: new structType.ptr() };
 32000  			/* } */ case 10:
 32001  			$r = p.mu.Unlock(); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 32002  			$s = 6; continue;
 32003  		/* } else { */ case 5:
 32004  			$go((function(child, parent) { return function $b() {
 32005  				var _arg, _r$1, _r$2, _r$3, _r$4, _selection, $s, $r;
 32006  				/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _arg = $f._arg; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _selection = $f._selection; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 32007  				_r$1 = parent[0].Done(); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 32008  				_r$2 = child[0].Done(); /* */ $s = 2; case 2: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 32009  				_r$3 = $select([[_r$1], [_r$2]]); /* */ $s = 3; case 3: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 32010  				_selection = _r$3;
 32011  				/* */ if (_selection[0] === 0) { $s = 4; continue; }
 32012  				/* */ if (_selection[0] === 1) { $s = 5; continue; }
 32013  				/* */ $s = 6; continue;
 32014  				/* if (_selection[0] === 0) { */ case 4:
 32015  					_r$4 = parent[0].Err(); /* */ $s = 7; case 7: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 32016  					_arg = _r$4;
 32017  					$r = child[0].cancel(false, _arg); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 32018  					$s = 6; continue;
 32019  				/* } else if (_selection[0] === 1) { */ case 5:
 32020  				/* } */ case 6:
 32021  				$s = -1; return;
 32022  				/* */ } return; } if ($f === undefined) { $f = { $blk: $b }; } $f._arg = _arg; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._selection = _selection; $f.$s = $s; $f.$r = $r; return $f;
 32023  			}; })(child, parent), []);
 32024  		/* } */ case 6:
 32025  		$s = -1; return;
 32026  		/* */ } return; } if ($f === undefined) { $f = { $blk: propagateCancel }; } $f._key = _key; $f._r = _r; $f._tuple = _tuple; $f.child = child; $f.ok = ok; $f.p = p; $f.parent = parent; $f.$s = $s; $f.$r = $r; return $f;
 32027  	};
 32028  	parentCancelCtx = function(parent) {
 32029  		var _ref, c, c$1, c$2, c$3, parent;
 32030  		while (true) {
 32031  			_ref = parent;
 32032  			if ($assertType(_ref, ptrType$2, true)[1]) {
 32033  				c = _ref.$val;
 32034  				return [c, true];
 32035  			} else if ($assertType(_ref, ptrType$3, true)[1]) {
 32036  				c$1 = _ref.$val;
 32037  				return [c$1.cancelCtx, true];
 32038  			} else if ($assertType(_ref, ptrType$4, true)[1]) {
 32039  				c$2 = _ref.$val;
 32040  				parent = c$2.Context;
 32041  			} else {
 32042  				c$3 = _ref;
 32043  				return [ptrType$2.nil, false];
 32044  			}
 32045  		}
 32046  	};
 32047  	removeChild = function(parent, child) {
 32048  		var _tuple, child, ok, p, parent, $s, $r;
 32049  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _tuple = $f._tuple; child = $f.child; ok = $f.ok; p = $f.p; parent = $f.parent; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 32050  		_tuple = parentCancelCtx(parent);
 32051  		p = _tuple[0];
 32052  		ok = _tuple[1];
 32053  		if (!ok) {
 32054  			$s = -1; return;
 32055  		}
 32056  		$r = p.mu.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 32057  		if (!(p.children === false)) {
 32058  			delete p.children[canceler.keyFor(child)];
 32059  		}
 32060  		$r = p.mu.Unlock(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 32061  		$s = -1; return;
 32062  		/* */ } return; } if ($f === undefined) { $f = { $blk: removeChild }; } $f._tuple = _tuple; $f.child = child; $f.ok = ok; $f.p = p; $f.parent = parent; $f.$s = $s; $f.$r = $r; return $f;
 32063  	};
 32064  	init = function() {
 32065  		$close(closedchan);
 32066  	};
 32067  	cancelCtx.ptr.prototype.Done = function() {
 32068  		var c, d, $s, $r;
 32069  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; c = $f.c; d = $f.d; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 32070  		c = this;
 32071  		$r = c.mu.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 32072  		if (c.done === $chanNil) {
 32073  			c.done = new $Chan(structType, 0);
 32074  		}
 32075  		d = c.done;
 32076  		$r = c.mu.Unlock(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 32077  		$s = -1; return d;
 32078  		/* */ } return; } if ($f === undefined) { $f = { $blk: cancelCtx.ptr.prototype.Done }; } $f.c = c; $f.d = d; $f.$s = $s; $f.$r = $r; return $f;
 32079  	};
 32080  	cancelCtx.prototype.Done = function() { return this.$val.Done(); };
 32081  	cancelCtx.ptr.prototype.Err = function() {
 32082  		var c, $s, $deferred, $r;
 32083  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; c = $f.c; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
 32084  		c = this;
 32085  		$r = c.mu.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 32086  		$deferred.push([$methodVal(c.mu, "Unlock"), []]);
 32087  		$s = -1; return c.err;
 32088  		/* */ } return; } } catch(err) { $err = err; $s = -1; return $ifaceNil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: cancelCtx.ptr.prototype.Err }; } $f.c = c; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
 32089  	};
 32090  	cancelCtx.prototype.Err = function() { return this.$val.Err(); };
 32091  	cancelCtx.ptr.prototype.String = function() {
 32092  		var _r, c, $s, $r;
 32093  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; c = $f.c; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 32094  		c = this;
 32095  		_r = fmt.Sprintf("%v.WithCancel", new sliceType([c.Context])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 32096  		$s = -1; return _r;
 32097  		/* */ } return; } if ($f === undefined) { $f = { $blk: cancelCtx.ptr.prototype.String }; } $f._r = _r; $f.c = c; $f.$s = $s; $f.$r = $r; return $f;
 32098  	};
 32099  	cancelCtx.prototype.String = function() { return this.$val.String(); };
 32100  	cancelCtx.ptr.prototype.cancel = function(removeFromParent, err) {
 32101  		var _entry, _i, _keys, _ref, c, child, err, removeFromParent, $s, $r;
 32102  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _entry = $f._entry; _i = $f._i; _keys = $f._keys; _ref = $f._ref; c = $f.c; child = $f.child; err = $f.err; removeFromParent = $f.removeFromParent; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 32103  		c = this;
 32104  		if ($interfaceIsEqual(err, $ifaceNil)) {
 32105  			$panic(new $String("context: internal error: missing cancel error"));
 32106  		}
 32107  		$r = c.mu.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 32108  		/* */ if (!($interfaceIsEqual(c.err, $ifaceNil))) { $s = 2; continue; }
 32109  		/* */ $s = 3; continue;
 32110  		/* if (!($interfaceIsEqual(c.err, $ifaceNil))) { */ case 2:
 32111  			$r = c.mu.Unlock(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 32112  			$s = -1; return;
 32113  		/* } */ case 3:
 32114  		c.err = err;
 32115  		if (c.done === $chanNil) {
 32116  			c.done = closedchan;
 32117  		} else {
 32118  			$close(c.done);
 32119  		}
 32120  		_ref = c.children;
 32121  		_i = 0;
 32122  		_keys = $keys(_ref);
 32123  		/* while (true) { */ case 5:
 32124  			/* if (!(_i < _keys.length)) { break; } */ if(!(_i < _keys.length)) { $s = 6; continue; }
 32125  			_entry = _ref[_keys[_i]];
 32126  			if (_entry === undefined) {
 32127  				_i++;
 32128  				/* continue; */ $s = 5; continue;
 32129  			}
 32130  			child = _entry.k;
 32131  			$r = child.cancel(false, err); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 32132  			_i++;
 32133  		/* } */ $s = 5; continue; case 6:
 32134  		c.children = false;
 32135  		$r = c.mu.Unlock(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 32136  		/* */ if (removeFromParent) { $s = 9; continue; }
 32137  		/* */ $s = 10; continue;
 32138  		/* if (removeFromParent) { */ case 9:
 32139  			$r = removeChild(c.Context, c); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 32140  		/* } */ case 10:
 32141  		$s = -1; return;
 32142  		/* */ } return; } if ($f === undefined) { $f = { $blk: cancelCtx.ptr.prototype.cancel }; } $f._entry = _entry; $f._i = _i; $f._keys = _keys; $f._ref = _ref; $f.c = c; $f.child = child; $f.err = err; $f.removeFromParent = removeFromParent; $f.$s = $s; $f.$r = $r; return $f;
 32143  	};
 32144  	cancelCtx.prototype.cancel = function(removeFromParent, err) { return this.$val.cancel(removeFromParent, err); };
 32145  	WithDeadline = function(parent, d) {
 32146  		var _r, _r$1, _tuple, c, cur, d, dur, ok, parent, $s, $deferred, $r;
 32147  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _tuple = $f._tuple; c = $f.c; cur = $f.cur; d = $f.d; dur = $f.dur; ok = $f.ok; parent = $f.parent; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
 32148  		c = [c];
 32149  		_r = parent.Deadline(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 32150  		_tuple = _r;
 32151  		cur = $clone(_tuple[0], time.Time);
 32152  		ok = _tuple[1];
 32153  		/* */ if (ok && $clone(cur, time.Time).Before($clone(d, time.Time))) { $s = 2; continue; }
 32154  		/* */ $s = 3; continue;
 32155  		/* if (ok && $clone(cur, time.Time).Before($clone(d, time.Time))) { */ case 2:
 32156  			_r$1 = WithCancel(parent); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 32157  			$s = -1; return _r$1;
 32158  		/* } */ case 3:
 32159  		c[0] = new timerCtx.ptr($clone(newCancelCtx(parent), cancelCtx), ptrType$5.nil, $clone(d, time.Time));
 32160  		$r = propagateCancel(parent, c[0]); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 32161  		dur = time.Until($clone(d, time.Time));
 32162  		/* */ if ((dur.$high < 0 || (dur.$high === 0 && dur.$low <= 0))) { $s = 6; continue; }
 32163  		/* */ $s = 7; continue;
 32164  		/* if ((dur.$high < 0 || (dur.$high === 0 && dur.$low <= 0))) { */ case 6:
 32165  			$r = c[0].cancel(true, $pkg.DeadlineExceeded); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 32166  			$s = -1; return [c[0], (function(c) { return function $b() {
 32167  				var $s, $r;
 32168  				/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 32169  				$r = c[0].cancel(true, $pkg.Canceled); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 32170  				$s = -1; return;
 32171  				/* */ } return; } if ($f === undefined) { $f = { $blk: $b }; } $f.$s = $s; $f.$r = $r; return $f;
 32172  			}; })(c)];
 32173  		/* } */ case 7:
 32174  		$r = c[0].cancelCtx.mu.Lock(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 32175  		$deferred.push([$methodVal(c[0].cancelCtx.mu, "Unlock"), []]);
 32176  		if ($interfaceIsEqual(c[0].cancelCtx.err, $ifaceNil)) {
 32177  			c[0].timer = time.AfterFunc(dur, (function(c) { return function $b() {
 32178  				var $s, $r;
 32179  				/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 32180  				$r = c[0].cancel(true, $pkg.DeadlineExceeded); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 32181  				$s = -1; return;
 32182  				/* */ } return; } if ($f === undefined) { $f = { $blk: $b }; } $f.$s = $s; $f.$r = $r; return $f;
 32183  			}; })(c));
 32184  		}
 32185  		$s = -1; return [c[0], (function(c) { return function $b() {
 32186  			var $s, $r;
 32187  			/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 32188  			$r = c[0].cancel(true, $pkg.Canceled); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 32189  			$s = -1; return;
 32190  			/* */ } return; } if ($f === undefined) { $f = { $blk: $b }; } $f.$s = $s; $f.$r = $r; return $f;
 32191  		}; })(c)];
 32192  		/* */ } return; } } catch(err) { $err = err; $s = -1; return [$ifaceNil, $throwNilPointerError]; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: WithDeadline }; } $f._r = _r; $f._r$1 = _r$1; $f._tuple = _tuple; $f.c = c; $f.cur = cur; $f.d = d; $f.dur = dur; $f.ok = ok; $f.parent = parent; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
 32193  	};
 32194  	$pkg.WithDeadline = WithDeadline;
 32195  	timerCtx.ptr.prototype.Deadline = function() {
 32196  		var _tmp, _tmp$1, c, deadline, ok;
 32197  		deadline = new time.Time.ptr(new $Uint64(0, 0), new $Int64(0, 0), ptrType$1.nil);
 32198  		ok = false;
 32199  		c = this;
 32200  		_tmp = $clone(c.deadline, time.Time);
 32201  		_tmp$1 = true;
 32202  		time.Time.copy(deadline, _tmp);
 32203  		ok = _tmp$1;
 32204  		return [deadline, ok];
 32205  	};
 32206  	timerCtx.prototype.Deadline = function() { return this.$val.Deadline(); };
 32207  	timerCtx.ptr.prototype.String = function() {
 32208  		var _r, c, x$1, $s, $r;
 32209  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; c = $f.c; x$1 = $f.x$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 32210  		c = this;
 32211  		_r = fmt.Sprintf("%v.WithDeadline(%s [%s])", new sliceType([c.cancelCtx.Context, (x$1 = c.deadline, new x$1.constructor.elem(x$1)), time.Until($clone(c.deadline, time.Time))])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 32212  		$s = -1; return _r;
 32213  		/* */ } return; } if ($f === undefined) { $f = { $blk: timerCtx.ptr.prototype.String }; } $f._r = _r; $f.c = c; $f.x$1 = x$1; $f.$s = $s; $f.$r = $r; return $f;
 32214  	};
 32215  	timerCtx.prototype.String = function() { return this.$val.String(); };
 32216  	timerCtx.ptr.prototype.cancel = function(removeFromParent, err) {
 32217  		var c, err, removeFromParent, $s, $r;
 32218  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; c = $f.c; err = $f.err; removeFromParent = $f.removeFromParent; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 32219  		c = this;
 32220  		$r = c.cancelCtx.cancel(false, err); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 32221  		/* */ if (removeFromParent) { $s = 2; continue; }
 32222  		/* */ $s = 3; continue;
 32223  		/* if (removeFromParent) { */ case 2:
 32224  			$r = removeChild(c.cancelCtx.Context, c); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 32225  		/* } */ case 3:
 32226  		$r = c.cancelCtx.mu.Lock(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 32227  		if (!(c.timer === ptrType$5.nil)) {
 32228  			c.timer.Stop();
 32229  			c.timer = ptrType$5.nil;
 32230  		}
 32231  		$r = c.cancelCtx.mu.Unlock(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 32232  		$s = -1; return;
 32233  		/* */ } return; } if ($f === undefined) { $f = { $blk: timerCtx.ptr.prototype.cancel }; } $f.c = c; $f.err = err; $f.removeFromParent = removeFromParent; $f.$s = $s; $f.$r = $r; return $f;
 32234  	};
 32235  	timerCtx.prototype.cancel = function(removeFromParent, err) { return this.$val.cancel(removeFromParent, err); };
 32236  	WithValue = function(parent, key, val) {
 32237  		var _r, key, parent, val, $s, $r;
 32238  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; key = $f.key; parent = $f.parent; val = $f.val; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 32239  		if ($interfaceIsEqual(key, $ifaceNil)) {
 32240  			$panic(new $String("nil key"));
 32241  		}
 32242  		_r = reflect.TypeOf(key).Comparable(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 32243  		/* */ if (!_r) { $s = 1; continue; }
 32244  		/* */ $s = 2; continue;
 32245  		/* if (!_r) { */ case 1:
 32246  			$panic(new $String("key is not comparable"));
 32247  		/* } */ case 2:
 32248  		$s = -1; return new valueCtx.ptr(parent, key, val);
 32249  		/* */ } return; } if ($f === undefined) { $f = { $blk: WithValue }; } $f._r = _r; $f.key = key; $f.parent = parent; $f.val = val; $f.$s = $s; $f.$r = $r; return $f;
 32250  	};
 32251  	$pkg.WithValue = WithValue;
 32252  	valueCtx.ptr.prototype.String = function() {
 32253  		var _r, c, $s, $r;
 32254  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; c = $f.c; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 32255  		c = this;
 32256  		_r = fmt.Sprintf("%v.WithValue(%#v, %#v)", new sliceType([c.Context, c.key, c.val])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 32257  		$s = -1; return _r;
 32258  		/* */ } return; } if ($f === undefined) { $f = { $blk: valueCtx.ptr.prototype.String }; } $f._r = _r; $f.c = c; $f.$s = $s; $f.$r = $r; return $f;
 32259  	};
 32260  	valueCtx.prototype.String = function() { return this.$val.String(); };
 32261  	valueCtx.ptr.prototype.Value = function(key) {
 32262  		var _r, c, key, $s, $r;
 32263  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; c = $f.c; key = $f.key; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 32264  		c = this;
 32265  		if ($interfaceIsEqual(c.key, key)) {
 32266  			$s = -1; return c.val;
 32267  		}
 32268  		_r = c.Context.Value(key); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 32269  		$s = -1; return _r;
 32270  		/* */ } return; } if ($f === undefined) { $f = { $blk: valueCtx.ptr.prototype.Value }; } $f._r = _r; $f.c = c; $f.key = key; $f.$s = $s; $f.$r = $r; return $f;
 32271  	};
 32272  	valueCtx.prototype.Value = function(key) { return this.$val.Value(key); };
 32273  	deadlineExceededError.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Timeout", name: "Timeout", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "Temporary", name: "Temporary", pkg: "", typ: $funcType([], [$Bool], false)}];
 32274  	ptrType.methods = [{prop: "Deadline", name: "Deadline", pkg: "", typ: $funcType([], [time.Time, $Bool], false)}, {prop: "Done", name: "Done", pkg: "", typ: $funcType([], [chanType], false)}, {prop: "Err", name: "Err", pkg: "", typ: $funcType([], [$error], false)}, {prop: "Value", name: "Value", pkg: "", typ: $funcType([$emptyInterface], [$emptyInterface], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}];
 32275  	ptrType$2.methods = [{prop: "Done", name: "Done", pkg: "", typ: $funcType([], [chanType], false)}, {prop: "Err", name: "Err", pkg: "", typ: $funcType([], [$error], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "cancel", name: "cancel", pkg: "context", typ: $funcType([$Bool, $error], [], false)}];
 32276  	ptrType$3.methods = [{prop: "Deadline", name: "Deadline", pkg: "", typ: $funcType([], [time.Time, $Bool], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "cancel", name: "cancel", pkg: "context", typ: $funcType([$Bool, $error], [], false)}];
 32277  	ptrType$4.methods = [{prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Value", name: "Value", pkg: "", typ: $funcType([$emptyInterface], [$emptyInterface], false)}];
 32278  	Context.init([{prop: "Deadline", name: "Deadline", pkg: "", typ: $funcType([], [time.Time, $Bool], false)}, {prop: "Done", name: "Done", pkg: "", typ: $funcType([], [chanType], false)}, {prop: "Err", name: "Err", pkg: "", typ: $funcType([], [$error], false)}, {prop: "Value", name: "Value", pkg: "", typ: $funcType([$emptyInterface], [$emptyInterface], false)}]);
 32279  	deadlineExceededError.init("", []);
 32280  	CancelFunc.init([], [], false);
 32281  	canceler.init([{prop: "Done", name: "Done", pkg: "", typ: $funcType([], [chanType], false)}, {prop: "cancel", name: "cancel", pkg: "context", typ: $funcType([$Bool, $error], [], false)}]);
 32282  	cancelCtx.init("context", [{prop: "Context", name: "Context", anonymous: true, exported: true, typ: Context, tag: ""}, {prop: "mu", name: "mu", anonymous: false, exported: false, typ: sync.Mutex, tag: ""}, {prop: "done", name: "done", anonymous: false, exported: false, typ: chanType$1, tag: ""}, {prop: "children", name: "children", anonymous: false, exported: false, typ: mapType, tag: ""}, {prop: "err", name: "err", anonymous: false, exported: false, typ: $error, tag: ""}]);
 32283  	timerCtx.init("context", [{prop: "cancelCtx", name: "cancelCtx", anonymous: true, exported: false, typ: cancelCtx, tag: ""}, {prop: "timer", name: "timer", anonymous: false, exported: false, typ: ptrType$5, tag: ""}, {prop: "deadline", name: "deadline", anonymous: false, exported: false, typ: time.Time, tag: ""}]);
 32284  	valueCtx.init("context", [{prop: "Context", name: "Context", anonymous: true, exported: true, typ: Context, tag: ""}, {prop: "key", name: "key", anonymous: false, exported: false, typ: $emptyInterface, tag: ""}, {prop: "val", name: "val", anonymous: false, exported: false, typ: $emptyInterface, tag: ""}]);
 32285  	$init = function() {
 32286  		$pkg.$init = function() {};
 32287  		/* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 32288  		$r = errors.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 32289  		$r = fmt.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 32290  		$r = reflect.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 32291  		$r = sync.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 32292  		$r = time.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 32293  		$pkg.Canceled = errors.New("context canceled");
 32294  		$pkg.DeadlineExceeded = (x = new deadlineExceededError.ptr(), new x.constructor.elem(x));
 32295  		background = $newDataPointer(0, ptrType);
 32296  		todo = $newDataPointer(0, ptrType);
 32297  		closedchan = new $Chan(structType, 0);
 32298  		init();
 32299  		/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
 32300  	};
 32301  	$pkg.$init = $init;
 32302  	return $pkg;
 32303  })();
 32304  $packages["internal/nettrace"] = (function() {
 32305  	var $pkg = {}, $init, TraceKey, LookupIPAltResolverKey, Trace, funcType, sliceType, funcType$1, funcType$2, funcType$3;
 32306  	TraceKey = $pkg.TraceKey = $newType(0, $kindStruct, "nettrace.TraceKey", true, "internal/nettrace", true, function() {
 32307  		this.$val = this;
 32308  		if (arguments.length === 0) {
 32309  			return;
 32310  		}
 32311  	});
 32312  	LookupIPAltResolverKey = $pkg.LookupIPAltResolverKey = $newType(0, $kindStruct, "nettrace.LookupIPAltResolverKey", true, "internal/nettrace", true, function() {
 32313  		this.$val = this;
 32314  		if (arguments.length === 0) {
 32315  			return;
 32316  		}
 32317  	});
 32318  	Trace = $pkg.Trace = $newType(0, $kindStruct, "nettrace.Trace", true, "internal/nettrace", true, function(DNSStart_, DNSDone_, ConnectStart_, ConnectDone_) {
 32319  		this.$val = this;
 32320  		if (arguments.length === 0) {
 32321  			this.DNSStart = $throwNilPointerError;
 32322  			this.DNSDone = $throwNilPointerError;
 32323  			this.ConnectStart = $throwNilPointerError;
 32324  			this.ConnectDone = $throwNilPointerError;
 32325  			return;
 32326  		}
 32327  		this.DNSStart = DNSStart_;
 32328  		this.DNSDone = DNSDone_;
 32329  		this.ConnectStart = ConnectStart_;
 32330  		this.ConnectDone = ConnectDone_;
 32331  	});
 32332  	funcType = $funcType([$String], [], false);
 32333  	sliceType = $sliceType($emptyInterface);
 32334  	funcType$1 = $funcType([sliceType, $Bool, $error], [], false);
 32335  	funcType$2 = $funcType([$String, $String], [], false);
 32336  	funcType$3 = $funcType([$String, $String, $error], [], false);
 32337  	TraceKey.init("", []);
 32338  	LookupIPAltResolverKey.init("", []);
 32339  	Trace.init("", [{prop: "DNSStart", name: "DNSStart", anonymous: false, exported: true, typ: funcType, tag: ""}, {prop: "DNSDone", name: "DNSDone", anonymous: false, exported: true, typ: funcType$1, tag: ""}, {prop: "ConnectStart", name: "ConnectStart", anonymous: false, exported: true, typ: funcType$2, tag: ""}, {prop: "ConnectDone", name: "ConnectDone", anonymous: false, exported: true, typ: funcType$3, tag: ""}]);
 32340  	$init = function() {
 32341  		$pkg.$init = function() {};
 32342  		/* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 32343  		/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
 32344  	};
 32345  	$pkg.$init = $init;
 32346  	return $pkg;
 32347  })();
 32348  $packages["internal/singleflight"] = (function() {
 32349  	var $pkg = {}, $init, sync, call, Group, Result, ptrType, arrayType, chanType, sliceType, funcType, chanType$1, ptrType$1, mapType;
 32350  	sync = $packages["sync"];
 32351  	call = $pkg.call = $newType(0, $kindStruct, "singleflight.call", true, "internal/singleflight", false, function(wg_, val_, err_, dups_, chans_) {
 32352  		this.$val = this;
 32353  		if (arguments.length === 0) {
 32354  			this.wg = new sync.WaitGroup.ptr(0, $chanNil, arrayType.zero(), 0);
 32355  			this.val = $ifaceNil;
 32356  			this.err = $ifaceNil;
 32357  			this.dups = 0;
 32358  			this.chans = sliceType.nil;
 32359  			return;
 32360  		}
 32361  		this.wg = wg_;
 32362  		this.val = val_;
 32363  		this.err = err_;
 32364  		this.dups = dups_;
 32365  		this.chans = chans_;
 32366  	});
 32367  	Group = $pkg.Group = $newType(0, $kindStruct, "singleflight.Group", true, "internal/singleflight", true, function(mu_, m_) {
 32368  		this.$val = this;
 32369  		if (arguments.length === 0) {
 32370  			this.mu = new sync.Mutex.ptr(0, 0);
 32371  			this.m = false;
 32372  			return;
 32373  		}
 32374  		this.mu = mu_;
 32375  		this.m = m_;
 32376  	});
 32377  	Result = $pkg.Result = $newType(0, $kindStruct, "singleflight.Result", true, "internal/singleflight", true, function(Val_, Err_, Shared_) {
 32378  		this.$val = this;
 32379  		if (arguments.length === 0) {
 32380  			this.Val = $ifaceNil;
 32381  			this.Err = $ifaceNil;
 32382  			this.Shared = false;
 32383  			return;
 32384  		}
 32385  		this.Val = Val_;
 32386  		this.Err = Err_;
 32387  		this.Shared = Shared_;
 32388  	});
 32389  	ptrType = $ptrType(call);
 32390  	arrayType = $arrayType($Uint8, 12);
 32391  	chanType = $chanType(Result, true, false);
 32392  	sliceType = $sliceType(chanType);
 32393  	funcType = $funcType([], [$emptyInterface, $error], false);
 32394  	chanType$1 = $chanType(Result, false, true);
 32395  	ptrType$1 = $ptrType(Group);
 32396  	mapType = $mapType($String, ptrType);
 32397  	Group.ptr.prototype.Do = function(key, fn) {
 32398  		var _entry, _key, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tuple, c, c$1, err, fn, g, key, ok, shared, v, $s, $r;
 32399  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _entry = $f._entry; _key = $f._key; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tmp$4 = $f._tmp$4; _tmp$5 = $f._tmp$5; _tuple = $f._tuple; c = $f.c; c$1 = $f.c$1; err = $f.err; fn = $f.fn; g = $f.g; key = $f.key; ok = $f.ok; shared = $f.shared; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 32400  		v = $ifaceNil;
 32401  		err = $ifaceNil;
 32402  		shared = false;
 32403  		g = this;
 32404  		$r = g.mu.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 32405  		if (g.m === false) {
 32406  			g.m = {};
 32407  		}
 32408  		_tuple = (_entry = g.m[$String.keyFor(key)], _entry !== undefined ? [_entry.v, true] : [ptrType.nil, false]);
 32409  		c = _tuple[0];
 32410  		ok = _tuple[1];
 32411  		/* */ if (ok) { $s = 2; continue; }
 32412  		/* */ $s = 3; continue;
 32413  		/* if (ok) { */ case 2:
 32414  			c.dups = c.dups + (1) >> 0;
 32415  			$r = g.mu.Unlock(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 32416  			$r = c.wg.Wait(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 32417  			_tmp = c.val;
 32418  			_tmp$1 = c.err;
 32419  			_tmp$2 = true;
 32420  			v = _tmp;
 32421  			err = _tmp$1;
 32422  			shared = _tmp$2;
 32423  			$s = -1; return [v, err, shared];
 32424  		/* } */ case 3:
 32425  		c$1 = new call.ptr(new sync.WaitGroup.ptr(0, $chanNil, arrayType.zero(), 0), $ifaceNil, $ifaceNil, 0, sliceType.nil);
 32426  		c$1.wg.Add(1);
 32427  		_key = key; (g.m || $throwRuntimeError("assignment to entry in nil map"))[$String.keyFor(_key)] = { k: _key, v: c$1 };
 32428  		$r = g.mu.Unlock(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 32429  		$r = g.doCall(c$1, key, fn); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 32430  		_tmp$3 = c$1.val;
 32431  		_tmp$4 = c$1.err;
 32432  		_tmp$5 = c$1.dups > 0;
 32433  		v = _tmp$3;
 32434  		err = _tmp$4;
 32435  		shared = _tmp$5;
 32436  		$s = -1; return [v, err, shared];
 32437  		/* */ } return; } if ($f === undefined) { $f = { $blk: Group.ptr.prototype.Do }; } $f._entry = _entry; $f._key = _key; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tmp$4 = _tmp$4; $f._tmp$5 = _tmp$5; $f._tuple = _tuple; $f.c = c; $f.c$1 = c$1; $f.err = err; $f.fn = fn; $f.g = g; $f.key = key; $f.ok = ok; $f.shared = shared; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
 32438  	};
 32439  	Group.prototype.Do = function(key, fn) { return this.$val.Do(key, fn); };
 32440  	Group.ptr.prototype.DoChan = function(key, fn) {
 32441  		var _entry, _key, _tuple, c, c$1, ch, fn, g, key, ok, $s, $r;
 32442  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _entry = $f._entry; _key = $f._key; _tuple = $f._tuple; c = $f.c; c$1 = $f.c$1; ch = $f.ch; fn = $f.fn; g = $f.g; key = $f.key; ok = $f.ok; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 32443  		g = this;
 32444  		ch = new $Chan(Result, 1);
 32445  		$r = g.mu.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 32446  		if (g.m === false) {
 32447  			g.m = {};
 32448  		}
 32449  		_tuple = (_entry = g.m[$String.keyFor(key)], _entry !== undefined ? [_entry.v, true] : [ptrType.nil, false]);
 32450  		c = _tuple[0];
 32451  		ok = _tuple[1];
 32452  		/* */ if (ok) { $s = 2; continue; }
 32453  		/* */ $s = 3; continue;
 32454  		/* if (ok) { */ case 2:
 32455  			c.dups = c.dups + (1) >> 0;
 32456  			c.chans = $append(c.chans, ch);
 32457  			$r = g.mu.Unlock(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 32458  			$s = -1; return [ch, false];
 32459  		/* } */ case 3:
 32460  		c$1 = new call.ptr(new sync.WaitGroup.ptr(0, $chanNil, arrayType.zero(), 0), $ifaceNil, $ifaceNil, 0, new sliceType([ch]));
 32461  		c$1.wg.Add(1);
 32462  		_key = key; (g.m || $throwRuntimeError("assignment to entry in nil map"))[$String.keyFor(_key)] = { k: _key, v: c$1 };
 32463  		$r = g.mu.Unlock(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 32464  		$go($methodVal(g, "doCall"), [c$1, key, fn]);
 32465  		$s = -1; return [ch, true];
 32466  		/* */ } return; } if ($f === undefined) { $f = { $blk: Group.ptr.prototype.DoChan }; } $f._entry = _entry; $f._key = _key; $f._tuple = _tuple; $f.c = c; $f.c$1 = c$1; $f.ch = ch; $f.fn = fn; $f.g = g; $f.key = key; $f.ok = ok; $f.$s = $s; $f.$r = $r; return $f;
 32467  	};
 32468  	Group.prototype.DoChan = function(key, fn) { return this.$val.DoChan(key, fn); };
 32469  	Group.ptr.prototype.doCall = function(c, key, fn) {
 32470  		var _i, _r, _ref, _tuple, c, ch, fn, g, key, $s, $r;
 32471  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _i = $f._i; _r = $f._r; _ref = $f._ref; _tuple = $f._tuple; c = $f.c; ch = $f.ch; fn = $f.fn; g = $f.g; key = $f.key; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 32472  		g = this;
 32473  		_r = fn(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 32474  		_tuple = _r;
 32475  		c.val = _tuple[0];
 32476  		c.err = _tuple[1];
 32477  		c.wg.Done();
 32478  		$r = g.mu.Lock(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 32479  		delete g.m[$String.keyFor(key)];
 32480  		_ref = c.chans;
 32481  		_i = 0;
 32482  		/* while (true) { */ case 3:
 32483  			/* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 4; continue; }
 32484  			ch = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
 32485  			$r = $send(ch, $clone(new Result.ptr(c.val, c.err, c.dups > 0), Result)); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 32486  			_i++;
 32487  		/* } */ $s = 3; continue; case 4:
 32488  		$r = g.mu.Unlock(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 32489  		$s = -1; return;
 32490  		/* */ } return; } if ($f === undefined) { $f = { $blk: Group.ptr.prototype.doCall }; } $f._i = _i; $f._r = _r; $f._ref = _ref; $f._tuple = _tuple; $f.c = c; $f.ch = ch; $f.fn = fn; $f.g = g; $f.key = key; $f.$s = $s; $f.$r = $r; return $f;
 32491  	};
 32492  	Group.prototype.doCall = function(c, key, fn) { return this.$val.doCall(c, key, fn); };
 32493  	Group.ptr.prototype.Forget = function(key) {
 32494  		var g, key, $s, $r;
 32495  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; g = $f.g; key = $f.key; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 32496  		g = this;
 32497  		$r = g.mu.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 32498  		delete g.m[$String.keyFor(key)];
 32499  		$r = g.mu.Unlock(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 32500  		$s = -1; return;
 32501  		/* */ } return; } if ($f === undefined) { $f = { $blk: Group.ptr.prototype.Forget }; } $f.g = g; $f.key = key; $f.$s = $s; $f.$r = $r; return $f;
 32502  	};
 32503  	Group.prototype.Forget = function(key) { return this.$val.Forget(key); };
 32504  	ptrType$1.methods = [{prop: "Do", name: "Do", pkg: "", typ: $funcType([$String, funcType], [$emptyInterface, $error, $Bool], false)}, {prop: "DoChan", name: "DoChan", pkg: "", typ: $funcType([$String, funcType], [chanType$1, $Bool], false)}, {prop: "doCall", name: "doCall", pkg: "internal/singleflight", typ: $funcType([ptrType, $String, funcType], [], false)}, {prop: "Forget", name: "Forget", pkg: "", typ: $funcType([$String], [], false)}];
 32505  	call.init("internal/singleflight", [{prop: "wg", name: "wg", anonymous: false, exported: false, typ: sync.WaitGroup, tag: ""}, {prop: "val", name: "val", anonymous: false, exported: false, typ: $emptyInterface, tag: ""}, {prop: "err", name: "err", anonymous: false, exported: false, typ: $error, tag: ""}, {prop: "dups", name: "dups", anonymous: false, exported: false, typ: $Int, tag: ""}, {prop: "chans", name: "chans", anonymous: false, exported: false, typ: sliceType, tag: ""}]);
 32506  	Group.init("internal/singleflight", [{prop: "mu", name: "mu", anonymous: false, exported: false, typ: sync.Mutex, tag: ""}, {prop: "m", name: "m", anonymous: false, exported: false, typ: mapType, tag: ""}]);
 32507  	Result.init("", [{prop: "Val", name: "Val", anonymous: false, exported: true, typ: $emptyInterface, tag: ""}, {prop: "Err", name: "Err", anonymous: false, exported: true, typ: $error, tag: ""}, {prop: "Shared", name: "Shared", anonymous: false, exported: true, typ: $Bool, tag: ""}]);
 32508  	$init = function() {
 32509  		$pkg.$init = function() {};
 32510  		/* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 32511  		$r = sync.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 32512  		/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
 32513  	};
 32514  	$pkg.$init = $init;
 32515  	return $pkg;
 32516  })();
 32517  $packages["math/rand"] = (function() {
 32518  	var $pkg = {}, $init, nosync, math, Source, Source64, Rand, lockedSource, rngSource, arrayType, ptrType, ptrType$1, sliceType, ptrType$2, ptrType$3, funcType, sliceType$1, ptrType$5, ke, we, fe, kn, wn, fn, globalRand, rng_cooked, absInt32, NewSource, New, read, Int, Intn, Float64, seedrand;
 32519  	nosync = $packages["github.com/gopherjs/gopherjs/nosync"];
 32520  	math = $packages["math"];
 32521  	Source = $pkg.Source = $newType(8, $kindInterface, "rand.Source", true, "math/rand", true, null);
 32522  	Source64 = $pkg.Source64 = $newType(8, $kindInterface, "rand.Source64", true, "math/rand", true, null);
 32523  	Rand = $pkg.Rand = $newType(0, $kindStruct, "rand.Rand", true, "math/rand", true, function(src_, s64_, readVal_, readPos_) {
 32524  		this.$val = this;
 32525  		if (arguments.length === 0) {
 32526  			this.src = $ifaceNil;
 32527  			this.s64 = $ifaceNil;
 32528  			this.readVal = new $Int64(0, 0);
 32529  			this.readPos = 0;
 32530  			return;
 32531  		}
 32532  		this.src = src_;
 32533  		this.s64 = s64_;
 32534  		this.readVal = readVal_;
 32535  		this.readPos = readPos_;
 32536  	});
 32537  	lockedSource = $pkg.lockedSource = $newType(0, $kindStruct, "rand.lockedSource", true, "math/rand", false, function(lk_, src_) {
 32538  		this.$val = this;
 32539  		if (arguments.length === 0) {
 32540  			this.lk = new nosync.Mutex.ptr(false);
 32541  			this.src = $ifaceNil;
 32542  			return;
 32543  		}
 32544  		this.lk = lk_;
 32545  		this.src = src_;
 32546  	});
 32547  	rngSource = $pkg.rngSource = $newType(0, $kindStruct, "rand.rngSource", true, "math/rand", false, function(tap_, feed_, vec_) {
 32548  		this.$val = this;
 32549  		if (arguments.length === 0) {
 32550  			this.tap = 0;
 32551  			this.feed = 0;
 32552  			this.vec = arrayType.zero();
 32553  			return;
 32554  		}
 32555  		this.tap = tap_;
 32556  		this.feed = feed_;
 32557  		this.vec = vec_;
 32558  	});
 32559  	arrayType = $arrayType($Int64, 607);
 32560  	ptrType = $ptrType(lockedSource);
 32561  	ptrType$1 = $ptrType($Int8);
 32562  	sliceType = $sliceType($Int);
 32563  	ptrType$2 = $ptrType($Int64);
 32564  	ptrType$3 = $ptrType(Rand);
 32565  	funcType = $funcType([$Int, $Int], [], false);
 32566  	sliceType$1 = $sliceType($Uint8);
 32567  	ptrType$5 = $ptrType(rngSource);
 32568  	Rand.ptr.prototype.ExpFloat64 = function() {
 32569  		var _r, _r$1, _r$2, _r$3, i, j, r, x, x$1, $s, $r;
 32570  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; i = $f.i; j = $f.j; r = $f.r; x = $f.x; x$1 = $f.x$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 32571  		r = this;
 32572  		/* while (true) { */ case 1:
 32573  			_r = r.Uint32(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 32574  			j = _r;
 32575  			i = (j & 255) >>> 0;
 32576  			x = (j) * (((i < 0 || i >= we.length) ? ($throwRuntimeError("index out of range"), undefined) : we[i]));
 32577  			if (j < ((i < 0 || i >= ke.length) ? ($throwRuntimeError("index out of range"), undefined) : ke[i])) {
 32578  				$s = -1; return x;
 32579  			}
 32580  			/* */ if (i === 0) { $s = 4; continue; }
 32581  			/* */ $s = 5; continue;
 32582  			/* if (i === 0) { */ case 4:
 32583  				_r$1 = r.Float64(); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 32584  				_r$2 = math.Log(_r$1); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 32585  				$s = -1; return 7.69711747013105 - _r$2;
 32586  			/* } */ case 5:
 32587  			_r$3 = r.Float64(); /* */ $s = 10; case 10: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 32588  			/* */ if ($fround(((i < 0 || i >= fe.length) ? ($throwRuntimeError("index out of range"), undefined) : fe[i]) + $fround(($fround(_r$3)) * ($fround((x$1 = i - 1 >>> 0, ((x$1 < 0 || x$1 >= fe.length) ? ($throwRuntimeError("index out of range"), undefined) : fe[x$1])) - ((i < 0 || i >= fe.length) ? ($throwRuntimeError("index out of range"), undefined) : fe[i]))))) < ($fround(math.Exp(-x)))) { $s = 8; continue; }
 32589  			/* */ $s = 9; continue;
 32590  			/* if ($fround(((i < 0 || i >= fe.length) ? ($throwRuntimeError("index out of range"), undefined) : fe[i]) + $fround(($fround(_r$3)) * ($fround((x$1 = i - 1 >>> 0, ((x$1 < 0 || x$1 >= fe.length) ? ($throwRuntimeError("index out of range"), undefined) : fe[x$1])) - ((i < 0 || i >= fe.length) ? ($throwRuntimeError("index out of range"), undefined) : fe[i]))))) < ($fround(math.Exp(-x)))) { */ case 8:
 32591  				$s = -1; return x;
 32592  			/* } */ case 9:
 32593  		/* } */ $s = 1; continue; case 2:
 32594  		$s = -1; return 0;
 32595  		/* */ } return; } if ($f === undefined) { $f = { $blk: Rand.ptr.prototype.ExpFloat64 }; } $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f.i = i; $f.j = j; $f.r = r; $f.x = x; $f.x$1 = x$1; $f.$s = $s; $f.$r = $r; return $f;
 32596  	};
 32597  	Rand.prototype.ExpFloat64 = function() { return this.$val.ExpFloat64(); };
 32598  	absInt32 = function(i) {
 32599  		var i;
 32600  		if (i < 0) {
 32601  			return ((-i >>> 0));
 32602  		}
 32603  		return ((i >>> 0));
 32604  	};
 32605  	Rand.ptr.prototype.NormFloat64 = function() {
 32606  		var _r, _r$1, _r$2, _r$3, _r$4, _r$5, i, j, r, x, x$1, y, $s, $r;
 32607  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; i = $f.i; j = $f.j; r = $f.r; x = $f.x; x$1 = $f.x$1; y = $f.y; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 32608  		r = this;
 32609  		/* while (true) { */ case 1:
 32610  			_r = r.Uint32(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 32611  			j = ((_r >> 0));
 32612  			i = j & 127;
 32613  			x = (j) * (((i < 0 || i >= wn.length) ? ($throwRuntimeError("index out of range"), undefined) : wn[i]));
 32614  			if (absInt32(j) < ((i < 0 || i >= kn.length) ? ($throwRuntimeError("index out of range"), undefined) : kn[i])) {
 32615  				$s = -1; return x;
 32616  			}
 32617  			/* */ if (i === 0) { $s = 4; continue; }
 32618  			/* */ $s = 5; continue;
 32619  			/* if (i === 0) { */ case 4:
 32620  				/* while (true) { */ case 6:
 32621  					_r$1 = r.Float64(); /* */ $s = 8; case 8: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 32622  					_r$2 = math.Log(_r$1); /* */ $s = 9; case 9: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 32623  					x = -_r$2 * 0.29047645161474317;
 32624  					_r$3 = r.Float64(); /* */ $s = 10; case 10: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 32625  					_r$4 = math.Log(_r$3); /* */ $s = 11; case 11: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 32626  					y = -_r$4;
 32627  					if (y + y >= x * x) {
 32628  						/* break; */ $s = 7; continue;
 32629  					}
 32630  				/* } */ $s = 6; continue; case 7:
 32631  				if (j > 0) {
 32632  					$s = -1; return 3.442619855899 + x;
 32633  				}
 32634  				$s = -1; return -3.442619855899 - x;
 32635  			/* } */ case 5:
 32636  			_r$5 = r.Float64(); /* */ $s = 14; case 14: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
 32637  			/* */ if ($fround(((i < 0 || i >= fn.length) ? ($throwRuntimeError("index out of range"), undefined) : fn[i]) + $fround(($fround(_r$5)) * ($fround((x$1 = i - 1 >> 0, ((x$1 < 0 || x$1 >= fn.length) ? ($throwRuntimeError("index out of range"), undefined) : fn[x$1])) - ((i < 0 || i >= fn.length) ? ($throwRuntimeError("index out of range"), undefined) : fn[i]))))) < ($fround(math.Exp(-0.5 * x * x)))) { $s = 12; continue; }
 32638  			/* */ $s = 13; continue;
 32639  			/* if ($fround(((i < 0 || i >= fn.length) ? ($throwRuntimeError("index out of range"), undefined) : fn[i]) + $fround(($fround(_r$5)) * ($fround((x$1 = i - 1 >> 0, ((x$1 < 0 || x$1 >= fn.length) ? ($throwRuntimeError("index out of range"), undefined) : fn[x$1])) - ((i < 0 || i >= fn.length) ? ($throwRuntimeError("index out of range"), undefined) : fn[i]))))) < ($fround(math.Exp(-0.5 * x * x)))) { */ case 12:
 32640  				$s = -1; return x;
 32641  			/* } */ case 13:
 32642  		/* } */ $s = 1; continue; case 2:
 32643  		$s = -1; return 0;
 32644  		/* */ } return; } if ($f === undefined) { $f = { $blk: Rand.ptr.prototype.NormFloat64 }; } $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f.i = i; $f.j = j; $f.r = r; $f.x = x; $f.x$1 = x$1; $f.y = y; $f.$s = $s; $f.$r = $r; return $f;
 32645  	};
 32646  	Rand.prototype.NormFloat64 = function() { return this.$val.NormFloat64(); };
 32647  	NewSource = function(seed) {
 32648  		var rng, seed;
 32649  		rng = new rngSource.ptr(0, 0, arrayType.zero());
 32650  		rng.Seed(seed);
 32651  		return rng;
 32652  	};
 32653  	$pkg.NewSource = NewSource;
 32654  	New = function(src) {
 32655  		var _tuple, s64, src;
 32656  		_tuple = $assertType(src, Source64, true);
 32657  		s64 = _tuple[0];
 32658  		return new Rand.ptr(src, s64, new $Int64(0, 0), 0);
 32659  	};
 32660  	$pkg.New = New;
 32661  	Rand.ptr.prototype.Seed = function(seed) {
 32662  		var _tuple, lk, ok, r, seed, $s, $r;
 32663  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _tuple = $f._tuple; lk = $f.lk; ok = $f.ok; r = $f.r; seed = $f.seed; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 32664  		r = this;
 32665  		_tuple = $assertType(r.src, ptrType, true);
 32666  		lk = _tuple[0];
 32667  		ok = _tuple[1];
 32668  		/* */ if (ok) { $s = 1; continue; }
 32669  		/* */ $s = 2; continue;
 32670  		/* if (ok) { */ case 1:
 32671  			$r = lk.seedPos(seed, (r.$ptr_readPos || (r.$ptr_readPos = new ptrType$1(function() { return this.$target.readPos; }, function($v) { this.$target.readPos = $v; }, r)))); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 32672  			$s = -1; return;
 32673  		/* } */ case 2:
 32674  		$r = r.src.Seed(seed); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 32675  		r.readPos = 0;
 32676  		$s = -1; return;
 32677  		/* */ } return; } if ($f === undefined) { $f = { $blk: Rand.ptr.prototype.Seed }; } $f._tuple = _tuple; $f.lk = lk; $f.ok = ok; $f.r = r; $f.seed = seed; $f.$s = $s; $f.$r = $r; return $f;
 32678  	};
 32679  	Rand.prototype.Seed = function(seed) { return this.$val.Seed(seed); };
 32680  	Rand.ptr.prototype.Int63 = function() {
 32681  		var _r, r, $s, $r;
 32682  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; r = $f.r; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 32683  		r = this;
 32684  		_r = r.src.Int63(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 32685  		$s = -1; return _r;
 32686  		/* */ } return; } if ($f === undefined) { $f = { $blk: Rand.ptr.prototype.Int63 }; } $f._r = _r; $f.r = r; $f.$s = $s; $f.$r = $r; return $f;
 32687  	};
 32688  	Rand.prototype.Int63 = function() { return this.$val.Int63(); };
 32689  	Rand.ptr.prototype.Uint32 = function() {
 32690  		var _r, r, $s, $r;
 32691  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; r = $f.r; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 32692  		r = this;
 32693  		_r = r.Int63(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 32694  		$s = -1; return (($shiftRightInt64(_r, 31).$low >>> 0));
 32695  		/* */ } return; } if ($f === undefined) { $f = { $blk: Rand.ptr.prototype.Uint32 }; } $f._r = _r; $f.r = r; $f.$s = $s; $f.$r = $r; return $f;
 32696  	};
 32697  	Rand.prototype.Uint32 = function() { return this.$val.Uint32(); };
 32698  	Rand.ptr.prototype.Uint64 = function() {
 32699  		var _r, _r$1, _r$2, r, x, x$1, x$2, x$3, $s, $r;
 32700  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; r = $f.r; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; x$3 = $f.x$3; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 32701  		r = this;
 32702  		/* */ if (!($interfaceIsEqual(r.s64, $ifaceNil))) { $s = 1; continue; }
 32703  		/* */ $s = 2; continue;
 32704  		/* if (!($interfaceIsEqual(r.s64, $ifaceNil))) { */ case 1:
 32705  			_r = r.s64.Uint64(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 32706  			$s = -1; return _r;
 32707  		/* } */ case 2:
 32708  		_r$1 = r.Int63(); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 32709  		_r$2 = r.Int63(); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 32710  		$s = -1; return (x = $shiftRightUint64(((x$1 = _r$1, new $Uint64(x$1.$high, x$1.$low))), 31), x$2 = $shiftLeft64(((x$3 = _r$2, new $Uint64(x$3.$high, x$3.$low))), 32), new $Uint64(x.$high | x$2.$high, (x.$low | x$2.$low) >>> 0));
 32711  		/* */ } return; } if ($f === undefined) { $f = { $blk: Rand.ptr.prototype.Uint64 }; } $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f.r = r; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.x$3 = x$3; $f.$s = $s; $f.$r = $r; return $f;
 32712  	};
 32713  	Rand.prototype.Uint64 = function() { return this.$val.Uint64(); };
 32714  	Rand.ptr.prototype.Int31 = function() {
 32715  		var _r, r, x, $s, $r;
 32716  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; r = $f.r; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 32717  		r = this;
 32718  		_r = r.Int63(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 32719  		$s = -1; return (((x = $shiftRightInt64(_r, 32), x.$low + ((x.$high >> 31) * 4294967296)) >> 0));
 32720  		/* */ } return; } if ($f === undefined) { $f = { $blk: Rand.ptr.prototype.Int31 }; } $f._r = _r; $f.r = r; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
 32721  	};
 32722  	Rand.prototype.Int31 = function() { return this.$val.Int31(); };
 32723  	Rand.ptr.prototype.Int = function() {
 32724  		var _r, r, u, $s, $r;
 32725  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; r = $f.r; u = $f.u; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 32726  		r = this;
 32727  		_r = r.Int63(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 32728  		u = ((_r.$low >>> 0));
 32729  		$s = -1; return ((((u << 1 >>> 0) >>> 1 >>> 0) >> 0));
 32730  		/* */ } return; } if ($f === undefined) { $f = { $blk: Rand.ptr.prototype.Int }; } $f._r = _r; $f.r = r; $f.u = u; $f.$s = $s; $f.$r = $r; return $f;
 32731  	};
 32732  	Rand.prototype.Int = function() { return this.$val.Int(); };
 32733  	Rand.ptr.prototype.Int63n = function(n) {
 32734  		var _r, _r$1, _r$2, max, n, r, v, x, x$1, x$2, x$3, x$4, x$5, $s, $r;
 32735  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; max = $f.max; n = $f.n; r = $f.r; v = $f.v; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; x$3 = $f.x$3; x$4 = $f.x$4; x$5 = $f.x$5; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 32736  		r = this;
 32737  		if ((n.$high < 0 || (n.$high === 0 && n.$low <= 0))) {
 32738  			$panic(new $String("invalid argument to Int63n"));
 32739  		}
 32740  		/* */ if ((x = (x$1 = new $Int64(n.$high - 0, n.$low - 1), new $Int64(n.$high & x$1.$high, (n.$low & x$1.$low) >>> 0)), (x.$high === 0 && x.$low === 0))) { $s = 1; continue; }
 32741  		/* */ $s = 2; continue;
 32742  		/* if ((x = (x$1 = new $Int64(n.$high - 0, n.$low - 1), new $Int64(n.$high & x$1.$high, (n.$low & x$1.$low) >>> 0)), (x.$high === 0 && x.$low === 0))) { */ case 1:
 32743  			_r = r.Int63(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 32744  			$s = -1; return (x$2 = _r, x$3 = new $Int64(n.$high - 0, n.$low - 1), new $Int64(x$2.$high & x$3.$high, (x$2.$low & x$3.$low) >>> 0));
 32745  		/* } */ case 2:
 32746  		max = ((x$4 = (x$5 = $div64(new $Uint64(2147483648, 0), (new $Uint64(n.$high, n.$low)), true), new $Uint64(2147483647 - x$5.$high, 4294967295 - x$5.$low)), new $Int64(x$4.$high, x$4.$low)));
 32747  		_r$1 = r.Int63(); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 32748  		v = _r$1;
 32749  		/* while (true) { */ case 5:
 32750  			/* if (!((v.$high > max.$high || (v.$high === max.$high && v.$low > max.$low)))) { break; } */ if(!((v.$high > max.$high || (v.$high === max.$high && v.$low > max.$low)))) { $s = 6; continue; }
 32751  			_r$2 = r.Int63(); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 32752  			v = _r$2;
 32753  		/* } */ $s = 5; continue; case 6:
 32754  		$s = -1; return $div64(v, n, true);
 32755  		/* */ } return; } if ($f === undefined) { $f = { $blk: Rand.ptr.prototype.Int63n }; } $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f.max = max; $f.n = n; $f.r = r; $f.v = v; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.x$3 = x$3; $f.x$4 = x$4; $f.x$5 = x$5; $f.$s = $s; $f.$r = $r; return $f;
 32756  	};
 32757  	Rand.prototype.Int63n = function(n) { return this.$val.Int63n(n); };
 32758  	Rand.ptr.prototype.Int31n = function(n) {
 32759  		var _r, _r$1, _r$2, _r$3, _r$4, max, n, r, v, $s, $r;
 32760  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; max = $f.max; n = $f.n; r = $f.r; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 32761  		r = this;
 32762  		if (n <= 0) {
 32763  			$panic(new $String("invalid argument to Int31n"));
 32764  		}
 32765  		/* */ if ((n & ((n - 1 >> 0))) === 0) { $s = 1; continue; }
 32766  		/* */ $s = 2; continue;
 32767  		/* if ((n & ((n - 1 >> 0))) === 0) { */ case 1:
 32768  			_r = r.Int31(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 32769  			$s = -1; return _r & ((n - 1 >> 0));
 32770  		/* } */ case 2:
 32771  		max = (((2147483647 - (_r$1 = 2147483648 % ((n >>> 0)), _r$1 === _r$1 ? _r$1 : $throwRuntimeError("integer divide by zero")) >>> 0) >> 0));
 32772  		_r$2 = r.Int31(); /* */ $s = 4; case 4: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 32773  		v = _r$2;
 32774  		/* while (true) { */ case 5:
 32775  			/* if (!(v > max)) { break; } */ if(!(v > max)) { $s = 6; continue; }
 32776  			_r$3 = r.Int31(); /* */ $s = 7; case 7: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 32777  			v = _r$3;
 32778  		/* } */ $s = 5; continue; case 6:
 32779  		$s = -1; return (_r$4 = v % n, _r$4 === _r$4 ? _r$4 : $throwRuntimeError("integer divide by zero"));
 32780  		/* */ } return; } if ($f === undefined) { $f = { $blk: Rand.ptr.prototype.Int31n }; } $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f.max = max; $f.n = n; $f.r = r; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
 32781  	};
 32782  	Rand.prototype.Int31n = function(n) { return this.$val.Int31n(n); };
 32783  	Rand.ptr.prototype.int31n = function(n) {
 32784  		var _r, _r$1, _r$2, low, n, prod, r, thresh, v, $s, $r;
 32785  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; low = $f.low; n = $f.n; prod = $f.prod; r = $f.r; thresh = $f.thresh; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 32786  		r = this;
 32787  		_r = r.Uint32(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 32788  		v = _r;
 32789  		prod = $mul64((new $Uint64(0, v)), (new $Uint64(0, n)));
 32790  		low = ((prod.$low >>> 0));
 32791  		/* */ if (low < ((n >>> 0))) { $s = 2; continue; }
 32792  		/* */ $s = 3; continue;
 32793  		/* if (low < ((n >>> 0))) { */ case 2:
 32794  			thresh = (_r$1 = ((-n >>> 0)) % ((n >>> 0)), _r$1 === _r$1 ? _r$1 : $throwRuntimeError("integer divide by zero"));
 32795  			/* while (true) { */ case 4:
 32796  				/* if (!(low < thresh)) { break; } */ if(!(low < thresh)) { $s = 5; continue; }
 32797  				_r$2 = r.Uint32(); /* */ $s = 6; case 6: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 32798  				v = _r$2;
 32799  				prod = $mul64((new $Uint64(0, v)), (new $Uint64(0, n)));
 32800  				low = ((prod.$low >>> 0));
 32801  			/* } */ $s = 4; continue; case 5:
 32802  		/* } */ case 3:
 32803  		$s = -1; return (($shiftRightUint64(prod, 32).$low >> 0));
 32804  		/* */ } return; } if ($f === undefined) { $f = { $blk: Rand.ptr.prototype.int31n }; } $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f.low = low; $f.n = n; $f.prod = prod; $f.r = r; $f.thresh = thresh; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
 32805  	};
 32806  	Rand.prototype.int31n = function(n) { return this.$val.int31n(n); };
 32807  	Rand.ptr.prototype.Intn = function(n) {
 32808  		var _r, _r$1, n, r, x, $s, $r;
 32809  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; n = $f.n; r = $f.r; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 32810  		r = this;
 32811  		if (n <= 0) {
 32812  			$panic(new $String("invalid argument to Intn"));
 32813  		}
 32814  		/* */ if (n <= 2147483647) { $s = 1; continue; }
 32815  		/* */ $s = 2; continue;
 32816  		/* if (n <= 2147483647) { */ case 1:
 32817  			_r = r.Int31n(((n >> 0))); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 32818  			$s = -1; return ((_r >> 0));
 32819  		/* } */ case 2:
 32820  		_r$1 = r.Int63n((new $Int64(0, n))); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 32821  		$s = -1; return (((x = _r$1, x.$low + ((x.$high >> 31) * 4294967296)) >> 0));
 32822  		/* */ } return; } if ($f === undefined) { $f = { $blk: Rand.ptr.prototype.Intn }; } $f._r = _r; $f._r$1 = _r$1; $f.n = n; $f.r = r; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
 32823  	};
 32824  	Rand.prototype.Intn = function(n) { return this.$val.Intn(n); };
 32825  	Rand.ptr.prototype.Float64 = function() {
 32826  		var _r, f, r, $s, $r;
 32827  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; f = $f.f; r = $f.r; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 32828  		r = this;
 32829  		/* again: */ case 1:
 32830  		_r = r.Int63(); /* */ $s = 2; case 2: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 32831  		f = ($flatten64(_r)) / 9.223372036854776e+18;
 32832  		/* */ if (f === 1) { $s = 3; continue; }
 32833  		/* */ $s = 4; continue;
 32834  		/* if (f === 1) { */ case 3:
 32835  			/* goto again */ $s = 1; continue;
 32836  		/* } */ case 4:
 32837  		$s = -1; return f;
 32838  		/* */ } return; } if ($f === undefined) { $f = { $blk: Rand.ptr.prototype.Float64 }; } $f._r = _r; $f.f = f; $f.r = r; $f.$s = $s; $f.$r = $r; return $f;
 32839  	};
 32840  	Rand.prototype.Float64 = function() { return this.$val.Float64(); };
 32841  	Rand.ptr.prototype.Float32 = function() {
 32842  		var _r, f, r, $s, $r;
 32843  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; f = $f.f; r = $f.r; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 32844  		r = this;
 32845  		/* again: */ case 1:
 32846  		_r = r.Float64(); /* */ $s = 2; case 2: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 32847  		f = ($fround(_r));
 32848  		/* */ if (f === 1) { $s = 3; continue; }
 32849  		/* */ $s = 4; continue;
 32850  		/* if (f === 1) { */ case 3:
 32851  			/* goto again */ $s = 1; continue;
 32852  		/* } */ case 4:
 32853  		$s = -1; return f;
 32854  		/* */ } return; } if ($f === undefined) { $f = { $blk: Rand.ptr.prototype.Float32 }; } $f._r = _r; $f.f = f; $f.r = r; $f.$s = $s; $f.$r = $r; return $f;
 32855  	};
 32856  	Rand.prototype.Float32 = function() { return this.$val.Float32(); };
 32857  	Rand.ptr.prototype.Perm = function(n) {
 32858  		var _r, i, j, m, n, r, $s, $r;
 32859  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; i = $f.i; j = $f.j; m = $f.m; n = $f.n; r = $f.r; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 32860  		r = this;
 32861  		m = $makeSlice(sliceType, n);
 32862  		i = 0;
 32863  		/* while (true) { */ case 1:
 32864  			/* if (!(i < n)) { break; } */ if(!(i < n)) { $s = 2; continue; }
 32865  			_r = r.Intn(i + 1 >> 0); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 32866  			j = _r;
 32867  			((i < 0 || i >= m.$length) ? ($throwRuntimeError("index out of range"), undefined) : m.$array[m.$offset + i] = ((j < 0 || j >= m.$length) ? ($throwRuntimeError("index out of range"), undefined) : m.$array[m.$offset + j]));
 32868  			((j < 0 || j >= m.$length) ? ($throwRuntimeError("index out of range"), undefined) : m.$array[m.$offset + j] = i);
 32869  			i = i + (1) >> 0;
 32870  		/* } */ $s = 1; continue; case 2:
 32871  		$s = -1; return m;
 32872  		/* */ } return; } if ($f === undefined) { $f = { $blk: Rand.ptr.prototype.Perm }; } $f._r = _r; $f.i = i; $f.j = j; $f.m = m; $f.n = n; $f.r = r; $f.$s = $s; $f.$r = $r; return $f;
 32873  	};
 32874  	Rand.prototype.Perm = function(n) { return this.$val.Perm(n); };
 32875  	Rand.ptr.prototype.Shuffle = function(n, swap) {
 32876  		var _r, _r$1, i, j, j$1, n, r, swap, x, $s, $r;
 32877  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; i = $f.i; j = $f.j; j$1 = $f.j$1; n = $f.n; r = $f.r; swap = $f.swap; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 32878  		r = this;
 32879  		if (n < 0) {
 32880  			$panic(new $String("invalid argument to Shuffle"));
 32881  		}
 32882  		i = n - 1 >> 0;
 32883  		/* while (true) { */ case 1:
 32884  			/* if (!(i > 2147483646)) { break; } */ if(!(i > 2147483646)) { $s = 2; continue; }
 32885  			_r = r.Int63n((new $Int64(0, (i + 1 >> 0)))); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 32886  			j = (((x = _r, x.$low + ((x.$high >> 31) * 4294967296)) >> 0));
 32887  			$r = swap(i, j); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 32888  			i = i - (1) >> 0;
 32889  		/* } */ $s = 1; continue; case 2:
 32890  		/* while (true) { */ case 5:
 32891  			/* if (!(i > 0)) { break; } */ if(!(i > 0)) { $s = 6; continue; }
 32892  			_r$1 = r.int31n((((i + 1 >> 0) >> 0))); /* */ $s = 7; case 7: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 32893  			j$1 = ((_r$1 >> 0));
 32894  			$r = swap(i, j$1); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 32895  			i = i - (1) >> 0;
 32896  		/* } */ $s = 5; continue; case 6:
 32897  		$s = -1; return;
 32898  		/* */ } return; } if ($f === undefined) { $f = { $blk: Rand.ptr.prototype.Shuffle }; } $f._r = _r; $f._r$1 = _r$1; $f.i = i; $f.j = j; $f.j$1 = j$1; $f.n = n; $f.r = r; $f.swap = swap; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
 32899  	};
 32900  	Rand.prototype.Shuffle = function(n, swap) { return this.$val.Shuffle(n, swap); };
 32901  	Rand.ptr.prototype.Read = function(p) {
 32902  		var _r, _r$1, _tuple, _tuple$1, _tuple$2, err, lk, n, ok, p, r, $s, $r;
 32903  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; err = $f.err; lk = $f.lk; n = $f.n; ok = $f.ok; p = $f.p; r = $f.r; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 32904  		n = 0;
 32905  		err = $ifaceNil;
 32906  		r = this;
 32907  		_tuple = $assertType(r.src, ptrType, true);
 32908  		lk = _tuple[0];
 32909  		ok = _tuple[1];
 32910  		/* */ if (ok) { $s = 1; continue; }
 32911  		/* */ $s = 2; continue;
 32912  		/* if (ok) { */ case 1:
 32913  			_r = lk.read(p, (r.$ptr_readVal || (r.$ptr_readVal = new ptrType$2(function() { return this.$target.readVal; }, function($v) { this.$target.readVal = $v; }, r))), (r.$ptr_readPos || (r.$ptr_readPos = new ptrType$1(function() { return this.$target.readPos; }, function($v) { this.$target.readPos = $v; }, r)))); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 32914  			_tuple$1 = _r;
 32915  			n = _tuple$1[0];
 32916  			err = _tuple$1[1];
 32917  			$s = -1; return [n, err];
 32918  		/* } */ case 2:
 32919  		_r$1 = read(p, $methodVal(r, "Int63"), (r.$ptr_readVal || (r.$ptr_readVal = new ptrType$2(function() { return this.$target.readVal; }, function($v) { this.$target.readVal = $v; }, r))), (r.$ptr_readPos || (r.$ptr_readPos = new ptrType$1(function() { return this.$target.readPos; }, function($v) { this.$target.readPos = $v; }, r)))); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 32920  		_tuple$2 = _r$1;
 32921  		n = _tuple$2[0];
 32922  		err = _tuple$2[1];
 32923  		$s = -1; return [n, err];
 32924  		/* */ } return; } if ($f === undefined) { $f = { $blk: Rand.ptr.prototype.Read }; } $f._r = _r; $f._r$1 = _r$1; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f.err = err; $f.lk = lk; $f.n = n; $f.ok = ok; $f.p = p; $f.r = r; $f.$s = $s; $f.$r = $r; return $f;
 32925  	};
 32926  	Rand.prototype.Read = function(p) { return this.$val.Read(p); };
 32927  	read = function(p, int63, readVal, readPos) {
 32928  		var _r, err, int63, n, p, pos, readPos, readVal, val, $s, $r;
 32929  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; err = $f.err; int63 = $f.int63; n = $f.n; p = $f.p; pos = $f.pos; readPos = $f.readPos; readVal = $f.readVal; val = $f.val; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 32930  		n = 0;
 32931  		err = $ifaceNil;
 32932  		pos = readPos.$get();
 32933  		val = readVal.$get();
 32934  		n = 0;
 32935  		/* while (true) { */ case 1:
 32936  			/* if (!(n < p.$length)) { break; } */ if(!(n < p.$length)) { $s = 2; continue; }
 32937  			/* */ if (pos === 0) { $s = 3; continue; }
 32938  			/* */ $s = 4; continue;
 32939  			/* if (pos === 0) { */ case 3:
 32940  				_r = int63(); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 32941  				val = _r;
 32942  				pos = 7;
 32943  			/* } */ case 4:
 32944  			((n < 0 || n >= p.$length) ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + n] = ((val.$low << 24 >>> 24)));
 32945  			val = $shiftRightInt64(val, (8));
 32946  			pos = pos - (1) << 24 >> 24;
 32947  			n = n + (1) >> 0;
 32948  		/* } */ $s = 1; continue; case 2:
 32949  		readPos.$set(pos);
 32950  		readVal.$set(val);
 32951  		$s = -1; return [n, err];
 32952  		/* */ } return; } if ($f === undefined) { $f = { $blk: read }; } $f._r = _r; $f.err = err; $f.int63 = int63; $f.n = n; $f.p = p; $f.pos = pos; $f.readPos = readPos; $f.readVal = readVal; $f.val = val; $f.$s = $s; $f.$r = $r; return $f;
 32953  	};
 32954  	Int = function() {
 32955  		var _r, $s, $r;
 32956  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 32957  		_r = globalRand.Int(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 32958  		$s = -1; return _r;
 32959  		/* */ } return; } if ($f === undefined) { $f = { $blk: Int }; } $f._r = _r; $f.$s = $s; $f.$r = $r; return $f;
 32960  	};
 32961  	$pkg.Int = Int;
 32962  	Intn = function(n) {
 32963  		var _r, n, $s, $r;
 32964  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; n = $f.n; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 32965  		_r = globalRand.Intn(n); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 32966  		$s = -1; return _r;
 32967  		/* */ } return; } if ($f === undefined) { $f = { $blk: Intn }; } $f._r = _r; $f.n = n; $f.$s = $s; $f.$r = $r; return $f;
 32968  	};
 32969  	$pkg.Intn = Intn;
 32970  	Float64 = function() {
 32971  		var _r, $s, $r;
 32972  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 32973  		_r = globalRand.Float64(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 32974  		$s = -1; return _r;
 32975  		/* */ } return; } if ($f === undefined) { $f = { $blk: Float64 }; } $f._r = _r; $f.$s = $s; $f.$r = $r; return $f;
 32976  	};
 32977  	$pkg.Float64 = Float64;
 32978  	lockedSource.ptr.prototype.Int63 = function() {
 32979  		var _r, n, r, $s, $r;
 32980  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; n = $f.n; r = $f.r; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 32981  		n = new $Int64(0, 0);
 32982  		r = this;
 32983  		r.lk.Lock();
 32984  		_r = r.src.Int63(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 32985  		n = _r;
 32986  		r.lk.Unlock();
 32987  		$s = -1; return n;
 32988  		/* */ } return; } if ($f === undefined) { $f = { $blk: lockedSource.ptr.prototype.Int63 }; } $f._r = _r; $f.n = n; $f.r = r; $f.$s = $s; $f.$r = $r; return $f;
 32989  	};
 32990  	lockedSource.prototype.Int63 = function() { return this.$val.Int63(); };
 32991  	lockedSource.ptr.prototype.Uint64 = function() {
 32992  		var _r, n, r, $s, $r;
 32993  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; n = $f.n; r = $f.r; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 32994  		n = new $Uint64(0, 0);
 32995  		r = this;
 32996  		r.lk.Lock();
 32997  		_r = r.src.Uint64(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 32998  		n = _r;
 32999  		r.lk.Unlock();
 33000  		$s = -1; return n;
 33001  		/* */ } return; } if ($f === undefined) { $f = { $blk: lockedSource.ptr.prototype.Uint64 }; } $f._r = _r; $f.n = n; $f.r = r; $f.$s = $s; $f.$r = $r; return $f;
 33002  	};
 33003  	lockedSource.prototype.Uint64 = function() { return this.$val.Uint64(); };
 33004  	lockedSource.ptr.prototype.Seed = function(seed) {
 33005  		var r, seed, $s, $r;
 33006  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; r = $f.r; seed = $f.seed; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 33007  		r = this;
 33008  		r.lk.Lock();
 33009  		$r = r.src.Seed(seed); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 33010  		r.lk.Unlock();
 33011  		$s = -1; return;
 33012  		/* */ } return; } if ($f === undefined) { $f = { $blk: lockedSource.ptr.prototype.Seed }; } $f.r = r; $f.seed = seed; $f.$s = $s; $f.$r = $r; return $f;
 33013  	};
 33014  	lockedSource.prototype.Seed = function(seed) { return this.$val.Seed(seed); };
 33015  	lockedSource.ptr.prototype.seedPos = function(seed, readPos) {
 33016  		var r, readPos, seed, $s, $r;
 33017  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; r = $f.r; readPos = $f.readPos; seed = $f.seed; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 33018  		r = this;
 33019  		r.lk.Lock();
 33020  		$r = r.src.Seed(seed); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 33021  		readPos.$set(0);
 33022  		r.lk.Unlock();
 33023  		$s = -1; return;
 33024  		/* */ } return; } if ($f === undefined) { $f = { $blk: lockedSource.ptr.prototype.seedPos }; } $f.r = r; $f.readPos = readPos; $f.seed = seed; $f.$s = $s; $f.$r = $r; return $f;
 33025  	};
 33026  	lockedSource.prototype.seedPos = function(seed, readPos) { return this.$val.seedPos(seed, readPos); };
 33027  	lockedSource.ptr.prototype.read = function(p, readVal, readPos) {
 33028  		var _r, _tuple, err, n, p, r, readPos, readVal, $s, $r;
 33029  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; err = $f.err; n = $f.n; p = $f.p; r = $f.r; readPos = $f.readPos; readVal = $f.readVal; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 33030  		n = 0;
 33031  		err = $ifaceNil;
 33032  		r = this;
 33033  		r.lk.Lock();
 33034  		_r = read(p, $methodVal(r.src, "Int63"), readVal, readPos); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 33035  		_tuple = _r;
 33036  		n = _tuple[0];
 33037  		err = _tuple[1];
 33038  		r.lk.Unlock();
 33039  		$s = -1; return [n, err];
 33040  		/* */ } return; } if ($f === undefined) { $f = { $blk: lockedSource.ptr.prototype.read }; } $f._r = _r; $f._tuple = _tuple; $f.err = err; $f.n = n; $f.p = p; $f.r = r; $f.readPos = readPos; $f.readVal = readVal; $f.$s = $s; $f.$r = $r; return $f;
 33041  	};
 33042  	lockedSource.prototype.read = function(p, readVal, readPos) { return this.$val.read(p, readVal, readPos); };
 33043  	seedrand = function(x) {
 33044  		var _q, _r, hi, lo, x;
 33045  		hi = (_q = x / 44488, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero"));
 33046  		lo = (_r = x % 44488, _r === _r ? _r : $throwRuntimeError("integer divide by zero"));
 33047  		x = ($imul(48271, lo)) - ($imul(3399, hi)) >> 0;
 33048  		if (x < 0) {
 33049  			x = x + (2147483647) >> 0;
 33050  		}
 33051  		return x;
 33052  	};
 33053  	rngSource.ptr.prototype.Seed = function(seed) {
 33054  		var i, rng, seed, u, x, x$1, x$2, x$3, x$4, x$5;
 33055  		rng = this;
 33056  		rng.tap = 0;
 33057  		rng.feed = 334;
 33058  		seed = $div64(seed, new $Int64(0, 2147483647), true);
 33059  		if ((seed.$high < 0 || (seed.$high === 0 && seed.$low < 0))) {
 33060  			seed = (x = new $Int64(0, 2147483647), new $Int64(seed.$high + x.$high, seed.$low + x.$low));
 33061  		}
 33062  		if ((seed.$high === 0 && seed.$low === 0)) {
 33063  			seed = new $Int64(0, 89482311);
 33064  		}
 33065  		x$1 = (((seed.$low + ((seed.$high >> 31) * 4294967296)) >> 0));
 33066  		i = -20;
 33067  		while (true) {
 33068  			if (!(i < 607)) { break; }
 33069  			x$1 = seedrand(x$1);
 33070  			if (i >= 0) {
 33071  				u = new $Int64(0, 0);
 33072  				u = $shiftLeft64((new $Int64(0, x$1)), 40);
 33073  				x$1 = seedrand(x$1);
 33074  				u = (x$2 = $shiftLeft64((new $Int64(0, x$1)), 20), new $Int64(u.$high ^ x$2.$high, (u.$low ^ x$2.$low) >>> 0));
 33075  				x$1 = seedrand(x$1);
 33076  				u = (x$3 = (new $Int64(0, x$1)), new $Int64(u.$high ^ x$3.$high, (u.$low ^ x$3.$low) >>> 0));
 33077  				u = (x$4 = ((i < 0 || i >= rng_cooked.length) ? ($throwRuntimeError("index out of range"), undefined) : rng_cooked[i]), new $Int64(u.$high ^ x$4.$high, (u.$low ^ x$4.$low) >>> 0));
 33078  				(x$5 = rng.vec, ((i < 0 || i >= x$5.length) ? ($throwRuntimeError("index out of range"), undefined) : x$5[i] = u));
 33079  			}
 33080  			i = i + (1) >> 0;
 33081  		}
 33082  	};
 33083  	rngSource.prototype.Seed = function(seed) { return this.$val.Seed(seed); };
 33084  	rngSource.ptr.prototype.Int63 = function() {
 33085  		var rng, x, x$1;
 33086  		rng = this;
 33087  		return ((x = (x$1 = rng.Uint64(), new $Uint64(x$1.$high & 2147483647, (x$1.$low & 4294967295) >>> 0)), new $Int64(x.$high, x.$low)));
 33088  	};
 33089  	rngSource.prototype.Int63 = function() { return this.$val.Int63(); };
 33090  	rngSource.ptr.prototype.Uint64 = function() {
 33091  		var rng, x, x$1, x$2, x$3, x$4, x$5, x$6, x$7, x$8;
 33092  		rng = this;
 33093  		rng.tap = rng.tap - (1) >> 0;
 33094  		if (rng.tap < 0) {
 33095  			rng.tap = rng.tap + (607) >> 0;
 33096  		}
 33097  		rng.feed = rng.feed - (1) >> 0;
 33098  		if (rng.feed < 0) {
 33099  			rng.feed = rng.feed + (607) >> 0;
 33100  		}
 33101  		x$6 = (x = (x$1 = rng.vec, x$2 = rng.feed, ((x$2 < 0 || x$2 >= x$1.length) ? ($throwRuntimeError("index out of range"), undefined) : x$1[x$2])), x$3 = (x$4 = rng.vec, x$5 = rng.tap, ((x$5 < 0 || x$5 >= x$4.length) ? ($throwRuntimeError("index out of range"), undefined) : x$4[x$5])), new $Int64(x.$high + x$3.$high, x.$low + x$3.$low));
 33102  		(x$7 = rng.vec, x$8 = rng.feed, ((x$8 < 0 || x$8 >= x$7.length) ? ($throwRuntimeError("index out of range"), undefined) : x$7[x$8] = x$6));
 33103  		return (new $Uint64(x$6.$high, x$6.$low));
 33104  	};
 33105  	rngSource.prototype.Uint64 = function() { return this.$val.Uint64(); };
 33106  	ptrType$3.methods = [{prop: "ExpFloat64", name: "ExpFloat64", pkg: "", typ: $funcType([], [$Float64], false)}, {prop: "NormFloat64", name: "NormFloat64", pkg: "", typ: $funcType([], [$Float64], false)}, {prop: "Seed", name: "Seed", pkg: "", typ: $funcType([$Int64], [], false)}, {prop: "Int63", name: "Int63", pkg: "", typ: $funcType([], [$Int64], false)}, {prop: "Uint32", name: "Uint32", pkg: "", typ: $funcType([], [$Uint32], false)}, {prop: "Uint64", name: "Uint64", pkg: "", typ: $funcType([], [$Uint64], false)}, {prop: "Int31", name: "Int31", pkg: "", typ: $funcType([], [$Int32], false)}, {prop: "Int", name: "Int", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Int63n", name: "Int63n", pkg: "", typ: $funcType([$Int64], [$Int64], false)}, {prop: "Int31n", name: "Int31n", pkg: "", typ: $funcType([$Int32], [$Int32], false)}, {prop: "int31n", name: "int31n", pkg: "math/rand", typ: $funcType([$Int32], [$Int32], false)}, {prop: "Intn", name: "Intn", pkg: "", typ: $funcType([$Int], [$Int], false)}, {prop: "Float64", name: "Float64", pkg: "", typ: $funcType([], [$Float64], false)}, {prop: "Float32", name: "Float32", pkg: "", typ: $funcType([], [$Float32], false)}, {prop: "Perm", name: "Perm", pkg: "", typ: $funcType([$Int], [sliceType], false)}, {prop: "Shuffle", name: "Shuffle", pkg: "", typ: $funcType([$Int, funcType], [], false)}, {prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType$1], [$Int, $error], false)}];
 33107  	ptrType.methods = [{prop: "Int63", name: "Int63", pkg: "", typ: $funcType([], [$Int64], false)}, {prop: "Uint64", name: "Uint64", pkg: "", typ: $funcType([], [$Uint64], false)}, {prop: "Seed", name: "Seed", pkg: "", typ: $funcType([$Int64], [], false)}, {prop: "seedPos", name: "seedPos", pkg: "math/rand", typ: $funcType([$Int64, ptrType$1], [], false)}, {prop: "read", name: "read", pkg: "math/rand", typ: $funcType([sliceType$1, ptrType$2, ptrType$1], [$Int, $error], false)}];
 33108  	ptrType$5.methods = [{prop: "Seed", name: "Seed", pkg: "", typ: $funcType([$Int64], [], false)}, {prop: "Int63", name: "Int63", pkg: "", typ: $funcType([], [$Int64], false)}, {prop: "Uint64", name: "Uint64", pkg: "", typ: $funcType([], [$Uint64], false)}];
 33109  	Source.init([{prop: "Int63", name: "Int63", pkg: "", typ: $funcType([], [$Int64], false)}, {prop: "Seed", name: "Seed", pkg: "", typ: $funcType([$Int64], [], false)}]);
 33110  	Source64.init([{prop: "Int63", name: "Int63", pkg: "", typ: $funcType([], [$Int64], false)}, {prop: "Seed", name: "Seed", pkg: "", typ: $funcType([$Int64], [], false)}, {prop: "Uint64", name: "Uint64", pkg: "", typ: $funcType([], [$Uint64], false)}]);
 33111  	Rand.init("math/rand", [{prop: "src", name: "src", anonymous: false, exported: false, typ: Source, tag: ""}, {prop: "s64", name: "s64", anonymous: false, exported: false, typ: Source64, tag: ""}, {prop: "readVal", name: "readVal", anonymous: false, exported: false, typ: $Int64, tag: ""}, {prop: "readPos", name: "readPos", anonymous: false, exported: false, typ: $Int8, tag: ""}]);
 33112  	lockedSource.init("math/rand", [{prop: "lk", name: "lk", anonymous: false, exported: false, typ: nosync.Mutex, tag: ""}, {prop: "src", name: "src", anonymous: false, exported: false, typ: Source64, tag: ""}]);
 33113  	rngSource.init("math/rand", [{prop: "tap", name: "tap", anonymous: false, exported: false, typ: $Int, tag: ""}, {prop: "feed", name: "feed", anonymous: false, exported: false, typ: $Int, tag: ""}, {prop: "vec", name: "vec", anonymous: false, exported: false, typ: arrayType, tag: ""}]);
 33114  	$init = function() {
 33115  		$pkg.$init = function() {};
 33116  		/* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 33117  		$r = nosync.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 33118  		$r = math.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 33119  		ke = $toNativeArray($kindUint32, [3801129273, 0, 2615860924, 3279400049, 3571300752, 3733536696, 3836274812, 3906990442, 3958562475, 3997804264, 4028649213, 4053523342, 4074002619, 4091154507, 4105727352, 4118261130, 4129155133, 4138710916, 4147160435, 4154685009, 4161428406, 4167506077, 4173011791, 4178022498, 4182601930, 4186803325, 4190671498, 4194244443, 4197554582, 4200629752, 4203493986, 4206168142, 4208670408, 4211016720, 4213221098, 4215295924, 4217252177, 4219099625, 4220846988, 4222502074, 4224071896, 4225562770, 4226980400, 4228329951, 4229616109, 4230843138, 4232014925, 4233135020, 4234206673, 4235232866, 4236216336, 4237159604, 4238064994, 4238934652, 4239770563, 4240574564, 4241348362, 4242093539, 4242811568, 4243503822, 4244171579, 4244816032, 4245438297, 4246039419, 4246620374, 4247182079, 4247725394, 4248251127, 4248760037, 4249252839, 4249730206, 4250192773, 4250641138, 4251075867, 4251497493, 4251906522, 4252303431, 4252688672, 4253062674, 4253425844, 4253778565, 4254121205, 4254454110, 4254777611, 4255092022, 4255397640, 4255694750, 4255983622, 4256264513, 4256537670, 4256803325, 4257061702, 4257313014, 4257557464, 4257795244, 4258026541, 4258251531, 4258470383, 4258683258, 4258890309, 4259091685, 4259287526, 4259477966, 4259663135, 4259843154, 4260018142, 4260188212, 4260353470, 4260514019, 4260669958, 4260821380, 4260968374, 4261111028, 4261249421, 4261383632, 4261513736, 4261639802, 4261761900, 4261880092, 4261994441, 4262105003, 4262211835, 4262314988, 4262414513, 4262510454, 4262602857, 4262691764, 4262777212, 4262859239, 4262937878, 4263013162, 4263085118, 4263153776, 4263219158, 4263281289, 4263340187, 4263395872, 4263448358, 4263497660, 4263543789, 4263586755, 4263626565, 4263663224, 4263696735, 4263727099, 4263754314, 4263778377, 4263799282, 4263817020, 4263831582, 4263842955, 4263851124, 4263856071, 4263857776, 4263856218, 4263851370, 4263843206, 4263831695, 4263816804, 4263798497, 4263776735, 4263751476, 4263722676, 4263690284, 4263654251, 4263614520, 4263571032, 4263523724, 4263472530, 4263417377, 4263358192, 4263294892, 4263227394, 4263155608, 4263079437, 4262998781, 4262913534, 4262823581, 4262728804, 4262629075, 4262524261, 4262414220, 4262298801, 4262177846, 4262051187, 4261918645, 4261780032, 4261635148, 4261483780, 4261325704, 4261160681, 4260988457, 4260808763, 4260621313, 4260425802, 4260221905, 4260009277, 4259787550, 4259556329, 4259315195, 4259063697, 4258801357, 4258527656, 4258242044, 4257943926, 4257632664, 4257307571, 4256967906, 4256612870, 4256241598, 4255853155, 4255446525, 4255020608, 4254574202, 4254106002, 4253614578, 4253098370, 4252555662, 4251984571, 4251383021, 4250748722, 4250079132, 4249371435, 4248622490, 4247828790, 4246986404, 4246090910, 4245137315, 4244119963, 4243032411, 4241867296, 4240616155, 4239269214, 4237815118, 4236240596, 4234530035, 4232664930, 4230623176, 4228378137, 4225897409, 4223141146, 4220059768, 4216590757, 4212654085, 4208145538, 4202926710, 4196809522, 4189531420, 4180713890, 4169789475, 4155865042, 4137444620, 4111806704, 4073393724, 4008685917, 3873074895]);
 33120  		we = $toNativeArray($kindFloat32, [2.0249555365836613e-09, 1.4866739783681027e-11, 2.4409616689036184e-11, 3.1968806074589295e-11, 3.844677007314168e-11, 4.42282044321729e-11, 4.951644302919611e-11, 5.443358958023836e-11, 5.905943789574764e-11, 6.34494193296753e-11, 6.764381416113352e-11, 7.167294535648239e-11, 7.556032188826833e-11, 7.932458162551725e-11, 8.298078890689453e-11, 8.654132271912474e-11, 9.001651507523079e-11, 9.341507428706208e-11, 9.674443190998971e-11, 1.0001099254308699e-10, 1.0322031424037093e-10, 1.0637725422757427e-10, 1.0948611461891744e-10, 1.1255067711157807e-10, 1.1557434870246297e-10, 1.1856014781042035e-10, 1.2151082917633005e-10, 1.2442885610752796e-10, 1.2731647680563896e-10, 1.3017574518325858e-10, 1.330085347417409e-10, 1.3581656632677408e-10, 1.386014220061682e-10, 1.413645728254309e-10, 1.4410737880776736e-10, 1.4683107507629245e-10, 1.4953686899854546e-10, 1.522258291641876e-10, 1.5489899640730442e-10, 1.575573282952547e-10, 1.6020171300645814e-10, 1.628330109637588e-10, 1.6545202707884954e-10, 1.68059510752272e-10, 1.7065616975120435e-10, 1.73242697965037e-10, 1.758197337720091e-10, 1.783878739169964e-10, 1.8094774290045024e-10, 1.834998542005195e-10, 1.8604476292871652e-10, 1.8858298256319017e-10, 1.9111498494872592e-10, 1.9364125580789704e-10, 1.9616222535212557e-10, 1.9867835154840918e-10, 2.011900368525943e-10, 2.0369768372052732e-10, 2.062016807302669e-10, 2.0870240258208383e-10, 2.1120022397624894e-10, 2.136955057352452e-10, 2.1618855317040442e-10, 2.1867974098199738e-10, 2.2116936060356807e-10, 2.2365774510202385e-10, 2.2614519978869652e-10, 2.2863201609713002e-10, 2.3111849933865614e-10, 2.3360494094681883e-10, 2.3609159072179864e-10, 2.3857874009713953e-10, 2.4106666662859766e-10, 2.4355562011635357e-10, 2.460458781161634e-10, 2.485376904282077e-10, 2.5103127909709144e-10, 2.5352694943414633e-10, 2.560248957284017e-10, 2.585253955356137e-10, 2.610286709003873e-10, 2.6353494386732734e-10, 2.6604446423661443e-10, 2.6855745405285347e-10, 2.71074163116225e-10, 2.7359478571575835e-10, 2.7611959940720965e-10, 2.786487707240326e-10, 2.8118254946640775e-10, 2.8372118543451563e-10, 2.8626484516180994e-10, 2.8881380620404684e-10, 2.9136826285025563e-10, 2.9392840938946563e-10, 2.96494523377433e-10, 2.990667713476114e-10, 3.016454031001814e-10, 3.042306406797479e-10, 3.068226783753403e-10, 3.09421765987139e-10, 3.12028125559749e-10, 3.1464195138219964e-10, 3.17263521010247e-10, 3.1989300097734485e-10, 3.225306410836737e-10, 3.2517669112941405e-10, 3.2783134540359526e-10, 3.3049485370639786e-10, 3.3316743808242677e-10, 3.3584937608743815e-10, 3.385408342548857e-10, 3.4124211789610115e-10, 3.4395342130011386e-10, 3.4667499426710435e-10, 3.494071143528288e-10, 3.521500313574677e-10, 3.54903967325626e-10, 3.576691720574843e-10, 3.6044595086437425e-10, 3.632345535464765e-10, 3.660352021483959e-10, 3.688482297370399e-10, 3.716738583570134e-10, 3.7451239331964814e-10, 3.773641121807003e-10, 3.802292924959261e-10, 3.831082673322328e-10, 3.8600128648980103e-10, 3.8890865527996255e-10, 3.9183070676962473e-10, 3.9476774627011935e-10, 3.977200790927782e-10, 4.006880383045086e-10, 4.0367195697221803e-10, 4.066721681628138e-10, 4.0968900494320337e-10, 4.127228558914453e-10, 4.15774054074447e-10, 4.188429603146915e-10, 4.2192993543466173e-10, 4.25035395767992e-10, 4.2815970213716525e-10, 4.313032986313914e-10, 4.3446651831757777e-10, 4.376498607960855e-10, 4.408536868893975e-10, 4.4407846844229937e-10, 4.4732464954400086e-10, 4.5059267428371186e-10, 4.538830145062178e-10, 4.5719619756745544e-10, 4.605326675566346e-10, 4.638929240741163e-10, 4.672775499869886e-10, 4.706869893844612e-10, 4.74121908400349e-10, 4.775827511238617e-10, 4.810701836888143e-10, 4.845848167178701e-10, 4.881271498113904e-10, 4.916979601254923e-10, 4.952977472605369e-10, 4.989272883726414e-10, 5.025872495956207e-10, 5.062783525744408e-10, 5.100013189540675e-10, 5.13756870379467e-10, 5.175458395179078e-10, 5.21369003525507e-10, 5.252272505806843e-10, 5.29121357839557e-10, 5.330522134805449e-10, 5.3702081670437e-10, 5.41028055689452e-10, 5.450749851476644e-10, 5.491624932574268e-10, 5.532918012640664e-10, 5.574638528571541e-10, 5.616799247931681e-10, 5.659410717839819e-10, 5.702485705860738e-10, 5.746036979559221e-10, 5.790077306500052e-10, 5.83462111958255e-10, 5.879682296594524e-10, 5.925275825546805e-10, 5.971417249561739e-10, 6.01812211176167e-10, 6.065408175714992e-10, 6.113292094767075e-10, 6.16179329782085e-10, 6.21092954844471e-10, 6.260721940876124e-10, 6.311191569352559e-10, 6.362359528111483e-10, 6.414249686947926e-10, 6.466885360545405e-10, 6.520292639144998e-10, 6.574497612987784e-10, 6.629528592760892e-10, 6.685415554485985e-10, 6.742187919073217e-10, 6.799880103436351e-10, 6.858525969377638e-10, 6.918161599145378e-10, 6.978825850545434e-10, 7.040559801829716e-10, 7.103406751696184e-10, 7.167412219288849e-10, 7.232625609532306e-10, 7.2990985477972e-10, 7.366885990123251e-10, 7.436047333442275e-10, 7.506645305355164e-10, 7.57874762946642e-10, 7.652426470272644e-10, 7.727759543385559e-10, 7.804830115532013e-10, 7.883728114777e-10, 7.964550685635174e-10, 8.047402189070851e-10, 8.132396422944055e-10, 8.219657177122031e-10, 8.309318788590758e-10, 8.401527806789488e-10, 8.496445214056791e-10, 8.594246980742071e-10, 8.695127395874636e-10, 8.799300732498239e-10, 8.90700457834015e-10, 9.01850316648023e-10, 9.134091816243028e-10, 9.254100818978372e-10, 9.37890431984556e-10, 9.508922538259412e-10, 9.64463842123564e-10, 9.78660263939446e-10, 9.935448019859905e-10, 1.0091912860943353e-09, 1.0256859805934937e-09, 1.0431305819125214e-09, 1.0616465484503124e-09, 1.0813799855569073e-09, 1.1025096391392708e-09, 1.1252564435793033e-09, 1.149898620766976e-09, 1.176793218427008e-09, 1.2064089727203964e-09, 1.2393785997488749e-09, 1.2765849488616254e-09, 1.319313880365769e-09, 1.36954347862428e-09, 1.4305497897382224e-09, 1.5083649884672923e-09, 1.6160853766322703e-09, 1.7921247819074893e-09]);
 33121  		fe = $toNativeArray($kindFloat32, [1, 0.9381436705589294, 0.900469958782196, 0.8717043399810791, 0.847785472869873, 0.8269932866096497, 0.8084216713905334, 0.7915276288986206, 0.7759568691253662, 0.7614634037017822, 0.7478685975074768, 0.7350381016731262, 0.7228676676750183, 0.7112747430801392, 0.7001926302909851, 0.6895664930343628, 0.6793505549430847, 0.669506311416626, 0.6600008606910706, 0.6508058309555054, 0.6418967247009277, 0.633251965045929, 0.62485271692276, 0.6166821718215942, 0.608725368976593, 0.6009689569473267, 0.5934008955955505, 0.5860103368759155, 0.5787873864173889, 0.5717230439186096, 0.5648092031478882, 0.5580382943153381, 0.5514034032821655, 0.5448982119560242, 0.5385168790817261, 0.5322538614273071, 0.526104211807251, 0.5200631618499756, 0.5141264200210571, 0.5082897543907166, 0.5025495290756226, 0.4969019889831543, 0.4913438558578491, 0.4858720004558563, 0.48048335313796997, 0.4751752018928528, 0.4699448347091675, 0.4647897481918335, 0.4597076177597046, 0.4546961486339569, 0.4497532546520233, 0.44487687945365906, 0.4400651156902313, 0.4353161156177521, 0.4306281507015228, 0.42599955201148987, 0.42142874002456665, 0.4169141948223114, 0.4124544560909271, 0.40804818272590637, 0.4036940038204193, 0.39939069747924805, 0.3951369822025299, 0.39093172550201416, 0.38677382469177246, 0.38266217708587646, 0.378595769405365, 0.37457355856895447, 0.37059465050697327, 0.366658091545105, 0.362762987613678, 0.358908474445343, 0.35509374737739563, 0.35131800174713135, 0.3475804924964905, 0.34388044476509094, 0.34021714329719543, 0.33658990263938904, 0.3329980671405792, 0.3294409513473511, 0.32591795921325684, 0.32242849469184875, 0.3189719021320343, 0.3155476748943329, 0.31215524673461914, 0.3087940812110901, 0.30546361207962036, 0.30216339230537415, 0.29889291524887085, 0.29565170407295227, 0.2924392819404602, 0.2892552316188812, 0.28609907627105713, 0.2829704284667969, 0.27986884117126465, 0.2767939269542694, 0.2737452983856201, 0.2707225978374481, 0.26772540807724, 0.26475343108177185, 0.2618062496185303, 0.258883535861969, 0.2559850215911865, 0.25311028957366943, 0.25025907158851624, 0.24743106961250305, 0.2446259707212448, 0.24184346199035645, 0.23908329010009766, 0.23634515702724457, 0.2336287796497345, 0.23093391954898834, 0.22826029360294342, 0.22560766339302063, 0.22297576069831848, 0.22036437690258026, 0.21777324378490448, 0.21520215272903442, 0.212650865316391, 0.21011915802955627, 0.20760682225227356, 0.20511364936828613, 0.20263944566249847, 0.20018397271633148, 0.19774706661701202, 0.1953285187482834, 0.19292815029621124, 0.19054576754570007, 0.18818120658397675, 0.18583425879478455, 0.18350479006767273, 0.18119260668754578, 0.17889754474163055, 0.17661945521831512, 0.17435817420482635, 0.1721135377883911, 0.16988539695739746, 0.16767361760139465, 0.16547803580760956, 0.16329853236675262, 0.16113494336605072, 0.1589871346950531, 0.15685498714447021, 0.15473836660385132, 0.15263713896274567, 0.1505511850118637, 0.1484803706407547, 0.14642459154129028, 0.1443837285041809, 0.14235764741897583, 0.1403462439775467, 0.13834942877292633, 0.136367067694664, 0.13439907133579254, 0.1324453204870224, 0.1305057406425476, 0.12858019769191742, 0.12666863203048706, 0.12477091699838638, 0.12288697808980942, 0.1210167184472084, 0.11916005611419678, 0.11731690168380737, 0.11548716574907303, 0.11367076635360718, 0.11186762899160385, 0.11007767915725708, 0.1083008274435997, 0.10653700679540634, 0.10478614270687103, 0.1030481606721878, 0.10132300108671188, 0.0996105819940567, 0.09791085124015808, 0.09622374176979065, 0.09454918652772903, 0.09288713335990906, 0.09123751521110535, 0.08960027992725372, 0.08797537535429001, 0.08636274188756943, 0.0847623273730278, 0.08317409455776215, 0.08159798383712769, 0.08003395050764084, 0.07848194986581802, 0.07694194465875626, 0.07541389018297195, 0.07389774918556213, 0.07239348441362381, 0.070901058614254, 0.06942043453454971, 0.06795158982276917, 0.06649449467658997, 0.06504911929368973, 0.06361543387174606, 0.06219341605901718, 0.06078304722905159, 0.0593843050301075, 0.05799717456102371, 0.05662164092063904, 0.05525768920779228, 0.05390531197190285, 0.05256449431180954, 0.05123523622751236, 0.04991753399372101, 0.04861138388514519, 0.047316793352365494, 0.04603376239538193, 0.044762298464775085, 0.04350241273641586, 0.04225412383675575, 0.04101744294166565, 0.039792392402887344, 0.03857899457216263, 0.03737728297710419, 0.03618728369474411, 0.03500903770327568, 0.03384258225560188, 0.0326879620552063, 0.031545232981443405, 0.030414443463087082, 0.0292956605553627, 0.028188949450850487, 0.027094384655356407, 0.02601204626262188, 0.024942025542259216, 0.023884421214461327, 0.022839335724711418, 0.021806888282299042, 0.020787203684449196, 0.019780423492193222, 0.018786700442433357, 0.017806200310587883, 0.016839107498526573, 0.015885621309280396, 0.014945968054234982, 0.01402039173990488, 0.013109165243804455, 0.012212592177093029, 0.011331013403832912, 0.010464809834957123, 0.009614413604140282, 0.008780314587056637, 0.007963077165186405, 0.007163353264331818, 0.0063819061033427715, 0.005619642324745655, 0.004877655766904354, 0.004157294984906912, 0.003460264764726162, 0.0027887988835573196, 0.0021459676790982485, 0.001536299823783338, 0.0009672692976891994, 0.0004541343660093844]);
 33122  		kn = $toNativeArray($kindUint32, [1991057938, 0, 1611602771, 1826899878, 1918584482, 1969227037, 2001281515, 2023368125, 2039498179, 2051788381, 2061460127, 2069267110, 2075699398, 2081089314, 2085670119, 2089610331, 2093034710, 2096037586, 2098691595, 2101053571, 2103168620, 2105072996, 2106796166, 2108362327, 2109791536, 2111100552, 2112303493, 2113412330, 2114437283, 2115387130, 2116269447, 2117090813, 2117856962, 2118572919, 2119243101, 2119871411, 2120461303, 2121015852, 2121537798, 2122029592, 2122493434, 2122931299, 2123344971, 2123736059, 2124106020, 2124456175, 2124787725, 2125101763, 2125399283, 2125681194, 2125948325, 2126201433, 2126441213, 2126668298, 2126883268, 2127086657, 2127278949, 2127460589, 2127631985, 2127793506, 2127945490, 2128088244, 2128222044, 2128347141, 2128463758, 2128572095, 2128672327, 2128764606, 2128849065, 2128925811, 2128994934, 2129056501, 2129110560, 2129157136, 2129196237, 2129227847, 2129251929, 2129268426, 2129277255, 2129278312, 2129271467, 2129256561, 2129233410, 2129201800, 2129161480, 2129112170, 2129053545, 2128985244, 2128906855, 2128817916, 2128717911, 2128606255, 2128482298, 2128345305, 2128194452, 2128028813, 2127847342, 2127648860, 2127432031, 2127195339, 2126937058, 2126655214, 2126347546, 2126011445, 2125643893, 2125241376, 2124799783, 2124314271, 2123779094, 2123187386, 2122530867, 2121799464, 2120980787, 2120059418, 2119015917, 2117825402, 2116455471, 2114863093, 2112989789, 2110753906, 2108037662, 2104664315, 2100355223, 2094642347, 2086670106, 2074676188, 2054300022, 2010539237]);
 33123  		wn = $toNativeArray($kindFloat32, [1.7290404663583558e-09, 1.2680928529462676e-10, 1.689751810696194e-10, 1.9862687883343e-10, 2.223243117382978e-10, 2.4244936613904144e-10, 2.601613091623989e-10, 2.761198769629658e-10, 2.9073962681813725e-10, 3.042996965518796e-10, 3.169979556627567e-10, 3.289802041894774e-10, 3.4035738116777736e-10, 3.5121602848242617e-10, 3.61625090983253e-10, 3.7164057942185025e-10, 3.813085680537398e-10, 3.906675816178762e-10, 3.997501218933053e-10, 4.0858399996679395e-10, 4.1719308563337165e-10, 4.255982233303257e-10, 4.3381759295968436e-10, 4.4186720948857783e-10, 4.497613115272969e-10, 4.57512583373898e-10, 4.6513240481438345e-10, 4.726310454117311e-10, 4.800177477726209e-10, 4.873009773476156e-10, 4.944885056978876e-10, 5.015873272284921e-10, 5.086040477664255e-10, 5.155446070048697e-10, 5.224146670812502e-10, 5.292193350214802e-10, 5.359634958068682e-10, 5.426517013518151e-10, 5.492881705038144e-10, 5.558769555769061e-10, 5.624218868405251e-10, 5.689264614971989e-10, 5.75394121238304e-10, 5.818281967329142e-10, 5.882316855831959e-10, 5.946076964136182e-10, 6.009590047817426e-10, 6.072883862451306e-10, 6.135985053390414e-10, 6.19892026598734e-10, 6.261713370037114e-10, 6.324390455780815e-10, 6.386973727678935e-10, 6.449488165749528e-10, 6.511955974453087e-10, 6.574400468473129e-10, 6.636843297158634e-10, 6.699307220081607e-10, 6.761814441702541e-10, 6.824387166481927e-10, 6.887046488657234e-10, 6.949815167800466e-10, 7.012714853260604e-10, 7.075767749498141e-10, 7.13899661608508e-10, 7.202424212593428e-10, 7.266072743483676e-10, 7.329966078550854e-10, 7.394128087589991e-10, 7.458582640396116e-10, 7.523354716987285e-10, 7.588469852493063e-10, 7.653954137154528e-10, 7.719834771435785e-10, 7.786139510912449e-10, 7.852897221383159e-10, 7.920137878869582e-10, 7.987892014504894e-10, 8.056192379868321e-10, 8.125072836762115e-10, 8.194568912323064e-10, 8.264716688799467e-10, 8.3355555791087e-10, 8.407127216614185e-10, 8.479473234679347e-10, 8.552640262671218e-10, 8.626675485068347e-10, 8.701631637464402e-10, 8.777562010564566e-10, 8.854524335966119e-10, 8.932581896381464e-10, 9.011799639857543e-10, 9.092249730890956e-10, 9.174008219758889e-10, 9.25715837318819e-10, 9.341788453909317e-10, 9.42799727177146e-10, 9.515889187738935e-10, 9.605578554783278e-10, 9.697193048552322e-10, 9.790869226478094e-10, 9.886760299337993e-10, 9.985036131254788e-10, 1.008588212947359e-09, 1.0189509236369076e-09, 1.0296150598776421e-09, 1.040606933955246e-09, 1.0519566329136865e-09, 1.0636980185552147e-09, 1.0758701707302976e-09, 1.0885182755160372e-09, 1.101694735439196e-09, 1.115461056855338e-09, 1.1298901814171813e-09, 1.1450695946990663e-09, 1.1611052119775422e-09, 1.178127595480305e-09, 1.1962995039027646e-09, 1.2158286599728285e-09, 1.2369856250415978e-09, 1.2601323318151003e-09, 1.2857697129220469e-09, 1.3146201904845611e-09, 1.3477839955200466e-09, 1.3870635751089821e-09, 1.43574030442295e-09, 1.5008658760251592e-09, 1.6030947680434338e-09]);
 33124  		fn = $toNativeArray($kindFloat32, [1, 0.963599681854248, 0.9362826943397522, 0.9130436182022095, 0.8922816514968872, 0.8732430338859558, 0.8555005788803101, 0.8387836217880249, 0.8229072093963623, 0.8077383041381836, 0.7931770086288452, 0.7791460752487183, 0.7655841708183289, 0.7524415850639343, 0.7396772503852844, 0.7272568941116333, 0.7151514887809753, 0.7033361196517944, 0.6917891502380371, 0.6804918646812439, 0.6694276928901672, 0.6585819721221924, 0.6479418277740479, 0.6374954581260681, 0.6272324919700623, 0.6171433925628662, 0.6072195172309875, 0.5974531769752502, 0.5878370404243469, 0.5783646702766418, 0.5690299868583679, 0.5598273873329163, 0.550751805305481, 0.5417983531951904, 0.5329626798629761, 0.5242405533790588, 0.5156282186508179, 0.5071220397949219, 0.49871864914894104, 0.4904148280620575, 0.48220765590667725, 0.47409430146217346, 0.466072142124176, 0.45813870429992676, 0.45029163360595703, 0.44252872467041016, 0.4348478317260742, 0.42724698781967163, 0.41972434520721436, 0.41227802634239197, 0.40490642189979553, 0.39760786294937134, 0.3903807997703552, 0.3832238018512726, 0.3761354684829712, 0.3691144585609436, 0.36215949058532715, 0.3552693724632263, 0.3484429717063904, 0.3416791558265686, 0.33497685194015503, 0.32833510637283325, 0.3217529058456421, 0.3152293860912323, 0.30876362323760986, 0.3023548424243927, 0.2960021495819092, 0.2897048592567444, 0.28346219658851624, 0.2772735059261322, 0.271138072013855, 0.2650552988052368, 0.25902456045150757, 0.25304529070854187, 0.24711695313453674, 0.24123899638652802, 0.23541094362735748, 0.22963231801986694, 0.22390270233154297, 0.21822164952754974, 0.21258877217769623, 0.20700371265411377, 0.20146611332893372, 0.1959756463766098, 0.19053204357624054, 0.18513499200344086, 0.17978426814079285, 0.1744796335697174, 0.16922089457511902, 0.16400785744190216, 0.1588403731584549, 0.15371830761432648, 0.14864157140254974, 0.14361007511615753, 0.13862377405166626, 0.13368265330791473, 0.12878671288490295, 0.12393598258495331, 0.11913054436445236, 0.11437050998210907, 0.10965602099895477, 0.1049872562289238, 0.10036443918943405, 0.09578784555196762, 0.09125780314207077, 0.08677466958761215, 0.08233889937400818, 0.07795098423957825, 0.07361150532960892, 0.06932111829519272, 0.06508058309555054, 0.06089077144861221, 0.05675266310572624, 0.05266740173101425, 0.048636294901371, 0.044660862535238266, 0.040742866694927216, 0.03688438981771469, 0.03308788686990738, 0.029356317594647408, 0.025693291798233986, 0.02210330404341221, 0.018592102453112602, 0.015167297795414925, 0.011839478276669979, 0.0086244847625494, 0.005548994988203049, 0.0026696291752159595]);
 33125  		rng_cooked = $toNativeArray($kindInt64, [new $Int64(-973649357, 3952672746), new $Int64(-1065661887, 3130416987), new $Int64(324977939, 3414273807), new $Int64(1241840476, 2806224363), new $Int64(-1477934308, 1997590414), new $Int64(2103305448, 2402795971), new $Int64(1663160183, 1140819369), new $Int64(1120601685, 1788868961), new $Int64(1848035537, 1089001426), new $Int64(1235702047, 873593504), new $Int64(1911387977, 581324885), new $Int64(-1654874170, 1609182556), new $Int64(1069394745, 1241596776), new $Int64(1895445337, 1771189259), new $Int64(-1374618802, 3467012610), new $Int64(-140526423, 2344407434), new $Int64(-1745367887, 782467244), new $Int64(26335124, 3404933915), new $Int64(1063924276, 618867887), new $Int64(-968700782, 520164395), new $Int64(-1591572833, 1341358184), new $Int64(-1515085039, 665794848), new $Int64(1527227641, 3183648150), new $Int64(1781176124, 696329606), new $Int64(1789146075, 4151988961), new $Int64(-2087444114, 998951326), new $Int64(-612324923, 1364957564), new $Int64(63173359, 4090230633), new $Int64(-1498029007, 4009697548), new $Int64(248009524, 2569622517), new $Int64(778703922, 3742421481), new $Int64(-1109106023, 1506914633), new $Int64(1738099768, 1983412561), new $Int64(236311649, 1436266083), new $Int64(-1111517500, 3922894967), new $Int64(-1336974714, 1792680179), new $Int64(563141142, 1188796351), new $Int64(1349617468, 405968250), new $Int64(1044074554, 433754187), new $Int64(870549669, 4073162024), new $Int64(-1094251604, 433121399), new $Int64(2451824, 4162580594), new $Int64(-137262572, 4132415622), new $Int64(-1536231048, 3033822028), new $Int64(2016407895, 824682382), new $Int64(2366218, 3583765414), new $Int64(-624604839, 535386927), new $Int64(1637219058, 2286693689), new $Int64(1453075389, 2968466525), new $Int64(193683513, 1351410206), new $Int64(-283806096, 1412813499), new $Int64(492736522, 4126267639), new $Int64(512765208, 2105529399), new $Int64(2132966268, 2413882233), new $Int64(947457634, 32226200), new $Int64(1149341356, 2032329073), new $Int64(106485445, 1356518208), new $Int64(-2067810156, 3430061722), new $Int64(-1484435135, 3820169661), new $Int64(-1665985194, 2981816134), new $Int64(1017155588, 4184371017), new $Int64(206574701, 2119206761), new $Int64(-852109057, 2472200560), new $Int64(-560457548, 2853524696), new $Int64(1307803389, 1681119904), new $Int64(-174986835, 95608918), new $Int64(392686347, 3690479145), new $Int64(-1205570926, 1397922290), new $Int64(-1159314025, 1516129515), new $Int64(-320178155, 1547420459), new $Int64(1311333971, 1470949486), new $Int64(-1953469798, 1336785672), new $Int64(-45086614, 4131677129), new $Int64(-1392278100, 4246329084), new $Int64(-1142500187, 3788585631), new $Int64(-66478285, 3080389532), new $Int64(-646438364, 2215402037), new $Int64(391002300, 1171593935), new $Int64(1408774047, 1423855166), new $Int64(-519177718, 2276716302), new $Int64(-368453140, 2068027241), new $Int64(1369359303, 3427553297), new $Int64(189241615, 3289637845), new $Int64(1057480830, 3486407650), new $Int64(-1512910664, 3071877822), new $Int64(1159653919, 3363620705), new $Int64(-934256930, 4159821533), new $Int64(-76621938, 1894661), new $Int64(-674493898, 1156868282), new $Int64(348271067, 776219088), new $Int64(-501428838, 2425634259), new $Int64(1716021749, 680510161), new $Int64(-574263456, 1310101429), new $Int64(1095885995, 2964454134), new $Int64(-325695512, 3467098407), new $Int64(1990672920, 2109628894), new $Int64(-2139648704, 1232604732), new $Int64(-1838070714, 3261916179), new $Int64(1699175360, 434597899), new $Int64(235436061, 1624796439), new $Int64(-1626402839, 3589632480), new $Int64(1198416575, 864579159), new $Int64(-1938748161, 1380889830), new $Int64(619206309, 2654509477), new $Int64(1419738251, 1468209306), new $Int64(-1744284772, 100794388), new $Int64(-1191421458, 2991674471), new $Int64(-208666741, 2224662036), new $Int64(-173659161, 977097250), new $Int64(1351320195, 726419512), new $Int64(-183459897, 1747974366), new $Int64(-753095183, 1556430604), new $Int64(-1049492215, 1080776742), new $Int64(-385846958, 280794874), new $Int64(117767733, 919835643), new $Int64(-967009426, 3434019658), new $Int64(-1951414480, 2461941785), new $Int64(133215641, 3615001066), new $Int64(417204809, 3103414427), new $Int64(790056561, 3380809712), new $Int64(-1267681408, 2724693469), new $Int64(547796833, 598827710), new $Int64(-1846559452, 3452273442), new $Int64(-75778224, 649274915), new $Int64(-801301329, 2585724112), new $Int64(-1510934263, 3165579553), new $Int64(1185578221, 2635894283), new $Int64(-52910178, 2053289721), new $Int64(985976581, 3169337108), new $Int64(1170569632, 144717764), new $Int64(1079216270, 1383666384), new $Int64(-124804942, 681540375), new $Int64(1375448925, 537050586), new $Int64(-1964768344, 315246468), new $Int64(226402871, 849323088), new $Int64(-885062465, 45543944), new $Int64(-946445250, 2319052083), new $Int64(-40708194, 3613090841), new $Int64(560472520, 2992171180), new $Int64(-381863169, 2068244785), new $Int64(917538188, 4239862634), new $Int64(-1369555809, 3892253031), new $Int64(720683925, 958186149), new $Int64(-423297785, 1877702262), new $Int64(1357886971, 837674867), new $Int64(1837048883, 1507589294), new $Int64(1905518400, 873336795), new $Int64(-1879761037, 2764496274), new $Int64(-1806480530, 4196182374), new $Int64(-1066765755, 550964545), new $Int64(818747069, 420611474), new $Int64(-1924830376, 204265180), new $Int64(1549974541, 1787046383), new $Int64(1215581865, 3102292318), new $Int64(418321538, 1552199393), new $Int64(1243493047, 980542004), new $Int64(267284263, 3293718720), new $Int64(1179528763, 3771917473), new $Int64(599484404, 2195808264), new $Int64(252818753, 3894702887), new $Int64(-1367475956, 2099949527), new $Int64(1424094358, 338442522), new $Int64(490737398, 637158004), new $Int64(-1727621530, 281976339), new $Int64(574970164, 3619802330), new $Int64(-431930823, 3084554784), new $Int64(-1264611183, 4129772886), new $Int64(-2104399043, 1680378557), new $Int64(-1621962591, 3339087776), new $Int64(1680500332, 4220317857), new $Int64(-1935828963, 2959322499), new $Int64(1675600481, 1488354890), new $Int64(-834863562, 3958162143), new $Int64(-1226511573, 2773705983), new $Int64(1876039582, 225908689), new $Int64(-1183735113, 908216283), new $Int64(-605696219, 3574646075), new $Int64(-1827723091, 1936937569), new $Int64(1519770881, 75492235), new $Int64(816689472, 1935193178), new $Int64(2142521206, 2018250883), new $Int64(455141620, 3943126022), new $Int64(-601399488, 3066544345), new $Int64(1932392669, 2793082663), new $Int64(-1239009361, 3297036421), new $Int64(1640597065, 2206987825), new $Int64(-553246738, 807894872), new $Int64(-1781325307, 766252117), new $Int64(2060649606, 3833114345), new $Int64(845619743, 1255067973), new $Int64(1201145605, 741697208), new $Int64(-1476242608, 2810093753), new $Int64(1109032642, 4229340371), new $Int64(1462188720, 1361684224), new $Int64(-1159399429, 1906263026), new $Int64(475781207, 3904421704), new $Int64(-623537128, 1769075545), new $Int64(1062308525, 2621599764), new $Int64(1279509432, 3431891480), new $Int64(-1742751146, 1871896503), new $Int64(128756421, 1412808876), new $Int64(1605404688, 952876175), new $Int64(-230443691, 1824438899), new $Int64(1662295856, 1005035476), new $Int64(-156574141, 527508597), new $Int64(1288873303, 3066806859), new $Int64(565995893, 3244940914), new $Int64(-889746188, 209092916), new $Int64(-247669406, 1242699167), new $Int64(-713830396, 456723774), new $Int64(1776978905, 1001252870), new $Int64(1468772157, 2026725874), new $Int64(857254202, 2137562569), new $Int64(765939740, 3183366709), new $Int64(1533887628, 2612072960), new $Int64(56977098, 1727148468), new $Int64(-1197583895, 3803658212), new $Int64(1883670356, 479946959), new $Int64(685713571, 1562982345), new $Int64(-1946242443, 1766109365), new $Int64(700596547, 3257093788), new $Int64(-184714929, 2365720207), new $Int64(93384808, 3742754173), new $Int64(-458385235, 2878193673), new $Int64(1096135042, 2174002182), new $Int64(-834260953, 3573511231), new $Int64(-754572527, 1760299077), new $Int64(-1375627191, 2260779833), new $Int64(-866019274, 1452805722), new $Int64(-1229671918, 2940011802), new $Int64(1890251082, 1886183802), new $Int64(893897673, 2514369088), new $Int64(1644345561, 3924317791), new $Int64(-1974867432, 500935732), new $Int64(1403501753, 676580929), new $Int64(-1565912283, 1184984890), new $Int64(-691968413, 1271474274), new $Int64(-1828754738, 3163791473), new $Int64(2051027584, 2842487377), new $Int64(1511537551, 2170968612), new $Int64(573262976, 3535856740), new $Int64(-2053227187, 1488599718), new $Int64(-1180531831, 3408913763), new $Int64(-2086531912, 2501050084), new $Int64(-875130448, 1639124157), new $Int64(-2009482504, 4088176393), new $Int64(1574896563, 3989947576), new $Int64(-165243708, 3414355209), new $Int64(-792329287, 2275136352), new $Int64(-2057774345, 2151835223), new $Int64(-931144933, 1654534827), new $Int64(-679921451, 377892833), new $Int64(-482716010, 660204544), new $Int64(85706799, 390828249), new $Int64(-1422172693, 3402783878), new $Int64(-1468634160, 3717936603), new $Int64(1113532086, 2211058823), new $Int64(1564224320, 2692150867), new $Int64(1952770442, 1928910388), new $Int64(788716862, 3931011137), new $Int64(1083670504, 1112701047), new $Int64(-68150572, 2452299106), new $Int64(-896164822, 2337204777), new $Int64(1774877857, 273889282), new $Int64(1798719843, 1462008793), new $Int64(2138834788, 1554494002), new $Int64(-1194967131, 182675323), new $Int64(-1598554764, 1882802136), new $Int64(589279648, 3700220025), new $Int64(381039426, 3083431543), new $Int64(-851859191, 3622207527), new $Int64(338126939, 432729309), new $Int64(-1667470126, 2391914317), new $Int64(-1849558151, 235747924), new $Int64(2120733629, 3088823825), new $Int64(-745079795, 2314658321), new $Int64(1165929723, 2957634338), new $Int64(501323675, 4117056981), new $Int64(1564699815, 1482500298), new $Int64(-740826490, 840489337), new $Int64(799522364, 3483178565), new $Int64(532129761, 2074004656), new $Int64(724246478, 3643392642), new $Int64(-665153481, 1583624461), new $Int64(-885822954, 287473085), new $Int64(1667835381, 3136843981), new $Int64(1138806821, 1266970974), new $Int64(135185781, 1998688839), new $Int64(392094735, 1492900209), new $Int64(1031326774, 1538112737), new $Int64(-2070568842, 2207265429), new $Int64(-1886797613, 963263315), new $Int64(1671145500, 2295892134), new $Int64(1068469660, 2002560897), new $Int64(-356250305, 1369254035), new $Int64(33436120, 3353312708), new $Int64(57507843, 947771099), new $Int64(-1945755145, 1747061399), new $Int64(1507240140, 2047354631), new $Int64(720000810, 4165367136), new $Int64(479265078, 3388864963), new $Int64(-952181250, 286492130), new $Int64(2045622690, 2795735007), new $Int64(-715730566, 3703961339), new $Int64(-148436487, 1797825479), new $Int64(1429039600, 1116589674), new $Int64(-1665420098, 2593309206), new $Int64(1329049334, 3404995677), new $Int64(-750579440, 3453462936), new $Int64(1014767077, 3016498634), new $Int64(75698599, 1650371545), new $Int64(1592007860, 212344364), new $Int64(1127766888, 3843932156), new $Int64(-748019856, 3573129983), new $Int64(-890581831, 665897820), new $Int64(1071492673, 1675628772), new $Int64(243225682, 2831752928), new $Int64(2120298836, 1486294219), new $Int64(-1954407413, 268782709), new $Int64(-1002123503, 4186179080), new $Int64(624342951, 1613720397), new $Int64(857179861, 2703686015), new $Int64(-911618704, 2205342611), new $Int64(-672703993, 1411666394), new $Int64(-1528454899, 677744900), new $Int64(-1876628533, 4172867247), new $Int64(135494707, 2163418403), new $Int64(849547544, 2841526879), new $Int64(-1117516959, 1082141470), new $Int64(-1770111792, 4046134367), new $Int64(51415528, 2142943655), new $Int64(-249824333, 3124627521), new $Int64(998228909, 219992939), new $Int64(-1078790951, 1756846531), new $Int64(1283749206, 1225118210), new $Int64(-525858006, 1647770243), new $Int64(-2035959705, 444807907), new $Int64(2036369448, 3952076173), new $Int64(53201823, 1461839639), new $Int64(315761893, 3699250910), new $Int64(702974850, 1373688981), new $Int64(734022261, 147523747), new $Int64(-2047330906, 1211276581), new $Int64(1294440951, 2548832680), new $Int64(1144696256, 1995631888), new $Int64(-1992983070, 2011457303), new $Int64(-1351022674, 3057425772), new $Int64(667839456, 81484597), new $Int64(-1681980888, 3646681560), new $Int64(-1372462725, 635548515), new $Int64(602489502, 2508044581), new $Int64(-1794220117, 1014917157), new $Int64(719992433, 3214891315), new $Int64(-1294799037, 959582252), new $Int64(226415134, 3347040449), new $Int64(-362868096, 4102971975), new $Int64(397887437, 4078022210), new $Int64(-536803826, 2851767182), new $Int64(-1398321012, 1540160644), new $Int64(-1549098876, 1057290595), new $Int64(-112592988, 3907769253), new $Int64(579300318, 4248952684), new $Int64(-1054576049, 132554364), new $Int64(-1085862414, 1029351092), new $Int64(697840928, 2583007416), new $Int64(298619124, 1486185789), new $Int64(55905697, 2871589073), new $Int64(2017643612, 723203291), new $Int64(146250550, 2494333952), new $Int64(-1082993397, 2230939180), new $Int64(-1804568072, 3943232912), new $Int64(1768732449, 2181367922), new $Int64(-729261111, 2889274791), new $Int64(1824032949, 2046728161), new $Int64(1653899792, 1376052477), new $Int64(1022327048, 381236993), new $Int64(-1113097690, 3188942166), new $Int64(-74480109, 350070824), new $Int64(144881592, 61758415), new $Int64(-741824226, 3492950336), new $Int64(-2030042720, 3093818430), new $Int64(-453590535, 2962480613), new $Int64(-1912050708, 3154871160), new $Int64(-1636478569, 3228564679), new $Int64(610731502, 888276216), new $Int64(-946702974, 3574998604), new $Int64(-1277068380, 1967526716), new $Int64(-1556147941, 1554691298), new $Int64(-1573024234, 339944798), new $Int64(1223764147, 1154515356), new $Int64(1825645307, 967516237), new $Int64(1546195135, 596588202), new $Int64(-1867600880, 3764362170), new $Int64(-1655392592, 266611402), new $Int64(-393255880, 2047856075), new $Int64(-1000726433, 21444105), new $Int64(-949424754, 3065563181), new $Int64(-232418803, 1140663212), new $Int64(633187674, 2323741028), new $Int64(2126290159, 3103873707), new $Int64(1008658319, 2766828349), new $Int64(-485587503, 1970872996), new $Int64(1628585413, 3766615585), new $Int64(-595148528, 2036813414), new $Int64(-1994877121, 3105536507), new $Int64(13954645, 3396176938), new $Int64(-721402003, 1377154485), new $Int64(-61839181, 3807014186), new $Int64(543009040, 3710110597), new $Int64(-1751425519, 916420443), new $Int64(734556788, 2103831255), new $Int64(-1766161494, 717331943), new $Int64(-1574598896, 3550505941), new $Int64(45939673, 378749927), new $Int64(-1997615719, 611017331), new $Int64(592130075, 758907650), new $Int64(1012992349, 154266815), new $Int64(-1040454942, 1407468696), new $Int64(-1678191250, 970098704), new $Int64(-285057486, 1971660656), new $Int64(998365243, 3332747885), new $Int64(1947089649, 1935189867), new $Int64(1510248801, 203520055), new $Int64(-1305165746, 3916463034), new $Int64(-388598655, 3474113316), new $Int64(1036101639, 316544223), new $Int64(-1773744891, 1650844677), new $Int64(-907191419, 4267565603), new $Int64(-1070275024, 2501167616), new $Int64(-1520651863, 3929401789), new $Int64(-2091360852, 337170252), new $Int64(-960502090, 2061966842), new $Int64(-304190848, 2508461464), new $Int64(-1941471116, 2791377107), new $Int64(1240791848, 1227227588), new $Int64(1813978778, 1709681848), new $Int64(1153692192, 3768820575), new $Int64(-1002297449, 2887126398), new $Int64(-1447111334, 296561685), new $Int64(700300844, 3729960077), new $Int64(-1572311344, 372833036), new $Int64(2078875613, 2409779288), new $Int64(1829161290, 555274064), new $Int64(-1105595719, 4239804901), new $Int64(1839403216, 3723486978), new $Int64(-1649093095, 2145871984), new $Int64(-1582765715, 3565480803), new $Int64(-1568653827, 2197313814), new $Int64(974785092, 3613674566), new $Int64(438638731, 3042093666), new $Int64(-96556264, 3324034321), new $Int64(869420878, 3708873369), new $Int64(946682149, 1698090092), new $Int64(1618900382, 4213940712), new $Int64(-1843479747, 2087477361), new $Int64(-1766167800, 2407950639), new $Int64(-1296225558, 3942568569), new $Int64(-1223900450, 4088074412), new $Int64(723260036, 2964773675), new $Int64(-673921829, 1539178386), new $Int64(1062961552, 2694849566), new $Int64(460977733, 2120273838), new $Int64(-1604570740, 2484608657), new $Int64(880846449, 2956190677), new $Int64(1970902366, 4223313749), new $Int64(662161910, 3502682327), new $Int64(705634754, 4133891139), new $Int64(-1031359300, 1166449596), new $Int64(1038247601, 3362705993), new $Int64(93734798, 3892921029), new $Int64(1876124043, 786869787), new $Int64(1057490746, 1046342263), new $Int64(242763728, 493777327), new $Int64(-853573201, 3304827646), new $Int64(616460742, 125356352), new $Int64(499300063, 74094113), new $Int64(-795586925, 2500816079), new $Int64(-490248444, 514015239), new $Int64(1377565129, 543520454), new $Int64(-2039776725, 3614531153), new $Int64(2056746300, 2356753985), new $Int64(1390062617, 2018141668), new $Int64(131272971, 2087974891), new $Int64(-1502927041, 3166972343), new $Int64(372256200, 1517638666), new $Int64(-935275664, 173466846), new $Int64(-695774461, 4241513471), new $Int64(-1413550842, 2783126920), new $Int64(1972004134, 4167264826), new $Int64(29260506, 3907395640), new $Int64(-910901561, 1539634186), new $Int64(-595957298, 178241987), new $Int64(-113277636, 182168164), new $Int64(-1102530459, 2386154934), new $Int64(1379126408, 4077374341), new $Int64(-2114679722, 1732699140), new $Int64(-421057745, 1041306002), new $Int64(1860414813, 2068001749), new $Int64(1005320202, 3208962910), new $Int64(844054010, 697710380), new $Int64(-1509359403, 2228431183), new $Int64(-810313977, 3554678728), new $Int64(-750989047, 173470263), new $Int64(-85886265, 3848297795), new $Int64(-926936977, 246236185), new $Int64(-1984190461, 2066374846), new $Int64(1771673660, 312890749), new $Int64(703378057, 3573310289), new $Int64(-598851901, 143166754), new $Int64(613554316, 2081511079), new $Int64(1197802104, 486038032), new $Int64(-1906483789, 2982218564), new $Int64(364901986, 1000939191), new $Int64(1902782651, 2750454885), new $Int64(-671844857, 3375313137), new $Int64(-1643868040, 881302957), new $Int64(-1508784745, 2514186393), new $Int64(-1703622845, 360024739), new $Int64(1399671872, 292500025), new $Int64(1381210821, 2276300752), new $Int64(521803381, 4069087683), new $Int64(-1938982667, 1637778212), new $Int64(720490469, 1676670893), new $Int64(1067262482, 3855174429), new $Int64(2114075974, 2067248671), new $Int64(-89426259, 2884561259), new $Int64(-805741095, 2456511185), new $Int64(983726246, 561175414), new $Int64(-1719489563, 432588903), new $Int64(885133709, 4059399550), new $Int64(-93096266, 1075014784), new $Int64(-1733832628, 2728058415), new $Int64(1839142064, 1299703678), new $Int64(1262333188, 2347583393), new $Int64(1285481956, 2468164145), new $Int64(-1158354011, 1140014346), new $Int64(2033889184, 1936972070), new $Int64(-1737578993, 3870530098), new $Int64(-484494257, 1717789158), new $Int64(-232997156, 1153452491), new $Int64(-990424416, 3948827651), new $Int64(-1357145630, 2101413152), new $Int64(1495744672, 3854091229), new $Int64(83644069, 4215565463), new $Int64(-1385277313, 1202710438), new $Int64(-564909037, 2072216740), new $Int64(705690639, 2066751068), new $Int64(-2113583312, 173902580), new $Int64(-741983806, 142459001), new $Int64(172391592, 1889151926), new $Int64(-498943125, 3034199774), new $Int64(1618587731, 516490102), new $Int64(93114264, 3692577783), new $Int64(-2078821353, 2953948865), new $Int64(-320938673, 4041040923), new $Int64(-1942517976, 592046130), new $Int64(-705643640, 384297211), new $Int64(-2051649464, 265863924), new $Int64(2101717619, 1333136237), new $Int64(1499611781, 1406273556), new $Int64(1074670496, 426305476), new $Int64(125704633, 2750898176), new $Int64(488068495, 1633944332), new $Int64(2037723464, 3236349343), new $Int64(-1703423246, 4013676611), new $Int64(1718532237, 2265047407), new $Int64(1433593806, 875071080), new $Int64(-343047503, 1418843655), new $Int64(2009228711, 451657300), new $Int64(1229446621, 1866374663), new $Int64(1653472867, 1551455622), new $Int64(577191481, 3560962459), new $Int64(1669204077, 3347903778), new $Int64(-298327194, 2675874918), new $Int64(-1831355577, 2762991672), new $Int64(530492383, 3689068477), new $Int64(844089962, 4071997905), new $Int64(1508155730, 1381702441), new $Int64(2089931018, 2373284878), new $Int64(-864267462, 2143983064), new $Int64(308739063, 1938207195), new $Int64(1754949306, 1188152253), new $Int64(1272345009, 615870490), new $Int64(742653194, 2662252621), new $Int64(1477718295, 3839976789), new $Int64(-2091334213, 306752547), new $Int64(-1426688067, 2162363077), new $Int64(-57052633, 2767224719), new $Int64(-1471624099, 2628837712), new $Int64(1678405918, 2967771969), new $Int64(1694285728, 499792248), new $Int64(-1744131281, 4285253508), new $Int64(962357072, 2856511070), new $Int64(679471692, 2526409716), new $Int64(-1793706473, 1240875658), new $Int64(-914893422, 2577342868), new $Int64(-1001298215, 4136853496), new $Int64(-1477114974, 2403540137), new $Int64(1372824515, 1371410668), new $Int64(-176562048, 371758825), new $Int64(-441063112, 1528834084), new $Int64(-71688630, 1504757260), new $Int64(-1461820072, 699052551), new $Int64(-505543539, 3347789870), new $Int64(1951619734, 3430604759), new $Int64(2119672219, 1935601723), new $Int64(966789690, 834676166)]);
 33126  		globalRand = New(new lockedSource.ptr(new nosync.Mutex.ptr(false), $assertType(NewSource(new $Int64(0, 1)), Source64)));
 33127  		/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
 33128  	};
 33129  	$pkg.$init = $init;
 33130  	return $pkg;
 33131  })();
 33132  $packages["net"] = (function() {
 33133  	var $pkg = {}, $init, context, errors, js, nettrace, poll, singleflight, io, rand, os, runtime, sort, sync, atomic, syscall, time, ipAttr, byRFC6724, policyTableEntry, policyTable, byMaskLength, scope, conf, Dialer, dialParam, SRV, byPriorityWeight, MX, byPref, NS, dnsConn, dnsPacketConn, dnsStreamConn, resolverConfig, hostLookupOrder, dnsConfig, dnsHeader, dnsQuestion, dnsRR_Header, dnsRR, dnsRR_CNAME, dnsRR_MX, dnsRR_NS, dnsRR_PTR, dnsRR_SOA, dnsRR_TXT, dnsRR_SRV, dnsRR_A, dnsRR_AAAA, dnsMsgHdr, dnsMsg, netFD, Interface, Flags, ipv6ZoneCache, IP, IPMask, IPNet, IPAddr, IPConn, ipStackCapabilities, addrList, Resolver, HardwareAddr, Addr, Conn, conn, PacketConn, Listener, Error, OpError, timeout, temporary, ParseError, AddrError, UnknownNetworkError, DNSError, writerOnly, buffersWriter, Buffers, nssConf, nssSource, nssCriterion, file, rawConn, rawListener, sockaddr, TCPAddr, TCPConn, TCPListener, UDPAddr, UDPConn, UnixAddr, UnixConn, dialResult, racer, ptrType, ptrType$1, sliceType, mapType, structType, arrayType, ptrType$2, arrayType$1, sliceType$1, structType$1, ptrType$3, ptrType$4, sliceType$2, sliceType$3, sliceType$4, ptrType$5, sliceType$5, ptrType$6, ptrType$7, ptrType$8, ptrType$9, ptrType$10, ptrType$11, sliceType$6, ptrType$12, ptrType$13, ptrType$14, sliceType$7, ptrType$15, ptrType$16, ptrType$17, ptrType$18, ptrType$19, ptrType$20, ptrType$21, ptrType$22, ptrType$23, ptrType$24, ptrType$25, ptrType$26, ptrType$27, ptrType$28, sliceType$8, ptrType$29, ptrType$30, funcType, ptrType$31, ptrType$32, ptrType$33, ptrType$34, ptrType$35, ptrType$36, ptrType$37, sliceType$9, sliceType$10, ptrType$38, ptrType$39, arrayType$2, ptrType$40, structType$2, sliceType$11, arrayType$3, arrayType$4, funcType$1, sliceType$12, ptrType$41, sliceType$13, ptrType$42, ptrType$43, sliceType$14, ptrType$44, ptrType$45, sliceType$15, ptrType$46, ptrType$47, ptrType$48, ptrType$49, ptrType$50, sliceType$16, arrayType$5, ptrType$52, ptrType$53, ptrType$54, ptrType$55, ptrType$56, arrayType$6, sliceType$17, ptrType$58, ptrType$59, ptrType$60, ptrType$61, chanType, ptrType$62, ptrType$63, ptrType$64, chanType$1, funcType$2, ptrType$65, ptrType$66, ptrType$67, ptrType$68, funcType$3, ptrType$69, mapType$1, mapType$2, ptrType$70, ptrType$71, funcType$4, funcType$5, ptrType$72, mapType$3, funcType$6, funcType$7, ptrType$76, rfc6724policyTable, confOnce, confVal, resolvConf, lookupOrderName, defaultNS, getHostname, rr_mk, tryDupCloexec, tryDupCloexec$24ptr, testHookDialTCP, testHookHostsPath, testHookLookupIP, testHookSetKeepAlive, testHookCanceledDial, socketFunc, connectFunc, listenFunc, getsockoptIntFunc, hosts, errInvalidInterface, errInvalidInterfaceIndex, errInvalidInterfaceName, errNoSuchInterface, errNoSuchMulticastInterface, flagNames, zoneCache, v4InV6Prefix, classAMask, classBMask, classCMask, ipStackCaps, protocols, services, dnsWaitGroup, lookupGroup, onceReadProtocols, netGo, netCgo, listenerBacklog, errNoSuitableAddress, errMissingAddress, errCanceled, aLongTimeAgo, noDeadline, errNoSuchHost, threadLimit, onceReadServices, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, Listen, maxListenerBacklog, byteIndex, bytesEqual, bytesIndexByte, sortByRFC6724, sortByRFC6724withSrcs, srcAddrs, ipAttrOf, init, mustCIDR, classifyScope, commonPrefixLen, init$1, cgoLookupHost, cgoLookupPort, cgoLookupIP, cgoLookupCNAME, cgoLookupPTR, systemConf, initConfVal, goDebugNetDNS, isLocalhost, isGateway, minNonzeroTime, partialDeadline, parseNetwork, dialParallel, dialSerial, dialSingle, reverseaddr, answer, equalASCIILabel, isDomainName, absDomainName, addrRecordList, avoidDNS, goLookupIPFiles, dnsReadConfig, dnsDefaultSearch, hasPrefix, ensureRooted, packDomainName, unpackDomainName, packStruct, unpackStruct, printStruct, packRR, unpackRR, wrapSyscallError, newFD, dupCloseOnExec, dupCloseOnExecOld, parseLiteralIP, readHosts, lookupStaticHost, lookupStaticAddr, interfaceByIndex, interfaceTable, newLink, linkFlags, interfaceAddrTable, addrTable, newAddr, interfaceMulticastAddrTable, parseProcNetIGMP, parseProcNetIGMP6, IPv4, IPv4Mask, CIDRMask, isZeros, allFF, hexString, ipEmptyString, simpleMaskLength, networkNumberAndMask, parseIPv4, parseIPv6, ParseIP, ParseCIDR, newIPConn, sockaddrToIP, stripIPv4Header, dialIP, supportsIPv4, supportsIPv4map, isIPv4, filterAddrList, ipv4only, ipv6only, SplitHostPort, splitHostZone, JoinHostPort, loopbackIP, favoriteAddrFamily, internetSocket, ipToSockaddr, lookupProtocolMap, lookupPortMap, lookupIPReturn, ipAddrsEface, readProtocols, lookupProtocol, mapErr, genericReadFrom, parseNSSConfFile, parseNSSConf, parseCriteria, open, stat, countAnyByte, splitAtBytes, getFields, dtoi, xtoi, xtoi2, itoa, uitoa, appendHex, count, last, lowerASCIIBytes, lowerASCII, trimSpace, isSpace, removeComment, foreachLine, foreachField, stringsHasSuffix, stringsHasSuffixFold, stringsHasPrefix, stringsEqualFold, readFull, goDebugString, parsePort, readServices, goLookupPort, newRawConn, newRawListener, sendFile, sysSocket, socket, setDefaultSockopts, setDefaultListenerSockopts, setDefaultMulticastSockopts, boolint, setReadBuffer, setWriteBuffer, setKeepAlive, setLinger, newTCPConn, sockaddrToTCP, dialTCP, doDialTCP, selfConnect, spuriousENOTAVAIL, setNoDelay, setKeepAlivePeriod, newUDPConn, DialUDP, sockaddrToUDP, dialUDP, ResolveUnixAddr, newUnixConn, unixSocket, sockaddrToUnix, sockaddrToUnixgram, sockaddrToUnixpacket, sotypeToNet, dialUnix;
 33134  	context = $packages["context"];
 33135  	errors = $packages["errors"];
 33136  	js = $packages["github.com/gopherjs/gopherjs/js"];
 33137  	nettrace = $packages["internal/nettrace"];
 33138  	poll = $packages["internal/poll"];
 33139  	singleflight = $packages["internal/singleflight"];
 33140  	io = $packages["io"];
 33141  	rand = $packages["math/rand"];
 33142  	os = $packages["os"];
 33143  	runtime = $packages["runtime"];
 33144  	sort = $packages["sort"];
 33145  	sync = $packages["sync"];
 33146  	atomic = $packages["sync/atomic"];
 33147  	syscall = $packages["syscall"];
 33148  	time = $packages["time"];
 33149  	ipAttr = $pkg.ipAttr = $newType(0, $kindStruct, "net.ipAttr", true, "net", false, function(Scope_, Precedence_, Label_) {
 33150  		this.$val = this;
 33151  		if (arguments.length === 0) {
 33152  			this.Scope = 0;
 33153  			this.Precedence = 0;
 33154  			this.Label = 0;
 33155  			return;
 33156  		}
 33157  		this.Scope = Scope_;
 33158  		this.Precedence = Precedence_;
 33159  		this.Label = Label_;
 33160  	});
 33161  	byRFC6724 = $pkg.byRFC6724 = $newType(0, $kindStruct, "net.byRFC6724", true, "net", false, function(addrs_, addrAttr_, srcs_, srcAttr_) {
 33162  		this.$val = this;
 33163  		if (arguments.length === 0) {
 33164  			this.addrs = sliceType$3.nil;
 33165  			this.addrAttr = sliceType$2.nil;
 33166  			this.srcs = sliceType$4.nil;
 33167  			this.srcAttr = sliceType$2.nil;
 33168  			return;
 33169  		}
 33170  		this.addrs = addrs_;
 33171  		this.addrAttr = addrAttr_;
 33172  		this.srcs = srcs_;
 33173  		this.srcAttr = srcAttr_;
 33174  	});
 33175  	policyTableEntry = $pkg.policyTableEntry = $newType(0, $kindStruct, "net.policyTableEntry", true, "net", false, function(Prefix_, Precedence_, Label_) {
 33176  		this.$val = this;
 33177  		if (arguments.length === 0) {
 33178  			this.Prefix = ptrType$4.nil;
 33179  			this.Precedence = 0;
 33180  			this.Label = 0;
 33181  			return;
 33182  		}
 33183  		this.Prefix = Prefix_;
 33184  		this.Precedence = Precedence_;
 33185  		this.Label = Label_;
 33186  	});
 33187  	policyTable = $pkg.policyTable = $newType(12, $kindSlice, "net.policyTable", true, "net", false, null);
 33188  	byMaskLength = $pkg.byMaskLength = $newType(12, $kindSlice, "net.byMaskLength", true, "net", false, null);
 33189  	scope = $pkg.scope = $newType(1, $kindUint8, "net.scope", true, "net", false, null);
 33190  	conf = $pkg.conf = $newType(0, $kindStruct, "net.conf", true, "net", false, function(forceCgoLookupHost_, netGo_, netCgo_, hasMDNSAllow_, goos_, dnsDebugLevel_, nss_, resolv_) {
 33191  		this.$val = this;
 33192  		if (arguments.length === 0) {
 33193  			this.forceCgoLookupHost = false;
 33194  			this.netGo = false;
 33195  			this.netCgo = false;
 33196  			this.hasMDNSAllow = false;
 33197  			this.goos = "";
 33198  			this.dnsDebugLevel = 0;
 33199  			this.nss = ptrType$2.nil;
 33200  			this.resolv = ptrType$1.nil;
 33201  			return;
 33202  		}
 33203  		this.forceCgoLookupHost = forceCgoLookupHost_;
 33204  		this.netGo = netGo_;
 33205  		this.netCgo = netCgo_;
 33206  		this.hasMDNSAllow = hasMDNSAllow_;
 33207  		this.goos = goos_;
 33208  		this.dnsDebugLevel = dnsDebugLevel_;
 33209  		this.nss = nss_;
 33210  		this.resolv = resolv_;
 33211  	});
 33212  	Dialer = $pkg.Dialer = $newType(0, $kindStruct, "net.Dialer", true, "net", true, function(Timeout_, Deadline_, LocalAddr_, DualStack_, FallbackDelay_, KeepAlive_, Resolver_, Cancel_) {
 33213  		this.$val = this;
 33214  		if (arguments.length === 0) {
 33215  			this.Timeout = new time.Duration(0, 0);
 33216  			this.Deadline = new time.Time.ptr(new $Uint64(0, 0), new $Int64(0, 0), ptrType.nil);
 33217  			this.LocalAddr = $ifaceNil;
 33218  			this.DualStack = false;
 33219  			this.FallbackDelay = new time.Duration(0, 0);
 33220  			this.KeepAlive = new time.Duration(0, 0);
 33221  			this.Resolver = ptrType$6.nil;
 33222  			this.Cancel = $chanNil;
 33223  			return;
 33224  		}
 33225  		this.Timeout = Timeout_;
 33226  		this.Deadline = Deadline_;
 33227  		this.LocalAddr = LocalAddr_;
 33228  		this.DualStack = DualStack_;
 33229  		this.FallbackDelay = FallbackDelay_;
 33230  		this.KeepAlive = KeepAlive_;
 33231  		this.Resolver = Resolver_;
 33232  		this.Cancel = Cancel_;
 33233  	});
 33234  	dialParam = $pkg.dialParam = $newType(0, $kindStruct, "net.dialParam", true, "net", false, function(Dialer_, network_, address_) {
 33235  		this.$val = this;
 33236  		if (arguments.length === 0) {
 33237  			this.Dialer = new Dialer.ptr(new time.Duration(0, 0), new time.Time.ptr(new $Uint64(0, 0), new $Int64(0, 0), ptrType.nil), $ifaceNil, false, new time.Duration(0, 0), new time.Duration(0, 0), ptrType$6.nil, $chanNil);
 33238  			this.network = "";
 33239  			this.address = "";
 33240  			return;
 33241  		}
 33242  		this.Dialer = Dialer_;
 33243  		this.network = network_;
 33244  		this.address = address_;
 33245  	});
 33246  	SRV = $pkg.SRV = $newType(0, $kindStruct, "net.SRV", true, "net", true, function(Target_, Port_, Priority_, Weight_) {
 33247  		this.$val = this;
 33248  		if (arguments.length === 0) {
 33249  			this.Target = "";
 33250  			this.Port = 0;
 33251  			this.Priority = 0;
 33252  			this.Weight = 0;
 33253  			return;
 33254  		}
 33255  		this.Target = Target_;
 33256  		this.Port = Port_;
 33257  		this.Priority = Priority_;
 33258  		this.Weight = Weight_;
 33259  	});
 33260  	byPriorityWeight = $pkg.byPriorityWeight = $newType(12, $kindSlice, "net.byPriorityWeight", true, "net", false, null);
 33261  	MX = $pkg.MX = $newType(0, $kindStruct, "net.MX", true, "net", true, function(Host_, Pref_) {
 33262  		this.$val = this;
 33263  		if (arguments.length === 0) {
 33264  			this.Host = "";
 33265  			this.Pref = 0;
 33266  			return;
 33267  		}
 33268  		this.Host = Host_;
 33269  		this.Pref = Pref_;
 33270  	});
 33271  	byPref = $pkg.byPref = $newType(12, $kindSlice, "net.byPref", true, "net", false, null);
 33272  	NS = $pkg.NS = $newType(0, $kindStruct, "net.NS", true, "net", true, function(Host_) {
 33273  		this.$val = this;
 33274  		if (arguments.length === 0) {
 33275  			this.Host = "";
 33276  			return;
 33277  		}
 33278  		this.Host = Host_;
 33279  	});
 33280  	dnsConn = $pkg.dnsConn = $newType(8, $kindInterface, "net.dnsConn", true, "net", false, null);
 33281  	dnsPacketConn = $pkg.dnsPacketConn = $newType(0, $kindStruct, "net.dnsPacketConn", true, "net", false, function(Conn_) {
 33282  		this.$val = this;
 33283  		if (arguments.length === 0) {
 33284  			this.Conn = $ifaceNil;
 33285  			return;
 33286  		}
 33287  		this.Conn = Conn_;
 33288  	});
 33289  	dnsStreamConn = $pkg.dnsStreamConn = $newType(0, $kindStruct, "net.dnsStreamConn", true, "net", false, function(Conn_) {
 33290  		this.$val = this;
 33291  		if (arguments.length === 0) {
 33292  			this.Conn = $ifaceNil;
 33293  			return;
 33294  		}
 33295  		this.Conn = Conn_;
 33296  	});
 33297  	resolverConfig = $pkg.resolverConfig = $newType(0, $kindStruct, "net.resolverConfig", true, "net", false, function(initOnce_, ch_, lastChecked_, mu_, dnsConfig_) {
 33298  		this.$val = this;
 33299  		if (arguments.length === 0) {
 33300  			this.initOnce = new sync.Once.ptr(new sync.Mutex.ptr(0, 0), 0);
 33301  			this.ch = $chanNil;
 33302  			this.lastChecked = new time.Time.ptr(new $Uint64(0, 0), new $Int64(0, 0), ptrType.nil);
 33303  			this.mu = new sync.RWMutex.ptr(new sync.Mutex.ptr(0, 0), 0, 0, 0, 0);
 33304  			this.dnsConfig = ptrType$1.nil;
 33305  			return;
 33306  		}
 33307  		this.initOnce = initOnce_;
 33308  		this.ch = ch_;
 33309  		this.lastChecked = lastChecked_;
 33310  		this.mu = mu_;
 33311  		this.dnsConfig = dnsConfig_;
 33312  	});
 33313  	hostLookupOrder = $pkg.hostLookupOrder = $newType(4, $kindInt, "net.hostLookupOrder", true, "net", false, null);
 33314  	dnsConfig = $pkg.dnsConfig = $newType(0, $kindStruct, "net.dnsConfig", true, "net", false, function(servers_, search_, ndots_, timeout_, attempts_, rotate_, unknownOpt_, lookup_, err_, mtime_, soffset_) {
 33315  		this.$val = this;
 33316  		if (arguments.length === 0) {
 33317  			this.servers = sliceType.nil;
 33318  			this.search = sliceType.nil;
 33319  			this.ndots = 0;
 33320  			this.timeout = new time.Duration(0, 0);
 33321  			this.attempts = 0;
 33322  			this.rotate = false;
 33323  			this.unknownOpt = false;
 33324  			this.lookup = sliceType.nil;
 33325  			this.err = $ifaceNil;
 33326  			this.mtime = new time.Time.ptr(new $Uint64(0, 0), new $Int64(0, 0), ptrType.nil);
 33327  			this.soffset = 0;
 33328  			return;
 33329  		}
 33330  		this.servers = servers_;
 33331  		this.search = search_;
 33332  		this.ndots = ndots_;
 33333  		this.timeout = timeout_;
 33334  		this.attempts = attempts_;
 33335  		this.rotate = rotate_;
 33336  		this.unknownOpt = unknownOpt_;
 33337  		this.lookup = lookup_;
 33338  		this.err = err_;
 33339  		this.mtime = mtime_;
 33340  		this.soffset = soffset_;
 33341  	});
 33342  	dnsHeader = $pkg.dnsHeader = $newType(0, $kindStruct, "net.dnsHeader", true, "net", false, function(Id_, Bits_, Qdcount_, Ancount_, Nscount_, Arcount_) {
 33343  		this.$val = this;
 33344  		if (arguments.length === 0) {
 33345  			this.Id = 0;
 33346  			this.Bits = 0;
 33347  			this.Qdcount = 0;
 33348  			this.Ancount = 0;
 33349  			this.Nscount = 0;
 33350  			this.Arcount = 0;
 33351  			return;
 33352  		}
 33353  		this.Id = Id_;
 33354  		this.Bits = Bits_;
 33355  		this.Qdcount = Qdcount_;
 33356  		this.Ancount = Ancount_;
 33357  		this.Nscount = Nscount_;
 33358  		this.Arcount = Arcount_;
 33359  	});
 33360  	dnsQuestion = $pkg.dnsQuestion = $newType(0, $kindStruct, "net.dnsQuestion", true, "net", false, function(Name_, Qtype_, Qclass_) {
 33361  		this.$val = this;
 33362  		if (arguments.length === 0) {
 33363  			this.Name = "";
 33364  			this.Qtype = 0;
 33365  			this.Qclass = 0;
 33366  			return;
 33367  		}
 33368  		this.Name = Name_;
 33369  		this.Qtype = Qtype_;
 33370  		this.Qclass = Qclass_;
 33371  	});
 33372  	dnsRR_Header = $pkg.dnsRR_Header = $newType(0, $kindStruct, "net.dnsRR_Header", true, "net", false, function(Name_, Rrtype_, Class_, Ttl_, Rdlength_) {
 33373  		this.$val = this;
 33374  		if (arguments.length === 0) {
 33375  			this.Name = "";
 33376  			this.Rrtype = 0;
 33377  			this.Class = 0;
 33378  			this.Ttl = 0;
 33379  			this.Rdlength = 0;
 33380  			return;
 33381  		}
 33382  		this.Name = Name_;
 33383  		this.Rrtype = Rrtype_;
 33384  		this.Class = Class_;
 33385  		this.Ttl = Ttl_;
 33386  		this.Rdlength = Rdlength_;
 33387  	});
 33388  	dnsRR = $pkg.dnsRR = $newType(8, $kindInterface, "net.dnsRR", true, "net", false, null);
 33389  	dnsRR_CNAME = $pkg.dnsRR_CNAME = $newType(0, $kindStruct, "net.dnsRR_CNAME", true, "net", false, function(Hdr_, Cname_) {
 33390  		this.$val = this;
 33391  		if (arguments.length === 0) {
 33392  			this.Hdr = new dnsRR_Header.ptr("", 0, 0, 0, 0);
 33393  			this.Cname = "";
 33394  			return;
 33395  		}
 33396  		this.Hdr = Hdr_;
 33397  		this.Cname = Cname_;
 33398  	});
 33399  	dnsRR_MX = $pkg.dnsRR_MX = $newType(0, $kindStruct, "net.dnsRR_MX", true, "net", false, function(Hdr_, Pref_, Mx_) {
 33400  		this.$val = this;
 33401  		if (arguments.length === 0) {
 33402  			this.Hdr = new dnsRR_Header.ptr("", 0, 0, 0, 0);
 33403  			this.Pref = 0;
 33404  			this.Mx = "";
 33405  			return;
 33406  		}
 33407  		this.Hdr = Hdr_;
 33408  		this.Pref = Pref_;
 33409  		this.Mx = Mx_;
 33410  	});
 33411  	dnsRR_NS = $pkg.dnsRR_NS = $newType(0, $kindStruct, "net.dnsRR_NS", true, "net", false, function(Hdr_, Ns_) {
 33412  		this.$val = this;
 33413  		if (arguments.length === 0) {
 33414  			this.Hdr = new dnsRR_Header.ptr("", 0, 0, 0, 0);
 33415  			this.Ns = "";
 33416  			return;
 33417  		}
 33418  		this.Hdr = Hdr_;
 33419  		this.Ns = Ns_;
 33420  	});
 33421  	dnsRR_PTR = $pkg.dnsRR_PTR = $newType(0, $kindStruct, "net.dnsRR_PTR", true, "net", false, function(Hdr_, Ptr_) {
 33422  		this.$val = this;
 33423  		if (arguments.length === 0) {
 33424  			this.Hdr = new dnsRR_Header.ptr("", 0, 0, 0, 0);
 33425  			this.Ptr = "";
 33426  			return;
 33427  		}
 33428  		this.Hdr = Hdr_;
 33429  		this.Ptr = Ptr_;
 33430  	});
 33431  	dnsRR_SOA = $pkg.dnsRR_SOA = $newType(0, $kindStruct, "net.dnsRR_SOA", true, "net", false, function(Hdr_, Ns_, Mbox_, Serial_, Refresh_, Retry_, Expire_, Minttl_) {
 33432  		this.$val = this;
 33433  		if (arguments.length === 0) {
 33434  			this.Hdr = new dnsRR_Header.ptr("", 0, 0, 0, 0);
 33435  			this.Ns = "";
 33436  			this.Mbox = "";
 33437  			this.Serial = 0;
 33438  			this.Refresh = 0;
 33439  			this.Retry = 0;
 33440  			this.Expire = 0;
 33441  			this.Minttl = 0;
 33442  			return;
 33443  		}
 33444  		this.Hdr = Hdr_;
 33445  		this.Ns = Ns_;
 33446  		this.Mbox = Mbox_;
 33447  		this.Serial = Serial_;
 33448  		this.Refresh = Refresh_;
 33449  		this.Retry = Retry_;
 33450  		this.Expire = Expire_;
 33451  		this.Minttl = Minttl_;
 33452  	});
 33453  	dnsRR_TXT = $pkg.dnsRR_TXT = $newType(0, $kindStruct, "net.dnsRR_TXT", true, "net", false, function(Hdr_, Txt_) {
 33454  		this.$val = this;
 33455  		if (arguments.length === 0) {
 33456  			this.Hdr = new dnsRR_Header.ptr("", 0, 0, 0, 0);
 33457  			this.Txt = "";
 33458  			return;
 33459  		}
 33460  		this.Hdr = Hdr_;
 33461  		this.Txt = Txt_;
 33462  	});
 33463  	dnsRR_SRV = $pkg.dnsRR_SRV = $newType(0, $kindStruct, "net.dnsRR_SRV", true, "net", false, function(Hdr_, Priority_, Weight_, Port_, Target_) {
 33464  		this.$val = this;
 33465  		if (arguments.length === 0) {
 33466  			this.Hdr = new dnsRR_Header.ptr("", 0, 0, 0, 0);
 33467  			this.Priority = 0;
 33468  			this.Weight = 0;
 33469  			this.Port = 0;
 33470  			this.Target = "";
 33471  			return;
 33472  		}
 33473  		this.Hdr = Hdr_;
 33474  		this.Priority = Priority_;
 33475  		this.Weight = Weight_;
 33476  		this.Port = Port_;
 33477  		this.Target = Target_;
 33478  	});
 33479  	dnsRR_A = $pkg.dnsRR_A = $newType(0, $kindStruct, "net.dnsRR_A", true, "net", false, function(Hdr_, A_) {
 33480  		this.$val = this;
 33481  		if (arguments.length === 0) {
 33482  			this.Hdr = new dnsRR_Header.ptr("", 0, 0, 0, 0);
 33483  			this.A = 0;
 33484  			return;
 33485  		}
 33486  		this.Hdr = Hdr_;
 33487  		this.A = A_;
 33488  	});
 33489  	dnsRR_AAAA = $pkg.dnsRR_AAAA = $newType(0, $kindStruct, "net.dnsRR_AAAA", true, "net", false, function(Hdr_, AAAA_) {
 33490  		this.$val = this;
 33491  		if (arguments.length === 0) {
 33492  			this.Hdr = new dnsRR_Header.ptr("", 0, 0, 0, 0);
 33493  			this.AAAA = arrayType$1.zero();
 33494  			return;
 33495  		}
 33496  		this.Hdr = Hdr_;
 33497  		this.AAAA = AAAA_;
 33498  	});
 33499  	dnsMsgHdr = $pkg.dnsMsgHdr = $newType(0, $kindStruct, "net.dnsMsgHdr", true, "net", false, function(id_, response_, opcode_, authoritative_, truncated_, recursion_desired_, recursion_available_, rcode_) {
 33500  		this.$val = this;
 33501  		if (arguments.length === 0) {
 33502  			this.id = 0;
 33503  			this.response = false;
 33504  			this.opcode = 0;
 33505  			this.authoritative = false;
 33506  			this.truncated = false;
 33507  			this.recursion_desired = false;
 33508  			this.recursion_available = false;
 33509  			this.rcode = 0;
 33510  			return;
 33511  		}
 33512  		this.id = id_;
 33513  		this.response = response_;
 33514  		this.opcode = opcode_;
 33515  		this.authoritative = authoritative_;
 33516  		this.truncated = truncated_;
 33517  		this.recursion_desired = recursion_desired_;
 33518  		this.recursion_available = recursion_available_;
 33519  		this.rcode = rcode_;
 33520  	});
 33521  	dnsMsg = $pkg.dnsMsg = $newType(0, $kindStruct, "net.dnsMsg", true, "net", false, function(dnsMsgHdr_, question_, answer_, ns_, extra_) {
 33522  		this.$val = this;
 33523  		if (arguments.length === 0) {
 33524  			this.dnsMsgHdr = new dnsMsgHdr.ptr(0, false, 0, false, false, false, false, 0);
 33525  			this.question = sliceType$7.nil;
 33526  			this.answer = sliceType$6.nil;
 33527  			this.ns = sliceType$6.nil;
 33528  			this.extra = sliceType$6.nil;
 33529  			return;
 33530  		}
 33531  		this.dnsMsgHdr = dnsMsgHdr_;
 33532  		this.question = question_;
 33533  		this.answer = answer_;
 33534  		this.ns = ns_;
 33535  		this.extra = extra_;
 33536  	});
 33537  	netFD = $pkg.netFD = $newType(0, $kindStruct, "net.netFD", true, "net", false, function(pfd_, family_, sotype_, isConnected_, net_, laddr_, raddr_) {
 33538  		this.$val = this;
 33539  		if (arguments.length === 0) {
 33540  			this.pfd = new poll.FD.ptr(new poll.fdMutex.ptr(new $Uint64(0, 0), 0, 0), 0, new poll.pollDesc.ptr(false), ptrType$29.nil, 0, false, false, false, false);
 33541  			this.family = 0;
 33542  			this.sotype = 0;
 33543  			this.isConnected = false;
 33544  			this.net = "";
 33545  			this.laddr = $ifaceNil;
 33546  			this.raddr = $ifaceNil;
 33547  			return;
 33548  		}
 33549  		this.pfd = pfd_;
 33550  		this.family = family_;
 33551  		this.sotype = sotype_;
 33552  		this.isConnected = isConnected_;
 33553  		this.net = net_;
 33554  		this.laddr = laddr_;
 33555  		this.raddr = raddr_;
 33556  	});
 33557  	Interface = $pkg.Interface = $newType(0, $kindStruct, "net.Interface", true, "net", true, function(Index_, MTU_, Name_, HardwareAddr_, Flags_) {
 33558  		this.$val = this;
 33559  		if (arguments.length === 0) {
 33560  			this.Index = 0;
 33561  			this.MTU = 0;
 33562  			this.Name = "";
 33563  			this.HardwareAddr = HardwareAddr.nil;
 33564  			this.Flags = 0;
 33565  			return;
 33566  		}
 33567  		this.Index = Index_;
 33568  		this.MTU = MTU_;
 33569  		this.Name = Name_;
 33570  		this.HardwareAddr = HardwareAddr_;
 33571  		this.Flags = Flags_;
 33572  	});
 33573  	Flags = $pkg.Flags = $newType(4, $kindUint, "net.Flags", true, "net", true, null);
 33574  	ipv6ZoneCache = $pkg.ipv6ZoneCache = $newType(0, $kindStruct, "net.ipv6ZoneCache", true, "net", false, function(RWMutex_, lastFetched_, toIndex_, toName_) {
 33575  		this.$val = this;
 33576  		if (arguments.length === 0) {
 33577  			this.RWMutex = new sync.RWMutex.ptr(new sync.Mutex.ptr(0, 0), 0, 0, 0, 0);
 33578  			this.lastFetched = new time.Time.ptr(new $Uint64(0, 0), new $Int64(0, 0), ptrType.nil);
 33579  			this.toIndex = false;
 33580  			this.toName = false;
 33581  			return;
 33582  		}
 33583  		this.RWMutex = RWMutex_;
 33584  		this.lastFetched = lastFetched_;
 33585  		this.toIndex = toIndex_;
 33586  		this.toName = toName_;
 33587  	});
 33588  	IP = $pkg.IP = $newType(12, $kindSlice, "net.IP", true, "net", true, null);
 33589  	IPMask = $pkg.IPMask = $newType(12, $kindSlice, "net.IPMask", true, "net", true, null);
 33590  	IPNet = $pkg.IPNet = $newType(0, $kindStruct, "net.IPNet", true, "net", true, function(IP_, Mask_) {
 33591  		this.$val = this;
 33592  		if (arguments.length === 0) {
 33593  			this.IP = IP.nil;
 33594  			this.Mask = IPMask.nil;
 33595  			return;
 33596  		}
 33597  		this.IP = IP_;
 33598  		this.Mask = Mask_;
 33599  	});
 33600  	IPAddr = $pkg.IPAddr = $newType(0, $kindStruct, "net.IPAddr", true, "net", true, function(IP_, Zone_) {
 33601  		this.$val = this;
 33602  		if (arguments.length === 0) {
 33603  			this.IP = IP.nil;
 33604  			this.Zone = "";
 33605  			return;
 33606  		}
 33607  		this.IP = IP_;
 33608  		this.Zone = Zone_;
 33609  	});
 33610  	IPConn = $pkg.IPConn = $newType(0, $kindStruct, "net.IPConn", true, "net", true, function(conn_) {
 33611  		this.$val = this;
 33612  		if (arguments.length === 0) {
 33613  			this.conn = new conn.ptr(ptrType$30.nil);
 33614  			return;
 33615  		}
 33616  		this.conn = conn_;
 33617  	});
 33618  	ipStackCapabilities = $pkg.ipStackCapabilities = $newType(0, $kindStruct, "net.ipStackCapabilities", true, "net", false, function(Once_, ipv4Enabled_, ipv6Enabled_, ipv4MappedIPv6Enabled_) {
 33619  		this.$val = this;
 33620  		if (arguments.length === 0) {
 33621  			this.Once = new sync.Once.ptr(new sync.Mutex.ptr(0, 0), 0);
 33622  			this.ipv4Enabled = false;
 33623  			this.ipv6Enabled = false;
 33624  			this.ipv4MappedIPv6Enabled = false;
 33625  			return;
 33626  		}
 33627  		this.Once = Once_;
 33628  		this.ipv4Enabled = ipv4Enabled_;
 33629  		this.ipv6Enabled = ipv6Enabled_;
 33630  		this.ipv4MappedIPv6Enabled = ipv4MappedIPv6Enabled_;
 33631  	});
 33632  	addrList = $pkg.addrList = $newType(12, $kindSlice, "net.addrList", true, "net", false, null);
 33633  	Resolver = $pkg.Resolver = $newType(0, $kindStruct, "net.Resolver", true, "net", true, function(PreferGo_, StrictErrors_, Dial_) {
 33634  		this.$val = this;
 33635  		if (arguments.length === 0) {
 33636  			this.PreferGo = false;
 33637  			this.StrictErrors = false;
 33638  			this.Dial = $throwNilPointerError;
 33639  			return;
 33640  		}
 33641  		this.PreferGo = PreferGo_;
 33642  		this.StrictErrors = StrictErrors_;
 33643  		this.Dial = Dial_;
 33644  	});
 33645  	HardwareAddr = $pkg.HardwareAddr = $newType(12, $kindSlice, "net.HardwareAddr", true, "net", true, null);
 33646  	Addr = $pkg.Addr = $newType(8, $kindInterface, "net.Addr", true, "net", true, null);
 33647  	Conn = $pkg.Conn = $newType(8, $kindInterface, "net.Conn", true, "net", true, null);
 33648  	conn = $pkg.conn = $newType(0, $kindStruct, "net.conn", true, "net", false, function(fd_) {
 33649  		this.$val = this;
 33650  		if (arguments.length === 0) {
 33651  			this.fd = ptrType$30.nil;
 33652  			return;
 33653  		}
 33654  		this.fd = fd_;
 33655  	});
 33656  	PacketConn = $pkg.PacketConn = $newType(8, $kindInterface, "net.PacketConn", true, "net", true, null);
 33657  	Listener = $pkg.Listener = $newType(8, $kindInterface, "net.Listener", true, "net", true, null);
 33658  	Error = $pkg.Error = $newType(8, $kindInterface, "net.Error", true, "net", true, null);
 33659  	OpError = $pkg.OpError = $newType(0, $kindStruct, "net.OpError", true, "net", true, function(Op_, Net_, Source_, Addr_, Err_) {
 33660  		this.$val = this;
 33661  		if (arguments.length === 0) {
 33662  			this.Op = "";
 33663  			this.Net = "";
 33664  			this.Source = $ifaceNil;
 33665  			this.Addr = $ifaceNil;
 33666  			this.Err = $ifaceNil;
 33667  			return;
 33668  		}
 33669  		this.Op = Op_;
 33670  		this.Net = Net_;
 33671  		this.Source = Source_;
 33672  		this.Addr = Addr_;
 33673  		this.Err = Err_;
 33674  	});
 33675  	timeout = $pkg.timeout = $newType(8, $kindInterface, "net.timeout", true, "net", false, null);
 33676  	temporary = $pkg.temporary = $newType(8, $kindInterface, "net.temporary", true, "net", false, null);
 33677  	ParseError = $pkg.ParseError = $newType(0, $kindStruct, "net.ParseError", true, "net", true, function(Type_, Text_) {
 33678  		this.$val = this;
 33679  		if (arguments.length === 0) {
 33680  			this.Type = "";
 33681  			this.Text = "";
 33682  			return;
 33683  		}
 33684  		this.Type = Type_;
 33685  		this.Text = Text_;
 33686  	});
 33687  	AddrError = $pkg.AddrError = $newType(0, $kindStruct, "net.AddrError", true, "net", true, function(Err_, Addr_) {
 33688  		this.$val = this;
 33689  		if (arguments.length === 0) {
 33690  			this.Err = "";
 33691  			this.Addr = "";
 33692  			return;
 33693  		}
 33694  		this.Err = Err_;
 33695  		this.Addr = Addr_;
 33696  	});
 33697  	UnknownNetworkError = $pkg.UnknownNetworkError = $newType(8, $kindString, "net.UnknownNetworkError", true, "net", true, null);
 33698  	DNSError = $pkg.DNSError = $newType(0, $kindStruct, "net.DNSError", true, "net", true, function(Err_, Name_, Server_, IsTimeout_, IsTemporary_) {
 33699  		this.$val = this;
 33700  		if (arguments.length === 0) {
 33701  			this.Err = "";
 33702  			this.Name = "";
 33703  			this.Server = "";
 33704  			this.IsTimeout = false;
 33705  			this.IsTemporary = false;
 33706  			return;
 33707  		}
 33708  		this.Err = Err_;
 33709  		this.Name = Name_;
 33710  		this.Server = Server_;
 33711  		this.IsTimeout = IsTimeout_;
 33712  		this.IsTemporary = IsTemporary_;
 33713  	});
 33714  	writerOnly = $pkg.writerOnly = $newType(0, $kindStruct, "net.writerOnly", true, "net", false, function(Writer_) {
 33715  		this.$val = this;
 33716  		if (arguments.length === 0) {
 33717  			this.Writer = $ifaceNil;
 33718  			return;
 33719  		}
 33720  		this.Writer = Writer_;
 33721  	});
 33722  	buffersWriter = $pkg.buffersWriter = $newType(8, $kindInterface, "net.buffersWriter", true, "net", false, null);
 33723  	Buffers = $pkg.Buffers = $newType(12, $kindSlice, "net.Buffers", true, "net", true, null);
 33724  	nssConf = $pkg.nssConf = $newType(0, $kindStruct, "net.nssConf", true, "net", false, function(err_, sources_) {
 33725  		this.$val = this;
 33726  		if (arguments.length === 0) {
 33727  			this.err = $ifaceNil;
 33728  			this.sources = false;
 33729  			return;
 33730  		}
 33731  		this.err = err_;
 33732  		this.sources = sources_;
 33733  	});
 33734  	nssSource = $pkg.nssSource = $newType(0, $kindStruct, "net.nssSource", true, "net", false, function(source_, criteria_) {
 33735  		this.$val = this;
 33736  		if (arguments.length === 0) {
 33737  			this.source = "";
 33738  			this.criteria = sliceType$16.nil;
 33739  			return;
 33740  		}
 33741  		this.source = source_;
 33742  		this.criteria = criteria_;
 33743  	});
 33744  	nssCriterion = $pkg.nssCriterion = $newType(0, $kindStruct, "net.nssCriterion", true, "net", false, function(negate_, status_, action_) {
 33745  		this.$val = this;
 33746  		if (arguments.length === 0) {
 33747  			this.negate = false;
 33748  			this.status = "";
 33749  			this.action = "";
 33750  			return;
 33751  		}
 33752  		this.negate = negate_;
 33753  		this.status = status_;
 33754  		this.action = action_;
 33755  	});
 33756  	file = $pkg.file = $newType(0, $kindStruct, "net.file", true, "net", false, function(file_, data_, atEOF_) {
 33757  		this.$val = this;
 33758  		if (arguments.length === 0) {
 33759  			this.file = ptrType$32.nil;
 33760  			this.data = sliceType$1.nil;
 33761  			this.atEOF = false;
 33762  			return;
 33763  		}
 33764  		this.file = file_;
 33765  		this.data = data_;
 33766  		this.atEOF = atEOF_;
 33767  	});
 33768  	rawConn = $pkg.rawConn = $newType(0, $kindStruct, "net.rawConn", true, "net", false, function(fd_) {
 33769  		this.$val = this;
 33770  		if (arguments.length === 0) {
 33771  			this.fd = ptrType$30.nil;
 33772  			return;
 33773  		}
 33774  		this.fd = fd_;
 33775  	});
 33776  	rawListener = $pkg.rawListener = $newType(0, $kindStruct, "net.rawListener", true, "net", false, function(rawConn_) {
 33777  		this.$val = this;
 33778  		if (arguments.length === 0) {
 33779  			this.rawConn = new rawConn.ptr(ptrType$30.nil);
 33780  			return;
 33781  		}
 33782  		this.rawConn = rawConn_;
 33783  	});
 33784  	sockaddr = $pkg.sockaddr = $newType(8, $kindInterface, "net.sockaddr", true, "net", false, null);
 33785  	TCPAddr = $pkg.TCPAddr = $newType(0, $kindStruct, "net.TCPAddr", true, "net", true, function(IP_, Port_, Zone_) {
 33786  		this.$val = this;
 33787  		if (arguments.length === 0) {
 33788  			this.IP = IP.nil;
 33789  			this.Port = 0;
 33790  			this.Zone = "";
 33791  			return;
 33792  		}
 33793  		this.IP = IP_;
 33794  		this.Port = Port_;
 33795  		this.Zone = Zone_;
 33796  	});
 33797  	TCPConn = $pkg.TCPConn = $newType(0, $kindStruct, "net.TCPConn", true, "net", true, function(conn_) {
 33798  		this.$val = this;
 33799  		if (arguments.length === 0) {
 33800  			this.conn = new conn.ptr(ptrType$30.nil);
 33801  			return;
 33802  		}
 33803  		this.conn = conn_;
 33804  	});
 33805  	TCPListener = $pkg.TCPListener = $newType(0, $kindStruct, "net.TCPListener", true, "net", true, function(fd_) {
 33806  		this.$val = this;
 33807  		if (arguments.length === 0) {
 33808  			this.fd = ptrType$30.nil;
 33809  			return;
 33810  		}
 33811  		this.fd = fd_;
 33812  	});
 33813  	UDPAddr = $pkg.UDPAddr = $newType(0, $kindStruct, "net.UDPAddr", true, "net", true, function(IP_, Port_, Zone_) {
 33814  		this.$val = this;
 33815  		if (arguments.length === 0) {
 33816  			this.IP = IP.nil;
 33817  			this.Port = 0;
 33818  			this.Zone = "";
 33819  			return;
 33820  		}
 33821  		this.IP = IP_;
 33822  		this.Port = Port_;
 33823  		this.Zone = Zone_;
 33824  	});
 33825  	UDPConn = $pkg.UDPConn = $newType(0, $kindStruct, "net.UDPConn", true, "net", true, function(conn_) {
 33826  		this.$val = this;
 33827  		if (arguments.length === 0) {
 33828  			this.conn = new conn.ptr(ptrType$30.nil);
 33829  			return;
 33830  		}
 33831  		this.conn = conn_;
 33832  	});
 33833  	UnixAddr = $pkg.UnixAddr = $newType(0, $kindStruct, "net.UnixAddr", true, "net", true, function(Name_, Net_) {
 33834  		this.$val = this;
 33835  		if (arguments.length === 0) {
 33836  			this.Name = "";
 33837  			this.Net = "";
 33838  			return;
 33839  		}
 33840  		this.Name = Name_;
 33841  		this.Net = Net_;
 33842  	});
 33843  	UnixConn = $pkg.UnixConn = $newType(0, $kindStruct, "net.UnixConn", true, "net", true, function(conn_) {
 33844  		this.$val = this;
 33845  		if (arguments.length === 0) {
 33846  			this.conn = new conn.ptr(ptrType$30.nil);
 33847  			return;
 33848  		}
 33849  		this.conn = conn_;
 33850  	});
 33851  	dialResult = $newType(0, $kindStruct, "net.dialResult", true, "net", false, function(Conn_, error_, primary_, done_) {
 33852  		this.$val = this;
 33853  		if (arguments.length === 0) {
 33854  			this.Conn = $ifaceNil;
 33855  			this.error = $ifaceNil;
 33856  			this.primary = false;
 33857  			this.done = false;
 33858  			return;
 33859  		}
 33860  		this.Conn = Conn_;
 33861  		this.error = error_;
 33862  		this.primary = primary_;
 33863  		this.done = done_;
 33864  	});
 33865  	racer = $newType(0, $kindStruct, "net.racer", true, "net", false, function(cname_, rrs_, error_) {
 33866  		this.$val = this;
 33867  		if (arguments.length === 0) {
 33868  			this.cname = "";
 33869  			this.rrs = sliceType$6.nil;
 33870  			this.error = $ifaceNil;
 33871  			return;
 33872  		}
 33873  		this.cname = cname_;
 33874  		this.rrs = rrs_;
 33875  		this.error = error_;
 33876  	});
 33877  	ptrType = $ptrType(time.Location);
 33878  	ptrType$1 = $ptrType(dnsConfig);
 33879  	sliceType = $sliceType($String);
 33880  	mapType = $mapType($String, sliceType);
 33881  	structType = $structType("net", [{prop: "Mutex", name: "Mutex", anonymous: true, exported: true, typ: sync.Mutex, tag: ""}, {prop: "byName", name: "byName", anonymous: false, exported: false, typ: mapType, tag: ""}, {prop: "byAddr", name: "byAddr", anonymous: false, exported: false, typ: mapType, tag: ""}, {prop: "expire", name: "expire", anonymous: false, exported: false, typ: time.Time, tag: ""}, {prop: "path", name: "path", anonymous: false, exported: false, typ: $String, tag: ""}, {prop: "mtime", name: "mtime", anonymous: false, exported: false, typ: time.Time, tag: ""}, {prop: "size", name: "size", anonymous: false, exported: false, typ: $Int64, tag: ""}]);
 33882  	arrayType = $arrayType($Uint8, 12);
 33883  	ptrType$2 = $ptrType(nssConf);
 33884  	arrayType$1 = $arrayType($Uint8, 16);
 33885  	sliceType$1 = $sliceType($Uint8);
 33886  	structType$1 = $structType("", []);
 33887  	ptrType$3 = $ptrType(Buffers);
 33888  	ptrType$4 = $ptrType(IPNet);
 33889  	sliceType$2 = $sliceType(ipAttr);
 33890  	sliceType$3 = $sliceType(IPAddr);
 33891  	sliceType$4 = $sliceType(IP);
 33892  	ptrType$5 = $ptrType(UDPAddr);
 33893  	sliceType$5 = $sliceType(nssSource);
 33894  	ptrType$6 = $ptrType(Resolver);
 33895  	ptrType$7 = $ptrType(TCPAddr);
 33896  	ptrType$8 = $ptrType(IPAddr);
 33897  	ptrType$9 = $ptrType(nettrace.Trace);
 33898  	ptrType$10 = $ptrType(TCPConn);
 33899  	ptrType$11 = $ptrType(UnixAddr);
 33900  	sliceType$6 = $sliceType(dnsRR);
 33901  	ptrType$12 = $ptrType(dnsRR_Header);
 33902  	ptrType$13 = $ptrType(dnsRR_CNAME);
 33903  	ptrType$14 = $ptrType(dnsMsg);
 33904  	sliceType$7 = $sliceType(dnsQuestion);
 33905  	ptrType$15 = $ptrType(DNSError);
 33906  	ptrType$16 = $ptrType(OpError);
 33907  	ptrType$17 = $ptrType(dnsRR_A);
 33908  	ptrType$18 = $ptrType(dnsRR_AAAA);
 33909  	ptrType$19 = $ptrType(dnsRR_PTR);
 33910  	ptrType$20 = $ptrType($Uint32);
 33911  	ptrType$21 = $ptrType($Uint16);
 33912  	ptrType$22 = $ptrType($String);
 33913  	ptrType$23 = $ptrType($Bool);
 33914  	ptrType$24 = $ptrType($Int);
 33915  	ptrType$25 = $ptrType($Uint);
 33916  	ptrType$26 = $ptrType($Uint8);
 33917  	ptrType$27 = $ptrType($Uint64);
 33918  	ptrType$28 = $ptrType($Uintptr);
 33919  	sliceType$8 = $sliceType(syscall.Iovec);
 33920  	ptrType$29 = $ptrType(sliceType$8);
 33921  	ptrType$30 = $ptrType(netFD);
 33922  	funcType = $funcType([ptrType$30], [$error], false);
 33923  	ptrType$31 = $ptrType($Int32);
 33924  	ptrType$32 = $ptrType(os.File);
 33925  	ptrType$33 = $ptrType(syscall.SockaddrInet4);
 33926  	ptrType$34 = $ptrType(syscall.SockaddrInet6);
 33927  	ptrType$35 = $ptrType(syscall.SockaddrUnix);
 33928  	ptrType$36 = $ptrType(file);
 33929  	ptrType$37 = $ptrType(Interface);
 33930  	sliceType$9 = $sliceType(Addr);
 33931  	sliceType$10 = $sliceType(Interface);
 33932  	ptrType$38 = $ptrType(syscall.IfInfomsg);
 33933  	ptrType$39 = $ptrType(syscall.IfAddrmsg);
 33934  	arrayType$2 = $arrayType($Uint8, 4);
 33935  	ptrType$40 = $ptrType(IPConn);
 33936  	structType$2 = $structType("net", [{prop: "laddr", name: "laddr", anonymous: false, exported: false, typ: TCPAddr, tag: ""}, {prop: "value", name: "value", anonymous: false, exported: false, typ: $Int, tag: ""}]);
 33937  	sliceType$11 = $sliceType(structType$2);
 33938  	arrayType$3 = $arrayType($Uint8, 8);
 33939  	arrayType$4 = $arrayType($Uint8, 25);
 33940  	funcType$1 = $funcType([context.Context, $String], [sliceType$3, $error], false);
 33941  	sliceType$12 = $sliceType($emptyInterface);
 33942  	ptrType$41 = $ptrType(SRV);
 33943  	sliceType$13 = $sliceType(ptrType$41);
 33944  	ptrType$42 = $ptrType(dnsRR_SRV);
 33945  	ptrType$43 = $ptrType(MX);
 33946  	sliceType$14 = $sliceType(ptrType$43);
 33947  	ptrType$44 = $ptrType(dnsRR_MX);
 33948  	ptrType$45 = $ptrType(NS);
 33949  	sliceType$15 = $sliceType(ptrType$45);
 33950  	ptrType$46 = $ptrType(dnsRR_NS);
 33951  	ptrType$47 = $ptrType(dnsRR_TXT);
 33952  	ptrType$48 = $ptrType(conn);
 33953  	ptrType$49 = $ptrType(os.SyscallError);
 33954  	ptrType$50 = $ptrType(AddrError);
 33955  	sliceType$16 = $sliceType(nssCriterion);
 33956  	arrayType$5 = $arrayType($Uint8, 20);
 33957  	ptrType$52 = $ptrType(rawConn);
 33958  	ptrType$53 = $ptrType(io.LimitedReader);
 33959  	ptrType$54 = $ptrType(TCPListener);
 33960  	ptrType$55 = $ptrType(UDPConn);
 33961  	ptrType$56 = $ptrType(UnixConn);
 33962  	arrayType$6 = $arrayType($Int8, 108);
 33963  	sliceType$17 = $sliceType(sliceType$1);
 33964  	ptrType$58 = $ptrType(sliceType$17);
 33965  	ptrType$59 = $ptrType(byRFC6724);
 33966  	ptrType$60 = $ptrType(conf);
 33967  	ptrType$61 = $ptrType(Dialer);
 33968  	chanType = $chanType(structType$1, false, true);
 33969  	ptrType$62 = $ptrType(dnsPacketConn);
 33970  	ptrType$63 = $ptrType(dnsStreamConn);
 33971  	ptrType$64 = $ptrType(resolverConfig);
 33972  	chanType$1 = $chanType(structType$1, false, false);
 33973  	funcType$2 = $funcType([$emptyInterface, $String, $String], [$Bool], false);
 33974  	ptrType$65 = $ptrType(dnsHeader);
 33975  	ptrType$66 = $ptrType(dnsQuestion);
 33976  	ptrType$67 = $ptrType(dnsRR_SOA);
 33977  	ptrType$68 = $ptrType(dnsMsgHdr);
 33978  	funcType$3 = $funcType([syscall.Sockaddr], [Addr], false);
 33979  	ptrType$69 = $ptrType(ipv6ZoneCache);
 33980  	mapType$1 = $mapType($String, $Int);
 33981  	mapType$2 = $mapType($Int, $String);
 33982  	ptrType$70 = $ptrType(IP);
 33983  	ptrType$71 = $ptrType(ipStackCapabilities);
 33984  	funcType$4 = $funcType([Addr], [$Bool], false);
 33985  	funcType$5 = $funcType([context.Context, $String, $String], [Conn, $error], false);
 33986  	ptrType$72 = $ptrType(ParseError);
 33987  	mapType$3 = $mapType($String, sliceType$5);
 33988  	funcType$6 = $funcType([$Uintptr], [], false);
 33989  	funcType$7 = $funcType([$Uintptr], [$Bool], false);
 33990  	ptrType$76 = $ptrType(rawListener);
 33991  	Listen = function(net, laddr) {
 33992  		var laddr, net;
 33993  		$panic(errors.New("network access is not supported by GopherJS"));
 33994  	};
 33995  	$pkg.Listen = Listen;
 33996  	Dialer.ptr.prototype.Dial = function(network, address) {
 33997  		var address, d, network;
 33998  		d = this;
 33999  		$panic(errors.New("network access is not supported by GopherJS"));
 34000  	};
 34001  	Dialer.prototype.Dial = function(network, address) { return this.$val.Dial(network, address); };
 34002  	maxListenerBacklog = function() {
 34003  		return 128;
 34004  	};
 34005  	byteIndex = function(s, c) {
 34006  		var c, s;
 34007  		return $parseInt(s.indexOf($global.String.fromCharCode(c))) >> 0;
 34008  	};
 34009  	bytesEqual = function(x, y) {
 34010  		var _i, _ref, b, i, x, y;
 34011  		if (!((x.$length === y.$length))) {
 34012  			return false;
 34013  		}
 34014  		_ref = x;
 34015  		_i = 0;
 34016  		while (true) {
 34017  			if (!(_i < _ref.$length)) { break; }
 34018  			i = _i;
 34019  			b = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
 34020  			if (!((b === ((i < 0 || i >= y.$length) ? ($throwRuntimeError("index out of range"), undefined) : y.$array[y.$offset + i])))) {
 34021  				return false;
 34022  			}
 34023  			_i++;
 34024  		}
 34025  		return true;
 34026  	};
 34027  	bytesIndexByte = function(s, c) {
 34028  		var _i, _ref, b, c, i, s;
 34029  		_ref = s;
 34030  		_i = 0;
 34031  		while (true) {
 34032  			if (!(_i < _ref.$length)) { break; }
 34033  			i = _i;
 34034  			b = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
 34035  			if (b === c) {
 34036  				return i;
 34037  			}
 34038  			_i++;
 34039  		}
 34040  		return -1;
 34041  	};
 34042  	sortByRFC6724 = function(addrs) {
 34043  		var _arg, _arg$1, _r$9, addrs, $s, $r;
 34044  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _arg = $f._arg; _arg$1 = $f._arg$1; _r$9 = $f._r$9; addrs = $f.addrs; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 34045  		if (addrs.$length < 2) {
 34046  			$s = -1; return;
 34047  		}
 34048  		_arg = addrs;
 34049  		_r$9 = srcAddrs(addrs); /* */ $s = 1; case 1: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 34050  		_arg$1 = _r$9;
 34051  		$r = sortByRFC6724withSrcs(_arg, _arg$1); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 34052  		$s = -1; return;
 34053  		/* */ } return; } if ($f === undefined) { $f = { $blk: sortByRFC6724 }; } $f._arg = _arg; $f._arg$1 = _arg$1; $f._r$9 = _r$9; $f.addrs = addrs; $f.$s = $s; $f.$r = $r; return $f;
 34054  	};
 34055  	sortByRFC6724withSrcs = function(addrs, srcs) {
 34056  		var _i, _ref, addrAttr, addrs, i, srcAttr, srcs, v, $s, $r;
 34057  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _i = $f._i; _ref = $f._ref; addrAttr = $f.addrAttr; addrs = $f.addrs; i = $f.i; srcAttr = $f.srcAttr; srcs = $f.srcs; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 34058  		if (!((addrs.$length === srcs.$length))) {
 34059  			$panic(new $String("internal error"));
 34060  		}
 34061  		addrAttr = $makeSlice(sliceType$2, addrs.$length);
 34062  		srcAttr = $makeSlice(sliceType$2, srcs.$length);
 34063  		_ref = addrs;
 34064  		_i = 0;
 34065  		while (true) {
 34066  			if (!(_i < _ref.$length)) { break; }
 34067  			i = _i;
 34068  			v = $clone(((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]), IPAddr);
 34069  			ipAttr.copy(((i < 0 || i >= addrAttr.$length) ? ($throwRuntimeError("index out of range"), undefined) : addrAttr.$array[addrAttr.$offset + i]), ipAttrOf(v.IP));
 34070  			ipAttr.copy(((i < 0 || i >= srcAttr.$length) ? ($throwRuntimeError("index out of range"), undefined) : srcAttr.$array[srcAttr.$offset + i]), ipAttrOf(((i < 0 || i >= srcs.$length) ? ($throwRuntimeError("index out of range"), undefined) : srcs.$array[srcs.$offset + i])));
 34071  			_i++;
 34072  		}
 34073  		$r = sort.Stable(new byRFC6724.ptr(addrs, addrAttr, srcs, srcAttr)); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 34074  		$s = -1; return;
 34075  		/* */ } return; } if ($f === undefined) { $f = { $blk: sortByRFC6724withSrcs }; } $f._i = _i; $f._ref = _ref; $f.addrAttr = addrAttr; $f.addrs = addrs; $f.i = i; $f.srcAttr = srcAttr; $f.srcs = srcs; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
 34076  	};
 34077  	srcAddrs = function(addrs) {
 34078  		var _i, _r$10, _r$9, _ref, _tuple, _tuple$1, addrs, c, dst, err, i, ok, src, srcs, $s, $r;
 34079  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _i = $f._i; _r$10 = $f._r$10; _r$9 = $f._r$9; _ref = $f._ref; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; addrs = $f.addrs; c = $f.c; dst = $f.dst; err = $f.err; i = $f.i; ok = $f.ok; src = $f.src; srcs = $f.srcs; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 34080  		dst = [dst];
 34081  		srcs = $makeSlice(sliceType$4, addrs.$length);
 34082  		dst[0] = new UDPAddr.ptr(IP.nil, 9, "");
 34083  		_ref = addrs;
 34084  		_i = 0;
 34085  		/* while (true) { */ case 1:
 34086  			/* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; }
 34087  			i = _i;
 34088  			dst[0].IP = ((i < 0 || i >= addrs.$length) ? ($throwRuntimeError("index out of range"), undefined) : addrs.$array[addrs.$offset + i]).IP;
 34089  			dst[0].Zone = ((i < 0 || i >= addrs.$length) ? ($throwRuntimeError("index out of range"), undefined) : addrs.$array[addrs.$offset + i]).Zone;
 34090  			_r$9 = DialUDP("udp", ptrType$5.nil, dst[0]); /* */ $s = 3; case 3: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 34091  			_tuple = _r$9;
 34092  			c = _tuple[0];
 34093  			err = _tuple[1];
 34094  			/* */ if ($interfaceIsEqual(err, $ifaceNil)) { $s = 4; continue; }
 34095  			/* */ $s = 5; continue;
 34096  			/* if ($interfaceIsEqual(err, $ifaceNil)) { */ case 4:
 34097  				_tuple$1 = $assertType(c.conn.LocalAddr(), ptrType$5, true);
 34098  				src = _tuple$1[0];
 34099  				ok = _tuple$1[1];
 34100  				if (ok) {
 34101  					((i < 0 || i >= srcs.$length) ? ($throwRuntimeError("index out of range"), undefined) : srcs.$array[srcs.$offset + i] = src.IP);
 34102  				}
 34103  				_r$10 = c.conn.Close(); /* */ $s = 6; case 6: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
 34104  				_r$10;
 34105  			/* } */ case 5:
 34106  			_i++;
 34107  		/* } */ $s = 1; continue; case 2:
 34108  		$s = -1; return srcs;
 34109  		/* */ } return; } if ($f === undefined) { $f = { $blk: srcAddrs }; } $f._i = _i; $f._r$10 = _r$10; $f._r$9 = _r$9; $f._ref = _ref; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.addrs = addrs; $f.c = c; $f.dst = dst; $f.err = err; $f.i = i; $f.ok = ok; $f.src = src; $f.srcs = srcs; $f.$s = $s; $f.$r = $r; return $f;
 34110  	};
 34111  	ipAttrOf = function(ip) {
 34112  		var ip, match;
 34113  		if (ip === IP.nil) {
 34114  			return new ipAttr.ptr(0, 0, 0);
 34115  		}
 34116  		match = $clone(rfc6724policyTable.Classify(ip), policyTableEntry);
 34117  		return new ipAttr.ptr(classifyScope(ip), match.Precedence, match.Label);
 34118  	};
 34119  	byRFC6724.ptr.prototype.Len = function() {
 34120  		var s;
 34121  		s = this;
 34122  		return s.addrs.$length;
 34123  	};
 34124  	byRFC6724.prototype.Len = function() { return this.$val.Len(); };
 34125  	byRFC6724.ptr.prototype.Swap = function(i, j) {
 34126  		var _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, i, j, s, x, x$1, x$10, x$11, x$12, x$13, x$14, x$15, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9;
 34127  		s = this;
 34128  		_tmp = $clone((x = s.addrs, ((j < 0 || j >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + j])), IPAddr);
 34129  		_tmp$1 = $clone((x$1 = s.addrs, ((i < 0 || i >= x$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + i])), IPAddr);
 34130  		IPAddr.copy((x$2 = s.addrs, ((i < 0 || i >= x$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + i])), _tmp);
 34131  		IPAddr.copy((x$3 = s.addrs, ((j < 0 || j >= x$3.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$3.$array[x$3.$offset + j])), _tmp$1);
 34132  		_tmp$2 = (x$4 = s.srcs, ((j < 0 || j >= x$4.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$4.$array[x$4.$offset + j]));
 34133  		_tmp$3 = (x$5 = s.srcs, ((i < 0 || i >= x$5.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$5.$array[x$5.$offset + i]));
 34134  		(x$6 = s.srcs, ((i < 0 || i >= x$6.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$6.$array[x$6.$offset + i] = _tmp$2));
 34135  		(x$7 = s.srcs, ((j < 0 || j >= x$7.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$7.$array[x$7.$offset + j] = _tmp$3));
 34136  		_tmp$4 = $clone((x$8 = s.addrAttr, ((j < 0 || j >= x$8.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$8.$array[x$8.$offset + j])), ipAttr);
 34137  		_tmp$5 = $clone((x$9 = s.addrAttr, ((i < 0 || i >= x$9.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$9.$array[x$9.$offset + i])), ipAttr);
 34138  		ipAttr.copy((x$10 = s.addrAttr, ((i < 0 || i >= x$10.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$10.$array[x$10.$offset + i])), _tmp$4);
 34139  		ipAttr.copy((x$11 = s.addrAttr, ((j < 0 || j >= x$11.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$11.$array[x$11.$offset + j])), _tmp$5);
 34140  		_tmp$6 = $clone((x$12 = s.srcAttr, ((j < 0 || j >= x$12.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$12.$array[x$12.$offset + j])), ipAttr);
 34141  		_tmp$7 = $clone((x$13 = s.srcAttr, ((i < 0 || i >= x$13.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$13.$array[x$13.$offset + i])), ipAttr);
 34142  		ipAttr.copy((x$14 = s.srcAttr, ((i < 0 || i >= x$14.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$14.$array[x$14.$offset + i])), _tmp$6);
 34143  		ipAttr.copy((x$15 = s.srcAttr, ((j < 0 || j >= x$15.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$15.$array[x$15.$offset + j])), _tmp$7);
 34144  	};
 34145  	byRFC6724.prototype.Swap = function(i, j) { return this.$val.Swap(i, j); };
 34146  	byRFC6724.ptr.prototype.Less = function(i, j) {
 34147  		var DA, DB, SourceDA, SourceDB, attrDA, attrDB, attrSourceDA, attrSourceDB, commonA, commonB, i, j, s, x, x$1, x$2, x$3, x$4, x$5, x$6, x$7;
 34148  		s = this;
 34149  		DA = (x = s.addrs, ((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i])).IP;
 34150  		DB = (x$1 = s.addrs, ((j < 0 || j >= x$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + j])).IP;
 34151  		SourceDA = (x$2 = s.srcs, ((i < 0 || i >= x$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + i]));
 34152  		SourceDB = (x$3 = s.srcs, ((j < 0 || j >= x$3.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$3.$array[x$3.$offset + j]));
 34153  		attrDA = (x$4 = s.addrAttr, ((i < 0 || i >= x$4.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$4.$array[x$4.$offset + i]));
 34154  		attrDB = (x$5 = s.addrAttr, ((j < 0 || j >= x$5.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$5.$array[x$5.$offset + j]));
 34155  		attrSourceDA = (x$6 = s.srcAttr, ((i < 0 || i >= x$6.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$6.$array[x$6.$offset + i]));
 34156  		attrSourceDB = (x$7 = s.srcAttr, ((j < 0 || j >= x$7.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$7.$array[x$7.$offset + j]));
 34157  		if (SourceDA === IP.nil && SourceDB === IP.nil) {
 34158  			return false;
 34159  		}
 34160  		if (SourceDB === IP.nil) {
 34161  			return true;
 34162  		}
 34163  		if (SourceDA === IP.nil) {
 34164  			return false;
 34165  		}
 34166  		if ((attrDA.Scope === attrSourceDA.Scope) && !((attrDB.Scope === attrSourceDB.Scope))) {
 34167  			return true;
 34168  		}
 34169  		if (!((attrDA.Scope === attrSourceDA.Scope)) && (attrDB.Scope === attrSourceDB.Scope)) {
 34170  			return false;
 34171  		}
 34172  		if ((attrSourceDA.Label === attrDA.Label) && !((attrSourceDB.Label === attrDB.Label))) {
 34173  			return true;
 34174  		}
 34175  		if (!((attrSourceDA.Label === attrDA.Label)) && (attrSourceDB.Label === attrDB.Label)) {
 34176  			return false;
 34177  		}
 34178  		if (attrDA.Precedence > attrDB.Precedence) {
 34179  			return true;
 34180  		}
 34181  		if (attrDA.Precedence < attrDB.Precedence) {
 34182  			return false;
 34183  		}
 34184  		if (attrDA.Scope < attrDB.Scope) {
 34185  			return true;
 34186  		}
 34187  		if (attrDA.Scope > attrDB.Scope) {
 34188  			return false;
 34189  		}
 34190  		if (DA.To4() === IP.nil && DB.To4() === IP.nil) {
 34191  			commonA = commonPrefixLen(SourceDA, DA);
 34192  			commonB = commonPrefixLen(SourceDB, DB);
 34193  			if (commonA > commonB) {
 34194  				return true;
 34195  			}
 34196  			if (commonA < commonB) {
 34197  				return false;
 34198  			}
 34199  		}
 34200  		return false;
 34201  	};
 34202  	byRFC6724.prototype.Less = function(i, j) { return this.$val.Less(i, j); };
 34203  	init = function() {
 34204  		var $s, $r;
 34205  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 34206  		$r = sort.Sort(sort.Reverse(($subslice(new byMaskLength(rfc6724policyTable.$array), rfc6724policyTable.$offset, rfc6724policyTable.$offset + rfc6724policyTable.$length)))); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 34207  		$s = -1; return;
 34208  		/* */ } return; } if ($f === undefined) { $f = { $blk: init }; } $f.$s = $s; $f.$r = $r; return $f;
 34209  	};
 34210  	byMaskLength.prototype.Len = function() {
 34211  		var s;
 34212  		s = this;
 34213  		return s.$length;
 34214  	};
 34215  	$ptrType(byMaskLength).prototype.Len = function() { return this.$get().Len(); };
 34216  	byMaskLength.prototype.Swap = function(i, j) {
 34217  		var _tmp, _tmp$1, i, j, s;
 34218  		s = this;
 34219  		_tmp = $clone(((j < 0 || j >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + j]), policyTableEntry);
 34220  		_tmp$1 = $clone(((i < 0 || i >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + i]), policyTableEntry);
 34221  		policyTableEntry.copy(((i < 0 || i >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + i]), _tmp);
 34222  		policyTableEntry.copy(((j < 0 || j >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + j]), _tmp$1);
 34223  	};
 34224  	$ptrType(byMaskLength).prototype.Swap = function(i, j) { return this.$get().Swap(i, j); };
 34225  	byMaskLength.prototype.Less = function(i, j) {
 34226  		var _tuple, _tuple$1, i, isize, j, jsize, s;
 34227  		s = this;
 34228  		_tuple = ((i < 0 || i >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + i]).Prefix.Mask.Size();
 34229  		isize = _tuple[0];
 34230  		_tuple$1 = ((j < 0 || j >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + j]).Prefix.Mask.Size();
 34231  		jsize = _tuple$1[0];
 34232  		return isize < jsize;
 34233  	};
 34234  	$ptrType(byMaskLength).prototype.Less = function(i, j) { return this.$get().Less(i, j); };
 34235  	mustCIDR = function(s) {
 34236  		var _r$9, _tuple, err, ip, ipNet, s, $s, $r;
 34237  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$9 = $f._r$9; _tuple = $f._tuple; err = $f.err; ip = $f.ip; ipNet = $f.ipNet; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 34238  		_tuple = ParseCIDR(s);
 34239  		ip = _tuple[0];
 34240  		ipNet = _tuple[1];
 34241  		err = _tuple[2];
 34242  		/* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 1; continue; }
 34243  		/* */ $s = 2; continue;
 34244  		/* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 1:
 34245  			_r$9 = err.Error(); /* */ $s = 3; case 3: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 34246  			$panic(new $String(_r$9));
 34247  		/* } */ case 2:
 34248  		if (!((ip.$length === 16))) {
 34249  			$panic(new $String("unexpected IP length"));
 34250  		}
 34251  		$s = -1; return ipNet;
 34252  		/* */ } return; } if ($f === undefined) { $f = { $blk: mustCIDR }; } $f._r$9 = _r$9; $f._tuple = _tuple; $f.err = err; $f.ip = ip; $f.ipNet = ipNet; $f.s = s; $f.$s = $s; $f.$r = $r; return $f;
 34253  	};
 34254  	policyTable.prototype.Classify = function(ip) {
 34255  		var _i, _ref, ent, ip, t;
 34256  		t = this;
 34257  		_ref = t;
 34258  		_i = 0;
 34259  		while (true) {
 34260  			if (!(_i < _ref.$length)) { break; }
 34261  			ent = $clone(((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]), policyTableEntry);
 34262  			if (ent.Prefix.Contains(ip)) {
 34263  				return ent;
 34264  			}
 34265  			_i++;
 34266  		}
 34267  		return new policyTableEntry.ptr(ptrType$4.nil, 0, 0);
 34268  	};
 34269  	$ptrType(policyTable).prototype.Classify = function(ip) { return this.$get().Classify(ip); };
 34270  	classifyScope = function(ip) {
 34271  		var ip, ipv6;
 34272  		if (ip.IsLoopback() || ip.IsLinkLocalUnicast()) {
 34273  			return 2;
 34274  		}
 34275  		ipv6 = (ip.$length === 16) && ip.To4() === IP.nil;
 34276  		if (ipv6 && ip.IsMulticast()) {
 34277  			return (((((1 >= ip.$length ? ($throwRuntimeError("index out of range"), undefined) : ip.$array[ip.$offset + 1]) & 15) >>> 0) << 24 >>> 24));
 34278  		}
 34279  		if (ipv6 && ((0 >= ip.$length ? ($throwRuntimeError("index out of range"), undefined) : ip.$array[ip.$offset + 0]) === 254) && ((((1 >= ip.$length ? ($throwRuntimeError("index out of range"), undefined) : ip.$array[ip.$offset + 1]) & 192) >>> 0) === 192)) {
 34280  			return 5;
 34281  		}
 34282  		return 14;
 34283  	};
 34284  	commonPrefixLen = function(a, b) {
 34285  		var _tmp, _tmp$1, a, a4, ab, b, b4, bb, bits, cpl, y, y$1;
 34286  		cpl = 0;
 34287  		a4 = a.To4();
 34288  		if (!(a4 === IP.nil)) {
 34289  			a = a4;
 34290  		}
 34291  		b4 = b.To4();
 34292  		if (!(b4 === IP.nil)) {
 34293  			b = b4;
 34294  		}
 34295  		if (!((a.$length === b.$length))) {
 34296  			cpl = 0;
 34297  			return cpl;
 34298  		}
 34299  		if (a.$length > 8) {
 34300  			a = $subslice(a, 0, 8);
 34301  			b = $subslice(b, 0, 8);
 34302  		}
 34303  		while (true) {
 34304  			if (!(a.$length > 0)) { break; }
 34305  			if ((0 >= a.$length ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + 0]) === (0 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 0])) {
 34306  				cpl = cpl + (8) >> 0;
 34307  				a = $subslice(a, 1);
 34308  				b = $subslice(b, 1);
 34309  				continue;
 34310  			}
 34311  			bits = 8;
 34312  			_tmp = (0 >= a.$length ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + 0]);
 34313  			_tmp$1 = (0 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 0]);
 34314  			ab = _tmp;
 34315  			bb = _tmp$1;
 34316  			while (true) {
 34317  				ab = (y = (1), y < 32 ? (ab >>> y) : 0) << 24 >>> 24;
 34318  				bb = (y$1 = (1), y$1 < 32 ? (bb >>> y$1) : 0) << 24 >>> 24;
 34319  				bits = bits - (1) >> 0;
 34320  				if (ab === bb) {
 34321  					cpl = cpl + (bits) >> 0;
 34322  					return cpl;
 34323  				}
 34324  			}
 34325  		}
 34326  		return cpl;
 34327  	};
 34328  	init$1 = function() {
 34329  		netGo = true;
 34330  	};
 34331  	cgoLookupHost = function(ctx, name) {
 34332  		var _tmp, _tmp$1, _tmp$2, addrs, completed, ctx, err, name;
 34333  		addrs = sliceType.nil;
 34334  		err = $ifaceNil;
 34335  		completed = false;
 34336  		_tmp = sliceType.nil;
 34337  		_tmp$1 = $ifaceNil;
 34338  		_tmp$2 = false;
 34339  		addrs = _tmp;
 34340  		err = _tmp$1;
 34341  		completed = _tmp$2;
 34342  		return [addrs, err, completed];
 34343  	};
 34344  	cgoLookupPort = function(ctx, network, service) {
 34345  		var _tmp, _tmp$1, _tmp$2, completed, ctx, err, network, port, service;
 34346  		port = 0;
 34347  		err = $ifaceNil;
 34348  		completed = false;
 34349  		_tmp = 0;
 34350  		_tmp$1 = $ifaceNil;
 34351  		_tmp$2 = false;
 34352  		port = _tmp;
 34353  		err = _tmp$1;
 34354  		completed = _tmp$2;
 34355  		return [port, err, completed];
 34356  	};
 34357  	cgoLookupIP = function(ctx, name) {
 34358  		var _tmp, _tmp$1, _tmp$2, addrs, completed, ctx, err, name;
 34359  		addrs = sliceType$3.nil;
 34360  		err = $ifaceNil;
 34361  		completed = false;
 34362  		_tmp = sliceType$3.nil;
 34363  		_tmp$1 = $ifaceNil;
 34364  		_tmp$2 = false;
 34365  		addrs = _tmp;
 34366  		err = _tmp$1;
 34367  		completed = _tmp$2;
 34368  		return [addrs, err, completed];
 34369  	};
 34370  	cgoLookupCNAME = function(ctx, name) {
 34371  		var _tmp, _tmp$1, _tmp$2, cname, completed, ctx, err, name;
 34372  		cname = "";
 34373  		err = $ifaceNil;
 34374  		completed = false;
 34375  		_tmp = "";
 34376  		_tmp$1 = $ifaceNil;
 34377  		_tmp$2 = false;
 34378  		cname = _tmp;
 34379  		err = _tmp$1;
 34380  		completed = _tmp$2;
 34381  		return [cname, err, completed];
 34382  	};
 34383  	cgoLookupPTR = function(ctx, addr) {
 34384  		var _tmp, _tmp$1, _tmp$2, addr, completed, ctx, err, ptrs;
 34385  		ptrs = sliceType.nil;
 34386  		err = $ifaceNil;
 34387  		completed = false;
 34388  		_tmp = sliceType.nil;
 34389  		_tmp$1 = $ifaceNil;
 34390  		_tmp$2 = false;
 34391  		ptrs = _tmp;
 34392  		err = _tmp$1;
 34393  		completed = _tmp$2;
 34394  		return [ptrs, err, completed];
 34395  	};
 34396  	systemConf = function() {
 34397  		var $s, $r;
 34398  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 34399  		$r = confOnce.Do(initConfVal); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 34400  		$s = -1; return confVal;
 34401  		/* */ } return; } if ($f === undefined) { $f = { $blk: systemConf }; } $f.$s = $s; $f.$r = $r; return $f;
 34402  	};
 34403  	initConfVal = function() {
 34404  		var _r$10, _r$11, _r$12, _r$13, _r$14, _r$15, _r$16, _r$9, _tuple, _tuple$1, _tuple$2, _v, _v$1, debugLevel, dnsMode, err, localDomainDefined, $s, $deferred, $r;
 34405  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$10 = $f._r$10; _r$11 = $f._r$11; _r$12 = $f._r$12; _r$13 = $f._r$13; _r$14 = $f._r$14; _r$15 = $f._r$15; _r$16 = $f._r$16; _r$9 = $f._r$9; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _v = $f._v; _v$1 = $f._v$1; debugLevel = $f.debugLevel; dnsMode = $f.dnsMode; err = $f.err; localDomainDefined = $f.localDomainDefined; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
 34406  		_r$9 = goDebugNetDNS(); /* */ $s = 1; case 1: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 34407  		_tuple = _r$9;
 34408  		dnsMode = _tuple[0];
 34409  		debugLevel = _tuple[1];
 34410  		confVal.dnsDebugLevel = debugLevel;
 34411  		confVal.netGo = netGo || dnsMode === "go";
 34412  		confVal.netCgo = netCgo || dnsMode === "cgo";
 34413  		/* */ if (confVal.dnsDebugLevel > 0) { $s = 2; continue; }
 34414  		/* */ $s = 3; continue;
 34415  		/* if (confVal.dnsDebugLevel > 0) { */ case 2:
 34416  			$deferred.push([(function() {
 34417  				if (confVal.netGo) {
 34418  					if (netGo) {
 34419  						console.log("go package net: built with netgo build tag; using Go's DNS resolver");
 34420  					} else {
 34421  						console.log("go package net: GODEBUG setting forcing use of Go's resolver");
 34422  					}
 34423  				} else if (confVal.forceCgoLookupHost) {
 34424  					console.log("go package net: using cgo DNS resolver");
 34425  				} else {
 34426  					console.log("go package net: dynamic selection of DNS resolver");
 34427  				}
 34428  			}), []]);
 34429  		/* } */ case 3:
 34430  		if (false) {
 34431  			confVal.forceCgoLookupHost = true;
 34432  			$s = -1; return;
 34433  		}
 34434  		_r$10 = syscall.Getenv("LOCALDOMAIN"); /* */ $s = 4; case 4: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
 34435  		_tuple$1 = _r$10;
 34436  		localDomainDefined = _tuple$1[1];
 34437  		_r$11 = os.Getenv("RES_OPTIONS"); /* */ $s = 8; case 8: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; }
 34438  		if (!(_r$11 === "")) { _v = true; $s = 7; continue s; }
 34439  		_r$12 = os.Getenv("HOSTALIASES"); /* */ $s = 9; case 9: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; }
 34440  		_v = !(_r$12 === ""); case 7:
 34441  		/* */ if (_v || confVal.netCgo || localDomainDefined) { $s = 5; continue; }
 34442  		/* */ $s = 6; continue;
 34443  		/* if (_v || confVal.netCgo || localDomainDefined) { */ case 5:
 34444  			confVal.forceCgoLookupHost = true;
 34445  			$s = -1; return;
 34446  		/* } */ case 6:
 34447  		if (!(false)) { _v$1 = false; $s = 12; continue s; }
 34448  		_r$13 = os.Getenv("ASR_CONFIG"); /* */ $s = 13; case 13: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; }
 34449  		_v$1 = !(_r$13 === ""); case 12:
 34450  		/* */ if (_v$1) { $s = 10; continue; }
 34451  		/* */ $s = 11; continue;
 34452  		/* if (_v$1) { */ case 10:
 34453  			confVal.forceCgoLookupHost = true;
 34454  			$s = -1; return;
 34455  		/* } */ case 11:
 34456  		/* */ if (true) { $s = 14; continue; }
 34457  		/* */ $s = 15; continue;
 34458  		/* if (true) { */ case 14:
 34459  			_r$14 = parseNSSConfFile("/etc/nsswitch.conf"); /* */ $s = 16; case 16: if($c) { $c = false; _r$14 = _r$14.$blk(); } if (_r$14 && _r$14.$blk !== undefined) { break s; }
 34460  			confVal.nss = _r$14;
 34461  		/* } */ case 15:
 34462  		_r$15 = dnsReadConfig("/etc/resolv.conf"); /* */ $s = 17; case 17: if($c) { $c = false; _r$15 = _r$15.$blk(); } if (_r$15 && _r$15.$blk !== undefined) { break s; }
 34463  		confVal.resolv = _r$15;
 34464  		if (!($interfaceIsEqual(confVal.resolv.err, $ifaceNil)) && !os.IsNotExist(confVal.resolv.err) && !os.IsPermission(confVal.resolv.err)) {
 34465  			confVal.forceCgoLookupHost = true;
 34466  		}
 34467  		_r$16 = os.Stat("/etc/mdns.allow"); /* */ $s = 18; case 18: if($c) { $c = false; _r$16 = _r$16.$blk(); } if (_r$16 && _r$16.$blk !== undefined) { break s; }
 34468  		_tuple$2 = _r$16;
 34469  		err = _tuple$2[1];
 34470  		if ($interfaceIsEqual(err, $ifaceNil)) {
 34471  			confVal.hasMDNSAllow = true;
 34472  		}
 34473  		$s = -1; return;
 34474  		/* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: initConfVal }; } $f._r$10 = _r$10; $f._r$11 = _r$11; $f._r$12 = _r$12; $f._r$13 = _r$13; $f._r$14 = _r$14; $f._r$15 = _r$15; $f._r$16 = _r$16; $f._r$9 = _r$9; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._v = _v; $f._v$1 = _v$1; $f.debugLevel = debugLevel; $f.dnsMode = dnsMode; $f.err = err; $f.localDomainDefined = localDomainDefined; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
 34475  	};
 34476  	conf.ptr.prototype.canUseCgo = function() {
 34477  		var _r$9, c, $s, $r;
 34478  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$9 = $f._r$9; c = $f.c; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 34479  		c = this;
 34480  		_r$9 = c.hostLookupOrder(""); /* */ $s = 1; case 1: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 34481  		$s = -1; return _r$9 === 0;
 34482  		/* */ } return; } if ($f === undefined) { $f = { $blk: conf.ptr.prototype.canUseCgo }; } $f._r$9 = _r$9; $f.c = c; $f.$s = $s; $f.$r = $r; return $f;
 34483  	};
 34484  	conf.prototype.canUseCgo = function() { return this.$val.canUseCgo(); };
 34485  	conf.ptr.prototype.hostLookupOrder = function(hostname) {
 34486  		var _1, _entry, _i, _r$9, _ref, _tmp, _tmp$1, _tmp$2, _tuple, c, dnsSource, err, fallbackOrder, filesSource, first, hn, hostname, lookup, mdnsSource, nss, ret, src, srcs, $s, $deferred, $r;
 34487  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _entry = $f._entry; _i = $f._i; _r$9 = $f._r$9; _ref = $f._ref; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tuple = $f._tuple; c = $f.c; dnsSource = $f.dnsSource; err = $f.err; fallbackOrder = $f.fallbackOrder; filesSource = $f.filesSource; first = $f.first; hn = $f.hn; hostname = $f.hostname; lookup = $f.lookup; mdnsSource = $f.mdnsSource; nss = $f.nss; ret = $f.ret; src = $f.src; srcs = $f.srcs; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
 34488  		hostname = [hostname];
 34489  		ret = [ret];
 34490  		ret[0] = 0;
 34491  		c = this;
 34492  		/* */ if (c.dnsDebugLevel > 1) { $s = 1; continue; }
 34493  		/* */ $s = 2; continue;
 34494  		/* if (c.dnsDebugLevel > 1) { */ case 1:
 34495  			$deferred.push([(function(hostname, ret) { return function() {
 34496  				console.log("go package net: hostLookupOrder(", hostname[0], ") = ", new hostLookupOrder(ret[0]).String(), "\n");
 34497  			}; })(hostname, ret), []]);
 34498  		/* } */ case 2:
 34499  		fallbackOrder = 0;
 34500  		if (c.netGo) {
 34501  			fallbackOrder = 1;
 34502  		}
 34503  		if (c.forceCgoLookupHost || c.resolv.unknownOpt || c.goos === "android") {
 34504  			ret[0] = fallbackOrder;
 34505  			$s = -1; return ret[0];
 34506  		}
 34507  		if (!((byteIndex(hostname[0], 92) === -1)) || !((byteIndex(hostname[0], 37) === -1))) {
 34508  			ret[0] = fallbackOrder;
 34509  			$s = -1; return ret[0];
 34510  		}
 34511  		if (c.goos === "openbsd") {
 34512  			if (os.IsNotExist(c.resolv.err)) {
 34513  				ret[0] = 3;
 34514  				$s = -1; return ret[0];
 34515  			}
 34516  			lookup = c.resolv.lookup;
 34517  			if (lookup.$length === 0) {
 34518  				ret[0] = 2;
 34519  				$s = -1; return ret[0];
 34520  			}
 34521  			if (lookup.$length < 1 || lookup.$length > 2) {
 34522  				ret[0] = fallbackOrder;
 34523  				$s = -1; return ret[0];
 34524  			}
 34525  			_1 = (0 >= lookup.$length ? ($throwRuntimeError("index out of range"), undefined) : lookup.$array[lookup.$offset + 0]);
 34526  			if (_1 === ("bind")) {
 34527  				if (lookup.$length === 2) {
 34528  					if ((1 >= lookup.$length ? ($throwRuntimeError("index out of range"), undefined) : lookup.$array[lookup.$offset + 1]) === "file") {
 34529  						ret[0] = 2;
 34530  						$s = -1; return ret[0];
 34531  					}
 34532  					ret[0] = fallbackOrder;
 34533  					$s = -1; return ret[0];
 34534  				}
 34535  				ret[0] = 4;
 34536  				$s = -1; return ret[0];
 34537  			} else if (_1 === ("file")) {
 34538  				if (lookup.$length === 2) {
 34539  					if ((1 >= lookup.$length ? ($throwRuntimeError("index out of range"), undefined) : lookup.$array[lookup.$offset + 1]) === "bind") {
 34540  						ret[0] = 1;
 34541  						$s = -1; return ret[0];
 34542  					}
 34543  					ret[0] = fallbackOrder;
 34544  					$s = -1; return ret[0];
 34545  				}
 34546  				ret[0] = 3;
 34547  				$s = -1; return ret[0];
 34548  			} else {
 34549  				ret[0] = fallbackOrder;
 34550  				$s = -1; return ret[0];
 34551  			}
 34552  		}
 34553  		if (stringsHasSuffix(hostname[0], ".")) {
 34554  			hostname[0] = $substring(hostname[0], 0, (hostname[0].length - 1 >> 0));
 34555  		}
 34556  		if (stringsHasSuffixFold(hostname[0], ".local")) {
 34557  			ret[0] = fallbackOrder;
 34558  			$s = -1; return ret[0];
 34559  		}
 34560  		nss = c.nss;
 34561  		srcs = (_entry = nss.sources[$String.keyFor("hosts")], _entry !== undefined ? _entry.v : sliceType$5.nil);
 34562  		if (os.IsNotExist(nss.err) || ($interfaceIsEqual(nss.err, $ifaceNil) && (srcs.$length === 0))) {
 34563  			if (c.goos === "solaris") {
 34564  				ret[0] = fallbackOrder;
 34565  				$s = -1; return ret[0];
 34566  			}
 34567  			if (c.goos === "linux") {
 34568  				ret[0] = 2;
 34569  				$s = -1; return ret[0];
 34570  			}
 34571  			ret[0] = 1;
 34572  			$s = -1; return ret[0];
 34573  		}
 34574  		if (!($interfaceIsEqual(nss.err, $ifaceNil))) {
 34575  			ret[0] = fallbackOrder;
 34576  			$s = -1; return ret[0];
 34577  		}
 34578  		_tmp = false;
 34579  		_tmp$1 = false;
 34580  		_tmp$2 = false;
 34581  		mdnsSource = _tmp;
 34582  		filesSource = _tmp$1;
 34583  		dnsSource = _tmp$2;
 34584  		first = "";
 34585  		_ref = srcs;
 34586  		_i = 0;
 34587  		/* while (true) { */ case 3:
 34588  			/* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 4; continue; }
 34589  			src = $clone(((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]), nssSource);
 34590  			/* */ if (src.source === "myhostname") { $s = 5; continue; }
 34591  			/* */ $s = 6; continue;
 34592  			/* if (src.source === "myhostname") { */ case 5:
 34593  				if (isLocalhost(hostname[0]) || isGateway(hostname[0])) {
 34594  					ret[0] = fallbackOrder;
 34595  					$s = -1; return ret[0];
 34596  				}
 34597  				_r$9 = getHostname(); /* */ $s = 7; case 7: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 34598  				_tuple = _r$9;
 34599  				hn = _tuple[0];
 34600  				err = _tuple[1];
 34601  				if (!($interfaceIsEqual(err, $ifaceNil)) || stringsEqualFold(hostname[0], hn)) {
 34602  					ret[0] = fallbackOrder;
 34603  					$s = -1; return ret[0];
 34604  				}
 34605  				_i++;
 34606  				/* continue; */ $s = 3; continue;
 34607  			/* } */ case 6:
 34608  			if (src.source === "files" || src.source === "dns") {
 34609  				if (!$clone(src, nssSource).standardCriteria()) {
 34610  					ret[0] = fallbackOrder;
 34611  					$s = -1; return ret[0];
 34612  				}
 34613  				if (src.source === "files") {
 34614  					filesSource = true;
 34615  				} else if (src.source === "dns") {
 34616  					dnsSource = true;
 34617  				}
 34618  				if (first === "") {
 34619  					first = src.source;
 34620  				}
 34621  				_i++;
 34622  				/* continue; */ $s = 3; continue;
 34623  			}
 34624  			if (stringsHasPrefix(src.source, "mdns")) {
 34625  				mdnsSource = true;
 34626  				_i++;
 34627  				/* continue; */ $s = 3; continue;
 34628  			}
 34629  			ret[0] = fallbackOrder;
 34630  			$s = -1; return ret[0];
 34631  		/* } */ $s = 3; continue; case 4:
 34632  		if (mdnsSource && c.hasMDNSAllow) {
 34633  			ret[0] = fallbackOrder;
 34634  			$s = -1; return ret[0];
 34635  		}
 34636  		if (filesSource && dnsSource) {
 34637  			if (first === "files") {
 34638  				ret[0] = 1;
 34639  				$s = -1; return ret[0];
 34640  			} else {
 34641  				ret[0] = 2;
 34642  				$s = -1; return ret[0];
 34643  			}
 34644  		} else if (filesSource) {
 34645  			ret[0] = 3;
 34646  			$s = -1; return ret[0];
 34647  		} else if (dnsSource) {
 34648  			ret[0] = 4;
 34649  			$s = -1; return ret[0];
 34650  		}
 34651  		ret[0] = fallbackOrder;
 34652  		$s = -1; return ret[0];
 34653  		/* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if (!$curGoroutine.asleep) { return  ret[0]; } if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: conf.ptr.prototype.hostLookupOrder }; } $f._1 = _1; $f._entry = _entry; $f._i = _i; $f._r$9 = _r$9; $f._ref = _ref; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tuple = _tuple; $f.c = c; $f.dnsSource = dnsSource; $f.err = err; $f.fallbackOrder = fallbackOrder; $f.filesSource = filesSource; $f.first = first; $f.hn = hn; $f.hostname = hostname; $f.lookup = lookup; $f.mdnsSource = mdnsSource; $f.nss = nss; $f.ret = ret; $f.src = src; $f.srcs = srcs; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
 34654  	};
 34655  	conf.prototype.hostLookupOrder = function(hostname) { return this.$val.hostLookupOrder(hostname); };
 34656  	goDebugNetDNS = function() {
 34657  		var _r$9, debugLevel, dnsMode, goDebug, i, parsePart, $s, $r;
 34658  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$9 = $f._r$9; debugLevel = $f.debugLevel; dnsMode = $f.dnsMode; goDebug = $f.goDebug; i = $f.i; parsePart = $f.parsePart; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 34659  		debugLevel = [debugLevel];
 34660  		dnsMode = [dnsMode];
 34661  		dnsMode[0] = "";
 34662  		debugLevel[0] = 0;
 34663  		_r$9 = goDebugString("netdns"); /* */ $s = 1; case 1: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 34664  		goDebug = _r$9;
 34665  		parsePart = (function(debugLevel, dnsMode) { return function(s) {
 34666  			var _tuple, s;
 34667  			if (s === "") {
 34668  				return;
 34669  			}
 34670  			if (48 <= s.charCodeAt(0) && s.charCodeAt(0) <= 57) {
 34671  				_tuple = dtoi(s);
 34672  				debugLevel[0] = _tuple[0];
 34673  			} else {
 34674  				dnsMode[0] = s;
 34675  			}
 34676  		}; })(debugLevel, dnsMode);
 34677  		i = byteIndex(goDebug, 43);
 34678  		/* */ if (!((i === -1))) { $s = 2; continue; }
 34679  		/* */ $s = 3; continue;
 34680  		/* if (!((i === -1))) { */ case 2:
 34681  			$r = parsePart($substring(goDebug, 0, i)); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 34682  			$r = parsePart($substring(goDebug, (i + 1 >> 0))); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 34683  			$s = -1; return [dnsMode[0], debugLevel[0]];
 34684  		/* } */ case 3:
 34685  		$r = parsePart(goDebug); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 34686  		$s = -1; return [dnsMode[0], debugLevel[0]];
 34687  		/* */ } return; } if ($f === undefined) { $f = { $blk: goDebugNetDNS }; } $f._r$9 = _r$9; $f.debugLevel = debugLevel; $f.dnsMode = dnsMode; $f.goDebug = goDebug; $f.i = i; $f.parsePart = parsePart; $f.$s = $s; $f.$r = $r; return $f;
 34688  	};
 34689  	isLocalhost = function(h) {
 34690  		var h;
 34691  		return stringsEqualFold(h, "localhost") || stringsEqualFold(h, "localhost.localdomain") || stringsHasSuffixFold(h, ".localhost") || stringsHasSuffixFold(h, ".localhost.localdomain");
 34692  	};
 34693  	isGateway = function(h) {
 34694  		var h;
 34695  		return stringsEqualFold(h, "gateway");
 34696  	};
 34697  	minNonzeroTime = function(a, b) {
 34698  		var a, b;
 34699  		if ($clone(a, time.Time).IsZero()) {
 34700  			return b;
 34701  		}
 34702  		if ($clone(b, time.Time).IsZero() || $clone(a, time.Time).Before($clone(b, time.Time))) {
 34703  			return a;
 34704  		}
 34705  		return b;
 34706  	};
 34707  	Dialer.ptr.prototype.deadline = function(ctx, now) {
 34708  		var _r$9, _tuple, ctx, d, d$1, earliest, now, ok, x, $s, $r;
 34709  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$9 = $f._r$9; _tuple = $f._tuple; ctx = $f.ctx; d = $f.d; d$1 = $f.d$1; earliest = $f.earliest; now = $f.now; ok = $f.ok; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 34710  		earliest = new time.Time.ptr(new $Uint64(0, 0), new $Int64(0, 0), ptrType.nil);
 34711  		d = this;
 34712  		if (!((x = d.Timeout, (x.$high === 0 && x.$low === 0)))) {
 34713  			time.Time.copy(earliest, $clone(now, time.Time).Add(d.Timeout));
 34714  		}
 34715  		_r$9 = ctx.Deadline(); /* */ $s = 1; case 1: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 34716  		_tuple = _r$9;
 34717  		d$1 = $clone(_tuple[0], time.Time);
 34718  		ok = _tuple[1];
 34719  		if (ok) {
 34720  			time.Time.copy(earliest, minNonzeroTime($clone(earliest, time.Time), $clone(d$1, time.Time)));
 34721  		}
 34722  		time.Time.copy(earliest, minNonzeroTime($clone(earliest, time.Time), $clone(d.Deadline, time.Time)));
 34723  		$s = -1; return earliest;
 34724  		/* */ } return; } if ($f === undefined) { $f = { $blk: Dialer.ptr.prototype.deadline }; } $f._r$9 = _r$9; $f._tuple = _tuple; $f.ctx = ctx; $f.d = d; $f.d$1 = d$1; $f.earliest = earliest; $f.now = now; $f.ok = ok; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
 34725  	};
 34726  	Dialer.prototype.deadline = function(ctx, now) { return this.$val.deadline(ctx, now); };
 34727  	Dialer.ptr.prototype.resolver = function() {
 34728  		var d;
 34729  		d = this;
 34730  		if (!(d.Resolver === ptrType$6.nil)) {
 34731  			return d.Resolver;
 34732  		}
 34733  		return $pkg.DefaultResolver;
 34734  	};
 34735  	Dialer.prototype.resolver = function() { return this.$val.resolver(); };
 34736  	partialDeadline = function(now, deadline, addrsRemaining) {
 34737  		var addrsRemaining, deadline, now, timeRemaining, timeout$1;
 34738  		if ($clone(deadline, time.Time).IsZero()) {
 34739  			return [deadline, $ifaceNil];
 34740  		}
 34741  		timeRemaining = $clone(deadline, time.Time).Sub($clone(now, time.Time));
 34742  		if ((timeRemaining.$high < 0 || (timeRemaining.$high === 0 && timeRemaining.$low <= 0))) {
 34743  			return [new time.Time.ptr(new $Uint64(0, 0), new $Int64(0, 0), ptrType.nil), poll.ErrTimeout];
 34744  		}
 34745  		timeout$1 = $div64(timeRemaining, (new time.Duration(0, addrsRemaining)), false);
 34746  		if ((timeout$1.$high < 0 || (timeout$1.$high === 0 && timeout$1.$low < 2000000000))) {
 34747  			if ((timeRemaining.$high < 0 || (timeRemaining.$high === 0 && timeRemaining.$low < 2000000000))) {
 34748  				timeout$1 = timeRemaining;
 34749  			} else {
 34750  				timeout$1 = new time.Duration(0, 2000000000);
 34751  			}
 34752  		}
 34753  		return [$clone(now, time.Time).Add(timeout$1), $ifaceNil];
 34754  	};
 34755  	Dialer.ptr.prototype.fallbackDelay = function() {
 34756  		var d, x;
 34757  		d = this;
 34758  		if ((x = d.FallbackDelay, (x.$high > 0 || (x.$high === 0 && x.$low > 0)))) {
 34759  			return d.FallbackDelay;
 34760  		} else {
 34761  			return new time.Duration(0, 300000000);
 34762  		}
 34763  	};
 34764  	Dialer.prototype.fallbackDelay = function() { return this.$val.fallbackDelay(); };
 34765  	parseNetwork = function(ctx, network, needsProto) {
 34766  		var _1, _2, _r$9, _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$14, _tmp$15, _tmp$16, _tmp$17, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, _tuple$1, afnet, ctx, err, i, i$1, needsProto, network, ok, proto, proto$1, protostr, $s, $r;
 34767  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _2 = $f._2; _r$9 = $f._r$9; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$10 = $f._tmp$10; _tmp$11 = $f._tmp$11; _tmp$12 = $f._tmp$12; _tmp$13 = $f._tmp$13; _tmp$14 = $f._tmp$14; _tmp$15 = $f._tmp$15; _tmp$16 = $f._tmp$16; _tmp$17 = $f._tmp$17; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tmp$4 = $f._tmp$4; _tmp$5 = $f._tmp$5; _tmp$6 = $f._tmp$6; _tmp$7 = $f._tmp$7; _tmp$8 = $f._tmp$8; _tmp$9 = $f._tmp$9; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; afnet = $f.afnet; ctx = $f.ctx; err = $f.err; i = $f.i; i$1 = $f.i$1; needsProto = $f.needsProto; network = $f.network; ok = $f.ok; proto = $f.proto; proto$1 = $f.proto$1; protostr = $f.protostr; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 34768  		afnet = "";
 34769  		proto = 0;
 34770  		err = $ifaceNil;
 34771  		i = last(network, 58);
 34772  		if (i < 0) {
 34773  			_1 = network;
 34774  			if (_1 === ("tcp") || _1 === ("tcp4") || _1 === ("tcp6")) {
 34775  			} else if (_1 === ("udp") || _1 === ("udp4") || _1 === ("udp6")) {
 34776  			} else if (_1 === ("ip") || _1 === ("ip4") || _1 === ("ip6")) {
 34777  				if (needsProto) {
 34778  					_tmp = "";
 34779  					_tmp$1 = 0;
 34780  					_tmp$2 = new UnknownNetworkError((network));
 34781  					afnet = _tmp;
 34782  					proto = _tmp$1;
 34783  					err = _tmp$2;
 34784  					$s = -1; return [afnet, proto, err];
 34785  				}
 34786  			} else if (_1 === ("unix") || _1 === ("unixgram") || _1 === ("unixpacket")) {
 34787  			} else {
 34788  				_tmp$3 = "";
 34789  				_tmp$4 = 0;
 34790  				_tmp$5 = new UnknownNetworkError((network));
 34791  				afnet = _tmp$3;
 34792  				proto = _tmp$4;
 34793  				err = _tmp$5;
 34794  				$s = -1; return [afnet, proto, err];
 34795  			}
 34796  			_tmp$6 = network;
 34797  			_tmp$7 = 0;
 34798  			_tmp$8 = $ifaceNil;
 34799  			afnet = _tmp$6;
 34800  			proto = _tmp$7;
 34801  			err = _tmp$8;
 34802  			$s = -1; return [afnet, proto, err];
 34803  		}
 34804  		afnet = $substring(network, 0, i);
 34805  			_2 = afnet;
 34806  			/* */ if (_2 === ("ip") || _2 === ("ip4") || _2 === ("ip6")) { $s = 2; continue; }
 34807  			/* */ $s = 3; continue;
 34808  			/* if (_2 === ("ip") || _2 === ("ip4") || _2 === ("ip6")) { */ case 2:
 34809  				protostr = $substring(network, (i + 1 >> 0));
 34810  				_tuple = dtoi(protostr);
 34811  				proto$1 = _tuple[0];
 34812  				i$1 = _tuple[1];
 34813  				ok = _tuple[2];
 34814  				/* */ if (!ok || !((i$1 === protostr.length))) { $s = 4; continue; }
 34815  				/* */ $s = 5; continue;
 34816  				/* if (!ok || !((i$1 === protostr.length))) { */ case 4:
 34817  					_r$9 = lookupProtocol(ctx, protostr); /* */ $s = 6; case 6: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 34818  					_tuple$1 = _r$9;
 34819  					proto$1 = _tuple$1[0];
 34820  					err = _tuple$1[1];
 34821  					if (!($interfaceIsEqual(err, $ifaceNil))) {
 34822  						_tmp$9 = "";
 34823  						_tmp$10 = 0;
 34824  						_tmp$11 = err;
 34825  						afnet = _tmp$9;
 34826  						proto = _tmp$10;
 34827  						err = _tmp$11;
 34828  						$s = -1; return [afnet, proto, err];
 34829  					}
 34830  				/* } */ case 5:
 34831  				_tmp$12 = afnet;
 34832  				_tmp$13 = proto$1;
 34833  				_tmp$14 = $ifaceNil;
 34834  				afnet = _tmp$12;
 34835  				proto = _tmp$13;
 34836  				err = _tmp$14;
 34837  				$s = -1; return [afnet, proto, err];
 34838  			/* } */ case 3:
 34839  		case 1:
 34840  		_tmp$15 = "";
 34841  		_tmp$16 = 0;
 34842  		_tmp$17 = new UnknownNetworkError((network));
 34843  		afnet = _tmp$15;
 34844  		proto = _tmp$16;
 34845  		err = _tmp$17;
 34846  		$s = -1; return [afnet, proto, err];
 34847  		/* */ } return; } if ($f === undefined) { $f = { $blk: parseNetwork }; } $f._1 = _1; $f._2 = _2; $f._r$9 = _r$9; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$10 = _tmp$10; $f._tmp$11 = _tmp$11; $f._tmp$12 = _tmp$12; $f._tmp$13 = _tmp$13; $f._tmp$14 = _tmp$14; $f._tmp$15 = _tmp$15; $f._tmp$16 = _tmp$16; $f._tmp$17 = _tmp$17; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tmp$4 = _tmp$4; $f._tmp$5 = _tmp$5; $f._tmp$6 = _tmp$6; $f._tmp$7 = _tmp$7; $f._tmp$8 = _tmp$8; $f._tmp$9 = _tmp$9; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.afnet = afnet; $f.ctx = ctx; $f.err = err; $f.i = i; $f.i$1 = i$1; $f.needsProto = needsProto; $f.network = network; $f.ok = ok; $f.proto = proto; $f.proto$1 = proto$1; $f.protostr = protostr; $f.$s = $s; $f.$r = $r; return $f;
 34848  	};
 34849  	Resolver.ptr.prototype.resolveAddrList = function(ctx, op, network, addr, hint) {
 34850  		var _1, _i, _r$10, _r$11, _r$12, _r$13, _r$14, _r$15, _r$16, _r$17, _r$9, _ref, _ref$1, _ref$2, _tuple, _tuple$1, _tuple$2, _v, addr, addr$1, addr$2, addr$3, addr$4, addr$5, addrs, afnet, ctx, err, err$1, hint, hint$1, hint$2, hint$3, ip, naddrs, network, op, r, tcp, udp, wildcard, $s, $r;
 34851  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _i = $f._i; _r$10 = $f._r$10; _r$11 = $f._r$11; _r$12 = $f._r$12; _r$13 = $f._r$13; _r$14 = $f._r$14; _r$15 = $f._r$15; _r$16 = $f._r$16; _r$17 = $f._r$17; _r$9 = $f._r$9; _ref = $f._ref; _ref$1 = $f._ref$1; _ref$2 = $f._ref$2; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _v = $f._v; addr = $f.addr; addr$1 = $f.addr$1; addr$2 = $f.addr$2; addr$3 = $f.addr$3; addr$4 = $f.addr$4; addr$5 = $f.addr$5; addrs = $f.addrs; afnet = $f.afnet; ctx = $f.ctx; err = $f.err; err$1 = $f.err$1; hint = $f.hint; hint$1 = $f.hint$1; hint$2 = $f.hint$2; hint$3 = $f.hint$3; ip = $f.ip; naddrs = $f.naddrs; network = $f.network; op = $f.op; r = $f.r; tcp = $f.tcp; udp = $f.udp; wildcard = $f.wildcard; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 34852  		r = this;
 34853  		_r$9 = parseNetwork(ctx, network, true); /* */ $s = 1; case 1: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 34854  		_tuple = _r$9;
 34855  		afnet = _tuple[0];
 34856  		err = _tuple[2];
 34857  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 34858  			$s = -1; return [addrList.nil, err];
 34859  		}
 34860  		if (op === "dial" && addr === "") {
 34861  			$s = -1; return [addrList.nil, errMissingAddress];
 34862  		}
 34863  			_1 = afnet;
 34864  			/* */ if (_1 === ("unix") || _1 === ("unixgram") || _1 === ("unixpacket")) { $s = 3; continue; }
 34865  			/* */ $s = 4; continue;
 34866  			/* if (_1 === ("unix") || _1 === ("unixgram") || _1 === ("unixpacket")) { */ case 3:
 34867  				_tuple$1 = ResolveUnixAddr(afnet, addr);
 34868  				addr$1 = _tuple$1[0];
 34869  				err$1 = _tuple$1[1];
 34870  				if (!($interfaceIsEqual(err$1, $ifaceNil))) {
 34871  					$s = -1; return [addrList.nil, err$1];
 34872  				}
 34873  				if (!(op === "dial" && !($interfaceIsEqual(hint, $ifaceNil)))) { _v = false; $s = 7; continue s; }
 34874  				_r$10 = hint.Network(); /* */ $s = 8; case 8: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
 34875  				_v = !(addr$1.Network() === _r$10); case 7:
 34876  				/* */ if (_v) { $s = 5; continue; }
 34877  				/* */ $s = 6; continue;
 34878  				/* if (_v) { */ case 5:
 34879  					_r$11 = hint.String(); /* */ $s = 9; case 9: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; }
 34880  					$s = -1; return [addrList.nil, new AddrError.ptr("mismatched local address type", _r$11)];
 34881  				/* } */ case 6:
 34882  				$s = -1; return [new addrList([addr$1]), $ifaceNil];
 34883  			/* } */ case 4:
 34884  		case 2:
 34885  		_r$12 = r.internetAddrList(ctx, afnet, addr); /* */ $s = 10; case 10: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; }
 34886  		_tuple$2 = _r$12;
 34887  		addrs = _tuple$2[0];
 34888  		err = _tuple$2[1];
 34889  		if (!($interfaceIsEqual(err, $ifaceNil)) || !(op === "dial") || $interfaceIsEqual(hint, $ifaceNil)) {
 34890  			$s = -1; return [addrs, err];
 34891  		}
 34892  		tcp = ptrType$7.nil;
 34893  		udp = ptrType$5.nil;
 34894  		ip = ptrType$8.nil;
 34895  		wildcard = false;
 34896  		_ref = hint;
 34897  		if ($assertType(_ref, ptrType$7, true)[1]) {
 34898  			hint$1 = _ref.$val;
 34899  			tcp = hint$1;
 34900  			wildcard = tcp.isWildcard();
 34901  		} else if ($assertType(_ref, ptrType$5, true)[1]) {
 34902  			hint$2 = _ref.$val;
 34903  			udp = hint$2;
 34904  			wildcard = udp.isWildcard();
 34905  		} else if ($assertType(_ref, ptrType$8, true)[1]) {
 34906  			hint$3 = _ref.$val;
 34907  			ip = hint$3;
 34908  			wildcard = ip.isWildcard();
 34909  		}
 34910  		naddrs = $subslice(addrs, 0, 0);
 34911  		_ref$1 = addrs;
 34912  		_i = 0;
 34913  		/* while (true) { */ case 11:
 34914  			/* if (!(_i < _ref$1.$length)) { break; } */ if(!(_i < _ref$1.$length)) { $s = 12; continue; }
 34915  			addr$2 = ((_i < 0 || _i >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i]);
 34916  			_r$13 = addr$2.Network(); /* */ $s = 15; case 15: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; }
 34917  			_r$14 = hint.Network(); /* */ $s = 16; case 16: if($c) { $c = false; _r$14 = _r$14.$blk(); } if (_r$14 && _r$14.$blk !== undefined) { break s; }
 34918  			/* */ if (!(_r$13 === _r$14)) { $s = 13; continue; }
 34919  			/* */ $s = 14; continue;
 34920  			/* if (!(_r$13 === _r$14)) { */ case 13:
 34921  				_r$15 = hint.String(); /* */ $s = 17; case 17: if($c) { $c = false; _r$15 = _r$15.$blk(); } if (_r$15 && _r$15.$blk !== undefined) { break s; }
 34922  				$s = -1; return [addrList.nil, new AddrError.ptr("mismatched local address type", _r$15)];
 34923  			/* } */ case 14:
 34924  			_ref$2 = addr$2;
 34925  			/* */ if ($assertType(_ref$2, ptrType$7, true)[1]) { $s = 18; continue; }
 34926  			/* */ if ($assertType(_ref$2, ptrType$5, true)[1]) { $s = 19; continue; }
 34927  			/* */ if ($assertType(_ref$2, ptrType$8, true)[1]) { $s = 20; continue; }
 34928  			/* */ $s = 21; continue;
 34929  			/* if ($assertType(_ref$2, ptrType$7, true)[1]) { */ case 18:
 34930  				addr$3 = _ref$2.$val;
 34931  				if (!wildcard && !addr$3.isWildcard() && !addr$3.IP.matchAddrFamily(tcp.IP)) {
 34932  					_i++;
 34933  					/* continue; */ $s = 11; continue;
 34934  				}
 34935  				naddrs = $append(naddrs, addr$3);
 34936  				$s = 21; continue;
 34937  			/* } else if ($assertType(_ref$2, ptrType$5, true)[1]) { */ case 19:
 34938  				addr$4 = _ref$2.$val;
 34939  				if (!wildcard && !addr$4.isWildcard() && !addr$4.IP.matchAddrFamily(udp.IP)) {
 34940  					_i++;
 34941  					/* continue; */ $s = 11; continue;
 34942  				}
 34943  				naddrs = $append(naddrs, addr$4);
 34944  				$s = 21; continue;
 34945  			/* } else if ($assertType(_ref$2, ptrType$8, true)[1]) { */ case 20:
 34946  				addr$5 = _ref$2.$val;
 34947  				if (!wildcard && !addr$5.isWildcard() && !addr$5.IP.matchAddrFamily(ip.IP)) {
 34948  					_i++;
 34949  					/* continue; */ $s = 11; continue;
 34950  				}
 34951  				naddrs = $append(naddrs, addr$5);
 34952  			/* } */ case 21:
 34953  			_i++;
 34954  		/* } */ $s = 11; continue; case 12:
 34955  		/* */ if (naddrs.$length === 0) { $s = 22; continue; }
 34956  		/* */ $s = 23; continue;
 34957  		/* if (naddrs.$length === 0) { */ case 22:
 34958  			_r$16 = errNoSuitableAddress.Error(); /* */ $s = 24; case 24: if($c) { $c = false; _r$16 = _r$16.$blk(); } if (_r$16 && _r$16.$blk !== undefined) { break s; }
 34959  			_r$17 = hint.String(); /* */ $s = 25; case 25: if($c) { $c = false; _r$17 = _r$17.$blk(); } if (_r$17 && _r$17.$blk !== undefined) { break s; }
 34960  			$s = -1; return [addrList.nil, new AddrError.ptr(_r$16, _r$17)];
 34961  		/* } */ case 23:
 34962  		$s = -1; return [naddrs, $ifaceNil];
 34963  		/* */ } return; } if ($f === undefined) { $f = { $blk: Resolver.ptr.prototype.resolveAddrList }; } $f._1 = _1; $f._i = _i; $f._r$10 = _r$10; $f._r$11 = _r$11; $f._r$12 = _r$12; $f._r$13 = _r$13; $f._r$14 = _r$14; $f._r$15 = _r$15; $f._r$16 = _r$16; $f._r$17 = _r$17; $f._r$9 = _r$9; $f._ref = _ref; $f._ref$1 = _ref$1; $f._ref$2 = _ref$2; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._v = _v; $f.addr = addr; $f.addr$1 = addr$1; $f.addr$2 = addr$2; $f.addr$3 = addr$3; $f.addr$4 = addr$4; $f.addr$5 = addr$5; $f.addrs = addrs; $f.afnet = afnet; $f.ctx = ctx; $f.err = err; $f.err$1 = err$1; $f.hint = hint; $f.hint$1 = hint$1; $f.hint$2 = hint$2; $f.hint$3 = hint$3; $f.ip = ip; $f.naddrs = naddrs; $f.network = network; $f.op = op; $f.r = r; $f.tcp = tcp; $f.udp = udp; $f.wildcard = wildcard; $f.$s = $s; $f.$r = $r; return $f;
 34964  	};
 34965  	Resolver.prototype.resolveAddrList = function(ctx, op, network, addr, hint) { return this.$val.resolveAddrList(ctx, op, network, addr, hint); };
 34966  	Dialer.ptr.prototype.DialContext = function(ctx, network, address) {
 34967  		var _r$10, _r$11, _r$12, _r$13, _r$14, _r$15, _r$16, _r$17, _r$18, _r$19, _r$20, _r$9, _tmp, _tmp$1, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, _tuple$5, _tuple$6, _tuple$7, _tuple$8, address, addrs, c, cancel, cancel$1, ctx, d, d$1, deadline, dp, err, fallbacks, network, ok, ok$1, oldCancel, primaries, resolveCtx, shadow, subCtx, subCtx$1, tc, trace, x, x$1, x$2, $s, $deferred, $r;
 34968  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$10 = $f._r$10; _r$11 = $f._r$11; _r$12 = $f._r$12; _r$13 = $f._r$13; _r$14 = $f._r$14; _r$15 = $f._r$15; _r$16 = $f._r$16; _r$17 = $f._r$17; _r$18 = $f._r$18; _r$19 = $f._r$19; _r$20 = $f._r$20; _r$9 = $f._r$9; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; _tuple$4 = $f._tuple$4; _tuple$5 = $f._tuple$5; _tuple$6 = $f._tuple$6; _tuple$7 = $f._tuple$7; _tuple$8 = $f._tuple$8; address = $f.address; addrs = $f.addrs; c = $f.c; cancel = $f.cancel; cancel$1 = $f.cancel$1; ctx = $f.ctx; d = $f.d; d$1 = $f.d$1; deadline = $f.deadline; dp = $f.dp; err = $f.err; fallbacks = $f.fallbacks; network = $f.network; ok = $f.ok; ok$1 = $f.ok$1; oldCancel = $f.oldCancel; primaries = $f.primaries; resolveCtx = $f.resolveCtx; shadow = $f.shadow; subCtx = $f.subCtx; subCtx$1 = $f.subCtx$1; tc = $f.tc; trace = $f.trace; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
 34969  		cancel = [cancel];
 34970  		oldCancel = [oldCancel];
 34971  		shadow = [shadow];
 34972  		subCtx = [subCtx];
 34973  		d = this;
 34974  		if ($interfaceIsEqual(ctx, $ifaceNil)) {
 34975  			$panic(new $String("nil context"));
 34976  		}
 34977  		_r$9 = d.deadline(ctx, $clone(time.Now(), time.Time)); /* */ $s = 1; case 1: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 34978  		deadline = $clone(_r$9, time.Time);
 34979  		/* */ if (!$clone(deadline, time.Time).IsZero()) { $s = 2; continue; }
 34980  		/* */ $s = 3; continue;
 34981  		/* if (!$clone(deadline, time.Time).IsZero()) { */ case 2:
 34982  			_r$10 = ctx.Deadline(); /* */ $s = 4; case 4: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
 34983  			_tuple = _r$10;
 34984  			d$1 = $clone(_tuple[0], time.Time);
 34985  			ok = _tuple[1];
 34986  			/* */ if (!ok || $clone(deadline, time.Time).Before($clone(d$1, time.Time))) { $s = 5; continue; }
 34987  			/* */ $s = 6; continue;
 34988  			/* if (!ok || $clone(deadline, time.Time).Before($clone(d$1, time.Time))) { */ case 5:
 34989  				_r$11 = context.WithDeadline(ctx, $clone(deadline, time.Time)); /* */ $s = 7; case 7: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; }
 34990  				_tuple$1 = _r$11;
 34991  				subCtx$1 = _tuple$1[0];
 34992  				cancel$1 = _tuple$1[1];
 34993  				$deferred.push([cancel$1, []]);
 34994  				ctx = subCtx$1;
 34995  			/* } */ case 6:
 34996  		/* } */ case 3:
 34997  		oldCancel[0] = d.Cancel;
 34998  		/* */ if (!(oldCancel[0] === $chanNil)) { $s = 8; continue; }
 34999  		/* */ $s = 9; continue;
 35000  		/* if (!(oldCancel[0] === $chanNil)) { */ case 8:
 35001  			_r$12 = context.WithCancel(ctx); /* */ $s = 10; case 10: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; }
 35002  			_tuple$2 = _r$12;
 35003  			subCtx[0] = _tuple$2[0];
 35004  			cancel[0] = _tuple$2[1];
 35005  			$deferred.push([cancel[0], []]);
 35006  			$go((function(cancel, oldCancel, shadow, subCtx) { return function $b() {
 35007  				var _r$13, _r$14, _selection, $s, $r;
 35008  				/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$13 = $f._r$13; _r$14 = $f._r$14; _selection = $f._selection; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 35009  				_r$13 = subCtx[0].Done(); /* */ $s = 1; case 1: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; }
 35010  				_r$14 = $select([[oldCancel[0]], [_r$13]]); /* */ $s = 2; case 2: if($c) { $c = false; _r$14 = _r$14.$blk(); } if (_r$14 && _r$14.$blk !== undefined) { break s; }
 35011  				_selection = _r$14;
 35012  				/* */ if (_selection[0] === 0) { $s = 3; continue; }
 35013  				/* */ if (_selection[0] === 1) { $s = 4; continue; }
 35014  				/* */ $s = 5; continue;
 35015  				/* if (_selection[0] === 0) { */ case 3:
 35016  					$r = cancel[0](); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 35017  					$s = 5; continue;
 35018  				/* } else if (_selection[0] === 1) { */ case 4:
 35019  				/* } */ case 5:
 35020  				$s = -1; return;
 35021  				/* */ } return; } if ($f === undefined) { $f = { $blk: $b }; } $f._r$13 = _r$13; $f._r$14 = _r$14; $f._selection = _selection; $f.$s = $s; $f.$r = $r; return $f;
 35022  			}; })(cancel, oldCancel, shadow, subCtx), []);
 35023  			ctx = subCtx[0];
 35024  		/* } */ case 9:
 35025  		resolveCtx = ctx;
 35026  		_r$13 = ctx.Value((x = new nettrace.TraceKey.ptr(), new x.constructor.elem(x))); /* */ $s = 11; case 11: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; }
 35027  		_tuple$3 = $assertType(_r$13, ptrType$9, true);
 35028  		trace = _tuple$3[0];
 35029  		/* */ if (!(trace === ptrType$9.nil)) { $s = 12; continue; }
 35030  		/* */ $s = 13; continue;
 35031  		/* if (!(trace === ptrType$9.nil)) { */ case 12:
 35032  			shadow[0] = $clone(trace, nettrace.Trace);
 35033  			shadow[0].ConnectStart = $throwNilPointerError;
 35034  			shadow[0].ConnectDone = $throwNilPointerError;
 35035  			_r$14 = context.WithValue(resolveCtx, (x$1 = new nettrace.TraceKey.ptr(), new x$1.constructor.elem(x$1)), shadow[0]); /* */ $s = 14; case 14: if($c) { $c = false; _r$14 = _r$14.$blk(); } if (_r$14 && _r$14.$blk !== undefined) { break s; }
 35036  			resolveCtx = _r$14;
 35037  		/* } */ case 13:
 35038  		_r$15 = d.resolver().resolveAddrList(resolveCtx, "dial", network, address, d.LocalAddr); /* */ $s = 15; case 15: if($c) { $c = false; _r$15 = _r$15.$blk(); } if (_r$15 && _r$15.$blk !== undefined) { break s; }
 35039  		_tuple$4 = _r$15;
 35040  		addrs = _tuple$4[0];
 35041  		err = _tuple$4[1];
 35042  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 35043  			$s = -1; return [$ifaceNil, new OpError.ptr("dial", network, $ifaceNil, $ifaceNil, err)];
 35044  		}
 35045  		dp = new dialParam.ptr($clone(d, Dialer), network, address);
 35046  		_tmp = addrList.nil;
 35047  		_tmp$1 = addrList.nil;
 35048  		primaries = _tmp;
 35049  		fallbacks = _tmp$1;
 35050  		/* */ if (d.DualStack && network === "tcp") { $s = 16; continue; }
 35051  		/* */ $s = 17; continue;
 35052  		/* if (d.DualStack && network === "tcp") { */ case 16:
 35053  			_r$16 = addrs.partition(isIPv4); /* */ $s = 19; case 19: if($c) { $c = false; _r$16 = _r$16.$blk(); } if (_r$16 && _r$16.$blk !== undefined) { break s; }
 35054  			_tuple$5 = _r$16;
 35055  			primaries = _tuple$5[0];
 35056  			fallbacks = _tuple$5[1];
 35057  			$s = 18; continue;
 35058  		/* } else { */ case 17:
 35059  			primaries = addrs;
 35060  		/* } */ case 18:
 35061  		c = $ifaceNil;
 35062  		/* */ if (fallbacks.$length > 0) { $s = 20; continue; }
 35063  		/* */ $s = 21; continue;
 35064  		/* if (fallbacks.$length > 0) { */ case 20:
 35065  			_r$17 = dialParallel(ctx, dp, primaries, fallbacks); /* */ $s = 23; case 23: if($c) { $c = false; _r$17 = _r$17.$blk(); } if (_r$17 && _r$17.$blk !== undefined) { break s; }
 35066  			_tuple$6 = _r$17;
 35067  			c = _tuple$6[0];
 35068  			err = _tuple$6[1];
 35069  			$s = 22; continue;
 35070  		/* } else { */ case 21:
 35071  			_r$18 = dialSerial(ctx, dp, primaries); /* */ $s = 24; case 24: if($c) { $c = false; _r$18 = _r$18.$blk(); } if (_r$18 && _r$18.$blk !== undefined) { break s; }
 35072  			_tuple$7 = _r$18;
 35073  			c = _tuple$7[0];
 35074  			err = _tuple$7[1];
 35075  		/* } */ case 22:
 35076  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 35077  			$s = -1; return [$ifaceNil, err];
 35078  		}
 35079  		_tuple$8 = $assertType(c, ptrType$10, true);
 35080  		tc = _tuple$8[0];
 35081  		ok$1 = _tuple$8[1];
 35082  		/* */ if (ok$1 && (x$2 = d.KeepAlive, (x$2.$high > 0 || (x$2.$high === 0 && x$2.$low > 0)))) { $s = 25; continue; }
 35083  		/* */ $s = 26; continue;
 35084  		/* if (ok$1 && (x$2 = d.KeepAlive, (x$2.$high > 0 || (x$2.$high === 0 && x$2.$low > 0)))) { */ case 25:
 35085  			_r$19 = setKeepAlive(tc.conn.fd, true); /* */ $s = 27; case 27: if($c) { $c = false; _r$19 = _r$19.$blk(); } if (_r$19 && _r$19.$blk !== undefined) { break s; }
 35086  			_r$19;
 35087  			_r$20 = setKeepAlivePeriod(tc.conn.fd, d.KeepAlive); /* */ $s = 28; case 28: if($c) { $c = false; _r$20 = _r$20.$blk(); } if (_r$20 && _r$20.$blk !== undefined) { break s; }
 35088  			_r$20;
 35089  			$r = testHookSetKeepAlive(); /* */ $s = 29; case 29: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 35090  		/* } */ case 26:
 35091  		$s = -1; return [c, $ifaceNil];
 35092  		/* */ } return; } } catch(err) { $err = err; $s = -1; return [$ifaceNil, $ifaceNil]; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: Dialer.ptr.prototype.DialContext }; } $f._r$10 = _r$10; $f._r$11 = _r$11; $f._r$12 = _r$12; $f._r$13 = _r$13; $f._r$14 = _r$14; $f._r$15 = _r$15; $f._r$16 = _r$16; $f._r$17 = _r$17; $f._r$18 = _r$18; $f._r$19 = _r$19; $f._r$20 = _r$20; $f._r$9 = _r$9; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f._tuple$4 = _tuple$4; $f._tuple$5 = _tuple$5; $f._tuple$6 = _tuple$6; $f._tuple$7 = _tuple$7; $f._tuple$8 = _tuple$8; $f.address = address; $f.addrs = addrs; $f.c = c; $f.cancel = cancel; $f.cancel$1 = cancel$1; $f.ctx = ctx; $f.d = d; $f.d$1 = d$1; $f.deadline = deadline; $f.dp = dp; $f.err = err; $f.fallbacks = fallbacks; $f.network = network; $f.ok = ok; $f.ok$1 = ok$1; $f.oldCancel = oldCancel; $f.primaries = primaries; $f.resolveCtx = resolveCtx; $f.shadow = shadow; $f.subCtx = subCtx; $f.subCtx$1 = subCtx$1; $f.tc = tc; $f.trace = trace; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
 35093  	};
 35094  	Dialer.prototype.DialContext = function(ctx, network, address) { return this.$val.DialContext(ctx, network, address); };
 35095  	dialParallel = function(ctx, dp, primaries, fallbacks) {
 35096  		var _arg, _r$10, _r$11, _r$12, _r$9, _selection, _tmp, _tmp$1, _tuple, _tuple$1, ctx, dp, fallback, fallbackCancel, fallbackCtx, fallbackTimer, fallbacks, primaries, primary, primaryCancel, primaryCtx, res, results, returned, startRacer, $s, $deferred, $r;
 35097  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _arg = $f._arg; _r$10 = $f._r$10; _r$11 = $f._r$11; _r$12 = $f._r$12; _r$9 = $f._r$9; _selection = $f._selection; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; ctx = $f.ctx; dp = $f.dp; fallback = $f.fallback; fallbackCancel = $f.fallbackCancel; fallbackCtx = $f.fallbackCtx; fallbackTimer = $f.fallbackTimer; fallbacks = $f.fallbacks; primaries = $f.primaries; primary = $f.primary; primaryCancel = $f.primaryCancel; primaryCtx = $f.primaryCtx; res = $f.res; results = $f.results; returned = $f.returned; startRacer = $f.startRacer; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
 35098  		dp = [dp];
 35099  		fallbacks = [fallbacks];
 35100  		primaries = [primaries];
 35101  		results = [results];
 35102  		returned = [returned];
 35103  		/* */ if (fallbacks[0].$length === 0) { $s = 1; continue; }
 35104  		/* */ $s = 2; continue;
 35105  		/* if (fallbacks[0].$length === 0) { */ case 1:
 35106  			_r$9 = dialSerial(ctx, dp[0], primaries[0]); /* */ $s = 3; case 3: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 35107  			$s = -1; return _r$9;
 35108  		/* } */ case 2:
 35109  		returned[0] = new $Chan(structType$1, 0);
 35110  		$deferred.push([function(_arg) { $close(_arg); }, [returned[0]]]);
 35111  		results[0] = new $Chan(dialResult, 0);
 35112  		startRacer = (function(dp, fallbacks, primaries, results, returned) { return function $b(ctx$1, primary) {
 35113  			var _r$10, _r$11, _r$12, _selection, _tuple, c, ctx$1, err, primary, ras, $s, $r;
 35114  			/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$10 = $f._r$10; _r$11 = $f._r$11; _r$12 = $f._r$12; _selection = $f._selection; _tuple = $f._tuple; c = $f.c; ctx$1 = $f.ctx$1; err = $f.err; primary = $f.primary; ras = $f.ras; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 35115  			ras = primaries[0];
 35116  			if (!primary) {
 35117  				ras = fallbacks[0];
 35118  			}
 35119  			_r$10 = dialSerial(ctx$1, dp[0], ras); /* */ $s = 1; case 1: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
 35120  			_tuple = _r$10;
 35121  			c = _tuple[0];
 35122  			err = _tuple[1];
 35123  			_r$11 = $select([[results[0], new dialResult.ptr(c, err, primary, true)], [returned[0]]]); /* */ $s = 2; case 2: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; }
 35124  			_selection = _r$11;
 35125  			/* */ if (_selection[0] === 0) { $s = 3; continue; }
 35126  			/* */ if (_selection[0] === 1) { $s = 4; continue; }
 35127  			/* */ $s = 5; continue;
 35128  			/* if (_selection[0] === 0) { */ case 3:
 35129  				$s = 5; continue;
 35130  			/* } else if (_selection[0] === 1) { */ case 4:
 35131  				/* */ if (!($interfaceIsEqual(c, $ifaceNil))) { $s = 6; continue; }
 35132  				/* */ $s = 7; continue;
 35133  				/* if (!($interfaceIsEqual(c, $ifaceNil))) { */ case 6:
 35134  					_r$12 = c.Close(); /* */ $s = 8; case 8: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; }
 35135  					_r$12;
 35136  				/* } */ case 7:
 35137  			/* } */ case 5:
 35138  			$s = -1; return;
 35139  			/* */ } return; } if ($f === undefined) { $f = { $blk: $b }; } $f._r$10 = _r$10; $f._r$11 = _r$11; $f._r$12 = _r$12; $f._selection = _selection; $f._tuple = _tuple; $f.c = c; $f.ctx$1 = ctx$1; $f.err = err; $f.primary = primary; $f.ras = ras; $f.$s = $s; $f.$r = $r; return $f;
 35140  		}; })(dp, fallbacks, primaries, results, returned);
 35141  		_tmp = new dialResult.ptr($ifaceNil, $ifaceNil, false, false);
 35142  		_tmp$1 = new dialResult.ptr($ifaceNil, $ifaceNil, false, false);
 35143  		primary = $clone(_tmp, dialResult);
 35144  		fallback = $clone(_tmp$1, dialResult);
 35145  		_r$10 = context.WithCancel(ctx); /* */ $s = 4; case 4: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
 35146  		_tuple = _r$10;
 35147  		primaryCtx = _tuple[0];
 35148  		primaryCancel = _tuple[1];
 35149  		$deferred.push([primaryCancel, []]);
 35150  		$go(startRacer, [primaryCtx, true]);
 35151  		fallbackTimer = time.NewTimer(dp[0].Dialer.fallbackDelay());
 35152  		$deferred.push([$methodVal(fallbackTimer, "Stop"), []]);
 35153  		/* while (true) { */ case 5:
 35154  			_r$11 = $select([[fallbackTimer.C], [results[0]]]); /* */ $s = 7; case 7: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; }
 35155  			_selection = _r$11;
 35156  			/* */ if (_selection[0] === 0) { $s = 8; continue; }
 35157  			/* */ if (_selection[0] === 1) { $s = 9; continue; }
 35158  			/* */ $s = 10; continue;
 35159  			/* if (_selection[0] === 0) { */ case 8:
 35160  				_r$12 = context.WithCancel(ctx); /* */ $s = 11; case 11: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; }
 35161  				_tuple$1 = _r$12;
 35162  				fallbackCtx = _tuple$1[0];
 35163  				fallbackCancel = _tuple$1[1];
 35164  				$deferred.push([fallbackCancel, []]);
 35165  				$go(startRacer, [fallbackCtx, false]);
 35166  				$s = 10; continue;
 35167  			/* } else if (_selection[0] === 1) { */ case 9:
 35168  				res = $clone(_selection[1][0], dialResult);
 35169  				if ($interfaceIsEqual(res.error, $ifaceNil)) {
 35170  					$s = -1; return [res.Conn, $ifaceNil];
 35171  				}
 35172  				if (res.primary) {
 35173  					dialResult.copy(primary, res);
 35174  				} else {
 35175  					dialResult.copy(fallback, res);
 35176  				}
 35177  				if (primary.done && fallback.done) {
 35178  					$s = -1; return [$ifaceNil, primary.error];
 35179  				}
 35180  				if (res.primary && fallbackTimer.Stop()) {
 35181  					fallbackTimer.Reset(new time.Duration(0, 0));
 35182  				}
 35183  			/* } */ case 10:
 35184  		/* } */ $s = 5; continue; case 6:
 35185  		$s = -1; return [$ifaceNil, $ifaceNil];
 35186  		/* */ } return; } } catch(err) { $err = err; $s = -1; return [$ifaceNil, $ifaceNil]; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: dialParallel }; } $f._arg = _arg; $f._r$10 = _r$10; $f._r$11 = _r$11; $f._r$12 = _r$12; $f._r$9 = _r$9; $f._selection = _selection; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.ctx = ctx; $f.dp = dp; $f.fallback = fallback; $f.fallbackCancel = fallbackCancel; $f.fallbackCtx = fallbackCtx; $f.fallbackTimer = fallbackTimer; $f.fallbacks = fallbacks; $f.primaries = primaries; $f.primary = primary; $f.primaryCancel = primaryCancel; $f.primaryCtx = primaryCtx; $f.res = res; $f.results = results; $f.returned = returned; $f.startRacer = startRacer; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
 35187  	};
 35188  	dialSerial = function(ctx, dp, ras) {
 35189  		var _i, _r$10, _r$11, _r$12, _r$13, _r$14, _r$9, _ref, _selection, _tuple, _tuple$1, _tuple$2, _tuple$3, c, cancel, ctx, deadline, dialCtx, dp, err, firstErr, i, partialDeadline$1, ra, ras, $s, $deferred, $r;
 35190  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _i = $f._i; _r$10 = $f._r$10; _r$11 = $f._r$11; _r$12 = $f._r$12; _r$13 = $f._r$13; _r$14 = $f._r$14; _r$9 = $f._r$9; _ref = $f._ref; _selection = $f._selection; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; c = $f.c; cancel = $f.cancel; ctx = $f.ctx; deadline = $f.deadline; dialCtx = $f.dialCtx; dp = $f.dp; err = $f.err; firstErr = $f.firstErr; i = $f.i; partialDeadline$1 = $f.partialDeadline$1; ra = $f.ra; ras = $f.ras; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
 35191  		firstErr = $ifaceNil;
 35192  		_ref = ras;
 35193  		_i = 0;
 35194  		/* while (true) { */ case 1:
 35195  			/* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; }
 35196  			i = _i;
 35197  			ra = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
 35198  			_r$9 = ctx.Done(); /* */ $s = 3; case 3: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 35199  			_selection = $select([[_r$9], []]);
 35200  			/* */ if (_selection[0] === 0) { $s = 4; continue; }
 35201  			/* */ if (_selection[0] === 1) { $s = 5; continue; }
 35202  			/* */ $s = 6; continue;
 35203  			/* if (_selection[0] === 0) { */ case 4:
 35204  				_r$10 = ctx.Err(); /* */ $s = 7; case 7: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
 35205  				_r$11 = mapErr(_r$10); /* */ $s = 8; case 8: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; }
 35206  				$s = -1; return [$ifaceNil, new OpError.ptr("dial", dp.network, dp.Dialer.LocalAddr, ra, _r$11)];
 35207  			/* } else if (_selection[0] === 1) { */ case 5:
 35208  			/* } */ case 6:
 35209  			_r$12 = ctx.Deadline(); /* */ $s = 9; case 9: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; }
 35210  			_tuple = _r$12;
 35211  			deadline = $clone(_tuple[0], time.Time);
 35212  			_tuple$1 = partialDeadline($clone(time.Now(), time.Time), $clone(deadline, time.Time), ras.$length - i >> 0);
 35213  			partialDeadline$1 = $clone(_tuple$1[0], time.Time);
 35214  			err = _tuple$1[1];
 35215  			if (!($interfaceIsEqual(err, $ifaceNil))) {
 35216  				if ($interfaceIsEqual(firstErr, $ifaceNil)) {
 35217  					firstErr = new OpError.ptr("dial", dp.network, dp.Dialer.LocalAddr, ra, err);
 35218  				}
 35219  				/* break; */ $s = 2; continue;
 35220  			}
 35221  			dialCtx = ctx;
 35222  			/* */ if ($clone(partialDeadline$1, time.Time).Before($clone(deadline, time.Time))) { $s = 10; continue; }
 35223  			/* */ $s = 11; continue;
 35224  			/* if ($clone(partialDeadline$1, time.Time).Before($clone(deadline, time.Time))) { */ case 10:
 35225  				cancel = $throwNilPointerError;
 35226  				_r$13 = context.WithDeadline(ctx, $clone(partialDeadline$1, time.Time)); /* */ $s = 12; case 12: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; }
 35227  				_tuple$2 = _r$13;
 35228  				dialCtx = _tuple$2[0];
 35229  				cancel = _tuple$2[1];
 35230  				$deferred.push([cancel, []]);
 35231  			/* } */ case 11:
 35232  			_r$14 = dialSingle(dialCtx, dp, ra); /* */ $s = 13; case 13: if($c) { $c = false; _r$14 = _r$14.$blk(); } if (_r$14 && _r$14.$blk !== undefined) { break s; }
 35233  			_tuple$3 = _r$14;
 35234  			c = _tuple$3[0];
 35235  			err = _tuple$3[1];
 35236  			if ($interfaceIsEqual(err, $ifaceNil)) {
 35237  				$s = -1; return [c, $ifaceNil];
 35238  			}
 35239  			if ($interfaceIsEqual(firstErr, $ifaceNil)) {
 35240  				firstErr = err;
 35241  			}
 35242  			_i++;
 35243  		/* } */ $s = 1; continue; case 2:
 35244  		if ($interfaceIsEqual(firstErr, $ifaceNil)) {
 35245  			firstErr = new OpError.ptr("dial", dp.network, $ifaceNil, $ifaceNil, errMissingAddress);
 35246  		}
 35247  		$s = -1; return [$ifaceNil, firstErr];
 35248  		/* */ } return; } } catch(err) { $err = err; $s = -1; return [$ifaceNil, $ifaceNil]; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: dialSerial }; } $f._i = _i; $f._r$10 = _r$10; $f._r$11 = _r$11; $f._r$12 = _r$12; $f._r$13 = _r$13; $f._r$14 = _r$14; $f._r$9 = _r$9; $f._ref = _ref; $f._selection = _selection; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f.c = c; $f.cancel = cancel; $f.ctx = ctx; $f.deadline = deadline; $f.dialCtx = dialCtx; $f.dp = dp; $f.err = err; $f.firstErr = firstErr; $f.i = i; $f.partialDeadline$1 = partialDeadline$1; $f.ra = ra; $f.ras = ras; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
 35249  	};
 35250  	dialSingle = function(ctx, dp, ra) {
 35251  		var _r$10, _r$11, _r$12, _r$13, _r$14, _r$9, _ref, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, _tuple$5, _tuple$6, _tuple$7, _tuple$8, c, ctx, dp, err, la, la$1, la$2, la$3, la$4, ra, ra$1, ra$2, ra$3, ra$4, ra$5, raStr, trace, x, $s, $deferred, $r;
 35252  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$10 = $f._r$10; _r$11 = $f._r$11; _r$12 = $f._r$12; _r$13 = $f._r$13; _r$14 = $f._r$14; _r$9 = $f._r$9; _ref = $f._ref; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tmp$4 = $f._tmp$4; _tmp$5 = $f._tmp$5; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; _tuple$4 = $f._tuple$4; _tuple$5 = $f._tuple$5; _tuple$6 = $f._tuple$6; _tuple$7 = $f._tuple$7; _tuple$8 = $f._tuple$8; c = $f.c; ctx = $f.ctx; dp = $f.dp; err = $f.err; la = $f.la; la$1 = $f.la$1; la$2 = $f.la$2; la$3 = $f.la$3; la$4 = $f.la$4; ra = $f.ra; ra$1 = $f.ra$1; ra$2 = $f.ra$2; ra$3 = $f.ra$3; ra$4 = $f.ra$4; ra$5 = $f.ra$5; raStr = $f.raStr; trace = $f.trace; x = $f.x; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
 35253  		dp = [dp];
 35254  		err = [err];
 35255  		raStr = [raStr];
 35256  		trace = [trace];
 35257  		c = $ifaceNil;
 35258  		err[0] = $ifaceNil;
 35259  		_r$9 = ctx.Value((x = new nettrace.TraceKey.ptr(), new x.constructor.elem(x))); /* */ $s = 1; case 1: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 35260  		_tuple = $assertType(_r$9, ptrType$9, true);
 35261  		trace[0] = _tuple[0];
 35262  		/* */ if (!(trace[0] === ptrType$9.nil)) { $s = 2; continue; }
 35263  		/* */ $s = 3; continue;
 35264  		/* if (!(trace[0] === ptrType$9.nil)) { */ case 2:
 35265  			_r$10 = ra.String(); /* */ $s = 4; case 4: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
 35266  			raStr[0] = _r$10;
 35267  			/* */ if (!(trace[0].ConnectStart === $throwNilPointerError)) { $s = 5; continue; }
 35268  			/* */ $s = 6; continue;
 35269  			/* if (!(trace[0].ConnectStart === $throwNilPointerError)) { */ case 5:
 35270  				$r = trace[0].ConnectStart(dp[0].network, raStr[0]); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 35271  			/* } */ case 6:
 35272  			/* */ if (!(trace[0].ConnectDone === $throwNilPointerError)) { $s = 8; continue; }
 35273  			/* */ $s = 9; continue;
 35274  			/* if (!(trace[0].ConnectDone === $throwNilPointerError)) { */ case 8:
 35275  				$deferred.push([(function(dp, err, raStr, trace) { return function $b() {
 35276  					var $s, $r;
 35277  					/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 35278  					$r = trace[0].ConnectDone(dp[0].network, raStr[0], err[0]); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 35279  					$s = -1; return;
 35280  					/* */ } return; } if ($f === undefined) { $f = { $blk: $b }; } $f.$s = $s; $f.$r = $r; return $f;
 35281  				}; })(dp, err, raStr, trace), []]);
 35282  			/* } */ case 9:
 35283  		/* } */ case 3:
 35284  		la = dp[0].Dialer.LocalAddr;
 35285  		_ref = ra;
 35286  		/* */ if ($assertType(_ref, ptrType$7, true)[1]) { $s = 10; continue; }
 35287  		/* */ if ($assertType(_ref, ptrType$5, true)[1]) { $s = 11; continue; }
 35288  		/* */ if ($assertType(_ref, ptrType$8, true)[1]) { $s = 12; continue; }
 35289  		/* */ if ($assertType(_ref, ptrType$11, true)[1]) { $s = 13; continue; }
 35290  		/* */ $s = 14; continue;
 35291  		/* if ($assertType(_ref, ptrType$7, true)[1]) { */ case 10:
 35292  			ra$1 = _ref.$val;
 35293  			_tuple$1 = $assertType(la, ptrType$7, true);
 35294  			la$1 = _tuple$1[0];
 35295  			_r$11 = dialTCP(ctx, dp[0].network, la$1, ra$1); /* */ $s = 16; case 16: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; }
 35296  			_tuple$2 = _r$11;
 35297  			c = _tuple$2[0];
 35298  			err[0] = _tuple$2[1];
 35299  			$s = 15; continue;
 35300  		/* } else if ($assertType(_ref, ptrType$5, true)[1]) { */ case 11:
 35301  			ra$2 = _ref.$val;
 35302  			_tuple$3 = $assertType(la, ptrType$5, true);
 35303  			la$2 = _tuple$3[0];
 35304  			_r$12 = dialUDP(ctx, dp[0].network, la$2, ra$2); /* */ $s = 17; case 17: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; }
 35305  			_tuple$4 = _r$12;
 35306  			c = _tuple$4[0];
 35307  			err[0] = _tuple$4[1];
 35308  			$s = 15; continue;
 35309  		/* } else if ($assertType(_ref, ptrType$8, true)[1]) { */ case 12:
 35310  			ra$3 = _ref.$val;
 35311  			_tuple$5 = $assertType(la, ptrType$8, true);
 35312  			la$3 = _tuple$5[0];
 35313  			_r$13 = dialIP(ctx, dp[0].network, la$3, ra$3); /* */ $s = 18; case 18: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; }
 35314  			_tuple$6 = _r$13;
 35315  			c = _tuple$6[0];
 35316  			err[0] = _tuple$6[1];
 35317  			$s = 15; continue;
 35318  		/* } else if ($assertType(_ref, ptrType$11, true)[1]) { */ case 13:
 35319  			ra$4 = _ref.$val;
 35320  			_tuple$7 = $assertType(la, ptrType$11, true);
 35321  			la$4 = _tuple$7[0];
 35322  			_r$14 = dialUnix(ctx, dp[0].network, la$4, ra$4); /* */ $s = 19; case 19: if($c) { $c = false; _r$14 = _r$14.$blk(); } if (_r$14 && _r$14.$blk !== undefined) { break s; }
 35323  			_tuple$8 = _r$14;
 35324  			c = _tuple$8[0];
 35325  			err[0] = _tuple$8[1];
 35326  			$s = 15; continue;
 35327  		/* } else { */ case 14:
 35328  			ra$5 = _ref;
 35329  			_tmp = $ifaceNil;
 35330  			_tmp$1 = new OpError.ptr("dial", dp[0].network, la, ra$5, new AddrError.ptr("unexpected address type", dp[0].address));
 35331  			c = _tmp;
 35332  			err[0] = _tmp$1;
 35333  			$s = -1; return [c, err[0]];
 35334  		/* } */ case 15:
 35335  		if (!($interfaceIsEqual(err[0], $ifaceNil))) {
 35336  			_tmp$2 = $ifaceNil;
 35337  			_tmp$3 = new OpError.ptr("dial", dp[0].network, la, ra, err[0]);
 35338  			c = _tmp$2;
 35339  			err[0] = _tmp$3;
 35340  			$s = -1; return [c, err[0]];
 35341  		}
 35342  		_tmp$4 = c;
 35343  		_tmp$5 = $ifaceNil;
 35344  		c = _tmp$4;
 35345  		err[0] = _tmp$5;
 35346  		$s = -1; return [c, err[0]];
 35347  		/* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if (!$curGoroutine.asleep) { return  [c, err[0]]; } if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: dialSingle }; } $f._r$10 = _r$10; $f._r$11 = _r$11; $f._r$12 = _r$12; $f._r$13 = _r$13; $f._r$14 = _r$14; $f._r$9 = _r$9; $f._ref = _ref; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tmp$4 = _tmp$4; $f._tmp$5 = _tmp$5; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f._tuple$4 = _tuple$4; $f._tuple$5 = _tuple$5; $f._tuple$6 = _tuple$6; $f._tuple$7 = _tuple$7; $f._tuple$8 = _tuple$8; $f.c = c; $f.ctx = ctx; $f.dp = dp; $f.err = err; $f.la = la; $f.la$1 = la$1; $f.la$2 = la$2; $f.la$3 = la$3; $f.la$4 = la$4; $f.ra = ra; $f.ra$1 = ra$1; $f.ra$2 = ra$2; $f.ra$3 = ra$3; $f.ra$4 = ra$4; $f.ra$5 = ra$5; $f.raStr = raStr; $f.trace = trace; $f.x = x; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
 35348  	};
 35349  	reverseaddr = function(addr) {
 35350  		var _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, addr, arpa, buf, err, i, ip, v;
 35351  		arpa = "";
 35352  		err = $ifaceNil;
 35353  		ip = ParseIP(addr);
 35354  		if (ip === IP.nil) {
 35355  			_tmp = "";
 35356  			_tmp$1 = new DNSError.ptr("unrecognized address", addr, "", false, false);
 35357  			arpa = _tmp;
 35358  			err = _tmp$1;
 35359  			return [arpa, err];
 35360  		}
 35361  		if (!(ip.To4() === IP.nil)) {
 35362  			_tmp$2 = uitoa((((15 >= ip.$length ? ($throwRuntimeError("index out of range"), undefined) : ip.$array[ip.$offset + 15]) >>> 0))) + "." + uitoa((((14 >= ip.$length ? ($throwRuntimeError("index out of range"), undefined) : ip.$array[ip.$offset + 14]) >>> 0))) + "." + uitoa((((13 >= ip.$length ? ($throwRuntimeError("index out of range"), undefined) : ip.$array[ip.$offset + 13]) >>> 0))) + "." + uitoa((((12 >= ip.$length ? ($throwRuntimeError("index out of range"), undefined) : ip.$array[ip.$offset + 12]) >>> 0))) + ".in-addr.arpa.";
 35363  			_tmp$3 = $ifaceNil;
 35364  			arpa = _tmp$2;
 35365  			err = _tmp$3;
 35366  			return [arpa, err];
 35367  		}
 35368  		buf = $makeSlice(sliceType$1, 0, (($imul(ip.$length, 4)) + 9 >> 0));
 35369  		i = ip.$length - 1 >> 0;
 35370  		while (true) {
 35371  			if (!(i >= 0)) { break; }
 35372  			v = ((i < 0 || i >= ip.$length) ? ($throwRuntimeError("index out of range"), undefined) : ip.$array[ip.$offset + i]);
 35373  			buf = $append(buf, "0123456789abcdef".charCodeAt(((v & 15) >>> 0)));
 35374  			buf = $append(buf, 46);
 35375  			buf = $append(buf, "0123456789abcdef".charCodeAt((v >>> 4 << 24 >>> 24)));
 35376  			buf = $append(buf, 46);
 35377  			i = i - (1) >> 0;
 35378  		}
 35379  		buf = $appendSlice(buf, "ip6.arpa.");
 35380  		_tmp$4 = ($bytesToString(buf));
 35381  		_tmp$5 = $ifaceNil;
 35382  		arpa = _tmp$4;
 35383  		err = _tmp$5;
 35384  		return [arpa, err];
 35385  	};
 35386  	answer = function(name, server, dns, qtype) {
 35387  		var _1, _i, _r$10, _r$11, _r$9, _ref, _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$14, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, addrs, cname, cnameloop, dns, err, err$1, h, justHeader, name, qtype, rr, server, $s, $r;
 35388  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _i = $f._i; _r$10 = $f._r$10; _r$11 = $f._r$11; _r$9 = $f._r$9; _ref = $f._ref; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$10 = $f._tmp$10; _tmp$11 = $f._tmp$11; _tmp$12 = $f._tmp$12; _tmp$13 = $f._tmp$13; _tmp$14 = $f._tmp$14; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tmp$4 = $f._tmp$4; _tmp$5 = $f._tmp$5; _tmp$6 = $f._tmp$6; _tmp$7 = $f._tmp$7; _tmp$8 = $f._tmp$8; _tmp$9 = $f._tmp$9; _tuple = $f._tuple; addrs = $f.addrs; cname = $f.cname; cnameloop = $f.cnameloop; dns = $f.dns; err = $f.err; err$1 = $f.err$1; h = $f.h; justHeader = $f.justHeader; name = $f.name; qtype = $f.qtype; rr = $f.rr; server = $f.server; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 35389  		cname = "";
 35390  		addrs = sliceType$6.nil;
 35391  		err = $ifaceNil;
 35392  		addrs = $makeSlice(sliceType$6, 0, dns.answer.$length);
 35393  		/* */ if (dns.dnsMsgHdr.rcode === 3) { $s = 1; continue; }
 35394  		/* */ $s = 2; continue;
 35395  		/* if (dns.dnsMsgHdr.rcode === 3) { */ case 1:
 35396  			_tmp = "";
 35397  			_tmp$1 = sliceType$6.nil;
 35398  			_r$9 = errNoSuchHost.Error(); /* */ $s = 3; case 3: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 35399  			_tmp$2 = new DNSError.ptr(_r$9, name, server, false, false);
 35400  			cname = _tmp;
 35401  			addrs = _tmp$1;
 35402  			err = _tmp$2;
 35403  			$s = -1; return [cname, addrs, err];
 35404  		/* } */ case 2:
 35405  		if (!((dns.dnsMsgHdr.rcode === 0))) {
 35406  			err$1 = new DNSError.ptr("server misbehaving", name, server, false, false);
 35407  			if (dns.dnsMsgHdr.rcode === 2) {
 35408  				err$1.IsTemporary = true;
 35409  			}
 35410  			_tmp$3 = "";
 35411  			_tmp$4 = sliceType$6.nil;
 35412  			_tmp$5 = err$1;
 35413  			cname = _tmp$3;
 35414  			addrs = _tmp$4;
 35415  			err = _tmp$5;
 35416  			$s = -1; return [cname, addrs, err];
 35417  		}
 35418  		cnameloop = 0;
 35419  		/* while (true) { */ case 4:
 35420  			/* if (!(cnameloop < 10)) { break; } */ if(!(cnameloop < 10)) { $s = 5; continue; }
 35421  			addrs = $subslice(addrs, 0, 0);
 35422  			_ref = dns.answer;
 35423  			_i = 0;
 35424  			/* while (true) { */ case 6:
 35425  				/* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 7; continue; }
 35426  				rr = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
 35427  				_tuple = $assertType(rr, ptrType$12, true);
 35428  				justHeader = _tuple[1];
 35429  				if (justHeader) {
 35430  					_i++;
 35431  					/* continue; */ $s = 6; continue;
 35432  				}
 35433  				_r$10 = rr.Header(); /* */ $s = 8; case 8: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
 35434  				h = _r$10;
 35435  				if ((h.Class === 1) && equalASCIILabel(h.Name, name)) {
 35436  					_1 = h.Rrtype;
 35437  					if (_1 === (qtype)) {
 35438  						addrs = $append(addrs, rr);
 35439  					} else if (_1 === (5)) {
 35440  						name = $assertType(rr, ptrType$13).Cname;
 35441  						cnameloop = cnameloop + (1) >> 0;
 35442  						/* continue Cname; */ $s = 4; continue s;
 35443  					}
 35444  				}
 35445  				_i++;
 35446  			/* } */ $s = 6; continue; case 7:
 35447  			/* */ if (addrs.$length === 0) { $s = 9; continue; }
 35448  			/* */ $s = 10; continue;
 35449  			/* if (addrs.$length === 0) { */ case 9:
 35450  				_tmp$6 = "";
 35451  				_tmp$7 = sliceType$6.nil;
 35452  				_r$11 = errNoSuchHost.Error(); /* */ $s = 11; case 11: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; }
 35453  				_tmp$8 = new DNSError.ptr(_r$11, name, server, false, false);
 35454  				cname = _tmp$6;
 35455  				addrs = _tmp$7;
 35456  				err = _tmp$8;
 35457  				$s = -1; return [cname, addrs, err];
 35458  			/* } */ case 10:
 35459  			_tmp$9 = name;
 35460  			_tmp$10 = addrs;
 35461  			_tmp$11 = $ifaceNil;
 35462  			cname = _tmp$9;
 35463  			addrs = _tmp$10;
 35464  			err = _tmp$11;
 35465  			$s = -1; return [cname, addrs, err];
 35466  		/* } */ $s = 4; continue; case 5:
 35467  		_tmp$12 = "";
 35468  		_tmp$13 = sliceType$6.nil;
 35469  		_tmp$14 = new DNSError.ptr("too many redirects", name, server, false, false);
 35470  		cname = _tmp$12;
 35471  		addrs = _tmp$13;
 35472  		err = _tmp$14;
 35473  		$s = -1; return [cname, addrs, err];
 35474  		/* */ } return; } if ($f === undefined) { $f = { $blk: answer }; } $f._1 = _1; $f._i = _i; $f._r$10 = _r$10; $f._r$11 = _r$11; $f._r$9 = _r$9; $f._ref = _ref; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$10 = _tmp$10; $f._tmp$11 = _tmp$11; $f._tmp$12 = _tmp$12; $f._tmp$13 = _tmp$13; $f._tmp$14 = _tmp$14; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tmp$4 = _tmp$4; $f._tmp$5 = _tmp$5; $f._tmp$6 = _tmp$6; $f._tmp$7 = _tmp$7; $f._tmp$8 = _tmp$8; $f._tmp$9 = _tmp$9; $f._tuple = _tuple; $f.addrs = addrs; $f.cname = cname; $f.cnameloop = cnameloop; $f.dns = dns; $f.err = err; $f.err$1 = err$1; $f.h = h; $f.justHeader = justHeader; $f.name = name; $f.qtype = qtype; $f.rr = rr; $f.server = server; $f.$s = $s; $f.$r = $r; return $f;
 35475  	};
 35476  	equalASCIILabel = function(x, y) {
 35477  		var a, b, i, x, y;
 35478  		if (!((x.length === y.length))) {
 35479  			return false;
 35480  		}
 35481  		i = 0;
 35482  		while (true) {
 35483  			if (!(i < x.length)) { break; }
 35484  			a = x.charCodeAt(i);
 35485  			b = y.charCodeAt(i);
 35486  			if (65 <= a && a <= 90) {
 35487  				a = a + (32) << 24 >>> 24;
 35488  			}
 35489  			if (65 <= b && b <= 90) {
 35490  				b = b + (32) << 24 >>> 24;
 35491  			}
 35492  			if (!((a === b))) {
 35493  				return false;
 35494  			}
 35495  			i = i + (1) >> 0;
 35496  		}
 35497  		return true;
 35498  	};
 35499  	isDomainName = function(s) {
 35500  		var c, i, l, last$1, ok, partlen, s;
 35501  		l = s.length;
 35502  		if ((l === 0) || l > 254 || (l === 254) && !((s.charCodeAt((l - 1 >> 0)) === 46))) {
 35503  			return false;
 35504  		}
 35505  		last$1 = 46;
 35506  		ok = false;
 35507  		partlen = 0;
 35508  		i = 0;
 35509  		while (true) {
 35510  			if (!(i < s.length)) { break; }
 35511  			c = s.charCodeAt(i);
 35512  			if (97 <= c && c <= 122 || 65 <= c && c <= 90 || (c === 95)) {
 35513  				ok = true;
 35514  				partlen = partlen + (1) >> 0;
 35515  			} else if (48 <= c && c <= 57) {
 35516  				partlen = partlen + (1) >> 0;
 35517  			} else if ((c === 45)) {
 35518  				if (last$1 === 46) {
 35519  					return false;
 35520  				}
 35521  				partlen = partlen + (1) >> 0;
 35522  			} else if ((c === 46)) {
 35523  				if ((last$1 === 46) || (last$1 === 45)) {
 35524  					return false;
 35525  				}
 35526  				if (partlen > 63 || (partlen === 0)) {
 35527  					return false;
 35528  				}
 35529  				partlen = 0;
 35530  			} else {
 35531  				return false;
 35532  			}
 35533  			last$1 = c;
 35534  			i = i + (1) >> 0;
 35535  		}
 35536  		if ((last$1 === 45) || partlen > 63) {
 35537  			return false;
 35538  		}
 35539  		return ok;
 35540  	};
 35541  	absDomainName = function(b) {
 35542  		var _i, _ref, b, hasDots, x, x$1;
 35543  		hasDots = false;
 35544  		_ref = b;
 35545  		_i = 0;
 35546  		while (true) {
 35547  			if (!(_i < _ref.$length)) { break; }
 35548  			x = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
 35549  			if (x === 46) {
 35550  				hasDots = true;
 35551  				break;
 35552  			}
 35553  			_i++;
 35554  		}
 35555  		if (hasDots && !(((x$1 = b.$length - 1 >> 0, ((x$1 < 0 || x$1 >= b.$length) ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + x$1])) === 46))) {
 35556  			b = $append(b, 46);
 35557  		}
 35558  		return ($bytesToString(b));
 35559  	};
 35560  	byPriorityWeight.prototype.Len = function() {
 35561  		var s;
 35562  		s = this;
 35563  		return s.$length;
 35564  	};
 35565  	$ptrType(byPriorityWeight).prototype.Len = function() { return this.$get().Len(); };
 35566  	byPriorityWeight.prototype.Less = function(i, j) {
 35567  		var i, j, s;
 35568  		s = this;
 35569  		return ((i < 0 || i >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + i]).Priority < ((j < 0 || j >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + j]).Priority || ((((i < 0 || i >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + i]).Priority === ((j < 0 || j >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + j]).Priority) && ((i < 0 || i >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + i]).Weight < ((j < 0 || j >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + j]).Weight);
 35570  	};
 35571  	$ptrType(byPriorityWeight).prototype.Less = function(i, j) { return this.$get().Less(i, j); };
 35572  	byPriorityWeight.prototype.Swap = function(i, j) {
 35573  		var _tmp, _tmp$1, i, j, s;
 35574  		s = this;
 35575  		_tmp = ((j < 0 || j >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + j]);
 35576  		_tmp$1 = ((i < 0 || i >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + i]);
 35577  		((i < 0 || i >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + i] = _tmp);
 35578  		((j < 0 || j >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + j] = _tmp$1);
 35579  	};
 35580  	$ptrType(byPriorityWeight).prototype.Swap = function(i, j) { return this.$get().Swap(i, j); };
 35581  	byPriorityWeight.prototype.shuffleByWeight = function() {
 35582  		var _i, _i$1, _r$9, _ref, _ref$1, _tmp, _tmp$1, addr, addrs, i, n, s, sum, $s, $r;
 35583  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _i = $f._i; _i$1 = $f._i$1; _r$9 = $f._r$9; _ref = $f._ref; _ref$1 = $f._ref$1; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; addr = $f.addr; addrs = $f.addrs; i = $f.i; n = $f.n; s = $f.s; sum = $f.sum; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 35584  		addrs = this;
 35585  		sum = 0;
 35586  		_ref = addrs;
 35587  		_i = 0;
 35588  		while (true) {
 35589  			if (!(_i < _ref.$length)) { break; }
 35590  			addr = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
 35591  			sum = sum + (((addr.Weight >> 0))) >> 0;
 35592  			_i++;
 35593  		}
 35594  		/* while (true) { */ case 1:
 35595  			/* if (!(sum > 0 && addrs.$length > 1)) { break; } */ if(!(sum > 0 && addrs.$length > 1)) { $s = 2; continue; }
 35596  			s = 0;
 35597  			_r$9 = rand.Intn(sum); /* */ $s = 3; case 3: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 35598  			n = _r$9;
 35599  			_ref$1 = addrs;
 35600  			_i$1 = 0;
 35601  			while (true) {
 35602  				if (!(_i$1 < _ref$1.$length)) { break; }
 35603  				i = _i$1;
 35604  				s = s + (((((i < 0 || i >= addrs.$length) ? ($throwRuntimeError("index out of range"), undefined) : addrs.$array[addrs.$offset + i]).Weight >> 0))) >> 0;
 35605  				if (s > n) {
 35606  					if (i > 0) {
 35607  						_tmp = ((i < 0 || i >= addrs.$length) ? ($throwRuntimeError("index out of range"), undefined) : addrs.$array[addrs.$offset + i]);
 35608  						_tmp$1 = (0 >= addrs.$length ? ($throwRuntimeError("index out of range"), undefined) : addrs.$array[addrs.$offset + 0]);
 35609  						(0 >= addrs.$length ? ($throwRuntimeError("index out of range"), undefined) : addrs.$array[addrs.$offset + 0] = _tmp);
 35610  						((i < 0 || i >= addrs.$length) ? ($throwRuntimeError("index out of range"), undefined) : addrs.$array[addrs.$offset + i] = _tmp$1);
 35611  					}
 35612  					break;
 35613  				}
 35614  				_i$1++;
 35615  			}
 35616  			sum = sum - ((((0 >= addrs.$length ? ($throwRuntimeError("index out of range"), undefined) : addrs.$array[addrs.$offset + 0]).Weight >> 0))) >> 0;
 35617  			addrs = $subslice(addrs, 1);
 35618  		/* } */ $s = 1; continue; case 2:
 35619  		$s = -1; return;
 35620  		/* */ } return; } if ($f === undefined) { $f = { $blk: byPriorityWeight.prototype.shuffleByWeight }; } $f._i = _i; $f._i$1 = _i$1; $f._r$9 = _r$9; $f._ref = _ref; $f._ref$1 = _ref$1; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f.addr = addr; $f.addrs = addrs; $f.i = i; $f.n = n; $f.s = s; $f.sum = sum; $f.$s = $s; $f.$r = $r; return $f;
 35621  	};
 35622  	$ptrType(byPriorityWeight).prototype.shuffleByWeight = function() { return this.$get().shuffleByWeight(); };
 35623  	byPriorityWeight.prototype.sort = function() {
 35624  		var addrs, i, j, $s, $r;
 35625  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; addrs = $f.addrs; i = $f.i; j = $f.j; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 35626  		addrs = this;
 35627  		$r = sort.Sort(addrs); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 35628  		i = 0;
 35629  		j = 1;
 35630  		/* while (true) { */ case 2:
 35631  			/* if (!(j < addrs.$length)) { break; } */ if(!(j < addrs.$length)) { $s = 3; continue; }
 35632  			/* */ if (!((((i < 0 || i >= addrs.$length) ? ($throwRuntimeError("index out of range"), undefined) : addrs.$array[addrs.$offset + i]).Priority === ((j < 0 || j >= addrs.$length) ? ($throwRuntimeError("index out of range"), undefined) : addrs.$array[addrs.$offset + j]).Priority))) { $s = 4; continue; }
 35633  			/* */ $s = 5; continue;
 35634  			/* if (!((((i < 0 || i >= addrs.$length) ? ($throwRuntimeError("index out of range"), undefined) : addrs.$array[addrs.$offset + i]).Priority === ((j < 0 || j >= addrs.$length) ? ($throwRuntimeError("index out of range"), undefined) : addrs.$array[addrs.$offset + j]).Priority))) { */ case 4:
 35635  				$r = $subslice(addrs, i, j).shuffleByWeight(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 35636  				i = j;
 35637  			/* } */ case 5:
 35638  			j = j + (1) >> 0;
 35639  		/* } */ $s = 2; continue; case 3:
 35640  		$r = $subslice(addrs, i).shuffleByWeight(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 35641  		$s = -1; return;
 35642  		/* */ } return; } if ($f === undefined) { $f = { $blk: byPriorityWeight.prototype.sort }; } $f.addrs = addrs; $f.i = i; $f.j = j; $f.$s = $s; $f.$r = $r; return $f;
 35643  	};
 35644  	$ptrType(byPriorityWeight).prototype.sort = function() { return this.$get().sort(); };
 35645  	byPref.prototype.Len = function() {
 35646  		var s;
 35647  		s = this;
 35648  		return s.$length;
 35649  	};
 35650  	$ptrType(byPref).prototype.Len = function() { return this.$get().Len(); };
 35651  	byPref.prototype.Less = function(i, j) {
 35652  		var i, j, s;
 35653  		s = this;
 35654  		return ((i < 0 || i >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + i]).Pref < ((j < 0 || j >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + j]).Pref;
 35655  	};
 35656  	$ptrType(byPref).prototype.Less = function(i, j) { return this.$get().Less(i, j); };
 35657  	byPref.prototype.Swap = function(i, j) {
 35658  		var _tmp, _tmp$1, i, j, s;
 35659  		s = this;
 35660  		_tmp = ((j < 0 || j >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + j]);
 35661  		_tmp$1 = ((i < 0 || i >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + i]);
 35662  		((i < 0 || i >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + i] = _tmp);
 35663  		((j < 0 || j >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + j] = _tmp$1);
 35664  	};
 35665  	$ptrType(byPref).prototype.Swap = function(i, j) { return this.$get().Swap(i, j); };
 35666  	byPref.prototype.sort = function() {
 35667  		var _i, _r$9, _ref, _tmp, _tmp$1, i, j, s, $s, $r;
 35668  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _i = $f._i; _r$9 = $f._r$9; _ref = $f._ref; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; i = $f.i; j = $f.j; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 35669  		s = this;
 35670  		_ref = s;
 35671  		_i = 0;
 35672  		/* while (true) { */ case 1:
 35673  			/* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; }
 35674  			i = _i;
 35675  			_r$9 = rand.Intn(i + 1 >> 0); /* */ $s = 3; case 3: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 35676  			j = _r$9;
 35677  			_tmp = ((j < 0 || j >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + j]);
 35678  			_tmp$1 = ((i < 0 || i >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + i]);
 35679  			((i < 0 || i >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + i] = _tmp);
 35680  			((j < 0 || j >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + j] = _tmp$1);
 35681  			_i++;
 35682  		/* } */ $s = 1; continue; case 2:
 35683  		$r = sort.Sort(s); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 35684  		$s = -1; return;
 35685  		/* */ } return; } if ($f === undefined) { $f = { $blk: byPref.prototype.sort }; } $f._i = _i; $f._r$9 = _r$9; $f._ref = _ref; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f.i = i; $f.j = j; $f.s = s; $f.$s = $s; $f.$r = $r; return $f;
 35686  	};
 35687  	$ptrType(byPref).prototype.sort = function() { return this.$get().sort(); };
 35688  	dnsPacketConn.ptr.prototype.dnsRoundTrip = function(query) {
 35689  		var _r$10, _r$11, _r$12, _r$9, _tuple, _tuple$1, _tuple$2, b, c, err, err$1, n, ok, query, resp, $s, $r;
 35690  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$10 = $f._r$10; _r$11 = $f._r$11; _r$12 = $f._r$12; _r$9 = $f._r$9; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; b = $f.b; c = $f.c; err = $f.err; err$1 = $f.err$1; n = $f.n; ok = $f.ok; query = $f.query; resp = $f.resp; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 35691  		c = this;
 35692  		_r$9 = query.Pack(); /* */ $s = 1; case 1: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 35693  		_tuple = _r$9;
 35694  		b = _tuple[0];
 35695  		ok = _tuple[1];
 35696  		if (!ok) {
 35697  			$s = -1; return [ptrType$14.nil, errors.New("cannot marshal DNS message")];
 35698  		}
 35699  		_r$10 = c.Conn.Write(b); /* */ $s = 2; case 2: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
 35700  		_tuple$1 = _r$10;
 35701  		err = _tuple$1[1];
 35702  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 35703  			$s = -1; return [ptrType$14.nil, err];
 35704  		}
 35705  		b = $makeSlice(sliceType$1, 512);
 35706  		/* while (true) { */ case 3:
 35707  			_r$11 = c.Conn.Read(b); /* */ $s = 5; case 5: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; }
 35708  			_tuple$2 = _r$11;
 35709  			n = _tuple$2[0];
 35710  			err$1 = _tuple$2[1];
 35711  			if (!($interfaceIsEqual(err$1, $ifaceNil))) {
 35712  				$s = -1; return [ptrType$14.nil, err$1];
 35713  			}
 35714  			resp = new dnsMsg.ptr(new dnsMsgHdr.ptr(0, false, 0, false, false, false, false, 0), sliceType$7.nil, sliceType$6.nil, sliceType$6.nil, sliceType$6.nil);
 35715  			_r$12 = resp.Unpack($subslice(b, 0, n)); /* */ $s = 8; case 8: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; }
 35716  			/* */ if (!_r$12 || !resp.IsResponseTo(query)) { $s = 6; continue; }
 35717  			/* */ $s = 7; continue;
 35718  			/* if (!_r$12 || !resp.IsResponseTo(query)) { */ case 6:
 35719  				/* continue; */ $s = 3; continue;
 35720  			/* } */ case 7:
 35721  			$s = -1; return [resp, $ifaceNil];
 35722  		/* } */ $s = 3; continue; case 4:
 35723  		$s = -1; return [ptrType$14.nil, $ifaceNil];
 35724  		/* */ } return; } if ($f === undefined) { $f = { $blk: dnsPacketConn.ptr.prototype.dnsRoundTrip }; } $f._r$10 = _r$10; $f._r$11 = _r$11; $f._r$12 = _r$12; $f._r$9 = _r$9; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f.b = b; $f.c = c; $f.err = err; $f.err$1 = err$1; $f.n = n; $f.ok = ok; $f.query = query; $f.resp = resp; $f.$s = $s; $f.$r = $r; return $f;
 35725  	};
 35726  	dnsPacketConn.prototype.dnsRoundTrip = function(query) { return this.$val.dnsRoundTrip(query); };
 35727  	dnsStreamConn.ptr.prototype.dnsRoundTrip = function(query) {
 35728  		var _r$10, _r$11, _r$12, _r$13, _r$9, _tuple, _tuple$1, _tuple$2, _tuple$3, b, c, err, err$1, err$2, l, n, ok, query, resp, $s, $r;
 35729  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$10 = $f._r$10; _r$11 = $f._r$11; _r$12 = $f._r$12; _r$13 = $f._r$13; _r$9 = $f._r$9; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; b = $f.b; c = $f.c; err = $f.err; err$1 = $f.err$1; err$2 = $f.err$2; l = $f.l; n = $f.n; ok = $f.ok; query = $f.query; resp = $f.resp; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 35730  		c = this;
 35731  		_r$9 = query.Pack(); /* */ $s = 1; case 1: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 35732  		_tuple = _r$9;
 35733  		b = _tuple[0];
 35734  		ok = _tuple[1];
 35735  		if (!ok) {
 35736  			$s = -1; return [ptrType$14.nil, errors.New("cannot marshal DNS message")];
 35737  		}
 35738  		l = b.$length;
 35739  		b = $appendSlice(new sliceType$1([(((l >> 8 >> 0) << 24 >>> 24)), ((l << 24 >>> 24))]), b);
 35740  		_r$10 = c.Conn.Write(b); /* */ $s = 2; case 2: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
 35741  		_tuple$1 = _r$10;
 35742  		err = _tuple$1[1];
 35743  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 35744  			$s = -1; return [ptrType$14.nil, err];
 35745  		}
 35746  		b = $makeSlice(sliceType$1, 1280);
 35747  		_r$11 = io.ReadFull(c, $subslice(b, 0, 2)); /* */ $s = 3; case 3: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; }
 35748  		_tuple$2 = _r$11;
 35749  		err$1 = _tuple$2[1];
 35750  		if (!($interfaceIsEqual(err$1, $ifaceNil))) {
 35751  			$s = -1; return [ptrType$14.nil, err$1];
 35752  		}
 35753  		l = ((((0 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 0]) >> 0)) << 8 >> 0) | (((1 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 1]) >> 0));
 35754  		if (l > b.$length) {
 35755  			b = $makeSlice(sliceType$1, l);
 35756  		}
 35757  		_r$12 = io.ReadFull(c, $subslice(b, 0, l)); /* */ $s = 4; case 4: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; }
 35758  		_tuple$3 = _r$12;
 35759  		n = _tuple$3[0];
 35760  		err$2 = _tuple$3[1];
 35761  		if (!($interfaceIsEqual(err$2, $ifaceNil))) {
 35762  			$s = -1; return [ptrType$14.nil, err$2];
 35763  		}
 35764  		resp = new dnsMsg.ptr(new dnsMsgHdr.ptr(0, false, 0, false, false, false, false, 0), sliceType$7.nil, sliceType$6.nil, sliceType$6.nil, sliceType$6.nil);
 35765  		_r$13 = resp.Unpack($subslice(b, 0, n)); /* */ $s = 7; case 7: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; }
 35766  		/* */ if (!_r$13) { $s = 5; continue; }
 35767  		/* */ $s = 6; continue;
 35768  		/* if (!_r$13) { */ case 5:
 35769  			$s = -1; return [ptrType$14.nil, errors.New("cannot unmarshal DNS message")];
 35770  		/* } */ case 6:
 35771  		if (!resp.IsResponseTo(query)) {
 35772  			$s = -1; return [ptrType$14.nil, errors.New("invalid DNS response")];
 35773  		}
 35774  		$s = -1; return [resp, $ifaceNil];
 35775  		/* */ } return; } if ($f === undefined) { $f = { $blk: dnsStreamConn.ptr.prototype.dnsRoundTrip }; } $f._r$10 = _r$10; $f._r$11 = _r$11; $f._r$12 = _r$12; $f._r$13 = _r$13; $f._r$9 = _r$9; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f.b = b; $f.c = c; $f.err = err; $f.err$1 = err$1; $f.err$2 = err$2; $f.l = l; $f.n = n; $f.ok = ok; $f.query = query; $f.resp = resp; $f.$s = $s; $f.$r = $r; return $f;
 35776  	};
 35777  	dnsStreamConn.prototype.dnsRoundTrip = function(query) { return this.$val.dnsRoundTrip(query); };
 35778  	Resolver.ptr.prototype.exchange = function(ctx, server, name, qtype, timeout$1) {
 35779  		var _i, _r$10, _r$11, _r$12, _r$13, _r$14, _r$9, _ref, _tuple, _tuple$1, _tuple$2, _tuple$3, c, cancel, ctx, ctx$1, d, err, in$1, name, network, ok, out, qtype, r, server, timeout$1, $s, $deferred, $r;
 35780  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _i = $f._i; _r$10 = $f._r$10; _r$11 = $f._r$11; _r$12 = $f._r$12; _r$13 = $f._r$13; _r$14 = $f._r$14; _r$9 = $f._r$9; _ref = $f._ref; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; c = $f.c; cancel = $f.cancel; ctx = $f.ctx; ctx$1 = $f.ctx$1; d = $f.d; err = $f.err; in$1 = $f.in$1; name = $f.name; network = $f.network; ok = $f.ok; out = $f.out; qtype = $f.qtype; r = $f.r; server = $f.server; timeout$1 = $f.timeout$1; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
 35781  		out = [out];
 35782  		r = this;
 35783  		out[0] = new dnsMsg.ptr(new dnsMsgHdr.ptr(0, false, 0, false, false, true, false, 0), new sliceType$7([new dnsQuestion.ptr(name, qtype, 1)]), sliceType$6.nil, sliceType$6.nil, sliceType$6.nil);
 35784  		_ref = new sliceType(["udp", "tcp"]);
 35785  		_i = 0;
 35786  		/* while (true) { */ case 1:
 35787  			/* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; }
 35788  			network = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
 35789  			_r$9 = context.WithDeadline(ctx, $clone($clone(time.Now(), time.Time).Add(timeout$1), time.Time)); /* */ $s = 3; case 3: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 35790  			_tuple = _r$9;
 35791  			ctx$1 = _tuple[0];
 35792  			cancel = _tuple[1];
 35793  			$deferred.push([cancel, []]);
 35794  			_r$10 = r.dial(ctx$1, network, server); /* */ $s = 4; case 4: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
 35795  			_tuple$1 = _r$10;
 35796  			c = _tuple$1[0];
 35797  			err = _tuple$1[1];
 35798  			if (!($interfaceIsEqual(err, $ifaceNil))) {
 35799  				$s = -1; return [ptrType$14.nil, err];
 35800  			}
 35801  			$deferred.push([$methodVal(c, "Close"), []]);
 35802  			_r$11 = ctx$1.Deadline(); /* */ $s = 5; case 5: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; }
 35803  			_tuple$2 = _r$11;
 35804  			d = $clone(_tuple$2[0], time.Time);
 35805  			ok = _tuple$2[1];
 35806  			/* */ if (ok && !$clone(d, time.Time).IsZero()) { $s = 6; continue; }
 35807  			/* */ $s = 7; continue;
 35808  			/* if (ok && !$clone(d, time.Time).IsZero()) { */ case 6:
 35809  				_r$12 = c.SetDeadline($clone(d, time.Time)); /* */ $s = 8; case 8: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; }
 35810  				_r$12;
 35811  			/* } */ case 7:
 35812  			_r$13 = rand.Int(); /* */ $s = 9; case 9: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; }
 35813  			out[0].dnsMsgHdr.id = (((_r$13 << 16 >>> 16)) ^ (($clone(time.Now(), time.Time).UnixNano().$low << 16 >>> 16))) << 16 >>> 16;
 35814  			_r$14 = c.dnsRoundTrip(out[0]); /* */ $s = 10; case 10: if($c) { $c = false; _r$14 = _r$14.$blk(); } if (_r$14 && _r$14.$blk !== undefined) { break s; }
 35815  			_tuple$3 = _r$14;
 35816  			in$1 = _tuple$3[0];
 35817  			err = _tuple$3[1];
 35818  			if (!($interfaceIsEqual(err, $ifaceNil))) {
 35819  				$s = -1; return [ptrType$14.nil, mapErr(err)];
 35820  			}
 35821  			if (in$1.dnsMsgHdr.truncated) {
 35822  				_i++;
 35823  				/* continue; */ $s = 1; continue;
 35824  			}
 35825  			$s = -1; return [in$1, $ifaceNil];
 35826  		/* } */ $s = 1; continue; case 2:
 35827  		$s = -1; return [ptrType$14.nil, errors.New("no answer from DNS server")];
 35828  		/* */ } return; } } catch(err) { $err = err; $s = -1; return [ptrType$14.nil, $ifaceNil]; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: Resolver.ptr.prototype.exchange }; } $f._i = _i; $f._r$10 = _r$10; $f._r$11 = _r$11; $f._r$12 = _r$12; $f._r$13 = _r$13; $f._r$14 = _r$14; $f._r$9 = _r$9; $f._ref = _ref; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f.c = c; $f.cancel = cancel; $f.ctx = ctx; $f.ctx$1 = ctx$1; $f.d = d; $f.err = err; $f.in$1 = in$1; $f.name = name; $f.network = network; $f.ok = ok; $f.out = out; $f.qtype = qtype; $f.r = r; $f.server = server; $f.timeout$1 = timeout$1; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
 35829  	};
 35830  	Resolver.prototype.exchange = function(ctx, server, name, qtype, timeout$1) { return this.$val.exchange(ctx, server, name, qtype, timeout$1); };
 35831  	Resolver.ptr.prototype.tryOneName = function(ctx, cfg, name, qtype) {
 35832  		var _r$10, _r$11, _r$12, _r$13, _r$9, _tuple, _tuple$1, _tuple$2, _tuple$3, _v, cfg, cname, ctx, err, i, j, lastErr, msg, name, nerr, ok, ok$1, qtype, r, rrs, sLen, server, serverOffset, x, x$1, $s, $r;
 35833  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$10 = $f._r$10; _r$11 = $f._r$11; _r$12 = $f._r$12; _r$13 = $f._r$13; _r$9 = $f._r$9; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; _v = $f._v; cfg = $f.cfg; cname = $f.cname; ctx = $f.ctx; err = $f.err; i = $f.i; j = $f.j; lastErr = $f.lastErr; msg = $f.msg; name = $f.name; nerr = $f.nerr; ok = $f.ok; ok$1 = $f.ok$1; qtype = $f.qtype; r = $f.r; rrs = $f.rrs; sLen = $f.sLen; server = $f.server; serverOffset = $f.serverOffset; x = $f.x; x$1 = $f.x$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 35834  		r = this;
 35835  		lastErr = $ifaceNil;
 35836  		serverOffset = cfg.serverOffset();
 35837  		sLen = ((cfg.servers.$length >>> 0));
 35838  		i = 0;
 35839  		/* while (true) { */ case 1:
 35840  			/* if (!(i < cfg.attempts)) { break; } */ if(!(i < cfg.attempts)) { $s = 2; continue; }
 35841  			j = 0;
 35842  			/* while (true) { */ case 3:
 35843  				/* if (!(j < sLen)) { break; } */ if(!(j < sLen)) { $s = 4; continue; }
 35844  				server = (x = cfg.servers, x$1 = (_r$9 = ((serverOffset + j >>> 0)) % sLen, _r$9 === _r$9 ? _r$9 : $throwRuntimeError("integer divide by zero")), ((x$1 < 0 || x$1 >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + x$1]));
 35845  				_r$10 = r.exchange(ctx, server, name, qtype, cfg.timeout); /* */ $s = 5; case 5: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
 35846  				_tuple = _r$10;
 35847  				msg = _tuple[0];
 35848  				err = _tuple[1];
 35849  				/* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 6; continue; }
 35850  				/* */ $s = 7; continue;
 35851  				/* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 6:
 35852  					_r$11 = err.Error(); /* */ $s = 8; case 8: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; }
 35853  					lastErr = new DNSError.ptr(_r$11, name, server, false, false);
 35854  					_tuple$1 = $assertType(err, Error, true);
 35855  					nerr = _tuple$1[0];
 35856  					ok = _tuple$1[1];
 35857  					if (!(ok)) { _v = false; $s = 11; continue s; }
 35858  					_r$12 = nerr.Timeout(); /* */ $s = 12; case 12: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; }
 35859  					_v = _r$12; case 11:
 35860  					/* */ if (_v) { $s = 9; continue; }
 35861  					/* */ $s = 10; continue;
 35862  					/* if (_v) { */ case 9:
 35863  						$assertType(lastErr, ptrType$15).IsTimeout = true;
 35864  					/* } */ case 10:
 35865  					_tuple$2 = $assertType(err, ptrType$16, true);
 35866  					ok$1 = _tuple$2[1];
 35867  					if (ok$1) {
 35868  						$assertType(lastErr, ptrType$15).IsTemporary = true;
 35869  					}
 35870  					j = j + (1) >>> 0;
 35871  					/* continue; */ $s = 3; continue;
 35872  				/* } */ case 7:
 35873  				/* */ if ((msg.dnsMsgHdr.rcode === 0) && !msg.dnsMsgHdr.authoritative && !msg.dnsMsgHdr.recursion_available && (msg.answer.$length === 0) && (msg.extra.$length === 0)) { $s = 13; continue; }
 35874  				/* */ $s = 14; continue;
 35875  				/* if ((msg.dnsMsgHdr.rcode === 0) && !msg.dnsMsgHdr.authoritative && !msg.dnsMsgHdr.recursion_available && (msg.answer.$length === 0) && (msg.extra.$length === 0)) { */ case 13:
 35876  					lastErr = new DNSError.ptr("lame referral", name, server, false, false);
 35877  					j = j + (1) >>> 0;
 35878  					/* continue; */ $s = 3; continue;
 35879  				/* } */ case 14:
 35880  				_r$13 = answer(name, server, msg, qtype); /* */ $s = 15; case 15: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; }
 35881  				_tuple$3 = _r$13;
 35882  				cname = _tuple$3[0];
 35883  				rrs = _tuple$3[1];
 35884  				err = _tuple$3[2];
 35885  				if ($interfaceIsEqual(err, $ifaceNil) || (msg.dnsMsgHdr.rcode === 0) || (msg.dnsMsgHdr.rcode === 3)) {
 35886  					$s = -1; return [cname, rrs, err];
 35887  				}
 35888  				lastErr = err;
 35889  				j = j + (1) >>> 0;
 35890  			/* } */ $s = 3; continue; case 4:
 35891  			i = i + (1) >> 0;
 35892  		/* } */ $s = 1; continue; case 2:
 35893  		$s = -1; return ["", sliceType$6.nil, lastErr];
 35894  		/* */ } return; } if ($f === undefined) { $f = { $blk: Resolver.ptr.prototype.tryOneName }; } $f._r$10 = _r$10; $f._r$11 = _r$11; $f._r$12 = _r$12; $f._r$13 = _r$13; $f._r$9 = _r$9; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f._v = _v; $f.cfg = cfg; $f.cname = cname; $f.ctx = ctx; $f.err = err; $f.i = i; $f.j = j; $f.lastErr = lastErr; $f.msg = msg; $f.name = name; $f.nerr = nerr; $f.ok = ok; $f.ok$1 = ok$1; $f.qtype = qtype; $f.r = r; $f.rrs = rrs; $f.sLen = sLen; $f.server = server; $f.serverOffset = serverOffset; $f.x = x; $f.x$1 = x$1; $f.$s = $s; $f.$r = $r; return $f;
 35895  	};
 35896  	Resolver.prototype.tryOneName = function(ctx, cfg, name, qtype) { return this.$val.tryOneName(ctx, cfg, name, qtype); };
 35897  	addrRecordList = function(rrs) {
 35898  		var _i, _ref, _ref$1, addrs, ip, rr, rr$1, rr$2, rrs;
 35899  		addrs = $makeSlice(sliceType$3, 0, 4);
 35900  		_ref = rrs;
 35901  		_i = 0;
 35902  		while (true) {
 35903  			if (!(_i < _ref.$length)) { break; }
 35904  			rr = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
 35905  			_ref$1 = rr;
 35906  			if ($assertType(_ref$1, ptrType$17, true)[1]) {
 35907  				rr$1 = _ref$1.$val;
 35908  				addrs = $append(addrs, new IPAddr.ptr(IPv4((((rr$1.A >>> 24 >>> 0) << 24 >>> 24)), (((rr$1.A >>> 16 >>> 0) << 24 >>> 24)), (((rr$1.A >>> 8 >>> 0) << 24 >>> 24)), ((rr$1.A << 24 >>> 24))), ""));
 35909  			} else if ($assertType(_ref$1, ptrType$18, true)[1]) {
 35910  				rr$2 = _ref$1.$val;
 35911  				ip = $makeSlice(IP, 16);
 35912  				$copySlice(ip, new sliceType$1(rr$2.AAAA));
 35913  				addrs = $append(addrs, new IPAddr.ptr(ip, ""));
 35914  			}
 35915  			_i++;
 35916  		}
 35917  		return addrs;
 35918  	};
 35919  	resolverConfig.ptr.prototype.init = function() {
 35920  		var _r$10, _r$9, conf$1, $s, $r;
 35921  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$10 = $f._r$10; _r$9 = $f._r$9; conf$1 = $f.conf$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 35922  		conf$1 = this;
 35923  		_r$9 = systemConf(); /* */ $s = 1; case 1: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 35924  		conf$1.dnsConfig = _r$9.resolv;
 35925  		/* */ if (conf$1.dnsConfig === ptrType$1.nil) { $s = 2; continue; }
 35926  		/* */ $s = 3; continue;
 35927  		/* if (conf$1.dnsConfig === ptrType$1.nil) { */ case 2:
 35928  			_r$10 = dnsReadConfig("/etc/resolv.conf"); /* */ $s = 4; case 4: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
 35929  			conf$1.dnsConfig = _r$10;
 35930  		/* } */ case 3:
 35931  		time.Time.copy(conf$1.lastChecked, time.Now());
 35932  		conf$1.ch = new $Chan(structType$1, 1);
 35933  		$s = -1; return;
 35934  		/* */ } return; } if ($f === undefined) { $f = { $blk: resolverConfig.ptr.prototype.init }; } $f._r$10 = _r$10; $f._r$9 = _r$9; $f.conf$1 = conf$1; $f.$s = $s; $f.$r = $r; return $f;
 35935  	};
 35936  	resolverConfig.prototype.init = function() { return this.$val.init(); };
 35937  	resolverConfig.ptr.prototype.tryUpdate = function(name) {
 35938  		var _r$10, _r$11, _r$9, _tuple, conf$1, dnsConf, err, fi, mtime, name, now, $s, $deferred, $r;
 35939  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$10 = $f._r$10; _r$11 = $f._r$11; _r$9 = $f._r$9; _tuple = $f._tuple; conf$1 = $f.conf$1; dnsConf = $f.dnsConf; err = $f.err; fi = $f.fi; mtime = $f.mtime; name = $f.name; now = $f.now; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
 35940  		conf$1 = this;
 35941  		$r = conf$1.initOnce.Do($methodVal(conf$1, "init")); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 35942  		if (!conf$1.tryAcquireSema()) {
 35943  			$s = -1; return;
 35944  		}
 35945  		$deferred.push([$methodVal(conf$1, "releaseSema"), []]);
 35946  		now = $clone(time.Now(), time.Time);
 35947  		if ($clone(conf$1.lastChecked, time.Time).After($clone($clone(now, time.Time).Add(new time.Duration(-2, 3589934592)), time.Time))) {
 35948  			$s = -1; return;
 35949  		}
 35950  		time.Time.copy(conf$1.lastChecked, now);
 35951  		mtime = new time.Time.ptr(new $Uint64(0, 0), new $Int64(0, 0), ptrType.nil);
 35952  		_r$9 = os.Stat(name); /* */ $s = 2; case 2: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 35953  		_tuple = _r$9;
 35954  		fi = _tuple[0];
 35955  		err = _tuple[1];
 35956  		/* */ if ($interfaceIsEqual(err, $ifaceNil)) { $s = 3; continue; }
 35957  		/* */ $s = 4; continue;
 35958  		/* if ($interfaceIsEqual(err, $ifaceNil)) { */ case 3:
 35959  			_r$10 = fi.ModTime(); /* */ $s = 5; case 5: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
 35960  			time.Time.copy(mtime, _r$10);
 35961  		/* } */ case 4:
 35962  		if ($clone(mtime, time.Time).Equal($clone(conf$1.dnsConfig.mtime, time.Time))) {
 35963  			$s = -1; return;
 35964  		}
 35965  		_r$11 = dnsReadConfig(name); /* */ $s = 6; case 6: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; }
 35966  		dnsConf = _r$11;
 35967  		$r = conf$1.mu.Lock(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 35968  		conf$1.dnsConfig = dnsConf;
 35969  		$r = conf$1.mu.Unlock(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 35970  		$s = -1; return;
 35971  		/* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: resolverConfig.ptr.prototype.tryUpdate }; } $f._r$10 = _r$10; $f._r$11 = _r$11; $f._r$9 = _r$9; $f._tuple = _tuple; $f.conf$1 = conf$1; $f.dnsConf = dnsConf; $f.err = err; $f.fi = fi; $f.mtime = mtime; $f.name = name; $f.now = now; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
 35972  	};
 35973  	resolverConfig.prototype.tryUpdate = function(name) { return this.$val.tryUpdate(name); };
 35974  	resolverConfig.ptr.prototype.tryAcquireSema = function() {
 35975  		var _selection, conf$1, $r;
 35976  		/* */ var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _selection = $f._selection; conf$1 = $f.conf$1; $r = $f.$r; }
 35977  		conf$1 = this;
 35978  		_selection = $select([[conf$1.ch, new structType$1.ptr()], []]);
 35979  		if (_selection[0] === 0) {
 35980  			return true;
 35981  		} else if (_selection[0] === 1) {
 35982  			return false;
 35983  		}
 35984  		/* */ if ($f === undefined) { $f = { $blk: resolverConfig.ptr.prototype.tryAcquireSema }; } $f._selection = _selection; $f.conf$1 = conf$1; $f.$r = $r; return $f;
 35985  	};
 35986  	resolverConfig.prototype.tryAcquireSema = function() { return this.$val.tryAcquireSema(); };
 35987  	resolverConfig.ptr.prototype.releaseSema = function() {
 35988  		var _r$9, conf$1, $s, $r;
 35989  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$9 = $f._r$9; conf$1 = $f.conf$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 35990  		conf$1 = this;
 35991  		_r$9 = $recv(conf$1.ch); /* */ $s = 1; case 1: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 35992  		_r$9[0];
 35993  		$s = -1; return;
 35994  		/* */ } return; } if ($f === undefined) { $f = { $blk: resolverConfig.ptr.prototype.releaseSema }; } $f._r$9 = _r$9; $f.conf$1 = conf$1; $f.$s = $s; $f.$r = $r; return $f;
 35995  	};
 35996  	resolverConfig.prototype.releaseSema = function() { return this.$val.releaseSema(); };
 35997  	Resolver.ptr.prototype.lookup = function(ctx, name, qtype) {
 35998  		var _i, _r$10, _r$11, _r$9, _ref, _tmp, _tmp$1, _tmp$2, _tuple, _tuple$1, _tuple$2, _v, cname, conf$1, ctx, err, err$1, fqdn, name, nerr, ok, ok$1, qtype, r, rrs, $s, $r;
 35999  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _i = $f._i; _r$10 = $f._r$10; _r$11 = $f._r$11; _r$9 = $f._r$9; _ref = $f._ref; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _v = $f._v; cname = $f.cname; conf$1 = $f.conf$1; ctx = $f.ctx; err = $f.err; err$1 = $f.err$1; fqdn = $f.fqdn; name = $f.name; nerr = $f.nerr; ok = $f.ok; ok$1 = $f.ok$1; qtype = $f.qtype; r = $f.r; rrs = $f.rrs; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 36000  		cname = "";
 36001  		rrs = sliceType$6.nil;
 36002  		err = $ifaceNil;
 36003  		r = this;
 36004  		/* */ if (!isDomainName(name)) { $s = 1; continue; }
 36005  		/* */ $s = 2; continue;
 36006  		/* if (!isDomainName(name)) { */ case 1:
 36007  			_tmp = "";
 36008  			_tmp$1 = sliceType$6.nil;
 36009  			_r$9 = errNoSuchHost.Error(); /* */ $s = 3; case 3: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 36010  			_tmp$2 = new DNSError.ptr(_r$9, name, "", false, false);
 36011  			cname = _tmp;
 36012  			rrs = _tmp$1;
 36013  			err = _tmp$2;
 36014  			$s = -1; return [cname, rrs, err];
 36015  		/* } */ case 2:
 36016  		$r = resolvConf.tryUpdate("/etc/resolv.conf"); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 36017  		$r = resolvConf.mu.RLock(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 36018  		conf$1 = resolvConf.dnsConfig;
 36019  		$r = resolvConf.mu.RUnlock(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 36020  		_ref = conf$1.nameList(name);
 36021  		_i = 0;
 36022  		/* while (true) { */ case 7:
 36023  			/* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 8; continue; }
 36024  			fqdn = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
 36025  			_r$10 = r.tryOneName(ctx, conf$1, fqdn, qtype); /* */ $s = 9; case 9: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
 36026  			_tuple = _r$10;
 36027  			cname = _tuple[0];
 36028  			rrs = _tuple[1];
 36029  			err = _tuple[2];
 36030  			if ($interfaceIsEqual(err, $ifaceNil)) {
 36031  				/* break; */ $s = 8; continue;
 36032  			}
 36033  			_tuple$1 = $assertType(err, Error, true);
 36034  			nerr = _tuple$1[0];
 36035  			ok = _tuple$1[1];
 36036  			if (!(ok)) { _v = false; $s = 12; continue s; }
 36037  			_r$11 = nerr.Temporary(); /* */ $s = 13; case 13: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; }
 36038  			_v = _r$11; case 12:
 36039  			/* */ if (_v && r.StrictErrors) { $s = 10; continue; }
 36040  			/* */ $s = 11; continue;
 36041  			/* if (_v && r.StrictErrors) { */ case 10:
 36042  				/* break; */ $s = 8; continue;
 36043  			/* } */ case 11:
 36044  			_i++;
 36045  		/* } */ $s = 7; continue; case 8:
 36046  		_tuple$2 = $assertType(err, ptrType$15, true);
 36047  		err$1 = _tuple$2[0];
 36048  		ok$1 = _tuple$2[1];
 36049  		if (ok$1) {
 36050  			err$1.Name = name;
 36051  		}
 36052  		$s = -1; return [cname, rrs, err];
 36053  		/* */ } return; } if ($f === undefined) { $f = { $blk: Resolver.ptr.prototype.lookup }; } $f._i = _i; $f._r$10 = _r$10; $f._r$11 = _r$11; $f._r$9 = _r$9; $f._ref = _ref; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._v = _v; $f.cname = cname; $f.conf$1 = conf$1; $f.ctx = ctx; $f.err = err; $f.err$1 = err$1; $f.fqdn = fqdn; $f.name = name; $f.nerr = nerr; $f.ok = ok; $f.ok$1 = ok$1; $f.qtype = qtype; $f.r = r; $f.rrs = rrs; $f.$s = $s; $f.$r = $r; return $f;
 36054  	};
 36055  	Resolver.prototype.lookup = function(ctx, name, qtype) { return this.$val.lookup(ctx, name, qtype); };
 36056  	avoidDNS = function(name) {
 36057  		var name;
 36058  		if (name === "") {
 36059  			return true;
 36060  		}
 36061  		if (name.charCodeAt((name.length - 1 >> 0)) === 46) {
 36062  			name = $substring(name, 0, (name.length - 1 >> 0));
 36063  		}
 36064  		return stringsHasSuffixFold(name, ".onion");
 36065  	};
 36066  	dnsConfig.ptr.prototype.nameList = function(name) {
 36067  		var _i, _ref, conf$1, hasNdots, l, name, names, rooted, suffix;
 36068  		conf$1 = this;
 36069  		if (avoidDNS(name)) {
 36070  			return sliceType.nil;
 36071  		}
 36072  		l = name.length;
 36073  		rooted = l > 0 && (name.charCodeAt((l - 1 >> 0)) === 46);
 36074  		if (l > 254 || (l === 254) && rooted) {
 36075  			return sliceType.nil;
 36076  		}
 36077  		if (rooted) {
 36078  			return new sliceType([name]);
 36079  		}
 36080  		hasNdots = count(name, 46) >= conf$1.ndots;
 36081  		name = name + (".");
 36082  		l = l + (1) >> 0;
 36083  		names = $makeSlice(sliceType, 0, (1 + conf$1.search.$length >> 0));
 36084  		if (hasNdots) {
 36085  			names = $append(names, name);
 36086  		}
 36087  		_ref = conf$1.search;
 36088  		_i = 0;
 36089  		while (true) {
 36090  			if (!(_i < _ref.$length)) { break; }
 36091  			suffix = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
 36092  			if ((l + suffix.length >> 0) <= 254) {
 36093  				names = $append(names, name + suffix);
 36094  			}
 36095  			_i++;
 36096  		}
 36097  		if (!hasNdots) {
 36098  			names = $append(names, name);
 36099  		}
 36100  		return names;
 36101  	};
 36102  	dnsConfig.prototype.nameList = function(name) { return this.$val.nameList(name); };
 36103  	hostLookupOrder.prototype.String = function() {
 36104  		var _entry, _tuple, o, ok, s;
 36105  		o = this.$val;
 36106  		_tuple = (_entry = lookupOrderName[hostLookupOrder.keyFor(o)], _entry !== undefined ? [_entry.v, true] : ["", false]);
 36107  		s = _tuple[0];
 36108  		ok = _tuple[1];
 36109  		if (ok) {
 36110  			return s;
 36111  		}
 36112  		return "hostLookupOrder=" + itoa(((o >> 0))) + "??";
 36113  	};
 36114  	$ptrType(hostLookupOrder).prototype.String = function() { return new hostLookupOrder(this.$get()).String(); };
 36115  	Resolver.ptr.prototype.goLookupHostOrder = function(ctx, name, order) {
 36116  		var _i, _r$10, _r$9, _ref, _tuple, addrs, ctx, err, ip, ips, name, order, r, $s, $r;
 36117  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _i = $f._i; _r$10 = $f._r$10; _r$9 = $f._r$9; _ref = $f._ref; _tuple = $f._tuple; addrs = $f.addrs; ctx = $f.ctx; err = $f.err; ip = $f.ip; ips = $f.ips; name = $f.name; order = $f.order; r = $f.r; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 36118  		addrs = sliceType.nil;
 36119  		err = $ifaceNil;
 36120  		r = this;
 36121  		/* */ if ((order === 1) || (order === 3)) { $s = 1; continue; }
 36122  		/* */ $s = 2; continue;
 36123  		/* if ((order === 1) || (order === 3)) { */ case 1:
 36124  			_r$9 = lookupStaticHost(name); /* */ $s = 3; case 3: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 36125  			addrs = _r$9;
 36126  			if (addrs.$length > 0 || (order === 3)) {
 36127  				$s = -1; return [addrs, err];
 36128  			}
 36129  		/* } */ case 2:
 36130  		_r$10 = r.goLookupIPCNAMEOrder(ctx, name, order); /* */ $s = 4; case 4: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
 36131  		_tuple = _r$10;
 36132  		ips = _tuple[0];
 36133  		err = _tuple[2];
 36134  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 36135  			$s = -1; return [addrs, err];
 36136  		}
 36137  		addrs = $makeSlice(sliceType, 0, ips.$length);
 36138  		_ref = ips;
 36139  		_i = 0;
 36140  		while (true) {
 36141  			if (!(_i < _ref.$length)) { break; }
 36142  			ip = $clone(((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]), IPAddr);
 36143  			addrs = $append(addrs, ip.String());
 36144  			_i++;
 36145  		}
 36146  		$s = -1; return [addrs, err];
 36147  		/* */ } return; } if ($f === undefined) { $f = { $blk: Resolver.ptr.prototype.goLookupHostOrder }; } $f._i = _i; $f._r$10 = _r$10; $f._r$9 = _r$9; $f._ref = _ref; $f._tuple = _tuple; $f.addrs = addrs; $f.ctx = ctx; $f.err = err; $f.ip = ip; $f.ips = ips; $f.name = name; $f.order = order; $f.r = r; $f.$s = $s; $f.$r = $r; return $f;
 36148  	};
 36149  	Resolver.prototype.goLookupHostOrder = function(ctx, name, order) { return this.$val.goLookupHostOrder(ctx, name, order); };
 36150  	goLookupIPFiles = function(name) {
 36151  		var _i, _r$9, _ref, _tuple, addr, addrs, haddr, haddr$1, ip, name, zone, $s, $r;
 36152  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _i = $f._i; _r$9 = $f._r$9; _ref = $f._ref; _tuple = $f._tuple; addr = $f.addr; addrs = $f.addrs; haddr = $f.haddr; haddr$1 = $f.haddr$1; ip = $f.ip; name = $f.name; zone = $f.zone; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 36153  		addrs = sliceType$3.nil;
 36154  		_r$9 = lookupStaticHost(name); /* */ $s = 1; case 1: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 36155  		_ref = _r$9;
 36156  		_i = 0;
 36157  		/* while (true) { */ case 2:
 36158  			/* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 3; continue; }
 36159  			haddr = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
 36160  			_tuple = splitHostZone(haddr);
 36161  			haddr$1 = _tuple[0];
 36162  			zone = _tuple[1];
 36163  			ip = ParseIP(haddr$1);
 36164  			if (!(ip === IP.nil)) {
 36165  				addr = new IPAddr.ptr(ip, zone);
 36166  				addrs = $append(addrs, addr);
 36167  			}
 36168  			_i++;
 36169  		/* } */ $s = 2; continue; case 3:
 36170  		$r = sortByRFC6724(addrs); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 36171  		$s = -1; return addrs;
 36172  		/* */ } return; } if ($f === undefined) { $f = { $blk: goLookupIPFiles }; } $f._i = _i; $f._r$9 = _r$9; $f._ref = _ref; $f._tuple = _tuple; $f.addr = addr; $f.addrs = addrs; $f.haddr = haddr; $f.haddr$1 = haddr$1; $f.ip = ip; $f.name = name; $f.zone = zone; $f.$s = $s; $f.$r = $r; return $f;
 36173  	};
 36174  	Resolver.ptr.prototype.goLookupIP = function(ctx, host) {
 36175  		var _r$10, _r$11, _r$9, _tuple, addrs, ctx, err, host, order, r, $s, $r;
 36176  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$10 = $f._r$10; _r$11 = $f._r$11; _r$9 = $f._r$9; _tuple = $f._tuple; addrs = $f.addrs; ctx = $f.ctx; err = $f.err; host = $f.host; order = $f.order; r = $f.r; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 36177  		addrs = sliceType$3.nil;
 36178  		err = $ifaceNil;
 36179  		r = this;
 36180  		_r$9 = systemConf(); /* */ $s = 1; case 1: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 36181  		_r$10 = _r$9.hostLookupOrder(host); /* */ $s = 2; case 2: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
 36182  		order = _r$10;
 36183  		_r$11 = r.goLookupIPCNAMEOrder(ctx, host, order); /* */ $s = 3; case 3: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; }
 36184  		_tuple = _r$11;
 36185  		addrs = _tuple[0];
 36186  		err = _tuple[2];
 36187  		$s = -1; return [addrs, err];
 36188  		/* */ } return; } if ($f === undefined) { $f = { $blk: Resolver.ptr.prototype.goLookupIP }; } $f._r$10 = _r$10; $f._r$11 = _r$11; $f._r$9 = _r$9; $f._tuple = _tuple; $f.addrs = addrs; $f.ctx = ctx; $f.err = err; $f.host = host; $f.order = order; $f.r = r; $f.$s = $s; $f.$r = $r; return $f;
 36189  	};
 36190  	Resolver.prototype.goLookupIP = function(ctx, host) { return this.$val.goLookupIP(ctx, host); };
 36191  	Resolver.ptr.prototype.goLookupIPCNAMEOrder = function(ctx, name, order) {
 36192  		var _i, _i$1, _i$2, _r$10, _r$11, _r$12, _r$13, _r$9, _ref, _ref$1, _ref$2, _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, _tuple$1, _v, addrs, cname, conf$1, ctx, err, fqdn, hitStrictError, lane, lastErr, lastErr$1, name, nerr, ok, ok$1, order, qtype, qtypes, r, racer$1, $s, $r;
 36193  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _i = $f._i; _i$1 = $f._i$1; _i$2 = $f._i$2; _r$10 = $f._r$10; _r$11 = $f._r$11; _r$12 = $f._r$12; _r$13 = $f._r$13; _r$9 = $f._r$9; _ref = $f._ref; _ref$1 = $f._ref$1; _ref$2 = $f._ref$2; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$10 = $f._tmp$10; _tmp$11 = $f._tmp$11; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tmp$4 = $f._tmp$4; _tmp$5 = $f._tmp$5; _tmp$6 = $f._tmp$6; _tmp$7 = $f._tmp$7; _tmp$8 = $f._tmp$8; _tmp$9 = $f._tmp$9; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _v = $f._v; addrs = $f.addrs; cname = $f.cname; conf$1 = $f.conf$1; ctx = $f.ctx; err = $f.err; fqdn = $f.fqdn; hitStrictError = $f.hitStrictError; lane = $f.lane; lastErr = $f.lastErr; lastErr$1 = $f.lastErr$1; name = $f.name; nerr = $f.nerr; ok = $f.ok; ok$1 = $f.ok$1; order = $f.order; qtype = $f.qtype; qtypes = $f.qtypes; r = $f.r; racer$1 = $f.racer$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 36194  		conf$1 = [conf$1];
 36195  		ctx = [ctx];
 36196  		fqdn = [fqdn];
 36197  		lane = [lane];
 36198  		r = [r];
 36199  		addrs = sliceType$3.nil;
 36200  		cname = "";
 36201  		err = $ifaceNil;
 36202  		r[0] = this;
 36203  		/* */ if ((order === 1) || (order === 3)) { $s = 1; continue; }
 36204  		/* */ $s = 2; continue;
 36205  		/* if ((order === 1) || (order === 3)) { */ case 1:
 36206  			_r$9 = goLookupIPFiles(name); /* */ $s = 3; case 3: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 36207  			addrs = _r$9;
 36208  			if (addrs.$length > 0 || (order === 3)) {
 36209  				_tmp = addrs;
 36210  				_tmp$1 = name;
 36211  				_tmp$2 = $ifaceNil;
 36212  				addrs = _tmp;
 36213  				cname = _tmp$1;
 36214  				err = _tmp$2;
 36215  				$s = -1; return [addrs, cname, err];
 36216  			}
 36217  		/* } */ case 2:
 36218  		/* */ if (!isDomainName(name)) { $s = 4; continue; }
 36219  		/* */ $s = 5; continue;
 36220  		/* if (!isDomainName(name)) { */ case 4:
 36221  			_tmp$3 = sliceType$3.nil;
 36222  			_tmp$4 = "";
 36223  			_r$10 = errNoSuchHost.Error(); /* */ $s = 6; case 6: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
 36224  			_tmp$5 = new DNSError.ptr(_r$10, name, "", false, false);
 36225  			addrs = _tmp$3;
 36226  			cname = _tmp$4;
 36227  			err = _tmp$5;
 36228  			$s = -1; return [addrs, cname, err];
 36229  		/* } */ case 5:
 36230  		$r = resolvConf.tryUpdate("/etc/resolv.conf"); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 36231  		$r = resolvConf.mu.RLock(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 36232  		conf$1[0] = resolvConf.dnsConfig;
 36233  		$r = resolvConf.mu.RUnlock(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 36234  		lane[0] = new $Chan(racer, 1);
 36235  		qtypes = $toNativeArray($kindUint16, [1, 28]);
 36236  		lastErr = $ifaceNil;
 36237  		_ref = conf$1[0].nameList(name);
 36238  		_i = 0;
 36239  		/* while (true) { */ case 10:
 36240  			/* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 11; continue; }
 36241  			fqdn[0] = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
 36242  			_ref$1 = qtypes;
 36243  			_i$1 = 0;
 36244  			/* while (true) { */ case 12:
 36245  				/* if (!(_i$1 < 2)) { break; } */ if(!(_i$1 < 2)) { $s = 13; continue; }
 36246  				qtype = ((_i$1 < 0 || _i$1 >= _ref$1.length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1[_i$1]);
 36247  				dnsWaitGroup.Add(1);
 36248  				$go((function(conf$1, ctx, fqdn, lane, r) { return function $b(qtype$1) {
 36249  					var _r$11, _tuple, cname$1, err$1, qtype$1, rrs, $s, $deferred, $r;
 36250  					/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$11 = $f._r$11; _tuple = $f._tuple; cname$1 = $f.cname$1; err$1 = $f.err$1; qtype$1 = $f.qtype$1; rrs = $f.rrs; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
 36251  					$deferred.push([$methodVal(dnsWaitGroup, "Done"), []]);
 36252  					_r$11 = r[0].tryOneName(ctx[0], conf$1[0], fqdn[0], qtype$1); /* */ $s = 1; case 1: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; }
 36253  					_tuple = _r$11;
 36254  					cname$1 = _tuple[0];
 36255  					rrs = _tuple[1];
 36256  					err$1 = _tuple[2];
 36257  					$r = $send(lane[0], $clone(new racer.ptr(cname$1, rrs, err$1), racer)); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 36258  					$s = -1; return;
 36259  					/* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: $b }; } $f._r$11 = _r$11; $f._tuple = _tuple; $f.cname$1 = cname$1; $f.err$1 = err$1; $f.qtype$1 = qtype$1; $f.rrs = rrs; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
 36260  				}; })(conf$1, ctx, fqdn, lane, r), [qtype]);
 36261  				_i$1++;
 36262  			/* } */ $s = 12; continue; case 13:
 36263  			hitStrictError = false;
 36264  			_ref$2 = qtypes;
 36265  			_i$2 = 0;
 36266  			/* while (true) { */ case 14:
 36267  				/* if (!(_i$2 < 2)) { break; } */ if(!(_i$2 < 2)) { $s = 15; continue; }
 36268  				_r$11 = $recv(lane[0]); /* */ $s = 16; case 16: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; }
 36269  				racer$1 = $clone(_r$11[0], racer);
 36270  				/* */ if (!($interfaceIsEqual(racer$1.error, $ifaceNil))) { $s = 17; continue; }
 36271  				/* */ $s = 18; continue;
 36272  				/* if (!($interfaceIsEqual(racer$1.error, $ifaceNil))) { */ case 17:
 36273  					_tuple = $assertType(racer$1.error, Error, true);
 36274  					nerr = _tuple[0];
 36275  					ok = _tuple[1];
 36276  					if (!(ok)) { _v = false; $s = 22; continue s; }
 36277  					_r$12 = nerr.Temporary(); /* */ $s = 23; case 23: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; }
 36278  					_v = _r$12; case 22:
 36279  					/* */ if (_v && r[0].StrictErrors) { $s = 19; continue; }
 36280  					/* */ if ($interfaceIsEqual(lastErr, $ifaceNil) || fqdn[0] === name + ".") { $s = 20; continue; }
 36281  					/* */ $s = 21; continue;
 36282  					/* if (_v && r[0].StrictErrors) { */ case 19:
 36283  						hitStrictError = true;
 36284  						lastErr = racer$1.error;
 36285  						$s = 21; continue;
 36286  					/* } else if ($interfaceIsEqual(lastErr, $ifaceNil) || fqdn[0] === name + ".") { */ case 20:
 36287  						lastErr = racer$1.error;
 36288  					/* } */ case 21:
 36289  					_i$2++;
 36290  					/* continue; */ $s = 14; continue;
 36291  				/* } */ case 18:
 36292  				addrs = $appendSlice(addrs, addrRecordList(racer$1.rrs));
 36293  				if (cname === "") {
 36294  					cname = racer$1.cname;
 36295  				}
 36296  				_i$2++;
 36297  			/* } */ $s = 14; continue; case 15:
 36298  			if (hitStrictError) {
 36299  				addrs = sliceType$3.nil;
 36300  				/* break; */ $s = 11; continue;
 36301  			}
 36302  			if (addrs.$length > 0) {
 36303  				/* break; */ $s = 11; continue;
 36304  			}
 36305  			_i++;
 36306  		/* } */ $s = 10; continue; case 11:
 36307  		_tuple$1 = $assertType(lastErr, ptrType$15, true);
 36308  		lastErr$1 = _tuple$1[0];
 36309  		ok$1 = _tuple$1[1];
 36310  		if (ok$1) {
 36311  			lastErr$1.Name = name;
 36312  		}
 36313  		$r = sortByRFC6724(addrs); /* */ $s = 24; case 24: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 36314  		/* */ if (addrs.$length === 0) { $s = 25; continue; }
 36315  		/* */ $s = 26; continue;
 36316  		/* if (addrs.$length === 0) { */ case 25:
 36317  			/* */ if (order === 2) { $s = 27; continue; }
 36318  			/* */ $s = 28; continue;
 36319  			/* if (order === 2) { */ case 27:
 36320  				_r$13 = goLookupIPFiles(name); /* */ $s = 29; case 29: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; }
 36321  				addrs = _r$13;
 36322  			/* } */ case 28:
 36323  			if ((addrs.$length === 0) && !($interfaceIsEqual(lastErr, $ifaceNil))) {
 36324  				_tmp$6 = sliceType$3.nil;
 36325  				_tmp$7 = "";
 36326  				_tmp$8 = lastErr;
 36327  				addrs = _tmp$6;
 36328  				cname = _tmp$7;
 36329  				err = _tmp$8;
 36330  				$s = -1; return [addrs, cname, err];
 36331  			}
 36332  		/* } */ case 26:
 36333  		_tmp$9 = addrs;
 36334  		_tmp$10 = cname;
 36335  		_tmp$11 = $ifaceNil;
 36336  		addrs = _tmp$9;
 36337  		cname = _tmp$10;
 36338  		err = _tmp$11;
 36339  		$s = -1; return [addrs, cname, err];
 36340  		/* */ } return; } if ($f === undefined) { $f = { $blk: Resolver.ptr.prototype.goLookupIPCNAMEOrder }; } $f._i = _i; $f._i$1 = _i$1; $f._i$2 = _i$2; $f._r$10 = _r$10; $f._r$11 = _r$11; $f._r$12 = _r$12; $f._r$13 = _r$13; $f._r$9 = _r$9; $f._ref = _ref; $f._ref$1 = _ref$1; $f._ref$2 = _ref$2; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$10 = _tmp$10; $f._tmp$11 = _tmp$11; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tmp$4 = _tmp$4; $f._tmp$5 = _tmp$5; $f._tmp$6 = _tmp$6; $f._tmp$7 = _tmp$7; $f._tmp$8 = _tmp$8; $f._tmp$9 = _tmp$9; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._v = _v; $f.addrs = addrs; $f.cname = cname; $f.conf$1 = conf$1; $f.ctx = ctx; $f.err = err; $f.fqdn = fqdn; $f.hitStrictError = hitStrictError; $f.lane = lane; $f.lastErr = lastErr; $f.lastErr$1 = lastErr$1; $f.name = name; $f.nerr = nerr; $f.ok = ok; $f.ok$1 = ok$1; $f.order = order; $f.qtype = qtype; $f.qtypes = qtypes; $f.r = r; $f.racer$1 = racer$1; $f.$s = $s; $f.$r = $r; return $f;
 36341  	};
 36342  	Resolver.prototype.goLookupIPCNAMEOrder = function(ctx, name, order) { return this.$val.goLookupIPCNAMEOrder(ctx, name, order); };
 36343  	Resolver.ptr.prototype.goLookupCNAME = function(ctx, host) {
 36344  		var _r$10, _r$11, _r$9, _tuple, cname, ctx, err, host, order, r, $s, $r;
 36345  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$10 = $f._r$10; _r$11 = $f._r$11; _r$9 = $f._r$9; _tuple = $f._tuple; cname = $f.cname; ctx = $f.ctx; err = $f.err; host = $f.host; order = $f.order; r = $f.r; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 36346  		cname = "";
 36347  		err = $ifaceNil;
 36348  		r = this;
 36349  		_r$9 = systemConf(); /* */ $s = 1; case 1: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 36350  		_r$10 = _r$9.hostLookupOrder(host); /* */ $s = 2; case 2: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
 36351  		order = _r$10;
 36352  		_r$11 = r.goLookupIPCNAMEOrder(ctx, host, order); /* */ $s = 3; case 3: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; }
 36353  		_tuple = _r$11;
 36354  		cname = _tuple[1];
 36355  		err = _tuple[2];
 36356  		$s = -1; return [cname, err];
 36357  		/* */ } return; } if ($f === undefined) { $f = { $blk: Resolver.ptr.prototype.goLookupCNAME }; } $f._r$10 = _r$10; $f._r$11 = _r$11; $f._r$9 = _r$9; $f._tuple = _tuple; $f.cname = cname; $f.ctx = ctx; $f.err = err; $f.host = host; $f.order = order; $f.r = r; $f.$s = $s; $f.$r = $r; return $f;
 36358  	};
 36359  	Resolver.prototype.goLookupCNAME = function(ctx, host) { return this.$val.goLookupCNAME(ctx, host); };
 36360  	Resolver.ptr.prototype.goLookupPTR = function(ctx, addr) {
 36361  		var _i, _r$10, _r$9, _ref, _tuple, _tuple$1, addr, arpa, ctx, err, i, names, ptrs, r, rr, rrs, $s, $r;
 36362  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _i = $f._i; _r$10 = $f._r$10; _r$9 = $f._r$9; _ref = $f._ref; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; addr = $f.addr; arpa = $f.arpa; ctx = $f.ctx; err = $f.err; i = $f.i; names = $f.names; ptrs = $f.ptrs; r = $f.r; rr = $f.rr; rrs = $f.rrs; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 36363  		r = this;
 36364  		_r$9 = lookupStaticAddr(addr); /* */ $s = 1; case 1: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 36365  		names = _r$9;
 36366  		if (names.$length > 0) {
 36367  			$s = -1; return [names, $ifaceNil];
 36368  		}
 36369  		_tuple = reverseaddr(addr);
 36370  		arpa = _tuple[0];
 36371  		err = _tuple[1];
 36372  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 36373  			$s = -1; return [sliceType.nil, err];
 36374  		}
 36375  		_r$10 = r.lookup(ctx, arpa, 12); /* */ $s = 2; case 2: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
 36376  		_tuple$1 = _r$10;
 36377  		rrs = _tuple$1[1];
 36378  		err = _tuple$1[2];
 36379  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 36380  			$s = -1; return [sliceType.nil, err];
 36381  		}
 36382  		ptrs = $makeSlice(sliceType, rrs.$length);
 36383  		_ref = rrs;
 36384  		_i = 0;
 36385  		while (true) {
 36386  			if (!(_i < _ref.$length)) { break; }
 36387  			i = _i;
 36388  			rr = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
 36389  			((i < 0 || i >= ptrs.$length) ? ($throwRuntimeError("index out of range"), undefined) : ptrs.$array[ptrs.$offset + i] = $assertType(rr, ptrType$19).Ptr);
 36390  			_i++;
 36391  		}
 36392  		$s = -1; return [ptrs, $ifaceNil];
 36393  		/* */ } return; } if ($f === undefined) { $f = { $blk: Resolver.ptr.prototype.goLookupPTR }; } $f._i = _i; $f._r$10 = _r$10; $f._r$9 = _r$9; $f._ref = _ref; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.addr = addr; $f.arpa = arpa; $f.ctx = ctx; $f.err = err; $f.i = i; $f.names = names; $f.ptrs = ptrs; $f.r = r; $f.rr = rr; $f.rrs = rrs; $f.$s = $s; $f.$r = $r; return $f;
 36394  	};
 36395  	Resolver.prototype.goLookupPTR = function(ctx, addr) { return this.$val.goLookupPTR(ctx, addr); };
 36396  	dnsReadConfig = function(filename) {
 36397  		var _1, _i, _r$10, _r$11, _r$12, _r$13, _r$14, _r$15, _r$16, _r$17, _r$18, _r$9, _ref, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, _tuple$5, _tuple$6, _tuple$7, _tuple$8, _tuple$9, conf$1, err, err$1, f, fi, file$1, filename, i, ip, line, n, n$1, n$2, ok, s, x, x$1, $s, $deferred, $r;
 36398  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _i = $f._i; _r$10 = $f._r$10; _r$11 = $f._r$11; _r$12 = $f._r$12; _r$13 = $f._r$13; _r$14 = $f._r$14; _r$15 = $f._r$15; _r$16 = $f._r$16; _r$17 = $f._r$17; _r$18 = $f._r$18; _r$9 = $f._r$9; _ref = $f._ref; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; _tuple$4 = $f._tuple$4; _tuple$5 = $f._tuple$5; _tuple$6 = $f._tuple$6; _tuple$7 = $f._tuple$7; _tuple$8 = $f._tuple$8; _tuple$9 = $f._tuple$9; conf$1 = $f.conf$1; err = $f.err; err$1 = $f.err$1; f = $f.f; fi = $f.fi; file$1 = $f.file$1; filename = $f.filename; i = $f.i; ip = $f.ip; line = $f.line; n = $f.n; n$1 = $f.n$1; n$2 = $f.n$2; ok = $f.ok; s = $f.s; x = $f.x; x$1 = $f.x$1; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
 36399  		conf$1 = new dnsConfig.ptr(sliceType.nil, sliceType.nil, 1, new time.Duration(1, 705032704), 2, false, false, sliceType.nil, $ifaceNil, new time.Time.ptr(new $Uint64(0, 0), new $Int64(0, 0), ptrType.nil), 0);
 36400  		_r$9 = open(filename); /* */ $s = 1; case 1: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 36401  		_tuple = _r$9;
 36402  		file$1 = _tuple[0];
 36403  		err = _tuple[1];
 36404  		/* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 2; continue; }
 36405  		/* */ $s = 3; continue;
 36406  		/* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 2:
 36407  			conf$1.servers = defaultNS;
 36408  			_r$10 = dnsDefaultSearch(); /* */ $s = 4; case 4: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
 36409  			conf$1.search = _r$10;
 36410  			conf$1.err = err;
 36411  			$s = -1; return conf$1;
 36412  		/* } */ case 3:
 36413  		$deferred.push([$methodVal(file$1, "close"), []]);
 36414  		_r$11 = file$1.file.Stat(); /* */ $s = 5; case 5: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; }
 36415  		_tuple$1 = _r$11;
 36416  		fi = _tuple$1[0];
 36417  		err$1 = _tuple$1[1];
 36418  		/* */ if ($interfaceIsEqual(err$1, $ifaceNil)) { $s = 6; continue; }
 36419  		/* */ $s = 7; continue;
 36420  		/* if ($interfaceIsEqual(err$1, $ifaceNil)) { */ case 6:
 36421  			_r$12 = fi.ModTime(); /* */ $s = 9; case 9: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; }
 36422  			time.Time.copy(conf$1.mtime, _r$12);
 36423  			$s = 8; continue;
 36424  		/* } else { */ case 7:
 36425  			conf$1.servers = defaultNS;
 36426  			_r$13 = dnsDefaultSearch(); /* */ $s = 10; case 10: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; }
 36427  			conf$1.search = _r$13;
 36428  			conf$1.err = err$1;
 36429  			$s = -1; return conf$1;
 36430  		/* } */ case 8:
 36431  		_r$14 = file$1.readLine(); /* */ $s = 11; case 11: if($c) { $c = false; _r$14 = _r$14.$blk(); } if (_r$14 && _r$14.$blk !== undefined) { break s; }
 36432  		_tuple$2 = _r$14;
 36433  		line = _tuple$2[0];
 36434  		ok = _tuple$2[1];
 36435  		/* while (true) { */ case 12:
 36436  			/* if (!(ok)) { break; } */ if(!(ok)) { $s = 13; continue; }
 36437  			/* */ if (line.length > 0 && ((line.charCodeAt(0) === 59) || (line.charCodeAt(0) === 35))) { $s = 14; continue; }
 36438  			/* */ $s = 15; continue;
 36439  			/* if (line.length > 0 && ((line.charCodeAt(0) === 59) || (line.charCodeAt(0) === 35))) { */ case 14:
 36440  				_r$15 = file$1.readLine(); /* */ $s = 16; case 16: if($c) { $c = false; _r$15 = _r$15.$blk(); } if (_r$15 && _r$15.$blk !== undefined) { break s; }
 36441  				_tuple$3 = _r$15;
 36442  				line = _tuple$3[0];
 36443  				ok = _tuple$3[1];
 36444  				/* continue; */ $s = 12; continue;
 36445  			/* } */ case 15:
 36446  			f = getFields(line);
 36447  			/* */ if (f.$length < 1) { $s = 17; continue; }
 36448  			/* */ $s = 18; continue;
 36449  			/* if (f.$length < 1) { */ case 17:
 36450  				_r$16 = file$1.readLine(); /* */ $s = 19; case 19: if($c) { $c = false; _r$16 = _r$16.$blk(); } if (_r$16 && _r$16.$blk !== undefined) { break s; }
 36451  				_tuple$4 = _r$16;
 36452  				line = _tuple$4[0];
 36453  				ok = _tuple$4[1];
 36454  				/* continue; */ $s = 12; continue;
 36455  			/* } */ case 18:
 36456  			_1 = (0 >= f.$length ? ($throwRuntimeError("index out of range"), undefined) : f.$array[f.$offset + 0]);
 36457  			if (_1 === ("nameserver")) {
 36458  				if (f.$length > 1 && conf$1.servers.$length < 3) {
 36459  					if (!(parseIPv4((1 >= f.$length ? ($throwRuntimeError("index out of range"), undefined) : f.$array[f.$offset + 1])) === IP.nil)) {
 36460  						conf$1.servers = $append(conf$1.servers, JoinHostPort((1 >= f.$length ? ($throwRuntimeError("index out of range"), undefined) : f.$array[f.$offset + 1]), "53"));
 36461  					} else {
 36462  						_tuple$5 = parseIPv6((1 >= f.$length ? ($throwRuntimeError("index out of range"), undefined) : f.$array[f.$offset + 1]), true);
 36463  						ip = _tuple$5[0];
 36464  						if (!(ip === IP.nil)) {
 36465  							conf$1.servers = $append(conf$1.servers, JoinHostPort((1 >= f.$length ? ($throwRuntimeError("index out of range"), undefined) : f.$array[f.$offset + 1]), "53"));
 36466  						}
 36467  					}
 36468  				}
 36469  			} else if (_1 === ("domain")) {
 36470  				if (f.$length > 1) {
 36471  					conf$1.search = new sliceType([ensureRooted((1 >= f.$length ? ($throwRuntimeError("index out of range"), undefined) : f.$array[f.$offset + 1]))]);
 36472  				}
 36473  			} else if (_1 === ("search")) {
 36474  				conf$1.search = $makeSlice(sliceType, (f.$length - 1 >> 0));
 36475  				i = 0;
 36476  				while (true) {
 36477  					if (!(i < conf$1.search.$length)) { break; }
 36478  					(x$1 = conf$1.search, ((i < 0 || i >= x$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + i] = ensureRooted((x = i + 1 >> 0, ((x < 0 || x >= f.$length) ? ($throwRuntimeError("index out of range"), undefined) : f.$array[f.$offset + x])))));
 36479  					i = i + (1) >> 0;
 36480  				}
 36481  			} else if (_1 === ("options")) {
 36482  				_ref = $subslice(f, 1);
 36483  				_i = 0;
 36484  				while (true) {
 36485  					if (!(_i < _ref.$length)) { break; }
 36486  					s = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
 36487  					if (hasPrefix(s, "ndots:")) {
 36488  						_tuple$6 = dtoi($substring(s, 6));
 36489  						n = _tuple$6[0];
 36490  						if (n < 0) {
 36491  							n = 0;
 36492  						} else if (n > 15) {
 36493  							n = 15;
 36494  						}
 36495  						conf$1.ndots = n;
 36496  					} else if (hasPrefix(s, "timeout:")) {
 36497  						_tuple$7 = dtoi($substring(s, 8));
 36498  						n$1 = _tuple$7[0];
 36499  						if (n$1 < 1) {
 36500  							n$1 = 1;
 36501  						}
 36502  						conf$1.timeout = $mul64((new time.Duration(0, n$1)), new time.Duration(0, 1000000000));
 36503  					} else if (hasPrefix(s, "attempts:")) {
 36504  						_tuple$8 = dtoi($substring(s, 9));
 36505  						n$2 = _tuple$8[0];
 36506  						if (n$2 < 1) {
 36507  							n$2 = 1;
 36508  						}
 36509  						conf$1.attempts = n$2;
 36510  					} else if (s === "rotate") {
 36511  						conf$1.rotate = true;
 36512  					} else {
 36513  						conf$1.unknownOpt = true;
 36514  					}
 36515  					_i++;
 36516  				}
 36517  			} else if (_1 === ("lookup")) {
 36518  				conf$1.lookup = $subslice(f, 1);
 36519  			} else {
 36520  				conf$1.unknownOpt = true;
 36521  			}
 36522  			_r$17 = file$1.readLine(); /* */ $s = 20; case 20: if($c) { $c = false; _r$17 = _r$17.$blk(); } if (_r$17 && _r$17.$blk !== undefined) { break s; }
 36523  			_tuple$9 = _r$17;
 36524  			line = _tuple$9[0];
 36525  			ok = _tuple$9[1];
 36526  		/* } */ $s = 12; continue; case 13:
 36527  		if (conf$1.servers.$length === 0) {
 36528  			conf$1.servers = defaultNS;
 36529  		}
 36530  		/* */ if (conf$1.search.$length === 0) { $s = 21; continue; }
 36531  		/* */ $s = 22; continue;
 36532  		/* if (conf$1.search.$length === 0) { */ case 21:
 36533  			_r$18 = dnsDefaultSearch(); /* */ $s = 23; case 23: if($c) { $c = false; _r$18 = _r$18.$blk(); } if (_r$18 && _r$18.$blk !== undefined) { break s; }
 36534  			conf$1.search = _r$18;
 36535  		/* } */ case 22:
 36536  		$s = -1; return conf$1;
 36537  		/* */ } return; } } catch(err) { $err = err; $s = -1; return ptrType$1.nil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: dnsReadConfig }; } $f._1 = _1; $f._i = _i; $f._r$10 = _r$10; $f._r$11 = _r$11; $f._r$12 = _r$12; $f._r$13 = _r$13; $f._r$14 = _r$14; $f._r$15 = _r$15; $f._r$16 = _r$16; $f._r$17 = _r$17; $f._r$18 = _r$18; $f._r$9 = _r$9; $f._ref = _ref; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f._tuple$4 = _tuple$4; $f._tuple$5 = _tuple$5; $f._tuple$6 = _tuple$6; $f._tuple$7 = _tuple$7; $f._tuple$8 = _tuple$8; $f._tuple$9 = _tuple$9; $f.conf$1 = conf$1; $f.err = err; $f.err$1 = err$1; $f.f = f; $f.fi = fi; $f.file$1 = file$1; $f.filename = filename; $f.i = i; $f.ip = ip; $f.line = line; $f.n = n; $f.n$1 = n$1; $f.n$2 = n$2; $f.ok = ok; $f.s = s; $f.x = x; $f.x$1 = x$1; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
 36538  	};
 36539  	dnsConfig.ptr.prototype.serverOffset = function() {
 36540  		var c;
 36541  		c = this;
 36542  		if (c.rotate) {
 36543  			return atomic.AddUint32((c.$ptr_soffset || (c.$ptr_soffset = new ptrType$20(function() { return this.$target.soffset; }, function($v) { this.$target.soffset = $v; }, c))), 1) - 1 >>> 0;
 36544  		}
 36545  		return 0;
 36546  	};
 36547  	dnsConfig.prototype.serverOffset = function() { return this.$val.serverOffset(); };
 36548  	dnsDefaultSearch = function() {
 36549  		var _r$9, _tuple, err, hn, i, $s, $r;
 36550  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$9 = $f._r$9; _tuple = $f._tuple; err = $f.err; hn = $f.hn; i = $f.i; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 36551  		_r$9 = getHostname(); /* */ $s = 1; case 1: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 36552  		_tuple = _r$9;
 36553  		hn = _tuple[0];
 36554  		err = _tuple[1];
 36555  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 36556  			$s = -1; return sliceType.nil;
 36557  		}
 36558  		i = byteIndex(hn, 46);
 36559  		if (i >= 0 && i < (hn.length - 1 >> 0)) {
 36560  			$s = -1; return new sliceType([ensureRooted($substring(hn, (i + 1 >> 0)))]);
 36561  		}
 36562  		$s = -1; return sliceType.nil;
 36563  		/* */ } return; } if ($f === undefined) { $f = { $blk: dnsDefaultSearch }; } $f._r$9 = _r$9; $f._tuple = _tuple; $f.err = err; $f.hn = hn; $f.i = i; $f.$s = $s; $f.$r = $r; return $f;
 36564  	};
 36565  	hasPrefix = function(s, prefix) {
 36566  		var prefix, s;
 36567  		return s.length >= prefix.length && $substring(s, 0, prefix.length) === prefix;
 36568  	};
 36569  	ensureRooted = function(s) {
 36570  		var s;
 36571  		if (s.length > 0 && (s.charCodeAt((s.length - 1 >> 0)) === 46)) {
 36572  			return s;
 36573  		}
 36574  		return s + ".";
 36575  	};
 36576  	dnsHeader.ptr.prototype.Walk = function(f) {
 36577  		var _r$10, _r$11, _r$12, _r$13, _r$14, _r$9, _v, _v$1, _v$2, _v$3, _v$4, f, h, $s, $r;
 36578  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$10 = $f._r$10; _r$11 = $f._r$11; _r$12 = $f._r$12; _r$13 = $f._r$13; _r$14 = $f._r$14; _r$9 = $f._r$9; _v = $f._v; _v$1 = $f._v$1; _v$2 = $f._v$2; _v$3 = $f._v$3; _v$4 = $f._v$4; f = $f.f; h = $f.h; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 36579  		h = this;
 36580  		_r$9 = f((h.$ptr_Id || (h.$ptr_Id = new ptrType$21(function() { return this.$target.Id; }, function($v) { this.$target.Id = $v; }, h))), "Id", ""); /* */ $s = 6; case 6: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 36581  		if (!(_r$9)) { _v$4 = false; $s = 5; continue s; }
 36582  		_r$10 = f((h.$ptr_Bits || (h.$ptr_Bits = new ptrType$21(function() { return this.$target.Bits; }, function($v) { this.$target.Bits = $v; }, h))), "Bits", ""); /* */ $s = 7; case 7: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
 36583  		_v$4 = _r$10; case 5:
 36584  		if (!(_v$4)) { _v$3 = false; $s = 4; continue s; }
 36585  		_r$11 = f((h.$ptr_Qdcount || (h.$ptr_Qdcount = new ptrType$21(function() { return this.$target.Qdcount; }, function($v) { this.$target.Qdcount = $v; }, h))), "Qdcount", ""); /* */ $s = 8; case 8: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; }
 36586  		_v$3 = _r$11; case 4:
 36587  		if (!(_v$3)) { _v$2 = false; $s = 3; continue s; }
 36588  		_r$12 = f((h.$ptr_Ancount || (h.$ptr_Ancount = new ptrType$21(function() { return this.$target.Ancount; }, function($v) { this.$target.Ancount = $v; }, h))), "Ancount", ""); /* */ $s = 9; case 9: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; }
 36589  		_v$2 = _r$12; case 3:
 36590  		if (!(_v$2)) { _v$1 = false; $s = 2; continue s; }
 36591  		_r$13 = f((h.$ptr_Nscount || (h.$ptr_Nscount = new ptrType$21(function() { return this.$target.Nscount; }, function($v) { this.$target.Nscount = $v; }, h))), "Nscount", ""); /* */ $s = 10; case 10: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; }
 36592  		_v$1 = _r$13; case 2:
 36593  		if (!(_v$1)) { _v = false; $s = 1; continue s; }
 36594  		_r$14 = f((h.$ptr_Arcount || (h.$ptr_Arcount = new ptrType$21(function() { return this.$target.Arcount; }, function($v) { this.$target.Arcount = $v; }, h))), "Arcount", ""); /* */ $s = 11; case 11: if($c) { $c = false; _r$14 = _r$14.$blk(); } if (_r$14 && _r$14.$blk !== undefined) { break s; }
 36595  		_v = _r$14; case 1:
 36596  		$s = -1; return _v;
 36597  		/* */ } return; } if ($f === undefined) { $f = { $blk: dnsHeader.ptr.prototype.Walk }; } $f._r$10 = _r$10; $f._r$11 = _r$11; $f._r$12 = _r$12; $f._r$13 = _r$13; $f._r$14 = _r$14; $f._r$9 = _r$9; $f._v = _v; $f._v$1 = _v$1; $f._v$2 = _v$2; $f._v$3 = _v$3; $f._v$4 = _v$4; $f.f = f; $f.h = h; $f.$s = $s; $f.$r = $r; return $f;
 36598  	};
 36599  	dnsHeader.prototype.Walk = function(f) { return this.$val.Walk(f); };
 36600  	dnsQuestion.ptr.prototype.Walk = function(f) {
 36601  		var _r$10, _r$11, _r$9, _v, _v$1, f, q, $s, $r;
 36602  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$10 = $f._r$10; _r$11 = $f._r$11; _r$9 = $f._r$9; _v = $f._v; _v$1 = $f._v$1; f = $f.f; q = $f.q; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 36603  		q = this;
 36604  		_r$9 = f((q.$ptr_Name || (q.$ptr_Name = new ptrType$22(function() { return this.$target.Name; }, function($v) { this.$target.Name = $v; }, q))), "Name", "domain"); /* */ $s = 3; case 3: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 36605  		if (!(_r$9)) { _v$1 = false; $s = 2; continue s; }
 36606  		_r$10 = f((q.$ptr_Qtype || (q.$ptr_Qtype = new ptrType$21(function() { return this.$target.Qtype; }, function($v) { this.$target.Qtype = $v; }, q))), "Qtype", ""); /* */ $s = 4; case 4: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
 36607  		_v$1 = _r$10; case 2:
 36608  		if (!(_v$1)) { _v = false; $s = 1; continue s; }
 36609  		_r$11 = f((q.$ptr_Qclass || (q.$ptr_Qclass = new ptrType$21(function() { return this.$target.Qclass; }, function($v) { this.$target.Qclass = $v; }, q))), "Qclass", ""); /* */ $s = 5; case 5: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; }
 36610  		_v = _r$11; case 1:
 36611  		$s = -1; return _v;
 36612  		/* */ } return; } if ($f === undefined) { $f = { $blk: dnsQuestion.ptr.prototype.Walk }; } $f._r$10 = _r$10; $f._r$11 = _r$11; $f._r$9 = _r$9; $f._v = _v; $f._v$1 = _v$1; $f.f = f; $f.q = q; $f.$s = $s; $f.$r = $r; return $f;
 36613  	};
 36614  	dnsQuestion.prototype.Walk = function(f) { return this.$val.Walk(f); };
 36615  	dnsRR_Header.ptr.prototype.Header = function() {
 36616  		var h;
 36617  		h = this;
 36618  		return h;
 36619  	};
 36620  	dnsRR_Header.prototype.Header = function() { return this.$val.Header(); };
 36621  	dnsRR_Header.ptr.prototype.Walk = function(f) {
 36622  		var _r$10, _r$11, _r$12, _r$13, _r$9, _v, _v$1, _v$2, _v$3, f, h, $s, $r;
 36623  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$10 = $f._r$10; _r$11 = $f._r$11; _r$12 = $f._r$12; _r$13 = $f._r$13; _r$9 = $f._r$9; _v = $f._v; _v$1 = $f._v$1; _v$2 = $f._v$2; _v$3 = $f._v$3; f = $f.f; h = $f.h; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 36624  		h = this;
 36625  		_r$9 = f((h.$ptr_Name || (h.$ptr_Name = new ptrType$22(function() { return this.$target.Name; }, function($v) { this.$target.Name = $v; }, h))), "Name", "domain"); /* */ $s = 5; case 5: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 36626  		if (!(_r$9)) { _v$3 = false; $s = 4; continue s; }
 36627  		_r$10 = f((h.$ptr_Rrtype || (h.$ptr_Rrtype = new ptrType$21(function() { return this.$target.Rrtype; }, function($v) { this.$target.Rrtype = $v; }, h))), "Rrtype", ""); /* */ $s = 6; case 6: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
 36628  		_v$3 = _r$10; case 4:
 36629  		if (!(_v$3)) { _v$2 = false; $s = 3; continue s; }
 36630  		_r$11 = f((h.$ptr_Class || (h.$ptr_Class = new ptrType$21(function() { return this.$target.Class; }, function($v) { this.$target.Class = $v; }, h))), "Class", ""); /* */ $s = 7; case 7: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; }
 36631  		_v$2 = _r$11; case 3:
 36632  		if (!(_v$2)) { _v$1 = false; $s = 2; continue s; }
 36633  		_r$12 = f((h.$ptr_Ttl || (h.$ptr_Ttl = new ptrType$20(function() { return this.$target.Ttl; }, function($v) { this.$target.Ttl = $v; }, h))), "Ttl", ""); /* */ $s = 8; case 8: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; }
 36634  		_v$1 = _r$12; case 2:
 36635  		if (!(_v$1)) { _v = false; $s = 1; continue s; }
 36636  		_r$13 = f((h.$ptr_Rdlength || (h.$ptr_Rdlength = new ptrType$21(function() { return this.$target.Rdlength; }, function($v) { this.$target.Rdlength = $v; }, h))), "Rdlength", ""); /* */ $s = 9; case 9: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; }
 36637  		_v = _r$13; case 1:
 36638  		$s = -1; return _v;
 36639  		/* */ } return; } if ($f === undefined) { $f = { $blk: dnsRR_Header.ptr.prototype.Walk }; } $f._r$10 = _r$10; $f._r$11 = _r$11; $f._r$12 = _r$12; $f._r$13 = _r$13; $f._r$9 = _r$9; $f._v = _v; $f._v$1 = _v$1; $f._v$2 = _v$2; $f._v$3 = _v$3; $f.f = f; $f.h = h; $f.$s = $s; $f.$r = $r; return $f;
 36640  	};
 36641  	dnsRR_Header.prototype.Walk = function(f) { return this.$val.Walk(f); };
 36642  	dnsRR_CNAME.ptr.prototype.Header = function() {
 36643  		var rr;
 36644  		rr = this;
 36645  		return rr.Hdr;
 36646  	};
 36647  	dnsRR_CNAME.prototype.Header = function() { return this.$val.Header(); };
 36648  	dnsRR_CNAME.ptr.prototype.Walk = function(f) {
 36649  		var _r$10, _r$9, _v, f, rr, $s, $r;
 36650  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$10 = $f._r$10; _r$9 = $f._r$9; _v = $f._v; f = $f.f; rr = $f.rr; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 36651  		rr = this;
 36652  		_r$9 = rr.Hdr.Walk(f); /* */ $s = 2; case 2: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 36653  		if (!(_r$9)) { _v = false; $s = 1; continue s; }
 36654  		_r$10 = f((rr.$ptr_Cname || (rr.$ptr_Cname = new ptrType$22(function() { return this.$target.Cname; }, function($v) { this.$target.Cname = $v; }, rr))), "Cname", "domain"); /* */ $s = 3; case 3: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
 36655  		_v = _r$10; case 1:
 36656  		$s = -1; return _v;
 36657  		/* */ } return; } if ($f === undefined) { $f = { $blk: dnsRR_CNAME.ptr.prototype.Walk }; } $f._r$10 = _r$10; $f._r$9 = _r$9; $f._v = _v; $f.f = f; $f.rr = rr; $f.$s = $s; $f.$r = $r; return $f;
 36658  	};
 36659  	dnsRR_CNAME.prototype.Walk = function(f) { return this.$val.Walk(f); };
 36660  	dnsRR_MX.ptr.prototype.Header = function() {
 36661  		var rr;
 36662  		rr = this;
 36663  		return rr.Hdr;
 36664  	};
 36665  	dnsRR_MX.prototype.Header = function() { return this.$val.Header(); };
 36666  	dnsRR_MX.ptr.prototype.Walk = function(f) {
 36667  		var _r$10, _r$11, _r$9, _v, _v$1, f, rr, $s, $r;
 36668  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$10 = $f._r$10; _r$11 = $f._r$11; _r$9 = $f._r$9; _v = $f._v; _v$1 = $f._v$1; f = $f.f; rr = $f.rr; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 36669  		rr = this;
 36670  		_r$9 = rr.Hdr.Walk(f); /* */ $s = 3; case 3: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 36671  		if (!(_r$9)) { _v$1 = false; $s = 2; continue s; }
 36672  		_r$10 = f((rr.$ptr_Pref || (rr.$ptr_Pref = new ptrType$21(function() { return this.$target.Pref; }, function($v) { this.$target.Pref = $v; }, rr))), "Pref", ""); /* */ $s = 4; case 4: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
 36673  		_v$1 = _r$10; case 2:
 36674  		if (!(_v$1)) { _v = false; $s = 1; continue s; }
 36675  		_r$11 = f((rr.$ptr_Mx || (rr.$ptr_Mx = new ptrType$22(function() { return this.$target.Mx; }, function($v) { this.$target.Mx = $v; }, rr))), "Mx", "domain"); /* */ $s = 5; case 5: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; }
 36676  		_v = _r$11; case 1:
 36677  		$s = -1; return _v;
 36678  		/* */ } return; } if ($f === undefined) { $f = { $blk: dnsRR_MX.ptr.prototype.Walk }; } $f._r$10 = _r$10; $f._r$11 = _r$11; $f._r$9 = _r$9; $f._v = _v; $f._v$1 = _v$1; $f.f = f; $f.rr = rr; $f.$s = $s; $f.$r = $r; return $f;
 36679  	};
 36680  	dnsRR_MX.prototype.Walk = function(f) { return this.$val.Walk(f); };
 36681  	dnsRR_NS.ptr.prototype.Header = function() {
 36682  		var rr;
 36683  		rr = this;
 36684  		return rr.Hdr;
 36685  	};
 36686  	dnsRR_NS.prototype.Header = function() { return this.$val.Header(); };
 36687  	dnsRR_NS.ptr.prototype.Walk = function(f) {
 36688  		var _r$10, _r$9, _v, f, rr, $s, $r;
 36689  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$10 = $f._r$10; _r$9 = $f._r$9; _v = $f._v; f = $f.f; rr = $f.rr; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 36690  		rr = this;
 36691  		_r$9 = rr.Hdr.Walk(f); /* */ $s = 2; case 2: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 36692  		if (!(_r$9)) { _v = false; $s = 1; continue s; }
 36693  		_r$10 = f((rr.$ptr_Ns || (rr.$ptr_Ns = new ptrType$22(function() { return this.$target.Ns; }, function($v) { this.$target.Ns = $v; }, rr))), "Ns", "domain"); /* */ $s = 3; case 3: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
 36694  		_v = _r$10; case 1:
 36695  		$s = -1; return _v;
 36696  		/* */ } return; } if ($f === undefined) { $f = { $blk: dnsRR_NS.ptr.prototype.Walk }; } $f._r$10 = _r$10; $f._r$9 = _r$9; $f._v = _v; $f.f = f; $f.rr = rr; $f.$s = $s; $f.$r = $r; return $f;
 36697  	};
 36698  	dnsRR_NS.prototype.Walk = function(f) { return this.$val.Walk(f); };
 36699  	dnsRR_PTR.ptr.prototype.Header = function() {
 36700  		var rr;
 36701  		rr = this;
 36702  		return rr.Hdr;
 36703  	};
 36704  	dnsRR_PTR.prototype.Header = function() { return this.$val.Header(); };
 36705  	dnsRR_PTR.ptr.prototype.Walk = function(f) {
 36706  		var _r$10, _r$9, _v, f, rr, $s, $r;
 36707  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$10 = $f._r$10; _r$9 = $f._r$9; _v = $f._v; f = $f.f; rr = $f.rr; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 36708  		rr = this;
 36709  		_r$9 = rr.Hdr.Walk(f); /* */ $s = 2; case 2: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 36710  		if (!(_r$9)) { _v = false; $s = 1; continue s; }
 36711  		_r$10 = f((rr.$ptr_Ptr || (rr.$ptr_Ptr = new ptrType$22(function() { return this.$target.Ptr; }, function($v) { this.$target.Ptr = $v; }, rr))), "Ptr", "domain"); /* */ $s = 3; case 3: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
 36712  		_v = _r$10; case 1:
 36713  		$s = -1; return _v;
 36714  		/* */ } return; } if ($f === undefined) { $f = { $blk: dnsRR_PTR.ptr.prototype.Walk }; } $f._r$10 = _r$10; $f._r$9 = _r$9; $f._v = _v; $f.f = f; $f.rr = rr; $f.$s = $s; $f.$r = $r; return $f;
 36715  	};
 36716  	dnsRR_PTR.prototype.Walk = function(f) { return this.$val.Walk(f); };
 36717  	dnsRR_SOA.ptr.prototype.Header = function() {
 36718  		var rr;
 36719  		rr = this;
 36720  		return rr.Hdr;
 36721  	};
 36722  	dnsRR_SOA.prototype.Header = function() { return this.$val.Header(); };
 36723  	dnsRR_SOA.ptr.prototype.Walk = function(f) {
 36724  		var _r$10, _r$11, _r$12, _r$13, _r$14, _r$15, _r$16, _r$9, _v, _v$1, _v$2, _v$3, _v$4, _v$5, _v$6, f, rr, $s, $r;
 36725  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$10 = $f._r$10; _r$11 = $f._r$11; _r$12 = $f._r$12; _r$13 = $f._r$13; _r$14 = $f._r$14; _r$15 = $f._r$15; _r$16 = $f._r$16; _r$9 = $f._r$9; _v = $f._v; _v$1 = $f._v$1; _v$2 = $f._v$2; _v$3 = $f._v$3; _v$4 = $f._v$4; _v$5 = $f._v$5; _v$6 = $f._v$6; f = $f.f; rr = $f.rr; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 36726  		rr = this;
 36727  		_r$9 = rr.Hdr.Walk(f); /* */ $s = 8; case 8: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 36728  		if (!(_r$9)) { _v$6 = false; $s = 7; continue s; }
 36729  		_r$10 = f((rr.$ptr_Ns || (rr.$ptr_Ns = new ptrType$22(function() { return this.$target.Ns; }, function($v) { this.$target.Ns = $v; }, rr))), "Ns", "domain"); /* */ $s = 9; case 9: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
 36730  		_v$6 = _r$10; case 7:
 36731  		if (!(_v$6)) { _v$5 = false; $s = 6; continue s; }
 36732  		_r$11 = f((rr.$ptr_Mbox || (rr.$ptr_Mbox = new ptrType$22(function() { return this.$target.Mbox; }, function($v) { this.$target.Mbox = $v; }, rr))), "Mbox", "domain"); /* */ $s = 10; case 10: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; }
 36733  		_v$5 = _r$11; case 6:
 36734  		if (!(_v$5)) { _v$4 = false; $s = 5; continue s; }
 36735  		_r$12 = f((rr.$ptr_Serial || (rr.$ptr_Serial = new ptrType$20(function() { return this.$target.Serial; }, function($v) { this.$target.Serial = $v; }, rr))), "Serial", ""); /* */ $s = 11; case 11: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; }
 36736  		_v$4 = _r$12; case 5:
 36737  		if (!(_v$4)) { _v$3 = false; $s = 4; continue s; }
 36738  		_r$13 = f((rr.$ptr_Refresh || (rr.$ptr_Refresh = new ptrType$20(function() { return this.$target.Refresh; }, function($v) { this.$target.Refresh = $v; }, rr))), "Refresh", ""); /* */ $s = 12; case 12: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; }
 36739  		_v$3 = _r$13; case 4:
 36740  		if (!(_v$3)) { _v$2 = false; $s = 3; continue s; }
 36741  		_r$14 = f((rr.$ptr_Retry || (rr.$ptr_Retry = new ptrType$20(function() { return this.$target.Retry; }, function($v) { this.$target.Retry = $v; }, rr))), "Retry", ""); /* */ $s = 13; case 13: if($c) { $c = false; _r$14 = _r$14.$blk(); } if (_r$14 && _r$14.$blk !== undefined) { break s; }
 36742  		_v$2 = _r$14; case 3:
 36743  		if (!(_v$2)) { _v$1 = false; $s = 2; continue s; }
 36744  		_r$15 = f((rr.$ptr_Expire || (rr.$ptr_Expire = new ptrType$20(function() { return this.$target.Expire; }, function($v) { this.$target.Expire = $v; }, rr))), "Expire", ""); /* */ $s = 14; case 14: if($c) { $c = false; _r$15 = _r$15.$blk(); } if (_r$15 && _r$15.$blk !== undefined) { break s; }
 36745  		_v$1 = _r$15; case 2:
 36746  		if (!(_v$1)) { _v = false; $s = 1; continue s; }
 36747  		_r$16 = f((rr.$ptr_Minttl || (rr.$ptr_Minttl = new ptrType$20(function() { return this.$target.Minttl; }, function($v) { this.$target.Minttl = $v; }, rr))), "Minttl", ""); /* */ $s = 15; case 15: if($c) { $c = false; _r$16 = _r$16.$blk(); } if (_r$16 && _r$16.$blk !== undefined) { break s; }
 36748  		_v = _r$16; case 1:
 36749  		$s = -1; return _v;
 36750  		/* */ } return; } if ($f === undefined) { $f = { $blk: dnsRR_SOA.ptr.prototype.Walk }; } $f._r$10 = _r$10; $f._r$11 = _r$11; $f._r$12 = _r$12; $f._r$13 = _r$13; $f._r$14 = _r$14; $f._r$15 = _r$15; $f._r$16 = _r$16; $f._r$9 = _r$9; $f._v = _v; $f._v$1 = _v$1; $f._v$2 = _v$2; $f._v$3 = _v$3; $f._v$4 = _v$4; $f._v$5 = _v$5; $f._v$6 = _v$6; $f.f = f; $f.rr = rr; $f.$s = $s; $f.$r = $r; return $f;
 36751  	};
 36752  	dnsRR_SOA.prototype.Walk = function(f) { return this.$val.Walk(f); };
 36753  	dnsRR_TXT.ptr.prototype.Header = function() {
 36754  		var rr;
 36755  		rr = this;
 36756  		return rr.Hdr;
 36757  	};
 36758  	dnsRR_TXT.prototype.Header = function() { return this.$val.Header(); };
 36759  	dnsRR_TXT.ptr.prototype.Walk = function(f) {
 36760  		var _r$10, _r$9, f, n, rr, txt, $s, $r;
 36761  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$10 = $f._r$10; _r$9 = $f._r$9; f = $f.f; n = $f.n; rr = $f.rr; txt = $f.txt; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 36762  		rr = this;
 36763  		_r$9 = rr.Hdr.Walk(f); /* */ $s = 3; case 3: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 36764  		/* */ if (!_r$9) { $s = 1; continue; }
 36765  		/* */ $s = 2; continue;
 36766  		/* if (!_r$9) { */ case 1:
 36767  			$s = -1; return false;
 36768  		/* } */ case 2:
 36769  		n = 0;
 36770  		/* while (true) { */ case 4:
 36771  			/* if (!(n < rr.Hdr.Rdlength)) { break; } */ if(!(n < rr.Hdr.Rdlength)) { $s = 5; continue; }
 36772  			txt = [txt];
 36773  			txt[0] = "";
 36774  			_r$10 = f((txt.$ptr || (txt.$ptr = new ptrType$22(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, txt))), "Txt", ""); /* */ $s = 8; case 8: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
 36775  			/* */ if (!_r$10) { $s = 6; continue; }
 36776  			/* */ $s = 7; continue;
 36777  			/* if (!_r$10) { */ case 6:
 36778  				$s = -1; return false;
 36779  			/* } */ case 7:
 36780  			if ((rr.Hdr.Rdlength - n << 16 >>> 16) < (((txt[0].length << 16 >>> 16)) + 1 << 16 >>> 16)) {
 36781  				$s = -1; return false;
 36782  			}
 36783  			n = n + ((((txt[0].length << 16 >>> 16)) + 1 << 16 >>> 16)) << 16 >>> 16;
 36784  			rr.Txt = rr.Txt + (txt[0]);
 36785  		/* } */ $s = 4; continue; case 5:
 36786  		$s = -1; return true;
 36787  		/* */ } return; } if ($f === undefined) { $f = { $blk: dnsRR_TXT.ptr.prototype.Walk }; } $f._r$10 = _r$10; $f._r$9 = _r$9; $f.f = f; $f.n = n; $f.rr = rr; $f.txt = txt; $f.$s = $s; $f.$r = $r; return $f;
 36788  	};
 36789  	dnsRR_TXT.prototype.Walk = function(f) { return this.$val.Walk(f); };
 36790  	dnsRR_SRV.ptr.prototype.Header = function() {
 36791  		var rr;
 36792  		rr = this;
 36793  		return rr.Hdr;
 36794  	};
 36795  	dnsRR_SRV.prototype.Header = function() { return this.$val.Header(); };
 36796  	dnsRR_SRV.ptr.prototype.Walk = function(f) {
 36797  		var _r$10, _r$11, _r$12, _r$13, _r$9, _v, _v$1, _v$2, _v$3, f, rr, $s, $r;
 36798  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$10 = $f._r$10; _r$11 = $f._r$11; _r$12 = $f._r$12; _r$13 = $f._r$13; _r$9 = $f._r$9; _v = $f._v; _v$1 = $f._v$1; _v$2 = $f._v$2; _v$3 = $f._v$3; f = $f.f; rr = $f.rr; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 36799  		rr = this;
 36800  		_r$9 = rr.Hdr.Walk(f); /* */ $s = 5; case 5: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 36801  		if (!(_r$9)) { _v$3 = false; $s = 4; continue s; }
 36802  		_r$10 = f((rr.$ptr_Priority || (rr.$ptr_Priority = new ptrType$21(function() { return this.$target.Priority; }, function($v) { this.$target.Priority = $v; }, rr))), "Priority", ""); /* */ $s = 6; case 6: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
 36803  		_v$3 = _r$10; case 4:
 36804  		if (!(_v$3)) { _v$2 = false; $s = 3; continue s; }
 36805  		_r$11 = f((rr.$ptr_Weight || (rr.$ptr_Weight = new ptrType$21(function() { return this.$target.Weight; }, function($v) { this.$target.Weight = $v; }, rr))), "Weight", ""); /* */ $s = 7; case 7: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; }
 36806  		_v$2 = _r$11; case 3:
 36807  		if (!(_v$2)) { _v$1 = false; $s = 2; continue s; }
 36808  		_r$12 = f((rr.$ptr_Port || (rr.$ptr_Port = new ptrType$21(function() { return this.$target.Port; }, function($v) { this.$target.Port = $v; }, rr))), "Port", ""); /* */ $s = 8; case 8: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; }
 36809  		_v$1 = _r$12; case 2:
 36810  		if (!(_v$1)) { _v = false; $s = 1; continue s; }
 36811  		_r$13 = f((rr.$ptr_Target || (rr.$ptr_Target = new ptrType$22(function() { return this.$target.Target; }, function($v) { this.$target.Target = $v; }, rr))), "Target", "domain"); /* */ $s = 9; case 9: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; }
 36812  		_v = _r$13; case 1:
 36813  		$s = -1; return _v;
 36814  		/* */ } return; } if ($f === undefined) { $f = { $blk: dnsRR_SRV.ptr.prototype.Walk }; } $f._r$10 = _r$10; $f._r$11 = _r$11; $f._r$12 = _r$12; $f._r$13 = _r$13; $f._r$9 = _r$9; $f._v = _v; $f._v$1 = _v$1; $f._v$2 = _v$2; $f._v$3 = _v$3; $f.f = f; $f.rr = rr; $f.$s = $s; $f.$r = $r; return $f;
 36815  	};
 36816  	dnsRR_SRV.prototype.Walk = function(f) { return this.$val.Walk(f); };
 36817  	dnsRR_A.ptr.prototype.Header = function() {
 36818  		var rr;
 36819  		rr = this;
 36820  		return rr.Hdr;
 36821  	};
 36822  	dnsRR_A.prototype.Header = function() { return this.$val.Header(); };
 36823  	dnsRR_A.ptr.prototype.Walk = function(f) {
 36824  		var _r$10, _r$9, _v, f, rr, $s, $r;
 36825  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$10 = $f._r$10; _r$9 = $f._r$9; _v = $f._v; f = $f.f; rr = $f.rr; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 36826  		rr = this;
 36827  		_r$9 = rr.Hdr.Walk(f); /* */ $s = 2; case 2: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 36828  		if (!(_r$9)) { _v = false; $s = 1; continue s; }
 36829  		_r$10 = f((rr.$ptr_A || (rr.$ptr_A = new ptrType$20(function() { return this.$target.A; }, function($v) { this.$target.A = $v; }, rr))), "A", "ipv4"); /* */ $s = 3; case 3: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
 36830  		_v = _r$10; case 1:
 36831  		$s = -1; return _v;
 36832  		/* */ } return; } if ($f === undefined) { $f = { $blk: dnsRR_A.ptr.prototype.Walk }; } $f._r$10 = _r$10; $f._r$9 = _r$9; $f._v = _v; $f.f = f; $f.rr = rr; $f.$s = $s; $f.$r = $r; return $f;
 36833  	};
 36834  	dnsRR_A.prototype.Walk = function(f) { return this.$val.Walk(f); };
 36835  	dnsRR_AAAA.ptr.prototype.Header = function() {
 36836  		var rr;
 36837  		rr = this;
 36838  		return rr.Hdr;
 36839  	};
 36840  	dnsRR_AAAA.prototype.Header = function() { return this.$val.Header(); };
 36841  	dnsRR_AAAA.ptr.prototype.Walk = function(f) {
 36842  		var _r$10, _r$9, _v, f, rr, $s, $r;
 36843  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$10 = $f._r$10; _r$9 = $f._r$9; _v = $f._v; f = $f.f; rr = $f.rr; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 36844  		rr = this;
 36845  		_r$9 = rr.Hdr.Walk(f); /* */ $s = 2; case 2: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 36846  		if (!(_r$9)) { _v = false; $s = 1; continue s; }
 36847  		_r$10 = f(new sliceType$1(rr.AAAA), "AAAA", "ipv6"); /* */ $s = 3; case 3: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
 36848  		_v = _r$10; case 1:
 36849  		$s = -1; return _v;
 36850  		/* */ } return; } if ($f === undefined) { $f = { $blk: dnsRR_AAAA.ptr.prototype.Walk }; } $f._r$10 = _r$10; $f._r$9 = _r$9; $f._v = _v; $f.f = f; $f.rr = rr; $f.$s = $s; $f.$r = $r; return $f;
 36851  	};
 36852  	dnsRR_AAAA.prototype.Walk = function(f) { return this.$val.Walk(f); };
 36853  	packDomainName = function(s, msg, off) {
 36854  		var _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, begin, i, j, msg, n, off, off1, ok, s, tot;
 36855  		off1 = 0;
 36856  		ok = false;
 36857  		n = s.length;
 36858  		if ((n === 0) || !((s.charCodeAt((n - 1 >> 0)) === 46))) {
 36859  			s = s + (".");
 36860  		}
 36861  		if (s === ".") {
 36862  			((off < 0 || off >= msg.$length) ? ($throwRuntimeError("index out of range"), undefined) : msg.$array[msg.$offset + off] = 0);
 36863  			off = off + (1) >> 0;
 36864  			_tmp = off;
 36865  			_tmp$1 = true;
 36866  			off1 = _tmp;
 36867  			ok = _tmp$1;
 36868  			return [off1, ok];
 36869  		}
 36870  		tot = s.length + 1 >> 0;
 36871  		if ((off + tot >> 0) > msg.$length) {
 36872  			_tmp$2 = msg.$length;
 36873  			_tmp$3 = false;
 36874  			off1 = _tmp$2;
 36875  			ok = _tmp$3;
 36876  			return [off1, ok];
 36877  		}
 36878  		begin = 0;
 36879  		i = 0;
 36880  		while (true) {
 36881  			if (!(i < s.length)) { break; }
 36882  			if (s.charCodeAt(i) === 46) {
 36883  				if ((i - begin >> 0) >= 64) {
 36884  					_tmp$4 = msg.$length;
 36885  					_tmp$5 = false;
 36886  					off1 = _tmp$4;
 36887  					ok = _tmp$5;
 36888  					return [off1, ok];
 36889  				}
 36890  				if ((i - begin >> 0) === 0) {
 36891  					_tmp$6 = msg.$length;
 36892  					_tmp$7 = false;
 36893  					off1 = _tmp$6;
 36894  					ok = _tmp$7;
 36895  					return [off1, ok];
 36896  				}
 36897  				((off < 0 || off >= msg.$length) ? ($throwRuntimeError("index out of range"), undefined) : msg.$array[msg.$offset + off] = (((i - begin >> 0) << 24 >>> 24)));
 36898  				off = off + (1) >> 0;
 36899  				j = begin;
 36900  				while (true) {
 36901  					if (!(j < i)) { break; }
 36902  					((off < 0 || off >= msg.$length) ? ($throwRuntimeError("index out of range"), undefined) : msg.$array[msg.$offset + off] = s.charCodeAt(j));
 36903  					off = off + (1) >> 0;
 36904  					j = j + (1) >> 0;
 36905  				}
 36906  				begin = i + 1 >> 0;
 36907  			}
 36908  			i = i + (1) >> 0;
 36909  		}
 36910  		((off < 0 || off >= msg.$length) ? ($throwRuntimeError("index out of range"), undefined) : msg.$array[msg.$offset + off] = 0);
 36911  		off = off + (1) >> 0;
 36912  		_tmp$8 = off;
 36913  		_tmp$9 = true;
 36914  		off1 = _tmp$8;
 36915  		ok = _tmp$9;
 36916  		return [off1, ok];
 36917  	};
 36918  	unpackDomainName = function(msg, off) {
 36919  		var _1, _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$14, _tmp$15, _tmp$16, _tmp$17, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, c, c1, msg, off, off1, ok, ptr, s;
 36920  		s = "";
 36921  		off1 = 0;
 36922  		ok = false;
 36923  		s = "";
 36924  		ptr = 0;
 36925  		Loop:
 36926  		while (true) {
 36927  			if (off >= msg.$length) {
 36928  				_tmp = "";
 36929  				_tmp$1 = msg.$length;
 36930  				_tmp$2 = false;
 36931  				s = _tmp;
 36932  				off1 = _tmp$1;
 36933  				ok = _tmp$2;
 36934  				return [s, off1, ok];
 36935  			}
 36936  			c = ((((off < 0 || off >= msg.$length) ? ($throwRuntimeError("index out of range"), undefined) : msg.$array[msg.$offset + off]) >> 0));
 36937  			off = off + (1) >> 0;
 36938  			_1 = c & 192;
 36939  			if (_1 === (0)) {
 36940  				if (c === 0) {
 36941  					break Loop;
 36942  				}
 36943  				if ((off + c >> 0) > msg.$length) {
 36944  					_tmp$3 = "";
 36945  					_tmp$4 = msg.$length;
 36946  					_tmp$5 = false;
 36947  					s = _tmp$3;
 36948  					off1 = _tmp$4;
 36949  					ok = _tmp$5;
 36950  					return [s, off1, ok];
 36951  				}
 36952  				s = s + (($bytesToString($subslice(msg, off, (off + c >> 0)))) + ".");
 36953  				off = off + (c) >> 0;
 36954  			} else if (_1 === (192)) {
 36955  				if (off >= msg.$length) {
 36956  					_tmp$6 = "";
 36957  					_tmp$7 = msg.$length;
 36958  					_tmp$8 = false;
 36959  					s = _tmp$6;
 36960  					off1 = _tmp$7;
 36961  					ok = _tmp$8;
 36962  					return [s, off1, ok];
 36963  				}
 36964  				c1 = ((off < 0 || off >= msg.$length) ? ($throwRuntimeError("index out of range"), undefined) : msg.$array[msg.$offset + off]);
 36965  				off = off + (1) >> 0;
 36966  				if (ptr === 0) {
 36967  					off1 = off;
 36968  				}
 36969  				ptr = ptr + (1) >> 0;
 36970  				if (ptr > 10) {
 36971  					_tmp$9 = "";
 36972  					_tmp$10 = msg.$length;
 36973  					_tmp$11 = false;
 36974  					s = _tmp$9;
 36975  					off1 = _tmp$10;
 36976  					ok = _tmp$11;
 36977  					return [s, off1, ok];
 36978  				}
 36979  				off = ((((c ^ 192) >> 0)) << 8 >> 0) | ((c1 >> 0));
 36980  			} else {
 36981  				_tmp$12 = "";
 36982  				_tmp$13 = msg.$length;
 36983  				_tmp$14 = false;
 36984  				s = _tmp$12;
 36985  				off1 = _tmp$13;
 36986  				ok = _tmp$14;
 36987  				return [s, off1, ok];
 36988  			}
 36989  		}
 36990  		if (s.length === 0) {
 36991  			s = ".";
 36992  		}
 36993  		if (ptr === 0) {
 36994  			off1 = off;
 36995  		}
 36996  		_tmp$15 = s;
 36997  		_tmp$16 = off1;
 36998  		_tmp$17 = true;
 36999  		s = _tmp$15;
 37000  		off1 = _tmp$16;
 37001  		ok = _tmp$17;
 37002  		return [s, off1, ok];
 37003  	};
 37004  	packStruct = function(any, msg, off) {
 37005  		var _r$9, _tmp, _tmp$1, _tmp$2, _tmp$3, any, msg, off, off1, ok, $s, $r;
 37006  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$9 = $f._r$9; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; any = $f.any; msg = $f.msg; off = $f.off; off1 = $f.off1; ok = $f.ok; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 37007  		msg = [msg];
 37008  		off = [off];
 37009  		ok = [ok];
 37010  		off1 = 0;
 37011  		ok[0] = false;
 37012  		_r$9 = any.Walk((function(msg, off, ok) { return function(field, name, tag) {
 37013  			var _1, _ref, _tuple, field, fv, fv$1, fv$2, fv$3, fv$4, i, i$1, n, name, s, tag, x, x$1, x$2, x$3;
 37014  			_ref = field;
 37015  			if ($assertType(_ref, ptrType$21, true)[1]) {
 37016  				fv$1 = _ref.$val;
 37017  				i = fv$1.$get();
 37018  				if ((off[0] + 2 >> 0) > msg[0].$length) {
 37019  					return false;
 37020  				}
 37021  				((off[0] < 0 || off[0] >= msg[0].$length) ? ($throwRuntimeError("index out of range"), undefined) : msg[0].$array[msg[0].$offset + off[0]] = (((i >>> 8 << 16 >>> 16) << 24 >>> 24)));
 37022  				(x = off[0] + 1 >> 0, ((x < 0 || x >= msg[0].$length) ? ($throwRuntimeError("index out of range"), undefined) : msg[0].$array[msg[0].$offset + x] = ((i << 24 >>> 24))));
 37023  				off[0] = off[0] + (2) >> 0;
 37024  			} else if ($assertType(_ref, ptrType$20, true)[1]) {
 37025  				fv$2 = _ref.$val;
 37026  				i$1 = fv$2.$get();
 37027  				((off[0] < 0 || off[0] >= msg[0].$length) ? ($throwRuntimeError("index out of range"), undefined) : msg[0].$array[msg[0].$offset + off[0]] = (((i$1 >>> 24 >>> 0) << 24 >>> 24)));
 37028  				(x$1 = off[0] + 1 >> 0, ((x$1 < 0 || x$1 >= msg[0].$length) ? ($throwRuntimeError("index out of range"), undefined) : msg[0].$array[msg[0].$offset + x$1] = (((i$1 >>> 16 >>> 0) << 24 >>> 24))));
 37029  				(x$2 = off[0] + 2 >> 0, ((x$2 < 0 || x$2 >= msg[0].$length) ? ($throwRuntimeError("index out of range"), undefined) : msg[0].$array[msg[0].$offset + x$2] = (((i$1 >>> 8 >>> 0) << 24 >>> 24))));
 37030  				(x$3 = off[0] + 3 >> 0, ((x$3 < 0 || x$3 >= msg[0].$length) ? ($throwRuntimeError("index out of range"), undefined) : msg[0].$array[msg[0].$offset + x$3] = ((i$1 << 24 >>> 24))));
 37031  				off[0] = off[0] + (4) >> 0;
 37032  			} else if ($assertType(_ref, sliceType$1, true)[1]) {
 37033  				fv$3 = _ref.$val;
 37034  				n = fv$3.$length;
 37035  				if ((off[0] + n >> 0) > msg[0].$length) {
 37036  					return false;
 37037  				}
 37038  				$copySlice($subslice(msg[0], off[0], (off[0] + n >> 0)), fv$3);
 37039  				off[0] = off[0] + (n) >> 0;
 37040  			} else if ($assertType(_ref, ptrType$22, true)[1]) {
 37041  				fv$4 = _ref.$val;
 37042  				s = fv$4.$get();
 37043  				_1 = tag;
 37044  				if (_1 === ("domain")) {
 37045  					_tuple = packDomainName(s, msg[0], off[0]);
 37046  					off[0] = _tuple[0];
 37047  					ok[0] = _tuple[1];
 37048  					if (!ok[0]) {
 37049  						return false;
 37050  					}
 37051  				} else if (_1 === ("")) {
 37052  					if (s.length > 255 || ((off[0] + 1 >> 0) + s.length >> 0) > msg[0].$length) {
 37053  						return false;
 37054  					}
 37055  					((off[0] < 0 || off[0] >= msg[0].$length) ? ($throwRuntimeError("index out of range"), undefined) : msg[0].$array[msg[0].$offset + off[0]] = ((s.length << 24 >>> 24)));
 37056  					off[0] = off[0] + (1) >> 0;
 37057  					off[0] = off[0] + ($copyString($subslice(msg[0], off[0]), s)) >> 0;
 37058  				} else {
 37059  					console.log("net: dns: unknown string tag", tag);
 37060  					return false;
 37061  				}
 37062  			} else {
 37063  				fv = _ref;
 37064  				console.log("net: dns: unknown packing type");
 37065  				return false;
 37066  			}
 37067  			return true;
 37068  		}; })(msg, off, ok)); /* */ $s = 1; case 1: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 37069  		ok[0] = _r$9;
 37070  		if (!ok[0]) {
 37071  			_tmp = msg[0].$length;
 37072  			_tmp$1 = false;
 37073  			off1 = _tmp;
 37074  			ok[0] = _tmp$1;
 37075  			$s = -1; return [off1, ok[0]];
 37076  		}
 37077  		_tmp$2 = off[0];
 37078  		_tmp$3 = true;
 37079  		off1 = _tmp$2;
 37080  		ok[0] = _tmp$3;
 37081  		$s = -1; return [off1, ok[0]];
 37082  		/* */ } return; } if ($f === undefined) { $f = { $blk: packStruct }; } $f._r$9 = _r$9; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f.any = any; $f.msg = msg; $f.off = off; $f.off1 = off1; $f.ok = ok; $f.$s = $s; $f.$r = $r; return $f;
 37083  	};
 37084  	unpackStruct = function(any, msg, off) {
 37085  		var _r$9, _tmp, _tmp$1, _tmp$2, _tmp$3, any, msg, off, off1, ok, $s, $r;
 37086  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$9 = $f._r$9; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; any = $f.any; msg = $f.msg; off = $f.off; off1 = $f.off1; ok = $f.ok; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 37087  		msg = [msg];
 37088  		off = [off];
 37089  		ok = [ok];
 37090  		off1 = 0;
 37091  		ok[0] = false;
 37092  		_r$9 = any.Walk((function(msg, off, ok) { return function(field, name, tag) {
 37093  			var _1, _ref, _tuple, b, field, fv, fv$1, fv$2, fv$3, fv$4, i, n, n$1, name, s, tag, x, x$1, x$2, x$3, x$4;
 37094  			_ref = field;
 37095  			if ($assertType(_ref, ptrType$21, true)[1]) {
 37096  				fv$1 = _ref.$val;
 37097  				if ((off[0] + 2 >> 0) > msg[0].$length) {
 37098  					return false;
 37099  				}
 37100  				fv$1.$set(((((((off[0] < 0 || off[0] >= msg[0].$length) ? ($throwRuntimeError("index out of range"), undefined) : msg[0].$array[msg[0].$offset + off[0]]) << 16 >>> 16)) << 8 << 16 >>> 16) | (((x = off[0] + 1 >> 0, ((x < 0 || x >= msg[0].$length) ? ($throwRuntimeError("index out of range"), undefined) : msg[0].$array[msg[0].$offset + x])) << 16 >>> 16))) >>> 0);
 37101  				off[0] = off[0] + (2) >> 0;
 37102  			} else if ($assertType(_ref, ptrType$20, true)[1]) {
 37103  				fv$2 = _ref.$val;
 37104  				if ((off[0] + 4 >> 0) > msg[0].$length) {
 37105  					return false;
 37106  				}
 37107  				fv$2.$set(((((((((((off[0] < 0 || off[0] >= msg[0].$length) ? ($throwRuntimeError("index out of range"), undefined) : msg[0].$array[msg[0].$offset + off[0]]) >>> 0)) << 24 >>> 0) | ((((x$1 = off[0] + 1 >> 0, ((x$1 < 0 || x$1 >= msg[0].$length) ? ($throwRuntimeError("index out of range"), undefined) : msg[0].$array[msg[0].$offset + x$1])) >>> 0)) << 16 >>> 0)) >>> 0) | ((((x$2 = off[0] + 2 >> 0, ((x$2 < 0 || x$2 >= msg[0].$length) ? ($throwRuntimeError("index out of range"), undefined) : msg[0].$array[msg[0].$offset + x$2])) >>> 0)) << 8 >>> 0)) >>> 0) | (((x$3 = off[0] + 3 >> 0, ((x$3 < 0 || x$3 >= msg[0].$length) ? ($throwRuntimeError("index out of range"), undefined) : msg[0].$array[msg[0].$offset + x$3])) >>> 0))) >>> 0);
 37108  				off[0] = off[0] + (4) >> 0;
 37109  			} else if ($assertType(_ref, sliceType$1, true)[1]) {
 37110  				fv$3 = _ref.$val;
 37111  				n = fv$3.$length;
 37112  				if ((off[0] + n >> 0) > msg[0].$length) {
 37113  					return false;
 37114  				}
 37115  				$copySlice(fv$3, $subslice(msg[0], off[0], (off[0] + n >> 0)));
 37116  				off[0] = off[0] + (n) >> 0;
 37117  			} else if ($assertType(_ref, ptrType$22, true)[1]) {
 37118  				fv$4 = _ref.$val;
 37119  				s = "";
 37120  				_1 = tag;
 37121  				if (_1 === ("domain")) {
 37122  					_tuple = unpackDomainName(msg[0], off[0]);
 37123  					s = _tuple[0];
 37124  					off[0] = _tuple[1];
 37125  					ok[0] = _tuple[2];
 37126  					if (!ok[0]) {
 37127  						return false;
 37128  					}
 37129  				} else if (_1 === ("")) {
 37130  					if (off[0] >= msg[0].$length || ((off[0] + 1 >> 0) + ((((off[0] < 0 || off[0] >= msg[0].$length) ? ($throwRuntimeError("index out of range"), undefined) : msg[0].$array[msg[0].$offset + off[0]]) >> 0)) >> 0) > msg[0].$length) {
 37131  						return false;
 37132  					}
 37133  					n$1 = ((((off[0] < 0 || off[0] >= msg[0].$length) ? ($throwRuntimeError("index out of range"), undefined) : msg[0].$array[msg[0].$offset + off[0]]) >> 0));
 37134  					off[0] = off[0] + (1) >> 0;
 37135  					b = $makeSlice(sliceType$1, n$1);
 37136  					i = 0;
 37137  					while (true) {
 37138  						if (!(i < n$1)) { break; }
 37139  						((i < 0 || i >= b.$length) ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + i] = (x$4 = off[0] + i >> 0, ((x$4 < 0 || x$4 >= msg[0].$length) ? ($throwRuntimeError("index out of range"), undefined) : msg[0].$array[msg[0].$offset + x$4])));
 37140  						i = i + (1) >> 0;
 37141  					}
 37142  					off[0] = off[0] + (n$1) >> 0;
 37143  					s = ($bytesToString(b));
 37144  				} else {
 37145  					console.log("net: dns: unknown string tag", tag);
 37146  					return false;
 37147  				}
 37148  				fv$4.$set(s);
 37149  			} else {
 37150  				fv = _ref;
 37151  				console.log("net: dns: unknown packing type");
 37152  				return false;
 37153  			}
 37154  			return true;
 37155  		}; })(msg, off, ok)); /* */ $s = 1; case 1: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 37156  		ok[0] = _r$9;
 37157  		if (!ok[0]) {
 37158  			_tmp = msg[0].$length;
 37159  			_tmp$1 = false;
 37160  			off1 = _tmp;
 37161  			ok[0] = _tmp$1;
 37162  			$s = -1; return [off1, ok[0]];
 37163  		}
 37164  		_tmp$2 = off[0];
 37165  		_tmp$3 = true;
 37166  		off1 = _tmp$2;
 37167  		ok[0] = _tmp$3;
 37168  		$s = -1; return [off1, ok[0]];
 37169  		/* */ } return; } if ($f === undefined) { $f = { $blk: unpackStruct }; } $f._r$9 = _r$9; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f.any = any; $f.msg = msg; $f.off = off; $f.off1 = off1; $f.ok = ok; $f.$s = $s; $f.$r = $r; return $f;
 37170  	};
 37171  	printStruct = function(any) {
 37172  		var _r$9, any, i, s, $s, $r;
 37173  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$9 = $f._r$9; any = $f.any; i = $f.i; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 37174  		i = [i];
 37175  		s = [s];
 37176  		s[0] = "{";
 37177  		i[0] = 0;
 37178  		_r$9 = any.Walk((function(i, s) { return function(val, name, tag) {
 37179  			var _1, _ref, i$1, i$2, i$3, name, tag, v, v$1, v$10, v$2, v$3, v$4, v$5, v$6, v$7, v$8, v$9, val, x, x$1;
 37180  			i[0] = i[0] + (1) >> 0;
 37181  			if (i[0] > 1) {
 37182  				s[0] = s[0] + (", ");
 37183  			}
 37184  			s[0] = s[0] + (name + "=");
 37185  			_1 = tag;
 37186  			if (_1 === ("ipv4")) {
 37187  				i$1 = $assertType(val, ptrType$20).$get();
 37188  				s[0] = s[0] + (IPv4((((i$1 >>> 24 >>> 0) << 24 >>> 24)), (((i$1 >>> 16 >>> 0) << 24 >>> 24)), (((i$1 >>> 8 >>> 0) << 24 >>> 24)), ((i$1 << 24 >>> 24))).String());
 37189  			} else if (_1 === ("ipv6")) {
 37190  				i$2 = $assertType(val, sliceType$1);
 37191  				s[0] = s[0] + (($subslice(new IP(i$2.$array), i$2.$offset, i$2.$offset + i$2.$length)).String());
 37192  			} else {
 37193  				i$3 = new $Int64(0, 0);
 37194  				_ref = val;
 37195  				if ($assertType(_ref, ptrType$22, true)[1]) {
 37196  					v$1 = _ref.$val;
 37197  					s[0] = s[0] + (v$1.$get());
 37198  					return true;
 37199  				} else if ($assertType(_ref, sliceType$1, true)[1]) {
 37200  					v$2 = _ref.$val;
 37201  					s[0] = s[0] + (($bytesToString(v$2)));
 37202  					return true;
 37203  				} else if ($assertType(_ref, ptrType$23, true)[1]) {
 37204  					v$3 = _ref.$val;
 37205  					if (v$3.$get()) {
 37206  						s[0] = s[0] + ("true");
 37207  					} else {
 37208  						s[0] = s[0] + ("false");
 37209  					}
 37210  					return true;
 37211  				} else if ($assertType(_ref, ptrType$24, true)[1]) {
 37212  					v$4 = _ref.$val;
 37213  					i$3 = (new $Int64(0, v$4.$get()));
 37214  				} else if ($assertType(_ref, ptrType$25, true)[1]) {
 37215  					v$5 = _ref.$val;
 37216  					i$3 = (new $Int64(0, v$5.$get()));
 37217  				} else if ($assertType(_ref, ptrType$26, true)[1]) {
 37218  					v$6 = _ref.$val;
 37219  					i$3 = (new $Int64(0, v$6.$get()));
 37220  				} else if ($assertType(_ref, ptrType$21, true)[1]) {
 37221  					v$7 = _ref.$val;
 37222  					i$3 = (new $Int64(0, v$7.$get()));
 37223  				} else if ($assertType(_ref, ptrType$20, true)[1]) {
 37224  					v$8 = _ref.$val;
 37225  					i$3 = (new $Int64(0, v$8.$get()));
 37226  				} else if ($assertType(_ref, ptrType$27, true)[1]) {
 37227  					v$9 = _ref.$val;
 37228  					i$3 = ((x = v$9.$get(), new $Int64(x.$high, x.$low)));
 37229  				} else if ($assertType(_ref, ptrType$28, true)[1]) {
 37230  					v$10 = _ref.$val;
 37231  					i$3 = ((x$1 = v$10.$get(), new $Int64(0, x$1.constructor === Number ? x$1 : 1)));
 37232  				} else {
 37233  					v = _ref;
 37234  					s[0] = s[0] + ("<unknown type>");
 37235  					return true;
 37236  				}
 37237  				s[0] = s[0] + (itoa((((i$3.$low + ((i$3.$high >> 31) * 4294967296)) >> 0))));
 37238  			}
 37239  			return true;
 37240  		}; })(i, s)); /* */ $s = 1; case 1: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 37241  		_r$9;
 37242  		s[0] = s[0] + ("}");
 37243  		$s = -1; return s[0];
 37244  		/* */ } return; } if ($f === undefined) { $f = { $blk: printStruct }; } $f._r$9 = _r$9; $f.any = any; $f.i = i; $f.s = s; $f.$s = $s; $f.$r = $r; return $f;
 37245  	};
 37246  	packRR = function(rr, msg, off) {
 37247  		var _r$10, _r$11, _r$12, _r$13, _r$14, _r$9, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tuple, _tuple$1, msg, off, off1, off2, ok, rr, $s, $r;
 37248  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$10 = $f._r$10; _r$11 = $f._r$11; _r$12 = $f._r$12; _r$13 = $f._r$13; _r$14 = $f._r$14; _r$9 = $f._r$9; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tmp$4 = $f._tmp$4; _tmp$5 = $f._tmp$5; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; msg = $f.msg; off = $f.off; off1 = $f.off1; off2 = $f.off2; ok = $f.ok; rr = $f.rr; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 37249  		off2 = 0;
 37250  		ok = false;
 37251  		off1 = 0;
 37252  		_r$9 = rr.Header(); /* */ $s = 1; case 1: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 37253  		_r$10 = packStruct(_r$9, msg, off); /* */ $s = 2; case 2: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
 37254  		_tuple = _r$10;
 37255  		off1 = _tuple[0];
 37256  		ok = _tuple[1];
 37257  		if (!ok) {
 37258  			_tmp = msg.$length;
 37259  			_tmp$1 = false;
 37260  			off2 = _tmp;
 37261  			ok = _tmp$1;
 37262  			$s = -1; return [off2, ok];
 37263  		}
 37264  		_r$11 = packStruct(rr, msg, off); /* */ $s = 3; case 3: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; }
 37265  		_tuple$1 = _r$11;
 37266  		off2 = _tuple$1[0];
 37267  		ok = _tuple$1[1];
 37268  		if (!ok) {
 37269  			_tmp$2 = msg.$length;
 37270  			_tmp$3 = false;
 37271  			off2 = _tmp$2;
 37272  			ok = _tmp$3;
 37273  			$s = -1; return [off2, ok];
 37274  		}
 37275  		_r$12 = rr.Header(); /* */ $s = 4; case 4: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; }
 37276  		_r$12.Rdlength = (((off2 - off1 >> 0) << 16 >>> 16));
 37277  		_r$13 = rr.Header(); /* */ $s = 5; case 5: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; }
 37278  		_r$14 = packStruct(_r$13, msg, off); /* */ $s = 6; case 6: if($c) { $c = false; _r$14 = _r$14.$blk(); } if (_r$14 && _r$14.$blk !== undefined) { break s; }
 37279  		_r$14;
 37280  		_tmp$4 = off2;
 37281  		_tmp$5 = true;
 37282  		off2 = _tmp$4;
 37283  		ok = _tmp$5;
 37284  		$s = -1; return [off2, ok];
 37285  		/* */ } return; } if ($f === undefined) { $f = { $blk: packRR }; } $f._r$10 = _r$10; $f._r$11 = _r$11; $f._r$12 = _r$12; $f._r$13 = _r$13; $f._r$14 = _r$14; $f._r$9 = _r$9; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tmp$4 = _tmp$4; $f._tmp$5 = _tmp$5; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.msg = msg; $f.off = off; $f.off1 = off1; $f.off2 = off2; $f.ok = ok; $f.rr = rr; $f.$s = $s; $f.$r = $r; return $f;
 37286  	};
 37287  	unpackRR = function(msg, off) {
 37288  		var _entry, _r$10, _r$11, _r$9, _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, _tuple$1, _tuple$2, end, h, known, mk, msg, off, off0, off1, ok, rr, $s, $r;
 37289  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _entry = $f._entry; _r$10 = $f._r$10; _r$11 = $f._r$11; _r$9 = $f._r$9; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$10 = $f._tmp$10; _tmp$11 = $f._tmp$11; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tmp$4 = $f._tmp$4; _tmp$5 = $f._tmp$5; _tmp$6 = $f._tmp$6; _tmp$7 = $f._tmp$7; _tmp$8 = $f._tmp$8; _tmp$9 = $f._tmp$9; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; end = $f.end; h = $f.h; known = $f.known; mk = $f.mk; msg = $f.msg; off = $f.off; off0 = $f.off0; off1 = $f.off1; ok = $f.ok; rr = $f.rr; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 37290  		h = [h];
 37291  		rr = $ifaceNil;
 37292  		off1 = 0;
 37293  		ok = false;
 37294  		h[0] = new dnsRR_Header.ptr("", 0, 0, 0, 0);
 37295  		off0 = off;
 37296  		_r$9 = unpackStruct(h[0], msg, off); /* */ $s = 1; case 1: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 37297  		_tuple = _r$9;
 37298  		off = _tuple[0];
 37299  		ok = _tuple[1];
 37300  		if (!ok) {
 37301  			_tmp = $ifaceNil;
 37302  			_tmp$1 = msg.$length;
 37303  			_tmp$2 = false;
 37304  			rr = _tmp;
 37305  			off1 = _tmp$1;
 37306  			ok = _tmp$2;
 37307  			$s = -1; return [rr, off1, ok];
 37308  		}
 37309  		end = off + ((h[0].Rdlength >> 0)) >> 0;
 37310  		_tuple$1 = (_entry = rr_mk[$Int.keyFor(((h[0].Rrtype >> 0)))], _entry !== undefined ? [_entry.v, true] : [$throwNilPointerError, false]);
 37311  		mk = _tuple$1[0];
 37312  		known = _tuple$1[1];
 37313  		if (!known) {
 37314  			_tmp$3 = h[0];
 37315  			_tmp$4 = end;
 37316  			_tmp$5 = true;
 37317  			rr = _tmp$3;
 37318  			off1 = _tmp$4;
 37319  			ok = _tmp$5;
 37320  			$s = -1; return [rr, off1, ok];
 37321  		}
 37322  		_r$10 = mk(); /* */ $s = 2; case 2: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
 37323  		rr = _r$10;
 37324  		_r$11 = unpackStruct(rr, msg, off0); /* */ $s = 3; case 3: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; }
 37325  		_tuple$2 = _r$11;
 37326  		off = _tuple$2[0];
 37327  		ok = _tuple$2[1];
 37328  		if (!((off === end))) {
 37329  			_tmp$6 = h[0];
 37330  			_tmp$7 = end;
 37331  			_tmp$8 = true;
 37332  			rr = _tmp$6;
 37333  			off1 = _tmp$7;
 37334  			ok = _tmp$8;
 37335  			$s = -1; return [rr, off1, ok];
 37336  		}
 37337  		_tmp$9 = rr;
 37338  		_tmp$10 = off;
 37339  		_tmp$11 = ok;
 37340  		rr = _tmp$9;
 37341  		off1 = _tmp$10;
 37342  		ok = _tmp$11;
 37343  		$s = -1; return [rr, off1, ok];
 37344  		/* */ } return; } if ($f === undefined) { $f = { $blk: unpackRR }; } $f._entry = _entry; $f._r$10 = _r$10; $f._r$11 = _r$11; $f._r$9 = _r$9; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$10 = _tmp$10; $f._tmp$11 = _tmp$11; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tmp$4 = _tmp$4; $f._tmp$5 = _tmp$5; $f._tmp$6 = _tmp$6; $f._tmp$7 = _tmp$7; $f._tmp$8 = _tmp$8; $f._tmp$9 = _tmp$9; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f.end = end; $f.h = h; $f.known = known; $f.mk = mk; $f.msg = msg; $f.off = off; $f.off0 = off0; $f.off1 = off1; $f.ok = ok; $f.rr = rr; $f.$s = $s; $f.$r = $r; return $f;
 37345  	};
 37346  	dnsMsgHdr.ptr.prototype.Walk = function(f) {
 37347  		var _r$10, _r$11, _r$12, _r$13, _r$14, _r$15, _r$16, _r$9, _v, _v$1, _v$2, _v$3, _v$4, _v$5, _v$6, f, h, $s, $r;
 37348  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$10 = $f._r$10; _r$11 = $f._r$11; _r$12 = $f._r$12; _r$13 = $f._r$13; _r$14 = $f._r$14; _r$15 = $f._r$15; _r$16 = $f._r$16; _r$9 = $f._r$9; _v = $f._v; _v$1 = $f._v$1; _v$2 = $f._v$2; _v$3 = $f._v$3; _v$4 = $f._v$4; _v$5 = $f._v$5; _v$6 = $f._v$6; f = $f.f; h = $f.h; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 37349  		h = this;
 37350  		_r$9 = f((h.$ptr_id || (h.$ptr_id = new ptrType$21(function() { return this.$target.id; }, function($v) { this.$target.id = $v; }, h))), "id", ""); /* */ $s = 8; case 8: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 37351  		if (!(_r$9)) { _v$6 = false; $s = 7; continue s; }
 37352  		_r$10 = f((h.$ptr_response || (h.$ptr_response = new ptrType$23(function() { return this.$target.response; }, function($v) { this.$target.response = $v; }, h))), "response", ""); /* */ $s = 9; case 9: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
 37353  		_v$6 = _r$10; case 7:
 37354  		if (!(_v$6)) { _v$5 = false; $s = 6; continue s; }
 37355  		_r$11 = f((h.$ptr_opcode || (h.$ptr_opcode = new ptrType$24(function() { return this.$target.opcode; }, function($v) { this.$target.opcode = $v; }, h))), "opcode", ""); /* */ $s = 10; case 10: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; }
 37356  		_v$5 = _r$11; case 6:
 37357  		if (!(_v$5)) { _v$4 = false; $s = 5; continue s; }
 37358  		_r$12 = f((h.$ptr_authoritative || (h.$ptr_authoritative = new ptrType$23(function() { return this.$target.authoritative; }, function($v) { this.$target.authoritative = $v; }, h))), "authoritative", ""); /* */ $s = 11; case 11: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; }
 37359  		_v$4 = _r$12; case 5:
 37360  		if (!(_v$4)) { _v$3 = false; $s = 4; continue s; }
 37361  		_r$13 = f((h.$ptr_truncated || (h.$ptr_truncated = new ptrType$23(function() { return this.$target.truncated; }, function($v) { this.$target.truncated = $v; }, h))), "truncated", ""); /* */ $s = 12; case 12: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; }
 37362  		_v$3 = _r$13; case 4:
 37363  		if (!(_v$3)) { _v$2 = false; $s = 3; continue s; }
 37364  		_r$14 = f((h.$ptr_recursion_desired || (h.$ptr_recursion_desired = new ptrType$23(function() { return this.$target.recursion_desired; }, function($v) { this.$target.recursion_desired = $v; }, h))), "recursion_desired", ""); /* */ $s = 13; case 13: if($c) { $c = false; _r$14 = _r$14.$blk(); } if (_r$14 && _r$14.$blk !== undefined) { break s; }
 37365  		_v$2 = _r$14; case 3:
 37366  		if (!(_v$2)) { _v$1 = false; $s = 2; continue s; }
 37367  		_r$15 = f((h.$ptr_recursion_available || (h.$ptr_recursion_available = new ptrType$23(function() { return this.$target.recursion_available; }, function($v) { this.$target.recursion_available = $v; }, h))), "recursion_available", ""); /* */ $s = 14; case 14: if($c) { $c = false; _r$15 = _r$15.$blk(); } if (_r$15 && _r$15.$blk !== undefined) { break s; }
 37368  		_v$1 = _r$15; case 2:
 37369  		if (!(_v$1)) { _v = false; $s = 1; continue s; }
 37370  		_r$16 = f((h.$ptr_rcode || (h.$ptr_rcode = new ptrType$24(function() { return this.$target.rcode; }, function($v) { this.$target.rcode = $v; }, h))), "rcode", ""); /* */ $s = 15; case 15: if($c) { $c = false; _r$16 = _r$16.$blk(); } if (_r$16 && _r$16.$blk !== undefined) { break s; }
 37371  		_v = _r$16; case 1:
 37372  		$s = -1; return _v;
 37373  		/* */ } return; } if ($f === undefined) { $f = { $blk: dnsMsgHdr.ptr.prototype.Walk }; } $f._r$10 = _r$10; $f._r$11 = _r$11; $f._r$12 = _r$12; $f._r$13 = _r$13; $f._r$14 = _r$14; $f._r$15 = _r$15; $f._r$16 = _r$16; $f._r$9 = _r$9; $f._v = _v; $f._v$1 = _v$1; $f._v$2 = _v$2; $f._v$3 = _v$3; $f._v$4 = _v$4; $f._v$5 = _v$5; $f._v$6 = _v$6; $f.f = f; $f.h = h; $f.$s = $s; $f.$r = $r; return $f;
 37374  	};
 37375  	dnsMsgHdr.prototype.Walk = function(f) { return this.$val.Walk(f); };
 37376  	dnsMsg.ptr.prototype.Pack = function() {
 37377  		var _r$10, _r$11, _r$12, _r$13, _r$9, _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, answer$1, dh, dns, extra, i, i$1, i$2, i$3, msg, ns, off, ok, question, $s, $r;
 37378  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$10 = $f._r$10; _r$11 = $f._r$11; _r$12 = $f._r$12; _r$13 = $f._r$13; _r$9 = $f._r$9; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$10 = $f._tmp$10; _tmp$11 = $f._tmp$11; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tmp$4 = $f._tmp$4; _tmp$5 = $f._tmp$5; _tmp$6 = $f._tmp$6; _tmp$7 = $f._tmp$7; _tmp$8 = $f._tmp$8; _tmp$9 = $f._tmp$9; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; _tuple$4 = $f._tuple$4; answer$1 = $f.answer$1; dh = $f.dh; dns = $f.dns; extra = $f.extra; i = $f.i; i$1 = $f.i$1; i$2 = $f.i$2; i$3 = $f.i$3; msg = $f.msg; ns = $f.ns; off = $f.off; ok = $f.ok; question = $f.question; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 37379  		dh = [dh];
 37380  		msg = sliceType$1.nil;
 37381  		ok = false;
 37382  		dns = this;
 37383  		dh[0] = new dnsHeader.ptr(0, 0, 0, 0, 0, 0);
 37384  		dh[0].Id = dns.dnsMsgHdr.id;
 37385  		dh[0].Bits = ((((dns.dnsMsgHdr.opcode << 16 >>> 16)) << 11 << 16 >>> 16) | ((dns.dnsMsgHdr.rcode << 16 >>> 16))) >>> 0;
 37386  		if (dns.dnsMsgHdr.recursion_available) {
 37387  			dh[0].Bits = (dh[0].Bits | (128)) >>> 0;
 37388  		}
 37389  		if (dns.dnsMsgHdr.recursion_desired) {
 37390  			dh[0].Bits = (dh[0].Bits | (256)) >>> 0;
 37391  		}
 37392  		if (dns.dnsMsgHdr.truncated) {
 37393  			dh[0].Bits = (dh[0].Bits | (512)) >>> 0;
 37394  		}
 37395  		if (dns.dnsMsgHdr.authoritative) {
 37396  			dh[0].Bits = (dh[0].Bits | (1024)) >>> 0;
 37397  		}
 37398  		if (dns.dnsMsgHdr.response) {
 37399  			dh[0].Bits = (dh[0].Bits | (32768)) >>> 0;
 37400  		}
 37401  		question = dns.question;
 37402  		answer$1 = dns.answer;
 37403  		ns = dns.ns;
 37404  		extra = dns.extra;
 37405  		dh[0].Qdcount = ((question.$length << 16 >>> 16));
 37406  		dh[0].Ancount = ((answer$1.$length << 16 >>> 16));
 37407  		dh[0].Nscount = ((ns.$length << 16 >>> 16));
 37408  		dh[0].Arcount = ((extra.$length << 16 >>> 16));
 37409  		msg = $makeSlice(sliceType$1, 2000);
 37410  		off = 0;
 37411  		_r$9 = packStruct(dh[0], msg, off); /* */ $s = 1; case 1: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 37412  		_tuple = _r$9;
 37413  		off = _tuple[0];
 37414  		ok = _tuple[1];
 37415  		if (!ok) {
 37416  			_tmp = sliceType$1.nil;
 37417  			_tmp$1 = false;
 37418  			msg = _tmp;
 37419  			ok = _tmp$1;
 37420  			$s = -1; return [msg, ok];
 37421  		}
 37422  		i = 0;
 37423  		/* while (true) { */ case 2:
 37424  			/* if (!(i < question.$length)) { break; } */ if(!(i < question.$length)) { $s = 3; continue; }
 37425  			_r$10 = packStruct(((i < 0 || i >= question.$length) ? ($throwRuntimeError("index out of range"), undefined) : question.$array[question.$offset + i]), msg, off); /* */ $s = 4; case 4: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
 37426  			_tuple$1 = _r$10;
 37427  			off = _tuple$1[0];
 37428  			ok = _tuple$1[1];
 37429  			if (!ok) {
 37430  				_tmp$2 = sliceType$1.nil;
 37431  				_tmp$3 = false;
 37432  				msg = _tmp$2;
 37433  				ok = _tmp$3;
 37434  				$s = -1; return [msg, ok];
 37435  			}
 37436  			i = i + (1) >> 0;
 37437  		/* } */ $s = 2; continue; case 3:
 37438  		i$1 = 0;
 37439  		/* while (true) { */ case 5:
 37440  			/* if (!(i$1 < answer$1.$length)) { break; } */ if(!(i$1 < answer$1.$length)) { $s = 6; continue; }
 37441  			_r$11 = packRR(((i$1 < 0 || i$1 >= answer$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : answer$1.$array[answer$1.$offset + i$1]), msg, off); /* */ $s = 7; case 7: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; }
 37442  			_tuple$2 = _r$11;
 37443  			off = _tuple$2[0];
 37444  			ok = _tuple$2[1];
 37445  			if (!ok) {
 37446  				_tmp$4 = sliceType$1.nil;
 37447  				_tmp$5 = false;
 37448  				msg = _tmp$4;
 37449  				ok = _tmp$5;
 37450  				$s = -1; return [msg, ok];
 37451  			}
 37452  			i$1 = i$1 + (1) >> 0;
 37453  		/* } */ $s = 5; continue; case 6:
 37454  		i$2 = 0;
 37455  		/* while (true) { */ case 8:
 37456  			/* if (!(i$2 < ns.$length)) { break; } */ if(!(i$2 < ns.$length)) { $s = 9; continue; }
 37457  			_r$12 = packRR(((i$2 < 0 || i$2 >= ns.$length) ? ($throwRuntimeError("index out of range"), undefined) : ns.$array[ns.$offset + i$2]), msg, off); /* */ $s = 10; case 10: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; }
 37458  			_tuple$3 = _r$12;
 37459  			off = _tuple$3[0];
 37460  			ok = _tuple$3[1];
 37461  			if (!ok) {
 37462  				_tmp$6 = sliceType$1.nil;
 37463  				_tmp$7 = false;
 37464  				msg = _tmp$6;
 37465  				ok = _tmp$7;
 37466  				$s = -1; return [msg, ok];
 37467  			}
 37468  			i$2 = i$2 + (1) >> 0;
 37469  		/* } */ $s = 8; continue; case 9:
 37470  		i$3 = 0;
 37471  		/* while (true) { */ case 11:
 37472  			/* if (!(i$3 < extra.$length)) { break; } */ if(!(i$3 < extra.$length)) { $s = 12; continue; }
 37473  			_r$13 = packRR(((i$3 < 0 || i$3 >= extra.$length) ? ($throwRuntimeError("index out of range"), undefined) : extra.$array[extra.$offset + i$3]), msg, off); /* */ $s = 13; case 13: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; }
 37474  			_tuple$4 = _r$13;
 37475  			off = _tuple$4[0];
 37476  			ok = _tuple$4[1];
 37477  			if (!ok) {
 37478  				_tmp$8 = sliceType$1.nil;
 37479  				_tmp$9 = false;
 37480  				msg = _tmp$8;
 37481  				ok = _tmp$9;
 37482  				$s = -1; return [msg, ok];
 37483  			}
 37484  			i$3 = i$3 + (1) >> 0;
 37485  		/* } */ $s = 11; continue; case 12:
 37486  		_tmp$10 = $subslice(msg, 0, off);
 37487  		_tmp$11 = true;
 37488  		msg = _tmp$10;
 37489  		ok = _tmp$11;
 37490  		$s = -1; return [msg, ok];
 37491  		/* */ } return; } if ($f === undefined) { $f = { $blk: dnsMsg.ptr.prototype.Pack }; } $f._r$10 = _r$10; $f._r$11 = _r$11; $f._r$12 = _r$12; $f._r$13 = _r$13; $f._r$9 = _r$9; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$10 = _tmp$10; $f._tmp$11 = _tmp$11; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tmp$4 = _tmp$4; $f._tmp$5 = _tmp$5; $f._tmp$6 = _tmp$6; $f._tmp$7 = _tmp$7; $f._tmp$8 = _tmp$8; $f._tmp$9 = _tmp$9; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f._tuple$4 = _tuple$4; $f.answer$1 = answer$1; $f.dh = dh; $f.dns = dns; $f.extra = extra; $f.i = i; $f.i$1 = i$1; $f.i$2 = i$2; $f.i$3 = i$3; $f.msg = msg; $f.ns = ns; $f.off = off; $f.ok = ok; $f.question = question; $f.$s = $s; $f.$r = $r; return $f;
 37492  	};
 37493  	dnsMsg.prototype.Pack = function() { return this.$val.Pack(); };
 37494  	dnsMsg.ptr.prototype.Unpack = function(msg) {
 37495  		var _r$10, _r$11, _r$12, _r$13, _r$9, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, dh, dns, i, i$1, i$2, i$3, msg, off, ok, rec, x, $s, $r;
 37496  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$10 = $f._r$10; _r$11 = $f._r$11; _r$12 = $f._r$12; _r$13 = $f._r$13; _r$9 = $f._r$9; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; _tuple$4 = $f._tuple$4; dh = $f.dh; dns = $f.dns; i = $f.i; i$1 = $f.i$1; i$2 = $f.i$2; i$3 = $f.i$3; msg = $f.msg; off = $f.off; ok = $f.ok; rec = $f.rec; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 37497  		dh = [dh];
 37498  		dns = this;
 37499  		dh[0] = new dnsHeader.ptr(0, 0, 0, 0, 0, 0);
 37500  		off = 0;
 37501  		ok = false;
 37502  		_r$9 = unpackStruct(dh[0], msg, off); /* */ $s = 1; case 1: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 37503  		_tuple = _r$9;
 37504  		off = _tuple[0];
 37505  		ok = _tuple[1];
 37506  		if (!ok) {
 37507  			$s = -1; return false;
 37508  		}
 37509  		dns.dnsMsgHdr.id = dh[0].Id;
 37510  		dns.dnsMsgHdr.response = !(((((dh[0].Bits & 32768) >>> 0)) === 0));
 37511  		dns.dnsMsgHdr.opcode = (((dh[0].Bits >>> 11 << 16 >>> 16) >> 0)) & 15;
 37512  		dns.dnsMsgHdr.authoritative = !(((((dh[0].Bits & 1024) >>> 0)) === 0));
 37513  		dns.dnsMsgHdr.truncated = !(((((dh[0].Bits & 512) >>> 0)) === 0));
 37514  		dns.dnsMsgHdr.recursion_desired = !(((((dh[0].Bits & 256) >>> 0)) === 0));
 37515  		dns.dnsMsgHdr.recursion_available = !(((((dh[0].Bits & 128) >>> 0)) === 0));
 37516  		dns.dnsMsgHdr.rcode = ((((dh[0].Bits & 15) >>> 0) >> 0));
 37517  		dns.question = $makeSlice(sliceType$7, dh[0].Qdcount);
 37518  		dns.answer = $makeSlice(sliceType$6, 0, dh[0].Ancount);
 37519  		dns.ns = $makeSlice(sliceType$6, 0, dh[0].Nscount);
 37520  		dns.extra = $makeSlice(sliceType$6, 0, dh[0].Arcount);
 37521  		rec = $ifaceNil;
 37522  		i = 0;
 37523  		/* while (true) { */ case 2:
 37524  			/* if (!(i < dns.question.$length)) { break; } */ if(!(i < dns.question.$length)) { $s = 3; continue; }
 37525  			_r$10 = unpackStruct((x = dns.question, ((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i])), msg, off); /* */ $s = 4; case 4: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
 37526  			_tuple$1 = _r$10;
 37527  			off = _tuple$1[0];
 37528  			ok = _tuple$1[1];
 37529  			if (!ok) {
 37530  				$s = -1; return false;
 37531  			}
 37532  			i = i + (1) >> 0;
 37533  		/* } */ $s = 2; continue; case 3:
 37534  		i$1 = 0;
 37535  		/* while (true) { */ case 5:
 37536  			/* if (!(i$1 < ((dh[0].Ancount >> 0)))) { break; } */ if(!(i$1 < ((dh[0].Ancount >> 0)))) { $s = 6; continue; }
 37537  			_r$11 = unpackRR(msg, off); /* */ $s = 7; case 7: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; }
 37538  			_tuple$2 = _r$11;
 37539  			rec = _tuple$2[0];
 37540  			off = _tuple$2[1];
 37541  			ok = _tuple$2[2];
 37542  			if (!ok) {
 37543  				$s = -1; return false;
 37544  			}
 37545  			dns.answer = $append(dns.answer, rec);
 37546  			i$1 = i$1 + (1) >> 0;
 37547  		/* } */ $s = 5; continue; case 6:
 37548  		i$2 = 0;
 37549  		/* while (true) { */ case 8:
 37550  			/* if (!(i$2 < ((dh[0].Nscount >> 0)))) { break; } */ if(!(i$2 < ((dh[0].Nscount >> 0)))) { $s = 9; continue; }
 37551  			_r$12 = unpackRR(msg, off); /* */ $s = 10; case 10: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; }
 37552  			_tuple$3 = _r$12;
 37553  			rec = _tuple$3[0];
 37554  			off = _tuple$3[1];
 37555  			ok = _tuple$3[2];
 37556  			if (!ok) {
 37557  				$s = -1; return false;
 37558  			}
 37559  			dns.ns = $append(dns.ns, rec);
 37560  			i$2 = i$2 + (1) >> 0;
 37561  		/* } */ $s = 8; continue; case 9:
 37562  		i$3 = 0;
 37563  		/* while (true) { */ case 11:
 37564  			/* if (!(i$3 < ((dh[0].Arcount >> 0)))) { break; } */ if(!(i$3 < ((dh[0].Arcount >> 0)))) { $s = 12; continue; }
 37565  			_r$13 = unpackRR(msg, off); /* */ $s = 13; case 13: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; }
 37566  			_tuple$4 = _r$13;
 37567  			rec = _tuple$4[0];
 37568  			off = _tuple$4[1];
 37569  			ok = _tuple$4[2];
 37570  			if (!ok) {
 37571  				$s = -1; return false;
 37572  			}
 37573  			dns.extra = $append(dns.extra, rec);
 37574  			i$3 = i$3 + (1) >> 0;
 37575  		/* } */ $s = 11; continue; case 12:
 37576  		$s = -1; return true;
 37577  		/* */ } return; } if ($f === undefined) { $f = { $blk: dnsMsg.ptr.prototype.Unpack }; } $f._r$10 = _r$10; $f._r$11 = _r$11; $f._r$12 = _r$12; $f._r$13 = _r$13; $f._r$9 = _r$9; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f._tuple$4 = _tuple$4; $f.dh = dh; $f.dns = dns; $f.i = i; $f.i$1 = i$1; $f.i$2 = i$2; $f.i$3 = i$3; $f.msg = msg; $f.off = off; $f.ok = ok; $f.rec = rec; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
 37578  	};
 37579  	dnsMsg.prototype.Unpack = function(msg) { return this.$val.Unpack(msg); };
 37580  	dnsMsg.ptr.prototype.String = function() {
 37581  		var _r$10, _r$11, _r$12, _r$13, _r$9, dns, i, i$1, i$2, i$3, s, x, x$1, x$2, x$3, $s, $r;
 37582  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$10 = $f._r$10; _r$11 = $f._r$11; _r$12 = $f._r$12; _r$13 = $f._r$13; _r$9 = $f._r$9; dns = $f.dns; i = $f.i; i$1 = $f.i$1; i$2 = $f.i$2; i$3 = $f.i$3; s = $f.s; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; x$3 = $f.x$3; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 37583  		dns = this;
 37584  		_r$9 = printStruct(dns.dnsMsgHdr); /* */ $s = 1; case 1: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 37585  		s = "DNS: " + _r$9 + "\n";
 37586  		/* */ if (dns.question.$length > 0) { $s = 2; continue; }
 37587  		/* */ $s = 3; continue;
 37588  		/* if (dns.question.$length > 0) { */ case 2:
 37589  			s = s + ("-- Questions\n");
 37590  			i = 0;
 37591  			/* while (true) { */ case 4:
 37592  				/* if (!(i < dns.question.$length)) { break; } */ if(!(i < dns.question.$length)) { $s = 5; continue; }
 37593  				_r$10 = printStruct((x = dns.question, ((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i]))); /* */ $s = 6; case 6: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
 37594  				s = s + (_r$10 + "\n");
 37595  				i = i + (1) >> 0;
 37596  			/* } */ $s = 4; continue; case 5:
 37597  		/* } */ case 3:
 37598  		/* */ if (dns.answer.$length > 0) { $s = 7; continue; }
 37599  		/* */ $s = 8; continue;
 37600  		/* if (dns.answer.$length > 0) { */ case 7:
 37601  			s = s + ("-- Answers\n");
 37602  			i$1 = 0;
 37603  			/* while (true) { */ case 9:
 37604  				/* if (!(i$1 < dns.answer.$length)) { break; } */ if(!(i$1 < dns.answer.$length)) { $s = 10; continue; }
 37605  				_r$11 = printStruct((x$1 = dns.answer, ((i$1 < 0 || i$1 >= x$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + i$1]))); /* */ $s = 11; case 11: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; }
 37606  				s = s + (_r$11 + "\n");
 37607  				i$1 = i$1 + (1) >> 0;
 37608  			/* } */ $s = 9; continue; case 10:
 37609  		/* } */ case 8:
 37610  		/* */ if (dns.ns.$length > 0) { $s = 12; continue; }
 37611  		/* */ $s = 13; continue;
 37612  		/* if (dns.ns.$length > 0) { */ case 12:
 37613  			s = s + ("-- Name servers\n");
 37614  			i$2 = 0;
 37615  			/* while (true) { */ case 14:
 37616  				/* if (!(i$2 < dns.ns.$length)) { break; } */ if(!(i$2 < dns.ns.$length)) { $s = 15; continue; }
 37617  				_r$12 = printStruct((x$2 = dns.ns, ((i$2 < 0 || i$2 >= x$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + i$2]))); /* */ $s = 16; case 16: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; }
 37618  				s = s + (_r$12 + "\n");
 37619  				i$2 = i$2 + (1) >> 0;
 37620  			/* } */ $s = 14; continue; case 15:
 37621  		/* } */ case 13:
 37622  		/* */ if (dns.extra.$length > 0) { $s = 17; continue; }
 37623  		/* */ $s = 18; continue;
 37624  		/* if (dns.extra.$length > 0) { */ case 17:
 37625  			s = s + ("-- Extra\n");
 37626  			i$3 = 0;
 37627  			/* while (true) { */ case 19:
 37628  				/* if (!(i$3 < dns.extra.$length)) { break; } */ if(!(i$3 < dns.extra.$length)) { $s = 20; continue; }
 37629  				_r$13 = printStruct((x$3 = dns.extra, ((i$3 < 0 || i$3 >= x$3.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$3.$array[x$3.$offset + i$3]))); /* */ $s = 21; case 21: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; }
 37630  				s = s + (_r$13 + "\n");
 37631  				i$3 = i$3 + (1) >> 0;
 37632  			/* } */ $s = 19; continue; case 20:
 37633  		/* } */ case 18:
 37634  		$s = -1; return s;
 37635  		/* */ } return; } if ($f === undefined) { $f = { $blk: dnsMsg.ptr.prototype.String }; } $f._r$10 = _r$10; $f._r$11 = _r$11; $f._r$12 = _r$12; $f._r$13 = _r$13; $f._r$9 = _r$9; $f.dns = dns; $f.i = i; $f.i$1 = i$1; $f.i$2 = i$2; $f.i$3 = i$3; $f.s = s; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.x$3 = x$3; $f.$s = $s; $f.$r = $r; return $f;
 37636  	};
 37637  	dnsMsg.prototype.String = function() { return this.$val.String(); };
 37638  	dnsMsg.ptr.prototype.IsResponseTo = function(query) {
 37639  		var _i, _ref, i, m, q, q2, query, x;
 37640  		m = this;
 37641  		if (!m.dnsMsgHdr.response) {
 37642  			return false;
 37643  		}
 37644  		if (!((m.dnsMsgHdr.id === query.dnsMsgHdr.id))) {
 37645  			return false;
 37646  		}
 37647  		if (!((m.question.$length === query.question.$length))) {
 37648  			return false;
 37649  		}
 37650  		_ref = m.question;
 37651  		_i = 0;
 37652  		while (true) {
 37653  			if (!(_i < _ref.$length)) { break; }
 37654  			i = _i;
 37655  			q = $clone(((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]), dnsQuestion);
 37656  			q2 = $clone((x = query.question, ((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i])), dnsQuestion);
 37657  			if (!equalASCIILabel(q.Name, q2.Name) || !((q.Qtype === q2.Qtype)) || !((q.Qclass === q2.Qclass))) {
 37658  				return false;
 37659  			}
 37660  			_i++;
 37661  		}
 37662  		return true;
 37663  	};
 37664  	dnsMsg.prototype.IsResponseTo = function(query) { return this.$val.IsResponseTo(query); };
 37665  	wrapSyscallError = function(name, err) {
 37666  		var _tuple, err, name, ok;
 37667  		_tuple = $assertType(err, syscall.Errno, true);
 37668  		ok = _tuple[1];
 37669  		if (ok) {
 37670  			err = os.NewSyscallError(name, err);
 37671  		}
 37672  		return err;
 37673  	};
 37674  	newFD = function(sysfd, family, sotype, net) {
 37675  		var family, net, ret, sotype, sysfd;
 37676  		ret = new netFD.ptr(new poll.FD.ptr(new poll.fdMutex.ptr(new $Uint64(0, 0), 0, 0), sysfd, new poll.pollDesc.ptr(false), ptrType$29.nil, 0, sotype === 1, !((sotype === 2)) && !((sotype === 3)), false, false), family, sotype, false, net, $ifaceNil, $ifaceNil);
 37677  		return [ret, $ifaceNil];
 37678  	};
 37679  	netFD.ptr.prototype.init = function() {
 37680  		var fd;
 37681  		fd = this;
 37682  		return fd.pfd.Init(fd.net, true);
 37683  	};
 37684  	netFD.prototype.init = function() { return this.$val.init(); };
 37685  	netFD.ptr.prototype.setAddr = function(laddr, raddr) {
 37686  		var fd, laddr, raddr;
 37687  		fd = this;
 37688  		fd.laddr = laddr;
 37689  		fd.raddr = raddr;
 37690  		runtime.SetFinalizer(fd, new funcType($methodExpr(ptrType$30, "Close")));
 37691  	};
 37692  	netFD.prototype.setAddr = function(laddr, raddr) { return this.$val.setAddr(laddr, raddr); };
 37693  	netFD.ptr.prototype.name = function() {
 37694  		var _r$10, _r$9, _tmp, _tmp$1, fd, ls, rs, $s, $r;
 37695  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$10 = $f._r$10; _r$9 = $f._r$9; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; fd = $f.fd; ls = $f.ls; rs = $f.rs; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 37696  		fd = this;
 37697  		_tmp = "";
 37698  		_tmp$1 = "";
 37699  		ls = _tmp;
 37700  		rs = _tmp$1;
 37701  		/* */ if (!($interfaceIsEqual(fd.laddr, $ifaceNil))) { $s = 1; continue; }
 37702  		/* */ $s = 2; continue;
 37703  		/* if (!($interfaceIsEqual(fd.laddr, $ifaceNil))) { */ case 1:
 37704  			_r$9 = fd.laddr.String(); /* */ $s = 3; case 3: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 37705  			ls = _r$9;
 37706  		/* } */ case 2:
 37707  		/* */ if (!($interfaceIsEqual(fd.raddr, $ifaceNil))) { $s = 4; continue; }
 37708  		/* */ $s = 5; continue;
 37709  		/* if (!($interfaceIsEqual(fd.raddr, $ifaceNil))) { */ case 4:
 37710  			_r$10 = fd.raddr.String(); /* */ $s = 6; case 6: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
 37711  			rs = _r$10;
 37712  		/* } */ case 5:
 37713  		$s = -1; return fd.net + ":" + ls + "->" + rs;
 37714  		/* */ } return; } if ($f === undefined) { $f = { $blk: netFD.ptr.prototype.name }; } $f._r$10 = _r$10; $f._r$9 = _r$9; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f.fd = fd; $f.ls = ls; $f.rs = rs; $f.$s = $s; $f.$r = $r; return $f;
 37715  	};
 37716  	netFD.prototype.name = function() { return this.$val.name(); };
 37717  	netFD.ptr.prototype.connect = function(ctx, la, ra) {
 37718  		var _1, _2, _r$10, _r$11, _r$12, _r$13, _r$14, _r$15, _r$16, _r$17, _r$9, _selection, _selection$1, _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$14, _tmp$15, _tmp$16, _tmp$17, _tmp$18, _tmp$19, _tmp$2, _tmp$20, _tmp$21, _tmp$22, _tmp$23, _tmp$24, _tmp$25, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, _tuple$1, _tuple$2, ctx, deadline, done, err, err$1, err$2, err$3, err$4, err$5, err$6, fd, interruptRes, la, nerr, ra, ret, rsa, rsa$1, $s, $deferred, $r;
 37719  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _2 = $f._2; _r$10 = $f._r$10; _r$11 = $f._r$11; _r$12 = $f._r$12; _r$13 = $f._r$13; _r$14 = $f._r$14; _r$15 = $f._r$15; _r$16 = $f._r$16; _r$17 = $f._r$17; _r$9 = $f._r$9; _selection = $f._selection; _selection$1 = $f._selection$1; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$10 = $f._tmp$10; _tmp$11 = $f._tmp$11; _tmp$12 = $f._tmp$12; _tmp$13 = $f._tmp$13; _tmp$14 = $f._tmp$14; _tmp$15 = $f._tmp$15; _tmp$16 = $f._tmp$16; _tmp$17 = $f._tmp$17; _tmp$18 = $f._tmp$18; _tmp$19 = $f._tmp$19; _tmp$2 = $f._tmp$2; _tmp$20 = $f._tmp$20; _tmp$21 = $f._tmp$21; _tmp$22 = $f._tmp$22; _tmp$23 = $f._tmp$23; _tmp$24 = $f._tmp$24; _tmp$25 = $f._tmp$25; _tmp$3 = $f._tmp$3; _tmp$4 = $f._tmp$4; _tmp$5 = $f._tmp$5; _tmp$6 = $f._tmp$6; _tmp$7 = $f._tmp$7; _tmp$8 = $f._tmp$8; _tmp$9 = $f._tmp$9; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; ctx = $f.ctx; deadline = $f.deadline; done = $f.done; err = $f.err; err$1 = $f.err$1; err$2 = $f.err$2; err$3 = $f.err$3; err$4 = $f.err$4; err$5 = $f.err$5; err$6 = $f.err$6; fd = $f.fd; interruptRes = $f.interruptRes; la = $f.la; nerr = $f.nerr; ra = $f.ra; ret = $f.ret; rsa = $f.rsa; rsa$1 = $f.rsa$1; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
 37720  		ctx = [ctx];
 37721  		done = [done];
 37722  		fd = [fd];
 37723  		interruptRes = [interruptRes];
 37724  		ret = [ret];
 37725  		rsa = $ifaceNil;
 37726  		ret[0] = $ifaceNil;
 37727  		fd[0] = this;
 37728  			_r$9 = connectFunc(fd[0].pfd.Sysfd, ra); /* */ $s = 2; case 2: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 37729  			err = _r$9;
 37730  			_1 = err;
 37731  			/* */ if ($interfaceIsEqual(_1, new syscall.Errno((115))) || $interfaceIsEqual(_1, new syscall.Errno((114))) || $interfaceIsEqual(_1, new syscall.Errno((4)))) { $s = 3; continue; }
 37732  			/* */ if ($interfaceIsEqual(_1, $ifaceNil) || $interfaceIsEqual(_1, new syscall.Errno((106)))) { $s = 4; continue; }
 37733  			/* */ if ($interfaceIsEqual(_1, new syscall.Errno((22)))) { $s = 5; continue; }
 37734  			/* */ $s = 6; continue;
 37735  			/* if ($interfaceIsEqual(_1, new syscall.Errno((115))) || $interfaceIsEqual(_1, new syscall.Errno((114))) || $interfaceIsEqual(_1, new syscall.Errno((4)))) { */ case 3:
 37736  				$s = 7; continue;
 37737  			/* } else if ($interfaceIsEqual(_1, $ifaceNil) || $interfaceIsEqual(_1, new syscall.Errno((106)))) { */ case 4:
 37738  				_r$10 = ctx[0].Done(); /* */ $s = 8; case 8: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
 37739  				_selection = $select([[_r$10], []]);
 37740  				/* */ if (_selection[0] === 0) { $s = 9; continue; }
 37741  				/* */ if (_selection[0] === 1) { $s = 10; continue; }
 37742  				/* */ $s = 11; continue;
 37743  				/* if (_selection[0] === 0) { */ case 9:
 37744  					_tmp = $ifaceNil;
 37745  					_r$11 = ctx[0].Err(); /* */ $s = 12; case 12: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; }
 37746  					_r$12 = mapErr(_r$11); /* */ $s = 13; case 13: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; }
 37747  					_tmp$1 = _r$12;
 37748  					rsa = _tmp;
 37749  					ret[0] = _tmp$1;
 37750  					$s = -1; return [rsa, ret[0]];
 37751  				/* } else if (_selection[0] === 1) { */ case 10:
 37752  				/* } */ case 11:
 37753  				err$1 = fd[0].pfd.Init(fd[0].net, true);
 37754  				if (!($interfaceIsEqual(err$1, $ifaceNil))) {
 37755  					_tmp$2 = $ifaceNil;
 37756  					_tmp$3 = err$1;
 37757  					rsa = _tmp$2;
 37758  					ret[0] = _tmp$3;
 37759  					$s = -1; return [rsa, ret[0]];
 37760  				}
 37761  				runtime.KeepAlive(fd[0]);
 37762  				_tmp$4 = $ifaceNil;
 37763  				_tmp$5 = $ifaceNil;
 37764  				rsa = _tmp$4;
 37765  				ret[0] = _tmp$5;
 37766  				$s = -1; return [rsa, ret[0]];
 37767  			/* } else if ($interfaceIsEqual(_1, new syscall.Errno((22)))) { */ case 5:
 37768  				if (false) {
 37769  					_tmp$6 = $ifaceNil;
 37770  					_tmp$7 = $ifaceNil;
 37771  					rsa = _tmp$6;
 37772  					ret[0] = _tmp$7;
 37773  					$s = -1; return [rsa, ret[0]];
 37774  				}
 37775  				_tmp$8 = $ifaceNil;
 37776  				_tmp$9 = os.NewSyscallError("connect", err);
 37777  				rsa = _tmp$8;
 37778  				ret[0] = _tmp$9;
 37779  				$s = -1; return [rsa, ret[0]];
 37780  			/* } else { */ case 6:
 37781  				_tmp$10 = $ifaceNil;
 37782  				_tmp$11 = os.NewSyscallError("connect", err);
 37783  				rsa = _tmp$10;
 37784  				ret[0] = _tmp$11;
 37785  				$s = -1; return [rsa, ret[0]];
 37786  			/* } */ case 7:
 37787  		case 1:
 37788  		err$2 = fd[0].pfd.Init(fd[0].net, true);
 37789  		if (!($interfaceIsEqual(err$2, $ifaceNil))) {
 37790  			_tmp$12 = $ifaceNil;
 37791  			_tmp$13 = err$2;
 37792  			rsa = _tmp$12;
 37793  			ret[0] = _tmp$13;
 37794  			$s = -1; return [rsa, ret[0]];
 37795  		}
 37796  		_r$13 = ctx[0].Deadline(); /* */ $s = 14; case 14: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; }
 37797  		_tuple = _r$13;
 37798  		deadline = $clone(_tuple[0], time.Time);
 37799  		if (!$clone(deadline, time.Time).IsZero()) {
 37800  			fd[0].pfd.SetWriteDeadline($clone(deadline, time.Time));
 37801  			$deferred.push([$methodVal(fd[0].pfd, "SetWriteDeadline"), [$clone(noDeadline, time.Time)]]);
 37802  		}
 37803  		/* */ if (!($interfaceIsEqual(ctx[0], context.Background()))) { $s = 15; continue; }
 37804  		/* */ $s = 16; continue;
 37805  		/* if (!($interfaceIsEqual(ctx[0], context.Background()))) { */ case 15:
 37806  			done[0] = new $Chan(structType$1, 0);
 37807  			interruptRes[0] = new $Chan($error, 0);
 37808  			$deferred.push([(function(ctx, done, fd, interruptRes, ret) { return function $b() {
 37809  				var _r$14, _r$15, ctxErr, $s, $r;
 37810  				/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$14 = $f._r$14; _r$15 = $f._r$15; ctxErr = $f.ctxErr; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 37811  				$close(done[0]);
 37812  				_r$14 = $recv(interruptRes[0]); /* */ $s = 1; case 1: if($c) { $c = false; _r$14 = _r$14.$blk(); } if (_r$14 && _r$14.$blk !== undefined) { break s; }
 37813  				ctxErr = _r$14[0];
 37814  				/* */ if (!($interfaceIsEqual(ctxErr, $ifaceNil)) && $interfaceIsEqual(ret[0], $ifaceNil)) { $s = 2; continue; }
 37815  				/* */ $s = 3; continue;
 37816  				/* if (!($interfaceIsEqual(ctxErr, $ifaceNil)) && $interfaceIsEqual(ret[0], $ifaceNil)) { */ case 2:
 37817  					ret[0] = ctxErr;
 37818  					_r$15 = fd[0].Close(); /* */ $s = 4; case 4: if($c) { $c = false; _r$15 = _r$15.$blk(); } if (_r$15 && _r$15.$blk !== undefined) { break s; }
 37819  					_r$15;
 37820  				/* } */ case 3:
 37821  				$s = -1; return;
 37822  				/* */ } return; } if ($f === undefined) { $f = { $blk: $b }; } $f._r$14 = _r$14; $f._r$15 = _r$15; $f.ctxErr = ctxErr; $f.$s = $s; $f.$r = $r; return $f;
 37823  			}; })(ctx, done, fd, interruptRes, ret), []]);
 37824  			$go((function(ctx, done, fd, interruptRes, ret) { return function $b() {
 37825  				var _r$14, _r$15, _r$16, _selection$1, $s, $r;
 37826  				/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$14 = $f._r$14; _r$15 = $f._r$15; _r$16 = $f._r$16; _selection$1 = $f._selection$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 37827  				_r$14 = ctx[0].Done(); /* */ $s = 1; case 1: if($c) { $c = false; _r$14 = _r$14.$blk(); } if (_r$14 && _r$14.$blk !== undefined) { break s; }
 37828  				_r$15 = $select([[_r$14], [done[0]]]); /* */ $s = 2; case 2: if($c) { $c = false; _r$15 = _r$15.$blk(); } if (_r$15 && _r$15.$blk !== undefined) { break s; }
 37829  				_selection$1 = _r$15;
 37830  				/* */ if (_selection$1[0] === 0) { $s = 3; continue; }
 37831  				/* */ if (_selection$1[0] === 1) { $s = 4; continue; }
 37832  				/* */ $s = 5; continue;
 37833  				/* if (_selection$1[0] === 0) { */ case 3:
 37834  					fd[0].pfd.SetWriteDeadline($clone(aLongTimeAgo, time.Time));
 37835  					$r = testHookCanceledDial(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 37836  					_r$16 = ctx[0].Err(); /* */ $s = 7; case 7: if($c) { $c = false; _r$16 = _r$16.$blk(); } if (_r$16 && _r$16.$blk !== undefined) { break s; }
 37837  					$r = $send(interruptRes[0], _r$16); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 37838  					$s = 5; continue;
 37839  				/* } else if (_selection$1[0] === 1) { */ case 4:
 37840  					$r = $send(interruptRes[0], $ifaceNil); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 37841  				/* } */ case 5:
 37842  				$s = -1; return;
 37843  				/* */ } return; } if ($f === undefined) { $f = { $blk: $b }; } $f._r$14 = _r$14; $f._r$15 = _r$15; $f._r$16 = _r$16; $f._selection$1 = _selection$1; $f.$s = $s; $f.$r = $r; return $f;
 37844  			}; })(ctx, done, fd, interruptRes, ret), []);
 37845  		/* } */ case 16:
 37846  		/* while (true) { */ case 17:
 37847  			err$3 = fd[0].pfd.WaitWrite();
 37848  			/* */ if (!($interfaceIsEqual(err$3, $ifaceNil))) { $s = 19; continue; }
 37849  			/* */ $s = 20; continue;
 37850  			/* if (!($interfaceIsEqual(err$3, $ifaceNil))) { */ case 19:
 37851  				_r$14 = ctx[0].Done(); /* */ $s = 21; case 21: if($c) { $c = false; _r$14 = _r$14.$blk(); } if (_r$14 && _r$14.$blk !== undefined) { break s; }
 37852  				_selection$1 = $select([[_r$14], []]);
 37853  				/* */ if (_selection$1[0] === 0) { $s = 22; continue; }
 37854  				/* */ if (_selection$1[0] === 1) { $s = 23; continue; }
 37855  				/* */ $s = 24; continue;
 37856  				/* if (_selection$1[0] === 0) { */ case 22:
 37857  					_tmp$14 = $ifaceNil;
 37858  					_r$15 = ctx[0].Err(); /* */ $s = 25; case 25: if($c) { $c = false; _r$15 = _r$15.$blk(); } if (_r$15 && _r$15.$blk !== undefined) { break s; }
 37859  					_r$16 = mapErr(_r$15); /* */ $s = 26; case 26: if($c) { $c = false; _r$16 = _r$16.$blk(); } if (_r$16 && _r$16.$blk !== undefined) { break s; }
 37860  					_tmp$15 = _r$16;
 37861  					rsa = _tmp$14;
 37862  					ret[0] = _tmp$15;
 37863  					$s = -1; return [rsa, ret[0]];
 37864  				/* } else if (_selection$1[0] === 1) { */ case 23:
 37865  				/* } */ case 24:
 37866  				_tmp$16 = $ifaceNil;
 37867  				_tmp$17 = err$3;
 37868  				rsa = _tmp$16;
 37869  				ret[0] = _tmp$17;
 37870  				$s = -1; return [rsa, ret[0]];
 37871  			/* } */ case 20:
 37872  			_r$17 = getsockoptIntFunc(fd[0].pfd.Sysfd, 1, 4); /* */ $s = 27; case 27: if($c) { $c = false; _r$17 = _r$17.$blk(); } if (_r$17 && _r$17.$blk !== undefined) { break s; }
 37873  			_tuple$1 = _r$17;
 37874  			nerr = _tuple$1[0];
 37875  			err$4 = _tuple$1[1];
 37876  			if (!($interfaceIsEqual(err$4, $ifaceNil))) {
 37877  				_tmp$18 = $ifaceNil;
 37878  				_tmp$19 = os.NewSyscallError("getsockopt", err$4);
 37879  				rsa = _tmp$18;
 37880  				ret[0] = _tmp$19;
 37881  				$s = -1; return [rsa, ret[0]];
 37882  			}
 37883  			err$5 = ((nerr >>> 0));
 37884  			_2 = err$5;
 37885  			if ((_2 === (115)) || (_2 === (114)) || (_2 === (4))) {
 37886  			} else if (_2 === (106)) {
 37887  				_tmp$20 = $ifaceNil;
 37888  				_tmp$21 = $ifaceNil;
 37889  				rsa = _tmp$20;
 37890  				ret[0] = _tmp$21;
 37891  				$s = -1; return [rsa, ret[0]];
 37892  			} else if (_2 === (0)) {
 37893  				_tuple$2 = syscall.Getpeername(fd[0].pfd.Sysfd);
 37894  				rsa$1 = _tuple$2[0];
 37895  				err$6 = _tuple$2[1];
 37896  				if ($interfaceIsEqual(err$6, $ifaceNil)) {
 37897  					_tmp$22 = rsa$1;
 37898  					_tmp$23 = $ifaceNil;
 37899  					rsa = _tmp$22;
 37900  					ret[0] = _tmp$23;
 37901  					$s = -1; return [rsa, ret[0]];
 37902  				}
 37903  			} else {
 37904  				_tmp$24 = $ifaceNil;
 37905  				_tmp$25 = os.NewSyscallError("connect", new syscall.Errno(err$5));
 37906  				rsa = _tmp$24;
 37907  				ret[0] = _tmp$25;
 37908  				$s = -1; return [rsa, ret[0]];
 37909  			}
 37910  			runtime.KeepAlive(fd[0]);
 37911  		/* } */ $s = 17; continue; case 18:
 37912  		$s = -1; return [rsa, ret[0]];
 37913  		/* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if (!$curGoroutine.asleep) { return  [rsa, ret[0]]; } if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: netFD.ptr.prototype.connect }; } $f._1 = _1; $f._2 = _2; $f._r$10 = _r$10; $f._r$11 = _r$11; $f._r$12 = _r$12; $f._r$13 = _r$13; $f._r$14 = _r$14; $f._r$15 = _r$15; $f._r$16 = _r$16; $f._r$17 = _r$17; $f._r$9 = _r$9; $f._selection = _selection; $f._selection$1 = _selection$1; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$10 = _tmp$10; $f._tmp$11 = _tmp$11; $f._tmp$12 = _tmp$12; $f._tmp$13 = _tmp$13; $f._tmp$14 = _tmp$14; $f._tmp$15 = _tmp$15; $f._tmp$16 = _tmp$16; $f._tmp$17 = _tmp$17; $f._tmp$18 = _tmp$18; $f._tmp$19 = _tmp$19; $f._tmp$2 = _tmp$2; $f._tmp$20 = _tmp$20; $f._tmp$21 = _tmp$21; $f._tmp$22 = _tmp$22; $f._tmp$23 = _tmp$23; $f._tmp$24 = _tmp$24; $f._tmp$25 = _tmp$25; $f._tmp$3 = _tmp$3; $f._tmp$4 = _tmp$4; $f._tmp$5 = _tmp$5; $f._tmp$6 = _tmp$6; $f._tmp$7 = _tmp$7; $f._tmp$8 = _tmp$8; $f._tmp$9 = _tmp$9; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f.ctx = ctx; $f.deadline = deadline; $f.done = done; $f.err = err; $f.err$1 = err$1; $f.err$2 = err$2; $f.err$3 = err$3; $f.err$4 = err$4; $f.err$5 = err$5; $f.err$6 = err$6; $f.fd = fd; $f.interruptRes = interruptRes; $f.la = la; $f.nerr = nerr; $f.ra = ra; $f.ret = ret; $f.rsa = rsa; $f.rsa$1 = rsa$1; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
 37914  	};
 37915  	netFD.prototype.connect = function(ctx, la, ra) { return this.$val.connect(ctx, la, ra); };
 37916  	netFD.ptr.prototype.Close = function() {
 37917  		var _r$9, fd, $s, $r;
 37918  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$9 = $f._r$9; fd = $f.fd; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 37919  		fd = this;
 37920  		runtime.SetFinalizer(fd, $ifaceNil);
 37921  		_r$9 = fd.pfd.Close(); /* */ $s = 1; case 1: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 37922  		$s = -1; return _r$9;
 37923  		/* */ } return; } if ($f === undefined) { $f = { $blk: netFD.ptr.prototype.Close }; } $f._r$9 = _r$9; $f.fd = fd; $f.$s = $s; $f.$r = $r; return $f;
 37924  	};
 37925  	netFD.prototype.Close = function() { return this.$val.Close(); };
 37926  	netFD.ptr.prototype.shutdown = function(how) {
 37927  		var _r$9, err, fd, how, $s, $r;
 37928  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$9 = $f._r$9; err = $f.err; fd = $f.fd; how = $f.how; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 37929  		fd = this;
 37930  		_r$9 = fd.pfd.Shutdown(how); /* */ $s = 1; case 1: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 37931  		err = _r$9;
 37932  		runtime.KeepAlive(fd);
 37933  		$s = -1; return wrapSyscallError("shutdown", err);
 37934  		/* */ } return; } if ($f === undefined) { $f = { $blk: netFD.ptr.prototype.shutdown }; } $f._r$9 = _r$9; $f.err = err; $f.fd = fd; $f.how = how; $f.$s = $s; $f.$r = $r; return $f;
 37935  	};
 37936  	netFD.prototype.shutdown = function(how) { return this.$val.shutdown(how); };
 37937  	netFD.ptr.prototype.closeRead = function() {
 37938  		var _r$9, fd, $s, $r;
 37939  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$9 = $f._r$9; fd = $f.fd; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 37940  		fd = this;
 37941  		_r$9 = fd.shutdown(0); /* */ $s = 1; case 1: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 37942  		$s = -1; return _r$9;
 37943  		/* */ } return; } if ($f === undefined) { $f = { $blk: netFD.ptr.prototype.closeRead }; } $f._r$9 = _r$9; $f.fd = fd; $f.$s = $s; $f.$r = $r; return $f;
 37944  	};
 37945  	netFD.prototype.closeRead = function() { return this.$val.closeRead(); };
 37946  	netFD.ptr.prototype.closeWrite = function() {
 37947  		var _r$9, fd, $s, $r;
 37948  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$9 = $f._r$9; fd = $f.fd; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 37949  		fd = this;
 37950  		_r$9 = fd.shutdown(1); /* */ $s = 1; case 1: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 37951  		$s = -1; return _r$9;
 37952  		/* */ } return; } if ($f === undefined) { $f = { $blk: netFD.ptr.prototype.closeWrite }; } $f._r$9 = _r$9; $f.fd = fd; $f.$s = $s; $f.$r = $r; return $f;
 37953  	};
 37954  	netFD.prototype.closeWrite = function() { return this.$val.closeWrite(); };
 37955  	netFD.ptr.prototype.Read = function(p) {
 37956  		var _r$9, _tmp, _tmp$1, _tuple, err, fd, n, p, $s, $r;
 37957  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$9 = $f._r$9; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tuple = $f._tuple; err = $f.err; fd = $f.fd; n = $f.n; p = $f.p; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 37958  		n = 0;
 37959  		err = $ifaceNil;
 37960  		fd = this;
 37961  		_r$9 = fd.pfd.Read(p); /* */ $s = 1; case 1: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 37962  		_tuple = _r$9;
 37963  		n = _tuple[0];
 37964  		err = _tuple[1];
 37965  		runtime.KeepAlive(fd);
 37966  		_tmp = n;
 37967  		_tmp$1 = wrapSyscallError("read", err);
 37968  		n = _tmp;
 37969  		err = _tmp$1;
 37970  		$s = -1; return [n, err];
 37971  		/* */ } return; } if ($f === undefined) { $f = { $blk: netFD.ptr.prototype.Read }; } $f._r$9 = _r$9; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tuple = _tuple; $f.err = err; $f.fd = fd; $f.n = n; $f.p = p; $f.$s = $s; $f.$r = $r; return $f;
 37972  	};
 37973  	netFD.prototype.Read = function(p) { return this.$val.Read(p); };
 37974  	netFD.ptr.prototype.readFrom = function(p) {
 37975  		var _r$9, _tmp, _tmp$1, _tmp$2, _tuple, err, fd, n, p, sa, $s, $r;
 37976  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$9 = $f._r$9; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tuple = $f._tuple; err = $f.err; fd = $f.fd; n = $f.n; p = $f.p; sa = $f.sa; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 37977  		n = 0;
 37978  		sa = $ifaceNil;
 37979  		err = $ifaceNil;
 37980  		fd = this;
 37981  		_r$9 = fd.pfd.ReadFrom(p); /* */ $s = 1; case 1: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 37982  		_tuple = _r$9;
 37983  		n = _tuple[0];
 37984  		sa = _tuple[1];
 37985  		err = _tuple[2];
 37986  		runtime.KeepAlive(fd);
 37987  		_tmp = n;
 37988  		_tmp$1 = sa;
 37989  		_tmp$2 = wrapSyscallError("recvfrom", err);
 37990  		n = _tmp;
 37991  		sa = _tmp$1;
 37992  		err = _tmp$2;
 37993  		$s = -1; return [n, sa, err];
 37994  		/* */ } return; } if ($f === undefined) { $f = { $blk: netFD.ptr.prototype.readFrom }; } $f._r$9 = _r$9; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tuple = _tuple; $f.err = err; $f.fd = fd; $f.n = n; $f.p = p; $f.sa = sa; $f.$s = $s; $f.$r = $r; return $f;
 37995  	};
 37996  	netFD.prototype.readFrom = function(p) { return this.$val.readFrom(p); };
 37997  	netFD.ptr.prototype.readMsg = function(p, oob) {
 37998  		var _r$9, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tuple, err, fd, flags, n, oob, oobn, p, sa, $s, $r;
 37999  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$9 = $f._r$9; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tmp$4 = $f._tmp$4; _tuple = $f._tuple; err = $f.err; fd = $f.fd; flags = $f.flags; n = $f.n; oob = $f.oob; oobn = $f.oobn; p = $f.p; sa = $f.sa; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 38000  		n = 0;
 38001  		oobn = 0;
 38002  		flags = 0;
 38003  		sa = $ifaceNil;
 38004  		err = $ifaceNil;
 38005  		fd = this;
 38006  		_r$9 = fd.pfd.ReadMsg(p, oob); /* */ $s = 1; case 1: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 38007  		_tuple = _r$9;
 38008  		n = _tuple[0];
 38009  		oobn = _tuple[1];
 38010  		flags = _tuple[2];
 38011  		sa = _tuple[3];
 38012  		err = _tuple[4];
 38013  		runtime.KeepAlive(fd);
 38014  		_tmp = n;
 38015  		_tmp$1 = oobn;
 38016  		_tmp$2 = flags;
 38017  		_tmp$3 = sa;
 38018  		_tmp$4 = wrapSyscallError("recvmsg", err);
 38019  		n = _tmp;
 38020  		oobn = _tmp$1;
 38021  		flags = _tmp$2;
 38022  		sa = _tmp$3;
 38023  		err = _tmp$4;
 38024  		$s = -1; return [n, oobn, flags, sa, err];
 38025  		/* */ } return; } if ($f === undefined) { $f = { $blk: netFD.ptr.prototype.readMsg }; } $f._r$9 = _r$9; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tmp$4 = _tmp$4; $f._tuple = _tuple; $f.err = err; $f.fd = fd; $f.flags = flags; $f.n = n; $f.oob = oob; $f.oobn = oobn; $f.p = p; $f.sa = sa; $f.$s = $s; $f.$r = $r; return $f;
 38026  	};
 38027  	netFD.prototype.readMsg = function(p, oob) { return this.$val.readMsg(p, oob); };
 38028  	netFD.ptr.prototype.Write = function(p) {
 38029  		var _r$9, _tmp, _tmp$1, _tuple, err, fd, nn, p, $s, $r;
 38030  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$9 = $f._r$9; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tuple = $f._tuple; err = $f.err; fd = $f.fd; nn = $f.nn; p = $f.p; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 38031  		nn = 0;
 38032  		err = $ifaceNil;
 38033  		fd = this;
 38034  		_r$9 = fd.pfd.Write(p); /* */ $s = 1; case 1: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 38035  		_tuple = _r$9;
 38036  		nn = _tuple[0];
 38037  		err = _tuple[1];
 38038  		runtime.KeepAlive(fd);
 38039  		_tmp = nn;
 38040  		_tmp$1 = wrapSyscallError("write", err);
 38041  		nn = _tmp;
 38042  		err = _tmp$1;
 38043  		$s = -1; return [nn, err];
 38044  		/* */ } return; } if ($f === undefined) { $f = { $blk: netFD.ptr.prototype.Write }; } $f._r$9 = _r$9; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tuple = _tuple; $f.err = err; $f.fd = fd; $f.nn = nn; $f.p = p; $f.$s = $s; $f.$r = $r; return $f;
 38045  	};
 38046  	netFD.prototype.Write = function(p) { return this.$val.Write(p); };
 38047  	netFD.ptr.prototype.writeTo = function(p, sa) {
 38048  		var _r$9, _tmp, _tmp$1, _tuple, err, fd, n, p, sa, $s, $r;
 38049  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$9 = $f._r$9; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tuple = $f._tuple; err = $f.err; fd = $f.fd; n = $f.n; p = $f.p; sa = $f.sa; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 38050  		n = 0;
 38051  		err = $ifaceNil;
 38052  		fd = this;
 38053  		_r$9 = fd.pfd.WriteTo(p, sa); /* */ $s = 1; case 1: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 38054  		_tuple = _r$9;
 38055  		n = _tuple[0];
 38056  		err = _tuple[1];
 38057  		runtime.KeepAlive(fd);
 38058  		_tmp = n;
 38059  		_tmp$1 = wrapSyscallError("sendto", err);
 38060  		n = _tmp;
 38061  		err = _tmp$1;
 38062  		$s = -1; return [n, err];
 38063  		/* */ } return; } if ($f === undefined) { $f = { $blk: netFD.ptr.prototype.writeTo }; } $f._r$9 = _r$9; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tuple = _tuple; $f.err = err; $f.fd = fd; $f.n = n; $f.p = p; $f.sa = sa; $f.$s = $s; $f.$r = $r; return $f;
 38064  	};
 38065  	netFD.prototype.writeTo = function(p, sa) { return this.$val.writeTo(p, sa); };
 38066  	netFD.ptr.prototype.writeMsg = function(p, oob, sa) {
 38067  		var _r$9, _tmp, _tmp$1, _tmp$2, _tuple, err, fd, n, oob, oobn, p, sa, $s, $r;
 38068  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$9 = $f._r$9; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tuple = $f._tuple; err = $f.err; fd = $f.fd; n = $f.n; oob = $f.oob; oobn = $f.oobn; p = $f.p; sa = $f.sa; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 38069  		n = 0;
 38070  		oobn = 0;
 38071  		err = $ifaceNil;
 38072  		fd = this;
 38073  		_r$9 = fd.pfd.WriteMsg(p, oob, sa); /* */ $s = 1; case 1: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 38074  		_tuple = _r$9;
 38075  		n = _tuple[0];
 38076  		oobn = _tuple[1];
 38077  		err = _tuple[2];
 38078  		runtime.KeepAlive(fd);
 38079  		_tmp = n;
 38080  		_tmp$1 = oobn;
 38081  		_tmp$2 = wrapSyscallError("sendmsg", err);
 38082  		n = _tmp;
 38083  		oobn = _tmp$1;
 38084  		err = _tmp$2;
 38085  		$s = -1; return [n, oobn, err];
 38086  		/* */ } return; } if ($f === undefined) { $f = { $blk: netFD.ptr.prototype.writeMsg }; } $f._r$9 = _r$9; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tuple = _tuple; $f.err = err; $f.fd = fd; $f.n = n; $f.oob = oob; $f.oobn = oobn; $f.p = p; $f.sa = sa; $f.$s = $s; $f.$r = $r; return $f;
 38087  	};
 38088  	netFD.prototype.writeMsg = function(p, oob, sa) { return this.$val.writeMsg(p, oob, sa); };
 38089  	netFD.ptr.prototype.accept = function() {
 38090  		var _arg, _arg$1, _r$10, _r$11, _r$12, _r$13, _r$9, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tuple, _tuple$1, _tuple$2, d, err, errcall, fd, lsa, netfd, rsa, $s, $r;
 38091  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _arg = $f._arg; _arg$1 = $f._arg$1; _r$10 = $f._r$10; _r$11 = $f._r$11; _r$12 = $f._r$12; _r$13 = $f._r$13; _r$9 = $f._r$9; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tmp$4 = $f._tmp$4; _tmp$5 = $f._tmp$5; _tmp$6 = $f._tmp$6; _tmp$7 = $f._tmp$7; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; d = $f.d; err = $f.err; errcall = $f.errcall; fd = $f.fd; lsa = $f.lsa; netfd = $f.netfd; rsa = $f.rsa; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 38092  		netfd = ptrType$30.nil;
 38093  		err = $ifaceNil;
 38094  		fd = this;
 38095  		_r$9 = fd.pfd.Accept(); /* */ $s = 1; case 1: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 38096  		_tuple = _r$9;
 38097  		d = _tuple[0];
 38098  		rsa = _tuple[1];
 38099  		errcall = _tuple[2];
 38100  		err = _tuple[3];
 38101  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 38102  			if (!(errcall === "")) {
 38103  				err = wrapSyscallError(errcall, err);
 38104  			}
 38105  			_tmp = ptrType$30.nil;
 38106  			_tmp$1 = err;
 38107  			netfd = _tmp;
 38108  			err = _tmp$1;
 38109  			$s = -1; return [netfd, err];
 38110  		}
 38111  		_tuple$1 = newFD(d, fd.family, fd.sotype, fd.net);
 38112  		netfd = _tuple$1[0];
 38113  		err = _tuple$1[1];
 38114  		/* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 2; continue; }
 38115  		/* */ $s = 3; continue;
 38116  		/* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 2:
 38117  			_r$10 = poll.CloseFunc(d); /* */ $s = 4; case 4: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
 38118  			_r$10;
 38119  			_tmp$2 = ptrType$30.nil;
 38120  			_tmp$3 = err;
 38121  			netfd = _tmp$2;
 38122  			err = _tmp$3;
 38123  			$s = -1; return [netfd, err];
 38124  		/* } */ case 3:
 38125  		err = netfd.init();
 38126  		/* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 5; continue; }
 38127  		/* */ $s = 6; continue;
 38128  		/* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 5:
 38129  			_r$11 = fd.Close(); /* */ $s = 7; case 7: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; }
 38130  			_r$11;
 38131  			_tmp$4 = ptrType$30.nil;
 38132  			_tmp$5 = err;
 38133  			netfd = _tmp$4;
 38134  			err = _tmp$5;
 38135  			$s = -1; return [netfd, err];
 38136  		/* } */ case 6:
 38137  		_tuple$2 = syscall.Getsockname(netfd.pfd.Sysfd);
 38138  		lsa = _tuple$2[0];
 38139  		_r$12 = netfd.addrFunc()(lsa); /* */ $s = 8; case 8: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; }
 38140  		_arg = _r$12;
 38141  		_r$13 = netfd.addrFunc()(rsa); /* */ $s = 9; case 9: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; }
 38142  		_arg$1 = _r$13;
 38143  		$r = netfd.setAddr(_arg, _arg$1); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 38144  		_tmp$6 = netfd;
 38145  		_tmp$7 = $ifaceNil;
 38146  		netfd = _tmp$6;
 38147  		err = _tmp$7;
 38148  		$s = -1; return [netfd, err];
 38149  		/* */ } return; } if ($f === undefined) { $f = { $blk: netFD.ptr.prototype.accept }; } $f._arg = _arg; $f._arg$1 = _arg$1; $f._r$10 = _r$10; $f._r$11 = _r$11; $f._r$12 = _r$12; $f._r$13 = _r$13; $f._r$9 = _r$9; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tmp$4 = _tmp$4; $f._tmp$5 = _tmp$5; $f._tmp$6 = _tmp$6; $f._tmp$7 = _tmp$7; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f.d = d; $f.err = err; $f.errcall = errcall; $f.fd = fd; $f.lsa = lsa; $f.netfd = netfd; $f.rsa = rsa; $f.$s = $s; $f.$r = $r; return $f;
 38150  	};
 38151  	netFD.prototype.accept = function() { return this.$val.accept(); };
 38152  	dupCloseOnExec = function(fd) {
 38153  		var _1, _r$9, _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, _tuple$1, e1, err, fd, newfd, r0, $s, $r;
 38154  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _r$9 = $f._r$9; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; e1 = $f.e1; err = $f.err; fd = $f.fd; newfd = $f.newfd; r0 = $f.r0; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 38155  		newfd = 0;
 38156  		err = $ifaceNil;
 38157  		if (atomic.LoadInt32((tryDupCloexec$24ptr || (tryDupCloexec$24ptr = new ptrType$31(function() { return tryDupCloexec; }, function($v) { tryDupCloexec = $v; })))) === 1) {
 38158  			_tuple = syscall.Syscall(72, ((fd >>> 0)), 1030, 0);
 38159  			r0 = _tuple[0];
 38160  			e1 = _tuple[2];
 38161  			if (false && (e1 === 9)) {
 38162  				e1 = 22;
 38163  			}
 38164  			_1 = e1;
 38165  			if (_1 === (0)) {
 38166  				_tmp = ((r0 >> 0));
 38167  				_tmp$1 = $ifaceNil;
 38168  				newfd = _tmp;
 38169  				err = _tmp$1;
 38170  				$s = -1; return [newfd, err];
 38171  			} else if (_1 === (22)) {
 38172  				atomic.StoreInt32((tryDupCloexec$24ptr || (tryDupCloexec$24ptr = new ptrType$31(function() { return tryDupCloexec; }, function($v) { tryDupCloexec = $v; }))), 0);
 38173  			} else {
 38174  				_tmp$2 = -1;
 38175  				_tmp$3 = os.NewSyscallError("fcntl", new syscall.Errno(e1));
 38176  				newfd = _tmp$2;
 38177  				err = _tmp$3;
 38178  				$s = -1; return [newfd, err];
 38179  			}
 38180  		}
 38181  		_r$9 = dupCloseOnExecOld(fd); /* */ $s = 1; case 1: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 38182  		_tuple$1 = _r$9;
 38183  		newfd = _tuple$1[0];
 38184  		err = _tuple$1[1];
 38185  		$s = -1; return [newfd, err];
 38186  		/* */ } return; } if ($f === undefined) { $f = { $blk: dupCloseOnExec }; } $f._1 = _1; $f._r$9 = _r$9; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.e1 = e1; $f.err = err; $f.fd = fd; $f.newfd = newfd; $f.r0 = r0; $f.$s = $s; $f.$r = $r; return $f;
 38187  	};
 38188  	dupCloseOnExecOld = function(fd) {
 38189  		var _tmp, _tmp$1, _tuple, err, fd, newfd, $s, $deferred, $r;
 38190  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tuple = $f._tuple; err = $f.err; fd = $f.fd; newfd = $f.newfd; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
 38191  		newfd = 0;
 38192  		err = $ifaceNil;
 38193  		$r = syscall.ForkLock.RLock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 38194  		$deferred.push([$methodVal(syscall.ForkLock, "RUnlock"), []]);
 38195  		_tuple = syscall.Dup(fd);
 38196  		newfd = _tuple[0];
 38197  		err = _tuple[1];
 38198  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 38199  			_tmp = -1;
 38200  			_tmp$1 = os.NewSyscallError("dup", err);
 38201  			newfd = _tmp;
 38202  			err = _tmp$1;
 38203  			$s = -1; return [newfd, err];
 38204  		}
 38205  		syscall.CloseOnExec(newfd);
 38206  		$s = -1; return [newfd, err];
 38207  		/* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if (!$curGoroutine.asleep) { return  [newfd, err]; } if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: dupCloseOnExecOld }; } $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tuple = _tuple; $f.err = err; $f.fd = fd; $f.newfd = newfd; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
 38208  	};
 38209  	netFD.ptr.prototype.dup = function() {
 38210  		var _arg, _arg$1, _r$10, _r$11, _r$12, _r$9, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tuple, err, f, fd, ns, $s, $r;
 38211  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _arg = $f._arg; _arg$1 = $f._arg$1; _r$10 = $f._r$10; _r$11 = $f._r$11; _r$12 = $f._r$12; _r$9 = $f._r$9; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tmp$4 = $f._tmp$4; _tmp$5 = $f._tmp$5; _tuple = $f._tuple; err = $f.err; f = $f.f; fd = $f.fd; ns = $f.ns; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 38212  		f = ptrType$32.nil;
 38213  		err = $ifaceNil;
 38214  		fd = this;
 38215  		_r$9 = dupCloseOnExec(fd.pfd.Sysfd); /* */ $s = 1; case 1: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 38216  		_tuple = _r$9;
 38217  		ns = _tuple[0];
 38218  		err = _tuple[1];
 38219  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 38220  			_tmp = ptrType$32.nil;
 38221  			_tmp$1 = err;
 38222  			f = _tmp;
 38223  			err = _tmp$1;
 38224  			$s = -1; return [f, err];
 38225  		}
 38226  		_r$10 = fd.pfd.SetBlocking(); /* */ $s = 2; case 2: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
 38227  		err = _r$10;
 38228  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 38229  			_tmp$2 = ptrType$32.nil;
 38230  			_tmp$3 = os.NewSyscallError("setnonblock", err);
 38231  			f = _tmp$2;
 38232  			err = _tmp$3;
 38233  			$s = -1; return [f, err];
 38234  		}
 38235  		_arg = ((ns >>> 0));
 38236  		_r$11 = fd.name(); /* */ $s = 3; case 3: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; }
 38237  		_arg$1 = _r$11;
 38238  		_r$12 = os.NewFile(_arg, _arg$1); /* */ $s = 4; case 4: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; }
 38239  		_tmp$4 = _r$12;
 38240  		_tmp$5 = $ifaceNil;
 38241  		f = _tmp$4;
 38242  		err = _tmp$5;
 38243  		$s = -1; return [f, err];
 38244  		/* */ } return; } if ($f === undefined) { $f = { $blk: netFD.ptr.prototype.dup }; } $f._arg = _arg; $f._arg$1 = _arg$1; $f._r$10 = _r$10; $f._r$11 = _r$11; $f._r$12 = _r$12; $f._r$9 = _r$9; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tmp$4 = _tmp$4; $f._tmp$5 = _tmp$5; $f._tuple = _tuple; $f.err = err; $f.f = f; $f.fd = fd; $f.ns = ns; $f.$s = $s; $f.$r = $r; return $f;
 38245  	};
 38246  	netFD.prototype.dup = function() { return this.$val.dup(); };
 38247  	parseLiteralIP = function(addr) {
 38248  		var _tuple, addr, ip, zone;
 38249  		ip = IP.nil;
 38250  		zone = "";
 38251  		ip = parseIPv4(addr);
 38252  		if (ip === IP.nil) {
 38253  			_tuple = parseIPv6(addr, true);
 38254  			ip = _tuple[0];
 38255  			zone = _tuple[1];
 38256  		}
 38257  		if (ip === IP.nil) {
 38258  			return "";
 38259  		}
 38260  		if (zone === "") {
 38261  			return ip.String();
 38262  		}
 38263  		return ip.String() + "%" + zone;
 38264  	};
 38265  	readHosts = function() {
 38266  		var _entry, _entry$1, _key, _key$1, _r$10, _r$11, _r$12, _r$13, _r$14, _r$9, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, _tuple$5, addr, err, f, file$1, h, hp, hs, i, i$1, is, key, line, mtime, name, now, ok, size, x, $s, $r;
 38267  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _entry = $f._entry; _entry$1 = $f._entry$1; _key = $f._key; _key$1 = $f._key$1; _r$10 = $f._r$10; _r$11 = $f._r$11; _r$12 = $f._r$12; _r$13 = $f._r$13; _r$14 = $f._r$14; _r$9 = $f._r$9; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; _tuple$4 = $f._tuple$4; _tuple$5 = $f._tuple$5; addr = $f.addr; err = $f.err; f = $f.f; file$1 = $f.file$1; h = $f.h; hp = $f.hp; hs = $f.hs; i = $f.i; i$1 = $f.i$1; is = $f.is; key = $f.key; line = $f.line; mtime = $f.mtime; name = $f.name; now = $f.now; ok = $f.ok; size = $f.size; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 38268  		now = $clone(time.Now(), time.Time);
 38269  		hp = testHookHostsPath;
 38270  		if ($clone(now, time.Time).Before($clone(hosts.expire, time.Time)) && hosts.path === hp && $keys(hosts.byName).length > 0) {
 38271  			$s = -1; return;
 38272  		}
 38273  		_r$9 = stat(hp); /* */ $s = 1; case 1: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 38274  		_tuple = _r$9;
 38275  		mtime = $clone(_tuple[0], time.Time);
 38276  		size = _tuple[1];
 38277  		err = _tuple[2];
 38278  		if ($interfaceIsEqual(err, $ifaceNil) && hosts.path === hp && $clone(hosts.mtime, time.Time).Equal($clone(mtime, time.Time)) && (x = hosts.size, (x.$high === size.$high && x.$low === size.$low))) {
 38279  			time.Time.copy(hosts.expire, $clone(now, time.Time).Add(new time.Duration(1, 705032704)));
 38280  			$s = -1; return;
 38281  		}
 38282  		hs = {};
 38283  		is = {};
 38284  		file$1 = ptrType$36.nil;
 38285  		_r$10 = open(hp); /* */ $s = 2; case 2: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
 38286  		_tuple$1 = _r$10;
 38287  		file$1 = _tuple$1[0];
 38288  		if (file$1 === ptrType$36.nil) {
 38289  			$s = -1; return;
 38290  		}
 38291  		_r$11 = file$1.readLine(); /* */ $s = 3; case 3: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; }
 38292  		_tuple$2 = _r$11;
 38293  		line = _tuple$2[0];
 38294  		ok = _tuple$2[1];
 38295  		/* while (true) { */ case 4:
 38296  			/* if (!(ok)) { break; } */ if(!(ok)) { $s = 5; continue; }
 38297  			i = byteIndex(line, 35);
 38298  			if (i >= 0) {
 38299  				line = $substring(line, 0, i);
 38300  			}
 38301  			f = getFields(line);
 38302  			/* */ if (f.$length < 2) { $s = 6; continue; }
 38303  			/* */ $s = 7; continue;
 38304  			/* if (f.$length < 2) { */ case 6:
 38305  				_r$12 = file$1.readLine(); /* */ $s = 8; case 8: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; }
 38306  				_tuple$3 = _r$12;
 38307  				line = _tuple$3[0];
 38308  				ok = _tuple$3[1];
 38309  				/* continue; */ $s = 4; continue;
 38310  			/* } */ case 7:
 38311  			addr = parseLiteralIP((0 >= f.$length ? ($throwRuntimeError("index out of range"), undefined) : f.$array[f.$offset + 0]));
 38312  			/* */ if (addr === "") { $s = 9; continue; }
 38313  			/* */ $s = 10; continue;
 38314  			/* if (addr === "") { */ case 9:
 38315  				_r$13 = file$1.readLine(); /* */ $s = 11; case 11: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; }
 38316  				_tuple$4 = _r$13;
 38317  				line = _tuple$4[0];
 38318  				ok = _tuple$4[1];
 38319  				/* continue; */ $s = 4; continue;
 38320  			/* } */ case 10:
 38321  			i$1 = 1;
 38322  			while (true) {
 38323  				if (!(i$1 < f.$length)) { break; }
 38324  				name = absDomainName((new sliceType$1($stringToBytes(((i$1 < 0 || i$1 >= f.$length) ? ($throwRuntimeError("index out of range"), undefined) : f.$array[f.$offset + i$1])))));
 38325  				h = (new sliceType$1($stringToBytes(((i$1 < 0 || i$1 >= f.$length) ? ($throwRuntimeError("index out of range"), undefined) : f.$array[f.$offset + i$1]))));
 38326  				lowerASCIIBytes(h);
 38327  				key = absDomainName(h);
 38328  				_key = key; (hs || $throwRuntimeError("assignment to entry in nil map"))[$String.keyFor(_key)] = { k: _key, v: $append((_entry = hs[$String.keyFor(key)], _entry !== undefined ? _entry.v : sliceType.nil), addr) };
 38329  				_key$1 = addr; (is || $throwRuntimeError("assignment to entry in nil map"))[$String.keyFor(_key$1)] = { k: _key$1, v: $append((_entry$1 = is[$String.keyFor(addr)], _entry$1 !== undefined ? _entry$1.v : sliceType.nil), name) };
 38330  				i$1 = i$1 + (1) >> 0;
 38331  			}
 38332  			_r$14 = file$1.readLine(); /* */ $s = 12; case 12: if($c) { $c = false; _r$14 = _r$14.$blk(); } if (_r$14 && _r$14.$blk !== undefined) { break s; }
 38333  			_tuple$5 = _r$14;
 38334  			line = _tuple$5[0];
 38335  			ok = _tuple$5[1];
 38336  		/* } */ $s = 4; continue; case 5:
 38337  		time.Time.copy(hosts.expire, $clone(now, time.Time).Add(new time.Duration(1, 705032704)));
 38338  		hosts.path = hp;
 38339  		hosts.byName = hs;
 38340  		hosts.byAddr = is;
 38341  		time.Time.copy(hosts.mtime, mtime);
 38342  		hosts.size = size;
 38343  		$r = file$1.close(); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 38344  		$s = -1; return;
 38345  		/* */ } return; } if ($f === undefined) { $f = { $blk: readHosts }; } $f._entry = _entry; $f._entry$1 = _entry$1; $f._key = _key; $f._key$1 = _key$1; $f._r$10 = _r$10; $f._r$11 = _r$11; $f._r$12 = _r$12; $f._r$13 = _r$13; $f._r$14 = _r$14; $f._r$9 = _r$9; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f._tuple$4 = _tuple$4; $f._tuple$5 = _tuple$5; $f.addr = addr; $f.err = err; $f.f = f; $f.file$1 = file$1; $f.h = h; $f.hp = hp; $f.hs = hs; $f.i = i; $f.i$1 = i$1; $f.is = is; $f.key = key; $f.line = line; $f.mtime = mtime; $f.name = name; $f.now = now; $f.ok = ok; $f.size = size; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
 38346  	};
 38347  	lookupStaticHost = function(host) {
 38348  		var _entry, _tuple, host, ips, ipsCp, lowerHost, ok, $s, $deferred, $r;
 38349  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _entry = $f._entry; _tuple = $f._tuple; host = $f.host; ips = $f.ips; ipsCp = $f.ipsCp; lowerHost = $f.lowerHost; ok = $f.ok; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
 38350  		$r = hosts.Mutex.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 38351  		$deferred.push([$methodVal(hosts.Mutex, "Unlock"), []]);
 38352  		$r = readHosts(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 38353  		if (!(($keys(hosts.byName).length === 0))) {
 38354  			lowerHost = (new sliceType$1($stringToBytes(host)));
 38355  			lowerASCIIBytes(lowerHost);
 38356  			_tuple = (_entry = hosts.byName[$String.keyFor(absDomainName(lowerHost))], _entry !== undefined ? [_entry.v, true] : [sliceType.nil, false]);
 38357  			ips = _tuple[0];
 38358  			ok = _tuple[1];
 38359  			if (ok) {
 38360  				ipsCp = $makeSlice(sliceType, ips.$length);
 38361  				$copySlice(ipsCp, ips);
 38362  				$s = -1; return ipsCp;
 38363  			}
 38364  		}
 38365  		$s = -1; return sliceType.nil;
 38366  		/* */ } return; } } catch(err) { $err = err; $s = -1; return sliceType.nil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: lookupStaticHost }; } $f._entry = _entry; $f._tuple = _tuple; $f.host = host; $f.ips = ips; $f.ipsCp = ipsCp; $f.lowerHost = lowerHost; $f.ok = ok; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
 38367  	};
 38368  	lookupStaticAddr = function(addr) {
 38369  		var _entry, _tuple, addr, hosts$1, hostsCp, ok, $s, $deferred, $r;
 38370  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _entry = $f._entry; _tuple = $f._tuple; addr = $f.addr; hosts$1 = $f.hosts$1; hostsCp = $f.hostsCp; ok = $f.ok; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
 38371  		$r = hosts.Mutex.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 38372  		$deferred.push([$methodVal(hosts.Mutex, "Unlock"), []]);
 38373  		$r = readHosts(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 38374  		addr = parseLiteralIP(addr);
 38375  		if (addr === "") {
 38376  			$s = -1; return sliceType.nil;
 38377  		}
 38378  		if (!(($keys(hosts.byAddr).length === 0))) {
 38379  			_tuple = (_entry = hosts.byAddr[$String.keyFor(addr)], _entry !== undefined ? [_entry.v, true] : [sliceType.nil, false]);
 38380  			hosts$1 = _tuple[0];
 38381  			ok = _tuple[1];
 38382  			if (ok) {
 38383  				hostsCp = $makeSlice(sliceType, hosts$1.$length);
 38384  				$copySlice(hostsCp, hosts$1);
 38385  				$s = -1; return hostsCp;
 38386  			}
 38387  		}
 38388  		$s = -1; return sliceType.nil;
 38389  		/* */ } return; } } catch(err) { $err = err; $s = -1; return sliceType.nil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: lookupStaticAddr }; } $f._entry = _entry; $f._tuple = _tuple; $f.addr = addr; $f.hosts$1 = hosts$1; $f.hostsCp = hostsCp; $f.ok = ok; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
 38390  	};
 38391  	Flags.prototype.String = function() {
 38392  		var _i, _ref, f, i, name, s, y;
 38393  		f = this.$val;
 38394  		s = "";
 38395  		_ref = flagNames;
 38396  		_i = 0;
 38397  		while (true) {
 38398  			if (!(_i < _ref.$length)) { break; }
 38399  			i = _i;
 38400  			name = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
 38401  			if (!((((f & (((y = ((i >>> 0)), y < 32 ? (1 << y) : 0) >>> 0))) >>> 0) === 0))) {
 38402  				if (!(s === "")) {
 38403  					s = s + ("|");
 38404  				}
 38405  				s = s + (name);
 38406  			}
 38407  			_i++;
 38408  		}
 38409  		if (s === "") {
 38410  			s = "0";
 38411  		}
 38412  		return s;
 38413  	};
 38414  	$ptrType(Flags).prototype.String = function() { return new Flags(this.$get()).String(); };
 38415  	Interface.ptr.prototype.Addrs = function() {
 38416  		var _r$9, _tuple, err, ifat, ifi, $s, $r;
 38417  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$9 = $f._r$9; _tuple = $f._tuple; err = $f.err; ifat = $f.ifat; ifi = $f.ifi; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 38418  		ifi = this;
 38419  		if (ifi === ptrType$37.nil) {
 38420  			$s = -1; return [sliceType$9.nil, new OpError.ptr("route", "ip+net", $ifaceNil, $ifaceNil, errInvalidInterface)];
 38421  		}
 38422  		_r$9 = interfaceAddrTable(ifi); /* */ $s = 1; case 1: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 38423  		_tuple = _r$9;
 38424  		ifat = _tuple[0];
 38425  		err = _tuple[1];
 38426  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 38427  			err = new OpError.ptr("route", "ip+net", $ifaceNil, $ifaceNil, err);
 38428  		}
 38429  		$s = -1; return [ifat, err];
 38430  		/* */ } return; } if ($f === undefined) { $f = { $blk: Interface.ptr.prototype.Addrs }; } $f._r$9 = _r$9; $f._tuple = _tuple; $f.err = err; $f.ifat = ifat; $f.ifi = ifi; $f.$s = $s; $f.$r = $r; return $f;
 38431  	};
 38432  	Interface.prototype.Addrs = function() { return this.$val.Addrs(); };
 38433  	Interface.ptr.prototype.MulticastAddrs = function() {
 38434  		var _r$9, _tuple, err, ifat, ifi, $s, $r;
 38435  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$9 = $f._r$9; _tuple = $f._tuple; err = $f.err; ifat = $f.ifat; ifi = $f.ifi; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 38436  		ifi = this;
 38437  		if (ifi === ptrType$37.nil) {
 38438  			$s = -1; return [sliceType$9.nil, new OpError.ptr("route", "ip+net", $ifaceNil, $ifaceNil, errInvalidInterface)];
 38439  		}
 38440  		_r$9 = interfaceMulticastAddrTable(ifi); /* */ $s = 1; case 1: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 38441  		_tuple = _r$9;
 38442  		ifat = _tuple[0];
 38443  		err = _tuple[1];
 38444  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 38445  			err = new OpError.ptr("route", "ip+net", $ifaceNil, $ifaceNil, err);
 38446  		}
 38447  		$s = -1; return [ifat, err];
 38448  		/* */ } return; } if ($f === undefined) { $f = { $blk: Interface.ptr.prototype.MulticastAddrs }; } $f._r$9 = _r$9; $f._tuple = _tuple; $f.err = err; $f.ifat = ifat; $f.ifi = ifi; $f.$s = $s; $f.$r = $r; return $f;
 38449  	};
 38450  	Interface.prototype.MulticastAddrs = function() { return this.$val.MulticastAddrs(); };
 38451  	interfaceByIndex = function(ift, index) {
 38452  		var _i, _ref, ifi, ift, index;
 38453  		_ref = ift;
 38454  		_i = 0;
 38455  		while (true) {
 38456  			if (!(_i < _ref.$length)) { break; }
 38457  			ifi = $clone(((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]), Interface);
 38458  			if (index === ifi.Index) {
 38459  				return [ifi, $ifaceNil];
 38460  			}
 38461  			_i++;
 38462  		}
 38463  		return [ptrType$37.nil, errNoSuchInterface];
 38464  	};
 38465  	ipv6ZoneCache.ptr.prototype.update = function(ift) {
 38466  		var _entry, _i, _key, _key$1, _r$9, _ref, _tuple, _tuple$1, err, ifi, ift, now, ok, x, x$1, zc, $s, $deferred, $r;
 38467  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _entry = $f._entry; _i = $f._i; _key = $f._key; _key$1 = $f._key$1; _r$9 = $f._r$9; _ref = $f._ref; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; err = $f.err; ifi = $f.ifi; ift = $f.ift; now = $f.now; ok = $f.ok; x = $f.x; x$1 = $f.x$1; zc = $f.zc; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
 38468  		zc = this;
 38469  		$r = zc.RWMutex.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 38470  		$deferred.push([$methodVal(zc.RWMutex, "Unlock"), []]);
 38471  		now = $clone(time.Now(), time.Time);
 38472  		if ($clone(zc.lastFetched, time.Time).After($clone($clone(now, time.Time).Add(new time.Duration(-14, 129542144)), time.Time))) {
 38473  			$s = -1; return;
 38474  		}
 38475  		time.Time.copy(zc.lastFetched, now);
 38476  		/* */ if (ift.$length === 0) { $s = 2; continue; }
 38477  		/* */ $s = 3; continue;
 38478  		/* if (ift.$length === 0) { */ case 2:
 38479  			err = $ifaceNil;
 38480  			_r$9 = interfaceTable(0); /* */ $s = 4; case 4: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 38481  			_tuple = _r$9;
 38482  			ift = _tuple[0];
 38483  			err = _tuple[1];
 38484  			if (!($interfaceIsEqual(err, $ifaceNil))) {
 38485  				$s = -1; return;
 38486  			}
 38487  		/* } */ case 3:
 38488  		zc.toIndex = (x = ift.$length, ((x < 0 || x > 2147483647) ? $throwRuntimeError("makemap: size out of range") : {}));
 38489  		zc.toName = (x$1 = ift.$length, ((x$1 < 0 || x$1 > 2147483647) ? $throwRuntimeError("makemap: size out of range") : {}));
 38490  		_ref = ift;
 38491  		_i = 0;
 38492  		while (true) {
 38493  			if (!(_i < _ref.$length)) { break; }
 38494  			ifi = $clone(((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]), Interface);
 38495  			_key = ifi.Name; (zc.toIndex || $throwRuntimeError("assignment to entry in nil map"))[$String.keyFor(_key)] = { k: _key, v: ifi.Index };
 38496  			_tuple$1 = (_entry = zc.toName[$Int.keyFor(ifi.Index)], _entry !== undefined ? [_entry.v, true] : ["", false]);
 38497  			ok = _tuple$1[1];
 38498  			if (!ok) {
 38499  				_key$1 = ifi.Index; (zc.toName || $throwRuntimeError("assignment to entry in nil map"))[$Int.keyFor(_key$1)] = { k: _key$1, v: ifi.Name };
 38500  			}
 38501  			_i++;
 38502  		}
 38503  		$s = -1; return;
 38504  		/* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: ipv6ZoneCache.ptr.prototype.update }; } $f._entry = _entry; $f._i = _i; $f._key = _key; $f._key$1 = _key$1; $f._r$9 = _r$9; $f._ref = _ref; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.err = err; $f.ifi = ifi; $f.ift = ift; $f.now = now; $f.ok = ok; $f.x = x; $f.x$1 = x$1; $f.zc = zc; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
 38505  	};
 38506  	ipv6ZoneCache.prototype.update = function(ift) { return this.$val.update(ift); };
 38507  	ipv6ZoneCache.ptr.prototype.name = function(index) {
 38508  		var _entry, _tuple, index, name, ok, zc, $s, $deferred, $r;
 38509  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _entry = $f._entry; _tuple = $f._tuple; index = $f.index; name = $f.name; ok = $f.ok; zc = $f.zc; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
 38510  		zc = this;
 38511  		if (index === 0) {
 38512  			$s = -1; return "";
 38513  		}
 38514  		$r = zoneCache.update(sliceType$10.nil); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 38515  		$r = zoneCache.RWMutex.RLock(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 38516  		$deferred.push([$methodVal(zoneCache.RWMutex, "RUnlock"), []]);
 38517  		_tuple = (_entry = zoneCache.toName[$Int.keyFor(index)], _entry !== undefined ? [_entry.v, true] : ["", false]);
 38518  		name = _tuple[0];
 38519  		ok = _tuple[1];
 38520  		if (!ok) {
 38521  			name = uitoa(((index >>> 0)));
 38522  		}
 38523  		$s = -1; return name;
 38524  		/* */ } return; } } catch(err) { $err = err; $s = -1; return ""; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: ipv6ZoneCache.ptr.prototype.name }; } $f._entry = _entry; $f._tuple = _tuple; $f.index = index; $f.name = name; $f.ok = ok; $f.zc = zc; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
 38525  	};
 38526  	ipv6ZoneCache.prototype.name = function(index) { return this.$val.name(index); };
 38527  	ipv6ZoneCache.ptr.prototype.index = function(name) {
 38528  		var _entry, _tuple, _tuple$1, index, name, ok, zc, $s, $deferred, $r;
 38529  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _entry = $f._entry; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; index = $f.index; name = $f.name; ok = $f.ok; zc = $f.zc; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
 38530  		zc = this;
 38531  		if (name === "") {
 38532  			$s = -1; return 0;
 38533  		}
 38534  		$r = zoneCache.update(sliceType$10.nil); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 38535  		$r = zoneCache.RWMutex.RLock(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 38536  		$deferred.push([$methodVal(zoneCache.RWMutex, "RUnlock"), []]);
 38537  		_tuple = (_entry = zoneCache.toIndex[$String.keyFor(name)], _entry !== undefined ? [_entry.v, true] : [0, false]);
 38538  		index = _tuple[0];
 38539  		ok = _tuple[1];
 38540  		if (!ok) {
 38541  			_tuple$1 = dtoi(name);
 38542  			index = _tuple$1[0];
 38543  		}
 38544  		$s = -1; return index;
 38545  		/* */ } return; } } catch(err) { $err = err; $s = -1; return 0; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: ipv6ZoneCache.ptr.prototype.index }; } $f._entry = _entry; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.index = index; $f.name = name; $f.ok = ok; $f.zc = zc; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
 38546  	};
 38547  	ipv6ZoneCache.prototype.index = function(name) { return this.$val.index(name); };
 38548  	interfaceTable = function(ifindex) {
 38549  		var _1, _i, _r$9, _ref, _tuple, _tuple$1, _tuple$2, attrs, err, err$1, ifim, ifindex, ift, m, msgs, tab, $s, $r;
 38550  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _i = $f._i; _r$9 = $f._r$9; _ref = $f._ref; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; attrs = $f.attrs; err = $f.err; err$1 = $f.err$1; ifim = $f.ifim; ifindex = $f.ifindex; ift = $f.ift; m = $f.m; msgs = $f.msgs; tab = $f.tab; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 38551  		m = [m];
 38552  		_r$9 = syscall.NetlinkRIB(18, 0); /* */ $s = 1; case 1: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 38553  		_tuple = _r$9;
 38554  		tab = _tuple[0];
 38555  		err = _tuple[1];
 38556  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 38557  			$s = -1; return [sliceType$10.nil, os.NewSyscallError("netlinkrib", err)];
 38558  		}
 38559  		_tuple$1 = syscall.ParseNetlinkMessage(tab);
 38560  		msgs = _tuple$1[0];
 38561  		err = _tuple$1[1];
 38562  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 38563  			$s = -1; return [sliceType$10.nil, os.NewSyscallError("parsenetlinkmessage", err)];
 38564  		}
 38565  		ift = sliceType$10.nil;
 38566  		_ref = msgs;
 38567  		_i = 0;
 38568  		loop:
 38569  		while (true) {
 38570  			if (!(_i < _ref.$length)) { break; }
 38571  			m[0] = $clone(((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]), syscall.NetlinkMessage);
 38572  			_1 = m[0].Header.Type;
 38573  			if (_1 === (3)) {
 38574  				break loop;
 38575  			} else if (_1 === (16)) {
 38576  				ifim = ($pointerOfStructConversion(($sliceToArray(m[0].Data)), ptrType$38));
 38577  				if ((ifindex === 0) || (ifindex === ((ifim.Index >> 0)))) {
 38578  					_tuple$2 = syscall.ParseNetlinkRouteAttr(m[0]);
 38579  					attrs = _tuple$2[0];
 38580  					err$1 = _tuple$2[1];
 38581  					if (!($interfaceIsEqual(err$1, $ifaceNil))) {
 38582  						$s = -1; return [sliceType$10.nil, os.NewSyscallError("parsenetlinkrouteattr", err$1)];
 38583  					}
 38584  					ift = $append(ift, newLink(ifim, attrs));
 38585  					if (ifindex === ((ifim.Index >> 0))) {
 38586  						break loop;
 38587  					}
 38588  				}
 38589  			}
 38590  			_i++;
 38591  		}
 38592  		$s = -1; return [ift, $ifaceNil];
 38593  		/* */ } return; } if ($f === undefined) { $f = { $blk: interfaceTable }; } $f._1 = _1; $f._i = _i; $f._r$9 = _r$9; $f._ref = _ref; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f.attrs = attrs; $f.err = err; $f.err$1 = err$1; $f.ifim = ifim; $f.ifindex = ifindex; $f.ift = ift; $f.m = m; $f.msgs = msgs; $f.tab = tab; $f.$s = $s; $f.$r = $r; return $f;
 38594  	};
 38595  	newLink = function(ifim, attrs) {
 38596  		var _1, _2, _3, _4, _i, _i$1, _ref, _ref$1, a, attrs, b, ifi, ifim, nonzero, x, x$1;
 38597  		ifi = new Interface.ptr(((ifim.Index >> 0)), 0, "", HardwareAddr.nil, linkFlags(ifim.Flags));
 38598  		_ref = attrs;
 38599  		_i = 0;
 38600  		while (true) {
 38601  			if (!(_i < _ref.$length)) { break; }
 38602  			a = $clone(((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]), syscall.NetlinkRouteAttr);
 38603  			_1 = a.Attr.Type;
 38604  			if (_1 === (1)) {
 38605  				_2 = a.Value.$length;
 38606  				if (_2 === (4)) {
 38607  					_3 = ifim.Type;
 38608  					if ((_3 === (768)) || (_3 === (778)) || (_3 === (776))) {
 38609  						_i++;
 38610  						continue;
 38611  					}
 38612  				} else if (_2 === (16)) {
 38613  					_4 = ifim.Type;
 38614  					if ((_4 === (769)) || (_4 === (823))) {
 38615  						_i++;
 38616  						continue;
 38617  					}
 38618  				}
 38619  				nonzero = false;
 38620  				_ref$1 = a.Value;
 38621  				_i$1 = 0;
 38622  				while (true) {
 38623  					if (!(_i$1 < _ref$1.$length)) { break; }
 38624  					b = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]);
 38625  					if (!((b === 0))) {
 38626  						nonzero = true;
 38627  						break;
 38628  					}
 38629  					_i$1++;
 38630  				}
 38631  				if (nonzero) {
 38632  					ifi.HardwareAddr = (x = a.Value, $subslice(new HardwareAddr(x.$array), x.$offset, x.$offset + x.$length));
 38633  				}
 38634  			} else if (_1 === (3)) {
 38635  				ifi.Name = ($bytesToString($subslice(a.Value, 0, (a.Value.$length - 1 >> 0))));
 38636  			} else if (_1 === (4)) {
 38637  				ifi.MTU = (((x$1 = $subslice(a.Value, 0, 4), (0 >= x$1.$length ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + 0])) >> 0));
 38638  			}
 38639  			_i++;
 38640  		}
 38641  		return ifi;
 38642  	};
 38643  	linkFlags = function(rawFlags) {
 38644  		var f, rawFlags;
 38645  		f = 0;
 38646  		if (!((((rawFlags & 1) >>> 0) === 0))) {
 38647  			f = (f | (1)) >>> 0;
 38648  		}
 38649  		if (!((((rawFlags & 2) >>> 0) === 0))) {
 38650  			f = (f | (2)) >>> 0;
 38651  		}
 38652  		if (!((((rawFlags & 8) >>> 0) === 0))) {
 38653  			f = (f | (4)) >>> 0;
 38654  		}
 38655  		if (!((((rawFlags & 16) >>> 0) === 0))) {
 38656  			f = (f | (8)) >>> 0;
 38657  		}
 38658  		if (!((((rawFlags & 4096) >>> 0) === 0))) {
 38659  			f = (f | (16)) >>> 0;
 38660  		}
 38661  		return f;
 38662  	};
 38663  	interfaceAddrTable = function(ifi) {
 38664  		var _r$10, _r$9, _tuple, _tuple$1, _tuple$2, _tuple$3, err, err$1, ifat, ifi, ift, msgs, tab, $s, $r;
 38665  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$10 = $f._r$10; _r$9 = $f._r$9; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; err = $f.err; err$1 = $f.err$1; ifat = $f.ifat; ifi = $f.ifi; ift = $f.ift; msgs = $f.msgs; tab = $f.tab; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 38666  		_r$9 = syscall.NetlinkRIB(22, 0); /* */ $s = 1; case 1: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 38667  		_tuple = _r$9;
 38668  		tab = _tuple[0];
 38669  		err = _tuple[1];
 38670  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 38671  			$s = -1; return [sliceType$9.nil, os.NewSyscallError("netlinkrib", err)];
 38672  		}
 38673  		_tuple$1 = syscall.ParseNetlinkMessage(tab);
 38674  		msgs = _tuple$1[0];
 38675  		err = _tuple$1[1];
 38676  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 38677  			$s = -1; return [sliceType$9.nil, os.NewSyscallError("parsenetlinkmessage", err)];
 38678  		}
 38679  		ift = sliceType$10.nil;
 38680  		/* */ if (ifi === ptrType$37.nil) { $s = 2; continue; }
 38681  		/* */ $s = 3; continue;
 38682  		/* if (ifi === ptrType$37.nil) { */ case 2:
 38683  			err$1 = $ifaceNil;
 38684  			_r$10 = interfaceTable(0); /* */ $s = 4; case 4: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
 38685  			_tuple$2 = _r$10;
 38686  			ift = _tuple$2[0];
 38687  			err$1 = _tuple$2[1];
 38688  			if (!($interfaceIsEqual(err$1, $ifaceNil))) {
 38689  				$s = -1; return [sliceType$9.nil, err$1];
 38690  			}
 38691  		/* } */ case 3:
 38692  		_tuple$3 = addrTable(ift, ifi, msgs);
 38693  		ifat = _tuple$3[0];
 38694  		err = _tuple$3[1];
 38695  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 38696  			$s = -1; return [sliceType$9.nil, err];
 38697  		}
 38698  		$s = -1; return [ifat, $ifaceNil];
 38699  		/* */ } return; } if ($f === undefined) { $f = { $blk: interfaceAddrTable }; } $f._r$10 = _r$10; $f._r$9 = _r$9; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f.err = err; $f.err$1 = err$1; $f.ifat = ifat; $f.ifi = ifi; $f.ift = ift; $f.msgs = msgs; $f.tab = tab; $f.$s = $s; $f.$r = $r; return $f;
 38700  	};
 38701  	addrTable = function(ift, ifi, msgs) {
 38702  		var _1, _i, _ref, _tuple, _tuple$1, attrs, err, err$1, ifa, ifam, ifat, ifi, ift, m, msgs;
 38703  		ifat = sliceType$9.nil;
 38704  		_ref = msgs;
 38705  		_i = 0;
 38706  		loop:
 38707  		while (true) {
 38708  			if (!(_i < _ref.$length)) { break; }
 38709  			m = $clone(((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]), syscall.NetlinkMessage);
 38710  			_1 = m.Header.Type;
 38711  			if (_1 === (3)) {
 38712  				break loop;
 38713  			} else if (_1 === (20)) {
 38714  				ifam = ($pointerOfStructConversion(($sliceToArray(m.Data)), ptrType$39));
 38715  				if (!((ift.$length === 0)) || (ifi.Index === ((ifam.Index >> 0)))) {
 38716  					if (!((ift.$length === 0))) {
 38717  						err = $ifaceNil;
 38718  						_tuple = interfaceByIndex(ift, ((ifam.Index >> 0)));
 38719  						ifi = _tuple[0];
 38720  						err = _tuple[1];
 38721  						if (!($interfaceIsEqual(err, $ifaceNil))) {
 38722  							return [sliceType$9.nil, err];
 38723  						}
 38724  					}
 38725  					_tuple$1 = syscall.ParseNetlinkRouteAttr(m);
 38726  					attrs = _tuple$1[0];
 38727  					err$1 = _tuple$1[1];
 38728  					if (!($interfaceIsEqual(err$1, $ifaceNil))) {
 38729  						return [sliceType$9.nil, os.NewSyscallError("parsenetlinkrouteattr", err$1)];
 38730  					}
 38731  					ifa = newAddr(ifam, attrs);
 38732  					if (!($interfaceIsEqual(ifa, $ifaceNil))) {
 38733  						ifat = $append(ifat, ifa);
 38734  					}
 38735  				}
 38736  			}
 38737  			_i++;
 38738  		}
 38739  		return [ifat, $ifaceNil];
 38740  	};
 38741  	newAddr = function(ifam, attrs) {
 38742  		var _1, _i, _i$1, _ref, _ref$1, a, a$1, attrs, ifa, ifam, ipPointToPoint, x, x$1, x$2, x$3;
 38743  		ipPointToPoint = false;
 38744  		_ref = attrs;
 38745  		_i = 0;
 38746  		while (true) {
 38747  			if (!(_i < _ref.$length)) { break; }
 38748  			a = $clone(((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]), syscall.NetlinkRouteAttr);
 38749  			if (a.Attr.Type === 2) {
 38750  				ipPointToPoint = true;
 38751  				break;
 38752  			}
 38753  			_i++;
 38754  		}
 38755  		_ref$1 = attrs;
 38756  		_i$1 = 0;
 38757  		while (true) {
 38758  			if (!(_i$1 < _ref$1.$length)) { break; }
 38759  			a$1 = $clone(((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]), syscall.NetlinkRouteAttr);
 38760  			if (ipPointToPoint && (a$1.Attr.Type === 1)) {
 38761  				_i$1++;
 38762  				continue;
 38763  			}
 38764  			_1 = ifam.Family;
 38765  			if (_1 === (2)) {
 38766  				return new IPNet.ptr(IPv4((x = a$1.Value, (0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0])), (x$1 = a$1.Value, (1 >= x$1.$length ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + 1])), (x$2 = a$1.Value, (2 >= x$2.$length ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + 2])), (x$3 = a$1.Value, (3 >= x$3.$length ? ($throwRuntimeError("index out of range"), undefined) : x$3.$array[x$3.$offset + 3]))), CIDRMask(((ifam.Prefixlen >> 0)), 32));
 38767  			} else if (_1 === (10)) {
 38768  				ifa = new IPNet.ptr($makeSlice(IP, 16), CIDRMask(((ifam.Prefixlen >> 0)), 128));
 38769  				$copySlice(ifa.IP, a$1.Value);
 38770  				return ifa;
 38771  			}
 38772  			_i$1++;
 38773  		}
 38774  		return $ifaceNil;
 38775  	};
 38776  	interfaceMulticastAddrTable = function(ifi) {
 38777  		var _r$10, _r$9, ifi, ifmat4, ifmat6, $s, $r;
 38778  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$10 = $f._r$10; _r$9 = $f._r$9; ifi = $f.ifi; ifmat4 = $f.ifmat4; ifmat6 = $f.ifmat6; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 38779  		_r$9 = parseProcNetIGMP("/proc/net/igmp", ifi); /* */ $s = 1; case 1: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 38780  		ifmat4 = _r$9;
 38781  		_r$10 = parseProcNetIGMP6("/proc/net/igmp6", ifi); /* */ $s = 2; case 2: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
 38782  		ifmat6 = _r$10;
 38783  		$s = -1; return [$appendSlice(ifmat4, ifmat6), $ifaceNil];
 38784  		/* */ } return; } if ($f === undefined) { $f = { $blk: interfaceMulticastAddrTable }; } $f._r$10 = _r$10; $f._r$9 = _r$9; $f.ifi = ifi; $f.ifmat4 = ifmat4; $f.ifmat6 = ifmat6; $f.$s = $s; $f.$r = $r; return $f;
 38785  	};
 38786  	parseProcNetIGMP = function(path, ifi) {
 38787  		var _q, _r$10, _r$11, _r$12, _r$13, _r$9, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, b, err, f, fd, i, i$1, ifi, ifma, ifmat, l, name, ok, path, x, x$1, $s, $deferred, $r;
 38788  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _q = $f._q; _r$10 = $f._r$10; _r$11 = $f._r$11; _r$12 = $f._r$12; _r$13 = $f._r$13; _r$9 = $f._r$9; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; _tuple$4 = $f._tuple$4; b = $f.b; err = $f.err; f = $f.f; fd = $f.fd; i = $f.i; i$1 = $f.i$1; ifi = $f.ifi; ifma = $f.ifma; ifmat = $f.ifmat; l = $f.l; name = $f.name; ok = $f.ok; path = $f.path; x = $f.x; x$1 = $f.x$1; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
 38789  		_r$9 = open(path); /* */ $s = 1; case 1: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 38790  		_tuple = _r$9;
 38791  		fd = _tuple[0];
 38792  		err = _tuple[1];
 38793  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 38794  			$s = -1; return sliceType$9.nil;
 38795  		}
 38796  		$deferred.push([$methodVal(fd, "close"), []]);
 38797  		ifmat = sliceType$9.nil;
 38798  		name = "";
 38799  		_r$10 = fd.readLine(); /* */ $s = 2; case 2: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
 38800  		_r$10;
 38801  		b = $makeSlice(sliceType$1, 4);
 38802  		_r$11 = fd.readLine(); /* */ $s = 3; case 3: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; }
 38803  		_tuple$1 = _r$11;
 38804  		l = _tuple$1[0];
 38805  		ok = _tuple$1[1];
 38806  		/* while (true) { */ case 4:
 38807  			/* if (!(ok)) { break; } */ if(!(ok)) { $s = 5; continue; }
 38808  			f = splitAtBytes(l, " :\r\t\n");
 38809  			/* */ if (f.$length < 4) { $s = 6; continue; }
 38810  			/* */ $s = 7; continue;
 38811  			/* if (f.$length < 4) { */ case 6:
 38812  				_r$12 = fd.readLine(); /* */ $s = 8; case 8: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; }
 38813  				_tuple$2 = _r$12;
 38814  				l = _tuple$2[0];
 38815  				ok = _tuple$2[1];
 38816  				/* continue; */ $s = 4; continue;
 38817  			/* } */ case 7:
 38818  			if (!((l.charCodeAt(0) === 32)) && !((l.charCodeAt(0) === 9))) {
 38819  				name = (1 >= f.$length ? ($throwRuntimeError("index out of range"), undefined) : f.$array[f.$offset + 1]);
 38820  			} else if (((0 >= f.$length ? ($throwRuntimeError("index out of range"), undefined) : f.$array[f.$offset + 0]).length === 8)) {
 38821  				if (ifi === ptrType$37.nil || name === ifi.Name) {
 38822  					i = 0;
 38823  					while (true) {
 38824  						if (!((i + 1 >> 0) < (0 >= f.$length ? ($throwRuntimeError("index out of range"), undefined) : f.$array[f.$offset + 0]).length)) { break; }
 38825  						_tuple$3 = xtoi2($substring((0 >= f.$length ? ($throwRuntimeError("index out of range"), undefined) : f.$array[f.$offset + 0]), i, (i + 2 >> 0)), 0);
 38826  						(x = (_q = i / 2, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")), ((x < 0 || x >= b.$length) ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + x] = _tuple$3[0]));
 38827  						i = i + (2) >> 0;
 38828  					}
 38829  					i$1 = (x$1 = $subslice(b, 0, 4), (0 >= x$1.$length ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + 0]));
 38830  					ifma = new IPAddr.ptr(IPv4((((i$1 >>> 24 >>> 0) << 24 >>> 24)), (((i$1 >>> 16 >>> 0) << 24 >>> 24)), (((i$1 >>> 8 >>> 0) << 24 >>> 24)), ((i$1 << 24 >>> 24))), "");
 38831  					ifmat = $append(ifmat, ifma);
 38832  				}
 38833  			}
 38834  			_r$13 = fd.readLine(); /* */ $s = 9; case 9: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; }
 38835  			_tuple$4 = _r$13;
 38836  			l = _tuple$4[0];
 38837  			ok = _tuple$4[1];
 38838  		/* } */ $s = 4; continue; case 5:
 38839  		$s = -1; return ifmat;
 38840  		/* */ } return; } } catch(err) { $err = err; $s = -1; return sliceType$9.nil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: parseProcNetIGMP }; } $f._q = _q; $f._r$10 = _r$10; $f._r$11 = _r$11; $f._r$12 = _r$12; $f._r$13 = _r$13; $f._r$9 = _r$9; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f._tuple$4 = _tuple$4; $f.b = b; $f.err = err; $f.f = f; $f.fd = fd; $f.i = i; $f.i$1 = i$1; $f.ifi = ifi; $f.ifma = ifma; $f.ifmat = ifmat; $f.l = l; $f.name = name; $f.ok = ok; $f.path = path; $f.x = x; $f.x$1 = x$1; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
 38841  	};
 38842  	parseProcNetIGMP6 = function(path, ifi) {
 38843  		var _q, _r$10, _r$11, _r$12, _r$9, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, b, err, f, fd, i, ifi, ifma, ifmat, l, ok, path, x, $s, $deferred, $r;
 38844  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _q = $f._q; _r$10 = $f._r$10; _r$11 = $f._r$11; _r$12 = $f._r$12; _r$9 = $f._r$9; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; _tuple$4 = $f._tuple$4; b = $f.b; err = $f.err; f = $f.f; fd = $f.fd; i = $f.i; ifi = $f.ifi; ifma = $f.ifma; ifmat = $f.ifmat; l = $f.l; ok = $f.ok; path = $f.path; x = $f.x; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
 38845  		_r$9 = open(path); /* */ $s = 1; case 1: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 38846  		_tuple = _r$9;
 38847  		fd = _tuple[0];
 38848  		err = _tuple[1];
 38849  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 38850  			$s = -1; return sliceType$9.nil;
 38851  		}
 38852  		$deferred.push([$methodVal(fd, "close"), []]);
 38853  		ifmat = sliceType$9.nil;
 38854  		b = $makeSlice(sliceType$1, 16);
 38855  		_r$10 = fd.readLine(); /* */ $s = 2; case 2: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
 38856  		_tuple$1 = _r$10;
 38857  		l = _tuple$1[0];
 38858  		ok = _tuple$1[1];
 38859  		/* while (true) { */ case 3:
 38860  			/* if (!(ok)) { break; } */ if(!(ok)) { $s = 4; continue; }
 38861  			f = splitAtBytes(l, " \r\t\n");
 38862  			/* */ if (f.$length < 6) { $s = 5; continue; }
 38863  			/* */ $s = 6; continue;
 38864  			/* if (f.$length < 6) { */ case 5:
 38865  				_r$11 = fd.readLine(); /* */ $s = 7; case 7: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; }
 38866  				_tuple$2 = _r$11;
 38867  				l = _tuple$2[0];
 38868  				ok = _tuple$2[1];
 38869  				/* continue; */ $s = 3; continue;
 38870  			/* } */ case 6:
 38871  			if (ifi === ptrType$37.nil || (1 >= f.$length ? ($throwRuntimeError("index out of range"), undefined) : f.$array[f.$offset + 1]) === ifi.Name) {
 38872  				i = 0;
 38873  				while (true) {
 38874  					if (!((i + 1 >> 0) < (2 >= f.$length ? ($throwRuntimeError("index out of range"), undefined) : f.$array[f.$offset + 2]).length)) { break; }
 38875  					_tuple$3 = xtoi2($substring((2 >= f.$length ? ($throwRuntimeError("index out of range"), undefined) : f.$array[f.$offset + 2]), i, (i + 2 >> 0)), 0);
 38876  					(x = (_q = i / 2, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")), ((x < 0 || x >= b.$length) ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + x] = _tuple$3[0]));
 38877  					i = i + (2) >> 0;
 38878  				}
 38879  				ifma = new IPAddr.ptr(new IP([(0 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 0]), (1 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 1]), (2 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 2]), (3 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 3]), (4 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 4]), (5 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 5]), (6 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 6]), (7 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 7]), (8 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 8]), (9 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 9]), (10 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 10]), (11 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 11]), (12 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 12]), (13 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 13]), (14 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 14]), (15 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 15])]), "");
 38880  				ifmat = $append(ifmat, ifma);
 38881  			}
 38882  			_r$12 = fd.readLine(); /* */ $s = 8; case 8: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; }
 38883  			_tuple$4 = _r$12;
 38884  			l = _tuple$4[0];
 38885  			ok = _tuple$4[1];
 38886  		/* } */ $s = 3; continue; case 4:
 38887  		$s = -1; return ifmat;
 38888  		/* */ } return; } } catch(err) { $err = err; $s = -1; return sliceType$9.nil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: parseProcNetIGMP6 }; } $f._q = _q; $f._r$10 = _r$10; $f._r$11 = _r$11; $f._r$12 = _r$12; $f._r$9 = _r$9; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f._tuple$4 = _tuple$4; $f.b = b; $f.err = err; $f.f = f; $f.fd = fd; $f.i = i; $f.ifi = ifi; $f.ifma = ifma; $f.ifmat = ifmat; $f.l = l; $f.ok = ok; $f.path = path; $f.x = x; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
 38889  	};
 38890  	IPv4 = function(a, b, c, d) {
 38891  		var a, b, c, d, p;
 38892  		p = $makeSlice(IP, 16);
 38893  		$copySlice(p, v4InV6Prefix);
 38894  		(12 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 12] = a);
 38895  		(13 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 13] = b);
 38896  		(14 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 14] = c);
 38897  		(15 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 15] = d);
 38898  		return p;
 38899  	};
 38900  	$pkg.IPv4 = IPv4;
 38901  	IPv4Mask = function(a, b, c, d) {
 38902  		var a, b, c, d, p;
 38903  		p = $makeSlice(IPMask, 4);
 38904  		(0 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 0] = a);
 38905  		(1 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 1] = b);
 38906  		(2 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 2] = c);
 38907  		(3 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 3] = d);
 38908  		return p;
 38909  	};
 38910  	$pkg.IPv4Mask = IPv4Mask;
 38911  	CIDRMask = function(ones, bits) {
 38912  		var _q, bits, i, l, m, n, ones, y;
 38913  		if (!((bits === 32)) && !((bits === 128))) {
 38914  			return IPMask.nil;
 38915  		}
 38916  		if (ones < 0 || ones > bits) {
 38917  			return IPMask.nil;
 38918  		}
 38919  		l = (_q = bits / 8, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero"));
 38920  		m = $makeSlice(IPMask, l);
 38921  		n = ((ones >>> 0));
 38922  		i = 0;
 38923  		while (true) {
 38924  			if (!(i < l)) { break; }
 38925  			if (n >= 8) {
 38926  				((i < 0 || i >= m.$length) ? ($throwRuntimeError("index out of range"), undefined) : m.$array[m.$offset + i] = 255);
 38927  				n = n - (8) >>> 0;
 38928  				i = i + (1) >> 0;
 38929  				continue;
 38930  			}
 38931  			((i < 0 || i >= m.$length) ? ($throwRuntimeError("index out of range"), undefined) : m.$array[m.$offset + i] = (~(((y = n, y < 32 ? (255 >>> y) : 0) << 24 >>> 24)) << 24 >>> 24));
 38932  			n = 0;
 38933  			i = i + (1) >> 0;
 38934  		}
 38935  		return m;
 38936  	};
 38937  	$pkg.CIDRMask = CIDRMask;
 38938  	IP.prototype.IsUnspecified = function() {
 38939  		var ip;
 38940  		ip = this;
 38941  		return ip.Equal($pkg.IPv4zero) || ip.Equal($pkg.IPv6unspecified);
 38942  	};
 38943  	$ptrType(IP).prototype.IsUnspecified = function() { return this.$get().IsUnspecified(); };
 38944  	IP.prototype.IsLoopback = function() {
 38945  		var ip, ip4;
 38946  		ip = this;
 38947  		ip4 = ip.To4();
 38948  		if (!(ip4 === IP.nil)) {
 38949  			return (0 >= ip4.$length ? ($throwRuntimeError("index out of range"), undefined) : ip4.$array[ip4.$offset + 0]) === 127;
 38950  		}
 38951  		return ip.Equal($pkg.IPv6loopback);
 38952  	};
 38953  	$ptrType(IP).prototype.IsLoopback = function() { return this.$get().IsLoopback(); };
 38954  	IP.prototype.IsMulticast = function() {
 38955  		var ip, ip4;
 38956  		ip = this;
 38957  		ip4 = ip.To4();
 38958  		if (!(ip4 === IP.nil)) {
 38959  			return (((0 >= ip4.$length ? ($throwRuntimeError("index out of range"), undefined) : ip4.$array[ip4.$offset + 0]) & 240) >>> 0) === 224;
 38960  		}
 38961  		return (ip.$length === 16) && ((0 >= ip.$length ? ($throwRuntimeError("index out of range"), undefined) : ip.$array[ip.$offset + 0]) === 255);
 38962  	};
 38963  	$ptrType(IP).prototype.IsMulticast = function() { return this.$get().IsMulticast(); };
 38964  	IP.prototype.IsInterfaceLocalMulticast = function() {
 38965  		var ip;
 38966  		ip = this;
 38967  		return (ip.$length === 16) && ((0 >= ip.$length ? ($throwRuntimeError("index out of range"), undefined) : ip.$array[ip.$offset + 0]) === 255) && ((((1 >= ip.$length ? ($throwRuntimeError("index out of range"), undefined) : ip.$array[ip.$offset + 1]) & 15) >>> 0) === 1);
 38968  	};
 38969  	$ptrType(IP).prototype.IsInterfaceLocalMulticast = function() { return this.$get().IsInterfaceLocalMulticast(); };
 38970  	IP.prototype.IsLinkLocalMulticast = function() {
 38971  		var ip, ip4;
 38972  		ip = this;
 38973  		ip4 = ip.To4();
 38974  		if (!(ip4 === IP.nil)) {
 38975  			return ((0 >= ip4.$length ? ($throwRuntimeError("index out of range"), undefined) : ip4.$array[ip4.$offset + 0]) === 224) && ((1 >= ip4.$length ? ($throwRuntimeError("index out of range"), undefined) : ip4.$array[ip4.$offset + 1]) === 0) && ((2 >= ip4.$length ? ($throwRuntimeError("index out of range"), undefined) : ip4.$array[ip4.$offset + 2]) === 0);
 38976  		}
 38977  		return (ip.$length === 16) && ((0 >= ip.$length ? ($throwRuntimeError("index out of range"), undefined) : ip.$array[ip.$offset + 0]) === 255) && ((((1 >= ip.$length ? ($throwRuntimeError("index out of range"), undefined) : ip.$array[ip.$offset + 1]) & 15) >>> 0) === 2);
 38978  	};
 38979  	$ptrType(IP).prototype.IsLinkLocalMulticast = function() { return this.$get().IsLinkLocalMulticast(); };
 38980  	IP.prototype.IsLinkLocalUnicast = function() {
 38981  		var ip, ip4;
 38982  		ip = this;
 38983  		ip4 = ip.To4();
 38984  		if (!(ip4 === IP.nil)) {
 38985  			return ((0 >= ip4.$length ? ($throwRuntimeError("index out of range"), undefined) : ip4.$array[ip4.$offset + 0]) === 169) && ((1 >= ip4.$length ? ($throwRuntimeError("index out of range"), undefined) : ip4.$array[ip4.$offset + 1]) === 254);
 38986  		}
 38987  		return (ip.$length === 16) && ((0 >= ip.$length ? ($throwRuntimeError("index out of range"), undefined) : ip.$array[ip.$offset + 0]) === 254) && ((((1 >= ip.$length ? ($throwRuntimeError("index out of range"), undefined) : ip.$array[ip.$offset + 1]) & 192) >>> 0) === 128);
 38988  	};
 38989  	$ptrType(IP).prototype.IsLinkLocalUnicast = function() { return this.$get().IsLinkLocalUnicast(); };
 38990  	IP.prototype.IsGlobalUnicast = function() {
 38991  		var ip;
 38992  		ip = this;
 38993  		return ((ip.$length === 4) || (ip.$length === 16)) && !ip.Equal($pkg.IPv4bcast) && !ip.IsUnspecified() && !ip.IsLoopback() && !ip.IsMulticast() && !ip.IsLinkLocalUnicast();
 38994  	};
 38995  	$ptrType(IP).prototype.IsGlobalUnicast = function() { return this.$get().IsGlobalUnicast(); };
 38996  	isZeros = function(p) {
 38997  		var i, p;
 38998  		i = 0;
 38999  		while (true) {
 39000  			if (!(i < p.$length)) { break; }
 39001  			if (!((((i < 0 || i >= p.$length) ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + i]) === 0))) {
 39002  				return false;
 39003  			}
 39004  			i = i + (1) >> 0;
 39005  		}
 39006  		return true;
 39007  	};
 39008  	IP.prototype.To4 = function() {
 39009  		var ip;
 39010  		ip = this;
 39011  		if (ip.$length === 4) {
 39012  			return ip;
 39013  		}
 39014  		if ((ip.$length === 16) && isZeros($subslice(ip, 0, 10)) && ((10 >= ip.$length ? ($throwRuntimeError("index out of range"), undefined) : ip.$array[ip.$offset + 10]) === 255) && ((11 >= ip.$length ? ($throwRuntimeError("index out of range"), undefined) : ip.$array[ip.$offset + 11]) === 255)) {
 39015  			return $subslice(ip, 12, 16);
 39016  		}
 39017  		return IP.nil;
 39018  	};
 39019  	$ptrType(IP).prototype.To4 = function() { return this.$get().To4(); };
 39020  	IP.prototype.To16 = function() {
 39021  		var ip;
 39022  		ip = this;
 39023  		if (ip.$length === 4) {
 39024  			return IPv4((0 >= ip.$length ? ($throwRuntimeError("index out of range"), undefined) : ip.$array[ip.$offset + 0]), (1 >= ip.$length ? ($throwRuntimeError("index out of range"), undefined) : ip.$array[ip.$offset + 1]), (2 >= ip.$length ? ($throwRuntimeError("index out of range"), undefined) : ip.$array[ip.$offset + 2]), (3 >= ip.$length ? ($throwRuntimeError("index out of range"), undefined) : ip.$array[ip.$offset + 3]));
 39025  		}
 39026  		if (ip.$length === 16) {
 39027  			return ip;
 39028  		}
 39029  		return IP.nil;
 39030  	};
 39031  	$ptrType(IP).prototype.To16 = function() { return this.$get().To16(); };
 39032  	IP.prototype.DefaultMask = function() {
 39033  		var _1, ip;
 39034  		ip = this;
 39035  		ip = ip.To4();
 39036  		if (ip === IP.nil) {
 39037  			return IPMask.nil;
 39038  		}
 39039  		_1 = true;
 39040  		if (_1 === ((0 >= ip.$length ? ($throwRuntimeError("index out of range"), undefined) : ip.$array[ip.$offset + 0]) < 128)) {
 39041  			return classAMask;
 39042  		} else if (_1 === ((0 >= ip.$length ? ($throwRuntimeError("index out of range"), undefined) : ip.$array[ip.$offset + 0]) < 192)) {
 39043  			return classBMask;
 39044  		} else {
 39045  			return classCMask;
 39046  		}
 39047  	};
 39048  	$ptrType(IP).prototype.DefaultMask = function() { return this.$get().DefaultMask(); };
 39049  	allFF = function(b) {
 39050  		var _i, _ref, b, c;
 39051  		_ref = b;
 39052  		_i = 0;
 39053  		while (true) {
 39054  			if (!(_i < _ref.$length)) { break; }
 39055  			c = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
 39056  			if (!((c === 255))) {
 39057  				return false;
 39058  			}
 39059  			_i++;
 39060  		}
 39061  		return true;
 39062  	};
 39063  	IP.prototype.Mask = function(mask) {
 39064  		var i, ip, mask, n, out, x, x$1;
 39065  		ip = this;
 39066  		if ((mask.$length === 16) && (ip.$length === 4) && allFF((x = $subslice(mask, 0, 12), $subslice(new sliceType$1(x.$array), x.$offset, x.$offset + x.$length)))) {
 39067  			mask = $subslice(mask, 12);
 39068  		}
 39069  		if ((mask.$length === 4) && (ip.$length === 16) && bytesEqual((x$1 = $subslice(ip, 0, 12), $subslice(new sliceType$1(x$1.$array), x$1.$offset, x$1.$offset + x$1.$length)), v4InV6Prefix)) {
 39070  			ip = $subslice(ip, 12);
 39071  		}
 39072  		n = ip.$length;
 39073  		if (!((n === mask.$length))) {
 39074  			return IP.nil;
 39075  		}
 39076  		out = $makeSlice(IP, n);
 39077  		i = 0;
 39078  		while (true) {
 39079  			if (!(i < n)) { break; }
 39080  			((i < 0 || i >= out.$length) ? ($throwRuntimeError("index out of range"), undefined) : out.$array[out.$offset + i] = ((((i < 0 || i >= ip.$length) ? ($throwRuntimeError("index out of range"), undefined) : ip.$array[ip.$offset + i]) & ((i < 0 || i >= mask.$length) ? ($throwRuntimeError("index out of range"), undefined) : mask.$array[mask.$offset + i])) >>> 0));
 39081  			i = i + (1) >> 0;
 39082  		}
 39083  		return out;
 39084  	};
 39085  	$ptrType(IP).prototype.Mask = function(mask) { return this.$get().Mask(mask); };
 39086  	IP.prototype.String = function() {
 39087  		var b, e0, e1, i, i$1, ip, j, p, p4, x, x$1;
 39088  		ip = this;
 39089  		p = ip;
 39090  		if (ip.$length === 0) {
 39091  			return "<nil>";
 39092  		}
 39093  		p4 = p.To4();
 39094  		if (p4.$length === 4) {
 39095  			return uitoa((((0 >= p4.$length ? ($throwRuntimeError("index out of range"), undefined) : p4.$array[p4.$offset + 0]) >>> 0))) + "." + uitoa((((1 >= p4.$length ? ($throwRuntimeError("index out of range"), undefined) : p4.$array[p4.$offset + 1]) >>> 0))) + "." + uitoa((((2 >= p4.$length ? ($throwRuntimeError("index out of range"), undefined) : p4.$array[p4.$offset + 2]) >>> 0))) + "." + uitoa((((3 >= p4.$length ? ($throwRuntimeError("index out of range"), undefined) : p4.$array[p4.$offset + 3]) >>> 0)));
 39096  		}
 39097  		if (!((p.$length === 16))) {
 39098  			return "?" + hexString($subslice(new sliceType$1(ip.$array), ip.$offset, ip.$offset + ip.$length));
 39099  		}
 39100  		e0 = -1;
 39101  		e1 = -1;
 39102  		i = 0;
 39103  		while (true) {
 39104  			if (!(i < 16)) { break; }
 39105  			j = i;
 39106  			while (true) {
 39107  				if (!(j < 16 && (((j < 0 || j >= p.$length) ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + j]) === 0) && ((x = j + 1 >> 0, ((x < 0 || x >= p.$length) ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + x])) === 0))) { break; }
 39108  				j = j + (2) >> 0;
 39109  			}
 39110  			if (j > i && (j - i >> 0) > (e1 - e0 >> 0)) {
 39111  				e0 = i;
 39112  				e1 = j;
 39113  				i = j;
 39114  			}
 39115  			i = i + (2) >> 0;
 39116  		}
 39117  		if ((e1 - e0 >> 0) <= 2) {
 39118  			e0 = -1;
 39119  			e1 = -1;
 39120  		}
 39121  		b = $makeSlice(sliceType$1, 0, 39);
 39122  		i$1 = 0;
 39123  		while (true) {
 39124  			if (!(i$1 < 16)) { break; }
 39125  			if (i$1 === e0) {
 39126  				b = $append(b, 58, 58);
 39127  				i$1 = e1;
 39128  				if (i$1 >= 16) {
 39129  					break;
 39130  				}
 39131  			} else if (i$1 > 0) {
 39132  				b = $append(b, 58);
 39133  			}
 39134  			b = appendHex(b, (((((((i$1 < 0 || i$1 >= p.$length) ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + i$1]) >>> 0)) << 8 >>> 0)) | (((x$1 = i$1 + 1 >> 0, ((x$1 < 0 || x$1 >= p.$length) ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + x$1])) >>> 0))) >>> 0);
 39135  			i$1 = i$1 + (2) >> 0;
 39136  		}
 39137  		return ($bytesToString(b));
 39138  	};
 39139  	$ptrType(IP).prototype.String = function() { return this.$get().String(); };
 39140  	hexString = function(b) {
 39141  		var _i, _ref, _tmp, _tmp$1, b, i, s, tn, x, x$1;
 39142  		s = $makeSlice(sliceType$1, ($imul(b.$length, 2)));
 39143  		_ref = b;
 39144  		_i = 0;
 39145  		while (true) {
 39146  			if (!(_i < _ref.$length)) { break; }
 39147  			i = _i;
 39148  			tn = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
 39149  			_tmp = "0123456789abcdef".charCodeAt((tn >>> 4 << 24 >>> 24));
 39150  			_tmp$1 = "0123456789abcdef".charCodeAt(((tn & 15) >>> 0));
 39151  			(x = $imul(i, 2), ((x < 0 || x >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + x] = _tmp));
 39152  			(x$1 = ($imul(i, 2)) + 1 >> 0, ((x$1 < 0 || x$1 >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + x$1] = _tmp$1));
 39153  			_i++;
 39154  		}
 39155  		return ($bytesToString(s));
 39156  	};
 39157  	ipEmptyString = function(ip) {
 39158  		var ip;
 39159  		if (ip.$length === 0) {
 39160  			return "";
 39161  		}
 39162  		return ip.String();
 39163  	};
 39164  	IP.prototype.MarshalText = function() {
 39165  		var ip;
 39166  		ip = this;
 39167  		if (ip.$length === 0) {
 39168  			return [(new sliceType$1($stringToBytes(""))), $ifaceNil];
 39169  		}
 39170  		if (!((ip.$length === 4)) && !((ip.$length === 16))) {
 39171  			return [sliceType$1.nil, new AddrError.ptr("invalid IP address", hexString($subslice(new sliceType$1(ip.$array), ip.$offset, ip.$offset + ip.$length)))];
 39172  		}
 39173  		return [(new sliceType$1($stringToBytes(ip.String()))), $ifaceNil];
 39174  	};
 39175  	$ptrType(IP).prototype.MarshalText = function() { return this.$get().MarshalText(); };
 39176  	$ptrType(IP).prototype.UnmarshalText = function(text) {
 39177  		var ip, s, text, x;
 39178  		ip = this;
 39179  		if (text.$length === 0) {
 39180  			ip.$set(IP.nil);
 39181  			return $ifaceNil;
 39182  		}
 39183  		s = ($bytesToString(text));
 39184  		x = ParseIP(s);
 39185  		if (x === IP.nil) {
 39186  			return new ParseError.ptr("IP address", s);
 39187  		}
 39188  		ip.$set(x);
 39189  		return $ifaceNil;
 39190  	};
 39191  	IP.prototype.Equal = function(x) {
 39192  		var ip, x, x$1, x$2, x$3, x$4;
 39193  		ip = this;
 39194  		if (ip.$length === x.$length) {
 39195  			return bytesEqual($subslice(new sliceType$1(ip.$array), ip.$offset, ip.$offset + ip.$length), $subslice(new sliceType$1(x.$array), x.$offset, x.$offset + x.$length));
 39196  		}
 39197  		if ((ip.$length === 4) && (x.$length === 16)) {
 39198  			return bytesEqual((x$1 = $subslice(x, 0, 12), $subslice(new sliceType$1(x$1.$array), x$1.$offset, x$1.$offset + x$1.$length)), v4InV6Prefix) && bytesEqual($subslice(new sliceType$1(ip.$array), ip.$offset, ip.$offset + ip.$length), (x$2 = $subslice(x, 12), $subslice(new sliceType$1(x$2.$array), x$2.$offset, x$2.$offset + x$2.$length)));
 39199  		}
 39200  		if ((ip.$length === 16) && (x.$length === 4)) {
 39201  			return bytesEqual((x$3 = $subslice(ip, 0, 12), $subslice(new sliceType$1(x$3.$array), x$3.$offset, x$3.$offset + x$3.$length)), v4InV6Prefix) && bytesEqual((x$4 = $subslice(ip, 12), $subslice(new sliceType$1(x$4.$array), x$4.$offset, x$4.$offset + x$4.$length)), $subslice(new sliceType$1(x.$array), x.$offset, x.$offset + x.$length));
 39202  		}
 39203  		return false;
 39204  	};
 39205  	$ptrType(IP).prototype.Equal = function(x) { return this.$get().Equal(x); };
 39206  	IP.prototype.matchAddrFamily = function(x) {
 39207  		var ip, x;
 39208  		ip = this;
 39209  		return !(ip.To4() === IP.nil) && !(x.To4() === IP.nil) || !(ip.To16() === IP.nil) && ip.To4() === IP.nil && !(x.To16() === IP.nil) && x.To4() === IP.nil;
 39210  	};
 39211  	$ptrType(IP).prototype.matchAddrFamily = function(x) { return this.$get().matchAddrFamily(x); };
 39212  	simpleMaskLength = function(mask) {
 39213  		var _i, _ref, i, mask, n, v, y;
 39214  		n = 0;
 39215  		_ref = mask;
 39216  		_i = 0;
 39217  		while (true) {
 39218  			if (!(_i < _ref.$length)) { break; }
 39219  			i = _i;
 39220  			v = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
 39221  			if (v === 255) {
 39222  				n = n + (8) >> 0;
 39223  				_i++;
 39224  				continue;
 39225  			}
 39226  			while (true) {
 39227  				if (!(!((((v & 128) >>> 0) === 0)))) { break; }
 39228  				n = n + (1) >> 0;
 39229  				v = (y = (1), y < 32 ? (v << y) : 0) << 24 >>> 24;
 39230  			}
 39231  			if (!((v === 0))) {
 39232  				return -1;
 39233  			}
 39234  			i = i + (1) >> 0;
 39235  			while (true) {
 39236  				if (!(i < mask.$length)) { break; }
 39237  				if (!((((i < 0 || i >= mask.$length) ? ($throwRuntimeError("index out of range"), undefined) : mask.$array[mask.$offset + i]) === 0))) {
 39238  					return -1;
 39239  				}
 39240  				i = i + (1) >> 0;
 39241  			}
 39242  			break;
 39243  		}
 39244  		return n;
 39245  	};
 39246  	IPMask.prototype.Size = function() {
 39247  		var _tmp, _tmp$1, _tmp$2, _tmp$3, bits, m, ones;
 39248  		ones = 0;
 39249  		bits = 0;
 39250  		m = this;
 39251  		_tmp = simpleMaskLength(m);
 39252  		_tmp$1 = $imul(m.$length, 8);
 39253  		ones = _tmp;
 39254  		bits = _tmp$1;
 39255  		if (ones === -1) {
 39256  			_tmp$2 = 0;
 39257  			_tmp$3 = 0;
 39258  			ones = _tmp$2;
 39259  			bits = _tmp$3;
 39260  			return [ones, bits];
 39261  		}
 39262  		return [ones, bits];
 39263  	};
 39264  	$ptrType(IPMask).prototype.Size = function() { return this.$get().Size(); };
 39265  	IPMask.prototype.String = function() {
 39266  		var m;
 39267  		m = this;
 39268  		if (m.$length === 0) {
 39269  			return "<nil>";
 39270  		}
 39271  		return hexString($subslice(new sliceType$1(m.$array), m.$offset, m.$offset + m.$length));
 39272  	};
 39273  	$ptrType(IPMask).prototype.String = function() { return this.$get().String(); };
 39274  	networkNumberAndMask = function(n) {
 39275  		var _1, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, ip, m, n;
 39276  		ip = IP.nil;
 39277  		m = IPMask.nil;
 39278  		ip = n.IP.To4();
 39279  		if (ip === IP.nil) {
 39280  			ip = n.IP;
 39281  			if (!((ip.$length === 16))) {
 39282  				_tmp = IP.nil;
 39283  				_tmp$1 = IPMask.nil;
 39284  				ip = _tmp;
 39285  				m = _tmp$1;
 39286  				return [ip, m];
 39287  			}
 39288  		}
 39289  		m = n.Mask;
 39290  		_1 = m.$length;
 39291  		if (_1 === (4)) {
 39292  			if (!((ip.$length === 4))) {
 39293  				_tmp$2 = IP.nil;
 39294  				_tmp$3 = IPMask.nil;
 39295  				ip = _tmp$2;
 39296  				m = _tmp$3;
 39297  				return [ip, m];
 39298  			}
 39299  		} else if (_1 === (16)) {
 39300  			if (ip.$length === 4) {
 39301  				m = $subslice(m, 12);
 39302  			}
 39303  		} else {
 39304  			_tmp$4 = IP.nil;
 39305  			_tmp$5 = IPMask.nil;
 39306  			ip = _tmp$4;
 39307  			m = _tmp$5;
 39308  			return [ip, m];
 39309  		}
 39310  		return [ip, m];
 39311  	};
 39312  	IPNet.ptr.prototype.Contains = function(ip) {
 39313  		var _tuple, i, ip, l, m, n, nn, x;
 39314  		n = this;
 39315  		_tuple = networkNumberAndMask(n);
 39316  		nn = _tuple[0];
 39317  		m = _tuple[1];
 39318  		x = ip.To4();
 39319  		if (!(x === IP.nil)) {
 39320  			ip = x;
 39321  		}
 39322  		l = ip.$length;
 39323  		if (!((l === nn.$length))) {
 39324  			return false;
 39325  		}
 39326  		i = 0;
 39327  		while (true) {
 39328  			if (!(i < l)) { break; }
 39329  			if (!((((((i < 0 || i >= nn.$length) ? ($throwRuntimeError("index out of range"), undefined) : nn.$array[nn.$offset + i]) & ((i < 0 || i >= m.$length) ? ($throwRuntimeError("index out of range"), undefined) : m.$array[m.$offset + i])) >>> 0) === ((((i < 0 || i >= ip.$length) ? ($throwRuntimeError("index out of range"), undefined) : ip.$array[ip.$offset + i]) & ((i < 0 || i >= m.$length) ? ($throwRuntimeError("index out of range"), undefined) : m.$array[m.$offset + i])) >>> 0)))) {
 39330  				return false;
 39331  			}
 39332  			i = i + (1) >> 0;
 39333  		}
 39334  		return true;
 39335  	};
 39336  	IPNet.prototype.Contains = function(ip) { return this.$val.Contains(ip); };
 39337  	IPNet.ptr.prototype.Network = function() {
 39338  		var n;
 39339  		n = this;
 39340  		return "ip+net";
 39341  	};
 39342  	IPNet.prototype.Network = function() { return this.$val.Network(); };
 39343  	IPNet.ptr.prototype.String = function() {
 39344  		var _tuple, l, m, n, nn;
 39345  		n = this;
 39346  		_tuple = networkNumberAndMask(n);
 39347  		nn = _tuple[0];
 39348  		m = _tuple[1];
 39349  		if (nn === IP.nil || m === IPMask.nil) {
 39350  			return "<nil>";
 39351  		}
 39352  		l = simpleMaskLength(m);
 39353  		if (l === -1) {
 39354  			return nn.String() + "/" + m.String();
 39355  		}
 39356  		return nn.String() + "/" + uitoa(((l >>> 0)));
 39357  	};
 39358  	IPNet.prototype.String = function() { return this.$val.String(); };
 39359  	parseIPv4 = function(s) {
 39360  		var _tuple, c, i, n, ok, p, s;
 39361  		p = arrayType$2.zero();
 39362  		i = 0;
 39363  		while (true) {
 39364  			if (!(i < 4)) { break; }
 39365  			if (s.length === 0) {
 39366  				return IP.nil;
 39367  			}
 39368  			if (i > 0) {
 39369  				if (!((s.charCodeAt(0) === 46))) {
 39370  					return IP.nil;
 39371  				}
 39372  				s = $substring(s, 1);
 39373  			}
 39374  			_tuple = dtoi(s);
 39375  			n = _tuple[0];
 39376  			c = _tuple[1];
 39377  			ok = _tuple[2];
 39378  			if (!ok || n > 255) {
 39379  				return IP.nil;
 39380  			}
 39381  			s = $substring(s, c);
 39382  			((i < 0 || i >= p.length) ? ($throwRuntimeError("index out of range"), undefined) : p[i] = ((n << 24 >>> 24)));
 39383  			i = i + (1) >> 0;
 39384  		}
 39385  		if (!((s.length === 0))) {
 39386  			return IP.nil;
 39387  		}
 39388  		return IPv4(p[0], p[1], p[2], p[3]);
 39389  	};
 39390  	parseIPv6 = function(s, zoneAllowed) {
 39391  		var _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$14, _tmp$15, _tmp$16, _tmp$17, _tmp$18, _tmp$19, _tmp$2, _tmp$20, _tmp$21, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, _tuple$1, c, ellipsis, i, ip, ip4, j, j$1, n, n$1, ok, s, x, x$1, x$2, x$3, x$4, zone, zoneAllowed;
 39392  		ip = IP.nil;
 39393  		zone = "";
 39394  		ip = $makeSlice(IP, 16);
 39395  		ellipsis = -1;
 39396  		if (zoneAllowed) {
 39397  			_tuple = splitHostZone(s);
 39398  			s = _tuple[0];
 39399  			zone = _tuple[1];
 39400  		}
 39401  		if (s.length >= 2 && (s.charCodeAt(0) === 58) && (s.charCodeAt(1) === 58)) {
 39402  			ellipsis = 0;
 39403  			s = $substring(s, 2);
 39404  			if (s.length === 0) {
 39405  				_tmp = ip;
 39406  				_tmp$1 = zone;
 39407  				ip = _tmp;
 39408  				zone = _tmp$1;
 39409  				return [ip, zone];
 39410  			}
 39411  		}
 39412  		i = 0;
 39413  		while (true) {
 39414  			if (!(i < 16)) { break; }
 39415  			_tuple$1 = xtoi(s);
 39416  			n = _tuple$1[0];
 39417  			c = _tuple$1[1];
 39418  			ok = _tuple$1[2];
 39419  			if (!ok || n > 65535) {
 39420  				_tmp$2 = IP.nil;
 39421  				_tmp$3 = zone;
 39422  				ip = _tmp$2;
 39423  				zone = _tmp$3;
 39424  				return [ip, zone];
 39425  			}
 39426  			if (c < s.length && (s.charCodeAt(c) === 46)) {
 39427  				if (ellipsis < 0 && !((i === 12))) {
 39428  					_tmp$4 = IP.nil;
 39429  					_tmp$5 = zone;
 39430  					ip = _tmp$4;
 39431  					zone = _tmp$5;
 39432  					return [ip, zone];
 39433  				}
 39434  				if ((i + 4 >> 0) > 16) {
 39435  					_tmp$6 = IP.nil;
 39436  					_tmp$7 = zone;
 39437  					ip = _tmp$6;
 39438  					zone = _tmp$7;
 39439  					return [ip, zone];
 39440  				}
 39441  				ip4 = parseIPv4(s);
 39442  				if (ip4 === IP.nil) {
 39443  					_tmp$8 = IP.nil;
 39444  					_tmp$9 = zone;
 39445  					ip = _tmp$8;
 39446  					zone = _tmp$9;
 39447  					return [ip, zone];
 39448  				}
 39449  				((i < 0 || i >= ip.$length) ? ($throwRuntimeError("index out of range"), undefined) : ip.$array[ip.$offset + i] = (12 >= ip4.$length ? ($throwRuntimeError("index out of range"), undefined) : ip4.$array[ip4.$offset + 12]));
 39450  				(x = i + 1 >> 0, ((x < 0 || x >= ip.$length) ? ($throwRuntimeError("index out of range"), undefined) : ip.$array[ip.$offset + x] = (13 >= ip4.$length ? ($throwRuntimeError("index out of range"), undefined) : ip4.$array[ip4.$offset + 13])));
 39451  				(x$1 = i + 2 >> 0, ((x$1 < 0 || x$1 >= ip.$length) ? ($throwRuntimeError("index out of range"), undefined) : ip.$array[ip.$offset + x$1] = (14 >= ip4.$length ? ($throwRuntimeError("index out of range"), undefined) : ip4.$array[ip4.$offset + 14])));
 39452  				(x$2 = i + 3 >> 0, ((x$2 < 0 || x$2 >= ip.$length) ? ($throwRuntimeError("index out of range"), undefined) : ip.$array[ip.$offset + x$2] = (15 >= ip4.$length ? ($throwRuntimeError("index out of range"), undefined) : ip4.$array[ip4.$offset + 15])));
 39453  				s = "";
 39454  				i = i + (4) >> 0;
 39455  				break;
 39456  			}
 39457  			((i < 0 || i >= ip.$length) ? ($throwRuntimeError("index out of range"), undefined) : ip.$array[ip.$offset + i] = (((n >> 8 >> 0) << 24 >>> 24)));
 39458  			(x$3 = i + 1 >> 0, ((x$3 < 0 || x$3 >= ip.$length) ? ($throwRuntimeError("index out of range"), undefined) : ip.$array[ip.$offset + x$3] = ((n << 24 >>> 24))));
 39459  			i = i + (2) >> 0;
 39460  			s = $substring(s, c);
 39461  			if (s.length === 0) {
 39462  				break;
 39463  			}
 39464  			if (!((s.charCodeAt(0) === 58)) || (s.length === 1)) {
 39465  				_tmp$10 = IP.nil;
 39466  				_tmp$11 = zone;
 39467  				ip = _tmp$10;
 39468  				zone = _tmp$11;
 39469  				return [ip, zone];
 39470  			}
 39471  			s = $substring(s, 1);
 39472  			if (s.charCodeAt(0) === 58) {
 39473  				if (ellipsis >= 0) {
 39474  					_tmp$12 = IP.nil;
 39475  					_tmp$13 = zone;
 39476  					ip = _tmp$12;
 39477  					zone = _tmp$13;
 39478  					return [ip, zone];
 39479  				}
 39480  				ellipsis = i;
 39481  				s = $substring(s, 1);
 39482  				if (s.length === 0) {
 39483  					break;
 39484  				}
 39485  			}
 39486  		}
 39487  		if (!((s.length === 0))) {
 39488  			_tmp$14 = IP.nil;
 39489  			_tmp$15 = zone;
 39490  			ip = _tmp$14;
 39491  			zone = _tmp$15;
 39492  			return [ip, zone];
 39493  		}
 39494  		if (i < 16) {
 39495  			if (ellipsis < 0) {
 39496  				_tmp$16 = IP.nil;
 39497  				_tmp$17 = zone;
 39498  				ip = _tmp$16;
 39499  				zone = _tmp$17;
 39500  				return [ip, zone];
 39501  			}
 39502  			n$1 = 16 - i >> 0;
 39503  			j = i - 1 >> 0;
 39504  			while (true) {
 39505  				if (!(j >= ellipsis)) { break; }
 39506  				(x$4 = j + n$1 >> 0, ((x$4 < 0 || x$4 >= ip.$length) ? ($throwRuntimeError("index out of range"), undefined) : ip.$array[ip.$offset + x$4] = ((j < 0 || j >= ip.$length) ? ($throwRuntimeError("index out of range"), undefined) : ip.$array[ip.$offset + j])));
 39507  				j = j - (1) >> 0;
 39508  			}
 39509  			j$1 = (ellipsis + n$1 >> 0) - 1 >> 0;
 39510  			while (true) {
 39511  				if (!(j$1 >= ellipsis)) { break; }
 39512  				((j$1 < 0 || j$1 >= ip.$length) ? ($throwRuntimeError("index out of range"), undefined) : ip.$array[ip.$offset + j$1] = 0);
 39513  				j$1 = j$1 - (1) >> 0;
 39514  			}
 39515  		} else if (ellipsis >= 0) {
 39516  			_tmp$18 = IP.nil;
 39517  			_tmp$19 = zone;
 39518  			ip = _tmp$18;
 39519  			zone = _tmp$19;
 39520  			return [ip, zone];
 39521  		}
 39522  		_tmp$20 = ip;
 39523  		_tmp$21 = zone;
 39524  		ip = _tmp$20;
 39525  		zone = _tmp$21;
 39526  		return [ip, zone];
 39527  	};
 39528  	ParseIP = function(s) {
 39529  		var _1, _tuple, i, ip, s;
 39530  		i = 0;
 39531  		while (true) {
 39532  			if (!(i < s.length)) { break; }
 39533  			_1 = s.charCodeAt(i);
 39534  			if (_1 === (46)) {
 39535  				return parseIPv4(s);
 39536  			} else if (_1 === (58)) {
 39537  				_tuple = parseIPv6(s, false);
 39538  				ip = _tuple[0];
 39539  				return ip;
 39540  			}
 39541  			i = i + (1) >> 0;
 39542  		}
 39543  		return IP.nil;
 39544  	};
 39545  	$pkg.ParseIP = ParseIP;
 39546  	ParseCIDR = function(s) {
 39547  		var _tmp, _tmp$1, _tuple, _tuple$1, addr, i, ip, iplen, m, mask, n, ok, s;
 39548  		i = byteIndex(s, 47);
 39549  		if (i < 0) {
 39550  			return [IP.nil, ptrType$4.nil, new ParseError.ptr("CIDR address", s)];
 39551  		}
 39552  		_tmp = $substring(s, 0, i);
 39553  		_tmp$1 = $substring(s, (i + 1 >> 0));
 39554  		addr = _tmp;
 39555  		mask = _tmp$1;
 39556  		iplen = 4;
 39557  		ip = parseIPv4(addr);
 39558  		if (ip === IP.nil) {
 39559  			iplen = 16;
 39560  			_tuple = parseIPv6(addr, false);
 39561  			ip = _tuple[0];
 39562  		}
 39563  		_tuple$1 = dtoi(mask);
 39564  		n = _tuple$1[0];
 39565  		i = _tuple$1[1];
 39566  		ok = _tuple$1[2];
 39567  		if (ip === IP.nil || !ok || !((i === mask.length)) || n < 0 || n > ($imul(8, iplen))) {
 39568  			return [IP.nil, ptrType$4.nil, new ParseError.ptr("CIDR address", s)];
 39569  		}
 39570  		m = CIDRMask(n, $imul(8, iplen));
 39571  		return [ip, new IPNet.ptr(ip.Mask(m), m), $ifaceNil];
 39572  	};
 39573  	$pkg.ParseCIDR = ParseCIDR;
 39574  	IPAddr.ptr.prototype.Network = function() {
 39575  		var a;
 39576  		a = this;
 39577  		return "ip";
 39578  	};
 39579  	IPAddr.prototype.Network = function() { return this.$val.Network(); };
 39580  	IPAddr.ptr.prototype.String = function() {
 39581  		var a, ip;
 39582  		a = this;
 39583  		if (a === ptrType$8.nil) {
 39584  			return "<nil>";
 39585  		}
 39586  		ip = ipEmptyString(a.IP);
 39587  		if (!(a.Zone === "")) {
 39588  			return ip + "%" + a.Zone;
 39589  		}
 39590  		return ip;
 39591  	};
 39592  	IPAddr.prototype.String = function() { return this.$val.String(); };
 39593  	IPAddr.ptr.prototype.isWildcard = function() {
 39594  		var a;
 39595  		a = this;
 39596  		if (a === ptrType$8.nil || a.IP === IP.nil) {
 39597  			return true;
 39598  		}
 39599  		return a.IP.IsUnspecified();
 39600  	};
 39601  	IPAddr.prototype.isWildcard = function() { return this.$val.isWildcard(); };
 39602  	IPAddr.ptr.prototype.opAddr = function() {
 39603  		var a;
 39604  		a = this;
 39605  		if (a === ptrType$8.nil) {
 39606  			return $ifaceNil;
 39607  		}
 39608  		return a;
 39609  	};
 39610  	IPAddr.prototype.opAddr = function() { return this.$val.opAddr(); };
 39611  	IPConn.ptr.prototype.SyscallConn = function() {
 39612  		var _returncast, c;
 39613  		c = this;
 39614  		if (!c.conn.ok()) {
 39615  			return [$ifaceNil, new syscall.Errno(22)];
 39616  		}
 39617  		_returncast = newRawConn(c.conn.fd);
 39618  		return [_returncast[0], _returncast[1]];
 39619  	};
 39620  	IPConn.prototype.SyscallConn = function() { return this.$val.SyscallConn(); };
 39621  	IPConn.ptr.prototype.ReadFromIP = function(b) {
 39622  		var _r$9, _tuple, addr, b, c, err, n, $s, $r;
 39623  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$9 = $f._r$9; _tuple = $f._tuple; addr = $f.addr; b = $f.b; c = $f.c; err = $f.err; n = $f.n; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 39624  		c = this;
 39625  		if (!c.conn.ok()) {
 39626  			$s = -1; return [0, ptrType$8.nil, new syscall.Errno(22)];
 39627  		}
 39628  		_r$9 = c.readFrom(b); /* */ $s = 1; case 1: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 39629  		_tuple = _r$9;
 39630  		n = _tuple[0];
 39631  		addr = _tuple[1];
 39632  		err = _tuple[2];
 39633  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 39634  			err = new OpError.ptr("read", c.conn.fd.net, c.conn.fd.laddr, c.conn.fd.raddr, err);
 39635  		}
 39636  		$s = -1; return [n, addr, err];
 39637  		/* */ } return; } if ($f === undefined) { $f = { $blk: IPConn.ptr.prototype.ReadFromIP }; } $f._r$9 = _r$9; $f._tuple = _tuple; $f.addr = addr; $f.b = b; $f.c = c; $f.err = err; $f.n = n; $f.$s = $s; $f.$r = $r; return $f;
 39638  	};
 39639  	IPConn.prototype.ReadFromIP = function(b) { return this.$val.ReadFromIP(b); };
 39640  	IPConn.ptr.prototype.ReadFrom = function(b) {
 39641  		var _r$9, _tuple, addr, b, c, err, n, $s, $r;
 39642  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$9 = $f._r$9; _tuple = $f._tuple; addr = $f.addr; b = $f.b; c = $f.c; err = $f.err; n = $f.n; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 39643  		c = this;
 39644  		if (!c.conn.ok()) {
 39645  			$s = -1; return [0, $ifaceNil, new syscall.Errno(22)];
 39646  		}
 39647  		_r$9 = c.readFrom(b); /* */ $s = 1; case 1: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 39648  		_tuple = _r$9;
 39649  		n = _tuple[0];
 39650  		addr = _tuple[1];
 39651  		err = _tuple[2];
 39652  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 39653  			err = new OpError.ptr("read", c.conn.fd.net, c.conn.fd.laddr, c.conn.fd.raddr, err);
 39654  		}
 39655  		if (addr === ptrType$8.nil) {
 39656  			$s = -1; return [n, $ifaceNil, err];
 39657  		}
 39658  		$s = -1; return [n, addr, err];
 39659  		/* */ } return; } if ($f === undefined) { $f = { $blk: IPConn.ptr.prototype.ReadFrom }; } $f._r$9 = _r$9; $f._tuple = _tuple; $f.addr = addr; $f.b = b; $f.c = c; $f.err = err; $f.n = n; $f.$s = $s; $f.$r = $r; return $f;
 39660  	};
 39661  	IPConn.prototype.ReadFrom = function(b) { return this.$val.ReadFrom(b); };
 39662  	IPConn.ptr.prototype.ReadMsgIP = function(b, oob) {
 39663  		var _r$9, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tuple, addr, b, c, err, flags, n, oob, oobn, $s, $r;
 39664  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$9 = $f._r$9; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tmp$4 = $f._tmp$4; _tuple = $f._tuple; addr = $f.addr; b = $f.b; c = $f.c; err = $f.err; flags = $f.flags; n = $f.n; oob = $f.oob; oobn = $f.oobn; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 39665  		n = 0;
 39666  		oobn = 0;
 39667  		flags = 0;
 39668  		addr = ptrType$8.nil;
 39669  		err = $ifaceNil;
 39670  		c = this;
 39671  		if (!c.conn.ok()) {
 39672  			_tmp = 0;
 39673  			_tmp$1 = 0;
 39674  			_tmp$2 = 0;
 39675  			_tmp$3 = ptrType$8.nil;
 39676  			_tmp$4 = new syscall.Errno(22);
 39677  			n = _tmp;
 39678  			oobn = _tmp$1;
 39679  			flags = _tmp$2;
 39680  			addr = _tmp$3;
 39681  			err = _tmp$4;
 39682  			$s = -1; return [n, oobn, flags, addr, err];
 39683  		}
 39684  		_r$9 = c.readMsg(b, oob); /* */ $s = 1; case 1: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 39685  		_tuple = _r$9;
 39686  		n = _tuple[0];
 39687  		oobn = _tuple[1];
 39688  		flags = _tuple[2];
 39689  		addr = _tuple[3];
 39690  		err = _tuple[4];
 39691  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 39692  			err = new OpError.ptr("read", c.conn.fd.net, c.conn.fd.laddr, c.conn.fd.raddr, err);
 39693  		}
 39694  		$s = -1; return [n, oobn, flags, addr, err];
 39695  		/* */ } return; } if ($f === undefined) { $f = { $blk: IPConn.ptr.prototype.ReadMsgIP }; } $f._r$9 = _r$9; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tmp$4 = _tmp$4; $f._tuple = _tuple; $f.addr = addr; $f.b = b; $f.c = c; $f.err = err; $f.flags = flags; $f.n = n; $f.oob = oob; $f.oobn = oobn; $f.$s = $s; $f.$r = $r; return $f;
 39696  	};
 39697  	IPConn.prototype.ReadMsgIP = function(b, oob) { return this.$val.ReadMsgIP(b, oob); };
 39698  	IPConn.ptr.prototype.WriteToIP = function(b, addr) {
 39699  		var _r$9, _tuple, addr, b, c, err, n, $s, $r;
 39700  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$9 = $f._r$9; _tuple = $f._tuple; addr = $f.addr; b = $f.b; c = $f.c; err = $f.err; n = $f.n; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 39701  		c = this;
 39702  		if (!c.conn.ok()) {
 39703  			$s = -1; return [0, new syscall.Errno(22)];
 39704  		}
 39705  		_r$9 = c.writeTo(b, addr); /* */ $s = 1; case 1: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 39706  		_tuple = _r$9;
 39707  		n = _tuple[0];
 39708  		err = _tuple[1];
 39709  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 39710  			err = new OpError.ptr("write", c.conn.fd.net, c.conn.fd.laddr, addr.opAddr(), err);
 39711  		}
 39712  		$s = -1; return [n, err];
 39713  		/* */ } return; } if ($f === undefined) { $f = { $blk: IPConn.ptr.prototype.WriteToIP }; } $f._r$9 = _r$9; $f._tuple = _tuple; $f.addr = addr; $f.b = b; $f.c = c; $f.err = err; $f.n = n; $f.$s = $s; $f.$r = $r; return $f;
 39714  	};
 39715  	IPConn.prototype.WriteToIP = function(b, addr) { return this.$val.WriteToIP(b, addr); };
 39716  	IPConn.ptr.prototype.WriteTo = function(b, addr) {
 39717  		var _r$9, _tuple, _tuple$1, a, addr, b, c, err, n, ok, $s, $r;
 39718  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$9 = $f._r$9; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; a = $f.a; addr = $f.addr; b = $f.b; c = $f.c; err = $f.err; n = $f.n; ok = $f.ok; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 39719  		c = this;
 39720  		if (!c.conn.ok()) {
 39721  			$s = -1; return [0, new syscall.Errno(22)];
 39722  		}
 39723  		_tuple = $assertType(addr, ptrType$8, true);
 39724  		a = _tuple[0];
 39725  		ok = _tuple[1];
 39726  		if (!ok) {
 39727  			$s = -1; return [0, new OpError.ptr("write", c.conn.fd.net, c.conn.fd.laddr, addr, new syscall.Errno(22))];
 39728  		}
 39729  		_r$9 = c.writeTo(b, a); /* */ $s = 1; case 1: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 39730  		_tuple$1 = _r$9;
 39731  		n = _tuple$1[0];
 39732  		err = _tuple$1[1];
 39733  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 39734  			err = new OpError.ptr("write", c.conn.fd.net, c.conn.fd.laddr, a.opAddr(), err);
 39735  		}
 39736  		$s = -1; return [n, err];
 39737  		/* */ } return; } if ($f === undefined) { $f = { $blk: IPConn.ptr.prototype.WriteTo }; } $f._r$9 = _r$9; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.a = a; $f.addr = addr; $f.b = b; $f.c = c; $f.err = err; $f.n = n; $f.ok = ok; $f.$s = $s; $f.$r = $r; return $f;
 39738  	};
 39739  	IPConn.prototype.WriteTo = function(b, addr) { return this.$val.WriteTo(b, addr); };
 39740  	IPConn.ptr.prototype.WriteMsgIP = function(b, oob, addr) {
 39741  		var _r$9, _tmp, _tmp$1, _tmp$2, _tuple, addr, b, c, err, n, oob, oobn, $s, $r;
 39742  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$9 = $f._r$9; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tuple = $f._tuple; addr = $f.addr; b = $f.b; c = $f.c; err = $f.err; n = $f.n; oob = $f.oob; oobn = $f.oobn; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 39743  		n = 0;
 39744  		oobn = 0;
 39745  		err = $ifaceNil;
 39746  		c = this;
 39747  		if (!c.conn.ok()) {
 39748  			_tmp = 0;
 39749  			_tmp$1 = 0;
 39750  			_tmp$2 = new syscall.Errno(22);
 39751  			n = _tmp;
 39752  			oobn = _tmp$1;
 39753  			err = _tmp$2;
 39754  			$s = -1; return [n, oobn, err];
 39755  		}
 39756  		_r$9 = c.writeMsg(b, oob, addr); /* */ $s = 1; case 1: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 39757  		_tuple = _r$9;
 39758  		n = _tuple[0];
 39759  		oobn = _tuple[1];
 39760  		err = _tuple[2];
 39761  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 39762  			err = new OpError.ptr("write", c.conn.fd.net, c.conn.fd.laddr, addr.opAddr(), err);
 39763  		}
 39764  		$s = -1; return [n, oobn, err];
 39765  		/* */ } return; } if ($f === undefined) { $f = { $blk: IPConn.ptr.prototype.WriteMsgIP }; } $f._r$9 = _r$9; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tuple = _tuple; $f.addr = addr; $f.b = b; $f.c = c; $f.err = err; $f.n = n; $f.oob = oob; $f.oobn = oobn; $f.$s = $s; $f.$r = $r; return $f;
 39766  	};
 39767  	IPConn.prototype.WriteMsgIP = function(b, oob, addr) { return this.$val.WriteMsgIP(b, oob, addr); };
 39768  	newIPConn = function(fd) {
 39769  		var fd;
 39770  		return new IPConn.ptr(new conn.ptr(fd));
 39771  	};
 39772  	sockaddrToIP = function(sa) {
 39773  		var _r$9, _ref, sa, sa$1, sa$2, x, x$1, $s, $r;
 39774  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$9 = $f._r$9; _ref = $f._ref; sa = $f.sa; sa$1 = $f.sa$1; sa$2 = $f.sa$2; x = $f.x; x$1 = $f.x$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 39775  		_ref = sa;
 39776  		/* */ if ($assertType(_ref, ptrType$33, true)[1]) { $s = 1; continue; }
 39777  		/* */ if ($assertType(_ref, ptrType$34, true)[1]) { $s = 2; continue; }
 39778  		/* */ $s = 3; continue;
 39779  		/* if ($assertType(_ref, ptrType$33, true)[1]) { */ case 1:
 39780  			sa$1 = _ref.$val;
 39781  			$s = -1; return new IPAddr.ptr((x = $subslice(new sliceType$1(sa$1.Addr), 0), $subslice(new IP(x.$array), x.$offset, x.$offset + x.$length)), "");
 39782  		/* } else if ($assertType(_ref, ptrType$34, true)[1]) { */ case 2:
 39783  			sa$2 = _ref.$val;
 39784  			_r$9 = zoneCache.name(((sa$2.ZoneId >> 0))); /* */ $s = 4; case 4: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 39785  			$s = -1; return new IPAddr.ptr((x$1 = $subslice(new sliceType$1(sa$2.Addr), 0), $subslice(new IP(x$1.$array), x$1.$offset, x$1.$offset + x$1.$length)), _r$9);
 39786  		/* } */ case 3:
 39787  		$s = -1; return $ifaceNil;
 39788  		/* */ } return; } if ($f === undefined) { $f = { $blk: sockaddrToIP }; } $f._r$9 = _r$9; $f._ref = _ref; $f.sa = sa; $f.sa$1 = sa$1; $f.sa$2 = sa$2; $f.x = x; $f.x$1 = x$1; $f.$s = $s; $f.$r = $r; return $f;
 39789  	};
 39790  	IPAddr.ptr.prototype.family = function() {
 39791  		var a;
 39792  		a = this;
 39793  		if (a === ptrType$8.nil || a.IP.$length <= 4) {
 39794  			return 2;
 39795  		}
 39796  		if (!(a.IP.To4() === IP.nil)) {
 39797  			return 2;
 39798  		}
 39799  		return 10;
 39800  	};
 39801  	IPAddr.prototype.family = function() { return this.$val.family(); };
 39802  	IPAddr.ptr.prototype.sockaddr = function(family) {
 39803  		var _r$9, a, family, $s, $r;
 39804  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$9 = $f._r$9; a = $f.a; family = $f.family; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 39805  		a = this;
 39806  		if (a === ptrType$8.nil) {
 39807  			$s = -1; return [$ifaceNil, $ifaceNil];
 39808  		}
 39809  		_r$9 = ipToSockaddr(family, a.IP, 0, a.Zone); /* */ $s = 1; case 1: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 39810  		$s = -1; return _r$9;
 39811  		/* */ } return; } if ($f === undefined) { $f = { $blk: IPAddr.ptr.prototype.sockaddr }; } $f._r$9 = _r$9; $f.a = a; $f.family = family; $f.$s = $s; $f.$r = $r; return $f;
 39812  	};
 39813  	IPAddr.prototype.sockaddr = function(family) { return this.$val.sockaddr(family); };
 39814  	IPAddr.ptr.prototype.toLocal = function(net) {
 39815  		var a, net;
 39816  		a = this;
 39817  		return new IPAddr.ptr(loopbackIP(net), a.Zone);
 39818  	};
 39819  	IPAddr.prototype.toLocal = function(net) { return this.$val.toLocal(net); };
 39820  	IPConn.ptr.prototype.readFrom = function(b) {
 39821  		var _r$10, _r$9, _ref, _tuple, addr, b, c, err, n, sa, sa$1, sa$2, x, x$1, $s, $r;
 39822  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$10 = $f._r$10; _r$9 = $f._r$9; _ref = $f._ref; _tuple = $f._tuple; addr = $f.addr; b = $f.b; c = $f.c; err = $f.err; n = $f.n; sa = $f.sa; sa$1 = $f.sa$1; sa$2 = $f.sa$2; x = $f.x; x$1 = $f.x$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 39823  		c = this;
 39824  		addr = ptrType$8.nil;
 39825  		_r$9 = c.conn.fd.readFrom(b); /* */ $s = 1; case 1: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 39826  		_tuple = _r$9;
 39827  		n = _tuple[0];
 39828  		sa = _tuple[1];
 39829  		err = _tuple[2];
 39830  		_ref = sa;
 39831  		/* */ if ($assertType(_ref, ptrType$33, true)[1]) { $s = 2; continue; }
 39832  		/* */ if ($assertType(_ref, ptrType$34, true)[1]) { $s = 3; continue; }
 39833  		/* */ $s = 4; continue;
 39834  		/* if ($assertType(_ref, ptrType$33, true)[1]) { */ case 2:
 39835  			sa$1 = _ref.$val;
 39836  			addr = new IPAddr.ptr((x = $subslice(new sliceType$1(sa$1.Addr), 0), $subslice(new IP(x.$array), x.$offset, x.$offset + x.$length)), "");
 39837  			n = stripIPv4Header(n, b);
 39838  			$s = 4; continue;
 39839  		/* } else if ($assertType(_ref, ptrType$34, true)[1]) { */ case 3:
 39840  			sa$2 = _ref.$val;
 39841  			_r$10 = zoneCache.name(((sa$2.ZoneId >> 0))); /* */ $s = 5; case 5: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
 39842  			addr = new IPAddr.ptr((x$1 = $subslice(new sliceType$1(sa$2.Addr), 0), $subslice(new IP(x$1.$array), x$1.$offset, x$1.$offset + x$1.$length)), _r$10);
 39843  		/* } */ case 4:
 39844  		$s = -1; return [n, addr, err];
 39845  		/* */ } return; } if ($f === undefined) { $f = { $blk: IPConn.ptr.prototype.readFrom }; } $f._r$10 = _r$10; $f._r$9 = _r$9; $f._ref = _ref; $f._tuple = _tuple; $f.addr = addr; $f.b = b; $f.c = c; $f.err = err; $f.n = n; $f.sa = sa; $f.sa$1 = sa$1; $f.sa$2 = sa$2; $f.x = x; $f.x$1 = x$1; $f.$s = $s; $f.$r = $r; return $f;
 39846  	};
 39847  	IPConn.prototype.readFrom = function(b) { return this.$val.readFrom(b); };
 39848  	stripIPv4Header = function(n, b) {
 39849  		var b, l, n;
 39850  		if (b.$length < 20) {
 39851  			return n;
 39852  		}
 39853  		l = (((((0 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 0]) & 15) >>> 0) >> 0)) << 2 >> 0;
 39854  		if (20 > l || l > b.$length) {
 39855  			return n;
 39856  		}
 39857  		if (!((((0 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 0]) >>> 4 << 24 >>> 24) === 4))) {
 39858  			return n;
 39859  		}
 39860  		$copySlice(b, $subslice(b, l));
 39861  		return n - l >> 0;
 39862  	};
 39863  	IPConn.ptr.prototype.readMsg = function(b, oob) {
 39864  		var _r$10, _r$9, _ref, _tuple, addr, b, c, err, flags, n, oob, oobn, sa, sa$1, sa$2, x, x$1, $s, $r;
 39865  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$10 = $f._r$10; _r$9 = $f._r$9; _ref = $f._ref; _tuple = $f._tuple; addr = $f.addr; b = $f.b; c = $f.c; err = $f.err; flags = $f.flags; n = $f.n; oob = $f.oob; oobn = $f.oobn; sa = $f.sa; sa$1 = $f.sa$1; sa$2 = $f.sa$2; x = $f.x; x$1 = $f.x$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 39866  		n = 0;
 39867  		oobn = 0;
 39868  		flags = 0;
 39869  		addr = ptrType$8.nil;
 39870  		err = $ifaceNil;
 39871  		c = this;
 39872  		sa = $ifaceNil;
 39873  		_r$9 = c.conn.fd.readMsg(b, oob); /* */ $s = 1; case 1: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 39874  		_tuple = _r$9;
 39875  		n = _tuple[0];
 39876  		oobn = _tuple[1];
 39877  		flags = _tuple[2];
 39878  		sa = _tuple[3];
 39879  		err = _tuple[4];
 39880  		_ref = sa;
 39881  		/* */ if ($assertType(_ref, ptrType$33, true)[1]) { $s = 2; continue; }
 39882  		/* */ if ($assertType(_ref, ptrType$34, true)[1]) { $s = 3; continue; }
 39883  		/* */ $s = 4; continue;
 39884  		/* if ($assertType(_ref, ptrType$33, true)[1]) { */ case 2:
 39885  			sa$1 = _ref.$val;
 39886  			addr = new IPAddr.ptr((x = $subslice(new sliceType$1(sa$1.Addr), 0), $subslice(new IP(x.$array), x.$offset, x.$offset + x.$length)), "");
 39887  			$s = 4; continue;
 39888  		/* } else if ($assertType(_ref, ptrType$34, true)[1]) { */ case 3:
 39889  			sa$2 = _ref.$val;
 39890  			_r$10 = zoneCache.name(((sa$2.ZoneId >> 0))); /* */ $s = 5; case 5: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
 39891  			addr = new IPAddr.ptr((x$1 = $subslice(new sliceType$1(sa$2.Addr), 0), $subslice(new IP(x$1.$array), x$1.$offset, x$1.$offset + x$1.$length)), _r$10);
 39892  		/* } */ case 4:
 39893  		$s = -1; return [n, oobn, flags, addr, err];
 39894  		/* */ } return; } if ($f === undefined) { $f = { $blk: IPConn.ptr.prototype.readMsg }; } $f._r$10 = _r$10; $f._r$9 = _r$9; $f._ref = _ref; $f._tuple = _tuple; $f.addr = addr; $f.b = b; $f.c = c; $f.err = err; $f.flags = flags; $f.n = n; $f.oob = oob; $f.oobn = oobn; $f.sa = sa; $f.sa$1 = sa$1; $f.sa$2 = sa$2; $f.x = x; $f.x$1 = x$1; $f.$s = $s; $f.$r = $r; return $f;
 39895  	};
 39896  	IPConn.prototype.readMsg = function(b, oob) { return this.$val.readMsg(b, oob); };
 39897  	IPConn.ptr.prototype.writeTo = function(b, addr) {
 39898  		var _r$10, _r$9, _tuple, addr, b, c, err, sa, $s, $r;
 39899  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$10 = $f._r$10; _r$9 = $f._r$9; _tuple = $f._tuple; addr = $f.addr; b = $f.b; c = $f.c; err = $f.err; sa = $f.sa; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 39900  		c = this;
 39901  		if (c.conn.fd.isConnected) {
 39902  			$s = -1; return [0, $pkg.ErrWriteToConnected];
 39903  		}
 39904  		if (addr === ptrType$8.nil) {
 39905  			$s = -1; return [0, errMissingAddress];
 39906  		}
 39907  		_r$9 = addr.sockaddr(c.conn.fd.family); /* */ $s = 1; case 1: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 39908  		_tuple = _r$9;
 39909  		sa = _tuple[0];
 39910  		err = _tuple[1];
 39911  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 39912  			$s = -1; return [0, err];
 39913  		}
 39914  		_r$10 = c.conn.fd.writeTo(b, sa); /* */ $s = 2; case 2: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
 39915  		$s = -1; return _r$10;
 39916  		/* */ } return; } if ($f === undefined) { $f = { $blk: IPConn.ptr.prototype.writeTo }; } $f._r$10 = _r$10; $f._r$9 = _r$9; $f._tuple = _tuple; $f.addr = addr; $f.b = b; $f.c = c; $f.err = err; $f.sa = sa; $f.$s = $s; $f.$r = $r; return $f;
 39917  	};
 39918  	IPConn.prototype.writeTo = function(b, addr) { return this.$val.writeTo(b, addr); };
 39919  	IPConn.ptr.prototype.writeMsg = function(b, oob, addr) {
 39920  		var _r$10, _r$9, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tuple, _tuple$1, addr, b, c, err, n, oob, oobn, sa, $s, $r;
 39921  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$10 = $f._r$10; _r$9 = $f._r$9; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tmp$4 = $f._tmp$4; _tmp$5 = $f._tmp$5; _tmp$6 = $f._tmp$6; _tmp$7 = $f._tmp$7; _tmp$8 = $f._tmp$8; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; addr = $f.addr; b = $f.b; c = $f.c; err = $f.err; n = $f.n; oob = $f.oob; oobn = $f.oobn; sa = $f.sa; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 39922  		n = 0;
 39923  		oobn = 0;
 39924  		err = $ifaceNil;
 39925  		c = this;
 39926  		if (c.conn.fd.isConnected) {
 39927  			_tmp = 0;
 39928  			_tmp$1 = 0;
 39929  			_tmp$2 = $pkg.ErrWriteToConnected;
 39930  			n = _tmp;
 39931  			oobn = _tmp$1;
 39932  			err = _tmp$2;
 39933  			$s = -1; return [n, oobn, err];
 39934  		}
 39935  		if (addr === ptrType$8.nil) {
 39936  			_tmp$3 = 0;
 39937  			_tmp$4 = 0;
 39938  			_tmp$5 = errMissingAddress;
 39939  			n = _tmp$3;
 39940  			oobn = _tmp$4;
 39941  			err = _tmp$5;
 39942  			$s = -1; return [n, oobn, err];
 39943  		}
 39944  		_r$9 = addr.sockaddr(c.conn.fd.family); /* */ $s = 1; case 1: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 39945  		_tuple = _r$9;
 39946  		sa = _tuple[0];
 39947  		err = _tuple[1];
 39948  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 39949  			_tmp$6 = 0;
 39950  			_tmp$7 = 0;
 39951  			_tmp$8 = err;
 39952  			n = _tmp$6;
 39953  			oobn = _tmp$7;
 39954  			err = _tmp$8;
 39955  			$s = -1; return [n, oobn, err];
 39956  		}
 39957  		_r$10 = c.conn.fd.writeMsg(b, oob, sa); /* */ $s = 2; case 2: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
 39958  		_tuple$1 = _r$10;
 39959  		n = _tuple$1[0];
 39960  		oobn = _tuple$1[1];
 39961  		err = _tuple$1[2];
 39962  		$s = -1; return [n, oobn, err];
 39963  		/* */ } return; } if ($f === undefined) { $f = { $blk: IPConn.ptr.prototype.writeMsg }; } $f._r$10 = _r$10; $f._r$9 = _r$9; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tmp$4 = _tmp$4; $f._tmp$5 = _tmp$5; $f._tmp$6 = _tmp$6; $f._tmp$7 = _tmp$7; $f._tmp$8 = _tmp$8; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.addr = addr; $f.b = b; $f.c = c; $f.err = err; $f.n = n; $f.oob = oob; $f.oobn = oobn; $f.sa = sa; $f.$s = $s; $f.$r = $r; return $f;
 39964  	};
 39965  	IPConn.prototype.writeMsg = function(b, oob, addr) { return this.$val.writeMsg(b, oob, addr); };
 39966  	dialIP = function(ctx, netProto, laddr, raddr) {
 39967  		var _1, _r$10, _r$9, _tuple, _tuple$1, ctx, err, fd, laddr, netProto, network, proto, raddr, $s, $r;
 39968  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _r$10 = $f._r$10; _r$9 = $f._r$9; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; ctx = $f.ctx; err = $f.err; fd = $f.fd; laddr = $f.laddr; netProto = $f.netProto; network = $f.network; proto = $f.proto; raddr = $f.raddr; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 39969  		_r$9 = parseNetwork(ctx, netProto, true); /* */ $s = 1; case 1: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 39970  		_tuple = _r$9;
 39971  		network = _tuple[0];
 39972  		proto = _tuple[1];
 39973  		err = _tuple[2];
 39974  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 39975  			$s = -1; return [ptrType$40.nil, err];
 39976  		}
 39977  		_1 = network;
 39978  		if (_1 === ("ip") || _1 === ("ip4") || _1 === ("ip6")) {
 39979  		} else {
 39980  			$s = -1; return [ptrType$40.nil, new UnknownNetworkError((netProto))];
 39981  		}
 39982  		if (raddr === ptrType$8.nil) {
 39983  			$s = -1; return [ptrType$40.nil, errMissingAddress];
 39984  		}
 39985  		_r$10 = internetSocket(ctx, network, laddr, raddr, 3, proto, "dial"); /* */ $s = 2; case 2: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
 39986  		_tuple$1 = _r$10;
 39987  		fd = _tuple$1[0];
 39988  		err = _tuple$1[1];
 39989  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 39990  			$s = -1; return [ptrType$40.nil, err];
 39991  		}
 39992  		$s = -1; return [newIPConn(fd), $ifaceNil];
 39993  		/* */ } return; } if ($f === undefined) { $f = { $blk: dialIP }; } $f._1 = _1; $f._r$10 = _r$10; $f._r$9 = _r$9; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.ctx = ctx; $f.err = err; $f.fd = fd; $f.laddr = laddr; $f.netProto = netProto; $f.network = network; $f.proto = proto; $f.raddr = raddr; $f.$s = $s; $f.$r = $r; return $f;
 39994  	};
 39995  	supportsIPv4 = function() {
 39996  		var $s, $r;
 39997  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 39998  		$r = ipStackCaps.Once.Do($methodVal(ipStackCaps, "probe")); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 39999  		$s = -1; return ipStackCaps.ipv4Enabled;
 40000  		/* */ } return; } if ($f === undefined) { $f = { $blk: supportsIPv4 }; } $f.$s = $s; $f.$r = $r; return $f;
 40001  	};
 40002  	supportsIPv4map = function() {
 40003  		var $s, $r;
 40004  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 40005  		$r = ipStackCaps.Once.Do($methodVal(ipStackCaps, "probe")); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 40006  		$s = -1; return ipStackCaps.ipv4MappedIPv6Enabled;
 40007  		/* */ } return; } if ($f === undefined) { $f = { $blk: supportsIPv4map }; } $f.$s = $s; $f.$r = $r; return $f;
 40008  	};
 40009  	isIPv4 = function(addr) {
 40010  		var _ref, addr, addr$1, addr$2, addr$3;
 40011  		_ref = addr;
 40012  		if ($assertType(_ref, ptrType$7, true)[1]) {
 40013  			addr$1 = _ref.$val;
 40014  			return !(addr$1.IP.To4() === IP.nil);
 40015  		} else if ($assertType(_ref, ptrType$5, true)[1]) {
 40016  			addr$2 = _ref.$val;
 40017  			return !(addr$2.IP.To4() === IP.nil);
 40018  		} else if ($assertType(_ref, ptrType$8, true)[1]) {
 40019  			addr$3 = _ref.$val;
 40020  			return !(addr$3.IP.To4() === IP.nil);
 40021  		}
 40022  		return false;
 40023  	};
 40024  	addrList.prototype.partition = function(strategy) {
 40025  		var _i, _r$9, _ref, addr, addrs, fallbacks, i, label, primaries, primaryLabel, strategy, $s, $r;
 40026  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _i = $f._i; _r$9 = $f._r$9; _ref = $f._ref; addr = $f.addr; addrs = $f.addrs; fallbacks = $f.fallbacks; i = $f.i; label = $f.label; primaries = $f.primaries; primaryLabel = $f.primaryLabel; strategy = $f.strategy; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 40027  		primaries = addrList.nil;
 40028  		fallbacks = addrList.nil;
 40029  		addrs = this;
 40030  		primaryLabel = false;
 40031  		_ref = addrs;
 40032  		_i = 0;
 40033  		/* while (true) { */ case 1:
 40034  			/* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; }
 40035  			i = _i;
 40036  			addr = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
 40037  			_r$9 = strategy(addr); /* */ $s = 3; case 3: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 40038  			label = _r$9;
 40039  			if ((i === 0) || label === primaryLabel) {
 40040  				primaryLabel = label;
 40041  				primaries = $append(primaries, addr);
 40042  			} else {
 40043  				fallbacks = $append(fallbacks, addr);
 40044  			}
 40045  			_i++;
 40046  		/* } */ $s = 1; continue; case 2:
 40047  		$s = -1; return [primaries, fallbacks];
 40048  		/* */ } return; } if ($f === undefined) { $f = { $blk: addrList.prototype.partition }; } $f._i = _i; $f._r$9 = _r$9; $f._ref = _ref; $f.addr = addr; $f.addrs = addrs; $f.fallbacks = fallbacks; $f.i = i; $f.label = label; $f.primaries = primaries; $f.primaryLabel = primaryLabel; $f.strategy = strategy; $f.$s = $s; $f.$r = $r; return $f;
 40049  	};
 40050  	$ptrType(addrList).prototype.partition = function(strategy) { return this.$get().partition(strategy); };
 40051  	filterAddrList = function(filter, ips, inetaddr, originalAddr) {
 40052  		var _i, _r$10, _r$11, _r$9, _ref, _v, addrs, filter, inetaddr, ip, ips, originalAddr, $s, $r;
 40053  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _i = $f._i; _r$10 = $f._r$10; _r$11 = $f._r$11; _r$9 = $f._r$9; _ref = $f._ref; _v = $f._v; addrs = $f.addrs; filter = $f.filter; inetaddr = $f.inetaddr; ip = $f.ip; ips = $f.ips; originalAddr = $f.originalAddr; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 40054  		addrs = addrList.nil;
 40055  		_ref = ips;
 40056  		_i = 0;
 40057  		/* while (true) { */ case 1:
 40058  			/* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; }
 40059  			ip = $clone(((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]), IPAddr);
 40060  			if (filter === $throwNilPointerError) { _v = true; $s = 5; continue s; }
 40061  			_r$9 = filter($clone(ip, IPAddr)); /* */ $s = 6; case 6: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 40062  			_v = _r$9; case 5:
 40063  			/* */ if (_v) { $s = 3; continue; }
 40064  			/* */ $s = 4; continue;
 40065  			/* if (_v) { */ case 3:
 40066  				_r$10 = inetaddr($clone(ip, IPAddr)); /* */ $s = 7; case 7: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
 40067  				addrs = $append(addrs, _r$10);
 40068  			/* } */ case 4:
 40069  			_i++;
 40070  		/* } */ $s = 1; continue; case 2:
 40071  		/* */ if (addrs.$length === 0) { $s = 8; continue; }
 40072  		/* */ $s = 9; continue;
 40073  		/* if (addrs.$length === 0) { */ case 8:
 40074  			_r$11 = errNoSuitableAddress.Error(); /* */ $s = 10; case 10: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; }
 40075  			$s = -1; return [addrList.nil, new AddrError.ptr(_r$11, originalAddr)];
 40076  		/* } */ case 9:
 40077  		$s = -1; return [addrs, $ifaceNil];
 40078  		/* */ } return; } if ($f === undefined) { $f = { $blk: filterAddrList }; } $f._i = _i; $f._r$10 = _r$10; $f._r$11 = _r$11; $f._r$9 = _r$9; $f._ref = _ref; $f._v = _v; $f.addrs = addrs; $f.filter = filter; $f.inetaddr = inetaddr; $f.ip = ip; $f.ips = ips; $f.originalAddr = originalAddr; $f.$s = $s; $f.$r = $r; return $f;
 40079  	};
 40080  	ipv4only = function(addr) {
 40081  		var addr;
 40082  		return !(addr.IP.To4() === IP.nil);
 40083  	};
 40084  	ipv6only = function(addr) {
 40085  		var addr;
 40086  		return (addr.IP.$length === 16) && addr.IP.To4() === IP.nil;
 40087  	};
 40088  	SplitHostPort = function(hostport) {
 40089  		var _1, _r$10, _r$11, _r$12, _r$13, _r$14, _r$15, _r$16, _r$9, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, _tuple$5, _tuple$6, _tuple$7, addrErr, end, err, host, hostport, i, j, k, port, $s, $r;
 40090  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _r$10 = $f._r$10; _r$11 = $f._r$11; _r$12 = $f._r$12; _r$13 = $f._r$13; _r$14 = $f._r$14; _r$15 = $f._r$15; _r$16 = $f._r$16; _r$9 = $f._r$9; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tmp$4 = $f._tmp$4; _tmp$5 = $f._tmp$5; _tmp$6 = $f._tmp$6; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; _tuple$4 = $f._tuple$4; _tuple$5 = $f._tuple$5; _tuple$6 = $f._tuple$6; _tuple$7 = $f._tuple$7; addrErr = $f.addrErr; end = $f.end; err = $f.err; host = $f.host; hostport = $f.hostport; i = $f.i; j = $f.j; k = $f.k; port = $f.port; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 40091  		host = "";
 40092  		port = "";
 40093  		err = $ifaceNil;
 40094  		addrErr = (function(addr, why) {
 40095  			var _tmp, _tmp$1, _tmp$2, addr, err$1, host$1, port$1, why;
 40096  			host$1 = "";
 40097  			port$1 = "";
 40098  			err$1 = $ifaceNil;
 40099  			_tmp = "";
 40100  			_tmp$1 = "";
 40101  			_tmp$2 = new AddrError.ptr(why, addr);
 40102  			host$1 = _tmp;
 40103  			port$1 = _tmp$1;
 40104  			err$1 = _tmp$2;
 40105  			return [host$1, port$1, err$1];
 40106  		});
 40107  		_tmp = 0;
 40108  		_tmp$1 = 0;
 40109  		j = _tmp;
 40110  		k = _tmp$1;
 40111  		i = last(hostport, 58);
 40112  		/* */ if (i < 0) { $s = 1; continue; }
 40113  		/* */ $s = 2; continue;
 40114  		/* if (i < 0) { */ case 1:
 40115  			_r$9 = addrErr(hostport, "missing port in address"); /* */ $s = 3; case 3: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 40116  			_tuple = _r$9;
 40117  			host = _tuple[0];
 40118  			port = _tuple[1];
 40119  			err = _tuple[2];
 40120  			$s = -1; return [host, port, err];
 40121  		/* } */ case 2:
 40122  		/* */ if (hostport.charCodeAt(0) === 91) { $s = 4; continue; }
 40123  		/* */ $s = 5; continue;
 40124  		/* if (hostport.charCodeAt(0) === 91) { */ case 4:
 40125  			end = byteIndex(hostport, 93);
 40126  			/* */ if (end < 0) { $s = 7; continue; }
 40127  			/* */ $s = 8; continue;
 40128  			/* if (end < 0) { */ case 7:
 40129  				_r$10 = addrErr(hostport, "missing ']' in address"); /* */ $s = 9; case 9: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
 40130  				_tuple$1 = _r$10;
 40131  				host = _tuple$1[0];
 40132  				port = _tuple$1[1];
 40133  				err = _tuple$1[2];
 40134  				$s = -1; return [host, port, err];
 40135  			/* } */ case 8:
 40136  				_1 = end + 1 >> 0;
 40137  				/* */ if (_1 === (hostport.length)) { $s = 11; continue; }
 40138  				/* */ if (_1 === (i)) { $s = 12; continue; }
 40139  				/* */ $s = 13; continue;
 40140  				/* if (_1 === (hostport.length)) { */ case 11:
 40141  					_r$11 = addrErr(hostport, "missing port in address"); /* */ $s = 15; case 15: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; }
 40142  					_tuple$2 = _r$11;
 40143  					host = _tuple$2[0];
 40144  					port = _tuple$2[1];
 40145  					err = _tuple$2[2];
 40146  					$s = -1; return [host, port, err];
 40147  				/* } else if (_1 === (i)) { */ case 12:
 40148  					$s = 14; continue;
 40149  				/* } else { */ case 13:
 40150  					/* */ if (hostport.charCodeAt((end + 1 >> 0)) === 58) { $s = 16; continue; }
 40151  					/* */ $s = 17; continue;
 40152  					/* if (hostport.charCodeAt((end + 1 >> 0)) === 58) { */ case 16:
 40153  						_r$12 = addrErr(hostport, "too many colons in address"); /* */ $s = 18; case 18: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; }
 40154  						_tuple$3 = _r$12;
 40155  						host = _tuple$3[0];
 40156  						port = _tuple$3[1];
 40157  						err = _tuple$3[2];
 40158  						$s = -1; return [host, port, err];
 40159  					/* } */ case 17:
 40160  					_r$13 = addrErr(hostport, "missing port in address"); /* */ $s = 19; case 19: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; }
 40161  					_tuple$4 = _r$13;
 40162  					host = _tuple$4[0];
 40163  					port = _tuple$4[1];
 40164  					err = _tuple$4[2];
 40165  					$s = -1; return [host, port, err];
 40166  				/* } */ case 14:
 40167  			case 10:
 40168  			host = $substring(hostport, 1, end);
 40169  			_tmp$2 = 1;
 40170  			_tmp$3 = end + 1 >> 0;
 40171  			j = _tmp$2;
 40172  			k = _tmp$3;
 40173  			$s = 6; continue;
 40174  		/* } else { */ case 5:
 40175  			host = $substring(hostport, 0, i);
 40176  			/* */ if (byteIndex(host, 58) >= 0) { $s = 20; continue; }
 40177  			/* */ $s = 21; continue;
 40178  			/* if (byteIndex(host, 58) >= 0) { */ case 20:
 40179  				_r$14 = addrErr(hostport, "too many colons in address"); /* */ $s = 22; case 22: if($c) { $c = false; _r$14 = _r$14.$blk(); } if (_r$14 && _r$14.$blk !== undefined) { break s; }
 40180  				_tuple$5 = _r$14;
 40181  				host = _tuple$5[0];
 40182  				port = _tuple$5[1];
 40183  				err = _tuple$5[2];
 40184  				$s = -1; return [host, port, err];
 40185  			/* } */ case 21:
 40186  		/* } */ case 6:
 40187  		/* */ if (byteIndex($substring(hostport, j), 91) >= 0) { $s = 23; continue; }
 40188  		/* */ $s = 24; continue;
 40189  		/* if (byteIndex($substring(hostport, j), 91) >= 0) { */ case 23:
 40190  			_r$15 = addrErr(hostport, "unexpected '[' in address"); /* */ $s = 25; case 25: if($c) { $c = false; _r$15 = _r$15.$blk(); } if (_r$15 && _r$15.$blk !== undefined) { break s; }
 40191  			_tuple$6 = _r$15;
 40192  			host = _tuple$6[0];
 40193  			port = _tuple$6[1];
 40194  			err = _tuple$6[2];
 40195  			$s = -1; return [host, port, err];
 40196  		/* } */ case 24:
 40197  		/* */ if (byteIndex($substring(hostport, k), 93) >= 0) { $s = 26; continue; }
 40198  		/* */ $s = 27; continue;
 40199  		/* if (byteIndex($substring(hostport, k), 93) >= 0) { */ case 26:
 40200  			_r$16 = addrErr(hostport, "unexpected ']' in address"); /* */ $s = 28; case 28: if($c) { $c = false; _r$16 = _r$16.$blk(); } if (_r$16 && _r$16.$blk !== undefined) { break s; }
 40201  			_tuple$7 = _r$16;
 40202  			host = _tuple$7[0];
 40203  			port = _tuple$7[1];
 40204  			err = _tuple$7[2];
 40205  			$s = -1; return [host, port, err];
 40206  		/* } */ case 27:
 40207  		port = $substring(hostport, (i + 1 >> 0));
 40208  		_tmp$4 = host;
 40209  		_tmp$5 = port;
 40210  		_tmp$6 = $ifaceNil;
 40211  		host = _tmp$4;
 40212  		port = _tmp$5;
 40213  		err = _tmp$6;
 40214  		$s = -1; return [host, port, err];
 40215  		/* */ } return; } if ($f === undefined) { $f = { $blk: SplitHostPort }; } $f._1 = _1; $f._r$10 = _r$10; $f._r$11 = _r$11; $f._r$12 = _r$12; $f._r$13 = _r$13; $f._r$14 = _r$14; $f._r$15 = _r$15; $f._r$16 = _r$16; $f._r$9 = _r$9; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tmp$4 = _tmp$4; $f._tmp$5 = _tmp$5; $f._tmp$6 = _tmp$6; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f._tuple$4 = _tuple$4; $f._tuple$5 = _tuple$5; $f._tuple$6 = _tuple$6; $f._tuple$7 = _tuple$7; $f.addrErr = addrErr; $f.end = end; $f.err = err; $f.host = host; $f.hostport = hostport; $f.i = i; $f.j = j; $f.k = k; $f.port = port; $f.$s = $s; $f.$r = $r; return $f;
 40216  	};
 40217  	$pkg.SplitHostPort = SplitHostPort;
 40218  	splitHostZone = function(s) {
 40219  		var _tmp, _tmp$1, host, i, s, zone;
 40220  		host = "";
 40221  		zone = "";
 40222  		i = last(s, 37);
 40223  		if (i > 0) {
 40224  			_tmp = $substring(s, 0, i);
 40225  			_tmp$1 = $substring(s, (i + 1 >> 0));
 40226  			host = _tmp;
 40227  			zone = _tmp$1;
 40228  		} else {
 40229  			host = s;
 40230  		}
 40231  		return [host, zone];
 40232  	};
 40233  	JoinHostPort = function(host, port) {
 40234  		var host, port;
 40235  		if (byteIndex(host, 58) >= 0) {
 40236  			return "[" + host + "]:" + port;
 40237  		}
 40238  		return host + ":" + port;
 40239  	};
 40240  	$pkg.JoinHostPort = JoinHostPort;
 40241  	Resolver.ptr.prototype.internetAddrList = function(ctx, net, addr) {
 40242  		var _1, _r$10, _r$11, _r$12, _r$13, _r$9, _tmp, _tmp$1, _tuple, _tuple$1, _tuple$2, _tuple$3, addr, ctx, err, filter, host, inetaddr, ip, ip$1, ips, net, port, portnum, r, zone, $s, $r;
 40243  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _r$10 = $f._r$10; _r$11 = $f._r$11; _r$12 = $f._r$12; _r$13 = $f._r$13; _r$9 = $f._r$9; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; addr = $f.addr; ctx = $f.ctx; err = $f.err; filter = $f.filter; host = $f.host; inetaddr = $f.inetaddr; ip = $f.ip; ip$1 = $f.ip$1; ips = $f.ips; net = $f.net; port = $f.port; portnum = $f.portnum; r = $f.r; zone = $f.zone; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 40244  		net = [net];
 40245  		portnum = [portnum];
 40246  		r = this;
 40247  		err = $ifaceNil;
 40248  		_tmp = "";
 40249  		_tmp$1 = "";
 40250  		host = _tmp;
 40251  		port = _tmp$1;
 40252  		portnum[0] = 0;
 40253  			_1 = net[0];
 40254  			/* */ if (_1 === ("tcp") || _1 === ("tcp4") || _1 === ("tcp6") || _1 === ("udp") || _1 === ("udp4") || _1 === ("udp6")) { $s = 2; continue; }
 40255  			/* */ if (_1 === ("ip") || _1 === ("ip4") || _1 === ("ip6")) { $s = 3; continue; }
 40256  			/* */ $s = 4; continue;
 40257  			/* if (_1 === ("tcp") || _1 === ("tcp4") || _1 === ("tcp6") || _1 === ("udp") || _1 === ("udp4") || _1 === ("udp6")) { */ case 2:
 40258  				/* */ if (!(addr === "")) { $s = 6; continue; }
 40259  				/* */ $s = 7; continue;
 40260  				/* if (!(addr === "")) { */ case 6:
 40261  					_r$9 = SplitHostPort(addr); /* */ $s = 8; case 8: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 40262  					_tuple = _r$9;
 40263  					host = _tuple[0];
 40264  					port = _tuple[1];
 40265  					err = _tuple[2];
 40266  					if (!($interfaceIsEqual(err, $ifaceNil))) {
 40267  						$s = -1; return [addrList.nil, err];
 40268  					}
 40269  					_r$10 = r.LookupPort(ctx, net[0], port); /* */ $s = 9; case 9: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
 40270  					_tuple$1 = _r$10;
 40271  					portnum[0] = _tuple$1[0];
 40272  					err = _tuple$1[1];
 40273  					if (!($interfaceIsEqual(err, $ifaceNil))) {
 40274  						$s = -1; return [addrList.nil, err];
 40275  					}
 40276  				/* } */ case 7:
 40277  				$s = 5; continue;
 40278  			/* } else if (_1 === ("ip") || _1 === ("ip4") || _1 === ("ip6")) { */ case 3:
 40279  				if (!(addr === "")) {
 40280  					host = addr;
 40281  				}
 40282  				$s = 5; continue;
 40283  			/* } else { */ case 4:
 40284  				$s = -1; return [addrList.nil, new UnknownNetworkError((net[0]))];
 40285  			/* } */ case 5:
 40286  		case 1:
 40287  		inetaddr = (function(net, portnum) { return function(ip) {
 40288  			var _2, ip;
 40289  			_2 = net[0];
 40290  			if (_2 === ("tcp") || _2 === ("tcp4") || _2 === ("tcp6")) {
 40291  				return new TCPAddr.ptr(ip.IP, portnum[0], ip.Zone);
 40292  			} else if (_2 === ("udp") || _2 === ("udp4") || _2 === ("udp6")) {
 40293  				return new UDPAddr.ptr(ip.IP, portnum[0], ip.Zone);
 40294  			} else if (_2 === ("ip") || _2 === ("ip4") || _2 === ("ip6")) {
 40295  				return new IPAddr.ptr(ip.IP, ip.Zone);
 40296  			} else {
 40297  				$panic(new $String("unexpected network: " + net[0]));
 40298  			}
 40299  		}; })(net, portnum);
 40300  		/* */ if (host === "") { $s = 10; continue; }
 40301  		/* */ $s = 11; continue;
 40302  		/* if (host === "") { */ case 10:
 40303  			_r$11 = inetaddr(new IPAddr.ptr(IP.nil, "")); /* */ $s = 12; case 12: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; }
 40304  			$s = -1; return [new addrList([_r$11]), $ifaceNil];
 40305  		/* } */ case 11:
 40306  		ips = sliceType$3.nil;
 40307  		ip = parseIPv4(host);
 40308  		/* */ if (!(ip === IP.nil)) { $s = 13; continue; }
 40309  		/* */ $s = 14; continue;
 40310  		/* if (!(ip === IP.nil)) { */ case 13:
 40311  			ips = new sliceType$3([new IPAddr.ptr(ip, "")]);
 40312  			$s = 15; continue;
 40313  		/* } else { */ case 14:
 40314  			_tuple$2 = parseIPv6(host, true);
 40315  			ip$1 = _tuple$2[0];
 40316  			zone = _tuple$2[1];
 40317  			/* */ if (!(ip$1 === IP.nil)) { $s = 16; continue; }
 40318  			/* */ $s = 17; continue;
 40319  			/* if (!(ip$1 === IP.nil)) { */ case 16:
 40320  				ips = new sliceType$3([new IPAddr.ptr(ip$1, zone)]);
 40321  				if (ip$1.Equal($pkg.IPv6unspecified)) {
 40322  					ips = $append(ips, new IPAddr.ptr($pkg.IPv4zero, ""));
 40323  				}
 40324  				$s = 18; continue;
 40325  			/* } else { */ case 17:
 40326  				_r$12 = r.LookupIPAddr(ctx, host); /* */ $s = 19; case 19: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; }
 40327  				_tuple$3 = _r$12;
 40328  				ips = _tuple$3[0];
 40329  				err = _tuple$3[1];
 40330  				if (!($interfaceIsEqual(err, $ifaceNil))) {
 40331  					$s = -1; return [addrList.nil, err];
 40332  				}
 40333  			/* } */ case 18:
 40334  		/* } */ case 15:
 40335  		filter = $throwNilPointerError;
 40336  		if (!(net[0] === "") && (net[0].charCodeAt((net[0].length - 1 >> 0)) === 52)) {
 40337  			filter = ipv4only;
 40338  		}
 40339  		if (!(net[0] === "") && (net[0].charCodeAt((net[0].length - 1 >> 0)) === 54)) {
 40340  			filter = ipv6only;
 40341  		}
 40342  		_r$13 = filterAddrList(filter, ips, inetaddr, host); /* */ $s = 20; case 20: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; }
 40343  		$s = -1; return _r$13;
 40344  		/* */ } return; } if ($f === undefined) { $f = { $blk: Resolver.ptr.prototype.internetAddrList }; } $f._1 = _1; $f._r$10 = _r$10; $f._r$11 = _r$11; $f._r$12 = _r$12; $f._r$13 = _r$13; $f._r$9 = _r$9; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f.addr = addr; $f.ctx = ctx; $f.err = err; $f.filter = filter; $f.host = host; $f.inetaddr = inetaddr; $f.ip = ip; $f.ip$1 = ip$1; $f.ips = ips; $f.net = net; $f.port = port; $f.portnum = portnum; $f.r = r; $f.zone = zone; $f.$s = $s; $f.$r = $r; return $f;
 40345  	};
 40346  	Resolver.prototype.internetAddrList = function(ctx, net, addr) { return this.$val.internetAddrList(ctx, net, addr); };
 40347  	loopbackIP = function(net) {
 40348  		var net;
 40349  		if (!(net === "") && (net.charCodeAt((net.length - 1 >> 0)) === 54)) {
 40350  			return $pkg.IPv6loopback;
 40351  		}
 40352  		return new IP([127, 0, 0, 1]);
 40353  	};
 40354  	ipStackCapabilities.ptr.prototype.probe = function() {
 40355  		var _1, _2, _i, _r$10, _r$11, _r$12, _r$13, _r$9, _ref, _tuple, _tuple$1, _tuple$2, err, err$1, err$2, i, p, probes, s, s$1, sa, $s, $deferred, $r;
 40356  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _2 = $f._2; _i = $f._i; _r$10 = $f._r$10; _r$11 = $f._r$11; _r$12 = $f._r$12; _r$13 = $f._r$13; _r$9 = $f._r$9; _ref = $f._ref; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; err = $f.err; err$1 = $f.err$1; err$2 = $f.err$2; i = $f.i; p = $f.p; probes = $f.probes; s = $f.s; s$1 = $f.s$1; sa = $f.sa; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
 40357  		p = this;
 40358  		_r$9 = sysSocket(2, 1, 6); /* */ $s = 1; case 1: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 40359  		_tuple = _r$9;
 40360  		s = _tuple[0];
 40361  		err = _tuple[1];
 40362  			_1 = err;
 40363  			/* */ if ($interfaceIsEqual(_1, new syscall.Errno((97))) || $interfaceIsEqual(_1, new syscall.Errno((93)))) { $s = 3; continue; }
 40364  			/* */ if ($interfaceIsEqual(_1, $ifaceNil)) { $s = 4; continue; }
 40365  			/* */ $s = 5; continue;
 40366  			/* if ($interfaceIsEqual(_1, new syscall.Errno((97))) || $interfaceIsEqual(_1, new syscall.Errno((93)))) { */ case 3:
 40367  				$s = 5; continue;
 40368  			/* } else if ($interfaceIsEqual(_1, $ifaceNil)) { */ case 4:
 40369  				_r$10 = poll.CloseFunc(s); /* */ $s = 6; case 6: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
 40370  				_r$10;
 40371  				p.ipv4Enabled = true;
 40372  			/* } */ case 5:
 40373  		case 2:
 40374  		probes = new sliceType$11([new structType$2.ptr(new TCPAddr.ptr(ParseIP("::1"), 0, ""), 1), new structType$2.ptr(new TCPAddr.ptr(IPv4(127, 0, 0, 1), 0, ""), 0)]);
 40375  		_2 = "linux";
 40376  		if (_2 === ("dragonfly") || _2 === ("openbsd")) {
 40377  			probes = $subslice(probes, 0, 1);
 40378  		}
 40379  		_ref = probes;
 40380  		_i = 0;
 40381  		/* while (true) { */ case 7:
 40382  			/* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 8; continue; }
 40383  			i = _i;
 40384  			_r$11 = sysSocket(10, 1, 6); /* */ $s = 9; case 9: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; }
 40385  			_tuple$1 = _r$11;
 40386  			s$1 = _tuple$1[0];
 40387  			err$1 = _tuple$1[1];
 40388  			/* */ if (!($interfaceIsEqual(err$1, $ifaceNil))) { $s = 10; continue; }
 40389  			/* */ $s = 11; continue;
 40390  			/* if (!($interfaceIsEqual(err$1, $ifaceNil))) { */ case 10:
 40391  				_i++;
 40392  				/* continue; */ $s = 7; continue;
 40393  			/* } */ case 11:
 40394  			$deferred.push([poll.CloseFunc, [s$1]]);
 40395  			syscall.SetsockoptInt(s$1, 41, 26, ((i < 0 || i >= probes.$length) ? ($throwRuntimeError("index out of range"), undefined) : probes.$array[probes.$offset + i]).value);
 40396  			_r$12 = ((i < 0 || i >= probes.$length) ? ($throwRuntimeError("index out of range"), undefined) : probes.$array[probes.$offset + i]).laddr.sockaddr(10); /* */ $s = 12; case 12: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; }
 40397  			_tuple$2 = _r$12;
 40398  			sa = _tuple$2[0];
 40399  			err$1 = _tuple$2[1];
 40400  			/* */ if (!($interfaceIsEqual(err$1, $ifaceNil))) { $s = 13; continue; }
 40401  			/* */ $s = 14; continue;
 40402  			/* if (!($interfaceIsEqual(err$1, $ifaceNil))) { */ case 13:
 40403  				_i++;
 40404  				/* continue; */ $s = 7; continue;
 40405  			/* } */ case 14:
 40406  			_r$13 = syscall.Bind(s$1, sa); /* */ $s = 15; case 15: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; }
 40407  			err$2 = _r$13;
 40408  			if (!($interfaceIsEqual(err$2, $ifaceNil))) {
 40409  				_i++;
 40410  				/* continue; */ $s = 7; continue;
 40411  			}
 40412  			if (i === 0) {
 40413  				p.ipv6Enabled = true;
 40414  			} else {
 40415  				p.ipv4MappedIPv6Enabled = true;
 40416  			}
 40417  			_i++;
 40418  		/* } */ $s = 7; continue; case 8:
 40419  		$s = -1; return;
 40420  		/* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: ipStackCapabilities.ptr.prototype.probe }; } $f._1 = _1; $f._2 = _2; $f._i = _i; $f._r$10 = _r$10; $f._r$11 = _r$11; $f._r$12 = _r$12; $f._r$13 = _r$13; $f._r$9 = _r$9; $f._ref = _ref; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f.err = err; $f.err$1 = err$1; $f.err$2 = err$2; $f.i = i; $f.p = p; $f.probes = probes; $f.s = s; $f.s$1 = s$1; $f.sa = sa; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
 40421  	};
 40422  	ipStackCapabilities.prototype.probe = function() { return this.$val.probe(); };
 40423  	favoriteAddrFamily = function(network, laddr, raddr, mode) {
 40424  		var _1, _r$10, _r$11, _r$12, _r$13, _r$14, _r$9, _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _v, _v$1, _v$2, _v$3, _v$4, _v$5, family, ipv6only$1, laddr, mode, network, raddr, $s, $r;
 40425  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _r$10 = $f._r$10; _r$11 = $f._r$11; _r$12 = $f._r$12; _r$13 = $f._r$13; _r$14 = $f._r$14; _r$9 = $f._r$9; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$10 = $f._tmp$10; _tmp$11 = $f._tmp$11; _tmp$12 = $f._tmp$12; _tmp$13 = $f._tmp$13; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tmp$4 = $f._tmp$4; _tmp$5 = $f._tmp$5; _tmp$6 = $f._tmp$6; _tmp$7 = $f._tmp$7; _tmp$8 = $f._tmp$8; _tmp$9 = $f._tmp$9; _v = $f._v; _v$1 = $f._v$1; _v$2 = $f._v$2; _v$3 = $f._v$3; _v$4 = $f._v$4; _v$5 = $f._v$5; family = $f.family; ipv6only$1 = $f.ipv6only$1; laddr = $f.laddr; mode = $f.mode; network = $f.network; raddr = $f.raddr; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 40426  		family = 0;
 40427  		ipv6only$1 = false;
 40428  		_1 = network.charCodeAt((network.length - 1 >> 0));
 40429  		if (_1 === (52)) {
 40430  			_tmp = 2;
 40431  			_tmp$1 = false;
 40432  			family = _tmp;
 40433  			ipv6only$1 = _tmp$1;
 40434  			$s = -1; return [family, ipv6only$1];
 40435  		} else if (_1 === (54)) {
 40436  			_tmp$2 = 10;
 40437  			_tmp$3 = true;
 40438  			family = _tmp$2;
 40439  			ipv6only$1 = _tmp$3;
 40440  			$s = -1; return [family, ipv6only$1];
 40441  		}
 40442  		if (!(mode === "listen")) { _v = false; $s = 3; continue s; }
 40443  		if ($interfaceIsEqual(laddr, $ifaceNil)) { _v$1 = true; $s = 4; continue s; }
 40444  		_r$9 = laddr.isWildcard(); /* */ $s = 5; case 5: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 40445  		_v$1 = _r$9; case 4:
 40446  		_v = _v$1; case 3:
 40447  		/* */ if (_v) { $s = 1; continue; }
 40448  		/* */ $s = 2; continue;
 40449  		/* if (_v) { */ case 1:
 40450  			_r$10 = supportsIPv4map(); /* */ $s = 9; case 9: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
 40451  			if (_r$10) { _v$2 = true; $s = 8; continue s; }
 40452  			_r$11 = supportsIPv4(); /* */ $s = 10; case 10: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; }
 40453  			_v$2 = !_r$11; case 8:
 40454  			/* */ if (_v$2) { $s = 6; continue; }
 40455  			/* */ $s = 7; continue;
 40456  			/* if (_v$2) { */ case 6:
 40457  				_tmp$4 = 10;
 40458  				_tmp$5 = false;
 40459  				family = _tmp$4;
 40460  				ipv6only$1 = _tmp$5;
 40461  				$s = -1; return [family, ipv6only$1];
 40462  			/* } */ case 7:
 40463  			if ($interfaceIsEqual(laddr, $ifaceNil)) {
 40464  				_tmp$6 = 2;
 40465  				_tmp$7 = false;
 40466  				family = _tmp$6;
 40467  				ipv6only$1 = _tmp$7;
 40468  				$s = -1; return [family, ipv6only$1];
 40469  			}
 40470  			_r$12 = laddr.family(); /* */ $s = 11; case 11: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; }
 40471  			_tmp$8 = _r$12;
 40472  			_tmp$9 = false;
 40473  			family = _tmp$8;
 40474  			ipv6only$1 = _tmp$9;
 40475  			$s = -1; return [family, ipv6only$1];
 40476  		/* } */ case 2:
 40477  		if ($interfaceIsEqual(laddr, $ifaceNil)) { _v$4 = true; $s = 15; continue s; }
 40478  		_r$13 = laddr.family(); /* */ $s = 16; case 16: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; }
 40479  		_v$4 = _r$13 === 2; case 15:
 40480  		if (!(_v$4)) { _v$3 = false; $s = 14; continue s; }
 40481  		if ($interfaceIsEqual(raddr, $ifaceNil)) { _v$5 = true; $s = 17; continue s; }
 40482  		_r$14 = raddr.family(); /* */ $s = 18; case 18: if($c) { $c = false; _r$14 = _r$14.$blk(); } if (_r$14 && _r$14.$blk !== undefined) { break s; }
 40483  		_v$5 = _r$14 === 2; case 17:
 40484  		_v$3 = _v$5; case 14:
 40485  		/* */ if (_v$3) { $s = 12; continue; }
 40486  		/* */ $s = 13; continue;
 40487  		/* if (_v$3) { */ case 12:
 40488  			_tmp$10 = 2;
 40489  			_tmp$11 = false;
 40490  			family = _tmp$10;
 40491  			ipv6only$1 = _tmp$11;
 40492  			$s = -1; return [family, ipv6only$1];
 40493  		/* } */ case 13:
 40494  		_tmp$12 = 10;
 40495  		_tmp$13 = false;
 40496  		family = _tmp$12;
 40497  		ipv6only$1 = _tmp$13;
 40498  		$s = -1; return [family, ipv6only$1];
 40499  		/* */ } return; } if ($f === undefined) { $f = { $blk: favoriteAddrFamily }; } $f._1 = _1; $f._r$10 = _r$10; $f._r$11 = _r$11; $f._r$12 = _r$12; $f._r$13 = _r$13; $f._r$14 = _r$14; $f._r$9 = _r$9; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$10 = _tmp$10; $f._tmp$11 = _tmp$11; $f._tmp$12 = _tmp$12; $f._tmp$13 = _tmp$13; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tmp$4 = _tmp$4; $f._tmp$5 = _tmp$5; $f._tmp$6 = _tmp$6; $f._tmp$7 = _tmp$7; $f._tmp$8 = _tmp$8; $f._tmp$9 = _tmp$9; $f._v = _v; $f._v$1 = _v$1; $f._v$2 = _v$2; $f._v$3 = _v$3; $f._v$4 = _v$4; $f._v$5 = _v$5; $f.family = family; $f.ipv6only$1 = ipv6only$1; $f.laddr = laddr; $f.mode = mode; $f.network = network; $f.raddr = raddr; $f.$s = $s; $f.$r = $r; return $f;
 40500  	};
 40501  	internetSocket = function(ctx, net, laddr, raddr, sotype, proto, mode) {
 40502  		var _r$10, _r$11, _r$12, _r$9, _tuple, _tuple$1, _v, ctx, err, family, fd, ipv6only$1, laddr, mode, net, proto, raddr, sotype, $s, $r;
 40503  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$10 = $f._r$10; _r$11 = $f._r$11; _r$12 = $f._r$12; _r$9 = $f._r$9; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _v = $f._v; ctx = $f.ctx; err = $f.err; family = $f.family; fd = $f.fd; ipv6only$1 = $f.ipv6only$1; laddr = $f.laddr; mode = $f.mode; net = $f.net; proto = $f.proto; raddr = $f.raddr; sotype = $f.sotype; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 40504  		fd = ptrType$30.nil;
 40505  		err = $ifaceNil;
 40506  		if (!(false && mode === "dial")) { _v = false; $s = 3; continue s; }
 40507  		_r$9 = raddr.isWildcard(); /* */ $s = 4; case 4: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 40508  		_v = _r$9; case 3:
 40509  		/* */ if (_v) { $s = 1; continue; }
 40510  		/* */ $s = 2; continue;
 40511  		/* if (_v) { */ case 1:
 40512  			_r$10 = raddr.toLocal(net); /* */ $s = 5; case 5: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
 40513  			raddr = _r$10;
 40514  		/* } */ case 2:
 40515  		_r$11 = favoriteAddrFamily(net, laddr, raddr, mode); /* */ $s = 6; case 6: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; }
 40516  		_tuple = _r$11;
 40517  		family = _tuple[0];
 40518  		ipv6only$1 = _tuple[1];
 40519  		_r$12 = socket(ctx, net, family, sotype, proto, ipv6only$1, laddr, raddr); /* */ $s = 7; case 7: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; }
 40520  		_tuple$1 = _r$12;
 40521  		fd = _tuple$1[0];
 40522  		err = _tuple$1[1];
 40523  		$s = -1; return [fd, err];
 40524  		/* */ } return; } if ($f === undefined) { $f = { $blk: internetSocket }; } $f._r$10 = _r$10; $f._r$11 = _r$11; $f._r$12 = _r$12; $f._r$9 = _r$9; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._v = _v; $f.ctx = ctx; $f.err = err; $f.family = family; $f.fd = fd; $f.ipv6only$1 = ipv6only$1; $f.laddr = laddr; $f.mode = mode; $f.net = net; $f.proto = proto; $f.raddr = raddr; $f.sotype = sotype; $f.$s = $s; $f.$r = $r; return $f;
 40525  	};
 40526  	ipToSockaddr = function(family, ip, port, zone) {
 40527  		var _1, _r$9, family, ip, ip4, ip6, port, sa, sa$1, zone, $s, $r;
 40528  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _r$9 = $f._r$9; family = $f.family; ip = $f.ip; ip4 = $f.ip4; ip6 = $f.ip6; port = $f.port; sa = $f.sa; sa$1 = $f.sa$1; zone = $f.zone; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 40529  			_1 = family;
 40530  			/* */ if (_1 === (2)) { $s = 2; continue; }
 40531  			/* */ if (_1 === (10)) { $s = 3; continue; }
 40532  			/* */ $s = 4; continue;
 40533  			/* if (_1 === (2)) { */ case 2:
 40534  				if (ip.$length === 0) {
 40535  					ip = $pkg.IPv4zero;
 40536  				}
 40537  				ip4 = ip.To4();
 40538  				if (ip4 === IP.nil) {
 40539  					$s = -1; return [$ifaceNil, new AddrError.ptr("non-IPv4 address", ip.String())];
 40540  				}
 40541  				sa = new syscall.SockaddrInet4.ptr(port, arrayType$2.zero(), new syscall.RawSockaddrInet4.ptr(0, 0, arrayType$2.zero(), arrayType$3.zero()));
 40542  				$copySlice(new sliceType$1(sa.Addr), ip4);
 40543  				$s = -1; return [sa, $ifaceNil];
 40544  			/* } else if (_1 === (10)) { */ case 3:
 40545  				if ((ip.$length === 0) || ip.Equal($pkg.IPv4zero)) {
 40546  					ip = $pkg.IPv6zero;
 40547  				}
 40548  				ip6 = ip.To16();
 40549  				if (ip6 === IP.nil) {
 40550  					$s = -1; return [$ifaceNil, new AddrError.ptr("non-IPv6 address", ip.String())];
 40551  				}
 40552  				_r$9 = zoneCache.index(zone); /* */ $s = 5; case 5: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 40553  				sa$1 = new syscall.SockaddrInet6.ptr(port, ((_r$9 >>> 0)), arrayType$1.zero(), new syscall.RawSockaddrInet6.ptr(0, 0, 0, arrayType$1.zero(), 0));
 40554  				$copySlice(new sliceType$1(sa$1.Addr), ip6);
 40555  				$s = -1; return [sa$1, $ifaceNil];
 40556  			/* } */ case 4:
 40557  		case 1:
 40558  		$s = -1; return [$ifaceNil, new AddrError.ptr("invalid address family", ip.String())];
 40559  		/* */ } return; } if ($f === undefined) { $f = { $blk: ipToSockaddr }; } $f._1 = _1; $f._r$9 = _r$9; $f.family = family; $f.ip = ip; $f.ip4 = ip4; $f.ip6 = ip6; $f.port = port; $f.sa = sa; $f.sa$1 = sa$1; $f.zone = zone; $f.$s = $s; $f.$r = $r; return $f;
 40560  	};
 40561  	lookupProtocolMap = function(name) {
 40562  		var _entry, _tuple, found, lowerProtocol, n, name, proto;
 40563  		lowerProtocol = arrayType$4.zero();
 40564  		n = $copyString(new sliceType$1(lowerProtocol), name);
 40565  		lowerASCIIBytes($subslice(new sliceType$1(lowerProtocol), 0, n));
 40566  		_tuple = (_entry = protocols[$String.keyFor(($bytesToString($subslice(new sliceType$1(lowerProtocol), 0, n))))], _entry !== undefined ? [_entry.v, true] : [0, false]);
 40567  		proto = _tuple[0];
 40568  		found = _tuple[1];
 40569  		if (!found || !((n === name.length))) {
 40570  			return [0, new AddrError.ptr("unknown IP protocol specified", name)];
 40571  		}
 40572  		return [proto, $ifaceNil];
 40573  	};
 40574  	lookupPortMap = function(network, service) {
 40575  		var _1, _entry, _entry$1, _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, _tuple$1, error, lowerService, m, n, network, ok, ok$1, port, port$1, service;
 40576  		port = 0;
 40577  		error = $ifaceNil;
 40578  		_1 = network;
 40579  		if (_1 === ("tcp4") || _1 === ("tcp6")) {
 40580  			network = "tcp";
 40581  		} else if (_1 === ("udp4") || _1 === ("udp6")) {
 40582  			network = "udp";
 40583  		}
 40584  		_tuple = (_entry = services[$String.keyFor(network)], _entry !== undefined ? [_entry.v, true] : [false, false]);
 40585  		m = _tuple[0];
 40586  		ok = _tuple[1];
 40587  		if (ok) {
 40588  			lowerService = arrayType$4.zero();
 40589  			n = $copyString(new sliceType$1(lowerService), service);
 40590  			lowerASCIIBytes($subslice(new sliceType$1(lowerService), 0, n));
 40591  			_tuple$1 = (_entry$1 = m[$String.keyFor(($bytesToString($subslice(new sliceType$1(lowerService), 0, n))))], _entry$1 !== undefined ? [_entry$1.v, true] : [0, false]);
 40592  			port$1 = _tuple$1[0];
 40593  			ok$1 = _tuple$1[1];
 40594  			if (ok$1 && (n === service.length)) {
 40595  				_tmp = port$1;
 40596  				_tmp$1 = $ifaceNil;
 40597  				port = _tmp;
 40598  				error = _tmp$1;
 40599  				return [port, error];
 40600  			}
 40601  		}
 40602  		_tmp$2 = 0;
 40603  		_tmp$3 = new AddrError.ptr("unknown port", network + "/" + service);
 40604  		port = _tmp$2;
 40605  		error = _tmp$3;
 40606  		return [port, error];
 40607  	};
 40608  	Resolver.ptr.prototype.LookupHost = function(ctx, host) {
 40609  		var _r$10, _r$9, _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, addrs, ctx, err, host, ip, r, $s, $r;
 40610  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$10 = $f._r$10; _r$9 = $f._r$9; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tuple = $f._tuple; addrs = $f.addrs; ctx = $f.ctx; err = $f.err; host = $f.host; ip = $f.ip; r = $f.r; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 40611  		addrs = sliceType.nil;
 40612  		err = $ifaceNil;
 40613  		r = this;
 40614  		/* */ if (host === "") { $s = 1; continue; }
 40615  		/* */ $s = 2; continue;
 40616  		/* if (host === "") { */ case 1:
 40617  			_tmp = sliceType.nil;
 40618  			_r$9 = errNoSuchHost.Error(); /* */ $s = 3; case 3: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 40619  			_tmp$1 = new DNSError.ptr(_r$9, host, "", false, false);
 40620  			addrs = _tmp;
 40621  			err = _tmp$1;
 40622  			$s = -1; return [addrs, err];
 40623  		/* } */ case 2:
 40624  		ip = ParseIP(host);
 40625  		if (!(ip === IP.nil)) {
 40626  			_tmp$2 = new sliceType([host]);
 40627  			_tmp$3 = $ifaceNil;
 40628  			addrs = _tmp$2;
 40629  			err = _tmp$3;
 40630  			$s = -1; return [addrs, err];
 40631  		}
 40632  		_r$10 = r.lookupHost(ctx, host); /* */ $s = 4; case 4: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
 40633  		_tuple = _r$10;
 40634  		addrs = _tuple[0];
 40635  		err = _tuple[1];
 40636  		$s = -1; return [addrs, err];
 40637  		/* */ } return; } if ($f === undefined) { $f = { $blk: Resolver.ptr.prototype.LookupHost }; } $f._r$10 = _r$10; $f._r$9 = _r$9; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tuple = _tuple; $f.addrs = addrs; $f.ctx = ctx; $f.err = err; $f.host = host; $f.ip = ip; $f.r = r; $f.$s = $s; $f.$r = $r; return $f;
 40638  	};
 40639  	Resolver.prototype.LookupHost = function(ctx, host) { return this.$val.LookupHost(ctx, host); };
 40640  	Resolver.ptr.prototype.LookupIPAddr = function(ctx, host) {
 40641  		var _r$10, _r$11, _r$12, _r$13, _r$14, _r$15, _r$9, _selection, _tuple, _tuple$1, _tuple$2, _tuple$3, addrs, alt, called, ch, ctx, ctxErr, err, host, ip, r, r$1, resolverFunc, trace, x, x$1, $s, $r;
 40642  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$10 = $f._r$10; _r$11 = $f._r$11; _r$12 = $f._r$12; _r$13 = $f._r$13; _r$14 = $f._r$14; _r$15 = $f._r$15; _r$9 = $f._r$9; _selection = $f._selection; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; addrs = $f.addrs; alt = $f.alt; called = $f.called; ch = $f.ch; ctx = $f.ctx; ctxErr = $f.ctxErr; err = $f.err; host = $f.host; ip = $f.ip; r = $f.r; r$1 = $f.r$1; resolverFunc = $f.resolverFunc; trace = $f.trace; x = $f.x; x$1 = $f.x$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 40643  		ctx = [ctx];
 40644  		host = [host];
 40645  		resolverFunc = [resolverFunc];
 40646  		r = this;
 40647  		/* */ if (host[0] === "") { $s = 1; continue; }
 40648  		/* */ $s = 2; continue;
 40649  		/* if (host[0] === "") { */ case 1:
 40650  			_r$9 = errNoSuchHost.Error(); /* */ $s = 3; case 3: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 40651  			$s = -1; return [sliceType$3.nil, new DNSError.ptr(_r$9, host[0], "", false, false)];
 40652  		/* } */ case 2:
 40653  		ip = ParseIP(host[0]);
 40654  		if (!(ip === IP.nil)) {
 40655  			$s = -1; return [new sliceType$3([new IPAddr.ptr(ip, "")]), $ifaceNil];
 40656  		}
 40657  		_r$10 = ctx[0].Value((x = new nettrace.TraceKey.ptr(), new x.constructor.elem(x))); /* */ $s = 4; case 4: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
 40658  		_tuple = $assertType(_r$10, ptrType$9, true);
 40659  		trace = _tuple[0];
 40660  		/* */ if (!(trace === ptrType$9.nil) && !(trace.DNSStart === $throwNilPointerError)) { $s = 5; continue; }
 40661  		/* */ $s = 6; continue;
 40662  		/* if (!(trace === ptrType$9.nil) && !(trace.DNSStart === $throwNilPointerError)) { */ case 5:
 40663  			$r = trace.DNSStart(host[0]); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 40664  		/* } */ case 6:
 40665  		resolverFunc[0] = $methodVal(r, "lookupIP");
 40666  		_r$11 = ctx[0].Value((x$1 = new nettrace.LookupIPAltResolverKey.ptr(), new x$1.constructor.elem(x$1))); /* */ $s = 8; case 8: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; }
 40667  		_tuple$1 = $assertType(_r$11, funcType$1, true);
 40668  		alt = _tuple$1[0];
 40669  		if (!(alt === $throwNilPointerError)) {
 40670  			resolverFunc[0] = alt;
 40671  		}
 40672  		dnsWaitGroup.Add(1);
 40673  		_r$12 = lookupGroup.DoChan(host[0], (function(ctx, host, resolverFunc) { return function $b() {
 40674  			var _r$12, _returncast, $s, $deferred, $r;
 40675  			/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$12 = $f._r$12; _returncast = $f._returncast; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
 40676  			$deferred.push([$methodVal(dnsWaitGroup, "Done"), []]);
 40677  			_r$12 = testHookLookupIP(ctx[0], resolverFunc[0], host[0]); /* */ $s = 1; case 1: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; }
 40678  			_returncast = _r$12;
 40679  			$s = -1; return [_returncast[0], _returncast[1]];
 40680  			/* */ } return; } } catch(err) { $err = err; $s = -1; return [$ifaceNil, $ifaceNil]; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: $b }; } $f._r$12 = _r$12; $f._returncast = _returncast; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
 40681  		}; })(ctx, host, resolverFunc)); /* */ $s = 9; case 9: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; }
 40682  		_tuple$2 = _r$12;
 40683  		ch = _tuple$2[0];
 40684  		called = _tuple$2[1];
 40685  		if (!called) {
 40686  			dnsWaitGroup.Done();
 40687  		}
 40688  		_r$13 = ctx[0].Done(); /* */ $s = 10; case 10: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; }
 40689  		_r$14 = $select([[_r$13], [ch]]); /* */ $s = 11; case 11: if($c) { $c = false; _r$14 = _r$14.$blk(); } if (_r$14 && _r$14.$blk !== undefined) { break s; }
 40690  		_selection = _r$14;
 40691  		/* */ if (_selection[0] === 0) { $s = 12; continue; }
 40692  		/* */ if (_selection[0] === 1) { $s = 13; continue; }
 40693  		/* */ $s = 14; continue;
 40694  		/* if (_selection[0] === 0) { */ case 12:
 40695  			_r$15 = ctx[0].Err(); /* */ $s = 15; case 15: if($c) { $c = false; _r$15 = _r$15.$blk(); } if (_r$15 && _r$15.$blk !== undefined) { break s; }
 40696  			ctxErr = _r$15;
 40697  			/* */ if ($interfaceIsEqual(ctxErr, context.DeadlineExceeded)) { $s = 16; continue; }
 40698  			/* */ $s = 17; continue;
 40699  			/* if ($interfaceIsEqual(ctxErr, context.DeadlineExceeded)) { */ case 16:
 40700  				$r = lookupGroup.Forget(host[0]); /* */ $s = 18; case 18: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 40701  			/* } */ case 17:
 40702  			err = mapErr(ctxErr);
 40703  			/* */ if (!(trace === ptrType$9.nil) && !(trace.DNSDone === $throwNilPointerError)) { $s = 19; continue; }
 40704  			/* */ $s = 20; continue;
 40705  			/* if (!(trace === ptrType$9.nil) && !(trace.DNSDone === $throwNilPointerError)) { */ case 19:
 40706  				$r = trace.DNSDone(sliceType$12.nil, false, err); /* */ $s = 21; case 21: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 40707  			/* } */ case 20:
 40708  			$s = -1; return [sliceType$3.nil, err];
 40709  		/* } else if (_selection[0] === 1) { */ case 13:
 40710  			r$1 = $clone(_selection[1][0], singleflight.Result);
 40711  			/* */ if (!(trace === ptrType$9.nil) && !(trace.DNSDone === $throwNilPointerError)) { $s = 22; continue; }
 40712  			/* */ $s = 23; continue;
 40713  			/* if (!(trace === ptrType$9.nil) && !(trace.DNSDone === $throwNilPointerError)) { */ case 22:
 40714  				_tuple$3 = $assertType(r$1.Val, sliceType$3, true);
 40715  				addrs = _tuple$3[0];
 40716  				$r = trace.DNSDone(ipAddrsEface(addrs), r$1.Shared, r$1.Err); /* */ $s = 24; case 24: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 40717  			/* } */ case 23:
 40718  			$s = -1; return lookupIPReturn(r$1.Val, r$1.Err, r$1.Shared);
 40719  		/* } */ case 14:
 40720  		$s = -1; return [sliceType$3.nil, $ifaceNil];
 40721  		/* */ } return; } if ($f === undefined) { $f = { $blk: Resolver.ptr.prototype.LookupIPAddr }; } $f._r$10 = _r$10; $f._r$11 = _r$11; $f._r$12 = _r$12; $f._r$13 = _r$13; $f._r$14 = _r$14; $f._r$15 = _r$15; $f._r$9 = _r$9; $f._selection = _selection; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f.addrs = addrs; $f.alt = alt; $f.called = called; $f.ch = ch; $f.ctx = ctx; $f.ctxErr = ctxErr; $f.err = err; $f.host = host; $f.ip = ip; $f.r = r; $f.r$1 = r$1; $f.resolverFunc = resolverFunc; $f.trace = trace; $f.x = x; $f.x$1 = x$1; $f.$s = $s; $f.$r = $r; return $f;
 40722  	};
 40723  	Resolver.prototype.LookupIPAddr = function(ctx, host) { return this.$val.LookupIPAddr(ctx, host); };
 40724  	lookupIPReturn = function(addrsi, err, shared) {
 40725  		var addrs, addrsi, clone, err, shared;
 40726  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 40727  			return [sliceType$3.nil, err];
 40728  		}
 40729  		addrs = $assertType(addrsi, sliceType$3);
 40730  		if (shared) {
 40731  			clone = $makeSlice(sliceType$3, addrs.$length);
 40732  			$copySlice(clone, addrs);
 40733  			addrs = clone;
 40734  		}
 40735  		return [addrs, $ifaceNil];
 40736  	};
 40737  	ipAddrsEface = function(addrs) {
 40738  		var _i, _ref, addrs, i, s, v;
 40739  		s = $makeSlice(sliceType$12, addrs.$length);
 40740  		_ref = addrs;
 40741  		_i = 0;
 40742  		while (true) {
 40743  			if (!(_i < _ref.$length)) { break; }
 40744  			i = _i;
 40745  			v = $clone(((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]), IPAddr);
 40746  			((i < 0 || i >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + i] = new v.constructor.elem(v));
 40747  			_i++;
 40748  		}
 40749  		return s;
 40750  	};
 40751  	Resolver.ptr.prototype.LookupPort = function(ctx, network, service) {
 40752  		var _r$9, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tuple, _tuple$1, ctx, err, needsLookup, network, port, r, service, $s, $r;
 40753  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$9 = $f._r$9; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tmp$4 = $f._tmp$4; _tmp$5 = $f._tmp$5; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; ctx = $f.ctx; err = $f.err; needsLookup = $f.needsLookup; network = $f.network; port = $f.port; r = $f.r; service = $f.service; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 40754  		port = 0;
 40755  		err = $ifaceNil;
 40756  		r = this;
 40757  		_tuple = parsePort(service);
 40758  		port = _tuple[0];
 40759  		needsLookup = _tuple[1];
 40760  		/* */ if (needsLookup) { $s = 1; continue; }
 40761  		/* */ $s = 2; continue;
 40762  		/* if (needsLookup) { */ case 1:
 40763  			_r$9 = r.lookupPort(ctx, network, service); /* */ $s = 3; case 3: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 40764  			_tuple$1 = _r$9;
 40765  			port = _tuple$1[0];
 40766  			err = _tuple$1[1];
 40767  			if (!($interfaceIsEqual(err, $ifaceNil))) {
 40768  				_tmp = 0;
 40769  				_tmp$1 = err;
 40770  				port = _tmp;
 40771  				err = _tmp$1;
 40772  				$s = -1; return [port, err];
 40773  			}
 40774  		/* } */ case 2:
 40775  		if (0 > port || port > 65535) {
 40776  			_tmp$2 = 0;
 40777  			_tmp$3 = new AddrError.ptr("invalid port", service);
 40778  			port = _tmp$2;
 40779  			err = _tmp$3;
 40780  			$s = -1; return [port, err];
 40781  		}
 40782  		_tmp$4 = port;
 40783  		_tmp$5 = $ifaceNil;
 40784  		port = _tmp$4;
 40785  		err = _tmp$5;
 40786  		$s = -1; return [port, err];
 40787  		/* */ } return; } if ($f === undefined) { $f = { $blk: Resolver.ptr.prototype.LookupPort }; } $f._r$9 = _r$9; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tmp$4 = _tmp$4; $f._tmp$5 = _tmp$5; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.ctx = ctx; $f.err = err; $f.needsLookup = needsLookup; $f.network = network; $f.port = port; $f.r = r; $f.service = service; $f.$s = $s; $f.$r = $r; return $f;
 40788  	};
 40789  	Resolver.prototype.LookupPort = function(ctx, network, service) { return this.$val.LookupPort(ctx, network, service); };
 40790  	Resolver.ptr.prototype.LookupCNAME = function(ctx, host) {
 40791  		var _r$9, _tuple, cname, ctx, err, host, r, $s, $r;
 40792  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$9 = $f._r$9; _tuple = $f._tuple; cname = $f.cname; ctx = $f.ctx; err = $f.err; host = $f.host; r = $f.r; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 40793  		cname = "";
 40794  		err = $ifaceNil;
 40795  		r = this;
 40796  		_r$9 = r.lookupCNAME(ctx, host); /* */ $s = 1; case 1: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 40797  		_tuple = _r$9;
 40798  		cname = _tuple[0];
 40799  		err = _tuple[1];
 40800  		$s = -1; return [cname, err];
 40801  		/* */ } return; } if ($f === undefined) { $f = { $blk: Resolver.ptr.prototype.LookupCNAME }; } $f._r$9 = _r$9; $f._tuple = _tuple; $f.cname = cname; $f.ctx = ctx; $f.err = err; $f.host = host; $f.r = r; $f.$s = $s; $f.$r = $r; return $f;
 40802  	};
 40803  	Resolver.prototype.LookupCNAME = function(ctx, host) { return this.$val.LookupCNAME(ctx, host); };
 40804  	Resolver.ptr.prototype.LookupSRV = function(ctx, service, proto, name) {
 40805  		var _r$9, _tuple, addrs, cname, ctx, err, name, proto, r, service, $s, $r;
 40806  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$9 = $f._r$9; _tuple = $f._tuple; addrs = $f.addrs; cname = $f.cname; ctx = $f.ctx; err = $f.err; name = $f.name; proto = $f.proto; r = $f.r; service = $f.service; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 40807  		cname = "";
 40808  		addrs = sliceType$13.nil;
 40809  		err = $ifaceNil;
 40810  		r = this;
 40811  		_r$9 = r.lookupSRV(ctx, service, proto, name); /* */ $s = 1; case 1: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 40812  		_tuple = _r$9;
 40813  		cname = _tuple[0];
 40814  		addrs = _tuple[1];
 40815  		err = _tuple[2];
 40816  		$s = -1; return [cname, addrs, err];
 40817  		/* */ } return; } if ($f === undefined) { $f = { $blk: Resolver.ptr.prototype.LookupSRV }; } $f._r$9 = _r$9; $f._tuple = _tuple; $f.addrs = addrs; $f.cname = cname; $f.ctx = ctx; $f.err = err; $f.name = name; $f.proto = proto; $f.r = r; $f.service = service; $f.$s = $s; $f.$r = $r; return $f;
 40818  	};
 40819  	Resolver.prototype.LookupSRV = function(ctx, service, proto, name) { return this.$val.LookupSRV(ctx, service, proto, name); };
 40820  	Resolver.ptr.prototype.LookupMX = function(ctx, name) {
 40821  		var _r$9, ctx, name, r, $s, $r;
 40822  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$9 = $f._r$9; ctx = $f.ctx; name = $f.name; r = $f.r; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 40823  		r = this;
 40824  		_r$9 = r.lookupMX(ctx, name); /* */ $s = 1; case 1: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 40825  		$s = -1; return _r$9;
 40826  		/* */ } return; } if ($f === undefined) { $f = { $blk: Resolver.ptr.prototype.LookupMX }; } $f._r$9 = _r$9; $f.ctx = ctx; $f.name = name; $f.r = r; $f.$s = $s; $f.$r = $r; return $f;
 40827  	};
 40828  	Resolver.prototype.LookupMX = function(ctx, name) { return this.$val.LookupMX(ctx, name); };
 40829  	Resolver.ptr.prototype.LookupNS = function(ctx, name) {
 40830  		var _r$9, ctx, name, r, $s, $r;
 40831  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$9 = $f._r$9; ctx = $f.ctx; name = $f.name; r = $f.r; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 40832  		r = this;
 40833  		_r$9 = r.lookupNS(ctx, name); /* */ $s = 1; case 1: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 40834  		$s = -1; return _r$9;
 40835  		/* */ } return; } if ($f === undefined) { $f = { $blk: Resolver.ptr.prototype.LookupNS }; } $f._r$9 = _r$9; $f.ctx = ctx; $f.name = name; $f.r = r; $f.$s = $s; $f.$r = $r; return $f;
 40836  	};
 40837  	Resolver.prototype.LookupNS = function(ctx, name) { return this.$val.LookupNS(ctx, name); };
 40838  	Resolver.ptr.prototype.LookupTXT = function(ctx, name) {
 40839  		var _r$9, ctx, name, r, $s, $r;
 40840  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$9 = $f._r$9; ctx = $f.ctx; name = $f.name; r = $f.r; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 40841  		r = this;
 40842  		_r$9 = r.lookupTXT(ctx, name); /* */ $s = 1; case 1: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 40843  		$s = -1; return _r$9;
 40844  		/* */ } return; } if ($f === undefined) { $f = { $blk: Resolver.ptr.prototype.LookupTXT }; } $f._r$9 = _r$9; $f.ctx = ctx; $f.name = name; $f.r = r; $f.$s = $s; $f.$r = $r; return $f;
 40845  	};
 40846  	Resolver.prototype.LookupTXT = function(ctx, name) { return this.$val.LookupTXT(ctx, name); };
 40847  	Resolver.ptr.prototype.LookupAddr = function(ctx, addr) {
 40848  		var _r$9, _tuple, addr, ctx, err, names, r, $s, $r;
 40849  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$9 = $f._r$9; _tuple = $f._tuple; addr = $f.addr; ctx = $f.ctx; err = $f.err; names = $f.names; r = $f.r; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 40850  		names = sliceType.nil;
 40851  		err = $ifaceNil;
 40852  		r = this;
 40853  		_r$9 = r.lookupAddr(ctx, addr); /* */ $s = 1; case 1: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 40854  		_tuple = _r$9;
 40855  		names = _tuple[0];
 40856  		err = _tuple[1];
 40857  		$s = -1; return [names, err];
 40858  		/* */ } return; } if ($f === undefined) { $f = { $blk: Resolver.ptr.prototype.LookupAddr }; } $f._r$9 = _r$9; $f._tuple = _tuple; $f.addr = addr; $f.ctx = ctx; $f.err = err; $f.names = names; $f.r = r; $f.$s = $s; $f.$r = $r; return $f;
 40859  	};
 40860  	Resolver.prototype.LookupAddr = function(ctx, addr) { return this.$val.LookupAddr(ctx, addr); };
 40861  	readProtocols = function() {
 40862  		var _entry, _entry$1, _i, _key, _key$1, _r$10, _r$11, _r$12, _r$9, _ref, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, _tuple$5, _tuple$6, alias, err, f, file$1, i, line, ok, ok$1, ok$2, ok$3, proto, $s, $deferred, $r;
 40863  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _entry = $f._entry; _entry$1 = $f._entry$1; _i = $f._i; _key = $f._key; _key$1 = $f._key$1; _r$10 = $f._r$10; _r$11 = $f._r$11; _r$12 = $f._r$12; _r$9 = $f._r$9; _ref = $f._ref; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; _tuple$4 = $f._tuple$4; _tuple$5 = $f._tuple$5; _tuple$6 = $f._tuple$6; alias = $f.alias; err = $f.err; f = $f.f; file$1 = $f.file$1; i = $f.i; line = $f.line; ok = $f.ok; ok$1 = $f.ok$1; ok$2 = $f.ok$2; ok$3 = $f.ok$3; proto = $f.proto; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
 40864  		_r$9 = open("/etc/protocols"); /* */ $s = 1; case 1: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 40865  		_tuple = _r$9;
 40866  		file$1 = _tuple[0];
 40867  		err = _tuple[1];
 40868  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 40869  			$s = -1; return;
 40870  		}
 40871  		$deferred.push([$methodVal(file$1, "close"), []]);
 40872  		_r$10 = file$1.readLine(); /* */ $s = 2; case 2: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
 40873  		_tuple$1 = _r$10;
 40874  		line = _tuple$1[0];
 40875  		ok = _tuple$1[1];
 40876  		/* while (true) { */ case 3:
 40877  			/* if (!(ok)) { break; } */ if(!(ok)) { $s = 4; continue; }
 40878  			i = byteIndex(line, 35);
 40879  			if (i >= 0) {
 40880  				line = $substring(line, 0, i);
 40881  			}
 40882  			f = getFields(line);
 40883  			/* */ if (f.$length < 2) { $s = 5; continue; }
 40884  			/* */ $s = 6; continue;
 40885  			/* if (f.$length < 2) { */ case 5:
 40886  				_r$11 = file$1.readLine(); /* */ $s = 7; case 7: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; }
 40887  				_tuple$2 = _r$11;
 40888  				line = _tuple$2[0];
 40889  				ok = _tuple$2[1];
 40890  				/* continue; */ $s = 3; continue;
 40891  			/* } */ case 6:
 40892  			_tuple$3 = dtoi((1 >= f.$length ? ($throwRuntimeError("index out of range"), undefined) : f.$array[f.$offset + 1]));
 40893  			proto = _tuple$3[0];
 40894  			ok$1 = _tuple$3[2];
 40895  			if (ok$1) {
 40896  				_tuple$4 = (_entry = protocols[$String.keyFor((0 >= f.$length ? ($throwRuntimeError("index out of range"), undefined) : f.$array[f.$offset + 0]))], _entry !== undefined ? [_entry.v, true] : [0, false]);
 40897  				ok$2 = _tuple$4[1];
 40898  				if (!ok$2) {
 40899  					_key = (0 >= f.$length ? ($throwRuntimeError("index out of range"), undefined) : f.$array[f.$offset + 0]); (protocols || $throwRuntimeError("assignment to entry in nil map"))[$String.keyFor(_key)] = { k: _key, v: proto };
 40900  				}
 40901  				_ref = $subslice(f, 2);
 40902  				_i = 0;
 40903  				while (true) {
 40904  					if (!(_i < _ref.$length)) { break; }
 40905  					alias = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
 40906  					_tuple$5 = (_entry$1 = protocols[$String.keyFor(alias)], _entry$1 !== undefined ? [_entry$1.v, true] : [0, false]);
 40907  					ok$3 = _tuple$5[1];
 40908  					if (!ok$3) {
 40909  						_key$1 = alias; (protocols || $throwRuntimeError("assignment to entry in nil map"))[$String.keyFor(_key$1)] = { k: _key$1, v: proto };
 40910  					}
 40911  					_i++;
 40912  				}
 40913  			}
 40914  			_r$12 = file$1.readLine(); /* */ $s = 8; case 8: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; }
 40915  			_tuple$6 = _r$12;
 40916  			line = _tuple$6[0];
 40917  			ok = _tuple$6[1];
 40918  		/* } */ $s = 3; continue; case 4:
 40919  		$s = -1; return;
 40920  		/* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: readProtocols }; } $f._entry = _entry; $f._entry$1 = _entry$1; $f._i = _i; $f._key = _key; $f._key$1 = _key$1; $f._r$10 = _r$10; $f._r$11 = _r$11; $f._r$12 = _r$12; $f._r$9 = _r$9; $f._ref = _ref; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f._tuple$4 = _tuple$4; $f._tuple$5 = _tuple$5; $f._tuple$6 = _tuple$6; $f.alias = alias; $f.err = err; $f.f = f; $f.file$1 = file$1; $f.i = i; $f.line = line; $f.ok = ok; $f.ok$1 = ok$1; $f.ok$2 = ok$2; $f.ok$3 = ok$3; $f.proto = proto; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
 40921  	};
 40922  	lookupProtocol = function(param, name) {
 40923  		var name, param, $s, $r;
 40924  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; name = $f.name; param = $f.param; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 40925  		$r = onceReadProtocols.Do(readProtocols); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 40926  		$s = -1; return lookupProtocolMap(name);
 40927  		/* */ } return; } if ($f === undefined) { $f = { $blk: lookupProtocol }; } $f.name = name; $f.param = param; $f.$s = $s; $f.$r = $r; return $f;
 40928  	};
 40929  	Resolver.ptr.prototype.dial = function(ctx, network, server) {
 40930  		var _r$10, _r$9, _tuple, _tuple$1, _tuple$2, c, ctx, d, err, network, ok, r, server, $s, $r;
 40931  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$10 = $f._r$10; _r$9 = $f._r$9; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; c = $f.c; ctx = $f.ctx; d = $f.d; err = $f.err; network = $f.network; ok = $f.ok; r = $f.r; server = $f.server; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 40932  		r = this;
 40933  		c = $ifaceNil;
 40934  		err = $ifaceNil;
 40935  		/* */ if (!(r.Dial === $throwNilPointerError)) { $s = 1; continue; }
 40936  		/* */ $s = 2; continue;
 40937  		/* if (!(r.Dial === $throwNilPointerError)) { */ case 1:
 40938  			_r$9 = r.Dial(ctx, network, server); /* */ $s = 4; case 4: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 40939  			_tuple = _r$9;
 40940  			c = _tuple[0];
 40941  			err = _tuple[1];
 40942  			$s = 3; continue;
 40943  		/* } else { */ case 2:
 40944  			d = new Dialer.ptr(new time.Duration(0, 0), new time.Time.ptr(new $Uint64(0, 0), new $Int64(0, 0), ptrType.nil), $ifaceNil, false, new time.Duration(0, 0), new time.Duration(0, 0), ptrType$6.nil, $chanNil);
 40945  			_r$10 = d.DialContext(ctx, network, server); /* */ $s = 5; case 5: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
 40946  			_tuple$1 = _r$10;
 40947  			c = _tuple$1[0];
 40948  			err = _tuple$1[1];
 40949  		/* } */ case 3:
 40950  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 40951  			$s = -1; return [$ifaceNil, mapErr(err)];
 40952  		}
 40953  		_tuple$2 = $assertType(c, PacketConn, true);
 40954  		ok = _tuple$2[1];
 40955  		if (ok) {
 40956  			$s = -1; return [new dnsPacketConn.ptr(c), $ifaceNil];
 40957  		}
 40958  		$s = -1; return [new dnsStreamConn.ptr(c), $ifaceNil];
 40959  		/* */ } return; } if ($f === undefined) { $f = { $blk: Resolver.ptr.prototype.dial }; } $f._r$10 = _r$10; $f._r$9 = _r$9; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f.c = c; $f.ctx = ctx; $f.d = d; $f.err = err; $f.network = network; $f.ok = ok; $f.r = r; $f.server = server; $f.$s = $s; $f.$r = $r; return $f;
 40960  	};
 40961  	Resolver.prototype.dial = function(ctx, network, server) { return this.$val.dial(ctx, network, server); };
 40962  	Resolver.ptr.prototype.lookupHost = function(ctx, host) {
 40963  		var _r$10, _r$11, _r$9, _tmp, _tmp$1, _tuple, _tuple$1, addrs, addrs$1, ctx, err, err$1, host, ok, order, r, $s, $r;
 40964  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$10 = $f._r$10; _r$11 = $f._r$11; _r$9 = $f._r$9; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; addrs = $f.addrs; addrs$1 = $f.addrs$1; ctx = $f.ctx; err = $f.err; err$1 = $f.err$1; host = $f.host; ok = $f.ok; order = $f.order; r = $f.r; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 40965  		addrs = sliceType.nil;
 40966  		err = $ifaceNil;
 40967  		r = this;
 40968  		_r$9 = systemConf(); /* */ $s = 1; case 1: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 40969  		_r$10 = _r$9.hostLookupOrder(host); /* */ $s = 2; case 2: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
 40970  		order = _r$10;
 40971  		if (!r.PreferGo && (order === 0)) {
 40972  			_tuple = cgoLookupHost(ctx, host);
 40973  			addrs$1 = _tuple[0];
 40974  			err$1 = _tuple[1];
 40975  			ok = _tuple[2];
 40976  			if (ok) {
 40977  				_tmp = addrs$1;
 40978  				_tmp$1 = err$1;
 40979  				addrs = _tmp;
 40980  				err = _tmp$1;
 40981  				$s = -1; return [addrs, err];
 40982  			}
 40983  			order = 1;
 40984  		}
 40985  		_r$11 = r.goLookupHostOrder(ctx, host, order); /* */ $s = 3; case 3: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; }
 40986  		_tuple$1 = _r$11;
 40987  		addrs = _tuple$1[0];
 40988  		err = _tuple$1[1];
 40989  		$s = -1; return [addrs, err];
 40990  		/* */ } return; } if ($f === undefined) { $f = { $blk: Resolver.ptr.prototype.lookupHost }; } $f._r$10 = _r$10; $f._r$11 = _r$11; $f._r$9 = _r$9; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.addrs = addrs; $f.addrs$1 = addrs$1; $f.ctx = ctx; $f.err = err; $f.err$1 = err$1; $f.host = host; $f.ok = ok; $f.order = order; $f.r = r; $f.$s = $s; $f.$r = $r; return $f;
 40991  	};
 40992  	Resolver.prototype.lookupHost = function(ctx, host) { return this.$val.lookupHost(ctx, host); };
 40993  	Resolver.ptr.prototype.lookupIP = function(ctx, host) {
 40994  		var _r$10, _r$11, _r$12, _r$9, _tmp, _tmp$1, _tuple, _tuple$1, _tuple$2, addrs, addrs$1, ctx, err, err$1, host, ok, order, r, $s, $r;
 40995  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$10 = $f._r$10; _r$11 = $f._r$11; _r$12 = $f._r$12; _r$9 = $f._r$9; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; addrs = $f.addrs; addrs$1 = $f.addrs$1; ctx = $f.ctx; err = $f.err; err$1 = $f.err$1; host = $f.host; ok = $f.ok; order = $f.order; r = $f.r; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 40996  		addrs = sliceType$3.nil;
 40997  		err = $ifaceNil;
 40998  		r = this;
 40999  		/* */ if (r.PreferGo) { $s = 1; continue; }
 41000  		/* */ $s = 2; continue;
 41001  		/* if (r.PreferGo) { */ case 1:
 41002  			_r$9 = r.goLookupIP(ctx, host); /* */ $s = 3; case 3: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 41003  			_tuple = _r$9;
 41004  			addrs = _tuple[0];
 41005  			err = _tuple[1];
 41006  			$s = -1; return [addrs, err];
 41007  		/* } */ case 2:
 41008  		_r$10 = systemConf(); /* */ $s = 4; case 4: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
 41009  		_r$11 = _r$10.hostLookupOrder(host); /* */ $s = 5; case 5: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; }
 41010  		order = _r$11;
 41011  		if (order === 0) {
 41012  			_tuple$1 = cgoLookupIP(ctx, host);
 41013  			addrs$1 = _tuple$1[0];
 41014  			err$1 = _tuple$1[1];
 41015  			ok = _tuple$1[2];
 41016  			if (ok) {
 41017  				_tmp = addrs$1;
 41018  				_tmp$1 = err$1;
 41019  				addrs = _tmp;
 41020  				err = _tmp$1;
 41021  				$s = -1; return [addrs, err];
 41022  			}
 41023  			order = 1;
 41024  		}
 41025  		_r$12 = r.goLookupIPCNAMEOrder(ctx, host, order); /* */ $s = 6; case 6: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; }
 41026  		_tuple$2 = _r$12;
 41027  		addrs = _tuple$2[0];
 41028  		err = _tuple$2[2];
 41029  		$s = -1; return [addrs, err];
 41030  		/* */ } return; } if ($f === undefined) { $f = { $blk: Resolver.ptr.prototype.lookupIP }; } $f._r$10 = _r$10; $f._r$11 = _r$11; $f._r$12 = _r$12; $f._r$9 = _r$9; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f.addrs = addrs; $f.addrs$1 = addrs$1; $f.ctx = ctx; $f.err = err; $f.err$1 = err$1; $f.host = host; $f.ok = ok; $f.order = order; $f.r = r; $f.$s = $s; $f.$r = $r; return $f;
 41031  	};
 41032  	Resolver.prototype.lookupIP = function(ctx, host) { return this.$val.lookupIP(ctx, host); };
 41033  	Resolver.ptr.prototype.lookupPort = function(ctx, network, service) {
 41034  		var _r$10, _r$11, _r$12, _r$9, _tuple, _tuple$1, _v, ctx, err, err$1, network, ok, port, port$1, r, service, $s, $r;
 41035  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$10 = $f._r$10; _r$11 = $f._r$11; _r$12 = $f._r$12; _r$9 = $f._r$9; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _v = $f._v; ctx = $f.ctx; err = $f.err; err$1 = $f.err$1; network = $f.network; ok = $f.ok; port = $f.port; port$1 = $f.port$1; r = $f.r; service = $f.service; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 41036  		r = this;
 41037  		if (!(!r.PreferGo)) { _v = false; $s = 3; continue s; }
 41038  		_r$9 = systemConf(); /* */ $s = 4; case 4: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 41039  		_r$10 = _r$9.canUseCgo(); /* */ $s = 5; case 5: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
 41040  		_v = _r$10; case 3:
 41041  		/* */ if (_v) { $s = 1; continue; }
 41042  		/* */ $s = 2; continue;
 41043  		/* if (_v) { */ case 1:
 41044  			_tuple = cgoLookupPort(ctx, network, service);
 41045  			port = _tuple[0];
 41046  			err = _tuple[1];
 41047  			ok = _tuple[2];
 41048  			/* */ if (ok) { $s = 6; continue; }
 41049  			/* */ $s = 7; continue;
 41050  			/* if (ok) { */ case 6:
 41051  				/* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 8; continue; }
 41052  				/* */ $s = 9; continue;
 41053  				/* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 8:
 41054  					_r$11 = goLookupPort(network, service); /* */ $s = 10; case 10: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; }
 41055  					_tuple$1 = _r$11;
 41056  					port$1 = _tuple$1[0];
 41057  					err$1 = _tuple$1[1];
 41058  					if ($interfaceIsEqual(err$1, $ifaceNil)) {
 41059  						$s = -1; return [port$1, $ifaceNil];
 41060  					}
 41061  				/* } */ case 9:
 41062  				$s = -1; return [port, err];
 41063  			/* } */ case 7:
 41064  		/* } */ case 2:
 41065  		_r$12 = goLookupPort(network, service); /* */ $s = 11; case 11: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; }
 41066  		$s = -1; return _r$12;
 41067  		/* */ } return; } if ($f === undefined) { $f = { $blk: Resolver.ptr.prototype.lookupPort }; } $f._r$10 = _r$10; $f._r$11 = _r$11; $f._r$12 = _r$12; $f._r$9 = _r$9; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._v = _v; $f.ctx = ctx; $f.err = err; $f.err$1 = err$1; $f.network = network; $f.ok = ok; $f.port = port; $f.port$1 = port$1; $f.r = r; $f.service = service; $f.$s = $s; $f.$r = $r; return $f;
 41068  	};
 41069  	Resolver.prototype.lookupPort = function(ctx, network, service) { return this.$val.lookupPort(ctx, network, service); };
 41070  	Resolver.ptr.prototype.lookupCNAME = function(ctx, name) {
 41071  		var _r$10, _r$11, _r$9, _tuple, _v, cname, ctx, err, name, ok, r, $s, $r;
 41072  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$10 = $f._r$10; _r$11 = $f._r$11; _r$9 = $f._r$9; _tuple = $f._tuple; _v = $f._v; cname = $f.cname; ctx = $f.ctx; err = $f.err; name = $f.name; ok = $f.ok; r = $f.r; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 41073  		r = this;
 41074  		if (!(!r.PreferGo)) { _v = false; $s = 3; continue s; }
 41075  		_r$9 = systemConf(); /* */ $s = 4; case 4: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 41076  		_r$10 = _r$9.canUseCgo(); /* */ $s = 5; case 5: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
 41077  		_v = _r$10; case 3:
 41078  		/* */ if (_v) { $s = 1; continue; }
 41079  		/* */ $s = 2; continue;
 41080  		/* if (_v) { */ case 1:
 41081  			_tuple = cgoLookupCNAME(ctx, name);
 41082  			cname = _tuple[0];
 41083  			err = _tuple[1];
 41084  			ok = _tuple[2];
 41085  			if (ok) {
 41086  				$s = -1; return [cname, err];
 41087  			}
 41088  		/* } */ case 2:
 41089  		_r$11 = r.goLookupCNAME(ctx, name); /* */ $s = 6; case 6: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; }
 41090  		$s = -1; return _r$11;
 41091  		/* */ } return; } if ($f === undefined) { $f = { $blk: Resolver.ptr.prototype.lookupCNAME }; } $f._r$10 = _r$10; $f._r$11 = _r$11; $f._r$9 = _r$9; $f._tuple = _tuple; $f._v = _v; $f.cname = cname; $f.ctx = ctx; $f.err = err; $f.name = name; $f.ok = ok; $f.r = r; $f.$s = $s; $f.$r = $r; return $f;
 41092  	};
 41093  	Resolver.prototype.lookupCNAME = function(ctx, name) { return this.$val.lookupCNAME(ctx, name); };
 41094  	Resolver.ptr.prototype.lookupSRV = function(ctx, service, proto, name) {
 41095  		var _i, _r$9, _ref, _tuple, cname, ctx, err, i, name, proto, r, rr, rr$1, rrs, service, srvs, target, $s, $r;
 41096  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _i = $f._i; _r$9 = $f._r$9; _ref = $f._ref; _tuple = $f._tuple; cname = $f.cname; ctx = $f.ctx; err = $f.err; i = $f.i; name = $f.name; proto = $f.proto; r = $f.r; rr = $f.rr; rr$1 = $f.rr$1; rrs = $f.rrs; service = $f.service; srvs = $f.srvs; target = $f.target; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 41097  		r = this;
 41098  		target = "";
 41099  		if (service === "" && proto === "") {
 41100  			target = name;
 41101  		} else {
 41102  			target = "_" + service + "._" + proto + "." + name;
 41103  		}
 41104  		_r$9 = r.lookup(ctx, target, 33); /* */ $s = 1; case 1: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 41105  		_tuple = _r$9;
 41106  		cname = _tuple[0];
 41107  		rrs = _tuple[1];
 41108  		err = _tuple[2];
 41109  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 41110  			$s = -1; return ["", sliceType$13.nil, err];
 41111  		}
 41112  		srvs = $makeSlice(sliceType$13, rrs.$length);
 41113  		_ref = rrs;
 41114  		_i = 0;
 41115  		while (true) {
 41116  			if (!(_i < _ref.$length)) { break; }
 41117  			i = _i;
 41118  			rr = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
 41119  			rr$1 = $assertType(rr, ptrType$42);
 41120  			((i < 0 || i >= srvs.$length) ? ($throwRuntimeError("index out of range"), undefined) : srvs.$array[srvs.$offset + i] = new SRV.ptr(rr$1.Target, rr$1.Port, rr$1.Priority, rr$1.Weight));
 41121  			_i++;
 41122  		}
 41123  		$r = ($subslice(new byPriorityWeight(srvs.$array), srvs.$offset, srvs.$offset + srvs.$length)).sort(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 41124  		$s = -1; return [cname, srvs, $ifaceNil];
 41125  		/* */ } return; } if ($f === undefined) { $f = { $blk: Resolver.ptr.prototype.lookupSRV }; } $f._i = _i; $f._r$9 = _r$9; $f._ref = _ref; $f._tuple = _tuple; $f.cname = cname; $f.ctx = ctx; $f.err = err; $f.i = i; $f.name = name; $f.proto = proto; $f.r = r; $f.rr = rr; $f.rr$1 = rr$1; $f.rrs = rrs; $f.service = service; $f.srvs = srvs; $f.target = target; $f.$s = $s; $f.$r = $r; return $f;
 41126  	};
 41127  	Resolver.prototype.lookupSRV = function(ctx, service, proto, name) { return this.$val.lookupSRV(ctx, service, proto, name); };
 41128  	Resolver.ptr.prototype.lookupMX = function(ctx, name) {
 41129  		var _i, _r$9, _ref, _tuple, ctx, err, i, mxs, name, r, rr, rr$1, rrs, $s, $r;
 41130  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _i = $f._i; _r$9 = $f._r$9; _ref = $f._ref; _tuple = $f._tuple; ctx = $f.ctx; err = $f.err; i = $f.i; mxs = $f.mxs; name = $f.name; r = $f.r; rr = $f.rr; rr$1 = $f.rr$1; rrs = $f.rrs; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 41131  		r = this;
 41132  		_r$9 = r.lookup(ctx, name, 15); /* */ $s = 1; case 1: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 41133  		_tuple = _r$9;
 41134  		rrs = _tuple[1];
 41135  		err = _tuple[2];
 41136  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 41137  			$s = -1; return [sliceType$14.nil, err];
 41138  		}
 41139  		mxs = $makeSlice(sliceType$14, rrs.$length);
 41140  		_ref = rrs;
 41141  		_i = 0;
 41142  		while (true) {
 41143  			if (!(_i < _ref.$length)) { break; }
 41144  			i = _i;
 41145  			rr = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
 41146  			rr$1 = $assertType(rr, ptrType$44);
 41147  			((i < 0 || i >= mxs.$length) ? ($throwRuntimeError("index out of range"), undefined) : mxs.$array[mxs.$offset + i] = new MX.ptr(rr$1.Mx, rr$1.Pref));
 41148  			_i++;
 41149  		}
 41150  		$r = ($subslice(new byPref(mxs.$array), mxs.$offset, mxs.$offset + mxs.$length)).sort(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 41151  		$s = -1; return [mxs, $ifaceNil];
 41152  		/* */ } return; } if ($f === undefined) { $f = { $blk: Resolver.ptr.prototype.lookupMX }; } $f._i = _i; $f._r$9 = _r$9; $f._ref = _ref; $f._tuple = _tuple; $f.ctx = ctx; $f.err = err; $f.i = i; $f.mxs = mxs; $f.name = name; $f.r = r; $f.rr = rr; $f.rr$1 = rr$1; $f.rrs = rrs; $f.$s = $s; $f.$r = $r; return $f;
 41153  	};
 41154  	Resolver.prototype.lookupMX = function(ctx, name) { return this.$val.lookupMX(ctx, name); };
 41155  	Resolver.ptr.prototype.lookupNS = function(ctx, name) {
 41156  		var _i, _r$9, _ref, _tuple, ctx, err, i, name, nss, r, rr, rrs, $s, $r;
 41157  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _i = $f._i; _r$9 = $f._r$9; _ref = $f._ref; _tuple = $f._tuple; ctx = $f.ctx; err = $f.err; i = $f.i; name = $f.name; nss = $f.nss; r = $f.r; rr = $f.rr; rrs = $f.rrs; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 41158  		r = this;
 41159  		_r$9 = r.lookup(ctx, name, 2); /* */ $s = 1; case 1: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 41160  		_tuple = _r$9;
 41161  		rrs = _tuple[1];
 41162  		err = _tuple[2];
 41163  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 41164  			$s = -1; return [sliceType$15.nil, err];
 41165  		}
 41166  		nss = $makeSlice(sliceType$15, rrs.$length);
 41167  		_ref = rrs;
 41168  		_i = 0;
 41169  		while (true) {
 41170  			if (!(_i < _ref.$length)) { break; }
 41171  			i = _i;
 41172  			rr = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
 41173  			((i < 0 || i >= nss.$length) ? ($throwRuntimeError("index out of range"), undefined) : nss.$array[nss.$offset + i] = new NS.ptr($assertType(rr, ptrType$46).Ns));
 41174  			_i++;
 41175  		}
 41176  		$s = -1; return [nss, $ifaceNil];
 41177  		/* */ } return; } if ($f === undefined) { $f = { $blk: Resolver.ptr.prototype.lookupNS }; } $f._i = _i; $f._r$9 = _r$9; $f._ref = _ref; $f._tuple = _tuple; $f.ctx = ctx; $f.err = err; $f.i = i; $f.name = name; $f.nss = nss; $f.r = r; $f.rr = rr; $f.rrs = rrs; $f.$s = $s; $f.$r = $r; return $f;
 41178  	};
 41179  	Resolver.prototype.lookupNS = function(ctx, name) { return this.$val.lookupNS(ctx, name); };
 41180  	Resolver.ptr.prototype.lookupTXT = function(ctx, name) {
 41181  		var _i, _r$9, _ref, _tuple, ctx, err, i, name, r, rr, rrs, txts, $s, $r;
 41182  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _i = $f._i; _r$9 = $f._r$9; _ref = $f._ref; _tuple = $f._tuple; ctx = $f.ctx; err = $f.err; i = $f.i; name = $f.name; r = $f.r; rr = $f.rr; rrs = $f.rrs; txts = $f.txts; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 41183  		r = this;
 41184  		_r$9 = r.lookup(ctx, name, 16); /* */ $s = 1; case 1: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 41185  		_tuple = _r$9;
 41186  		rrs = _tuple[1];
 41187  		err = _tuple[2];
 41188  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 41189  			$s = -1; return [sliceType.nil, err];
 41190  		}
 41191  		txts = $makeSlice(sliceType, rrs.$length);
 41192  		_ref = rrs;
 41193  		_i = 0;
 41194  		while (true) {
 41195  			if (!(_i < _ref.$length)) { break; }
 41196  			i = _i;
 41197  			rr = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
 41198  			((i < 0 || i >= txts.$length) ? ($throwRuntimeError("index out of range"), undefined) : txts.$array[txts.$offset + i] = $assertType(rr, ptrType$47).Txt);
 41199  			_i++;
 41200  		}
 41201  		$s = -1; return [txts, $ifaceNil];
 41202  		/* */ } return; } if ($f === undefined) { $f = { $blk: Resolver.ptr.prototype.lookupTXT }; } $f._i = _i; $f._r$9 = _r$9; $f._ref = _ref; $f._tuple = _tuple; $f.ctx = ctx; $f.err = err; $f.i = i; $f.name = name; $f.r = r; $f.rr = rr; $f.rrs = rrs; $f.txts = txts; $f.$s = $s; $f.$r = $r; return $f;
 41203  	};
 41204  	Resolver.prototype.lookupTXT = function(ctx, name) { return this.$val.lookupTXT(ctx, name); };
 41205  	Resolver.ptr.prototype.lookupAddr = function(ctx, addr) {
 41206  		var _r$10, _r$11, _r$9, _tuple, _v, addr, ctx, err, ok, ptrs, r, $s, $r;
 41207  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$10 = $f._r$10; _r$11 = $f._r$11; _r$9 = $f._r$9; _tuple = $f._tuple; _v = $f._v; addr = $f.addr; ctx = $f.ctx; err = $f.err; ok = $f.ok; ptrs = $f.ptrs; r = $f.r; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 41208  		r = this;
 41209  		if (!(!r.PreferGo)) { _v = false; $s = 3; continue s; }
 41210  		_r$9 = systemConf(); /* */ $s = 4; case 4: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 41211  		_r$10 = _r$9.canUseCgo(); /* */ $s = 5; case 5: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
 41212  		_v = _r$10; case 3:
 41213  		/* */ if (_v) { $s = 1; continue; }
 41214  		/* */ $s = 2; continue;
 41215  		/* if (_v) { */ case 1:
 41216  			_tuple = cgoLookupPTR(ctx, addr);
 41217  			ptrs = _tuple[0];
 41218  			err = _tuple[1];
 41219  			ok = _tuple[2];
 41220  			if (ok) {
 41221  				$s = -1; return [ptrs, err];
 41222  			}
 41223  		/* } */ case 2:
 41224  		_r$11 = r.goLookupPTR(ctx, addr); /* */ $s = 6; case 6: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; }
 41225  		$s = -1; return _r$11;
 41226  		/* */ } return; } if ($f === undefined) { $f = { $blk: Resolver.ptr.prototype.lookupAddr }; } $f._r$10 = _r$10; $f._r$11 = _r$11; $f._r$9 = _r$9; $f._tuple = _tuple; $f._v = _v; $f.addr = addr; $f.ctx = ctx; $f.err = err; $f.ok = ok; $f.ptrs = ptrs; $f.r = r; $f.$s = $s; $f.$r = $r; return $f;
 41227  	};
 41228  	Resolver.prototype.lookupAddr = function(ctx, addr) { return this.$val.lookupAddr(ctx, addr); };
 41229  	HardwareAddr.prototype.String = function() {
 41230  		var _i, _ref, a, b, buf, i;
 41231  		a = this;
 41232  		if (a.$length === 0) {
 41233  			return "";
 41234  		}
 41235  		buf = $makeSlice(sliceType$1, 0, (($imul(a.$length, 3)) - 1 >> 0));
 41236  		_ref = a;
 41237  		_i = 0;
 41238  		while (true) {
 41239  			if (!(_i < _ref.$length)) { break; }
 41240  			i = _i;
 41241  			b = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
 41242  			if (i > 0) {
 41243  				buf = $append(buf, 58);
 41244  			}
 41245  			buf = $append(buf, "0123456789abcdef".charCodeAt((b >>> 4 << 24 >>> 24)));
 41246  			buf = $append(buf, "0123456789abcdef".charCodeAt(((b & 15) >>> 0)));
 41247  			_i++;
 41248  		}
 41249  		return ($bytesToString(buf));
 41250  	};
 41251  	$ptrType(HardwareAddr).prototype.String = function() { return this.$get().String(); };
 41252  	conn.ptr.prototype.ok = function() {
 41253  		var c;
 41254  		c = this;
 41255  		return !(c === ptrType$48.nil) && !(c.fd === ptrType$30.nil);
 41256  	};
 41257  	conn.prototype.ok = function() { return this.$val.ok(); };
 41258  	conn.ptr.prototype.Read = function(b) {
 41259  		var _r$9, _tuple, b, c, err, n, $s, $r;
 41260  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$9 = $f._r$9; _tuple = $f._tuple; b = $f.b; c = $f.c; err = $f.err; n = $f.n; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 41261  		c = this;
 41262  		if (!c.ok()) {
 41263  			$s = -1; return [0, new syscall.Errno(22)];
 41264  		}
 41265  		_r$9 = c.fd.Read(b); /* */ $s = 1; case 1: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 41266  		_tuple = _r$9;
 41267  		n = _tuple[0];
 41268  		err = _tuple[1];
 41269  		if (!($interfaceIsEqual(err, $ifaceNil)) && !($interfaceIsEqual(err, io.EOF))) {
 41270  			err = new OpError.ptr("read", c.fd.net, c.fd.laddr, c.fd.raddr, err);
 41271  		}
 41272  		$s = -1; return [n, err];
 41273  		/* */ } return; } if ($f === undefined) { $f = { $blk: conn.ptr.prototype.Read }; } $f._r$9 = _r$9; $f._tuple = _tuple; $f.b = b; $f.c = c; $f.err = err; $f.n = n; $f.$s = $s; $f.$r = $r; return $f;
 41274  	};
 41275  	conn.prototype.Read = function(b) { return this.$val.Read(b); };
 41276  	conn.ptr.prototype.Write = function(b) {
 41277  		var _r$9, _tuple, b, c, err, n, $s, $r;
 41278  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$9 = $f._r$9; _tuple = $f._tuple; b = $f.b; c = $f.c; err = $f.err; n = $f.n; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 41279  		c = this;
 41280  		if (!c.ok()) {
 41281  			$s = -1; return [0, new syscall.Errno(22)];
 41282  		}
 41283  		_r$9 = c.fd.Write(b); /* */ $s = 1; case 1: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 41284  		_tuple = _r$9;
 41285  		n = _tuple[0];
 41286  		err = _tuple[1];
 41287  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 41288  			err = new OpError.ptr("write", c.fd.net, c.fd.laddr, c.fd.raddr, err);
 41289  		}
 41290  		$s = -1; return [n, err];
 41291  		/* */ } return; } if ($f === undefined) { $f = { $blk: conn.ptr.prototype.Write }; } $f._r$9 = _r$9; $f._tuple = _tuple; $f.b = b; $f.c = c; $f.err = err; $f.n = n; $f.$s = $s; $f.$r = $r; return $f;
 41292  	};
 41293  	conn.prototype.Write = function(b) { return this.$val.Write(b); };
 41294  	conn.ptr.prototype.Close = function() {
 41295  		var _r$9, c, err, $s, $r;
 41296  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$9 = $f._r$9; c = $f.c; err = $f.err; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 41297  		c = this;
 41298  		if (!c.ok()) {
 41299  			$s = -1; return new syscall.Errno(22);
 41300  		}
 41301  		_r$9 = c.fd.Close(); /* */ $s = 1; case 1: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 41302  		err = _r$9;
 41303  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 41304  			err = new OpError.ptr("close", c.fd.net, c.fd.laddr, c.fd.raddr, err);
 41305  		}
 41306  		$s = -1; return err;
 41307  		/* */ } return; } if ($f === undefined) { $f = { $blk: conn.ptr.prototype.Close }; } $f._r$9 = _r$9; $f.c = c; $f.err = err; $f.$s = $s; $f.$r = $r; return $f;
 41308  	};
 41309  	conn.prototype.Close = function() { return this.$val.Close(); };
 41310  	conn.ptr.prototype.LocalAddr = function() {
 41311  		var c;
 41312  		c = this;
 41313  		if (!c.ok()) {
 41314  			return $ifaceNil;
 41315  		}
 41316  		return c.fd.laddr;
 41317  	};
 41318  	conn.prototype.LocalAddr = function() { return this.$val.LocalAddr(); };
 41319  	conn.ptr.prototype.RemoteAddr = function() {
 41320  		var c;
 41321  		c = this;
 41322  		if (!c.ok()) {
 41323  			return $ifaceNil;
 41324  		}
 41325  		return c.fd.raddr;
 41326  	};
 41327  	conn.prototype.RemoteAddr = function() { return this.$val.RemoteAddr(); };
 41328  	conn.ptr.prototype.SetDeadline = function(t) {
 41329  		var c, err, t;
 41330  		c = this;
 41331  		if (!c.ok()) {
 41332  			return new syscall.Errno(22);
 41333  		}
 41334  		err = c.fd.pfd.SetDeadline($clone(t, time.Time));
 41335  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 41336  			return new OpError.ptr("set", c.fd.net, $ifaceNil, c.fd.laddr, err);
 41337  		}
 41338  		return $ifaceNil;
 41339  	};
 41340  	conn.prototype.SetDeadline = function(t) { return this.$val.SetDeadline(t); };
 41341  	conn.ptr.prototype.SetReadDeadline = function(t) {
 41342  		var c, err, t;
 41343  		c = this;
 41344  		if (!c.ok()) {
 41345  			return new syscall.Errno(22);
 41346  		}
 41347  		err = c.fd.pfd.SetReadDeadline($clone(t, time.Time));
 41348  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 41349  			return new OpError.ptr("set", c.fd.net, $ifaceNil, c.fd.laddr, err);
 41350  		}
 41351  		return $ifaceNil;
 41352  	};
 41353  	conn.prototype.SetReadDeadline = function(t) { return this.$val.SetReadDeadline(t); };
 41354  	conn.ptr.prototype.SetWriteDeadline = function(t) {
 41355  		var c, err, t;
 41356  		c = this;
 41357  		if (!c.ok()) {
 41358  			return new syscall.Errno(22);
 41359  		}
 41360  		err = c.fd.pfd.SetWriteDeadline($clone(t, time.Time));
 41361  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 41362  			return new OpError.ptr("set", c.fd.net, $ifaceNil, c.fd.laddr, err);
 41363  		}
 41364  		return $ifaceNil;
 41365  	};
 41366  	conn.prototype.SetWriteDeadline = function(t) { return this.$val.SetWriteDeadline(t); };
 41367  	conn.ptr.prototype.SetReadBuffer = function(bytes) {
 41368  		var _r$9, bytes, c, err, $s, $r;
 41369  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$9 = $f._r$9; bytes = $f.bytes; c = $f.c; err = $f.err; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 41370  		c = this;
 41371  		if (!c.ok()) {
 41372  			$s = -1; return new syscall.Errno(22);
 41373  		}
 41374  		_r$9 = setReadBuffer(c.fd, bytes); /* */ $s = 1; case 1: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 41375  		err = _r$9;
 41376  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 41377  			$s = -1; return new OpError.ptr("set", c.fd.net, $ifaceNil, c.fd.laddr, err);
 41378  		}
 41379  		$s = -1; return $ifaceNil;
 41380  		/* */ } return; } if ($f === undefined) { $f = { $blk: conn.ptr.prototype.SetReadBuffer }; } $f._r$9 = _r$9; $f.bytes = bytes; $f.c = c; $f.err = err; $f.$s = $s; $f.$r = $r; return $f;
 41381  	};
 41382  	conn.prototype.SetReadBuffer = function(bytes) { return this.$val.SetReadBuffer(bytes); };
 41383  	conn.ptr.prototype.SetWriteBuffer = function(bytes) {
 41384  		var _r$9, bytes, c, err, $s, $r;
 41385  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$9 = $f._r$9; bytes = $f.bytes; c = $f.c; err = $f.err; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 41386  		c = this;
 41387  		if (!c.ok()) {
 41388  			$s = -1; return new syscall.Errno(22);
 41389  		}
 41390  		_r$9 = setWriteBuffer(c.fd, bytes); /* */ $s = 1; case 1: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 41391  		err = _r$9;
 41392  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 41393  			$s = -1; return new OpError.ptr("set", c.fd.net, $ifaceNil, c.fd.laddr, err);
 41394  		}
 41395  		$s = -1; return $ifaceNil;
 41396  		/* */ } return; } if ($f === undefined) { $f = { $blk: conn.ptr.prototype.SetWriteBuffer }; } $f._r$9 = _r$9; $f.bytes = bytes; $f.c = c; $f.err = err; $f.$s = $s; $f.$r = $r; return $f;
 41397  	};
 41398  	conn.prototype.SetWriteBuffer = function(bytes) { return this.$val.SetWriteBuffer(bytes); };
 41399  	conn.ptr.prototype.File = function() {
 41400  		var _r$9, _tuple, c, err, f, $s, $r;
 41401  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$9 = $f._r$9; _tuple = $f._tuple; c = $f.c; err = $f.err; f = $f.f; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 41402  		f = ptrType$32.nil;
 41403  		err = $ifaceNil;
 41404  		c = this;
 41405  		_r$9 = c.fd.dup(); /* */ $s = 1; case 1: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 41406  		_tuple = _r$9;
 41407  		f = _tuple[0];
 41408  		err = _tuple[1];
 41409  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 41410  			err = new OpError.ptr("file", c.fd.net, c.fd.laddr, c.fd.raddr, err);
 41411  		}
 41412  		$s = -1; return [f, err];
 41413  		/* */ } return; } if ($f === undefined) { $f = { $blk: conn.ptr.prototype.File }; } $f._r$9 = _r$9; $f._tuple = _tuple; $f.c = c; $f.err = err; $f.f = f; $f.$s = $s; $f.$r = $r; return $f;
 41414  	};
 41415  	conn.prototype.File = function() { return this.$val.File(); };
 41416  	mapErr = function(err) {
 41417  		var _1, err;
 41418  		_1 = err;
 41419  		if ($interfaceIsEqual(_1, (context.Canceled))) {
 41420  			return errCanceled;
 41421  		} else if ($interfaceIsEqual(_1, (context.DeadlineExceeded))) {
 41422  			return poll.ErrTimeout;
 41423  		} else {
 41424  			return err;
 41425  		}
 41426  	};
 41427  	OpError.ptr.prototype.Error = function() {
 41428  		var _r$10, _r$11, _r$9, e, s, $s, $r;
 41429  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$10 = $f._r$10; _r$11 = $f._r$11; _r$9 = $f._r$9; e = $f.e; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 41430  		e = this;
 41431  		if (e === ptrType$16.nil) {
 41432  			$s = -1; return "<nil>";
 41433  		}
 41434  		s = e.Op;
 41435  		if (!(e.Net === "")) {
 41436  			s = s + (" " + e.Net);
 41437  		}
 41438  		/* */ if (!($interfaceIsEqual(e.Source, $ifaceNil))) { $s = 1; continue; }
 41439  		/* */ $s = 2; continue;
 41440  		/* if (!($interfaceIsEqual(e.Source, $ifaceNil))) { */ case 1:
 41441  			_r$9 = e.Source.String(); /* */ $s = 3; case 3: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 41442  			s = s + (" " + _r$9);
 41443  		/* } */ case 2:
 41444  		/* */ if (!($interfaceIsEqual(e.Addr, $ifaceNil))) { $s = 4; continue; }
 41445  		/* */ $s = 5; continue;
 41446  		/* if (!($interfaceIsEqual(e.Addr, $ifaceNil))) { */ case 4:
 41447  			if (!($interfaceIsEqual(e.Source, $ifaceNil))) {
 41448  				s = s + ("->");
 41449  			} else {
 41450  				s = s + (" ");
 41451  			}
 41452  			_r$10 = e.Addr.String(); /* */ $s = 6; case 6: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
 41453  			s = s + (_r$10);
 41454  		/* } */ case 5:
 41455  		_r$11 = e.Err.Error(); /* */ $s = 7; case 7: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; }
 41456  		s = s + (": " + _r$11);
 41457  		$s = -1; return s;
 41458  		/* */ } return; } if ($f === undefined) { $f = { $blk: OpError.ptr.prototype.Error }; } $f._r$10 = _r$10; $f._r$11 = _r$11; $f._r$9 = _r$9; $f.e = e; $f.s = s; $f.$s = $s; $f.$r = $r; return $f;
 41459  	};
 41460  	OpError.prototype.Error = function() { return this.$val.Error(); };
 41461  	OpError.ptr.prototype.Timeout = function() {
 41462  		var _r$10, _r$9, _tuple, _tuple$1, _tuple$2, _v, _v$1, e, ne, ok, ok$1, ok$2, t, t$1, $s, $r;
 41463  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$10 = $f._r$10; _r$9 = $f._r$9; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _v = $f._v; _v$1 = $f._v$1; e = $f.e; ne = $f.ne; ok = $f.ok; ok$1 = $f.ok$1; ok$2 = $f.ok$2; t = $f.t; t$1 = $f.t$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 41464  		e = this;
 41465  		_tuple = $assertType(e.Err, ptrType$49, true);
 41466  		ne = _tuple[0];
 41467  		ok = _tuple[1];
 41468  		/* */ if (ok) { $s = 1; continue; }
 41469  		/* */ $s = 2; continue;
 41470  		/* if (ok) { */ case 1:
 41471  			_tuple$1 = $assertType(ne.Err, timeout, true);
 41472  			t = _tuple$1[0];
 41473  			ok$1 = _tuple$1[1];
 41474  			if (!(ok$1)) { _v = false; $s = 3; continue s; }
 41475  			_r$9 = t.Timeout(); /* */ $s = 4; case 4: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 41476  			_v = _r$9; case 3:
 41477  			$s = -1; return _v;
 41478  		/* } */ case 2:
 41479  		_tuple$2 = $assertType(e.Err, timeout, true);
 41480  		t$1 = _tuple$2[0];
 41481  		ok$2 = _tuple$2[1];
 41482  		if (!(ok$2)) { _v$1 = false; $s = 5; continue s; }
 41483  		_r$10 = t$1.Timeout(); /* */ $s = 6; case 6: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
 41484  		_v$1 = _r$10; case 5:
 41485  		$s = -1; return _v$1;
 41486  		/* */ } return; } if ($f === undefined) { $f = { $blk: OpError.ptr.prototype.Timeout }; } $f._r$10 = _r$10; $f._r$9 = _r$9; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._v = _v; $f._v$1 = _v$1; $f.e = e; $f.ne = ne; $f.ok = ok; $f.ok$1 = ok$1; $f.ok$2 = ok$2; $f.t = t; $f.t$1 = t$1; $f.$s = $s; $f.$r = $r; return $f;
 41487  	};
 41488  	OpError.prototype.Timeout = function() { return this.$val.Timeout(); };
 41489  	OpError.ptr.prototype.Temporary = function() {
 41490  		var _r$10, _r$9, _tuple, _tuple$1, _tuple$2, _v, _v$1, e, ne, ok, ok$1, ok$2, t, t$1, $s, $r;
 41491  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$10 = $f._r$10; _r$9 = $f._r$9; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _v = $f._v; _v$1 = $f._v$1; e = $f.e; ne = $f.ne; ok = $f.ok; ok$1 = $f.ok$1; ok$2 = $f.ok$2; t = $f.t; t$1 = $f.t$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 41492  		e = this;
 41493  		_tuple = $assertType(e.Err, ptrType$49, true);
 41494  		ne = _tuple[0];
 41495  		ok = _tuple[1];
 41496  		/* */ if (ok) { $s = 1; continue; }
 41497  		/* */ $s = 2; continue;
 41498  		/* if (ok) { */ case 1:
 41499  			_tuple$1 = $assertType(ne.Err, temporary, true);
 41500  			t = _tuple$1[0];
 41501  			ok$1 = _tuple$1[1];
 41502  			if (!(ok$1)) { _v = false; $s = 3; continue s; }
 41503  			_r$9 = t.Temporary(); /* */ $s = 4; case 4: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 41504  			_v = _r$9; case 3:
 41505  			$s = -1; return _v;
 41506  		/* } */ case 2:
 41507  		_tuple$2 = $assertType(e.Err, temporary, true);
 41508  		t$1 = _tuple$2[0];
 41509  		ok$2 = _tuple$2[1];
 41510  		if (!(ok$2)) { _v$1 = false; $s = 5; continue s; }
 41511  		_r$10 = t$1.Temporary(); /* */ $s = 6; case 6: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
 41512  		_v$1 = _r$10; case 5:
 41513  		$s = -1; return _v$1;
 41514  		/* */ } return; } if ($f === undefined) { $f = { $blk: OpError.ptr.prototype.Temporary }; } $f._r$10 = _r$10; $f._r$9 = _r$9; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._v = _v; $f._v$1 = _v$1; $f.e = e; $f.ne = ne; $f.ok = ok; $f.ok$1 = ok$1; $f.ok$2 = ok$2; $f.t = t; $f.t$1 = t$1; $f.$s = $s; $f.$r = $r; return $f;
 41515  	};
 41516  	OpError.prototype.Temporary = function() { return this.$val.Temporary(); };
 41517  	ParseError.ptr.prototype.Error = function() {
 41518  		var e;
 41519  		e = this;
 41520  		return "invalid " + e.Type + ": " + e.Text;
 41521  	};
 41522  	ParseError.prototype.Error = function() { return this.$val.Error(); };
 41523  	AddrError.ptr.prototype.Error = function() {
 41524  		var e, s;
 41525  		e = this;
 41526  		if (e === ptrType$50.nil) {
 41527  			return "<nil>";
 41528  		}
 41529  		s = e.Err;
 41530  		if (!(e.Addr === "")) {
 41531  			s = "address " + e.Addr + ": " + s;
 41532  		}
 41533  		return s;
 41534  	};
 41535  	AddrError.prototype.Error = function() { return this.$val.Error(); };
 41536  	AddrError.ptr.prototype.Timeout = function() {
 41537  		var e;
 41538  		e = this;
 41539  		return false;
 41540  	};
 41541  	AddrError.prototype.Timeout = function() { return this.$val.Timeout(); };
 41542  	AddrError.ptr.prototype.Temporary = function() {
 41543  		var e;
 41544  		e = this;
 41545  		return false;
 41546  	};
 41547  	AddrError.prototype.Temporary = function() { return this.$val.Temporary(); };
 41548  	UnknownNetworkError.prototype.Error = function() {
 41549  		var e;
 41550  		e = this.$val;
 41551  		return "unknown network " + (e);
 41552  	};
 41553  	$ptrType(UnknownNetworkError).prototype.Error = function() { return new UnknownNetworkError(this.$get()).Error(); };
 41554  	UnknownNetworkError.prototype.Timeout = function() {
 41555  		var e;
 41556  		e = this.$val;
 41557  		return false;
 41558  	};
 41559  	$ptrType(UnknownNetworkError).prototype.Timeout = function() { return new UnknownNetworkError(this.$get()).Timeout(); };
 41560  	UnknownNetworkError.prototype.Temporary = function() {
 41561  		var e;
 41562  		e = this.$val;
 41563  		return false;
 41564  	};
 41565  	$ptrType(UnknownNetworkError).prototype.Temporary = function() { return new UnknownNetworkError(this.$get()).Temporary(); };
 41566  	DNSError.ptr.prototype.Error = function() {
 41567  		var e, s;
 41568  		e = this;
 41569  		if (e === ptrType$15.nil) {
 41570  			return "<nil>";
 41571  		}
 41572  		s = "lookup " + e.Name;
 41573  		if (!(e.Server === "")) {
 41574  			s = s + (" on " + e.Server);
 41575  		}
 41576  		s = s + (": " + e.Err);
 41577  		return s;
 41578  	};
 41579  	DNSError.prototype.Error = function() { return this.$val.Error(); };
 41580  	DNSError.ptr.prototype.Timeout = function() {
 41581  		var e;
 41582  		e = this;
 41583  		return e.IsTimeout;
 41584  	};
 41585  	DNSError.prototype.Timeout = function() { return this.$val.Timeout(); };
 41586  	DNSError.ptr.prototype.Temporary = function() {
 41587  		var e;
 41588  		e = this;
 41589  		return e.IsTimeout || e.IsTemporary;
 41590  	};
 41591  	DNSError.prototype.Temporary = function() { return this.$val.Temporary(); };
 41592  	genericReadFrom = function(w, r) {
 41593  		var _r$9, _tuple, err, n, r, w, x, $s, $r;
 41594  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$9 = $f._r$9; _tuple = $f._tuple; err = $f.err; n = $f.n; r = $f.r; w = $f.w; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 41595  		n = new $Int64(0, 0);
 41596  		err = $ifaceNil;
 41597  		_r$9 = io.Copy((x = new writerOnly.ptr(w), new x.constructor.elem(x)), r); /* */ $s = 1; case 1: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 41598  		_tuple = _r$9;
 41599  		n = _tuple[0];
 41600  		err = _tuple[1];
 41601  		$s = -1; return [n, err];
 41602  		/* */ } return; } if ($f === undefined) { $f = { $blk: genericReadFrom }; } $f._r$9 = _r$9; $f._tuple = _tuple; $f.err = err; $f.n = n; $f.r = r; $f.w = w; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
 41603  	};
 41604  	$ptrType(Buffers).prototype.WriteTo = function(w) {
 41605  		var _i, _r$10, _r$9, _ref, _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, _tuple$1, _tuple$2, b, err, err$1, n, nb, ok, v, w, wv, x, $s, $r;
 41606  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _i = $f._i; _r$10 = $f._r$10; _r$9 = $f._r$9; _ref = $f._ref; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; b = $f.b; err = $f.err; err$1 = $f.err$1; n = $f.n; nb = $f.nb; ok = $f.ok; v = $f.v; w = $f.w; wv = $f.wv; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 41607  		n = new $Int64(0, 0);
 41608  		err = $ifaceNil;
 41609  		v = this;
 41610  		_tuple = $assertType(w, buffersWriter, true);
 41611  		wv = _tuple[0];
 41612  		ok = _tuple[1];
 41613  		/* */ if (ok) { $s = 1; continue; }
 41614  		/* */ $s = 2; continue;
 41615  		/* if (ok) { */ case 1:
 41616  			_r$9 = wv.writeBuffers(v); /* */ $s = 3; case 3: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 41617  			_tuple$1 = _r$9;
 41618  			n = _tuple$1[0];
 41619  			err = _tuple$1[1];
 41620  			$s = -1; return [n, err];
 41621  		/* } */ case 2:
 41622  		_ref = v.$get();
 41623  		_i = 0;
 41624  		/* while (true) { */ case 4:
 41625  			/* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 5; continue; }
 41626  			b = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
 41627  			_r$10 = w.Write(b); /* */ $s = 6; case 6: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
 41628  			_tuple$2 = _r$10;
 41629  			nb = _tuple$2[0];
 41630  			err$1 = _tuple$2[1];
 41631  			n = (x = (new $Int64(0, nb)), new $Int64(n.$high + x.$high, n.$low + x.$low));
 41632  			if (!($interfaceIsEqual(err$1, $ifaceNil))) {
 41633  				v.consume(n);
 41634  				_tmp = n;
 41635  				_tmp$1 = err$1;
 41636  				n = _tmp;
 41637  				err = _tmp$1;
 41638  				$s = -1; return [n, err];
 41639  			}
 41640  			_i++;
 41641  		/* } */ $s = 4; continue; case 5:
 41642  		v.consume(n);
 41643  		_tmp$2 = n;
 41644  		_tmp$3 = $ifaceNil;
 41645  		n = _tmp$2;
 41646  		err = _tmp$3;
 41647  		$s = -1; return [n, err];
 41648  		/* */ } return; } if ($f === undefined) { $f = { $blk: $ptrType(Buffers).prototype.WriteTo }; } $f._i = _i; $f._r$10 = _r$10; $f._r$9 = _r$9; $f._ref = _ref; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f.b = b; $f.err = err; $f.err$1 = err$1; $f.n = n; $f.nb = nb; $f.ok = ok; $f.v = v; $f.w = w; $f.wv = wv; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
 41649  	};
 41650  	$ptrType(Buffers).prototype.Read = function(p) {
 41651  		var err, n, n0, p, v, x;
 41652  		n = 0;
 41653  		err = $ifaceNil;
 41654  		v = this;
 41655  		while (true) {
 41656  			if (!(p.$length > 0 && v.$get().$length > 0)) { break; }
 41657  			n0 = $copySlice(p, (x = v.$get(), (0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0])));
 41658  			v.consume((new $Int64(0, n0)));
 41659  			p = $subslice(p, n0);
 41660  			n = n + (n0) >> 0;
 41661  		}
 41662  		if (v.$get().$length === 0) {
 41663  			err = io.EOF;
 41664  		}
 41665  		return [n, err];
 41666  	};
 41667  	$ptrType(Buffers).prototype.consume = function(n) {
 41668  		var ln0, n, v, x, x$1, x$2, x$3;
 41669  		v = this;
 41670  		while (true) {
 41671  			if (!(v.$get().$length > 0)) { break; }
 41672  			ln0 = (new $Int64(0, (x = v.$get(), (0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0])).$length));
 41673  			if ((ln0.$high > n.$high || (ln0.$high === n.$high && ln0.$low > n.$low))) {
 41674  				(x$2 = v.$get(), (0 >= x$2.$length ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + 0] = $subslice((x$1 = v.$get(), (0 >= x$1.$length ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + 0])), $flatten64(n))));
 41675  				return;
 41676  			}
 41677  			n = (x$3 = ln0, new $Int64(n.$high - x$3.$high, n.$low - x$3.$low));
 41678  			v.$set($subslice((v.$get()), 1));
 41679  		}
 41680  	};
 41681  	nssSource.ptr.prototype.standardCriteria = function() {
 41682  		var _i, _ref, crit, i, s;
 41683  		s = this;
 41684  		_ref = s.criteria;
 41685  		_i = 0;
 41686  		while (true) {
 41687  			if (!(_i < _ref.$length)) { break; }
 41688  			i = _i;
 41689  			crit = $clone(((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]), nssCriterion);
 41690  			if (!$clone(crit, nssCriterion).standardStatusAction(i === (s.criteria.$length - 1 >> 0))) {
 41691  				return false;
 41692  			}
 41693  			_i++;
 41694  		}
 41695  		return true;
 41696  	};
 41697  	nssSource.prototype.standardCriteria = function() { return this.$val.standardCriteria(); };
 41698  	nssCriterion.ptr.prototype.standardStatusAction = function(last$1) {
 41699  		var _1, c, def, last$1;
 41700  		c = this;
 41701  		if (c.negate) {
 41702  			return false;
 41703  		}
 41704  		def = "";
 41705  		_1 = c.status;
 41706  		if (_1 === ("success")) {
 41707  			def = "return";
 41708  		} else if (_1 === ("notfound") || _1 === ("unavail") || _1 === ("tryagain")) {
 41709  			def = "continue";
 41710  		} else {
 41711  			return false;
 41712  		}
 41713  		if (last$1 && c.action === "return") {
 41714  			return true;
 41715  		}
 41716  		return c.action === def;
 41717  	};
 41718  	nssCriterion.prototype.standardStatusAction = function(last$1) { return this.$val.standardStatusAction(last$1); };
 41719  	parseNSSConfFile = function(file$1) {
 41720  		var _r$10, _r$9, _tuple, err, f, file$1, $s, $deferred, $r;
 41721  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$10 = $f._r$10; _r$9 = $f._r$9; _tuple = $f._tuple; err = $f.err; f = $f.f; file$1 = $f.file$1; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
 41722  		_r$9 = os.Open(file$1); /* */ $s = 1; case 1: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 41723  		_tuple = _r$9;
 41724  		f = _tuple[0];
 41725  		err = _tuple[1];
 41726  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 41727  			$s = -1; return new nssConf.ptr(err, false);
 41728  		}
 41729  		$deferred.push([$methodVal(f, "Close"), []]);
 41730  		_r$10 = parseNSSConf(f); /* */ $s = 2; case 2: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
 41731  		$s = -1; return _r$10;
 41732  		/* */ } return; } } catch(err) { $err = err; $s = -1; return ptrType$2.nil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: parseNSSConfFile }; } $f._r$10 = _r$10; $f._r$9 = _r$9; $f._tuple = _tuple; $f.err = err; $f.f = f; $f.file$1 = file$1; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
 41733  	};
 41734  	parseNSSConf = function(r) {
 41735  		var _r$10, _r$9, _tuple, conf$1, err, r, slurp, $s, $r;
 41736  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$10 = $f._r$10; _r$9 = $f._r$9; _tuple = $f._tuple; conf$1 = $f.conf$1; err = $f.err; r = $f.r; slurp = $f.slurp; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 41737  		conf$1 = [conf$1];
 41738  		_r$9 = readFull(r); /* */ $s = 1; case 1: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 41739  		_tuple = _r$9;
 41740  		slurp = _tuple[0];
 41741  		err = _tuple[1];
 41742  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 41743  			$s = -1; return new nssConf.ptr(err, false);
 41744  		}
 41745  		conf$1[0] = new nssConf.ptr($ifaceNil, false);
 41746  		_r$10 = foreachLine(slurp, (function(conf$1) { return function $b(line) {
 41747  			var _entry, _key, _r$10, _tuple$1, bclose, colon, criteria, db, err$1, line, sp, src, srcs, $s, $r;
 41748  			/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _entry = $f._entry; _key = $f._key; _r$10 = $f._r$10; _tuple$1 = $f._tuple$1; bclose = $f.bclose; colon = $f.colon; criteria = $f.criteria; db = $f.db; err$1 = $f.err$1; line = $f.line; sp = $f.sp; src = $f.src; srcs = $f.srcs; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 41749  			line = trimSpace(removeComment(line));
 41750  			if (line.$length === 0) {
 41751  				$s = -1; return $ifaceNil;
 41752  			}
 41753  			colon = bytesIndexByte(line, 58);
 41754  			if (colon === -1) {
 41755  				$s = -1; return errors.New("no colon on line");
 41756  			}
 41757  			db = ($bytesToString(trimSpace($subslice(line, 0, colon))));
 41758  			srcs = $subslice(line, (colon + 1 >> 0));
 41759  			/* while (true) { */ case 1:
 41760  				srcs = trimSpace(srcs);
 41761  				if (srcs.$length === 0) {
 41762  					/* break; */ $s = 2; continue;
 41763  				}
 41764  				sp = bytesIndexByte(srcs, 32);
 41765  				src = "";
 41766  				if (sp === -1) {
 41767  					src = ($bytesToString(srcs));
 41768  					srcs = sliceType$1.nil;
 41769  				} else {
 41770  					src = ($bytesToString($subslice(srcs, 0, sp)));
 41771  					srcs = trimSpace($subslice(srcs, (sp + 1 >> 0)));
 41772  				}
 41773  				criteria = sliceType$16.nil;
 41774  				/* */ if (srcs.$length > 0 && ((0 >= srcs.$length ? ($throwRuntimeError("index out of range"), undefined) : srcs.$array[srcs.$offset + 0]) === 91)) { $s = 3; continue; }
 41775  				/* */ $s = 4; continue;
 41776  				/* if (srcs.$length > 0 && ((0 >= srcs.$length ? ($throwRuntimeError("index out of range"), undefined) : srcs.$array[srcs.$offset + 0]) === 91)) { */ case 3:
 41777  					bclose = bytesIndexByte(srcs, 93);
 41778  					if (bclose === -1) {
 41779  						$s = -1; return errors.New("unclosed criterion bracket");
 41780  					}
 41781  					err$1 = $ifaceNil;
 41782  					_r$10 = parseCriteria($subslice(srcs, 1, bclose)); /* */ $s = 5; case 5: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
 41783  					_tuple$1 = _r$10;
 41784  					criteria = _tuple$1[0];
 41785  					err$1 = _tuple$1[1];
 41786  					if (!($interfaceIsEqual(err$1, $ifaceNil))) {
 41787  						$s = -1; return errors.New("invalid criteria: " + ($bytesToString($subslice(srcs, 1, bclose))));
 41788  					}
 41789  					srcs = $subslice(srcs, (bclose + 1 >> 0));
 41790  				/* } */ case 4:
 41791  				if (conf$1[0].sources === false) {
 41792  					conf$1[0].sources = {};
 41793  				}
 41794  				_key = db; (conf$1[0].sources || $throwRuntimeError("assignment to entry in nil map"))[$String.keyFor(_key)] = { k: _key, v: $append((_entry = conf$1[0].sources[$String.keyFor(db)], _entry !== undefined ? _entry.v : sliceType$5.nil), new nssSource.ptr(src, criteria)) };
 41795  			/* } */ $s = 1; continue; case 2:
 41796  			$s = -1; return $ifaceNil;
 41797  			/* */ } return; } if ($f === undefined) { $f = { $blk: $b }; } $f._entry = _entry; $f._key = _key; $f._r$10 = _r$10; $f._tuple$1 = _tuple$1; $f.bclose = bclose; $f.colon = colon; $f.criteria = criteria; $f.db = db; $f.err$1 = err$1; $f.line = line; $f.sp = sp; $f.src = src; $f.srcs = srcs; $f.$s = $s; $f.$r = $r; return $f;
 41798  		}; })(conf$1)); /* */ $s = 2; case 2: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
 41799  		conf$1[0].err = _r$10;
 41800  		$s = -1; return conf$1[0];
 41801  		/* */ } return; } if ($f === undefined) { $f = { $blk: parseNSSConf }; } $f._r$10 = _r$10; $f._r$9 = _r$9; $f._tuple = _tuple; $f.conf$1 = conf$1; $f.err = err; $f.r = r; $f.slurp = slurp; $f.$s = $s; $f.$r = $r; return $f;
 41802  	};
 41803  	parseCriteria = function(x) {
 41804  		var _r$9, c, err, x, $s, $r;
 41805  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$9 = $f._r$9; c = $f.c; err = $f.err; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 41806  		c = [c];
 41807  		c[0] = sliceType$16.nil;
 41808  		err = $ifaceNil;
 41809  		_r$9 = foreachField(x, (function(c) { return function(f) {
 41810  			var eq, f, not;
 41811  			not = false;
 41812  			if (f.$length > 0 && ((0 >= f.$length ? ($throwRuntimeError("index out of range"), undefined) : f.$array[f.$offset + 0]) === 33)) {
 41813  				not = true;
 41814  				f = $subslice(f, 1);
 41815  			}
 41816  			if (f.$length < 3) {
 41817  				return errors.New("criterion too short");
 41818  			}
 41819  			eq = bytesIndexByte(f, 61);
 41820  			if (eq === -1) {
 41821  				return errors.New("criterion lacks equal sign");
 41822  			}
 41823  			lowerASCIIBytes(f);
 41824  			c[0] = $append(c[0], new nssCriterion.ptr(not, ($bytesToString($subslice(f, 0, eq))), ($bytesToString($subslice(f, (eq + 1 >> 0))))));
 41825  			return $ifaceNil;
 41826  		}; })(c)); /* */ $s = 1; case 1: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 41827  		err = _r$9;
 41828  		$s = -1; return [c[0], err];
 41829  		/* */ } return; } if ($f === undefined) { $f = { $blk: parseCriteria }; } $f._r$9 = _r$9; $f.c = c; $f.err = err; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
 41830  	};
 41831  	file.ptr.prototype.close = function() {
 41832  		var _r$9, f, $s, $r;
 41833  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$9 = $f._r$9; f = $f.f; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 41834  		f = this;
 41835  		_r$9 = f.file.Close(); /* */ $s = 1; case 1: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 41836  		_r$9;
 41837  		$s = -1; return;
 41838  		/* */ } return; } if ($f === undefined) { $f = { $blk: file.ptr.prototype.close }; } $f._r$9 = _r$9; $f.f = f; $f.$s = $s; $f.$r = $r; return $f;
 41839  	};
 41840  	file.prototype.close = function() { return this.$val.close(); };
 41841  	file.ptr.prototype.getLineFromData = function() {
 41842  		var data, f, i, n, ok, s;
 41843  		s = "";
 41844  		ok = false;
 41845  		f = this;
 41846  		data = f.data;
 41847  		i = 0;
 41848  		i = 0;
 41849  		while (true) {
 41850  			if (!(i < data.$length)) { break; }
 41851  			if (((i < 0 || i >= data.$length) ? ($throwRuntimeError("index out of range"), undefined) : data.$array[data.$offset + i]) === 10) {
 41852  				s = ($bytesToString($subslice(data, 0, i)));
 41853  				ok = true;
 41854  				i = i + (1) >> 0;
 41855  				n = data.$length - i >> 0;
 41856  				$copySlice($subslice(data, 0), $subslice(data, i));
 41857  				f.data = $subslice(data, 0, n);
 41858  				return [s, ok];
 41859  			}
 41860  			i = i + (1) >> 0;
 41861  		}
 41862  		if (f.atEOF && f.data.$length > 0) {
 41863  			s = ($bytesToString(data));
 41864  			f.data = $subslice(f.data, 0, 0);
 41865  			ok = true;
 41866  		}
 41867  		return [s, ok];
 41868  	};
 41869  	file.prototype.getLineFromData = function() { return this.$val.getLineFromData(); };
 41870  	file.ptr.prototype.readLine = function() {
 41871  		var _r$9, _tuple, _tuple$1, _tuple$2, err, f, ln, n, ok, s, $s, $r;
 41872  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$9 = $f._r$9; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; err = $f.err; f = $f.f; ln = $f.ln; n = $f.n; ok = $f.ok; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 41873  		s = "";
 41874  		ok = false;
 41875  		f = this;
 41876  		_tuple = f.getLineFromData();
 41877  		s = _tuple[0];
 41878  		ok = _tuple[1];
 41879  		if (ok) {
 41880  			$s = -1; return [s, ok];
 41881  		}
 41882  		/* */ if (f.data.$length < f.data.$capacity) { $s = 1; continue; }
 41883  		/* */ $s = 2; continue;
 41884  		/* if (f.data.$length < f.data.$capacity) { */ case 1:
 41885  			ln = f.data.$length;
 41886  			_r$9 = io.ReadFull(f.file, $subslice(f.data, ln, f.data.$capacity)); /* */ $s = 3; case 3: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 41887  			_tuple$1 = _r$9;
 41888  			n = _tuple$1[0];
 41889  			err = _tuple$1[1];
 41890  			if (n >= 0) {
 41891  				f.data = $subslice(f.data, 0, (ln + n >> 0));
 41892  			}
 41893  			if ($interfaceIsEqual(err, io.EOF) || $interfaceIsEqual(err, io.ErrUnexpectedEOF)) {
 41894  				f.atEOF = true;
 41895  			}
 41896  		/* } */ case 2:
 41897  		_tuple$2 = f.getLineFromData();
 41898  		s = _tuple$2[0];
 41899  		ok = _tuple$2[1];
 41900  		$s = -1; return [s, ok];
 41901  		/* */ } return; } if ($f === undefined) { $f = { $blk: file.ptr.prototype.readLine }; } $f._r$9 = _r$9; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f.err = err; $f.f = f; $f.ln = ln; $f.n = n; $f.ok = ok; $f.s = s; $f.$s = $s; $f.$r = $r; return $f;
 41902  	};
 41903  	file.prototype.readLine = function() { return this.$val.readLine(); };
 41904  	open = function(name) {
 41905  		var _r$9, _tuple, err, fd, name, $s, $r;
 41906  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$9 = $f._r$9; _tuple = $f._tuple; err = $f.err; fd = $f.fd; name = $f.name; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 41907  		_r$9 = os.Open(name); /* */ $s = 1; case 1: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 41908  		_tuple = _r$9;
 41909  		fd = _tuple[0];
 41910  		err = _tuple[1];
 41911  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 41912  			$s = -1; return [ptrType$36.nil, err];
 41913  		}
 41914  		$s = -1; return [new file.ptr(fd, $makeSlice(sliceType$1, 0, 65536), false), $ifaceNil];
 41915  		/* */ } return; } if ($f === undefined) { $f = { $blk: open }; } $f._r$9 = _r$9; $f._tuple = _tuple; $f.err = err; $f.fd = fd; $f.name = name; $f.$s = $s; $f.$r = $r; return $f;
 41916  	};
 41917  	stat = function(name) {
 41918  		var _r$10, _r$11, _r$9, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tuple, err, mtime, name, size, st, $s, $r;
 41919  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$10 = $f._r$10; _r$11 = $f._r$11; _r$9 = $f._r$9; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tmp$4 = $f._tmp$4; _tmp$5 = $f._tmp$5; _tuple = $f._tuple; err = $f.err; mtime = $f.mtime; name = $f.name; size = $f.size; st = $f.st; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 41920  		mtime = new time.Time.ptr(new $Uint64(0, 0), new $Int64(0, 0), ptrType.nil);
 41921  		size = new $Int64(0, 0);
 41922  		err = $ifaceNil;
 41923  		_r$9 = os.Stat(name); /* */ $s = 1; case 1: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 41924  		_tuple = _r$9;
 41925  		st = _tuple[0];
 41926  		err = _tuple[1];
 41927  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 41928  			_tmp = new time.Time.ptr(new $Uint64(0, 0), new $Int64(0, 0), ptrType.nil);
 41929  			_tmp$1 = new $Int64(0, 0);
 41930  			_tmp$2 = err;
 41931  			time.Time.copy(mtime, _tmp);
 41932  			size = _tmp$1;
 41933  			err = _tmp$2;
 41934  			$s = -1; return [mtime, size, err];
 41935  		}
 41936  		_r$10 = st.ModTime(); /* */ $s = 2; case 2: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
 41937  		_tmp$3 = $clone(_r$10, time.Time);
 41938  		_r$11 = st.Size(); /* */ $s = 3; case 3: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; }
 41939  		_tmp$4 = _r$11;
 41940  		_tmp$5 = $ifaceNil;
 41941  		time.Time.copy(mtime, _tmp$3);
 41942  		size = _tmp$4;
 41943  		err = _tmp$5;
 41944  		$s = -1; return [mtime, size, err];
 41945  		/* */ } return; } if ($f === undefined) { $f = { $blk: stat }; } $f._r$10 = _r$10; $f._r$11 = _r$11; $f._r$9 = _r$9; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tmp$4 = _tmp$4; $f._tmp$5 = _tmp$5; $f._tuple = _tuple; $f.err = err; $f.mtime = mtime; $f.name = name; $f.size = size; $f.st = st; $f.$s = $s; $f.$r = $r; return $f;
 41946  	};
 41947  	countAnyByte = function(s, t) {
 41948  		var i, n, s, t;
 41949  		n = 0;
 41950  		i = 0;
 41951  		while (true) {
 41952  			if (!(i < s.length)) { break; }
 41953  			if (byteIndex(t, s.charCodeAt(i)) >= 0) {
 41954  				n = n + (1) >> 0;
 41955  			}
 41956  			i = i + (1) >> 0;
 41957  		}
 41958  		return n;
 41959  	};
 41960  	splitAtBytes = function(s, t) {
 41961  		var a, i, last$1, n, s, t;
 41962  		a = $makeSlice(sliceType, (1 + countAnyByte(s, t) >> 0));
 41963  		n = 0;
 41964  		last$1 = 0;
 41965  		i = 0;
 41966  		while (true) {
 41967  			if (!(i < s.length)) { break; }
 41968  			if (byteIndex(t, s.charCodeAt(i)) >= 0) {
 41969  				if (last$1 < i) {
 41970  					((n < 0 || n >= a.$length) ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + n] = $substring(s, last$1, i));
 41971  					n = n + (1) >> 0;
 41972  				}
 41973  				last$1 = i + 1 >> 0;
 41974  			}
 41975  			i = i + (1) >> 0;
 41976  		}
 41977  		if (last$1 < s.length) {
 41978  			((n < 0 || n >= a.$length) ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + n] = $substring(s, last$1));
 41979  			n = n + (1) >> 0;
 41980  		}
 41981  		return $subslice(a, 0, n);
 41982  	};
 41983  	getFields = function(s) {
 41984  		var s;
 41985  		return splitAtBytes(s, " \r\t\n");
 41986  	};
 41987  	dtoi = function(s) {
 41988  		var _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, i, n, ok, s;
 41989  		n = 0;
 41990  		i = 0;
 41991  		ok = false;
 41992  		n = 0;
 41993  		i = 0;
 41994  		while (true) {
 41995  			if (!(i < s.length && 48 <= s.charCodeAt(i) && s.charCodeAt(i) <= 57)) { break; }
 41996  			n = ($imul(n, 10)) + (((s.charCodeAt(i) - 48 << 24 >>> 24) >> 0)) >> 0;
 41997  			if (n >= 16777215) {
 41998  				_tmp = 16777215;
 41999  				_tmp$1 = i;
 42000  				_tmp$2 = false;
 42001  				n = _tmp;
 42002  				i = _tmp$1;
 42003  				ok = _tmp$2;
 42004  				return [n, i, ok];
 42005  			}
 42006  			i = i + (1) >> 0;
 42007  		}
 42008  		if (i === 0) {
 42009  			_tmp$3 = 0;
 42010  			_tmp$4 = 0;
 42011  			_tmp$5 = false;
 42012  			n = _tmp$3;
 42013  			i = _tmp$4;
 42014  			ok = _tmp$5;
 42015  			return [n, i, ok];
 42016  		}
 42017  		_tmp$6 = n;
 42018  		_tmp$7 = i;
 42019  		_tmp$8 = true;
 42020  		n = _tmp$6;
 42021  		i = _tmp$7;
 42022  		ok = _tmp$8;
 42023  		return [n, i, ok];
 42024  	};
 42025  	xtoi = function(s) {
 42026  		var _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, i, n, ok, s;
 42027  		n = 0;
 42028  		i = 0;
 42029  		ok = false;
 42030  		n = 0;
 42031  		i = 0;
 42032  		while (true) {
 42033  			if (!(i < s.length)) { break; }
 42034  			if (48 <= s.charCodeAt(i) && s.charCodeAt(i) <= 57) {
 42035  				n = $imul(n, (16));
 42036  				n = n + ((((s.charCodeAt(i) - 48 << 24 >>> 24) >> 0))) >> 0;
 42037  			} else if (97 <= s.charCodeAt(i) && s.charCodeAt(i) <= 102) {
 42038  				n = $imul(n, (16));
 42039  				n = n + (((((s.charCodeAt(i) - 97 << 24 >>> 24) >> 0)) + 10 >> 0)) >> 0;
 42040  			} else if (65 <= s.charCodeAt(i) && s.charCodeAt(i) <= 70) {
 42041  				n = $imul(n, (16));
 42042  				n = n + (((((s.charCodeAt(i) - 65 << 24 >>> 24) >> 0)) + 10 >> 0)) >> 0;
 42043  			} else {
 42044  				break;
 42045  			}
 42046  			if (n >= 16777215) {
 42047  				_tmp = 0;
 42048  				_tmp$1 = i;
 42049  				_tmp$2 = false;
 42050  				n = _tmp;
 42051  				i = _tmp$1;
 42052  				ok = _tmp$2;
 42053  				return [n, i, ok];
 42054  			}
 42055  			i = i + (1) >> 0;
 42056  		}
 42057  		if (i === 0) {
 42058  			_tmp$3 = 0;
 42059  			_tmp$4 = i;
 42060  			_tmp$5 = false;
 42061  			n = _tmp$3;
 42062  			i = _tmp$4;
 42063  			ok = _tmp$5;
 42064  			return [n, i, ok];
 42065  		}
 42066  		_tmp$6 = n;
 42067  		_tmp$7 = i;
 42068  		_tmp$8 = true;
 42069  		n = _tmp$6;
 42070  		i = _tmp$7;
 42071  		ok = _tmp$8;
 42072  		return [n, i, ok];
 42073  	};
 42074  	xtoi2 = function(s, e) {
 42075  		var _tuple, e, ei, n, ok, s;
 42076  		if (s.length > 2 && !((s.charCodeAt(2) === e))) {
 42077  			return [0, false];
 42078  		}
 42079  		_tuple = xtoi($substring(s, 0, 2));
 42080  		n = _tuple[0];
 42081  		ei = _tuple[1];
 42082  		ok = _tuple[2];
 42083  		return [((n << 24 >>> 24)), ok && (ei === 2)];
 42084  	};
 42085  	itoa = function(val) {
 42086  		var val;
 42087  		if (val < 0) {
 42088  			return "-" + uitoa(((-val >>> 0)));
 42089  		}
 42090  		return uitoa(((val >>> 0)));
 42091  	};
 42092  	uitoa = function(val) {
 42093  		var _q, buf, i, q, val;
 42094  		if (val === 0) {
 42095  			return "0";
 42096  		}
 42097  		buf = arrayType$5.zero();
 42098  		i = 19;
 42099  		while (true) {
 42100  			if (!(val >= 10)) { break; }
 42101  			q = (_q = val / 10, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >>> 0 : $throwRuntimeError("integer divide by zero"));
 42102  			((i < 0 || i >= buf.length) ? ($throwRuntimeError("index out of range"), undefined) : buf[i] = ((((48 + val >>> 0) - (q * 10 >>> 0) >>> 0) << 24 >>> 24)));
 42103  			i = i - (1) >> 0;
 42104  			val = q;
 42105  		}
 42106  		((i < 0 || i >= buf.length) ? ($throwRuntimeError("index out of range"), undefined) : buf[i] = (((48 + val >>> 0) << 24 >>> 24)));
 42107  		return ($bytesToString($subslice(new sliceType$1(buf), i)));
 42108  	};
 42109  	appendHex = function(dst, i) {
 42110  		var dst, i, j, v, y;
 42111  		if (i === 0) {
 42112  			return $append(dst, 48);
 42113  		}
 42114  		j = 7;
 42115  		while (true) {
 42116  			if (!(j >= 0)) { break; }
 42117  			v = (y = ((($imul(j, 4)) >>> 0)), y < 32 ? (i >>> y) : 0) >>> 0;
 42118  			if (v > 0) {
 42119  				dst = $append(dst, "0123456789abcdef".charCodeAt(((v & 15) >>> 0)));
 42120  			}
 42121  			j = j - (1) >> 0;
 42122  		}
 42123  		return dst;
 42124  	};
 42125  	count = function(s, b) {
 42126  		var b, i, n, s;
 42127  		n = 0;
 42128  		i = 0;
 42129  		while (true) {
 42130  			if (!(i < s.length)) { break; }
 42131  			if (s.charCodeAt(i) === b) {
 42132  				n = n + (1) >> 0;
 42133  			}
 42134  			i = i + (1) >> 0;
 42135  		}
 42136  		return n;
 42137  	};
 42138  	last = function(s, b) {
 42139  		var b, i, s;
 42140  		i = s.length;
 42141  		i = i - (1) >> 0;
 42142  		while (true) {
 42143  			if (!(i >= 0)) { break; }
 42144  			if (s.charCodeAt(i) === b) {
 42145  				break;
 42146  			}
 42147  			i = i - (1) >> 0;
 42148  		}
 42149  		return i;
 42150  	};
 42151  	lowerASCIIBytes = function(x) {
 42152  		var _i, _ref, b, i, x;
 42153  		_ref = x;
 42154  		_i = 0;
 42155  		while (true) {
 42156  			if (!(_i < _ref.$length)) { break; }
 42157  			i = _i;
 42158  			b = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
 42159  			if (65 <= b && b <= 90) {
 42160  				((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i] = (((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i]) + (32) << 24 >>> 24));
 42161  			}
 42162  			_i++;
 42163  		}
 42164  	};
 42165  	lowerASCII = function(b) {
 42166  		var b;
 42167  		if (65 <= b && b <= 90) {
 42168  			return b + 32 << 24 >>> 24;
 42169  		}
 42170  		return b;
 42171  	};
 42172  	trimSpace = function(x) {
 42173  		var x, x$1;
 42174  		while (true) {
 42175  			if (!(x.$length > 0 && isSpace((0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0])))) { break; }
 42176  			x = $subslice(x, 1);
 42177  		}
 42178  		while (true) {
 42179  			if (!(x.$length > 0 && isSpace((x$1 = x.$length - 1 >> 0, ((x$1 < 0 || x$1 >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + x$1]))))) { break; }
 42180  			x = $subslice(x, 0, (x.$length - 1 >> 0));
 42181  		}
 42182  		return x;
 42183  	};
 42184  	isSpace = function(b) {
 42185  		var b;
 42186  		return (b === 32) || (b === 9) || (b === 10) || (b === 13);
 42187  	};
 42188  	removeComment = function(line) {
 42189  		var i, line;
 42190  		i = bytesIndexByte(line, 35);
 42191  		if (!((i === -1))) {
 42192  			return $subslice(line, 0, i);
 42193  		}
 42194  		return line;
 42195  	};
 42196  	foreachLine = function(x, fn) {
 42197  		var _r$10, _r$9, err, fn, line, nl, x, $s, $r;
 42198  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$10 = $f._r$10; _r$9 = $f._r$9; err = $f.err; fn = $f.fn; line = $f.line; nl = $f.nl; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 42199  		/* while (true) { */ case 1:
 42200  			/* if (!(x.$length > 0)) { break; } */ if(!(x.$length > 0)) { $s = 2; continue; }
 42201  			nl = bytesIndexByte(x, 10);
 42202  			/* */ if (nl === -1) { $s = 3; continue; }
 42203  			/* */ $s = 4; continue;
 42204  			/* if (nl === -1) { */ case 3:
 42205  				_r$9 = fn(x); /* */ $s = 5; case 5: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 42206  				$s = -1; return _r$9;
 42207  			/* } */ case 4:
 42208  			line = $subslice(x, 0, (nl + 1 >> 0));
 42209  			x = $subslice(x, (nl + 1 >> 0));
 42210  			_r$10 = fn(line); /* */ $s = 6; case 6: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
 42211  			err = _r$10;
 42212  			if (!($interfaceIsEqual(err, $ifaceNil))) {
 42213  				$s = -1; return err;
 42214  			}
 42215  		/* } */ $s = 1; continue; case 2:
 42216  		$s = -1; return $ifaceNil;
 42217  		/* */ } return; } if ($f === undefined) { $f = { $blk: foreachLine }; } $f._r$10 = _r$10; $f._r$9 = _r$9; $f.err = err; $f.fn = fn; $f.line = line; $f.nl = nl; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
 42218  	};
 42219  	foreachField = function(x, fn) {
 42220  		var _r$10, _r$9, err, field, fn, sp, x, $s, $r;
 42221  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$10 = $f._r$10; _r$9 = $f._r$9; err = $f.err; field = $f.field; fn = $f.fn; sp = $f.sp; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 42222  		x = trimSpace(x);
 42223  		/* while (true) { */ case 1:
 42224  			/* if (!(x.$length > 0)) { break; } */ if(!(x.$length > 0)) { $s = 2; continue; }
 42225  			sp = bytesIndexByte(x, 32);
 42226  			/* */ if (sp === -1) { $s = 3; continue; }
 42227  			/* */ $s = 4; continue;
 42228  			/* if (sp === -1) { */ case 3:
 42229  				_r$9 = fn(x); /* */ $s = 5; case 5: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 42230  				$s = -1; return _r$9;
 42231  			/* } */ case 4:
 42232  			field = trimSpace($subslice(x, 0, sp));
 42233  			/* */ if (field.$length > 0) { $s = 6; continue; }
 42234  			/* */ $s = 7; continue;
 42235  			/* if (field.$length > 0) { */ case 6:
 42236  				_r$10 = fn(field); /* */ $s = 8; case 8: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
 42237  				err = _r$10;
 42238  				if (!($interfaceIsEqual(err, $ifaceNil))) {
 42239  					$s = -1; return err;
 42240  				}
 42241  			/* } */ case 7:
 42242  			x = trimSpace($subslice(x, (sp + 1 >> 0)));
 42243  		/* } */ $s = 1; continue; case 2:
 42244  		$s = -1; return $ifaceNil;
 42245  		/* */ } return; } if ($f === undefined) { $f = { $blk: foreachField }; } $f._r$10 = _r$10; $f._r$9 = _r$9; $f.err = err; $f.field = field; $f.fn = fn; $f.sp = sp; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
 42246  	};
 42247  	stringsHasSuffix = function(s, suffix) {
 42248  		var s, suffix;
 42249  		return s.length >= suffix.length && $substring(s, (s.length - suffix.length >> 0)) === suffix;
 42250  	};
 42251  	stringsHasSuffixFold = function(s, suffix) {
 42252  		var s, suffix;
 42253  		return s.length >= suffix.length && stringsEqualFold($substring(s, (s.length - suffix.length >> 0)), suffix);
 42254  	};
 42255  	stringsHasPrefix = function(s, prefix) {
 42256  		var prefix, s;
 42257  		return s.length >= prefix.length && $substring(s, 0, prefix.length) === prefix;
 42258  	};
 42259  	stringsEqualFold = function(s, t) {
 42260  		var i, s, t;
 42261  		if (!((s.length === t.length))) {
 42262  			return false;
 42263  		}
 42264  		i = 0;
 42265  		while (true) {
 42266  			if (!(i < s.length)) { break; }
 42267  			if (!((lowerASCII(s.charCodeAt(i)) === lowerASCII(t.charCodeAt(i))))) {
 42268  				return false;
 42269  			}
 42270  			i = i + (1) >> 0;
 42271  		}
 42272  		return true;
 42273  	};
 42274  	readFull = function(r) {
 42275  		var _r$9, _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, all, buf, err, err$1, n, r, $s, $r;
 42276  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$9 = $f._r$9; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tuple = $f._tuple; all = $f.all; buf = $f.buf; err = $f.err; err$1 = $f.err$1; n = $f.n; r = $f.r; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 42277  		all = sliceType$1.nil;
 42278  		err = $ifaceNil;
 42279  		buf = $makeSlice(sliceType$1, 1024);
 42280  		/* while (true) { */ case 1:
 42281  			_r$9 = r.Read(buf); /* */ $s = 3; case 3: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 42282  			_tuple = _r$9;
 42283  			n = _tuple[0];
 42284  			err$1 = _tuple[1];
 42285  			all = $appendSlice(all, $subslice(buf, 0, n));
 42286  			if ($interfaceIsEqual(err$1, io.EOF)) {
 42287  				_tmp = all;
 42288  				_tmp$1 = $ifaceNil;
 42289  				all = _tmp;
 42290  				err = _tmp$1;
 42291  				$s = -1; return [all, err];
 42292  			}
 42293  			if (!($interfaceIsEqual(err$1, $ifaceNil))) {
 42294  				_tmp$2 = sliceType$1.nil;
 42295  				_tmp$3 = err$1;
 42296  				all = _tmp$2;
 42297  				err = _tmp$3;
 42298  				$s = -1; return [all, err];
 42299  			}
 42300  		/* } */ $s = 1; continue; case 2:
 42301  		$s = -1; return [all, err];
 42302  		/* */ } return; } if ($f === undefined) { $f = { $blk: readFull }; } $f._r$9 = _r$9; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tuple = _tuple; $f.all = all; $f.buf = buf; $f.err = err; $f.err$1 = err$1; $f.n = n; $f.r = r; $f.$s = $s; $f.$r = $r; return $f;
 42303  	};
 42304  	goDebugString = function(key) {
 42305  		var _i, _r$9, _ref, _rune, afterKey, b, i, i$1, key, s, val, $s, $r;
 42306  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _i = $f._i; _r$9 = $f._r$9; _ref = $f._ref; _rune = $f._rune; afterKey = $f.afterKey; b = $f.b; i = $f.i; i$1 = $f.i$1; key = $f.key; s = $f.s; val = $f.val; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 42307  		_r$9 = os.Getenv("GODEBUG"); /* */ $s = 1; case 1: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 42308  		s = _r$9;
 42309  		i = 0;
 42310  		while (true) {
 42311  			if (!(i < ((s.length - key.length >> 0) - 1 >> 0))) { break; }
 42312  			if (i > 0 && !((s.charCodeAt((i - 1 >> 0)) === 44))) {
 42313  				i = i + (1) >> 0;
 42314  				continue;
 42315  			}
 42316  			afterKey = $substring(s, (i + key.length >> 0));
 42317  			if (!((afterKey.charCodeAt(0) === 61)) || !($substring(s, i, (i + key.length >> 0)) === key)) {
 42318  				i = i + (1) >> 0;
 42319  				continue;
 42320  			}
 42321  			val = $substring(afterKey, 1);
 42322  			_ref = val;
 42323  			_i = 0;
 42324  			while (true) {
 42325  				if (!(_i < _ref.length)) { break; }
 42326  				_rune = $decodeRune(_ref, _i);
 42327  				i$1 = _i;
 42328  				b = _rune[0];
 42329  				if (b === 44) {
 42330  					$s = -1; return $substring(val, 0, i$1);
 42331  				}
 42332  				_i += _rune[1];
 42333  			}
 42334  			$s = -1; return val;
 42335  		}
 42336  		$s = -1; return "";
 42337  		/* */ } return; } if ($f === undefined) { $f = { $blk: goDebugString }; } $f._i = _i; $f._r$9 = _r$9; $f._ref = _ref; $f._rune = _rune; $f.afterKey = afterKey; $f.b = b; $f.i = i; $f.i$1 = i$1; $f.key = key; $f.s = s; $f.val = val; $f.$s = $s; $f.$r = $r; return $f;
 42338  	};
 42339  	parsePort = function(service) {
 42340  		var _i, _ref, _rune, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, d, n, needsLookup, neg, nn, port, service;
 42341  		port = 0;
 42342  		needsLookup = false;
 42343  		if (service === "") {
 42344  			_tmp = 0;
 42345  			_tmp$1 = false;
 42346  			port = _tmp;
 42347  			needsLookup = _tmp$1;
 42348  			return [port, needsLookup];
 42349  		}
 42350  		neg = false;
 42351  		if (service.charCodeAt(0) === 43) {
 42352  			service = $substring(service, 1);
 42353  		} else if (service.charCodeAt(0) === 45) {
 42354  			neg = true;
 42355  			service = $substring(service, 1);
 42356  		}
 42357  		n = 0;
 42358  		_ref = service;
 42359  		_i = 0;
 42360  		while (true) {
 42361  			if (!(_i < _ref.length)) { break; }
 42362  			_rune = $decodeRune(_ref, _i);
 42363  			d = _rune[0];
 42364  			if (48 <= d && d <= 57) {
 42365  				d = d - (48) >> 0;
 42366  			} else {
 42367  				_tmp$2 = 0;
 42368  				_tmp$3 = true;
 42369  				port = _tmp$2;
 42370  				needsLookup = _tmp$3;
 42371  				return [port, needsLookup];
 42372  			}
 42373  			if (n >= 1073741824) {
 42374  				n = 4294967295;
 42375  				break;
 42376  			}
 42377  			n = $imul(n, (10)) >>> 0;
 42378  			nn = n + ((d >>> 0)) >>> 0;
 42379  			if (nn < n || nn > 4294967295) {
 42380  				n = 4294967295;
 42381  				break;
 42382  			}
 42383  			n = nn;
 42384  			_i += _rune[1];
 42385  		}
 42386  		if (!neg && n >= 1073741824) {
 42387  			port = 1073741823;
 42388  		} else if (neg && n > 1073741824) {
 42389  			port = 1073741824;
 42390  		} else {
 42391  			port = ((n >> 0));
 42392  		}
 42393  		if (neg) {
 42394  			port = -port;
 42395  		}
 42396  		_tmp$4 = port;
 42397  		_tmp$5 = false;
 42398  		port = _tmp$4;
 42399  		needsLookup = _tmp$5;
 42400  		return [port, needsLookup];
 42401  	};
 42402  	readServices = function() {
 42403  		var _entry, _key, _key$1, _r$10, _r$11, _r$12, _r$13, _r$9, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, _tuple$5, _tuple$6, err, f, file$1, i, i$1, j, line, m, netw, ok, ok$1, ok1, port, portnet, $s, $deferred, $r;
 42404  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _entry = $f._entry; _key = $f._key; _key$1 = $f._key$1; _r$10 = $f._r$10; _r$11 = $f._r$11; _r$12 = $f._r$12; _r$13 = $f._r$13; _r$9 = $f._r$9; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; _tuple$4 = $f._tuple$4; _tuple$5 = $f._tuple$5; _tuple$6 = $f._tuple$6; err = $f.err; f = $f.f; file$1 = $f.file$1; i = $f.i; i$1 = $f.i$1; j = $f.j; line = $f.line; m = $f.m; netw = $f.netw; ok = $f.ok; ok$1 = $f.ok$1; ok1 = $f.ok1; port = $f.port; portnet = $f.portnet; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
 42405  		_r$9 = open("/etc/services"); /* */ $s = 1; case 1: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 42406  		_tuple = _r$9;
 42407  		file$1 = _tuple[0];
 42408  		err = _tuple[1];
 42409  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 42410  			$s = -1; return;
 42411  		}
 42412  		$deferred.push([$methodVal(file$1, "close"), []]);
 42413  		_r$10 = file$1.readLine(); /* */ $s = 2; case 2: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
 42414  		_tuple$1 = _r$10;
 42415  		line = _tuple$1[0];
 42416  		ok = _tuple$1[1];
 42417  		/* while (true) { */ case 3:
 42418  			/* if (!(ok)) { break; } */ if(!(ok)) { $s = 4; continue; }
 42419  			i = byteIndex(line, 35);
 42420  			if (i >= 0) {
 42421  				line = $substring(line, 0, i);
 42422  			}
 42423  			f = getFields(line);
 42424  			/* */ if (f.$length < 2) { $s = 5; continue; }
 42425  			/* */ $s = 6; continue;
 42426  			/* if (f.$length < 2) { */ case 5:
 42427  				_r$11 = file$1.readLine(); /* */ $s = 7; case 7: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; }
 42428  				_tuple$2 = _r$11;
 42429  				line = _tuple$2[0];
 42430  				ok = _tuple$2[1];
 42431  				/* continue; */ $s = 3; continue;
 42432  			/* } */ case 6:
 42433  			portnet = (1 >= f.$length ? ($throwRuntimeError("index out of range"), undefined) : f.$array[f.$offset + 1]);
 42434  			_tuple$3 = dtoi(portnet);
 42435  			port = _tuple$3[0];
 42436  			j = _tuple$3[1];
 42437  			ok$1 = _tuple$3[2];
 42438  			/* */ if (!ok$1 || port <= 0 || j >= portnet.length || !((portnet.charCodeAt(j) === 47))) { $s = 8; continue; }
 42439  			/* */ $s = 9; continue;
 42440  			/* if (!ok$1 || port <= 0 || j >= portnet.length || !((portnet.charCodeAt(j) === 47))) { */ case 8:
 42441  				_r$12 = file$1.readLine(); /* */ $s = 10; case 10: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; }
 42442  				_tuple$4 = _r$12;
 42443  				line = _tuple$4[0];
 42444  				ok = _tuple$4[1];
 42445  				/* continue; */ $s = 3; continue;
 42446  			/* } */ case 9:
 42447  			netw = $substring(portnet, (j + 1 >> 0));
 42448  			_tuple$5 = (_entry = services[$String.keyFor(netw)], _entry !== undefined ? [_entry.v, true] : [false, false]);
 42449  			m = _tuple$5[0];
 42450  			ok1 = _tuple$5[1];
 42451  			if (!ok1) {
 42452  				m = {};
 42453  				_key = netw; (services || $throwRuntimeError("assignment to entry in nil map"))[$String.keyFor(_key)] = { k: _key, v: m };
 42454  			}
 42455  			i$1 = 0;
 42456  			while (true) {
 42457  				if (!(i$1 < f.$length)) { break; }
 42458  				if (!((i$1 === 1))) {
 42459  					_key$1 = ((i$1 < 0 || i$1 >= f.$length) ? ($throwRuntimeError("index out of range"), undefined) : f.$array[f.$offset + i$1]); (m || $throwRuntimeError("assignment to entry in nil map"))[$String.keyFor(_key$1)] = { k: _key$1, v: port };
 42460  				}
 42461  				i$1 = i$1 + (1) >> 0;
 42462  			}
 42463  			_r$13 = file$1.readLine(); /* */ $s = 11; case 11: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; }
 42464  			_tuple$6 = _r$13;
 42465  			line = _tuple$6[0];
 42466  			ok = _tuple$6[1];
 42467  		/* } */ $s = 3; continue; case 4:
 42468  		$s = -1; return;
 42469  		/* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: readServices }; } $f._entry = _entry; $f._key = _key; $f._key$1 = _key$1; $f._r$10 = _r$10; $f._r$11 = _r$11; $f._r$12 = _r$12; $f._r$13 = _r$13; $f._r$9 = _r$9; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f._tuple$4 = _tuple$4; $f._tuple$5 = _tuple$5; $f._tuple$6 = _tuple$6; $f.err = err; $f.f = f; $f.file$1 = file$1; $f.i = i; $f.i$1 = i$1; $f.j = j; $f.line = line; $f.m = m; $f.netw = netw; $f.ok = ok; $f.ok$1 = ok$1; $f.ok1 = ok1; $f.port = port; $f.portnet = portnet; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
 42470  	};
 42471  	goLookupPort = function(network, service) {
 42472  		var _tuple, err, network, port, service, $s, $r;
 42473  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _tuple = $f._tuple; err = $f.err; network = $f.network; port = $f.port; service = $f.service; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 42474  		port = 0;
 42475  		err = $ifaceNil;
 42476  		$r = onceReadServices.Do(readServices); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 42477  		_tuple = lookupPortMap(network, service);
 42478  		port = _tuple[0];
 42479  		err = _tuple[1];
 42480  		$s = -1; return [port, err];
 42481  		/* */ } return; } if ($f === undefined) { $f = { $blk: goLookupPort }; } $f._tuple = _tuple; $f.err = err; $f.network = network; $f.port = port; $f.service = service; $f.$s = $s; $f.$r = $r; return $f;
 42482  	};
 42483  	rawConn.ptr.prototype.ok = function() {
 42484  		var c;
 42485  		c = this;
 42486  		return !(c === ptrType$52.nil) && !(c.fd === ptrType$30.nil);
 42487  	};
 42488  	rawConn.prototype.ok = function() { return this.$val.ok(); };
 42489  	rawConn.ptr.prototype.Control = function(f) {
 42490  		var _r$9, c, err, f, $s, $r;
 42491  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$9 = $f._r$9; c = $f.c; err = $f.err; f = $f.f; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 42492  		c = this;
 42493  		if (!c.ok()) {
 42494  			$s = -1; return new syscall.Errno(22);
 42495  		}
 42496  		_r$9 = c.fd.pfd.RawControl(f); /* */ $s = 1; case 1: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 42497  		err = _r$9;
 42498  		runtime.KeepAlive(c.fd);
 42499  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 42500  			err = new OpError.ptr("raw-control", c.fd.net, $ifaceNil, c.fd.laddr, err);
 42501  		}
 42502  		$s = -1; return err;
 42503  		/* */ } return; } if ($f === undefined) { $f = { $blk: rawConn.ptr.prototype.Control }; } $f._r$9 = _r$9; $f.c = c; $f.err = err; $f.f = f; $f.$s = $s; $f.$r = $r; return $f;
 42504  	};
 42505  	rawConn.prototype.Control = function(f) { return this.$val.Control(f); };
 42506  	rawConn.ptr.prototype.Read = function(f) {
 42507  		var _r$9, c, err, f, $s, $r;
 42508  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$9 = $f._r$9; c = $f.c; err = $f.err; f = $f.f; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 42509  		c = this;
 42510  		if (!c.ok()) {
 42511  			$s = -1; return new syscall.Errno(22);
 42512  		}
 42513  		_r$9 = c.fd.pfd.RawRead(f); /* */ $s = 1; case 1: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 42514  		err = _r$9;
 42515  		runtime.KeepAlive(c.fd);
 42516  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 42517  			err = new OpError.ptr("raw-read", c.fd.net, c.fd.laddr, c.fd.raddr, err);
 42518  		}
 42519  		$s = -1; return err;
 42520  		/* */ } return; } if ($f === undefined) { $f = { $blk: rawConn.ptr.prototype.Read }; } $f._r$9 = _r$9; $f.c = c; $f.err = err; $f.f = f; $f.$s = $s; $f.$r = $r; return $f;
 42521  	};
 42522  	rawConn.prototype.Read = function(f) { return this.$val.Read(f); };
 42523  	rawConn.ptr.prototype.Write = function(f) {
 42524  		var _r$9, c, err, f, $s, $r;
 42525  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$9 = $f._r$9; c = $f.c; err = $f.err; f = $f.f; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 42526  		c = this;
 42527  		if (!c.ok()) {
 42528  			$s = -1; return new syscall.Errno(22);
 42529  		}
 42530  		_r$9 = c.fd.pfd.RawWrite(f); /* */ $s = 1; case 1: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 42531  		err = _r$9;
 42532  		runtime.KeepAlive(c.fd);
 42533  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 42534  			err = new OpError.ptr("raw-write", c.fd.net, c.fd.laddr, c.fd.raddr, err);
 42535  		}
 42536  		$s = -1; return err;
 42537  		/* */ } return; } if ($f === undefined) { $f = { $blk: rawConn.ptr.prototype.Write }; } $f._r$9 = _r$9; $f.c = c; $f.err = err; $f.f = f; $f.$s = $s; $f.$r = $r; return $f;
 42538  	};
 42539  	rawConn.prototype.Write = function(f) { return this.$val.Write(f); };
 42540  	newRawConn = function(fd) {
 42541  		var fd;
 42542  		return [new rawConn.ptr(fd), $ifaceNil];
 42543  	};
 42544  	rawListener.ptr.prototype.Read = function(param) {
 42545  		var l, param;
 42546  		l = this;
 42547  		return new syscall.Errno(22);
 42548  	};
 42549  	rawListener.prototype.Read = function(param) { return this.$val.Read(param); };
 42550  	rawListener.ptr.prototype.Write = function(param) {
 42551  		var l, param;
 42552  		l = this;
 42553  		return new syscall.Errno(22);
 42554  	};
 42555  	rawListener.prototype.Write = function(param) { return this.$val.Write(param); };
 42556  	newRawListener = function(fd) {
 42557  		var fd;
 42558  		return [new rawListener.ptr(new rawConn.ptr(fd)), $ifaceNil];
 42559  	};
 42560  	sendFile = function(c, r) {
 42561  		var _arg, _arg$1, _arg$2, _r$10, _r$9, _tmp, _tmp$1, _tmp$10, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, _tuple$1, _tuple$2, c, err, f, handled, lr, ok, r, remain, written, $s, $r;
 42562  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _arg = $f._arg; _arg$1 = $f._arg$1; _arg$2 = $f._arg$2; _r$10 = $f._r$10; _r$9 = $f._r$9; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$10 = $f._tmp$10; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tmp$4 = $f._tmp$4; _tmp$5 = $f._tmp$5; _tmp$6 = $f._tmp$6; _tmp$7 = $f._tmp$7; _tmp$8 = $f._tmp$8; _tmp$9 = $f._tmp$9; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; c = $f.c; err = $f.err; f = $f.f; handled = $f.handled; lr = $f.lr; ok = $f.ok; r = $f.r; remain = $f.remain; written = $f.written; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 42563  		written = new $Int64(0, 0);
 42564  		err = $ifaceNil;
 42565  		handled = false;
 42566  		remain = new $Int64(1073741824, 0);
 42567  		_tuple = $assertType(r, ptrType$53, true);
 42568  		lr = _tuple[0];
 42569  		ok = _tuple[1];
 42570  		if (ok) {
 42571  			_tmp = lr.N;
 42572  			_tmp$1 = lr.R;
 42573  			remain = _tmp;
 42574  			r = _tmp$1;
 42575  			if ((remain.$high < 0 || (remain.$high === 0 && remain.$low <= 0))) {
 42576  				_tmp$2 = new $Int64(0, 0);
 42577  				_tmp$3 = $ifaceNil;
 42578  				_tmp$4 = true;
 42579  				written = _tmp$2;
 42580  				err = _tmp$3;
 42581  				handled = _tmp$4;
 42582  				$s = -1; return [written, err, handled];
 42583  			}
 42584  		}
 42585  		_tuple$1 = $assertType(r, ptrType$32, true);
 42586  		f = _tuple$1[0];
 42587  		ok = _tuple$1[1];
 42588  		if (!ok) {
 42589  			_tmp$5 = new $Int64(0, 0);
 42590  			_tmp$6 = $ifaceNil;
 42591  			_tmp$7 = false;
 42592  			written = _tmp$5;
 42593  			err = _tmp$6;
 42594  			handled = _tmp$7;
 42595  			$s = -1; return [written, err, handled];
 42596  		}
 42597  		_arg = c.pfd;
 42598  		_r$9 = f.Fd(); /* */ $s = 1; case 1: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 42599  		_arg$1 = ((_r$9 >> 0));
 42600  		_arg$2 = remain;
 42601  		_r$10 = poll.SendFile(_arg, _arg$1, _arg$2); /* */ $s = 2; case 2: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
 42602  		_tuple$2 = _r$10;
 42603  		written = _tuple$2[0];
 42604  		err = _tuple$2[1];
 42605  		if (!(lr === ptrType$53.nil)) {
 42606  			lr.N = new $Int64(remain.$high - written.$high, remain.$low - written.$low);
 42607  		}
 42608  		_tmp$8 = written;
 42609  		_tmp$9 = wrapSyscallError("sendfile", err);
 42610  		_tmp$10 = (written.$high > 0 || (written.$high === 0 && written.$low > 0));
 42611  		written = _tmp$8;
 42612  		err = _tmp$9;
 42613  		handled = _tmp$10;
 42614  		$s = -1; return [written, err, handled];
 42615  		/* */ } return; } if ($f === undefined) { $f = { $blk: sendFile }; } $f._arg = _arg; $f._arg$1 = _arg$1; $f._arg$2 = _arg$2; $f._r$10 = _r$10; $f._r$9 = _r$9; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$10 = _tmp$10; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tmp$4 = _tmp$4; $f._tmp$5 = _tmp$5; $f._tmp$6 = _tmp$6; $f._tmp$7 = _tmp$7; $f._tmp$8 = _tmp$8; $f._tmp$9 = _tmp$9; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f.c = c; $f.err = err; $f.f = f; $f.handled = handled; $f.lr = lr; $f.ok = ok; $f.r = r; $f.remain = remain; $f.written = written; $f.$s = $s; $f.$r = $r; return $f;
 42616  	};
 42617  	sysSocket = function(family, sotype, proto) {
 42618  		var _1, _r$10, _r$11, _r$9, _tuple, _tuple$1, err, family, proto, s, sotype, $s, $r;
 42619  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _r$10 = $f._r$10; _r$11 = $f._r$11; _r$9 = $f._r$9; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; err = $f.err; family = $f.family; proto = $f.proto; s = $f.s; sotype = $f.sotype; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 42620  		_r$9 = socketFunc(family, (sotype | 2048) | 524288, proto); /* */ $s = 1; case 1: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 42621  		_tuple = _r$9;
 42622  		s = _tuple[0];
 42623  		err = _tuple[1];
 42624  		_1 = err;
 42625  		if ($interfaceIsEqual(_1, $ifaceNil)) {
 42626  			$s = -1; return [s, $ifaceNil];
 42627  		} else if ($interfaceIsEqual(_1, new syscall.Errno((93))) || $interfaceIsEqual(_1, new syscall.Errno((22)))) {
 42628  		} else {
 42629  			$s = -1; return [-1, os.NewSyscallError("socket", err)];
 42630  		}
 42631  		$r = syscall.ForkLock.RLock(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 42632  		_r$10 = socketFunc(family, sotype, proto); /* */ $s = 3; case 3: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
 42633  		_tuple$1 = _r$10;
 42634  		s = _tuple$1[0];
 42635  		err = _tuple$1[1];
 42636  		if ($interfaceIsEqual(err, $ifaceNil)) {
 42637  			syscall.CloseOnExec(s);
 42638  		}
 42639  		$r = syscall.ForkLock.RUnlock(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 42640  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 42641  			$s = -1; return [-1, os.NewSyscallError("socket", err)];
 42642  		}
 42643  		err = syscall.SetNonblock(s, true);
 42644  		/* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 5; continue; }
 42645  		/* */ $s = 6; continue;
 42646  		/* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 5:
 42647  			_r$11 = poll.CloseFunc(s); /* */ $s = 7; case 7: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; }
 42648  			_r$11;
 42649  			$s = -1; return [-1, os.NewSyscallError("setnonblock", err)];
 42650  		/* } */ case 6:
 42651  		$s = -1; return [s, $ifaceNil];
 42652  		/* */ } return; } if ($f === undefined) { $f = { $blk: sysSocket }; } $f._1 = _1; $f._r$10 = _r$10; $f._r$11 = _r$11; $f._r$9 = _r$9; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.err = err; $f.family = family; $f.proto = proto; $f.s = s; $f.sotype = sotype; $f.$s = $s; $f.$r = $r; return $f;
 42653  	};
 42654  	socket = function(ctx, net, family, sotype, proto, ipv6only$1, laddr, raddr) {
 42655  		var _1, _r$10, _r$11, _r$12, _r$13, _r$14, _r$15, _r$16, _r$17, _r$9, _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$14, _tmp$15, _tmp$16, _tmp$17, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, _tuple$1, ctx, err, err$1, err$2, err$3, family, fd, ipv6only$1, laddr, net, proto, raddr, s, sotype, $s, $r;
 42656  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _r$10 = $f._r$10; _r$11 = $f._r$11; _r$12 = $f._r$12; _r$13 = $f._r$13; _r$14 = $f._r$14; _r$15 = $f._r$15; _r$16 = $f._r$16; _r$17 = $f._r$17; _r$9 = $f._r$9; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$10 = $f._tmp$10; _tmp$11 = $f._tmp$11; _tmp$12 = $f._tmp$12; _tmp$13 = $f._tmp$13; _tmp$14 = $f._tmp$14; _tmp$15 = $f._tmp$15; _tmp$16 = $f._tmp$16; _tmp$17 = $f._tmp$17; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tmp$4 = $f._tmp$4; _tmp$5 = $f._tmp$5; _tmp$6 = $f._tmp$6; _tmp$7 = $f._tmp$7; _tmp$8 = $f._tmp$8; _tmp$9 = $f._tmp$9; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; ctx = $f.ctx; err = $f.err; err$1 = $f.err$1; err$2 = $f.err$2; err$3 = $f.err$3; family = $f.family; fd = $f.fd; ipv6only$1 = $f.ipv6only$1; laddr = $f.laddr; net = $f.net; proto = $f.proto; raddr = $f.raddr; s = $f.s; sotype = $f.sotype; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 42657  		fd = ptrType$30.nil;
 42658  		err = $ifaceNil;
 42659  		_r$9 = sysSocket(family, sotype, proto); /* */ $s = 1; case 1: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 42660  		_tuple = _r$9;
 42661  		s = _tuple[0];
 42662  		err = _tuple[1];
 42663  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 42664  			_tmp = ptrType$30.nil;
 42665  			_tmp$1 = err;
 42666  			fd = _tmp;
 42667  			err = _tmp$1;
 42668  			$s = -1; return [fd, err];
 42669  		}
 42670  		err = setDefaultSockopts(s, family, sotype, ipv6only$1);
 42671  		/* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 2; continue; }
 42672  		/* */ $s = 3; continue;
 42673  		/* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 2:
 42674  			_r$10 = poll.CloseFunc(s); /* */ $s = 4; case 4: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
 42675  			_r$10;
 42676  			_tmp$2 = ptrType$30.nil;
 42677  			_tmp$3 = err;
 42678  			fd = _tmp$2;
 42679  			err = _tmp$3;
 42680  			$s = -1; return [fd, err];
 42681  		/* } */ case 3:
 42682  		_tuple$1 = newFD(s, family, sotype, net);
 42683  		fd = _tuple$1[0];
 42684  		err = _tuple$1[1];
 42685  		/* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 5; continue; }
 42686  		/* */ $s = 6; continue;
 42687  		/* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 5:
 42688  			_r$11 = poll.CloseFunc(s); /* */ $s = 7; case 7: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; }
 42689  			_r$11;
 42690  			_tmp$4 = ptrType$30.nil;
 42691  			_tmp$5 = err;
 42692  			fd = _tmp$4;
 42693  			err = _tmp$5;
 42694  			$s = -1; return [fd, err];
 42695  		/* } */ case 6:
 42696  		/* */ if (!($interfaceIsEqual(laddr, $ifaceNil)) && $interfaceIsEqual(raddr, $ifaceNil)) { $s = 8; continue; }
 42697  		/* */ $s = 9; continue;
 42698  		/* if (!($interfaceIsEqual(laddr, $ifaceNil)) && $interfaceIsEqual(raddr, $ifaceNil)) { */ case 8:
 42699  				_1 = sotype;
 42700  				/* */ if ((_1 === (1)) || (_1 === (5))) { $s = 11; continue; }
 42701  				/* */ if (_1 === (2)) { $s = 12; continue; }
 42702  				/* */ $s = 13; continue;
 42703  				/* if ((_1 === (1)) || (_1 === (5))) { */ case 11:
 42704  					_r$12 = fd.listenStream(laddr, listenerBacklog); /* */ $s = 14; case 14: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; }
 42705  					err$1 = _r$12;
 42706  					/* */ if (!($interfaceIsEqual(err$1, $ifaceNil))) { $s = 15; continue; }
 42707  					/* */ $s = 16; continue;
 42708  					/* if (!($interfaceIsEqual(err$1, $ifaceNil))) { */ case 15:
 42709  						_r$13 = fd.Close(); /* */ $s = 17; case 17: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; }
 42710  						_r$13;
 42711  						_tmp$6 = ptrType$30.nil;
 42712  						_tmp$7 = err$1;
 42713  						fd = _tmp$6;
 42714  						err = _tmp$7;
 42715  						$s = -1; return [fd, err];
 42716  					/* } */ case 16:
 42717  					_tmp$8 = fd;
 42718  					_tmp$9 = $ifaceNil;
 42719  					fd = _tmp$8;
 42720  					err = _tmp$9;
 42721  					$s = -1; return [fd, err];
 42722  				/* } else if (_1 === (2)) { */ case 12:
 42723  					_r$14 = fd.listenDatagram(laddr); /* */ $s = 18; case 18: if($c) { $c = false; _r$14 = _r$14.$blk(); } if (_r$14 && _r$14.$blk !== undefined) { break s; }
 42724  					err$2 = _r$14;
 42725  					/* */ if (!($interfaceIsEqual(err$2, $ifaceNil))) { $s = 19; continue; }
 42726  					/* */ $s = 20; continue;
 42727  					/* if (!($interfaceIsEqual(err$2, $ifaceNil))) { */ case 19:
 42728  						_r$15 = fd.Close(); /* */ $s = 21; case 21: if($c) { $c = false; _r$15 = _r$15.$blk(); } if (_r$15 && _r$15.$blk !== undefined) { break s; }
 42729  						_r$15;
 42730  						_tmp$10 = ptrType$30.nil;
 42731  						_tmp$11 = err$2;
 42732  						fd = _tmp$10;
 42733  						err = _tmp$11;
 42734  						$s = -1; return [fd, err];
 42735  					/* } */ case 20:
 42736  					_tmp$12 = fd;
 42737  					_tmp$13 = $ifaceNil;
 42738  					fd = _tmp$12;
 42739  					err = _tmp$13;
 42740  					$s = -1; return [fd, err];
 42741  				/* } */ case 13:
 42742  			case 10:
 42743  		/* } */ case 9:
 42744  		_r$16 = fd.dial(ctx, laddr, raddr); /* */ $s = 22; case 22: if($c) { $c = false; _r$16 = _r$16.$blk(); } if (_r$16 && _r$16.$blk !== undefined) { break s; }
 42745  		err$3 = _r$16;
 42746  		/* */ if (!($interfaceIsEqual(err$3, $ifaceNil))) { $s = 23; continue; }
 42747  		/* */ $s = 24; continue;
 42748  		/* if (!($interfaceIsEqual(err$3, $ifaceNil))) { */ case 23:
 42749  			_r$17 = fd.Close(); /* */ $s = 25; case 25: if($c) { $c = false; _r$17 = _r$17.$blk(); } if (_r$17 && _r$17.$blk !== undefined) { break s; }
 42750  			_r$17;
 42751  			_tmp$14 = ptrType$30.nil;
 42752  			_tmp$15 = err$3;
 42753  			fd = _tmp$14;
 42754  			err = _tmp$15;
 42755  			$s = -1; return [fd, err];
 42756  		/* } */ case 24:
 42757  		_tmp$16 = fd;
 42758  		_tmp$17 = $ifaceNil;
 42759  		fd = _tmp$16;
 42760  		err = _tmp$17;
 42761  		$s = -1; return [fd, err];
 42762  		/* */ } return; } if ($f === undefined) { $f = { $blk: socket }; } $f._1 = _1; $f._r$10 = _r$10; $f._r$11 = _r$11; $f._r$12 = _r$12; $f._r$13 = _r$13; $f._r$14 = _r$14; $f._r$15 = _r$15; $f._r$16 = _r$16; $f._r$17 = _r$17; $f._r$9 = _r$9; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$10 = _tmp$10; $f._tmp$11 = _tmp$11; $f._tmp$12 = _tmp$12; $f._tmp$13 = _tmp$13; $f._tmp$14 = _tmp$14; $f._tmp$15 = _tmp$15; $f._tmp$16 = _tmp$16; $f._tmp$17 = _tmp$17; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tmp$4 = _tmp$4; $f._tmp$5 = _tmp$5; $f._tmp$6 = _tmp$6; $f._tmp$7 = _tmp$7; $f._tmp$8 = _tmp$8; $f._tmp$9 = _tmp$9; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.ctx = ctx; $f.err = err; $f.err$1 = err$1; $f.err$2 = err$2; $f.err$3 = err$3; $f.family = family; $f.fd = fd; $f.ipv6only$1 = ipv6only$1; $f.laddr = laddr; $f.net = net; $f.proto = proto; $f.raddr = raddr; $f.s = s; $f.sotype = sotype; $f.$s = $s; $f.$r = $r; return $f;
 42763  	};
 42764  	netFD.ptr.prototype.addrFunc = function() {
 42765  		var _1, _2, _3, fd;
 42766  		fd = this;
 42767  		_1 = fd.family;
 42768  		if ((_1 === (2)) || (_1 === (10))) {
 42769  			_2 = fd.sotype;
 42770  			if (_2 === (1)) {
 42771  				return sockaddrToTCP;
 42772  			} else if (_2 === (2)) {
 42773  				return sockaddrToUDP;
 42774  			} else if (_2 === (3)) {
 42775  				return sockaddrToIP;
 42776  			}
 42777  		} else if (_1 === (1)) {
 42778  			_3 = fd.sotype;
 42779  			if (_3 === (1)) {
 42780  				return sockaddrToUnix;
 42781  			} else if (_3 === (2)) {
 42782  				return sockaddrToUnixgram;
 42783  			} else if (_3 === (5)) {
 42784  				return sockaddrToUnixpacket;
 42785  			}
 42786  		}
 42787  		return (function(param) {
 42788  			var param;
 42789  			return $ifaceNil;
 42790  		});
 42791  	};
 42792  	netFD.prototype.addrFunc = function() { return this.$val.addrFunc(); };
 42793  	netFD.ptr.prototype.dial = function(ctx, laddr, raddr) {
 42794  		var _arg, _arg$1, _arg$2, _arg$3, _r$10, _r$11, _r$12, _r$13, _r$14, _r$15, _r$16, _r$17, _r$9, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, crsa, ctx, err, err$1, err$2, fd, laddr, lsa, raddr, rsa, $s, $r;
 42795  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _arg = $f._arg; _arg$1 = $f._arg$1; _arg$2 = $f._arg$2; _arg$3 = $f._arg$3; _r$10 = $f._r$10; _r$11 = $f._r$11; _r$12 = $f._r$12; _r$13 = $f._r$13; _r$14 = $f._r$14; _r$15 = $f._r$15; _r$16 = $f._r$16; _r$17 = $f._r$17; _r$9 = $f._r$9; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; _tuple$4 = $f._tuple$4; crsa = $f.crsa; ctx = $f.ctx; err = $f.err; err$1 = $f.err$1; err$2 = $f.err$2; fd = $f.fd; laddr = $f.laddr; lsa = $f.lsa; raddr = $f.raddr; rsa = $f.rsa; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 42796  		fd = this;
 42797  		err = $ifaceNil;
 42798  		lsa = $ifaceNil;
 42799  		/* */ if (!($interfaceIsEqual(laddr, $ifaceNil))) { $s = 1; continue; }
 42800  		/* */ $s = 2; continue;
 42801  		/* if (!($interfaceIsEqual(laddr, $ifaceNil))) { */ case 1:
 42802  			_r$9 = laddr.sockaddr(fd.family); /* */ $s = 3; case 3: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 42803  			_tuple = _r$9;
 42804  			lsa = _tuple[0];
 42805  			err = _tuple[1];
 42806  			/* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 4; continue; }
 42807  			/* */ if (!($interfaceIsEqual(lsa, $ifaceNil))) { $s = 5; continue; }
 42808  			/* */ $s = 6; continue;
 42809  			/* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 4:
 42810  				$s = -1; return err;
 42811  			/* } else if (!($interfaceIsEqual(lsa, $ifaceNil))) { */ case 5:
 42812  				_r$10 = syscall.Bind(fd.pfd.Sysfd, lsa); /* */ $s = 7; case 7: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
 42813  				err$1 = _r$10;
 42814  				if (!($interfaceIsEqual(err$1, $ifaceNil))) {
 42815  					$s = -1; return os.NewSyscallError("bind", err$1);
 42816  				}
 42817  			/* } */ case 6:
 42818  		/* } */ case 2:
 42819  		rsa = $ifaceNil;
 42820  		crsa = $ifaceNil;
 42821  		/* */ if (!($interfaceIsEqual(raddr, $ifaceNil))) { $s = 8; continue; }
 42822  		/* */ $s = 9; continue;
 42823  		/* if (!($interfaceIsEqual(raddr, $ifaceNil))) { */ case 8:
 42824  			_r$11 = raddr.sockaddr(fd.family); /* */ $s = 11; case 11: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; }
 42825  			_tuple$1 = _r$11;
 42826  			rsa = _tuple$1[0];
 42827  			err = _tuple$1[1];
 42828  			if (!($interfaceIsEqual(err, $ifaceNil))) {
 42829  				$s = -1; return err;
 42830  			}
 42831  			_r$12 = fd.connect(ctx, lsa, rsa); /* */ $s = 12; case 12: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; }
 42832  			_tuple$2 = _r$12;
 42833  			crsa = _tuple$2[0];
 42834  			err = _tuple$2[1];
 42835  			if (!($interfaceIsEqual(err, $ifaceNil))) {
 42836  				$s = -1; return err;
 42837  			}
 42838  			fd.isConnected = true;
 42839  			$s = 10; continue;
 42840  		/* } else { */ case 9:
 42841  			err$2 = fd.init();
 42842  			if (!($interfaceIsEqual(err$2, $ifaceNil))) {
 42843  				$s = -1; return err$2;
 42844  			}
 42845  		/* } */ case 10:
 42846  		_tuple$3 = syscall.Getsockname(fd.pfd.Sysfd);
 42847  		lsa = _tuple$3[0];
 42848  		/* */ if (!($interfaceIsEqual(crsa, $ifaceNil))) { $s = 13; continue; }
 42849  		/* */ $s = 14; continue;
 42850  		/* if (!($interfaceIsEqual(crsa, $ifaceNil))) { */ case 13:
 42851  			_r$13 = fd.addrFunc()(lsa); /* */ $s = 16; case 16: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; }
 42852  			_arg = _r$13;
 42853  			_r$14 = fd.addrFunc()(crsa); /* */ $s = 17; case 17: if($c) { $c = false; _r$14 = _r$14.$blk(); } if (_r$14 && _r$14.$blk !== undefined) { break s; }
 42854  			_arg$1 = _r$14;
 42855  			$r = fd.setAddr(_arg, _arg$1); /* */ $s = 18; case 18: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 42856  			$s = 15; continue;
 42857  		/* } else { */ case 14:
 42858  			_tuple$4 = syscall.Getpeername(fd.pfd.Sysfd);
 42859  			rsa = _tuple$4[0];
 42860  			/* */ if (!($interfaceIsEqual(rsa, $ifaceNil))) { $s = 19; continue; }
 42861  			/* */ $s = 20; continue;
 42862  			/* if (!($interfaceIsEqual(rsa, $ifaceNil))) { */ case 19:
 42863  				_r$15 = fd.addrFunc()(lsa); /* */ $s = 22; case 22: if($c) { $c = false; _r$15 = _r$15.$blk(); } if (_r$15 && _r$15.$blk !== undefined) { break s; }
 42864  				_arg$2 = _r$15;
 42865  				_r$16 = fd.addrFunc()(rsa); /* */ $s = 23; case 23: if($c) { $c = false; _r$16 = _r$16.$blk(); } if (_r$16 && _r$16.$blk !== undefined) { break s; }
 42866  				_arg$3 = _r$16;
 42867  				$r = fd.setAddr(_arg$2, _arg$3); /* */ $s = 24; case 24: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 42868  				$s = 21; continue;
 42869  			/* } else { */ case 20:
 42870  				_r$17 = fd.addrFunc()(lsa); /* */ $s = 25; case 25: if($c) { $c = false; _r$17 = _r$17.$blk(); } if (_r$17 && _r$17.$blk !== undefined) { break s; }
 42871  				$r = fd.setAddr(_r$17, raddr); /* */ $s = 26; case 26: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 42872  			/* } */ case 21:
 42873  		/* } */ case 15:
 42874  		$s = -1; return $ifaceNil;
 42875  		/* */ } return; } if ($f === undefined) { $f = { $blk: netFD.ptr.prototype.dial }; } $f._arg = _arg; $f._arg$1 = _arg$1; $f._arg$2 = _arg$2; $f._arg$3 = _arg$3; $f._r$10 = _r$10; $f._r$11 = _r$11; $f._r$12 = _r$12; $f._r$13 = _r$13; $f._r$14 = _r$14; $f._r$15 = _r$15; $f._r$16 = _r$16; $f._r$17 = _r$17; $f._r$9 = _r$9; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f._tuple$4 = _tuple$4; $f.crsa = crsa; $f.ctx = ctx; $f.err = err; $f.err$1 = err$1; $f.err$2 = err$2; $f.fd = fd; $f.laddr = laddr; $f.lsa = lsa; $f.raddr = raddr; $f.rsa = rsa; $f.$s = $s; $f.$r = $r; return $f;
 42876  	};
 42877  	netFD.prototype.dial = function(ctx, laddr, raddr) { return this.$val.dial(ctx, laddr, raddr); };
 42878  	netFD.ptr.prototype.listenStream = function(laddr, backlog) {
 42879  		var _r$10, _r$11, _r$12, _r$9, _tuple, _tuple$1, backlog, err, err$1, err$2, err$3, err$4, fd, laddr, lsa, lsa$1, $s, $r;
 42880  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$10 = $f._r$10; _r$11 = $f._r$11; _r$12 = $f._r$12; _r$9 = $f._r$9; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; backlog = $f.backlog; err = $f.err; err$1 = $f.err$1; err$2 = $f.err$2; err$3 = $f.err$3; err$4 = $f.err$4; fd = $f.fd; laddr = $f.laddr; lsa = $f.lsa; lsa$1 = $f.lsa$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 42881  		fd = this;
 42882  		err = setDefaultListenerSockopts(fd.pfd.Sysfd);
 42883  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 42884  			$s = -1; return err;
 42885  		}
 42886  		_r$9 = laddr.sockaddr(fd.family); /* */ $s = 1; case 1: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 42887  		_tuple = _r$9;
 42888  		lsa = _tuple[0];
 42889  		err$1 = _tuple[1];
 42890  		/* */ if (!($interfaceIsEqual(err$1, $ifaceNil))) { $s = 2; continue; }
 42891  		/* */ if (!($interfaceIsEqual(lsa, $ifaceNil))) { $s = 3; continue; }
 42892  		/* */ $s = 4; continue;
 42893  		/* if (!($interfaceIsEqual(err$1, $ifaceNil))) { */ case 2:
 42894  			$s = -1; return err$1;
 42895  		/* } else if (!($interfaceIsEqual(lsa, $ifaceNil))) { */ case 3:
 42896  			_r$10 = syscall.Bind(fd.pfd.Sysfd, lsa); /* */ $s = 5; case 5: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
 42897  			err$2 = _r$10;
 42898  			if (!($interfaceIsEqual(err$2, $ifaceNil))) {
 42899  				$s = -1; return os.NewSyscallError("bind", err$2);
 42900  			}
 42901  		/* } */ case 4:
 42902  		_r$11 = listenFunc(fd.pfd.Sysfd, backlog); /* */ $s = 6; case 6: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; }
 42903  		err$3 = _r$11;
 42904  		if (!($interfaceIsEqual(err$3, $ifaceNil))) {
 42905  			$s = -1; return os.NewSyscallError("listen", err$3);
 42906  		}
 42907  		err$4 = fd.init();
 42908  		if (!($interfaceIsEqual(err$4, $ifaceNil))) {
 42909  			$s = -1; return err$4;
 42910  		}
 42911  		_tuple$1 = syscall.Getsockname(fd.pfd.Sysfd);
 42912  		lsa$1 = _tuple$1[0];
 42913  		_r$12 = fd.addrFunc()(lsa$1); /* */ $s = 7; case 7: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; }
 42914  		$r = fd.setAddr(_r$12, $ifaceNil); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 42915  		$s = -1; return $ifaceNil;
 42916  		/* */ } return; } if ($f === undefined) { $f = { $blk: netFD.ptr.prototype.listenStream }; } $f._r$10 = _r$10; $f._r$11 = _r$11; $f._r$12 = _r$12; $f._r$9 = _r$9; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.backlog = backlog; $f.err = err; $f.err$1 = err$1; $f.err$2 = err$2; $f.err$3 = err$3; $f.err$4 = err$4; $f.fd = fd; $f.laddr = laddr; $f.lsa = lsa; $f.lsa$1 = lsa$1; $f.$s = $s; $f.$r = $r; return $f;
 42917  	};
 42918  	netFD.prototype.listenStream = function(laddr, backlog) { return this.$val.listenStream(laddr, backlog); };
 42919  	netFD.ptr.prototype.listenDatagram = function(laddr) {
 42920  		var _1, _r$10, _r$11, _r$9, _ref, _tuple, _tuple$1, addr, addr$1, err, err$1, err$2, err$3, fd, laddr, lsa, lsa$1, $s, $r;
 42921  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _r$10 = $f._r$10; _r$11 = $f._r$11; _r$9 = $f._r$9; _ref = $f._ref; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; addr = $f.addr; addr$1 = $f.addr$1; err = $f.err; err$1 = $f.err$1; err$2 = $f.err$2; err$3 = $f.err$3; fd = $f.fd; laddr = $f.laddr; lsa = $f.lsa; lsa$1 = $f.lsa$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 42922  		addr = [addr];
 42923  		fd = this;
 42924  		_ref = laddr;
 42925  		if ($assertType(_ref, ptrType$5, true)[1]) {
 42926  			addr$1 = _ref.$val;
 42927  			if (!(addr$1.IP === IP.nil) && addr$1.IP.IsMulticast()) {
 42928  				err = setDefaultMulticastSockopts(fd.pfd.Sysfd);
 42929  				if (!($interfaceIsEqual(err, $ifaceNil))) {
 42930  					$s = -1; return err;
 42931  				}
 42932  				addr[0] = $clone(addr$1, UDPAddr);
 42933  				_1 = fd.family;
 42934  				if (_1 === (2)) {
 42935  					addr[0].IP = $pkg.IPv4zero;
 42936  				} else if (_1 === (10)) {
 42937  					addr[0].IP = $pkg.IPv6unspecified;
 42938  				}
 42939  				laddr = addr[0];
 42940  			}
 42941  		}
 42942  		_r$9 = laddr.sockaddr(fd.family); /* */ $s = 1; case 1: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 42943  		_tuple = _r$9;
 42944  		lsa = _tuple[0];
 42945  		err$1 = _tuple[1];
 42946  		/* */ if (!($interfaceIsEqual(err$1, $ifaceNil))) { $s = 2; continue; }
 42947  		/* */ if (!($interfaceIsEqual(lsa, $ifaceNil))) { $s = 3; continue; }
 42948  		/* */ $s = 4; continue;
 42949  		/* if (!($interfaceIsEqual(err$1, $ifaceNil))) { */ case 2:
 42950  			$s = -1; return err$1;
 42951  		/* } else if (!($interfaceIsEqual(lsa, $ifaceNil))) { */ case 3:
 42952  			_r$10 = syscall.Bind(fd.pfd.Sysfd, lsa); /* */ $s = 5; case 5: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
 42953  			err$2 = _r$10;
 42954  			if (!($interfaceIsEqual(err$2, $ifaceNil))) {
 42955  				$s = -1; return os.NewSyscallError("bind", err$2);
 42956  			}
 42957  		/* } */ case 4:
 42958  		err$3 = fd.init();
 42959  		if (!($interfaceIsEqual(err$3, $ifaceNil))) {
 42960  			$s = -1; return err$3;
 42961  		}
 42962  		_tuple$1 = syscall.Getsockname(fd.pfd.Sysfd);
 42963  		lsa$1 = _tuple$1[0];
 42964  		_r$11 = fd.addrFunc()(lsa$1); /* */ $s = 6; case 6: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; }
 42965  		$r = fd.setAddr(_r$11, $ifaceNil); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 42966  		$s = -1; return $ifaceNil;
 42967  		/* */ } return; } if ($f === undefined) { $f = { $blk: netFD.ptr.prototype.listenDatagram }; } $f._1 = _1; $f._r$10 = _r$10; $f._r$11 = _r$11; $f._r$9 = _r$9; $f._ref = _ref; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.addr = addr; $f.addr$1 = addr$1; $f.err = err; $f.err$1 = err$1; $f.err$2 = err$2; $f.err$3 = err$3; $f.fd = fd; $f.laddr = laddr; $f.lsa = lsa; $f.lsa$1 = lsa$1; $f.$s = $s; $f.$r = $r; return $f;
 42968  	};
 42969  	netFD.prototype.listenDatagram = function(laddr) { return this.$val.listenDatagram(laddr); };
 42970  	setDefaultSockopts = function(s, family, sotype, ipv6only$1) {
 42971  		var family, ipv6only$1, s, sotype;
 42972  		if ((family === 10) && !((sotype === 3))) {
 42973  			syscall.SetsockoptInt(s, 41, 26, boolint(ipv6only$1));
 42974  		}
 42975  		return os.NewSyscallError("setsockopt", syscall.SetsockoptInt(s, 1, 6, 1));
 42976  	};
 42977  	setDefaultListenerSockopts = function(s) {
 42978  		var s;
 42979  		return os.NewSyscallError("setsockopt", syscall.SetsockoptInt(s, 1, 2, 1));
 42980  	};
 42981  	setDefaultMulticastSockopts = function(s) {
 42982  		var s;
 42983  		return os.NewSyscallError("setsockopt", syscall.SetsockoptInt(s, 1, 2, 1));
 42984  	};
 42985  	boolint = function(b) {
 42986  		var b;
 42987  		if (b) {
 42988  			return 1;
 42989  		}
 42990  		return 0;
 42991  	};
 42992  	setReadBuffer = function(fd, bytes) {
 42993  		var _r$9, bytes, err, fd, $s, $r;
 42994  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$9 = $f._r$9; bytes = $f.bytes; err = $f.err; fd = $f.fd; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 42995  		_r$9 = fd.pfd.SetsockoptInt(1, 8, bytes); /* */ $s = 1; case 1: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 42996  		err = _r$9;
 42997  		runtime.KeepAlive(fd);
 42998  		$s = -1; return wrapSyscallError("setsockopt", err);
 42999  		/* */ } return; } if ($f === undefined) { $f = { $blk: setReadBuffer }; } $f._r$9 = _r$9; $f.bytes = bytes; $f.err = err; $f.fd = fd; $f.$s = $s; $f.$r = $r; return $f;
 43000  	};
 43001  	setWriteBuffer = function(fd, bytes) {
 43002  		var _r$9, bytes, err, fd, $s, $r;
 43003  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$9 = $f._r$9; bytes = $f.bytes; err = $f.err; fd = $f.fd; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 43004  		_r$9 = fd.pfd.SetsockoptInt(1, 7, bytes); /* */ $s = 1; case 1: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 43005  		err = _r$9;
 43006  		runtime.KeepAlive(fd);
 43007  		$s = -1; return wrapSyscallError("setsockopt", err);
 43008  		/* */ } return; } if ($f === undefined) { $f = { $blk: setWriteBuffer }; } $f._r$9 = _r$9; $f.bytes = bytes; $f.err = err; $f.fd = fd; $f.$s = $s; $f.$r = $r; return $f;
 43009  	};
 43010  	setKeepAlive = function(fd, keepalive) {
 43011  		var _r$9, err, fd, keepalive, $s, $r;
 43012  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$9 = $f._r$9; err = $f.err; fd = $f.fd; keepalive = $f.keepalive; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 43013  		_r$9 = fd.pfd.SetsockoptInt(1, 9, boolint(keepalive)); /* */ $s = 1; case 1: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 43014  		err = _r$9;
 43015  		runtime.KeepAlive(fd);
 43016  		$s = -1; return wrapSyscallError("setsockopt", err);
 43017  		/* */ } return; } if ($f === undefined) { $f = { $blk: setKeepAlive }; } $f._r$9 = _r$9; $f.err = err; $f.fd = fd; $f.keepalive = keepalive; $f.$s = $s; $f.$r = $r; return $f;
 43018  	};
 43019  	setLinger = function(fd, sec) {
 43020  		var _r$9, err, fd, l, sec, $s, $r;
 43021  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$9 = $f._r$9; err = $f.err; fd = $f.fd; l = $f.l; sec = $f.sec; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 43022  		l = [l];
 43023  		l[0] = new syscall.Linger.ptr(0, 0);
 43024  		if (sec >= 0) {
 43025  			l[0].Onoff = 1;
 43026  			l[0].Linger = ((sec >> 0));
 43027  		} else {
 43028  			l[0].Onoff = 0;
 43029  			l[0].Linger = 0;
 43030  		}
 43031  		_r$9 = fd.pfd.SetsockoptLinger(1, 13, l[0]); /* */ $s = 1; case 1: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 43032  		err = _r$9;
 43033  		runtime.KeepAlive(fd);
 43034  		$s = -1; return wrapSyscallError("setsockopt", err);
 43035  		/* */ } return; } if ($f === undefined) { $f = { $blk: setLinger }; } $f._r$9 = _r$9; $f.err = err; $f.fd = fd; $f.l = l; $f.sec = sec; $f.$s = $s; $f.$r = $r; return $f;
 43036  	};
 43037  	TCPAddr.ptr.prototype.Network = function() {
 43038  		var a;
 43039  		a = this;
 43040  		return "tcp";
 43041  	};
 43042  	TCPAddr.prototype.Network = function() { return this.$val.Network(); };
 43043  	TCPAddr.ptr.prototype.String = function() {
 43044  		var a, ip;
 43045  		a = this;
 43046  		if (a === ptrType$7.nil) {
 43047  			return "<nil>";
 43048  		}
 43049  		ip = ipEmptyString(a.IP);
 43050  		if (!(a.Zone === "")) {
 43051  			return JoinHostPort(ip + "%" + a.Zone, itoa(a.Port));
 43052  		}
 43053  		return JoinHostPort(ip, itoa(a.Port));
 43054  	};
 43055  	TCPAddr.prototype.String = function() { return this.$val.String(); };
 43056  	TCPAddr.ptr.prototype.isWildcard = function() {
 43057  		var a;
 43058  		a = this;
 43059  		if (a === ptrType$7.nil || a.IP === IP.nil) {
 43060  			return true;
 43061  		}
 43062  		return a.IP.IsUnspecified();
 43063  	};
 43064  	TCPAddr.prototype.isWildcard = function() { return this.$val.isWildcard(); };
 43065  	TCPAddr.ptr.prototype.opAddr = function() {
 43066  		var a;
 43067  		a = this;
 43068  		if (a === ptrType$7.nil) {
 43069  			return $ifaceNil;
 43070  		}
 43071  		return a;
 43072  	};
 43073  	TCPAddr.prototype.opAddr = function() { return this.$val.opAddr(); };
 43074  	TCPConn.ptr.prototype.SyscallConn = function() {
 43075  		var _returncast, c;
 43076  		c = this;
 43077  		if (!c.conn.ok()) {
 43078  			return [$ifaceNil, new syscall.Errno(22)];
 43079  		}
 43080  		_returncast = newRawConn(c.conn.fd);
 43081  		return [_returncast[0], _returncast[1]];
 43082  	};
 43083  	TCPConn.prototype.SyscallConn = function() { return this.$val.SyscallConn(); };
 43084  	TCPConn.ptr.prototype.ReadFrom = function(r) {
 43085  		var _r$9, _tuple, c, err, n, r, $s, $r;
 43086  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$9 = $f._r$9; _tuple = $f._tuple; c = $f.c; err = $f.err; n = $f.n; r = $f.r; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 43087  		c = this;
 43088  		if (!c.conn.ok()) {
 43089  			$s = -1; return [new $Int64(0, 0), new syscall.Errno(22)];
 43090  		}
 43091  		_r$9 = c.readFrom(r); /* */ $s = 1; case 1: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 43092  		_tuple = _r$9;
 43093  		n = _tuple[0];
 43094  		err = _tuple[1];
 43095  		if (!($interfaceIsEqual(err, $ifaceNil)) && !($interfaceIsEqual(err, io.EOF))) {
 43096  			err = new OpError.ptr("readfrom", c.conn.fd.net, c.conn.fd.laddr, c.conn.fd.raddr, err);
 43097  		}
 43098  		$s = -1; return [n, err];
 43099  		/* */ } return; } if ($f === undefined) { $f = { $blk: TCPConn.ptr.prototype.ReadFrom }; } $f._r$9 = _r$9; $f._tuple = _tuple; $f.c = c; $f.err = err; $f.n = n; $f.r = r; $f.$s = $s; $f.$r = $r; return $f;
 43100  	};
 43101  	TCPConn.prototype.ReadFrom = function(r) { return this.$val.ReadFrom(r); };
 43102  	TCPConn.ptr.prototype.CloseRead = function() {
 43103  		var _r$9, c, err, $s, $r;
 43104  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$9 = $f._r$9; c = $f.c; err = $f.err; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 43105  		c = this;
 43106  		if (!c.conn.ok()) {
 43107  			$s = -1; return new syscall.Errno(22);
 43108  		}
 43109  		_r$9 = c.conn.fd.closeRead(); /* */ $s = 1; case 1: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 43110  		err = _r$9;
 43111  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 43112  			$s = -1; return new OpError.ptr("close", c.conn.fd.net, c.conn.fd.laddr, c.conn.fd.raddr, err);
 43113  		}
 43114  		$s = -1; return $ifaceNil;
 43115  		/* */ } return; } if ($f === undefined) { $f = { $blk: TCPConn.ptr.prototype.CloseRead }; } $f._r$9 = _r$9; $f.c = c; $f.err = err; $f.$s = $s; $f.$r = $r; return $f;
 43116  	};
 43117  	TCPConn.prototype.CloseRead = function() { return this.$val.CloseRead(); };
 43118  	TCPConn.ptr.prototype.CloseWrite = function() {
 43119  		var _r$9, c, err, $s, $r;
 43120  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$9 = $f._r$9; c = $f.c; err = $f.err; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 43121  		c = this;
 43122  		if (!c.conn.ok()) {
 43123  			$s = -1; return new syscall.Errno(22);
 43124  		}
 43125  		_r$9 = c.conn.fd.closeWrite(); /* */ $s = 1; case 1: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 43126  		err = _r$9;
 43127  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 43128  			$s = -1; return new OpError.ptr("close", c.conn.fd.net, c.conn.fd.laddr, c.conn.fd.raddr, err);
 43129  		}
 43130  		$s = -1; return $ifaceNil;
 43131  		/* */ } return; } if ($f === undefined) { $f = { $blk: TCPConn.ptr.prototype.CloseWrite }; } $f._r$9 = _r$9; $f.c = c; $f.err = err; $f.$s = $s; $f.$r = $r; return $f;
 43132  	};
 43133  	TCPConn.prototype.CloseWrite = function() { return this.$val.CloseWrite(); };
 43134  	TCPConn.ptr.prototype.SetLinger = function(sec) {
 43135  		var _r$9, c, err, sec, $s, $r;
 43136  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$9 = $f._r$9; c = $f.c; err = $f.err; sec = $f.sec; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 43137  		c = this;
 43138  		if (!c.conn.ok()) {
 43139  			$s = -1; return new syscall.Errno(22);
 43140  		}
 43141  		_r$9 = setLinger(c.conn.fd, sec); /* */ $s = 1; case 1: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 43142  		err = _r$9;
 43143  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 43144  			$s = -1; return new OpError.ptr("set", c.conn.fd.net, c.conn.fd.laddr, c.conn.fd.raddr, err);
 43145  		}
 43146  		$s = -1; return $ifaceNil;
 43147  		/* */ } return; } if ($f === undefined) { $f = { $blk: TCPConn.ptr.prototype.SetLinger }; } $f._r$9 = _r$9; $f.c = c; $f.err = err; $f.sec = sec; $f.$s = $s; $f.$r = $r; return $f;
 43148  	};
 43149  	TCPConn.prototype.SetLinger = function(sec) { return this.$val.SetLinger(sec); };
 43150  	TCPConn.ptr.prototype.SetKeepAlive = function(keepalive) {
 43151  		var _r$9, c, err, keepalive, $s, $r;
 43152  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$9 = $f._r$9; c = $f.c; err = $f.err; keepalive = $f.keepalive; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 43153  		c = this;
 43154  		if (!c.conn.ok()) {
 43155  			$s = -1; return new syscall.Errno(22);
 43156  		}
 43157  		_r$9 = setKeepAlive(c.conn.fd, keepalive); /* */ $s = 1; case 1: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 43158  		err = _r$9;
 43159  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 43160  			$s = -1; return new OpError.ptr("set", c.conn.fd.net, c.conn.fd.laddr, c.conn.fd.raddr, err);
 43161  		}
 43162  		$s = -1; return $ifaceNil;
 43163  		/* */ } return; } if ($f === undefined) { $f = { $blk: TCPConn.ptr.prototype.SetKeepAlive }; } $f._r$9 = _r$9; $f.c = c; $f.err = err; $f.keepalive = keepalive; $f.$s = $s; $f.$r = $r; return $f;
 43164  	};
 43165  	TCPConn.prototype.SetKeepAlive = function(keepalive) { return this.$val.SetKeepAlive(keepalive); };
 43166  	TCPConn.ptr.prototype.SetKeepAlivePeriod = function(d) {
 43167  		var _r$9, c, d, err, $s, $r;
 43168  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$9 = $f._r$9; c = $f.c; d = $f.d; err = $f.err; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 43169  		c = this;
 43170  		if (!c.conn.ok()) {
 43171  			$s = -1; return new syscall.Errno(22);
 43172  		}
 43173  		_r$9 = setKeepAlivePeriod(c.conn.fd, d); /* */ $s = 1; case 1: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 43174  		err = _r$9;
 43175  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 43176  			$s = -1; return new OpError.ptr("set", c.conn.fd.net, c.conn.fd.laddr, c.conn.fd.raddr, err);
 43177  		}
 43178  		$s = -1; return $ifaceNil;
 43179  		/* */ } return; } if ($f === undefined) { $f = { $blk: TCPConn.ptr.prototype.SetKeepAlivePeriod }; } $f._r$9 = _r$9; $f.c = c; $f.d = d; $f.err = err; $f.$s = $s; $f.$r = $r; return $f;
 43180  	};
 43181  	TCPConn.prototype.SetKeepAlivePeriod = function(d) { return this.$val.SetKeepAlivePeriod(d); };
 43182  	TCPConn.ptr.prototype.SetNoDelay = function(noDelay) {
 43183  		var _r$9, c, err, noDelay, $s, $r;
 43184  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$9 = $f._r$9; c = $f.c; err = $f.err; noDelay = $f.noDelay; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 43185  		c = this;
 43186  		if (!c.conn.ok()) {
 43187  			$s = -1; return new syscall.Errno(22);
 43188  		}
 43189  		_r$9 = setNoDelay(c.conn.fd, noDelay); /* */ $s = 1; case 1: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 43190  		err = _r$9;
 43191  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 43192  			$s = -1; return new OpError.ptr("set", c.conn.fd.net, c.conn.fd.laddr, c.conn.fd.raddr, err);
 43193  		}
 43194  		$s = -1; return $ifaceNil;
 43195  		/* */ } return; } if ($f === undefined) { $f = { $blk: TCPConn.ptr.prototype.SetNoDelay }; } $f._r$9 = _r$9; $f.c = c; $f.err = err; $f.noDelay = noDelay; $f.$s = $s; $f.$r = $r; return $f;
 43196  	};
 43197  	TCPConn.prototype.SetNoDelay = function(noDelay) { return this.$val.SetNoDelay(noDelay); };
 43198  	newTCPConn = function(fd) {
 43199  		var _r$9, c, fd, $s, $r;
 43200  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$9 = $f._r$9; c = $f.c; fd = $f.fd; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 43201  		c = new TCPConn.ptr(new conn.ptr(fd));
 43202  		_r$9 = setNoDelay(c.conn.fd, true); /* */ $s = 1; case 1: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 43203  		_r$9;
 43204  		$s = -1; return c;
 43205  		/* */ } return; } if ($f === undefined) { $f = { $blk: newTCPConn }; } $f._r$9 = _r$9; $f.c = c; $f.fd = fd; $f.$s = $s; $f.$r = $r; return $f;
 43206  	};
 43207  	TCPListener.ptr.prototype.SyscallConn = function() {
 43208  		var _returncast, l;
 43209  		l = this;
 43210  		if (!l.ok()) {
 43211  			return [$ifaceNil, new syscall.Errno(22)];
 43212  		}
 43213  		_returncast = newRawListener(l.fd);
 43214  		return [_returncast[0], _returncast[1]];
 43215  	};
 43216  	TCPListener.prototype.SyscallConn = function() { return this.$val.SyscallConn(); };
 43217  	TCPListener.ptr.prototype.AcceptTCP = function() {
 43218  		var _r$9, _tuple, c, err, l, $s, $r;
 43219  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$9 = $f._r$9; _tuple = $f._tuple; c = $f.c; err = $f.err; l = $f.l; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 43220  		l = this;
 43221  		if (!l.ok()) {
 43222  			$s = -1; return [ptrType$10.nil, new syscall.Errno(22)];
 43223  		}
 43224  		_r$9 = l.accept(); /* */ $s = 1; case 1: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 43225  		_tuple = _r$9;
 43226  		c = _tuple[0];
 43227  		err = _tuple[1];
 43228  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 43229  			$s = -1; return [ptrType$10.nil, new OpError.ptr("accept", l.fd.net, $ifaceNil, l.fd.laddr, err)];
 43230  		}
 43231  		$s = -1; return [c, $ifaceNil];
 43232  		/* */ } return; } if ($f === undefined) { $f = { $blk: TCPListener.ptr.prototype.AcceptTCP }; } $f._r$9 = _r$9; $f._tuple = _tuple; $f.c = c; $f.err = err; $f.l = l; $f.$s = $s; $f.$r = $r; return $f;
 43233  	};
 43234  	TCPListener.prototype.AcceptTCP = function() { return this.$val.AcceptTCP(); };
 43235  	TCPListener.ptr.prototype.Accept = function() {
 43236  		var _r$9, _tuple, c, err, l, $s, $r;
 43237  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$9 = $f._r$9; _tuple = $f._tuple; c = $f.c; err = $f.err; l = $f.l; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 43238  		l = this;
 43239  		if (!l.ok()) {
 43240  			$s = -1; return [$ifaceNil, new syscall.Errno(22)];
 43241  		}
 43242  		_r$9 = l.accept(); /* */ $s = 1; case 1: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 43243  		_tuple = _r$9;
 43244  		c = _tuple[0];
 43245  		err = _tuple[1];
 43246  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 43247  			$s = -1; return [$ifaceNil, new OpError.ptr("accept", l.fd.net, $ifaceNil, l.fd.laddr, err)];
 43248  		}
 43249  		$s = -1; return [c, $ifaceNil];
 43250  		/* */ } return; } if ($f === undefined) { $f = { $blk: TCPListener.ptr.prototype.Accept }; } $f._r$9 = _r$9; $f._tuple = _tuple; $f.c = c; $f.err = err; $f.l = l; $f.$s = $s; $f.$r = $r; return $f;
 43251  	};
 43252  	TCPListener.prototype.Accept = function() { return this.$val.Accept(); };
 43253  	TCPListener.ptr.prototype.Close = function() {
 43254  		var _r$9, err, l, $s, $r;
 43255  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$9 = $f._r$9; err = $f.err; l = $f.l; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 43256  		l = this;
 43257  		if (!l.ok()) {
 43258  			$s = -1; return new syscall.Errno(22);
 43259  		}
 43260  		_r$9 = l.close(); /* */ $s = 1; case 1: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 43261  		err = _r$9;
 43262  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 43263  			$s = -1; return new OpError.ptr("close", l.fd.net, $ifaceNil, l.fd.laddr, err);
 43264  		}
 43265  		$s = -1; return $ifaceNil;
 43266  		/* */ } return; } if ($f === undefined) { $f = { $blk: TCPListener.ptr.prototype.Close }; } $f._r$9 = _r$9; $f.err = err; $f.l = l; $f.$s = $s; $f.$r = $r; return $f;
 43267  	};
 43268  	TCPListener.prototype.Close = function() { return this.$val.Close(); };
 43269  	TCPListener.ptr.prototype.Addr = function() {
 43270  		var l;
 43271  		l = this;
 43272  		return l.fd.laddr;
 43273  	};
 43274  	TCPListener.prototype.Addr = function() { return this.$val.Addr(); };
 43275  	TCPListener.ptr.prototype.SetDeadline = function(t) {
 43276  		var err, l, t;
 43277  		l = this;
 43278  		if (!l.ok()) {
 43279  			return new syscall.Errno(22);
 43280  		}
 43281  		err = l.fd.pfd.SetDeadline($clone(t, time.Time));
 43282  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 43283  			return new OpError.ptr("set", l.fd.net, $ifaceNil, l.fd.laddr, err);
 43284  		}
 43285  		return $ifaceNil;
 43286  	};
 43287  	TCPListener.prototype.SetDeadline = function(t) { return this.$val.SetDeadline(t); };
 43288  	TCPListener.ptr.prototype.File = function() {
 43289  		var _r$9, _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, err, f, l, $s, $r;
 43290  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$9 = $f._r$9; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tuple = $f._tuple; err = $f.err; f = $f.f; l = $f.l; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 43291  		f = ptrType$32.nil;
 43292  		err = $ifaceNil;
 43293  		l = this;
 43294  		if (!l.ok()) {
 43295  			_tmp = ptrType$32.nil;
 43296  			_tmp$1 = new syscall.Errno(22);
 43297  			f = _tmp;
 43298  			err = _tmp$1;
 43299  			$s = -1; return [f, err];
 43300  		}
 43301  		_r$9 = l.file(); /* */ $s = 1; case 1: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 43302  		_tuple = _r$9;
 43303  		f = _tuple[0];
 43304  		err = _tuple[1];
 43305  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 43306  			_tmp$2 = ptrType$32.nil;
 43307  			_tmp$3 = new OpError.ptr("file", l.fd.net, $ifaceNil, l.fd.laddr, err);
 43308  			f = _tmp$2;
 43309  			err = _tmp$3;
 43310  			$s = -1; return [f, err];
 43311  		}
 43312  		$s = -1; return [f, err];
 43313  		/* */ } return; } if ($f === undefined) { $f = { $blk: TCPListener.ptr.prototype.File }; } $f._r$9 = _r$9; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tuple = _tuple; $f.err = err; $f.f = f; $f.l = l; $f.$s = $s; $f.$r = $r; return $f;
 43314  	};
 43315  	TCPListener.prototype.File = function() { return this.$val.File(); };
 43316  	sockaddrToTCP = function(sa) {
 43317  		var _r$9, _ref, sa, sa$1, sa$2, x, x$1, $s, $r;
 43318  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$9 = $f._r$9; _ref = $f._ref; sa = $f.sa; sa$1 = $f.sa$1; sa$2 = $f.sa$2; x = $f.x; x$1 = $f.x$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 43319  		_ref = sa;
 43320  		/* */ if ($assertType(_ref, ptrType$33, true)[1]) { $s = 1; continue; }
 43321  		/* */ if ($assertType(_ref, ptrType$34, true)[1]) { $s = 2; continue; }
 43322  		/* */ $s = 3; continue;
 43323  		/* if ($assertType(_ref, ptrType$33, true)[1]) { */ case 1:
 43324  			sa$1 = _ref.$val;
 43325  			$s = -1; return new TCPAddr.ptr((x = $subslice(new sliceType$1(sa$1.Addr), 0), $subslice(new IP(x.$array), x.$offset, x.$offset + x.$length)), sa$1.Port, "");
 43326  		/* } else if ($assertType(_ref, ptrType$34, true)[1]) { */ case 2:
 43327  			sa$2 = _ref.$val;
 43328  			_r$9 = zoneCache.name(((sa$2.ZoneId >> 0))); /* */ $s = 4; case 4: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 43329  			$s = -1; return new TCPAddr.ptr((x$1 = $subslice(new sliceType$1(sa$2.Addr), 0), $subslice(new IP(x$1.$array), x$1.$offset, x$1.$offset + x$1.$length)), sa$2.Port, _r$9);
 43330  		/* } */ case 3:
 43331  		$s = -1; return $ifaceNil;
 43332  		/* */ } return; } if ($f === undefined) { $f = { $blk: sockaddrToTCP }; } $f._r$9 = _r$9; $f._ref = _ref; $f.sa = sa; $f.sa$1 = sa$1; $f.sa$2 = sa$2; $f.x = x; $f.x$1 = x$1; $f.$s = $s; $f.$r = $r; return $f;
 43333  	};
 43334  	TCPAddr.ptr.prototype.family = function() {
 43335  		var a;
 43336  		a = this;
 43337  		if (a === ptrType$7.nil || a.IP.$length <= 4) {
 43338  			return 2;
 43339  		}
 43340  		if (!(a.IP.To4() === IP.nil)) {
 43341  			return 2;
 43342  		}
 43343  		return 10;
 43344  	};
 43345  	TCPAddr.prototype.family = function() { return this.$val.family(); };
 43346  	TCPAddr.ptr.prototype.sockaddr = function(family) {
 43347  		var _r$9, a, family, $s, $r;
 43348  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$9 = $f._r$9; a = $f.a; family = $f.family; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 43349  		a = this;
 43350  		if (a === ptrType$7.nil) {
 43351  			$s = -1; return [$ifaceNil, $ifaceNil];
 43352  		}
 43353  		_r$9 = ipToSockaddr(family, a.IP, a.Port, a.Zone); /* */ $s = 1; case 1: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 43354  		$s = -1; return _r$9;
 43355  		/* */ } return; } if ($f === undefined) { $f = { $blk: TCPAddr.ptr.prototype.sockaddr }; } $f._r$9 = _r$9; $f.a = a; $f.family = family; $f.$s = $s; $f.$r = $r; return $f;
 43356  	};
 43357  	TCPAddr.prototype.sockaddr = function(family) { return this.$val.sockaddr(family); };
 43358  	TCPAddr.ptr.prototype.toLocal = function(net) {
 43359  		var a, net;
 43360  		a = this;
 43361  		return new TCPAddr.ptr(loopbackIP(net), a.Port, a.Zone);
 43362  	};
 43363  	TCPAddr.prototype.toLocal = function(net) { return this.$val.toLocal(net); };
 43364  	TCPConn.ptr.prototype.readFrom = function(r) {
 43365  		var _r$10, _r$9, _tuple, c, err, handled, n, r, $s, $r;
 43366  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$10 = $f._r$10; _r$9 = $f._r$9; _tuple = $f._tuple; c = $f.c; err = $f.err; handled = $f.handled; n = $f.n; r = $f.r; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 43367  		c = this;
 43368  		_r$9 = sendFile(c.conn.fd, r); /* */ $s = 1; case 1: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 43369  		_tuple = _r$9;
 43370  		n = _tuple[0];
 43371  		err = _tuple[1];
 43372  		handled = _tuple[2];
 43373  		if (handled) {
 43374  			$s = -1; return [n, err];
 43375  		}
 43376  		_r$10 = genericReadFrom(c, r); /* */ $s = 2; case 2: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
 43377  		$s = -1; return _r$10;
 43378  		/* */ } return; } if ($f === undefined) { $f = { $blk: TCPConn.ptr.prototype.readFrom }; } $f._r$10 = _r$10; $f._r$9 = _r$9; $f._tuple = _tuple; $f.c = c; $f.err = err; $f.handled = handled; $f.n = n; $f.r = r; $f.$s = $s; $f.$r = $r; return $f;
 43379  	};
 43380  	TCPConn.prototype.readFrom = function(r) { return this.$val.readFrom(r); };
 43381  	dialTCP = function(ctx, net, laddr, raddr) {
 43382  		var _r$10, _r$9, ctx, laddr, net, raddr, $s, $r;
 43383  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$10 = $f._r$10; _r$9 = $f._r$9; ctx = $f.ctx; laddr = $f.laddr; net = $f.net; raddr = $f.raddr; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 43384  		/* */ if (!(testHookDialTCP === $throwNilPointerError)) { $s = 1; continue; }
 43385  		/* */ $s = 2; continue;
 43386  		/* if (!(testHookDialTCP === $throwNilPointerError)) { */ case 1:
 43387  			_r$9 = testHookDialTCP(ctx, net, laddr, raddr); /* */ $s = 3; case 3: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 43388  			$s = -1; return _r$9;
 43389  		/* } */ case 2:
 43390  		_r$10 = doDialTCP(ctx, net, laddr, raddr); /* */ $s = 4; case 4: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
 43391  		$s = -1; return _r$10;
 43392  		/* */ } return; } if ($f === undefined) { $f = { $blk: dialTCP }; } $f._r$10 = _r$10; $f._r$9 = _r$9; $f.ctx = ctx; $f.laddr = laddr; $f.net = net; $f.raddr = raddr; $f.$s = $s; $f.$r = $r; return $f;
 43393  	};
 43394  	doDialTCP = function(ctx, net, laddr, raddr) {
 43395  		var _r$10, _r$11, _r$12, _r$9, _tuple, _tuple$1, ctx, err, fd, i, laddr, net, raddr, $s, $r;
 43396  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$10 = $f._r$10; _r$11 = $f._r$11; _r$12 = $f._r$12; _r$9 = $f._r$9; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; ctx = $f.ctx; err = $f.err; fd = $f.fd; i = $f.i; laddr = $f.laddr; net = $f.net; raddr = $f.raddr; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 43397  		_r$9 = internetSocket(ctx, net, laddr, raddr, 1, 0, "dial"); /* */ $s = 1; case 1: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 43398  		_tuple = _r$9;
 43399  		fd = _tuple[0];
 43400  		err = _tuple[1];
 43401  		i = 0;
 43402  		/* while (true) { */ case 2:
 43403  			/* if (!(i < 2 && (laddr === ptrType$7.nil || (laddr.Port === 0)) && (selfConnect(fd, err) || spuriousENOTAVAIL(err)))) { break; } */ if(!(i < 2 && (laddr === ptrType$7.nil || (laddr.Port === 0)) && (selfConnect(fd, err) || spuriousENOTAVAIL(err)))) { $s = 3; continue; }
 43404  			/* */ if ($interfaceIsEqual(err, $ifaceNil)) { $s = 4; continue; }
 43405  			/* */ $s = 5; continue;
 43406  			/* if ($interfaceIsEqual(err, $ifaceNil)) { */ case 4:
 43407  				_r$10 = fd.Close(); /* */ $s = 6; case 6: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
 43408  				_r$10;
 43409  			/* } */ case 5:
 43410  			_r$11 = internetSocket(ctx, net, laddr, raddr, 1, 0, "dial"); /* */ $s = 7; case 7: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; }
 43411  			_tuple$1 = _r$11;
 43412  			fd = _tuple$1[0];
 43413  			err = _tuple$1[1];
 43414  			i = i + (1) >> 0;
 43415  		/* } */ $s = 2; continue; case 3:
 43416  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 43417  			$s = -1; return [ptrType$10.nil, err];
 43418  		}
 43419  		_r$12 = newTCPConn(fd); /* */ $s = 8; case 8: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; }
 43420  		$s = -1; return [_r$12, $ifaceNil];
 43421  		/* */ } return; } if ($f === undefined) { $f = { $blk: doDialTCP }; } $f._r$10 = _r$10; $f._r$11 = _r$11; $f._r$12 = _r$12; $f._r$9 = _r$9; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.ctx = ctx; $f.err = err; $f.fd = fd; $f.i = i; $f.laddr = laddr; $f.net = net; $f.raddr = raddr; $f.$s = $s; $f.$r = $r; return $f;
 43422  	};
 43423  	selfConnect = function(fd, err) {
 43424  		var err, fd, l, r;
 43425  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 43426  			return false;
 43427  		}
 43428  		if ($interfaceIsEqual(fd.laddr, $ifaceNil) || $interfaceIsEqual(fd.raddr, $ifaceNil)) {
 43429  			return true;
 43430  		}
 43431  		l = $assertType(fd.laddr, ptrType$7);
 43432  		r = $assertType(fd.raddr, ptrType$7);
 43433  		return (l.Port === r.Port) && l.IP.Equal(r.IP);
 43434  	};
 43435  	spuriousENOTAVAIL = function(err) {
 43436  		var _tuple, _tuple$1, err, ok, ok$1, op, sys;
 43437  		_tuple = $assertType(err, ptrType$16, true);
 43438  		op = _tuple[0];
 43439  		ok = _tuple[1];
 43440  		if (ok) {
 43441  			err = op.Err;
 43442  		}
 43443  		_tuple$1 = $assertType(err, ptrType$49, true);
 43444  		sys = _tuple$1[0];
 43445  		ok$1 = _tuple$1[1];
 43446  		if (ok$1) {
 43447  			err = sys.Err;
 43448  		}
 43449  		return $interfaceIsEqual(err, new syscall.Errno(99));
 43450  	};
 43451  	TCPListener.ptr.prototype.ok = function() {
 43452  		var ln;
 43453  		ln = this;
 43454  		return !(ln === ptrType$54.nil) && !(ln.fd === ptrType$30.nil);
 43455  	};
 43456  	TCPListener.prototype.ok = function() { return this.$val.ok(); };
 43457  	TCPListener.ptr.prototype.accept = function() {
 43458  		var _r$10, _r$9, _tuple, err, fd, ln, $s, $r;
 43459  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$10 = $f._r$10; _r$9 = $f._r$9; _tuple = $f._tuple; err = $f.err; fd = $f.fd; ln = $f.ln; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 43460  		ln = this;
 43461  		_r$9 = ln.fd.accept(); /* */ $s = 1; case 1: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 43462  		_tuple = _r$9;
 43463  		fd = _tuple[0];
 43464  		err = _tuple[1];
 43465  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 43466  			$s = -1; return [ptrType$10.nil, err];
 43467  		}
 43468  		_r$10 = newTCPConn(fd); /* */ $s = 2; case 2: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
 43469  		$s = -1; return [_r$10, $ifaceNil];
 43470  		/* */ } return; } if ($f === undefined) { $f = { $blk: TCPListener.ptr.prototype.accept }; } $f._r$10 = _r$10; $f._r$9 = _r$9; $f._tuple = _tuple; $f.err = err; $f.fd = fd; $f.ln = ln; $f.$s = $s; $f.$r = $r; return $f;
 43471  	};
 43472  	TCPListener.prototype.accept = function() { return this.$val.accept(); };
 43473  	TCPListener.ptr.prototype.close = function() {
 43474  		var _r$9, ln, $s, $r;
 43475  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$9 = $f._r$9; ln = $f.ln; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 43476  		ln = this;
 43477  		_r$9 = ln.fd.Close(); /* */ $s = 1; case 1: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 43478  		$s = -1; return _r$9;
 43479  		/* */ } return; } if ($f === undefined) { $f = { $blk: TCPListener.ptr.prototype.close }; } $f._r$9 = _r$9; $f.ln = ln; $f.$s = $s; $f.$r = $r; return $f;
 43480  	};
 43481  	TCPListener.prototype.close = function() { return this.$val.close(); };
 43482  	TCPListener.ptr.prototype.file = function() {
 43483  		var _r$9, _tuple, err, f, ln, $s, $r;
 43484  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$9 = $f._r$9; _tuple = $f._tuple; err = $f.err; f = $f.f; ln = $f.ln; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 43485  		ln = this;
 43486  		_r$9 = ln.fd.dup(); /* */ $s = 1; case 1: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 43487  		_tuple = _r$9;
 43488  		f = _tuple[0];
 43489  		err = _tuple[1];
 43490  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 43491  			$s = -1; return [ptrType$32.nil, err];
 43492  		}
 43493  		$s = -1; return [f, $ifaceNil];
 43494  		/* */ } return; } if ($f === undefined) { $f = { $blk: TCPListener.ptr.prototype.file }; } $f._r$9 = _r$9; $f._tuple = _tuple; $f.err = err; $f.f = f; $f.ln = ln; $f.$s = $s; $f.$r = $r; return $f;
 43495  	};
 43496  	TCPListener.prototype.file = function() { return this.$val.file(); };
 43497  	setNoDelay = function(fd, noDelay) {
 43498  		var _r$9, err, fd, noDelay, $s, $r;
 43499  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$9 = $f._r$9; err = $f.err; fd = $f.fd; noDelay = $f.noDelay; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 43500  		_r$9 = fd.pfd.SetsockoptInt(6, 1, boolint(noDelay)); /* */ $s = 1; case 1: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 43501  		err = _r$9;
 43502  		runtime.KeepAlive(fd);
 43503  		$s = -1; return wrapSyscallError("setsockopt", err);
 43504  		/* */ } return; } if ($f === undefined) { $f = { $blk: setNoDelay }; } $f._r$9 = _r$9; $f.err = err; $f.fd = fd; $f.noDelay = noDelay; $f.$s = $s; $f.$r = $r; return $f;
 43505  	};
 43506  	setKeepAlivePeriod = function(fd, d) {
 43507  		var _r$10, _r$9, d, err, err$1, fd, secs, x, $s, $r;
 43508  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$10 = $f._r$10; _r$9 = $f._r$9; d = $f.d; err = $f.err; err$1 = $f.err$1; fd = $f.fd; secs = $f.secs; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 43509  		d = (x = new time.Duration(0, 999999999), new time.Duration(d.$high + x.$high, d.$low + x.$low));
 43510  		secs = ((d.Seconds() >> 0));
 43511  		_r$9 = fd.pfd.SetsockoptInt(6, 5, secs); /* */ $s = 1; case 1: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 43512  		err = _r$9;
 43513  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 43514  			$s = -1; return wrapSyscallError("setsockopt", err);
 43515  		}
 43516  		_r$10 = fd.pfd.SetsockoptInt(6, 4, secs); /* */ $s = 2; case 2: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
 43517  		err$1 = _r$10;
 43518  		runtime.KeepAlive(fd);
 43519  		$s = -1; return wrapSyscallError("setsockopt", err$1);
 43520  		/* */ } return; } if ($f === undefined) { $f = { $blk: setKeepAlivePeriod }; } $f._r$10 = _r$10; $f._r$9 = _r$9; $f.d = d; $f.err = err; $f.err$1 = err$1; $f.fd = fd; $f.secs = secs; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
 43521  	};
 43522  	UDPAddr.ptr.prototype.Network = function() {
 43523  		var a;
 43524  		a = this;
 43525  		return "udp";
 43526  	};
 43527  	UDPAddr.prototype.Network = function() { return this.$val.Network(); };
 43528  	UDPAddr.ptr.prototype.String = function() {
 43529  		var a, ip;
 43530  		a = this;
 43531  		if (a === ptrType$5.nil) {
 43532  			return "<nil>";
 43533  		}
 43534  		ip = ipEmptyString(a.IP);
 43535  		if (!(a.Zone === "")) {
 43536  			return JoinHostPort(ip + "%" + a.Zone, itoa(a.Port));
 43537  		}
 43538  		return JoinHostPort(ip, itoa(a.Port));
 43539  	};
 43540  	UDPAddr.prototype.String = function() { return this.$val.String(); };
 43541  	UDPAddr.ptr.prototype.isWildcard = function() {
 43542  		var a;
 43543  		a = this;
 43544  		if (a === ptrType$5.nil || a.IP === IP.nil) {
 43545  			return true;
 43546  		}
 43547  		return a.IP.IsUnspecified();
 43548  	};
 43549  	UDPAddr.prototype.isWildcard = function() { return this.$val.isWildcard(); };
 43550  	UDPAddr.ptr.prototype.opAddr = function() {
 43551  		var a;
 43552  		a = this;
 43553  		if (a === ptrType$5.nil) {
 43554  			return $ifaceNil;
 43555  		}
 43556  		return a;
 43557  	};
 43558  	UDPAddr.prototype.opAddr = function() { return this.$val.opAddr(); };
 43559  	UDPConn.ptr.prototype.SyscallConn = function() {
 43560  		var _returncast, c;
 43561  		c = this;
 43562  		if (!c.conn.ok()) {
 43563  			return [$ifaceNil, new syscall.Errno(22)];
 43564  		}
 43565  		_returncast = newRawConn(c.conn.fd);
 43566  		return [_returncast[0], _returncast[1]];
 43567  	};
 43568  	UDPConn.prototype.SyscallConn = function() { return this.$val.SyscallConn(); };
 43569  	UDPConn.ptr.prototype.ReadFromUDP = function(b) {
 43570  		var _r$9, _tuple, addr, b, c, err, n, $s, $r;
 43571  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$9 = $f._r$9; _tuple = $f._tuple; addr = $f.addr; b = $f.b; c = $f.c; err = $f.err; n = $f.n; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 43572  		c = this;
 43573  		if (!c.conn.ok()) {
 43574  			$s = -1; return [0, ptrType$5.nil, new syscall.Errno(22)];
 43575  		}
 43576  		_r$9 = c.readFrom(b); /* */ $s = 1; case 1: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 43577  		_tuple = _r$9;
 43578  		n = _tuple[0];
 43579  		addr = _tuple[1];
 43580  		err = _tuple[2];
 43581  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 43582  			err = new OpError.ptr("read", c.conn.fd.net, c.conn.fd.laddr, c.conn.fd.raddr, err);
 43583  		}
 43584  		$s = -1; return [n, addr, err];
 43585  		/* */ } return; } if ($f === undefined) { $f = { $blk: UDPConn.ptr.prototype.ReadFromUDP }; } $f._r$9 = _r$9; $f._tuple = _tuple; $f.addr = addr; $f.b = b; $f.c = c; $f.err = err; $f.n = n; $f.$s = $s; $f.$r = $r; return $f;
 43586  	};
 43587  	UDPConn.prototype.ReadFromUDP = function(b) { return this.$val.ReadFromUDP(b); };
 43588  	UDPConn.ptr.prototype.ReadFrom = function(b) {
 43589  		var _r$9, _tuple, addr, b, c, err, n, $s, $r;
 43590  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$9 = $f._r$9; _tuple = $f._tuple; addr = $f.addr; b = $f.b; c = $f.c; err = $f.err; n = $f.n; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 43591  		c = this;
 43592  		if (!c.conn.ok()) {
 43593  			$s = -1; return [0, $ifaceNil, new syscall.Errno(22)];
 43594  		}
 43595  		_r$9 = c.readFrom(b); /* */ $s = 1; case 1: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 43596  		_tuple = _r$9;
 43597  		n = _tuple[0];
 43598  		addr = _tuple[1];
 43599  		err = _tuple[2];
 43600  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 43601  			err = new OpError.ptr("read", c.conn.fd.net, c.conn.fd.laddr, c.conn.fd.raddr, err);
 43602  		}
 43603  		if (addr === ptrType$5.nil) {
 43604  			$s = -1; return [n, $ifaceNil, err];
 43605  		}
 43606  		$s = -1; return [n, addr, err];
 43607  		/* */ } return; } if ($f === undefined) { $f = { $blk: UDPConn.ptr.prototype.ReadFrom }; } $f._r$9 = _r$9; $f._tuple = _tuple; $f.addr = addr; $f.b = b; $f.c = c; $f.err = err; $f.n = n; $f.$s = $s; $f.$r = $r; return $f;
 43608  	};
 43609  	UDPConn.prototype.ReadFrom = function(b) { return this.$val.ReadFrom(b); };
 43610  	UDPConn.ptr.prototype.ReadMsgUDP = function(b, oob) {
 43611  		var _r$9, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tuple, addr, b, c, err, flags, n, oob, oobn, $s, $r;
 43612  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$9 = $f._r$9; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tmp$4 = $f._tmp$4; _tuple = $f._tuple; addr = $f.addr; b = $f.b; c = $f.c; err = $f.err; flags = $f.flags; n = $f.n; oob = $f.oob; oobn = $f.oobn; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 43613  		n = 0;
 43614  		oobn = 0;
 43615  		flags = 0;
 43616  		addr = ptrType$5.nil;
 43617  		err = $ifaceNil;
 43618  		c = this;
 43619  		if (!c.conn.ok()) {
 43620  			_tmp = 0;
 43621  			_tmp$1 = 0;
 43622  			_tmp$2 = 0;
 43623  			_tmp$3 = ptrType$5.nil;
 43624  			_tmp$4 = new syscall.Errno(22);
 43625  			n = _tmp;
 43626  			oobn = _tmp$1;
 43627  			flags = _tmp$2;
 43628  			addr = _tmp$3;
 43629  			err = _tmp$4;
 43630  			$s = -1; return [n, oobn, flags, addr, err];
 43631  		}
 43632  		_r$9 = c.readMsg(b, oob); /* */ $s = 1; case 1: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 43633  		_tuple = _r$9;
 43634  		n = _tuple[0];
 43635  		oobn = _tuple[1];
 43636  		flags = _tuple[2];
 43637  		addr = _tuple[3];
 43638  		err = _tuple[4];
 43639  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 43640  			err = new OpError.ptr("read", c.conn.fd.net, c.conn.fd.laddr, c.conn.fd.raddr, err);
 43641  		}
 43642  		$s = -1; return [n, oobn, flags, addr, err];
 43643  		/* */ } return; } if ($f === undefined) { $f = { $blk: UDPConn.ptr.prototype.ReadMsgUDP }; } $f._r$9 = _r$9; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tmp$4 = _tmp$4; $f._tuple = _tuple; $f.addr = addr; $f.b = b; $f.c = c; $f.err = err; $f.flags = flags; $f.n = n; $f.oob = oob; $f.oobn = oobn; $f.$s = $s; $f.$r = $r; return $f;
 43644  	};
 43645  	UDPConn.prototype.ReadMsgUDP = function(b, oob) { return this.$val.ReadMsgUDP(b, oob); };
 43646  	UDPConn.ptr.prototype.WriteToUDP = function(b, addr) {
 43647  		var _r$9, _tuple, addr, b, c, err, n, $s, $r;
 43648  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$9 = $f._r$9; _tuple = $f._tuple; addr = $f.addr; b = $f.b; c = $f.c; err = $f.err; n = $f.n; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 43649  		c = this;
 43650  		if (!c.conn.ok()) {
 43651  			$s = -1; return [0, new syscall.Errno(22)];
 43652  		}
 43653  		_r$9 = c.writeTo(b, addr); /* */ $s = 1; case 1: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 43654  		_tuple = _r$9;
 43655  		n = _tuple[0];
 43656  		err = _tuple[1];
 43657  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 43658  			err = new OpError.ptr("write", c.conn.fd.net, c.conn.fd.laddr, addr.opAddr(), err);
 43659  		}
 43660  		$s = -1; return [n, err];
 43661  		/* */ } return; } if ($f === undefined) { $f = { $blk: UDPConn.ptr.prototype.WriteToUDP }; } $f._r$9 = _r$9; $f._tuple = _tuple; $f.addr = addr; $f.b = b; $f.c = c; $f.err = err; $f.n = n; $f.$s = $s; $f.$r = $r; return $f;
 43662  	};
 43663  	UDPConn.prototype.WriteToUDP = function(b, addr) { return this.$val.WriteToUDP(b, addr); };
 43664  	UDPConn.ptr.prototype.WriteTo = function(b, addr) {
 43665  		var _r$9, _tuple, _tuple$1, a, addr, b, c, err, n, ok, $s, $r;
 43666  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$9 = $f._r$9; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; a = $f.a; addr = $f.addr; b = $f.b; c = $f.c; err = $f.err; n = $f.n; ok = $f.ok; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 43667  		c = this;
 43668  		if (!c.conn.ok()) {
 43669  			$s = -1; return [0, new syscall.Errno(22)];
 43670  		}
 43671  		_tuple = $assertType(addr, ptrType$5, true);
 43672  		a = _tuple[0];
 43673  		ok = _tuple[1];
 43674  		if (!ok) {
 43675  			$s = -1; return [0, new OpError.ptr("write", c.conn.fd.net, c.conn.fd.laddr, addr, new syscall.Errno(22))];
 43676  		}
 43677  		_r$9 = c.writeTo(b, a); /* */ $s = 1; case 1: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 43678  		_tuple$1 = _r$9;
 43679  		n = _tuple$1[0];
 43680  		err = _tuple$1[1];
 43681  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 43682  			err = new OpError.ptr("write", c.conn.fd.net, c.conn.fd.laddr, a.opAddr(), err);
 43683  		}
 43684  		$s = -1; return [n, err];
 43685  		/* */ } return; } if ($f === undefined) { $f = { $blk: UDPConn.ptr.prototype.WriteTo }; } $f._r$9 = _r$9; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.a = a; $f.addr = addr; $f.b = b; $f.c = c; $f.err = err; $f.n = n; $f.ok = ok; $f.$s = $s; $f.$r = $r; return $f;
 43686  	};
 43687  	UDPConn.prototype.WriteTo = function(b, addr) { return this.$val.WriteTo(b, addr); };
 43688  	UDPConn.ptr.prototype.WriteMsgUDP = function(b, oob, addr) {
 43689  		var _r$9, _tmp, _tmp$1, _tmp$2, _tuple, addr, b, c, err, n, oob, oobn, $s, $r;
 43690  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$9 = $f._r$9; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tuple = $f._tuple; addr = $f.addr; b = $f.b; c = $f.c; err = $f.err; n = $f.n; oob = $f.oob; oobn = $f.oobn; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 43691  		n = 0;
 43692  		oobn = 0;
 43693  		err = $ifaceNil;
 43694  		c = this;
 43695  		if (!c.conn.ok()) {
 43696  			_tmp = 0;
 43697  			_tmp$1 = 0;
 43698  			_tmp$2 = new syscall.Errno(22);
 43699  			n = _tmp;
 43700  			oobn = _tmp$1;
 43701  			err = _tmp$2;
 43702  			$s = -1; return [n, oobn, err];
 43703  		}
 43704  		_r$9 = c.writeMsg(b, oob, addr); /* */ $s = 1; case 1: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 43705  		_tuple = _r$9;
 43706  		n = _tuple[0];
 43707  		oobn = _tuple[1];
 43708  		err = _tuple[2];
 43709  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 43710  			err = new OpError.ptr("write", c.conn.fd.net, c.conn.fd.laddr, addr.opAddr(), err);
 43711  		}
 43712  		$s = -1; return [n, oobn, err];
 43713  		/* */ } return; } if ($f === undefined) { $f = { $blk: UDPConn.ptr.prototype.WriteMsgUDP }; } $f._r$9 = _r$9; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tuple = _tuple; $f.addr = addr; $f.b = b; $f.c = c; $f.err = err; $f.n = n; $f.oob = oob; $f.oobn = oobn; $f.$s = $s; $f.$r = $r; return $f;
 43714  	};
 43715  	UDPConn.prototype.WriteMsgUDP = function(b, oob, addr) { return this.$val.WriteMsgUDP(b, oob, addr); };
 43716  	newUDPConn = function(fd) {
 43717  		var fd;
 43718  		return new UDPConn.ptr(new conn.ptr(fd));
 43719  	};
 43720  	DialUDP = function(network, laddr, raddr) {
 43721  		var _1, _r$9, _tuple, c, err, laddr, network, raddr, $s, $r;
 43722  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _r$9 = $f._r$9; _tuple = $f._tuple; c = $f.c; err = $f.err; laddr = $f.laddr; network = $f.network; raddr = $f.raddr; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 43723  		_1 = network;
 43724  		if (_1 === ("udp") || _1 === ("udp4") || _1 === ("udp6")) {
 43725  		} else {
 43726  			$s = -1; return [ptrType$55.nil, new OpError.ptr("dial", network, laddr.opAddr(), raddr.opAddr(), new UnknownNetworkError((network)))];
 43727  		}
 43728  		if (raddr === ptrType$5.nil) {
 43729  			$s = -1; return [ptrType$55.nil, new OpError.ptr("dial", network, laddr.opAddr(), $ifaceNil, errMissingAddress)];
 43730  		}
 43731  		_r$9 = dialUDP(context.Background(), network, laddr, raddr); /* */ $s = 1; case 1: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 43732  		_tuple = _r$9;
 43733  		c = _tuple[0];
 43734  		err = _tuple[1];
 43735  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 43736  			$s = -1; return [ptrType$55.nil, new OpError.ptr("dial", network, laddr.opAddr(), raddr.opAddr(), err)];
 43737  		}
 43738  		$s = -1; return [c, $ifaceNil];
 43739  		/* */ } return; } if ($f === undefined) { $f = { $blk: DialUDP }; } $f._1 = _1; $f._r$9 = _r$9; $f._tuple = _tuple; $f.c = c; $f.err = err; $f.laddr = laddr; $f.network = network; $f.raddr = raddr; $f.$s = $s; $f.$r = $r; return $f;
 43740  	};
 43741  	$pkg.DialUDP = DialUDP;
 43742  	sockaddrToUDP = function(sa) {
 43743  		var _r$9, _ref, sa, sa$1, sa$2, x, x$1, $s, $r;
 43744  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$9 = $f._r$9; _ref = $f._ref; sa = $f.sa; sa$1 = $f.sa$1; sa$2 = $f.sa$2; x = $f.x; x$1 = $f.x$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 43745  		_ref = sa;
 43746  		/* */ if ($assertType(_ref, ptrType$33, true)[1]) { $s = 1; continue; }
 43747  		/* */ if ($assertType(_ref, ptrType$34, true)[1]) { $s = 2; continue; }
 43748  		/* */ $s = 3; continue;
 43749  		/* if ($assertType(_ref, ptrType$33, true)[1]) { */ case 1:
 43750  			sa$1 = _ref.$val;
 43751  			$s = -1; return new UDPAddr.ptr((x = $subslice(new sliceType$1(sa$1.Addr), 0), $subslice(new IP(x.$array), x.$offset, x.$offset + x.$length)), sa$1.Port, "");
 43752  		/* } else if ($assertType(_ref, ptrType$34, true)[1]) { */ case 2:
 43753  			sa$2 = _ref.$val;
 43754  			_r$9 = zoneCache.name(((sa$2.ZoneId >> 0))); /* */ $s = 4; case 4: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 43755  			$s = -1; return new UDPAddr.ptr((x$1 = $subslice(new sliceType$1(sa$2.Addr), 0), $subslice(new IP(x$1.$array), x$1.$offset, x$1.$offset + x$1.$length)), sa$2.Port, _r$9);
 43756  		/* } */ case 3:
 43757  		$s = -1; return $ifaceNil;
 43758  		/* */ } return; } if ($f === undefined) { $f = { $blk: sockaddrToUDP }; } $f._r$9 = _r$9; $f._ref = _ref; $f.sa = sa; $f.sa$1 = sa$1; $f.sa$2 = sa$2; $f.x = x; $f.x$1 = x$1; $f.$s = $s; $f.$r = $r; return $f;
 43759  	};
 43760  	UDPAddr.ptr.prototype.family = function() {
 43761  		var a;
 43762  		a = this;
 43763  		if (a === ptrType$5.nil || a.IP.$length <= 4) {
 43764  			return 2;
 43765  		}
 43766  		if (!(a.IP.To4() === IP.nil)) {
 43767  			return 2;
 43768  		}
 43769  		return 10;
 43770  	};
 43771  	UDPAddr.prototype.family = function() { return this.$val.family(); };
 43772  	UDPAddr.ptr.prototype.sockaddr = function(family) {
 43773  		var _r$9, a, family, $s, $r;
 43774  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$9 = $f._r$9; a = $f.a; family = $f.family; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 43775  		a = this;
 43776  		if (a === ptrType$5.nil) {
 43777  			$s = -1; return [$ifaceNil, $ifaceNil];
 43778  		}
 43779  		_r$9 = ipToSockaddr(family, a.IP, a.Port, a.Zone); /* */ $s = 1; case 1: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 43780  		$s = -1; return _r$9;
 43781  		/* */ } return; } if ($f === undefined) { $f = { $blk: UDPAddr.ptr.prototype.sockaddr }; } $f._r$9 = _r$9; $f.a = a; $f.family = family; $f.$s = $s; $f.$r = $r; return $f;
 43782  	};
 43783  	UDPAddr.prototype.sockaddr = function(family) { return this.$val.sockaddr(family); };
 43784  	UDPAddr.ptr.prototype.toLocal = function(net) {
 43785  		var a, net;
 43786  		a = this;
 43787  		return new UDPAddr.ptr(loopbackIP(net), a.Port, a.Zone);
 43788  	};
 43789  	UDPAddr.prototype.toLocal = function(net) { return this.$val.toLocal(net); };
 43790  	UDPConn.ptr.prototype.readFrom = function(b) {
 43791  		var _r$10, _r$9, _ref, _tuple, addr, b, c, err, n, sa, sa$1, sa$2, x, x$1, $s, $r;
 43792  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$10 = $f._r$10; _r$9 = $f._r$9; _ref = $f._ref; _tuple = $f._tuple; addr = $f.addr; b = $f.b; c = $f.c; err = $f.err; n = $f.n; sa = $f.sa; sa$1 = $f.sa$1; sa$2 = $f.sa$2; x = $f.x; x$1 = $f.x$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 43793  		c = this;
 43794  		addr = ptrType$5.nil;
 43795  		_r$9 = c.conn.fd.readFrom(b); /* */ $s = 1; case 1: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 43796  		_tuple = _r$9;
 43797  		n = _tuple[0];
 43798  		sa = _tuple[1];
 43799  		err = _tuple[2];
 43800  		_ref = sa;
 43801  		/* */ if ($assertType(_ref, ptrType$33, true)[1]) { $s = 2; continue; }
 43802  		/* */ if ($assertType(_ref, ptrType$34, true)[1]) { $s = 3; continue; }
 43803  		/* */ $s = 4; continue;
 43804  		/* if ($assertType(_ref, ptrType$33, true)[1]) { */ case 2:
 43805  			sa$1 = _ref.$val;
 43806  			addr = new UDPAddr.ptr((x = $subslice(new sliceType$1(sa$1.Addr), 0), $subslice(new IP(x.$array), x.$offset, x.$offset + x.$length)), sa$1.Port, "");
 43807  			$s = 4; continue;
 43808  		/* } else if ($assertType(_ref, ptrType$34, true)[1]) { */ case 3:
 43809  			sa$2 = _ref.$val;
 43810  			_r$10 = zoneCache.name(((sa$2.ZoneId >> 0))); /* */ $s = 5; case 5: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
 43811  			addr = new UDPAddr.ptr((x$1 = $subslice(new sliceType$1(sa$2.Addr), 0), $subslice(new IP(x$1.$array), x$1.$offset, x$1.$offset + x$1.$length)), sa$2.Port, _r$10);
 43812  		/* } */ case 4:
 43813  		$s = -1; return [n, addr, err];
 43814  		/* */ } return; } if ($f === undefined) { $f = { $blk: UDPConn.ptr.prototype.readFrom }; } $f._r$10 = _r$10; $f._r$9 = _r$9; $f._ref = _ref; $f._tuple = _tuple; $f.addr = addr; $f.b = b; $f.c = c; $f.err = err; $f.n = n; $f.sa = sa; $f.sa$1 = sa$1; $f.sa$2 = sa$2; $f.x = x; $f.x$1 = x$1; $f.$s = $s; $f.$r = $r; return $f;
 43815  	};
 43816  	UDPConn.prototype.readFrom = function(b) { return this.$val.readFrom(b); };
 43817  	UDPConn.ptr.prototype.readMsg = function(b, oob) {
 43818  		var _r$10, _r$9, _ref, _tuple, addr, b, c, err, flags, n, oob, oobn, sa, sa$1, sa$2, x, x$1, $s, $r;
 43819  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$10 = $f._r$10; _r$9 = $f._r$9; _ref = $f._ref; _tuple = $f._tuple; addr = $f.addr; b = $f.b; c = $f.c; err = $f.err; flags = $f.flags; n = $f.n; oob = $f.oob; oobn = $f.oobn; sa = $f.sa; sa$1 = $f.sa$1; sa$2 = $f.sa$2; x = $f.x; x$1 = $f.x$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 43820  		n = 0;
 43821  		oobn = 0;
 43822  		flags = 0;
 43823  		addr = ptrType$5.nil;
 43824  		err = $ifaceNil;
 43825  		c = this;
 43826  		sa = $ifaceNil;
 43827  		_r$9 = c.conn.fd.readMsg(b, oob); /* */ $s = 1; case 1: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 43828  		_tuple = _r$9;
 43829  		n = _tuple[0];
 43830  		oobn = _tuple[1];
 43831  		flags = _tuple[2];
 43832  		sa = _tuple[3];
 43833  		err = _tuple[4];
 43834  		_ref = sa;
 43835  		/* */ if ($assertType(_ref, ptrType$33, true)[1]) { $s = 2; continue; }
 43836  		/* */ if ($assertType(_ref, ptrType$34, true)[1]) { $s = 3; continue; }
 43837  		/* */ $s = 4; continue;
 43838  		/* if ($assertType(_ref, ptrType$33, true)[1]) { */ case 2:
 43839  			sa$1 = _ref.$val;
 43840  			addr = new UDPAddr.ptr((x = $subslice(new sliceType$1(sa$1.Addr), 0), $subslice(new IP(x.$array), x.$offset, x.$offset + x.$length)), sa$1.Port, "");
 43841  			$s = 4; continue;
 43842  		/* } else if ($assertType(_ref, ptrType$34, true)[1]) { */ case 3:
 43843  			sa$2 = _ref.$val;
 43844  			_r$10 = zoneCache.name(((sa$2.ZoneId >> 0))); /* */ $s = 5; case 5: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
 43845  			addr = new UDPAddr.ptr((x$1 = $subslice(new sliceType$1(sa$2.Addr), 0), $subslice(new IP(x$1.$array), x$1.$offset, x$1.$offset + x$1.$length)), sa$2.Port, _r$10);
 43846  		/* } */ case 4:
 43847  		$s = -1; return [n, oobn, flags, addr, err];
 43848  		/* */ } return; } if ($f === undefined) { $f = { $blk: UDPConn.ptr.prototype.readMsg }; } $f._r$10 = _r$10; $f._r$9 = _r$9; $f._ref = _ref; $f._tuple = _tuple; $f.addr = addr; $f.b = b; $f.c = c; $f.err = err; $f.flags = flags; $f.n = n; $f.oob = oob; $f.oobn = oobn; $f.sa = sa; $f.sa$1 = sa$1; $f.sa$2 = sa$2; $f.x = x; $f.x$1 = x$1; $f.$s = $s; $f.$r = $r; return $f;
 43849  	};
 43850  	UDPConn.prototype.readMsg = function(b, oob) { return this.$val.readMsg(b, oob); };
 43851  	UDPConn.ptr.prototype.writeTo = function(b, addr) {
 43852  		var _r$10, _r$9, _tuple, addr, b, c, err, sa, $s, $r;
 43853  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$10 = $f._r$10; _r$9 = $f._r$9; _tuple = $f._tuple; addr = $f.addr; b = $f.b; c = $f.c; err = $f.err; sa = $f.sa; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 43854  		c = this;
 43855  		if (c.conn.fd.isConnected) {
 43856  			$s = -1; return [0, $pkg.ErrWriteToConnected];
 43857  		}
 43858  		if (addr === ptrType$5.nil) {
 43859  			$s = -1; return [0, errMissingAddress];
 43860  		}
 43861  		_r$9 = addr.sockaddr(c.conn.fd.family); /* */ $s = 1; case 1: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 43862  		_tuple = _r$9;
 43863  		sa = _tuple[0];
 43864  		err = _tuple[1];
 43865  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 43866  			$s = -1; return [0, err];
 43867  		}
 43868  		_r$10 = c.conn.fd.writeTo(b, sa); /* */ $s = 2; case 2: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
 43869  		$s = -1; return _r$10;
 43870  		/* */ } return; } if ($f === undefined) { $f = { $blk: UDPConn.ptr.prototype.writeTo }; } $f._r$10 = _r$10; $f._r$9 = _r$9; $f._tuple = _tuple; $f.addr = addr; $f.b = b; $f.c = c; $f.err = err; $f.sa = sa; $f.$s = $s; $f.$r = $r; return $f;
 43871  	};
 43872  	UDPConn.prototype.writeTo = function(b, addr) { return this.$val.writeTo(b, addr); };
 43873  	UDPConn.ptr.prototype.writeMsg = function(b, oob, addr) {
 43874  		var _r$10, _r$9, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tuple, _tuple$1, addr, b, c, err, n, oob, oobn, sa, $s, $r;
 43875  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$10 = $f._r$10; _r$9 = $f._r$9; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tmp$4 = $f._tmp$4; _tmp$5 = $f._tmp$5; _tmp$6 = $f._tmp$6; _tmp$7 = $f._tmp$7; _tmp$8 = $f._tmp$8; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; addr = $f.addr; b = $f.b; c = $f.c; err = $f.err; n = $f.n; oob = $f.oob; oobn = $f.oobn; sa = $f.sa; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 43876  		n = 0;
 43877  		oobn = 0;
 43878  		err = $ifaceNil;
 43879  		c = this;
 43880  		if (c.conn.fd.isConnected && !(addr === ptrType$5.nil)) {
 43881  			_tmp = 0;
 43882  			_tmp$1 = 0;
 43883  			_tmp$2 = $pkg.ErrWriteToConnected;
 43884  			n = _tmp;
 43885  			oobn = _tmp$1;
 43886  			err = _tmp$2;
 43887  			$s = -1; return [n, oobn, err];
 43888  		}
 43889  		if (!c.conn.fd.isConnected && addr === ptrType$5.nil) {
 43890  			_tmp$3 = 0;
 43891  			_tmp$4 = 0;
 43892  			_tmp$5 = errMissingAddress;
 43893  			n = _tmp$3;
 43894  			oobn = _tmp$4;
 43895  			err = _tmp$5;
 43896  			$s = -1; return [n, oobn, err];
 43897  		}
 43898  		_r$9 = addr.sockaddr(c.conn.fd.family); /* */ $s = 1; case 1: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 43899  		_tuple = _r$9;
 43900  		sa = _tuple[0];
 43901  		err = _tuple[1];
 43902  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 43903  			_tmp$6 = 0;
 43904  			_tmp$7 = 0;
 43905  			_tmp$8 = err;
 43906  			n = _tmp$6;
 43907  			oobn = _tmp$7;
 43908  			err = _tmp$8;
 43909  			$s = -1; return [n, oobn, err];
 43910  		}
 43911  		_r$10 = c.conn.fd.writeMsg(b, oob, sa); /* */ $s = 2; case 2: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
 43912  		_tuple$1 = _r$10;
 43913  		n = _tuple$1[0];
 43914  		oobn = _tuple$1[1];
 43915  		err = _tuple$1[2];
 43916  		$s = -1; return [n, oobn, err];
 43917  		/* */ } return; } if ($f === undefined) { $f = { $blk: UDPConn.ptr.prototype.writeMsg }; } $f._r$10 = _r$10; $f._r$9 = _r$9; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tmp$4 = _tmp$4; $f._tmp$5 = _tmp$5; $f._tmp$6 = _tmp$6; $f._tmp$7 = _tmp$7; $f._tmp$8 = _tmp$8; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.addr = addr; $f.b = b; $f.c = c; $f.err = err; $f.n = n; $f.oob = oob; $f.oobn = oobn; $f.sa = sa; $f.$s = $s; $f.$r = $r; return $f;
 43918  	};
 43919  	UDPConn.prototype.writeMsg = function(b, oob, addr) { return this.$val.writeMsg(b, oob, addr); };
 43920  	dialUDP = function(ctx, net, laddr, raddr) {
 43921  		var _r$9, _tuple, ctx, err, fd, laddr, net, raddr, $s, $r;
 43922  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$9 = $f._r$9; _tuple = $f._tuple; ctx = $f.ctx; err = $f.err; fd = $f.fd; laddr = $f.laddr; net = $f.net; raddr = $f.raddr; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 43923  		_r$9 = internetSocket(ctx, net, laddr, raddr, 2, 0, "dial"); /* */ $s = 1; case 1: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 43924  		_tuple = _r$9;
 43925  		fd = _tuple[0];
 43926  		err = _tuple[1];
 43927  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 43928  			$s = -1; return [ptrType$55.nil, err];
 43929  		}
 43930  		$s = -1; return [newUDPConn(fd), $ifaceNil];
 43931  		/* */ } return; } if ($f === undefined) { $f = { $blk: dialUDP }; } $f._r$9 = _r$9; $f._tuple = _tuple; $f.ctx = ctx; $f.err = err; $f.fd = fd; $f.laddr = laddr; $f.net = net; $f.raddr = raddr; $f.$s = $s; $f.$r = $r; return $f;
 43932  	};
 43933  	UnixAddr.ptr.prototype.Network = function() {
 43934  		var a;
 43935  		a = this;
 43936  		return a.Net;
 43937  	};
 43938  	UnixAddr.prototype.Network = function() { return this.$val.Network(); };
 43939  	UnixAddr.ptr.prototype.String = function() {
 43940  		var a;
 43941  		a = this;
 43942  		if (a === ptrType$11.nil) {
 43943  			return "<nil>";
 43944  		}
 43945  		return a.Name;
 43946  	};
 43947  	UnixAddr.prototype.String = function() { return this.$val.String(); };
 43948  	UnixAddr.ptr.prototype.isWildcard = function() {
 43949  		var a;
 43950  		a = this;
 43951  		return a === ptrType$11.nil || a.Name === "";
 43952  	};
 43953  	UnixAddr.prototype.isWildcard = function() { return this.$val.isWildcard(); };
 43954  	UnixAddr.ptr.prototype.opAddr = function() {
 43955  		var a;
 43956  		a = this;
 43957  		if (a === ptrType$11.nil) {
 43958  			return $ifaceNil;
 43959  		}
 43960  		return a;
 43961  	};
 43962  	UnixAddr.prototype.opAddr = function() { return this.$val.opAddr(); };
 43963  	ResolveUnixAddr = function(network, address) {
 43964  		var _1, address, network;
 43965  		_1 = network;
 43966  		if (_1 === ("unix") || _1 === ("unixgram") || _1 === ("unixpacket")) {
 43967  			return [new UnixAddr.ptr(address, network), $ifaceNil];
 43968  		} else {
 43969  			return [ptrType$11.nil, new UnknownNetworkError((network))];
 43970  		}
 43971  	};
 43972  	$pkg.ResolveUnixAddr = ResolveUnixAddr;
 43973  	UnixConn.ptr.prototype.SyscallConn = function() {
 43974  		var _returncast, c;
 43975  		c = this;
 43976  		if (!c.conn.ok()) {
 43977  			return [$ifaceNil, new syscall.Errno(22)];
 43978  		}
 43979  		_returncast = newRawConn(c.conn.fd);
 43980  		return [_returncast[0], _returncast[1]];
 43981  	};
 43982  	UnixConn.prototype.SyscallConn = function() { return this.$val.SyscallConn(); };
 43983  	UnixConn.ptr.prototype.CloseRead = function() {
 43984  		var _r$9, c, err, $s, $r;
 43985  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$9 = $f._r$9; c = $f.c; err = $f.err; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 43986  		c = this;
 43987  		if (!c.conn.ok()) {
 43988  			$s = -1; return new syscall.Errno(22);
 43989  		}
 43990  		_r$9 = c.conn.fd.closeRead(); /* */ $s = 1; case 1: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 43991  		err = _r$9;
 43992  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 43993  			$s = -1; return new OpError.ptr("close", c.conn.fd.net, c.conn.fd.laddr, c.conn.fd.raddr, err);
 43994  		}
 43995  		$s = -1; return $ifaceNil;
 43996  		/* */ } return; } if ($f === undefined) { $f = { $blk: UnixConn.ptr.prototype.CloseRead }; } $f._r$9 = _r$9; $f.c = c; $f.err = err; $f.$s = $s; $f.$r = $r; return $f;
 43997  	};
 43998  	UnixConn.prototype.CloseRead = function() { return this.$val.CloseRead(); };
 43999  	UnixConn.ptr.prototype.CloseWrite = function() {
 44000  		var _r$9, c, err, $s, $r;
 44001  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$9 = $f._r$9; c = $f.c; err = $f.err; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 44002  		c = this;
 44003  		if (!c.conn.ok()) {
 44004  			$s = -1; return new syscall.Errno(22);
 44005  		}
 44006  		_r$9 = c.conn.fd.closeWrite(); /* */ $s = 1; case 1: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 44007  		err = _r$9;
 44008  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 44009  			$s = -1; return new OpError.ptr("close", c.conn.fd.net, c.conn.fd.laddr, c.conn.fd.raddr, err);
 44010  		}
 44011  		$s = -1; return $ifaceNil;
 44012  		/* */ } return; } if ($f === undefined) { $f = { $blk: UnixConn.ptr.prototype.CloseWrite }; } $f._r$9 = _r$9; $f.c = c; $f.err = err; $f.$s = $s; $f.$r = $r; return $f;
 44013  	};
 44014  	UnixConn.prototype.CloseWrite = function() { return this.$val.CloseWrite(); };
 44015  	UnixConn.ptr.prototype.ReadFromUnix = function(b) {
 44016  		var _r$9, _tuple, addr, b, c, err, n, $s, $r;
 44017  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$9 = $f._r$9; _tuple = $f._tuple; addr = $f.addr; b = $f.b; c = $f.c; err = $f.err; n = $f.n; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 44018  		c = this;
 44019  		if (!c.conn.ok()) {
 44020  			$s = -1; return [0, ptrType$11.nil, new syscall.Errno(22)];
 44021  		}
 44022  		_r$9 = c.readFrom(b); /* */ $s = 1; case 1: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 44023  		_tuple = _r$9;
 44024  		n = _tuple[0];
 44025  		addr = _tuple[1];
 44026  		err = _tuple[2];
 44027  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 44028  			err = new OpError.ptr("read", c.conn.fd.net, c.conn.fd.laddr, c.conn.fd.raddr, err);
 44029  		}
 44030  		$s = -1; return [n, addr, err];
 44031  		/* */ } return; } if ($f === undefined) { $f = { $blk: UnixConn.ptr.prototype.ReadFromUnix }; } $f._r$9 = _r$9; $f._tuple = _tuple; $f.addr = addr; $f.b = b; $f.c = c; $f.err = err; $f.n = n; $f.$s = $s; $f.$r = $r; return $f;
 44032  	};
 44033  	UnixConn.prototype.ReadFromUnix = function(b) { return this.$val.ReadFromUnix(b); };
 44034  	UnixConn.ptr.prototype.ReadFrom = function(b) {
 44035  		var _r$9, _tuple, addr, b, c, err, n, $s, $r;
 44036  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$9 = $f._r$9; _tuple = $f._tuple; addr = $f.addr; b = $f.b; c = $f.c; err = $f.err; n = $f.n; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 44037  		c = this;
 44038  		if (!c.conn.ok()) {
 44039  			$s = -1; return [0, $ifaceNil, new syscall.Errno(22)];
 44040  		}
 44041  		_r$9 = c.readFrom(b); /* */ $s = 1; case 1: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 44042  		_tuple = _r$9;
 44043  		n = _tuple[0];
 44044  		addr = _tuple[1];
 44045  		err = _tuple[2];
 44046  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 44047  			err = new OpError.ptr("read", c.conn.fd.net, c.conn.fd.laddr, c.conn.fd.raddr, err);
 44048  		}
 44049  		if (addr === ptrType$11.nil) {
 44050  			$s = -1; return [n, $ifaceNil, err];
 44051  		}
 44052  		$s = -1; return [n, addr, err];
 44053  		/* */ } return; } if ($f === undefined) { $f = { $blk: UnixConn.ptr.prototype.ReadFrom }; } $f._r$9 = _r$9; $f._tuple = _tuple; $f.addr = addr; $f.b = b; $f.c = c; $f.err = err; $f.n = n; $f.$s = $s; $f.$r = $r; return $f;
 44054  	};
 44055  	UnixConn.prototype.ReadFrom = function(b) { return this.$val.ReadFrom(b); };
 44056  	UnixConn.ptr.prototype.ReadMsgUnix = function(b, oob) {
 44057  		var _r$9, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tuple, addr, b, c, err, flags, n, oob, oobn, $s, $r;
 44058  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$9 = $f._r$9; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tmp$4 = $f._tmp$4; _tuple = $f._tuple; addr = $f.addr; b = $f.b; c = $f.c; err = $f.err; flags = $f.flags; n = $f.n; oob = $f.oob; oobn = $f.oobn; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 44059  		n = 0;
 44060  		oobn = 0;
 44061  		flags = 0;
 44062  		addr = ptrType$11.nil;
 44063  		err = $ifaceNil;
 44064  		c = this;
 44065  		if (!c.conn.ok()) {
 44066  			_tmp = 0;
 44067  			_tmp$1 = 0;
 44068  			_tmp$2 = 0;
 44069  			_tmp$3 = ptrType$11.nil;
 44070  			_tmp$4 = new syscall.Errno(22);
 44071  			n = _tmp;
 44072  			oobn = _tmp$1;
 44073  			flags = _tmp$2;
 44074  			addr = _tmp$3;
 44075  			err = _tmp$4;
 44076  			$s = -1; return [n, oobn, flags, addr, err];
 44077  		}
 44078  		_r$9 = c.readMsg(b, oob); /* */ $s = 1; case 1: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 44079  		_tuple = _r$9;
 44080  		n = _tuple[0];
 44081  		oobn = _tuple[1];
 44082  		flags = _tuple[2];
 44083  		addr = _tuple[3];
 44084  		err = _tuple[4];
 44085  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 44086  			err = new OpError.ptr("read", c.conn.fd.net, c.conn.fd.laddr, c.conn.fd.raddr, err);
 44087  		}
 44088  		$s = -1; return [n, oobn, flags, addr, err];
 44089  		/* */ } return; } if ($f === undefined) { $f = { $blk: UnixConn.ptr.prototype.ReadMsgUnix }; } $f._r$9 = _r$9; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tmp$4 = _tmp$4; $f._tuple = _tuple; $f.addr = addr; $f.b = b; $f.c = c; $f.err = err; $f.flags = flags; $f.n = n; $f.oob = oob; $f.oobn = oobn; $f.$s = $s; $f.$r = $r; return $f;
 44090  	};
 44091  	UnixConn.prototype.ReadMsgUnix = function(b, oob) { return this.$val.ReadMsgUnix(b, oob); };
 44092  	UnixConn.ptr.prototype.WriteToUnix = function(b, addr) {
 44093  		var _r$9, _tuple, addr, b, c, err, n, $s, $r;
 44094  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$9 = $f._r$9; _tuple = $f._tuple; addr = $f.addr; b = $f.b; c = $f.c; err = $f.err; n = $f.n; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 44095  		c = this;
 44096  		if (!c.conn.ok()) {
 44097  			$s = -1; return [0, new syscall.Errno(22)];
 44098  		}
 44099  		_r$9 = c.writeTo(b, addr); /* */ $s = 1; case 1: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 44100  		_tuple = _r$9;
 44101  		n = _tuple[0];
 44102  		err = _tuple[1];
 44103  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 44104  			err = new OpError.ptr("write", c.conn.fd.net, c.conn.fd.laddr, addr.opAddr(), err);
 44105  		}
 44106  		$s = -1; return [n, err];
 44107  		/* */ } return; } if ($f === undefined) { $f = { $blk: UnixConn.ptr.prototype.WriteToUnix }; } $f._r$9 = _r$9; $f._tuple = _tuple; $f.addr = addr; $f.b = b; $f.c = c; $f.err = err; $f.n = n; $f.$s = $s; $f.$r = $r; return $f;
 44108  	};
 44109  	UnixConn.prototype.WriteToUnix = function(b, addr) { return this.$val.WriteToUnix(b, addr); };
 44110  	UnixConn.ptr.prototype.WriteTo = function(b, addr) {
 44111  		var _r$9, _tuple, _tuple$1, a, addr, b, c, err, n, ok, $s, $r;
 44112  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$9 = $f._r$9; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; a = $f.a; addr = $f.addr; b = $f.b; c = $f.c; err = $f.err; n = $f.n; ok = $f.ok; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 44113  		c = this;
 44114  		if (!c.conn.ok()) {
 44115  			$s = -1; return [0, new syscall.Errno(22)];
 44116  		}
 44117  		_tuple = $assertType(addr, ptrType$11, true);
 44118  		a = _tuple[0];
 44119  		ok = _tuple[1];
 44120  		if (!ok) {
 44121  			$s = -1; return [0, new OpError.ptr("write", c.conn.fd.net, c.conn.fd.laddr, addr, new syscall.Errno(22))];
 44122  		}
 44123  		_r$9 = c.writeTo(b, a); /* */ $s = 1; case 1: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 44124  		_tuple$1 = _r$9;
 44125  		n = _tuple$1[0];
 44126  		err = _tuple$1[1];
 44127  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 44128  			err = new OpError.ptr("write", c.conn.fd.net, c.conn.fd.laddr, a.opAddr(), err);
 44129  		}
 44130  		$s = -1; return [n, err];
 44131  		/* */ } return; } if ($f === undefined) { $f = { $blk: UnixConn.ptr.prototype.WriteTo }; } $f._r$9 = _r$9; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.a = a; $f.addr = addr; $f.b = b; $f.c = c; $f.err = err; $f.n = n; $f.ok = ok; $f.$s = $s; $f.$r = $r; return $f;
 44132  	};
 44133  	UnixConn.prototype.WriteTo = function(b, addr) { return this.$val.WriteTo(b, addr); };
 44134  	UnixConn.ptr.prototype.WriteMsgUnix = function(b, oob, addr) {
 44135  		var _r$9, _tmp, _tmp$1, _tmp$2, _tuple, addr, b, c, err, n, oob, oobn, $s, $r;
 44136  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$9 = $f._r$9; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tuple = $f._tuple; addr = $f.addr; b = $f.b; c = $f.c; err = $f.err; n = $f.n; oob = $f.oob; oobn = $f.oobn; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 44137  		n = 0;
 44138  		oobn = 0;
 44139  		err = $ifaceNil;
 44140  		c = this;
 44141  		if (!c.conn.ok()) {
 44142  			_tmp = 0;
 44143  			_tmp$1 = 0;
 44144  			_tmp$2 = new syscall.Errno(22);
 44145  			n = _tmp;
 44146  			oobn = _tmp$1;
 44147  			err = _tmp$2;
 44148  			$s = -1; return [n, oobn, err];
 44149  		}
 44150  		_r$9 = c.writeMsg(b, oob, addr); /* */ $s = 1; case 1: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 44151  		_tuple = _r$9;
 44152  		n = _tuple[0];
 44153  		oobn = _tuple[1];
 44154  		err = _tuple[2];
 44155  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 44156  			err = new OpError.ptr("write", c.conn.fd.net, c.conn.fd.laddr, addr.opAddr(), err);
 44157  		}
 44158  		$s = -1; return [n, oobn, err];
 44159  		/* */ } return; } if ($f === undefined) { $f = { $blk: UnixConn.ptr.prototype.WriteMsgUnix }; } $f._r$9 = _r$9; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tuple = _tuple; $f.addr = addr; $f.b = b; $f.c = c; $f.err = err; $f.n = n; $f.oob = oob; $f.oobn = oobn; $f.$s = $s; $f.$r = $r; return $f;
 44160  	};
 44161  	UnixConn.prototype.WriteMsgUnix = function(b, oob, addr) { return this.$val.WriteMsgUnix(b, oob, addr); };
 44162  	newUnixConn = function(fd) {
 44163  		var fd;
 44164  		return new UnixConn.ptr(new conn.ptr(fd));
 44165  	};
 44166  	unixSocket = function(ctx, net, laddr, raddr, mode) {
 44167  		var _1, _2, _r$10, _r$11, _r$9, _tuple, _v, _v$1, ctx, err, fd, laddr, mode, net, raddr, sotype, $s, $r;
 44168  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _2 = $f._2; _r$10 = $f._r$10; _r$11 = $f._r$11; _r$9 = $f._r$9; _tuple = $f._tuple; _v = $f._v; _v$1 = $f._v$1; ctx = $f.ctx; err = $f.err; fd = $f.fd; laddr = $f.laddr; mode = $f.mode; net = $f.net; raddr = $f.raddr; sotype = $f.sotype; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 44169  		sotype = 0;
 44170  		_1 = net;
 44171  		if (_1 === ("unix")) {
 44172  			sotype = 1;
 44173  		} else if (_1 === ("unixgram")) {
 44174  			sotype = 2;
 44175  		} else if (_1 === ("unixpacket")) {
 44176  			sotype = 5;
 44177  		} else {
 44178  			$s = -1; return [ptrType$30.nil, new UnknownNetworkError((net))];
 44179  		}
 44180  			_2 = mode;
 44181  			/* */ if (_2 === ("dial")) { $s = 2; continue; }
 44182  			/* */ if (_2 === ("listen")) { $s = 3; continue; }
 44183  			/* */ $s = 4; continue;
 44184  			/* if (_2 === ("dial")) { */ case 2:
 44185  				if (!(!($interfaceIsEqual(laddr, $ifaceNil)))) { _v = false; $s = 8; continue s; }
 44186  				_r$9 = laddr.isWildcard(); /* */ $s = 9; case 9: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 44187  				_v = _r$9; case 8:
 44188  				/* */ if (_v) { $s = 6; continue; }
 44189  				/* */ $s = 7; continue;
 44190  				/* if (_v) { */ case 6:
 44191  					laddr = $ifaceNil;
 44192  				/* } */ case 7:
 44193  				if (!(!($interfaceIsEqual(raddr, $ifaceNil)))) { _v$1 = false; $s = 12; continue s; }
 44194  				_r$10 = raddr.isWildcard(); /* */ $s = 13; case 13: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
 44195  				_v$1 = _r$10; case 12:
 44196  				/* */ if (_v$1) { $s = 10; continue; }
 44197  				/* */ $s = 11; continue;
 44198  				/* if (_v$1) { */ case 10:
 44199  					raddr = $ifaceNil;
 44200  				/* } */ case 11:
 44201  				if ($interfaceIsEqual(raddr, $ifaceNil) && (!((sotype === 2)) || $interfaceIsEqual(laddr, $ifaceNil))) {
 44202  					$s = -1; return [ptrType$30.nil, errMissingAddress];
 44203  				}
 44204  				$s = 5; continue;
 44205  			/* } else if (_2 === ("listen")) { */ case 3:
 44206  				$s = 5; continue;
 44207  			/* } else { */ case 4:
 44208  				$s = -1; return [ptrType$30.nil, errors.New("unknown mode: " + mode)];
 44209  			/* } */ case 5:
 44210  		case 1:
 44211  		_r$11 = socket(ctx, net, 1, sotype, 0, false, laddr, raddr); /* */ $s = 14; case 14: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; }
 44212  		_tuple = _r$11;
 44213  		fd = _tuple[0];
 44214  		err = _tuple[1];
 44215  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 44216  			$s = -1; return [ptrType$30.nil, err];
 44217  		}
 44218  		$s = -1; return [fd, $ifaceNil];
 44219  		/* */ } return; } if ($f === undefined) { $f = { $blk: unixSocket }; } $f._1 = _1; $f._2 = _2; $f._r$10 = _r$10; $f._r$11 = _r$11; $f._r$9 = _r$9; $f._tuple = _tuple; $f._v = _v; $f._v$1 = _v$1; $f.ctx = ctx; $f.err = err; $f.fd = fd; $f.laddr = laddr; $f.mode = mode; $f.net = net; $f.raddr = raddr; $f.sotype = sotype; $f.$s = $s; $f.$r = $r; return $f;
 44220  	};
 44221  	sockaddrToUnix = function(sa) {
 44222  		var _tuple, ok, s, sa;
 44223  		_tuple = $assertType(sa, ptrType$35, true);
 44224  		s = _tuple[0];
 44225  		ok = _tuple[1];
 44226  		if (ok) {
 44227  			return new UnixAddr.ptr(s.Name, "unix");
 44228  		}
 44229  		return $ifaceNil;
 44230  	};
 44231  	sockaddrToUnixgram = function(sa) {
 44232  		var _tuple, ok, s, sa;
 44233  		_tuple = $assertType(sa, ptrType$35, true);
 44234  		s = _tuple[0];
 44235  		ok = _tuple[1];
 44236  		if (ok) {
 44237  			return new UnixAddr.ptr(s.Name, "unixgram");
 44238  		}
 44239  		return $ifaceNil;
 44240  	};
 44241  	sockaddrToUnixpacket = function(sa) {
 44242  		var _tuple, ok, s, sa;
 44243  		_tuple = $assertType(sa, ptrType$35, true);
 44244  		s = _tuple[0];
 44245  		ok = _tuple[1];
 44246  		if (ok) {
 44247  			return new UnixAddr.ptr(s.Name, "unixpacket");
 44248  		}
 44249  		return $ifaceNil;
 44250  	};
 44251  	sotypeToNet = function(sotype) {
 44252  		var _1, sotype;
 44253  		_1 = sotype;
 44254  		if (_1 === (1)) {
 44255  			return "unix";
 44256  		} else if (_1 === (2)) {
 44257  			return "unixgram";
 44258  		} else if (_1 === (5)) {
 44259  			return "unixpacket";
 44260  		} else {
 44261  			$panic(new $String("sotypeToNet unknown socket type"));
 44262  		}
 44263  	};
 44264  	UnixAddr.ptr.prototype.family = function() {
 44265  		var a;
 44266  		a = this;
 44267  		return 1;
 44268  	};
 44269  	UnixAddr.prototype.family = function() { return this.$val.family(); };
 44270  	UnixAddr.ptr.prototype.sockaddr = function(family) {
 44271  		var a, family;
 44272  		a = this;
 44273  		if (a === ptrType$11.nil) {
 44274  			return [$ifaceNil, $ifaceNil];
 44275  		}
 44276  		return [new syscall.SockaddrUnix.ptr(a.Name, new syscall.RawSockaddrUnix.ptr(0, arrayType$6.zero())), $ifaceNil];
 44277  	};
 44278  	UnixAddr.prototype.sockaddr = function(family) { return this.$val.sockaddr(family); };
 44279  	UnixAddr.ptr.prototype.toLocal = function(net) {
 44280  		var a, net;
 44281  		a = this;
 44282  		return a;
 44283  	};
 44284  	UnixAddr.prototype.toLocal = function(net) { return this.$val.toLocal(net); };
 44285  	UnixConn.ptr.prototype.readFrom = function(b) {
 44286  		var _r$9, _ref, _tuple, addr, b, c, err, n, sa, sa$1, $s, $r;
 44287  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$9 = $f._r$9; _ref = $f._ref; _tuple = $f._tuple; addr = $f.addr; b = $f.b; c = $f.c; err = $f.err; n = $f.n; sa = $f.sa; sa$1 = $f.sa$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 44288  		c = this;
 44289  		addr = ptrType$11.nil;
 44290  		_r$9 = c.conn.fd.readFrom(b); /* */ $s = 1; case 1: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 44291  		_tuple = _r$9;
 44292  		n = _tuple[0];
 44293  		sa = _tuple[1];
 44294  		err = _tuple[2];
 44295  		_ref = sa;
 44296  		if ($assertType(_ref, ptrType$35, true)[1]) {
 44297  			sa$1 = _ref.$val;
 44298  			if (!(sa$1.Name === "")) {
 44299  				addr = new UnixAddr.ptr(sa$1.Name, sotypeToNet(c.conn.fd.sotype));
 44300  			}
 44301  		}
 44302  		$s = -1; return [n, addr, err];
 44303  		/* */ } return; } if ($f === undefined) { $f = { $blk: UnixConn.ptr.prototype.readFrom }; } $f._r$9 = _r$9; $f._ref = _ref; $f._tuple = _tuple; $f.addr = addr; $f.b = b; $f.c = c; $f.err = err; $f.n = n; $f.sa = sa; $f.sa$1 = sa$1; $f.$s = $s; $f.$r = $r; return $f;
 44304  	};
 44305  	UnixConn.prototype.readFrom = function(b) { return this.$val.readFrom(b); };
 44306  	UnixConn.ptr.prototype.readMsg = function(b, oob) {
 44307  		var _r$9, _ref, _tuple, addr, b, c, err, flags, n, oob, oobn, sa, sa$1, $s, $r;
 44308  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$9 = $f._r$9; _ref = $f._ref; _tuple = $f._tuple; addr = $f.addr; b = $f.b; c = $f.c; err = $f.err; flags = $f.flags; n = $f.n; oob = $f.oob; oobn = $f.oobn; sa = $f.sa; sa$1 = $f.sa$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 44309  		n = 0;
 44310  		oobn = 0;
 44311  		flags = 0;
 44312  		addr = ptrType$11.nil;
 44313  		err = $ifaceNil;
 44314  		c = this;
 44315  		sa = $ifaceNil;
 44316  		_r$9 = c.conn.fd.readMsg(b, oob); /* */ $s = 1; case 1: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 44317  		_tuple = _r$9;
 44318  		n = _tuple[0];
 44319  		oobn = _tuple[1];
 44320  		flags = _tuple[2];
 44321  		sa = _tuple[3];
 44322  		err = _tuple[4];
 44323  		_ref = sa;
 44324  		if ($assertType(_ref, ptrType$35, true)[1]) {
 44325  			sa$1 = _ref.$val;
 44326  			if (!(sa$1.Name === "")) {
 44327  				addr = new UnixAddr.ptr(sa$1.Name, sotypeToNet(c.conn.fd.sotype));
 44328  			}
 44329  		}
 44330  		$s = -1; return [n, oobn, flags, addr, err];
 44331  		/* */ } return; } if ($f === undefined) { $f = { $blk: UnixConn.ptr.prototype.readMsg }; } $f._r$9 = _r$9; $f._ref = _ref; $f._tuple = _tuple; $f.addr = addr; $f.b = b; $f.c = c; $f.err = err; $f.flags = flags; $f.n = n; $f.oob = oob; $f.oobn = oobn; $f.sa = sa; $f.sa$1 = sa$1; $f.$s = $s; $f.$r = $r; return $f;
 44332  	};
 44333  	UnixConn.prototype.readMsg = function(b, oob) { return this.$val.readMsg(b, oob); };
 44334  	UnixConn.ptr.prototype.writeTo = function(b, addr) {
 44335  		var _r$9, addr, b, c, sa, $s, $r;
 44336  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$9 = $f._r$9; addr = $f.addr; b = $f.b; c = $f.c; sa = $f.sa; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 44337  		c = this;
 44338  		if (c.conn.fd.isConnected) {
 44339  			$s = -1; return [0, $pkg.ErrWriteToConnected];
 44340  		}
 44341  		if (addr === ptrType$11.nil) {
 44342  			$s = -1; return [0, errMissingAddress];
 44343  		}
 44344  		if (!(addr.Net === sotypeToNet(c.conn.fd.sotype))) {
 44345  			$s = -1; return [0, new syscall.Errno(97)];
 44346  		}
 44347  		sa = new syscall.SockaddrUnix.ptr(addr.Name, new syscall.RawSockaddrUnix.ptr(0, arrayType$6.zero()));
 44348  		_r$9 = c.conn.fd.writeTo(b, sa); /* */ $s = 1; case 1: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 44349  		$s = -1; return _r$9;
 44350  		/* */ } return; } if ($f === undefined) { $f = { $blk: UnixConn.ptr.prototype.writeTo }; } $f._r$9 = _r$9; $f.addr = addr; $f.b = b; $f.c = c; $f.sa = sa; $f.$s = $s; $f.$r = $r; return $f;
 44351  	};
 44352  	UnixConn.prototype.writeTo = function(b, addr) { return this.$val.writeTo(b, addr); };
 44353  	UnixConn.ptr.prototype.writeMsg = function(b, oob, addr) {
 44354  		var _r$9, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tuple, addr, b, c, err, n, oob, oobn, sa, $s, $r;
 44355  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$9 = $f._r$9; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tmp$4 = $f._tmp$4; _tmp$5 = $f._tmp$5; _tuple = $f._tuple; addr = $f.addr; b = $f.b; c = $f.c; err = $f.err; n = $f.n; oob = $f.oob; oobn = $f.oobn; sa = $f.sa; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 44356  		n = 0;
 44357  		oobn = 0;
 44358  		err = $ifaceNil;
 44359  		c = this;
 44360  		if ((c.conn.fd.sotype === 2) && c.conn.fd.isConnected) {
 44361  			_tmp = 0;
 44362  			_tmp$1 = 0;
 44363  			_tmp$2 = $pkg.ErrWriteToConnected;
 44364  			n = _tmp;
 44365  			oobn = _tmp$1;
 44366  			err = _tmp$2;
 44367  			$s = -1; return [n, oobn, err];
 44368  		}
 44369  		sa = $ifaceNil;
 44370  		if (!(addr === ptrType$11.nil)) {
 44371  			if (!(addr.Net === sotypeToNet(c.conn.fd.sotype))) {
 44372  				_tmp$3 = 0;
 44373  				_tmp$4 = 0;
 44374  				_tmp$5 = new syscall.Errno(97);
 44375  				n = _tmp$3;
 44376  				oobn = _tmp$4;
 44377  				err = _tmp$5;
 44378  				$s = -1; return [n, oobn, err];
 44379  			}
 44380  			sa = new syscall.SockaddrUnix.ptr(addr.Name, new syscall.RawSockaddrUnix.ptr(0, arrayType$6.zero()));
 44381  		}
 44382  		_r$9 = c.conn.fd.writeMsg(b, oob, sa); /* */ $s = 1; case 1: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 44383  		_tuple = _r$9;
 44384  		n = _tuple[0];
 44385  		oobn = _tuple[1];
 44386  		err = _tuple[2];
 44387  		$s = -1; return [n, oobn, err];
 44388  		/* */ } return; } if ($f === undefined) { $f = { $blk: UnixConn.ptr.prototype.writeMsg }; } $f._r$9 = _r$9; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tmp$4 = _tmp$4; $f._tmp$5 = _tmp$5; $f._tuple = _tuple; $f.addr = addr; $f.b = b; $f.c = c; $f.err = err; $f.n = n; $f.oob = oob; $f.oobn = oobn; $f.sa = sa; $f.$s = $s; $f.$r = $r; return $f;
 44389  	};
 44390  	UnixConn.prototype.writeMsg = function(b, oob, addr) { return this.$val.writeMsg(b, oob, addr); };
 44391  	dialUnix = function(ctx, net, laddr, raddr) {
 44392  		var _r$9, _tuple, ctx, err, fd, laddr, net, raddr, $s, $r;
 44393  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$9 = $f._r$9; _tuple = $f._tuple; ctx = $f.ctx; err = $f.err; fd = $f.fd; laddr = $f.laddr; net = $f.net; raddr = $f.raddr; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 44394  		_r$9 = unixSocket(ctx, net, laddr, raddr, "dial"); /* */ $s = 1; case 1: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 44395  		_tuple = _r$9;
 44396  		fd = _tuple[0];
 44397  		err = _tuple[1];
 44398  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 44399  			$s = -1; return [ptrType$56.nil, err];
 44400  		}
 44401  		$s = -1; return [newUnixConn(fd), $ifaceNil];
 44402  		/* */ } return; } if ($f === undefined) { $f = { $blk: dialUnix }; } $f._r$9 = _r$9; $f._tuple = _tuple; $f.ctx = ctx; $f.err = err; $f.fd = fd; $f.laddr = laddr; $f.net = net; $f.raddr = raddr; $f.$s = $s; $f.$r = $r; return $f;
 44403  	};
 44404  	conn.ptr.prototype.writeBuffers = function(v) {
 44405  		var _r$9, _tuple, c, err, n, v, $s, $r;
 44406  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$9 = $f._r$9; _tuple = $f._tuple; c = $f.c; err = $f.err; n = $f.n; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 44407  		c = this;
 44408  		if (!c.ok()) {
 44409  			$s = -1; return [new $Int64(0, 0), new syscall.Errno(22)];
 44410  		}
 44411  		_r$9 = c.fd.writeBuffers(v); /* */ $s = 1; case 1: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 44412  		_tuple = _r$9;
 44413  		n = _tuple[0];
 44414  		err = _tuple[1];
 44415  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 44416  			$s = -1; return [n, new OpError.ptr("writev", c.fd.net, c.fd.laddr, c.fd.raddr, err)];
 44417  		}
 44418  		$s = -1; return [n, $ifaceNil];
 44419  		/* */ } return; } if ($f === undefined) { $f = { $blk: conn.ptr.prototype.writeBuffers }; } $f._r$9 = _r$9; $f._tuple = _tuple; $f.c = c; $f.err = err; $f.n = n; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
 44420  	};
 44421  	conn.prototype.writeBuffers = function(v) { return this.$val.writeBuffers(v); };
 44422  	netFD.ptr.prototype.writeBuffers = function(v) {
 44423  		var _ptr, _r$9, _tmp, _tmp$1, _tuple, err, fd, n, v, x, $s, $r;
 44424  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _ptr = $f._ptr; _r$9 = $f._r$9; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tuple = $f._tuple; err = $f.err; fd = $f.fd; n = $f.n; v = $f.v; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 44425  		n = new $Int64(0, 0);
 44426  		err = $ifaceNil;
 44427  		fd = this;
 44428  		_r$9 = fd.pfd.Writev(((_ptr = v, new ptrType$58(function() { return (x = _ptr.$get(), $subslice(new sliceType$17(x.$array), x.$offset, x.$offset + x.$length)); }, function($v) { _ptr.$set($subslice(new Buffers($v.$array), $v.$offset, $v.$offset + $v.$length)); }, _ptr.$target)))); /* */ $s = 1; case 1: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 44429  		_tuple = _r$9;
 44430  		n = _tuple[0];
 44431  		err = _tuple[1];
 44432  		runtime.KeepAlive(fd);
 44433  		_tmp = n;
 44434  		_tmp$1 = wrapSyscallError("writev", err);
 44435  		n = _tmp;
 44436  		err = _tmp$1;
 44437  		$s = -1; return [n, err];
 44438  		/* */ } return; } if ($f === undefined) { $f = { $blk: netFD.ptr.prototype.writeBuffers }; } $f._ptr = _ptr; $f._r$9 = _r$9; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tuple = _tuple; $f.err = err; $f.fd = fd; $f.n = n; $f.v = v; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
 44439  	};
 44440  	netFD.prototype.writeBuffers = function(v) { return this.$val.writeBuffers(v); };
 44441  	ptrType$59.methods = [{prop: "Len", name: "Len", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Swap", name: "Swap", pkg: "", typ: $funcType([$Int, $Int], [], false)}, {prop: "Less", name: "Less", pkg: "", typ: $funcType([$Int, $Int], [$Bool], false)}];
 44442  	policyTable.methods = [{prop: "Classify", name: "Classify", pkg: "", typ: $funcType([IP], [policyTableEntry], false)}];
 44443  	byMaskLength.methods = [{prop: "Len", name: "Len", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Swap", name: "Swap", pkg: "", typ: $funcType([$Int, $Int], [], false)}, {prop: "Less", name: "Less", pkg: "", typ: $funcType([$Int, $Int], [$Bool], false)}];
 44444  	ptrType$60.methods = [{prop: "canUseCgo", name: "canUseCgo", pkg: "net", typ: $funcType([], [$Bool], false)}, {prop: "hostLookupOrder", name: "hostLookupOrder", pkg: "net", typ: $funcType([$String], [hostLookupOrder], false)}];
 44445  	ptrType$61.methods = [{prop: "Dial", name: "Dial", pkg: "", typ: $funcType([$String, $String], [Conn, $error], false)}, {prop: "deadline", name: "deadline", pkg: "net", typ: $funcType([context.Context, time.Time], [time.Time], false)}, {prop: "resolver", name: "resolver", pkg: "net", typ: $funcType([], [ptrType$6], false)}, {prop: "fallbackDelay", name: "fallbackDelay", pkg: "net", typ: $funcType([], [time.Duration], false)}, {prop: "DialContext", name: "DialContext", pkg: "", typ: $funcType([context.Context, $String, $String], [Conn, $error], false)}];
 44446  	byPriorityWeight.methods = [{prop: "Len", name: "Len", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Less", name: "Less", pkg: "", typ: $funcType([$Int, $Int], [$Bool], false)}, {prop: "Swap", name: "Swap", pkg: "", typ: $funcType([$Int, $Int], [], false)}, {prop: "shuffleByWeight", name: "shuffleByWeight", pkg: "net", typ: $funcType([], [], false)}, {prop: "sort", name: "sort", pkg: "net", typ: $funcType([], [], false)}];
 44447  	byPref.methods = [{prop: "Len", name: "Len", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Less", name: "Less", pkg: "", typ: $funcType([$Int, $Int], [$Bool], false)}, {prop: "Swap", name: "Swap", pkg: "", typ: $funcType([$Int, $Int], [], false)}, {prop: "sort", name: "sort", pkg: "net", typ: $funcType([], [], false)}];
 44448  	ptrType$62.methods = [{prop: "dnsRoundTrip", name: "dnsRoundTrip", pkg: "net", typ: $funcType([ptrType$14], [ptrType$14, $error], false)}];
 44449  	ptrType$63.methods = [{prop: "dnsRoundTrip", name: "dnsRoundTrip", pkg: "net", typ: $funcType([ptrType$14], [ptrType$14, $error], false)}];
 44450  	ptrType$64.methods = [{prop: "init", name: "init", pkg: "net", typ: $funcType([], [], false)}, {prop: "tryUpdate", name: "tryUpdate", pkg: "net", typ: $funcType([$String], [], false)}, {prop: "tryAcquireSema", name: "tryAcquireSema", pkg: "net", typ: $funcType([], [$Bool], false)}, {prop: "releaseSema", name: "releaseSema", pkg: "net", typ: $funcType([], [], false)}];
 44451  	hostLookupOrder.methods = [{prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}];
 44452  	ptrType$1.methods = [{prop: "nameList", name: "nameList", pkg: "net", typ: $funcType([$String], [sliceType], false)}, {prop: "serverOffset", name: "serverOffset", pkg: "net", typ: $funcType([], [$Uint32], false)}];
 44453  	ptrType$65.methods = [{prop: "Walk", name: "Walk", pkg: "", typ: $funcType([funcType$2], [$Bool], false)}];
 44454  	ptrType$66.methods = [{prop: "Walk", name: "Walk", pkg: "", typ: $funcType([funcType$2], [$Bool], false)}];
 44455  	ptrType$12.methods = [{prop: "Header", name: "Header", pkg: "", typ: $funcType([], [ptrType$12], false)}, {prop: "Walk", name: "Walk", pkg: "", typ: $funcType([funcType$2], [$Bool], false)}];
 44456  	ptrType$13.methods = [{prop: "Header", name: "Header", pkg: "", typ: $funcType([], [ptrType$12], false)}, {prop: "Walk", name: "Walk", pkg: "", typ: $funcType([funcType$2], [$Bool], false)}];
 44457  	ptrType$44.methods = [{prop: "Header", name: "Header", pkg: "", typ: $funcType([], [ptrType$12], false)}, {prop: "Walk", name: "Walk", pkg: "", typ: $funcType([funcType$2], [$Bool], false)}];
 44458  	ptrType$46.methods = [{prop: "Header", name: "Header", pkg: "", typ: $funcType([], [ptrType$12], false)}, {prop: "Walk", name: "Walk", pkg: "", typ: $funcType([funcType$2], [$Bool], false)}];
 44459  	ptrType$19.methods = [{prop: "Header", name: "Header", pkg: "", typ: $funcType([], [ptrType$12], false)}, {prop: "Walk", name: "Walk", pkg: "", typ: $funcType([funcType$2], [$Bool], false)}];
 44460  	ptrType$67.methods = [{prop: "Header", name: "Header", pkg: "", typ: $funcType([], [ptrType$12], false)}, {prop: "Walk", name: "Walk", pkg: "", typ: $funcType([funcType$2], [$Bool], false)}];
 44461  	ptrType$47.methods = [{prop: "Header", name: "Header", pkg: "", typ: $funcType([], [ptrType$12], false)}, {prop: "Walk", name: "Walk", pkg: "", typ: $funcType([funcType$2], [$Bool], false)}];
 44462  	ptrType$42.methods = [{prop: "Header", name: "Header", pkg: "", typ: $funcType([], [ptrType$12], false)}, {prop: "Walk", name: "Walk", pkg: "", typ: $funcType([funcType$2], [$Bool], false)}];
 44463  	ptrType$17.methods = [{prop: "Header", name: "Header", pkg: "", typ: $funcType([], [ptrType$12], false)}, {prop: "Walk", name: "Walk", pkg: "", typ: $funcType([funcType$2], [$Bool], false)}];
 44464  	ptrType$18.methods = [{prop: "Header", name: "Header", pkg: "", typ: $funcType([], [ptrType$12], false)}, {prop: "Walk", name: "Walk", pkg: "", typ: $funcType([funcType$2], [$Bool], false)}];
 44465  	ptrType$68.methods = [{prop: "Walk", name: "Walk", pkg: "", typ: $funcType([funcType$2], [$Bool], false)}];
 44466  	ptrType$14.methods = [{prop: "Pack", name: "Pack", pkg: "", typ: $funcType([], [sliceType$1, $Bool], false)}, {prop: "Unpack", name: "Unpack", pkg: "", typ: $funcType([sliceType$1], [$Bool], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "IsResponseTo", name: "IsResponseTo", pkg: "", typ: $funcType([ptrType$14], [$Bool], false)}];
 44467  	ptrType$30.methods = [{prop: "init", name: "init", pkg: "net", typ: $funcType([], [$error], false)}, {prop: "setAddr", name: "setAddr", pkg: "net", typ: $funcType([Addr, Addr], [], false)}, {prop: "name", name: "name", pkg: "net", typ: $funcType([], [$String], false)}, {prop: "connect", name: "connect", pkg: "net", typ: $funcType([context.Context, syscall.Sockaddr, syscall.Sockaddr], [syscall.Sockaddr, $error], false)}, {prop: "Close", name: "Close", pkg: "", typ: $funcType([], [$error], false)}, {prop: "shutdown", name: "shutdown", pkg: "net", typ: $funcType([$Int], [$error], false)}, {prop: "closeRead", name: "closeRead", pkg: "net", typ: $funcType([], [$error], false)}, {prop: "closeWrite", name: "closeWrite", pkg: "net", typ: $funcType([], [$error], false)}, {prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType$1], [$Int, $error], false)}, {prop: "readFrom", name: "readFrom", pkg: "net", typ: $funcType([sliceType$1], [$Int, syscall.Sockaddr, $error], false)}, {prop: "readMsg", name: "readMsg", pkg: "net", typ: $funcType([sliceType$1, sliceType$1], [$Int, $Int, $Int, syscall.Sockaddr, $error], false)}, {prop: "Write", name: "Write", pkg: "", typ: $funcType([sliceType$1], [$Int, $error], false)}, {prop: "writeTo", name: "writeTo", pkg: "net", typ: $funcType([sliceType$1, syscall.Sockaddr], [$Int, $error], false)}, {prop: "writeMsg", name: "writeMsg", pkg: "net", typ: $funcType([sliceType$1, sliceType$1, syscall.Sockaddr], [$Int, $Int, $error], false)}, {prop: "accept", name: "accept", pkg: "net", typ: $funcType([], [ptrType$30, $error], false)}, {prop: "dup", name: "dup", pkg: "net", typ: $funcType([], [ptrType$32, $error], false)}, {prop: "addrFunc", name: "addrFunc", pkg: "net", typ: $funcType([], [funcType$3], false)}, {prop: "dial", name: "dial", pkg: "net", typ: $funcType([context.Context, sockaddr, sockaddr], [$error], false)}, {prop: "listenStream", name: "listenStream", pkg: "net", typ: $funcType([sockaddr, $Int], [$error], false)}, {prop: "listenDatagram", name: "listenDatagram", pkg: "net", typ: $funcType([sockaddr], [$error], false)}, {prop: "writeBuffers", name: "writeBuffers", pkg: "net", typ: $funcType([ptrType$3], [$Int64, $error], false)}];
 44468  	ptrType$37.methods = [{prop: "Addrs", name: "Addrs", pkg: "", typ: $funcType([], [sliceType$9, $error], false)}, {prop: "MulticastAddrs", name: "MulticastAddrs", pkg: "", typ: $funcType([], [sliceType$9, $error], false)}];
 44469  	Flags.methods = [{prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}];
 44470  	ptrType$69.methods = [{prop: "update", name: "update", pkg: "net", typ: $funcType([sliceType$10], [], false)}, {prop: "name", name: "name", pkg: "net", typ: $funcType([$Int], [$String], false)}, {prop: "index", name: "index", pkg: "net", typ: $funcType([$String], [$Int], false)}];
 44471  	IP.methods = [{prop: "IsUnspecified", name: "IsUnspecified", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "IsLoopback", name: "IsLoopback", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "IsMulticast", name: "IsMulticast", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "IsInterfaceLocalMulticast", name: "IsInterfaceLocalMulticast", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "IsLinkLocalMulticast", name: "IsLinkLocalMulticast", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "IsLinkLocalUnicast", name: "IsLinkLocalUnicast", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "IsGlobalUnicast", name: "IsGlobalUnicast", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "To4", name: "To4", pkg: "", typ: $funcType([], [IP], false)}, {prop: "To16", name: "To16", pkg: "", typ: $funcType([], [IP], false)}, {prop: "DefaultMask", name: "DefaultMask", pkg: "", typ: $funcType([], [IPMask], false)}, {prop: "Mask", name: "Mask", pkg: "", typ: $funcType([IPMask], [IP], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "MarshalText", name: "MarshalText", pkg: "", typ: $funcType([], [sliceType$1, $error], false)}, {prop: "Equal", name: "Equal", pkg: "", typ: $funcType([IP], [$Bool], false)}, {prop: "matchAddrFamily", name: "matchAddrFamily", pkg: "net", typ: $funcType([IP], [$Bool], false)}];
 44472  	ptrType$70.methods = [{prop: "UnmarshalText", name: "UnmarshalText", pkg: "", typ: $funcType([sliceType$1], [$error], false)}];
 44473  	IPMask.methods = [{prop: "Size", name: "Size", pkg: "", typ: $funcType([], [$Int, $Int], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}];
 44474  	ptrType$4.methods = [{prop: "Contains", name: "Contains", pkg: "", typ: $funcType([IP], [$Bool], false)}, {prop: "Network", name: "Network", pkg: "", typ: $funcType([], [$String], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}];
 44475  	ptrType$8.methods = [{prop: "Network", name: "Network", pkg: "", typ: $funcType([], [$String], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "isWildcard", name: "isWildcard", pkg: "net", typ: $funcType([], [$Bool], false)}, {prop: "opAddr", name: "opAddr", pkg: "net", typ: $funcType([], [Addr], false)}, {prop: "family", name: "family", pkg: "net", typ: $funcType([], [$Int], false)}, {prop: "sockaddr", name: "sockaddr", pkg: "net", typ: $funcType([$Int], [syscall.Sockaddr, $error], false)}, {prop: "toLocal", name: "toLocal", pkg: "net", typ: $funcType([$String], [sockaddr], false)}];
 44476  	ptrType$40.methods = [{prop: "SyscallConn", name: "SyscallConn", pkg: "", typ: $funcType([], [syscall.RawConn, $error], false)}, {prop: "ReadFromIP", name: "ReadFromIP", pkg: "", typ: $funcType([sliceType$1], [$Int, ptrType$8, $error], false)}, {prop: "ReadFrom", name: "ReadFrom", pkg: "", typ: $funcType([sliceType$1], [$Int, Addr, $error], false)}, {prop: "ReadMsgIP", name: "ReadMsgIP", pkg: "", typ: $funcType([sliceType$1, sliceType$1], [$Int, $Int, $Int, ptrType$8, $error], false)}, {prop: "WriteToIP", name: "WriteToIP", pkg: "", typ: $funcType([sliceType$1, ptrType$8], [$Int, $error], false)}, {prop: "WriteTo", name: "WriteTo", pkg: "", typ: $funcType([sliceType$1, Addr], [$Int, $error], false)}, {prop: "WriteMsgIP", name: "WriteMsgIP", pkg: "", typ: $funcType([sliceType$1, sliceType$1, ptrType$8], [$Int, $Int, $error], false)}, {prop: "readFrom", name: "readFrom", pkg: "net", typ: $funcType([sliceType$1], [$Int, ptrType$8, $error], false)}, {prop: "readMsg", name: "readMsg", pkg: "net", typ: $funcType([sliceType$1, sliceType$1], [$Int, $Int, $Int, ptrType$8, $error], false)}, {prop: "writeTo", name: "writeTo", pkg: "net", typ: $funcType([sliceType$1, ptrType$8], [$Int, $error], false)}, {prop: "writeMsg", name: "writeMsg", pkg: "net", typ: $funcType([sliceType$1, sliceType$1, ptrType$8], [$Int, $Int, $error], false)}];
 44477  	ptrType$71.methods = [{prop: "probe", name: "probe", pkg: "net", typ: $funcType([], [], false)}];
 44478  	addrList.methods = [{prop: "forResolve", name: "forResolve", pkg: "net", typ: $funcType([$String, $String], [Addr], false)}, {prop: "first", name: "first", pkg: "net", typ: $funcType([funcType$4], [Addr], false)}, {prop: "partition", name: "partition", pkg: "net", typ: $funcType([funcType$4], [addrList, addrList], false)}];
 44479  	ptrType$6.methods = [{prop: "resolveAddrList", name: "resolveAddrList", pkg: "net", typ: $funcType([context.Context, $String, $String, $String, Addr], [addrList, $error], false)}, {prop: "exchange", name: "exchange", pkg: "net", typ: $funcType([context.Context, $String, $String, $Uint16, time.Duration], [ptrType$14, $error], false)}, {prop: "tryOneName", name: "tryOneName", pkg: "net", typ: $funcType([context.Context, ptrType$1, $String, $Uint16], [$String, sliceType$6, $error], false)}, {prop: "lookup", name: "lookup", pkg: "net", typ: $funcType([context.Context, $String, $Uint16], [$String, sliceType$6, $error], false)}, {prop: "goLookupHost", name: "goLookupHost", pkg: "net", typ: $funcType([context.Context, $String], [sliceType, $error], false)}, {prop: "goLookupHostOrder", name: "goLookupHostOrder", pkg: "net", typ: $funcType([context.Context, $String, hostLookupOrder], [sliceType, $error], false)}, {prop: "goLookupIP", name: "goLookupIP", pkg: "net", typ: $funcType([context.Context, $String], [sliceType$3, $error], false)}, {prop: "goLookupIPCNAMEOrder", name: "goLookupIPCNAMEOrder", pkg: "net", typ: $funcType([context.Context, $String, hostLookupOrder], [sliceType$3, $String, $error], false)}, {prop: "goLookupCNAME", name: "goLookupCNAME", pkg: "net", typ: $funcType([context.Context, $String], [$String, $error], false)}, {prop: "goLookupPTR", name: "goLookupPTR", pkg: "net", typ: $funcType([context.Context, $String], [sliceType, $error], false)}, {prop: "internetAddrList", name: "internetAddrList", pkg: "net", typ: $funcType([context.Context, $String, $String], [addrList, $error], false)}, {prop: "LookupHost", name: "LookupHost", pkg: "", typ: $funcType([context.Context, $String], [sliceType, $error], false)}, {prop: "LookupIPAddr", name: "LookupIPAddr", pkg: "", typ: $funcType([context.Context, $String], [sliceType$3, $error], false)}, {prop: "LookupPort", name: "LookupPort", pkg: "", typ: $funcType([context.Context, $String, $String], [$Int, $error], false)}, {prop: "LookupCNAME", name: "LookupCNAME", pkg: "", typ: $funcType([context.Context, $String], [$String, $error], false)}, {prop: "LookupSRV", name: "LookupSRV", pkg: "", typ: $funcType([context.Context, $String, $String, $String], [$String, sliceType$13, $error], false)}, {prop: "LookupMX", name: "LookupMX", pkg: "", typ: $funcType([context.Context, $String], [sliceType$14, $error], false)}, {prop: "LookupNS", name: "LookupNS", pkg: "", typ: $funcType([context.Context, $String], [sliceType$15, $error], false)}, {prop: "LookupTXT", name: "LookupTXT", pkg: "", typ: $funcType([context.Context, $String], [sliceType, $error], false)}, {prop: "LookupAddr", name: "LookupAddr", pkg: "", typ: $funcType([context.Context, $String], [sliceType, $error], false)}, {prop: "dial", name: "dial", pkg: "net", typ: $funcType([context.Context, $String, $String], [dnsConn, $error], false)}, {prop: "lookupHost", name: "lookupHost", pkg: "net", typ: $funcType([context.Context, $String], [sliceType, $error], false)}, {prop: "lookupIP", name: "lookupIP", pkg: "net", typ: $funcType([context.Context, $String], [sliceType$3, $error], false)}, {prop: "lookupPort", name: "lookupPort", pkg: "net", typ: $funcType([context.Context, $String, $String], [$Int, $error], false)}, {prop: "lookupCNAME", name: "lookupCNAME", pkg: "net", typ: $funcType([context.Context, $String], [$String, $error], false)}, {prop: "lookupSRV", name: "lookupSRV", pkg: "net", typ: $funcType([context.Context, $String, $String, $String], [$String, sliceType$13, $error], false)}, {prop: "lookupMX", name: "lookupMX", pkg: "net", typ: $funcType([context.Context, $String], [sliceType$14, $error], false)}, {prop: "lookupNS", name: "lookupNS", pkg: "net", typ: $funcType([context.Context, $String], [sliceType$15, $error], false)}, {prop: "lookupTXT", name: "lookupTXT", pkg: "net", typ: $funcType([context.Context, $String], [sliceType, $error], false)}, {prop: "lookupAddr", name: "lookupAddr", pkg: "net", typ: $funcType([context.Context, $String], [sliceType, $error], false)}];
 44480  	HardwareAddr.methods = [{prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}];
 44481  	ptrType$48.methods = [{prop: "ok", name: "ok", pkg: "net", typ: $funcType([], [$Bool], false)}, {prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType$1], [$Int, $error], false)}, {prop: "Write", name: "Write", pkg: "", typ: $funcType([sliceType$1], [$Int, $error], false)}, {prop: "Close", name: "Close", pkg: "", typ: $funcType([], [$error], false)}, {prop: "LocalAddr", name: "LocalAddr", pkg: "", typ: $funcType([], [Addr], false)}, {prop: "RemoteAddr", name: "RemoteAddr", pkg: "", typ: $funcType([], [Addr], false)}, {prop: "SetDeadline", name: "SetDeadline", pkg: "", typ: $funcType([time.Time], [$error], false)}, {prop: "SetReadDeadline", name: "SetReadDeadline", pkg: "", typ: $funcType([time.Time], [$error], false)}, {prop: "SetWriteDeadline", name: "SetWriteDeadline", pkg: "", typ: $funcType([time.Time], [$error], false)}, {prop: "SetReadBuffer", name: "SetReadBuffer", pkg: "", typ: $funcType([$Int], [$error], false)}, {prop: "SetWriteBuffer", name: "SetWriteBuffer", pkg: "", typ: $funcType([$Int], [$error], false)}, {prop: "File", name: "File", pkg: "", typ: $funcType([], [ptrType$32, $error], false)}, {prop: "writeBuffers", name: "writeBuffers", pkg: "net", typ: $funcType([ptrType$3], [$Int64, $error], false)}];
 44482  	ptrType$16.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Timeout", name: "Timeout", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "Temporary", name: "Temporary", pkg: "", typ: $funcType([], [$Bool], false)}];
 44483  	ptrType$72.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}];
 44484  	ptrType$50.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Timeout", name: "Timeout", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "Temporary", name: "Temporary", pkg: "", typ: $funcType([], [$Bool], false)}];
 44485  	UnknownNetworkError.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Timeout", name: "Timeout", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "Temporary", name: "Temporary", pkg: "", typ: $funcType([], [$Bool], false)}];
 44486  	ptrType$15.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Timeout", name: "Timeout", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "Temporary", name: "Temporary", pkg: "", typ: $funcType([], [$Bool], false)}];
 44487  	ptrType$3.methods = [{prop: "WriteTo", name: "WriteTo", pkg: "", typ: $funcType([io.Writer], [$Int64, $error], false)}, {prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType$1], [$Int, $error], false)}, {prop: "consume", name: "consume", pkg: "net", typ: $funcType([$Int64], [], false)}];
 44488  	nssSource.methods = [{prop: "standardCriteria", name: "standardCriteria", pkg: "net", typ: $funcType([], [$Bool], false)}];
 44489  	nssCriterion.methods = [{prop: "standardStatusAction", name: "standardStatusAction", pkg: "net", typ: $funcType([$Bool], [$Bool], false)}];
 44490  	ptrType$36.methods = [{prop: "close", name: "close", pkg: "net", typ: $funcType([], [], false)}, {prop: "getLineFromData", name: "getLineFromData", pkg: "net", typ: $funcType([], [$String, $Bool], false)}, {prop: "readLine", name: "readLine", pkg: "net", typ: $funcType([], [$String, $Bool], false)}];
 44491  	ptrType$52.methods = [{prop: "ok", name: "ok", pkg: "net", typ: $funcType([], [$Bool], false)}, {prop: "Control", name: "Control", pkg: "", typ: $funcType([funcType$6], [$error], false)}, {prop: "Read", name: "Read", pkg: "", typ: $funcType([funcType$7], [$error], false)}, {prop: "Write", name: "Write", pkg: "", typ: $funcType([funcType$7], [$error], false)}];
 44492  	ptrType$76.methods = [{prop: "Read", name: "Read", pkg: "", typ: $funcType([funcType$7], [$error], false)}, {prop: "Write", name: "Write", pkg: "", typ: $funcType([funcType$7], [$error], false)}];
 44493  	ptrType$7.methods = [{prop: "Network", name: "Network", pkg: "", typ: $funcType([], [$String], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "isWildcard", name: "isWildcard", pkg: "net", typ: $funcType([], [$Bool], false)}, {prop: "opAddr", name: "opAddr", pkg: "net", typ: $funcType([], [Addr], false)}, {prop: "family", name: "family", pkg: "net", typ: $funcType([], [$Int], false)}, {prop: "sockaddr", name: "sockaddr", pkg: "net", typ: $funcType([$Int], [syscall.Sockaddr, $error], false)}, {prop: "toLocal", name: "toLocal", pkg: "net", typ: $funcType([$String], [sockaddr], false)}];
 44494  	ptrType$10.methods = [{prop: "SyscallConn", name: "SyscallConn", pkg: "", typ: $funcType([], [syscall.RawConn, $error], false)}, {prop: "ReadFrom", name: "ReadFrom", pkg: "", typ: $funcType([io.Reader], [$Int64, $error], false)}, {prop: "CloseRead", name: "CloseRead", pkg: "", typ: $funcType([], [$error], false)}, {prop: "CloseWrite", name: "CloseWrite", pkg: "", typ: $funcType([], [$error], false)}, {prop: "SetLinger", name: "SetLinger", pkg: "", typ: $funcType([$Int], [$error], false)}, {prop: "SetKeepAlive", name: "SetKeepAlive", pkg: "", typ: $funcType([$Bool], [$error], false)}, {prop: "SetKeepAlivePeriod", name: "SetKeepAlivePeriod", pkg: "", typ: $funcType([time.Duration], [$error], false)}, {prop: "SetNoDelay", name: "SetNoDelay", pkg: "", typ: $funcType([$Bool], [$error], false)}, {prop: "readFrom", name: "readFrom", pkg: "net", typ: $funcType([io.Reader], [$Int64, $error], false)}];
 44495  	ptrType$54.methods = [{prop: "SyscallConn", name: "SyscallConn", pkg: "", typ: $funcType([], [syscall.RawConn, $error], false)}, {prop: "AcceptTCP", name: "AcceptTCP", pkg: "", typ: $funcType([], [ptrType$10, $error], false)}, {prop: "Accept", name: "Accept", pkg: "", typ: $funcType([], [Conn, $error], false)}, {prop: "Close", name: "Close", pkg: "", typ: $funcType([], [$error], false)}, {prop: "Addr", name: "Addr", pkg: "", typ: $funcType([], [Addr], false)}, {prop: "SetDeadline", name: "SetDeadline", pkg: "", typ: $funcType([time.Time], [$error], false)}, {prop: "File", name: "File", pkg: "", typ: $funcType([], [ptrType$32, $error], false)}, {prop: "ok", name: "ok", pkg: "net", typ: $funcType([], [$Bool], false)}, {prop: "accept", name: "accept", pkg: "net", typ: $funcType([], [ptrType$10, $error], false)}, {prop: "close", name: "close", pkg: "net", typ: $funcType([], [$error], false)}, {prop: "file", name: "file", pkg: "net", typ: $funcType([], [ptrType$32, $error], false)}];
 44496  	ptrType$5.methods = [{prop: "Network", name: "Network", pkg: "", typ: $funcType([], [$String], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "isWildcard", name: "isWildcard", pkg: "net", typ: $funcType([], [$Bool], false)}, {prop: "opAddr", name: "opAddr", pkg: "net", typ: $funcType([], [Addr], false)}, {prop: "family", name: "family", pkg: "net", typ: $funcType([], [$Int], false)}, {prop: "sockaddr", name: "sockaddr", pkg: "net", typ: $funcType([$Int], [syscall.Sockaddr, $error], false)}, {prop: "toLocal", name: "toLocal", pkg: "net", typ: $funcType([$String], [sockaddr], false)}];
 44497  	ptrType$55.methods = [{prop: "SyscallConn", name: "SyscallConn", pkg: "", typ: $funcType([], [syscall.RawConn, $error], false)}, {prop: "ReadFromUDP", name: "ReadFromUDP", pkg: "", typ: $funcType([sliceType$1], [$Int, ptrType$5, $error], false)}, {prop: "ReadFrom", name: "ReadFrom", pkg: "", typ: $funcType([sliceType$1], [$Int, Addr, $error], false)}, {prop: "ReadMsgUDP", name: "ReadMsgUDP", pkg: "", typ: $funcType([sliceType$1, sliceType$1], [$Int, $Int, $Int, ptrType$5, $error], false)}, {prop: "WriteToUDP", name: "WriteToUDP", pkg: "", typ: $funcType([sliceType$1, ptrType$5], [$Int, $error], false)}, {prop: "WriteTo", name: "WriteTo", pkg: "", typ: $funcType([sliceType$1, Addr], [$Int, $error], false)}, {prop: "WriteMsgUDP", name: "WriteMsgUDP", pkg: "", typ: $funcType([sliceType$1, sliceType$1, ptrType$5], [$Int, $Int, $error], false)}, {prop: "readFrom", name: "readFrom", pkg: "net", typ: $funcType([sliceType$1], [$Int, ptrType$5, $error], false)}, {prop: "readMsg", name: "readMsg", pkg: "net", typ: $funcType([sliceType$1, sliceType$1], [$Int, $Int, $Int, ptrType$5, $error], false)}, {prop: "writeTo", name: "writeTo", pkg: "net", typ: $funcType([sliceType$1, ptrType$5], [$Int, $error], false)}, {prop: "writeMsg", name: "writeMsg", pkg: "net", typ: $funcType([sliceType$1, sliceType$1, ptrType$5], [$Int, $Int, $error], false)}];
 44498  	ptrType$11.methods = [{prop: "Network", name: "Network", pkg: "", typ: $funcType([], [$String], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "isWildcard", name: "isWildcard", pkg: "net", typ: $funcType([], [$Bool], false)}, {prop: "opAddr", name: "opAddr", pkg: "net", typ: $funcType([], [Addr], false)}, {prop: "family", name: "family", pkg: "net", typ: $funcType([], [$Int], false)}, {prop: "sockaddr", name: "sockaddr", pkg: "net", typ: $funcType([$Int], [syscall.Sockaddr, $error], false)}, {prop: "toLocal", name: "toLocal", pkg: "net", typ: $funcType([$String], [sockaddr], false)}];
 44499  	ptrType$56.methods = [{prop: "SyscallConn", name: "SyscallConn", pkg: "", typ: $funcType([], [syscall.RawConn, $error], false)}, {prop: "CloseRead", name: "CloseRead", pkg: "", typ: $funcType([], [$error], false)}, {prop: "CloseWrite", name: "CloseWrite", pkg: "", typ: $funcType([], [$error], false)}, {prop: "ReadFromUnix", name: "ReadFromUnix", pkg: "", typ: $funcType([sliceType$1], [$Int, ptrType$11, $error], false)}, {prop: "ReadFrom", name: "ReadFrom", pkg: "", typ: $funcType([sliceType$1], [$Int, Addr, $error], false)}, {prop: "ReadMsgUnix", name: "ReadMsgUnix", pkg: "", typ: $funcType([sliceType$1, sliceType$1], [$Int, $Int, $Int, ptrType$11, $error], false)}, {prop: "WriteToUnix", name: "WriteToUnix", pkg: "", typ: $funcType([sliceType$1, ptrType$11], [$Int, $error], false)}, {prop: "WriteTo", name: "WriteTo", pkg: "", typ: $funcType([sliceType$1, Addr], [$Int, $error], false)}, {prop: "WriteMsgUnix", name: "WriteMsgUnix", pkg: "", typ: $funcType([sliceType$1, sliceType$1, ptrType$11], [$Int, $Int, $error], false)}, {prop: "readFrom", name: "readFrom", pkg: "net", typ: $funcType([sliceType$1], [$Int, ptrType$11, $error], false)}, {prop: "readMsg", name: "readMsg", pkg: "net", typ: $funcType([sliceType$1, sliceType$1], [$Int, $Int, $Int, ptrType$11, $error], false)}, {prop: "writeTo", name: "writeTo", pkg: "net", typ: $funcType([sliceType$1, ptrType$11], [$Int, $error], false)}, {prop: "writeMsg", name: "writeMsg", pkg: "net", typ: $funcType([sliceType$1, sliceType$1, ptrType$11], [$Int, $Int, $error], false)}];
 44500  	ipAttr.init("", [{prop: "Scope", name: "Scope", anonymous: false, exported: true, typ: scope, tag: ""}, {prop: "Precedence", name: "Precedence", anonymous: false, exported: true, typ: $Uint8, tag: ""}, {prop: "Label", name: "Label", anonymous: false, exported: true, typ: $Uint8, tag: ""}]);
 44501  	byRFC6724.init("net", [{prop: "addrs", name: "addrs", anonymous: false, exported: false, typ: sliceType$3, tag: ""}, {prop: "addrAttr", name: "addrAttr", anonymous: false, exported: false, typ: sliceType$2, tag: ""}, {prop: "srcs", name: "srcs", anonymous: false, exported: false, typ: sliceType$4, tag: ""}, {prop: "srcAttr", name: "srcAttr", anonymous: false, exported: false, typ: sliceType$2, tag: ""}]);
 44502  	policyTableEntry.init("", [{prop: "Prefix", name: "Prefix", anonymous: false, exported: true, typ: ptrType$4, tag: ""}, {prop: "Precedence", name: "Precedence", anonymous: false, exported: true, typ: $Uint8, tag: ""}, {prop: "Label", name: "Label", anonymous: false, exported: true, typ: $Uint8, tag: ""}]);
 44503  	policyTable.init(policyTableEntry);
 44504  	byMaskLength.init(policyTableEntry);
 44505  	conf.init("net", [{prop: "forceCgoLookupHost", name: "forceCgoLookupHost", anonymous: false, exported: false, typ: $Bool, tag: ""}, {prop: "netGo", name: "netGo", anonymous: false, exported: false, typ: $Bool, tag: ""}, {prop: "netCgo", name: "netCgo", anonymous: false, exported: false, typ: $Bool, tag: ""}, {prop: "hasMDNSAllow", name: "hasMDNSAllow", anonymous: false, exported: false, typ: $Bool, tag: ""}, {prop: "goos", name: "goos", anonymous: false, exported: false, typ: $String, tag: ""}, {prop: "dnsDebugLevel", name: "dnsDebugLevel", anonymous: false, exported: false, typ: $Int, tag: ""}, {prop: "nss", name: "nss", anonymous: false, exported: false, typ: ptrType$2, tag: ""}, {prop: "resolv", name: "resolv", anonymous: false, exported: false, typ: ptrType$1, tag: ""}]);
 44506  	Dialer.init("", [{prop: "Timeout", name: "Timeout", anonymous: false, exported: true, typ: time.Duration, tag: ""}, {prop: "Deadline", name: "Deadline", anonymous: false, exported: true, typ: time.Time, tag: ""}, {prop: "LocalAddr", name: "LocalAddr", anonymous: false, exported: true, typ: Addr, tag: ""}, {prop: "DualStack", name: "DualStack", anonymous: false, exported: true, typ: $Bool, tag: ""}, {prop: "FallbackDelay", name: "FallbackDelay", anonymous: false, exported: true, typ: time.Duration, tag: ""}, {prop: "KeepAlive", name: "KeepAlive", anonymous: false, exported: true, typ: time.Duration, tag: ""}, {prop: "Resolver", name: "Resolver", anonymous: false, exported: true, typ: ptrType$6, tag: ""}, {prop: "Cancel", name: "Cancel", anonymous: false, exported: true, typ: chanType, tag: ""}]);
 44507  	dialParam.init("net", [{prop: "Dialer", name: "Dialer", anonymous: true, exported: true, typ: Dialer, tag: ""}, {prop: "network", name: "network", anonymous: false, exported: false, typ: $String, tag: ""}, {prop: "address", name: "address", anonymous: false, exported: false, typ: $String, tag: ""}]);
 44508  	SRV.init("", [{prop: "Target", name: "Target", anonymous: false, exported: true, typ: $String, tag: ""}, {prop: "Port", name: "Port", anonymous: false, exported: true, typ: $Uint16, tag: ""}, {prop: "Priority", name: "Priority", anonymous: false, exported: true, typ: $Uint16, tag: ""}, {prop: "Weight", name: "Weight", anonymous: false, exported: true, typ: $Uint16, tag: ""}]);
 44509  	byPriorityWeight.init(ptrType$41);
 44510  	MX.init("", [{prop: "Host", name: "Host", anonymous: false, exported: true, typ: $String, tag: ""}, {prop: "Pref", name: "Pref", anonymous: false, exported: true, typ: $Uint16, tag: ""}]);
 44511  	byPref.init(ptrType$43);
 44512  	NS.init("", [{prop: "Host", name: "Host", anonymous: false, exported: true, typ: $String, tag: ""}]);
 44513  	dnsConn.init([{prop: "Close", name: "Close", pkg: "", typ: $funcType([], [$error], false)}, {prop: "SetDeadline", name: "SetDeadline", pkg: "", typ: $funcType([time.Time], [$error], false)}, {prop: "dnsRoundTrip", name: "dnsRoundTrip", pkg: "net", typ: $funcType([ptrType$14], [ptrType$14, $error], false)}]);
 44514  	dnsPacketConn.init("", [{prop: "Conn", name: "Conn", anonymous: true, exported: true, typ: Conn, tag: ""}]);
 44515  	dnsStreamConn.init("", [{prop: "Conn", name: "Conn", anonymous: true, exported: true, typ: Conn, tag: ""}]);
 44516  	resolverConfig.init("net", [{prop: "initOnce", name: "initOnce", anonymous: false, exported: false, typ: sync.Once, tag: ""}, {prop: "ch", name: "ch", anonymous: false, exported: false, typ: chanType$1, tag: ""}, {prop: "lastChecked", name: "lastChecked", anonymous: false, exported: false, typ: time.Time, tag: ""}, {prop: "mu", name: "mu", anonymous: false, exported: false, typ: sync.RWMutex, tag: ""}, {prop: "dnsConfig", name: "dnsConfig", anonymous: false, exported: false, typ: ptrType$1, tag: ""}]);
 44517  	dnsConfig.init("net", [{prop: "servers", name: "servers", anonymous: false, exported: false, typ: sliceType, tag: ""}, {prop: "search", name: "search", anonymous: false, exported: false, typ: sliceType, tag: ""}, {prop: "ndots", name: "ndots", anonymous: false, exported: false, typ: $Int, tag: ""}, {prop: "timeout", name: "timeout", anonymous: false, exported: false, typ: time.Duration, tag: ""}, {prop: "attempts", name: "attempts", anonymous: false, exported: false, typ: $Int, tag: ""}, {prop: "rotate", name: "rotate", anonymous: false, exported: false, typ: $Bool, tag: ""}, {prop: "unknownOpt", name: "unknownOpt", anonymous: false, exported: false, typ: $Bool, tag: ""}, {prop: "lookup", name: "lookup", anonymous: false, exported: false, typ: sliceType, tag: ""}, {prop: "err", name: "err", anonymous: false, exported: false, typ: $error, tag: ""}, {prop: "mtime", name: "mtime", anonymous: false, exported: false, typ: time.Time, tag: ""}, {prop: "soffset", name: "soffset", anonymous: false, exported: false, typ: $Uint32, tag: ""}]);
 44518  	dnsHeader.init("", [{prop: "Id", name: "Id", anonymous: false, exported: true, typ: $Uint16, tag: ""}, {prop: "Bits", name: "Bits", anonymous: false, exported: true, typ: $Uint16, tag: ""}, {prop: "Qdcount", name: "Qdcount", anonymous: false, exported: true, typ: $Uint16, tag: ""}, {prop: "Ancount", name: "Ancount", anonymous: false, exported: true, typ: $Uint16, tag: ""}, {prop: "Nscount", name: "Nscount", anonymous: false, exported: true, typ: $Uint16, tag: ""}, {prop: "Arcount", name: "Arcount", anonymous: false, exported: true, typ: $Uint16, tag: ""}]);
 44519  	dnsQuestion.init("", [{prop: "Name", name: "Name", anonymous: false, exported: true, typ: $String, tag: ""}, {prop: "Qtype", name: "Qtype", anonymous: false, exported: true, typ: $Uint16, tag: ""}, {prop: "Qclass", name: "Qclass", anonymous: false, exported: true, typ: $Uint16, tag: ""}]);
 44520  	dnsRR_Header.init("", [{prop: "Name", name: "Name", anonymous: false, exported: true, typ: $String, tag: ""}, {prop: "Rrtype", name: "Rrtype", anonymous: false, exported: true, typ: $Uint16, tag: ""}, {prop: "Class", name: "Class", anonymous: false, exported: true, typ: $Uint16, tag: ""}, {prop: "Ttl", name: "Ttl", anonymous: false, exported: true, typ: $Uint32, tag: ""}, {prop: "Rdlength", name: "Rdlength", anonymous: false, exported: true, typ: $Uint16, tag: ""}]);
 44521  	dnsRR.init([{prop: "Header", name: "Header", pkg: "", typ: $funcType([], [ptrType$12], false)}, {prop: "Walk", name: "Walk", pkg: "", typ: $funcType([funcType$2], [$Bool], false)}]);
 44522  	dnsRR_CNAME.init("", [{prop: "Hdr", name: "Hdr", anonymous: false, exported: true, typ: dnsRR_Header, tag: ""}, {prop: "Cname", name: "Cname", anonymous: false, exported: true, typ: $String, tag: ""}]);
 44523  	dnsRR_MX.init("", [{prop: "Hdr", name: "Hdr", anonymous: false, exported: true, typ: dnsRR_Header, tag: ""}, {prop: "Pref", name: "Pref", anonymous: false, exported: true, typ: $Uint16, tag: ""}, {prop: "Mx", name: "Mx", anonymous: false, exported: true, typ: $String, tag: ""}]);
 44524  	dnsRR_NS.init("", [{prop: "Hdr", name: "Hdr", anonymous: false, exported: true, typ: dnsRR_Header, tag: ""}, {prop: "Ns", name: "Ns", anonymous: false, exported: true, typ: $String, tag: ""}]);
 44525  	dnsRR_PTR.init("", [{prop: "Hdr", name: "Hdr", anonymous: false, exported: true, typ: dnsRR_Header, tag: ""}, {prop: "Ptr", name: "Ptr", anonymous: false, exported: true, typ: $String, tag: ""}]);
 44526  	dnsRR_SOA.init("", [{prop: "Hdr", name: "Hdr", anonymous: false, exported: true, typ: dnsRR_Header, tag: ""}, {prop: "Ns", name: "Ns", anonymous: false, exported: true, typ: $String, tag: ""}, {prop: "Mbox", name: "Mbox", anonymous: false, exported: true, typ: $String, tag: ""}, {prop: "Serial", name: "Serial", anonymous: false, exported: true, typ: $Uint32, tag: ""}, {prop: "Refresh", name: "Refresh", anonymous: false, exported: true, typ: $Uint32, tag: ""}, {prop: "Retry", name: "Retry", anonymous: false, exported: true, typ: $Uint32, tag: ""}, {prop: "Expire", name: "Expire", anonymous: false, exported: true, typ: $Uint32, tag: ""}, {prop: "Minttl", name: "Minttl", anonymous: false, exported: true, typ: $Uint32, tag: ""}]);
 44527  	dnsRR_TXT.init("", [{prop: "Hdr", name: "Hdr", anonymous: false, exported: true, typ: dnsRR_Header, tag: ""}, {prop: "Txt", name: "Txt", anonymous: false, exported: true, typ: $String, tag: ""}]);
 44528  	dnsRR_SRV.init("", [{prop: "Hdr", name: "Hdr", anonymous: false, exported: true, typ: dnsRR_Header, tag: ""}, {prop: "Priority", name: "Priority", anonymous: false, exported: true, typ: $Uint16, tag: ""}, {prop: "Weight", name: "Weight", anonymous: false, exported: true, typ: $Uint16, tag: ""}, {prop: "Port", name: "Port", anonymous: false, exported: true, typ: $Uint16, tag: ""}, {prop: "Target", name: "Target", anonymous: false, exported: true, typ: $String, tag: ""}]);
 44529  	dnsRR_A.init("", [{prop: "Hdr", name: "Hdr", anonymous: false, exported: true, typ: dnsRR_Header, tag: ""}, {prop: "A", name: "A", anonymous: false, exported: true, typ: $Uint32, tag: ""}]);
 44530  	dnsRR_AAAA.init("", [{prop: "Hdr", name: "Hdr", anonymous: false, exported: true, typ: dnsRR_Header, tag: ""}, {prop: "AAAA", name: "AAAA", anonymous: false, exported: true, typ: arrayType$1, tag: ""}]);
 44531  	dnsMsgHdr.init("net", [{prop: "id", name: "id", anonymous: false, exported: false, typ: $Uint16, tag: ""}, {prop: "response", name: "response", anonymous: false, exported: false, typ: $Bool, tag: ""}, {prop: "opcode", name: "opcode", anonymous: false, exported: false, typ: $Int, tag: ""}, {prop: "authoritative", name: "authoritative", anonymous: false, exported: false, typ: $Bool, tag: ""}, {prop: "truncated", name: "truncated", anonymous: false, exported: false, typ: $Bool, tag: ""}, {prop: "recursion_desired", name: "recursion_desired", anonymous: false, exported: false, typ: $Bool, tag: ""}, {prop: "recursion_available", name: "recursion_available", anonymous: false, exported: false, typ: $Bool, tag: ""}, {prop: "rcode", name: "rcode", anonymous: false, exported: false, typ: $Int, tag: ""}]);
 44532  	dnsMsg.init("net", [{prop: "dnsMsgHdr", name: "dnsMsgHdr", anonymous: true, exported: false, typ: dnsMsgHdr, tag: ""}, {prop: "question", name: "question", anonymous: false, exported: false, typ: sliceType$7, tag: ""}, {prop: "answer", name: "answer", anonymous: false, exported: false, typ: sliceType$6, tag: ""}, {prop: "ns", name: "ns", anonymous: false, exported: false, typ: sliceType$6, tag: ""}, {prop: "extra", name: "extra", anonymous: false, exported: false, typ: sliceType$6, tag: ""}]);
 44533  	netFD.init("net", [{prop: "pfd", name: "pfd", anonymous: false, exported: false, typ: poll.FD, tag: ""}, {prop: "family", name: "family", anonymous: false, exported: false, typ: $Int, tag: ""}, {prop: "sotype", name: "sotype", anonymous: false, exported: false, typ: $Int, tag: ""}, {prop: "isConnected", name: "isConnected", anonymous: false, exported: false, typ: $Bool, tag: ""}, {prop: "net", name: "net", anonymous: false, exported: false, typ: $String, tag: ""}, {prop: "laddr", name: "laddr", anonymous: false, exported: false, typ: Addr, tag: ""}, {prop: "raddr", name: "raddr", anonymous: false, exported: false, typ: Addr, tag: ""}]);
 44534  	Interface.init("", [{prop: "Index", name: "Index", anonymous: false, exported: true, typ: $Int, tag: ""}, {prop: "MTU", name: "MTU", anonymous: false, exported: true, typ: $Int, tag: ""}, {prop: "Name", name: "Name", anonymous: false, exported: true, typ: $String, tag: ""}, {prop: "HardwareAddr", name: "HardwareAddr", anonymous: false, exported: true, typ: HardwareAddr, tag: ""}, {prop: "Flags", name: "Flags", anonymous: false, exported: true, typ: Flags, tag: ""}]);
 44535  	ipv6ZoneCache.init("net", [{prop: "RWMutex", name: "RWMutex", anonymous: true, exported: true, typ: sync.RWMutex, tag: ""}, {prop: "lastFetched", name: "lastFetched", anonymous: false, exported: false, typ: time.Time, tag: ""}, {prop: "toIndex", name: "toIndex", anonymous: false, exported: false, typ: mapType$1, tag: ""}, {prop: "toName", name: "toName", anonymous: false, exported: false, typ: mapType$2, tag: ""}]);
 44536  	IP.init($Uint8);
 44537  	IPMask.init($Uint8);
 44538  	IPNet.init("", [{prop: "IP", name: "IP", anonymous: false, exported: true, typ: IP, tag: ""}, {prop: "Mask", name: "Mask", anonymous: false, exported: true, typ: IPMask, tag: ""}]);
 44539  	IPAddr.init("", [{prop: "IP", name: "IP", anonymous: false, exported: true, typ: IP, tag: ""}, {prop: "Zone", name: "Zone", anonymous: false, exported: true, typ: $String, tag: ""}]);
 44540  	IPConn.init("net", [{prop: "conn", name: "conn", anonymous: true, exported: false, typ: conn, tag: ""}]);
 44541  	ipStackCapabilities.init("net", [{prop: "Once", name: "Once", anonymous: true, exported: true, typ: sync.Once, tag: ""}, {prop: "ipv4Enabled", name: "ipv4Enabled", anonymous: false, exported: false, typ: $Bool, tag: ""}, {prop: "ipv6Enabled", name: "ipv6Enabled", anonymous: false, exported: false, typ: $Bool, tag: ""}, {prop: "ipv4MappedIPv6Enabled", name: "ipv4MappedIPv6Enabled", anonymous: false, exported: false, typ: $Bool, tag: ""}]);
 44542  	addrList.init(Addr);
 44543  	Resolver.init("", [{prop: "PreferGo", name: "PreferGo", anonymous: false, exported: true, typ: $Bool, tag: ""}, {prop: "StrictErrors", name: "StrictErrors", anonymous: false, exported: true, typ: $Bool, tag: ""}, {prop: "Dial", name: "Dial", anonymous: false, exported: true, typ: funcType$5, tag: ""}]);
 44544  	HardwareAddr.init($Uint8);
 44545  	Addr.init([{prop: "Network", name: "Network", pkg: "", typ: $funcType([], [$String], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}]);
 44546  	Conn.init([{prop: "Close", name: "Close", pkg: "", typ: $funcType([], [$error], false)}, {prop: "LocalAddr", name: "LocalAddr", pkg: "", typ: $funcType([], [Addr], false)}, {prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType$1], [$Int, $error], false)}, {prop: "RemoteAddr", name: "RemoteAddr", pkg: "", typ: $funcType([], [Addr], false)}, {prop: "SetDeadline", name: "SetDeadline", pkg: "", typ: $funcType([time.Time], [$error], false)}, {prop: "SetReadDeadline", name: "SetReadDeadline", pkg: "", typ: $funcType([time.Time], [$error], false)}, {prop: "SetWriteDeadline", name: "SetWriteDeadline", pkg: "", typ: $funcType([time.Time], [$error], false)}, {prop: "Write", name: "Write", pkg: "", typ: $funcType([sliceType$1], [$Int, $error], false)}]);
 44547  	conn.init("net", [{prop: "fd", name: "fd", anonymous: false, exported: false, typ: ptrType$30, tag: ""}]);
 44548  	PacketConn.init([{prop: "Close", name: "Close", pkg: "", typ: $funcType([], [$error], false)}, {prop: "LocalAddr", name: "LocalAddr", pkg: "", typ: $funcType([], [Addr], false)}, {prop: "ReadFrom", name: "ReadFrom", pkg: "", typ: $funcType([sliceType$1], [$Int, Addr, $error], false)}, {prop: "SetDeadline", name: "SetDeadline", pkg: "", typ: $funcType([time.Time], [$error], false)}, {prop: "SetReadDeadline", name: "SetReadDeadline", pkg: "", typ: $funcType([time.Time], [$error], false)}, {prop: "SetWriteDeadline", name: "SetWriteDeadline", pkg: "", typ: $funcType([time.Time], [$error], false)}, {prop: "WriteTo", name: "WriteTo", pkg: "", typ: $funcType([sliceType$1, Addr], [$Int, $error], false)}]);
 44549  	Listener.init([{prop: "Accept", name: "Accept", pkg: "", typ: $funcType([], [Conn, $error], false)}, {prop: "Addr", name: "Addr", pkg: "", typ: $funcType([], [Addr], false)}, {prop: "Close", name: "Close", pkg: "", typ: $funcType([], [$error], false)}]);
 44550  	Error.init([{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Temporary", name: "Temporary", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "Timeout", name: "Timeout", pkg: "", typ: $funcType([], [$Bool], false)}]);
 44551  	OpError.init("", [{prop: "Op", name: "Op", anonymous: false, exported: true, typ: $String, tag: ""}, {prop: "Net", name: "Net", anonymous: false, exported: true, typ: $String, tag: ""}, {prop: "Source", name: "Source", anonymous: false, exported: true, typ: Addr, tag: ""}, {prop: "Addr", name: "Addr", anonymous: false, exported: true, typ: Addr, tag: ""}, {prop: "Err", name: "Err", anonymous: false, exported: true, typ: $error, tag: ""}]);
 44552  	timeout.init([{prop: "Timeout", name: "Timeout", pkg: "", typ: $funcType([], [$Bool], false)}]);
 44553  	temporary.init([{prop: "Temporary", name: "Temporary", pkg: "", typ: $funcType([], [$Bool], false)}]);
 44554  	ParseError.init("", [{prop: "Type", name: "Type", anonymous: false, exported: true, typ: $String, tag: ""}, {prop: "Text", name: "Text", anonymous: false, exported: true, typ: $String, tag: ""}]);
 44555  	AddrError.init("", [{prop: "Err", name: "Err", anonymous: false, exported: true, typ: $String, tag: ""}, {prop: "Addr", name: "Addr", anonymous: false, exported: true, typ: $String, tag: ""}]);
 44556  	DNSError.init("", [{prop: "Err", name: "Err", anonymous: false, exported: true, typ: $String, tag: ""}, {prop: "Name", name: "Name", anonymous: false, exported: true, typ: $String, tag: ""}, {prop: "Server", name: "Server", anonymous: false, exported: true, typ: $String, tag: ""}, {prop: "IsTimeout", name: "IsTimeout", anonymous: false, exported: true, typ: $Bool, tag: ""}, {prop: "IsTemporary", name: "IsTemporary", anonymous: false, exported: true, typ: $Bool, tag: ""}]);
 44557  	writerOnly.init("", [{prop: "Writer", name: "Writer", anonymous: true, exported: true, typ: io.Writer, tag: ""}]);
 44558  	buffersWriter.init([{prop: "writeBuffers", name: "writeBuffers", pkg: "net", typ: $funcType([ptrType$3], [$Int64, $error], false)}]);
 44559  	Buffers.init(sliceType$1);
 44560  	nssConf.init("net", [{prop: "err", name: "err", anonymous: false, exported: false, typ: $error, tag: ""}, {prop: "sources", name: "sources", anonymous: false, exported: false, typ: mapType$3, tag: ""}]);
 44561  	nssSource.init("net", [{prop: "source", name: "source", anonymous: false, exported: false, typ: $String, tag: ""}, {prop: "criteria", name: "criteria", anonymous: false, exported: false, typ: sliceType$16, tag: ""}]);
 44562  	nssCriterion.init("net", [{prop: "negate", name: "negate", anonymous: false, exported: false, typ: $Bool, tag: ""}, {prop: "status", name: "status", anonymous: false, exported: false, typ: $String, tag: ""}, {prop: "action", name: "action", anonymous: false, exported: false, typ: $String, tag: ""}]);
 44563  	file.init("net", [{prop: "file", name: "file", anonymous: false, exported: false, typ: ptrType$32, tag: ""}, {prop: "data", name: "data", anonymous: false, exported: false, typ: sliceType$1, tag: ""}, {prop: "atEOF", name: "atEOF", anonymous: false, exported: false, typ: $Bool, tag: ""}]);
 44564  	rawConn.init("net", [{prop: "fd", name: "fd", anonymous: false, exported: false, typ: ptrType$30, tag: ""}]);
 44565  	rawListener.init("net", [{prop: "rawConn", name: "rawConn", anonymous: true, exported: false, typ: rawConn, tag: ""}]);
 44566  	sockaddr.init([{prop: "Network", name: "Network", pkg: "", typ: $funcType([], [$String], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "family", name: "family", pkg: "net", typ: $funcType([], [$Int], false)}, {prop: "isWildcard", name: "isWildcard", pkg: "net", typ: $funcType([], [$Bool], false)}, {prop: "sockaddr", name: "sockaddr", pkg: "net", typ: $funcType([$Int], [syscall.Sockaddr, $error], false)}, {prop: "toLocal", name: "toLocal", pkg: "net", typ: $funcType([$String], [sockaddr], false)}]);
 44567  	TCPAddr.init("", [{prop: "IP", name: "IP", anonymous: false, exported: true, typ: IP, tag: ""}, {prop: "Port", name: "Port", anonymous: false, exported: true, typ: $Int, tag: ""}, {prop: "Zone", name: "Zone", anonymous: false, exported: true, typ: $String, tag: ""}]);
 44568  	TCPConn.init("net", [{prop: "conn", name: "conn", anonymous: true, exported: false, typ: conn, tag: ""}]);
 44569  	TCPListener.init("net", [{prop: "fd", name: "fd", anonymous: false, exported: false, typ: ptrType$30, tag: ""}]);
 44570  	UDPAddr.init("", [{prop: "IP", name: "IP", anonymous: false, exported: true, typ: IP, tag: ""}, {prop: "Port", name: "Port", anonymous: false, exported: true, typ: $Int, tag: ""}, {prop: "Zone", name: "Zone", anonymous: false, exported: true, typ: $String, tag: ""}]);
 44571  	UDPConn.init("net", [{prop: "conn", name: "conn", anonymous: true, exported: false, typ: conn, tag: ""}]);
 44572  	UnixAddr.init("", [{prop: "Name", name: "Name", anonymous: false, exported: true, typ: $String, tag: ""}, {prop: "Net", name: "Net", anonymous: false, exported: true, typ: $String, tag: ""}]);
 44573  	UnixConn.init("net", [{prop: "conn", name: "conn", anonymous: true, exported: false, typ: conn, tag: ""}]);
 44574  	dialResult.init("net", [{prop: "Conn", name: "Conn", anonymous: true, exported: true, typ: Conn, tag: ""}, {prop: "error", name: "error", anonymous: true, exported: false, typ: $error, tag: ""}, {prop: "primary", name: "primary", anonymous: false, exported: false, typ: $Bool, tag: ""}, {prop: "done", name: "done", anonymous: false, exported: false, typ: $Bool, tag: ""}]);
 44575  	racer.init("net", [{prop: "cname", name: "cname", anonymous: false, exported: false, typ: $String, tag: ""}, {prop: "rrs", name: "rrs", anonymous: false, exported: false, typ: sliceType$6, tag: ""}, {prop: "error", name: "error", anonymous: true, exported: false, typ: $error, tag: ""}]);
 44576  	$init = function() {
 44577  		$pkg.$init = function() {};
 44578  		/* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 44579  		$r = context.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 44580  		$r = errors.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 44581  		$r = js.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 44582  		$r = nettrace.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 44583  		$r = poll.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 44584  		$r = singleflight.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 44585  		$r = io.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 44586  		$r = rand.$init(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 44587  		$r = os.$init(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 44588  		$r = runtime.$init(); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 44589  		$r = sort.$init(); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 44590  		$r = sync.$init(); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 44591  		$r = atomic.$init(); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 44592  		$r = syscall.$init(); /* */ $s = 14; case 14: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 44593  		$r = time.$init(); /* */ $s = 15; case 15: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 44594  		confOnce = new sync.Once.ptr(new sync.Mutex.ptr(0, 0), 0);
 44595  		resolvConf = new resolverConfig.ptr(new sync.Once.ptr(new sync.Mutex.ptr(0, 0), 0), $chanNil, new time.Time.ptr(new $Uint64(0, 0), new $Int64(0, 0), ptrType.nil), new sync.RWMutex.ptr(new sync.Mutex.ptr(0, 0), 0, 0, 0, 0), ptrType$1.nil);
 44596  		testHookDialTCP = $throwNilPointerError;
 44597  		hosts = new structType.ptr(new sync.Mutex.ptr(0, 0), false, false, new time.Time.ptr(new $Uint64(0, 0), new $Int64(0, 0), ptrType.nil), "", new time.Time.ptr(new $Uint64(0, 0), new $Int64(0, 0), ptrType.nil), new $Int64(0, 0));
 44598  		ipStackCaps = new ipStackCapabilities.ptr(new sync.Once.ptr(new sync.Mutex.ptr(0, 0), 0), false, false, false);
 44599  		dnsWaitGroup = new sync.WaitGroup.ptr(0, $chanNil, arrayType.zero(), 0);
 44600  		lookupGroup = new singleflight.Group.ptr(new sync.Mutex.ptr(0, 0), false);
 44601  		onceReadProtocols = new sync.Once.ptr(new sync.Mutex.ptr(0, 0), 0);
 44602  		netGo = false;
 44603  		netCgo = false;
 44604  		onceReadServices = new sync.Once.ptr(new sync.Mutex.ptr(0, 0), 0);
 44605  		confVal = new conf.ptr(false, false, false, false, "linux", 0, ptrType$2.nil, ptrType$1.nil);
 44606  		lookupOrderName = $makeMap(hostLookupOrder.keyFor, [{ k: 0, v: "cgo" }, { k: 1, v: "files,dns" }, { k: 2, v: "dns,files" }, { k: 3, v: "files" }, { k: 4, v: "dns" }]);
 44607  		defaultNS = new sliceType(["127.0.0.1:53", "[::1]:53"]);
 44608  		getHostname = os.Hostname;
 44609  		rr_mk = $makeMap($Int.keyFor, [{ k: 5, v: (function() {
 44610  			return new dnsRR_CNAME.ptr(new dnsRR_Header.ptr("", 0, 0, 0, 0), "");
 44611  		}) }, { k: 15, v: (function() {
 44612  			return new dnsRR_MX.ptr(new dnsRR_Header.ptr("", 0, 0, 0, 0), 0, "");
 44613  		}) }, { k: 2, v: (function() {
 44614  			return new dnsRR_NS.ptr(new dnsRR_Header.ptr("", 0, 0, 0, 0), "");
 44615  		}) }, { k: 12, v: (function() {
 44616  			return new dnsRR_PTR.ptr(new dnsRR_Header.ptr("", 0, 0, 0, 0), "");
 44617  		}) }, { k: 6, v: (function() {
 44618  			return new dnsRR_SOA.ptr(new dnsRR_Header.ptr("", 0, 0, 0, 0), "", "", 0, 0, 0, 0, 0);
 44619  		}) }, { k: 16, v: (function() {
 44620  			return new dnsRR_TXT.ptr(new dnsRR_Header.ptr("", 0, 0, 0, 0), "");
 44621  		}) }, { k: 33, v: (function() {
 44622  			return new dnsRR_SRV.ptr(new dnsRR_Header.ptr("", 0, 0, 0, 0), 0, 0, 0, "");
 44623  		}) }, { k: 1, v: (function() {
 44624  			return new dnsRR_A.ptr(new dnsRR_Header.ptr("", 0, 0, 0, 0), 0);
 44625  		}) }, { k: 28, v: (function() {
 44626  			return new dnsRR_AAAA.ptr(new dnsRR_Header.ptr("", 0, 0, 0, 0), arrayType$1.zero());
 44627  		}) }]);
 44628  		tryDupCloexec = 1;
 44629  		testHookHostsPath = "/etc/hosts";
 44630  		testHookLookupIP = (function $b(ctx, fn, host) {
 44631  			var _r, ctx, fn, host, $s, $r;
 44632  			/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; ctx = $f.ctx; fn = $f.fn; host = $f.host; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 44633  			_r = fn(ctx, host); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 44634  			$s = -1; return _r;
 44635  			/* */ } return; } if ($f === undefined) { $f = { $blk: $b }; } $f._r = _r; $f.ctx = ctx; $f.fn = fn; $f.host = host; $f.$s = $s; $f.$r = $r; return $f;
 44636  		});
 44637  		testHookSetKeepAlive = (function() {
 44638  		});
 44639  		testHookCanceledDial = (function() {
 44640  		});
 44641  		socketFunc = syscall.Socket;
 44642  		connectFunc = syscall.Connect;
 44643  		listenFunc = syscall.Listen;
 44644  		getsockoptIntFunc = syscall.GetsockoptInt;
 44645  		errInvalidInterface = errors.New("invalid network interface");
 44646  		errInvalidInterfaceIndex = errors.New("invalid network interface index");
 44647  		errInvalidInterfaceName = errors.New("invalid network interface name");
 44648  		errNoSuchInterface = errors.New("no such network interface");
 44649  		errNoSuchMulticastInterface = errors.New("no such multicast network interface");
 44650  		flagNames = new sliceType(["up", "broadcast", "loopback", "pointtopoint", "multicast"]);
 44651  		zoneCache = new ipv6ZoneCache.ptr(new sync.RWMutex.ptr(new sync.Mutex.ptr(0, 0), 0, 0, 0, 0), new time.Time.ptr(new $Uint64(0, 0), new $Int64(0, 0), ptrType.nil), {}, {});
 44652  		v4InV6Prefix = new sliceType$1([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255]);
 44653  		$pkg.IPv4bcast = IPv4(255, 255, 255, 255);
 44654  		$pkg.IPv4allsys = IPv4(224, 0, 0, 1);
 44655  		$pkg.IPv4allrouter = IPv4(224, 0, 0, 2);
 44656  		$pkg.IPv4zero = IPv4(0, 0, 0, 0);
 44657  		$pkg.IPv6zero = new IP([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]);
 44658  		$pkg.IPv6unspecified = new IP([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]);
 44659  		$pkg.IPv6loopback = new IP([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]);
 44660  		classAMask = IPv4Mask(255, 0, 0, 0);
 44661  		classBMask = IPv4Mask(255, 255, 0, 0);
 44662  		classCMask = IPv4Mask(255, 255, 255, 0);
 44663  		protocols = $makeMap($String.keyFor, [{ k: "icmp", v: 1 }, { k: "igmp", v: 2 }, { k: "tcp", v: 6 }, { k: "udp", v: 17 }, { k: "ipv6-icmp", v: 58 }]);
 44664  		services = $makeMap($String.keyFor, [{ k: "udp", v: $makeMap($String.keyFor, [{ k: "domain", v: 53 }]) }, { k: "tcp", v: $makeMap($String.keyFor, [{ k: "ftp", v: 21 }, { k: "ftps", v: 990 }, { k: "gopher", v: 70 }, { k: "http", v: 80 }, { k: "https", v: 443 }, { k: "imap2", v: 143 }, { k: "imap3", v: 220 }, { k: "imaps", v: 993 }, { k: "pop3", v: 110 }, { k: "pop3s", v: 995 }, { k: "smtp", v: 25 }, { k: "ssh", v: 22 }, { k: "telnet", v: 23 }]) }]);
 44665  		$pkg.DefaultResolver = new Resolver.ptr(false, false, $throwNilPointerError);
 44666  		listenerBacklog = maxListenerBacklog();
 44667  		errNoSuitableAddress = errors.New("no suitable address found");
 44668  		errMissingAddress = errors.New("missing address");
 44669  		errCanceled = errors.New("operation was canceled");
 44670  		$pkg.ErrWriteToConnected = errors.New("use of WriteTo with pre-connected connection");
 44671  		aLongTimeAgo = $clone(time.Unix(new $Int64(0, 1), new $Int64(0, 0)), time.Time);
 44672  		noDeadline = new time.Time.ptr(new $Uint64(0, 0), new $Int64(0, 0), ptrType.nil);
 44673  		errNoSuchHost = errors.New("no such host");
 44674  		threadLimit = new $Chan(structType$1, 500);
 44675  		_r = mustCIDR("::1/128"); /* */ $s = 16; case 16: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 44676  		_r$1 = mustCIDR("::/0"); /* */ $s = 17; case 17: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 44677  		_r$2 = mustCIDR("::ffff:0:0/96"); /* */ $s = 18; case 18: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 44678  		_r$3 = mustCIDR("2002::/16"); /* */ $s = 19; case 19: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 44679  		_r$4 = mustCIDR("2001::/32"); /* */ $s = 20; case 20: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 44680  		_r$5 = mustCIDR("fc00::/7"); /* */ $s = 21; case 21: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
 44681  		_r$6 = mustCIDR("::/96"); /* */ $s = 22; case 22: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
 44682  		_r$7 = mustCIDR("fec0::/10"); /* */ $s = 23; case 23: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
 44683  		_r$8 = mustCIDR("3ffe::/16"); /* */ $s = 24; case 24: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
 44684  		rfc6724policyTable = new policyTable([new policyTableEntry.ptr(_r, 50, 0), new policyTableEntry.ptr(_r$1, 40, 1), new policyTableEntry.ptr(_r$2, 35, 4), new policyTableEntry.ptr(_r$3, 30, 2), new policyTableEntry.ptr(_r$4, 5, 5), new policyTableEntry.ptr(_r$5, 3, 13), new policyTableEntry.ptr(_r$6, 1, 3), new policyTableEntry.ptr(_r$7, 1, 11), new policyTableEntry.ptr(_r$8, 1, 12)]);
 44685  		$r = init(); /* */ $s = 25; case 25: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 44686  		init$1();
 44687  		/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
 44688  	};
 44689  	$pkg.$init = $init;
 44690  	return $pkg;
 44691  })();
 44692  $packages["github.com/StackExchange/dnscontrol/pkg/spflib"] = (function() {
 44693  	var $pkg = {}, $init, bytes, json, fmt, errors, io, ioutil, net, os, strings, SPFRecord, SPFPart, sliceType, ptrType, sliceType$1, ptrType$1, sliceType$2, arrayType, mapType$1, qualifiers, matchesFlatSpec, Parse, dump;
 44694  	bytes = $packages["bytes"];
 44695  	json = $packages["encoding/json"];
 44696  	fmt = $packages["fmt"];
 44697  	errors = $packages["github.com/StackExchange/dnscontrol/vendor/github.com/pkg/errors"];
 44698  	io = $packages["io"];
 44699  	ioutil = $packages["io/ioutil"];
 44700  	net = $packages["net"];
 44701  	os = $packages["os"];
 44702  	strings = $packages["strings"];
 44703  	SPFRecord = $pkg.SPFRecord = $newType(0, $kindStruct, "spflib.SPFRecord", true, "github.com/StackExchange/dnscontrol/pkg/spflib", true, function(Parts_) {
 44704  		this.$val = this;
 44705  		if (arguments.length === 0) {
 44706  			this.Parts = sliceType$1.nil;
 44707  			return;
 44708  		}
 44709  		this.Parts = Parts_;
 44710  	});
 44711  	SPFPart = $pkg.SPFPart = $newType(0, $kindStruct, "spflib.SPFPart", true, "github.com/StackExchange/dnscontrol/pkg/spflib", true, function(Text_, IsLookup_, IncludeRecord_, IncludeDomain_) {
 44712  		this.$val = this;
 44713  		if (arguments.length === 0) {
 44714  			this.Text = "";
 44715  			this.IsLookup = false;
 44716  			this.IncludeRecord = ptrType$1.nil;
 44717  			this.IncludeDomain = "";
 44718  			return;
 44719  		}
 44720  		this.Text = Text_;
 44721  		this.IsLookup = IsLookup_;
 44722  		this.IncludeRecord = IncludeRecord_;
 44723  		this.IncludeDomain = IncludeDomain_;
 44724  	});
 44725  	sliceType = $sliceType($emptyInterface);
 44726  	ptrType = $ptrType(SPFPart);
 44727  	sliceType$1 = $sliceType(ptrType);
 44728  	ptrType$1 = $ptrType(SPFRecord);
 44729  	sliceType$2 = $sliceType($Uint8);
 44730  	arrayType = $arrayType($Uint8, 64);
 44731  	mapType$1 = $mapType($String, $String);
 44732  	SPFRecord.ptr.prototype.TXT = function() {
 44733  		var _i, _ref, p, s, text;
 44734  		s = this;
 44735  		text = "v=spf1";
 44736  		_ref = s.Parts;
 44737  		_i = 0;
 44738  		while (true) {
 44739  			if (!(_i < _ref.$length)) { break; }
 44740  			p = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
 44741  			text = text + (" " + p.Text);
 44742  			_i++;
 44743  		}
 44744  		return text;
 44745  	};
 44746  	SPFRecord.prototype.TXT = function() { return this.$val.TXT(); };
 44747  	SPFRecord.ptr.prototype.TXTSplit = function(pattern) {
 44748  		var m, pattern, s, $s, $r;
 44749  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; m = $f.m; pattern = $f.pattern; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 44750  		s = this;
 44751  		m = $makeMap($String.keyFor, []);
 44752  		$r = s.split("@", pattern, 1, m); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 44753  		$s = -1; return m;
 44754  		/* */ } return; } if ($f === undefined) { $f = { $blk: SPFRecord.ptr.prototype.TXTSplit }; } $f.m = m; $f.pattern = pattern; $f.s = s; $f.$s = $s; $f.$r = $r; return $f;
 44755  	};
 44756  	SPFRecord.prototype.TXTSplit = function(pattern) { return this.$val.TXTSplit(pattern); };
 44757  	SPFRecord.ptr.prototype.split = function(thisfqdn, pattern, nextIdx, m) {
 44758  		var _i, _key, _key$1, _key$2, _r, _ref, addedCount, base, lastPart, m, newRec, nextFQDN, nextIdx, over, part, pattern, s, tail, thisText, thisfqdn, x, x$1, $s, $r;
 44759  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _i = $f._i; _key = $f._key; _key$1 = $f._key$1; _key$2 = $f._key$2; _r = $f._r; _ref = $f._ref; addedCount = $f.addedCount; base = $f.base; lastPart = $f.lastPart; m = $f.m; newRec = $f.newRec; nextFQDN = $f.nextFQDN; nextIdx = $f.nextIdx; over = $f.over; part = $f.part; pattern = $f.pattern; s = $f.s; tail = $f.tail; thisText = $f.thisText; thisfqdn = $f.thisfqdn; x = $f.x; x$1 = $f.x$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 44760  		s = this;
 44761  		base = s.TXT();
 44762  		if (base.length <= 255) {
 44763  			_key = thisfqdn; (m || $throwRuntimeError("assignment to entry in nil map"))[$String.keyFor(_key)] = { k: _key, v: base };
 44764  			$s = -1; return;
 44765  		}
 44766  		_r = fmt.Sprintf(pattern, new sliceType([new $Int(nextIdx)])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 44767  		nextFQDN = _r;
 44768  		lastPart = (x = s.Parts, x$1 = s.Parts.$length - 1 >> 0, ((x$1 < 0 || x$1 >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + x$1]));
 44769  		tail = " include:" + nextFQDN + " " + lastPart.Text;
 44770  		thisText = "v=spf1";
 44771  		newRec = new SPFRecord.ptr(sliceType$1.nil);
 44772  		over = false;
 44773  		addedCount = 0;
 44774  		_ref = s.Parts;
 44775  		_i = 0;
 44776  		while (true) {
 44777  			if (!(_i < _ref.$length)) { break; }
 44778  			part = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
 44779  			if (!over) {
 44780  				if ((((thisText.length + 1 >> 0) + part.Text.length >> 0) + tail.length >> 0) <= 255) {
 44781  					thisText = thisText + (" " + part.Text);
 44782  					addedCount = addedCount + (1) >> 0;
 44783  				} else {
 44784  					over = true;
 44785  					if (addedCount === 0) {
 44786  						_key$1 = thisfqdn; (m || $throwRuntimeError("assignment to entry in nil map"))[$String.keyFor(_key$1)] = { k: _key$1, v: base };
 44787  						$s = -1; return;
 44788  					}
 44789  				}
 44790  			}
 44791  			if (over) {
 44792  				newRec.Parts = $append(newRec.Parts, part);
 44793  			}
 44794  			_i++;
 44795  		}
 44796  		_key$2 = thisfqdn; (m || $throwRuntimeError("assignment to entry in nil map"))[$String.keyFor(_key$2)] = { k: _key$2, v: thisText + tail };
 44797  		$r = newRec.split(nextFQDN, pattern, nextIdx + 1 >> 0, m); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 44798  		$s = -1; return;
 44799  		/* */ } return; } if ($f === undefined) { $f = { $blk: SPFRecord.ptr.prototype.split }; } $f._i = _i; $f._key = _key; $f._key$1 = _key$1; $f._key$2 = _key$2; $f._r = _r; $f._ref = _ref; $f.addedCount = addedCount; $f.base = base; $f.lastPart = lastPart; $f.m = m; $f.newRec = newRec; $f.nextFQDN = nextFQDN; $f.nextIdx = nextIdx; $f.over = over; $f.part = part; $f.pattern = pattern; $f.s = s; $f.tail = tail; $f.thisText = thisText; $f.thisfqdn = thisfqdn; $f.x = x; $f.x$1 = x$1; $f.$s = $s; $f.$r = $r; return $f;
 44800  	};
 44801  	SPFRecord.prototype.split = function(thisfqdn, pattern, nextIdx, m) { return this.$val.split(thisfqdn, pattern, nextIdx, m); };
 44802  	SPFRecord.ptr.prototype.Flatten = function(spec) {
 44803  		var _i, _i$1, _ref, _ref$1, childPart, flattenedChild, newRec, p, s, spec;
 44804  		s = this;
 44805  		newRec = new SPFRecord.ptr(sliceType$1.nil);
 44806  		_ref = s.Parts;
 44807  		_i = 0;
 44808  		while (true) {
 44809  			if (!(_i < _ref.$length)) { break; }
 44810  			p = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
 44811  			if (p.IncludeRecord === ptrType$1.nil) {
 44812  				newRec.Parts = $append(newRec.Parts, p);
 44813  			} else if (!matchesFlatSpec(spec, p.IncludeDomain)) {
 44814  				newRec.Parts = $append(newRec.Parts, p);
 44815  			} else {
 44816  				flattenedChild = p.IncludeRecord.Flatten(spec);
 44817  				_ref$1 = $subslice(flattenedChild.Parts, 0, (flattenedChild.Parts.$length - 1 >> 0));
 44818  				_i$1 = 0;
 44819  				while (true) {
 44820  					if (!(_i$1 < _ref$1.$length)) { break; }
 44821  					childPart = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]);
 44822  					newRec.Parts = $append(newRec.Parts, childPart);
 44823  					_i$1++;
 44824  				}
 44825  			}
 44826  			_i++;
 44827  		}
 44828  		return newRec;
 44829  	};
 44830  	SPFRecord.prototype.Flatten = function(spec) { return this.$val.Flatten(spec); };
 44831  	matchesFlatSpec = function(spec, fqdn) {
 44832  		var _i, _ref, fqdn, p, spec;
 44833  		if (spec === "*") {
 44834  			return true;
 44835  		}
 44836  		_ref = strings.Split(spec, ",");
 44837  		_i = 0;
 44838  		while (true) {
 44839  			if (!(_i < _ref.$length)) { break; }
 44840  			p = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
 44841  			if (p === fqdn) {
 44842  				return true;
 44843  			}
 44844  			_i++;
 44845  		}
 44846  		return false;
 44847  	};
 44848  	SPFRecord.ptr.prototype.Lookups = function() {
 44849  		var _i, _ref, count, p, s;
 44850  		s = this;
 44851  		count = 0;
 44852  		_ref = s.Parts;
 44853  		_i = 0;
 44854  		while (true) {
 44855  			if (!(_i < _ref.$length)) { break; }
 44856  			p = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
 44857  			if (p.IsLookup) {
 44858  				count = count + (1) >> 0;
 44859  			}
 44860  			if (!(p.IncludeRecord === ptrType$1.nil)) {
 44861  				count = count + (p.IncludeRecord.Lookups()) >> 0;
 44862  			}
 44863  			_i++;
 44864  		}
 44865  		return count;
 44866  	};
 44867  	SPFRecord.prototype.Lookups = function() { return this.$val.Lookups(); };
 44868  	Parse = function(text, dnsres) {
 44869  		var _entry, _i, _r, _r$1, _r$2, _r$3, _r$4, _ref, _tuple, _tuple$1, dnsres, err, p, part, parts, rec, subRecord, text, $s, $r;
 44870  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _entry = $f._entry; _i = $f._i; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _ref = $f._ref; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; dnsres = $f.dnsres; err = $f.err; p = $f.p; part = $f.part; parts = $f.parts; rec = $f.rec; subRecord = $f.subRecord; text = $f.text; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 44871  		/* */ if (!strings.HasPrefix(text, "v=spf1 ")) { $s = 1; continue; }
 44872  		/* */ $s = 2; continue;
 44873  		/* if (!strings.HasPrefix(text, "v=spf1 ")) { */ case 1:
 44874  			_r = errors.Errorf("Not an spf record", new sliceType([])); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 44875  			$s = -1; return [ptrType$1.nil, _r];
 44876  		/* } */ case 2:
 44877  		parts = strings.Split(text, " ");
 44878  		rec = new SPFRecord.ptr(sliceType$1.nil);
 44879  		_ref = $subslice(parts, 1);
 44880  		_i = 0;
 44881  		/* while (true) { */ case 4:
 44882  			/* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 5; continue; }
 44883  			part = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
 44884  			/* */ if (part === "") { $s = 6; continue; }
 44885  			/* */ $s = 7; continue;
 44886  			/* if (part === "") { */ case 6:
 44887  				_i++;
 44888  				/* continue; */ $s = 4; continue;
 44889  			/* } */ case 7:
 44890  			p = new SPFPart.ptr(part, false, ptrType$1.nil, "");
 44891  			if ((_entry = qualifiers[$Uint8.keyFor(part.charCodeAt(0))], _entry !== undefined ? _entry.v : false)) {
 44892  				part = $substring(part, 1);
 44893  			}
 44894  			rec.Parts = $append(rec.Parts, p);
 44895  			/* */ if (part === "all") { $s = 8; continue; }
 44896  			/* */ if (strings.HasPrefix(part, "a") || strings.HasPrefix(part, "mx")) { $s = 9; continue; }
 44897  			/* */ if (strings.HasPrefix(part, "ip4:") || strings.HasPrefix(part, "ip6:")) { $s = 10; continue; }
 44898  			/* */ if (strings.HasPrefix(part, "include:")) { $s = 11; continue; }
 44899  			/* */ if (strings.HasPrefix(part, "exists:")) { $s = 12; continue; }
 44900  			/* */ $s = 13; continue;
 44901  			/* if (part === "all") { */ case 8:
 44902  				/* break; */ $s = 5; continue;
 44903  				$s = 14; continue;
 44904  			/* } else if (strings.HasPrefix(part, "a") || strings.HasPrefix(part, "mx")) { */ case 9:
 44905  				p.IsLookup = true;
 44906  				$s = 14; continue;
 44907  			/* } else if (strings.HasPrefix(part, "ip4:") || strings.HasPrefix(part, "ip6:")) { */ case 10:
 44908  				_i++;
 44909  				/* continue; */ $s = 4; continue;
 44910  				$s = 14; continue;
 44911  			/* } else if (strings.HasPrefix(part, "include:")) { */ case 11:
 44912  				p.IsLookup = true;
 44913  				p.IncludeDomain = strings.TrimPrefix(part, "include:");
 44914  				/* */ if (!($interfaceIsEqual(dnsres, $ifaceNil))) { $s = 15; continue; }
 44915  				/* */ $s = 16; continue;
 44916  				/* if (!($interfaceIsEqual(dnsres, $ifaceNil))) { */ case 15:
 44917  					_r$1 = dnsres.GetSPF(p.IncludeDomain); /* */ $s = 17; case 17: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 44918  					_tuple = _r$1;
 44919  					subRecord = _tuple[0];
 44920  					err = _tuple[1];
 44921  					if (!($interfaceIsEqual(err, $ifaceNil))) {
 44922  						$s = -1; return [ptrType$1.nil, err];
 44923  					}
 44924  					_r$2 = Parse(subRecord, dnsres); /* */ $s = 18; case 18: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 44925  					_tuple$1 = _r$2;
 44926  					p.IncludeRecord = _tuple$1[0];
 44927  					err = _tuple$1[1];
 44928  					/* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 19; continue; }
 44929  					/* */ $s = 20; continue;
 44930  					/* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 19:
 44931  						_r$3 = errors.Errorf("In included spf: %s", new sliceType([err])); /* */ $s = 21; case 21: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 44932  						$s = -1; return [ptrType$1.nil, _r$3];
 44933  					/* } */ case 20:
 44934  				/* } */ case 16:
 44935  				$s = 14; continue;
 44936  			/* } else if (strings.HasPrefix(part, "exists:")) { */ case 12:
 44937  				p.IsLookup = true;
 44938  				$s = 14; continue;
 44939  			/* } else { */ case 13:
 44940  				_r$4 = errors.Errorf("Unsupported spf part %s", new sliceType([new $String(part)])); /* */ $s = 22; case 22: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 44941  				$s = -1; return [ptrType$1.nil, _r$4];
 44942  			/* } */ case 14:
 44943  			_i++;
 44944  		/* } */ $s = 4; continue; case 5:
 44945  		$s = -1; return [rec, $ifaceNil];
 44946  		/* */ } return; } if ($f === undefined) { $f = { $blk: Parse }; } $f._entry = _entry; $f._i = _i; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._ref = _ref; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.dnsres = dnsres; $f.err = err; $f.p = p; $f.part = part; $f.parts = parts; $f.rec = rec; $f.subRecord = subRecord; $f.text = text; $f.$s = $s; $f.$r = $r; return $f;
 44947  	};
 44948  	$pkg.Parse = Parse;
 44949  	dump = function(rec, indent, w) {
 44950  		var _i, _i$1, _r, _r$1, _r$2, _r$3, _r$4, _ref, _ref$1, indent, p, p$1, rec, w, $s, $r;
 44951  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _i = $f._i; _i$1 = $f._i$1; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _ref = $f._ref; _ref$1 = $f._ref$1; indent = $f.indent; p = $f.p; p$1 = $f.p$1; rec = $f.rec; w = $f.w; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 44952  		_r = fmt.Fprintf(w, "%sTotal Lookups: %d\n", new sliceType([new $String(indent), new $Int(rec.Lookups())])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 44953  		_r;
 44954  		_r$1 = fmt.Fprint(w, new sliceType([new $String(indent + "v=spf1")])); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 44955  		_r$1;
 44956  		_ref = rec.Parts;
 44957  		_i = 0;
 44958  		/* while (true) { */ case 3:
 44959  			/* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 4; continue; }
 44960  			p = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
 44961  			_r$2 = fmt.Fprint(w, new sliceType([new $String(" " + p.Text)])); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 44962  			_r$2;
 44963  			_i++;
 44964  		/* } */ $s = 3; continue; case 4:
 44965  		_r$3 = fmt.Fprintln(w, new sliceType([])); /* */ $s = 6; case 6: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 44966  		_r$3;
 44967  		indent = indent + ("\t");
 44968  		_ref$1 = rec.Parts;
 44969  		_i$1 = 0;
 44970  		/* while (true) { */ case 7:
 44971  			/* if (!(_i$1 < _ref$1.$length)) { break; } */ if(!(_i$1 < _ref$1.$length)) { $s = 8; continue; }
 44972  			p$1 = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]);
 44973  			/* */ if (p$1.IsLookup) { $s = 9; continue; }
 44974  			/* */ $s = 10; continue;
 44975  			/* if (p$1.IsLookup) { */ case 9:
 44976  				_r$4 = fmt.Fprintln(w, new sliceType([new $String(indent + p$1.Text)])); /* */ $s = 11; case 11: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 44977  				_r$4;
 44978  			/* } */ case 10:
 44979  			/* */ if (!(p$1.IncludeRecord === ptrType$1.nil)) { $s = 12; continue; }
 44980  			/* */ $s = 13; continue;
 44981  			/* if (!(p$1.IncludeRecord === ptrType$1.nil)) { */ case 12:
 44982  				$r = dump(p$1.IncludeRecord, indent + "\t", w); /* */ $s = 14; case 14: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 44983  			/* } */ case 13:
 44984  			_i$1++;
 44985  		/* } */ $s = 7; continue; case 8:
 44986  		$s = -1; return;
 44987  		/* */ } return; } if ($f === undefined) { $f = { $blk: dump }; } $f._i = _i; $f._i$1 = _i$1; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._ref = _ref; $f._ref$1 = _ref$1; $f.indent = indent; $f.p = p; $f.p$1 = p$1; $f.rec = rec; $f.w = w; $f.$s = $s; $f.$r = $r; return $f;
 44988  	};
 44989  	SPFRecord.ptr.prototype.Print = function() {
 44990  		var s, w, $s, $r;
 44991  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; s = $f.s; w = $f.w; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 44992  		s = this;
 44993  		w = new bytes.Buffer.ptr(sliceType$2.nil, 0, arrayType.zero(), 0);
 44994  		$r = dump(s, "", w); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 44995  		$s = -1; return w.String();
 44996  		/* */ } return; } if ($f === undefined) { $f = { $blk: SPFRecord.ptr.prototype.Print }; } $f.s = s; $f.w = w; $f.$s = $s; $f.$r = $r; return $f;
 44997  	};
 44998  	SPFRecord.prototype.Print = function() { return this.$val.Print(); };
 44999  	ptrType$1.methods = [{prop: "TXT", name: "TXT", pkg: "", typ: $funcType([], [$String], false)}, {prop: "TXTSplit", name: "TXTSplit", pkg: "", typ: $funcType([$String], [mapType$1], false)}, {prop: "split", name: "split", pkg: "github.com/StackExchange/dnscontrol/pkg/spflib", typ: $funcType([$String, $String, $Int, mapType$1], [], false)}, {prop: "Flatten", name: "Flatten", pkg: "", typ: $funcType([$String], [ptrType$1], false)}, {prop: "Lookups", name: "Lookups", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Print", name: "Print", pkg: "", typ: $funcType([], [$String], false)}];
 45000  	SPFRecord.init("", [{prop: "Parts", name: "Parts", anonymous: false, exported: true, typ: sliceType$1, tag: ""}]);
 45001  	SPFPart.init("", [{prop: "Text", name: "Text", anonymous: false, exported: true, typ: $String, tag: ""}, {prop: "IsLookup", name: "IsLookup", anonymous: false, exported: true, typ: $Bool, tag: ""}, {prop: "IncludeRecord", name: "IncludeRecord", anonymous: false, exported: true, typ: ptrType$1, tag: ""}, {prop: "IncludeDomain", name: "IncludeDomain", anonymous: false, exported: true, typ: $String, tag: ""}]);
 45002  	$init = function() {
 45003  		$pkg.$init = function() {};
 45004  		/* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 45005  		$r = bytes.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 45006  		$r = json.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 45007  		$r = fmt.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 45008  		$r = errors.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 45009  		$r = io.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 45010  		$r = ioutil.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 45011  		$r = net.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 45012  		$r = os.$init(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 45013  		$r = strings.$init(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 45014  		qualifiers = $makeMap($Uint8.keyFor, [{ k: 63, v: true }, { k: 126, v: true }, { k: 45, v: true }, { k: 43, v: true }]);
 45015  		/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
 45016  	};
 45017  	$pkg.$init = $init;
 45018  	return $pkg;
 45019  })();
 45020  $packages["github.com/gopherjs/jquery"] = (function() {
 45021  	var $pkg = {}, $init, js, JQuery, Event, JQueryCoordinates, sliceType, funcType$1, mapType, sliceType$1, funcType$2, funcType$3, ptrType, sliceType$2, ptrType$1, NewJQuery;
 45022  	js = $packages["github.com/gopherjs/gopherjs/js"];
 45023  	JQuery = $pkg.JQuery = $newType(0, $kindStruct, "jquery.JQuery", true, "github.com/gopherjs/jquery", true, function(o_, Jquery_, Selector_, Length_, Context_) {
 45024  		this.$val = this;
 45025  		if (arguments.length === 0) {
 45026  			this.o = null;
 45027  			this.Jquery = "";
 45028  			this.Selector = "";
 45029  			this.Length = 0;
 45030  			this.Context = "";
 45031  			return;
 45032  		}
 45033  		this.o = o_;
 45034  		this.Jquery = Jquery_;
 45035  		this.Selector = Selector_;
 45036  		this.Length = Length_;
 45037  		this.Context = Context_;
 45038  	});
 45039  	Event = $pkg.Event = $newType(0, $kindStruct, "jquery.Event", true, "github.com/gopherjs/jquery", true, function(Object_, KeyCode_, Target_, CurrentTarget_, DelegateTarget_, RelatedTarget_, Data_, Result_, Which_, Namespace_, MetaKey_, ShiftKey_, CtrlKey_, PageX_, PageY_, Type_) {
 45040  		this.$val = this;
 45041  		if (arguments.length === 0) {
 45042  			this.Object = null;
 45043  			this.KeyCode = 0;
 45044  			this.Target = null;
 45045  			this.CurrentTarget = null;
 45046  			this.DelegateTarget = null;
 45047  			this.RelatedTarget = null;
 45048  			this.Data = null;
 45049  			this.Result = null;
 45050  			this.Which = 0;
 45051  			this.Namespace = "";
 45052  			this.MetaKey = false;
 45053  			this.ShiftKey = false;
 45054  			this.CtrlKey = false;
 45055  			this.PageX = 0;
 45056  			this.PageY = 0;
 45057  			this.Type = "";
 45058  			return;
 45059  		}
 45060  		this.Object = Object_;
 45061  		this.KeyCode = KeyCode_;
 45062  		this.Target = Target_;
 45063  		this.CurrentTarget = CurrentTarget_;
 45064  		this.DelegateTarget = DelegateTarget_;
 45065  		this.RelatedTarget = RelatedTarget_;
 45066  		this.Data = Data_;
 45067  		this.Result = Result_;
 45068  		this.Which = Which_;
 45069  		this.Namespace = Namespace_;
 45070  		this.MetaKey = MetaKey_;
 45071  		this.ShiftKey = ShiftKey_;
 45072  		this.CtrlKey = CtrlKey_;
 45073  		this.PageX = PageX_;
 45074  		this.PageY = PageY_;
 45075  		this.Type = Type_;
 45076  	});
 45077  	JQueryCoordinates = $pkg.JQueryCoordinates = $newType(0, $kindStruct, "jquery.JQueryCoordinates", true, "github.com/gopherjs/jquery", true, function(Left_, Top_) {
 45078  		this.$val = this;
 45079  		if (arguments.length === 0) {
 45080  			this.Left = 0;
 45081  			this.Top = 0;
 45082  			return;
 45083  		}
 45084  		this.Left = Left_;
 45085  		this.Top = Top_;
 45086  	});
 45087  	sliceType = $sliceType($emptyInterface);
 45088  	funcType$1 = $funcType([$Int, $emptyInterface], [], false);
 45089  	mapType = $mapType($String, $emptyInterface);
 45090  	sliceType$1 = $sliceType($String);
 45091  	funcType$2 = $funcType([$Int, $String], [$String], false);
 45092  	funcType$3 = $funcType([], [], false);
 45093  	ptrType = $ptrType(js.Object);
 45094  	sliceType$2 = $sliceType($Bool);
 45095  	ptrType$1 = $ptrType(Event);
 45096  	Event.ptr.prototype.PreventDefault = function() {
 45097  		var event;
 45098  		event = this;
 45099  		event.Object.preventDefault();
 45100  	};
 45101  	Event.prototype.PreventDefault = function() { return this.$val.PreventDefault(); };
 45102  	Event.ptr.prototype.IsDefaultPrevented = function() {
 45103  		var event;
 45104  		event = this;
 45105  		return !!(event.Object.isDefaultPrevented());
 45106  	};
 45107  	Event.prototype.IsDefaultPrevented = function() { return this.$val.IsDefaultPrevented(); };
 45108  	Event.ptr.prototype.IsImmediatePropogationStopped = function() {
 45109  		var event;
 45110  		event = this;
 45111  		return !!(event.Object.isImmediatePropogationStopped());
 45112  	};
 45113  	Event.prototype.IsImmediatePropogationStopped = function() { return this.$val.IsImmediatePropogationStopped(); };
 45114  	Event.ptr.prototype.IsPropagationStopped = function() {
 45115  		var event;
 45116  		event = this;
 45117  		return !!(event.Object.isPropagationStopped());
 45118  	};
 45119  	Event.prototype.IsPropagationStopped = function() { return this.$val.IsPropagationStopped(); };
 45120  	Event.ptr.prototype.StopImmediatePropagation = function() {
 45121  		var event;
 45122  		event = this;
 45123  		event.Object.stopImmediatePropagation();
 45124  	};
 45125  	Event.prototype.StopImmediatePropagation = function() { return this.$val.StopImmediatePropagation(); };
 45126  	Event.ptr.prototype.StopPropagation = function() {
 45127  		var event;
 45128  		event = this;
 45129  		event.Object.stopPropagation();
 45130  	};
 45131  	Event.prototype.StopPropagation = function() { return this.$val.StopPropagation(); };
 45132  	NewJQuery = function(args) {
 45133  		var args;
 45134  		return new JQuery.ptr(new ($global.Function.prototype.bind.apply($global.jQuery, [undefined].concat($externalize(args, sliceType)))), "", "", 0, "");
 45135  	};
 45136  	$pkg.NewJQuery = NewJQuery;
 45137  	JQuery.ptr.prototype.Each = function(fn) {
 45138  		var fn, j;
 45139  		j = this;
 45140  		j.o = j.o.each($externalize(fn, funcType$1));
 45141  		return j;
 45142  	};
 45143  	JQuery.prototype.Each = function(fn) { return this.$val.Each(fn); };
 45144  	JQuery.ptr.prototype.Call = function(name, args) {
 45145  		var args, j, name, obj;
 45146  		j = this;
 45147  		return NewJQuery(new sliceType([new $jsObjectPtr((obj = j.o, obj[$externalize(name, $String)].apply(obj, $externalize(args, sliceType))))]));
 45148  	};
 45149  	JQuery.prototype.Call = function(name, args) { return this.$val.Call(name, args); };
 45150  	JQuery.ptr.prototype.Underlying = function() {
 45151  		var j;
 45152  		j = this;
 45153  		return j.o;
 45154  	};
 45155  	JQuery.prototype.Underlying = function() { return this.$val.Underlying(); };
 45156  	JQuery.ptr.prototype.Get = function(i) {
 45157  		var i, j, obj;
 45158  		j = this;
 45159  		return (obj = j.o, obj.get.apply(obj, $externalize(i, sliceType)));
 45160  	};
 45161  	JQuery.prototype.Get = function(i) { return this.$val.Get(i); };
 45162  	JQuery.ptr.prototype.Append = function(i) {
 45163  		var i, j, obj;
 45164  		j = this;
 45165  		j.o = (obj = j.o, obj.append.apply(obj, $externalize(i, sliceType)));
 45166  		return j;
 45167  	};
 45168  	JQuery.prototype.Append = function(i) { return this.$val.Append(i); };
 45169  	JQuery.ptr.prototype.Empty = function() {
 45170  		var j;
 45171  		j = this;
 45172  		j.o = j.o.empty();
 45173  		return j;
 45174  	};
 45175  	JQuery.prototype.Empty = function() { return this.$val.Empty(); };
 45176  	JQuery.ptr.prototype.Detach = function(i) {
 45177  		var i, j, obj;
 45178  		j = this;
 45179  		j.o = (obj = j.o, obj.detach.apply(obj, $externalize(i, sliceType)));
 45180  		return j;
 45181  	};
 45182  	JQuery.prototype.Detach = function(i) { return this.$val.Detach(i); };
 45183  	JQuery.ptr.prototype.Eq = function(idx) {
 45184  		var idx, j;
 45185  		j = this;
 45186  		j.o = j.o.eq(idx);
 45187  		return j;
 45188  	};
 45189  	JQuery.prototype.Eq = function(idx) { return this.$val.Eq(idx); };
 45190  	JQuery.ptr.prototype.FadeIn = function(i) {
 45191  		var i, j, obj;
 45192  		j = this;
 45193  		j.o = (obj = j.o, obj.fadeIn.apply(obj, $externalize(i, sliceType)));
 45194  		return j;
 45195  	};
 45196  	JQuery.prototype.FadeIn = function(i) { return this.$val.FadeIn(i); };
 45197  	JQuery.ptr.prototype.Delay = function(i) {
 45198  		var i, j, obj;
 45199  		j = this;
 45200  		j.o = (obj = j.o, obj.delay.apply(obj, $externalize(i, sliceType)));
 45201  		return j;
 45202  	};
 45203  	JQuery.prototype.Delay = function(i) { return this.$val.Delay(i); };
 45204  	JQuery.ptr.prototype.ToArray = function() {
 45205  		var j;
 45206  		j = this;
 45207  		return $assertType($internalize(j.o.toArray(), $emptyInterface), sliceType);
 45208  	};
 45209  	JQuery.prototype.ToArray = function() { return this.$val.ToArray(); };
 45210  	JQuery.ptr.prototype.Remove = function(i) {
 45211  		var i, j, obj;
 45212  		j = this;
 45213  		j.o = (obj = j.o, obj.remove.apply(obj, $externalize(i, sliceType)));
 45214  		return j;
 45215  	};
 45216  	JQuery.prototype.Remove = function(i) { return this.$val.Remove(i); };
 45217  	JQuery.ptr.prototype.Stop = function(i) {
 45218  		var i, j, obj;
 45219  		j = this;
 45220  		j.o = (obj = j.o, obj.stop.apply(obj, $externalize(i, sliceType)));
 45221  		return j;
 45222  	};
 45223  	JQuery.prototype.Stop = function(i) { return this.$val.Stop(i); };
 45224  	JQuery.ptr.prototype.AddBack = function(i) {
 45225  		var i, j, obj;
 45226  		j = this;
 45227  		j.o = (obj = j.o, obj.addBack.apply(obj, $externalize(i, sliceType)));
 45228  		return j;
 45229  	};
 45230  	JQuery.prototype.AddBack = function(i) { return this.$val.AddBack(i); };
 45231  	JQuery.ptr.prototype.Css = function(name) {
 45232  		var j, name;
 45233  		j = this;
 45234  		return $internalize(j.o.css($externalize(name, $String)), $String);
 45235  	};
 45236  	JQuery.prototype.Css = function(name) { return this.$val.Css(name); };
 45237  	JQuery.ptr.prototype.CssArray = function(arr) {
 45238  		var arr, j;
 45239  		j = this;
 45240  		return $assertType($internalize(j.o.css($externalize(arr, sliceType$1)), $emptyInterface), mapType);
 45241  	};
 45242  	JQuery.prototype.CssArray = function(arr) { return this.$val.CssArray(arr); };
 45243  	JQuery.ptr.prototype.SetCss = function(i) {
 45244  		var i, j, obj;
 45245  		j = this;
 45246  		j.o = (obj = j.o, obj.css.apply(obj, $externalize(i, sliceType)));
 45247  		return j;
 45248  	};
 45249  	JQuery.prototype.SetCss = function(i) { return this.$val.SetCss(i); };
 45250  	JQuery.ptr.prototype.Text = function() {
 45251  		var j;
 45252  		j = this;
 45253  		return $internalize(j.o.text(), $String);
 45254  	};
 45255  	JQuery.prototype.Text = function() { return this.$val.Text(); };
 45256  	JQuery.ptr.prototype.SetText = function(i) {
 45257  		var _ref, i, j;
 45258  		j = this;
 45259  		_ref = i;
 45260  		if ($assertType(_ref, funcType$2, true)[1] || $assertType(_ref, $String, true)[1]) {
 45261  		} else {
 45262  			console.log("SetText Argument should be 'string' or 'func(int, string) string'");
 45263  		}
 45264  		j.o = j.o.text($externalize(i, $emptyInterface));
 45265  		return j;
 45266  	};
 45267  	JQuery.prototype.SetText = function(i) { return this.$val.SetText(i); };
 45268  	JQuery.ptr.prototype.Val = function() {
 45269  		var j;
 45270  		j = this;
 45271  		return $internalize(j.o.val(), $String);
 45272  	};
 45273  	JQuery.prototype.Val = function() { return this.$val.Val(); };
 45274  	JQuery.ptr.prototype.SetVal = function(i) {
 45275  		var i, j;
 45276  		j = this;
 45277  		j.o.val($externalize(i, $emptyInterface));
 45278  		return j;
 45279  	};
 45280  	JQuery.prototype.SetVal = function(i) { return this.$val.SetVal(i); };
 45281  	JQuery.ptr.prototype.Prop = function(property) {
 45282  		var j, property;
 45283  		j = this;
 45284  		return $internalize(j.o.prop($externalize(property, $String)), $emptyInterface);
 45285  	};
 45286  	JQuery.prototype.Prop = function(property) { return this.$val.Prop(property); };
 45287  	JQuery.ptr.prototype.SetProp = function(i) {
 45288  		var i, j, obj;
 45289  		j = this;
 45290  		j.o = (obj = j.o, obj.prop.apply(obj, $externalize(i, sliceType)));
 45291  		return j;
 45292  	};
 45293  	JQuery.prototype.SetProp = function(i) { return this.$val.SetProp(i); };
 45294  	JQuery.ptr.prototype.RemoveProp = function(property) {
 45295  		var j, property;
 45296  		j = this;
 45297  		j.o = j.o.removeProp($externalize(property, $String));
 45298  		return j;
 45299  	};
 45300  	JQuery.prototype.RemoveProp = function(property) { return this.$val.RemoveProp(property); };
 45301  	JQuery.ptr.prototype.Attr = function(property) {
 45302  		var attr, j, property;
 45303  		j = this;
 45304  		attr = j.o.attr($externalize(property, $String));
 45305  		if (attr === undefined) {
 45306  			return "";
 45307  		}
 45308  		return $internalize(attr, $String);
 45309  	};
 45310  	JQuery.prototype.Attr = function(property) { return this.$val.Attr(property); };
 45311  	JQuery.ptr.prototype.SetAttr = function(i) {
 45312  		var i, j, obj;
 45313  		j = this;
 45314  		j.o = (obj = j.o, obj.attr.apply(obj, $externalize(i, sliceType)));
 45315  		return j;
 45316  	};
 45317  	JQuery.prototype.SetAttr = function(i) { return this.$val.SetAttr(i); };
 45318  	JQuery.ptr.prototype.RemoveAttr = function(property) {
 45319  		var j, property;
 45320  		j = this;
 45321  		j.o = j.o.removeAttr($externalize(property, $String));
 45322  		return j;
 45323  	};
 45324  	JQuery.prototype.RemoveAttr = function(property) { return this.$val.RemoveAttr(property); };
 45325  	JQuery.ptr.prototype.HasClass = function(class$1) {
 45326  		var class$1, j;
 45327  		j = this;
 45328  		return !!(j.o.hasClass($externalize(class$1, $String)));
 45329  	};
 45330  	JQuery.prototype.HasClass = function(class$1) { return this.$val.HasClass(class$1); };
 45331  	JQuery.ptr.prototype.AddClass = function(i) {
 45332  		var _ref, i, j;
 45333  		j = this;
 45334  		_ref = i;
 45335  		if ($assertType(_ref, funcType$2, true)[1] || $assertType(_ref, $String, true)[1]) {
 45336  		} else {
 45337  			console.log("addClass Argument should be 'string' or 'func(int, string) string'");
 45338  		}
 45339  		j.o = j.o.addClass($externalize(i, $emptyInterface));
 45340  		return j;
 45341  	};
 45342  	JQuery.prototype.AddClass = function(i) { return this.$val.AddClass(i); };
 45343  	JQuery.ptr.prototype.RemoveClass = function(property) {
 45344  		var j, property;
 45345  		j = this;
 45346  		j.o = j.o.removeClass($externalize(property, $String));
 45347  		return j;
 45348  	};
 45349  	JQuery.prototype.RemoveClass = function(property) { return this.$val.RemoveClass(property); };
 45350  	JQuery.ptr.prototype.ToggleClass = function(i) {
 45351  		var i, j, obj;
 45352  		j = this;
 45353  		j.o = (obj = j.o, obj.toggleClass.apply(obj, $externalize(i, sliceType)));
 45354  		return j;
 45355  	};
 45356  	JQuery.prototype.ToggleClass = function(i) { return this.$val.ToggleClass(i); };
 45357  	JQuery.ptr.prototype.Focus = function() {
 45358  		var j;
 45359  		j = this;
 45360  		j.o = j.o.focus();
 45361  		return j;
 45362  	};
 45363  	JQuery.prototype.Focus = function() { return this.$val.Focus(); };
 45364  	JQuery.ptr.prototype.Blur = function() {
 45365  		var j;
 45366  		j = this;
 45367  		j.o = j.o.blur();
 45368  		return j;
 45369  	};
 45370  	JQuery.prototype.Blur = function() { return this.$val.Blur(); };
 45371  	JQuery.ptr.prototype.ReplaceAll = function(i) {
 45372  		var i, j;
 45373  		j = this;
 45374  		j.o = j.o.replaceAll($externalize(i, $emptyInterface));
 45375  		return j;
 45376  	};
 45377  	JQuery.prototype.ReplaceAll = function(i) { return this.$val.ReplaceAll(i); };
 45378  	JQuery.ptr.prototype.ReplaceWith = function(i) {
 45379  		var i, j;
 45380  		j = this;
 45381  		j.o = j.o.replaceWith($externalize(i, $emptyInterface));
 45382  		return j;
 45383  	};
 45384  	JQuery.prototype.ReplaceWith = function(i) { return this.$val.ReplaceWith(i); };
 45385  	JQuery.ptr.prototype.After = function(i) {
 45386  		var i, j;
 45387  		j = this;
 45388  		j.o = j.o.after($externalize(i, sliceType));
 45389  		return j;
 45390  	};
 45391  	JQuery.prototype.After = function(i) { return this.$val.After(i); };
 45392  	JQuery.ptr.prototype.Before = function(i) {
 45393  		var i, j, obj;
 45394  		j = this;
 45395  		j.o = (obj = j.o, obj.before.apply(obj, $externalize(i, sliceType)));
 45396  		return j;
 45397  	};
 45398  	JQuery.prototype.Before = function(i) { return this.$val.Before(i); };
 45399  	JQuery.ptr.prototype.Prepend = function(i) {
 45400  		var i, j, obj;
 45401  		j = this;
 45402  		j.o = (obj = j.o, obj.prepend.apply(obj, $externalize(i, sliceType)));
 45403  		return j;
 45404  	};
 45405  	JQuery.prototype.Prepend = function(i) { return this.$val.Prepend(i); };
 45406  	JQuery.ptr.prototype.PrependTo = function(i) {
 45407  		var i, j;
 45408  		j = this;
 45409  		j.o = j.o.prependTo($externalize(i, $emptyInterface));
 45410  		return j;
 45411  	};
 45412  	JQuery.prototype.PrependTo = function(i) { return this.$val.PrependTo(i); };
 45413  	JQuery.ptr.prototype.AppendTo = function(i) {
 45414  		var i, j;
 45415  		j = this;
 45416  		j.o = j.o.appendTo($externalize(i, $emptyInterface));
 45417  		return j;
 45418  	};
 45419  	JQuery.prototype.AppendTo = function(i) { return this.$val.AppendTo(i); };
 45420  	JQuery.ptr.prototype.InsertAfter = function(i) {
 45421  		var i, j;
 45422  		j = this;
 45423  		j.o = j.o.insertAfter($externalize(i, $emptyInterface));
 45424  		return j;
 45425  	};
 45426  	JQuery.prototype.InsertAfter = function(i) { return this.$val.InsertAfter(i); };
 45427  	JQuery.ptr.prototype.InsertBefore = function(i) {
 45428  		var i, j;
 45429  		j = this;
 45430  		j.o = j.o.insertBefore($externalize(i, $emptyInterface));
 45431  		return j;
 45432  	};
 45433  	JQuery.prototype.InsertBefore = function(i) { return this.$val.InsertBefore(i); };
 45434  	JQuery.ptr.prototype.Show = function(i) {
 45435  		var i, j, obj;
 45436  		j = this;
 45437  		j.o = (obj = j.o, obj.show.apply(obj, $externalize(i, sliceType)));
 45438  		return j;
 45439  	};
 45440  	JQuery.prototype.Show = function(i) { return this.$val.Show(i); };
 45441  	JQuery.ptr.prototype.Hide = function(i) {
 45442  		var i, j, obj;
 45443  		j = this;
 45444  		(obj = j.o, obj.hide.apply(obj, $externalize(i, sliceType)));
 45445  		return j;
 45446  	};
 45447  	JQuery.prototype.Hide = function(i) { return this.$val.Hide(i); };
 45448  	JQuery.ptr.prototype.Toggle = function(i) {
 45449  		var i, j, obj;
 45450  		j = this;
 45451  		j.o = (obj = j.o, obj.toggle.apply(obj, $externalize(i, sliceType)));
 45452  		return j;
 45453  	};
 45454  	JQuery.prototype.Toggle = function(i) { return this.$val.Toggle(i); };
 45455  	JQuery.ptr.prototype.Contents = function() {
 45456  		var j;
 45457  		j = this;
 45458  		j.o = j.o.contents();
 45459  		return j;
 45460  	};
 45461  	JQuery.prototype.Contents = function() { return this.$val.Contents(); };
 45462  	JQuery.ptr.prototype.Html = function() {
 45463  		var j;
 45464  		j = this;
 45465  		return $internalize(j.o.html(), $String);
 45466  	};
 45467  	JQuery.prototype.Html = function() { return this.$val.Html(); };
 45468  	JQuery.ptr.prototype.SetHtml = function(i) {
 45469  		var _ref, i, j;
 45470  		j = this;
 45471  		_ref = i;
 45472  		if ($assertType(_ref, funcType$2, true)[1] || $assertType(_ref, $String, true)[1]) {
 45473  		} else {
 45474  			console.log("SetHtml Argument should be 'string' or 'func(int, string) string'");
 45475  		}
 45476  		j.o = j.o.html($externalize(i, $emptyInterface));
 45477  		return j;
 45478  	};
 45479  	JQuery.prototype.SetHtml = function(i) { return this.$val.SetHtml(i); };
 45480  	JQuery.ptr.prototype.Closest = function(i) {
 45481  		var i, j, obj;
 45482  		j = this;
 45483  		j.o = (obj = j.o, obj.closest.apply(obj, $externalize(i, sliceType)));
 45484  		return j;
 45485  	};
 45486  	JQuery.prototype.Closest = function(i) { return this.$val.Closest(i); };
 45487  	JQuery.ptr.prototype.End = function() {
 45488  		var j;
 45489  		j = this;
 45490  		j.o = j.o.end();
 45491  		return j;
 45492  	};
 45493  	JQuery.prototype.End = function() { return this.$val.End(); };
 45494  	JQuery.ptr.prototype.Add = function(i) {
 45495  		var i, j, obj;
 45496  		j = this;
 45497  		j.o = (obj = j.o, obj.add.apply(obj, $externalize(i, sliceType)));
 45498  		return j;
 45499  	};
 45500  	JQuery.prototype.Add = function(i) { return this.$val.Add(i); };
 45501  	JQuery.ptr.prototype.Clone = function(b) {
 45502  		var b, j, obj;
 45503  		j = this;
 45504  		j.o = (obj = j.o, obj.clone.apply(obj, $externalize(b, sliceType)));
 45505  		return j;
 45506  	};
 45507  	JQuery.prototype.Clone = function(b) { return this.$val.Clone(b); };
 45508  	JQuery.ptr.prototype.Height = function() {
 45509  		var j;
 45510  		j = this;
 45511  		return $parseInt(j.o.height()) >> 0;
 45512  	};
 45513  	JQuery.prototype.Height = function() { return this.$val.Height(); };
 45514  	JQuery.ptr.prototype.SetHeight = function(value) {
 45515  		var j, value;
 45516  		j = this;
 45517  		j.o = j.o.height($externalize(value, $String));
 45518  		return j;
 45519  	};
 45520  	JQuery.prototype.SetHeight = function(value) { return this.$val.SetHeight(value); };
 45521  	JQuery.ptr.prototype.Width = function() {
 45522  		var j;
 45523  		j = this;
 45524  		return $parseInt(j.o.width()) >> 0;
 45525  	};
 45526  	JQuery.prototype.Width = function() { return this.$val.Width(); };
 45527  	JQuery.ptr.prototype.SetWidth = function(i) {
 45528  		var _ref, i, j;
 45529  		j = this;
 45530  		_ref = i;
 45531  		if ($assertType(_ref, funcType$2, true)[1] || $assertType(_ref, $String, true)[1]) {
 45532  		} else {
 45533  			console.log("SetWidth Argument should be 'string' or 'func(int, string) string'");
 45534  		}
 45535  		j.o = j.o.width($externalize(i, $emptyInterface));
 45536  		return j;
 45537  	};
 45538  	JQuery.prototype.SetWidth = function(i) { return this.$val.SetWidth(i); };
 45539  	JQuery.ptr.prototype.Index = function(i) {
 45540  		var i, j;
 45541  		j = this;
 45542  		return $parseInt(j.o.index($externalize(i, $emptyInterface))) >> 0;
 45543  	};
 45544  	JQuery.prototype.Index = function(i) { return this.$val.Index(i); };
 45545  	JQuery.ptr.prototype.InnerHeight = function() {
 45546  		var j;
 45547  		j = this;
 45548  		return $parseInt(j.o.innerHeight()) >> 0;
 45549  	};
 45550  	JQuery.prototype.InnerHeight = function() { return this.$val.InnerHeight(); };
 45551  	JQuery.ptr.prototype.InnerWidth = function() {
 45552  		var j;
 45553  		j = this;
 45554  		return $parseInt(j.o.innerWidth()) >> 0;
 45555  	};
 45556  	JQuery.prototype.InnerWidth = function() { return this.$val.InnerWidth(); };
 45557  	JQuery.ptr.prototype.Offset = function() {
 45558  		var j, obj;
 45559  		j = this;
 45560  		obj = j.o.offset();
 45561  		return new JQueryCoordinates.ptr($parseInt(obj.left) >> 0, $parseInt(obj.top) >> 0);
 45562  	};
 45563  	JQuery.prototype.Offset = function() { return this.$val.Offset(); };
 45564  	JQuery.ptr.prototype.SetOffset = function(jc) {
 45565  		var j, jc;
 45566  		j = this;
 45567  		j.o = j.o.offset($externalize(jc, JQueryCoordinates));
 45568  		return j;
 45569  	};
 45570  	JQuery.prototype.SetOffset = function(jc) { return this.$val.SetOffset(jc); };
 45571  	JQuery.ptr.prototype.OuterHeight = function(includeMargin) {
 45572  		var includeMargin, j;
 45573  		j = this;
 45574  		if (includeMargin.$length === 0) {
 45575  			return $parseInt(j.o.outerHeight()) >> 0;
 45576  		}
 45577  		return $parseInt(j.o.outerHeight($externalize((0 >= includeMargin.$length ? ($throwRuntimeError("index out of range"), undefined) : includeMargin.$array[includeMargin.$offset + 0]), $Bool))) >> 0;
 45578  	};
 45579  	JQuery.prototype.OuterHeight = function(includeMargin) { return this.$val.OuterHeight(includeMargin); };
 45580  	JQuery.ptr.prototype.OuterWidth = function(includeMargin) {
 45581  		var includeMargin, j;
 45582  		j = this;
 45583  		if (includeMargin.$length === 0) {
 45584  			return $parseInt(j.o.outerWidth()) >> 0;
 45585  		}
 45586  		return $parseInt(j.o.outerWidth($externalize((0 >= includeMargin.$length ? ($throwRuntimeError("index out of range"), undefined) : includeMargin.$array[includeMargin.$offset + 0]), $Bool))) >> 0;
 45587  	};
 45588  	JQuery.prototype.OuterWidth = function(includeMargin) { return this.$val.OuterWidth(includeMargin); };
 45589  	JQuery.ptr.prototype.Position = function() {
 45590  		var j, obj;
 45591  		j = this;
 45592  		obj = j.o.position();
 45593  		return new JQueryCoordinates.ptr($parseInt(obj.left) >> 0, $parseInt(obj.top) >> 0);
 45594  	};
 45595  	JQuery.prototype.Position = function() { return this.$val.Position(); };
 45596  	JQuery.ptr.prototype.ScrollLeft = function() {
 45597  		var j;
 45598  		j = this;
 45599  		return $parseInt(j.o.scrollLeft()) >> 0;
 45600  	};
 45601  	JQuery.prototype.ScrollLeft = function() { return this.$val.ScrollLeft(); };
 45602  	JQuery.ptr.prototype.SetScrollLeft = function(value) {
 45603  		var j, value;
 45604  		j = this;
 45605  		j.o = j.o.scrollLeft(value);
 45606  		return j;
 45607  	};
 45608  	JQuery.prototype.SetScrollLeft = function(value) { return this.$val.SetScrollLeft(value); };
 45609  	JQuery.ptr.prototype.ScrollTop = function() {
 45610  		var j;
 45611  		j = this;
 45612  		return $parseInt(j.o.scrollTop()) >> 0;
 45613  	};
 45614  	JQuery.prototype.ScrollTop = function() { return this.$val.ScrollTop(); };
 45615  	JQuery.ptr.prototype.SetScrollTop = function(value) {
 45616  		var j, value;
 45617  		j = this;
 45618  		j.o = j.o.scrollTop(value);
 45619  		return j;
 45620  	};
 45621  	JQuery.prototype.SetScrollTop = function(value) { return this.$val.SetScrollTop(value); };
 45622  	JQuery.ptr.prototype.ClearQueue = function(queueName) {
 45623  		var j, queueName;
 45624  		j = this;
 45625  		j.o = j.o.clearQueue($externalize(queueName, $String));
 45626  		return j;
 45627  	};
 45628  	JQuery.prototype.ClearQueue = function(queueName) { return this.$val.ClearQueue(queueName); };
 45629  	JQuery.ptr.prototype.SetData = function(key, value) {
 45630  		var j, key, value;
 45631  		j = this;
 45632  		j.o = j.o.data($externalize(key, $String), $externalize(value, $emptyInterface));
 45633  		return j;
 45634  	};
 45635  	JQuery.prototype.SetData = function(key, value) { return this.$val.SetData(key, value); };
 45636  	JQuery.ptr.prototype.Data = function(key) {
 45637  		var j, key, result;
 45638  		j = this;
 45639  		result = j.o.data($externalize(key, $String));
 45640  		if (result === undefined) {
 45641  			return $ifaceNil;
 45642  		}
 45643  		return $internalize(result, $emptyInterface);
 45644  	};
 45645  	JQuery.prototype.Data = function(key) { return this.$val.Data(key); };
 45646  	JQuery.ptr.prototype.Dequeue = function(queueName) {
 45647  		var j, queueName;
 45648  		j = this;
 45649  		j.o = j.o.dequeue($externalize(queueName, $String));
 45650  		return j;
 45651  	};
 45652  	JQuery.prototype.Dequeue = function(queueName) { return this.$val.Dequeue(queueName); };
 45653  	JQuery.ptr.prototype.RemoveData = function(name) {
 45654  		var j, name;
 45655  		j = this;
 45656  		j.o = j.o.removeData($externalize(name, $String));
 45657  		return j;
 45658  	};
 45659  	JQuery.prototype.RemoveData = function(name) { return this.$val.RemoveData(name); };
 45660  	JQuery.ptr.prototype.OffsetParent = function() {
 45661  		var j;
 45662  		j = this;
 45663  		j.o = j.o.offsetParent();
 45664  		return j;
 45665  	};
 45666  	JQuery.prototype.OffsetParent = function() { return this.$val.OffsetParent(); };
 45667  	JQuery.ptr.prototype.Parent = function(i) {
 45668  		var i, j, obj;
 45669  		j = this;
 45670  		j.o = (obj = j.o, obj.parent.apply(obj, $externalize(i, sliceType)));
 45671  		return j;
 45672  	};
 45673  	JQuery.prototype.Parent = function(i) { return this.$val.Parent(i); };
 45674  	JQuery.ptr.prototype.Parents = function(i) {
 45675  		var i, j, obj;
 45676  		j = this;
 45677  		j.o = (obj = j.o, obj.parents.apply(obj, $externalize(i, sliceType)));
 45678  		return j;
 45679  	};
 45680  	JQuery.prototype.Parents = function(i) { return this.$val.Parents(i); };
 45681  	JQuery.ptr.prototype.ParentsUntil = function(i) {
 45682  		var i, j, obj;
 45683  		j = this;
 45684  		j.o = (obj = j.o, obj.parentsUntil.apply(obj, $externalize(i, sliceType)));
 45685  		return j;
 45686  	};
 45687  	JQuery.prototype.ParentsUntil = function(i) { return this.$val.ParentsUntil(i); };
 45688  	JQuery.ptr.prototype.Prev = function(i) {
 45689  		var i, j, obj;
 45690  		j = this;
 45691  		j.o = (obj = j.o, obj.prev.apply(obj, $externalize(i, sliceType)));
 45692  		return j;
 45693  	};
 45694  	JQuery.prototype.Prev = function(i) { return this.$val.Prev(i); };
 45695  	JQuery.ptr.prototype.PrevAll = function(i) {
 45696  		var i, j, obj;
 45697  		j = this;
 45698  		j.o = (obj = j.o, obj.prevAll.apply(obj, $externalize(i, sliceType)));
 45699  		return j;
 45700  	};
 45701  	JQuery.prototype.PrevAll = function(i) { return this.$val.PrevAll(i); };
 45702  	JQuery.ptr.prototype.PrevUntil = function(i) {
 45703  		var i, j, obj;
 45704  		j = this;
 45705  		j.o = (obj = j.o, obj.prevUntil.apply(obj, $externalize(i, sliceType)));
 45706  		return j;
 45707  	};
 45708  	JQuery.prototype.PrevUntil = function(i) { return this.$val.PrevUntil(i); };
 45709  	JQuery.ptr.prototype.Siblings = function(i) {
 45710  		var i, j, obj;
 45711  		j = this;
 45712  		j.o = (obj = j.o, obj.siblings.apply(obj, $externalize(i, sliceType)));
 45713  		return j;
 45714  	};
 45715  	JQuery.prototype.Siblings = function(i) { return this.$val.Siblings(i); };
 45716  	JQuery.ptr.prototype.Slice = function(i) {
 45717  		var i, j, obj;
 45718  		j = this;
 45719  		j.o = (obj = j.o, obj.slice.apply(obj, $externalize(i, sliceType)));
 45720  		return j;
 45721  	};
 45722  	JQuery.prototype.Slice = function(i) { return this.$val.Slice(i); };
 45723  	JQuery.ptr.prototype.Children = function(selector) {
 45724  		var j, selector;
 45725  		j = this;
 45726  		j.o = j.o.children($externalize(selector, $emptyInterface));
 45727  		return j;
 45728  	};
 45729  	JQuery.prototype.Children = function(selector) { return this.$val.Children(selector); };
 45730  	JQuery.ptr.prototype.Unwrap = function() {
 45731  		var j;
 45732  		j = this;
 45733  		j.o = j.o.unwrap();
 45734  		return j;
 45735  	};
 45736  	JQuery.prototype.Unwrap = function() { return this.$val.Unwrap(); };
 45737  	JQuery.ptr.prototype.Wrap = function(obj) {
 45738  		var j, obj;
 45739  		j = this;
 45740  		j.o = j.o.wrap($externalize(obj, $emptyInterface));
 45741  		return j;
 45742  	};
 45743  	JQuery.prototype.Wrap = function(obj) { return this.$val.Wrap(obj); };
 45744  	JQuery.ptr.prototype.WrapAll = function(i) {
 45745  		var i, j;
 45746  		j = this;
 45747  		j.o = j.o.wrapAll($externalize(i, $emptyInterface));
 45748  		return j;
 45749  	};
 45750  	JQuery.prototype.WrapAll = function(i) { return this.$val.WrapAll(i); };
 45751  	JQuery.ptr.prototype.WrapInner = function(i) {
 45752  		var i, j;
 45753  		j = this;
 45754  		j.o = j.o.wrapInner($externalize(i, $emptyInterface));
 45755  		return j;
 45756  	};
 45757  	JQuery.prototype.WrapInner = function(i) { return this.$val.WrapInner(i); };
 45758  	JQuery.ptr.prototype.Next = function(i) {
 45759  		var i, j, obj;
 45760  		j = this;
 45761  		j.o = (obj = j.o, obj.next.apply(obj, $externalize(i, sliceType)));
 45762  		return j;
 45763  	};
 45764  	JQuery.prototype.Next = function(i) { return this.$val.Next(i); };
 45765  	JQuery.ptr.prototype.NextAll = function(i) {
 45766  		var i, j, obj;
 45767  		j = this;
 45768  		j.o = (obj = j.o, obj.nextAll.apply(obj, $externalize(i, sliceType)));
 45769  		return j;
 45770  	};
 45771  	JQuery.prototype.NextAll = function(i) { return this.$val.NextAll(i); };
 45772  	JQuery.ptr.prototype.NextUntil = function(i) {
 45773  		var i, j, obj;
 45774  		j = this;
 45775  		j.o = (obj = j.o, obj.nextUntil.apply(obj, $externalize(i, sliceType)));
 45776  		return j;
 45777  	};
 45778  	JQuery.prototype.NextUntil = function(i) { return this.$val.NextUntil(i); };
 45779  	JQuery.ptr.prototype.Not = function(i) {
 45780  		var i, j, obj;
 45781  		j = this;
 45782  		j.o = (obj = j.o, obj.not.apply(obj, $externalize(i, sliceType)));
 45783  		return j;
 45784  	};
 45785  	JQuery.prototype.Not = function(i) { return this.$val.Not(i); };
 45786  	JQuery.ptr.prototype.Filter = function(i) {
 45787  		var i, j, obj;
 45788  		j = this;
 45789  		j.o = (obj = j.o, obj.filter.apply(obj, $externalize(i, sliceType)));
 45790  		return j;
 45791  	};
 45792  	JQuery.prototype.Filter = function(i) { return this.$val.Filter(i); };
 45793  	JQuery.ptr.prototype.Find = function(i) {
 45794  		var i, j, obj;
 45795  		j = this;
 45796  		j.o = (obj = j.o, obj.find.apply(obj, $externalize(i, sliceType)));
 45797  		return j;
 45798  	};
 45799  	JQuery.prototype.Find = function(i) { return this.$val.Find(i); };
 45800  	JQuery.ptr.prototype.First = function() {
 45801  		var j;
 45802  		j = this;
 45803  		j.o = j.o.first();
 45804  		return j;
 45805  	};
 45806  	JQuery.prototype.First = function() { return this.$val.First(); };
 45807  	JQuery.ptr.prototype.Has = function(selector) {
 45808  		var j, selector;
 45809  		j = this;
 45810  		j.o = j.o.has($externalize(selector, $String));
 45811  		return j;
 45812  	};
 45813  	JQuery.prototype.Has = function(selector) { return this.$val.Has(selector); };
 45814  	JQuery.ptr.prototype.Is = function(i) {
 45815  		var i, j, obj;
 45816  		j = this;
 45817  		return !!((obj = j.o, obj.is.apply(obj, $externalize(i, sliceType))));
 45818  	};
 45819  	JQuery.prototype.Is = function(i) { return this.$val.Is(i); };
 45820  	JQuery.ptr.prototype.Last = function() {
 45821  		var j;
 45822  		j = this;
 45823  		j.o = j.o.last();
 45824  		return j;
 45825  	};
 45826  	JQuery.prototype.Last = function() { return this.$val.Last(); };
 45827  	JQuery.ptr.prototype.Ready = function(handler) {
 45828  		var handler, j;
 45829  		j = this;
 45830  		j.o = j.o.ready($externalize(handler, funcType$3));
 45831  		return j;
 45832  	};
 45833  	JQuery.prototype.Ready = function(handler) { return this.$val.Ready(handler); };
 45834  	JQuery.ptr.prototype.Resize = function(i) {
 45835  		var i, j, obj;
 45836  		j = this;
 45837  		j.o = (obj = j.o, obj.resize.apply(obj, $externalize(i, sliceType)));
 45838  		return j;
 45839  	};
 45840  	JQuery.prototype.Resize = function(i) { return this.$val.Resize(i); };
 45841  	JQuery.ptr.prototype.Scroll = function(i) {
 45842  		var i, j, obj;
 45843  		j = this;
 45844  		j.o = (obj = j.o, obj.scroll.apply(obj, $externalize(i, sliceType)));
 45845  		return j;
 45846  	};
 45847  	JQuery.prototype.Scroll = function(i) { return this.$val.Scroll(i); };
 45848  	JQuery.ptr.prototype.FadeOut = function(i) {
 45849  		var i, j, obj;
 45850  		j = this;
 45851  		j.o = (obj = j.o, obj.fadeOut.apply(obj, $externalize(i, sliceType)));
 45852  		return j;
 45853  	};
 45854  	JQuery.prototype.FadeOut = function(i) { return this.$val.FadeOut(i); };
 45855  	JQuery.ptr.prototype.FadeToggle = function(i) {
 45856  		var i, j, obj;
 45857  		j = this;
 45858  		j.o = (obj = j.o, obj.fadeToggle.apply(obj, $externalize(i, sliceType)));
 45859  		return j;
 45860  	};
 45861  	JQuery.prototype.FadeToggle = function(i) { return this.$val.FadeToggle(i); };
 45862  	JQuery.ptr.prototype.SlideDown = function(i) {
 45863  		var i, j, obj;
 45864  		j = this;
 45865  		j.o = (obj = j.o, obj.slideDown.apply(obj, $externalize(i, sliceType)));
 45866  		return j;
 45867  	};
 45868  	JQuery.prototype.SlideDown = function(i) { return this.$val.SlideDown(i); };
 45869  	JQuery.ptr.prototype.SlideToggle = function(i) {
 45870  		var i, j, obj;
 45871  		j = this;
 45872  		j.o = (obj = j.o, obj.slideToggle.apply(obj, $externalize(i, sliceType)));
 45873  		return j;
 45874  	};
 45875  	JQuery.prototype.SlideToggle = function(i) { return this.$val.SlideToggle(i); };
 45876  	JQuery.ptr.prototype.SlideUp = function(i) {
 45877  		var i, j, obj;
 45878  		j = this;
 45879  		j.o = (obj = j.o, obj.slideUp.apply(obj, $externalize(i, sliceType)));
 45880  		return j;
 45881  	};
 45882  	JQuery.prototype.SlideUp = function(i) { return this.$val.SlideUp(i); };
 45883  	JQuery.ptr.prototype.Select = function(i) {
 45884  		var i, j, obj;
 45885  		j = this;
 45886  		j.o = (obj = j.o, obj.select.apply(obj, $externalize(i, sliceType)));
 45887  		return j;
 45888  	};
 45889  	JQuery.prototype.Select = function(i) { return this.$val.Select(i); };
 45890  	JQuery.ptr.prototype.Submit = function(i) {
 45891  		var i, j, obj;
 45892  		j = this;
 45893  		j.o = (obj = j.o, obj.submit.apply(obj, $externalize(i, sliceType)));
 45894  		return j;
 45895  	};
 45896  	JQuery.prototype.Submit = function(i) { return this.$val.Submit(i); };
 45897  	JQuery.ptr.prototype.Trigger = function(i) {
 45898  		var i, j, obj;
 45899  		j = this;
 45900  		j.o = (obj = j.o, obj.trigger.apply(obj, $externalize(i, sliceType)));
 45901  		return j;
 45902  	};
 45903  	JQuery.prototype.Trigger = function(i) { return this.$val.Trigger(i); };
 45904  	JQuery.ptr.prototype.On = function(i) {
 45905  		var i, j, obj;
 45906  		j = this;
 45907  		j.o = (obj = j.o, obj.on.apply(obj, $externalize(i, sliceType)));
 45908  		return j;
 45909  	};
 45910  	JQuery.prototype.On = function(i) { return this.$val.On(i); };
 45911  	JQuery.ptr.prototype.One = function(i) {
 45912  		var i, j, obj;
 45913  		j = this;
 45914  		j.o = (obj = j.o, obj.one.apply(obj, $externalize(i, sliceType)));
 45915  		return j;
 45916  	};
 45917  	JQuery.prototype.One = function(i) { return this.$val.One(i); };
 45918  	JQuery.ptr.prototype.Off = function(i) {
 45919  		var i, j, obj;
 45920  		j = this;
 45921  		j.o = (obj = j.o, obj.off.apply(obj, $externalize(i, sliceType)));
 45922  		return j;
 45923  	};
 45924  	JQuery.prototype.Off = function(i) { return this.$val.Off(i); };
 45925  	JQuery.ptr.prototype.Load = function(i) {
 45926  		var i, j, obj;
 45927  		j = this;
 45928  		j.o = (obj = j.o, obj.load.apply(obj, $externalize(i, sliceType)));
 45929  		return j;
 45930  	};
 45931  	JQuery.prototype.Load = function(i) { return this.$val.Load(i); };
 45932  	JQuery.ptr.prototype.Serialize = function() {
 45933  		var j;
 45934  		j = this;
 45935  		return $internalize(j.o.serialize(), $String);
 45936  	};
 45937  	JQuery.prototype.Serialize = function() { return this.$val.Serialize(); };
 45938  	JQuery.ptr.prototype.SerializeArray = function() {
 45939  		var j;
 45940  		j = this;
 45941  		return j.o.serializeArray();
 45942  	};
 45943  	JQuery.prototype.SerializeArray = function() { return this.$val.SerializeArray(); };
 45944  	JQuery.methods = [{prop: "Each", name: "Each", pkg: "", typ: $funcType([funcType$1], [JQuery], false)}, {prop: "Call", name: "Call", pkg: "", typ: $funcType([$String, sliceType], [JQuery], true)}, {prop: "Underlying", name: "Underlying", pkg: "", typ: $funcType([], [ptrType], false)}, {prop: "Get", name: "Get", pkg: "", typ: $funcType([sliceType], [ptrType], true)}, {prop: "Append", name: "Append", pkg: "", typ: $funcType([sliceType], [JQuery], true)}, {prop: "Empty", name: "Empty", pkg: "", typ: $funcType([], [JQuery], false)}, {prop: "Detach", name: "Detach", pkg: "", typ: $funcType([sliceType], [JQuery], true)}, {prop: "Eq", name: "Eq", pkg: "", typ: $funcType([$Int], [JQuery], false)}, {prop: "FadeIn", name: "FadeIn", pkg: "", typ: $funcType([sliceType], [JQuery], true)}, {prop: "Delay", name: "Delay", pkg: "", typ: $funcType([sliceType], [JQuery], true)}, {prop: "ToArray", name: "ToArray", pkg: "", typ: $funcType([], [sliceType], false)}, {prop: "Remove", name: "Remove", pkg: "", typ: $funcType([sliceType], [JQuery], true)}, {prop: "Stop", name: "Stop", pkg: "", typ: $funcType([sliceType], [JQuery], true)}, {prop: "AddBack", name: "AddBack", pkg: "", typ: $funcType([sliceType], [JQuery], true)}, {prop: "Css", name: "Css", pkg: "", typ: $funcType([$String], [$String], false)}, {prop: "CssArray", name: "CssArray", pkg: "", typ: $funcType([sliceType$1], [mapType], true)}, {prop: "SetCss", name: "SetCss", pkg: "", typ: $funcType([sliceType], [JQuery], true)}, {prop: "Text", name: "Text", pkg: "", typ: $funcType([], [$String], false)}, {prop: "SetText", name: "SetText", pkg: "", typ: $funcType([$emptyInterface], [JQuery], false)}, {prop: "Val", name: "Val", pkg: "", typ: $funcType([], [$String], false)}, {prop: "SetVal", name: "SetVal", pkg: "", typ: $funcType([$emptyInterface], [JQuery], false)}, {prop: "Prop", name: "Prop", pkg: "", typ: $funcType([$String], [$emptyInterface], false)}, {prop: "SetProp", name: "SetProp", pkg: "", typ: $funcType([sliceType], [JQuery], true)}, {prop: "RemoveProp", name: "RemoveProp", pkg: "", typ: $funcType([$String], [JQuery], false)}, {prop: "Attr", name: "Attr", pkg: "", typ: $funcType([$String], [$String], false)}, {prop: "SetAttr", name: "SetAttr", pkg: "", typ: $funcType([sliceType], [JQuery], true)}, {prop: "RemoveAttr", name: "RemoveAttr", pkg: "", typ: $funcType([$String], [JQuery], false)}, {prop: "HasClass", name: "HasClass", pkg: "", typ: $funcType([$String], [$Bool], false)}, {prop: "AddClass", name: "AddClass", pkg: "", typ: $funcType([$emptyInterface], [JQuery], false)}, {prop: "RemoveClass", name: "RemoveClass", pkg: "", typ: $funcType([$String], [JQuery], false)}, {prop: "ToggleClass", name: "ToggleClass", pkg: "", typ: $funcType([sliceType], [JQuery], true)}, {prop: "Focus", name: "Focus", pkg: "", typ: $funcType([], [JQuery], false)}, {prop: "Blur", name: "Blur", pkg: "", typ: $funcType([], [JQuery], false)}, {prop: "ReplaceAll", name: "ReplaceAll", pkg: "", typ: $funcType([$emptyInterface], [JQuery], false)}, {prop: "ReplaceWith", name: "ReplaceWith", pkg: "", typ: $funcType([$emptyInterface], [JQuery], false)}, {prop: "After", name: "After", pkg: "", typ: $funcType([sliceType], [JQuery], true)}, {prop: "Before", name: "Before", pkg: "", typ: $funcType([sliceType], [JQuery], true)}, {prop: "Prepend", name: "Prepend", pkg: "", typ: $funcType([sliceType], [JQuery], true)}, {prop: "PrependTo", name: "PrependTo", pkg: "", typ: $funcType([$emptyInterface], [JQuery], false)}, {prop: "AppendTo", name: "AppendTo", pkg: "", typ: $funcType([$emptyInterface], [JQuery], false)}, {prop: "InsertAfter", name: "InsertAfter", pkg: "", typ: $funcType([$emptyInterface], [JQuery], false)}, {prop: "InsertBefore", name: "InsertBefore", pkg: "", typ: $funcType([$emptyInterface], [JQuery], false)}, {prop: "Show", name: "Show", pkg: "", typ: $funcType([sliceType], [JQuery], true)}, {prop: "Hide", name: "Hide", pkg: "", typ: $funcType([sliceType], [JQuery], true)}, {prop: "Toggle", name: "Toggle", pkg: "", typ: $funcType([sliceType], [JQuery], true)}, {prop: "Contents", name: "Contents", pkg: "", typ: $funcType([], [JQuery], false)}, {prop: "Html", name: "Html", pkg: "", typ: $funcType([], [$String], false)}, {prop: "SetHtml", name: "SetHtml", pkg: "", typ: $funcType([$emptyInterface], [JQuery], false)}, {prop: "Closest", name: "Closest", pkg: "", typ: $funcType([sliceType], [JQuery], true)}, {prop: "End", name: "End", pkg: "", typ: $funcType([], [JQuery], false)}, {prop: "Add", name: "Add", pkg: "", typ: $funcType([sliceType], [JQuery], true)}, {prop: "Clone", name: "Clone", pkg: "", typ: $funcType([sliceType], [JQuery], true)}, {prop: "Height", name: "Height", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "SetHeight", name: "SetHeight", pkg: "", typ: $funcType([$String], [JQuery], false)}, {prop: "Width", name: "Width", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "SetWidth", name: "SetWidth", pkg: "", typ: $funcType([$emptyInterface], [JQuery], false)}, {prop: "Index", name: "Index", pkg: "", typ: $funcType([$emptyInterface], [$Int], false)}, {prop: "InnerHeight", name: "InnerHeight", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "InnerWidth", name: "InnerWidth", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Offset", name: "Offset", pkg: "", typ: $funcType([], [JQueryCoordinates], false)}, {prop: "SetOffset", name: "SetOffset", pkg: "", typ: $funcType([JQueryCoordinates], [JQuery], false)}, {prop: "OuterHeight", name: "OuterHeight", pkg: "", typ: $funcType([sliceType$2], [$Int], true)}, {prop: "OuterWidth", name: "OuterWidth", pkg: "", typ: $funcType([sliceType$2], [$Int], true)}, {prop: "Position", name: "Position", pkg: "", typ: $funcType([], [JQueryCoordinates], false)}, {prop: "ScrollLeft", name: "ScrollLeft", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "SetScrollLeft", name: "SetScrollLeft", pkg: "", typ: $funcType([$Int], [JQuery], false)}, {prop: "ScrollTop", name: "ScrollTop", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "SetScrollTop", name: "SetScrollTop", pkg: "", typ: $funcType([$Int], [JQuery], false)}, {prop: "ClearQueue", name: "ClearQueue", pkg: "", typ: $funcType([$String], [JQuery], false)}, {prop: "SetData", name: "SetData", pkg: "", typ: $funcType([$String, $emptyInterface], [JQuery], false)}, {prop: "Data", name: "Data", pkg: "", typ: $funcType([$String], [$emptyInterface], false)}, {prop: "Dequeue", name: "Dequeue", pkg: "", typ: $funcType([$String], [JQuery], false)}, {prop: "RemoveData", name: "RemoveData", pkg: "", typ: $funcType([$String], [JQuery], false)}, {prop: "OffsetParent", name: "OffsetParent", pkg: "", typ: $funcType([], [JQuery], false)}, {prop: "Parent", name: "Parent", pkg: "", typ: $funcType([sliceType], [JQuery], true)}, {prop: "Parents", name: "Parents", pkg: "", typ: $funcType([sliceType], [JQuery], true)}, {prop: "ParentsUntil", name: "ParentsUntil", pkg: "", typ: $funcType([sliceType], [JQuery], true)}, {prop: "Prev", name: "Prev", pkg: "", typ: $funcType([sliceType], [JQuery], true)}, {prop: "PrevAll", name: "PrevAll", pkg: "", typ: $funcType([sliceType], [JQuery], true)}, {prop: "PrevUntil", name: "PrevUntil", pkg: "", typ: $funcType([sliceType], [JQuery], true)}, {prop: "Siblings", name: "Siblings", pkg: "", typ: $funcType([sliceType], [JQuery], true)}, {prop: "Slice", name: "Slice", pkg: "", typ: $funcType([sliceType], [JQuery], true)}, {prop: "Children", name: "Children", pkg: "", typ: $funcType([$emptyInterface], [JQuery], false)}, {prop: "Unwrap", name: "Unwrap", pkg: "", typ: $funcType([], [JQuery], false)}, {prop: "Wrap", name: "Wrap", pkg: "", typ: $funcType([$emptyInterface], [JQuery], false)}, {prop: "WrapAll", name: "WrapAll", pkg: "", typ: $funcType([$emptyInterface], [JQuery], false)}, {prop: "WrapInner", name: "WrapInner", pkg: "", typ: $funcType([$emptyInterface], [JQuery], false)}, {prop: "Next", name: "Next", pkg: "", typ: $funcType([sliceType], [JQuery], true)}, {prop: "NextAll", name: "NextAll", pkg: "", typ: $funcType([sliceType], [JQuery], true)}, {prop: "NextUntil", name: "NextUntil", pkg: "", typ: $funcType([sliceType], [JQuery], true)}, {prop: "Not", name: "Not", pkg: "", typ: $funcType([sliceType], [JQuery], true)}, {prop: "Filter", name: "Filter", pkg: "", typ: $funcType([sliceType], [JQuery], true)}, {prop: "Find", name: "Find", pkg: "", typ: $funcType([sliceType], [JQuery], true)}, {prop: "First", name: "First", pkg: "", typ: $funcType([], [JQuery], false)}, {prop: "Has", name: "Has", pkg: "", typ: $funcType([$String], [JQuery], false)}, {prop: "Is", name: "Is", pkg: "", typ: $funcType([sliceType], [$Bool], true)}, {prop: "Last", name: "Last", pkg: "", typ: $funcType([], [JQuery], false)}, {prop: "Ready", name: "Ready", pkg: "", typ: $funcType([funcType$3], [JQuery], false)}, {prop: "Resize", name: "Resize", pkg: "", typ: $funcType([sliceType], [JQuery], true)}, {prop: "Scroll", name: "Scroll", pkg: "", typ: $funcType([sliceType], [JQuery], true)}, {prop: "FadeOut", name: "FadeOut", pkg: "", typ: $funcType([sliceType], [JQuery], true)}, {prop: "FadeToggle", name: "FadeToggle", pkg: "", typ: $funcType([sliceType], [JQuery], true)}, {prop: "SlideDown", name: "SlideDown", pkg: "", typ: $funcType([sliceType], [JQuery], true)}, {prop: "SlideToggle", name: "SlideToggle", pkg: "", typ: $funcType([sliceType], [JQuery], true)}, {prop: "SlideUp", name: "SlideUp", pkg: "", typ: $funcType([sliceType], [JQuery], true)}, {prop: "Select", name: "Select", pkg: "", typ: $funcType([sliceType], [JQuery], true)}, {prop: "Submit", name: "Submit", pkg: "", typ: $funcType([sliceType], [JQuery], true)}, {prop: "Trigger", name: "Trigger", pkg: "", typ: $funcType([sliceType], [JQuery], true)}, {prop: "On", name: "On", pkg: "", typ: $funcType([sliceType], [JQuery], true)}, {prop: "One", name: "One", pkg: "", typ: $funcType([sliceType], [JQuery], true)}, {prop: "Off", name: "Off", pkg: "", typ: $funcType([sliceType], [JQuery], true)}, {prop: "Load", name: "Load", pkg: "", typ: $funcType([sliceType], [JQuery], true)}, {prop: "Serialize", name: "Serialize", pkg: "", typ: $funcType([], [$String], false)}, {prop: "SerializeArray", name: "SerializeArray", pkg: "", typ: $funcType([], [ptrType], false)}];
 45945  	ptrType$1.methods = [{prop: "PreventDefault", name: "PreventDefault", pkg: "", typ: $funcType([], [], false)}, {prop: "IsDefaultPrevented", name: "IsDefaultPrevented", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "IsImmediatePropogationStopped", name: "IsImmediatePropogationStopped", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "IsPropagationStopped", name: "IsPropagationStopped", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "StopImmediatePropagation", name: "StopImmediatePropagation", pkg: "", typ: $funcType([], [], false)}, {prop: "StopPropagation", name: "StopPropagation", pkg: "", typ: $funcType([], [], false)}];
 45946  	JQuery.init("github.com/gopherjs/jquery", [{prop: "o", name: "o", anonymous: false, exported: false, typ: ptrType, tag: ""}, {prop: "Jquery", name: "Jquery", anonymous: false, exported: true, typ: $String, tag: "js:\"jquery\""}, {prop: "Selector", name: "Selector", anonymous: false, exported: true, typ: $String, tag: "js:\"selector\""}, {prop: "Length", name: "Length", anonymous: false, exported: true, typ: $Int, tag: "js:\"length\""}, {prop: "Context", name: "Context", anonymous: false, exported: true, typ: $String, tag: "js:\"context\""}]);
 45947  	Event.init("", [{prop: "Object", name: "Object", anonymous: true, exported: true, typ: ptrType, tag: ""}, {prop: "KeyCode", name: "KeyCode", anonymous: false, exported: true, typ: $Int, tag: "js:\"keyCode\""}, {prop: "Target", name: "Target", anonymous: false, exported: true, typ: ptrType, tag: "js:\"target\""}, {prop: "CurrentTarget", name: "CurrentTarget", anonymous: false, exported: true, typ: ptrType, tag: "js:\"currentTarget\""}, {prop: "DelegateTarget", name: "DelegateTarget", anonymous: false, exported: true, typ: ptrType, tag: "js:\"delegateTarget\""}, {prop: "RelatedTarget", name: "RelatedTarget", anonymous: false, exported: true, typ: ptrType, tag: "js:\"relatedTarget\""}, {prop: "Data", name: "Data", anonymous: false, exported: true, typ: ptrType, tag: "js:\"data\""}, {prop: "Result", name: "Result", anonymous: false, exported: true, typ: ptrType, tag: "js:\"result\""}, {prop: "Which", name: "Which", anonymous: false, exported: true, typ: $Int, tag: "js:\"which\""}, {prop: "Namespace", name: "Namespace", anonymous: false, exported: true, typ: $String, tag: "js:\"namespace\""}, {prop: "MetaKey", name: "MetaKey", anonymous: false, exported: true, typ: $Bool, tag: "js:\"metaKey\""}, {prop: "ShiftKey", name: "ShiftKey", anonymous: false, exported: true, typ: $Bool, tag: "js:\"shiftKey\""}, {prop: "CtrlKey", name: "CtrlKey", anonymous: false, exported: true, typ: $Bool, tag: "js:\"ctrlKey\""}, {prop: "PageX", name: "PageX", anonymous: false, exported: true, typ: $Int, tag: "js:\"pageX\""}, {prop: "PageY", name: "PageY", anonymous: false, exported: true, typ: $Int, tag: "js:\"pageY\""}, {prop: "Type", name: "Type", anonymous: false, exported: true, typ: $String, tag: "js:\"type\""}]);
 45948  	JQueryCoordinates.init("", [{prop: "Left", name: "Left", anonymous: false, exported: true, typ: $Int, tag: ""}, {prop: "Top", name: "Top", anonymous: false, exported: true, typ: $Int, tag: ""}]);
 45949  	$init = function() {
 45950  		$pkg.$init = function() {};
 45951  		/* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 45952  		$r = js.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 45953  		/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
 45954  	};
 45955  	$pkg.$init = $init;
 45956  	return $pkg;
 45957  })();
 45958  $packages["bufio"] = (function() {
 45959  	var $pkg = {}, $init, bytes, errors, io, utf8, Reader, Writer, ReadWriter, Scanner, SplitFunc, sliceType, ptrType, sliceType$1, ptrType$1, ptrType$2, errNegativeRead, errNegativeWrite, NewReaderSize, NewReader, NewWriterSize, NewWriter, NewReadWriter, NewScanner, dropCR, ScanLines;
 45960  	bytes = $packages["bytes"];
 45961  	errors = $packages["errors"];
 45962  	io = $packages["io"];
 45963  	utf8 = $packages["unicode/utf8"];
 45964  	Reader = $pkg.Reader = $newType(0, $kindStruct, "bufio.Reader", true, "bufio", true, function(buf_, rd_, r_, w_, err_, lastByte_, lastRuneSize_) {
 45965  		this.$val = this;
 45966  		if (arguments.length === 0) {
 45967  			this.buf = sliceType.nil;
 45968  			this.rd = $ifaceNil;
 45969  			this.r = 0;
 45970  			this.w = 0;
 45971  			this.err = $ifaceNil;
 45972  			this.lastByte = 0;
 45973  			this.lastRuneSize = 0;
 45974  			return;
 45975  		}
 45976  		this.buf = buf_;
 45977  		this.rd = rd_;
 45978  		this.r = r_;
 45979  		this.w = w_;
 45980  		this.err = err_;
 45981  		this.lastByte = lastByte_;
 45982  		this.lastRuneSize = lastRuneSize_;
 45983  	});
 45984  	Writer = $pkg.Writer = $newType(0, $kindStruct, "bufio.Writer", true, "bufio", true, function(err_, buf_, n_, wr_) {
 45985  		this.$val = this;
 45986  		if (arguments.length === 0) {
 45987  			this.err = $ifaceNil;
 45988  			this.buf = sliceType.nil;
 45989  			this.n = 0;
 45990  			this.wr = $ifaceNil;
 45991  			return;
 45992  		}
 45993  		this.err = err_;
 45994  		this.buf = buf_;
 45995  		this.n = n_;
 45996  		this.wr = wr_;
 45997  	});
 45998  	ReadWriter = $pkg.ReadWriter = $newType(0, $kindStruct, "bufio.ReadWriter", true, "bufio", true, function(Reader_, Writer_) {
 45999  		this.$val = this;
 46000  		if (arguments.length === 0) {
 46001  			this.Reader = ptrType.nil;
 46002  			this.Writer = ptrType$1.nil;
 46003  			return;
 46004  		}
 46005  		this.Reader = Reader_;
 46006  		this.Writer = Writer_;
 46007  	});
 46008  	Scanner = $pkg.Scanner = $newType(0, $kindStruct, "bufio.Scanner", true, "bufio", true, function(r_, split_, maxTokenSize_, token_, buf_, start_, end_, err_, empties_, scanCalled_, done_) {
 46009  		this.$val = this;
 46010  		if (arguments.length === 0) {
 46011  			this.r = $ifaceNil;
 46012  			this.split = $throwNilPointerError;
 46013  			this.maxTokenSize = 0;
 46014  			this.token = sliceType.nil;
 46015  			this.buf = sliceType.nil;
 46016  			this.start = 0;
 46017  			this.end = 0;
 46018  			this.err = $ifaceNil;
 46019  			this.empties = 0;
 46020  			this.scanCalled = false;
 46021  			this.done = false;
 46022  			return;
 46023  		}
 46024  		this.r = r_;
 46025  		this.split = split_;
 46026  		this.maxTokenSize = maxTokenSize_;
 46027  		this.token = token_;
 46028  		this.buf = buf_;
 46029  		this.start = start_;
 46030  		this.end = end_;
 46031  		this.err = err_;
 46032  		this.empties = empties_;
 46033  		this.scanCalled = scanCalled_;
 46034  		this.done = done_;
 46035  	});
 46036  	SplitFunc = $pkg.SplitFunc = $newType(4, $kindFunc, "bufio.SplitFunc", true, "bufio", true, null);
 46037  	sliceType = $sliceType($Uint8);
 46038  	ptrType = $ptrType(Reader);
 46039  	sliceType$1 = $sliceType(sliceType);
 46040  	ptrType$1 = $ptrType(Writer);
 46041  	ptrType$2 = $ptrType(Scanner);
 46042  	NewReaderSize = function(rd, size) {
 46043  		var _tuple, b, ok, r, rd, size;
 46044  		_tuple = $assertType(rd, ptrType, true);
 46045  		b = _tuple[0];
 46046  		ok = _tuple[1];
 46047  		if (ok && b.buf.$length >= size) {
 46048  			return b;
 46049  		}
 46050  		if (size < 16) {
 46051  			size = 16;
 46052  		}
 46053  		r = new Reader.ptr(sliceType.nil, $ifaceNil, 0, 0, $ifaceNil, 0, 0);
 46054  		r.reset($makeSlice(sliceType, size), rd);
 46055  		return r;
 46056  	};
 46057  	$pkg.NewReaderSize = NewReaderSize;
 46058  	NewReader = function(rd) {
 46059  		var rd;
 46060  		return NewReaderSize(rd, 4096);
 46061  	};
 46062  	$pkg.NewReader = NewReader;
 46063  	Reader.ptr.prototype.Size = function() {
 46064  		var r;
 46065  		r = this;
 46066  		return r.buf.$length;
 46067  	};
 46068  	Reader.prototype.Size = function() { return this.$val.Size(); };
 46069  	Reader.ptr.prototype.Reset = function(r) {
 46070  		var b, r;
 46071  		b = this;
 46072  		b.reset(b.buf, r);
 46073  	};
 46074  	Reader.prototype.Reset = function(r) { return this.$val.Reset(r); };
 46075  	Reader.ptr.prototype.reset = function(buf, r) {
 46076  		var b, buf, r;
 46077  		b = this;
 46078  		Reader.copy(b, new Reader.ptr(buf, r, 0, 0, $ifaceNil, -1, -1));
 46079  	};
 46080  	Reader.prototype.reset = function(buf, r) { return this.$val.reset(buf, r); };
 46081  	Reader.ptr.prototype.fill = function() {
 46082  		var _r, _tuple, b, err, i, n, $s, $r;
 46083  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; b = $f.b; err = $f.err; i = $f.i; n = $f.n; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 46084  		b = this;
 46085  		if (b.r > 0) {
 46086  			$copySlice(b.buf, $subslice(b.buf, b.r, b.w));
 46087  			b.w = b.w - (b.r) >> 0;
 46088  			b.r = 0;
 46089  		}
 46090  		if (b.w >= b.buf.$length) {
 46091  			$panic(new $String("bufio: tried to fill full buffer"));
 46092  		}
 46093  		i = 100;
 46094  		/* while (true) { */ case 1:
 46095  			/* if (!(i > 0)) { break; } */ if(!(i > 0)) { $s = 2; continue; }
 46096  			_r = b.rd.Read($subslice(b.buf, b.w)); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 46097  			_tuple = _r;
 46098  			n = _tuple[0];
 46099  			err = _tuple[1];
 46100  			if (n < 0) {
 46101  				$panic(errNegativeRead);
 46102  			}
 46103  			b.w = b.w + (n) >> 0;
 46104  			if (!($interfaceIsEqual(err, $ifaceNil))) {
 46105  				b.err = err;
 46106  				$s = -1; return;
 46107  			}
 46108  			if (n > 0) {
 46109  				$s = -1; return;
 46110  			}
 46111  			i = i - (1) >> 0;
 46112  		/* } */ $s = 1; continue; case 2:
 46113  		b.err = io.ErrNoProgress;
 46114  		$s = -1; return;
 46115  		/* */ } return; } if ($f === undefined) { $f = { $blk: Reader.ptr.prototype.fill }; } $f._r = _r; $f._tuple = _tuple; $f.b = b; $f.err = err; $f.i = i; $f.n = n; $f.$s = $s; $f.$r = $r; return $f;
 46116  	};
 46117  	Reader.prototype.fill = function() { return this.$val.fill(); };
 46118  	Reader.ptr.prototype.readErr = function() {
 46119  		var b, err;
 46120  		b = this;
 46121  		err = b.err;
 46122  		b.err = $ifaceNil;
 46123  		return err;
 46124  	};
 46125  	Reader.prototype.readErr = function() { return this.$val.readErr(); };
 46126  	Reader.ptr.prototype.Peek = function(n) {
 46127  		var avail, b, err, n, $s, $r;
 46128  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; avail = $f.avail; b = $f.b; err = $f.err; n = $f.n; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 46129  		b = this;
 46130  		if (n < 0) {
 46131  			$s = -1; return [sliceType.nil, $pkg.ErrNegativeCount];
 46132  		}
 46133  		/* while (true) { */ case 1:
 46134  			/* if (!((b.w - b.r >> 0) < n && (b.w - b.r >> 0) < b.buf.$length && $interfaceIsEqual(b.err, $ifaceNil))) { break; } */ if(!((b.w - b.r >> 0) < n && (b.w - b.r >> 0) < b.buf.$length && $interfaceIsEqual(b.err, $ifaceNil))) { $s = 2; continue; }
 46135  			$r = b.fill(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 46136  		/* } */ $s = 1; continue; case 2:
 46137  		if (n > b.buf.$length) {
 46138  			$s = -1; return [$subslice(b.buf, b.r, b.w), $pkg.ErrBufferFull];
 46139  		}
 46140  		err = $ifaceNil;
 46141  		avail = b.w - b.r >> 0;
 46142  		if (avail < n) {
 46143  			n = avail;
 46144  			err = b.readErr();
 46145  			if ($interfaceIsEqual(err, $ifaceNil)) {
 46146  				err = $pkg.ErrBufferFull;
 46147  			}
 46148  		}
 46149  		$s = -1; return [$subslice(b.buf, b.r, (b.r + n >> 0)), err];
 46150  		/* */ } return; } if ($f === undefined) { $f = { $blk: Reader.ptr.prototype.Peek }; } $f.avail = avail; $f.b = b; $f.err = err; $f.n = n; $f.$s = $s; $f.$r = $r; return $f;
 46151  	};
 46152  	Reader.prototype.Peek = function(n) { return this.$val.Peek(n); };
 46153  	Reader.ptr.prototype.Discard = function(n) {
 46154  		var _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, b, discarded, err, n, remain, skip, $s, $r;
 46155  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tmp$4 = $f._tmp$4; _tmp$5 = $f._tmp$5; b = $f.b; discarded = $f.discarded; err = $f.err; n = $f.n; remain = $f.remain; skip = $f.skip; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 46156  		discarded = 0;
 46157  		err = $ifaceNil;
 46158  		b = this;
 46159  		if (n < 0) {
 46160  			_tmp = 0;
 46161  			_tmp$1 = $pkg.ErrNegativeCount;
 46162  			discarded = _tmp;
 46163  			err = _tmp$1;
 46164  			$s = -1; return [discarded, err];
 46165  		}
 46166  		if (n === 0) {
 46167  			$s = -1; return [discarded, err];
 46168  		}
 46169  		remain = n;
 46170  		/* while (true) { */ case 1:
 46171  			skip = b.Buffered();
 46172  			/* */ if (skip === 0) { $s = 3; continue; }
 46173  			/* */ $s = 4; continue;
 46174  			/* if (skip === 0) { */ case 3:
 46175  				$r = b.fill(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 46176  				skip = b.Buffered();
 46177  			/* } */ case 4:
 46178  			if (skip > remain) {
 46179  				skip = remain;
 46180  			}
 46181  			b.r = b.r + (skip) >> 0;
 46182  			remain = remain - (skip) >> 0;
 46183  			if (remain === 0) {
 46184  				_tmp$2 = n;
 46185  				_tmp$3 = $ifaceNil;
 46186  				discarded = _tmp$2;
 46187  				err = _tmp$3;
 46188  				$s = -1; return [discarded, err];
 46189  			}
 46190  			if (!($interfaceIsEqual(b.err, $ifaceNil))) {
 46191  				_tmp$4 = n - remain >> 0;
 46192  				_tmp$5 = b.readErr();
 46193  				discarded = _tmp$4;
 46194  				err = _tmp$5;
 46195  				$s = -1; return [discarded, err];
 46196  			}
 46197  		/* } */ $s = 1; continue; case 2:
 46198  		$s = -1; return [discarded, err];
 46199  		/* */ } return; } if ($f === undefined) { $f = { $blk: Reader.ptr.prototype.Discard }; } $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tmp$4 = _tmp$4; $f._tmp$5 = _tmp$5; $f.b = b; $f.discarded = discarded; $f.err = err; $f.n = n; $f.remain = remain; $f.skip = skip; $f.$s = $s; $f.$r = $r; return $f;
 46200  	};
 46201  	Reader.prototype.Discard = function(n) { return this.$val.Discard(n); };
 46202  	Reader.ptr.prototype.Read = function(p) {
 46203  		var _r, _r$1, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, _tuple$1, b, err, n, p, x, x$1, x$2, $s, $r;
 46204  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tmp$4 = $f._tmp$4; _tmp$5 = $f._tmp$5; _tmp$6 = $f._tmp$6; _tmp$7 = $f._tmp$7; _tmp$8 = $f._tmp$8; _tmp$9 = $f._tmp$9; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; b = $f.b; err = $f.err; n = $f.n; p = $f.p; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 46205  		n = 0;
 46206  		err = $ifaceNil;
 46207  		b = this;
 46208  		n = p.$length;
 46209  		if (n === 0) {
 46210  			_tmp = 0;
 46211  			_tmp$1 = b.readErr();
 46212  			n = _tmp;
 46213  			err = _tmp$1;
 46214  			$s = -1; return [n, err];
 46215  		}
 46216  		/* */ if (b.r === b.w) { $s = 1; continue; }
 46217  		/* */ $s = 2; continue;
 46218  		/* if (b.r === b.w) { */ case 1:
 46219  			if (!($interfaceIsEqual(b.err, $ifaceNil))) {
 46220  				_tmp$2 = 0;
 46221  				_tmp$3 = b.readErr();
 46222  				n = _tmp$2;
 46223  				err = _tmp$3;
 46224  				$s = -1; return [n, err];
 46225  			}
 46226  			/* */ if (p.$length >= b.buf.$length) { $s = 3; continue; }
 46227  			/* */ $s = 4; continue;
 46228  			/* if (p.$length >= b.buf.$length) { */ case 3:
 46229  				_r = b.rd.Read(p); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 46230  				_tuple = _r;
 46231  				n = _tuple[0];
 46232  				b.err = _tuple[1];
 46233  				if (n < 0) {
 46234  					$panic(errNegativeRead);
 46235  				}
 46236  				if (n > 0) {
 46237  					b.lastByte = (((x = n - 1 >> 0, ((x < 0 || x >= p.$length) ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + x])) >> 0));
 46238  					b.lastRuneSize = -1;
 46239  				}
 46240  				_tmp$4 = n;
 46241  				_tmp$5 = b.readErr();
 46242  				n = _tmp$4;
 46243  				err = _tmp$5;
 46244  				$s = -1; return [n, err];
 46245  			/* } */ case 4:
 46246  			b.r = 0;
 46247  			b.w = 0;
 46248  			_r$1 = b.rd.Read(b.buf); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 46249  			_tuple$1 = _r$1;
 46250  			n = _tuple$1[0];
 46251  			b.err = _tuple$1[1];
 46252  			if (n < 0) {
 46253  				$panic(errNegativeRead);
 46254  			}
 46255  			if (n === 0) {
 46256  				_tmp$6 = 0;
 46257  				_tmp$7 = b.readErr();
 46258  				n = _tmp$6;
 46259  				err = _tmp$7;
 46260  				$s = -1; return [n, err];
 46261  			}
 46262  			b.w = b.w + (n) >> 0;
 46263  		/* } */ case 2:
 46264  		n = $copySlice(p, $subslice(b.buf, b.r, b.w));
 46265  		b.r = b.r + (n) >> 0;
 46266  		b.lastByte = (((x$1 = b.buf, x$2 = b.r - 1 >> 0, ((x$2 < 0 || x$2 >= x$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + x$2])) >> 0));
 46267  		b.lastRuneSize = -1;
 46268  		_tmp$8 = n;
 46269  		_tmp$9 = $ifaceNil;
 46270  		n = _tmp$8;
 46271  		err = _tmp$9;
 46272  		$s = -1; return [n, err];
 46273  		/* */ } return; } if ($f === undefined) { $f = { $blk: Reader.ptr.prototype.Read }; } $f._r = _r; $f._r$1 = _r$1; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tmp$4 = _tmp$4; $f._tmp$5 = _tmp$5; $f._tmp$6 = _tmp$6; $f._tmp$7 = _tmp$7; $f._tmp$8 = _tmp$8; $f._tmp$9 = _tmp$9; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.b = b; $f.err = err; $f.n = n; $f.p = p; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.$s = $s; $f.$r = $r; return $f;
 46274  	};
 46275  	Reader.prototype.Read = function(p) { return this.$val.Read(p); };
 46276  	Reader.ptr.prototype.ReadByte = function() {
 46277  		var b, c, x, x$1, $s, $r;
 46278  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; b = $f.b; c = $f.c; x = $f.x; x$1 = $f.x$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 46279  		b = this;
 46280  		b.lastRuneSize = -1;
 46281  		/* while (true) { */ case 1:
 46282  			/* if (!(b.r === b.w)) { break; } */ if(!(b.r === b.w)) { $s = 2; continue; }
 46283  			if (!($interfaceIsEqual(b.err, $ifaceNil))) {
 46284  				$s = -1; return [0, b.readErr()];
 46285  			}
 46286  			$r = b.fill(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 46287  		/* } */ $s = 1; continue; case 2:
 46288  		c = (x = b.buf, x$1 = b.r, ((x$1 < 0 || x$1 >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + x$1]));
 46289  		b.r = b.r + (1) >> 0;
 46290  		b.lastByte = ((c >> 0));
 46291  		$s = -1; return [c, $ifaceNil];
 46292  		/* */ } return; } if ($f === undefined) { $f = { $blk: Reader.ptr.prototype.ReadByte }; } $f.b = b; $f.c = c; $f.x = x; $f.x$1 = x$1; $f.$s = $s; $f.$r = $r; return $f;
 46293  	};
 46294  	Reader.prototype.ReadByte = function() { return this.$val.ReadByte(); };
 46295  	Reader.ptr.prototype.UnreadByte = function() {
 46296  		var b, x, x$1;
 46297  		b = this;
 46298  		if (b.lastByte < 0 || (b.r === 0) && b.w > 0) {
 46299  			return $pkg.ErrInvalidUnreadByte;
 46300  		}
 46301  		if (b.r > 0) {
 46302  			b.r = b.r - (1) >> 0;
 46303  		} else {
 46304  			b.w = 1;
 46305  		}
 46306  		(x = b.buf, x$1 = b.r, ((x$1 < 0 || x$1 >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + x$1] = ((b.lastByte << 24 >>> 24))));
 46307  		b.lastByte = -1;
 46308  		b.lastRuneSize = -1;
 46309  		return $ifaceNil;
 46310  	};
 46311  	Reader.prototype.UnreadByte = function() { return this.$val.UnreadByte(); };
 46312  	Reader.ptr.prototype.ReadRune = function() {
 46313  		var _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tuple, b, err, r, size, x, x$1, x$2, x$3, $s, $r;
 46314  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tmp$4 = $f._tmp$4; _tmp$5 = $f._tmp$5; _tmp$6 = $f._tmp$6; _tmp$7 = $f._tmp$7; _tuple = $f._tuple; b = $f.b; err = $f.err; r = $f.r; size = $f.size; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; x$3 = $f.x$3; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 46315  		r = 0;
 46316  		size = 0;
 46317  		err = $ifaceNil;
 46318  		b = this;
 46319  		/* while (true) { */ case 1:
 46320  			/* if (!((b.r + 4 >> 0) > b.w && !utf8.FullRune($subslice(b.buf, b.r, b.w)) && $interfaceIsEqual(b.err, $ifaceNil) && (b.w - b.r >> 0) < b.buf.$length)) { break; } */ if(!((b.r + 4 >> 0) > b.w && !utf8.FullRune($subslice(b.buf, b.r, b.w)) && $interfaceIsEqual(b.err, $ifaceNil) && (b.w - b.r >> 0) < b.buf.$length)) { $s = 2; continue; }
 46321  			$r = b.fill(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 46322  		/* } */ $s = 1; continue; case 2:
 46323  		b.lastRuneSize = -1;
 46324  		if (b.r === b.w) {
 46325  			_tmp = 0;
 46326  			_tmp$1 = 0;
 46327  			_tmp$2 = b.readErr();
 46328  			r = _tmp;
 46329  			size = _tmp$1;
 46330  			err = _tmp$2;
 46331  			$s = -1; return [r, size, err];
 46332  		}
 46333  		_tmp$3 = (((x = b.buf, x$1 = b.r, ((x$1 < 0 || x$1 >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + x$1])) >> 0));
 46334  		_tmp$4 = 1;
 46335  		r = _tmp$3;
 46336  		size = _tmp$4;
 46337  		if (r >= 128) {
 46338  			_tuple = utf8.DecodeRune($subslice(b.buf, b.r, b.w));
 46339  			r = _tuple[0];
 46340  			size = _tuple[1];
 46341  		}
 46342  		b.r = b.r + (size) >> 0;
 46343  		b.lastByte = (((x$2 = b.buf, x$3 = b.r - 1 >> 0, ((x$3 < 0 || x$3 >= x$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + x$3])) >> 0));
 46344  		b.lastRuneSize = size;
 46345  		_tmp$5 = r;
 46346  		_tmp$6 = size;
 46347  		_tmp$7 = $ifaceNil;
 46348  		r = _tmp$5;
 46349  		size = _tmp$6;
 46350  		err = _tmp$7;
 46351  		$s = -1; return [r, size, err];
 46352  		/* */ } return; } if ($f === undefined) { $f = { $blk: Reader.ptr.prototype.ReadRune }; } $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tmp$4 = _tmp$4; $f._tmp$5 = _tmp$5; $f._tmp$6 = _tmp$6; $f._tmp$7 = _tmp$7; $f._tuple = _tuple; $f.b = b; $f.err = err; $f.r = r; $f.size = size; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.x$3 = x$3; $f.$s = $s; $f.$r = $r; return $f;
 46353  	};
 46354  	Reader.prototype.ReadRune = function() { return this.$val.ReadRune(); };
 46355  	Reader.ptr.prototype.UnreadRune = function() {
 46356  		var b;
 46357  		b = this;
 46358  		if (b.lastRuneSize < 0 || b.r < b.lastRuneSize) {
 46359  			return $pkg.ErrInvalidUnreadRune;
 46360  		}
 46361  		b.r = b.r - (b.lastRuneSize) >> 0;
 46362  		b.lastByte = -1;
 46363  		b.lastRuneSize = -1;
 46364  		return $ifaceNil;
 46365  	};
 46366  	Reader.prototype.UnreadRune = function() { return this.$val.UnreadRune(); };
 46367  	Reader.ptr.prototype.Buffered = function() {
 46368  		var b;
 46369  		b = this;
 46370  		return b.w - b.r >> 0;
 46371  	};
 46372  	Reader.prototype.Buffered = function() { return this.$val.Buffered(); };
 46373  	Reader.ptr.prototype.ReadSlice = function(delim) {
 46374  		var b, delim, err, i, i$1, line, $s, $r;
 46375  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; b = $f.b; delim = $f.delim; err = $f.err; i = $f.i; i$1 = $f.i$1; line = $f.line; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 46376  		line = sliceType.nil;
 46377  		err = $ifaceNil;
 46378  		b = this;
 46379  		/* while (true) { */ case 1:
 46380  			i = bytes.IndexByte($subslice(b.buf, b.r, b.w), delim);
 46381  			if (i >= 0) {
 46382  				line = $subslice(b.buf, b.r, ((b.r + i >> 0) + 1 >> 0));
 46383  				b.r = b.r + ((i + 1 >> 0)) >> 0;
 46384  				/* break; */ $s = 2; continue;
 46385  			}
 46386  			if (!($interfaceIsEqual(b.err, $ifaceNil))) {
 46387  				line = $subslice(b.buf, b.r, b.w);
 46388  				b.r = b.w;
 46389  				err = b.readErr();
 46390  				/* break; */ $s = 2; continue;
 46391  			}
 46392  			if (b.Buffered() >= b.buf.$length) {
 46393  				b.r = b.w;
 46394  				line = b.buf;
 46395  				err = $pkg.ErrBufferFull;
 46396  				/* break; */ $s = 2; continue;
 46397  			}
 46398  			$r = b.fill(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 46399  		/* } */ $s = 1; continue; case 2:
 46400  		i$1 = line.$length - 1 >> 0;
 46401  		if (i$1 >= 0) {
 46402  			b.lastByte = ((((i$1 < 0 || i$1 >= line.$length) ? ($throwRuntimeError("index out of range"), undefined) : line.$array[line.$offset + i$1]) >> 0));
 46403  			b.lastRuneSize = -1;
 46404  		}
 46405  		$s = -1; return [line, err];
 46406  		/* */ } return; } if ($f === undefined) { $f = { $blk: Reader.ptr.prototype.ReadSlice }; } $f.b = b; $f.delim = delim; $f.err = err; $f.i = i; $f.i$1 = i$1; $f.line = line; $f.$s = $s; $f.$r = $r; return $f;
 46407  	};
 46408  	Reader.prototype.ReadSlice = function(delim) { return this.$val.ReadSlice(delim); };
 46409  	Reader.ptr.prototype.ReadLine = function() {
 46410  		var _r, _tmp, _tmp$1, _tmp$2, _tuple, b, drop, err, isPrefix, line, x, x$1, x$2, $s, $r;
 46411  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tuple = $f._tuple; b = $f.b; drop = $f.drop; err = $f.err; isPrefix = $f.isPrefix; line = $f.line; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 46412  		line = sliceType.nil;
 46413  		isPrefix = false;
 46414  		err = $ifaceNil;
 46415  		b = this;
 46416  		_r = b.ReadSlice(10); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 46417  		_tuple = _r;
 46418  		line = _tuple[0];
 46419  		err = _tuple[1];
 46420  		if ($interfaceIsEqual(err, $pkg.ErrBufferFull)) {
 46421  			if (line.$length > 0 && ((x = line.$length - 1 >> 0, ((x < 0 || x >= line.$length) ? ($throwRuntimeError("index out of range"), undefined) : line.$array[line.$offset + x])) === 13)) {
 46422  				if (b.r === 0) {
 46423  					$panic(new $String("bufio: tried to rewind past start of buffer"));
 46424  				}
 46425  				b.r = b.r - (1) >> 0;
 46426  				line = $subslice(line, 0, (line.$length - 1 >> 0));
 46427  			}
 46428  			_tmp = line;
 46429  			_tmp$1 = true;
 46430  			_tmp$2 = $ifaceNil;
 46431  			line = _tmp;
 46432  			isPrefix = _tmp$1;
 46433  			err = _tmp$2;
 46434  			$s = -1; return [line, isPrefix, err];
 46435  		}
 46436  		if (line.$length === 0) {
 46437  			if (!($interfaceIsEqual(err, $ifaceNil))) {
 46438  				line = sliceType.nil;
 46439  			}
 46440  			$s = -1; return [line, isPrefix, err];
 46441  		}
 46442  		err = $ifaceNil;
 46443  		if ((x$1 = line.$length - 1 >> 0, ((x$1 < 0 || x$1 >= line.$length) ? ($throwRuntimeError("index out of range"), undefined) : line.$array[line.$offset + x$1])) === 10) {
 46444  			drop = 1;
 46445  			if (line.$length > 1 && ((x$2 = line.$length - 2 >> 0, ((x$2 < 0 || x$2 >= line.$length) ? ($throwRuntimeError("index out of range"), undefined) : line.$array[line.$offset + x$2])) === 13)) {
 46446  				drop = 2;
 46447  			}
 46448  			line = $subslice(line, 0, (line.$length - drop >> 0));
 46449  		}
 46450  		$s = -1; return [line, isPrefix, err];
 46451  		/* */ } return; } if ($f === undefined) { $f = { $blk: Reader.ptr.prototype.ReadLine }; } $f._r = _r; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tuple = _tuple; $f.b = b; $f.drop = drop; $f.err = err; $f.isPrefix = isPrefix; $f.line = line; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.$s = $s; $f.$r = $r; return $f;
 46452  	};
 46453  	Reader.prototype.ReadLine = function() { return this.$val.ReadLine(); };
 46454  	Reader.ptr.prototype.ReadBytes = function(delim) {
 46455  		var _i, _i$1, _r, _ref, _ref$1, _tuple, b, buf, buf$1, delim, e, err, frag, full, i, i$1, n, $s, $r;
 46456  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _i = $f._i; _i$1 = $f._i$1; _r = $f._r; _ref = $f._ref; _ref$1 = $f._ref$1; _tuple = $f._tuple; b = $f.b; buf = $f.buf; buf$1 = $f.buf$1; delim = $f.delim; e = $f.e; err = $f.err; frag = $f.frag; full = $f.full; i = $f.i; i$1 = $f.i$1; n = $f.n; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 46457  		b = this;
 46458  		frag = sliceType.nil;
 46459  		full = sliceType$1.nil;
 46460  		err = $ifaceNil;
 46461  		/* while (true) { */ case 1:
 46462  			e = $ifaceNil;
 46463  			_r = b.ReadSlice(delim); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 46464  			_tuple = _r;
 46465  			frag = _tuple[0];
 46466  			e = _tuple[1];
 46467  			if ($interfaceIsEqual(e, $ifaceNil)) {
 46468  				/* break; */ $s = 2; continue;
 46469  			}
 46470  			if (!($interfaceIsEqual(e, $pkg.ErrBufferFull))) {
 46471  				err = e;
 46472  				/* break; */ $s = 2; continue;
 46473  			}
 46474  			buf = $makeSlice(sliceType, frag.$length);
 46475  			$copySlice(buf, frag);
 46476  			full = $append(full, buf);
 46477  		/* } */ $s = 1; continue; case 2:
 46478  		n = 0;
 46479  		_ref = full;
 46480  		_i = 0;
 46481  		while (true) {
 46482  			if (!(_i < _ref.$length)) { break; }
 46483  			i = _i;
 46484  			n = n + (((i < 0 || i >= full.$length) ? ($throwRuntimeError("index out of range"), undefined) : full.$array[full.$offset + i]).$length) >> 0;
 46485  			_i++;
 46486  		}
 46487  		n = n + (frag.$length) >> 0;
 46488  		buf$1 = $makeSlice(sliceType, n);
 46489  		n = 0;
 46490  		_ref$1 = full;
 46491  		_i$1 = 0;
 46492  		while (true) {
 46493  			if (!(_i$1 < _ref$1.$length)) { break; }
 46494  			i$1 = _i$1;
 46495  			n = n + ($copySlice($subslice(buf$1, n), ((i$1 < 0 || i$1 >= full.$length) ? ($throwRuntimeError("index out of range"), undefined) : full.$array[full.$offset + i$1]))) >> 0;
 46496  			_i$1++;
 46497  		}
 46498  		$copySlice($subslice(buf$1, n), frag);
 46499  		$s = -1; return [buf$1, err];
 46500  		/* */ } return; } if ($f === undefined) { $f = { $blk: Reader.ptr.prototype.ReadBytes }; } $f._i = _i; $f._i$1 = _i$1; $f._r = _r; $f._ref = _ref; $f._ref$1 = _ref$1; $f._tuple = _tuple; $f.b = b; $f.buf = buf; $f.buf$1 = buf$1; $f.delim = delim; $f.e = e; $f.err = err; $f.frag = frag; $f.full = full; $f.i = i; $f.i$1 = i$1; $f.n = n; $f.$s = $s; $f.$r = $r; return $f;
 46501  	};
 46502  	Reader.prototype.ReadBytes = function(delim) { return this.$val.ReadBytes(delim); };
 46503  	Reader.ptr.prototype.ReadString = function(delim) {
 46504  		var _r, _tuple, b, bytes$1, delim, err, $s, $r;
 46505  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; b = $f.b; bytes$1 = $f.bytes$1; delim = $f.delim; err = $f.err; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 46506  		b = this;
 46507  		_r = b.ReadBytes(delim); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 46508  		_tuple = _r;
 46509  		bytes$1 = _tuple[0];
 46510  		err = _tuple[1];
 46511  		$s = -1; return [($bytesToString(bytes$1)), err];
 46512  		/* */ } return; } if ($f === undefined) { $f = { $blk: Reader.ptr.prototype.ReadString }; } $f._r = _r; $f._tuple = _tuple; $f.b = b; $f.bytes$1 = bytes$1; $f.delim = delim; $f.err = err; $f.$s = $s; $f.$r = $r; return $f;
 46513  	};
 46514  	Reader.prototype.ReadString = function(delim) { return this.$val.ReadString(delim); };
 46515  	Reader.ptr.prototype.WriteTo = function(w) {
 46516  		var _r, _r$1, _r$2, _r$3, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, _tuple$5, b, err, err$1, err$2, err$3, m, m$1, m$2, n, ok, ok$1, r, w, w$1, x, x$1, x$2, $s, $r;
 46517  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tmp$4 = $f._tmp$4; _tmp$5 = $f._tmp$5; _tmp$6 = $f._tmp$6; _tmp$7 = $f._tmp$7; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; _tuple$4 = $f._tuple$4; _tuple$5 = $f._tuple$5; b = $f.b; err = $f.err; err$1 = $f.err$1; err$2 = $f.err$2; err$3 = $f.err$3; m = $f.m; m$1 = $f.m$1; m$2 = $f.m$2; n = $f.n; ok = $f.ok; ok$1 = $f.ok$1; r = $f.r; w = $f.w; w$1 = $f.w$1; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 46518  		n = new $Int64(0, 0);
 46519  		err = $ifaceNil;
 46520  		b = this;
 46521  		_r = b.writeBuf(w); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 46522  		_tuple = _r;
 46523  		n = _tuple[0];
 46524  		err = _tuple[1];
 46525  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 46526  			$s = -1; return [n, err];
 46527  		}
 46528  		_tuple$1 = $assertType(b.rd, io.WriterTo, true);
 46529  		r = _tuple$1[0];
 46530  		ok = _tuple$1[1];
 46531  		/* */ if (ok) { $s = 2; continue; }
 46532  		/* */ $s = 3; continue;
 46533  		/* if (ok) { */ case 2:
 46534  			_r$1 = r.WriteTo(w); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 46535  			_tuple$2 = _r$1;
 46536  			m = _tuple$2[0];
 46537  			err$1 = _tuple$2[1];
 46538  			n = (x = m, new $Int64(n.$high + x.$high, n.$low + x.$low));
 46539  			_tmp = n;
 46540  			_tmp$1 = err$1;
 46541  			n = _tmp;
 46542  			err = _tmp$1;
 46543  			$s = -1; return [n, err];
 46544  		/* } */ case 3:
 46545  		_tuple$3 = $assertType(w, io.ReaderFrom, true);
 46546  		w$1 = _tuple$3[0];
 46547  		ok$1 = _tuple$3[1];
 46548  		/* */ if (ok$1) { $s = 5; continue; }
 46549  		/* */ $s = 6; continue;
 46550  		/* if (ok$1) { */ case 5:
 46551  			_r$2 = w$1.ReadFrom(b.rd); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 46552  			_tuple$4 = _r$2;
 46553  			m$1 = _tuple$4[0];
 46554  			err$2 = _tuple$4[1];
 46555  			n = (x$1 = m$1, new $Int64(n.$high + x$1.$high, n.$low + x$1.$low));
 46556  			_tmp$2 = n;
 46557  			_tmp$3 = err$2;
 46558  			n = _tmp$2;
 46559  			err = _tmp$3;
 46560  			$s = -1; return [n, err];
 46561  		/* } */ case 6:
 46562  		/* */ if ((b.w - b.r >> 0) < b.buf.$length) { $s = 8; continue; }
 46563  		/* */ $s = 9; continue;
 46564  		/* if ((b.w - b.r >> 0) < b.buf.$length) { */ case 8:
 46565  			$r = b.fill(); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 46566  		/* } */ case 9:
 46567  		/* while (true) { */ case 11:
 46568  			/* if (!(b.r < b.w)) { break; } */ if(!(b.r < b.w)) { $s = 12; continue; }
 46569  			_r$3 = b.writeBuf(w); /* */ $s = 13; case 13: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 46570  			_tuple$5 = _r$3;
 46571  			m$2 = _tuple$5[0];
 46572  			err$3 = _tuple$5[1];
 46573  			n = (x$2 = m$2, new $Int64(n.$high + x$2.$high, n.$low + x$2.$low));
 46574  			if (!($interfaceIsEqual(err$3, $ifaceNil))) {
 46575  				_tmp$4 = n;
 46576  				_tmp$5 = err$3;
 46577  				n = _tmp$4;
 46578  				err = _tmp$5;
 46579  				$s = -1; return [n, err];
 46580  			}
 46581  			$r = b.fill(); /* */ $s = 14; case 14: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 46582  		/* } */ $s = 11; continue; case 12:
 46583  		if ($interfaceIsEqual(b.err, io.EOF)) {
 46584  			b.err = $ifaceNil;
 46585  		}
 46586  		_tmp$6 = n;
 46587  		_tmp$7 = b.readErr();
 46588  		n = _tmp$6;
 46589  		err = _tmp$7;
 46590  		$s = -1; return [n, err];
 46591  		/* */ } return; } if ($f === undefined) { $f = { $blk: Reader.ptr.prototype.WriteTo }; } $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tmp$4 = _tmp$4; $f._tmp$5 = _tmp$5; $f._tmp$6 = _tmp$6; $f._tmp$7 = _tmp$7; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f._tuple$4 = _tuple$4; $f._tuple$5 = _tuple$5; $f.b = b; $f.err = err; $f.err$1 = err$1; $f.err$2 = err$2; $f.err$3 = err$3; $f.m = m; $f.m$1 = m$1; $f.m$2 = m$2; $f.n = n; $f.ok = ok; $f.ok$1 = ok$1; $f.r = r; $f.w = w; $f.w$1 = w$1; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.$s = $s; $f.$r = $r; return $f;
 46592  	};
 46593  	Reader.prototype.WriteTo = function(w) { return this.$val.WriteTo(w); };
 46594  	Reader.ptr.prototype.writeBuf = function(w) {
 46595  		var _r, _tuple, b, err, n, w, $s, $r;
 46596  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; b = $f.b; err = $f.err; n = $f.n; w = $f.w; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 46597  		b = this;
 46598  		_r = w.Write($subslice(b.buf, b.r, b.w)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 46599  		_tuple = _r;
 46600  		n = _tuple[0];
 46601  		err = _tuple[1];
 46602  		if (n < 0) {
 46603  			$panic(errNegativeWrite);
 46604  		}
 46605  		b.r = b.r + (n) >> 0;
 46606  		$s = -1; return [(new $Int64(0, n)), err];
 46607  		/* */ } return; } if ($f === undefined) { $f = { $blk: Reader.ptr.prototype.writeBuf }; } $f._r = _r; $f._tuple = _tuple; $f.b = b; $f.err = err; $f.n = n; $f.w = w; $f.$s = $s; $f.$r = $r; return $f;
 46608  	};
 46609  	Reader.prototype.writeBuf = function(w) { return this.$val.writeBuf(w); };
 46610  	NewWriterSize = function(w, size) {
 46611  		var _tuple, b, ok, size, w;
 46612  		_tuple = $assertType(w, ptrType$1, true);
 46613  		b = _tuple[0];
 46614  		ok = _tuple[1];
 46615  		if (ok && b.buf.$length >= size) {
 46616  			return b;
 46617  		}
 46618  		if (size <= 0) {
 46619  			size = 4096;
 46620  		}
 46621  		return new Writer.ptr($ifaceNil, $makeSlice(sliceType, size), 0, w);
 46622  	};
 46623  	$pkg.NewWriterSize = NewWriterSize;
 46624  	NewWriter = function(w) {
 46625  		var w;
 46626  		return NewWriterSize(w, 4096);
 46627  	};
 46628  	$pkg.NewWriter = NewWriter;
 46629  	Writer.ptr.prototype.Size = function() {
 46630  		var b;
 46631  		b = this;
 46632  		return b.buf.$length;
 46633  	};
 46634  	Writer.prototype.Size = function() { return this.$val.Size(); };
 46635  	Writer.ptr.prototype.Reset = function(w) {
 46636  		var b, w;
 46637  		b = this;
 46638  		b.err = $ifaceNil;
 46639  		b.n = 0;
 46640  		b.wr = w;
 46641  	};
 46642  	Writer.prototype.Reset = function(w) { return this.$val.Reset(w); };
 46643  	Writer.ptr.prototype.Flush = function() {
 46644  		var _r, _tuple, b, err, n, $s, $r;
 46645  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; b = $f.b; err = $f.err; n = $f.n; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 46646  		b = this;
 46647  		if (!($interfaceIsEqual(b.err, $ifaceNil))) {
 46648  			$s = -1; return b.err;
 46649  		}
 46650  		if (b.n === 0) {
 46651  			$s = -1; return $ifaceNil;
 46652  		}
 46653  		_r = b.wr.Write($subslice(b.buf, 0, b.n)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 46654  		_tuple = _r;
 46655  		n = _tuple[0];
 46656  		err = _tuple[1];
 46657  		if (n < b.n && $interfaceIsEqual(err, $ifaceNil)) {
 46658  			err = io.ErrShortWrite;
 46659  		}
 46660  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 46661  			if (n > 0 && n < b.n) {
 46662  				$copySlice($subslice(b.buf, 0, (b.n - n >> 0)), $subslice(b.buf, n, b.n));
 46663  			}
 46664  			b.n = b.n - (n) >> 0;
 46665  			b.err = err;
 46666  			$s = -1; return err;
 46667  		}
 46668  		b.n = 0;
 46669  		$s = -1; return $ifaceNil;
 46670  		/* */ } return; } if ($f === undefined) { $f = { $blk: Writer.ptr.prototype.Flush }; } $f._r = _r; $f._tuple = _tuple; $f.b = b; $f.err = err; $f.n = n; $f.$s = $s; $f.$r = $r; return $f;
 46671  	};
 46672  	Writer.prototype.Flush = function() { return this.$val.Flush(); };
 46673  	Writer.ptr.prototype.Available = function() {
 46674  		var b;
 46675  		b = this;
 46676  		return b.buf.$length - b.n >> 0;
 46677  	};
 46678  	Writer.prototype.Available = function() { return this.$val.Available(); };
 46679  	Writer.ptr.prototype.Buffered = function() {
 46680  		var b;
 46681  		b = this;
 46682  		return b.n;
 46683  	};
 46684  	Writer.prototype.Buffered = function() { return this.$val.Buffered(); };
 46685  	Writer.ptr.prototype.Write = function(p) {
 46686  		var _r, _r$1, _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, b, err, n, n$1, nn, p, $s, $r;
 46687  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tuple = $f._tuple; b = $f.b; err = $f.err; n = $f.n; n$1 = $f.n$1; nn = $f.nn; p = $f.p; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 46688  		nn = 0;
 46689  		err = $ifaceNil;
 46690  		b = this;
 46691  		/* while (true) { */ case 1:
 46692  			/* if (!(p.$length > b.Available() && $interfaceIsEqual(b.err, $ifaceNil))) { break; } */ if(!(p.$length > b.Available() && $interfaceIsEqual(b.err, $ifaceNil))) { $s = 2; continue; }
 46693  			n = 0;
 46694  			/* */ if (b.Buffered() === 0) { $s = 3; continue; }
 46695  			/* */ $s = 4; continue;
 46696  			/* if (b.Buffered() === 0) { */ case 3:
 46697  				_r = b.wr.Write(p); /* */ $s = 6; case 6: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 46698  				_tuple = _r;
 46699  				n = _tuple[0];
 46700  				b.err = _tuple[1];
 46701  				$s = 5; continue;
 46702  			/* } else { */ case 4:
 46703  				n = $copySlice($subslice(b.buf, b.n), p);
 46704  				b.n = b.n + (n) >> 0;
 46705  				_r$1 = b.Flush(); /* */ $s = 7; case 7: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 46706  				_r$1;
 46707  			/* } */ case 5:
 46708  			nn = nn + (n) >> 0;
 46709  			p = $subslice(p, n);
 46710  		/* } */ $s = 1; continue; case 2:
 46711  		if (!($interfaceIsEqual(b.err, $ifaceNil))) {
 46712  			_tmp = nn;
 46713  			_tmp$1 = b.err;
 46714  			nn = _tmp;
 46715  			err = _tmp$1;
 46716  			$s = -1; return [nn, err];
 46717  		}
 46718  		n$1 = $copySlice($subslice(b.buf, b.n), p);
 46719  		b.n = b.n + (n$1) >> 0;
 46720  		nn = nn + (n$1) >> 0;
 46721  		_tmp$2 = nn;
 46722  		_tmp$3 = $ifaceNil;
 46723  		nn = _tmp$2;
 46724  		err = _tmp$3;
 46725  		$s = -1; return [nn, err];
 46726  		/* */ } return; } if ($f === undefined) { $f = { $blk: Writer.ptr.prototype.Write }; } $f._r = _r; $f._r$1 = _r$1; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tuple = _tuple; $f.b = b; $f.err = err; $f.n = n; $f.n$1 = n$1; $f.nn = nn; $f.p = p; $f.$s = $s; $f.$r = $r; return $f;
 46727  	};
 46728  	Writer.prototype.Write = function(p) { return this.$val.Write(p); };
 46729  	Writer.ptr.prototype.WriteByte = function(c) {
 46730  		var _r, _v, b, c, x, x$1, $s, $r;
 46731  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _v = $f._v; b = $f.b; c = $f.c; x = $f.x; x$1 = $f.x$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 46732  		b = this;
 46733  		if (!($interfaceIsEqual(b.err, $ifaceNil))) {
 46734  			$s = -1; return b.err;
 46735  		}
 46736  		if (!(b.Available() <= 0)) { _v = false; $s = 3; continue s; }
 46737  		_r = b.Flush(); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 46738  		_v = !($interfaceIsEqual(_r, $ifaceNil)); case 3:
 46739  		/* */ if (_v) { $s = 1; continue; }
 46740  		/* */ $s = 2; continue;
 46741  		/* if (_v) { */ case 1:
 46742  			$s = -1; return b.err;
 46743  		/* } */ case 2:
 46744  		(x = b.buf, x$1 = b.n, ((x$1 < 0 || x$1 >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + x$1] = c));
 46745  		b.n = b.n + (1) >> 0;
 46746  		$s = -1; return $ifaceNil;
 46747  		/* */ } return; } if ($f === undefined) { $f = { $blk: Writer.ptr.prototype.WriteByte }; } $f._r = _r; $f._v = _v; $f.b = b; $f.c = c; $f.x = x; $f.x$1 = x$1; $f.$s = $s; $f.$r = $r; return $f;
 46748  	};
 46749  	Writer.prototype.WriteByte = function(c) { return this.$val.WriteByte(c); };
 46750  	Writer.ptr.prototype.WriteRune = function(r) {
 46751  		var _r, _r$1, _r$2, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, b, err, n, r, size, $s, $r;
 46752  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tmp$4 = $f._tmp$4; _tmp$5 = $f._tmp$5; _tmp$6 = $f._tmp$6; _tmp$7 = $f._tmp$7; _tmp$8 = $f._tmp$8; _tmp$9 = $f._tmp$9; _tuple = $f._tuple; b = $f.b; err = $f.err; n = $f.n; r = $f.r; size = $f.size; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 46753  		size = 0;
 46754  		err = $ifaceNil;
 46755  		b = this;
 46756  		/* */ if (r < 128) { $s = 1; continue; }
 46757  		/* */ $s = 2; continue;
 46758  		/* if (r < 128) { */ case 1:
 46759  			_r = b.WriteByte(((r << 24 >>> 24))); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 46760  			err = _r;
 46761  			if (!($interfaceIsEqual(err, $ifaceNil))) {
 46762  				_tmp = 0;
 46763  				_tmp$1 = err;
 46764  				size = _tmp;
 46765  				err = _tmp$1;
 46766  				$s = -1; return [size, err];
 46767  			}
 46768  			_tmp$2 = 1;
 46769  			_tmp$3 = $ifaceNil;
 46770  			size = _tmp$2;
 46771  			err = _tmp$3;
 46772  			$s = -1; return [size, err];
 46773  		/* } */ case 2:
 46774  		if (!($interfaceIsEqual(b.err, $ifaceNil))) {
 46775  			_tmp$4 = 0;
 46776  			_tmp$5 = b.err;
 46777  			size = _tmp$4;
 46778  			err = _tmp$5;
 46779  			$s = -1; return [size, err];
 46780  		}
 46781  		n = b.Available();
 46782  		/* */ if (n < 4) { $s = 4; continue; }
 46783  		/* */ $s = 5; continue;
 46784  		/* if (n < 4) { */ case 4:
 46785  			_r$1 = b.Flush(); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 46786  			_r$1;
 46787  			if (!($interfaceIsEqual(b.err, $ifaceNil))) {
 46788  				_tmp$6 = 0;
 46789  				_tmp$7 = b.err;
 46790  				size = _tmp$6;
 46791  				err = _tmp$7;
 46792  				$s = -1; return [size, err];
 46793  			}
 46794  			n = b.Available();
 46795  			/* */ if (n < 4) { $s = 7; continue; }
 46796  			/* */ $s = 8; continue;
 46797  			/* if (n < 4) { */ case 7:
 46798  				_r$2 = b.WriteString(($encodeRune(r))); /* */ $s = 9; case 9: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 46799  				_tuple = _r$2;
 46800  				size = _tuple[0];
 46801  				err = _tuple[1];
 46802  				$s = -1; return [size, err];
 46803  			/* } */ case 8:
 46804  		/* } */ case 5:
 46805  		size = utf8.EncodeRune($subslice(b.buf, b.n), r);
 46806  		b.n = b.n + (size) >> 0;
 46807  		_tmp$8 = size;
 46808  		_tmp$9 = $ifaceNil;
 46809  		size = _tmp$8;
 46810  		err = _tmp$9;
 46811  		$s = -1; return [size, err];
 46812  		/* */ } return; } if ($f === undefined) { $f = { $blk: Writer.ptr.prototype.WriteRune }; } $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tmp$4 = _tmp$4; $f._tmp$5 = _tmp$5; $f._tmp$6 = _tmp$6; $f._tmp$7 = _tmp$7; $f._tmp$8 = _tmp$8; $f._tmp$9 = _tmp$9; $f._tuple = _tuple; $f.b = b; $f.err = err; $f.n = n; $f.r = r; $f.size = size; $f.$s = $s; $f.$r = $r; return $f;
 46813  	};
 46814  	Writer.prototype.WriteRune = function(r) { return this.$val.WriteRune(r); };
 46815  	Writer.ptr.prototype.WriteString = function(s) {
 46816  		var _r, b, n, n$1, nn, s, $s, $r;
 46817  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; b = $f.b; n = $f.n; n$1 = $f.n$1; nn = $f.nn; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 46818  		b = this;
 46819  		nn = 0;
 46820  		/* while (true) { */ case 1:
 46821  			/* if (!(s.length > b.Available() && $interfaceIsEqual(b.err, $ifaceNil))) { break; } */ if(!(s.length > b.Available() && $interfaceIsEqual(b.err, $ifaceNil))) { $s = 2; continue; }
 46822  			n = $copyString($subslice(b.buf, b.n), s);
 46823  			b.n = b.n + (n) >> 0;
 46824  			nn = nn + (n) >> 0;
 46825  			s = $substring(s, n);
 46826  			_r = b.Flush(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 46827  			_r;
 46828  		/* } */ $s = 1; continue; case 2:
 46829  		if (!($interfaceIsEqual(b.err, $ifaceNil))) {
 46830  			$s = -1; return [nn, b.err];
 46831  		}
 46832  		n$1 = $copyString($subslice(b.buf, b.n), s);
 46833  		b.n = b.n + (n$1) >> 0;
 46834  		nn = nn + (n$1) >> 0;
 46835  		$s = -1; return [nn, $ifaceNil];
 46836  		/* */ } return; } if ($f === undefined) { $f = { $blk: Writer.ptr.prototype.WriteString }; } $f._r = _r; $f.b = b; $f.n = n; $f.n$1 = n$1; $f.nn = nn; $f.s = s; $f.$s = $s; $f.$r = $r; return $f;
 46837  	};
 46838  	Writer.prototype.WriteString = function(s) { return this.$val.WriteString(s); };
 46839  	Writer.ptr.prototype.ReadFrom = function(r) {
 46840  		var _r, _r$1, _r$2, _r$3, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tuple, _tuple$1, _tuple$2, b, err, err1, m, n, nr, ok, r, w, x, $s, $r;
 46841  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tmp$4 = $f._tmp$4; _tmp$5 = $f._tmp$5; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; b = $f.b; err = $f.err; err1 = $f.err1; m = $f.m; n = $f.n; nr = $f.nr; ok = $f.ok; r = $f.r; w = $f.w; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 46842  		n = new $Int64(0, 0);
 46843  		err = $ifaceNil;
 46844  		b = this;
 46845  		/* */ if (b.Buffered() === 0) { $s = 1; continue; }
 46846  		/* */ $s = 2; continue;
 46847  		/* if (b.Buffered() === 0) { */ case 1:
 46848  			_tuple = $assertType(b.wr, io.ReaderFrom, true);
 46849  			w = _tuple[0];
 46850  			ok = _tuple[1];
 46851  			/* */ if (ok) { $s = 3; continue; }
 46852  			/* */ $s = 4; continue;
 46853  			/* if (ok) { */ case 3:
 46854  				_r = w.ReadFrom(r); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 46855  				_tuple$1 = _r;
 46856  				n = _tuple$1[0];
 46857  				err = _tuple$1[1];
 46858  				$s = -1; return [n, err];
 46859  			/* } */ case 4:
 46860  		/* } */ case 2:
 46861  		m = 0;
 46862  		/* while (true) { */ case 6:
 46863  			/* */ if (b.Available() === 0) { $s = 8; continue; }
 46864  			/* */ $s = 9; continue;
 46865  			/* if (b.Available() === 0) { */ case 8:
 46866  				_r$1 = b.Flush(); /* */ $s = 10; case 10: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 46867  				err1 = _r$1;
 46868  				if (!($interfaceIsEqual(err1, $ifaceNil))) {
 46869  					_tmp = n;
 46870  					_tmp$1 = err1;
 46871  					n = _tmp;
 46872  					err = _tmp$1;
 46873  					$s = -1; return [n, err];
 46874  				}
 46875  			/* } */ case 9:
 46876  			nr = 0;
 46877  			/* while (true) { */ case 11:
 46878  				/* if (!(nr < 100)) { break; } */ if(!(nr < 100)) { $s = 12; continue; }
 46879  				_r$2 = r.Read($subslice(b.buf, b.n)); /* */ $s = 13; case 13: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 46880  				_tuple$2 = _r$2;
 46881  				m = _tuple$2[0];
 46882  				err = _tuple$2[1];
 46883  				if (!((m === 0)) || !($interfaceIsEqual(err, $ifaceNil))) {
 46884  					/* break; */ $s = 12; continue;
 46885  				}
 46886  				nr = nr + (1) >> 0;
 46887  			/* } */ $s = 11; continue; case 12:
 46888  			if (nr === 100) {
 46889  				_tmp$2 = n;
 46890  				_tmp$3 = io.ErrNoProgress;
 46891  				n = _tmp$2;
 46892  				err = _tmp$3;
 46893  				$s = -1; return [n, err];
 46894  			}
 46895  			b.n = b.n + (m) >> 0;
 46896  			n = (x = (new $Int64(0, m)), new $Int64(n.$high + x.$high, n.$low + x.$low));
 46897  			if (!($interfaceIsEqual(err, $ifaceNil))) {
 46898  				/* break; */ $s = 7; continue;
 46899  			}
 46900  		/* } */ $s = 6; continue; case 7:
 46901  		/* */ if ($interfaceIsEqual(err, io.EOF)) { $s = 14; continue; }
 46902  		/* */ $s = 15; continue;
 46903  		/* if ($interfaceIsEqual(err, io.EOF)) { */ case 14:
 46904  			/* */ if (b.Available() === 0) { $s = 16; continue; }
 46905  			/* */ $s = 17; continue;
 46906  			/* if (b.Available() === 0) { */ case 16:
 46907  				_r$3 = b.Flush(); /* */ $s = 19; case 19: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 46908  				err = _r$3;
 46909  				$s = 18; continue;
 46910  			/* } else { */ case 17:
 46911  				err = $ifaceNil;
 46912  			/* } */ case 18:
 46913  		/* } */ case 15:
 46914  		_tmp$4 = n;
 46915  		_tmp$5 = err;
 46916  		n = _tmp$4;
 46917  		err = _tmp$5;
 46918  		$s = -1; return [n, err];
 46919  		/* */ } return; } if ($f === undefined) { $f = { $blk: Writer.ptr.prototype.ReadFrom }; } $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tmp$4 = _tmp$4; $f._tmp$5 = _tmp$5; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f.b = b; $f.err = err; $f.err1 = err1; $f.m = m; $f.n = n; $f.nr = nr; $f.ok = ok; $f.r = r; $f.w = w; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
 46920  	};
 46921  	Writer.prototype.ReadFrom = function(r) { return this.$val.ReadFrom(r); };
 46922  	NewReadWriter = function(r, w) {
 46923  		var r, w;
 46924  		return new ReadWriter.ptr(r, w);
 46925  	};
 46926  	$pkg.NewReadWriter = NewReadWriter;
 46927  	NewScanner = function(r) {
 46928  		var r;
 46929  		return new Scanner.ptr(r, ScanLines, 65536, sliceType.nil, sliceType.nil, 0, 0, $ifaceNil, 0, false, false);
 46930  	};
 46931  	$pkg.NewScanner = NewScanner;
 46932  	Scanner.ptr.prototype.Err = function() {
 46933  		var s;
 46934  		s = this;
 46935  		if ($interfaceIsEqual(s.err, io.EOF)) {
 46936  			return $ifaceNil;
 46937  		}
 46938  		return s.err;
 46939  	};
 46940  	Scanner.prototype.Err = function() { return this.$val.Err(); };
 46941  	Scanner.ptr.prototype.Bytes = function() {
 46942  		var s;
 46943  		s = this;
 46944  		return s.token;
 46945  	};
 46946  	Scanner.prototype.Bytes = function() { return this.$val.Bytes(); };
 46947  	Scanner.ptr.prototype.Text = function() {
 46948  		var s;
 46949  		s = this;
 46950  		return ($bytesToString(s.token));
 46951  	};
 46952  	Scanner.prototype.Text = function() { return this.$val.Text(); };
 46953  	Scanner.ptr.prototype.Scan = function() {
 46954  		var _q, _r, _r$1, _tuple, _tuple$1, advance, err, err$1, loop, n, newBuf, newSize, s, token, $s, $r;
 46955  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _q = $f._q; _r = $f._r; _r$1 = $f._r$1; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; advance = $f.advance; err = $f.err; err$1 = $f.err$1; loop = $f.loop; n = $f.n; newBuf = $f.newBuf; newSize = $f.newSize; s = $f.s; token = $f.token; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 46956  		s = this;
 46957  		if (s.done) {
 46958  			$s = -1; return false;
 46959  		}
 46960  		s.scanCalled = true;
 46961  		/* while (true) { */ case 1:
 46962  			/* */ if (s.end > s.start || !($interfaceIsEqual(s.err, $ifaceNil))) { $s = 3; continue; }
 46963  			/* */ $s = 4; continue;
 46964  			/* if (s.end > s.start || !($interfaceIsEqual(s.err, $ifaceNil))) { */ case 3:
 46965  				_r = s.split($subslice(s.buf, s.start, s.end), !($interfaceIsEqual(s.err, $ifaceNil))); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 46966  				_tuple = _r;
 46967  				advance = _tuple[0];
 46968  				token = _tuple[1];
 46969  				err = _tuple[2];
 46970  				if (!($interfaceIsEqual(err, $ifaceNil))) {
 46971  					if ($interfaceIsEqual(err, $pkg.ErrFinalToken)) {
 46972  						s.token = token;
 46973  						s.done = true;
 46974  						$s = -1; return true;
 46975  					}
 46976  					s.setErr(err);
 46977  					$s = -1; return false;
 46978  				}
 46979  				if (!s.advance(advance)) {
 46980  					$s = -1; return false;
 46981  				}
 46982  				s.token = token;
 46983  				if (!(token === sliceType.nil)) {
 46984  					if ($interfaceIsEqual(s.err, $ifaceNil) || advance > 0) {
 46985  						s.empties = 0;
 46986  					} else {
 46987  						s.empties = s.empties + (1) >> 0;
 46988  						if (s.empties > 100) {
 46989  							$panic(new $String("bufio.Scan: too many empty tokens without progressing"));
 46990  						}
 46991  					}
 46992  					$s = -1; return true;
 46993  				}
 46994  			/* } */ case 4:
 46995  			if (!($interfaceIsEqual(s.err, $ifaceNil))) {
 46996  				s.start = 0;
 46997  				s.end = 0;
 46998  				$s = -1; return false;
 46999  			}
 47000  			if (s.start > 0 && ((s.end === s.buf.$length) || s.start > (_q = s.buf.$length / 2, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")))) {
 47001  				$copySlice(s.buf, $subslice(s.buf, s.start, s.end));
 47002  				s.end = s.end - (s.start) >> 0;
 47003  				s.start = 0;
 47004  			}
 47005  			if (s.end === s.buf.$length) {
 47006  				if (s.buf.$length >= s.maxTokenSize || s.buf.$length > 1073741823) {
 47007  					s.setErr($pkg.ErrTooLong);
 47008  					$s = -1; return false;
 47009  				}
 47010  				newSize = $imul(s.buf.$length, 2);
 47011  				if (newSize === 0) {
 47012  					newSize = 4096;
 47013  				}
 47014  				if (newSize > s.maxTokenSize) {
 47015  					newSize = s.maxTokenSize;
 47016  				}
 47017  				newBuf = $makeSlice(sliceType, newSize);
 47018  				$copySlice(newBuf, $subslice(s.buf, s.start, s.end));
 47019  				s.buf = newBuf;
 47020  				s.end = s.end - (s.start) >> 0;
 47021  				s.start = 0;
 47022  			}
 47023  			loop = 0;
 47024  			/* while (true) { */ case 6:
 47025  				_r$1 = s.r.Read($subslice(s.buf, s.end, s.buf.$length)); /* */ $s = 8; case 8: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 47026  				_tuple$1 = _r$1;
 47027  				n = _tuple$1[0];
 47028  				err$1 = _tuple$1[1];
 47029  				s.end = s.end + (n) >> 0;
 47030  				if (!($interfaceIsEqual(err$1, $ifaceNil))) {
 47031  					s.setErr(err$1);
 47032  					/* break; */ $s = 7; continue;
 47033  				}
 47034  				if (n > 0) {
 47035  					s.empties = 0;
 47036  					/* break; */ $s = 7; continue;
 47037  				}
 47038  				loop = loop + (1) >> 0;
 47039  				if (loop > 100) {
 47040  					s.setErr(io.ErrNoProgress);
 47041  					/* break; */ $s = 7; continue;
 47042  				}
 47043  			/* } */ $s = 6; continue; case 7:
 47044  		/* } */ $s = 1; continue; case 2:
 47045  		$s = -1; return false;
 47046  		/* */ } return; } if ($f === undefined) { $f = { $blk: Scanner.ptr.prototype.Scan }; } $f._q = _q; $f._r = _r; $f._r$1 = _r$1; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.advance = advance; $f.err = err; $f.err$1 = err$1; $f.loop = loop; $f.n = n; $f.newBuf = newBuf; $f.newSize = newSize; $f.s = s; $f.token = token; $f.$s = $s; $f.$r = $r; return $f;
 47047  	};
 47048  	Scanner.prototype.Scan = function() { return this.$val.Scan(); };
 47049  	Scanner.ptr.prototype.advance = function(n) {
 47050  		var n, s;
 47051  		s = this;
 47052  		if (n < 0) {
 47053  			s.setErr($pkg.ErrNegativeAdvance);
 47054  			return false;
 47055  		}
 47056  		if (n > (s.end - s.start >> 0)) {
 47057  			s.setErr($pkg.ErrAdvanceTooFar);
 47058  			return false;
 47059  		}
 47060  		s.start = s.start + (n) >> 0;
 47061  		return true;
 47062  	};
 47063  	Scanner.prototype.advance = function(n) { return this.$val.advance(n); };
 47064  	Scanner.ptr.prototype.setErr = function(err) {
 47065  		var err, s;
 47066  		s = this;
 47067  		if ($interfaceIsEqual(s.err, $ifaceNil) || $interfaceIsEqual(s.err, io.EOF)) {
 47068  			s.err = err;
 47069  		}
 47070  	};
 47071  	Scanner.prototype.setErr = function(err) { return this.$val.setErr(err); };
 47072  	Scanner.ptr.prototype.Buffer = function(buf, max) {
 47073  		var buf, max, s;
 47074  		s = this;
 47075  		if (s.scanCalled) {
 47076  			$panic(new $String("Buffer called after Scan"));
 47077  		}
 47078  		s.buf = $subslice(buf, 0, buf.$capacity);
 47079  		s.maxTokenSize = max;
 47080  	};
 47081  	Scanner.prototype.Buffer = function(buf, max) { return this.$val.Buffer(buf, max); };
 47082  	Scanner.ptr.prototype.Split = function(split) {
 47083  		var s, split;
 47084  		s = this;
 47085  		if (s.scanCalled) {
 47086  			$panic(new $String("Split called after Scan"));
 47087  		}
 47088  		s.split = split;
 47089  	};
 47090  	Scanner.prototype.Split = function(split) { return this.$val.Split(split); };
 47091  	dropCR = function(data) {
 47092  		var data, x;
 47093  		if (data.$length > 0 && ((x = data.$length - 1 >> 0, ((x < 0 || x >= data.$length) ? ($throwRuntimeError("index out of range"), undefined) : data.$array[data.$offset + x])) === 13)) {
 47094  			return $subslice(data, 0, (data.$length - 1 >> 0));
 47095  		}
 47096  		return data;
 47097  	};
 47098  	ScanLines = function(data, atEOF) {
 47099  		var _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, advance, atEOF, data, err, i, token;
 47100  		advance = 0;
 47101  		token = sliceType.nil;
 47102  		err = $ifaceNil;
 47103  		if (atEOF && (data.$length === 0)) {
 47104  			_tmp = 0;
 47105  			_tmp$1 = sliceType.nil;
 47106  			_tmp$2 = $ifaceNil;
 47107  			advance = _tmp;
 47108  			token = _tmp$1;
 47109  			err = _tmp$2;
 47110  			return [advance, token, err];
 47111  		}
 47112  		i = bytes.IndexByte(data, 10);
 47113  		if (i >= 0) {
 47114  			_tmp$3 = i + 1 >> 0;
 47115  			_tmp$4 = dropCR($subslice(data, 0, i));
 47116  			_tmp$5 = $ifaceNil;
 47117  			advance = _tmp$3;
 47118  			token = _tmp$4;
 47119  			err = _tmp$5;
 47120  			return [advance, token, err];
 47121  		}
 47122  		if (atEOF) {
 47123  			_tmp$6 = data.$length;
 47124  			_tmp$7 = dropCR(data);
 47125  			_tmp$8 = $ifaceNil;
 47126  			advance = _tmp$6;
 47127  			token = _tmp$7;
 47128  			err = _tmp$8;
 47129  			return [advance, token, err];
 47130  		}
 47131  		_tmp$9 = 0;
 47132  		_tmp$10 = sliceType.nil;
 47133  		_tmp$11 = $ifaceNil;
 47134  		advance = _tmp$9;
 47135  		token = _tmp$10;
 47136  		err = _tmp$11;
 47137  		return [advance, token, err];
 47138  	};
 47139  	$pkg.ScanLines = ScanLines;
 47140  	ptrType.methods = [{prop: "Size", name: "Size", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Reset", name: "Reset", pkg: "", typ: $funcType([io.Reader], [], false)}, {prop: "reset", name: "reset", pkg: "bufio", typ: $funcType([sliceType, io.Reader], [], false)}, {prop: "fill", name: "fill", pkg: "bufio", typ: $funcType([], [], false)}, {prop: "readErr", name: "readErr", pkg: "bufio", typ: $funcType([], [$error], false)}, {prop: "Peek", name: "Peek", pkg: "", typ: $funcType([$Int], [sliceType, $error], false)}, {prop: "Discard", name: "Discard", pkg: "", typ: $funcType([$Int], [$Int, $error], false)}, {prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType], [$Int, $error], false)}, {prop: "ReadByte", name: "ReadByte", pkg: "", typ: $funcType([], [$Uint8, $error], false)}, {prop: "UnreadByte", name: "UnreadByte", pkg: "", typ: $funcType([], [$error], false)}, {prop: "ReadRune", name: "ReadRune", pkg: "", typ: $funcType([], [$Int32, $Int, $error], false)}, {prop: "UnreadRune", name: "UnreadRune", pkg: "", typ: $funcType([], [$error], false)}, {prop: "Buffered", name: "Buffered", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "ReadSlice", name: "ReadSlice", pkg: "", typ: $funcType([$Uint8], [sliceType, $error], false)}, {prop: "ReadLine", name: "ReadLine", pkg: "", typ: $funcType([], [sliceType, $Bool, $error], false)}, {prop: "ReadBytes", name: "ReadBytes", pkg: "", typ: $funcType([$Uint8], [sliceType, $error], false)}, {prop: "ReadString", name: "ReadString", pkg: "", typ: $funcType([$Uint8], [$String, $error], false)}, {prop: "WriteTo", name: "WriteTo", pkg: "", typ: $funcType([io.Writer], [$Int64, $error], false)}, {prop: "writeBuf", name: "writeBuf", pkg: "bufio", typ: $funcType([io.Writer], [$Int64, $error], false)}];
 47141  	ptrType$1.methods = [{prop: "Size", name: "Size", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Reset", name: "Reset", pkg: "", typ: $funcType([io.Writer], [], false)}, {prop: "Flush", name: "Flush", pkg: "", typ: $funcType([], [$error], false)}, {prop: "Available", name: "Available", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Buffered", name: "Buffered", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Write", name: "Write", pkg: "", typ: $funcType([sliceType], [$Int, $error], false)}, {prop: "WriteByte", name: "WriteByte", pkg: "", typ: $funcType([$Uint8], [$error], false)}, {prop: "WriteRune", name: "WriteRune", pkg: "", typ: $funcType([$Int32], [$Int, $error], false)}, {prop: "WriteString", name: "WriteString", pkg: "", typ: $funcType([$String], [$Int, $error], false)}, {prop: "ReadFrom", name: "ReadFrom", pkg: "", typ: $funcType([io.Reader], [$Int64, $error], false)}];
 47142  	ptrType$2.methods = [{prop: "Err", name: "Err", pkg: "", typ: $funcType([], [$error], false)}, {prop: "Bytes", name: "Bytes", pkg: "", typ: $funcType([], [sliceType], false)}, {prop: "Text", name: "Text", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Scan", name: "Scan", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "advance", name: "advance", pkg: "bufio", typ: $funcType([$Int], [$Bool], false)}, {prop: "setErr", name: "setErr", pkg: "bufio", typ: $funcType([$error], [], false)}, {prop: "Buffer", name: "Buffer", pkg: "", typ: $funcType([sliceType, $Int], [], false)}, {prop: "Split", name: "Split", pkg: "", typ: $funcType([SplitFunc], [], false)}];
 47143  	Reader.init("bufio", [{prop: "buf", name: "buf", anonymous: false, exported: false, typ: sliceType, tag: ""}, {prop: "rd", name: "rd", anonymous: false, exported: false, typ: io.Reader, tag: ""}, {prop: "r", name: "r", anonymous: false, exported: false, typ: $Int, tag: ""}, {prop: "w", name: "w", anonymous: false, exported: false, typ: $Int, tag: ""}, {prop: "err", name: "err", anonymous: false, exported: false, typ: $error, tag: ""}, {prop: "lastByte", name: "lastByte", anonymous: false, exported: false, typ: $Int, tag: ""}, {prop: "lastRuneSize", name: "lastRuneSize", anonymous: false, exported: false, typ: $Int, tag: ""}]);
 47144  	Writer.init("bufio", [{prop: "err", name: "err", anonymous: false, exported: false, typ: $error, tag: ""}, {prop: "buf", name: "buf", anonymous: false, exported: false, typ: sliceType, tag: ""}, {prop: "n", name: "n", anonymous: false, exported: false, typ: $Int, tag: ""}, {prop: "wr", name: "wr", anonymous: false, exported: false, typ: io.Writer, tag: ""}]);
 47145  	ReadWriter.init("", [{prop: "Reader", name: "Reader", anonymous: true, exported: true, typ: ptrType, tag: ""}, {prop: "Writer", name: "Writer", anonymous: true, exported: true, typ: ptrType$1, tag: ""}]);
 47146  	Scanner.init("bufio", [{prop: "r", name: "r", anonymous: false, exported: false, typ: io.Reader, tag: ""}, {prop: "split", name: "split", anonymous: false, exported: false, typ: SplitFunc, tag: ""}, {prop: "maxTokenSize", name: "maxTokenSize", anonymous: false, exported: false, typ: $Int, tag: ""}, {prop: "token", name: "token", anonymous: false, exported: false, typ: sliceType, tag: ""}, {prop: "buf", name: "buf", anonymous: false, exported: false, typ: sliceType, tag: ""}, {prop: "start", name: "start", anonymous: false, exported: false, typ: $Int, tag: ""}, {prop: "end", name: "end", anonymous: false, exported: false, typ: $Int, tag: ""}, {prop: "err", name: "err", anonymous: false, exported: false, typ: $error, tag: ""}, {prop: "empties", name: "empties", anonymous: false, exported: false, typ: $Int, tag: ""}, {prop: "scanCalled", name: "scanCalled", anonymous: false, exported: false, typ: $Bool, tag: ""}, {prop: "done", name: "done", anonymous: false, exported: false, typ: $Bool, tag: ""}]);
 47147  	SplitFunc.init([sliceType, $Bool], [$Int, sliceType, $error], false);
 47148  	$init = function() {
 47149  		$pkg.$init = function() {};
 47150  		/* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 47151  		$r = bytes.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 47152  		$r = errors.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 47153  		$r = io.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 47154  		$r = utf8.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 47155  		$pkg.ErrInvalidUnreadByte = errors.New("bufio: invalid use of UnreadByte");
 47156  		$pkg.ErrInvalidUnreadRune = errors.New("bufio: invalid use of UnreadRune");
 47157  		$pkg.ErrBufferFull = errors.New("bufio: buffer full");
 47158  		$pkg.ErrNegativeCount = errors.New("bufio: negative count");
 47159  		errNegativeRead = errors.New("bufio: reader returned negative count from Read");
 47160  		errNegativeWrite = errors.New("bufio: writer returned negative count from Write");
 47161  		$pkg.ErrTooLong = errors.New("bufio.Scanner: token too long");
 47162  		$pkg.ErrNegativeAdvance = errors.New("bufio.Scanner: SplitFunc returns negative advance count");
 47163  		$pkg.ErrAdvanceTooFar = errors.New("bufio.Scanner: SplitFunc returns advance count beyond input");
 47164  		$pkg.ErrFinalToken = errors.New("final token");
 47165  		/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
 47166  	};
 47167  	$pkg.$init = $init;
 47168  	return $pkg;
 47169  })();
 47170  $packages["math/bits"] = (function() {
 47171  	var $pkg = {}, $init, deBruijn32tab, deBruijn64tab, rev8tab, len8tab, LeadingZeros, LeadingZeros64, TrailingZeros, TrailingZeros32, TrailingZeros64, Reverse8, Reverse16, Len, Len32, Len64;
 47172  	LeadingZeros = function(x) {
 47173  		var x;
 47174  		return 32 - Len(x) >> 0;
 47175  	};
 47176  	$pkg.LeadingZeros = LeadingZeros;
 47177  	LeadingZeros64 = function(x) {
 47178  		var x;
 47179  		return 64 - Len64(x) >> 0;
 47180  	};
 47181  	$pkg.LeadingZeros64 = LeadingZeros64;
 47182  	TrailingZeros = function(x) {
 47183  		var x;
 47184  		if (true) {
 47185  			return TrailingZeros32(((x >>> 0)));
 47186  		}
 47187  		return TrailingZeros64((new $Uint64(0, x)));
 47188  	};
 47189  	$pkg.TrailingZeros = TrailingZeros;
 47190  	TrailingZeros32 = function(x) {
 47191  		var x, x$1;
 47192  		if (x === 0) {
 47193  			return 32;
 47194  		}
 47195  		return (((x$1 = ($imul((((x & (-x >>> 0)) >>> 0)), 125613361) >>> 0) >>> 27 >>> 0, ((x$1 < 0 || x$1 >= deBruijn32tab.length) ? ($throwRuntimeError("index out of range"), undefined) : deBruijn32tab[x$1])) >> 0));
 47196  	};
 47197  	$pkg.TrailingZeros32 = TrailingZeros32;
 47198  	TrailingZeros64 = function(x) {
 47199  		var x, x$1, x$2;
 47200  		if ((x.$high === 0 && x.$low === 0)) {
 47201  			return 64;
 47202  		}
 47203  		return (((x$1 = $shiftRightUint64($mul64(((x$2 = new $Uint64(-x.$high, -x.$low), new $Uint64(x.$high & x$2.$high, (x.$low & x$2.$low) >>> 0))), new $Uint64(66559345, 3033172745)), 58), (($flatten64(x$1) < 0 || $flatten64(x$1) >= deBruijn64tab.length) ? ($throwRuntimeError("index out of range"), undefined) : deBruijn64tab[$flatten64(x$1)])) >> 0));
 47204  	};
 47205  	$pkg.TrailingZeros64 = TrailingZeros64;
 47206  	Reverse8 = function(x) {
 47207  		var x;
 47208  		return ((x < 0 || x >= rev8tab.length) ? ($throwRuntimeError("index out of range"), undefined) : rev8tab[x]);
 47209  	};
 47210  	$pkg.Reverse8 = Reverse8;
 47211  	Reverse16 = function(x) {
 47212  		var x, x$1, x$2;
 47213  		return ((((x$1 = x >>> 8 << 16 >>> 16, ((x$1 < 0 || x$1 >= rev8tab.length) ? ($throwRuntimeError("index out of range"), undefined) : rev8tab[x$1])) << 16 >>> 16)) | ((((x$2 = (x & 255) >>> 0, ((x$2 < 0 || x$2 >= rev8tab.length) ? ($throwRuntimeError("index out of range"), undefined) : rev8tab[x$2])) << 16 >>> 16)) << 8 << 16 >>> 16)) >>> 0;
 47214  	};
 47215  	$pkg.Reverse16 = Reverse16;
 47216  	Len = function(x) {
 47217  		var x;
 47218  		if (true) {
 47219  			return Len32(((x >>> 0)));
 47220  		}
 47221  		return Len64((new $Uint64(0, x)));
 47222  	};
 47223  	$pkg.Len = Len;
 47224  	Len32 = function(x) {
 47225  		var n, x, y, y$1;
 47226  		n = 0;
 47227  		if (x >= 65536) {
 47228  			x = (y = (16), y < 32 ? (x >>> y) : 0) >>> 0;
 47229  			n = 16;
 47230  		}
 47231  		if (x >= 256) {
 47232  			x = (y$1 = (8), y$1 < 32 ? (x >>> y$1) : 0) >>> 0;
 47233  			n = n + (8) >> 0;
 47234  		}
 47235  		n = n + ((((x < 0 || x >= len8tab.length) ? ($throwRuntimeError("index out of range"), undefined) : len8tab[x]) >> 0)) >> 0;
 47236  		return n;
 47237  	};
 47238  	$pkg.Len32 = Len32;
 47239  	Len64 = function(x) {
 47240  		var n, x;
 47241  		n = 0;
 47242  		if ((x.$high > 1 || (x.$high === 1 && x.$low >= 0))) {
 47243  			x = $shiftRightUint64(x, (32));
 47244  			n = 32;
 47245  		}
 47246  		if ((x.$high > 0 || (x.$high === 0 && x.$low >= 65536))) {
 47247  			x = $shiftRightUint64(x, (16));
 47248  			n = n + (16) >> 0;
 47249  		}
 47250  		if ((x.$high > 0 || (x.$high === 0 && x.$low >= 256))) {
 47251  			x = $shiftRightUint64(x, (8));
 47252  			n = n + (8) >> 0;
 47253  		}
 47254  		n = n + (((($flatten64(x) < 0 || $flatten64(x) >= len8tab.length) ? ($throwRuntimeError("index out of range"), undefined) : len8tab[$flatten64(x)]) >> 0)) >> 0;
 47255  		return n;
 47256  	};
 47257  	$pkg.Len64 = Len64;
 47258  	$init = function() {
 47259  		$pkg.$init = function() {};
 47260  		/* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 47261  		deBruijn32tab = $toNativeArray($kindUint8, [0, 1, 28, 2, 29, 14, 24, 3, 30, 22, 20, 15, 25, 17, 4, 8, 31, 27, 13, 23, 21, 19, 16, 7, 26, 12, 18, 6, 11, 5, 10, 9]);
 47262  		deBruijn64tab = $toNativeArray($kindUint8, [0, 1, 56, 2, 57, 49, 28, 3, 61, 58, 42, 50, 38, 29, 17, 4, 62, 47, 59, 36, 45, 43, 51, 22, 53, 39, 33, 30, 24, 18, 12, 5, 63, 55, 48, 27, 60, 41, 37, 16, 46, 35, 44, 21, 52, 32, 23, 11, 54, 26, 40, 15, 34, 20, 31, 10, 25, 14, 19, 9, 13, 8, 7, 6]);
 47263  		rev8tab = $toNativeArray($kindUint8, [0, 128, 64, 192, 32, 160, 96, 224, 16, 144, 80, 208, 48, 176, 112, 240, 8, 136, 72, 200, 40, 168, 104, 232, 24, 152, 88, 216, 56, 184, 120, 248, 4, 132, 68, 196, 36, 164, 100, 228, 20, 148, 84, 212, 52, 180, 116, 244, 12, 140, 76, 204, 44, 172, 108, 236, 28, 156, 92, 220, 60, 188, 124, 252, 2, 130, 66, 194, 34, 162, 98, 226, 18, 146, 82, 210, 50, 178, 114, 242, 10, 138, 74, 202, 42, 170, 106, 234, 26, 154, 90, 218, 58, 186, 122, 250, 6, 134, 70, 198, 38, 166, 102, 230, 22, 150, 86, 214, 54, 182, 118, 246, 14, 142, 78, 206, 46, 174, 110, 238, 30, 158, 94, 222, 62, 190, 126, 254, 1, 129, 65, 193, 33, 161, 97, 225, 17, 145, 81, 209, 49, 177, 113, 241, 9, 137, 73, 201, 41, 169, 105, 233, 25, 153, 89, 217, 57, 185, 121, 249, 5, 133, 69, 197, 37, 165, 101, 229, 21, 149, 85, 213, 53, 181, 117, 245, 13, 141, 77, 205, 45, 173, 109, 237, 29, 157, 93, 221, 61, 189, 125, 253, 3, 131, 67, 195, 35, 163, 99, 227, 19, 147, 83, 211, 51, 179, 115, 243, 11, 139, 75, 203, 43, 171, 107, 235, 27, 155, 91, 219, 59, 187, 123, 251, 7, 135, 71, 199, 39, 167, 103, 231, 23, 151, 87, 215, 55, 183, 119, 247, 15, 143, 79, 207, 47, 175, 111, 239, 31, 159, 95, 223, 63, 191, 127, 255]);
 47264  		len8tab = $toNativeArray($kindUint8, [0, 1, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8]);
 47265  		/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
 47266  	};
 47267  	$pkg.$init = $init;
 47268  	return $pkg;
 47269  })();
 47270  $packages["compress/flate"] = (function() {
 47271  	var $pkg = {}, $init, bufio, fmt, io, math, bits, sort, strconv, sync, dictDecoder, huffmanBitWriter, hcode, huffmanEncoder, literalNode, levelInfo, byLiteral, byFreq, CorruptInputError, InternalError, Resetter, huffmanDecoder, Reader, decompressor, token, ptrType, arrayType, sliceType, sliceType$1, sliceType$4, sliceType$5, ptrType$3, arrayType$5, arrayType$6, sliceType$7, sliceType$8, sliceType$9, arrayType$7, arrayType$8, arrayType$9, arrayType$10, ptrType$7, ptrType$8, arrayType$11, ptrType$9, sliceType$10, ptrType$10, arrayType$12, arrayType$13, ptrType$11, arrayType$14, ptrType$12, arrayType$15, ptrType$13, ptrType$14, funcType$3, huffOffset, fixedLiteralEncoding, fixedOffsetEncoding, fixedOnce, fixedHuffmanDecoder, fixedHuffmanDecoder$24ptr, codeOrder, newHuffmanBitWriter, init, maxNode, newHuffmanEncoder, generateFixedLiteralEncoding, generateFixedOffsetEncoding, reverseBits, makeReader, fixedHuffmanDecoderInit, NewReader;
 47272  	bufio = $packages["bufio"];
 47273  	fmt = $packages["fmt"];
 47274  	io = $packages["io"];
 47275  	math = $packages["math"];
 47276  	bits = $packages["math/bits"];
 47277  	sort = $packages["sort"];
 47278  	strconv = $packages["strconv"];
 47279  	sync = $packages["sync"];
 47280  	dictDecoder = $pkg.dictDecoder = $newType(0, $kindStruct, "flate.dictDecoder", true, "compress/flate", false, function(hist_, wrPos_, rdPos_, full_) {
 47281  		this.$val = this;
 47282  		if (arguments.length === 0) {
 47283  			this.hist = sliceType$4.nil;
 47284  			this.wrPos = 0;
 47285  			this.rdPos = 0;
 47286  			this.full = false;
 47287  			return;
 47288  		}
 47289  		this.hist = hist_;
 47290  		this.wrPos = wrPos_;
 47291  		this.rdPos = rdPos_;
 47292  		this.full = full_;
 47293  	});
 47294  	huffmanBitWriter = $pkg.huffmanBitWriter = $newType(0, $kindStruct, "flate.huffmanBitWriter", true, "compress/flate", false, function(writer_, bits_, nbits_, bytes_, codegenFreq_, nbytes_, literalFreq_, offsetFreq_, codegen_, literalEncoding_, offsetEncoding_, codegenEncoding_, err_) {
 47295  		this.$val = this;
 47296  		if (arguments.length === 0) {
 47297  			this.writer = $ifaceNil;
 47298  			this.bits = new $Uint64(0, 0);
 47299  			this.nbits = 0;
 47300  			this.bytes = arrayType$5.zero();
 47301  			this.codegenFreq = arrayType$6.zero();
 47302  			this.nbytes = 0;
 47303  			this.literalFreq = sliceType$7.nil;
 47304  			this.offsetFreq = sliceType$7.nil;
 47305  			this.codegen = sliceType$4.nil;
 47306  			this.literalEncoding = ptrType.nil;
 47307  			this.offsetEncoding = ptrType.nil;
 47308  			this.codegenEncoding = ptrType.nil;
 47309  			this.err = $ifaceNil;
 47310  			return;
 47311  		}
 47312  		this.writer = writer_;
 47313  		this.bits = bits_;
 47314  		this.nbits = nbits_;
 47315  		this.bytes = bytes_;
 47316  		this.codegenFreq = codegenFreq_;
 47317  		this.nbytes = nbytes_;
 47318  		this.literalFreq = literalFreq_;
 47319  		this.offsetFreq = offsetFreq_;
 47320  		this.codegen = codegen_;
 47321  		this.literalEncoding = literalEncoding_;
 47322  		this.offsetEncoding = offsetEncoding_;
 47323  		this.codegenEncoding = codegenEncoding_;
 47324  		this.err = err_;
 47325  	});
 47326  	hcode = $pkg.hcode = $newType(0, $kindStruct, "flate.hcode", true, "compress/flate", false, function(code_, len_) {
 47327  		this.$val = this;
 47328  		if (arguments.length === 0) {
 47329  			this.code = 0;
 47330  			this.len = 0;
 47331  			return;
 47332  		}
 47333  		this.code = code_;
 47334  		this.len = len_;
 47335  	});
 47336  	huffmanEncoder = $pkg.huffmanEncoder = $newType(0, $kindStruct, "flate.huffmanEncoder", true, "compress/flate", false, function(codes_, freqcache_, bitCount_, lns_, lfs_) {
 47337  		this.$val = this;
 47338  		if (arguments.length === 0) {
 47339  			this.codes = sliceType$8.nil;
 47340  			this.freqcache = sliceType$9.nil;
 47341  			this.bitCount = arrayType$7.zero();
 47342  			this.lns = byLiteral.nil;
 47343  			this.lfs = byFreq.nil;
 47344  			return;
 47345  		}
 47346  		this.codes = codes_;
 47347  		this.freqcache = freqcache_;
 47348  		this.bitCount = bitCount_;
 47349  		this.lns = lns_;
 47350  		this.lfs = lfs_;
 47351  	});
 47352  	literalNode = $pkg.literalNode = $newType(0, $kindStruct, "flate.literalNode", true, "compress/flate", false, function(literal_, freq_) {
 47353  		this.$val = this;
 47354  		if (arguments.length === 0) {
 47355  			this.literal = 0;
 47356  			this.freq = 0;
 47357  			return;
 47358  		}
 47359  		this.literal = literal_;
 47360  		this.freq = freq_;
 47361  	});
 47362  	levelInfo = $pkg.levelInfo = $newType(0, $kindStruct, "flate.levelInfo", true, "compress/flate", false, function(level_, lastFreq_, nextCharFreq_, nextPairFreq_, needed_) {
 47363  		this.$val = this;
 47364  		if (arguments.length === 0) {
 47365  			this.level = 0;
 47366  			this.lastFreq = 0;
 47367  			this.nextCharFreq = 0;
 47368  			this.nextPairFreq = 0;
 47369  			this.needed = 0;
 47370  			return;
 47371  		}
 47372  		this.level = level_;
 47373  		this.lastFreq = lastFreq_;
 47374  		this.nextCharFreq = nextCharFreq_;
 47375  		this.nextPairFreq = nextPairFreq_;
 47376  		this.needed = needed_;
 47377  	});
 47378  	byLiteral = $pkg.byLiteral = $newType(12, $kindSlice, "flate.byLiteral", true, "compress/flate", false, null);
 47379  	byFreq = $pkg.byFreq = $newType(12, $kindSlice, "flate.byFreq", true, "compress/flate", false, null);
 47380  	CorruptInputError = $pkg.CorruptInputError = $newType(8, $kindInt64, "flate.CorruptInputError", true, "compress/flate", true, null);
 47381  	InternalError = $pkg.InternalError = $newType(8, $kindString, "flate.InternalError", true, "compress/flate", true, null);
 47382  	Resetter = $pkg.Resetter = $newType(8, $kindInterface, "flate.Resetter", true, "compress/flate", true, null);
 47383  	huffmanDecoder = $pkg.huffmanDecoder = $newType(0, $kindStruct, "flate.huffmanDecoder", true, "compress/flate", false, function(min_, chunks_, links_, linkMask_) {
 47384  		this.$val = this;
 47385  		if (arguments.length === 0) {
 47386  			this.min = 0;
 47387  			this.chunks = arrayType.zero();
 47388  			this.links = sliceType$1.nil;
 47389  			this.linkMask = 0;
 47390  			return;
 47391  		}
 47392  		this.min = min_;
 47393  		this.chunks = chunks_;
 47394  		this.links = links_;
 47395  		this.linkMask = linkMask_;
 47396  	});
 47397  	Reader = $pkg.Reader = $newType(8, $kindInterface, "flate.Reader", true, "compress/flate", true, null);
 47398  	decompressor = $pkg.decompressor = $newType(0, $kindStruct, "flate.decompressor", true, "compress/flate", false, function(r_, roffset_, b_, nb_, h1_, h2_, bits_, codebits_, dict_, buf_, step_, stepState_, final$12_, err_, toRead_, hl_, hd_, copyLen_, copyDist_) {
 47399  		this.$val = this;
 47400  		if (arguments.length === 0) {
 47401  			this.r = $ifaceNil;
 47402  			this.roffset = new $Int64(0, 0);
 47403  			this.b = 0;
 47404  			this.nb = 0;
 47405  			this.h1 = new huffmanDecoder.ptr(0, arrayType.zero(), sliceType$1.nil, 0);
 47406  			this.h2 = new huffmanDecoder.ptr(0, arrayType.zero(), sliceType$1.nil, 0);
 47407  			this.bits = ptrType$11.nil;
 47408  			this.codebits = ptrType$12.nil;
 47409  			this.dict = new dictDecoder.ptr(sliceType$4.nil, 0, 0, false);
 47410  			this.buf = arrayType$15.zero();
 47411  			this.step = $throwNilPointerError;
 47412  			this.stepState = 0;
 47413  			this.final$12 = false;
 47414  			this.err = $ifaceNil;
 47415  			this.toRead = sliceType$4.nil;
 47416  			this.hl = ptrType$9.nil;
 47417  			this.hd = ptrType$9.nil;
 47418  			this.copyLen = 0;
 47419  			this.copyDist = 0;
 47420  			return;
 47421  		}
 47422  		this.r = r_;
 47423  		this.roffset = roffset_;
 47424  		this.b = b_;
 47425  		this.nb = nb_;
 47426  		this.h1 = h1_;
 47427  		this.h2 = h2_;
 47428  		this.bits = bits_;
 47429  		this.codebits = codebits_;
 47430  		this.dict = dict_;
 47431  		this.buf = buf_;
 47432  		this.step = step_;
 47433  		this.stepState = stepState_;
 47434  		this.final$12 = final$12_;
 47435  		this.err = err_;
 47436  		this.toRead = toRead_;
 47437  		this.hl = hl_;
 47438  		this.hd = hd_;
 47439  		this.copyLen = copyLen_;
 47440  		this.copyDist = copyDist_;
 47441  	});
 47442  	token = $pkg.token = $newType(4, $kindUint32, "flate.token", true, "compress/flate", false, null);
 47443  	ptrType = $ptrType(huffmanEncoder);
 47444  	arrayType = $arrayType($Uint32, 512);
 47445  	sliceType = $sliceType($Uint32);
 47446  	sliceType$1 = $sliceType(sliceType);
 47447  	sliceType$4 = $sliceType($Uint8);
 47448  	sliceType$5 = $sliceType(token);
 47449  	ptrType$3 = $ptrType(huffmanBitWriter);
 47450  	arrayType$5 = $arrayType($Uint8, 248);
 47451  	arrayType$6 = $arrayType($Int32, 19);
 47452  	sliceType$7 = $sliceType($Int32);
 47453  	sliceType$8 = $sliceType(hcode);
 47454  	sliceType$9 = $sliceType(literalNode);
 47455  	arrayType$7 = $arrayType($Int32, 17);
 47456  	arrayType$8 = $arrayType(levelInfo, 16);
 47457  	arrayType$9 = $arrayType($Int32, 16);
 47458  	arrayType$10 = $arrayType(arrayType$9, 16);
 47459  	ptrType$7 = $ptrType(byLiteral);
 47460  	ptrType$8 = $ptrType(byFreq);
 47461  	arrayType$11 = $arrayType($Int, 16);
 47462  	ptrType$9 = $ptrType(huffmanDecoder);
 47463  	sliceType$10 = $sliceType($Int);
 47464  	ptrType$10 = $ptrType(decompressor);
 47465  	arrayType$12 = $arrayType($Int, 288);
 47466  	arrayType$13 = $arrayType($Int, 316);
 47467  	ptrType$11 = $ptrType(arrayType$13);
 47468  	arrayType$14 = $arrayType($Int, 19);
 47469  	ptrType$12 = $ptrType(arrayType$14);
 47470  	arrayType$15 = $arrayType($Uint8, 4);
 47471  	ptrType$13 = $ptrType(dictDecoder);
 47472  	ptrType$14 = $ptrType(hcode);
 47473  	funcType$3 = $funcType([ptrType$10], [], false);
 47474  	dictDecoder.ptr.prototype.init = function(size, dict) {
 47475  		var dd, dict, size;
 47476  		dd = this;
 47477  		dictDecoder.copy(dd, new dictDecoder.ptr(dd.hist, 0, 0, false));
 47478  		if (dd.hist.$capacity < size) {
 47479  			dd.hist = $makeSlice(sliceType$4, size);
 47480  		}
 47481  		dd.hist = $subslice(dd.hist, 0, size);
 47482  		if (dict.$length > dd.hist.$length) {
 47483  			dict = $subslice(dict, (dict.$length - dd.hist.$length >> 0));
 47484  		}
 47485  		dd.wrPos = $copySlice(dd.hist, dict);
 47486  		if (dd.wrPos === dd.hist.$length) {
 47487  			dd.wrPos = 0;
 47488  			dd.full = true;
 47489  		}
 47490  		dd.rdPos = dd.wrPos;
 47491  	};
 47492  	dictDecoder.prototype.init = function(size, dict) { return this.$val.init(size, dict); };
 47493  	dictDecoder.ptr.prototype.histSize = function() {
 47494  		var dd;
 47495  		dd = this;
 47496  		if (dd.full) {
 47497  			return dd.hist.$length;
 47498  		}
 47499  		return dd.wrPos;
 47500  	};
 47501  	dictDecoder.prototype.histSize = function() { return this.$val.histSize(); };
 47502  	dictDecoder.ptr.prototype.availRead = function() {
 47503  		var dd;
 47504  		dd = this;
 47505  		return dd.wrPos - dd.rdPos >> 0;
 47506  	};
 47507  	dictDecoder.prototype.availRead = function() { return this.$val.availRead(); };
 47508  	dictDecoder.ptr.prototype.availWrite = function() {
 47509  		var dd;
 47510  		dd = this;
 47511  		return dd.hist.$length - dd.wrPos >> 0;
 47512  	};
 47513  	dictDecoder.prototype.availWrite = function() { return this.$val.availWrite(); };
 47514  	dictDecoder.ptr.prototype.writeSlice = function() {
 47515  		var dd;
 47516  		dd = this;
 47517  		return $subslice(dd.hist, dd.wrPos);
 47518  	};
 47519  	dictDecoder.prototype.writeSlice = function() { return this.$val.writeSlice(); };
 47520  	dictDecoder.ptr.prototype.writeMark = function(cnt) {
 47521  		var cnt, dd;
 47522  		dd = this;
 47523  		dd.wrPos = dd.wrPos + (cnt) >> 0;
 47524  	};
 47525  	dictDecoder.prototype.writeMark = function(cnt) { return this.$val.writeMark(cnt); };
 47526  	dictDecoder.ptr.prototype.writeByte = function(c) {
 47527  		var c, dd, x, x$1;
 47528  		dd = this;
 47529  		(x = dd.hist, x$1 = dd.wrPos, ((x$1 < 0 || x$1 >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + x$1] = c));
 47530  		dd.wrPos = dd.wrPos + (1) >> 0;
 47531  	};
 47532  	dictDecoder.prototype.writeByte = function(c) { return this.$val.writeByte(c); };
 47533  	dictDecoder.ptr.prototype.writeCopy = function(dist, length) {
 47534  		var dd, dist, dstBase, dstPos, endPos, length, srcPos;
 47535  		dd = this;
 47536  		dstBase = dd.wrPos;
 47537  		dstPos = dstBase;
 47538  		srcPos = dstPos - dist >> 0;
 47539  		endPos = dstPos + length >> 0;
 47540  		if (endPos > dd.hist.$length) {
 47541  			endPos = dd.hist.$length;
 47542  		}
 47543  		if (srcPos < 0) {
 47544  			srcPos = srcPos + (dd.hist.$length) >> 0;
 47545  			dstPos = dstPos + ($copySlice($subslice(dd.hist, dstPos, endPos), $subslice(dd.hist, srcPos))) >> 0;
 47546  			srcPos = 0;
 47547  		}
 47548  		while (true) {
 47549  			if (!(dstPos < endPos)) { break; }
 47550  			dstPos = dstPos + ($copySlice($subslice(dd.hist, dstPos, endPos), $subslice(dd.hist, srcPos, dstPos))) >> 0;
 47551  		}
 47552  		dd.wrPos = dstPos;
 47553  		return dstPos - dstBase >> 0;
 47554  	};
 47555  	dictDecoder.prototype.writeCopy = function(dist, length) { return this.$val.writeCopy(dist, length); };
 47556  	dictDecoder.ptr.prototype.tryWriteCopy = function(dist, length) {
 47557  		var dd, dist, dstBase, dstPos, endPos, length, srcPos, $s;
 47558  		/* */ $s = 0; s: while (true) { switch ($s) { case 0:
 47559  		dd = this;
 47560  		dstPos = dd.wrPos;
 47561  		endPos = dstPos + length >> 0;
 47562  		if (dstPos < dist || endPos > dd.hist.$length) {
 47563  			$s = -1; return 0;
 47564  		}
 47565  		dstBase = dstPos;
 47566  		srcPos = dstPos - dist >> 0;
 47567  		/* loop: */ case 1:
 47568  		dstPos = dstPos + ($copySlice($subslice(dd.hist, dstPos, endPos), $subslice(dd.hist, srcPos, dstPos))) >> 0;
 47569  		/* */ if (dstPos < endPos) { $s = 2; continue; }
 47570  		/* */ $s = 3; continue;
 47571  		/* if (dstPos < endPos) { */ case 2:
 47572  			/* goto loop */ $s = 1; continue;
 47573  		/* } */ case 3:
 47574  		dd.wrPos = dstPos;
 47575  		$s = -1; return dstPos - dstBase >> 0;
 47576  		/* */ } return; }
 47577  	};
 47578  	dictDecoder.prototype.tryWriteCopy = function(dist, length) { return this.$val.tryWriteCopy(dist, length); };
 47579  	dictDecoder.ptr.prototype.readFlush = function() {
 47580  		var _tmp, _tmp$1, dd, toRead;
 47581  		dd = this;
 47582  		toRead = $subslice(dd.hist, dd.rdPos, dd.wrPos);
 47583  		dd.rdPos = dd.wrPos;
 47584  		if (dd.wrPos === dd.hist.$length) {
 47585  			_tmp = 0;
 47586  			_tmp$1 = 0;
 47587  			dd.wrPos = _tmp;
 47588  			dd.rdPos = _tmp$1;
 47589  			dd.full = true;
 47590  		}
 47591  		return toRead;
 47592  	};
 47593  	dictDecoder.prototype.readFlush = function() { return this.$val.readFlush(); };
 47594  	newHuffmanBitWriter = function(w) {
 47595  		var w;
 47596  		return new huffmanBitWriter.ptr(w, new $Uint64(0, 0), 0, arrayType$5.zero(), arrayType$6.zero(), 0, $makeSlice(sliceType$7, 286), $makeSlice(sliceType$7, 30), $makeSlice(sliceType$4, 317), newHuffmanEncoder(286), newHuffmanEncoder(30), newHuffmanEncoder(19), $ifaceNil);
 47597  	};
 47598  	init = function() {
 47599  		var w, x, $s, $r;
 47600  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; w = $f.w; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 47601  		w = newHuffmanBitWriter($ifaceNil);
 47602  		(x = w.offsetFreq, (0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0] = 1));
 47603  		huffOffset = newHuffmanEncoder(30);
 47604  		$r = huffOffset.generate(w.offsetFreq, 15); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 47605  		$s = -1; return;
 47606  		/* */ } return; } if ($f === undefined) { $f = { $blk: init }; } $f.w = w; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
 47607  	};
 47608  	hcode.ptr.prototype.set = function(code, length) {
 47609  		var code, h, length;
 47610  		h = this;
 47611  		h.len = length;
 47612  		h.code = code;
 47613  	};
 47614  	hcode.prototype.set = function(code, length) { return this.$val.set(code, length); };
 47615  	maxNode = function() {
 47616  		return new literalNode.ptr(65535, 2147483647);
 47617  	};
 47618  	newHuffmanEncoder = function(size) {
 47619  		var size;
 47620  		return new huffmanEncoder.ptr($makeSlice(sliceType$8, size), sliceType$9.nil, arrayType$7.zero(), byLiteral.nil, byFreq.nil);
 47621  	};
 47622  	generateFixedLiteralEncoding = function() {
 47623  		var bits$1, ch, codes, h, size;
 47624  		h = newHuffmanEncoder(286);
 47625  		codes = h.codes;
 47626  		ch = 0;
 47627  		ch = 0;
 47628  		while (true) {
 47629  			if (!(ch < 286)) { break; }
 47630  			bits$1 = 0;
 47631  			size = 0;
 47632  			switch (0) { default:
 47633  				if (ch < 144) {
 47634  					bits$1 = ch + 48 << 16 >>> 16;
 47635  					size = 8;
 47636  					break;
 47637  				} else if (ch < 256) {
 47638  					bits$1 = (ch + 400 << 16 >>> 16) - 144 << 16 >>> 16;
 47639  					size = 9;
 47640  					break;
 47641  				} else if (ch < 280) {
 47642  					bits$1 = ch - 256 << 16 >>> 16;
 47643  					size = 7;
 47644  					break;
 47645  				} else {
 47646  					bits$1 = (ch + 192 << 16 >>> 16) - 280 << 16 >>> 16;
 47647  					size = 8;
 47648  				}
 47649  			}
 47650  			hcode.copy(((ch < 0 || ch >= codes.$length) ? ($throwRuntimeError("index out of range"), undefined) : codes.$array[codes.$offset + ch]), new hcode.ptr(reverseBits(bits$1, ((size << 24 >>> 24))), size));
 47651  			ch = ch + (1) << 16 >>> 16;
 47652  		}
 47653  		return h;
 47654  	};
 47655  	generateFixedOffsetEncoding = function() {
 47656  		var _i, _ref, ch, codes, h;
 47657  		h = newHuffmanEncoder(30);
 47658  		codes = h.codes;
 47659  		_ref = codes;
 47660  		_i = 0;
 47661  		while (true) {
 47662  			if (!(_i < _ref.$length)) { break; }
 47663  			ch = _i;
 47664  			hcode.copy(((ch < 0 || ch >= codes.$length) ? ($throwRuntimeError("index out of range"), undefined) : codes.$array[codes.$offset + ch]), new hcode.ptr(reverseBits(((ch << 16 >>> 16)), 5), 5));
 47665  			_i++;
 47666  		}
 47667  		return h;
 47668  	};
 47669  	huffmanEncoder.ptr.prototype.bitCounts = function(list, maxBits) {
 47670  		var bitCount, bits$1, counts, h, l, leafCounts, level, level$1, level$2, levels$1, list, maxBits, n, n$1, prevFreq, x, x$1, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9;
 47671  		h = this;
 47672  		if (maxBits >= 16) {
 47673  			$panic(new $String("flate: maxBits too large"));
 47674  		}
 47675  		n = ((list.$length >> 0));
 47676  		list = $subslice(list, 0, (n + 1 >> 0));
 47677  		literalNode.copy(((n < 0 || n >= list.$length) ? ($throwRuntimeError("index out of range"), undefined) : list.$array[list.$offset + n]), maxNode());
 47678  		if (maxBits > (n - 1 >> 0)) {
 47679  			maxBits = n - 1 >> 0;
 47680  		}
 47681  		levels$1 = arrayType$8.zero();
 47682  		leafCounts = arrayType$10.zero();
 47683  		level = 1;
 47684  		while (true) {
 47685  			if (!(level <= maxBits)) { break; }
 47686  			levelInfo.copy(((level < 0 || level >= levels$1.length) ? ($throwRuntimeError("index out of range"), undefined) : levels$1[level]), new levelInfo.ptr(level, (1 >= list.$length ? ($throwRuntimeError("index out of range"), undefined) : list.$array[list.$offset + 1]).freq, (2 >= list.$length ? ($throwRuntimeError("index out of range"), undefined) : list.$array[list.$offset + 2]).freq, (0 >= list.$length ? ($throwRuntimeError("index out of range"), undefined) : list.$array[list.$offset + 0]).freq + (1 >= list.$length ? ($throwRuntimeError("index out of range"), undefined) : list.$array[list.$offset + 1]).freq >> 0, 0));
 47687  			(x = ((level < 0 || level >= leafCounts.length) ? ($throwRuntimeError("index out of range"), undefined) : leafCounts[level]), ((level < 0 || level >= x.length) ? ($throwRuntimeError("index out of range"), undefined) : x[level] = 2));
 47688  			if (level === 1) {
 47689  				((level < 0 || level >= levels$1.length) ? ($throwRuntimeError("index out of range"), undefined) : levels$1[level]).nextPairFreq = 2147483647;
 47690  			}
 47691  			level = level + (1) >> 0;
 47692  		}
 47693  		((maxBits < 0 || maxBits >= levels$1.length) ? ($throwRuntimeError("index out of range"), undefined) : levels$1[maxBits]).needed = ($imul(2, n)) - 4 >> 0;
 47694  		level$1 = maxBits;
 47695  		while (true) {
 47696  			l = ((level$1 < 0 || level$1 >= levels$1.length) ? ($throwRuntimeError("index out of range"), undefined) : levels$1[level$1]);
 47697  			if ((l.nextPairFreq === 2147483647) && (l.nextCharFreq === 2147483647)) {
 47698  				l.needed = 0;
 47699  				(x$1 = level$1 + 1 >> 0, ((x$1 < 0 || x$1 >= levels$1.length) ? ($throwRuntimeError("index out of range"), undefined) : levels$1[x$1])).nextPairFreq = 2147483647;
 47700  				level$1 = level$1 + (1) >> 0;
 47701  				continue;
 47702  			}
 47703  			prevFreq = l.lastFreq;
 47704  			if (l.nextCharFreq < l.nextPairFreq) {
 47705  				n$1 = (x$2 = ((level$1 < 0 || level$1 >= leafCounts.length) ? ($throwRuntimeError("index out of range"), undefined) : leafCounts[level$1]), ((level$1 < 0 || level$1 >= x$2.length) ? ($throwRuntimeError("index out of range"), undefined) : x$2[level$1])) + 1 >> 0;
 47706  				l.lastFreq = l.nextCharFreq;
 47707  				(x$3 = ((level$1 < 0 || level$1 >= leafCounts.length) ? ($throwRuntimeError("index out of range"), undefined) : leafCounts[level$1]), ((level$1 < 0 || level$1 >= x$3.length) ? ($throwRuntimeError("index out of range"), undefined) : x$3[level$1] = n$1));
 47708  				l.nextCharFreq = ((n$1 < 0 || n$1 >= list.$length) ? ($throwRuntimeError("index out of range"), undefined) : list.$array[list.$offset + n$1]).freq;
 47709  			} else {
 47710  				l.lastFreq = l.nextPairFreq;
 47711  				$copySlice($subslice(new sliceType$7(((level$1 < 0 || level$1 >= leafCounts.length) ? ($throwRuntimeError("index out of range"), undefined) : leafCounts[level$1])), 0, level$1), $subslice(new sliceType$7((x$4 = level$1 - 1 >> 0, ((x$4 < 0 || x$4 >= leafCounts.length) ? ($throwRuntimeError("index out of range"), undefined) : leafCounts[x$4]))), 0, level$1));
 47712  				(x$5 = l.level - 1 >> 0, ((x$5 < 0 || x$5 >= levels$1.length) ? ($throwRuntimeError("index out of range"), undefined) : levels$1[x$5])).needed = 2;
 47713  			}
 47714  			l.needed = l.needed - (1) >> 0;
 47715  			if (l.needed === 0) {
 47716  				if (l.level === maxBits) {
 47717  					break;
 47718  				}
 47719  				(x$6 = l.level + 1 >> 0, ((x$6 < 0 || x$6 >= levels$1.length) ? ($throwRuntimeError("index out of range"), undefined) : levels$1[x$6])).nextPairFreq = prevFreq + l.lastFreq >> 0;
 47720  				level$1 = level$1 + (1) >> 0;
 47721  			} else {
 47722  				while (true) {
 47723  					if (!((x$7 = level$1 - 1 >> 0, ((x$7 < 0 || x$7 >= levels$1.length) ? ($throwRuntimeError("index out of range"), undefined) : levels$1[x$7])).needed > 0)) { break; }
 47724  					level$1 = level$1 - (1) >> 0;
 47725  				}
 47726  			}
 47727  		}
 47728  		if (!(((x$8 = ((maxBits < 0 || maxBits >= leafCounts.length) ? ($throwRuntimeError("index out of range"), undefined) : leafCounts[maxBits]), ((maxBits < 0 || maxBits >= x$8.length) ? ($throwRuntimeError("index out of range"), undefined) : x$8[maxBits])) === n))) {
 47729  			$panic(new $String("leafCounts[maxBits][maxBits] != n"));
 47730  		}
 47731  		bitCount = $subslice(new sliceType$7(h.bitCount), 0, (maxBits + 1 >> 0));
 47732  		bits$1 = 1;
 47733  		counts = ((maxBits < 0 || maxBits >= leafCounts.length) ? ($throwRuntimeError("index out of range"), undefined) : leafCounts[maxBits]);
 47734  		level$2 = maxBits;
 47735  		while (true) {
 47736  			if (!(level$2 > 0)) { break; }
 47737  			((bits$1 < 0 || bits$1 >= bitCount.$length) ? ($throwRuntimeError("index out of range"), undefined) : bitCount.$array[bitCount.$offset + bits$1] = ((counts.nilCheck, ((level$2 < 0 || level$2 >= counts.length) ? ($throwRuntimeError("index out of range"), undefined) : counts[level$2])) - (x$9 = level$2 - 1 >> 0, (counts.nilCheck, ((x$9 < 0 || x$9 >= counts.length) ? ($throwRuntimeError("index out of range"), undefined) : counts[x$9]))) >> 0));
 47738  			bits$1 = bits$1 + (1) >> 0;
 47739  			level$2 = level$2 - (1) >> 0;
 47740  		}
 47741  		return bitCount;
 47742  	};
 47743  	huffmanEncoder.prototype.bitCounts = function(list, maxBits) { return this.$val.bitCounts(list, maxBits); };
 47744  	huffmanEncoder.ptr.prototype.assignEncodingAndSize = function(bitCount, list) {
 47745  		var _i, _i$1, _ref, _ref$1, bitCount, bits$1, chunk, code, h, list, n, node, x, x$1, y, $s, $r;
 47746  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _i = $f._i; _i$1 = $f._i$1; _ref = $f._ref; _ref$1 = $f._ref$1; bitCount = $f.bitCount; bits$1 = $f.bits$1; chunk = $f.chunk; code = $f.code; h = $f.h; list = $f.list; n = $f.n; node = $f.node; x = $f.x; x$1 = $f.x$1; y = $f.y; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 47747  		h = this;
 47748  		code = 0;
 47749  		_ref = bitCount;
 47750  		_i = 0;
 47751  		/* while (true) { */ case 1:
 47752  			/* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; }
 47753  			n = _i;
 47754  			bits$1 = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
 47755  			code = (y = (1), y < 32 ? (code << y) : 0) << 16 >>> 16;
 47756  			/* */ if ((n === 0) || (bits$1 === 0)) { $s = 3; continue; }
 47757  			/* */ $s = 4; continue;
 47758  			/* if ((n === 0) || (bits$1 === 0)) { */ case 3:
 47759  				_i++;
 47760  				/* continue; */ $s = 1; continue;
 47761  			/* } */ case 4:
 47762  			chunk = $subslice(list, (list.$length - ((bits$1 >> 0)) >> 0));
 47763  			$r = (h.$ptr_lns || (h.$ptr_lns = new ptrType$7(function() { return this.$target.lns; }, function($v) { this.$target.lns = $v; }, h))).sort(chunk); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 47764  			_ref$1 = chunk;
 47765  			_i$1 = 0;
 47766  			while (true) {
 47767  				if (!(_i$1 < _ref$1.$length)) { break; }
 47768  				node = $clone(((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]), literalNode);
 47769  				hcode.copy((x = h.codes, x$1 = node.literal, ((x$1 < 0 || x$1 >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + x$1])), new hcode.ptr(reverseBits(code, ((n << 24 >>> 24))), ((n << 16 >>> 16))));
 47770  				code = code + (1) << 16 >>> 16;
 47771  				_i$1++;
 47772  			}
 47773  			list = $subslice(list, 0, (list.$length - ((bits$1 >> 0)) >> 0));
 47774  			_i++;
 47775  		/* } */ $s = 1; continue; case 2:
 47776  		$s = -1; return;
 47777  		/* */ } return; } if ($f === undefined) { $f = { $blk: huffmanEncoder.ptr.prototype.assignEncodingAndSize }; } $f._i = _i; $f._i$1 = _i$1; $f._ref = _ref; $f._ref$1 = _ref$1; $f.bitCount = bitCount; $f.bits$1 = bits$1; $f.chunk = chunk; $f.code = code; $f.h = h; $f.list = list; $f.n = n; $f.node = node; $f.x = x; $f.x$1 = x$1; $f.y = y; $f.$s = $s; $f.$r = $r; return $f;
 47778  	};
 47779  	huffmanEncoder.prototype.assignEncodingAndSize = function(bitCount, list) { return this.$val.assignEncodingAndSize(bitCount, list); };
 47780  	huffmanEncoder.ptr.prototype.generate = function(freq, maxBits) {
 47781  		var _i, _i$1, _ref, _ref$1, bitCount, count, f, freq, h, i, i$1, list, maxBits, node, x, x$1, x$2, x$3, $s, $r;
 47782  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _i = $f._i; _i$1 = $f._i$1; _ref = $f._ref; _ref$1 = $f._ref$1; bitCount = $f.bitCount; count = $f.count; f = $f.f; freq = $f.freq; h = $f.h; i = $f.i; i$1 = $f.i$1; list = $f.list; maxBits = $f.maxBits; node = $f.node; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; x$3 = $f.x$3; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 47783  		h = this;
 47784  		if (h.freqcache === sliceType$9.nil) {
 47785  			h.freqcache = $makeSlice(sliceType$9, 287);
 47786  		}
 47787  		list = $subslice(h.freqcache, 0, (freq.$length + 1 >> 0));
 47788  		count = 0;
 47789  		_ref = freq;
 47790  		_i = 0;
 47791  		while (true) {
 47792  			if (!(_i < _ref.$length)) { break; }
 47793  			i = _i;
 47794  			f = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
 47795  			if (!((f === 0))) {
 47796  				literalNode.copy(((count < 0 || count >= list.$length) ? ($throwRuntimeError("index out of range"), undefined) : list.$array[list.$offset + count]), new literalNode.ptr(((i << 16 >>> 16)), f));
 47797  				count = count + (1) >> 0;
 47798  			} else {
 47799  				literalNode.copy(((count < 0 || count >= list.$length) ? ($throwRuntimeError("index out of range"), undefined) : list.$array[list.$offset + count]), new literalNode.ptr(0, 0));
 47800  				(x = h.codes, ((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i])).len = 0;
 47801  			}
 47802  			_i++;
 47803  		}
 47804  		literalNode.copy((x$1 = freq.$length, ((x$1 < 0 || x$1 >= list.$length) ? ($throwRuntimeError("index out of range"), undefined) : list.$array[list.$offset + x$1])), new literalNode.ptr(0, 0));
 47805  		list = $subslice(list, 0, count);
 47806  		if (count <= 2) {
 47807  			_ref$1 = list;
 47808  			_i$1 = 0;
 47809  			while (true) {
 47810  				if (!(_i$1 < _ref$1.$length)) { break; }
 47811  				i$1 = _i$1;
 47812  				node = $clone(((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]), literalNode);
 47813  				(x$2 = h.codes, x$3 = node.literal, ((x$3 < 0 || x$3 >= x$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + x$3])).set(((i$1 << 16 >>> 16)), 1);
 47814  				_i$1++;
 47815  			}
 47816  			$s = -1; return;
 47817  		}
 47818  		$r = (h.$ptr_lfs || (h.$ptr_lfs = new ptrType$8(function() { return this.$target.lfs; }, function($v) { this.$target.lfs = $v; }, h))).sort(list); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 47819  		bitCount = h.bitCounts(list, maxBits);
 47820  		$r = h.assignEncodingAndSize(bitCount, list); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 47821  		$s = -1; return;
 47822  		/* */ } return; } if ($f === undefined) { $f = { $blk: huffmanEncoder.ptr.prototype.generate }; } $f._i = _i; $f._i$1 = _i$1; $f._ref = _ref; $f._ref$1 = _ref$1; $f.bitCount = bitCount; $f.count = count; $f.f = f; $f.freq = freq; $f.h = h; $f.i = i; $f.i$1 = i$1; $f.list = list; $f.maxBits = maxBits; $f.node = node; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.x$3 = x$3; $f.$s = $s; $f.$r = $r; return $f;
 47823  	};
 47824  	huffmanEncoder.prototype.generate = function(freq, maxBits) { return this.$val.generate(freq, maxBits); };
 47825  	$ptrType(byLiteral).prototype.sort = function(a) {
 47826  		var a, s, $s, $r;
 47827  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; a = $f.a; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 47828  		s = this;
 47829  		s.$set(($subslice(new byLiteral(a.$array), a.$offset, a.$offset + a.$length)));
 47830  		$r = sort.Sort(s); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 47831  		$s = -1; return;
 47832  		/* */ } return; } if ($f === undefined) { $f = { $blk: $ptrType(byLiteral).prototype.sort }; } $f.a = a; $f.s = s; $f.$s = $s; $f.$r = $r; return $f;
 47833  	};
 47834  	byLiteral.prototype.Len = function() {
 47835  		var s;
 47836  		s = this;
 47837  		return s.$length;
 47838  	};
 47839  	$ptrType(byLiteral).prototype.Len = function() { return this.$get().Len(); };
 47840  	byLiteral.prototype.Less = function(i, j) {
 47841  		var i, j, s;
 47842  		s = this;
 47843  		return ((i < 0 || i >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + i]).literal < ((j < 0 || j >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + j]).literal;
 47844  	};
 47845  	$ptrType(byLiteral).prototype.Less = function(i, j) { return this.$get().Less(i, j); };
 47846  	byLiteral.prototype.Swap = function(i, j) {
 47847  		var _tmp, _tmp$1, i, j, s;
 47848  		s = this;
 47849  		_tmp = $clone(((j < 0 || j >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + j]), literalNode);
 47850  		_tmp$1 = $clone(((i < 0 || i >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + i]), literalNode);
 47851  		literalNode.copy(((i < 0 || i >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + i]), _tmp);
 47852  		literalNode.copy(((j < 0 || j >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + j]), _tmp$1);
 47853  	};
 47854  	$ptrType(byLiteral).prototype.Swap = function(i, j) { return this.$get().Swap(i, j); };
 47855  	$ptrType(byFreq).prototype.sort = function(a) {
 47856  		var a, s, $s, $r;
 47857  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; a = $f.a; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 47858  		s = this;
 47859  		s.$set(($subslice(new byFreq(a.$array), a.$offset, a.$offset + a.$length)));
 47860  		$r = sort.Sort(s); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 47861  		$s = -1; return;
 47862  		/* */ } return; } if ($f === undefined) { $f = { $blk: $ptrType(byFreq).prototype.sort }; } $f.a = a; $f.s = s; $f.$s = $s; $f.$r = $r; return $f;
 47863  	};
 47864  	byFreq.prototype.Len = function() {
 47865  		var s;
 47866  		s = this;
 47867  		return s.$length;
 47868  	};
 47869  	$ptrType(byFreq).prototype.Len = function() { return this.$get().Len(); };
 47870  	byFreq.prototype.Less = function(i, j) {
 47871  		var i, j, s;
 47872  		s = this;
 47873  		if (((i < 0 || i >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + i]).freq === ((j < 0 || j >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + j]).freq) {
 47874  			return ((i < 0 || i >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + i]).literal < ((j < 0 || j >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + j]).literal;
 47875  		}
 47876  		return ((i < 0 || i >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + i]).freq < ((j < 0 || j >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + j]).freq;
 47877  	};
 47878  	$ptrType(byFreq).prototype.Less = function(i, j) { return this.$get().Less(i, j); };
 47879  	byFreq.prototype.Swap = function(i, j) {
 47880  		var _tmp, _tmp$1, i, j, s;
 47881  		s = this;
 47882  		_tmp = $clone(((j < 0 || j >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + j]), literalNode);
 47883  		_tmp$1 = $clone(((i < 0 || i >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + i]), literalNode);
 47884  		literalNode.copy(((i < 0 || i >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + i]), _tmp);
 47885  		literalNode.copy(((j < 0 || j >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + j]), _tmp$1);
 47886  	};
 47887  	$ptrType(byFreq).prototype.Swap = function(i, j) { return this.$get().Swap(i, j); };
 47888  	reverseBits = function(number, bitLength) {
 47889  		var bitLength, number, y;
 47890  		return bits.Reverse16((y = ((16 - bitLength << 24 >>> 24)), y < 32 ? (number << y) : 0) << 16 >>> 16);
 47891  	};
 47892  	CorruptInputError.prototype.Error = function() {
 47893  		var e;
 47894  		e = this;
 47895  		return "flate: corrupt input before offset " + strconv.FormatInt((new $Int64(e.$high, e.$low)), 10);
 47896  	};
 47897  	$ptrType(CorruptInputError).prototype.Error = function() { return this.$get().Error(); };
 47898  	InternalError.prototype.Error = function() {
 47899  		var e;
 47900  		e = this.$val;
 47901  		return "flate: internal error: " + (e);
 47902  	};
 47903  	$ptrType(InternalError).prototype.Error = function() { return new InternalError(this.$get()).Error(); };
 47904  	huffmanDecoder.ptr.prototype.init = function(bits$1) {
 47905  		var _i, _i$1, _i$2, _i$3, _i$4, _r, _ref, _ref$1, _ref$2, _ref$3, _ref$4, _tmp, _tmp$1, bits$1, chunk, chunk$1, chunk$2, code, code$1, count, h, i, i$1, i$2, j, j$1, link, linktab, linktab$1, max, min, n, n$1, nextcode, numLinks, off, off$1, off$2, reverse, reverse$1, value, x, x$1, x$2, x$3, x$4, x$5, x$6, x$7, y, y$1, y$2, y$3, y$4;
 47906  		h = this;
 47907  		if (!((h.min === 0))) {
 47908  			huffmanDecoder.copy(h, new huffmanDecoder.ptr(0, arrayType.zero(), sliceType$1.nil, 0));
 47909  		}
 47910  		count = arrayType$11.zero();
 47911  		_tmp = 0;
 47912  		_tmp$1 = 0;
 47913  		min = _tmp;
 47914  		max = _tmp$1;
 47915  		_ref = bits$1;
 47916  		_i = 0;
 47917  		while (true) {
 47918  			if (!(_i < _ref.$length)) { break; }
 47919  			n = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
 47920  			if (n === 0) {
 47921  				_i++;
 47922  				continue;
 47923  			}
 47924  			if ((min === 0) || n < min) {
 47925  				min = n;
 47926  			}
 47927  			if (n > max) {
 47928  				max = n;
 47929  			}
 47930  			((n < 0 || n >= count.length) ? ($throwRuntimeError("index out of range"), undefined) : count[n] = (((n < 0 || n >= count.length) ? ($throwRuntimeError("index out of range"), undefined) : count[n]) + (1) >> 0));
 47931  			_i++;
 47932  		}
 47933  		if (max === 0) {
 47934  			return true;
 47935  		}
 47936  		code = 0;
 47937  		nextcode = arrayType$11.zero();
 47938  		i = min;
 47939  		while (true) {
 47940  			if (!(i <= max)) { break; }
 47941  			code = (y = (1), y < 32 ? (code << y) : 0) >> 0;
 47942  			((i < 0 || i >= nextcode.length) ? ($throwRuntimeError("index out of range"), undefined) : nextcode[i] = code);
 47943  			code = code + (((i < 0 || i >= count.length) ? ($throwRuntimeError("index out of range"), undefined) : count[i])) >> 0;
 47944  			i = i + (1) >> 0;
 47945  		}
 47946  		if (!((code === ((y$1 = ((max >>> 0)), y$1 < 32 ? (1 << y$1) : 0) >> 0))) && !((code === 1) && (max === 1))) {
 47947  			return false;
 47948  		}
 47949  		h.min = min;
 47950  		if (max > 9) {
 47951  			numLinks = (y$2 = ((((max >>> 0)) - 9 >>> 0)), y$2 < 32 ? (1 << y$2) : 0) >> 0;
 47952  			h.linkMask = (((numLinks - 1 >> 0) >>> 0));
 47953  			link = nextcode[10] >> 1 >> 0;
 47954  			h.links = $makeSlice(sliceType$1, (512 - link >> 0));
 47955  			j = ((link >>> 0));
 47956  			while (true) {
 47957  				if (!(j < 512)) { break; }
 47958  				reverse = ((bits.Reverse16(((j << 16 >>> 16))) >> 0));
 47959  				reverse = (reverse >> $min((7), 31)) >> 0;
 47960  				off = j - ((link >>> 0)) >>> 0;
 47961  				if (false && !(((x = h.chunks, ((reverse < 0 || reverse >= x.length) ? ($throwRuntimeError("index out of range"), undefined) : x[reverse])) === 0))) {
 47962  					$panic(new $String("impossible: overwriting existing chunk"));
 47963  				}
 47964  				(x$1 = h.chunks, ((reverse < 0 || reverse >= x$1.length) ? ($throwRuntimeError("index out of range"), undefined) : x$1[reverse] = (((((off << 4 >>> 0) | 10) >>> 0) >>> 0))));
 47965  				(x$2 = h.links, ((off < 0 || off >= x$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + off] = $makeSlice(sliceType, numLinks)));
 47966  				j = j + (1) >>> 0;
 47967  			}
 47968  		}
 47969  		_ref$1 = bits$1;
 47970  		_i$1 = 0;
 47971  		while (true) {
 47972  			if (!(_i$1 < _ref$1.$length)) { break; }
 47973  			i$1 = _i$1;
 47974  			n$1 = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]);
 47975  			if (n$1 === 0) {
 47976  				_i$1++;
 47977  				continue;
 47978  			}
 47979  			code$1 = ((n$1 < 0 || n$1 >= nextcode.length) ? ($throwRuntimeError("index out of range"), undefined) : nextcode[n$1]);
 47980  			((n$1 < 0 || n$1 >= nextcode.length) ? ($throwRuntimeError("index out of range"), undefined) : nextcode[n$1] = (((n$1 < 0 || n$1 >= nextcode.length) ? ($throwRuntimeError("index out of range"), undefined) : nextcode[n$1]) + (1) >> 0));
 47981  			chunk = ((((i$1 << 4 >> 0) | n$1) >>> 0));
 47982  			reverse$1 = ((bits.Reverse16(((code$1 << 16 >>> 16))) >> 0));
 47983  			reverse$1 = (reverse$1 >> $min(((((16 - n$1 >> 0) >>> 0))), 31)) >> 0;
 47984  			if (n$1 <= 9) {
 47985  				off$1 = reverse$1;
 47986  				while (true) {
 47987  					if (!(off$1 < 512)) { break; }
 47988  					if (false && !(((x$3 = h.chunks, ((off$1 < 0 || off$1 >= x$3.length) ? ($throwRuntimeError("index out of range"), undefined) : x$3[off$1])) === 0))) {
 47989  						$panic(new $String("impossible: overwriting existing chunk"));
 47990  					}
 47991  					(x$4 = h.chunks, ((off$1 < 0 || off$1 >= x$4.length) ? ($throwRuntimeError("index out of range"), undefined) : x$4[off$1] = chunk));
 47992  					off$1 = off$1 + (((y$3 = ((n$1 >>> 0)), y$3 < 32 ? (1 << y$3) : 0) >> 0)) >> 0;
 47993  				}
 47994  			} else {
 47995  				j$1 = reverse$1 & 511;
 47996  				if (false && !(((((x$5 = h.chunks, ((j$1 < 0 || j$1 >= x$5.length) ? ($throwRuntimeError("index out of range"), undefined) : x$5[j$1])) & 15) >>> 0) === 10))) {
 47997  					$panic(new $String("impossible: not an indirect chunk"));
 47998  				}
 47999  				value = (x$6 = h.chunks, ((j$1 < 0 || j$1 >= x$6.length) ? ($throwRuntimeError("index out of range"), undefined) : x$6[j$1])) >>> 4 >>> 0;
 48000  				linktab = (x$7 = h.links, ((value < 0 || value >= x$7.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$7.$array[x$7.$offset + value]));
 48001  				reverse$1 = (reverse$1 >> $min((9), 31)) >> 0;
 48002  				off$2 = reverse$1;
 48003  				while (true) {
 48004  					if (!(off$2 < linktab.$length)) { break; }
 48005  					if (false && !((((off$2 < 0 || off$2 >= linktab.$length) ? ($throwRuntimeError("index out of range"), undefined) : linktab.$array[linktab.$offset + off$2]) === 0))) {
 48006  						$panic(new $String("impossible: overwriting existing chunk"));
 48007  					}
 48008  					((off$2 < 0 || off$2 >= linktab.$length) ? ($throwRuntimeError("index out of range"), undefined) : linktab.$array[linktab.$offset + off$2] = chunk);
 48009  					off$2 = off$2 + (((y$4 = (((n$1 - 9 >> 0) >>> 0)), y$4 < 32 ? (1 << y$4) : 0) >> 0)) >> 0;
 48010  				}
 48011  			}
 48012  			_i$1++;
 48013  		}
 48014  		if (false) {
 48015  			_ref$2 = h.chunks;
 48016  			_i$2 = 0;
 48017  			while (true) {
 48018  				if (!(_i$2 < 512)) { break; }
 48019  				i$2 = _i$2;
 48020  				chunk$1 = ((_i$2 < 0 || _i$2 >= _ref$2.length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$2[_i$2]);
 48021  				if (chunk$1 === 0) {
 48022  					if ((code === 1) && ((_r = i$2 % 2, _r === _r ? _r : $throwRuntimeError("integer divide by zero")) === 1)) {
 48023  						_i$2++;
 48024  						continue;
 48025  					}
 48026  					$panic(new $String("impossible: missing chunk"));
 48027  				}
 48028  				_i$2++;
 48029  			}
 48030  			_ref$3 = h.links;
 48031  			_i$3 = 0;
 48032  			while (true) {
 48033  				if (!(_i$3 < _ref$3.$length)) { break; }
 48034  				linktab$1 = ((_i$3 < 0 || _i$3 >= _ref$3.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$3.$array[_ref$3.$offset + _i$3]);
 48035  				_ref$4 = linktab$1;
 48036  				_i$4 = 0;
 48037  				while (true) {
 48038  					if (!(_i$4 < _ref$4.$length)) { break; }
 48039  					chunk$2 = ((_i$4 < 0 || _i$4 >= _ref$4.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$4.$array[_ref$4.$offset + _i$4]);
 48040  					if (chunk$2 === 0) {
 48041  						$panic(new $String("impossible: missing chunk"));
 48042  					}
 48043  					_i$4++;
 48044  				}
 48045  				_i$3++;
 48046  			}
 48047  		}
 48048  		return true;
 48049  	};
 48050  	huffmanDecoder.prototype.init = function(bits$1) { return this.$val.init(bits$1); };
 48051  	decompressor.ptr.prototype.nextBlock = function() {
 48052  		var _1, _r, _r$1, f, typ, x, y, y$1, $s, $r;
 48053  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _r = $f._r; _r$1 = $f._r$1; f = $f.f; typ = $f.typ; x = $f.x; y = $f.y; y$1 = $f.y$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 48054  		f = this;
 48055  		/* while (true) { */ case 1:
 48056  			/* if (!(f.nb < 3)) { break; } */ if(!(f.nb < 3)) { $s = 2; continue; }
 48057  			_r = f.moreBits(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 48058  			f.err = _r;
 48059  			if (!($interfaceIsEqual(f.err, $ifaceNil))) {
 48060  				$s = -1; return;
 48061  			}
 48062  		/* } */ $s = 1; continue; case 2:
 48063  		f.final$12 = ((f.b & 1) >>> 0) === 1;
 48064  		f.b = (y = (1), y < 32 ? (f.b >>> y) : 0) >>> 0;
 48065  		typ = (f.b & 3) >>> 0;
 48066  		f.b = (y$1 = (2), y$1 < 32 ? (f.b >>> y$1) : 0) >>> 0;
 48067  		f.nb = f.nb - (3) >>> 0;
 48068  			_1 = typ;
 48069  			/* */ if (_1 === (0)) { $s = 5; continue; }
 48070  			/* */ if (_1 === (1)) { $s = 6; continue; }
 48071  			/* */ if (_1 === (2)) { $s = 7; continue; }
 48072  			/* */ $s = 8; continue;
 48073  			/* if (_1 === (0)) { */ case 5:
 48074  				$r = f.dataBlock(); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 48075  				$s = 9; continue;
 48076  			/* } else if (_1 === (1)) { */ case 6:
 48077  				f.hl = fixedHuffmanDecoder;
 48078  				f.hd = ptrType$9.nil;
 48079  				$r = f.huffmanBlock(); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 48080  				$s = 9; continue;
 48081  			/* } else if (_1 === (2)) { */ case 7:
 48082  				_r$1 = f.readHuffman(); /* */ $s = 12; case 12: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 48083  				f.err = _r$1;
 48084  				if (!($interfaceIsEqual(f.err, $ifaceNil))) {
 48085  					/* break; */ $s = 4; continue;
 48086  				}
 48087  				f.hl = f.h1;
 48088  				f.hd = f.h2;
 48089  				$r = f.huffmanBlock(); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 48090  				$s = 9; continue;
 48091  			/* } else { */ case 8:
 48092  				f.err = ((x = f.roffset, new CorruptInputError(x.$high, x.$low)));
 48093  			/* } */ case 9:
 48094  		case 4:
 48095  		$s = -1; return;
 48096  		/* */ } return; } if ($f === undefined) { $f = { $blk: decompressor.ptr.prototype.nextBlock }; } $f._1 = _1; $f._r = _r; $f._r$1 = _r$1; $f.f = f; $f.typ = typ; $f.x = x; $f.y = y; $f.y$1 = y$1; $f.$s = $s; $f.$r = $r; return $f;
 48097  	};
 48098  	decompressor.prototype.nextBlock = function() { return this.$val.nextBlock(); };
 48099  	decompressor.ptr.prototype.Read = function(b) {
 48100  		var b, f, n, $s, $r;
 48101  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; b = $f.b; f = $f.f; n = $f.n; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 48102  		f = this;
 48103  		/* while (true) { */ case 1:
 48104  			if (f.toRead.$length > 0) {
 48105  				n = $copySlice(b, f.toRead);
 48106  				f.toRead = $subslice(f.toRead, n);
 48107  				if (f.toRead.$length === 0) {
 48108  					$s = -1; return [n, f.err];
 48109  				}
 48110  				$s = -1; return [n, $ifaceNil];
 48111  			}
 48112  			if (!($interfaceIsEqual(f.err, $ifaceNil))) {
 48113  				$s = -1; return [0, f.err];
 48114  			}
 48115  			$r = f.step(f); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 48116  			if (!($interfaceIsEqual(f.err, $ifaceNil)) && (f.toRead.$length === 0)) {
 48117  				f.toRead = f.dict.readFlush();
 48118  			}
 48119  		/* } */ $s = 1; continue; case 2:
 48120  		$s = -1; return [0, $ifaceNil];
 48121  		/* */ } return; } if ($f === undefined) { $f = { $blk: decompressor.ptr.prototype.Read }; } $f.b = b; $f.f = f; $f.n = n; $f.$s = $s; $f.$r = $r; return $f;
 48122  	};
 48123  	decompressor.prototype.Read = function(b) { return this.$val.Read(b); };
 48124  	decompressor.ptr.prototype.Close = function() {
 48125  		var f;
 48126  		f = this;
 48127  		if ($interfaceIsEqual(f.err, io.EOF)) {
 48128  			return $ifaceNil;
 48129  		}
 48130  		return f.err;
 48131  	};
 48132  	decompressor.prototype.Close = function() { return this.$val.Close(); };
 48133  	decompressor.ptr.prototype.readHuffman = function() {
 48134  		var _1, _r, _r$1, _r$2, _r$3, _tmp, _tmp$1, _tuple, b, err, err$1, err$2, err$3, f, i, i$1, i$2, j, n, nb, nclen, ndist, nlit, rep, x, x$1, x$10, x$11, x$12, x$13, x$14, x$15, x$16, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9, y, y$1, y$2, y$3, y$4, y$5, $s, $r;
 48135  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tuple = $f._tuple; b = $f.b; err = $f.err; err$1 = $f.err$1; err$2 = $f.err$2; err$3 = $f.err$3; f = $f.f; i = $f.i; i$1 = $f.i$1; i$2 = $f.i$2; j = $f.j; n = $f.n; nb = $f.nb; nclen = $f.nclen; ndist = $f.ndist; nlit = $f.nlit; rep = $f.rep; x = $f.x; x$1 = $f.x$1; x$10 = $f.x$10; x$11 = $f.x$11; x$12 = $f.x$12; x$13 = $f.x$13; x$14 = $f.x$14; x$15 = $f.x$15; x$16 = $f.x$16; x$2 = $f.x$2; x$3 = $f.x$3; x$4 = $f.x$4; x$5 = $f.x$5; x$6 = $f.x$6; x$7 = $f.x$7; x$8 = $f.x$8; x$9 = $f.x$9; y = $f.y; y$1 = $f.y$1; y$2 = $f.y$2; y$3 = $f.y$3; y$4 = $f.y$4; y$5 = $f.y$5; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 48136  		f = this;
 48137  		/* while (true) { */ case 1:
 48138  			/* if (!(f.nb < 14)) { break; } */ if(!(f.nb < 14)) { $s = 2; continue; }
 48139  			_r = f.moreBits(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 48140  			err = _r;
 48141  			if (!($interfaceIsEqual(err, $ifaceNil))) {
 48142  				$s = -1; return err;
 48143  			}
 48144  		/* } */ $s = 1; continue; case 2:
 48145  		nlit = ((((f.b & 31) >>> 0) >> 0)) + 257 >> 0;
 48146  		if (nlit > 286) {
 48147  			$s = -1; return ((x = f.roffset, new CorruptInputError(x.$high, x.$low)));
 48148  		}
 48149  		f.b = (y = (5), y < 32 ? (f.b >>> y) : 0) >>> 0;
 48150  		ndist = ((((f.b & 31) >>> 0) >> 0)) + 1 >> 0;
 48151  		if (ndist > 30) {
 48152  			$s = -1; return ((x$1 = f.roffset, new CorruptInputError(x$1.$high, x$1.$low)));
 48153  		}
 48154  		f.b = (y$1 = (5), y$1 < 32 ? (f.b >>> y$1) : 0) >>> 0;
 48155  		nclen = ((((f.b & 15) >>> 0) >> 0)) + 4 >> 0;
 48156  		f.b = (y$2 = (4), y$2 < 32 ? (f.b >>> y$2) : 0) >>> 0;
 48157  		f.nb = f.nb - (14) >>> 0;
 48158  		i = 0;
 48159  		/* while (true) { */ case 4:
 48160  			/* if (!(i < nclen)) { break; } */ if(!(i < nclen)) { $s = 5; continue; }
 48161  			/* while (true) { */ case 6:
 48162  				/* if (!(f.nb < 3)) { break; } */ if(!(f.nb < 3)) { $s = 7; continue; }
 48163  				_r$1 = f.moreBits(); /* */ $s = 8; case 8: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 48164  				err$1 = _r$1;
 48165  				if (!($interfaceIsEqual(err$1, $ifaceNil))) {
 48166  					$s = -1; return err$1;
 48167  				}
 48168  			/* } */ $s = 6; continue; case 7:
 48169  			(x$2 = f.codebits, x$3 = ((i < 0 || i >= codeOrder.length) ? ($throwRuntimeError("index out of range"), undefined) : codeOrder[i]), x$2.nilCheck, ((x$3 < 0 || x$3 >= x$2.length) ? ($throwRuntimeError("index out of range"), undefined) : x$2[x$3] = ((((f.b & 7) >>> 0) >> 0))));
 48170  			f.b = (y$3 = (3), y$3 < 32 ? (f.b >>> y$3) : 0) >>> 0;
 48171  			f.nb = f.nb - (3) >>> 0;
 48172  			i = i + (1) >> 0;
 48173  		/* } */ $s = 4; continue; case 5:
 48174  		i$1 = nclen;
 48175  		while (true) {
 48176  			if (!(i$1 < 19)) { break; }
 48177  			(x$4 = f.codebits, x$5 = ((i$1 < 0 || i$1 >= codeOrder.length) ? ($throwRuntimeError("index out of range"), undefined) : codeOrder[i$1]), x$4.nilCheck, ((x$5 < 0 || x$5 >= x$4.length) ? ($throwRuntimeError("index out of range"), undefined) : x$4[x$5] = 0));
 48178  			i$1 = i$1 + (1) >> 0;
 48179  		}
 48180  		if (!f.h1.init($subslice(new sliceType$10(f.codebits), 0))) {
 48181  			$s = -1; return ((x$6 = f.roffset, new CorruptInputError(x$6.$high, x$6.$low)));
 48182  		}
 48183  		_tmp = 0;
 48184  		_tmp$1 = nlit + ndist >> 0;
 48185  		i$2 = _tmp;
 48186  		n = _tmp$1;
 48187  		/* while (true) { */ case 9:
 48188  			/* if (!(i$2 < n)) { break; } */ if(!(i$2 < n)) { $s = 10; continue; }
 48189  			_r$2 = f.huffSym(f.h1); /* */ $s = 11; case 11: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 48190  			_tuple = _r$2;
 48191  			x$7 = _tuple[0];
 48192  			err$2 = _tuple[1];
 48193  			if (!($interfaceIsEqual(err$2, $ifaceNil))) {
 48194  				$s = -1; return err$2;
 48195  			}
 48196  			/* */ if (x$7 < 16) { $s = 12; continue; }
 48197  			/* */ $s = 13; continue;
 48198  			/* if (x$7 < 16) { */ case 12:
 48199  				(x$8 = f.bits, x$8.nilCheck, ((i$2 < 0 || i$2 >= x$8.length) ? ($throwRuntimeError("index out of range"), undefined) : x$8[i$2] = x$7));
 48200  				i$2 = i$2 + (1) >> 0;
 48201  				/* continue; */ $s = 9; continue;
 48202  			/* } */ case 13:
 48203  			rep = 0;
 48204  			nb = 0;
 48205  			b = 0;
 48206  			_1 = x$7;
 48207  			if (_1 === (16)) {
 48208  				rep = 3;
 48209  				nb = 2;
 48210  				if (i$2 === 0) {
 48211  					$s = -1; return ((x$9 = f.roffset, new CorruptInputError(x$9.$high, x$9.$low)));
 48212  				}
 48213  				b = (x$10 = f.bits, x$11 = i$2 - 1 >> 0, (x$10.nilCheck, ((x$11 < 0 || x$11 >= x$10.length) ? ($throwRuntimeError("index out of range"), undefined) : x$10[x$11])));
 48214  			} else if (_1 === (17)) {
 48215  				rep = 3;
 48216  				nb = 3;
 48217  				b = 0;
 48218  			} else if (_1 === (18)) {
 48219  				rep = 11;
 48220  				nb = 7;
 48221  				b = 0;
 48222  			} else {
 48223  				$s = -1; return new InternalError("unexpected length code");
 48224  			}
 48225  			/* while (true) { */ case 14:
 48226  				/* if (!(f.nb < nb)) { break; } */ if(!(f.nb < nb)) { $s = 15; continue; }
 48227  				_r$3 = f.moreBits(); /* */ $s = 16; case 16: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 48228  				err$3 = _r$3;
 48229  				if (!($interfaceIsEqual(err$3, $ifaceNil))) {
 48230  					$s = -1; return err$3;
 48231  				}
 48232  			/* } */ $s = 14; continue; case 15:
 48233  			rep = rep + (((((f.b & ((((y$4 = nb, y$4 < 32 ? (1 << y$4) : 0) >>> 0) - 1 >>> 0))) >>> 0) >> 0))) >> 0;
 48234  			f.b = (y$5 = (nb), y$5 < 32 ? (f.b >>> y$5) : 0) >>> 0;
 48235  			f.nb = f.nb - (nb) >>> 0;
 48236  			if ((i$2 + rep >> 0) > n) {
 48237  				$s = -1; return ((x$12 = f.roffset, new CorruptInputError(x$12.$high, x$12.$low)));
 48238  			}
 48239  			j = 0;
 48240  			while (true) {
 48241  				if (!(j < rep)) { break; }
 48242  				(x$13 = f.bits, x$13.nilCheck, ((i$2 < 0 || i$2 >= x$13.length) ? ($throwRuntimeError("index out of range"), undefined) : x$13[i$2] = b));
 48243  				i$2 = i$2 + (1) >> 0;
 48244  				j = j + (1) >> 0;
 48245  			}
 48246  		/* } */ $s = 9; continue; case 10:
 48247  		if (!f.h1.init($subslice(new sliceType$10(f.bits), 0, nlit)) || !f.h2.init($subslice(new sliceType$10(f.bits), nlit, (nlit + ndist >> 0)))) {
 48248  			$s = -1; return ((x$14 = f.roffset, new CorruptInputError(x$14.$high, x$14.$low)));
 48249  		}
 48250  		if (f.h1.min < (x$15 = f.bits, (x$15.nilCheck, x$15[256]))) {
 48251  			f.h1.min = (x$16 = f.bits, (x$16.nilCheck, x$16[256]));
 48252  		}
 48253  		$s = -1; return $ifaceNil;
 48254  		/* */ } return; } if ($f === undefined) { $f = { $blk: decompressor.ptr.prototype.readHuffman }; } $f._1 = _1; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tuple = _tuple; $f.b = b; $f.err = err; $f.err$1 = err$1; $f.err$2 = err$2; $f.err$3 = err$3; $f.f = f; $f.i = i; $f.i$1 = i$1; $f.i$2 = i$2; $f.j = j; $f.n = n; $f.nb = nb; $f.nclen = nclen; $f.ndist = ndist; $f.nlit = nlit; $f.rep = rep; $f.x = x; $f.x$1 = x$1; $f.x$10 = x$10; $f.x$11 = x$11; $f.x$12 = x$12; $f.x$13 = x$13; $f.x$14 = x$14; $f.x$15 = x$15; $f.x$16 = x$16; $f.x$2 = x$2; $f.x$3 = x$3; $f.x$4 = x$4; $f.x$5 = x$5; $f.x$6 = x$6; $f.x$7 = x$7; $f.x$8 = x$8; $f.x$9 = x$9; $f.y = y; $f.y$1 = y$1; $f.y$2 = y$2; $f.y$3 = y$3; $f.y$4 = y$4; $f.y$5 = y$5; $f.$s = $s; $f.$r = $r; return $f;
 48255  	};
 48256  	decompressor.prototype.readHuffman = function() { return this.$val.readHuffman(); };
 48257  	decompressor.ptr.prototype.huffmanBlock = function() {
 48258  		var _1, _r, _r$1, _r$2, _r$3, _r$4, _tmp, _tmp$1, _tuple, _tuple$1, cnt, dist, err, extra, f, length, n, nb, v, x, x$1, x$2, y, y$1, y$2, y$3, y$4, y$5, y$6, $s, $r;
 48259  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; cnt = $f.cnt; dist = $f.dist; err = $f.err; extra = $f.extra; f = $f.f; length = $f.length; n = $f.n; nb = $f.nb; v = $f.v; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; y = $f.y; y$1 = $f.y$1; y$2 = $f.y$2; y$3 = $f.y$3; y$4 = $f.y$4; y$5 = $f.y$5; y$6 = $f.y$6; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 48260  		f = this;
 48261  			_1 = f.stepState;
 48262  			/* */ if (_1 === (0)) { $s = 2; continue; }
 48263  			/* */ if (_1 === (1)) { $s = 3; continue; }
 48264  			/* */ $s = 4; continue;
 48265  			/* if (_1 === (0)) { */ case 2:
 48266  				/* goto readLiteral */ $s = 5; continue;
 48267  				$s = 4; continue;
 48268  			/* } else if (_1 === (1)) { */ case 3:
 48269  				/* goto copyHistory */ $s = 6; continue;
 48270  			/* } */ case 4:
 48271  		case 1:
 48272  		/* readLiteral: */ case 5:
 48273  		_r = f.huffSym(f.hl); /* */ $s = 7; case 7: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 48274  		_tuple = _r;
 48275  		v = _tuple[0];
 48276  		err = _tuple[1];
 48277  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 48278  			f.err = err;
 48279  			$s = -1; return;
 48280  		}
 48281  		n = 0;
 48282  		length = 0;
 48283  			/* */ if (v < 256) { $s = 9; continue; }
 48284  			/* */ if ((v === 256)) { $s = 10; continue; }
 48285  			/* */ if (v < 265) { $s = 11; continue; }
 48286  			/* */ if (v < 269) { $s = 12; continue; }
 48287  			/* */ if (v < 273) { $s = 13; continue; }
 48288  			/* */ if (v < 277) { $s = 14; continue; }
 48289  			/* */ if (v < 281) { $s = 15; continue; }
 48290  			/* */ if (v < 285) { $s = 16; continue; }
 48291  			/* */ if (v < 286) { $s = 17; continue; }
 48292  			/* */ $s = 18; continue;
 48293  			/* if (v < 256) { */ case 9:
 48294  				f.dict.writeByte(((v << 24 >>> 24)));
 48295  				if (f.dict.availWrite() === 0) {
 48296  					f.toRead = f.dict.readFlush();
 48297  					f.step = $methodExpr(ptrType$10, "huffmanBlock");
 48298  					f.stepState = 0;
 48299  					$s = -1; return;
 48300  				}
 48301  				/* goto readLiteral */ $s = 5; continue;
 48302  				$s = 19; continue;
 48303  			/* } else if ((v === 256)) { */ case 10:
 48304  				f.finishBlock();
 48305  				$s = -1; return;
 48306  			/* } else if (v < 265) { */ case 11:
 48307  				length = v - 254 >> 0;
 48308  				n = 0;
 48309  				$s = 19; continue;
 48310  			/* } else if (v < 269) { */ case 12:
 48311  				length = ($imul(v, 2)) - 519 >> 0;
 48312  				n = 1;
 48313  				$s = 19; continue;
 48314  			/* } else if (v < 273) { */ case 13:
 48315  				length = ($imul(v, 4)) - 1057 >> 0;
 48316  				n = 2;
 48317  				$s = 19; continue;
 48318  			/* } else if (v < 277) { */ case 14:
 48319  				length = ($imul(v, 8)) - 2149 >> 0;
 48320  				n = 3;
 48321  				$s = 19; continue;
 48322  			/* } else if (v < 281) { */ case 15:
 48323  				length = ($imul(v, 16)) - 4365 >> 0;
 48324  				n = 4;
 48325  				$s = 19; continue;
 48326  			/* } else if (v < 285) { */ case 16:
 48327  				length = ($imul(v, 32)) - 8861 >> 0;
 48328  				n = 5;
 48329  				$s = 19; continue;
 48330  			/* } else if (v < 286) { */ case 17:
 48331  				length = 258;
 48332  				n = 0;
 48333  				$s = 19; continue;
 48334  			/* } else { */ case 18:
 48335  				f.err = ((x = f.roffset, new CorruptInputError(x.$high, x.$low)));
 48336  				$s = -1; return;
 48337  			/* } */ case 19:
 48338  		case 8:
 48339  		/* */ if (n > 0) { $s = 20; continue; }
 48340  		/* */ $s = 21; continue;
 48341  		/* if (n > 0) { */ case 20:
 48342  			/* while (true) { */ case 22:
 48343  				/* if (!(f.nb < n)) { break; } */ if(!(f.nb < n)) { $s = 23; continue; }
 48344  				_r$1 = f.moreBits(); /* */ $s = 24; case 24: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 48345  				err = _r$1;
 48346  				if (!($interfaceIsEqual(err, $ifaceNil))) {
 48347  					f.err = err;
 48348  					$s = -1; return;
 48349  				}
 48350  			/* } */ $s = 22; continue; case 23:
 48351  			length = length + (((((f.b & ((((y = n, y < 32 ? (1 << y) : 0) >>> 0) - 1 >>> 0))) >>> 0) >> 0))) >> 0;
 48352  			f.b = (y$1 = (n), y$1 < 32 ? (f.b >>> y$1) : 0) >>> 0;
 48353  			f.nb = f.nb - (n) >>> 0;
 48354  		/* } */ case 21:
 48355  		dist = 0;
 48356  		/* */ if (f.hd === ptrType$9.nil) { $s = 25; continue; }
 48357  		/* */ $s = 26; continue;
 48358  		/* if (f.hd === ptrType$9.nil) { */ case 25:
 48359  			/* while (true) { */ case 28:
 48360  				/* if (!(f.nb < 5)) { break; } */ if(!(f.nb < 5)) { $s = 29; continue; }
 48361  				_r$2 = f.moreBits(); /* */ $s = 30; case 30: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 48362  				err = _r$2;
 48363  				if (!($interfaceIsEqual(err, $ifaceNil))) {
 48364  					f.err = err;
 48365  					$s = -1; return;
 48366  				}
 48367  			/* } */ $s = 28; continue; case 29:
 48368  			dist = ((bits.Reverse8((((((f.b & 31) >>> 0) << 3 >>> 0) << 24 >>> 24))) >> 0));
 48369  			f.b = (y$2 = (5), y$2 < 32 ? (f.b >>> y$2) : 0) >>> 0;
 48370  			f.nb = f.nb - (5) >>> 0;
 48371  			$s = 27; continue;
 48372  		/* } else { */ case 26:
 48373  			_r$3 = f.huffSym(f.hd); /* */ $s = 31; case 31: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 48374  			_tuple$1 = _r$3;
 48375  			dist = _tuple$1[0];
 48376  			err = _tuple$1[1];
 48377  			if (!($interfaceIsEqual(err, $ifaceNil))) {
 48378  				f.err = err;
 48379  				$s = -1; return;
 48380  			}
 48381  		/* } */ case 27:
 48382  			/* */ if (dist < 4) { $s = 33; continue; }
 48383  			/* */ if (dist < 30) { $s = 34; continue; }
 48384  			/* */ $s = 35; continue;
 48385  			/* if (dist < 4) { */ case 33:
 48386  				dist = dist + (1) >> 0;
 48387  				$s = 36; continue;
 48388  			/* } else if (dist < 30) { */ case 34:
 48389  				nb = (((dist - 2 >> 0) >>> 0)) >>> 1 >>> 0;
 48390  				extra = (y$3 = nb, y$3 < 32 ? (((dist & 1)) << y$3) : 0) >> 0;
 48391  				/* while (true) { */ case 37:
 48392  					/* if (!(f.nb < nb)) { break; } */ if(!(f.nb < nb)) { $s = 38; continue; }
 48393  					_r$4 = f.moreBits(); /* */ $s = 39; case 39: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 48394  					err = _r$4;
 48395  					if (!($interfaceIsEqual(err, $ifaceNil))) {
 48396  						f.err = err;
 48397  						$s = -1; return;
 48398  					}
 48399  				/* } */ $s = 37; continue; case 38:
 48400  				extra = extra | (((((f.b & ((((y$4 = nb, y$4 < 32 ? (1 << y$4) : 0) >>> 0) - 1 >>> 0))) >>> 0) >> 0)));
 48401  				f.b = (y$5 = (nb), y$5 < 32 ? (f.b >>> y$5) : 0) >>> 0;
 48402  				f.nb = f.nb - (nb) >>> 0;
 48403  				dist = (((y$6 = ((nb + 1 >>> 0)), y$6 < 32 ? (1 << y$6) : 0) >> 0) + 1 >> 0) + extra >> 0;
 48404  				$s = 36; continue;
 48405  			/* } else { */ case 35:
 48406  				f.err = ((x$1 = f.roffset, new CorruptInputError(x$1.$high, x$1.$low)));
 48407  				$s = -1; return;
 48408  			/* } */ case 36:
 48409  		case 32:
 48410  		if (dist > f.dict.histSize()) {
 48411  			f.err = ((x$2 = f.roffset, new CorruptInputError(x$2.$high, x$2.$low)));
 48412  			$s = -1; return;
 48413  		}
 48414  		_tmp = length;
 48415  		_tmp$1 = dist;
 48416  		f.copyLen = _tmp;
 48417  		f.copyDist = _tmp$1;
 48418  		/* goto copyHistory */ $s = 6; continue;
 48419  		/* copyHistory: */ case 6:
 48420  		cnt = f.dict.tryWriteCopy(f.copyDist, f.copyLen);
 48421  		if (cnt === 0) {
 48422  			cnt = f.dict.writeCopy(f.copyDist, f.copyLen);
 48423  		}
 48424  		f.copyLen = f.copyLen - (cnt) >> 0;
 48425  		if ((f.dict.availWrite() === 0) || f.copyLen > 0) {
 48426  			f.toRead = f.dict.readFlush();
 48427  			f.step = $methodExpr(ptrType$10, "huffmanBlock");
 48428  			f.stepState = 1;
 48429  			$s = -1; return;
 48430  		}
 48431  		/* goto readLiteral */ $s = 5; continue;
 48432  		$s = -1; return;
 48433  		/* */ } return; } if ($f === undefined) { $f = { $blk: decompressor.ptr.prototype.huffmanBlock }; } $f._1 = _1; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.cnt = cnt; $f.dist = dist; $f.err = err; $f.extra = extra; $f.f = f; $f.length = length; $f.n = n; $f.nb = nb; $f.v = v; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.y = y; $f.y$1 = y$1; $f.y$2 = y$2; $f.y$3 = y$3; $f.y$4 = y$4; $f.y$5 = y$5; $f.y$6 = y$6; $f.$s = $s; $f.$r = $r; return $f;
 48434  	};
 48435  	decompressor.prototype.huffmanBlock = function() { return this.$val.huffmanBlock(); };
 48436  	decompressor.ptr.prototype.dataBlock = function() {
 48437  		var _r, _tuple, err, f, n, nn, nr, x, x$1, x$2, $s, $r;
 48438  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; err = $f.err; f = $f.f; n = $f.n; nn = $f.nn; nr = $f.nr; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 48439  		f = this;
 48440  		f.nb = 0;
 48441  		f.b = 0;
 48442  		_r = io.ReadFull(f.r, $subslice(new sliceType$4(f.buf), 0, 4)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 48443  		_tuple = _r;
 48444  		nr = _tuple[0];
 48445  		err = _tuple[1];
 48446  		f.roffset = (x = f.roffset, x$1 = (new $Int64(0, nr)), new $Int64(x.$high + x$1.$high, x.$low + x$1.$low));
 48447  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 48448  			if ($interfaceIsEqual(err, io.EOF)) {
 48449  				err = io.ErrUnexpectedEOF;
 48450  			}
 48451  			f.err = err;
 48452  			$s = -1; return;
 48453  		}
 48454  		n = ((f.buf[0] >> 0)) | (((f.buf[1] >> 0)) << 8 >> 0);
 48455  		nn = ((f.buf[2] >> 0)) | (((f.buf[3] >> 0)) << 8 >> 0);
 48456  		if (!((((nn << 16 >>> 16)) === (((~n >> 0) << 16 >>> 16))))) {
 48457  			f.err = ((x$2 = f.roffset, new CorruptInputError(x$2.$high, x$2.$low)));
 48458  			$s = -1; return;
 48459  		}
 48460  		if (n === 0) {
 48461  			f.toRead = f.dict.readFlush();
 48462  			f.finishBlock();
 48463  			$s = -1; return;
 48464  		}
 48465  		f.copyLen = n;
 48466  		$r = f.copyData(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 48467  		$s = -1; return;
 48468  		/* */ } return; } if ($f === undefined) { $f = { $blk: decompressor.ptr.prototype.dataBlock }; } $f._r = _r; $f._tuple = _tuple; $f.err = err; $f.f = f; $f.n = n; $f.nn = nn; $f.nr = nr; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.$s = $s; $f.$r = $r; return $f;
 48469  	};
 48470  	decompressor.prototype.dataBlock = function() { return this.$val.dataBlock(); };
 48471  	decompressor.ptr.prototype.copyData = function() {
 48472  		var _r, _tuple, buf, cnt, err, f, x, x$1, $s, $r;
 48473  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; buf = $f.buf; cnt = $f.cnt; err = $f.err; f = $f.f; x = $f.x; x$1 = $f.x$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 48474  		f = this;
 48475  		buf = f.dict.writeSlice();
 48476  		if (buf.$length > f.copyLen) {
 48477  			buf = $subslice(buf, 0, f.copyLen);
 48478  		}
 48479  		_r = io.ReadFull(f.r, buf); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 48480  		_tuple = _r;
 48481  		cnt = _tuple[0];
 48482  		err = _tuple[1];
 48483  		f.roffset = (x = f.roffset, x$1 = (new $Int64(0, cnt)), new $Int64(x.$high + x$1.$high, x.$low + x$1.$low));
 48484  		f.copyLen = f.copyLen - (cnt) >> 0;
 48485  		f.dict.writeMark(cnt);
 48486  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 48487  			if ($interfaceIsEqual(err, io.EOF)) {
 48488  				err = io.ErrUnexpectedEOF;
 48489  			}
 48490  			f.err = err;
 48491  			$s = -1; return;
 48492  		}
 48493  		if ((f.dict.availWrite() === 0) || f.copyLen > 0) {
 48494  			f.toRead = f.dict.readFlush();
 48495  			f.step = $methodExpr(ptrType$10, "copyData");
 48496  			$s = -1; return;
 48497  		}
 48498  		f.finishBlock();
 48499  		$s = -1; return;
 48500  		/* */ } return; } if ($f === undefined) { $f = { $blk: decompressor.ptr.prototype.copyData }; } $f._r = _r; $f._tuple = _tuple; $f.buf = buf; $f.cnt = cnt; $f.err = err; $f.f = f; $f.x = x; $f.x$1 = x$1; $f.$s = $s; $f.$r = $r; return $f;
 48501  	};
 48502  	decompressor.prototype.copyData = function() { return this.$val.copyData(); };
 48503  	decompressor.ptr.prototype.finishBlock = function() {
 48504  		var f;
 48505  		f = this;
 48506  		if (f.final$12) {
 48507  			if (f.dict.availRead() > 0) {
 48508  				f.toRead = f.dict.readFlush();
 48509  			}
 48510  			f.err = io.EOF;
 48511  		}
 48512  		f.step = $methodExpr(ptrType$10, "nextBlock");
 48513  	};
 48514  	decompressor.prototype.finishBlock = function() { return this.$val.finishBlock(); };
 48515  	decompressor.ptr.prototype.moreBits = function() {
 48516  		var _r, _tuple, c, err, f, x, x$1, y, $s, $r;
 48517  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; c = $f.c; err = $f.err; f = $f.f; x = $f.x; x$1 = $f.x$1; y = $f.y; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 48518  		f = this;
 48519  		_r = f.r.ReadByte(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 48520  		_tuple = _r;
 48521  		c = _tuple[0];
 48522  		err = _tuple[1];
 48523  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 48524  			if ($interfaceIsEqual(err, io.EOF)) {
 48525  				err = io.ErrUnexpectedEOF;
 48526  			}
 48527  			$s = -1; return err;
 48528  		}
 48529  		f.roffset = (x = f.roffset, x$1 = new $Int64(0, 1), new $Int64(x.$high + x$1.$high, x.$low + x$1.$low));
 48530  		f.b = (f.b | (((y = f.nb, y < 32 ? (((c >>> 0)) << y) : 0) >>> 0))) >>> 0;
 48531  		f.nb = f.nb + (8) >>> 0;
 48532  		$s = -1; return $ifaceNil;
 48533  		/* */ } return; } if ($f === undefined) { $f = { $blk: decompressor.ptr.prototype.moreBits }; } $f._r = _r; $f._tuple = _tuple; $f.c = c; $f.err = err; $f.f = f; $f.x = x; $f.x$1 = x$1; $f.y = y; $f.$s = $s; $f.$r = $r; return $f;
 48534  	};
 48535  	decompressor.prototype.moreBits = function() { return this.$val.moreBits(); };
 48536  	decompressor.ptr.prototype.huffSym = function(h) {
 48537  		var _r, chunk, err, f, h, n, x, x$1, x$2, x$3, x$4, x$5, x$6, y, $s, $r;
 48538  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; chunk = $f.chunk; err = $f.err; f = $f.f; h = $f.h; n = $f.n; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; x$3 = $f.x$3; x$4 = $f.x$4; x$5 = $f.x$5; x$6 = $f.x$6; y = $f.y; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 48539  		f = this;
 48540  		n = ((h.min >>> 0));
 48541  		/* while (true) { */ case 1:
 48542  			/* while (true) { */ case 3:
 48543  				/* if (!(f.nb < n)) { break; } */ if(!(f.nb < n)) { $s = 4; continue; }
 48544  				_r = f.moreBits(); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 48545  				err = _r;
 48546  				if (!($interfaceIsEqual(err, $ifaceNil))) {
 48547  					$s = -1; return [0, err];
 48548  				}
 48549  			/* } */ $s = 3; continue; case 4:
 48550  			chunk = (x = h.chunks, x$1 = (f.b & 511) >>> 0, ((x$1 < 0 || x$1 >= x.length) ? ($throwRuntimeError("index out of range"), undefined) : x[x$1]));
 48551  			n = ((((chunk & 15) >>> 0) >>> 0));
 48552  			if (n > 9) {
 48553  				chunk = (x$2 = (x$3 = h.links, x$4 = chunk >>> 4 >>> 0, ((x$4 < 0 || x$4 >= x$3.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$3.$array[x$3.$offset + x$4])), x$5 = (((f.b >>> 9 >>> 0)) & h.linkMask) >>> 0, ((x$5 < 0 || x$5 >= x$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + x$5]));
 48554  				n = ((((chunk & 15) >>> 0) >>> 0));
 48555  			}
 48556  			if (n <= f.nb) {
 48557  				if (n === 0) {
 48558  					f.err = ((x$6 = f.roffset, new CorruptInputError(x$6.$high, x$6.$low)));
 48559  					$s = -1; return [0, f.err];
 48560  				}
 48561  				f.b = (y = (n), y < 32 ? (f.b >>> y) : 0) >>> 0;
 48562  				f.nb = f.nb - (n) >>> 0;
 48563  				$s = -1; return [(((chunk >>> 4 >>> 0) >> 0)), $ifaceNil];
 48564  			}
 48565  		/* } */ $s = 1; continue; case 2:
 48566  		$s = -1; return [0, $ifaceNil];
 48567  		/* */ } return; } if ($f === undefined) { $f = { $blk: decompressor.ptr.prototype.huffSym }; } $f._r = _r; $f.chunk = chunk; $f.err = err; $f.f = f; $f.h = h; $f.n = n; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.x$3 = x$3; $f.x$4 = x$4; $f.x$5 = x$5; $f.x$6 = x$6; $f.y = y; $f.$s = $s; $f.$r = $r; return $f;
 48568  	};
 48569  	decompressor.prototype.huffSym = function(h) { return this.$val.huffSym(h); };
 48570  	makeReader = function(r) {
 48571  		var _tuple, ok, r, rr;
 48572  		_tuple = $assertType(r, Reader, true);
 48573  		rr = _tuple[0];
 48574  		ok = _tuple[1];
 48575  		if (ok) {
 48576  			return rr;
 48577  		}
 48578  		return bufio.NewReader(r);
 48579  	};
 48580  	fixedHuffmanDecoderInit = function() {
 48581  		var $s, $r;
 48582  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 48583  		$r = fixedOnce.Do((function() {
 48584  			var bits$1, i, i$1, i$2, i$3;
 48585  			bits$1 = arrayType$12.zero();
 48586  			i = 0;
 48587  			while (true) {
 48588  				if (!(i < 144)) { break; }
 48589  				((i < 0 || i >= bits$1.length) ? ($throwRuntimeError("index out of range"), undefined) : bits$1[i] = 8);
 48590  				i = i + (1) >> 0;
 48591  			}
 48592  			i$1 = 144;
 48593  			while (true) {
 48594  				if (!(i$1 < 256)) { break; }
 48595  				((i$1 < 0 || i$1 >= bits$1.length) ? ($throwRuntimeError("index out of range"), undefined) : bits$1[i$1] = 9);
 48596  				i$1 = i$1 + (1) >> 0;
 48597  			}
 48598  			i$2 = 256;
 48599  			while (true) {
 48600  				if (!(i$2 < 280)) { break; }
 48601  				((i$2 < 0 || i$2 >= bits$1.length) ? ($throwRuntimeError("index out of range"), undefined) : bits$1[i$2] = 7);
 48602  				i$2 = i$2 + (1) >> 0;
 48603  			}
 48604  			i$3 = 280;
 48605  			while (true) {
 48606  				if (!(i$3 < 288)) { break; }
 48607  				((i$3 < 0 || i$3 >= bits$1.length) ? ($throwRuntimeError("index out of range"), undefined) : bits$1[i$3] = 8);
 48608  				i$3 = i$3 + (1) >> 0;
 48609  			}
 48610  			fixedHuffmanDecoder.init(new sliceType$10(bits$1));
 48611  		})); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 48612  		$s = -1; return;
 48613  		/* */ } return; } if ($f === undefined) { $f = { $blk: fixedHuffmanDecoderInit }; } $f.$s = $s; $f.$r = $r; return $f;
 48614  	};
 48615  	decompressor.ptr.prototype.Reset = function(r, dict) {
 48616  		var dict, f, r;
 48617  		f = this;
 48618  		decompressor.copy(f, new decompressor.ptr(makeReader(r), new $Int64(0, 0), 0, 0, new huffmanDecoder.ptr(0, arrayType.zero(), sliceType$1.nil, 0), new huffmanDecoder.ptr(0, arrayType.zero(), sliceType$1.nil, 0), f.bits, f.codebits, $clone(f.dict, dictDecoder), arrayType$15.zero(), $methodExpr(ptrType$10, "nextBlock"), 0, false, $ifaceNil, sliceType$4.nil, ptrType$9.nil, ptrType$9.nil, 0, 0));
 48619  		f.dict.init(32768, dict);
 48620  		return $ifaceNil;
 48621  	};
 48622  	decompressor.prototype.Reset = function(r, dict) { return this.$val.Reset(r, dict); };
 48623  	NewReader = function(r) {
 48624  		var f, r, $s, $r;
 48625  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; f = $f.f; r = $f.r; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 48626  		f = [f];
 48627  		$r = fixedHuffmanDecoderInit(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 48628  		f[0] = new decompressor.ptr($ifaceNil, new $Int64(0, 0), 0, 0, new huffmanDecoder.ptr(0, arrayType.zero(), sliceType$1.nil, 0), new huffmanDecoder.ptr(0, arrayType.zero(), sliceType$1.nil, 0), ptrType$11.nil, ptrType$12.nil, new dictDecoder.ptr(sliceType$4.nil, 0, 0, false), arrayType$15.zero(), $throwNilPointerError, 0, false, $ifaceNil, sliceType$4.nil, ptrType$9.nil, ptrType$9.nil, 0, 0);
 48629  		f[0].r = makeReader(r);
 48630  		f[0].bits = arrayType$13.zero();
 48631  		f[0].codebits = arrayType$14.zero();
 48632  		f[0].step = $methodExpr(ptrType$10, "nextBlock");
 48633  		f[0].dict.init(32768, sliceType$4.nil);
 48634  		$s = -1; return f[0];
 48635  		/* */ } return; } if ($f === undefined) { $f = { $blk: NewReader }; } $f.f = f; $f.r = r; $f.$s = $s; $f.$r = $r; return $f;
 48636  	};
 48637  	$pkg.NewReader = NewReader;
 48638  	ptrType$13.methods = [{prop: "init", name: "init", pkg: "compress/flate", typ: $funcType([$Int, sliceType$4], [], false)}, {prop: "histSize", name: "histSize", pkg: "compress/flate", typ: $funcType([], [$Int], false)}, {prop: "availRead", name: "availRead", pkg: "compress/flate", typ: $funcType([], [$Int], false)}, {prop: "availWrite", name: "availWrite", pkg: "compress/flate", typ: $funcType([], [$Int], false)}, {prop: "writeSlice", name: "writeSlice", pkg: "compress/flate", typ: $funcType([], [sliceType$4], false)}, {prop: "writeMark", name: "writeMark", pkg: "compress/flate", typ: $funcType([$Int], [], false)}, {prop: "writeByte", name: "writeByte", pkg: "compress/flate", typ: $funcType([$Uint8], [], false)}, {prop: "writeCopy", name: "writeCopy", pkg: "compress/flate", typ: $funcType([$Int, $Int], [$Int], false)}, {prop: "tryWriteCopy", name: "tryWriteCopy", pkg: "compress/flate", typ: $funcType([$Int, $Int], [$Int], false)}, {prop: "readFlush", name: "readFlush", pkg: "compress/flate", typ: $funcType([], [sliceType$4], false)}];
 48639  	ptrType$3.methods = [{prop: "reset", name: "reset", pkg: "compress/flate", typ: $funcType([io.Writer], [], false)}, {prop: "flush", name: "flush", pkg: "compress/flate", typ: $funcType([], [], false)}, {prop: "write", name: "write", pkg: "compress/flate", typ: $funcType([sliceType$4], [], false)}, {prop: "writeBits", name: "writeBits", pkg: "compress/flate", typ: $funcType([$Int32, $Uint], [], false)}, {prop: "writeBytes", name: "writeBytes", pkg: "compress/flate", typ: $funcType([sliceType$4], [], false)}, {prop: "generateCodegen", name: "generateCodegen", pkg: "compress/flate", typ: $funcType([$Int, $Int, ptrType, ptrType], [], false)}, {prop: "dynamicSize", name: "dynamicSize", pkg: "compress/flate", typ: $funcType([ptrType, ptrType, $Int], [$Int, $Int], false)}, {prop: "fixedSize", name: "fixedSize", pkg: "compress/flate", typ: $funcType([$Int], [$Int], false)}, {prop: "storedSize", name: "storedSize", pkg: "compress/flate", typ: $funcType([sliceType$4], [$Int, $Bool], false)}, {prop: "writeCode", name: "writeCode", pkg: "compress/flate", typ: $funcType([hcode], [], false)}, {prop: "writeDynamicHeader", name: "writeDynamicHeader", pkg: "compress/flate", typ: $funcType([$Int, $Int, $Int, $Bool], [], false)}, {prop: "writeStoredHeader", name: "writeStoredHeader", pkg: "compress/flate", typ: $funcType([$Int, $Bool], [], false)}, {prop: "writeFixedHeader", name: "writeFixedHeader", pkg: "compress/flate", typ: $funcType([$Bool], [], false)}, {prop: "writeBlock", name: "writeBlock", pkg: "compress/flate", typ: $funcType([sliceType$5, $Bool, sliceType$4], [], false)}, {prop: "writeBlockDynamic", name: "writeBlockDynamic", pkg: "compress/flate", typ: $funcType([sliceType$5, $Bool, sliceType$4], [], false)}, {prop: "indexTokens", name: "indexTokens", pkg: "compress/flate", typ: $funcType([sliceType$5], [$Int, $Int], false)}, {prop: "writeTokens", name: "writeTokens", pkg: "compress/flate", typ: $funcType([sliceType$5, sliceType$8, sliceType$8], [], false)}, {prop: "writeBlockHuff", name: "writeBlockHuff", pkg: "compress/flate", typ: $funcType([$Bool, sliceType$4], [], false)}];
 48640  	ptrType$14.methods = [{prop: "set", name: "set", pkg: "compress/flate", typ: $funcType([$Uint16, $Uint16], [], false)}];
 48641  	ptrType.methods = [{prop: "bitLength", name: "bitLength", pkg: "compress/flate", typ: $funcType([sliceType$7], [$Int], false)}, {prop: "bitCounts", name: "bitCounts", pkg: "compress/flate", typ: $funcType([sliceType$9, $Int32], [sliceType$7], false)}, {prop: "assignEncodingAndSize", name: "assignEncodingAndSize", pkg: "compress/flate", typ: $funcType([sliceType$7, sliceType$9], [], false)}, {prop: "generate", name: "generate", pkg: "compress/flate", typ: $funcType([sliceType$7, $Int32], [], false)}];
 48642  	byLiteral.methods = [{prop: "Len", name: "Len", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Less", name: "Less", pkg: "", typ: $funcType([$Int, $Int], [$Bool], false)}, {prop: "Swap", name: "Swap", pkg: "", typ: $funcType([$Int, $Int], [], false)}];
 48643  	ptrType$7.methods = [{prop: "sort", name: "sort", pkg: "compress/flate", typ: $funcType([sliceType$9], [], false)}];
 48644  	byFreq.methods = [{prop: "Len", name: "Len", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Less", name: "Less", pkg: "", typ: $funcType([$Int, $Int], [$Bool], false)}, {prop: "Swap", name: "Swap", pkg: "", typ: $funcType([$Int, $Int], [], false)}];
 48645  	ptrType$8.methods = [{prop: "sort", name: "sort", pkg: "compress/flate", typ: $funcType([sliceType$9], [], false)}];
 48646  	CorruptInputError.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}];
 48647  	InternalError.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}];
 48648  	ptrType$9.methods = [{prop: "init", name: "init", pkg: "compress/flate", typ: $funcType([sliceType$10], [$Bool], false)}];
 48649  	ptrType$10.methods = [{prop: "nextBlock", name: "nextBlock", pkg: "compress/flate", typ: $funcType([], [], false)}, {prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType$4], [$Int, $error], false)}, {prop: "Close", name: "Close", pkg: "", typ: $funcType([], [$error], false)}, {prop: "readHuffman", name: "readHuffman", pkg: "compress/flate", typ: $funcType([], [$error], false)}, {prop: "huffmanBlock", name: "huffmanBlock", pkg: "compress/flate", typ: $funcType([], [], false)}, {prop: "dataBlock", name: "dataBlock", pkg: "compress/flate", typ: $funcType([], [], false)}, {prop: "copyData", name: "copyData", pkg: "compress/flate", typ: $funcType([], [], false)}, {prop: "finishBlock", name: "finishBlock", pkg: "compress/flate", typ: $funcType([], [], false)}, {prop: "moreBits", name: "moreBits", pkg: "compress/flate", typ: $funcType([], [$error], false)}, {prop: "huffSym", name: "huffSym", pkg: "compress/flate", typ: $funcType([ptrType$9], [$Int, $error], false)}, {prop: "Reset", name: "Reset", pkg: "", typ: $funcType([io.Reader, sliceType$4], [$error], false)}];
 48650  	token.methods = [{prop: "literal", name: "literal", pkg: "compress/flate", typ: $funcType([], [$Uint32], false)}, {prop: "offset", name: "offset", pkg: "compress/flate", typ: $funcType([], [$Uint32], false)}, {prop: "length", name: "length", pkg: "compress/flate", typ: $funcType([], [$Uint32], false)}];
 48651  	dictDecoder.init("compress/flate", [{prop: "hist", name: "hist", anonymous: false, exported: false, typ: sliceType$4, tag: ""}, {prop: "wrPos", name: "wrPos", anonymous: false, exported: false, typ: $Int, tag: ""}, {prop: "rdPos", name: "rdPos", anonymous: false, exported: false, typ: $Int, tag: ""}, {prop: "full", name: "full", anonymous: false, exported: false, typ: $Bool, tag: ""}]);
 48652  	huffmanBitWriter.init("compress/flate", [{prop: "writer", name: "writer", anonymous: false, exported: false, typ: io.Writer, tag: ""}, {prop: "bits", name: "bits", anonymous: false, exported: false, typ: $Uint64, tag: ""}, {prop: "nbits", name: "nbits", anonymous: false, exported: false, typ: $Uint, tag: ""}, {prop: "bytes", name: "bytes", anonymous: false, exported: false, typ: arrayType$5, tag: ""}, {prop: "codegenFreq", name: "codegenFreq", anonymous: false, exported: false, typ: arrayType$6, tag: ""}, {prop: "nbytes", name: "nbytes", anonymous: false, exported: false, typ: $Int, tag: ""}, {prop: "literalFreq", name: "literalFreq", anonymous: false, exported: false, typ: sliceType$7, tag: ""}, {prop: "offsetFreq", name: "offsetFreq", anonymous: false, exported: false, typ: sliceType$7, tag: ""}, {prop: "codegen", name: "codegen", anonymous: false, exported: false, typ: sliceType$4, tag: ""}, {prop: "literalEncoding", name: "literalEncoding", anonymous: false, exported: false, typ: ptrType, tag: ""}, {prop: "offsetEncoding", name: "offsetEncoding", anonymous: false, exported: false, typ: ptrType, tag: ""}, {prop: "codegenEncoding", name: "codegenEncoding", anonymous: false, exported: false, typ: ptrType, tag: ""}, {prop: "err", name: "err", anonymous: false, exported: false, typ: $error, tag: ""}]);
 48653  	hcode.init("compress/flate", [{prop: "code", name: "code", anonymous: false, exported: false, typ: $Uint16, tag: ""}, {prop: "len", name: "len", anonymous: false, exported: false, typ: $Uint16, tag: ""}]);
 48654  	huffmanEncoder.init("compress/flate", [{prop: "codes", name: "codes", anonymous: false, exported: false, typ: sliceType$8, tag: ""}, {prop: "freqcache", name: "freqcache", anonymous: false, exported: false, typ: sliceType$9, tag: ""}, {prop: "bitCount", name: "bitCount", anonymous: false, exported: false, typ: arrayType$7, tag: ""}, {prop: "lns", name: "lns", anonymous: false, exported: false, typ: byLiteral, tag: ""}, {prop: "lfs", name: "lfs", anonymous: false, exported: false, typ: byFreq, tag: ""}]);
 48655  	literalNode.init("compress/flate", [{prop: "literal", name: "literal", anonymous: false, exported: false, typ: $Uint16, tag: ""}, {prop: "freq", name: "freq", anonymous: false, exported: false, typ: $Int32, tag: ""}]);
 48656  	levelInfo.init("compress/flate", [{prop: "level", name: "level", anonymous: false, exported: false, typ: $Int32, tag: ""}, {prop: "lastFreq", name: "lastFreq", anonymous: false, exported: false, typ: $Int32, tag: ""}, {prop: "nextCharFreq", name: "nextCharFreq", anonymous: false, exported: false, typ: $Int32, tag: ""}, {prop: "nextPairFreq", name: "nextPairFreq", anonymous: false, exported: false, typ: $Int32, tag: ""}, {prop: "needed", name: "needed", anonymous: false, exported: false, typ: $Int32, tag: ""}]);
 48657  	byLiteral.init(literalNode);
 48658  	byFreq.init(literalNode);
 48659  	Resetter.init([{prop: "Reset", name: "Reset", pkg: "", typ: $funcType([io.Reader, sliceType$4], [$error], false)}]);
 48660  	huffmanDecoder.init("compress/flate", [{prop: "min", name: "min", anonymous: false, exported: false, typ: $Int, tag: ""}, {prop: "chunks", name: "chunks", anonymous: false, exported: false, typ: arrayType, tag: ""}, {prop: "links", name: "links", anonymous: false, exported: false, typ: sliceType$1, tag: ""}, {prop: "linkMask", name: "linkMask", anonymous: false, exported: false, typ: $Uint32, tag: ""}]);
 48661  	Reader.init([{prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType$4], [$Int, $error], false)}, {prop: "ReadByte", name: "ReadByte", pkg: "", typ: $funcType([], [$Uint8, $error], false)}]);
 48662  	decompressor.init("compress/flate", [{prop: "r", name: "r", anonymous: false, exported: false, typ: Reader, tag: ""}, {prop: "roffset", name: "roffset", anonymous: false, exported: false, typ: $Int64, tag: ""}, {prop: "b", name: "b", anonymous: false, exported: false, typ: $Uint32, tag: ""}, {prop: "nb", name: "nb", anonymous: false, exported: false, typ: $Uint, tag: ""}, {prop: "h1", name: "h1", anonymous: false, exported: false, typ: huffmanDecoder, tag: ""}, {prop: "h2", name: "h2", anonymous: false, exported: false, typ: huffmanDecoder, tag: ""}, {prop: "bits", name: "bits", anonymous: false, exported: false, typ: ptrType$11, tag: ""}, {prop: "codebits", name: "codebits", anonymous: false, exported: false, typ: ptrType$12, tag: ""}, {prop: "dict", name: "dict", anonymous: false, exported: false, typ: dictDecoder, tag: ""}, {prop: "buf", name: "buf", anonymous: false, exported: false, typ: arrayType$15, tag: ""}, {prop: "step", name: "step", anonymous: false, exported: false, typ: funcType$3, tag: ""}, {prop: "stepState", name: "stepState", anonymous: false, exported: false, typ: $Int, tag: ""}, {prop: "final$12", name: "final", anonymous: false, exported: false, typ: $Bool, tag: ""}, {prop: "err", name: "err", anonymous: false, exported: false, typ: $error, tag: ""}, {prop: "toRead", name: "toRead", anonymous: false, exported: false, typ: sliceType$4, tag: ""}, {prop: "hl", name: "hl", anonymous: false, exported: false, typ: ptrType$9, tag: ""}, {prop: "hd", name: "hd", anonymous: false, exported: false, typ: ptrType$9, tag: ""}, {prop: "copyLen", name: "copyLen", anonymous: false, exported: false, typ: $Int, tag: ""}, {prop: "copyDist", name: "copyDist", anonymous: false, exported: false, typ: $Int, tag: ""}]);
 48663  	$init = function() {
 48664  		$pkg.$init = function() {};
 48665  		/* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 48666  		$r = bufio.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 48667  		$r = fmt.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 48668  		$r = io.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 48669  		$r = math.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 48670  		$r = bits.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 48671  		$r = sort.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 48672  		$r = strconv.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 48673  		$r = sync.$init(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 48674  		huffOffset = ptrType.nil;
 48675  		fixedOnce = new sync.Once.ptr(new sync.Mutex.ptr(0, 0), 0);
 48676  		fixedHuffmanDecoder = new huffmanDecoder.ptr(0, arrayType.zero(), sliceType$1.nil, 0);
 48677  		fixedOffsetEncoding = generateFixedOffsetEncoding();
 48678  		fixedLiteralEncoding = generateFixedLiteralEncoding();
 48679  		codeOrder = $toNativeArray($kindInt, [16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]);
 48680  		$r = init(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 48681  		/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
 48682  	};
 48683  	$pkg.$init = $init;
 48684  	return $pkg;
 48685  })();
 48686  $packages["hash"] = (function() {
 48687  	var $pkg = {}, $init, io, Hash, sliceType;
 48688  	io = $packages["io"];
 48689  	Hash = $pkg.Hash = $newType(8, $kindInterface, "hash.Hash", true, "hash", true, null);
 48690  	sliceType = $sliceType($Uint8);
 48691  	Hash.init([{prop: "BlockSize", name: "BlockSize", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Reset", name: "Reset", pkg: "", typ: $funcType([], [], false)}, {prop: "Size", name: "Size", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Sum", name: "Sum", pkg: "", typ: $funcType([sliceType], [sliceType], false)}, {prop: "Write", name: "Write", pkg: "", typ: $funcType([sliceType], [$Int, $error], false)}]);
 48692  	$init = function() {
 48693  		$pkg.$init = function() {};
 48694  		/* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 48695  		$r = io.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 48696  		/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
 48697  	};
 48698  	$pkg.$init = $init;
 48699  	return $pkg;
 48700  })();
 48701  $packages["hash/crc32"] = (function() {
 48702  	var $pkg = {}, $init, errors, hash, sync, Table, slicing8Table, ptrType, ptrType$1, arrayType$1, arrayType$2, castagnoliTable, updateCastagnoli, ieeeTable8, ieeeArchImpl, updateIEEE, ieeeOnce, ieeeInit, Update, ChecksumIEEE, simpleMakeTable, simplePopulateTable, simpleUpdate, slicingMakeTable, slicingUpdate, archAvailableIEEE, archInitIEEE, archUpdateIEEE;
 48703  	errors = $packages["errors"];
 48704  	hash = $packages["hash"];
 48705  	sync = $packages["sync"];
 48706  	Table = $pkg.Table = $newType(1024, $kindArray, "crc32.Table", true, "hash/crc32", true, null);
 48707  	slicing8Table = $pkg.slicing8Table = $newType(8192, $kindArray, "crc32.slicing8Table", true, "hash/crc32", false, null);
 48708  	ptrType = $ptrType(Table);
 48709  	ptrType$1 = $ptrType(slicing8Table);
 48710  	arrayType$1 = $arrayType($Uint32, 256);
 48711  	arrayType$2 = $arrayType(Table, 8);
 48712  	ieeeInit = function() {
 48713  		ieeeArchImpl = archAvailableIEEE();
 48714  		if (ieeeArchImpl) {
 48715  			archInitIEEE();
 48716  			updateIEEE = archUpdateIEEE;
 48717  		} else {
 48718  			ieeeTable8 = slicingMakeTable(3988292384);
 48719  			updateIEEE = (function(crc, p) {
 48720  				var crc, p;
 48721  				return slicingUpdate(crc, ieeeTable8, p);
 48722  			});
 48723  		}
 48724  	};
 48725  	Update = function(crc, tab, p) {
 48726  		var _1, _r, _r$1, crc, p, tab, $s, $r;
 48727  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _r = $f._r; _r$1 = $f._r$1; crc = $f.crc; p = $f.p; tab = $f.tab; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 48728  			_1 = tab;
 48729  			/* */ if ($equal(_1, (castagnoliTable), Table)) { $s = 2; continue; }
 48730  			/* */ if ($equal(_1, ($pkg.IEEETable), Table)) { $s = 3; continue; }
 48731  			/* */ $s = 4; continue;
 48732  			/* if ($equal(_1, (castagnoliTable), Table)) { */ case 2:
 48733  				_r = updateCastagnoli(crc, p); /* */ $s = 6; case 6: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 48734  				$s = -1; return _r;
 48735  			/* } else if ($equal(_1, ($pkg.IEEETable), Table)) { */ case 3:
 48736  				$r = ieeeOnce.Do(ieeeInit); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 48737  				_r$1 = updateIEEE(crc, p); /* */ $s = 8; case 8: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 48738  				$s = -1; return _r$1;
 48739  			/* } else { */ case 4:
 48740  				$s = -1; return simpleUpdate(crc, tab, p);
 48741  			/* } */ case 5:
 48742  		case 1:
 48743  		$s = -1; return 0;
 48744  		/* */ } return; } if ($f === undefined) { $f = { $blk: Update }; } $f._1 = _1; $f._r = _r; $f._r$1 = _r$1; $f.crc = crc; $f.p = p; $f.tab = tab; $f.$s = $s; $f.$r = $r; return $f;
 48745  	};
 48746  	$pkg.Update = Update;
 48747  	ChecksumIEEE = function(data) {
 48748  		var _r, data, $s, $r;
 48749  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; data = $f.data; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 48750  		$r = ieeeOnce.Do(ieeeInit); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 48751  		_r = updateIEEE(0, data); /* */ $s = 2; case 2: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 48752  		$s = -1; return _r;
 48753  		/* */ } return; } if ($f === undefined) { $f = { $blk: ChecksumIEEE }; } $f._r = _r; $f.data = data; $f.$s = $s; $f.$r = $r; return $f;
 48754  	};
 48755  	$pkg.ChecksumIEEE = ChecksumIEEE;
 48756  	simpleMakeTable = function(poly) {
 48757  		var poly, t;
 48758  		t = arrayType$1.zero();
 48759  		simplePopulateTable(poly, t);
 48760  		return t;
 48761  	};
 48762  	simplePopulateTable = function(poly, t) {
 48763  		var crc, i, j, poly, t, y;
 48764  		i = 0;
 48765  		while (true) {
 48766  			if (!(i < 256)) { break; }
 48767  			crc = ((i >>> 0));
 48768  			j = 0;
 48769  			while (true) {
 48770  				if (!(j < 8)) { break; }
 48771  				if (((crc & 1) >>> 0) === 1) {
 48772  					crc = (((crc >>> 1 >>> 0)) ^ poly) >>> 0;
 48773  				} else {
 48774  					crc = (y = (1), y < 32 ? (crc >>> y) : 0) >>> 0;
 48775  				}
 48776  				j = j + (1) >> 0;
 48777  			}
 48778  			t.nilCheck, ((i < 0 || i >= t.length) ? ($throwRuntimeError("index out of range"), undefined) : t[i] = crc);
 48779  			i = i + (1) >> 0;
 48780  		}
 48781  	};
 48782  	simpleUpdate = function(crc, tab, p) {
 48783  		var _i, _ref, crc, p, tab, v, x;
 48784  		crc = ~crc >>> 0;
 48785  		_ref = p;
 48786  		_i = 0;
 48787  		while (true) {
 48788  			if (!(_i < _ref.$length)) { break; }
 48789  			v = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
 48790  			crc = ((x = (((crc << 24 >>> 24)) ^ v) << 24 >>> 24, (tab.nilCheck, ((x < 0 || x >= tab.length) ? ($throwRuntimeError("index out of range"), undefined) : tab[x]))) ^ ((crc >>> 8 >>> 0))) >>> 0;
 48791  			_i++;
 48792  		}
 48793  		return ~crc >>> 0;
 48794  	};
 48795  	slicingMakeTable = function(poly) {
 48796  		var crc, i, j, poly, t, x, x$1, x$2, x$3;
 48797  		t = arrayType$2.zero();
 48798  		simplePopulateTable(poly, (t.nilCheck, t[0]));
 48799  		i = 0;
 48800  		while (true) {
 48801  			if (!(i < 256)) { break; }
 48802  			crc = (x = (t.nilCheck, t[0]), ((i < 0 || i >= x.length) ? ($throwRuntimeError("index out of range"), undefined) : x[i]));
 48803  			j = 1;
 48804  			while (true) {
 48805  				if (!(j < 8)) { break; }
 48806  				crc = ((x$1 = (t.nilCheck, t[0]), x$2 = (crc & 255) >>> 0, ((x$2 < 0 || x$2 >= x$1.length) ? ($throwRuntimeError("index out of range"), undefined) : x$1[x$2])) ^ ((crc >>> 8 >>> 0))) >>> 0;
 48807  				(x$3 = (t.nilCheck, ((j < 0 || j >= t.length) ? ($throwRuntimeError("index out of range"), undefined) : t[j])), ((i < 0 || i >= x$3.length) ? ($throwRuntimeError("index out of range"), undefined) : x$3[i] = crc));
 48808  				j = j + (1) >> 0;
 48809  			}
 48810  			i = i + (1) >> 0;
 48811  		}
 48812  		return t;
 48813  	};
 48814  	slicingUpdate = function(crc, tab, p) {
 48815  		var crc, p, tab, x, x$1, x$10, x$11, x$12, x$13, x$14, x$15, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9;
 48816  		if (p.$length >= 16) {
 48817  			crc = ~crc >>> 0;
 48818  			while (true) {
 48819  				if (!(p.$length > 8)) { break; }
 48820  				crc = (crc ^ ((((((((((0 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 0]) >>> 0)) | ((((1 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 1]) >>> 0)) << 8 >>> 0)) >>> 0) | ((((2 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 2]) >>> 0)) << 16 >>> 0)) >>> 0) | ((((3 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 3]) >>> 0)) << 24 >>> 0)) >>> 0))) >>> 0;
 48821  				crc = ((((((((((((((x = (tab.nilCheck, tab[0]), x$1 = (7 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 7]), ((x$1 < 0 || x$1 >= x.length) ? ($throwRuntimeError("index out of range"), undefined) : x[x$1])) ^ (x$2 = (tab.nilCheck, tab[1]), x$3 = (6 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 6]), ((x$3 < 0 || x$3 >= x$2.length) ? ($throwRuntimeError("index out of range"), undefined) : x$2[x$3]))) >>> 0) ^ (x$4 = (tab.nilCheck, tab[2]), x$5 = (5 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 5]), ((x$5 < 0 || x$5 >= x$4.length) ? ($throwRuntimeError("index out of range"), undefined) : x$4[x$5]))) >>> 0) ^ (x$6 = (tab.nilCheck, tab[3]), x$7 = (4 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 4]), ((x$7 < 0 || x$7 >= x$6.length) ? ($throwRuntimeError("index out of range"), undefined) : x$6[x$7]))) >>> 0) ^ (x$8 = (tab.nilCheck, tab[4]), x$9 = crc >>> 24 >>> 0, ((x$9 < 0 || x$9 >= x$8.length) ? ($throwRuntimeError("index out of range"), undefined) : x$8[x$9]))) >>> 0) ^ (x$10 = (tab.nilCheck, tab[5]), x$11 = (((crc >>> 16 >>> 0)) & 255) >>> 0, ((x$11 < 0 || x$11 >= x$10.length) ? ($throwRuntimeError("index out of range"), undefined) : x$10[x$11]))) >>> 0) ^ (x$12 = (tab.nilCheck, tab[6]), x$13 = (((crc >>> 8 >>> 0)) & 255) >>> 0, ((x$13 < 0 || x$13 >= x$12.length) ? ($throwRuntimeError("index out of range"), undefined) : x$12[x$13]))) >>> 0) ^ (x$14 = (tab.nilCheck, tab[7]), x$15 = (crc & 255) >>> 0, ((x$15 < 0 || x$15 >= x$14.length) ? ($throwRuntimeError("index out of range"), undefined) : x$14[x$15]))) >>> 0;
 48822  				p = $subslice(p, 8);
 48823  			}
 48824  			crc = ~crc >>> 0;
 48825  		}
 48826  		if (p.$length === 0) {
 48827  			return crc;
 48828  		}
 48829  		return simpleUpdate(crc, (tab.nilCheck, tab[0]), p);
 48830  	};
 48831  	archAvailableIEEE = function() {
 48832  		return false;
 48833  	};
 48834  	archInitIEEE = function() {
 48835  		$panic(new $String("not available"));
 48836  	};
 48837  	archUpdateIEEE = function(crc, p) {
 48838  		var crc, p;
 48839  		$panic(new $String("not available"));
 48840  	};
 48841  	Table.init($Uint32, 256);
 48842  	slicing8Table.init(Table, 8);
 48843  	$init = function() {
 48844  		$pkg.$init = function() {};
 48845  		/* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 48846  		$r = errors.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 48847  		$r = hash.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 48848  		$r = sync.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 48849  		castagnoliTable = ptrType.nil;
 48850  		updateCastagnoli = $throwNilPointerError;
 48851  		ieeeTable8 = ptrType$1.nil;
 48852  		ieeeArchImpl = false;
 48853  		updateIEEE = $throwNilPointerError;
 48854  		ieeeOnce = new sync.Once.ptr(new sync.Mutex.ptr(0, 0), 0);
 48855  		$pkg.IEEETable = simpleMakeTable(3988292384);
 48856  		/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
 48857  	};
 48858  	$pkg.$init = $init;
 48859  	return $pkg;
 48860  })();
 48861  $packages["compress/gzip"] = (function() {
 48862  	var $pkg = {}, $init, bufio, flate, binary, errors, fmt, crc32, io, time, Header, Reader, sliceType, ptrType, arrayType, ptrType$1, sliceType$1, le, noEOF, NewReader;
 48863  	bufio = $packages["bufio"];
 48864  	flate = $packages["compress/flate"];
 48865  	binary = $packages["encoding/binary"];
 48866  	errors = $packages["errors"];
 48867  	fmt = $packages["fmt"];
 48868  	crc32 = $packages["hash/crc32"];
 48869  	io = $packages["io"];
 48870  	time = $packages["time"];
 48871  	Header = $pkg.Header = $newType(0, $kindStruct, "gzip.Header", true, "compress/gzip", true, function(Comment_, Extra_, ModTime_, Name_, OS_) {
 48872  		this.$val = this;
 48873  		if (arguments.length === 0) {
 48874  			this.Comment = "";
 48875  			this.Extra = sliceType.nil;
 48876  			this.ModTime = new time.Time.ptr(new $Uint64(0, 0), new $Int64(0, 0), ptrType.nil);
 48877  			this.Name = "";
 48878  			this.OS = 0;
 48879  			return;
 48880  		}
 48881  		this.Comment = Comment_;
 48882  		this.Extra = Extra_;
 48883  		this.ModTime = ModTime_;
 48884  		this.Name = Name_;
 48885  		this.OS = OS_;
 48886  	});
 48887  	Reader = $pkg.Reader = $newType(0, $kindStruct, "gzip.Reader", true, "compress/gzip", true, function(Header_, r_, decompressor_, digest_, size_, buf_, err_, multistream_) {
 48888  		this.$val = this;
 48889  		if (arguments.length === 0) {
 48890  			this.Header = new Header.ptr("", sliceType.nil, new time.Time.ptr(new $Uint64(0, 0), new $Int64(0, 0), ptrType.nil), "", 0);
 48891  			this.r = $ifaceNil;
 48892  			this.decompressor = $ifaceNil;
 48893  			this.digest = 0;
 48894  			this.size = 0;
 48895  			this.buf = arrayType.zero();
 48896  			this.err = $ifaceNil;
 48897  			this.multistream = false;
 48898  			return;
 48899  		}
 48900  		this.Header = Header_;
 48901  		this.r = r_;
 48902  		this.decompressor = decompressor_;
 48903  		this.digest = digest_;
 48904  		this.size = size_;
 48905  		this.buf = buf_;
 48906  		this.err = err_;
 48907  		this.multistream = multistream_;
 48908  	});
 48909  	sliceType = $sliceType($Uint8);
 48910  	ptrType = $ptrType(time.Location);
 48911  	arrayType = $arrayType($Uint8, 512);
 48912  	ptrType$1 = $ptrType(Reader);
 48913  	sliceType$1 = $sliceType($Int32);
 48914  	noEOF = function(err) {
 48915  		var err;
 48916  		if ($interfaceIsEqual(err, io.EOF)) {
 48917  			return io.ErrUnexpectedEOF;
 48918  		}
 48919  		return err;
 48920  	};
 48921  	NewReader = function(r) {
 48922  		var _r, err, r, z, $s, $r;
 48923  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; err = $f.err; r = $f.r; z = $f.z; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 48924  		z = new Reader.ptr(new Header.ptr("", sliceType.nil, new time.Time.ptr(new $Uint64(0, 0), new $Int64(0, 0), ptrType.nil), "", 0), $ifaceNil, $ifaceNil, 0, 0, arrayType.zero(), $ifaceNil, false);
 48925  		_r = z.Reset(r); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 48926  		err = _r;
 48927  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 48928  			$s = -1; return [ptrType$1.nil, err];
 48929  		}
 48930  		$s = -1; return [z, $ifaceNil];
 48931  		/* */ } return; } if ($f === undefined) { $f = { $blk: NewReader }; } $f._r = _r; $f.err = err; $f.r = r; $f.z = z; $f.$s = $s; $f.$r = $r; return $f;
 48932  	};
 48933  	$pkg.NewReader = NewReader;
 48934  	Reader.ptr.prototype.Reset = function(r) {
 48935  		var _r, _tuple, _tuple$1, ok, r, rr, z, $s, $r;
 48936  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; ok = $f.ok; r = $f.r; rr = $f.rr; z = $f.z; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 48937  		z = this;
 48938  		Reader.copy(z, new Reader.ptr(new Header.ptr("", sliceType.nil, new time.Time.ptr(new $Uint64(0, 0), new $Int64(0, 0), ptrType.nil), "", 0), $ifaceNil, z.decompressor, 0, 0, arrayType.zero(), $ifaceNil, true));
 48939  		_tuple = $assertType(r, flate.Reader, true);
 48940  		rr = _tuple[0];
 48941  		ok = _tuple[1];
 48942  		if (ok) {
 48943  			z.r = rr;
 48944  		} else {
 48945  			z.r = bufio.NewReader(r);
 48946  		}
 48947  		_r = z.readHeader(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 48948  		_tuple$1 = _r;
 48949  		Header.copy(z.Header, _tuple$1[0]);
 48950  		z.err = _tuple$1[1];
 48951  		$s = -1; return z.err;
 48952  		/* */ } return; } if ($f === undefined) { $f = { $blk: Reader.ptr.prototype.Reset }; } $f._r = _r; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.ok = ok; $f.r = r; $f.rr = rr; $f.z = z; $f.$s = $s; $f.$r = $r; return $f;
 48953  	};
 48954  	Reader.prototype.Reset = function(r) { return this.$val.Reset(r); };
 48955  	Reader.ptr.prototype.Multistream = function(ok) {
 48956  		var ok, z;
 48957  		z = this;
 48958  		z.multistream = ok;
 48959  	};
 48960  	Reader.prototype.Multistream = function(ok) { return this.$val.Multistream(ok); };
 48961  	Reader.ptr.prototype.readString = function() {
 48962  		var _i, _r, _r$1, _ref, _tuple, err, i, needConv, s, v, x, x$1, x$2, z, $s, $r;
 48963  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _i = $f._i; _r = $f._r; _r$1 = $f._r$1; _ref = $f._ref; _tuple = $f._tuple; err = $f.err; i = $f.i; needConv = $f.needConv; s = $f.s; v = $f.v; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; z = $f.z; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 48964  		z = this;
 48965  		err = $ifaceNil;
 48966  		needConv = false;
 48967  		i = 0;
 48968  		/* while (true) { */ case 1:
 48969  			if (i >= 512) {
 48970  				$s = -1; return ["", $pkg.ErrHeader];
 48971  			}
 48972  			_r = z.r.ReadByte(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 48973  			_tuple = _r;
 48974  			(x = z.buf, ((i < 0 || i >= x.length) ? ($throwRuntimeError("index out of range"), undefined) : x[i] = _tuple[0]));
 48975  			err = _tuple[1];
 48976  			if (!($interfaceIsEqual(err, $ifaceNil))) {
 48977  				$s = -1; return ["", err];
 48978  			}
 48979  			if ((x$1 = z.buf, ((i < 0 || i >= x$1.length) ? ($throwRuntimeError("index out of range"), undefined) : x$1[i])) > 127) {
 48980  				needConv = true;
 48981  			}
 48982  			/* */ if ((x$2 = z.buf, ((i < 0 || i >= x$2.length) ? ($throwRuntimeError("index out of range"), undefined) : x$2[i])) === 0) { $s = 4; continue; }
 48983  			/* */ $s = 5; continue;
 48984  			/* if ((x$2 = z.buf, ((i < 0 || i >= x$2.length) ? ($throwRuntimeError("index out of range"), undefined) : x$2[i])) === 0) { */ case 4:
 48985  				_r$1 = crc32.Update(z.digest, crc32.IEEETable, $subslice(new sliceType(z.buf), 0, (i + 1 >> 0))); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 48986  				z.digest = _r$1;
 48987  				if (needConv) {
 48988  					s = $makeSlice(sliceType$1, 0, i);
 48989  					_ref = $subslice(new sliceType(z.buf), 0, i);
 48990  					_i = 0;
 48991  					while (true) {
 48992  						if (!(_i < _ref.$length)) { break; }
 48993  						v = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
 48994  						s = $append(s, ((v >> 0)));
 48995  						_i++;
 48996  					}
 48997  					$s = -1; return [($runesToString(s)), $ifaceNil];
 48998  				}
 48999  				$s = -1; return [($bytesToString($subslice(new sliceType(z.buf), 0, i))), $ifaceNil];
 49000  			/* } */ case 5:
 49001  			i = i + (1) >> 0;
 49002  		/* } */ $s = 1; continue; case 2:
 49003  		$s = -1; return ["", $ifaceNil];
 49004  		/* */ } return; } if ($f === undefined) { $f = { $blk: Reader.ptr.prototype.readString }; } $f._i = _i; $f._r = _r; $f._r$1 = _r$1; $f._ref = _ref; $f._tuple = _tuple; $f.err = err; $f.i = i; $f.needConv = needConv; $f.s = s; $f.v = v; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.z = z; $f.$s = $s; $f.$r = $r; return $f;
 49005  	};
 49006  	Reader.prototype.readString = function() { return this.$val.readString(); };
 49007  	Reader.ptr.prototype.readHeader = function() {
 49008  		var _r, _r$1, _r$10, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$14, _tmp$15, _tmp$16, _tmp$17, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, _tuple$5, data, digest, err, flg, hdr, s, t, z, $s, $r;
 49009  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _r$10 = $f._r$10; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _r$8 = $f._r$8; _r$9 = $f._r$9; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$10 = $f._tmp$10; _tmp$11 = $f._tmp$11; _tmp$12 = $f._tmp$12; _tmp$13 = $f._tmp$13; _tmp$14 = $f._tmp$14; _tmp$15 = $f._tmp$15; _tmp$16 = $f._tmp$16; _tmp$17 = $f._tmp$17; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tmp$4 = $f._tmp$4; _tmp$5 = $f._tmp$5; _tmp$6 = $f._tmp$6; _tmp$7 = $f._tmp$7; _tmp$8 = $f._tmp$8; _tmp$9 = $f._tmp$9; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; _tuple$4 = $f._tuple$4; _tuple$5 = $f._tuple$5; data = $f.data; digest = $f.digest; err = $f.err; flg = $f.flg; hdr = $f.hdr; s = $f.s; t = $f.t; z = $f.z; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 49010  		hdr = new Header.ptr("", sliceType.nil, new time.Time.ptr(new $Uint64(0, 0), new $Int64(0, 0), ptrType.nil), "", 0);
 49011  		err = $ifaceNil;
 49012  		z = this;
 49013  		_r = io.ReadFull(z.r, $subslice(new sliceType(z.buf), 0, 10)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 49014  		_tuple = _r;
 49015  		err = _tuple[1];
 49016  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 49017  			_tmp = $clone(hdr, Header);
 49018  			_tmp$1 = err;
 49019  			Header.copy(hdr, _tmp);
 49020  			err = _tmp$1;
 49021  			$s = -1; return [hdr, err];
 49022  		}
 49023  		if (!((z.buf[0] === 31)) || !((z.buf[1] === 139)) || !((z.buf[2] === 8))) {
 49024  			_tmp$2 = $clone(hdr, Header);
 49025  			_tmp$3 = $pkg.ErrHeader;
 49026  			Header.copy(hdr, _tmp$2);
 49027  			err = _tmp$3;
 49028  			$s = -1; return [hdr, err];
 49029  		}
 49030  		flg = z.buf[3];
 49031  		t = (new $Int64(0, $clone(le, binary.littleEndian).Uint32($subslice(new sliceType(z.buf), 4, 8))));
 49032  		if ((t.$high > 0 || (t.$high === 0 && t.$low > 0))) {
 49033  			time.Time.copy(hdr.ModTime, time.Unix(t, new $Int64(0, 0)));
 49034  		}
 49035  		hdr.OS = z.buf[9];
 49036  		_r$1 = crc32.ChecksumIEEE($subslice(new sliceType(z.buf), 0, 10)); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 49037  		z.digest = _r$1;
 49038  		/* */ if (!((((flg & 4) >>> 0) === 0))) { $s = 3; continue; }
 49039  		/* */ $s = 4; continue;
 49040  		/* if (!((((flg & 4) >>> 0) === 0))) { */ case 3:
 49041  			_r$2 = io.ReadFull(z.r, $subslice(new sliceType(z.buf), 0, 2)); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 49042  			_tuple$1 = _r$2;
 49043  			err = _tuple$1[1];
 49044  			if (!($interfaceIsEqual(err, $ifaceNil))) {
 49045  				_tmp$4 = $clone(hdr, Header);
 49046  				_tmp$5 = noEOF(err);
 49047  				Header.copy(hdr, _tmp$4);
 49048  				err = _tmp$5;
 49049  				$s = -1; return [hdr, err];
 49050  			}
 49051  			_r$3 = crc32.Update(z.digest, crc32.IEEETable, $subslice(new sliceType(z.buf), 0, 2)); /* */ $s = 6; case 6: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 49052  			z.digest = _r$3;
 49053  			data = $makeSlice(sliceType, $clone(le, binary.littleEndian).Uint16($subslice(new sliceType(z.buf), 0, 2)));
 49054  			_r$4 = io.ReadFull(z.r, data); /* */ $s = 7; case 7: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 49055  			_tuple$2 = _r$4;
 49056  			err = _tuple$2[1];
 49057  			if (!($interfaceIsEqual(err, $ifaceNil))) {
 49058  				_tmp$6 = $clone(hdr, Header);
 49059  				_tmp$7 = noEOF(err);
 49060  				Header.copy(hdr, _tmp$6);
 49061  				err = _tmp$7;
 49062  				$s = -1; return [hdr, err];
 49063  			}
 49064  			_r$5 = crc32.Update(z.digest, crc32.IEEETable, data); /* */ $s = 8; case 8: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
 49065  			z.digest = _r$5;
 49066  			hdr.Extra = data;
 49067  		/* } */ case 4:
 49068  		s = "";
 49069  		/* */ if (!((((flg & 8) >>> 0) === 0))) { $s = 9; continue; }
 49070  		/* */ $s = 10; continue;
 49071  		/* if (!((((flg & 8) >>> 0) === 0))) { */ case 9:
 49072  			_r$6 = z.readString(); /* */ $s = 11; case 11: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
 49073  			_tuple$3 = _r$6;
 49074  			s = _tuple$3[0];
 49075  			err = _tuple$3[1];
 49076  			if (!($interfaceIsEqual(err, $ifaceNil))) {
 49077  				_tmp$8 = $clone(hdr, Header);
 49078  				_tmp$9 = err;
 49079  				Header.copy(hdr, _tmp$8);
 49080  				err = _tmp$9;
 49081  				$s = -1; return [hdr, err];
 49082  			}
 49083  			hdr.Name = s;
 49084  		/* } */ case 10:
 49085  		/* */ if (!((((flg & 16) >>> 0) === 0))) { $s = 12; continue; }
 49086  		/* */ $s = 13; continue;
 49087  		/* if (!((((flg & 16) >>> 0) === 0))) { */ case 12:
 49088  			_r$7 = z.readString(); /* */ $s = 14; case 14: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
 49089  			_tuple$4 = _r$7;
 49090  			s = _tuple$4[0];
 49091  			err = _tuple$4[1];
 49092  			if (!($interfaceIsEqual(err, $ifaceNil))) {
 49093  				_tmp$10 = $clone(hdr, Header);
 49094  				_tmp$11 = err;
 49095  				Header.copy(hdr, _tmp$10);
 49096  				err = _tmp$11;
 49097  				$s = -1; return [hdr, err];
 49098  			}
 49099  			hdr.Comment = s;
 49100  		/* } */ case 13:
 49101  		/* */ if (!((((flg & 2) >>> 0) === 0))) { $s = 15; continue; }
 49102  		/* */ $s = 16; continue;
 49103  		/* if (!((((flg & 2) >>> 0) === 0))) { */ case 15:
 49104  			_r$8 = io.ReadFull(z.r, $subslice(new sliceType(z.buf), 0, 2)); /* */ $s = 17; case 17: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
 49105  			_tuple$5 = _r$8;
 49106  			err = _tuple$5[1];
 49107  			if (!($interfaceIsEqual(err, $ifaceNil))) {
 49108  				_tmp$12 = $clone(hdr, Header);
 49109  				_tmp$13 = noEOF(err);
 49110  				Header.copy(hdr, _tmp$12);
 49111  				err = _tmp$13;
 49112  				$s = -1; return [hdr, err];
 49113  			}
 49114  			digest = $clone(le, binary.littleEndian).Uint16($subslice(new sliceType(z.buf), 0, 2));
 49115  			if (!((digest === ((z.digest << 16 >>> 16))))) {
 49116  				_tmp$14 = $clone(hdr, Header);
 49117  				_tmp$15 = $pkg.ErrHeader;
 49118  				Header.copy(hdr, _tmp$14);
 49119  				err = _tmp$15;
 49120  				$s = -1; return [hdr, err];
 49121  			}
 49122  		/* } */ case 16:
 49123  		z.digest = 0;
 49124  		/* */ if ($interfaceIsEqual(z.decompressor, $ifaceNil)) { $s = 18; continue; }
 49125  		/* */ $s = 19; continue;
 49126  		/* if ($interfaceIsEqual(z.decompressor, $ifaceNil)) { */ case 18:
 49127  			_r$9 = flate.NewReader(z.r); /* */ $s = 21; case 21: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 49128  			z.decompressor = _r$9;
 49129  			$s = 20; continue;
 49130  		/* } else { */ case 19:
 49131  			_r$10 = $assertType(z.decompressor, flate.Resetter).Reset(z.r, sliceType.nil); /* */ $s = 22; case 22: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
 49132  			_r$10;
 49133  		/* } */ case 20:
 49134  		_tmp$16 = $clone(hdr, Header);
 49135  		_tmp$17 = $ifaceNil;
 49136  		Header.copy(hdr, _tmp$16);
 49137  		err = _tmp$17;
 49138  		$s = -1; return [hdr, err];
 49139  		/* */ } return; } if ($f === undefined) { $f = { $blk: Reader.ptr.prototype.readHeader }; } $f._r = _r; $f._r$1 = _r$1; $f._r$10 = _r$10; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._r$8 = _r$8; $f._r$9 = _r$9; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$10 = _tmp$10; $f._tmp$11 = _tmp$11; $f._tmp$12 = _tmp$12; $f._tmp$13 = _tmp$13; $f._tmp$14 = _tmp$14; $f._tmp$15 = _tmp$15; $f._tmp$16 = _tmp$16; $f._tmp$17 = _tmp$17; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tmp$4 = _tmp$4; $f._tmp$5 = _tmp$5; $f._tmp$6 = _tmp$6; $f._tmp$7 = _tmp$7; $f._tmp$8 = _tmp$8; $f._tmp$9 = _tmp$9; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f._tuple$4 = _tuple$4; $f._tuple$5 = _tuple$5; $f.data = data; $f.digest = digest; $f.err = err; $f.flg = flg; $f.hdr = hdr; $f.s = s; $f.t = t; $f.z = z; $f.$s = $s; $f.$r = $r; return $f;
 49140  	};
 49141  	Reader.prototype.readHeader = function() { return this.$val.readHeader(); };
 49142  	Reader.ptr.prototype.Read = function(p) {
 49143  		var _r, _r$1, _r$2, _r$3, _r$4, _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$14, _tmp$15, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, _tuple$1, _tuple$2, _tuple$3, digest, err, err$1, n, p, size, z, $s, $r;
 49144  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$10 = $f._tmp$10; _tmp$11 = $f._tmp$11; _tmp$12 = $f._tmp$12; _tmp$13 = $f._tmp$13; _tmp$14 = $f._tmp$14; _tmp$15 = $f._tmp$15; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tmp$4 = $f._tmp$4; _tmp$5 = $f._tmp$5; _tmp$6 = $f._tmp$6; _tmp$7 = $f._tmp$7; _tmp$8 = $f._tmp$8; _tmp$9 = $f._tmp$9; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; digest = $f.digest; err = $f.err; err$1 = $f.err$1; n = $f.n; p = $f.p; size = $f.size; z = $f.z; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 49145  		n = 0;
 49146  		err = $ifaceNil;
 49147  		z = this;
 49148  		if (!($interfaceIsEqual(z.err, $ifaceNil))) {
 49149  			_tmp = 0;
 49150  			_tmp$1 = z.err;
 49151  			n = _tmp;
 49152  			err = _tmp$1;
 49153  			$s = -1; return [n, err];
 49154  		}
 49155  		_r = z.decompressor.Read(p); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 49156  		_tuple = _r;
 49157  		n = _tuple[0];
 49158  		z.err = _tuple[1];
 49159  		_r$1 = crc32.Update(z.digest, crc32.IEEETable, $subslice(p, 0, n)); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 49160  		z.digest = _r$1;
 49161  		z.size = z.size + (((n >>> 0))) >>> 0;
 49162  		if (!($interfaceIsEqual(z.err, io.EOF))) {
 49163  			_tmp$2 = n;
 49164  			_tmp$3 = z.err;
 49165  			n = _tmp$2;
 49166  			err = _tmp$3;
 49167  			$s = -1; return [n, err];
 49168  		}
 49169  		_r$2 = io.ReadFull(z.r, $subslice(new sliceType(z.buf), 0, 8)); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 49170  		_tuple$1 = _r$2;
 49171  		err$1 = _tuple$1[1];
 49172  		if (!($interfaceIsEqual(err$1, $ifaceNil))) {
 49173  			z.err = noEOF(err$1);
 49174  			_tmp$4 = n;
 49175  			_tmp$5 = z.err;
 49176  			n = _tmp$4;
 49177  			err = _tmp$5;
 49178  			$s = -1; return [n, err];
 49179  		}
 49180  		digest = $clone(le, binary.littleEndian).Uint32($subslice(new sliceType(z.buf), 0, 4));
 49181  		size = $clone(le, binary.littleEndian).Uint32($subslice(new sliceType(z.buf), 4, 8));
 49182  		if (!((digest === z.digest)) || !((size === z.size))) {
 49183  			z.err = $pkg.ErrChecksum;
 49184  			_tmp$6 = n;
 49185  			_tmp$7 = z.err;
 49186  			n = _tmp$6;
 49187  			err = _tmp$7;
 49188  			$s = -1; return [n, err];
 49189  		}
 49190  		_tmp$8 = 0;
 49191  		_tmp$9 = 0;
 49192  		z.digest = _tmp$8;
 49193  		z.size = _tmp$9;
 49194  		if (!z.multistream) {
 49195  			_tmp$10 = n;
 49196  			_tmp$11 = io.EOF;
 49197  			n = _tmp$10;
 49198  			err = _tmp$11;
 49199  			$s = -1; return [n, err];
 49200  		}
 49201  		z.err = $ifaceNil;
 49202  		_r$3 = z.readHeader(); /* */ $s = 4; case 4: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 49203  		_tuple$2 = _r$3;
 49204  		z.err = _tuple$2[1];
 49205  		if (!($interfaceIsEqual(z.err, $ifaceNil))) {
 49206  			_tmp$12 = n;
 49207  			_tmp$13 = z.err;
 49208  			n = _tmp$12;
 49209  			err = _tmp$13;
 49210  			$s = -1; return [n, err];
 49211  		}
 49212  		if (n > 0) {
 49213  			_tmp$14 = n;
 49214  			_tmp$15 = $ifaceNil;
 49215  			n = _tmp$14;
 49216  			err = _tmp$15;
 49217  			$s = -1; return [n, err];
 49218  		}
 49219  		_r$4 = z.Read(p); /* */ $s = 5; case 5: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 49220  		_tuple$3 = _r$4;
 49221  		n = _tuple$3[0];
 49222  		err = _tuple$3[1];
 49223  		$s = -1; return [n, err];
 49224  		/* */ } return; } if ($f === undefined) { $f = { $blk: Reader.ptr.prototype.Read }; } $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$10 = _tmp$10; $f._tmp$11 = _tmp$11; $f._tmp$12 = _tmp$12; $f._tmp$13 = _tmp$13; $f._tmp$14 = _tmp$14; $f._tmp$15 = _tmp$15; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tmp$4 = _tmp$4; $f._tmp$5 = _tmp$5; $f._tmp$6 = _tmp$6; $f._tmp$7 = _tmp$7; $f._tmp$8 = _tmp$8; $f._tmp$9 = _tmp$9; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f.digest = digest; $f.err = err; $f.err$1 = err$1; $f.n = n; $f.p = p; $f.size = size; $f.z = z; $f.$s = $s; $f.$r = $r; return $f;
 49225  	};
 49226  	Reader.prototype.Read = function(p) { return this.$val.Read(p); };
 49227  	Reader.ptr.prototype.Close = function() {
 49228  		var _r, z, $s, $r;
 49229  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; z = $f.z; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 49230  		z = this;
 49231  		_r = z.decompressor.Close(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 49232  		$s = -1; return _r;
 49233  		/* */ } return; } if ($f === undefined) { $f = { $blk: Reader.ptr.prototype.Close }; } $f._r = _r; $f.z = z; $f.$s = $s; $f.$r = $r; return $f;
 49234  	};
 49235  	Reader.prototype.Close = function() { return this.$val.Close(); };
 49236  	ptrType$1.methods = [{prop: "Reset", name: "Reset", pkg: "", typ: $funcType([io.Reader], [$error], false)}, {prop: "Multistream", name: "Multistream", pkg: "", typ: $funcType([$Bool], [], false)}, {prop: "readString", name: "readString", pkg: "compress/gzip", typ: $funcType([], [$String, $error], false)}, {prop: "readHeader", name: "readHeader", pkg: "compress/gzip", typ: $funcType([], [Header, $error], false)}, {prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType], [$Int, $error], false)}, {prop: "Close", name: "Close", pkg: "", typ: $funcType([], [$error], false)}];
 49237  	Header.init("", [{prop: "Comment", name: "Comment", anonymous: false, exported: true, typ: $String, tag: ""}, {prop: "Extra", name: "Extra", anonymous: false, exported: true, typ: sliceType, tag: ""}, {prop: "ModTime", name: "ModTime", anonymous: false, exported: true, typ: time.Time, tag: ""}, {prop: "Name", name: "Name", anonymous: false, exported: true, typ: $String, tag: ""}, {prop: "OS", name: "OS", anonymous: false, exported: true, typ: $Uint8, tag: ""}]);
 49238  	Reader.init("compress/gzip", [{prop: "Header", name: "Header", anonymous: true, exported: true, typ: Header, tag: ""}, {prop: "r", name: "r", anonymous: false, exported: false, typ: flate.Reader, tag: ""}, {prop: "decompressor", name: "decompressor", anonymous: false, exported: false, typ: io.ReadCloser, tag: ""}, {prop: "digest", name: "digest", anonymous: false, exported: false, typ: $Uint32, tag: ""}, {prop: "size", name: "size", anonymous: false, exported: false, typ: $Uint32, tag: ""}, {prop: "buf", name: "buf", anonymous: false, exported: false, typ: arrayType, tag: ""}, {prop: "err", name: "err", anonymous: false, exported: false, typ: $error, tag: ""}, {prop: "multistream", name: "multistream", anonymous: false, exported: false, typ: $Bool, tag: ""}]);
 49239  	$init = function() {
 49240  		$pkg.$init = function() {};
 49241  		/* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 49242  		$r = bufio.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 49243  		$r = flate.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 49244  		$r = binary.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 49245  		$r = errors.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 49246  		$r = fmt.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 49247  		$r = crc32.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 49248  		$r = io.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 49249  		$r = time.$init(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 49250  		$pkg.ErrChecksum = errors.New("gzip: invalid checksum");
 49251  		$pkg.ErrHeader = errors.New("gzip: invalid header");
 49252  		le = $clone(binary.LittleEndian, binary.littleEndian);
 49253  		/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
 49254  	};
 49255  	$pkg.$init = $init;
 49256  	return $pkg;
 49257  })();
 49258  $packages["container/list"] = (function() {
 49259  	var $pkg = {}, $init, Element, List, ptrType, ptrType$1, New;
 49260  	Element = $pkg.Element = $newType(0, $kindStruct, "list.Element", true, "container/list", true, function(next_, prev_, list_, Value_) {
 49261  		this.$val = this;
 49262  		if (arguments.length === 0) {
 49263  			this.next = ptrType$1.nil;
 49264  			this.prev = ptrType$1.nil;
 49265  			this.list = ptrType.nil;
 49266  			this.Value = $ifaceNil;
 49267  			return;
 49268  		}
 49269  		this.next = next_;
 49270  		this.prev = prev_;
 49271  		this.list = list_;
 49272  		this.Value = Value_;
 49273  	});
 49274  	List = $pkg.List = $newType(0, $kindStruct, "list.List", true, "container/list", true, function(root_, len_) {
 49275  		this.$val = this;
 49276  		if (arguments.length === 0) {
 49277  			this.root = new Element.ptr(ptrType$1.nil, ptrType$1.nil, ptrType.nil, $ifaceNil);
 49278  			this.len = 0;
 49279  			return;
 49280  		}
 49281  		this.root = root_;
 49282  		this.len = len_;
 49283  	});
 49284  	ptrType = $ptrType(List);
 49285  	ptrType$1 = $ptrType(Element);
 49286  	Element.ptr.prototype.Next = function() {
 49287  		var e, p;
 49288  		e = this;
 49289  		p = e.next;
 49290  		if (!(e.list === ptrType.nil) && !(p === e.list.root)) {
 49291  			return p;
 49292  		}
 49293  		return ptrType$1.nil;
 49294  	};
 49295  	Element.prototype.Next = function() { return this.$val.Next(); };
 49296  	Element.ptr.prototype.Prev = function() {
 49297  		var e, p;
 49298  		e = this;
 49299  		p = e.prev;
 49300  		if (!(e.list === ptrType.nil) && !(p === e.list.root)) {
 49301  			return p;
 49302  		}
 49303  		return ptrType$1.nil;
 49304  	};
 49305  	Element.prototype.Prev = function() { return this.$val.Prev(); };
 49306  	List.ptr.prototype.Init = function() {
 49307  		var l;
 49308  		l = this;
 49309  		l.root.next = l.root;
 49310  		l.root.prev = l.root;
 49311  		l.len = 0;
 49312  		return l;
 49313  	};
 49314  	List.prototype.Init = function() { return this.$val.Init(); };
 49315  	New = function() {
 49316  		return new List.ptr(new Element.ptr(ptrType$1.nil, ptrType$1.nil, ptrType.nil, $ifaceNil), 0).Init();
 49317  	};
 49318  	$pkg.New = New;
 49319  	List.ptr.prototype.Len = function() {
 49320  		var l;
 49321  		l = this;
 49322  		return l.len;
 49323  	};
 49324  	List.prototype.Len = function() { return this.$val.Len(); };
 49325  	List.ptr.prototype.Front = function() {
 49326  		var l;
 49327  		l = this;
 49328  		if (l.len === 0) {
 49329  			return ptrType$1.nil;
 49330  		}
 49331  		return l.root.next;
 49332  	};
 49333  	List.prototype.Front = function() { return this.$val.Front(); };
 49334  	List.ptr.prototype.Back = function() {
 49335  		var l;
 49336  		l = this;
 49337  		if (l.len === 0) {
 49338  			return ptrType$1.nil;
 49339  		}
 49340  		return l.root.prev;
 49341  	};
 49342  	List.prototype.Back = function() { return this.$val.Back(); };
 49343  	List.ptr.prototype.lazyInit = function() {
 49344  		var l;
 49345  		l = this;
 49346  		if (l.root.next === ptrType$1.nil) {
 49347  			l.Init();
 49348  		}
 49349  	};
 49350  	List.prototype.lazyInit = function() { return this.$val.lazyInit(); };
 49351  	List.ptr.prototype.insert = function(e, at) {
 49352  		var at, e, l, n;
 49353  		l = this;
 49354  		n = at.next;
 49355  		at.next = e;
 49356  		e.prev = at;
 49357  		e.next = n;
 49358  		n.prev = e;
 49359  		e.list = l;
 49360  		l.len = l.len + (1) >> 0;
 49361  		return e;
 49362  	};
 49363  	List.prototype.insert = function(e, at) { return this.$val.insert(e, at); };
 49364  	List.ptr.prototype.insertValue = function(v, at) {
 49365  		var at, l, v;
 49366  		l = this;
 49367  		return l.insert(new Element.ptr(ptrType$1.nil, ptrType$1.nil, ptrType.nil, v), at);
 49368  	};
 49369  	List.prototype.insertValue = function(v, at) { return this.$val.insertValue(v, at); };
 49370  	List.ptr.prototype.remove = function(e) {
 49371  		var e, l;
 49372  		l = this;
 49373  		e.prev.next = e.next;
 49374  		e.next.prev = e.prev;
 49375  		e.next = ptrType$1.nil;
 49376  		e.prev = ptrType$1.nil;
 49377  		e.list = ptrType.nil;
 49378  		l.len = l.len - (1) >> 0;
 49379  		return e;
 49380  	};
 49381  	List.prototype.remove = function(e) { return this.$val.remove(e); };
 49382  	List.ptr.prototype.Remove = function(e) {
 49383  		var e, l;
 49384  		l = this;
 49385  		if (e.list === l) {
 49386  			l.remove(e);
 49387  		}
 49388  		return e.Value;
 49389  	};
 49390  	List.prototype.Remove = function(e) { return this.$val.Remove(e); };
 49391  	List.ptr.prototype.PushFront = function(v) {
 49392  		var l, v;
 49393  		l = this;
 49394  		l.lazyInit();
 49395  		return l.insertValue(v, l.root);
 49396  	};
 49397  	List.prototype.PushFront = function(v) { return this.$val.PushFront(v); };
 49398  	List.ptr.prototype.PushBack = function(v) {
 49399  		var l, v;
 49400  		l = this;
 49401  		l.lazyInit();
 49402  		return l.insertValue(v, l.root.prev);
 49403  	};
 49404  	List.prototype.PushBack = function(v) { return this.$val.PushBack(v); };
 49405  	List.ptr.prototype.InsertBefore = function(v, mark) {
 49406  		var l, mark, v;
 49407  		l = this;
 49408  		if (!(mark.list === l)) {
 49409  			return ptrType$1.nil;
 49410  		}
 49411  		return l.insertValue(v, mark.prev);
 49412  	};
 49413  	List.prototype.InsertBefore = function(v, mark) { return this.$val.InsertBefore(v, mark); };
 49414  	List.ptr.prototype.InsertAfter = function(v, mark) {
 49415  		var l, mark, v;
 49416  		l = this;
 49417  		if (!(mark.list === l)) {
 49418  			return ptrType$1.nil;
 49419  		}
 49420  		return l.insertValue(v, mark);
 49421  	};
 49422  	List.prototype.InsertAfter = function(v, mark) { return this.$val.InsertAfter(v, mark); };
 49423  	List.ptr.prototype.MoveToFront = function(e) {
 49424  		var e, l;
 49425  		l = this;
 49426  		if (!(e.list === l) || l.root.next === e) {
 49427  			return;
 49428  		}
 49429  		l.insert(l.remove(e), l.root);
 49430  	};
 49431  	List.prototype.MoveToFront = function(e) { return this.$val.MoveToFront(e); };
 49432  	List.ptr.prototype.MoveToBack = function(e) {
 49433  		var e, l;
 49434  		l = this;
 49435  		if (!(e.list === l) || l.root.prev === e) {
 49436  			return;
 49437  		}
 49438  		l.insert(l.remove(e), l.root.prev);
 49439  	};
 49440  	List.prototype.MoveToBack = function(e) { return this.$val.MoveToBack(e); };
 49441  	List.ptr.prototype.MoveBefore = function(e, mark) {
 49442  		var e, l, mark;
 49443  		l = this;
 49444  		if (!(e.list === l) || e === mark || !(mark.list === l)) {
 49445  			return;
 49446  		}
 49447  		l.insert(l.remove(e), mark.prev);
 49448  	};
 49449  	List.prototype.MoveBefore = function(e, mark) { return this.$val.MoveBefore(e, mark); };
 49450  	List.ptr.prototype.MoveAfter = function(e, mark) {
 49451  		var e, l, mark;
 49452  		l = this;
 49453  		if (!(e.list === l) || e === mark || !(mark.list === l)) {
 49454  			return;
 49455  		}
 49456  		l.insert(l.remove(e), mark);
 49457  	};
 49458  	List.prototype.MoveAfter = function(e, mark) { return this.$val.MoveAfter(e, mark); };
 49459  	List.ptr.prototype.PushBackList = function(other) {
 49460  		var _tmp, _tmp$1, _tmp$2, _tmp$3, e, i, l, other;
 49461  		l = this;
 49462  		l.lazyInit();
 49463  		_tmp = other.Len();
 49464  		_tmp$1 = other.Front();
 49465  		i = _tmp;
 49466  		e = _tmp$1;
 49467  		while (true) {
 49468  			if (!(i > 0)) { break; }
 49469  			l.insertValue(e.Value, l.root.prev);
 49470  			_tmp$2 = i - 1 >> 0;
 49471  			_tmp$3 = e.Next();
 49472  			i = _tmp$2;
 49473  			e = _tmp$3;
 49474  		}
 49475  	};
 49476  	List.prototype.PushBackList = function(other) { return this.$val.PushBackList(other); };
 49477  	List.ptr.prototype.PushFrontList = function(other) {
 49478  		var _tmp, _tmp$1, _tmp$2, _tmp$3, e, i, l, other;
 49479  		l = this;
 49480  		l.lazyInit();
 49481  		_tmp = other.Len();
 49482  		_tmp$1 = other.Back();
 49483  		i = _tmp;
 49484  		e = _tmp$1;
 49485  		while (true) {
 49486  			if (!(i > 0)) { break; }
 49487  			l.insertValue(e.Value, l.root);
 49488  			_tmp$2 = i - 1 >> 0;
 49489  			_tmp$3 = e.Prev();
 49490  			i = _tmp$2;
 49491  			e = _tmp$3;
 49492  		}
 49493  	};
 49494  	List.prototype.PushFrontList = function(other) { return this.$val.PushFrontList(other); };
 49495  	ptrType$1.methods = [{prop: "Next", name: "Next", pkg: "", typ: $funcType([], [ptrType$1], false)}, {prop: "Prev", name: "Prev", pkg: "", typ: $funcType([], [ptrType$1], false)}];
 49496  	ptrType.methods = [{prop: "Init", name: "Init", pkg: "", typ: $funcType([], [ptrType], false)}, {prop: "Len", name: "Len", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Front", name: "Front", pkg: "", typ: $funcType([], [ptrType$1], false)}, {prop: "Back", name: "Back", pkg: "", typ: $funcType([], [ptrType$1], false)}, {prop: "lazyInit", name: "lazyInit", pkg: "container/list", typ: $funcType([], [], false)}, {prop: "insert", name: "insert", pkg: "container/list", typ: $funcType([ptrType$1, ptrType$1], [ptrType$1], false)}, {prop: "insertValue", name: "insertValue", pkg: "container/list", typ: $funcType([$emptyInterface, ptrType$1], [ptrType$1], false)}, {prop: "remove", name: "remove", pkg: "container/list", typ: $funcType([ptrType$1], [ptrType$1], false)}, {prop: "Remove", name: "Remove", pkg: "", typ: $funcType([ptrType$1], [$emptyInterface], false)}, {prop: "PushFront", name: "PushFront", pkg: "", typ: $funcType([$emptyInterface], [ptrType$1], false)}, {prop: "PushBack", name: "PushBack", pkg: "", typ: $funcType([$emptyInterface], [ptrType$1], false)}, {prop: "InsertBefore", name: "InsertBefore", pkg: "", typ: $funcType([$emptyInterface, ptrType$1], [ptrType$1], false)}, {prop: "InsertAfter", name: "InsertAfter", pkg: "", typ: $funcType([$emptyInterface, ptrType$1], [ptrType$1], false)}, {prop: "MoveToFront", name: "MoveToFront", pkg: "", typ: $funcType([ptrType$1], [], false)}, {prop: "MoveToBack", name: "MoveToBack", pkg: "", typ: $funcType([ptrType$1], [], false)}, {prop: "MoveBefore", name: "MoveBefore", pkg: "", typ: $funcType([ptrType$1, ptrType$1], [], false)}, {prop: "MoveAfter", name: "MoveAfter", pkg: "", typ: $funcType([ptrType$1, ptrType$1], [], false)}, {prop: "PushBackList", name: "PushBackList", pkg: "", typ: $funcType([ptrType], [], false)}, {prop: "PushFrontList", name: "PushFrontList", pkg: "", typ: $funcType([ptrType], [], false)}];
 49497  	Element.init("container/list", [{prop: "next", name: "next", anonymous: false, exported: false, typ: ptrType$1, tag: ""}, {prop: "prev", name: "prev", anonymous: false, exported: false, typ: ptrType$1, tag: ""}, {prop: "list", name: "list", anonymous: false, exported: false, typ: ptrType, tag: ""}, {prop: "Value", name: "Value", anonymous: false, exported: true, typ: $emptyInterface, tag: ""}]);
 49498  	List.init("container/list", [{prop: "root", name: "root", anonymous: false, exported: false, typ: Element, tag: ""}, {prop: "len", name: "len", anonymous: false, exported: false, typ: $Int, tag: ""}]);
 49499  	$init = function() {
 49500  		$pkg.$init = function() {};
 49501  		/* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 49502  		/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
 49503  	};
 49504  	$pkg.$init = $init;
 49505  	return $pkg;
 49506  })();
 49507  $packages["math/big"] = (function() {
 49508  	var $pkg = {}, $init, bytes, binary, errors, fmt, nosync, io, math, bits, rand, strconv, strings, Word, decimal, Float, ErrNaN, form, RoundingMode, Accuracy, Int, byteReader, nat, divisor, Rat, sliceType, arrayType, structType, sliceType$1, ptrType, sliceType$2, ptrType$1, ptrType$2, ptrType$3, ptrType$4, arrayType$1, sliceType$3, ptrType$5, ptrType$6, _Accuracy_index, pow5tab, intOne, natOne, natTwo, natTen, karatsubaThreshold, basicSqrThreshold, karatsubaSqrThreshold, natPool, leafSize, cacheBase10, _RoundingMode_index, half, two, three, _r, _r$1, _r$2, addWW_g, subWW_g, mulWW_g, mulAddWWW_g, nlz, divWW_g, addVV_g, subVV_g, addVW_g, subVW_g, shlVU_g, shrVU_g, mulAddVWW_g, addMulVVW_g, divWVW_g, mulWW, divWW, addVV, subVV, addVW, subVW, shlVU, shrVU, mulAddVWW, addMulVVW, divWVW, shr, appendZeros, shouldRoundUp, trim, NewFloat, makeAcc, fnorm, msb32, msb64, validateBinaryOperands, umax32, roundShortest, fmtE, fmtF, min, NewInt, low32, low64, Jacobi, writeMultiple, scanSign, basicMul, karatsubaAdd, karatsubaSub, karatsuba, alias, addAt, max, karatsubaLen, basicSqr, getNat, putNat, greaterThan, maxPow, pow, divisors, quotToFloat32, quotToFloat64, mulDenom, scaleDenom, ratTok, scanExponent;
 49509  	bytes = $packages["bytes"];
 49510  	binary = $packages["encoding/binary"];
 49511  	errors = $packages["errors"];
 49512  	fmt = $packages["fmt"];
 49513  	nosync = $packages["github.com/gopherjs/gopherjs/nosync"];
 49514  	io = $packages["io"];
 49515  	math = $packages["math"];
 49516  	bits = $packages["math/bits"];
 49517  	rand = $packages["math/rand"];
 49518  	strconv = $packages["strconv"];
 49519  	strings = $packages["strings"];
 49520  	Word = $pkg.Word = $newType(4, $kindUintptr, "big.Word", true, "math/big", true, null);
 49521  	decimal = $pkg.decimal = $newType(0, $kindStruct, "big.decimal", true, "math/big", false, function(mant_, exp_) {
 49522  		this.$val = this;
 49523  		if (arguments.length === 0) {
 49524  			this.mant = sliceType$1.nil;
 49525  			this.exp = 0;
 49526  			return;
 49527  		}
 49528  		this.mant = mant_;
 49529  		this.exp = exp_;
 49530  	});
 49531  	Float = $pkg.Float = $newType(0, $kindStruct, "big.Float", true, "math/big", true, function(prec_, mode_, acc_, form_, neg_, mant_, exp_) {
 49532  		this.$val = this;
 49533  		if (arguments.length === 0) {
 49534  			this.prec = 0;
 49535  			this.mode = 0;
 49536  			this.acc = 0;
 49537  			this.form = 0;
 49538  			this.neg = false;
 49539  			this.mant = nat.nil;
 49540  			this.exp = 0;
 49541  			return;
 49542  		}
 49543  		this.prec = prec_;
 49544  		this.mode = mode_;
 49545  		this.acc = acc_;
 49546  		this.form = form_;
 49547  		this.neg = neg_;
 49548  		this.mant = mant_;
 49549  		this.exp = exp_;
 49550  	});
 49551  	ErrNaN = $pkg.ErrNaN = $newType(0, $kindStruct, "big.ErrNaN", true, "math/big", true, function(msg_) {
 49552  		this.$val = this;
 49553  		if (arguments.length === 0) {
 49554  			this.msg = "";
 49555  			return;
 49556  		}
 49557  		this.msg = msg_;
 49558  	});
 49559  	form = $pkg.form = $newType(1, $kindUint8, "big.form", true, "math/big", false, null);
 49560  	RoundingMode = $pkg.RoundingMode = $newType(1, $kindUint8, "big.RoundingMode", true, "math/big", true, null);
 49561  	Accuracy = $pkg.Accuracy = $newType(1, $kindInt8, "big.Accuracy", true, "math/big", true, null);
 49562  	Int = $pkg.Int = $newType(0, $kindStruct, "big.Int", true, "math/big", true, function(neg_, abs_) {
 49563  		this.$val = this;
 49564  		if (arguments.length === 0) {
 49565  			this.neg = false;
 49566  			this.abs = nat.nil;
 49567  			return;
 49568  		}
 49569  		this.neg = neg_;
 49570  		this.abs = abs_;
 49571  	});
 49572  	byteReader = $pkg.byteReader = $newType(0, $kindStruct, "big.byteReader", true, "math/big", false, function(ScanState_) {
 49573  		this.$val = this;
 49574  		if (arguments.length === 0) {
 49575  			this.ScanState = $ifaceNil;
 49576  			return;
 49577  		}
 49578  		this.ScanState = ScanState_;
 49579  	});
 49580  	nat = $pkg.nat = $newType(12, $kindSlice, "big.nat", true, "math/big", false, null);
 49581  	divisor = $pkg.divisor = $newType(0, $kindStruct, "big.divisor", true, "math/big", false, function(bbb_, nbits_, ndigits_) {
 49582  		this.$val = this;
 49583  		if (arguments.length === 0) {
 49584  			this.bbb = nat.nil;
 49585  			this.nbits = 0;
 49586  			this.ndigits = 0;
 49587  			return;
 49588  		}
 49589  		this.bbb = bbb_;
 49590  		this.nbits = nbits_;
 49591  		this.ndigits = ndigits_;
 49592  	});
 49593  	Rat = $pkg.Rat = $newType(0, $kindStruct, "big.Rat", true, "math/big", true, function(a_, b_) {
 49594  		this.$val = this;
 49595  		if (arguments.length === 0) {
 49596  			this.a = new Int.ptr(false, nat.nil);
 49597  			this.b = new Int.ptr(false, nat.nil);
 49598  			return;
 49599  		}
 49600  		this.a = a_;
 49601  		this.b = b_;
 49602  	});
 49603  	sliceType = $sliceType($emptyInterface);
 49604  	arrayType = $arrayType(divisor, 64);
 49605  	structType = $structType("math/big", [{prop: "Mutex", name: "Mutex", anonymous: true, exported: true, typ: nosync.Mutex, tag: ""}, {prop: "table", name: "table", anonymous: false, exported: false, typ: arrayType, tag: ""}]);
 49606  	sliceType$1 = $sliceType($Uint8);
 49607  	ptrType = $ptrType(Float);
 49608  	sliceType$2 = $sliceType(Word);
 49609  	ptrType$1 = $ptrType(Int);
 49610  	ptrType$2 = $ptrType(Rat);
 49611  	ptrType$3 = $ptrType(Word);
 49612  	ptrType$4 = $ptrType(nat);
 49613  	arrayType$1 = $arrayType(nat, 16);
 49614  	sliceType$3 = $sliceType(divisor);
 49615  	ptrType$5 = $ptrType(decimal);
 49616  	ptrType$6 = $ptrType(rand.Rand);
 49617  	Accuracy.prototype.String = function() {
 49618  		var _r$3, i, x, $s, $r;
 49619  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$3 = $f._r$3; i = $f.i; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 49620  		i = this.$val;
 49621  		i = i - (-1) << 24 >> 24;
 49622  		/* */ if (i < 0 || (i + 1 << 24 >> 24) >= 4) { $s = 1; continue; }
 49623  		/* */ $s = 2; continue;
 49624  		/* if (i < 0 || (i + 1 << 24 >> 24) >= 4) { */ case 1:
 49625  			_r$3 = fmt.Sprintf("Accuracy(%d)", new sliceType([new Accuracy((i + -1 << 24 >> 24))])); /* */ $s = 3; case 3: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 49626  			$s = -1; return _r$3;
 49627  		/* } */ case 2:
 49628  		$s = -1; return $substring("BelowExactAbove", ((i < 0 || i >= _Accuracy_index.length) ? ($throwRuntimeError("index out of range"), undefined) : _Accuracy_index[i]), (x = i + 1 << 24 >> 24, ((x < 0 || x >= _Accuracy_index.length) ? ($throwRuntimeError("index out of range"), undefined) : _Accuracy_index[x])));
 49629  		/* */ } return; } if ($f === undefined) { $f = { $blk: Accuracy.prototype.String }; } $f._r$3 = _r$3; $f.i = i; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
 49630  	};
 49631  	$ptrType(Accuracy).prototype.String = function() { return new Accuracy(this.$get()).String(); };
 49632  	addWW_g = function(x, y, c) {
 49633  		var c, x, y, yc, z0, z1;
 49634  		z1 = 0;
 49635  		z0 = 0;
 49636  		yc = y + c >>> 0;
 49637  		z0 = x + yc >>> 0;
 49638  		if (z0 < x || yc < y) {
 49639  			z1 = 1;
 49640  		}
 49641  		return [z1, z0];
 49642  	};
 49643  	subWW_g = function(x, y, c) {
 49644  		var c, x, y, yc, z0, z1;
 49645  		z1 = 0;
 49646  		z0 = 0;
 49647  		yc = y + c >>> 0;
 49648  		z0 = x - yc >>> 0;
 49649  		if (z0 > x || yc < y) {
 49650  			z1 = 1;
 49651  		}
 49652  		return [z1, z0];
 49653  	};
 49654  	mulWW_g = function(x, y) {
 49655  		var t, w0, w1, w2, x, x0, x1, y, y0, y1, z0, z1;
 49656  		z1 = 0;
 49657  		z0 = 0;
 49658  		x0 = (x & 65535) >>> 0;
 49659  		x1 = x >>> 16 >>> 0;
 49660  		y0 = (y & 65535) >>> 0;
 49661  		y1 = y >>> 16 >>> 0;
 49662  		w0 = $imul(x0, y0) >>> 0;
 49663  		t = ($imul(x1, y0) >>> 0) + (w0 >>> 16 >>> 0) >>> 0;
 49664  		w1 = (t & 65535) >>> 0;
 49665  		w2 = t >>> 16 >>> 0;
 49666  		w1 = w1 + (($imul(x0, y1) >>> 0)) >>> 0;
 49667  		z1 = (($imul(x1, y1) >>> 0) + w2 >>> 0) + (w1 >>> 16 >>> 0) >>> 0;
 49668  		z0 = $imul(x, y) >>> 0;
 49669  		return [z1, z0];
 49670  	};
 49671  	mulAddWWW_g = function(x, y, c) {
 49672  		var _tuple, c, x, y, z0, z1, zz0;
 49673  		z1 = 0;
 49674  		z0 = 0;
 49675  		_tuple = mulWW_g(x, y);
 49676  		z1 = _tuple[0];
 49677  		zz0 = _tuple[1];
 49678  		z0 = zz0 + c >>> 0;
 49679  		if (z0 < zz0) {
 49680  			z1 = z1 + (1) >>> 0;
 49681  		}
 49682  		return [z1, z0];
 49683  	};
 49684  	nlz = function(x) {
 49685  		var x;
 49686  		return ((bits.LeadingZeros(((x >>> 0))) >>> 0));
 49687  	};
 49688  	divWW_g = function(u1, u0, v) {
 49689  		var _q, _q$1, _tmp, _tmp$1, _tmp$2, _tmp$3, q, q0, q1, r, rhat, s, u0, u1, un0, un1, un10, un21, un32, v, vn0, vn1, y, y$1, y$2, y$3, y$4;
 49690  		q = 0;
 49691  		r = 0;
 49692  		if (u1 >= v) {
 49693  			_tmp = 4294967295;
 49694  			_tmp$1 = 4294967295;
 49695  			q = _tmp;
 49696  			r = _tmp$1;
 49697  			return [q, r];
 49698  		}
 49699  		s = nlz(v);
 49700  		v = (y = (s), y < 32 ? (v << y) : 0) >>> 0;
 49701  		vn1 = v >>> 16 >>> 0;
 49702  		vn0 = (v & 65535) >>> 0;
 49703  		un32 = (((y$1 = s, y$1 < 32 ? (u1 << y$1) : 0) >>> 0) | ((y$2 = ((32 - s >>> 0)), y$2 < 32 ? (u0 >>> y$2) : 0) >>> 0)) >>> 0;
 49704  		un10 = (y$3 = s, y$3 < 32 ? (u0 << y$3) : 0) >>> 0;
 49705  		un1 = un10 >>> 16 >>> 0;
 49706  		un0 = (un10 & 65535) >>> 0;
 49707  		q1 = (_q = un32 / vn1, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >>> 0 : $throwRuntimeError("integer divide by zero"));
 49708  		rhat = un32 - ($imul(q1, vn1) >>> 0) >>> 0;
 49709  		while (true) {
 49710  			if (!(q1 >= 65536 || ($imul(q1, vn0) >>> 0) > (($imul(65536, rhat) >>> 0) + un1 >>> 0))) { break; }
 49711  			q1 = q1 - (1) >>> 0;
 49712  			rhat = rhat + (vn1) >>> 0;
 49713  			if (rhat >= 65536) {
 49714  				break;
 49715  			}
 49716  		}
 49717  		un21 = (($imul(un32, 65536) >>> 0) + un1 >>> 0) - ($imul(q1, v) >>> 0) >>> 0;
 49718  		q0 = (_q$1 = un21 / vn1, (_q$1 === _q$1 && _q$1 !== 1/0 && _q$1 !== -1/0) ? _q$1 >>> 0 : $throwRuntimeError("integer divide by zero"));
 49719  		rhat = un21 - ($imul(q0, vn1) >>> 0) >>> 0;
 49720  		while (true) {
 49721  			if (!(q0 >= 65536 || ($imul(q0, vn0) >>> 0) > (($imul(65536, rhat) >>> 0) + un0 >>> 0))) { break; }
 49722  			q0 = q0 - (1) >>> 0;
 49723  			rhat = rhat + (vn1) >>> 0;
 49724  			if (rhat >= 65536) {
 49725  				break;
 49726  			}
 49727  		}
 49728  		_tmp$2 = ($imul(q1, 65536) >>> 0) + q0 >>> 0;
 49729  		_tmp$3 = (y$4 = s, y$4 < 32 ? ((((($imul(un21, 65536) >>> 0) + un0 >>> 0) - ($imul(q0, v) >>> 0) >>> 0)) >>> y$4) : 0) >>> 0;
 49730  		q = _tmp$2;
 49731  		r = _tmp$3;
 49732  		return [q, r];
 49733  	};
 49734  	addVV_g = function(z, x, y) {
 49735  		var _i, _i$1, _ref, _ref$1, _tuple, c, i, i$1, x, xi, y, yi, z, zi;
 49736  		c = 0;
 49737  		if (false) {
 49738  			_ref = z;
 49739  			_i = 0;
 49740  			while (true) {
 49741  				if (!(_i < _ref.$length)) { break; }
 49742  				i = _i;
 49743  				_tuple = addWW_g(((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i]), ((i < 0 || i >= y.$length) ? ($throwRuntimeError("index out of range"), undefined) : y.$array[y.$offset + i]), c);
 49744  				c = _tuple[0];
 49745  				((i < 0 || i >= z.$length) ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + i] = _tuple[1]);
 49746  				_i++;
 49747  			}
 49748  			return c;
 49749  		}
 49750  		_ref$1 = $subslice(x, 0, z.$length);
 49751  		_i$1 = 0;
 49752  		while (true) {
 49753  			if (!(_i$1 < _ref$1.$length)) { break; }
 49754  			i$1 = _i$1;
 49755  			xi = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]);
 49756  			yi = ((i$1 < 0 || i$1 >= y.$length) ? ($throwRuntimeError("index out of range"), undefined) : y.$array[y.$offset + i$1]);
 49757  			zi = (xi + yi >>> 0) + c >>> 0;
 49758  			((i$1 < 0 || i$1 >= z.$length) ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + i$1] = zi);
 49759  			c = (((((xi & yi) >>> 0) | (((((xi | yi) >>> 0)) & ~zi) >>> 0)) >>> 0)) >>> 31 >>> 0;
 49760  			_i$1++;
 49761  		}
 49762  		return c;
 49763  	};
 49764  	subVV_g = function(z, x, y) {
 49765  		var _i, _i$1, _ref, _ref$1, _tuple, c, i, i$1, x, xi, y, yi, z, zi;
 49766  		c = 0;
 49767  		if (false) {
 49768  			_ref = z;
 49769  			_i = 0;
 49770  			while (true) {
 49771  				if (!(_i < _ref.$length)) { break; }
 49772  				i = _i;
 49773  				_tuple = subWW_g(((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i]), ((i < 0 || i >= y.$length) ? ($throwRuntimeError("index out of range"), undefined) : y.$array[y.$offset + i]), c);
 49774  				c = _tuple[0];
 49775  				((i < 0 || i >= z.$length) ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + i] = _tuple[1]);
 49776  				_i++;
 49777  			}
 49778  			return c;
 49779  		}
 49780  		_ref$1 = $subslice(x, 0, z.$length);
 49781  		_i$1 = 0;
 49782  		while (true) {
 49783  			if (!(_i$1 < _ref$1.$length)) { break; }
 49784  			i$1 = _i$1;
 49785  			xi = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]);
 49786  			yi = ((i$1 < 0 || i$1 >= y.$length) ? ($throwRuntimeError("index out of range"), undefined) : y.$array[y.$offset + i$1]);
 49787  			zi = (xi - yi >>> 0) - c >>> 0;
 49788  			((i$1 < 0 || i$1 >= z.$length) ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + i$1] = zi);
 49789  			c = (((((yi & ~xi) >>> 0) | (((((yi | (~xi >>> 0)) >>> 0)) & zi) >>> 0)) >>> 0)) >>> 31 >>> 0;
 49790  			_i$1++;
 49791  		}
 49792  		return c;
 49793  	};
 49794  	addVW_g = function(z, x, y) {
 49795  		var _i, _i$1, _ref, _ref$1, _tuple, c, i, i$1, x, xi, y, z, zi;
 49796  		c = 0;
 49797  		if (false) {
 49798  			c = y;
 49799  			_ref = z;
 49800  			_i = 0;
 49801  			while (true) {
 49802  				if (!(_i < _ref.$length)) { break; }
 49803  				i = _i;
 49804  				_tuple = addWW_g(((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i]), c, 0);
 49805  				c = _tuple[0];
 49806  				((i < 0 || i >= z.$length) ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + i] = _tuple[1]);
 49807  				_i++;
 49808  			}
 49809  			return c;
 49810  		}
 49811  		c = y;
 49812  		_ref$1 = $subslice(x, 0, z.$length);
 49813  		_i$1 = 0;
 49814  		while (true) {
 49815  			if (!(_i$1 < _ref$1.$length)) { break; }
 49816  			i$1 = _i$1;
 49817  			xi = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]);
 49818  			zi = xi + c >>> 0;
 49819  			((i$1 < 0 || i$1 >= z.$length) ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + i$1] = zi);
 49820  			c = ((xi & ~zi) >>> 0) >>> 31 >>> 0;
 49821  			_i$1++;
 49822  		}
 49823  		return c;
 49824  	};
 49825  	subVW_g = function(z, x, y) {
 49826  		var _i, _i$1, _ref, _ref$1, _tuple, c, i, i$1, x, xi, y, z, zi;
 49827  		c = 0;
 49828  		if (false) {
 49829  			c = y;
 49830  			_ref = z;
 49831  			_i = 0;
 49832  			while (true) {
 49833  				if (!(_i < _ref.$length)) { break; }
 49834  				i = _i;
 49835  				_tuple = subWW_g(((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i]), c, 0);
 49836  				c = _tuple[0];
 49837  				((i < 0 || i >= z.$length) ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + i] = _tuple[1]);
 49838  				_i++;
 49839  			}
 49840  			return c;
 49841  		}
 49842  		c = y;
 49843  		_ref$1 = $subslice(x, 0, z.$length);
 49844  		_i$1 = 0;
 49845  		while (true) {
 49846  			if (!(_i$1 < _ref$1.$length)) { break; }
 49847  			i$1 = _i$1;
 49848  			xi = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]);
 49849  			zi = xi - c >>> 0;
 49850  			((i$1 < 0 || i$1 >= z.$length) ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + i$1] = zi);
 49851  			c = (((zi & ~xi) >>> 0)) >>> 31 >>> 0;
 49852  			_i$1++;
 49853  		}
 49854  		return c;
 49855  	};
 49856  	shlVU_g = function(z, x, s) {
 49857  		var $C5$9D, c, i, n, s, w, w1, x, x$1, x$2, y, y$1, y$2, y$3, z;
 49858  		c = 0;
 49859  		n = z.$length;
 49860  		if (n > 0) {
 49861  			$C5$9D = 32 - s >>> 0;
 49862  			w1 = (x$1 = n - 1 >> 0, ((x$1 < 0 || x$1 >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + x$1]));
 49863  			c = (y = $C5$9D, y < 32 ? (w1 >>> y) : 0) >>> 0;
 49864  			i = n - 1 >> 0;
 49865  			while (true) {
 49866  				if (!(i > 0)) { break; }
 49867  				w = w1;
 49868  				w1 = (x$2 = i - 1 >> 0, ((x$2 < 0 || x$2 >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + x$2]));
 49869  				((i < 0 || i >= z.$length) ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + i] = ((((y$1 = s, y$1 < 32 ? (w << y$1) : 0) >>> 0) | ((y$2 = $C5$9D, y$2 < 32 ? (w1 >>> y$2) : 0) >>> 0)) >>> 0));
 49870  				i = i - (1) >> 0;
 49871  			}
 49872  			(0 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 0] = ((y$3 = s, y$3 < 32 ? (w1 << y$3) : 0) >>> 0));
 49873  		}
 49874  		return c;
 49875  	};
 49876  	shrVU_g = function(z, x, s) {
 49877  		var $C5$9D, c, i, n, s, w, w1, x, x$1, x$2, y, y$1, y$2, y$3, z;
 49878  		c = 0;
 49879  		n = z.$length;
 49880  		if (n > 0) {
 49881  			$C5$9D = 32 - s >>> 0;
 49882  			w1 = (0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0]);
 49883  			c = (y = $C5$9D, y < 32 ? (w1 << y) : 0) >>> 0;
 49884  			i = 0;
 49885  			while (true) {
 49886  				if (!(i < (n - 1 >> 0))) { break; }
 49887  				w = w1;
 49888  				w1 = (x$1 = i + 1 >> 0, ((x$1 < 0 || x$1 >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + x$1]));
 49889  				((i < 0 || i >= z.$length) ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + i] = ((((y$1 = s, y$1 < 32 ? (w >>> y$1) : 0) >>> 0) | ((y$2 = $C5$9D, y$2 < 32 ? (w1 << y$2) : 0) >>> 0)) >>> 0));
 49890  				i = i + (1) >> 0;
 49891  			}
 49892  			(x$2 = n - 1 >> 0, ((x$2 < 0 || x$2 >= z.$length) ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + x$2] = ((y$3 = s, y$3 < 32 ? (w1 >>> y$3) : 0) >>> 0)));
 49893  		}
 49894  		return c;
 49895  	};
 49896  	mulAddVWW_g = function(z, x, y, r) {
 49897  		var _i, _ref, _tuple, c, i, r, x, y, z;
 49898  		c = 0;
 49899  		c = r;
 49900  		_ref = z;
 49901  		_i = 0;
 49902  		while (true) {
 49903  			if (!(_i < _ref.$length)) { break; }
 49904  			i = _i;
 49905  			_tuple = mulAddWWW_g(((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i]), y, c);
 49906  			c = _tuple[0];
 49907  			((i < 0 || i >= z.$length) ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + i] = _tuple[1]);
 49908  			_i++;
 49909  		}
 49910  		return c;
 49911  	};
 49912  	addMulVVW_g = function(z, x, y) {
 49913  		var _i, _ref, _tuple, _tuple$1, c, i, x, y, z, z0, z1;
 49914  		c = 0;
 49915  		_ref = z;
 49916  		_i = 0;
 49917  		while (true) {
 49918  			if (!(_i < _ref.$length)) { break; }
 49919  			i = _i;
 49920  			_tuple = mulAddWWW_g(((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i]), y, ((i < 0 || i >= z.$length) ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + i]));
 49921  			z1 = _tuple[0];
 49922  			z0 = _tuple[1];
 49923  			_tuple$1 = addWW_g(z0, c, 0);
 49924  			c = _tuple$1[0];
 49925  			((i < 0 || i >= z.$length) ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + i] = _tuple$1[1]);
 49926  			c = c + (z1) >>> 0;
 49927  			_i++;
 49928  		}
 49929  		return c;
 49930  	};
 49931  	divWVW_g = function(z, xn, x, y) {
 49932  		var _tuple, i, r, x, xn, y, z;
 49933  		r = 0;
 49934  		r = xn;
 49935  		i = z.$length - 1 >> 0;
 49936  		while (true) {
 49937  			if (!(i >= 0)) { break; }
 49938  			_tuple = divWW_g(r, ((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i]), y);
 49939  			((i < 0 || i >= z.$length) ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + i] = _tuple[0]);
 49940  			r = _tuple[1];
 49941  			i = i - (1) >> 0;
 49942  		}
 49943  		return r;
 49944  	};
 49945  	mulWW = function(x, y) {
 49946  		var _tuple, x, y, z0, z1;
 49947  		z1 = 0;
 49948  		z0 = 0;
 49949  		_tuple = mulWW_g(x, y);
 49950  		z1 = _tuple[0];
 49951  		z0 = _tuple[1];
 49952  		return [z1, z0];
 49953  	};
 49954  	divWW = function(x1, x0, y) {
 49955  		var _tuple, q, r, x0, x1, y;
 49956  		q = 0;
 49957  		r = 0;
 49958  		_tuple = divWW_g(x1, x0, y);
 49959  		q = _tuple[0];
 49960  		r = _tuple[1];
 49961  		return [q, r];
 49962  	};
 49963  	addVV = function(z, x, y) {
 49964  		var c, x, y, z;
 49965  		c = 0;
 49966  		c = addVV_g(z, x, y);
 49967  		return c;
 49968  	};
 49969  	subVV = function(z, x, y) {
 49970  		var c, x, y, z;
 49971  		c = 0;
 49972  		c = subVV_g(z, x, y);
 49973  		return c;
 49974  	};
 49975  	addVW = function(z, x, y) {
 49976  		var c, x, y, z;
 49977  		c = 0;
 49978  		c = addVW_g(z, x, y);
 49979  		return c;
 49980  	};
 49981  	subVW = function(z, x, y) {
 49982  		var c, x, y, z;
 49983  		c = 0;
 49984  		c = subVW_g(z, x, y);
 49985  		return c;
 49986  	};
 49987  	shlVU = function(z, x, s) {
 49988  		var c, s, x, z;
 49989  		c = 0;
 49990  		c = shlVU_g(z, x, s);
 49991  		return c;
 49992  	};
 49993  	shrVU = function(z, x, s) {
 49994  		var c, s, x, z;
 49995  		c = 0;
 49996  		c = shrVU_g(z, x, s);
 49997  		return c;
 49998  	};
 49999  	mulAddVWW = function(z, x, y, r) {
 50000  		var c, r, x, y, z;
 50001  		c = 0;
 50002  		c = mulAddVWW_g(z, x, y, r);
 50003  		return c;
 50004  	};
 50005  	addMulVVW = function(z, x, y) {
 50006  		var c, x, y, z;
 50007  		c = 0;
 50008  		c = addMulVVW_g(z, x, y);
 50009  		return c;
 50010  	};
 50011  	divWVW = function(z, xn, x, y) {
 50012  		var r, x, xn, y, z;
 50013  		r = 0;
 50014  		r = divWVW_g(z, xn, x, y);
 50015  		return r;
 50016  	};
 50017  	decimal.ptr.prototype.at = function(i) {
 50018  		var d, i, x;
 50019  		d = this;
 50020  		if (0 <= i && i < d.mant.$length) {
 50021  			return (x = d.mant, ((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i]));
 50022  		}
 50023  		return 48;
 50024  	};
 50025  	decimal.prototype.at = function(i) { return this.$val.at(i); };
 50026  	decimal.ptr.prototype.init = function(m, shift) {
 50027  		var _r$3, m, n, ntz, s, s$1, shift, x, x$1, $s, $r;
 50028  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$3 = $f._r$3; m = $f.m; n = $f.n; ntz = $f.ntz; s = $f.s; s$1 = $f.s$1; shift = $f.shift; x = $f.x; x$1 = $f.x$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 50029  		x = this;
 50030  		if (m.$length === 0) {
 50031  			x.mant = $subslice(x.mant, 0, 0);
 50032  			x.exp = 0;
 50033  			$s = -1; return;
 50034  		}
 50035  		if (shift < 0) {
 50036  			ntz = m.trailingZeroBits();
 50037  			s = ((-shift >>> 0));
 50038  			if (s >= ntz) {
 50039  				s = ntz;
 50040  			}
 50041  			m = (nat.nil).shr(m, s);
 50042  			shift = shift + (((s >> 0))) >> 0;
 50043  		}
 50044  		if (shift > 0) {
 50045  			m = (nat.nil).shl(m, ((shift >>> 0)));
 50046  			shift = 0;
 50047  		}
 50048  		_r$3 = m.utoa(10); /* */ $s = 1; case 1: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 50049  		s$1 = _r$3;
 50050  		n = s$1.$length;
 50051  		x.exp = n;
 50052  		while (true) {
 50053  			if (!(n > 0 && ((x$1 = n - 1 >> 0, ((x$1 < 0 || x$1 >= s$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : s$1.$array[s$1.$offset + x$1])) === 48))) { break; }
 50054  			n = n - (1) >> 0;
 50055  		}
 50056  		x.mant = $appendSlice($subslice(x.mant, 0, 0), $subslice(s$1, 0, n));
 50057  		if (shift < 0) {
 50058  			while (true) {
 50059  				if (!(shift < -28)) { break; }
 50060  				shr(x, 28);
 50061  				shift = shift + (28) >> 0;
 50062  			}
 50063  			shr(x, ((-shift >>> 0)));
 50064  		}
 50065  		$s = -1; return;
 50066  		/* */ } return; } if ($f === undefined) { $f = { $blk: decimal.ptr.prototype.init }; } $f._r$3 = _r$3; $f.m = m; $f.n = n; $f.ntz = ntz; $f.s = s; $f.s$1 = s$1; $f.shift = shift; $f.x = x; $f.x$1 = x$1; $f.$s = $s; $f.$r = $r; return $f;
 50067  	};
 50068  	decimal.prototype.init = function(m, shift) { return this.$val.init(m, shift); };
 50069  	shr = function(x, s) {
 50070  		var ch, ch$1, d, d$1, d$2, mask, n, r, s, w, x, x$1, x$2, x$3, x$4, y, y$1, y$2, y$3, y$4, y$5;
 50071  		r = 0;
 50072  		n = 0;
 50073  		while (true) {
 50074  			if (!((((y = s, y < 32 ? (n >>> y) : 0) >>> 0) === 0) && r < x.mant.$length)) { break; }
 50075  			ch = (((x$1 = x.mant, ((r < 0 || r >= x$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + r])) >>> 0));
 50076  			r = r + (1) >> 0;
 50077  			n = (($imul(n, 10) >>> 0) + ch >>> 0) - 48 >>> 0;
 50078  		}
 50079  		if (n === 0) {
 50080  			x.mant = $subslice(x.mant, 0, 0);
 50081  			return;
 50082  		}
 50083  		while (true) {
 50084  			if (!(((y$1 = s, y$1 < 32 ? (n >>> y$1) : 0) >>> 0) === 0)) { break; }
 50085  			r = r + (1) >> 0;
 50086  			n = $imul(n, (10)) >>> 0;
 50087  		}
 50088  		x.exp = x.exp + ((1 - r >> 0)) >> 0;
 50089  		w = 0;
 50090  		mask = ((y$2 = s, y$2 < 32 ? (1 << y$2) : 0) >>> 0) - 1 >>> 0;
 50091  		while (true) {
 50092  			if (!(r < x.mant.$length)) { break; }
 50093  			ch$1 = (((x$2 = x.mant, ((r < 0 || r >= x$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + r])) >>> 0));
 50094  			r = r + (1) >> 0;
 50095  			d = (y$3 = s, y$3 < 32 ? (n >>> y$3) : 0) >>> 0;
 50096  			n = (n & (mask)) >>> 0;
 50097  			(x$3 = x.mant, ((w < 0 || w >= x$3.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$3.$array[x$3.$offset + w] = (((d + 48 >>> 0) << 24 >>> 24))));
 50098  			w = w + (1) >> 0;
 50099  			n = (($imul(n, 10) >>> 0) + ch$1 >>> 0) - 48 >>> 0;
 50100  		}
 50101  		while (true) {
 50102  			if (!(n > 0 && w < x.mant.$length)) { break; }
 50103  			d$1 = (y$4 = s, y$4 < 32 ? (n >>> y$4) : 0) >>> 0;
 50104  			n = (n & (mask)) >>> 0;
 50105  			(x$4 = x.mant, ((w < 0 || w >= x$4.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$4.$array[x$4.$offset + w] = (((d$1 + 48 >>> 0) << 24 >>> 24))));
 50106  			w = w + (1) >> 0;
 50107  			n = $imul(n, 10) >>> 0;
 50108  		}
 50109  		x.mant = $subslice(x.mant, 0, w);
 50110  		while (true) {
 50111  			if (!(n > 0)) { break; }
 50112  			d$2 = (y$5 = s, y$5 < 32 ? (n >>> y$5) : 0) >>> 0;
 50113  			n = (n & (mask)) >>> 0;
 50114  			x.mant = $append(x.mant, (((d$2 + 48 >>> 0) << 24 >>> 24)));
 50115  			n = $imul(n, 10) >>> 0;
 50116  		}
 50117  		trim(x);
 50118  	};
 50119  	decimal.ptr.prototype.String = function() {
 50120  		var buf, x;
 50121  		x = this;
 50122  		if (x.mant.$length === 0) {
 50123  			return "0";
 50124  		}
 50125  		buf = sliceType$1.nil;
 50126  		if (x.exp <= 0) {
 50127  			buf = $appendSlice(buf, "0.");
 50128  			buf = appendZeros(buf, -x.exp);
 50129  			buf = $appendSlice(buf, x.mant);
 50130  		} else if (x.exp < x.mant.$length) {
 50131  			buf = $appendSlice(buf, $subslice(x.mant, 0, x.exp));
 50132  			buf = $append(buf, 46);
 50133  			buf = $appendSlice(buf, $subslice(x.mant, x.exp));
 50134  		} else {
 50135  			buf = $appendSlice(buf, x.mant);
 50136  			buf = appendZeros(buf, x.exp - x.mant.$length >> 0);
 50137  		}
 50138  		return ($bytesToString(buf));
 50139  	};
 50140  	decimal.prototype.String = function() { return this.$val.String(); };
 50141  	appendZeros = function(buf, n) {
 50142  		var buf, n;
 50143  		while (true) {
 50144  			if (!(n > 0)) { break; }
 50145  			buf = $append(buf, 48);
 50146  			n = n - (1) >> 0;
 50147  		}
 50148  		return buf;
 50149  	};
 50150  	shouldRoundUp = function(x, n) {
 50151  		var n, x, x$1, x$2, x$3, x$4;
 50152  		if (((x$1 = x.mant, ((n < 0 || n >= x$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + n])) === 53) && ((n + 1 >> 0) === x.mant.$length)) {
 50153  			return n > 0 && !(((((((x$2 = x.mant, x$3 = n - 1 >> 0, ((x$3 < 0 || x$3 >= x$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + x$3])) - 48 << 24 >>> 24)) & 1) >>> 0) === 0));
 50154  		}
 50155  		return (x$4 = x.mant, ((n < 0 || n >= x$4.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$4.$array[x$4.$offset + n])) >= 53;
 50156  	};
 50157  	decimal.ptr.prototype.round = function(n) {
 50158  		var n, x;
 50159  		x = this;
 50160  		if (n < 0 || n >= x.mant.$length) {
 50161  			return;
 50162  		}
 50163  		if (shouldRoundUp(x, n)) {
 50164  			x.roundUp(n);
 50165  		} else {
 50166  			x.roundDown(n);
 50167  		}
 50168  	};
 50169  	decimal.prototype.round = function(n) { return this.$val.round(n); };
 50170  	decimal.ptr.prototype.roundUp = function(n) {
 50171  		var _index, n, x, x$1, x$2, x$3, x$4, x$5;
 50172  		x = this;
 50173  		if (n < 0 || n >= x.mant.$length) {
 50174  			return;
 50175  		}
 50176  		while (true) {
 50177  			if (!(n > 0 && (x$1 = x.mant, x$2 = n - 1 >> 0, ((x$2 < 0 || x$2 >= x$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + x$2])) >= 57)) { break; }
 50178  			n = n - (1) >> 0;
 50179  		}
 50180  		if (n === 0) {
 50181  			(x$3 = x.mant, (0 >= x$3.$length ? ($throwRuntimeError("index out of range"), undefined) : x$3.$array[x$3.$offset + 0] = 49));
 50182  			x.mant = $subslice(x.mant, 0, 1);
 50183  			x.exp = x.exp + (1) >> 0;
 50184  			return;
 50185  		}
 50186  		_index = n - 1 >> 0;
 50187  		(x$5 = x.mant, ((_index < 0 || _index >= x$5.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$5.$array[x$5.$offset + _index] = ((x$4 = x.mant, ((_index < 0 || _index >= x$4.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$4.$array[x$4.$offset + _index])) + (1) << 24 >>> 24)));
 50188  		x.mant = $subslice(x.mant, 0, n);
 50189  	};
 50190  	decimal.prototype.roundUp = function(n) { return this.$val.roundUp(n); };
 50191  	decimal.ptr.prototype.roundDown = function(n) {
 50192  		var n, x;
 50193  		x = this;
 50194  		if (n < 0 || n >= x.mant.$length) {
 50195  			return;
 50196  		}
 50197  		x.mant = $subslice(x.mant, 0, n);
 50198  		trim(x);
 50199  	};
 50200  	decimal.prototype.roundDown = function(n) { return this.$val.roundDown(n); };
 50201  	trim = function(x) {
 50202  		var i, x, x$1, x$2;
 50203  		i = x.mant.$length;
 50204  		while (true) {
 50205  			if (!(i > 0 && ((x$1 = x.mant, x$2 = i - 1 >> 0, ((x$2 < 0 || x$2 >= x$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + x$2])) === 48))) { break; }
 50206  			i = i - (1) >> 0;
 50207  		}
 50208  		x.mant = $subslice(x.mant, 0, i);
 50209  		if (i === 0) {
 50210  			x.exp = 0;
 50211  		}
 50212  	};
 50213  	ErrNaN.ptr.prototype.Error = function() {
 50214  		var err;
 50215  		err = this;
 50216  		return err.msg;
 50217  	};
 50218  	ErrNaN.prototype.Error = function() { return this.$val.Error(); };
 50219  	NewFloat = function(x) {
 50220  		var _r$3, x, x$1, $s, $r;
 50221  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$3 = $f._r$3; x = $f.x; x$1 = $f.x$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 50222  		if (math.IsNaN(x)) {
 50223  			$panic((x$1 = new ErrNaN.ptr("NewFloat(NaN)"), new x$1.constructor.elem(x$1)));
 50224  		}
 50225  		_r$3 = new Float.ptr(0, 0, 0, 0, false, nat.nil, 0).SetFloat64(x); /* */ $s = 1; case 1: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 50226  		$s = -1; return _r$3;
 50227  		/* */ } return; } if ($f === undefined) { $f = { $blk: NewFloat }; } $f._r$3 = _r$3; $f.x = x; $f.x$1 = x$1; $f.$s = $s; $f.$r = $r; return $f;
 50228  	};
 50229  	$pkg.NewFloat = NewFloat;
 50230  	Float.ptr.prototype.SetPrec = function(prec) {
 50231  		var old, prec, z, $s, $r;
 50232  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; old = $f.old; prec = $f.prec; z = $f.z; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 50233  		z = this;
 50234  		z.acc = 0;
 50235  		if (prec === 0) {
 50236  			z.prec = 0;
 50237  			if (z.form === 1) {
 50238  				z.acc = makeAcc(z.neg);
 50239  				z.form = 0;
 50240  			}
 50241  			$s = -1; return z;
 50242  		}
 50243  		if (prec > 4294967295) {
 50244  			prec = 4294967295;
 50245  		}
 50246  		old = z.prec;
 50247  		z.prec = ((prec >>> 0));
 50248  		/* */ if (z.prec < old) { $s = 1; continue; }
 50249  		/* */ $s = 2; continue;
 50250  		/* if (z.prec < old) { */ case 1:
 50251  			$r = z.round(0); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 50252  		/* } */ case 2:
 50253  		$s = -1; return z;
 50254  		/* */ } return; } if ($f === undefined) { $f = { $blk: Float.ptr.prototype.SetPrec }; } $f.old = old; $f.prec = prec; $f.z = z; $f.$s = $s; $f.$r = $r; return $f;
 50255  	};
 50256  	Float.prototype.SetPrec = function(prec) { return this.$val.SetPrec(prec); };
 50257  	makeAcc = function(above) {
 50258  		var above;
 50259  		if (above) {
 50260  			return 1;
 50261  		}
 50262  		return -1;
 50263  	};
 50264  	Float.ptr.prototype.SetMode = function(mode) {
 50265  		var mode, z;
 50266  		z = this;
 50267  		z.mode = mode;
 50268  		z.acc = 0;
 50269  		return z;
 50270  	};
 50271  	Float.prototype.SetMode = function(mode) { return this.$val.SetMode(mode); };
 50272  	Float.ptr.prototype.Prec = function() {
 50273  		var x;
 50274  		x = this;
 50275  		return ((x.prec >>> 0));
 50276  	};
 50277  	Float.prototype.Prec = function() { return this.$val.Prec(); };
 50278  	Float.ptr.prototype.MinPrec = function() {
 50279  		var x;
 50280  		x = this;
 50281  		if (!((x.form === 1))) {
 50282  			return 0;
 50283  		}
 50284  		return (((x.mant.$length >>> 0)) * 32 >>> 0) - x.mant.trailingZeroBits() >>> 0;
 50285  	};
 50286  	Float.prototype.MinPrec = function() { return this.$val.MinPrec(); };
 50287  	Float.ptr.prototype.Mode = function() {
 50288  		var x;
 50289  		x = this;
 50290  		return x.mode;
 50291  	};
 50292  	Float.prototype.Mode = function() { return this.$val.Mode(); };
 50293  	Float.ptr.prototype.Acc = function() {
 50294  		var x;
 50295  		x = this;
 50296  		return x.acc;
 50297  	};
 50298  	Float.prototype.Acc = function() { return this.$val.Acc(); };
 50299  	Float.ptr.prototype.Sign = function() {
 50300  		var x, $s, $r;
 50301  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 50302  		x = this;
 50303  		/* */ if (false) { $s = 1; continue; }
 50304  		/* */ $s = 2; continue;
 50305  		/* if (false) { */ case 1:
 50306  			$r = x.validate(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 50307  		/* } */ case 2:
 50308  		if (x.form === 0) {
 50309  			$s = -1; return 0;
 50310  		}
 50311  		if (x.neg) {
 50312  			$s = -1; return -1;
 50313  		}
 50314  		$s = -1; return 1;
 50315  		/* */ } return; } if ($f === undefined) { $f = { $blk: Float.ptr.prototype.Sign }; } $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
 50316  	};
 50317  	Float.prototype.Sign = function() { return this.$val.Sign(); };
 50318  	Float.ptr.prototype.MantExp = function(mant) {
 50319  		var _r$3, exp, mant, x, $s, $r;
 50320  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$3 = $f._r$3; exp = $f.exp; mant = $f.mant; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 50321  		exp = 0;
 50322  		x = this;
 50323  		/* */ if (false) { $s = 1; continue; }
 50324  		/* */ $s = 2; continue;
 50325  		/* if (false) { */ case 1:
 50326  			$r = x.validate(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 50327  		/* } */ case 2:
 50328  		if (x.form === 1) {
 50329  			exp = ((x.exp >> 0));
 50330  		}
 50331  		/* */ if (!(mant === ptrType.nil)) { $s = 4; continue; }
 50332  		/* */ $s = 5; continue;
 50333  		/* if (!(mant === ptrType.nil)) { */ case 4:
 50334  			_r$3 = mant.Copy(x); /* */ $s = 6; case 6: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 50335  			_r$3;
 50336  			if (mant.form === 1) {
 50337  				mant.exp = 0;
 50338  			}
 50339  		/* } */ case 5:
 50340  		$s = -1; return exp;
 50341  		/* */ } return; } if ($f === undefined) { $f = { $blk: Float.ptr.prototype.MantExp }; } $f._r$3 = _r$3; $f.exp = exp; $f.mant = mant; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
 50342  	};
 50343  	Float.prototype.MantExp = function(mant) { return this.$val.MantExp(mant); };
 50344  	Float.ptr.prototype.setExpAndRound = function(exp, sbit) {
 50345  		var exp, sbit, z, $s, $r;
 50346  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; exp = $f.exp; sbit = $f.sbit; z = $f.z; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 50347  		z = this;
 50348  		if ((exp.$high < -1 || (exp.$high === -1 && exp.$low < 2147483648))) {
 50349  			z.acc = makeAcc(z.neg);
 50350  			z.form = 0;
 50351  			$s = -1; return;
 50352  		}
 50353  		if ((exp.$high > 0 || (exp.$high === 0 && exp.$low > 2147483647))) {
 50354  			z.acc = makeAcc(!z.neg);
 50355  			z.form = 2;
 50356  			$s = -1; return;
 50357  		}
 50358  		z.form = 1;
 50359  		z.exp = (((exp.$low + ((exp.$high >> 31) * 4294967296)) >> 0));
 50360  		$r = z.round(sbit); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 50361  		$s = -1; return;
 50362  		/* */ } return; } if ($f === undefined) { $f = { $blk: Float.ptr.prototype.setExpAndRound }; } $f.exp = exp; $f.sbit = sbit; $f.z = z; $f.$s = $s; $f.$r = $r; return $f;
 50363  	};
 50364  	Float.prototype.setExpAndRound = function(exp, sbit) { return this.$val.setExpAndRound(exp, sbit); };
 50365  	Float.ptr.prototype.SetMantExp = function(mant, exp) {
 50366  		var _r$3, exp, mant, x, x$1, z, $s, $r;
 50367  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$3 = $f._r$3; exp = $f.exp; mant = $f.mant; x = $f.x; x$1 = $f.x$1; z = $f.z; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 50368  		z = this;
 50369  		/* */ if (false) { $s = 1; continue; }
 50370  		/* */ $s = 2; continue;
 50371  		/* if (false) { */ case 1:
 50372  			$r = z.validate(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 50373  			$r = mant.validate(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 50374  		/* } */ case 2:
 50375  		_r$3 = z.Copy(mant); /* */ $s = 5; case 5: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 50376  		_r$3;
 50377  		if (!((z.form === 1))) {
 50378  			$s = -1; return z;
 50379  		}
 50380  		$r = z.setExpAndRound((x = (new $Int64(0, z.exp)), x$1 = (new $Int64(0, exp)), new $Int64(x.$high + x$1.$high, x.$low + x$1.$low)), 0); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 50381  		$s = -1; return z;
 50382  		/* */ } return; } if ($f === undefined) { $f = { $blk: Float.ptr.prototype.SetMantExp }; } $f._r$3 = _r$3; $f.exp = exp; $f.mant = mant; $f.x = x; $f.x$1 = x$1; $f.z = z; $f.$s = $s; $f.$r = $r; return $f;
 50383  	};
 50384  	Float.prototype.SetMantExp = function(mant, exp) { return this.$val.SetMantExp(mant, exp); };
 50385  	Float.ptr.prototype.Signbit = function() {
 50386  		var x;
 50387  		x = this;
 50388  		return x.neg;
 50389  	};
 50390  	Float.prototype.Signbit = function() { return this.$val.Signbit(); };
 50391  	Float.ptr.prototype.IsInf = function() {
 50392  		var x;
 50393  		x = this;
 50394  		return x.form === 2;
 50395  	};
 50396  	Float.prototype.IsInf = function() { return this.$val.IsInf(); };
 50397  	Float.ptr.prototype.IsInt = function() {
 50398  		var x, $s, $r;
 50399  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 50400  		x = this;
 50401  		/* */ if (false) { $s = 1; continue; }
 50402  		/* */ $s = 2; continue;
 50403  		/* if (false) { */ case 1:
 50404  			$r = x.validate(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 50405  		/* } */ case 2:
 50406  		if (!((x.form === 1))) {
 50407  			$s = -1; return x.form === 0;
 50408  		}
 50409  		if (x.exp <= 0) {
 50410  			$s = -1; return false;
 50411  		}
 50412  		$s = -1; return x.prec <= ((x.exp >>> 0)) || x.MinPrec() <= ((x.exp >>> 0));
 50413  		/* */ } return; } if ($f === undefined) { $f = { $blk: Float.ptr.prototype.IsInt }; } $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
 50414  	};
 50415  	Float.prototype.IsInt = function() { return this.$val.IsInt(); };
 50416  	Float.ptr.prototype.validate = function() {
 50417  		var _arg, _arg$1, _r$3, _r$4, m, x, x$1, x$2, x$3, x$4, $s, $r;
 50418  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _arg = $f._arg; _arg$1 = $f._arg$1; _r$3 = $f._r$3; _r$4 = $f._r$4; m = $f.m; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; x$3 = $f.x$3; x$4 = $f.x$4; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 50419  		x = this;
 50420  		if (true) {
 50421  			$panic(new $String("validate called but debugFloat is not set"));
 50422  		}
 50423  		if (!((x.form === 1))) {
 50424  			$s = -1; return;
 50425  		}
 50426  		m = x.mant.$length;
 50427  		if (m === 0) {
 50428  			$panic(new $String("nonzero finite number with empty mantissa"));
 50429  		}
 50430  		/* */ if ((((x$1 = x.mant, x$2 = m - 1 >> 0, ((x$2 < 0 || x$2 >= x$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + x$2])) & 2147483648) >>> 0) === 0) { $s = 1; continue; }
 50431  		/* */ $s = 2; continue;
 50432  		/* if ((((x$1 = x.mant, x$2 = m - 1 >> 0, ((x$2 < 0 || x$2 >= x$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + x$2])) & 2147483648) >>> 0) === 0) { */ case 1:
 50433  			_arg = new Word((x$3 = x.mant, x$4 = m - 1 >> 0, ((x$4 < 0 || x$4 >= x$3.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$3.$array[x$3.$offset + x$4])));
 50434  			_r$3 = x.Text(112, 0); /* */ $s = 3; case 3: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 50435  			_arg$1 = new $String(_r$3);
 50436  			_r$4 = fmt.Sprintf("msb not set in last word %#x of %s", new sliceType([_arg, _arg$1])); /* */ $s = 4; case 4: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 50437  			$panic(new $String(_r$4));
 50438  		/* } */ case 2:
 50439  		if (x.prec === 0) {
 50440  			$panic(new $String("zero precision finite number"));
 50441  		}
 50442  		$s = -1; return;
 50443  		/* */ } return; } if ($f === undefined) { $f = { $blk: Float.ptr.prototype.validate }; } $f._arg = _arg; $f._arg$1 = _arg$1; $f._r$3 = _r$3; $f._r$4 = _r$4; $f.m = m; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.x$3 = x$3; $f.x$4 = x$4; $f.$s = $s; $f.$r = $r; return $f;
 50444  	};
 50445  	Float.prototype.validate = function() { return this.$val.validate(); };
 50446  	Float.ptr.prototype.round = function(sbit) {
 50447  		var _1, _index, _q, bits$1, inc, lsb, m, n, ntz, r, rbit, sbit, x, x$1, x$2, x$3, x$4, x$5, x$6, x$7, x$8, y, z, $s, $r;
 50448  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _index = $f._index; _q = $f._q; bits$1 = $f.bits$1; inc = $f.inc; lsb = $f.lsb; m = $f.m; n = $f.n; ntz = $f.ntz; r = $f.r; rbit = $f.rbit; sbit = $f.sbit; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; x$3 = $f.x$3; x$4 = $f.x$4; x$5 = $f.x$5; x$6 = $f.x$6; x$7 = $f.x$7; x$8 = $f.x$8; y = $f.y; z = $f.z; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 50449  		z = this;
 50450  		/* */ if (false) { $s = 1; continue; }
 50451  		/* */ $s = 2; continue;
 50452  		/* if (false) { */ case 1:
 50453  			$r = z.validate(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 50454  		/* } */ case 2:
 50455  		z.acc = 0;
 50456  		if (!((z.form === 1))) {
 50457  			$s = -1; return;
 50458  		}
 50459  		m = ((z.mant.$length >>> 0));
 50460  		bits$1 = $imul(m, 32) >>> 0;
 50461  		if (bits$1 <= z.prec) {
 50462  			$s = -1; return;
 50463  		}
 50464  		r = ((((bits$1 - z.prec >>> 0) - 1 >>> 0) >>> 0));
 50465  		rbit = (z.mant.bit(r) & 1) >>> 0;
 50466  		if ((sbit === 0) && ((rbit === 0) || (z.mode === 0))) {
 50467  			sbit = z.mant.sticky(r);
 50468  		}
 50469  		sbit = (sbit & (1)) >>> 0;
 50470  		n = (_q = ((z.prec + 31 >>> 0)) / 32, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >>> 0 : $throwRuntimeError("integer divide by zero"));
 50471  		if (m > n) {
 50472  			$copySlice(z.mant, $subslice(z.mant, (m - n >>> 0)));
 50473  			z.mant = $subslice(z.mant, 0, n);
 50474  		}
 50475  		ntz = ($imul(n, 32) >>> 0) - z.prec >>> 0;
 50476  		lsb = (y = ntz, y < 32 ? (1 << y) : 0) >>> 0;
 50477  		if (!((((rbit | sbit) >>> 0) === 0))) {
 50478  			inc = false;
 50479  			_1 = z.mode;
 50480  			if (_1 === (4)) {
 50481  				inc = z.neg;
 50482  			} else if (_1 === (2)) {
 50483  			} else if (_1 === (0)) {
 50484  				inc = !((rbit === 0)) && (!((sbit === 0)) || !(((((x = z.mant, (0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0])) & lsb) >>> 0) === 0)));
 50485  			} else if (_1 === (1)) {
 50486  				inc = !((rbit === 0));
 50487  			} else if (_1 === (3)) {
 50488  				inc = true;
 50489  			} else if (_1 === (5)) {
 50490  				inc = !z.neg;
 50491  			} else {
 50492  				$panic(new $String("unreachable"));
 50493  			}
 50494  			z.acc = makeAcc(!(inc === z.neg));
 50495  			if (inc) {
 50496  				if (!((addVW((x$1 = z.mant, $subslice(new sliceType$2(x$1.$array), x$1.$offset, x$1.$offset + x$1.$length)), (x$2 = z.mant, $subslice(new sliceType$2(x$2.$array), x$2.$offset, x$2.$offset + x$2.$length)), lsb) === 0))) {
 50497  					if (z.exp >= 2147483647) {
 50498  						z.form = 2;
 50499  						$s = -1; return;
 50500  					}
 50501  					z.exp = z.exp + (1) >> 0;
 50502  					shrVU((x$3 = z.mant, $subslice(new sliceType$2(x$3.$array), x$3.$offset, x$3.$offset + x$3.$length)), (x$4 = z.mant, $subslice(new sliceType$2(x$4.$array), x$4.$offset, x$4.$offset + x$4.$length)), 1);
 50503  					_index = n - 1 >>> 0;
 50504  					(x$6 = z.mant, ((_index < 0 || _index >= x$6.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$6.$array[x$6.$offset + _index] = (((x$5 = z.mant, ((_index < 0 || _index >= x$5.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$5.$array[x$5.$offset + _index])) | (2147483648)) >>> 0)));
 50505  				}
 50506  			}
 50507  		}
 50508  		(x$8 = z.mant, (0 >= x$8.$length ? ($throwRuntimeError("index out of range"), undefined) : x$8.$array[x$8.$offset + 0] = (((x$7 = z.mant, (0 >= x$7.$length ? ($throwRuntimeError("index out of range"), undefined) : x$7.$array[x$7.$offset + 0])) & ~((lsb - 1 >>> 0))) >>> 0)));
 50509  		/* */ if (false) { $s = 4; continue; }
 50510  		/* */ $s = 5; continue;
 50511  		/* if (false) { */ case 4:
 50512  			$r = z.validate(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 50513  		/* } */ case 5:
 50514  		$s = -1; return;
 50515  		/* */ } return; } if ($f === undefined) { $f = { $blk: Float.ptr.prototype.round }; } $f._1 = _1; $f._index = _index; $f._q = _q; $f.bits$1 = bits$1; $f.inc = inc; $f.lsb = lsb; $f.m = m; $f.n = n; $f.ntz = ntz; $f.r = r; $f.rbit = rbit; $f.sbit = sbit; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.x$3 = x$3; $f.x$4 = x$4; $f.x$5 = x$5; $f.x$6 = x$6; $f.x$7 = x$7; $f.x$8 = x$8; $f.y = y; $f.z = z; $f.$s = $s; $f.$r = $r; return $f;
 50516  	};
 50517  	Float.prototype.round = function(sbit) { return this.$val.round(sbit); };
 50518  	Float.ptr.prototype.setBits64 = function(neg, x) {
 50519  		var neg, s, x, z, $s, $r;
 50520  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; neg = $f.neg; s = $f.s; x = $f.x; z = $f.z; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 50521  		z = this;
 50522  		if (z.prec === 0) {
 50523  			z.prec = 64;
 50524  		}
 50525  		z.acc = 0;
 50526  		z.neg = neg;
 50527  		if ((x.$high === 0 && x.$low === 0)) {
 50528  			z.form = 0;
 50529  			$s = -1; return z;
 50530  		}
 50531  		z.form = 1;
 50532  		s = bits.LeadingZeros64(x);
 50533  		z.mant = z.mant.setUint64($shiftLeft64(x, ((s >>> 0))));
 50534  		z.exp = (((64 - s >> 0) >> 0));
 50535  		/* */ if (z.prec < 64) { $s = 1; continue; }
 50536  		/* */ $s = 2; continue;
 50537  		/* if (z.prec < 64) { */ case 1:
 50538  			$r = z.round(0); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 50539  		/* } */ case 2:
 50540  		$s = -1; return z;
 50541  		/* */ } return; } if ($f === undefined) { $f = { $blk: Float.ptr.prototype.setBits64 }; } $f.neg = neg; $f.s = s; $f.x = x; $f.z = z; $f.$s = $s; $f.$r = $r; return $f;
 50542  	};
 50543  	Float.prototype.setBits64 = function(neg, x) { return this.$val.setBits64(neg, x); };
 50544  	Float.ptr.prototype.SetUint64 = function(x) {
 50545  		var _r$3, x, z, $s, $r;
 50546  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$3 = $f._r$3; x = $f.x; z = $f.z; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 50547  		z = this;
 50548  		_r$3 = z.setBits64(false, x); /* */ $s = 1; case 1: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 50549  		$s = -1; return _r$3;
 50550  		/* */ } return; } if ($f === undefined) { $f = { $blk: Float.ptr.prototype.SetUint64 }; } $f._r$3 = _r$3; $f.x = x; $f.z = z; $f.$s = $s; $f.$r = $r; return $f;
 50551  	};
 50552  	Float.prototype.SetUint64 = function(x) { return this.$val.SetUint64(x); };
 50553  	Float.ptr.prototype.SetInt64 = function(x) {
 50554  		var _r$3, u, x, z, $s, $r;
 50555  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$3 = $f._r$3; u = $f.u; x = $f.x; z = $f.z; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 50556  		z = this;
 50557  		u = x;
 50558  		if ((u.$high < 0 || (u.$high === 0 && u.$low < 0))) {
 50559  			u = new $Int64(-u.$high, -u.$low);
 50560  		}
 50561  		_r$3 = z.setBits64((x.$high < 0 || (x.$high === 0 && x.$low < 0)), (new $Uint64(u.$high, u.$low))); /* */ $s = 1; case 1: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 50562  		$s = -1; return _r$3;
 50563  		/* */ } return; } if ($f === undefined) { $f = { $blk: Float.ptr.prototype.SetInt64 }; } $f._r$3 = _r$3; $f.u = u; $f.x = x; $f.z = z; $f.$s = $s; $f.$r = $r; return $f;
 50564  	};
 50565  	Float.prototype.SetInt64 = function(x) { return this.$val.SetInt64(x); };
 50566  	Float.ptr.prototype.SetFloat64 = function(x) {
 50567  		var _tuple, exp, fmant, x, x$1, x$2, z, $s, $r;
 50568  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _tuple = $f._tuple; exp = $f.exp; fmant = $f.fmant; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; z = $f.z; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 50569  		z = this;
 50570  		if (z.prec === 0) {
 50571  			z.prec = 53;
 50572  		}
 50573  		if (math.IsNaN(x)) {
 50574  			$panic((x$1 = new ErrNaN.ptr("Float.SetFloat64(NaN)"), new x$1.constructor.elem(x$1)));
 50575  		}
 50576  		z.acc = 0;
 50577  		z.neg = math.Signbit(x);
 50578  		if (x === 0) {
 50579  			z.form = 0;
 50580  			$s = -1; return z;
 50581  		}
 50582  		if (math.IsInf(x, 0)) {
 50583  			z.form = 2;
 50584  			$s = -1; return z;
 50585  		}
 50586  		z.form = 1;
 50587  		_tuple = math.Frexp(x);
 50588  		fmant = _tuple[0];
 50589  		exp = _tuple[1];
 50590  		z.mant = z.mant.setUint64((x$2 = $shiftLeft64(math.Float64bits(fmant), 11), new $Uint64(2147483648 | x$2.$high, (0 | x$2.$low) >>> 0)));
 50591  		z.exp = ((exp >> 0));
 50592  		/* */ if (z.prec < 53) { $s = 1; continue; }
 50593  		/* */ $s = 2; continue;
 50594  		/* if (z.prec < 53) { */ case 1:
 50595  			$r = z.round(0); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 50596  		/* } */ case 2:
 50597  		$s = -1; return z;
 50598  		/* */ } return; } if ($f === undefined) { $f = { $blk: Float.ptr.prototype.SetFloat64 }; } $f._tuple = _tuple; $f.exp = exp; $f.fmant = fmant; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.z = z; $f.$s = $s; $f.$r = $r; return $f;
 50599  	};
 50600  	Float.prototype.SetFloat64 = function(x) { return this.$val.SetFloat64(x); };
 50601  	fnorm = function(m) {
 50602  		var c, m, s, x, x$1;
 50603  		if (false && ((m.$length === 0) || ((x = m.$length - 1 >> 0, ((x < 0 || x >= m.$length) ? ($throwRuntimeError("index out of range"), undefined) : m.$array[m.$offset + x])) === 0))) {
 50604  			$panic(new $String("msw of mantissa is 0"));
 50605  		}
 50606  		s = nlz((x$1 = m.$length - 1 >> 0, ((x$1 < 0 || x$1 >= m.$length) ? ($throwRuntimeError("index out of range"), undefined) : m.$array[m.$offset + x$1])));
 50607  		if (s > 0) {
 50608  			c = shlVU($subslice(new sliceType$2(m.$array), m.$offset, m.$offset + m.$length), $subslice(new sliceType$2(m.$array), m.$offset, m.$offset + m.$length), s);
 50609  			if (false && !((c === 0))) {
 50610  				$panic(new $String("nlz or shlVU incorrect"));
 50611  			}
 50612  		}
 50613  		return (new $Int64(0, s));
 50614  	};
 50615  	Float.ptr.prototype.SetInt = function(x) {
 50616  		var bits$1, x, z, $s, $r;
 50617  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; bits$1 = $f.bits$1; x = $f.x; z = $f.z; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 50618  		z = this;
 50619  		bits$1 = ((x.BitLen() >>> 0));
 50620  		if (z.prec === 0) {
 50621  			z.prec = umax32(bits$1, 64);
 50622  		}
 50623  		z.acc = 0;
 50624  		z.neg = x.neg;
 50625  		if (x.abs.$length === 0) {
 50626  			z.form = 0;
 50627  			$s = -1; return z;
 50628  		}
 50629  		z.mant = z.mant.set(x.abs);
 50630  		fnorm(z.mant);
 50631  		$r = z.setExpAndRound((new $Int64(0, bits$1)), 0); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 50632  		$s = -1; return z;
 50633  		/* */ } return; } if ($f === undefined) { $f = { $blk: Float.ptr.prototype.SetInt }; } $f.bits$1 = bits$1; $f.x = x; $f.z = z; $f.$s = $s; $f.$r = $r; return $f;
 50634  	};
 50635  	Float.prototype.SetInt = function(x) { return this.$val.SetInt(x); };
 50636  	Float.ptr.prototype.SetRat = function(x) {
 50637  		var _r$3, _r$4, _r$5, _r$6, _tmp, _tmp$1, a, b, x, z, $s, $r;
 50638  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; a = $f.a; b = $f.b; x = $f.x; z = $f.z; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 50639  		a = [a];
 50640  		b = [b];
 50641  		z = this;
 50642  		/* */ if (x.IsInt()) { $s = 1; continue; }
 50643  		/* */ $s = 2; continue;
 50644  		/* if (x.IsInt()) { */ case 1:
 50645  			_r$3 = z.SetInt(x.Num()); /* */ $s = 3; case 3: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 50646  			$s = -1; return _r$3;
 50647  		/* } */ case 2:
 50648  		_tmp = new Float.ptr(0, 0, 0, 0, false, nat.nil, 0);
 50649  		_tmp$1 = new Float.ptr(0, 0, 0, 0, false, nat.nil, 0);
 50650  		a[0] = $clone(_tmp, Float);
 50651  		b[0] = $clone(_tmp$1, Float);
 50652  		_r$4 = a[0].SetInt(x.Num()); /* */ $s = 4; case 4: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 50653  		_r$4;
 50654  		_r$5 = b[0].SetInt(x.Denom()); /* */ $s = 5; case 5: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
 50655  		_r$5;
 50656  		if (z.prec === 0) {
 50657  			z.prec = umax32(a[0].prec, b[0].prec);
 50658  		}
 50659  		_r$6 = z.Quo(a[0], b[0]); /* */ $s = 6; case 6: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
 50660  		$s = -1; return _r$6;
 50661  		/* */ } return; } if ($f === undefined) { $f = { $blk: Float.ptr.prototype.SetRat }; } $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f.a = a; $f.b = b; $f.x = x; $f.z = z; $f.$s = $s; $f.$r = $r; return $f;
 50662  	};
 50663  	Float.prototype.SetRat = function(x) { return this.$val.SetRat(x); };
 50664  	Float.ptr.prototype.SetInf = function(signbit) {
 50665  		var signbit, z;
 50666  		z = this;
 50667  		z.acc = 0;
 50668  		z.form = 2;
 50669  		z.neg = signbit;
 50670  		return z;
 50671  	};
 50672  	Float.prototype.SetInf = function(signbit) { return this.$val.SetInf(signbit); };
 50673  	Float.ptr.prototype.Set = function(x) {
 50674  		var x, z, $s, $r;
 50675  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; x = $f.x; z = $f.z; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 50676  		z = this;
 50677  		/* */ if (false) { $s = 1; continue; }
 50678  		/* */ $s = 2; continue;
 50679  		/* if (false) { */ case 1:
 50680  			$r = x.validate(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 50681  		/* } */ case 2:
 50682  		z.acc = 0;
 50683  		/* */ if (!(z === x)) { $s = 4; continue; }
 50684  		/* */ $s = 5; continue;
 50685  		/* if (!(z === x)) { */ case 4:
 50686  			z.form = x.form;
 50687  			z.neg = x.neg;
 50688  			if (x.form === 1) {
 50689  				z.exp = x.exp;
 50690  				z.mant = z.mant.set(x.mant);
 50691  			}
 50692  			/* */ if (z.prec === 0) { $s = 6; continue; }
 50693  			/* */ if (z.prec < x.prec) { $s = 7; continue; }
 50694  			/* */ $s = 8; continue;
 50695  			/* if (z.prec === 0) { */ case 6:
 50696  				z.prec = x.prec;
 50697  				$s = 8; continue;
 50698  			/* } else if (z.prec < x.prec) { */ case 7:
 50699  				$r = z.round(0); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 50700  			/* } */ case 8:
 50701  		/* } */ case 5:
 50702  		$s = -1; return z;
 50703  		/* */ } return; } if ($f === undefined) { $f = { $blk: Float.ptr.prototype.Set }; } $f.x = x; $f.z = z; $f.$s = $s; $f.$r = $r; return $f;
 50704  	};
 50705  	Float.prototype.Set = function(x) { return this.$val.Set(x); };
 50706  	Float.ptr.prototype.Copy = function(x) {
 50707  		var x, z, $s, $r;
 50708  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; x = $f.x; z = $f.z; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 50709  		z = this;
 50710  		/* */ if (false) { $s = 1; continue; }
 50711  		/* */ $s = 2; continue;
 50712  		/* if (false) { */ case 1:
 50713  			$r = x.validate(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 50714  		/* } */ case 2:
 50715  		if (!(z === x)) {
 50716  			z.prec = x.prec;
 50717  			z.mode = x.mode;
 50718  			z.acc = x.acc;
 50719  			z.form = x.form;
 50720  			z.neg = x.neg;
 50721  			if (z.form === 1) {
 50722  				z.mant = z.mant.set(x.mant);
 50723  				z.exp = x.exp;
 50724  			}
 50725  		}
 50726  		$s = -1; return z;
 50727  		/* */ } return; } if ($f === undefined) { $f = { $blk: Float.ptr.prototype.Copy }; } $f.x = x; $f.z = z; $f.$s = $s; $f.$r = $r; return $f;
 50728  	};
 50729  	Float.prototype.Copy = function(x) { return this.$val.Copy(x); };
 50730  	msb32 = function(x) {
 50731  		var _1, i, x;
 50732  		i = x.$length - 1 >> 0;
 50733  		if (i < 0) {
 50734  			return 0;
 50735  		}
 50736  		if (false && (((((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i]) & 2147483648) >>> 0) === 0)) {
 50737  			$panic(new $String("x not normalized"));
 50738  		}
 50739  		_1 = 32;
 50740  		if (_1 === (32)) {
 50741  			return ((((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i]) >>> 0));
 50742  		} else if (_1 === (64)) {
 50743  			return ((0 >>> 0));
 50744  		}
 50745  		$panic(new $String("unreachable"));
 50746  	};
 50747  	msb64 = function(x) {
 50748  		var _1, i, v, x, x$1, x$2, x$3, x$4, x$5;
 50749  		i = x.$length - 1 >> 0;
 50750  		if (i < 0) {
 50751  			return new $Uint64(0, 0);
 50752  		}
 50753  		if (false && (((((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i]) & 2147483648) >>> 0) === 0)) {
 50754  			$panic(new $String("x not normalized"));
 50755  		}
 50756  		_1 = 32;
 50757  		if (_1 === (32)) {
 50758  			v = $shiftLeft64(((x$1 = ((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i]), new $Uint64(0, x$1.constructor === Number ? x$1 : 1))), 32);
 50759  			if (i > 0) {
 50760  				v = (x$2 = ((x$3 = (x$4 = i - 1 >> 0, ((x$4 < 0 || x$4 >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + x$4])), new $Uint64(0, x$3.constructor === Number ? x$3 : 1))), new $Uint64(v.$high | x$2.$high, (v.$low | x$2.$low) >>> 0));
 50761  			}
 50762  			return v;
 50763  		} else if (_1 === (64)) {
 50764  			return ((x$5 = ((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i]), new $Uint64(0, x$5.constructor === Number ? x$5 : 1)));
 50765  		}
 50766  		$panic(new $String("unreachable"));
 50767  	};
 50768  	Float.ptr.prototype.Uint64 = function() {
 50769  		var _1, u, x, $s, $r;
 50770  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; u = $f.u; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 50771  		x = this;
 50772  		/* */ if (false) { $s = 1; continue; }
 50773  		/* */ $s = 2; continue;
 50774  		/* if (false) { */ case 1:
 50775  			$r = x.validate(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 50776  		/* } */ case 2:
 50777  		_1 = x.form;
 50778  		if (_1 === (1)) {
 50779  			if (x.neg) {
 50780  				$s = -1; return [new $Uint64(0, 0), 1];
 50781  			}
 50782  			if (x.exp <= 0) {
 50783  				$s = -1; return [new $Uint64(0, 0), -1];
 50784  			}
 50785  			if (x.exp <= 64) {
 50786  				u = $shiftRightUint64(msb64(x.mant), ((64 - ((x.exp >>> 0)) >>> 0)));
 50787  				if (x.MinPrec() <= 64) {
 50788  					$s = -1; return [u, 0];
 50789  				}
 50790  				$s = -1; return [u, -1];
 50791  			}
 50792  			$s = -1; return [new $Uint64(4294967295, 4294967295), -1];
 50793  		} else if (_1 === (0)) {
 50794  			$s = -1; return [new $Uint64(0, 0), 0];
 50795  		} else if (_1 === (2)) {
 50796  			if (x.neg) {
 50797  				$s = -1; return [new $Uint64(0, 0), 1];
 50798  			}
 50799  			$s = -1; return [new $Uint64(4294967295, 4294967295), -1];
 50800  		}
 50801  		$panic(new $String("unreachable"));
 50802  		$s = -1; return [new $Uint64(0, 0), 0];
 50803  		/* */ } return; } if ($f === undefined) { $f = { $blk: Float.ptr.prototype.Uint64 }; } $f._1 = _1; $f.u = u; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
 50804  	};
 50805  	Float.prototype.Uint64 = function() { return this.$val.Uint64(); };
 50806  	Float.ptr.prototype.Int64 = function() {
 50807  		var _1, acc, i, x, x$1, $s, $r;
 50808  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; acc = $f.acc; i = $f.i; x = $f.x; x$1 = $f.x$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 50809  		x = this;
 50810  		/* */ if (false) { $s = 1; continue; }
 50811  		/* */ $s = 2; continue;
 50812  		/* if (false) { */ case 1:
 50813  			$r = x.validate(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 50814  		/* } */ case 2:
 50815  		_1 = x.form;
 50816  		if (_1 === (1)) {
 50817  			acc = makeAcc(x.neg);
 50818  			if (x.exp <= 0) {
 50819  				$s = -1; return [new $Int64(0, 0), acc];
 50820  			}
 50821  			if (x.exp <= 63) {
 50822  				i = ((x$1 = $shiftRightUint64(msb64(x.mant), ((64 - ((x.exp >>> 0)) >>> 0))), new $Int64(x$1.$high, x$1.$low)));
 50823  				if (x.neg) {
 50824  					i = new $Int64(-i.$high, -i.$low);
 50825  				}
 50826  				if (x.MinPrec() <= ((x.exp >>> 0))) {
 50827  					$s = -1; return [i, 0];
 50828  				}
 50829  				$s = -1; return [i, acc];
 50830  			}
 50831  			if (x.neg) {
 50832  				if ((x.exp === 64) && (x.MinPrec() === 1)) {
 50833  					acc = 0;
 50834  				}
 50835  				$s = -1; return [new $Int64(-2147483648, 0), acc];
 50836  			}
 50837  			$s = -1; return [new $Int64(2147483647, 4294967295), -1];
 50838  		} else if (_1 === (0)) {
 50839  			$s = -1; return [new $Int64(0, 0), 0];
 50840  		} else if (_1 === (2)) {
 50841  			if (x.neg) {
 50842  				$s = -1; return [new $Int64(-2147483648, 0), 1];
 50843  			}
 50844  			$s = -1; return [new $Int64(2147483647, 4294967295), -1];
 50845  		}
 50846  		$panic(new $String("unreachable"));
 50847  		$s = -1; return [new $Int64(0, 0), 0];
 50848  		/* */ } return; } if ($f === undefined) { $f = { $blk: Float.ptr.prototype.Int64 }; } $f._1 = _1; $f.acc = acc; $f.i = i; $f.x = x; $f.x$1 = x$1; $f.$s = $s; $f.$r = $r; return $f;
 50849  	};
 50850  	Float.prototype.Int64 = function() { return this.$val.Int64(); };
 50851  	Float.ptr.prototype.Float32 = function() {
 50852  		var _1, _r$3, _tmp, _tmp$1, _tmp$2, bexp, e, mant, p, r, sign, x, y, z, z$1, $s, $r;
 50853  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _r$3 = $f._r$3; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; bexp = $f.bexp; e = $f.e; mant = $f.mant; p = $f.p; r = $f.r; sign = $f.sign; x = $f.x; y = $f.y; z = $f.z; z$1 = $f.z$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 50854  		x = this;
 50855  		/* */ if (false) { $s = 1; continue; }
 50856  		/* */ $s = 2; continue;
 50857  		/* if (false) { */ case 1:
 50858  			$r = x.validate(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 50859  		/* } */ case 2:
 50860  			_1 = x.form;
 50861  			/* */ if (_1 === (1)) { $s = 5; continue; }
 50862  			/* */ if (_1 === (0)) { $s = 6; continue; }
 50863  			/* */ if (_1 === (2)) { $s = 7; continue; }
 50864  			/* */ $s = 8; continue;
 50865  			/* if (_1 === (1)) { */ case 5:
 50866  				e = x.exp - 1 >> 0;
 50867  				p = 24;
 50868  				if (e < -126) {
 50869  					p = 150 + ((e >> 0)) >> 0;
 50870  					if (p < 0 || (p === 0) && (x.mant.sticky((((x.mant.$length >>> 0)) * 32 >>> 0) - 1 >>> 0) === 0)) {
 50871  						if (x.neg) {
 50872  							z = 0;
 50873  							$s = -1; return [-z, 1];
 50874  						}
 50875  						$s = -1; return [0, -1];
 50876  					}
 50877  					if (p === 0) {
 50878  						if (x.neg) {
 50879  							$s = -1; return [-1.401298464324817e-45, -1];
 50880  						}
 50881  						$s = -1; return [1.401298464324817e-45, 1];
 50882  					}
 50883  				}
 50884  				r = new Float.ptr(0, 0, 0, 0, false, nat.nil, 0);
 50885  				r.prec = ((p >>> 0));
 50886  				_r$3 = r.Set(x); /* */ $s = 9; case 9: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 50887  				_r$3;
 50888  				e = r.exp - 1 >> 0;
 50889  				if ((r.form === 2) || e > 127) {
 50890  					if (x.neg) {
 50891  						$s = -1; return [($fround(math.Inf(-1))), -1];
 50892  					}
 50893  					$s = -1; return [($fround(math.Inf(1))), 1];
 50894  				}
 50895  				_tmp = 0;
 50896  				_tmp$1 = 0;
 50897  				_tmp$2 = 0;
 50898  				sign = _tmp;
 50899  				bexp = _tmp$1;
 50900  				mant = _tmp$2;
 50901  				if (x.neg) {
 50902  					sign = 2147483648;
 50903  				}
 50904  				if (e < -126) {
 50905  					p = 150 + ((e >> 0)) >> 0;
 50906  					mant = (y = (((32 - p >> 0) >>> 0)), y < 32 ? (msb32(r.mant) >>> y) : 0) >>> 0;
 50907  				} else {
 50908  					bexp = (((e + 127 >> 0) >>> 0)) << 23 >>> 0;
 50909  					mant = ((msb32(r.mant) >>> 8 >>> 0) & 8388607) >>> 0;
 50910  				}
 50911  				$s = -1; return [math.Float32frombits((((sign | bexp) >>> 0) | mant) >>> 0), r.acc];
 50912  			/* } else if (_1 === (0)) { */ case 6:
 50913  				if (x.neg) {
 50914  					z$1 = 0;
 50915  					$s = -1; return [-z$1, 0];
 50916  				}
 50917  				$s = -1; return [0, 0];
 50918  			/* } else if (_1 === (2)) { */ case 7:
 50919  				if (x.neg) {
 50920  					$s = -1; return [($fround(math.Inf(-1))), 0];
 50921  				}
 50922  				$s = -1; return [($fround(math.Inf(1))), 0];
 50923  			/* } */ case 8:
 50924  		case 4:
 50925  		$panic(new $String("unreachable"));
 50926  		$s = -1; return [0, 0];
 50927  		/* */ } return; } if ($f === undefined) { $f = { $blk: Float.ptr.prototype.Float32 }; } $f._1 = _1; $f._r$3 = _r$3; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f.bexp = bexp; $f.e = e; $f.mant = mant; $f.p = p; $f.r = r; $f.sign = sign; $f.x = x; $f.y = y; $f.z = z; $f.z$1 = z$1; $f.$s = $s; $f.$r = $r; return $f;
 50928  	};
 50929  	Float.prototype.Float32 = function() { return this.$val.Float32(); };
 50930  	Float.ptr.prototype.Float64 = function() {
 50931  		var _1, _r$3, _tmp, _tmp$1, _tmp$2, bexp, e, mant, p, r, sign, x, x$1, x$2, z, z$1, $s, $r;
 50932  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _r$3 = $f._r$3; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; bexp = $f.bexp; e = $f.e; mant = $f.mant; p = $f.p; r = $f.r; sign = $f.sign; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; z = $f.z; z$1 = $f.z$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 50933  		x = this;
 50934  		/* */ if (false) { $s = 1; continue; }
 50935  		/* */ $s = 2; continue;
 50936  		/* if (false) { */ case 1:
 50937  			$r = x.validate(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 50938  		/* } */ case 2:
 50939  			_1 = x.form;
 50940  			/* */ if (_1 === (1)) { $s = 5; continue; }
 50941  			/* */ if (_1 === (0)) { $s = 6; continue; }
 50942  			/* */ if (_1 === (2)) { $s = 7; continue; }
 50943  			/* */ $s = 8; continue;
 50944  			/* if (_1 === (1)) { */ case 5:
 50945  				e = x.exp - 1 >> 0;
 50946  				p = 53;
 50947  				if (e < -1022) {
 50948  					p = 1075 + ((e >> 0)) >> 0;
 50949  					if (p < 0 || (p === 0) && (x.mant.sticky((((x.mant.$length >>> 0)) * 32 >>> 0) - 1 >>> 0) === 0)) {
 50950  						if (x.neg) {
 50951  							z = 0;
 50952  							$s = -1; return [-z, 1];
 50953  						}
 50954  						$s = -1; return [0, -1];
 50955  					}
 50956  					if (p === 0) {
 50957  						if (x.neg) {
 50958  							$s = -1; return [-5e-324, -1];
 50959  						}
 50960  						$s = -1; return [5e-324, 1];
 50961  					}
 50962  				}
 50963  				r = new Float.ptr(0, 0, 0, 0, false, nat.nil, 0);
 50964  				r.prec = ((p >>> 0));
 50965  				_r$3 = r.Set(x); /* */ $s = 9; case 9: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 50966  				_r$3;
 50967  				e = r.exp - 1 >> 0;
 50968  				if ((r.form === 2) || e > 1023) {
 50969  					if (x.neg) {
 50970  						$s = -1; return [math.Inf(-1), -1];
 50971  					}
 50972  					$s = -1; return [math.Inf(1), 1];
 50973  				}
 50974  				_tmp = new $Uint64(0, 0);
 50975  				_tmp$1 = new $Uint64(0, 0);
 50976  				_tmp$2 = new $Uint64(0, 0);
 50977  				sign = _tmp;
 50978  				bexp = _tmp$1;
 50979  				mant = _tmp$2;
 50980  				if (x.neg) {
 50981  					sign = new $Uint64(2147483648, 0);
 50982  				}
 50983  				if (e < -1022) {
 50984  					p = 1075 + ((e >> 0)) >> 0;
 50985  					mant = $shiftRightUint64(msb64(r.mant), (((64 - p >> 0) >>> 0)));
 50986  				} else {
 50987  					bexp = $shiftLeft64((new $Uint64(0, (e + 1023 >> 0))), 52);
 50988  					mant = (x$1 = $shiftRightUint64(msb64(r.mant), 11), new $Uint64(x$1.$high & 1048575, (x$1.$low & 4294967295) >>> 0));
 50989  				}
 50990  				$s = -1; return [math.Float64frombits((x$2 = new $Uint64(sign.$high | bexp.$high, (sign.$low | bexp.$low) >>> 0), new $Uint64(x$2.$high | mant.$high, (x$2.$low | mant.$low) >>> 0))), r.acc];
 50991  			/* } else if (_1 === (0)) { */ case 6:
 50992  				if (x.neg) {
 50993  					z$1 = 0;
 50994  					$s = -1; return [-z$1, 0];
 50995  				}
 50996  				$s = -1; return [0, 0];
 50997  			/* } else if (_1 === (2)) { */ case 7:
 50998  				if (x.neg) {
 50999  					$s = -1; return [math.Inf(-1), 0];
 51000  				}
 51001  				$s = -1; return [math.Inf(1), 0];
 51002  			/* } */ case 8:
 51003  		case 4:
 51004  		$panic(new $String("unreachable"));
 51005  		$s = -1; return [0, 0];
 51006  		/* */ } return; } if ($f === undefined) { $f = { $blk: Float.ptr.prototype.Float64 }; } $f._1 = _1; $f._r$3 = _r$3; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f.bexp = bexp; $f.e = e; $f.mant = mant; $f.p = p; $f.r = r; $f.sign = sign; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.z = z; $f.z$1 = z$1; $f.$s = $s; $f.$r = $r; return $f;
 51007  	};
 51008  	Float.prototype.Float64 = function() { return this.$val.Float64(); };
 51009  	Float.ptr.prototype.Int = function(z) {
 51010  		var _1, acc, allBits, exp, x, z, $s, $r;
 51011  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; acc = $f.acc; allBits = $f.allBits; exp = $f.exp; x = $f.x; z = $f.z; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 51012  		x = this;
 51013  		/* */ if (false) { $s = 1; continue; }
 51014  		/* */ $s = 2; continue;
 51015  		/* if (false) { */ case 1:
 51016  			$r = x.validate(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 51017  		/* } */ case 2:
 51018  		if (z === ptrType$1.nil && x.form <= 1) {
 51019  			z = new Int.ptr(false, nat.nil);
 51020  		}
 51021  		_1 = x.form;
 51022  		if (_1 === (1)) {
 51023  			acc = makeAcc(x.neg);
 51024  			if (x.exp <= 0) {
 51025  				$s = -1; return [z.SetInt64(new $Int64(0, 0)), acc];
 51026  			}
 51027  			allBits = ((x.mant.$length >>> 0)) * 32 >>> 0;
 51028  			exp = ((x.exp >>> 0));
 51029  			if (x.MinPrec() <= exp) {
 51030  				acc = 0;
 51031  			}
 51032  			if (z === ptrType$1.nil) {
 51033  				z = new Int.ptr(false, nat.nil);
 51034  			}
 51035  			z.neg = x.neg;
 51036  			if (exp > allBits) {
 51037  				z.abs = z.abs.shl(x.mant, exp - allBits >>> 0);
 51038  			} else if (exp < allBits) {
 51039  				z.abs = z.abs.shr(x.mant, allBits - exp >>> 0);
 51040  			} else {
 51041  				z.abs = z.abs.set(x.mant);
 51042  			}
 51043  			$s = -1; return [z, acc];
 51044  		} else if (_1 === (0)) {
 51045  			$s = -1; return [z.SetInt64(new $Int64(0, 0)), 0];
 51046  		} else if (_1 === (2)) {
 51047  			$s = -1; return [ptrType$1.nil, makeAcc(x.neg)];
 51048  		}
 51049  		$panic(new $String("unreachable"));
 51050  		$s = -1; return [ptrType$1.nil, 0];
 51051  		/* */ } return; } if ($f === undefined) { $f = { $blk: Float.ptr.prototype.Int }; } $f._1 = _1; $f.acc = acc; $f.allBits = allBits; $f.exp = exp; $f.x = x; $f.z = z; $f.$s = $s; $f.$r = $r; return $f;
 51052  	};
 51053  	Float.prototype.Int = function(z) { return this.$val.Int(z); };
 51054  	Float.ptr.prototype.Rat = function(z) {
 51055  		var _1, _r$3, allBits, t, x, z, $s, $r;
 51056  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _r$3 = $f._r$3; allBits = $f.allBits; t = $f.t; x = $f.x; z = $f.z; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 51057  		x = this;
 51058  		/* */ if (false) { $s = 1; continue; }
 51059  		/* */ $s = 2; continue;
 51060  		/* if (false) { */ case 1:
 51061  			$r = x.validate(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 51062  		/* } */ case 2:
 51063  		if (z === ptrType$2.nil && x.form <= 1) {
 51064  			z = new Rat.ptr(new Int.ptr(false, nat.nil), new Int.ptr(false, nat.nil));
 51065  		}
 51066  			_1 = x.form;
 51067  			/* */ if (_1 === (1)) { $s = 5; continue; }
 51068  			/* */ if (_1 === (0)) { $s = 6; continue; }
 51069  			/* */ if (_1 === (2)) { $s = 7; continue; }
 51070  			/* */ $s = 8; continue;
 51071  			/* if (_1 === (1)) { */ case 5:
 51072  				allBits = $imul(((x.mant.$length >> 0)), 32);
 51073  				z.a.neg = x.neg;
 51074  					/* */ if (x.exp > allBits) { $s = 10; continue; }
 51075  					/* */ if (x.exp < allBits) { $s = 11; continue; }
 51076  					/* */ $s = 12; continue;
 51077  					/* if (x.exp > allBits) { */ case 10:
 51078  						z.a.abs = z.a.abs.shl(x.mant, (((x.exp - allBits >> 0) >>> 0)));
 51079  						z.b.abs = $subslice(z.b.abs, 0, 0);
 51080  						$s = 13; continue;
 51081  					/* } else if (x.exp < allBits) { */ case 11:
 51082  						z.a.abs = z.a.abs.set(x.mant);
 51083  						t = z.b.abs.setUint64(new $Uint64(0, 1));
 51084  						z.b.abs = t.shl(t, (((allBits - x.exp >> 0) >>> 0)));
 51085  						_r$3 = z.norm(); /* */ $s = 14; case 14: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 51086  						_r$3;
 51087  						$s = 13; continue;
 51088  					/* } else { */ case 12:
 51089  						z.a.abs = z.a.abs.set(x.mant);
 51090  						z.b.abs = $subslice(z.b.abs, 0, 0);
 51091  					/* } */ case 13:
 51092  				case 9:
 51093  				$s = -1; return [z, 0];
 51094  			/* } else if (_1 === (0)) { */ case 6:
 51095  				$s = -1; return [z.SetInt64(new $Int64(0, 0)), 0];
 51096  			/* } else if (_1 === (2)) { */ case 7:
 51097  				$s = -1; return [ptrType$2.nil, makeAcc(x.neg)];
 51098  			/* } */ case 8:
 51099  		case 4:
 51100  		$panic(new $String("unreachable"));
 51101  		$s = -1; return [ptrType$2.nil, 0];
 51102  		/* */ } return; } if ($f === undefined) { $f = { $blk: Float.ptr.prototype.Rat }; } $f._1 = _1; $f._r$3 = _r$3; $f.allBits = allBits; $f.t = t; $f.x = x; $f.z = z; $f.$s = $s; $f.$r = $r; return $f;
 51103  	};
 51104  	Float.prototype.Rat = function(z) { return this.$val.Rat(z); };
 51105  	Float.ptr.prototype.Abs = function(x) {
 51106  		var _r$3, x, z, $s, $r;
 51107  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$3 = $f._r$3; x = $f.x; z = $f.z; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 51108  		z = this;
 51109  		_r$3 = z.Set(x); /* */ $s = 1; case 1: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 51110  		_r$3;
 51111  		z.neg = false;
 51112  		$s = -1; return z;
 51113  		/* */ } return; } if ($f === undefined) { $f = { $blk: Float.ptr.prototype.Abs }; } $f._r$3 = _r$3; $f.x = x; $f.z = z; $f.$s = $s; $f.$r = $r; return $f;
 51114  	};
 51115  	Float.prototype.Abs = function(x) { return this.$val.Abs(x); };
 51116  	Float.ptr.prototype.Neg = function(x) {
 51117  		var _r$3, x, z, $s, $r;
 51118  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$3 = $f._r$3; x = $f.x; z = $f.z; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 51119  		z = this;
 51120  		_r$3 = z.Set(x); /* */ $s = 1; case 1: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 51121  		_r$3;
 51122  		z.neg = !z.neg;
 51123  		$s = -1; return z;
 51124  		/* */ } return; } if ($f === undefined) { $f = { $blk: Float.ptr.prototype.Neg }; } $f._r$3 = _r$3; $f.x = x; $f.z = z; $f.$s = $s; $f.$r = $r; return $f;
 51125  	};
 51126  	Float.prototype.Neg = function(x) { return this.$val.Neg(x); };
 51127  	validateBinaryOperands = function(x, y) {
 51128  		var x, y;
 51129  		if (true) {
 51130  			$panic(new $String("validateBinaryOperands called but debugFloat is not set"));
 51131  		}
 51132  		if (x.mant.$length === 0) {
 51133  			$panic(new $String("empty mantissa for x"));
 51134  		}
 51135  		if (y.mant.$length === 0) {
 51136  			$panic(new $String("empty mantissa for y"));
 51137  		}
 51138  	};
 51139  	Float.ptr.prototype.uadd = function(x, y) {
 51140  		var al, ex, ey, t, t$1, x, x$1, x$2, x$3, x$4, x$5, x$6, x$7, y, z, $s, $r;
 51141  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; al = $f.al; ex = $f.ex; ey = $f.ey; t = $f.t; t$1 = $f.t$1; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; x$3 = $f.x$3; x$4 = $f.x$4; x$5 = $f.x$5; x$6 = $f.x$6; x$7 = $f.x$7; y = $f.y; z = $f.z; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 51142  		z = this;
 51143  		if (false) {
 51144  			validateBinaryOperands(x, y);
 51145  		}
 51146  		ex = (x$1 = (new $Int64(0, x.exp)), x$2 = $mul64((new $Int64(0, x.mant.$length)), new $Int64(0, 32)), new $Int64(x$1.$high - x$2.$high, x$1.$low - x$2.$low));
 51147  		ey = (x$3 = (new $Int64(0, y.exp)), x$4 = $mul64((new $Int64(0, y.mant.$length)), new $Int64(0, 32)), new $Int64(x$3.$high - x$4.$high, x$3.$low - x$4.$low));
 51148  		al = alias(z.mant, x.mant) || alias(z.mant, y.mant);
 51149  		if ((ex.$high < ey.$high || (ex.$high === ey.$high && ex.$low < ey.$low))) {
 51150  			if (al) {
 51151  				t = (nat.nil).shl(y.mant, ((new $Int64(ey.$high - ex.$high, ey.$low - ex.$low).$low >>> 0)));
 51152  				z.mant = z.mant.add(x.mant, t);
 51153  			} else {
 51154  				z.mant = z.mant.shl(y.mant, ((new $Int64(ey.$high - ex.$high, ey.$low - ex.$low).$low >>> 0)));
 51155  				z.mant = z.mant.add(x.mant, z.mant);
 51156  			}
 51157  		} else if ((ex.$high > ey.$high || (ex.$high === ey.$high && ex.$low > ey.$low))) {
 51158  			if (al) {
 51159  				t$1 = (nat.nil).shl(x.mant, ((new $Int64(ex.$high - ey.$high, ex.$low - ey.$low).$low >>> 0)));
 51160  				z.mant = z.mant.add(t$1, y.mant);
 51161  			} else {
 51162  				z.mant = z.mant.shl(x.mant, ((new $Int64(ex.$high - ey.$high, ex.$low - ey.$low).$low >>> 0)));
 51163  				z.mant = z.mant.add(z.mant, y.mant);
 51164  			}
 51165  			ex = ey;
 51166  		} else {
 51167  			z.mant = z.mant.add(x.mant, y.mant);
 51168  		}
 51169  		$r = z.setExpAndRound((x$5 = (x$6 = $mul64((new $Int64(0, z.mant.$length)), new $Int64(0, 32)), new $Int64(ex.$high + x$6.$high, ex.$low + x$6.$low)), x$7 = fnorm(z.mant), new $Int64(x$5.$high - x$7.$high, x$5.$low - x$7.$low)), 0); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 51170  		$s = -1; return;
 51171  		/* */ } return; } if ($f === undefined) { $f = { $blk: Float.ptr.prototype.uadd }; } $f.al = al; $f.ex = ex; $f.ey = ey; $f.t = t; $f.t$1 = t$1; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.x$3 = x$3; $f.x$4 = x$4; $f.x$5 = x$5; $f.x$6 = x$6; $f.x$7 = x$7; $f.y = y; $f.z = z; $f.$s = $s; $f.$r = $r; return $f;
 51172  	};
 51173  	Float.prototype.uadd = function(x, y) { return this.$val.uadd(x, y); };
 51174  	Float.ptr.prototype.usub = function(x, y) {
 51175  		var al, ex, ey, t, t$1, x, x$1, x$2, x$3, x$4, x$5, x$6, x$7, y, z, $s, $r;
 51176  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; al = $f.al; ex = $f.ex; ey = $f.ey; t = $f.t; t$1 = $f.t$1; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; x$3 = $f.x$3; x$4 = $f.x$4; x$5 = $f.x$5; x$6 = $f.x$6; x$7 = $f.x$7; y = $f.y; z = $f.z; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 51177  		z = this;
 51178  		if (false) {
 51179  			validateBinaryOperands(x, y);
 51180  		}
 51181  		ex = (x$1 = (new $Int64(0, x.exp)), x$2 = $mul64((new $Int64(0, x.mant.$length)), new $Int64(0, 32)), new $Int64(x$1.$high - x$2.$high, x$1.$low - x$2.$low));
 51182  		ey = (x$3 = (new $Int64(0, y.exp)), x$4 = $mul64((new $Int64(0, y.mant.$length)), new $Int64(0, 32)), new $Int64(x$3.$high - x$4.$high, x$3.$low - x$4.$low));
 51183  		al = alias(z.mant, x.mant) || alias(z.mant, y.mant);
 51184  		if ((ex.$high < ey.$high || (ex.$high === ey.$high && ex.$low < ey.$low))) {
 51185  			if (al) {
 51186  				t = (nat.nil).shl(y.mant, ((new $Int64(ey.$high - ex.$high, ey.$low - ex.$low).$low >>> 0)));
 51187  				z.mant = t.sub(x.mant, t);
 51188  			} else {
 51189  				z.mant = z.mant.shl(y.mant, ((new $Int64(ey.$high - ex.$high, ey.$low - ex.$low).$low >>> 0)));
 51190  				z.mant = z.mant.sub(x.mant, z.mant);
 51191  			}
 51192  		} else if ((ex.$high > ey.$high || (ex.$high === ey.$high && ex.$low > ey.$low))) {
 51193  			if (al) {
 51194  				t$1 = (nat.nil).shl(x.mant, ((new $Int64(ex.$high - ey.$high, ex.$low - ey.$low).$low >>> 0)));
 51195  				z.mant = t$1.sub(t$1, y.mant);
 51196  			} else {
 51197  				z.mant = z.mant.shl(x.mant, ((new $Int64(ex.$high - ey.$high, ex.$low - ey.$low).$low >>> 0)));
 51198  				z.mant = z.mant.sub(z.mant, y.mant);
 51199  			}
 51200  			ex = ey;
 51201  		} else {
 51202  			z.mant = z.mant.sub(x.mant, y.mant);
 51203  		}
 51204  		if (z.mant.$length === 0) {
 51205  			z.acc = 0;
 51206  			z.form = 0;
 51207  			z.neg = false;
 51208  			$s = -1; return;
 51209  		}
 51210  		$r = z.setExpAndRound((x$5 = (x$6 = $mul64((new $Int64(0, z.mant.$length)), new $Int64(0, 32)), new $Int64(ex.$high + x$6.$high, ex.$low + x$6.$low)), x$7 = fnorm(z.mant), new $Int64(x$5.$high - x$7.$high, x$5.$low - x$7.$low)), 0); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 51211  		$s = -1; return;
 51212  		/* */ } return; } if ($f === undefined) { $f = { $blk: Float.ptr.prototype.usub }; } $f.al = al; $f.ex = ex; $f.ey = ey; $f.t = t; $f.t$1 = t$1; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.x$3 = x$3; $f.x$4 = x$4; $f.x$5 = x$5; $f.x$6 = x$6; $f.x$7 = x$7; $f.y = y; $f.z = z; $f.$s = $s; $f.$r = $r; return $f;
 51213  	};
 51214  	Float.prototype.usub = function(x, y) { return this.$val.usub(x, y); };
 51215  	Float.ptr.prototype.umul = function(x, y) {
 51216  		var e, x, x$1, x$2, x$3, y, z, $s, $r;
 51217  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; e = $f.e; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; x$3 = $f.x$3; y = $f.y; z = $f.z; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 51218  		z = this;
 51219  		if (false) {
 51220  			validateBinaryOperands(x, y);
 51221  		}
 51222  		e = (x$1 = (new $Int64(0, x.exp)), x$2 = (new $Int64(0, y.exp)), new $Int64(x$1.$high + x$2.$high, x$1.$low + x$2.$low));
 51223  		if (x === y) {
 51224  			z.mant = z.mant.sqr(x.mant);
 51225  		} else {
 51226  			z.mant = z.mant.mul(x.mant, y.mant);
 51227  		}
 51228  		$r = z.setExpAndRound((x$3 = fnorm(z.mant), new $Int64(e.$high - x$3.$high, e.$low - x$3.$low)), 0); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 51229  		$s = -1; return;
 51230  		/* */ } return; } if ($f === undefined) { $f = { $blk: Float.ptr.prototype.umul }; } $f.e = e; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.x$3 = x$3; $f.y = y; $f.z = z; $f.$s = $s; $f.$r = $r; return $f;
 51231  	};
 51232  	Float.prototype.umul = function(x, y) { return this.$val.umul(x, y); };
 51233  	Float.ptr.prototype.uquo = function(x, y) {
 51234  		var _q, _r$3, _tuple, d, d$1, e, n, r, sbit, x, x$1, x$2, x$3, x$4, x$5, xadj, y, z, $s, $r;
 51235  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _q = $f._q; _r$3 = $f._r$3; _tuple = $f._tuple; d = $f.d; d$1 = $f.d$1; e = $f.e; n = $f.n; r = $f.r; sbit = $f.sbit; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; x$3 = $f.x$3; x$4 = $f.x$4; x$5 = $f.x$5; xadj = $f.xadj; y = $f.y; z = $f.z; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 51236  		z = this;
 51237  		if (false) {
 51238  			validateBinaryOperands(x, y);
 51239  		}
 51240  		n = (((_q = z.prec / 32, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >>> 0 : $throwRuntimeError("integer divide by zero")) >> 0)) + 1 >> 0;
 51241  		xadj = x.mant;
 51242  		d = (n - x.mant.$length >> 0) + y.mant.$length >> 0;
 51243  		if (d > 0) {
 51244  			xadj = $makeSlice(nat, (x.mant.$length + d >> 0));
 51245  			$copySlice($subslice(xadj, d), x.mant);
 51246  		}
 51247  		d$1 = xadj.$length - y.mant.$length >> 0;
 51248  		r = nat.nil;
 51249  		_r$3 = z.mant.div(nat.nil, xadj, y.mant); /* */ $s = 1; case 1: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 51250  		_tuple = _r$3;
 51251  		z.mant = _tuple[0];
 51252  		r = _tuple[1];
 51253  		e = (x$1 = (x$2 = (new $Int64(0, x.exp)), x$3 = (new $Int64(0, y.exp)), new $Int64(x$2.$high - x$3.$high, x$2.$low - x$3.$low)), x$4 = $mul64((new $Int64(0, (d$1 - z.mant.$length >> 0))), new $Int64(0, 32)), new $Int64(x$1.$high - x$4.$high, x$1.$low - x$4.$low));
 51254  		sbit = 0;
 51255  		if (r.$length > 0) {
 51256  			sbit = 1;
 51257  		}
 51258  		$r = z.setExpAndRound((x$5 = fnorm(z.mant), new $Int64(e.$high - x$5.$high, e.$low - x$5.$low)), sbit); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 51259  		$s = -1; return;
 51260  		/* */ } return; } if ($f === undefined) { $f = { $blk: Float.ptr.prototype.uquo }; } $f._q = _q; $f._r$3 = _r$3; $f._tuple = _tuple; $f.d = d; $f.d$1 = d$1; $f.e = e; $f.n = n; $f.r = r; $f.sbit = sbit; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.x$3 = x$3; $f.x$4 = x$4; $f.x$5 = x$5; $f.xadj = xadj; $f.y = y; $f.z = z; $f.$s = $s; $f.$r = $r; return $f;
 51261  	};
 51262  	Float.prototype.uquo = function(x, y) { return this.$val.uquo(x, y); };
 51263  	Float.ptr.prototype.ucmp = function(y) {
 51264  		var _tmp, _tmp$1, i, j, x, x$1, x$2, xm, y, ym;
 51265  		x = this;
 51266  		if (false) {
 51267  			validateBinaryOperands(x, y);
 51268  		}
 51269  		if (x.exp < y.exp) {
 51270  			return -1;
 51271  		} else if (x.exp > y.exp) {
 51272  			return 1;
 51273  		}
 51274  		i = x.mant.$length;
 51275  		j = y.mant.$length;
 51276  		while (true) {
 51277  			if (!(i > 0 || j > 0)) { break; }
 51278  			_tmp = 0;
 51279  			_tmp$1 = 0;
 51280  			xm = _tmp;
 51281  			ym = _tmp$1;
 51282  			if (i > 0) {
 51283  				i = i - (1) >> 0;
 51284  				xm = (x$1 = x.mant, ((i < 0 || i >= x$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + i]));
 51285  			}
 51286  			if (j > 0) {
 51287  				j = j - (1) >> 0;
 51288  				ym = (x$2 = y.mant, ((j < 0 || j >= x$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + j]));
 51289  			}
 51290  			if (xm < ym) {
 51291  				return -1;
 51292  			} else if (xm > ym) {
 51293  				return 1;
 51294  			}
 51295  		}
 51296  		return 0;
 51297  	};
 51298  	Float.prototype.ucmp = function(y) { return this.$val.ucmp(y); };
 51299  	Float.ptr.prototype.Add = function(x, y) {
 51300  		var _r$3, _r$4, x, x$1, y, yneg, z, $s, $r;
 51301  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$3 = $f._r$3; _r$4 = $f._r$4; x = $f.x; x$1 = $f.x$1; y = $f.y; yneg = $f.yneg; z = $f.z; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 51302  		z = this;
 51303  		/* */ if (false) { $s = 1; continue; }
 51304  		/* */ $s = 2; continue;
 51305  		/* if (false) { */ case 1:
 51306  			$r = x.validate(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 51307  			$r = y.validate(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 51308  		/* } */ case 2:
 51309  		if (z.prec === 0) {
 51310  			z.prec = umax32(x.prec, y.prec);
 51311  		}
 51312  		/* */ if ((x.form === 1) && (y.form === 1)) { $s = 5; continue; }
 51313  		/* */ $s = 6; continue;
 51314  		/* if ((x.form === 1) && (y.form === 1)) { */ case 5:
 51315  			yneg = y.neg;
 51316  			z.neg = x.neg;
 51317  			/* */ if (x.neg === yneg) { $s = 7; continue; }
 51318  			/* */ $s = 8; continue;
 51319  			/* if (x.neg === yneg) { */ case 7:
 51320  				$r = z.uadd(x, y); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 51321  				$s = 9; continue;
 51322  			/* } else { */ case 8:
 51323  				/* */ if (x.ucmp(y) > 0) { $s = 11; continue; }
 51324  				/* */ $s = 12; continue;
 51325  				/* if (x.ucmp(y) > 0) { */ case 11:
 51326  					$r = z.usub(x, y); /* */ $s = 14; case 14: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 51327  					$s = 13; continue;
 51328  				/* } else { */ case 12:
 51329  					z.neg = !z.neg;
 51330  					$r = z.usub(y, x); /* */ $s = 15; case 15: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 51331  				/* } */ case 13:
 51332  			/* } */ case 9:
 51333  			$s = -1; return z;
 51334  		/* } */ case 6:
 51335  		if ((x.form === 2) && (y.form === 2) && !(x.neg === y.neg)) {
 51336  			z.acc = 0;
 51337  			z.form = 0;
 51338  			z.neg = false;
 51339  			$panic((x$1 = new ErrNaN.ptr("addition of infinities with opposite signs"), new x$1.constructor.elem(x$1)));
 51340  		}
 51341  		if ((x.form === 0) && (y.form === 0)) {
 51342  			z.acc = 0;
 51343  			z.form = 0;
 51344  			z.neg = x.neg && y.neg;
 51345  			$s = -1; return z;
 51346  		}
 51347  		/* */ if ((x.form === 2) || (y.form === 0)) { $s = 16; continue; }
 51348  		/* */ $s = 17; continue;
 51349  		/* if ((x.form === 2) || (y.form === 0)) { */ case 16:
 51350  			_r$3 = z.Set(x); /* */ $s = 18; case 18: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 51351  			$s = -1; return _r$3;
 51352  		/* } */ case 17:
 51353  		_r$4 = z.Set(y); /* */ $s = 19; case 19: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 51354  		$s = -1; return _r$4;
 51355  		/* */ } return; } if ($f === undefined) { $f = { $blk: Float.ptr.prototype.Add }; } $f._r$3 = _r$3; $f._r$4 = _r$4; $f.x = x; $f.x$1 = x$1; $f.y = y; $f.yneg = yneg; $f.z = z; $f.$s = $s; $f.$r = $r; return $f;
 51356  	};
 51357  	Float.prototype.Add = function(x, y) { return this.$val.Add(x, y); };
 51358  	Float.ptr.prototype.Sub = function(x, y) {
 51359  		var _r$3, _r$4, x, x$1, y, yneg, z, $s, $r;
 51360  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$3 = $f._r$3; _r$4 = $f._r$4; x = $f.x; x$1 = $f.x$1; y = $f.y; yneg = $f.yneg; z = $f.z; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 51361  		z = this;
 51362  		/* */ if (false) { $s = 1; continue; }
 51363  		/* */ $s = 2; continue;
 51364  		/* if (false) { */ case 1:
 51365  			$r = x.validate(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 51366  			$r = y.validate(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 51367  		/* } */ case 2:
 51368  		if (z.prec === 0) {
 51369  			z.prec = umax32(x.prec, y.prec);
 51370  		}
 51371  		/* */ if ((x.form === 1) && (y.form === 1)) { $s = 5; continue; }
 51372  		/* */ $s = 6; continue;
 51373  		/* if ((x.form === 1) && (y.form === 1)) { */ case 5:
 51374  			yneg = y.neg;
 51375  			z.neg = x.neg;
 51376  			/* */ if (!(x.neg === yneg)) { $s = 7; continue; }
 51377  			/* */ $s = 8; continue;
 51378  			/* if (!(x.neg === yneg)) { */ case 7:
 51379  				$r = z.uadd(x, y); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 51380  				$s = 9; continue;
 51381  			/* } else { */ case 8:
 51382  				/* */ if (x.ucmp(y) > 0) { $s = 11; continue; }
 51383  				/* */ $s = 12; continue;
 51384  				/* if (x.ucmp(y) > 0) { */ case 11:
 51385  					$r = z.usub(x, y); /* */ $s = 14; case 14: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 51386  					$s = 13; continue;
 51387  				/* } else { */ case 12:
 51388  					z.neg = !z.neg;
 51389  					$r = z.usub(y, x); /* */ $s = 15; case 15: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 51390  				/* } */ case 13:
 51391  			/* } */ case 9:
 51392  			$s = -1; return z;
 51393  		/* } */ case 6:
 51394  		if ((x.form === 2) && (y.form === 2) && x.neg === y.neg) {
 51395  			z.acc = 0;
 51396  			z.form = 0;
 51397  			z.neg = false;
 51398  			$panic((x$1 = new ErrNaN.ptr("subtraction of infinities with equal signs"), new x$1.constructor.elem(x$1)));
 51399  		}
 51400  		if ((x.form === 0) && (y.form === 0)) {
 51401  			z.acc = 0;
 51402  			z.form = 0;
 51403  			z.neg = x.neg && !y.neg;
 51404  			$s = -1; return z;
 51405  		}
 51406  		/* */ if ((x.form === 2) || (y.form === 0)) { $s = 16; continue; }
 51407  		/* */ $s = 17; continue;
 51408  		/* if ((x.form === 2) || (y.form === 0)) { */ case 16:
 51409  			_r$3 = z.Set(x); /* */ $s = 18; case 18: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 51410  			$s = -1; return _r$3;
 51411  		/* } */ case 17:
 51412  		_r$4 = z.Neg(y); /* */ $s = 19; case 19: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 51413  		$s = -1; return _r$4;
 51414  		/* */ } return; } if ($f === undefined) { $f = { $blk: Float.ptr.prototype.Sub }; } $f._r$3 = _r$3; $f._r$4 = _r$4; $f.x = x; $f.x$1 = x$1; $f.y = y; $f.yneg = yneg; $f.z = z; $f.$s = $s; $f.$r = $r; return $f;
 51415  	};
 51416  	Float.prototype.Sub = function(x, y) { return this.$val.Sub(x, y); };
 51417  	Float.ptr.prototype.Mul = function(x, y) {
 51418  		var x, x$1, y, z, $s, $r;
 51419  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; x = $f.x; x$1 = $f.x$1; y = $f.y; z = $f.z; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 51420  		z = this;
 51421  		/* */ if (false) { $s = 1; continue; }
 51422  		/* */ $s = 2; continue;
 51423  		/* if (false) { */ case 1:
 51424  			$r = x.validate(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 51425  			$r = y.validate(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 51426  		/* } */ case 2:
 51427  		if (z.prec === 0) {
 51428  			z.prec = umax32(x.prec, y.prec);
 51429  		}
 51430  		z.neg = !(x.neg === y.neg);
 51431  		/* */ if ((x.form === 1) && (y.form === 1)) { $s = 5; continue; }
 51432  		/* */ $s = 6; continue;
 51433  		/* if ((x.form === 1) && (y.form === 1)) { */ case 5:
 51434  			$r = z.umul(x, y); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 51435  			$s = -1; return z;
 51436  		/* } */ case 6:
 51437  		z.acc = 0;
 51438  		if ((x.form === 0) && (y.form === 2) || (x.form === 2) && (y.form === 0)) {
 51439  			z.form = 0;
 51440  			z.neg = false;
 51441  			$panic((x$1 = new ErrNaN.ptr("multiplication of zero with infinity"), new x$1.constructor.elem(x$1)));
 51442  		}
 51443  		if ((x.form === 2) || (y.form === 2)) {
 51444  			z.form = 2;
 51445  			$s = -1; return z;
 51446  		}
 51447  		z.form = 0;
 51448  		$s = -1; return z;
 51449  		/* */ } return; } if ($f === undefined) { $f = { $blk: Float.ptr.prototype.Mul }; } $f.x = x; $f.x$1 = x$1; $f.y = y; $f.z = z; $f.$s = $s; $f.$r = $r; return $f;
 51450  	};
 51451  	Float.prototype.Mul = function(x, y) { return this.$val.Mul(x, y); };
 51452  	Float.ptr.prototype.Quo = function(x, y) {
 51453  		var x, x$1, y, z, $s, $r;
 51454  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; x = $f.x; x$1 = $f.x$1; y = $f.y; z = $f.z; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 51455  		z = this;
 51456  		/* */ if (false) { $s = 1; continue; }
 51457  		/* */ $s = 2; continue;
 51458  		/* if (false) { */ case 1:
 51459  			$r = x.validate(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 51460  			$r = y.validate(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 51461  		/* } */ case 2:
 51462  		if (z.prec === 0) {
 51463  			z.prec = umax32(x.prec, y.prec);
 51464  		}
 51465  		z.neg = !(x.neg === y.neg);
 51466  		/* */ if ((x.form === 1) && (y.form === 1)) { $s = 5; continue; }
 51467  		/* */ $s = 6; continue;
 51468  		/* if ((x.form === 1) && (y.form === 1)) { */ case 5:
 51469  			$r = z.uquo(x, y); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 51470  			$s = -1; return z;
 51471  		/* } */ case 6:
 51472  		z.acc = 0;
 51473  		if ((x.form === 0) && (y.form === 0) || (x.form === 2) && (y.form === 2)) {
 51474  			z.form = 0;
 51475  			z.neg = false;
 51476  			$panic((x$1 = new ErrNaN.ptr("division of zero by zero or infinity by infinity"), new x$1.constructor.elem(x$1)));
 51477  		}
 51478  		if ((x.form === 0) || (y.form === 2)) {
 51479  			z.form = 0;
 51480  			$s = -1; return z;
 51481  		}
 51482  		z.form = 2;
 51483  		$s = -1; return z;
 51484  		/* */ } return; } if ($f === undefined) { $f = { $blk: Float.ptr.prototype.Quo }; } $f.x = x; $f.x$1 = x$1; $f.y = y; $f.z = z; $f.$s = $s; $f.$r = $r; return $f;
 51485  	};
 51486  	Float.prototype.Quo = function(x, y) { return this.$val.Quo(x, y); };
 51487  	Float.ptr.prototype.Cmp = function(y) {
 51488  		var _1, mx, my, x, y, $s, $r;
 51489  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; mx = $f.mx; my = $f.my; x = $f.x; y = $f.y; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 51490  		x = this;
 51491  		/* */ if (false) { $s = 1; continue; }
 51492  		/* */ $s = 2; continue;
 51493  		/* if (false) { */ case 1:
 51494  			$r = x.validate(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 51495  			$r = y.validate(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 51496  		/* } */ case 2:
 51497  		mx = x.ord();
 51498  		my = y.ord();
 51499  		if (mx < my) {
 51500  			$s = -1; return -1;
 51501  		} else if (mx > my) {
 51502  			$s = -1; return 1;
 51503  		}
 51504  		_1 = mx;
 51505  		if (_1 === (-1)) {
 51506  			$s = -1; return y.ucmp(x);
 51507  		} else if (_1 === (1)) {
 51508  			$s = -1; return x.ucmp(y);
 51509  		}
 51510  		$s = -1; return 0;
 51511  		/* */ } return; } if ($f === undefined) { $f = { $blk: Float.ptr.prototype.Cmp }; } $f._1 = _1; $f.mx = mx; $f.my = my; $f.x = x; $f.y = y; $f.$s = $s; $f.$r = $r; return $f;
 51512  	};
 51513  	Float.prototype.Cmp = function(y) { return this.$val.Cmp(y); };
 51514  	Float.ptr.prototype.ord = function() {
 51515  		var _1, m, x;
 51516  		x = this;
 51517  		m = 0;
 51518  		_1 = x.form;
 51519  		if (_1 === (1)) {
 51520  			m = 1;
 51521  		} else if (_1 === (0)) {
 51522  			return 0;
 51523  		} else if (_1 === (2)) {
 51524  			m = 2;
 51525  		}
 51526  		if (x.neg) {
 51527  			m = -m;
 51528  		}
 51529  		return m;
 51530  	};
 51531  	Float.prototype.ord = function() { return this.$val.ord(); };
 51532  	umax32 = function(x, y) {
 51533  		var x, y;
 51534  		if (x > y) {
 51535  			return x;
 51536  		}
 51537  		return y;
 51538  	};
 51539  	Float.ptr.prototype.SetString = function(s) {
 51540  		var _r$3, _tuple, err, f, s, z, $s, $r;
 51541  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$3 = $f._r$3; _tuple = $f._tuple; err = $f.err; f = $f.f; s = $f.s; z = $f.z; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 51542  		z = this;
 51543  		_r$3 = z.Parse(s, 0); /* */ $s = 1; case 1: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 51544  		_tuple = _r$3;
 51545  		f = _tuple[0];
 51546  		err = _tuple[2];
 51547  		if ($interfaceIsEqual(err, $ifaceNil)) {
 51548  			$s = -1; return [f, true];
 51549  		}
 51550  		$s = -1; return [ptrType.nil, false];
 51551  		/* */ } return; } if ($f === undefined) { $f = { $blk: Float.ptr.prototype.SetString }; } $f._r$3 = _r$3; $f._tuple = _tuple; $f.err = err; $f.f = f; $f.s = s; $f.z = z; $f.$s = $s; $f.$r = $r; return $f;
 51552  	};
 51553  	Float.prototype.SetString = function(s) { return this.$val.SetString(s); };
 51554  	Float.ptr.prototype.scan = function(r, base) {
 51555  		var _1, _2, _arg, _arg$1, _arg$2, _arg$3, _r$10, _r$11, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _tuple, _tuple$1, _tuple$2, b, base, d, ebase, err, exp, exp2, exp5, f, fcount, p, prec, r, x, x$1, x$2, x$3, x$4, x$5, x$6, x$7, x$8, z, $s, $r;
 51556  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _2 = $f._2; _arg = $f._arg; _arg$1 = $f._arg$1; _arg$2 = $f._arg$2; _arg$3 = $f._arg$3; _r$10 = $f._r$10; _r$11 = $f._r$11; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _r$8 = $f._r$8; _r$9 = $f._r$9; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; b = $f.b; base = $f.base; d = $f.d; ebase = $f.ebase; err = $f.err; exp = $f.exp; exp2 = $f.exp2; exp5 = $f.exp5; f = $f.f; fcount = $f.fcount; p = $f.p; prec = $f.prec; r = $f.r; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; x$3 = $f.x$3; x$4 = $f.x$4; x$5 = $f.x$5; x$6 = $f.x$6; x$7 = $f.x$7; x$8 = $f.x$8; z = $f.z; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 51557  		f = ptrType.nil;
 51558  		b = 0;
 51559  		err = $ifaceNil;
 51560  		z = this;
 51561  		prec = z.prec;
 51562  		if (prec === 0) {
 51563  			prec = 64;
 51564  		}
 51565  		z.form = 0;
 51566  		_r$3 = scanSign(r); /* */ $s = 1; case 1: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 51567  		_tuple = _r$3;
 51568  		z.neg = _tuple[0];
 51569  		err = _tuple[1];
 51570  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 51571  			$s = -1; return [f, b, err];
 51572  		}
 51573  		fcount = 0;
 51574  		_r$4 = z.mant.scan(r, base, true); /* */ $s = 2; case 2: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 51575  		_tuple$1 = _r$4;
 51576  		z.mant = _tuple$1[0];
 51577  		b = _tuple$1[1];
 51578  		fcount = _tuple$1[2];
 51579  		err = _tuple$1[3];
 51580  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 51581  			$s = -1; return [f, b, err];
 51582  		}
 51583  		exp = new $Int64(0, 0);
 51584  		ebase = 0;
 51585  		_r$5 = scanExponent(r, true); /* */ $s = 3; case 3: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
 51586  		_tuple$2 = _r$5;
 51587  		exp = _tuple$2[0];
 51588  		ebase = _tuple$2[1];
 51589  		err = _tuple$2[2];
 51590  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 51591  			$s = -1; return [f, b, err];
 51592  		}
 51593  		if (z.mant.$length === 0) {
 51594  			z.prec = prec;
 51595  			z.acc = 0;
 51596  			z.form = 0;
 51597  			f = z;
 51598  			$s = -1; return [f, b, err];
 51599  		}
 51600  		exp2 = (x = $mul64((new $Int64(0, z.mant.$length)), new $Int64(0, 32)), x$1 = fnorm(z.mant), new $Int64(x.$high - x$1.$high, x.$low - x$1.$low));
 51601  		exp5 = new $Int64(0, 0);
 51602  		if (fcount < 0) {
 51603  			d = (new $Int64(0, fcount));
 51604  			_1 = b;
 51605  			if (_1 === (10)) {
 51606  				exp5 = d;
 51607  				exp2 = (x$2 = d, new $Int64(exp2.$high + x$2.$high, exp2.$low + x$2.$low));
 51608  			} else if (_1 === (2)) {
 51609  				exp2 = (x$3 = d, new $Int64(exp2.$high + x$3.$high, exp2.$low + x$3.$low));
 51610  			} else if (_1 === (16)) {
 51611  				exp2 = (x$4 = $mul64(d, new $Int64(0, 4)), new $Int64(exp2.$high + x$4.$high, exp2.$low + x$4.$low));
 51612  			} else {
 51613  				$panic(new $String("unexpected mantissa base"));
 51614  			}
 51615  		}
 51616  		_2 = ebase;
 51617  		if (_2 === (10)) {
 51618  			exp5 = (x$5 = exp, new $Int64(exp5.$high + x$5.$high, exp5.$low + x$5.$low));
 51619  			exp2 = (x$6 = exp, new $Int64(exp2.$high + x$6.$high, exp2.$low + x$6.$low));
 51620  		} else if (_2 === (2)) {
 51621  			exp2 = (x$7 = exp, new $Int64(exp2.$high + x$7.$high, exp2.$low + x$7.$low));
 51622  		} else {
 51623  			$panic(new $String("unexpected exponent base"));
 51624  		}
 51625  		/* */ if ((-1 < exp2.$high || (-1 === exp2.$high && 2147483648 <= exp2.$low)) && (exp2.$high < 0 || (exp2.$high === 0 && exp2.$low <= 2147483647))) { $s = 4; continue; }
 51626  		/* */ $s = 5; continue;
 51627  		/* if ((-1 < exp2.$high || (-1 === exp2.$high && 2147483648 <= exp2.$low)) && (exp2.$high < 0 || (exp2.$high === 0 && exp2.$low <= 2147483647))) { */ case 4:
 51628  			z.prec = prec;
 51629  			z.form = 1;
 51630  			z.exp = (((exp2.$low + ((exp2.$high >> 31) * 4294967296)) >> 0));
 51631  			f = z;
 51632  			$s = 6; continue;
 51633  		/* } else { */ case 5:
 51634  			_r$6 = fmt.Errorf("exponent overflow", new sliceType([])); /* */ $s = 7; case 7: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
 51635  			err = _r$6;
 51636  			$s = -1; return [f, b, err];
 51637  		/* } */ case 6:
 51638  		/* */ if ((exp5.$high === 0 && exp5.$low === 0)) { $s = 8; continue; }
 51639  		/* */ $s = 9; continue;
 51640  		/* if ((exp5.$high === 0 && exp5.$low === 0)) { */ case 8:
 51641  			$r = z.round(0); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 51642  			$s = -1; return [f, b, err];
 51643  		/* } */ case 9:
 51644  		_r$7 = new Float.ptr(0, 0, 0, 0, false, nat.nil, 0).SetPrec(z.Prec() + 64 >>> 0); /* */ $s = 11; case 11: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
 51645  		p = _r$7;
 51646  		/* */ if ((exp5.$high < 0 || (exp5.$high === 0 && exp5.$low < 0))) { $s = 12; continue; }
 51647  		/* */ $s = 13; continue;
 51648  		/* if ((exp5.$high < 0 || (exp5.$high === 0 && exp5.$low < 0))) { */ case 12:
 51649  			_arg = z;
 51650  			_r$8 = p.pow5(((x$8 = new $Int64(-exp5.$high, -exp5.$low), new $Uint64(x$8.$high, x$8.$low)))); /* */ $s = 15; case 15: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
 51651  			_arg$1 = _r$8;
 51652  			_r$9 = z.Quo(_arg, _arg$1); /* */ $s = 16; case 16: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 51653  			_r$9;
 51654  			$s = 14; continue;
 51655  		/* } else { */ case 13:
 51656  			_arg$2 = z;
 51657  			_r$10 = p.pow5((new $Uint64(exp5.$high, exp5.$low))); /* */ $s = 17; case 17: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
 51658  			_arg$3 = _r$10;
 51659  			_r$11 = z.Mul(_arg$2, _arg$3); /* */ $s = 18; case 18: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; }
 51660  			_r$11;
 51661  		/* } */ case 14:
 51662  		$s = -1; return [f, b, err];
 51663  		/* */ } return; } if ($f === undefined) { $f = { $blk: Float.ptr.prototype.scan }; } $f._1 = _1; $f._2 = _2; $f._arg = _arg; $f._arg$1 = _arg$1; $f._arg$2 = _arg$2; $f._arg$3 = _arg$3; $f._r$10 = _r$10; $f._r$11 = _r$11; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._r$8 = _r$8; $f._r$9 = _r$9; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f.b = b; $f.base = base; $f.d = d; $f.ebase = ebase; $f.err = err; $f.exp = exp; $f.exp2 = exp2; $f.exp5 = exp5; $f.f = f; $f.fcount = fcount; $f.p = p; $f.prec = prec; $f.r = r; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.x$3 = x$3; $f.x$4 = x$4; $f.x$5 = x$5; $f.x$6 = x$6; $f.x$7 = x$7; $f.x$8 = x$8; $f.z = z; $f.$s = $s; $f.$r = $r; return $f;
 51664  	};
 51665  	Float.prototype.scan = function(r, base) { return this.$val.scan(r, base); };
 51666  	Float.ptr.prototype.pow5 = function(n) {
 51667  		var _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, f, n, x, x$1, z, $s, $r;
 51668  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _r$8 = $f._r$8; f = $f.f; n = $f.n; x = $f.x; x$1 = $f.x$1; z = $f.z; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 51669  		z = this;
 51670  		/* */ if ((n.$high < 0 || (n.$high === 0 && n.$low <= 27))) { $s = 1; continue; }
 51671  		/* */ $s = 2; continue;
 51672  		/* if ((n.$high < 0 || (n.$high === 0 && n.$low <= 27))) { */ case 1:
 51673  			_r$3 = z.SetUint64((($flatten64(n) < 0 || $flatten64(n) >= pow5tab.length) ? ($throwRuntimeError("index out of range"), undefined) : pow5tab[$flatten64(n)])); /* */ $s = 3; case 3: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 51674  			$s = -1; return _r$3;
 51675  		/* } */ case 2:
 51676  		_r$4 = z.SetUint64(pow5tab[27]); /* */ $s = 4; case 4: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 51677  		_r$4;
 51678  		n = (x = new $Uint64(0, 27), new $Uint64(n.$high - x.$high, n.$low - x.$low));
 51679  		_r$5 = new Float.ptr(0, 0, 0, 0, false, nat.nil, 0).SetPrec(z.Prec() + 64 >>> 0); /* */ $s = 5; case 5: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
 51680  		_r$6 = _r$5.SetUint64(new $Uint64(0, 5)); /* */ $s = 6; case 6: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
 51681  		f = _r$6;
 51682  		/* while (true) { */ case 7:
 51683  			/* if (!((n.$high > 0 || (n.$high === 0 && n.$low > 0)))) { break; } */ if(!((n.$high > 0 || (n.$high === 0 && n.$low > 0)))) { $s = 8; continue; }
 51684  			/* */ if (!((x$1 = new $Uint64(n.$high & 0, (n.$low & 1) >>> 0), (x$1.$high === 0 && x$1.$low === 0)))) { $s = 9; continue; }
 51685  			/* */ $s = 10; continue;
 51686  			/* if (!((x$1 = new $Uint64(n.$high & 0, (n.$low & 1) >>> 0), (x$1.$high === 0 && x$1.$low === 0)))) { */ case 9:
 51687  				_r$7 = z.Mul(z, f); /* */ $s = 11; case 11: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
 51688  				_r$7;
 51689  			/* } */ case 10:
 51690  			_r$8 = f.Mul(f, f); /* */ $s = 12; case 12: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
 51691  			_r$8;
 51692  			n = $shiftRightUint64(n, (1));
 51693  		/* } */ $s = 7; continue; case 8:
 51694  		$s = -1; return z;
 51695  		/* */ } return; } if ($f === undefined) { $f = { $blk: Float.ptr.prototype.pow5 }; } $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._r$8 = _r$8; $f.f = f; $f.n = n; $f.x = x; $f.x$1 = x$1; $f.z = z; $f.$s = $s; $f.$r = $r; return $f;
 51696  	};
 51697  	Float.prototype.pow5 = function(n) { return this.$val.pow5(n); };
 51698  	Float.ptr.prototype.Parse = function(s, base) {
 51699  		var _r$3, _r$4, _tuple, _tuple$1, b, base, ch, err, err2, f, r, s, z, $s, $r;
 51700  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$3 = $f._r$3; _r$4 = $f._r$4; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; b = $f.b; base = $f.base; ch = $f.ch; err = $f.err; err2 = $f.err2; f = $f.f; r = $f.r; s = $f.s; z = $f.z; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 51701  		f = ptrType.nil;
 51702  		b = 0;
 51703  		err = $ifaceNil;
 51704  		z = this;
 51705  		if ((s.length === 3) && (s === "Inf" || s === "inf")) {
 51706  			f = z.SetInf(false);
 51707  			$s = -1; return [f, b, err];
 51708  		}
 51709  		if ((s.length === 4) && ((s.charCodeAt(0) === 43) || (s.charCodeAt(0) === 45)) && ($substring(s, 1) === "Inf" || $substring(s, 1) === "inf")) {
 51710  			f = z.SetInf(s.charCodeAt(0) === 45);
 51711  			$s = -1; return [f, b, err];
 51712  		}
 51713  		r = strings.NewReader(s);
 51714  		_r$3 = z.scan(r, base); /* */ $s = 1; case 1: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 51715  		_tuple = _r$3;
 51716  		f = _tuple[0];
 51717  		b = _tuple[1];
 51718  		err = _tuple[2];
 51719  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 51720  			$s = -1; return [f, b, err];
 51721  		}
 51722  		_tuple$1 = r.ReadByte();
 51723  		ch = _tuple$1[0];
 51724  		err2 = _tuple$1[1];
 51725  		/* */ if ($interfaceIsEqual(err2, $ifaceNil)) { $s = 2; continue; }
 51726  		/* */ if (!($interfaceIsEqual(err2, io.EOF))) { $s = 3; continue; }
 51727  		/* */ $s = 4; continue;
 51728  		/* if ($interfaceIsEqual(err2, $ifaceNil)) { */ case 2:
 51729  			_r$4 = fmt.Errorf("expected end of string, found %q", new sliceType([new $Uint8(ch)])); /* */ $s = 5; case 5: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 51730  			err = _r$4;
 51731  			$s = 4; continue;
 51732  		/* } else if (!($interfaceIsEqual(err2, io.EOF))) { */ case 3:
 51733  			err = err2;
 51734  		/* } */ case 4:
 51735  		$s = -1; return [f, b, err];
 51736  		/* */ } return; } if ($f === undefined) { $f = { $blk: Float.ptr.prototype.Parse }; } $f._r$3 = _r$3; $f._r$4 = _r$4; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.b = b; $f.base = base; $f.ch = ch; $f.err = err; $f.err2 = err2; $f.f = f; $f.r = r; $f.s = s; $f.z = z; $f.$s = $s; $f.$r = $r; return $f;
 51737  	};
 51738  	Float.prototype.Parse = function(s, base) { return this.$val.Parse(s, base); };
 51739  	Float.ptr.prototype.Scan = function(s, ch) {
 51740  		var _r$3, _tuple, ch, err, s, x, z, $s, $r;
 51741  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$3 = $f._r$3; _tuple = $f._tuple; ch = $f.ch; err = $f.err; s = $f.s; x = $f.x; z = $f.z; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 51742  		z = this;
 51743  		$r = s.SkipSpace(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 51744  		_r$3 = z.scan((x = new byteReader.ptr(s), new x.constructor.elem(x)), 0); /* */ $s = 2; case 2: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 51745  		_tuple = _r$3;
 51746  		err = _tuple[2];
 51747  		$s = -1; return err;
 51748  		/* */ } return; } if ($f === undefined) { $f = { $blk: Float.ptr.prototype.Scan }; } $f._r$3 = _r$3; $f._tuple = _tuple; $f.ch = ch; $f.err = err; $f.s = s; $f.x = x; $f.z = z; $f.$s = $s; $f.$r = $r; return $f;
 51749  	};
 51750  	Float.prototype.Scan = function(s, ch) { return this.$val.Scan(s, ch); };
 51751  	Float.ptr.prototype.GobEncode = function() {
 51752  		var _q, b, buf, n, sz, x;
 51753  		x = this;
 51754  		if (x === ptrType.nil) {
 51755  			return [sliceType$1.nil, $ifaceNil];
 51756  		}
 51757  		sz = 6;
 51758  		n = 0;
 51759  		if (x.form === 1) {
 51760  			n = (((_q = ((x.prec + 31 >>> 0)) / 32, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >>> 0 : $throwRuntimeError("integer divide by zero")) >> 0));
 51761  			if (x.mant.$length < n) {
 51762  				n = x.mant.$length;
 51763  			}
 51764  			sz = sz + ((4 + ($imul(n, 4)) >> 0)) >> 0;
 51765  		}
 51766  		buf = $makeSlice(sliceType$1, sz);
 51767  		(0 >= buf.$length ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + 0] = 1);
 51768  		b = ((((((((x.mode & 7) >>> 0) << 24 >>> 24)) << 5 << 24 >>> 24) | ((((((x.acc + 1 << 24 >> 24)) & 3) << 24 >>> 24)) << 3 << 24 >>> 24)) >>> 0) | (((((x.form & 3) >>> 0) << 24 >>> 24)) << 1 << 24 >>> 24)) >>> 0;
 51769  		if (x.neg) {
 51770  			b = (b | (1)) >>> 0;
 51771  		}
 51772  		(1 >= buf.$length ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + 1] = b);
 51773  		$clone(binary.BigEndian, binary.bigEndian).PutUint32($subslice(buf, 2), x.prec);
 51774  		if (x.form === 1) {
 51775  			$clone(binary.BigEndian, binary.bigEndian).PutUint32($subslice(buf, 6), ((x.exp >>> 0)));
 51776  			$subslice(x.mant, (x.mant.$length - n >> 0)).bytes($subslice(buf, 10));
 51777  		}
 51778  		return [buf, $ifaceNil];
 51779  	};
 51780  	Float.prototype.GobEncode = function() { return this.$val.GobEncode(); };
 51781  	Float.ptr.prototype.GobDecode = function(buf) {
 51782  		var _r$3, _r$4, b, buf, oldMode, oldPrec, z, $s, $r;
 51783  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$3 = $f._r$3; _r$4 = $f._r$4; b = $f.b; buf = $f.buf; oldMode = $f.oldMode; oldPrec = $f.oldPrec; z = $f.z; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 51784  		z = this;
 51785  		if (buf.$length === 0) {
 51786  			Float.copy(z, new Float.ptr(0, 0, 0, 0, false, nat.nil, 0));
 51787  			$s = -1; return $ifaceNil;
 51788  		}
 51789  		/* */ if (!(((0 >= buf.$length ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + 0]) === 1))) { $s = 1; continue; }
 51790  		/* */ $s = 2; continue;
 51791  		/* if (!(((0 >= buf.$length ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + 0]) === 1))) { */ case 1:
 51792  			_r$3 = fmt.Errorf("Float.GobDecode: encoding version %d not supported", new sliceType([new $Uint8((0 >= buf.$length ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + 0]))])); /* */ $s = 3; case 3: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 51793  			$s = -1; return _r$3;
 51794  		/* } */ case 2:
 51795  		oldPrec = z.prec;
 51796  		oldMode = z.mode;
 51797  		b = (1 >= buf.$length ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + 1]);
 51798  		z.mode = ((((((b >>> 5 << 24 >>> 24)) & 7) >>> 0) << 24 >>> 24));
 51799  		z.acc = ((((((b >>> 3 << 24 >>> 24)) & 3) >>> 0) << 24 >> 24)) - 1 << 24 >> 24;
 51800  		z.form = ((((((b >>> 1 << 24 >>> 24)) & 3) >>> 0) << 24 >>> 24));
 51801  		z.neg = !((((b & 1) >>> 0) === 0));
 51802  		z.prec = $clone(binary.BigEndian, binary.bigEndian).Uint32($subslice(buf, 2));
 51803  		if (z.form === 1) {
 51804  			z.exp = (($clone(binary.BigEndian, binary.bigEndian).Uint32($subslice(buf, 6)) >> 0));
 51805  			z.mant = z.mant.setBytes($subslice(buf, 10));
 51806  		}
 51807  		/* */ if (!((oldPrec === 0))) { $s = 4; continue; }
 51808  		/* */ $s = 5; continue;
 51809  		/* if (!((oldPrec === 0))) { */ case 4:
 51810  			z.mode = oldMode;
 51811  			_r$4 = z.SetPrec(((oldPrec >>> 0))); /* */ $s = 6; case 6: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 51812  			_r$4;
 51813  		/* } */ case 5:
 51814  		$s = -1; return $ifaceNil;
 51815  		/* */ } return; } if ($f === undefined) { $f = { $blk: Float.ptr.prototype.GobDecode }; } $f._r$3 = _r$3; $f._r$4 = _r$4; $f.b = b; $f.buf = buf; $f.oldMode = oldMode; $f.oldPrec = oldPrec; $f.z = z; $f.$s = $s; $f.$r = $r; return $f;
 51816  	};
 51817  	Float.prototype.GobDecode = function(buf) { return this.$val.GobDecode(buf); };
 51818  	Float.ptr.prototype.MarshalText = function() {
 51819  		var _r$3, _tmp, _tmp$1, _tmp$2, _tmp$3, buf, err, text, x, $s, $r;
 51820  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$3 = $f._r$3; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; buf = $f.buf; err = $f.err; text = $f.text; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 51821  		text = sliceType$1.nil;
 51822  		err = $ifaceNil;
 51823  		x = this;
 51824  		if (x === ptrType.nil) {
 51825  			_tmp = (new sliceType$1($stringToBytes("<nil>")));
 51826  			_tmp$1 = $ifaceNil;
 51827  			text = _tmp;
 51828  			err = _tmp$1;
 51829  			$s = -1; return [text, err];
 51830  		}
 51831  		buf = sliceType$1.nil;
 51832  		_r$3 = x.Append(buf, 103, -1); /* */ $s = 1; case 1: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 51833  		_tmp$2 = _r$3;
 51834  		_tmp$3 = $ifaceNil;
 51835  		text = _tmp$2;
 51836  		err = _tmp$3;
 51837  		$s = -1; return [text, err];
 51838  		/* */ } return; } if ($f === undefined) { $f = { $blk: Float.ptr.prototype.MarshalText }; } $f._r$3 = _r$3; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f.buf = buf; $f.err = err; $f.text = text; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
 51839  	};
 51840  	Float.prototype.MarshalText = function() { return this.$val.MarshalText(); };
 51841  	Float.ptr.prototype.UnmarshalText = function(text) {
 51842  		var _r$3, _r$4, _tuple, err, text, z, $s, $r;
 51843  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$3 = $f._r$3; _r$4 = $f._r$4; _tuple = $f._tuple; err = $f.err; text = $f.text; z = $f.z; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 51844  		z = this;
 51845  		_r$3 = z.Parse(($bytesToString(text)), 0); /* */ $s = 1; case 1: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 51846  		_tuple = _r$3;
 51847  		err = _tuple[2];
 51848  		/* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 2; continue; }
 51849  		/* */ $s = 3; continue;
 51850  		/* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 2:
 51851  			_r$4 = fmt.Errorf("math/big: cannot unmarshal %q into a *big.Float (%v)", new sliceType([text, err])); /* */ $s = 4; case 4: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 51852  			err = _r$4;
 51853  		/* } */ case 3:
 51854  		$s = -1; return err;
 51855  		/* */ } return; } if ($f === undefined) { $f = { $blk: Float.ptr.prototype.UnmarshalText }; } $f._r$3 = _r$3; $f._r$4 = _r$4; $f._tuple = _tuple; $f.err = err; $f.text = text; $f.z = z; $f.$s = $s; $f.$r = $r; return $f;
 51856  	};
 51857  	Float.prototype.UnmarshalText = function(text) { return this.$val.UnmarshalText(text); };
 51858  	Float.ptr.prototype.Text = function(format, prec) {
 51859  		var _r$3, cap, format, prec, x, $s, $r;
 51860  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$3 = $f._r$3; cap = $f.cap; format = $f.format; prec = $f.prec; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 51861  		x = this;
 51862  		cap = 10;
 51863  		if (prec > 0) {
 51864  			cap = cap + (prec) >> 0;
 51865  		}
 51866  		_r$3 = x.Append($makeSlice(sliceType$1, 0, cap), format, prec); /* */ $s = 1; case 1: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 51867  		$s = -1; return ($bytesToString(_r$3));
 51868  		/* */ } return; } if ($f === undefined) { $f = { $blk: Float.ptr.prototype.Text }; } $f._r$3 = _r$3; $f.cap = cap; $f.format = format; $f.prec = prec; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
 51869  	};
 51870  	Float.prototype.Text = function(format, prec) { return this.$val.Text(format, prec); };
 51871  	Float.ptr.prototype.String = function() {
 51872  		var _r$3, x, $s, $r;
 51873  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$3 = $f._r$3; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 51874  		x = this;
 51875  		_r$3 = x.Text(103, 10); /* */ $s = 1; case 1: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 51876  		$s = -1; return _r$3;
 51877  		/* */ } return; } if ($f === undefined) { $f = { $blk: Float.ptr.prototype.String }; } $f._r$3 = _r$3; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
 51878  	};
 51879  	Float.prototype.String = function() { return this.$val.String(); };
 51880  	Float.ptr.prototype.Append = function(buf, fmt$1, prec) {
 51881  		var _1, _2, _3, _4, _r$3, _r$4, buf, d, eprec, exp, fmt$1, prec, shortest, x, $s, $r;
 51882  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _2 = $f._2; _3 = $f._3; _4 = $f._4; _r$3 = $f._r$3; _r$4 = $f._r$4; buf = $f.buf; d = $f.d; eprec = $f.eprec; exp = $f.exp; fmt$1 = $f.fmt$1; prec = $f.prec; shortest = $f.shortest; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 51883  		d = [d];
 51884  		x = this;
 51885  		if (x.neg) {
 51886  			buf = $append(buf, 45);
 51887  		}
 51888  		if (x.form === 2) {
 51889  			if (!x.neg) {
 51890  				buf = $append(buf, 43);
 51891  			}
 51892  			$s = -1; return $appendSlice(buf, "Inf");
 51893  		}
 51894  			_1 = fmt$1;
 51895  			/* */ if (_1 === (98)) { $s = 2; continue; }
 51896  			/* */ if (_1 === (112)) { $s = 3; continue; }
 51897  			/* */ $s = 4; continue;
 51898  			/* if (_1 === (98)) { */ case 2:
 51899  				_r$3 = x.fmtB(buf); /* */ $s = 5; case 5: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 51900  				$s = -1; return _r$3;
 51901  			/* } else if (_1 === (112)) { */ case 3:
 51902  				_r$4 = x.fmtP(buf); /* */ $s = 6; case 6: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 51903  				$s = -1; return _r$4;
 51904  			/* } */ case 4:
 51905  		case 1:
 51906  		d[0] = new decimal.ptr(sliceType$1.nil, 0);
 51907  		/* */ if (x.form === 1) { $s = 7; continue; }
 51908  		/* */ $s = 8; continue;
 51909  		/* if (x.form === 1) { */ case 7:
 51910  			$r = d[0].init(x.mant, ((x.exp >> 0)) - x.mant.bitLen() >> 0); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 51911  		/* } */ case 8:
 51912  		shortest = false;
 51913  		/* */ if (prec < 0) { $s = 10; continue; }
 51914  		/* */ $s = 11; continue;
 51915  		/* if (prec < 0) { */ case 10:
 51916  			shortest = true;
 51917  			$r = roundShortest(d[0], x); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 51918  			_2 = fmt$1;
 51919  			if ((_2 === (101)) || (_2 === (69))) {
 51920  				prec = d[0].mant.$length - 1 >> 0;
 51921  			} else if (_2 === (102)) {
 51922  				prec = max(d[0].mant.$length - d[0].exp >> 0, 0);
 51923  			} else if ((_2 === (103)) || (_2 === (71))) {
 51924  				prec = d[0].mant.$length;
 51925  			}
 51926  			$s = 12; continue;
 51927  		/* } else { */ case 11:
 51928  			_3 = fmt$1;
 51929  			if ((_3 === (101)) || (_3 === (69))) {
 51930  				d[0].round(1 + prec >> 0);
 51931  			} else if (_3 === (102)) {
 51932  				d[0].round(d[0].exp + prec >> 0);
 51933  			} else if ((_3 === (103)) || (_3 === (71))) {
 51934  				if (prec === 0) {
 51935  					prec = 1;
 51936  				}
 51937  				d[0].round(prec);
 51938  			}
 51939  		/* } */ case 12:
 51940  		_4 = fmt$1;
 51941  		if ((_4 === (101)) || (_4 === (69))) {
 51942  			$s = -1; return fmtE(buf, fmt$1, prec, $clone(d[0], decimal));
 51943  		} else if (_4 === (102)) {
 51944  			$s = -1; return fmtF(buf, prec, $clone(d[0], decimal));
 51945  		} else if ((_4 === (103)) || (_4 === (71))) {
 51946  			eprec = prec;
 51947  			if (eprec > d[0].mant.$length && d[0].mant.$length >= d[0].exp) {
 51948  				eprec = d[0].mant.$length;
 51949  			}
 51950  			if (shortest) {
 51951  				eprec = 6;
 51952  			}
 51953  			exp = d[0].exp - 1 >> 0;
 51954  			if (exp < -4 || exp >= eprec) {
 51955  				if (prec > d[0].mant.$length) {
 51956  					prec = d[0].mant.$length;
 51957  				}
 51958  				$s = -1; return fmtE(buf, (fmt$1 + 101 << 24 >>> 24) - 103 << 24 >>> 24, prec - 1 >> 0, $clone(d[0], decimal));
 51959  			}
 51960  			if (prec > d[0].exp) {
 51961  				prec = d[0].mant.$length;
 51962  			}
 51963  			$s = -1; return fmtF(buf, max(prec - d[0].exp >> 0, 0), $clone(d[0], decimal));
 51964  		}
 51965  		if (x.neg) {
 51966  			buf = $subslice(buf, 0, (buf.$length - 1 >> 0));
 51967  		}
 51968  		$s = -1; return $append(buf, 37, fmt$1);
 51969  		/* */ } return; } if ($f === undefined) { $f = { $blk: Float.ptr.prototype.Append }; } $f._1 = _1; $f._2 = _2; $f._3 = _3; $f._4 = _4; $f._r$3 = _r$3; $f._r$4 = _r$4; $f.buf = buf; $f.d = d; $f.eprec = eprec; $f.exp = exp; $f.fmt$1 = fmt$1; $f.prec = prec; $f.shortest = shortest; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
 51970  	};
 51971  	Float.prototype.Append = function(buf, fmt$1, prec) { return this.$val.Append(buf, fmt$1, prec); };
 51972  	roundShortest = function(d, x) {
 51973  		var _i, _ref, d, exp, i, inclusive, l, lower, m, mant, okdown, okup, s, tmp, u, upper, x, $s, $r;
 51974  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _i = $f._i; _ref = $f._ref; d = $f.d; exp = $f.exp; i = $f.i; inclusive = $f.inclusive; l = $f.l; lower = $f.lower; m = $f.m; mant = $f.mant; okdown = $f.okdown; okup = $f.okup; s = $f.s; tmp = $f.tmp; u = $f.u; upper = $f.upper; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 51975  		if (d.mant.$length === 0) {
 51976  			$s = -1; return;
 51977  		}
 51978  		mant = (nat.nil).set(x.mant);
 51979  		exp = ((x.exp >> 0)) - mant.bitLen() >> 0;
 51980  		s = mant.bitLen() - (((x.prec + 1 >>> 0) >> 0)) >> 0;
 51981  		if (s < 0) {
 51982  			mant = mant.shl(mant, ((-s >>> 0)));
 51983  		} else if (s > 0) {
 51984  			mant = mant.shr(mant, ((s >>> 0)));
 51985  		}
 51986  		exp = exp + (s) >> 0;
 51987  		lower = new decimal.ptr(sliceType$1.nil, 0);
 51988  		tmp = nat.nil;
 51989  		$r = lower.init(tmp.sub(mant, natOne), exp); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 51990  		upper = new decimal.ptr(sliceType$1.nil, 0);
 51991  		$r = upper.init(tmp.add(mant, natOne), exp); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 51992  		inclusive = (((0 >= mant.$length ? ($throwRuntimeError("index out of range"), undefined) : mant.$array[mant.$offset + 0]) & 2) >>> 0) === 0;
 51993  		_ref = d.mant;
 51994  		_i = 0;
 51995  		while (true) {
 51996  			if (!(_i < _ref.$length)) { break; }
 51997  			i = _i;
 51998  			m = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
 51999  			l = lower.at(i);
 52000  			u = upper.at(i);
 52001  			okdown = !((l === m)) || inclusive && ((i + 1 >> 0) === lower.mant.$length);
 52002  			okup = !((m === u)) && (inclusive || (m + 1 << 24 >>> 24) < u || (i + 1 >> 0) < upper.mant.$length);
 52003  			if (okdown && okup) {
 52004  				d.round(i + 1 >> 0);
 52005  				$s = -1; return;
 52006  			} else if (okdown) {
 52007  				d.roundDown(i + 1 >> 0);
 52008  				$s = -1; return;
 52009  			} else if (okup) {
 52010  				d.roundUp(i + 1 >> 0);
 52011  				$s = -1; return;
 52012  			}
 52013  			_i++;
 52014  		}
 52015  		$s = -1; return;
 52016  		/* */ } return; } if ($f === undefined) { $f = { $blk: roundShortest }; } $f._i = _i; $f._ref = _ref; $f.d = d; $f.exp = exp; $f.i = i; $f.inclusive = inclusive; $f.l = l; $f.lower = lower; $f.m = m; $f.mant = mant; $f.okdown = okdown; $f.okup = okup; $f.s = s; $f.tmp = tmp; $f.u = u; $f.upper = upper; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
 52017  	};
 52018  	fmtE = function(buf, fmt$1, prec, d) {
 52019  		var buf, ch, d, exp, fmt$1, i, m, prec, x, x$1;
 52020  		ch = 48;
 52021  		if (d.mant.$length > 0) {
 52022  			ch = (x = d.mant, (0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0]));
 52023  		}
 52024  		buf = $append(buf, ch);
 52025  		if (prec > 0) {
 52026  			buf = $append(buf, 46);
 52027  			i = 1;
 52028  			m = min(d.mant.$length, prec + 1 >> 0);
 52029  			if (i < m) {
 52030  				buf = $appendSlice(buf, $subslice(d.mant, i, m));
 52031  				i = m;
 52032  			}
 52033  			while (true) {
 52034  				if (!(i <= prec)) { break; }
 52035  				buf = $append(buf, 48);
 52036  				i = i + (1) >> 0;
 52037  			}
 52038  		}
 52039  		buf = $append(buf, fmt$1);
 52040  		exp = new $Int64(0, 0);
 52041  		if (d.mant.$length > 0) {
 52042  			exp = (x$1 = (new $Int64(0, d.exp)), new $Int64(x$1.$high - 0, x$1.$low - 1));
 52043  		}
 52044  		if ((exp.$high < 0 || (exp.$high === 0 && exp.$low < 0))) {
 52045  			ch = 45;
 52046  			exp = new $Int64(-exp.$high, -exp.$low);
 52047  		} else {
 52048  			ch = 43;
 52049  		}
 52050  		buf = $append(buf, ch);
 52051  		if ((exp.$high < 0 || (exp.$high === 0 && exp.$low < 10))) {
 52052  			buf = $append(buf, 48);
 52053  		}
 52054  		return strconv.AppendInt(buf, exp, 10);
 52055  	};
 52056  	fmtF = function(buf, prec, d) {
 52057  		var buf, d, i, m, prec;
 52058  		if (d.exp > 0) {
 52059  			m = min(d.mant.$length, d.exp);
 52060  			buf = $appendSlice(buf, $subslice(d.mant, 0, m));
 52061  			while (true) {
 52062  				if (!(m < d.exp)) { break; }
 52063  				buf = $append(buf, 48);
 52064  				m = m + (1) >> 0;
 52065  			}
 52066  		} else {
 52067  			buf = $append(buf, 48);
 52068  		}
 52069  		if (prec > 0) {
 52070  			buf = $append(buf, 46);
 52071  			i = 0;
 52072  			while (true) {
 52073  				if (!(i < prec)) { break; }
 52074  				buf = $append(buf, d.at(d.exp + i >> 0));
 52075  				i = i + (1) >> 0;
 52076  			}
 52077  		}
 52078  		return buf;
 52079  	};
 52080  	Float.ptr.prototype.fmtB = function(buf) {
 52081  		var _arg, _arg$1, _r$3, buf, e, m, w, x, x$1, x$2, $s, $r;
 52082  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _arg = $f._arg; _arg$1 = $f._arg$1; _r$3 = $f._r$3; buf = $f.buf; e = $f.e; m = $f.m; w = $f.w; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 52083  		x = this;
 52084  		if (x.form === 0) {
 52085  			$s = -1; return $append(buf, 48);
 52086  		}
 52087  		if (false && !((x.form === 1))) {
 52088  			$panic(new $String("non-finite float"));
 52089  		}
 52090  		m = x.mant;
 52091  		w = $imul(((x.mant.$length >>> 0)), 32) >>> 0;
 52092  		if (w < x.prec) {
 52093  			m = (nat.nil).shl(m, (((x.prec - w >>> 0) >>> 0)));
 52094  		} else if (w > x.prec) {
 52095  			m = (nat.nil).shr(m, (((w - x.prec >>> 0) >>> 0)));
 52096  		}
 52097  		_arg = buf;
 52098  		_r$3 = m.utoa(10); /* */ $s = 1; case 1: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 52099  		_arg$1 = _r$3;
 52100  		buf = $appendSlice(_arg, _arg$1);
 52101  		buf = $append(buf, 112);
 52102  		e = (x$1 = (new $Int64(0, x.exp)), x$2 = (new $Int64(0, x.prec)), new $Int64(x$1.$high - x$2.$high, x$1.$low - x$2.$low));
 52103  		if ((e.$high > 0 || (e.$high === 0 && e.$low >= 0))) {
 52104  			buf = $append(buf, 43);
 52105  		}
 52106  		$s = -1; return strconv.AppendInt(buf, e, 10);
 52107  		/* */ } return; } if ($f === undefined) { $f = { $blk: Float.ptr.prototype.fmtB }; } $f._arg = _arg; $f._arg$1 = _arg$1; $f._r$3 = _r$3; $f.buf = buf; $f.e = e; $f.m = m; $f.w = w; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.$s = $s; $f.$r = $r; return $f;
 52108  	};
 52109  	Float.prototype.fmtB = function(buf) { return this.$val.fmtB(buf); };
 52110  	Float.ptr.prototype.fmtP = function(buf) {
 52111  		var _arg, _arg$1, _r$3, _r$4, buf, i, m, x, $s, $r;
 52112  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _arg = $f._arg; _arg$1 = $f._arg$1; _r$3 = $f._r$3; _r$4 = $f._r$4; buf = $f.buf; i = $f.i; m = $f.m; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 52113  		x = this;
 52114  		if (x.form === 0) {
 52115  			$s = -1; return $append(buf, 48);
 52116  		}
 52117  		if (false && !((x.form === 1))) {
 52118  			$panic(new $String("non-finite float"));
 52119  		}
 52120  		m = x.mant;
 52121  		i = 0;
 52122  		while (true) {
 52123  			if (!(i < m.$length && (((i < 0 || i >= m.$length) ? ($throwRuntimeError("index out of range"), undefined) : m.$array[m.$offset + i]) === 0))) { break; }
 52124  			i = i + (1) >> 0;
 52125  		}
 52126  		m = $subslice(m, i);
 52127  		buf = $appendSlice(buf, "0x.");
 52128  		_arg = buf;
 52129  		_r$3 = m.utoa(16); /* */ $s = 1; case 1: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 52130  		_r$4 = bytes.TrimRight(_r$3, "0"); /* */ $s = 2; case 2: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 52131  		_arg$1 = _r$4;
 52132  		buf = $appendSlice(_arg, _arg$1);
 52133  		buf = $append(buf, 112);
 52134  		if (x.exp >= 0) {
 52135  			buf = $append(buf, 43);
 52136  		}
 52137  		$s = -1; return strconv.AppendInt(buf, (new $Int64(0, x.exp)), 10);
 52138  		/* */ } return; } if ($f === undefined) { $f = { $blk: Float.ptr.prototype.fmtP }; } $f._arg = _arg; $f._arg$1 = _arg$1; $f._r$3 = _r$3; $f._r$4 = _r$4; $f.buf = buf; $f.i = i; $f.m = m; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
 52139  	};
 52140  	Float.prototype.fmtP = function(buf) { return this.$val.fmtP(buf); };
 52141  	min = function(x, y) {
 52142  		var x, y;
 52143  		if (x < y) {
 52144  			return x;
 52145  		}
 52146  		return y;
 52147  	};
 52148  	Float.ptr.prototype.Format = function(s, format) {
 52149  		var _1, _arg, _arg$1, _arg$2, _r$10, _r$11, _r$12, _r$13, _r$14, _r$15, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _tuple, _tuple$1, buf, format, hasPrec, hasWidth, padding, prec, s, sign, width, x, $s, $r;
 52150  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _arg = $f._arg; _arg$1 = $f._arg$1; _arg$2 = $f._arg$2; _r$10 = $f._r$10; _r$11 = $f._r$11; _r$12 = $f._r$12; _r$13 = $f._r$13; _r$14 = $f._r$14; _r$15 = $f._r$15; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _r$8 = $f._r$8; _r$9 = $f._r$9; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; buf = $f.buf; format = $f.format; hasPrec = $f.hasPrec; hasWidth = $f.hasWidth; padding = $f.padding; prec = $f.prec; s = $f.s; sign = $f.sign; width = $f.width; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 52151  		x = this;
 52152  		_r$3 = s.Precision(); /* */ $s = 1; case 1: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 52153  		_tuple = _r$3;
 52154  		prec = _tuple[0];
 52155  		hasPrec = _tuple[1];
 52156  		if (!hasPrec) {
 52157  			prec = 6;
 52158  		}
 52159  			_1 = format;
 52160  			/* */ if ((_1 === (101)) || (_1 === (69)) || (_1 === (102)) || (_1 === (98)) || (_1 === (112))) { $s = 3; continue; }
 52161  			/* */ if (_1 === (70)) { $s = 4; continue; }
 52162  			/* */ if (_1 === (118)) { $s = 5; continue; }
 52163  			/* */ if ((_1 === (103)) || (_1 === (71))) { $s = 6; continue; }
 52164  			/* */ $s = 7; continue;
 52165  			/* if ((_1 === (101)) || (_1 === (69)) || (_1 === (102)) || (_1 === (98)) || (_1 === (112))) { */ case 3:
 52166  				$s = 8; continue;
 52167  			/* } else if (_1 === (70)) { */ case 4:
 52168  				format = 102;
 52169  				$s = 8; continue;
 52170  			/* } else if (_1 === (118)) { */ case 5:
 52171  				format = 103;
 52172  				if (!hasPrec) {
 52173  					prec = -1;
 52174  				}
 52175  				$s = 8; continue;
 52176  			/* } else if ((_1 === (103)) || (_1 === (71))) { */ case 6:
 52177  				if (!hasPrec) {
 52178  					prec = -1;
 52179  				}
 52180  				$s = 8; continue;
 52181  			/* } else { */ case 7:
 52182  				_arg = s;
 52183  				_arg$1 = new $Int32(format);
 52184  				_r$4 = x.String(); /* */ $s = 9; case 9: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 52185  				_arg$2 = new $String(_r$4);
 52186  				_r$5 = fmt.Fprintf(_arg, "%%!%c(*big.Float=%s)", new sliceType([_arg$1, _arg$2])); /* */ $s = 10; case 10: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
 52187  				_r$5;
 52188  				$s = -1; return;
 52189  			/* } */ case 8:
 52190  		case 2:
 52191  		buf = sliceType$1.nil;
 52192  		_r$6 = x.Append(buf, ((format << 24 >>> 24)), prec); /* */ $s = 11; case 11: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
 52193  		buf = _r$6;
 52194  		if (buf.$length === 0) {
 52195  			buf = (new sliceType$1($stringToBytes("?")));
 52196  		}
 52197  		sign = "";
 52198  			/* */ if (((0 >= buf.$length ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + 0]) === 45)) { $s = 13; continue; }
 52199  			/* */ if (((0 >= buf.$length ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + 0]) === 43)) { $s = 14; continue; }
 52200  			_r$7 = s.Flag(43); /* */ $s = 18; case 18: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
 52201  			/* */ if (_r$7) { $s = 15; continue; }
 52202  			_r$8 = s.Flag(32); /* */ $s = 19; case 19: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
 52203  			/* */ if (_r$8) { $s = 16; continue; }
 52204  			/* */ $s = 17; continue;
 52205  			/* if (((0 >= buf.$length ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + 0]) === 45)) { */ case 13:
 52206  				sign = "-";
 52207  				buf = $subslice(buf, 1);
 52208  				$s = 17; continue;
 52209  			/* } else if (((0 >= buf.$length ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + 0]) === 43)) { */ case 14:
 52210  				sign = "+";
 52211  				_r$9 = s.Flag(32); /* */ $s = 22; case 22: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 52212  				/* */ if (_r$9) { $s = 20; continue; }
 52213  				/* */ $s = 21; continue;
 52214  				/* if (_r$9) { */ case 20:
 52215  					sign = " ";
 52216  				/* } */ case 21:
 52217  				buf = $subslice(buf, 1);
 52218  				$s = 17; continue;
 52219  			/* } else if (_r$7) { */ case 15:
 52220  				sign = "+";
 52221  				$s = 17; continue;
 52222  			/* } else if (_r$8) { */ case 16:
 52223  				sign = " ";
 52224  			/* } */ case 17:
 52225  		case 12:
 52226  		padding = 0;
 52227  		_r$10 = s.Width(); /* */ $s = 23; case 23: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
 52228  		_tuple$1 = _r$10;
 52229  		width = _tuple$1[0];
 52230  		hasWidth = _tuple$1[1];
 52231  		if (hasWidth && width > (sign.length + buf.$length >> 0)) {
 52232  			padding = (width - sign.length >> 0) - buf.$length >> 0;
 52233  		}
 52234  			_r$11 = s.Flag(48); /* */ $s = 29; case 29: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; }
 52235  			/* */ if (_r$11 && !x.IsInf()) { $s = 25; continue; }
 52236  			_r$12 = s.Flag(45); /* */ $s = 30; case 30: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; }
 52237  			/* */ if (_r$12) { $s = 26; continue; }
 52238  			/* */ $s = 27; continue;
 52239  			/* if (_r$11 && !x.IsInf()) { */ case 25:
 52240  				$r = writeMultiple(s, sign, 1); /* */ $s = 31; case 31: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 52241  				$r = writeMultiple(s, "0", padding); /* */ $s = 32; case 32: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 52242  				_r$13 = s.Write(buf); /* */ $s = 33; case 33: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; }
 52243  				_r$13;
 52244  				$s = 28; continue;
 52245  			/* } else if (_r$12) { */ case 26:
 52246  				$r = writeMultiple(s, sign, 1); /* */ $s = 34; case 34: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 52247  				_r$14 = s.Write(buf); /* */ $s = 35; case 35: if($c) { $c = false; _r$14 = _r$14.$blk(); } if (_r$14 && _r$14.$blk !== undefined) { break s; }
 52248  				_r$14;
 52249  				$r = writeMultiple(s, " ", padding); /* */ $s = 36; case 36: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 52250  				$s = 28; continue;
 52251  			/* } else { */ case 27:
 52252  				$r = writeMultiple(s, " ", padding); /* */ $s = 37; case 37: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 52253  				$r = writeMultiple(s, sign, 1); /* */ $s = 38; case 38: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 52254  				_r$15 = s.Write(buf); /* */ $s = 39; case 39: if($c) { $c = false; _r$15 = _r$15.$blk(); } if (_r$15 && _r$15.$blk !== undefined) { break s; }
 52255  				_r$15;
 52256  			/* } */ case 28:
 52257  		case 24:
 52258  		$s = -1; return;
 52259  		/* */ } return; } if ($f === undefined) { $f = { $blk: Float.ptr.prototype.Format }; } $f._1 = _1; $f._arg = _arg; $f._arg$1 = _arg$1; $f._arg$2 = _arg$2; $f._r$10 = _r$10; $f._r$11 = _r$11; $f._r$12 = _r$12; $f._r$13 = _r$13; $f._r$14 = _r$14; $f._r$15 = _r$15; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._r$8 = _r$8; $f._r$9 = _r$9; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.buf = buf; $f.format = format; $f.hasPrec = hasPrec; $f.hasWidth = hasWidth; $f.padding = padding; $f.prec = prec; $f.s = s; $f.sign = sign; $f.width = width; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
 52260  	};
 52261  	Float.prototype.Format = function(s, format) { return this.$val.Format(s, format); };
 52262  	Int.ptr.prototype.Sign = function() {
 52263  		var x;
 52264  		x = this;
 52265  		if (x.abs.$length === 0) {
 52266  			return 0;
 52267  		}
 52268  		if (x.neg) {
 52269  			return -1;
 52270  		}
 52271  		return 1;
 52272  	};
 52273  	Int.prototype.Sign = function() { return this.$val.Sign(); };
 52274  	Int.ptr.prototype.SetInt64 = function(x) {
 52275  		var neg, x, z;
 52276  		z = this;
 52277  		neg = false;
 52278  		if ((x.$high < 0 || (x.$high === 0 && x.$low < 0))) {
 52279  			neg = true;
 52280  			x = new $Int64(-x.$high, -x.$low);
 52281  		}
 52282  		z.abs = z.abs.setUint64((new $Uint64(x.$high, x.$low)));
 52283  		z.neg = neg;
 52284  		return z;
 52285  	};
 52286  	Int.prototype.SetInt64 = function(x) { return this.$val.SetInt64(x); };
 52287  	Int.ptr.prototype.SetUint64 = function(x) {
 52288  		var x, z;
 52289  		z = this;
 52290  		z.abs = z.abs.setUint64(x);
 52291  		z.neg = false;
 52292  		return z;
 52293  	};
 52294  	Int.prototype.SetUint64 = function(x) { return this.$val.SetUint64(x); };
 52295  	NewInt = function(x) {
 52296  		var x;
 52297  		return new Int.ptr(false, nat.nil).SetInt64(x);
 52298  	};
 52299  	$pkg.NewInt = NewInt;
 52300  	Int.ptr.prototype.Set = function(x) {
 52301  		var x, z;
 52302  		z = this;
 52303  		if (!(z === x)) {
 52304  			z.abs = z.abs.set(x.abs);
 52305  			z.neg = x.neg;
 52306  		}
 52307  		return z;
 52308  	};
 52309  	Int.prototype.Set = function(x) { return this.$val.Set(x); };
 52310  	Int.ptr.prototype.Bits = function() {
 52311  		var x, x$1;
 52312  		x = this;
 52313  		return (x$1 = x.abs, $subslice(new sliceType$2(x$1.$array), x$1.$offset, x$1.$offset + x$1.$length));
 52314  	};
 52315  	Int.prototype.Bits = function() { return this.$val.Bits(); };
 52316  	Int.ptr.prototype.SetBits = function(abs) {
 52317  		var abs, z;
 52318  		z = this;
 52319  		z.abs = ($subslice(new nat(abs.$array), abs.$offset, abs.$offset + abs.$length)).norm();
 52320  		z.neg = false;
 52321  		return z;
 52322  	};
 52323  	Int.prototype.SetBits = function(abs) { return this.$val.SetBits(abs); };
 52324  	Int.ptr.prototype.Abs = function(x) {
 52325  		var x, z;
 52326  		z = this;
 52327  		z.Set(x);
 52328  		z.neg = false;
 52329  		return z;
 52330  	};
 52331  	Int.prototype.Abs = function(x) { return this.$val.Abs(x); };
 52332  	Int.ptr.prototype.Neg = function(x) {
 52333  		var x, z;
 52334  		z = this;
 52335  		z.Set(x);
 52336  		z.neg = z.abs.$length > 0 && !z.neg;
 52337  		return z;
 52338  	};
 52339  	Int.prototype.Neg = function(x) { return this.$val.Neg(x); };
 52340  	Int.ptr.prototype.Add = function(x, y) {
 52341  		var neg, x, y, z;
 52342  		z = this;
 52343  		neg = x.neg;
 52344  		if (x.neg === y.neg) {
 52345  			z.abs = z.abs.add(x.abs, y.abs);
 52346  		} else {
 52347  			if (x.abs.cmp(y.abs) >= 0) {
 52348  				z.abs = z.abs.sub(x.abs, y.abs);
 52349  			} else {
 52350  				neg = !neg;
 52351  				z.abs = z.abs.sub(y.abs, x.abs);
 52352  			}
 52353  		}
 52354  		z.neg = z.abs.$length > 0 && neg;
 52355  		return z;
 52356  	};
 52357  	Int.prototype.Add = function(x, y) { return this.$val.Add(x, y); };
 52358  	Int.ptr.prototype.Sub = function(x, y) {
 52359  		var neg, x, y, z;
 52360  		z = this;
 52361  		neg = x.neg;
 52362  		if (!(x.neg === y.neg)) {
 52363  			z.abs = z.abs.add(x.abs, y.abs);
 52364  		} else {
 52365  			if (x.abs.cmp(y.abs) >= 0) {
 52366  				z.abs = z.abs.sub(x.abs, y.abs);
 52367  			} else {
 52368  				neg = !neg;
 52369  				z.abs = z.abs.sub(y.abs, x.abs);
 52370  			}
 52371  		}
 52372  		z.neg = z.abs.$length > 0 && neg;
 52373  		return z;
 52374  	};
 52375  	Int.prototype.Sub = function(x, y) { return this.$val.Sub(x, y); };
 52376  	Int.ptr.prototype.Mul = function(x, y) {
 52377  		var x, y, z;
 52378  		z = this;
 52379  		if (x === y) {
 52380  			z.abs = z.abs.sqr(x.abs);
 52381  			z.neg = false;
 52382  			return z;
 52383  		}
 52384  		z.abs = z.abs.mul(x.abs, y.abs);
 52385  		z.neg = z.abs.$length > 0 && !(x.neg === y.neg);
 52386  		return z;
 52387  	};
 52388  	Int.prototype.Mul = function(x, y) { return this.$val.Mul(x, y); };
 52389  	Int.ptr.prototype.MulRange = function(a, b) {
 52390  		var _tmp, _tmp$1, a, b, neg, x, x$1, z;
 52391  		z = this;
 52392  		if ((a.$high > b.$high || (a.$high === b.$high && a.$low > b.$low))) {
 52393  			return z.SetInt64(new $Int64(0, 1));
 52394  		} else if ((a.$high < 0 || (a.$high === 0 && a.$low <= 0)) && (b.$high > 0 || (b.$high === 0 && b.$low >= 0))) {
 52395  			return z.SetInt64(new $Int64(0, 0));
 52396  		}
 52397  		neg = false;
 52398  		if ((a.$high < 0 || (a.$high === 0 && a.$low < 0))) {
 52399  			neg = (x = (x$1 = new $Int64(b.$high - a.$high, b.$low - a.$low), new $Int64(x$1.$high & 0, (x$1.$low & 1) >>> 0)), (x.$high === 0 && x.$low === 0));
 52400  			_tmp = new $Int64(-b.$high, -b.$low);
 52401  			_tmp$1 = new $Int64(-a.$high, -a.$low);
 52402  			a = _tmp;
 52403  			b = _tmp$1;
 52404  		}
 52405  		z.abs = z.abs.mulRange((new $Uint64(a.$high, a.$low)), (new $Uint64(b.$high, b.$low)));
 52406  		z.neg = neg;
 52407  		return z;
 52408  	};
 52409  	Int.prototype.MulRange = function(a, b) { return this.$val.MulRange(a, b); };
 52410  	Int.ptr.prototype.Binomial = function(n, k) {
 52411  		var _r$3, _tmp, _tmp$1, a, b, k, n, x, x$1, z, $s, $r;
 52412  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$3 = $f._r$3; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; a = $f.a; b = $f.b; k = $f.k; n = $f.n; x = $f.x; x$1 = $f.x$1; z = $f.z; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 52413  		a = [a];
 52414  		b = [b];
 52415  		z = this;
 52416  		if ((x = $div64(n, new $Int64(0, 2), false), (x.$high < k.$high || (x.$high === k.$high && x.$low < k.$low))) && (k.$high < n.$high || (k.$high === n.$high && k.$low <= n.$low))) {
 52417  			k = new $Int64(n.$high - k.$high, n.$low - k.$low);
 52418  		}
 52419  		_tmp = new Int.ptr(false, nat.nil);
 52420  		_tmp$1 = new Int.ptr(false, nat.nil);
 52421  		a[0] = $clone(_tmp, Int);
 52422  		b[0] = $clone(_tmp$1, Int);
 52423  		a[0].MulRange((x$1 = new $Int64(n.$high - k.$high, n.$low - k.$low), new $Int64(x$1.$high + 0, x$1.$low + 1)), n);
 52424  		b[0].MulRange(new $Int64(0, 1), k);
 52425  		_r$3 = z.Quo(a[0], b[0]); /* */ $s = 1; case 1: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 52426  		$s = -1; return _r$3;
 52427  		/* */ } return; } if ($f === undefined) { $f = { $blk: Int.ptr.prototype.Binomial }; } $f._r$3 = _r$3; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f.a = a; $f.b = b; $f.k = k; $f.n = n; $f.x = x; $f.x$1 = x$1; $f.z = z; $f.$s = $s; $f.$r = $r; return $f;
 52428  	};
 52429  	Int.prototype.Binomial = function(n, k) { return this.$val.Binomial(n, k); };
 52430  	Int.ptr.prototype.Quo = function(x, y) {
 52431  		var _r$3, _tuple, x, y, z, $s, $r;
 52432  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$3 = $f._r$3; _tuple = $f._tuple; x = $f.x; y = $f.y; z = $f.z; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 52433  		z = this;
 52434  		_r$3 = z.abs.div(nat.nil, x.abs, y.abs); /* */ $s = 1; case 1: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 52435  		_tuple = _r$3;
 52436  		z.abs = _tuple[0];
 52437  		z.neg = z.abs.$length > 0 && !(x.neg === y.neg);
 52438  		$s = -1; return z;
 52439  		/* */ } return; } if ($f === undefined) { $f = { $blk: Int.ptr.prototype.Quo }; } $f._r$3 = _r$3; $f._tuple = _tuple; $f.x = x; $f.y = y; $f.z = z; $f.$s = $s; $f.$r = $r; return $f;
 52440  	};
 52441  	Int.prototype.Quo = function(x, y) { return this.$val.Quo(x, y); };
 52442  	Int.ptr.prototype.Rem = function(x, y) {
 52443  		var _r$3, _tuple, x, y, z, $s, $r;
 52444  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$3 = $f._r$3; _tuple = $f._tuple; x = $f.x; y = $f.y; z = $f.z; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 52445  		z = this;
 52446  		_r$3 = (nat.nil).div(z.abs, x.abs, y.abs); /* */ $s = 1; case 1: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 52447  		_tuple = _r$3;
 52448  		z.abs = _tuple[1];
 52449  		z.neg = z.abs.$length > 0 && x.neg;
 52450  		$s = -1; return z;
 52451  		/* */ } return; } if ($f === undefined) { $f = { $blk: Int.ptr.prototype.Rem }; } $f._r$3 = _r$3; $f._tuple = _tuple; $f.x = x; $f.y = y; $f.z = z; $f.$s = $s; $f.$r = $r; return $f;
 52452  	};
 52453  	Int.prototype.Rem = function(x, y) { return this.$val.Rem(x, y); };
 52454  	Int.ptr.prototype.QuoRem = function(x, y, r) {
 52455  		var _r$3, _tmp, _tmp$1, _tuple, r, x, y, z, $s, $r;
 52456  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$3 = $f._r$3; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tuple = $f._tuple; r = $f.r; x = $f.x; y = $f.y; z = $f.z; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 52457  		z = this;
 52458  		_r$3 = z.abs.div(r.abs, x.abs, y.abs); /* */ $s = 1; case 1: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 52459  		_tuple = _r$3;
 52460  		z.abs = _tuple[0];
 52461  		r.abs = _tuple[1];
 52462  		_tmp = z.abs.$length > 0 && !(x.neg === y.neg);
 52463  		_tmp$1 = r.abs.$length > 0 && x.neg;
 52464  		z.neg = _tmp;
 52465  		r.neg = _tmp$1;
 52466  		$s = -1; return [z, r];
 52467  		/* */ } return; } if ($f === undefined) { $f = { $blk: Int.ptr.prototype.QuoRem }; } $f._r$3 = _r$3; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tuple = _tuple; $f.r = r; $f.x = x; $f.y = y; $f.z = z; $f.$s = $s; $f.$r = $r; return $f;
 52468  	};
 52469  	Int.prototype.QuoRem = function(x, y, r) { return this.$val.QuoRem(x, y, r); };
 52470  	Int.ptr.prototype.Div = function(x, y) {
 52471  		var _r$3, r, x, y, y_neg, z, $s, $r;
 52472  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$3 = $f._r$3; r = $f.r; x = $f.x; y = $f.y; y_neg = $f.y_neg; z = $f.z; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 52473  		r = [r];
 52474  		z = this;
 52475  		y_neg = y.neg;
 52476  		r[0] = new Int.ptr(false, nat.nil);
 52477  		_r$3 = z.QuoRem(x, y, r[0]); /* */ $s = 1; case 1: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 52478  		_r$3;
 52479  		if (r[0].neg) {
 52480  			if (y_neg) {
 52481  				z.Add(z, intOne);
 52482  			} else {
 52483  				z.Sub(z, intOne);
 52484  			}
 52485  		}
 52486  		$s = -1; return z;
 52487  		/* */ } return; } if ($f === undefined) { $f = { $blk: Int.ptr.prototype.Div }; } $f._r$3 = _r$3; $f.r = r; $f.x = x; $f.y = y; $f.y_neg = y_neg; $f.z = z; $f.$s = $s; $f.$r = $r; return $f;
 52488  	};
 52489  	Int.prototype.Div = function(x, y) { return this.$val.Div(x, y); };
 52490  	Int.ptr.prototype.Mod = function(x, y) {
 52491  		var _r$3, q, x, y, y0, z, $s, $r;
 52492  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$3 = $f._r$3; q = $f.q; x = $f.x; y = $f.y; y0 = $f.y0; z = $f.z; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 52493  		z = this;
 52494  		y0 = y;
 52495  		if (z === y || alias(z.abs, y.abs)) {
 52496  			y0 = new Int.ptr(false, nat.nil).Set(y);
 52497  		}
 52498  		q = new Int.ptr(false, nat.nil);
 52499  		_r$3 = q.QuoRem(x, y, z); /* */ $s = 1; case 1: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 52500  		_r$3;
 52501  		if (z.neg) {
 52502  			if (y0.neg) {
 52503  				z.Sub(z, y0);
 52504  			} else {
 52505  				z.Add(z, y0);
 52506  			}
 52507  		}
 52508  		$s = -1; return z;
 52509  		/* */ } return; } if ($f === undefined) { $f = { $blk: Int.ptr.prototype.Mod }; } $f._r$3 = _r$3; $f.q = q; $f.x = x; $f.y = y; $f.y0 = y0; $f.z = z; $f.$s = $s; $f.$r = $r; return $f;
 52510  	};
 52511  	Int.prototype.Mod = function(x, y) { return this.$val.Mod(x, y); };
 52512  	Int.ptr.prototype.DivMod = function(x, y, m) {
 52513  		var _r$3, m, x, y, y0, z, $s, $r;
 52514  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$3 = $f._r$3; m = $f.m; x = $f.x; y = $f.y; y0 = $f.y0; z = $f.z; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 52515  		z = this;
 52516  		y0 = y;
 52517  		if (z === y || alias(z.abs, y.abs)) {
 52518  			y0 = new Int.ptr(false, nat.nil).Set(y);
 52519  		}
 52520  		_r$3 = z.QuoRem(x, y, m); /* */ $s = 1; case 1: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 52521  		_r$3;
 52522  		if (m.neg) {
 52523  			if (y0.neg) {
 52524  				z.Add(z, intOne);
 52525  				m.Sub(m, y0);
 52526  			} else {
 52527  				z.Sub(z, intOne);
 52528  				m.Add(m, y0);
 52529  			}
 52530  		}
 52531  		$s = -1; return [z, m];
 52532  		/* */ } return; } if ($f === undefined) { $f = { $blk: Int.ptr.prototype.DivMod }; } $f._r$3 = _r$3; $f.m = m; $f.x = x; $f.y = y; $f.y0 = y0; $f.z = z; $f.$s = $s; $f.$r = $r; return $f;
 52533  	};
 52534  	Int.prototype.DivMod = function(x, y, m) { return this.$val.DivMod(x, y, m); };
 52535  	Int.ptr.prototype.Cmp = function(y) {
 52536  		var r, x, y;
 52537  		r = 0;
 52538  		x = this;
 52539  		if (x.neg === y.neg) {
 52540  			r = x.abs.cmp(y.abs);
 52541  			if (x.neg) {
 52542  				r = -r;
 52543  			}
 52544  		} else if (x.neg) {
 52545  			r = -1;
 52546  		} else {
 52547  			r = 1;
 52548  		}
 52549  		return r;
 52550  	};
 52551  	Int.prototype.Cmp = function(y) { return this.$val.Cmp(y); };
 52552  	Int.ptr.prototype.CmpAbs = function(y) {
 52553  		var x, y;
 52554  		x = this;
 52555  		return x.abs.cmp(y.abs);
 52556  	};
 52557  	Int.prototype.CmpAbs = function(y) { return this.$val.CmpAbs(y); };
 52558  	low32 = function(x) {
 52559  		var x;
 52560  		if (x.$length === 0) {
 52561  			return 0;
 52562  		}
 52563  		return (((0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0]) >>> 0));
 52564  	};
 52565  	low64 = function(x) {
 52566  		var v, x, x$1, x$2, x$3;
 52567  		if (x.$length === 0) {
 52568  			return new $Uint64(0, 0);
 52569  		}
 52570  		v = ((x$1 = (0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0]), new $Uint64(0, x$1.constructor === Number ? x$1 : 1)));
 52571  		if (true && x.$length > 1) {
 52572  			return (x$2 = $shiftLeft64(((x$3 = (1 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 1]), new $Uint64(0, x$3.constructor === Number ? x$3 : 1))), 32), new $Uint64(x$2.$high | v.$high, (x$2.$low | v.$low) >>> 0));
 52573  		}
 52574  		return v;
 52575  	};
 52576  	Int.ptr.prototype.Int64 = function() {
 52577  		var v, x, x$1;
 52578  		x = this;
 52579  		v = ((x$1 = low64(x.abs), new $Int64(x$1.$high, x$1.$low)));
 52580  		if (x.neg) {
 52581  			v = new $Int64(-v.$high, -v.$low);
 52582  		}
 52583  		return v;
 52584  	};
 52585  	Int.prototype.Int64 = function() { return this.$val.Int64(); };
 52586  	Int.ptr.prototype.Uint64 = function() {
 52587  		var x;
 52588  		x = this;
 52589  		return low64(x.abs);
 52590  	};
 52591  	Int.prototype.Uint64 = function() { return this.$val.Uint64(); };
 52592  	Int.ptr.prototype.IsInt64 = function() {
 52593  		var w, x, x$1, x$2;
 52594  		x = this;
 52595  		if (x.abs.$length <= 2) {
 52596  			w = ((x$1 = low64(x.abs), new $Int64(x$1.$high, x$1.$low)));
 52597  			return (w.$high > 0 || (w.$high === 0 && w.$low >= 0)) || x.neg && (x$2 = new $Int64(-w.$high, -w.$low), (w.$high === x$2.$high && w.$low === x$2.$low));
 52598  		}
 52599  		return false;
 52600  	};
 52601  	Int.prototype.IsInt64 = function() { return this.$val.IsInt64(); };
 52602  	Int.ptr.prototype.IsUint64 = function() {
 52603  		var x;
 52604  		x = this;
 52605  		return !x.neg && x.abs.$length <= 2;
 52606  	};
 52607  	Int.prototype.IsUint64 = function() { return this.$val.IsUint64(); };
 52608  	Int.ptr.prototype.SetString = function(s, base) {
 52609  		var _r$3, base, s, z, $s, $r;
 52610  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$3 = $f._r$3; base = $f.base; s = $f.s; z = $f.z; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 52611  		z = this;
 52612  		_r$3 = z.setFromScanner(strings.NewReader(s), base); /* */ $s = 1; case 1: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 52613  		$s = -1; return _r$3;
 52614  		/* */ } return; } if ($f === undefined) { $f = { $blk: Int.ptr.prototype.SetString }; } $f._r$3 = _r$3; $f.base = base; $f.s = s; $f.z = z; $f.$s = $s; $f.$r = $r; return $f;
 52615  	};
 52616  	Int.prototype.SetString = function(s, base) { return this.$val.SetString(s, base); };
 52617  	Int.ptr.prototype.setFromScanner = function(r, base) {
 52618  		var _r$3, _r$4, _tuple, _tuple$1, base, err, err$1, r, z, $s, $r;
 52619  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$3 = $f._r$3; _r$4 = $f._r$4; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; base = $f.base; err = $f.err; err$1 = $f.err$1; r = $f.r; z = $f.z; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 52620  		z = this;
 52621  		_r$3 = z.scan(r, base); /* */ $s = 1; case 1: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 52622  		_tuple = _r$3;
 52623  		err = _tuple[2];
 52624  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 52625  			$s = -1; return [ptrType$1.nil, false];
 52626  		}
 52627  		_r$4 = r.ReadByte(); /* */ $s = 2; case 2: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 52628  		_tuple$1 = _r$4;
 52629  		err$1 = _tuple$1[1];
 52630  		if (!($interfaceIsEqual(err$1, io.EOF))) {
 52631  			$s = -1; return [ptrType$1.nil, false];
 52632  		}
 52633  		$s = -1; return [z, true];
 52634  		/* */ } return; } if ($f === undefined) { $f = { $blk: Int.ptr.prototype.setFromScanner }; } $f._r$3 = _r$3; $f._r$4 = _r$4; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.base = base; $f.err = err; $f.err$1 = err$1; $f.r = r; $f.z = z; $f.$s = $s; $f.$r = $r; return $f;
 52635  	};
 52636  	Int.prototype.setFromScanner = function(r, base) { return this.$val.setFromScanner(r, base); };
 52637  	Int.ptr.prototype.SetBytes = function(buf) {
 52638  		var buf, z;
 52639  		z = this;
 52640  		z.abs = z.abs.setBytes(buf);
 52641  		z.neg = false;
 52642  		return z;
 52643  	};
 52644  	Int.prototype.SetBytes = function(buf) { return this.$val.SetBytes(buf); };
 52645  	Int.ptr.prototype.Bytes = function() {
 52646  		var buf, x;
 52647  		x = this;
 52648  		buf = $makeSlice(sliceType$1, ($imul(x.abs.$length, 4)));
 52649  		return $subslice(buf, x.abs.bytes(buf));
 52650  	};
 52651  	Int.prototype.Bytes = function() { return this.$val.Bytes(); };
 52652  	Int.ptr.prototype.BitLen = function() {
 52653  		var x;
 52654  		x = this;
 52655  		return x.abs.bitLen();
 52656  	};
 52657  	Int.prototype.BitLen = function() { return this.$val.BitLen(); };
 52658  	Int.ptr.prototype.Exp = function(x, y, m) {
 52659  		var _r$3, m, mWords, x, y, yWords, z, $s, $r;
 52660  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$3 = $f._r$3; m = $f.m; mWords = $f.mWords; x = $f.x; y = $f.y; yWords = $f.yWords; z = $f.z; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 52661  		z = this;
 52662  		yWords = nat.nil;
 52663  		if (!y.neg) {
 52664  			yWords = y.abs;
 52665  		}
 52666  		mWords = nat.nil;
 52667  		if (!(m === ptrType$1.nil)) {
 52668  			mWords = m.abs;
 52669  		}
 52670  		_r$3 = z.abs.expNN(x.abs, yWords, mWords); /* */ $s = 1; case 1: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 52671  		z.abs = _r$3;
 52672  		z.neg = z.abs.$length > 0 && x.neg && yWords.$length > 0 && ((((0 >= yWords.$length ? ($throwRuntimeError("index out of range"), undefined) : yWords.$array[yWords.$offset + 0]) & 1) >>> 0) === 1);
 52673  		if (z.neg && mWords.$length > 0) {
 52674  			z.abs = z.abs.sub(mWords, z.abs);
 52675  			z.neg = false;
 52676  		}
 52677  		$s = -1; return z;
 52678  		/* */ } return; } if ($f === undefined) { $f = { $blk: Int.ptr.prototype.Exp }; } $f._r$3 = _r$3; $f.m = m; $f.mWords = mWords; $f.x = x; $f.y = y; $f.yWords = yWords; $f.z = z; $f.$s = $s; $f.$r = $r; return $f;
 52679  	};
 52680  	Int.prototype.Exp = function(x, y, m) { return this.$val.Exp(x, y, m); };
 52681  	Int.ptr.prototype.GCD = function(x, y, a, b) {
 52682  		var A, B, X, _r$3, _r$4, _r$5, _tmp, _tmp$1, _tmp$2, _tuple, a, b, lastX, q, r, temp, x, y, z, $s, $r;
 52683  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; A = $f.A; B = $f.B; X = $f.X; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tuple = $f._tuple; a = $f.a; b = $f.b; lastX = $f.lastX; q = $f.q; r = $f.r; temp = $f.temp; x = $f.x; y = $f.y; z = $f.z; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 52684  		z = this;
 52685  		if (a.Sign() <= 0 || b.Sign() <= 0) {
 52686  			z.SetInt64(new $Int64(0, 0));
 52687  			if (!(x === ptrType$1.nil)) {
 52688  				x.SetInt64(new $Int64(0, 0));
 52689  			}
 52690  			if (!(y === ptrType$1.nil)) {
 52691  				y.SetInt64(new $Int64(0, 0));
 52692  			}
 52693  			$s = -1; return z;
 52694  		}
 52695  		/* */ if (x === ptrType$1.nil && y === ptrType$1.nil) { $s = 1; continue; }
 52696  		/* */ $s = 2; continue;
 52697  		/* if (x === ptrType$1.nil && y === ptrType$1.nil) { */ case 1:
 52698  			_r$3 = z.lehmerGCD(a, b); /* */ $s = 3; case 3: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 52699  			$s = -1; return _r$3;
 52700  		/* } */ case 2:
 52701  		A = new Int.ptr(false, nat.nil).Set(a);
 52702  		B = new Int.ptr(false, nat.nil).Set(b);
 52703  		X = new Int.ptr(false, nat.nil);
 52704  		lastX = new Int.ptr(false, nat.nil).SetInt64(new $Int64(0, 1));
 52705  		q = new Int.ptr(false, nat.nil);
 52706  		temp = new Int.ptr(false, nat.nil);
 52707  		r = new Int.ptr(false, nat.nil);
 52708  		/* while (true) { */ case 4:
 52709  			/* if (!(B.abs.$length > 0)) { break; } */ if(!(B.abs.$length > 0)) { $s = 5; continue; }
 52710  			_r$4 = q.QuoRem(A, B, r); /* */ $s = 6; case 6: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 52711  			_tuple = _r$4;
 52712  			q = _tuple[0];
 52713  			r = _tuple[1];
 52714  			_tmp = B;
 52715  			_tmp$1 = r;
 52716  			_tmp$2 = A;
 52717  			A = _tmp;
 52718  			B = _tmp$1;
 52719  			r = _tmp$2;
 52720  			temp.Set(X);
 52721  			X.Mul(X, q);
 52722  			X.Sub(lastX, X);
 52723  			lastX.Set(temp);
 52724  		/* } */ $s = 4; continue; case 5:
 52725  		if (!(x === ptrType$1.nil)) {
 52726  			Int.copy(x, lastX);
 52727  		}
 52728  		/* */ if (!(y === ptrType$1.nil)) { $s = 7; continue; }
 52729  		/* */ $s = 8; continue;
 52730  		/* if (!(y === ptrType$1.nil)) { */ case 7:
 52731  			y.Mul(a, lastX);
 52732  			y.Sub(A, y);
 52733  			_r$5 = y.Div(y, b); /* */ $s = 9; case 9: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
 52734  			_r$5;
 52735  		/* } */ case 8:
 52736  		Int.copy(z, A);
 52737  		$s = -1; return z;
 52738  		/* */ } return; } if ($f === undefined) { $f = { $blk: Int.ptr.prototype.GCD }; } $f.A = A; $f.B = B; $f.X = X; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tuple = _tuple; $f.a = a; $f.b = b; $f.lastX = lastX; $f.q = q; $f.r = r; $f.temp = temp; $f.x = x; $f.y = y; $f.z = z; $f.$s = $s; $f.$r = $r; return $f;
 52739  	};
 52740  	Int.prototype.GCD = function(x, y, a, b) { return this.$val.GCD(x, y, a, b); };
 52741  	Int.ptr.prototype.lehmerGCD = function(a, b) {
 52742  		var A, B, _q, _r$3, _r$4, _r$5, _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$14, _tmp$15, _tmp$16, _tmp$17, _tmp$18, _tmp$19, _tmp$2, _tmp$20, _tmp$21, _tmp$22, _tmp$23, _tmp$24, _tmp$25, _tmp$26, _tmp$27, _tmp$28, _tmp$29, _tmp$3, _tmp$30, _tmp$31, _tmp$32, _tmp$33, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, a, a1, a1$1, a2, a2$1, b, even, h, m, n, q, r, s, t, u0, u1, u2, v0, v1, v2, w, x, x$1, x$10, x$11, x$12, x$13, x$14, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9, y, y$1, y$2, y$3, y$4, z, $s, $r;
 52743  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; A = $f.A; B = $f.B; _q = $f._q; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$10 = $f._tmp$10; _tmp$11 = $f._tmp$11; _tmp$12 = $f._tmp$12; _tmp$13 = $f._tmp$13; _tmp$14 = $f._tmp$14; _tmp$15 = $f._tmp$15; _tmp$16 = $f._tmp$16; _tmp$17 = $f._tmp$17; _tmp$18 = $f._tmp$18; _tmp$19 = $f._tmp$19; _tmp$2 = $f._tmp$2; _tmp$20 = $f._tmp$20; _tmp$21 = $f._tmp$21; _tmp$22 = $f._tmp$22; _tmp$23 = $f._tmp$23; _tmp$24 = $f._tmp$24; _tmp$25 = $f._tmp$25; _tmp$26 = $f._tmp$26; _tmp$27 = $f._tmp$27; _tmp$28 = $f._tmp$28; _tmp$29 = $f._tmp$29; _tmp$3 = $f._tmp$3; _tmp$30 = $f._tmp$30; _tmp$31 = $f._tmp$31; _tmp$32 = $f._tmp$32; _tmp$33 = $f._tmp$33; _tmp$4 = $f._tmp$4; _tmp$5 = $f._tmp$5; _tmp$6 = $f._tmp$6; _tmp$7 = $f._tmp$7; _tmp$8 = $f._tmp$8; _tmp$9 = $f._tmp$9; a = $f.a; a1 = $f.a1; a1$1 = $f.a1$1; a2 = $f.a2; a2$1 = $f.a2$1; b = $f.b; even = $f.even; h = $f.h; m = $f.m; n = $f.n; q = $f.q; r = $f.r; s = $f.s; t = $f.t; u0 = $f.u0; u1 = $f.u1; u2 = $f.u2; v0 = $f.v0; v1 = $f.v1; v2 = $f.v2; w = $f.w; x = $f.x; x$1 = $f.x$1; x$10 = $f.x$10; x$11 = $f.x$11; x$12 = $f.x$12; x$13 = $f.x$13; x$14 = $f.x$14; x$2 = $f.x$2; x$3 = $f.x$3; x$4 = $f.x$4; x$5 = $f.x$5; x$6 = $f.x$6; x$7 = $f.x$7; x$8 = $f.x$8; x$9 = $f.x$9; y = $f.y; y$1 = $f.y$1; y$2 = $f.y$2; y$3 = $f.y$3; y$4 = $f.y$4; z = $f.z; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 52744  		z = this;
 52745  		if (a.abs.cmp(b.abs) < 0) {
 52746  			_tmp = b;
 52747  			_tmp$1 = a;
 52748  			a = _tmp;
 52749  			b = _tmp$1;
 52750  		}
 52751  		B = new Int.ptr(false, nat.nil).Set(b);
 52752  		A = z.Set(a);
 52753  		t = new Int.ptr(false, nat.nil);
 52754  		r = new Int.ptr(false, nat.nil);
 52755  		s = new Int.ptr(false, nat.nil);
 52756  		w = new Int.ptr(false, nat.nil);
 52757  		/* while (true) { */ case 1:
 52758  			/* if (!(B.abs.$length > 1)) { break; } */ if(!(B.abs.$length > 1)) { $s = 2; continue; }
 52759  			_tmp$2 = 0;
 52760  			_tmp$3 = 0;
 52761  			_tmp$4 = 0;
 52762  			_tmp$5 = 0;
 52763  			_tmp$6 = 0;
 52764  			_tmp$7 = 0;
 52765  			_tmp$8 = 0;
 52766  			_tmp$9 = 0;
 52767  			a1 = _tmp$2;
 52768  			a2 = _tmp$3;
 52769  			u0 = _tmp$4;
 52770  			u1 = _tmp$5;
 52771  			u2 = _tmp$6;
 52772  			v0 = _tmp$7;
 52773  			v1 = _tmp$8;
 52774  			v2 = _tmp$9;
 52775  			m = B.abs.$length;
 52776  			n = A.abs.$length;
 52777  			h = nlz((x = A.abs, x$1 = n - 1 >> 0, ((x$1 < 0 || x$1 >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + x$1])));
 52778  			a1 = ((((y = h, y < 32 ? ((x$2 = A.abs, x$3 = n - 1 >> 0, ((x$3 < 0 || x$3 >= x$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + x$3])) << y) : 0) >>> 0)) | (((y$1 = ((32 - h >>> 0)), y$1 < 32 ? ((x$4 = A.abs, x$5 = n - 2 >> 0, ((x$5 < 0 || x$5 >= x$4.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$4.$array[x$4.$offset + x$5])) >>> y$1) : 0) >>> 0))) >>> 0;
 52779  			if ((n === m)) {
 52780  				a2 = ((((y$2 = h, y$2 < 32 ? ((x$6 = B.abs, x$7 = n - 1 >> 0, ((x$7 < 0 || x$7 >= x$6.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$6.$array[x$6.$offset + x$7])) << y$2) : 0) >>> 0)) | (((y$3 = ((32 - h >>> 0)), y$3 < 32 ? ((x$8 = B.abs, x$9 = n - 2 >> 0, ((x$9 < 0 || x$9 >= x$8.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$8.$array[x$8.$offset + x$9])) >>> y$3) : 0) >>> 0))) >>> 0;
 52781  			} else if ((n === (m + 1 >> 0))) {
 52782  				a2 = ((y$4 = ((32 - h >>> 0)), y$4 < 32 ? ((x$10 = B.abs, x$11 = n - 2 >> 0, ((x$11 < 0 || x$11 >= x$10.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$10.$array[x$10.$offset + x$11])) >>> y$4) : 0) >>> 0);
 52783  			} else {
 52784  				a2 = 0;
 52785  			}
 52786  			even = false;
 52787  			_tmp$10 = 0;
 52788  			_tmp$11 = 1;
 52789  			_tmp$12 = 0;
 52790  			u0 = _tmp$10;
 52791  			u1 = _tmp$11;
 52792  			u2 = _tmp$12;
 52793  			_tmp$13 = 0;
 52794  			_tmp$14 = 0;
 52795  			_tmp$15 = 1;
 52796  			v0 = _tmp$13;
 52797  			v1 = _tmp$14;
 52798  			v2 = _tmp$15;
 52799  			while (true) {
 52800  				if (!(a2 >= v2 && (a1 - a2 >>> 0) >= (v1 + v2 >>> 0))) { break; }
 52801  				q = (_q = a1 / a2, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >>> 0 : $throwRuntimeError("integer divide by zero"));
 52802  				_tmp$16 = a2;
 52803  				_tmp$17 = a1 - ($imul(q, a2) >>> 0) >>> 0;
 52804  				a1 = _tmp$16;
 52805  				a2 = _tmp$17;
 52806  				_tmp$18 = u1;
 52807  				_tmp$19 = u2;
 52808  				_tmp$20 = u1 + ($imul(q, u2) >>> 0) >>> 0;
 52809  				u0 = _tmp$18;
 52810  				u1 = _tmp$19;
 52811  				u2 = _tmp$20;
 52812  				_tmp$21 = v1;
 52813  				_tmp$22 = v2;
 52814  				_tmp$23 = v1 + ($imul(q, v2) >>> 0) >>> 0;
 52815  				v0 = _tmp$21;
 52816  				v1 = _tmp$22;
 52817  				v2 = _tmp$23;
 52818  				even = !even;
 52819  			}
 52820  			/* */ if (!((v0 === 0))) { $s = 3; continue; }
 52821  			/* */ $s = 4; continue;
 52822  			/* if (!((v0 === 0))) { */ case 3:
 52823  				t.abs = t.abs.setWord(u0);
 52824  				s.abs = s.abs.setWord(v0);
 52825  				t.neg = !even;
 52826  				s.neg = even;
 52827  				t.Mul(A, t);
 52828  				s.Mul(B, s);
 52829  				r.abs = r.abs.setWord(u1);
 52830  				w.abs = w.abs.setWord(v1);
 52831  				r.neg = even;
 52832  				w.neg = !even;
 52833  				r.Mul(A, r);
 52834  				w.Mul(B, w);
 52835  				A.Add(t, s);
 52836  				B.Add(r, w);
 52837  				$s = 5; continue;
 52838  			/* } else { */ case 4:
 52839  				_r$3 = t.Rem(A, B); /* */ $s = 6; case 6: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 52840  				_r$3;
 52841  				_tmp$24 = B;
 52842  				_tmp$25 = t;
 52843  				_tmp$26 = A;
 52844  				A = _tmp$24;
 52845  				B = _tmp$25;
 52846  				t = _tmp$26;
 52847  			/* } */ case 5:
 52848  		/* } */ $s = 1; continue; case 2:
 52849  		/* */ if (B.abs.$length > 0) { $s = 7; continue; }
 52850  		/* */ $s = 8; continue;
 52851  		/* if (B.abs.$length > 0) { */ case 7:
 52852  			/* */ if (A.abs.$length > 1) { $s = 9; continue; }
 52853  			/* */ $s = 10; continue;
 52854  			/* if (A.abs.$length > 1) { */ case 9:
 52855  				_r$4 = t.Rem(A, B); /* */ $s = 11; case 11: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 52856  				_r$4;
 52857  				_tmp$27 = B;
 52858  				_tmp$28 = t;
 52859  				_tmp$29 = A;
 52860  				A = _tmp$27;
 52861  				B = _tmp$28;
 52862  				t = _tmp$29;
 52863  			/* } */ case 10:
 52864  			if (B.abs.$length > 0) {
 52865  				_tmp$30 = (x$12 = A.abs, (0 >= x$12.$length ? ($throwRuntimeError("index out of range"), undefined) : x$12.$array[x$12.$offset + 0]));
 52866  				_tmp$31 = (x$13 = B.abs, (0 >= x$13.$length ? ($throwRuntimeError("index out of range"), undefined) : x$13.$array[x$13.$offset + 0]));
 52867  				a1$1 = _tmp$30;
 52868  				a2$1 = _tmp$31;
 52869  				while (true) {
 52870  					if (!(!((a2$1 === 0)))) { break; }
 52871  					_tmp$32 = a2$1;
 52872  					_tmp$33 = (_r$5 = a1$1 % a2$1, _r$5 === _r$5 ? _r$5 : $throwRuntimeError("integer divide by zero"));
 52873  					a1$1 = _tmp$32;
 52874  					a2$1 = _tmp$33;
 52875  				}
 52876  				(x$14 = A.abs, (0 >= x$14.$length ? ($throwRuntimeError("index out of range"), undefined) : x$14.$array[x$14.$offset + 0] = a1$1));
 52877  			}
 52878  		/* } */ case 8:
 52879  		Int.copy(z, A);
 52880  		$s = -1; return z;
 52881  		/* */ } return; } if ($f === undefined) { $f = { $blk: Int.ptr.prototype.lehmerGCD }; } $f.A = A; $f.B = B; $f._q = _q; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$10 = _tmp$10; $f._tmp$11 = _tmp$11; $f._tmp$12 = _tmp$12; $f._tmp$13 = _tmp$13; $f._tmp$14 = _tmp$14; $f._tmp$15 = _tmp$15; $f._tmp$16 = _tmp$16; $f._tmp$17 = _tmp$17; $f._tmp$18 = _tmp$18; $f._tmp$19 = _tmp$19; $f._tmp$2 = _tmp$2; $f._tmp$20 = _tmp$20; $f._tmp$21 = _tmp$21; $f._tmp$22 = _tmp$22; $f._tmp$23 = _tmp$23; $f._tmp$24 = _tmp$24; $f._tmp$25 = _tmp$25; $f._tmp$26 = _tmp$26; $f._tmp$27 = _tmp$27; $f._tmp$28 = _tmp$28; $f._tmp$29 = _tmp$29; $f._tmp$3 = _tmp$3; $f._tmp$30 = _tmp$30; $f._tmp$31 = _tmp$31; $f._tmp$32 = _tmp$32; $f._tmp$33 = _tmp$33; $f._tmp$4 = _tmp$4; $f._tmp$5 = _tmp$5; $f._tmp$6 = _tmp$6; $f._tmp$7 = _tmp$7; $f._tmp$8 = _tmp$8; $f._tmp$9 = _tmp$9; $f.a = a; $f.a1 = a1; $f.a1$1 = a1$1; $f.a2 = a2; $f.a2$1 = a2$1; $f.b = b; $f.even = even; $f.h = h; $f.m = m; $f.n = n; $f.q = q; $f.r = r; $f.s = s; $f.t = t; $f.u0 = u0; $f.u1 = u1; $f.u2 = u2; $f.v0 = v0; $f.v1 = v1; $f.v2 = v2; $f.w = w; $f.x = x; $f.x$1 = x$1; $f.x$10 = x$10; $f.x$11 = x$11; $f.x$12 = x$12; $f.x$13 = x$13; $f.x$14 = x$14; $f.x$2 = x$2; $f.x$3 = x$3; $f.x$4 = x$4; $f.x$5 = x$5; $f.x$6 = x$6; $f.x$7 = x$7; $f.x$8 = x$8; $f.x$9 = x$9; $f.y = y; $f.y$1 = y$1; $f.y$2 = y$2; $f.y$3 = y$3; $f.y$4 = y$4; $f.z = z; $f.$s = $s; $f.$r = $r; return $f;
 52882  	};
 52883  	Int.prototype.lehmerGCD = function(a, b) { return this.$val.lehmerGCD(a, b); };
 52884  	Int.ptr.prototype.Rand = function(rnd, n) {
 52885  		var _r$3, n, rnd, z, $s, $r;
 52886  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$3 = $f._r$3; n = $f.n; rnd = $f.rnd; z = $f.z; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 52887  		z = this;
 52888  		z.neg = false;
 52889  		if (n.neg || (n.abs.$length === 0)) {
 52890  			z.abs = nat.nil;
 52891  			$s = -1; return z;
 52892  		}
 52893  		_r$3 = z.abs.random(rnd, n.abs, n.abs.bitLen()); /* */ $s = 1; case 1: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 52894  		z.abs = _r$3;
 52895  		$s = -1; return z;
 52896  		/* */ } return; } if ($f === undefined) { $f = { $blk: Int.ptr.prototype.Rand }; } $f._r$3 = _r$3; $f.n = n; $f.rnd = rnd; $f.z = z; $f.$s = $s; $f.$r = $r; return $f;
 52897  	};
 52898  	Int.prototype.Rand = function(rnd, n) { return this.$val.Rand(rnd, n); };
 52899  	Int.ptr.prototype.ModInverse = function(g, n) {
 52900  		var _r$3, _r$4, d, g, g2, n, z, $s, $r;
 52901  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$3 = $f._r$3; _r$4 = $f._r$4; d = $f.d; g = $f.g; g2 = $f.g2; n = $f.n; z = $f.z; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 52902  		z = this;
 52903  		/* */ if (g.neg) { $s = 1; continue; }
 52904  		/* */ $s = 2; continue;
 52905  		/* if (g.neg) { */ case 1:
 52906  			g2 = new Int.ptr(false, nat.nil);
 52907  			_r$3 = g2.Mod(g, n); /* */ $s = 3; case 3: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 52908  			g = _r$3;
 52909  		/* } */ case 2:
 52910  		d = new Int.ptr(false, nat.nil);
 52911  		_r$4 = d.GCD(z, ptrType$1.nil, g, n); /* */ $s = 4; case 4: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 52912  		_r$4;
 52913  		if (z.neg) {
 52914  			z.Add(z, n);
 52915  		}
 52916  		$s = -1; return z;
 52917  		/* */ } return; } if ($f === undefined) { $f = { $blk: Int.ptr.prototype.ModInverse }; } $f._r$3 = _r$3; $f._r$4 = _r$4; $f.d = d; $f.g = g; $f.g2 = g2; $f.n = n; $f.z = z; $f.$s = $s; $f.$r = $r; return $f;
 52918  	};
 52919  	Int.prototype.ModInverse = function(g, n) { return this.$val.ModInverse(g, n); };
 52920  	Jacobi = function(x, y) {
 52921  		var _r$3, _r$4, _tmp, _tmp$1, _tmp$2, a, b, bmod8, c, j, s, x, x$1, x$2, x$3, x$4, y, $s, $r;
 52922  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$3 = $f._r$3; _r$4 = $f._r$4; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; a = $f.a; b = $f.b; bmod8 = $f.bmod8; c = $f.c; j = $f.j; s = $f.s; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; x$3 = $f.x$3; x$4 = $f.x$4; y = $f.y; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 52923  		a = [a];
 52924  		b = [b];
 52925  		c = [c];
 52926  		/* */ if ((y.abs.$length === 0) || ((((x$1 = y.abs, (0 >= x$1.$length ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + 0])) & 1) >>> 0) === 0)) { $s = 1; continue; }
 52927  		/* */ $s = 2; continue;
 52928  		/* if ((y.abs.$length === 0) || ((((x$1 = y.abs, (0 >= x$1.$length ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + 0])) & 1) >>> 0) === 0)) { */ case 1:
 52929  			_r$3 = fmt.Sprintf("big: invalid 2nd argument to Int.Jacobi: need odd integer but got %s", new sliceType([y])); /* */ $s = 3; case 3: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 52930  			$panic(new $String(_r$3));
 52931  		/* } */ case 2:
 52932  		_tmp = new Int.ptr(false, nat.nil);
 52933  		_tmp$1 = new Int.ptr(false, nat.nil);
 52934  		_tmp$2 = new Int.ptr(false, nat.nil);
 52935  		a[0] = $clone(_tmp, Int);
 52936  		b[0] = $clone(_tmp$1, Int);
 52937  		c[0] = $clone(_tmp$2, Int);
 52938  		a[0].Set(x);
 52939  		b[0].Set(y);
 52940  		j = 1;
 52941  		if (b[0].neg) {
 52942  			if (a[0].neg) {
 52943  				j = -1;
 52944  			}
 52945  			b[0].neg = false;
 52946  		}
 52947  		/* while (true) { */ case 4:
 52948  			if (b[0].Cmp(intOne) === 0) {
 52949  				$s = -1; return j;
 52950  			}
 52951  			if (a[0].abs.$length === 0) {
 52952  				$s = -1; return 0;
 52953  			}
 52954  			_r$4 = a[0].Mod(a[0], b[0]); /* */ $s = 6; case 6: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 52955  			_r$4;
 52956  			if (a[0].abs.$length === 0) {
 52957  				$s = -1; return 0;
 52958  			}
 52959  			s = a[0].abs.trailingZeroBits();
 52960  			if (!((((s & 1) >>> 0) === 0))) {
 52961  				bmod8 = ((x$2 = b[0].abs, (0 >= x$2.$length ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + 0])) & 7) >>> 0;
 52962  				if ((bmod8 === 3) || (bmod8 === 5)) {
 52963  					j = -j;
 52964  				}
 52965  			}
 52966  			c[0].Rsh(a[0], s);
 52967  			if (((((x$3 = b[0].abs, (0 >= x$3.$length ? ($throwRuntimeError("index out of range"), undefined) : x$3.$array[x$3.$offset + 0])) & 3) >>> 0) === 3) && ((((x$4 = c[0].abs, (0 >= x$4.$length ? ($throwRuntimeError("index out of range"), undefined) : x$4.$array[x$4.$offset + 0])) & 3) >>> 0) === 3)) {
 52968  				j = -j;
 52969  			}
 52970  			a[0].Set(b[0]);
 52971  			b[0].Set(c[0]);
 52972  		/* } */ $s = 4; continue; case 5:
 52973  		$s = -1; return 0;
 52974  		/* */ } return; } if ($f === undefined) { $f = { $blk: Jacobi }; } $f._r$3 = _r$3; $f._r$4 = _r$4; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f.a = a; $f.b = b; $f.bmod8 = bmod8; $f.c = c; $f.j = j; $f.s = s; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.x$3 = x$3; $f.x$4 = x$4; $f.y = y; $f.$s = $s; $f.$r = $r; return $f;
 52975  	};
 52976  	$pkg.Jacobi = Jacobi;
 52977  	Int.ptr.prototype.modSqrt3Mod4Prime = function(x, p) {
 52978  		var _r$3, e, p, x, z, $s, $r;
 52979  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$3 = $f._r$3; e = $f.e; p = $f.p; x = $f.x; z = $f.z; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 52980  		z = this;
 52981  		e = new Int.ptr(false, nat.nil).Add(p, intOne);
 52982  		e.Rsh(e, 2);
 52983  		_r$3 = z.Exp(x, e, p); /* */ $s = 1; case 1: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 52984  		_r$3;
 52985  		$s = -1; return z;
 52986  		/* */ } return; } if ($f === undefined) { $f = { $blk: Int.ptr.prototype.modSqrt3Mod4Prime }; } $f._r$3 = _r$3; $f.e = e; $f.p = p; $f.x = x; $f.z = z; $f.$s = $s; $f.$r = $r; return $f;
 52987  	};
 52988  	Int.prototype.modSqrt3Mod4Prime = function(x, p) { return this.$val.modSqrt3Mod4Prime(x, p); };
 52989  	Int.ptr.prototype.modSqrtTonelliShanks = function(x, p) {
 52990  		var _r$10, _r$11, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _tmp, _tmp$1, _tmp$2, _tmp$3, b, e, g, m, n, p, r, s, t, x, y, z, $s, $r;
 52991  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$10 = $f._r$10; _r$11 = $f._r$11; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _r$8 = $f._r$8; _r$9 = $f._r$9; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; b = $f.b; e = $f.e; g = $f.g; m = $f.m; n = $f.n; p = $f.p; r = $f.r; s = $f.s; t = $f.t; x = $f.x; y = $f.y; z = $f.z; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 52992  		b = [b];
 52993  		g = [g];
 52994  		n = [n];
 52995  		s = [s];
 52996  		t = [t];
 52997  		y = [y];
 52998  		z = this;
 52999  		s[0] = new Int.ptr(false, nat.nil);
 53000  		s[0].Sub(p, intOne);
 53001  		e = s[0].abs.trailingZeroBits();
 53002  		s[0].Rsh(s[0], e);
 53003  		n[0] = new Int.ptr(false, nat.nil);
 53004  		n[0].SetInt64(new $Int64(0, 2));
 53005  		/* while (true) { */ case 1:
 53006  			_r$3 = Jacobi(n[0], p); /* */ $s = 3; case 3: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 53007  			/* if (!(!((_r$3 === -1)))) { break; } */ if(!(!((_r$3 === -1)))) { $s = 2; continue; }
 53008  			n[0].Add(n[0], intOne);
 53009  		/* } */ $s = 1; continue; case 2:
 53010  		_tmp = new Int.ptr(false, nat.nil);
 53011  		_tmp$1 = new Int.ptr(false, nat.nil);
 53012  		_tmp$2 = new Int.ptr(false, nat.nil);
 53013  		_tmp$3 = new Int.ptr(false, nat.nil);
 53014  		y[0] = $clone(_tmp, Int);
 53015  		b[0] = $clone(_tmp$1, Int);
 53016  		g[0] = $clone(_tmp$2, Int);
 53017  		t[0] = $clone(_tmp$3, Int);
 53018  		y[0].Add(s[0], intOne);
 53019  		y[0].Rsh(y[0], 1);
 53020  		_r$4 = y[0].Exp(x, y[0], p); /* */ $s = 4; case 4: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 53021  		_r$4;
 53022  		_r$5 = b[0].Exp(x, s[0], p); /* */ $s = 5; case 5: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
 53023  		_r$5;
 53024  		_r$6 = g[0].Exp(n[0], s[0], p); /* */ $s = 6; case 6: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
 53025  		_r$6;
 53026  		r = e;
 53027  		/* while (true) { */ case 7:
 53028  			m = 0;
 53029  			t[0].Set(b[0]);
 53030  			/* while (true) { */ case 9:
 53031  				/* if (!(!((t[0].Cmp(intOne) === 0)))) { break; } */ if(!(!((t[0].Cmp(intOne) === 0)))) { $s = 10; continue; }
 53032  				_r$7 = t[0].Mul(t[0], t[0]).Mod(t[0], p); /* */ $s = 11; case 11: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
 53033  				_r$7;
 53034  				m = m + (1) >>> 0;
 53035  			/* } */ $s = 9; continue; case 10:
 53036  			if (m === 0) {
 53037  				$s = -1; return z.Set(y[0]);
 53038  			}
 53039  			_r$8 = t[0].SetInt64(new $Int64(0, 0)).SetBit(t[0], ((((r - m >>> 0) - 1 >>> 0) >> 0)), 1).Exp(g[0], t[0], p); /* */ $s = 12; case 12: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
 53040  			_r$8;
 53041  			_r$9 = g[0].Mul(t[0], t[0]).Mod(g[0], p); /* */ $s = 13; case 13: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 53042  			_r$9;
 53043  			_r$10 = y[0].Mul(y[0], t[0]).Mod(y[0], p); /* */ $s = 14; case 14: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
 53044  			_r$10;
 53045  			_r$11 = b[0].Mul(b[0], g[0]).Mod(b[0], p); /* */ $s = 15; case 15: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; }
 53046  			_r$11;
 53047  			r = m;
 53048  		/* } */ $s = 7; continue; case 8:
 53049  		$s = -1; return ptrType$1.nil;
 53050  		/* */ } return; } if ($f === undefined) { $f = { $blk: Int.ptr.prototype.modSqrtTonelliShanks }; } $f._r$10 = _r$10; $f._r$11 = _r$11; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._r$8 = _r$8; $f._r$9 = _r$9; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f.b = b; $f.e = e; $f.g = g; $f.m = m; $f.n = n; $f.p = p; $f.r = r; $f.s = s; $f.t = t; $f.x = x; $f.y = y; $f.z = z; $f.$s = $s; $f.$r = $r; return $f;
 53051  	};
 53052  	Int.prototype.modSqrtTonelliShanks = function(x, p) { return this.$val.modSqrtTonelliShanks(x, p); };
 53053  	Int.ptr.prototype.ModSqrt = function(x, p) {
 53054  		var _1, _r$3, _r$4, _r$5, _r$6, _r$7, p, x, x$1, z, $s, $r;
 53055  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; p = $f.p; x = $f.x; x$1 = $f.x$1; z = $f.z; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 53056  		z = this;
 53057  			_r$3 = Jacobi(x, p); /* */ $s = 2; case 2: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 53058  			_1 = _r$3;
 53059  			if (_1 === (-1)) {
 53060  				$s = -1; return ptrType$1.nil;
 53061  			} else if (_1 === (0)) {
 53062  				$s = -1; return z.SetInt64(new $Int64(0, 0));
 53063  			} else if (_1 === (1)) {
 53064  				/* break; */ $s = 1; continue;
 53065  			}
 53066  		case 1:
 53067  		/* */ if (x.neg || x.Cmp(p) >= 0) { $s = 3; continue; }
 53068  		/* */ $s = 4; continue;
 53069  		/* if (x.neg || x.Cmp(p) >= 0) { */ case 3:
 53070  			_r$4 = new Int.ptr(false, nat.nil).Mod(x, p); /* */ $s = 5; case 5: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 53071  			x = _r$4;
 53072  		/* } */ case 4:
 53073  		/* */ if (p.abs.$length > 0 && ((_r$5 = (x$1 = p.abs, (0 >= x$1.$length ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + 0])) % 4, _r$5 === _r$5 ? _r$5 : $throwRuntimeError("integer divide by zero")) === 3)) { $s = 6; continue; }
 53074  		/* */ $s = 7; continue;
 53075  		/* if (p.abs.$length > 0 && ((_r$5 = (x$1 = p.abs, (0 >= x$1.$length ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + 0])) % 4, _r$5 === _r$5 ? _r$5 : $throwRuntimeError("integer divide by zero")) === 3)) { */ case 6:
 53076  			_r$6 = z.modSqrt3Mod4Prime(x, p); /* */ $s = 8; case 8: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
 53077  			$s = -1; return _r$6;
 53078  		/* } */ case 7:
 53079  		_r$7 = z.modSqrtTonelliShanks(x, p); /* */ $s = 9; case 9: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
 53080  		$s = -1; return _r$7;
 53081  		/* */ } return; } if ($f === undefined) { $f = { $blk: Int.ptr.prototype.ModSqrt }; } $f._1 = _1; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f.p = p; $f.x = x; $f.x$1 = x$1; $f.z = z; $f.$s = $s; $f.$r = $r; return $f;
 53082  	};
 53083  	Int.prototype.ModSqrt = function(x, p) { return this.$val.ModSqrt(x, p); };
 53084  	Int.ptr.prototype.Lsh = function(x, n) {
 53085  		var n, x, z;
 53086  		z = this;
 53087  		z.abs = z.abs.shl(x.abs, n);
 53088  		z.neg = x.neg;
 53089  		return z;
 53090  	};
 53091  	Int.prototype.Lsh = function(x, n) { return this.$val.Lsh(x, n); };
 53092  	Int.ptr.prototype.Rsh = function(x, n) {
 53093  		var n, t, x, z;
 53094  		z = this;
 53095  		if (x.neg) {
 53096  			t = z.abs.sub(x.abs, natOne);
 53097  			t = t.shr(t, n);
 53098  			z.abs = t.add(t, natOne);
 53099  			z.neg = true;
 53100  			return z;
 53101  		}
 53102  		z.abs = z.abs.shr(x.abs, n);
 53103  		z.neg = false;
 53104  		return z;
 53105  	};
 53106  	Int.prototype.Rsh = function(x, n) { return this.$val.Rsh(x, n); };
 53107  	Int.ptr.prototype.Bit = function(i) {
 53108  		var i, t, x, x$1;
 53109  		x = this;
 53110  		if (i === 0) {
 53111  			if (x.abs.$length > 0) {
 53112  				return (((((x$1 = x.abs, (0 >= x$1.$length ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + 0])) & 1) >>> 0) >>> 0));
 53113  			}
 53114  			return 0;
 53115  		}
 53116  		if (i < 0) {
 53117  			$panic(new $String("negative bit index"));
 53118  		}
 53119  		if (x.neg) {
 53120  			t = (nat.nil).sub(x.abs, natOne);
 53121  			return (t.bit(((i >>> 0))) ^ 1) >>> 0;
 53122  		}
 53123  		return x.abs.bit(((i >>> 0)));
 53124  	};
 53125  	Int.prototype.Bit = function(i) { return this.$val.Bit(i); };
 53126  	Int.ptr.prototype.SetBit = function(x, i, b) {
 53127  		var b, i, t, x, z;
 53128  		z = this;
 53129  		if (i < 0) {
 53130  			$panic(new $String("negative bit index"));
 53131  		}
 53132  		if (x.neg) {
 53133  			t = z.abs.sub(x.abs, natOne);
 53134  			t = t.setBit(t, ((i >>> 0)), (b ^ 1) >>> 0);
 53135  			z.abs = t.add(t, natOne);
 53136  			z.neg = z.abs.$length > 0;
 53137  			return z;
 53138  		}
 53139  		z.abs = z.abs.setBit(x.abs, ((i >>> 0)), b);
 53140  		z.neg = false;
 53141  		return z;
 53142  	};
 53143  	Int.prototype.SetBit = function(x, i, b) { return this.$val.SetBit(x, i, b); };
 53144  	Int.ptr.prototype.And = function(x, y) {
 53145  		var _tmp, _tmp$1, x, x1, y, y1, y1$1, z;
 53146  		z = this;
 53147  		if (x.neg === y.neg) {
 53148  			if (x.neg) {
 53149  				x1 = (nat.nil).sub(x.abs, natOne);
 53150  				y1 = (nat.nil).sub(y.abs, natOne);
 53151  				z.abs = z.abs.add(z.abs.or(x1, y1), natOne);
 53152  				z.neg = true;
 53153  				return z;
 53154  			}
 53155  			z.abs = z.abs.and(x.abs, y.abs);
 53156  			z.neg = false;
 53157  			return z;
 53158  		}
 53159  		if (x.neg) {
 53160  			_tmp = y;
 53161  			_tmp$1 = x;
 53162  			x = _tmp;
 53163  			y = _tmp$1;
 53164  		}
 53165  		y1$1 = (nat.nil).sub(y.abs, natOne);
 53166  		z.abs = z.abs.andNot(x.abs, y1$1);
 53167  		z.neg = false;
 53168  		return z;
 53169  	};
 53170  	Int.prototype.And = function(x, y) { return this.$val.And(x, y); };
 53171  	Int.ptr.prototype.AndNot = function(x, y) {
 53172  		var x, x1, x1$1, y, y1, y1$1, z;
 53173  		z = this;
 53174  		if (x.neg === y.neg) {
 53175  			if (x.neg) {
 53176  				x1 = (nat.nil).sub(x.abs, natOne);
 53177  				y1 = (nat.nil).sub(y.abs, natOne);
 53178  				z.abs = z.abs.andNot(y1, x1);
 53179  				z.neg = false;
 53180  				return z;
 53181  			}
 53182  			z.abs = z.abs.andNot(x.abs, y.abs);
 53183  			z.neg = false;
 53184  			return z;
 53185  		}
 53186  		if (x.neg) {
 53187  			x1$1 = (nat.nil).sub(x.abs, natOne);
 53188  			z.abs = z.abs.add(z.abs.or(x1$1, y.abs), natOne);
 53189  			z.neg = true;
 53190  			return z;
 53191  		}
 53192  		y1$1 = (nat.nil).sub(y.abs, natOne);
 53193  		z.abs = z.abs.and(x.abs, y1$1);
 53194  		z.neg = false;
 53195  		return z;
 53196  	};
 53197  	Int.prototype.AndNot = function(x, y) { return this.$val.AndNot(x, y); };
 53198  	Int.ptr.prototype.Or = function(x, y) {
 53199  		var _tmp, _tmp$1, x, x1, y, y1, y1$1, z;
 53200  		z = this;
 53201  		if (x.neg === y.neg) {
 53202  			if (x.neg) {
 53203  				x1 = (nat.nil).sub(x.abs, natOne);
 53204  				y1 = (nat.nil).sub(y.abs, natOne);
 53205  				z.abs = z.abs.add(z.abs.and(x1, y1), natOne);
 53206  				z.neg = true;
 53207  				return z;
 53208  			}
 53209  			z.abs = z.abs.or(x.abs, y.abs);
 53210  			z.neg = false;
 53211  			return z;
 53212  		}
 53213  		if (x.neg) {
 53214  			_tmp = y;
 53215  			_tmp$1 = x;
 53216  			x = _tmp;
 53217  			y = _tmp$1;
 53218  		}
 53219  		y1$1 = (nat.nil).sub(y.abs, natOne);
 53220  		z.abs = z.abs.add(z.abs.andNot(y1$1, x.abs), natOne);
 53221  		z.neg = true;
 53222  		return z;
 53223  	};
 53224  	Int.prototype.Or = function(x, y) { return this.$val.Or(x, y); };
 53225  	Int.ptr.prototype.Xor = function(x, y) {
 53226  		var _tmp, _tmp$1, x, x1, y, y1, y1$1, z;
 53227  		z = this;
 53228  		if (x.neg === y.neg) {
 53229  			if (x.neg) {
 53230  				x1 = (nat.nil).sub(x.abs, natOne);
 53231  				y1 = (nat.nil).sub(y.abs, natOne);
 53232  				z.abs = z.abs.xor(x1, y1);
 53233  				z.neg = false;
 53234  				return z;
 53235  			}
 53236  			z.abs = z.abs.xor(x.abs, y.abs);
 53237  			z.neg = false;
 53238  			return z;
 53239  		}
 53240  		if (x.neg) {
 53241  			_tmp = y;
 53242  			_tmp$1 = x;
 53243  			x = _tmp;
 53244  			y = _tmp$1;
 53245  		}
 53246  		y1$1 = (nat.nil).sub(y.abs, natOne);
 53247  		z.abs = z.abs.add(z.abs.xor(x.abs, y1$1), natOne);
 53248  		z.neg = true;
 53249  		return z;
 53250  	};
 53251  	Int.prototype.Xor = function(x, y) { return this.$val.Xor(x, y); };
 53252  	Int.ptr.prototype.Not = function(x) {
 53253  		var x, z;
 53254  		z = this;
 53255  		if (x.neg) {
 53256  			z.abs = z.abs.sub(x.abs, natOne);
 53257  			z.neg = false;
 53258  			return z;
 53259  		}
 53260  		z.abs = z.abs.add(x.abs, natOne);
 53261  		z.neg = true;
 53262  		return z;
 53263  	};
 53264  	Int.prototype.Not = function(x) { return this.$val.Not(x); };
 53265  	Int.ptr.prototype.Sqrt = function(x) {
 53266  		var _r$3, x, z, $s, $r;
 53267  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$3 = $f._r$3; x = $f.x; z = $f.z; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 53268  		z = this;
 53269  		if (x.neg) {
 53270  			$panic(new $String("square root of negative number"));
 53271  		}
 53272  		z.neg = false;
 53273  		_r$3 = z.abs.sqrt(x.abs); /* */ $s = 1; case 1: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 53274  		z.abs = _r$3;
 53275  		$s = -1; return z;
 53276  		/* */ } return; } if ($f === undefined) { $f = { $blk: Int.ptr.prototype.Sqrt }; } $f._r$3 = _r$3; $f.x = x; $f.z = z; $f.$s = $s; $f.$r = $r; return $f;
 53277  	};
 53278  	Int.prototype.Sqrt = function(x) { return this.$val.Sqrt(x); };
 53279  	Int.ptr.prototype.Text = function(base) {
 53280  		var _r$3, base, x, $s, $r;
 53281  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$3 = $f._r$3; base = $f.base; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 53282  		x = this;
 53283  		if (x === ptrType$1.nil) {
 53284  			$s = -1; return "<nil>";
 53285  		}
 53286  		_r$3 = x.abs.itoa(x.neg, base); /* */ $s = 1; case 1: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 53287  		$s = -1; return ($bytesToString(_r$3));
 53288  		/* */ } return; } if ($f === undefined) { $f = { $blk: Int.ptr.prototype.Text }; } $f._r$3 = _r$3; $f.base = base; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
 53289  	};
 53290  	Int.prototype.Text = function(base) { return this.$val.Text(base); };
 53291  	Int.ptr.prototype.Append = function(buf, base) {
 53292  		var _arg, _arg$1, _r$3, base, buf, x, $s, $r;
 53293  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _arg = $f._arg; _arg$1 = $f._arg$1; _r$3 = $f._r$3; base = $f.base; buf = $f.buf; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 53294  		x = this;
 53295  		if (x === ptrType$1.nil) {
 53296  			$s = -1; return $appendSlice(buf, "<nil>");
 53297  		}
 53298  		_arg = buf;
 53299  		_r$3 = x.abs.itoa(x.neg, base); /* */ $s = 1; case 1: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 53300  		_arg$1 = _r$3;
 53301  		$s = -1; return $appendSlice(_arg, _arg$1);
 53302  		/* */ } return; } if ($f === undefined) { $f = { $blk: Int.ptr.prototype.Append }; } $f._arg = _arg; $f._arg$1 = _arg$1; $f._r$3 = _r$3; $f.base = base; $f.buf = buf; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
 53303  	};
 53304  	Int.prototype.Append = function(buf, base) { return this.$val.Append(buf, base); };
 53305  	Int.ptr.prototype.String = function() {
 53306  		var _r$3, x, $s, $r;
 53307  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$3 = $f._r$3; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 53308  		x = this;
 53309  		_r$3 = x.Text(10); /* */ $s = 1; case 1: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 53310  		$s = -1; return _r$3;
 53311  		/* */ } return; } if ($f === undefined) { $f = { $blk: Int.ptr.prototype.String }; } $f._r$3 = _r$3; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
 53312  	};
 53313  	Int.prototype.String = function() { return this.$val.String(); };
 53314  	writeMultiple = function(s, text, count) {
 53315  		var _r$3, b, count, s, text, $s, $r;
 53316  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$3 = $f._r$3; b = $f.b; count = $f.count; s = $f.s; text = $f.text; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 53317  		/* */ if (text.length > 0) { $s = 1; continue; }
 53318  		/* */ $s = 2; continue;
 53319  		/* if (text.length > 0) { */ case 1:
 53320  			b = (new sliceType$1($stringToBytes(text)));
 53321  			/* while (true) { */ case 3:
 53322  				/* if (!(count > 0)) { break; } */ if(!(count > 0)) { $s = 4; continue; }
 53323  				_r$3 = s.Write(b); /* */ $s = 5; case 5: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 53324  				_r$3;
 53325  				count = count - (1) >> 0;
 53326  			/* } */ $s = 3; continue; case 4:
 53327  		/* } */ case 2:
 53328  		$s = -1; return;
 53329  		/* */ } return; } if ($f === undefined) { $f = { $blk: writeMultiple }; } $f._r$3 = _r$3; $f.b = b; $f.count = count; $f.s = s; $f.text = text; $f.$s = $s; $f.$r = $r; return $f;
 53330  	};
 53331  	Int.ptr.prototype.Format = function(s, ch) {
 53332  		var _1, _2, _arg, _arg$1, _arg$2, _i, _r$10, _r$11, _r$12, _r$13, _r$14, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, _tuple, _tuple$1, base, ch, d, d$1, digits, i, left, length, precision, precisionSet, prefix, right, s, sign, width, widthSet, x, zeros, $s, $r;
 53333  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _2 = $f._2; _arg = $f._arg; _arg$1 = $f._arg$1; _arg$2 = $f._arg$2; _i = $f._i; _r$10 = $f._r$10; _r$11 = $f._r$11; _r$12 = $f._r$12; _r$13 = $f._r$13; _r$14 = $f._r$14; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _r$8 = $f._r$8; _r$9 = $f._r$9; _ref = $f._ref; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; base = $f.base; ch = $f.ch; d = $f.d; d$1 = $f.d$1; digits = $f.digits; i = $f.i; left = $f.left; length = $f.length; precision = $f.precision; precisionSet = $f.precisionSet; prefix = $f.prefix; right = $f.right; s = $f.s; sign = $f.sign; width = $f.width; widthSet = $f.widthSet; x = $f.x; zeros = $f.zeros; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 53334  		x = this;
 53335  		base = 0;
 53336  			_1 = ch;
 53337  			/* */ if (_1 === (98)) { $s = 2; continue; }
 53338  			/* */ if (_1 === (111)) { $s = 3; continue; }
 53339  			/* */ if ((_1 === (100)) || (_1 === (115)) || (_1 === (118))) { $s = 4; continue; }
 53340  			/* */ if ((_1 === (120)) || (_1 === (88))) { $s = 5; continue; }
 53341  			/* */ $s = 6; continue;
 53342  			/* if (_1 === (98)) { */ case 2:
 53343  				base = 2;
 53344  				$s = 7; continue;
 53345  			/* } else if (_1 === (111)) { */ case 3:
 53346  				base = 8;
 53347  				$s = 7; continue;
 53348  			/* } else if ((_1 === (100)) || (_1 === (115)) || (_1 === (118))) { */ case 4:
 53349  				base = 10;
 53350  				$s = 7; continue;
 53351  			/* } else if ((_1 === (120)) || (_1 === (88))) { */ case 5:
 53352  				base = 16;
 53353  				$s = 7; continue;
 53354  			/* } else { */ case 6:
 53355  				_arg = s;
 53356  				_arg$1 = new $Int32(ch);
 53357  				_r$3 = x.String(); /* */ $s = 8; case 8: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 53358  				_arg$2 = new $String(_r$3);
 53359  				_r$4 = fmt.Fprintf(_arg, "%%!%c(big.Int=%s)", new sliceType([_arg$1, _arg$2])); /* */ $s = 9; case 9: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 53360  				_r$4;
 53361  				$s = -1; return;
 53362  			/* } */ case 7:
 53363  		case 1:
 53364  		/* */ if (x === ptrType$1.nil) { $s = 10; continue; }
 53365  		/* */ $s = 11; continue;
 53366  		/* if (x === ptrType$1.nil) { */ case 10:
 53367  			_r$5 = fmt.Fprint(s, new sliceType([new $String("<nil>")])); /* */ $s = 12; case 12: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
 53368  			_r$5;
 53369  			$s = -1; return;
 53370  		/* } */ case 11:
 53371  		sign = "";
 53372  			/* */ if (x.neg) { $s = 14; continue; }
 53373  			_r$6 = s.Flag(43); /* */ $s = 18; case 18: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
 53374  			/* */ if (_r$6) { $s = 15; continue; }
 53375  			_r$7 = s.Flag(32); /* */ $s = 19; case 19: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
 53376  			/* */ if (_r$7) { $s = 16; continue; }
 53377  			/* */ $s = 17; continue;
 53378  			/* if (x.neg) { */ case 14:
 53379  				sign = "-";
 53380  				$s = 17; continue;
 53381  			/* } else if (_r$6) { */ case 15:
 53382  				sign = "+";
 53383  				$s = 17; continue;
 53384  			/* } else if (_r$7) { */ case 16:
 53385  				sign = " ";
 53386  			/* } */ case 17:
 53387  		case 13:
 53388  		prefix = "";
 53389  		_r$8 = s.Flag(35); /* */ $s = 22; case 22: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
 53390  		/* */ if (_r$8) { $s = 20; continue; }
 53391  		/* */ $s = 21; continue;
 53392  		/* if (_r$8) { */ case 20:
 53393  			_2 = ch;
 53394  			if (_2 === (111)) {
 53395  				prefix = "0";
 53396  			} else if (_2 === (120)) {
 53397  				prefix = "0x";
 53398  			} else if (_2 === (88)) {
 53399  				prefix = "0X";
 53400  			}
 53401  		/* } */ case 21:
 53402  		_r$9 = x.abs.utoa(base); /* */ $s = 23; case 23: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 53403  		digits = _r$9;
 53404  		if (ch === 88) {
 53405  			_ref = digits;
 53406  			_i = 0;
 53407  			while (true) {
 53408  				if (!(_i < _ref.$length)) { break; }
 53409  				i = _i;
 53410  				d = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
 53411  				if (97 <= d && d <= 122) {
 53412  					((i < 0 || i >= digits.$length) ? ($throwRuntimeError("index out of range"), undefined) : digits.$array[digits.$offset + i] = (65 + ((d - 97 << 24 >>> 24)) << 24 >>> 24));
 53413  				}
 53414  				_i++;
 53415  			}
 53416  		}
 53417  		left = 0;
 53418  		zeros = 0;
 53419  		right = 0;
 53420  		_r$10 = s.Precision(); /* */ $s = 24; case 24: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
 53421  		_tuple = _r$10;
 53422  		precision = _tuple[0];
 53423  		precisionSet = _tuple[1];
 53424  		if (precisionSet) {
 53425  			if (digits.$length < precision) {
 53426  				zeros = precision - digits.$length >> 0;
 53427  			} else if ((digits.$length === 1) && ((0 >= digits.$length ? ($throwRuntimeError("index out of range"), undefined) : digits.$array[digits.$offset + 0]) === 48) && (precision === 0)) {
 53428  				$s = -1; return;
 53429  			}
 53430  		}
 53431  		length = ((sign.length + prefix.length >> 0) + zeros >> 0) + digits.$length >> 0;
 53432  		_r$11 = s.Width(); /* */ $s = 25; case 25: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; }
 53433  		_tuple$1 = _r$11;
 53434  		width = _tuple$1[0];
 53435  		widthSet = _tuple$1[1];
 53436  		/* */ if (widthSet && length < width) { $s = 26; continue; }
 53437  		/* */ $s = 27; continue;
 53438  		/* if (widthSet && length < width) { */ case 26:
 53439  				d$1 = width - length >> 0;
 53440  				_r$12 = s.Flag(45); /* */ $s = 33; case 33: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; }
 53441  				/* */ if (_r$12) { $s = 29; continue; }
 53442  				_r$13 = s.Flag(48); /* */ $s = 34; case 34: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; }
 53443  				/* */ if (_r$13 && !precisionSet) { $s = 30; continue; }
 53444  				/* */ $s = 31; continue;
 53445  				/* if (_r$12) { */ case 29:
 53446  					right = d$1;
 53447  					$s = 32; continue;
 53448  				/* } else if (_r$13 && !precisionSet) { */ case 30:
 53449  					zeros = d$1;
 53450  					$s = 32; continue;
 53451  				/* } else { */ case 31:
 53452  					left = d$1;
 53453  				/* } */ case 32:
 53454  			case 28:
 53455  		/* } */ case 27:
 53456  		$r = writeMultiple(s, " ", left); /* */ $s = 35; case 35: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 53457  		$r = writeMultiple(s, sign, 1); /* */ $s = 36; case 36: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 53458  		$r = writeMultiple(s, prefix, 1); /* */ $s = 37; case 37: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 53459  		$r = writeMultiple(s, "0", zeros); /* */ $s = 38; case 38: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 53460  		_r$14 = s.Write(digits); /* */ $s = 39; case 39: if($c) { $c = false; _r$14 = _r$14.$blk(); } if (_r$14 && _r$14.$blk !== undefined) { break s; }
 53461  		_r$14;
 53462  		$r = writeMultiple(s, " ", right); /* */ $s = 40; case 40: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 53463  		$s = -1; return;
 53464  		/* */ } return; } if ($f === undefined) { $f = { $blk: Int.ptr.prototype.Format }; } $f._1 = _1; $f._2 = _2; $f._arg = _arg; $f._arg$1 = _arg$1; $f._arg$2 = _arg$2; $f._i = _i; $f._r$10 = _r$10; $f._r$11 = _r$11; $f._r$12 = _r$12; $f._r$13 = _r$13; $f._r$14 = _r$14; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._r$8 = _r$8; $f._r$9 = _r$9; $f._ref = _ref; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.base = base; $f.ch = ch; $f.d = d; $f.d$1 = d$1; $f.digits = digits; $f.i = i; $f.left = left; $f.length = length; $f.precision = precision; $f.precisionSet = precisionSet; $f.prefix = prefix; $f.right = right; $f.s = s; $f.sign = sign; $f.width = width; $f.widthSet = widthSet; $f.x = x; $f.zeros = zeros; $f.$s = $s; $f.$r = $r; return $f;
 53465  	};
 53466  	Int.prototype.Format = function(s, ch) { return this.$val.Format(s, ch); };
 53467  	Int.ptr.prototype.scan = function(r, base) {
 53468  		var _r$3, _r$4, _tuple, _tuple$1, base, err, neg, r, z, $s, $r;
 53469  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$3 = $f._r$3; _r$4 = $f._r$4; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; base = $f.base; err = $f.err; neg = $f.neg; r = $f.r; z = $f.z; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 53470  		z = this;
 53471  		_r$3 = scanSign(r); /* */ $s = 1; case 1: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 53472  		_tuple = _r$3;
 53473  		neg = _tuple[0];
 53474  		err = _tuple[1];
 53475  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 53476  			$s = -1; return [ptrType$1.nil, 0, err];
 53477  		}
 53478  		_r$4 = z.abs.scan(r, base, false); /* */ $s = 2; case 2: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 53479  		_tuple$1 = _r$4;
 53480  		z.abs = _tuple$1[0];
 53481  		base = _tuple$1[1];
 53482  		err = _tuple$1[3];
 53483  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 53484  			$s = -1; return [ptrType$1.nil, base, err];
 53485  		}
 53486  		z.neg = z.abs.$length > 0 && neg;
 53487  		$s = -1; return [z, base, $ifaceNil];
 53488  		/* */ } return; } if ($f === undefined) { $f = { $blk: Int.ptr.prototype.scan }; } $f._r$3 = _r$3; $f._r$4 = _r$4; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.base = base; $f.err = err; $f.neg = neg; $f.r = r; $f.z = z; $f.$s = $s; $f.$r = $r; return $f;
 53489  	};
 53490  	Int.prototype.scan = function(r, base) { return this.$val.scan(r, base); };
 53491  	scanSign = function(r) {
 53492  		var _1, _r$3, _r$4, _tmp, _tmp$1, _tuple, ch, err, neg, r, $s, $r;
 53493  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _r$3 = $f._r$3; _r$4 = $f._r$4; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tuple = $f._tuple; ch = $f.ch; err = $f.err; neg = $f.neg; r = $f.r; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 53494  		neg = false;
 53495  		err = $ifaceNil;
 53496  		ch = 0;
 53497  		_r$3 = r.ReadByte(); /* */ $s = 1; case 1: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 53498  		_tuple = _r$3;
 53499  		ch = _tuple[0];
 53500  		err = _tuple[1];
 53501  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 53502  			_tmp = false;
 53503  			_tmp$1 = err;
 53504  			neg = _tmp;
 53505  			err = _tmp$1;
 53506  			$s = -1; return [neg, err];
 53507  		}
 53508  			_1 = ch;
 53509  			/* */ if (_1 === (45)) { $s = 3; continue; }
 53510  			/* */ if (_1 === (43)) { $s = 4; continue; }
 53511  			/* */ $s = 5; continue;
 53512  			/* if (_1 === (45)) { */ case 3:
 53513  				neg = true;
 53514  				$s = 6; continue;
 53515  			/* } else if (_1 === (43)) { */ case 4:
 53516  				$s = 6; continue;
 53517  			/* } else { */ case 5:
 53518  				_r$4 = r.UnreadByte(); /* */ $s = 7; case 7: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 53519  				_r$4;
 53520  			/* } */ case 6:
 53521  		case 2:
 53522  		$s = -1; return [neg, err];
 53523  		/* */ } return; } if ($f === undefined) { $f = { $blk: scanSign }; } $f._1 = _1; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tuple = _tuple; $f.ch = ch; $f.err = err; $f.neg = neg; $f.r = r; $f.$s = $s; $f.$r = $r; return $f;
 53524  	};
 53525  	byteReader.ptr.prototype.ReadByte = function() {
 53526  		var _r$3, _r$4, _tuple, ch, err, r, size, $s, $r;
 53527  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$3 = $f._r$3; _r$4 = $f._r$4; _tuple = $f._tuple; ch = $f.ch; err = $f.err; r = $f.r; size = $f.size; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 53528  		r = this;
 53529  		_r$3 = r.ScanState.ReadRune(); /* */ $s = 1; case 1: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 53530  		_tuple = _r$3;
 53531  		ch = _tuple[0];
 53532  		size = _tuple[1];
 53533  		err = _tuple[2];
 53534  		/* */ if (!((size === 1)) && $interfaceIsEqual(err, $ifaceNil)) { $s = 2; continue; }
 53535  		/* */ $s = 3; continue;
 53536  		/* if (!((size === 1)) && $interfaceIsEqual(err, $ifaceNil)) { */ case 2:
 53537  			_r$4 = fmt.Errorf("invalid rune %#U", new sliceType([new $Int32(ch)])); /* */ $s = 4; case 4: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 53538  			err = _r$4;
 53539  		/* } */ case 3:
 53540  		$s = -1; return [((ch << 24 >>> 24)), err];
 53541  		/* */ } return; } if ($f === undefined) { $f = { $blk: byteReader.ptr.prototype.ReadByte }; } $f._r$3 = _r$3; $f._r$4 = _r$4; $f._tuple = _tuple; $f.ch = ch; $f.err = err; $f.r = r; $f.size = size; $f.$s = $s; $f.$r = $r; return $f;
 53542  	};
 53543  	byteReader.prototype.ReadByte = function() { return this.$val.ReadByte(); };
 53544  	byteReader.ptr.prototype.UnreadByte = function() {
 53545  		var _r$3, r, $s, $r;
 53546  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$3 = $f._r$3; r = $f.r; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 53547  		r = this;
 53548  		_r$3 = r.ScanState.UnreadRune(); /* */ $s = 1; case 1: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 53549  		$s = -1; return _r$3;
 53550  		/* */ } return; } if ($f === undefined) { $f = { $blk: byteReader.ptr.prototype.UnreadByte }; } $f._r$3 = _r$3; $f.r = r; $f.$s = $s; $f.$r = $r; return $f;
 53551  	};
 53552  	byteReader.prototype.UnreadByte = function() { return this.$val.UnreadByte(); };
 53553  	Int.ptr.prototype.Scan = function(s, ch) {
 53554  		var _1, _r$3, _tuple, base, ch, err, s, x, z, $s, $r;
 53555  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _r$3 = $f._r$3; _tuple = $f._tuple; base = $f.base; ch = $f.ch; err = $f.err; s = $f.s; x = $f.x; z = $f.z; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 53556  		z = this;
 53557  		$r = s.SkipSpace(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 53558  		base = 0;
 53559  		_1 = ch;
 53560  		if (_1 === (98)) {
 53561  			base = 2;
 53562  		} else if (_1 === (111)) {
 53563  			base = 8;
 53564  		} else if (_1 === (100)) {
 53565  			base = 10;
 53566  		} else if ((_1 === (120)) || (_1 === (88))) {
 53567  			base = 16;
 53568  		} else if ((_1 === (115)) || (_1 === (118))) {
 53569  		} else {
 53570  			$s = -1; return errors.New("Int.Scan: invalid verb");
 53571  		}
 53572  		_r$3 = z.scan((x = new byteReader.ptr(s), new x.constructor.elem(x)), base); /* */ $s = 2; case 2: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 53573  		_tuple = _r$3;
 53574  		err = _tuple[2];
 53575  		$s = -1; return err;
 53576  		/* */ } return; } if ($f === undefined) { $f = { $blk: Int.ptr.prototype.Scan }; } $f._1 = _1; $f._r$3 = _r$3; $f._tuple = _tuple; $f.base = base; $f.ch = ch; $f.err = err; $f.s = s; $f.x = x; $f.z = z; $f.$s = $s; $f.$r = $r; return $f;
 53577  	};
 53578  	Int.prototype.Scan = function(s, ch) { return this.$val.Scan(s, ch); };
 53579  	Int.ptr.prototype.GobEncode = function() {
 53580  		var b, buf, i, x;
 53581  		x = this;
 53582  		if (x === ptrType$1.nil) {
 53583  			return [sliceType$1.nil, $ifaceNil];
 53584  		}
 53585  		buf = $makeSlice(sliceType$1, (1 + ($imul(x.abs.$length, 4)) >> 0));
 53586  		i = x.abs.bytes(buf) - 1 >> 0;
 53587  		b = 2;
 53588  		if (x.neg) {
 53589  			b = (b | (1)) >>> 0;
 53590  		}
 53591  		((i < 0 || i >= buf.$length) ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + i] = b);
 53592  		return [$subslice(buf, i), $ifaceNil];
 53593  	};
 53594  	Int.prototype.GobEncode = function() { return this.$val.GobEncode(); };
 53595  	Int.ptr.prototype.GobDecode = function(buf) {
 53596  		var _r$3, b, buf, z, $s, $r;
 53597  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$3 = $f._r$3; b = $f.b; buf = $f.buf; z = $f.z; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 53598  		z = this;
 53599  		if (buf.$length === 0) {
 53600  			Int.copy(z, new Int.ptr(false, nat.nil));
 53601  			$s = -1; return $ifaceNil;
 53602  		}
 53603  		b = (0 >= buf.$length ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + 0]);
 53604  		/* */ if (!(((b >>> 1 << 24 >>> 24) === 1))) { $s = 1; continue; }
 53605  		/* */ $s = 2; continue;
 53606  		/* if (!(((b >>> 1 << 24 >>> 24) === 1))) { */ case 1:
 53607  			_r$3 = fmt.Errorf("Int.GobDecode: encoding version %d not supported", new sliceType([new $Uint8((b >>> 1 << 24 >>> 24))])); /* */ $s = 3; case 3: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 53608  			$s = -1; return _r$3;
 53609  		/* } */ case 2:
 53610  		z.neg = !((((b & 1) >>> 0) === 0));
 53611  		z.abs = z.abs.setBytes($subslice(buf, 1));
 53612  		$s = -1; return $ifaceNil;
 53613  		/* */ } return; } if ($f === undefined) { $f = { $blk: Int.ptr.prototype.GobDecode }; } $f._r$3 = _r$3; $f.b = b; $f.buf = buf; $f.z = z; $f.$s = $s; $f.$r = $r; return $f;
 53614  	};
 53615  	Int.prototype.GobDecode = function(buf) { return this.$val.GobDecode(buf); };
 53616  	Int.ptr.prototype.MarshalText = function() {
 53617  		var _r$3, _tmp, _tmp$1, _tmp$2, _tmp$3, err, text, x, $s, $r;
 53618  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$3 = $f._r$3; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; err = $f.err; text = $f.text; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 53619  		text = sliceType$1.nil;
 53620  		err = $ifaceNil;
 53621  		x = this;
 53622  		if (x === ptrType$1.nil) {
 53623  			_tmp = (new sliceType$1($stringToBytes("<nil>")));
 53624  			_tmp$1 = $ifaceNil;
 53625  			text = _tmp;
 53626  			err = _tmp$1;
 53627  			$s = -1; return [text, err];
 53628  		}
 53629  		_r$3 = x.abs.itoa(x.neg, 10); /* */ $s = 1; case 1: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 53630  		_tmp$2 = _r$3;
 53631  		_tmp$3 = $ifaceNil;
 53632  		text = _tmp$2;
 53633  		err = _tmp$3;
 53634  		$s = -1; return [text, err];
 53635  		/* */ } return; } if ($f === undefined) { $f = { $blk: Int.ptr.prototype.MarshalText }; } $f._r$3 = _r$3; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f.err = err; $f.text = text; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
 53636  	};
 53637  	Int.prototype.MarshalText = function() { return this.$val.MarshalText(); };
 53638  	Int.ptr.prototype.UnmarshalText = function(text) {
 53639  		var _r$3, _r$4, _tuple, ok, text, z, $s, $r;
 53640  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$3 = $f._r$3; _r$4 = $f._r$4; _tuple = $f._tuple; ok = $f.ok; text = $f.text; z = $f.z; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 53641  		z = this;
 53642  		_r$3 = z.setFromScanner(bytes.NewReader(text), 0); /* */ $s = 1; case 1: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 53643  		_tuple = _r$3;
 53644  		ok = _tuple[1];
 53645  		/* */ if (!ok) { $s = 2; continue; }
 53646  		/* */ $s = 3; continue;
 53647  		/* if (!ok) { */ case 2:
 53648  			_r$4 = fmt.Errorf("math/big: cannot unmarshal %q into a *big.Int", new sliceType([text])); /* */ $s = 4; case 4: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 53649  			$s = -1; return _r$4;
 53650  		/* } */ case 3:
 53651  		$s = -1; return $ifaceNil;
 53652  		/* */ } return; } if ($f === undefined) { $f = { $blk: Int.ptr.prototype.UnmarshalText }; } $f._r$3 = _r$3; $f._r$4 = _r$4; $f._tuple = _tuple; $f.ok = ok; $f.text = text; $f.z = z; $f.$s = $s; $f.$r = $r; return $f;
 53653  	};
 53654  	Int.prototype.UnmarshalText = function(text) { return this.$val.UnmarshalText(text); };
 53655  	Int.ptr.prototype.MarshalJSON = function() {
 53656  		var _r$3, x, $s, $r;
 53657  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$3 = $f._r$3; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 53658  		x = this;
 53659  		_r$3 = x.MarshalText(); /* */ $s = 1; case 1: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 53660  		$s = -1; return _r$3;
 53661  		/* */ } return; } if ($f === undefined) { $f = { $blk: Int.ptr.prototype.MarshalJSON }; } $f._r$3 = _r$3; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
 53662  	};
 53663  	Int.prototype.MarshalJSON = function() { return this.$val.MarshalJSON(); };
 53664  	Int.ptr.prototype.UnmarshalJSON = function(text) {
 53665  		var _r$3, text, z, $s, $r;
 53666  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$3 = $f._r$3; text = $f.text; z = $f.z; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 53667  		z = this;
 53668  		if (($bytesToString(text)) === "null") {
 53669  			$s = -1; return $ifaceNil;
 53670  		}
 53671  		_r$3 = z.UnmarshalText(text); /* */ $s = 1; case 1: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 53672  		$s = -1; return _r$3;
 53673  		/* */ } return; } if ($f === undefined) { $f = { $blk: Int.ptr.prototype.UnmarshalJSON }; } $f._r$3 = _r$3; $f.text = text; $f.z = z; $f.$s = $s; $f.$r = $r; return $f;
 53674  	};
 53675  	Int.prototype.UnmarshalJSON = function(text) { return this.$val.UnmarshalJSON(text); };
 53676  	nat.prototype.clear = function() {
 53677  		var _i, _ref, i, z;
 53678  		z = this;
 53679  		_ref = z;
 53680  		_i = 0;
 53681  		while (true) {
 53682  			if (!(_i < _ref.$length)) { break; }
 53683  			i = _i;
 53684  			((i < 0 || i >= z.$length) ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + i] = 0);
 53685  			_i++;
 53686  		}
 53687  	};
 53688  	$ptrType(nat).prototype.clear = function() { return this.$get().clear(); };
 53689  	nat.prototype.norm = function() {
 53690  		var i, x, z;
 53691  		z = this;
 53692  		i = z.$length;
 53693  		while (true) {
 53694  			if (!(i > 0 && ((x = i - 1 >> 0, ((x < 0 || x >= z.$length) ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + x])) === 0))) { break; }
 53695  			i = i - (1) >> 0;
 53696  		}
 53697  		return $subslice(z, 0, i);
 53698  	};
 53699  	$ptrType(nat).prototype.norm = function() { return this.$get().norm(); };
 53700  	nat.prototype.make = function(n) {
 53701  		var n, z;
 53702  		z = this;
 53703  		if (n <= z.$capacity) {
 53704  			return $subslice(z, 0, n);
 53705  		}
 53706  		return $makeSlice(nat, n, (n + 4 >> 0));
 53707  	};
 53708  	$ptrType(nat).prototype.make = function(n) { return this.$get().make(n); };
 53709  	nat.prototype.setWord = function(x) {
 53710  		var x, z;
 53711  		z = this;
 53712  		if (x === 0) {
 53713  			return $subslice(z, 0, 0);
 53714  		}
 53715  		z = z.make(1);
 53716  		(0 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 0] = x);
 53717  		return z;
 53718  	};
 53719  	$ptrType(nat).prototype.setWord = function(x) { return this.$get().setWord(x); };
 53720  	nat.prototype.setUint64 = function(x) {
 53721  		var w, x, x$1, z;
 53722  		z = this;
 53723  		w = ((x.$low >>> 0));
 53724  		if ((x$1 = (new $Uint64(0, w.constructor === Number ? w : 1)), (x$1.$high === x.$high && x$1.$low === x.$low))) {
 53725  			return z.setWord(w);
 53726  		}
 53727  		z = z.make(2);
 53728  		(1 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 1] = (($shiftRightUint64(x, 32).$low >>> 0)));
 53729  		(0 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 0] = ((x.$low >>> 0)));
 53730  		return z;
 53731  	};
 53732  	$ptrType(nat).prototype.setUint64 = function(x) { return this.$get().setUint64(x); };
 53733  	nat.prototype.set = function(x) {
 53734  		var x, z;
 53735  		z = this;
 53736  		z = z.make(x.$length);
 53737  		$copySlice(z, x);
 53738  		return z;
 53739  	};
 53740  	$ptrType(nat).prototype.set = function(x) { return this.$get().set(x); };
 53741  	nat.prototype.add = function(x, y) {
 53742  		var c, m, n, x, x$1, x$2, x$3, y, z;
 53743  		z = this;
 53744  		m = x.$length;
 53745  		n = y.$length;
 53746  		if (m < n) {
 53747  			return z.add(y, x);
 53748  		} else if ((m === 0)) {
 53749  			return $subslice(z, 0, 0);
 53750  		} else if ((n === 0)) {
 53751  			return z.set(x);
 53752  		}
 53753  		z = z.make(m + 1 >> 0);
 53754  		c = addVV((x$1 = $subslice(z, 0, n), $subslice(new sliceType$2(x$1.$array), x$1.$offset, x$1.$offset + x$1.$length)), $subslice(new sliceType$2(x.$array), x.$offset, x.$offset + x.$length), $subslice(new sliceType$2(y.$array), y.$offset, y.$offset + y.$length));
 53755  		if (m > n) {
 53756  			c = addVW((x$2 = $subslice(z, n, m), $subslice(new sliceType$2(x$2.$array), x$2.$offset, x$2.$offset + x$2.$length)), (x$3 = $subslice(x, n), $subslice(new sliceType$2(x$3.$array), x$3.$offset, x$3.$offset + x$3.$length)), c);
 53757  		}
 53758  		((m < 0 || m >= z.$length) ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + m] = c);
 53759  		return z.norm();
 53760  	};
 53761  	$ptrType(nat).prototype.add = function(x, y) { return this.$get().add(x, y); };
 53762  	nat.prototype.sub = function(x, y) {
 53763  		var c, m, n, x, x$1, x$2, x$3, y, z;
 53764  		z = this;
 53765  		m = x.$length;
 53766  		n = y.$length;
 53767  		if (m < n) {
 53768  			$panic(new $String("underflow"));
 53769  		} else if ((m === 0)) {
 53770  			return $subslice(z, 0, 0);
 53771  		} else if ((n === 0)) {
 53772  			return z.set(x);
 53773  		}
 53774  		z = z.make(m);
 53775  		c = subVV((x$1 = $subslice(z, 0, n), $subslice(new sliceType$2(x$1.$array), x$1.$offset, x$1.$offset + x$1.$length)), $subslice(new sliceType$2(x.$array), x.$offset, x.$offset + x.$length), $subslice(new sliceType$2(y.$array), y.$offset, y.$offset + y.$length));
 53776  		if (m > n) {
 53777  			c = subVW((x$2 = $subslice(z, n), $subslice(new sliceType$2(x$2.$array), x$2.$offset, x$2.$offset + x$2.$length)), (x$3 = $subslice(x, n), $subslice(new sliceType$2(x$3.$array), x$3.$offset, x$3.$offset + x$3.$length)), c);
 53778  		}
 53779  		if (!((c === 0))) {
 53780  			$panic(new $String("underflow"));
 53781  		}
 53782  		return z.norm();
 53783  	};
 53784  	$ptrType(nat).prototype.sub = function(x, y) { return this.$get().sub(x, y); };
 53785  	nat.prototype.cmp = function(y) {
 53786  		var i, m, n, r, x, y;
 53787  		r = 0;
 53788  		x = this;
 53789  		m = x.$length;
 53790  		n = y.$length;
 53791  		if (!((m === n)) || (m === 0)) {
 53792  			if (m < n) {
 53793  				r = -1;
 53794  			} else if (m > n) {
 53795  				r = 1;
 53796  			}
 53797  			return r;
 53798  		}
 53799  		i = m - 1 >> 0;
 53800  		while (true) {
 53801  			if (!(i > 0 && (((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i]) === ((i < 0 || i >= y.$length) ? ($throwRuntimeError("index out of range"), undefined) : y.$array[y.$offset + i])))) { break; }
 53802  			i = i - (1) >> 0;
 53803  		}
 53804  		if (((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i]) < ((i < 0 || i >= y.$length) ? ($throwRuntimeError("index out of range"), undefined) : y.$array[y.$offset + i])) {
 53805  			r = -1;
 53806  		} else if (((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i]) > ((i < 0 || i >= y.$length) ? ($throwRuntimeError("index out of range"), undefined) : y.$array[y.$offset + i])) {
 53807  			r = 1;
 53808  		}
 53809  		return r;
 53810  	};
 53811  	$ptrType(nat).prototype.cmp = function(y) { return this.$get().cmp(y); };
 53812  	nat.prototype.mulAddWW = function(x, y, r) {
 53813  		var m, r, x, x$1, y, z;
 53814  		z = this;
 53815  		m = x.$length;
 53816  		if ((m === 0) || (y === 0)) {
 53817  			return z.setWord(r);
 53818  		}
 53819  		z = z.make(m + 1 >> 0);
 53820  		((m < 0 || m >= z.$length) ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + m] = mulAddVWW((x$1 = $subslice(z, 0, m), $subslice(new sliceType$2(x$1.$array), x$1.$offset, x$1.$offset + x$1.$length)), $subslice(new sliceType$2(x.$array), x.$offset, x.$offset + x.$length), y, r));
 53821  		return z.norm();
 53822  	};
 53823  	$ptrType(nat).prototype.mulAddWW = function(x, y, r) { return this.$get().mulAddWW(x, y, r); };
 53824  	basicMul = function(z, x, y) {
 53825  		var _i, _ref, d, i, x, x$1, x$2, y, z;
 53826  		$subslice(z, 0, (x.$length + y.$length >> 0)).clear();
 53827  		_ref = y;
 53828  		_i = 0;
 53829  		while (true) {
 53830  			if (!(_i < _ref.$length)) { break; }
 53831  			i = _i;
 53832  			d = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
 53833  			if (!((d === 0))) {
 53834  				(x$2 = x.$length + i >> 0, ((x$2 < 0 || x$2 >= z.$length) ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + x$2] = addMulVVW((x$1 = $subslice(z, i, (i + x.$length >> 0)), $subslice(new sliceType$2(x$1.$array), x$1.$offset, x$1.$offset + x$1.$length)), $subslice(new sliceType$2(x.$array), x.$offset, x.$offset + x.$length), d)));
 53835  			}
 53836  			_i++;
 53837  		}
 53838  	};
 53839  	nat.prototype.montgomery = function(x, y, m, k, n) {
 53840  		var c, c2, c3, cx, cy, d, i, k, m, n, t, x, x$1, y, z;
 53841  		z = this;
 53842  		if (!((x.$length === n)) || !((y.$length === n)) || !((m.$length === n))) {
 53843  			$panic(new $String("math/big: mismatched montgomery number lengths"));
 53844  		}
 53845  		z = z.make(n);
 53846  		z.clear();
 53847  		c = 0;
 53848  		i = 0;
 53849  		while (true) {
 53850  			if (!(i < n)) { break; }
 53851  			d = ((i < 0 || i >= y.$length) ? ($throwRuntimeError("index out of range"), undefined) : y.$array[y.$offset + i]);
 53852  			c2 = addMulVVW($subslice(new sliceType$2(z.$array), z.$offset, z.$offset + z.$length), $subslice(new sliceType$2(x.$array), x.$offset, x.$offset + x.$length), d);
 53853  			t = $imul((0 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 0]), k) >>> 0;
 53854  			c3 = addMulVVW($subslice(new sliceType$2(z.$array), z.$offset, z.$offset + z.$length), $subslice(new sliceType$2(m.$array), m.$offset, m.$offset + m.$length), t);
 53855  			$copySlice(z, $subslice(z, 1));
 53856  			cx = c + c2 >>> 0;
 53857  			cy = cx + c3 >>> 0;
 53858  			(x$1 = n - 1 >> 0, ((x$1 < 0 || x$1 >= z.$length) ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + x$1] = cy));
 53859  			if (cx < c2 || cy < c3) {
 53860  				c = 1;
 53861  			} else {
 53862  				c = 0;
 53863  			}
 53864  			i = i + (1) >> 0;
 53865  		}
 53866  		if (!((c === 0))) {
 53867  			subVV($subslice(new sliceType$2(z.$array), z.$offset, z.$offset + z.$length), $subslice(new sliceType$2(z.$array), z.$offset, z.$offset + z.$length), $subslice(new sliceType$2(m.$array), m.$offset, m.$offset + m.$length));
 53868  		}
 53869  		return z;
 53870  	};
 53871  	$ptrType(nat).prototype.montgomery = function(x, y, m, k, n) { return this.$get().montgomery(x, y, m, k, n); };
 53872  	karatsubaAdd = function(z, x, n) {
 53873  		var c, n, x, x$1, x$2, x$3, z;
 53874  		c = addVV((x$1 = $subslice(z, 0, n), $subslice(new sliceType$2(x$1.$array), x$1.$offset, x$1.$offset + x$1.$length)), $subslice(new sliceType$2(z.$array), z.$offset, z.$offset + z.$length), $subslice(new sliceType$2(x.$array), x.$offset, x.$offset + x.$length));
 53875  		if (!((c === 0))) {
 53876  			addVW((x$2 = $subslice(z, n, (n + (n >> 1 >> 0) >> 0)), $subslice(new sliceType$2(x$2.$array), x$2.$offset, x$2.$offset + x$2.$length)), (x$3 = $subslice(z, n), $subslice(new sliceType$2(x$3.$array), x$3.$offset, x$3.$offset + x$3.$length)), c);
 53877  		}
 53878  	};
 53879  	karatsubaSub = function(z, x, n) {
 53880  		var c, n, x, x$1, x$2, x$3, z;
 53881  		c = subVV((x$1 = $subslice(z, 0, n), $subslice(new sliceType$2(x$1.$array), x$1.$offset, x$1.$offset + x$1.$length)), $subslice(new sliceType$2(z.$array), z.$offset, z.$offset + z.$length), $subslice(new sliceType$2(x.$array), x.$offset, x.$offset + x.$length));
 53882  		if (!((c === 0))) {
 53883  			subVW((x$2 = $subslice(z, n, (n + (n >> 1 >> 0) >> 0)), $subslice(new sliceType$2(x$2.$array), x$2.$offset, x$2.$offset + x$2.$length)), (x$3 = $subslice(z, n), $subslice(new sliceType$2(x$3.$array), x$3.$offset, x$3.$offset + x$3.$length)), c);
 53884  		}
 53885  	};
 53886  	karatsuba = function(z, x, y) {
 53887  		var _tmp, _tmp$1, _tmp$2, _tmp$3, n, n2, p, r, s, x, x0, x1, xd, y, y0, y1, yd, z;
 53888  		n = y.$length;
 53889  		if (!(((n & 1) === 0)) || n < karatsubaThreshold || n < 2) {
 53890  			basicMul(z, x, y);
 53891  			return;
 53892  		}
 53893  		n2 = n >> 1 >> 0;
 53894  		_tmp = $subslice(x, n2);
 53895  		_tmp$1 = $subslice(x, 0, n2);
 53896  		x1 = _tmp;
 53897  		x0 = _tmp$1;
 53898  		_tmp$2 = $subslice(y, n2);
 53899  		_tmp$3 = $subslice(y, 0, n2);
 53900  		y1 = _tmp$2;
 53901  		y0 = _tmp$3;
 53902  		karatsuba(z, x0, y0);
 53903  		karatsuba($subslice(z, n), x1, y1);
 53904  		s = 1;
 53905  		xd = $subslice(z, ($imul(2, n)), (($imul(2, n)) + n2 >> 0));
 53906  		if (!((subVV($subslice(new sliceType$2(xd.$array), xd.$offset, xd.$offset + xd.$length), $subslice(new sliceType$2(x1.$array), x1.$offset, x1.$offset + x1.$length), $subslice(new sliceType$2(x0.$array), x0.$offset, x0.$offset + x0.$length)) === 0))) {
 53907  			s = -s;
 53908  			subVV($subslice(new sliceType$2(xd.$array), xd.$offset, xd.$offset + xd.$length), $subslice(new sliceType$2(x0.$array), x0.$offset, x0.$offset + x0.$length), $subslice(new sliceType$2(x1.$array), x1.$offset, x1.$offset + x1.$length));
 53909  		}
 53910  		yd = $subslice(z, (($imul(2, n)) + n2 >> 0), ($imul(3, n)));
 53911  		if (!((subVV($subslice(new sliceType$2(yd.$array), yd.$offset, yd.$offset + yd.$length), $subslice(new sliceType$2(y0.$array), y0.$offset, y0.$offset + y0.$length), $subslice(new sliceType$2(y1.$array), y1.$offset, y1.$offset + y1.$length)) === 0))) {
 53912  			s = -s;
 53913  			subVV($subslice(new sliceType$2(yd.$array), yd.$offset, yd.$offset + yd.$length), $subslice(new sliceType$2(y1.$array), y1.$offset, y1.$offset + y1.$length), $subslice(new sliceType$2(y0.$array), y0.$offset, y0.$offset + y0.$length));
 53914  		}
 53915  		p = $subslice(z, ($imul(n, 3)));
 53916  		karatsuba(p, xd, yd);
 53917  		r = $subslice(z, ($imul(n, 4)));
 53918  		$copySlice(r, $subslice(z, 0, ($imul(n, 2))));
 53919  		karatsubaAdd($subslice(z, n2), r, n);
 53920  		karatsubaAdd($subslice(z, n2), $subslice(r, n), n);
 53921  		if (s > 0) {
 53922  			karatsubaAdd($subslice(z, n2), p, n);
 53923  		} else {
 53924  			karatsubaSub($subslice(z, n2), p, n);
 53925  		}
 53926  	};
 53927  	alias = function(x, y) {
 53928  		var x, x$1, x$2, y;
 53929  		return x.$capacity > 0 && y.$capacity > 0 && (x$1 = $subslice(x, 0, x.$capacity), $indexPtr(x$1.$array, x$1.$offset + (x.$capacity - 1 >> 0), ptrType$3)) === (x$2 = $subslice(y, 0, y.$capacity), $indexPtr(x$2.$array, x$2.$offset + (y.$capacity - 1 >> 0), ptrType$3));
 53930  	};
 53931  	addAt = function(z, x, i) {
 53932  		var c, i, j, n, x, x$1, x$2, x$3, x$4, z;
 53933  		n = x.$length;
 53934  		if (n > 0) {
 53935  			c = addVV((x$1 = $subslice(z, i, (i + n >> 0)), $subslice(new sliceType$2(x$1.$array), x$1.$offset, x$1.$offset + x$1.$length)), (x$2 = $subslice(z, i), $subslice(new sliceType$2(x$2.$array), x$2.$offset, x$2.$offset + x$2.$length)), $subslice(new sliceType$2(x.$array), x.$offset, x.$offset + x.$length));
 53936  			if (!((c === 0))) {
 53937  				j = i + n >> 0;
 53938  				if (j < z.$length) {
 53939  					addVW((x$3 = $subslice(z, j), $subslice(new sliceType$2(x$3.$array), x$3.$offset, x$3.$offset + x$3.$length)), (x$4 = $subslice(z, j), $subslice(new sliceType$2(x$4.$array), x$4.$offset, x$4.$offset + x$4.$length)), c);
 53940  				}
 53941  			}
 53942  		}
 53943  	};
 53944  	max = function(x, y) {
 53945  		var x, y;
 53946  		if (x > y) {
 53947  			return x;
 53948  		}
 53949  		return y;
 53950  	};
 53951  	karatsubaLen = function(n) {
 53952  		var i, n, y;
 53953  		i = 0;
 53954  		while (true) {
 53955  			if (!(n > karatsubaThreshold)) { break; }
 53956  			n = (n >> $min((1), 31)) >> 0;
 53957  			i = i + (1) >>> 0;
 53958  		}
 53959  		return (y = i, y < 32 ? (n << y) : 0) >> 0;
 53960  	};
 53961  	nat.prototype.mul = function(x, y) {
 53962  		var i, k, m, n, t, x, x0, x0$1, xi, y, y0, y0$1, y1, z;
 53963  		z = this;
 53964  		m = x.$length;
 53965  		n = y.$length;
 53966  		if (m < n) {
 53967  			return z.mul(y, x);
 53968  		} else if ((m === 0) || (n === 0)) {
 53969  			return $subslice(z, 0, 0);
 53970  		} else if ((n === 1)) {
 53971  			return z.mulAddWW(x, (0 >= y.$length ? ($throwRuntimeError("index out of range"), undefined) : y.$array[y.$offset + 0]), 0);
 53972  		}
 53973  		if (alias(z, x) || alias(z, y)) {
 53974  			z = nat.nil;
 53975  		}
 53976  		if (n < karatsubaThreshold) {
 53977  			z = z.make(m + n >> 0);
 53978  			basicMul(z, x, y);
 53979  			return z.norm();
 53980  		}
 53981  		k = karatsubaLen(n);
 53982  		x0 = $subslice(x, 0, k);
 53983  		y0 = $subslice(y, 0, k);
 53984  		z = z.make(max($imul(6, k), m + n >> 0));
 53985  		karatsuba(z, x0, y0);
 53986  		z = $subslice(z, 0, (m + n >> 0));
 53987  		$subslice(z, ($imul(2, k))).clear();
 53988  		if (k < n || !((m === n))) {
 53989  			t = nat.nil;
 53990  			x0$1 = x0.norm();
 53991  			y1 = $subslice(y, k);
 53992  			t = t.mul(x0$1, y1);
 53993  			addAt(z, t, k);
 53994  			y0$1 = y0.norm();
 53995  			i = k;
 53996  			while (true) {
 53997  				if (!(i < x.$length)) { break; }
 53998  				xi = $subslice(x, i);
 53999  				if (xi.$length > k) {
 54000  					xi = $subslice(xi, 0, k);
 54001  				}
 54002  				xi = xi.norm();
 54003  				t = t.mul(xi, y0$1);
 54004  				addAt(z, t, i);
 54005  				t = t.mul(xi, y1);
 54006  				addAt(z, t, i + k >> 0);
 54007  				i = i + (k) >> 0;
 54008  			}
 54009  		}
 54010  		return z.norm();
 54011  	};
 54012  	$ptrType(nat).prototype.mul = function(x, y) { return this.$get().mul(x, y); };
 54013  	basicSqr = function(z, x) {
 54014  		var _tuple, _tuple$1, d, i, n, t, x, x$1, x$2, x$3, x$4, x$5, x$6, x$7, x$8, z;
 54015  		n = x.$length;
 54016  		t = $makeSlice(nat, ($imul(2, n)));
 54017  		_tuple = mulWW((0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0]), (0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0]));
 54018  		(1 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 1] = _tuple[0]);
 54019  		(0 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 0] = _tuple[1]);
 54020  		i = 1;
 54021  		while (true) {
 54022  			if (!(i < n)) { break; }
 54023  			d = ((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i]);
 54024  			_tuple$1 = mulWW(d, d);
 54025  			(x$1 = ($imul(2, i)) + 1 >> 0, ((x$1 < 0 || x$1 >= z.$length) ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + x$1] = _tuple$1[0]));
 54026  			(x$2 = $imul(2, i), ((x$2 < 0 || x$2 >= z.$length) ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + x$2] = _tuple$1[1]));
 54027  			(x$5 = $imul(2, i), ((x$5 < 0 || x$5 >= t.$length) ? ($throwRuntimeError("index out of range"), undefined) : t.$array[t.$offset + x$5] = addMulVVW((x$3 = $subslice(t, i, ($imul(2, i))), $subslice(new sliceType$2(x$3.$array), x$3.$offset, x$3.$offset + x$3.$length)), (x$4 = $subslice(x, 0, i), $subslice(new sliceType$2(x$4.$array), x$4.$offset, x$4.$offset + x$4.$length)), d)));
 54028  			i = i + (1) >> 0;
 54029  		}
 54030  		(x$8 = ($imul(2, n)) - 1 >> 0, ((x$8 < 0 || x$8 >= t.$length) ? ($throwRuntimeError("index out of range"), undefined) : t.$array[t.$offset + x$8] = shlVU((x$6 = $subslice(t, 1, (($imul(2, n)) - 1 >> 0)), $subslice(new sliceType$2(x$6.$array), x$6.$offset, x$6.$offset + x$6.$length)), (x$7 = $subslice(t, 1, (($imul(2, n)) - 1 >> 0)), $subslice(new sliceType$2(x$7.$array), x$7.$offset, x$7.$offset + x$7.$length)), 1)));
 54031  		addVV($subslice(new sliceType$2(z.$array), z.$offset, z.$offset + z.$length), $subslice(new sliceType$2(z.$array), z.$offset, z.$offset + z.$length), $subslice(new sliceType$2(t.$array), t.$offset, t.$offset + t.$length));
 54032  	};
 54033  	nat.prototype.sqr = function(x) {
 54034  		var _tuple, d, n, x, z;
 54035  		z = this;
 54036  		n = x.$length;
 54037  		if ((n === 0)) {
 54038  			return $subslice(z, 0, 0);
 54039  		} else if ((n === 1)) {
 54040  			d = (0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0]);
 54041  			z = z.make(2);
 54042  			_tuple = mulWW(d, d);
 54043  			(1 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 1] = _tuple[0]);
 54044  			(0 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 0] = _tuple[1]);
 54045  			return z.norm();
 54046  		}
 54047  		if (alias(z, x)) {
 54048  			z = nat.nil;
 54049  		}
 54050  		z = z.make($imul(2, n));
 54051  		if (n < basicSqrThreshold) {
 54052  			basicMul(z, x, x);
 54053  			return z.norm();
 54054  		}
 54055  		if (n < karatsubaSqrThreshold) {
 54056  			basicSqr(z, x);
 54057  			return z.norm();
 54058  		}
 54059  		return z.mul(x, x);
 54060  	};
 54061  	$ptrType(nat).prototype.sqr = function(x) { return this.$get().sqr(x); };
 54062  	nat.prototype.mulRange = function(a, b) {
 54063  		var a, b, m, x, z;
 54064  		z = this;
 54065  		if ((a.$high === 0 && a.$low === 0)) {
 54066  			return z.setUint64(new $Uint64(0, 0));
 54067  		} else if ((a.$high > b.$high || (a.$high === b.$high && a.$low > b.$low))) {
 54068  			return z.setUint64(new $Uint64(0, 1));
 54069  		} else if ((a.$high === b.$high && a.$low === b.$low)) {
 54070  			return z.setUint64(a);
 54071  		} else if ((x = new $Uint64(a.$high + 0, a.$low + 1), (x.$high === b.$high && x.$low === b.$low))) {
 54072  			return z.mul((nat.nil).setUint64(a), (nat.nil).setUint64(b));
 54073  		}
 54074  		m = $div64((new $Uint64(a.$high + b.$high, a.$low + b.$low)), new $Uint64(0, 2), false);
 54075  		return z.mul((nat.nil).mulRange(a, m), (nat.nil).mulRange(new $Uint64(m.$high + 0, m.$low + 1), b));
 54076  	};
 54077  	$ptrType(nat).prototype.mulRange = function(a, b) { return this.$get().mulRange(a, b); };
 54078  	nat.prototype.divW = function(x, y) {
 54079  		var m, q, r, x, y, z;
 54080  		q = nat.nil;
 54081  		r = 0;
 54082  		z = this;
 54083  		m = x.$length;
 54084  		if ((y === 0)) {
 54085  			$panic(new $String("division by zero"));
 54086  		} else if ((y === 1)) {
 54087  			q = z.set(x);
 54088  			return [q, r];
 54089  		} else if ((m === 0)) {
 54090  			q = $subslice(z, 0, 0);
 54091  			return [q, r];
 54092  		}
 54093  		z = z.make(m);
 54094  		r = divWVW($subslice(new sliceType$2(z.$array), z.$offset, z.$offset + z.$length), 0, $subslice(new sliceType$2(x.$array), x.$offset, x.$offset + x.$length), y);
 54095  		q = z.norm();
 54096  		return [q, r];
 54097  	};
 54098  	$ptrType(nat).prototype.divW = function(x, y) { return this.$get().divW(x, y); };
 54099  	nat.prototype.div = function(z2, u, v) {
 54100  		var _r$3, _tuple, _tuple$1, q, r, r2, u, v, z, z2, $s, $r;
 54101  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$3 = $f._r$3; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; q = $f.q; r = $f.r; r2 = $f.r2; u = $f.u; v = $f.v; z = $f.z; z2 = $f.z2; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 54102  		q = nat.nil;
 54103  		r = nat.nil;
 54104  		z = this;
 54105  		if (v.$length === 0) {
 54106  			$panic(new $String("division by zero"));
 54107  		}
 54108  		if (u.cmp(v) < 0) {
 54109  			q = $subslice(z, 0, 0);
 54110  			r = z2.set(u);
 54111  			$s = -1; return [q, r];
 54112  		}
 54113  		if (v.$length === 1) {
 54114  			r2 = 0;
 54115  			_tuple = z.divW(u, (0 >= v.$length ? ($throwRuntimeError("index out of range"), undefined) : v.$array[v.$offset + 0]));
 54116  			q = _tuple[0];
 54117  			r2 = _tuple[1];
 54118  			r = z2.setWord(r2);
 54119  			$s = -1; return [q, r];
 54120  		}
 54121  		_r$3 = z.divLarge(z2, u, v); /* */ $s = 1; case 1: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 54122  		_tuple$1 = _r$3;
 54123  		q = _tuple$1[0];
 54124  		r = _tuple$1[1];
 54125  		$s = -1; return [q, r];
 54126  		/* */ } return; } if ($f === undefined) { $f = { $blk: nat.prototype.div }; } $f._r$3 = _r$3; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.q = q; $f.r = r; $f.r2 = r2; $f.u = u; $f.v = v; $f.z = z; $f.z2 = z2; $f.$s = $s; $f.$r = $r; return $f;
 54127  	};
 54128  	$ptrType(nat).prototype.div = function(z2, u, v) { return this.$get().div(z2, u, v); };
 54129  	getNat = function(n) {
 54130  		var _r$3, n, v, z, $s, $r;
 54131  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$3 = $f._r$3; n = $f.n; v = $f.v; z = $f.z; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 54132  		z = ptrType$4.nil;
 54133  		_r$3 = natPool.Get(); /* */ $s = 1; case 1: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 54134  		v = _r$3;
 54135  		if (!($interfaceIsEqual(v, $ifaceNil))) {
 54136  			z = $assertType(v, ptrType$4);
 54137  		}
 54138  		if (z === ptrType$4.nil) {
 54139  			z = $newDataPointer(nat.nil, ptrType$4);
 54140  		}
 54141  		z.$set(z.make(n));
 54142  		$s = -1; return z;
 54143  		/* */ } return; } if ($f === undefined) { $f = { $blk: getNat }; } $f._r$3 = _r$3; $f.n = n; $f.v = v; $f.z = z; $f.$s = $s; $f.$r = $r; return $f;
 54144  	};
 54145  	putNat = function(x) {
 54146  		var x;
 54147  		natPool.Put(x);
 54148  	};
 54149  	nat.prototype.divLarge = function(u, uIn, v) {
 54150  		var _index, _r$3, _r$4, _tmp, _tmp$1, _tuple, _tuple$1, _tuple$2, c, c$1, j, m, n, prevRhat, q, qhat, qhatv, qhatvp, r, rhat, shift, u, uIn, ujn, ujn2, v, v1, v1p, vn1, vn2, x, x$1, x$10, x$11, x$12, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9, x1, x2, z, $s, $r;
 54151  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _index = $f._index; _r$3 = $f._r$3; _r$4 = $f._r$4; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; c = $f.c; c$1 = $f.c$1; j = $f.j; m = $f.m; n = $f.n; prevRhat = $f.prevRhat; q = $f.q; qhat = $f.qhat; qhatv = $f.qhatv; qhatvp = $f.qhatvp; r = $f.r; rhat = $f.rhat; shift = $f.shift; u = $f.u; uIn = $f.uIn; ujn = $f.ujn; ujn2 = $f.ujn2; v = $f.v; v1 = $f.v1; v1p = $f.v1p; vn1 = $f.vn1; vn2 = $f.vn2; x = $f.x; x$1 = $f.x$1; x$10 = $f.x$10; x$11 = $f.x$11; x$12 = $f.x$12; x$2 = $f.x$2; x$3 = $f.x$3; x$4 = $f.x$4; x$5 = $f.x$5; x$6 = $f.x$6; x$7 = $f.x$7; x$8 = $f.x$8; x$9 = $f.x$9; x1 = $f.x1; x2 = $f.x2; z = $f.z; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 54152  		q = nat.nil;
 54153  		r = nat.nil;
 54154  		z = this;
 54155  		n = v.$length;
 54156  		m = uIn.$length - n >> 0;
 54157  		if (alias(z, u) || alias(z, uIn) || alias(z, v)) {
 54158  			z = nat.nil;
 54159  		}
 54160  		q = z.make(m + 1 >> 0);
 54161  		_r$3 = getNat(n + 1 >> 0); /* */ $s = 1; case 1: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 54162  		qhatvp = _r$3;
 54163  		qhatv = qhatvp.$get();
 54164  		if (alias(u, uIn) || alias(u, v)) {
 54165  			u = nat.nil;
 54166  		}
 54167  		u = u.make(uIn.$length + 1 >> 0);
 54168  		u.clear();
 54169  		v1p = ptrType$4.nil;
 54170  		shift = nlz((x = n - 1 >> 0, ((x < 0 || x >= v.$length) ? ($throwRuntimeError("index out of range"), undefined) : v.$array[v.$offset + x])));
 54171  		/* */ if (shift > 0) { $s = 2; continue; }
 54172  		/* */ $s = 3; continue;
 54173  		/* if (shift > 0) { */ case 2:
 54174  			_r$4 = getNat(n); /* */ $s = 4; case 4: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 54175  			v1p = _r$4;
 54176  			v1 = v1p.$get();
 54177  			shlVU($subslice(new sliceType$2(v1.$array), v1.$offset, v1.$offset + v1.$length), $subslice(new sliceType$2(v.$array), v.$offset, v.$offset + v.$length), shift);
 54178  			v = v1;
 54179  		/* } */ case 3:
 54180  		(x$2 = uIn.$length, ((x$2 < 0 || x$2 >= u.$length) ? ($throwRuntimeError("index out of range"), undefined) : u.$array[u.$offset + x$2] = shlVU((x$1 = $subslice(u, 0, uIn.$length), $subslice(new sliceType$2(x$1.$array), x$1.$offset, x$1.$offset + x$1.$length)), $subslice(new sliceType$2(uIn.$array), uIn.$offset, uIn.$offset + uIn.$length), shift)));
 54181  		vn1 = (x$3 = n - 1 >> 0, ((x$3 < 0 || x$3 >= v.$length) ? ($throwRuntimeError("index out of range"), undefined) : v.$array[v.$offset + x$3]));
 54182  		j = m;
 54183  		while (true) {
 54184  			if (!(j >= 0)) { break; }
 54185  			qhat = 4294967295;
 54186  			ujn = (x$4 = j + n >> 0, ((x$4 < 0 || x$4 >= u.$length) ? ($throwRuntimeError("index out of range"), undefined) : u.$array[u.$offset + x$4]));
 54187  			if (!((ujn === vn1))) {
 54188  				rhat = 0;
 54189  				_tuple = divWW(ujn, (x$5 = (j + n >> 0) - 1 >> 0, ((x$5 < 0 || x$5 >= u.$length) ? ($throwRuntimeError("index out of range"), undefined) : u.$array[u.$offset + x$5])), vn1);
 54190  				qhat = _tuple[0];
 54191  				rhat = _tuple[1];
 54192  				vn2 = (x$6 = n - 2 >> 0, ((x$6 < 0 || x$6 >= v.$length) ? ($throwRuntimeError("index out of range"), undefined) : v.$array[v.$offset + x$6]));
 54193  				_tuple$1 = mulWW(qhat, vn2);
 54194  				x1 = _tuple$1[0];
 54195  				x2 = _tuple$1[1];
 54196  				ujn2 = (x$7 = (j + n >> 0) - 2 >> 0, ((x$7 < 0 || x$7 >= u.$length) ? ($throwRuntimeError("index out of range"), undefined) : u.$array[u.$offset + x$7]));
 54197  				while (true) {
 54198  					if (!(greaterThan(x1, x2, rhat, ujn2))) { break; }
 54199  					qhat = qhat - (1) >>> 0;
 54200  					prevRhat = rhat;
 54201  					rhat = rhat + (vn1) >>> 0;
 54202  					if (rhat < prevRhat) {
 54203  						break;
 54204  					}
 54205  					_tuple$2 = mulWW(qhat, vn2);
 54206  					x1 = _tuple$2[0];
 54207  					x2 = _tuple$2[1];
 54208  				}
 54209  			}
 54210  			((n < 0 || n >= qhatv.$length) ? ($throwRuntimeError("index out of range"), undefined) : qhatv.$array[qhatv.$offset + n] = mulAddVWW((x$8 = $subslice(qhatv, 0, n), $subslice(new sliceType$2(x$8.$array), x$8.$offset, x$8.$offset + x$8.$length)), $subslice(new sliceType$2(v.$array), v.$offset, v.$offset + v.$length), qhat, 0));
 54211  			c = subVV((x$9 = $subslice(u, j, (j + qhatv.$length >> 0)), $subslice(new sliceType$2(x$9.$array), x$9.$offset, x$9.$offset + x$9.$length)), (x$10 = $subslice(u, j), $subslice(new sliceType$2(x$10.$array), x$10.$offset, x$10.$offset + x$10.$length)), $subslice(new sliceType$2(qhatv.$array), qhatv.$offset, qhatv.$offset + qhatv.$length));
 54212  			if (!((c === 0))) {
 54213  				c$1 = addVV((x$11 = $subslice(u, j, (j + n >> 0)), $subslice(new sliceType$2(x$11.$array), x$11.$offset, x$11.$offset + x$11.$length)), (x$12 = $subslice(u, j), $subslice(new sliceType$2(x$12.$array), x$12.$offset, x$12.$offset + x$12.$length)), $subslice(new sliceType$2(v.$array), v.$offset, v.$offset + v.$length));
 54214  				_index = j + n >> 0;
 54215  				((_index < 0 || _index >= u.$length) ? ($throwRuntimeError("index out of range"), undefined) : u.$array[u.$offset + _index] = (((_index < 0 || _index >= u.$length) ? ($throwRuntimeError("index out of range"), undefined) : u.$array[u.$offset + _index]) + (c$1) >>> 0));
 54216  				qhat = qhat - (1) >>> 0;
 54217  			}
 54218  			((j < 0 || j >= q.$length) ? ($throwRuntimeError("index out of range"), undefined) : q.$array[q.$offset + j] = qhat);
 54219  			j = j - (1) >> 0;
 54220  		}
 54221  		if (!(v1p === ptrType$4.nil)) {
 54222  			putNat(v1p);
 54223  		}
 54224  		putNat(qhatvp);
 54225  		q = q.norm();
 54226  		shrVU($subslice(new sliceType$2(u.$array), u.$offset, u.$offset + u.$length), $subslice(new sliceType$2(u.$array), u.$offset, u.$offset + u.$length), shift);
 54227  		r = u.norm();
 54228  		_tmp = q;
 54229  		_tmp$1 = r;
 54230  		q = _tmp;
 54231  		r = _tmp$1;
 54232  		$s = -1; return [q, r];
 54233  		/* */ } return; } if ($f === undefined) { $f = { $blk: nat.prototype.divLarge }; } $f._index = _index; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f.c = c; $f.c$1 = c$1; $f.j = j; $f.m = m; $f.n = n; $f.prevRhat = prevRhat; $f.q = q; $f.qhat = qhat; $f.qhatv = qhatv; $f.qhatvp = qhatvp; $f.r = r; $f.rhat = rhat; $f.shift = shift; $f.u = u; $f.uIn = uIn; $f.ujn = ujn; $f.ujn2 = ujn2; $f.v = v; $f.v1 = v1; $f.v1p = v1p; $f.vn1 = vn1; $f.vn2 = vn2; $f.x = x; $f.x$1 = x$1; $f.x$10 = x$10; $f.x$11 = x$11; $f.x$12 = x$12; $f.x$2 = x$2; $f.x$3 = x$3; $f.x$4 = x$4; $f.x$5 = x$5; $f.x$6 = x$6; $f.x$7 = x$7; $f.x$8 = x$8; $f.x$9 = x$9; $f.x1 = x1; $f.x2 = x2; $f.z = z; $f.$s = $s; $f.$r = $r; return $f;
 54234  	};
 54235  	$ptrType(nat).prototype.divLarge = function(u, uIn, v) { return this.$get().divLarge(u, uIn, v); };
 54236  	nat.prototype.bitLen = function() {
 54237  		var i, x;
 54238  		x = this;
 54239  		i = x.$length - 1 >> 0;
 54240  		if (i >= 0) {
 54241  			return ($imul(i, 32)) + bits.Len(((((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i]) >>> 0))) >> 0;
 54242  		}
 54243  		return 0;
 54244  	};
 54245  	$ptrType(nat).prototype.bitLen = function() { return this.$get().bitLen(); };
 54246  	nat.prototype.trailingZeroBits = function() {
 54247  		var i, x;
 54248  		x = this;
 54249  		if (x.$length === 0) {
 54250  			return 0;
 54251  		}
 54252  		i = 0;
 54253  		while (true) {
 54254  			if (!(((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i]) === 0)) { break; }
 54255  			i = i + (1) >>> 0;
 54256  		}
 54257  		return (i * 32 >>> 0) + ((bits.TrailingZeros(((((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i]) >>> 0))) >>> 0)) >>> 0;
 54258  	};
 54259  	$ptrType(nat).prototype.trailingZeroBits = function() { return this.$get().trailingZeroBits(); };
 54260  	nat.prototype.shl = function(x, s) {
 54261  		var _q, _r$3, m, n, s, x, x$1, z;
 54262  		z = this;
 54263  		m = x.$length;
 54264  		if (m === 0) {
 54265  			return $subslice(z, 0, 0);
 54266  		}
 54267  		n = m + (((_q = s / 32, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >>> 0 : $throwRuntimeError("integer divide by zero")) >> 0)) >> 0;
 54268  		z = z.make(n + 1 >> 0);
 54269  		((n < 0 || n >= z.$length) ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + n] = shlVU((x$1 = $subslice(z, (n - m >> 0), n), $subslice(new sliceType$2(x$1.$array), x$1.$offset, x$1.$offset + x$1.$length)), $subslice(new sliceType$2(x.$array), x.$offset, x.$offset + x.$length), (_r$3 = s % 32, _r$3 === _r$3 ? _r$3 : $throwRuntimeError("integer divide by zero"))));
 54270  		$subslice(z, 0, (n - m >> 0)).clear();
 54271  		return z.norm();
 54272  	};
 54273  	$ptrType(nat).prototype.shl = function(x, s) { return this.$get().shl(x, s); };
 54274  	nat.prototype.shr = function(x, s) {
 54275  		var _q, _r$3, m, n, s, x, x$1, z;
 54276  		z = this;
 54277  		m = x.$length;
 54278  		n = m - (((_q = s / 32, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >>> 0 : $throwRuntimeError("integer divide by zero")) >> 0)) >> 0;
 54279  		if (n <= 0) {
 54280  			return $subslice(z, 0, 0);
 54281  		}
 54282  		z = z.make(n);
 54283  		shrVU($subslice(new sliceType$2(z.$array), z.$offset, z.$offset + z.$length), (x$1 = $subslice(x, (m - n >> 0)), $subslice(new sliceType$2(x$1.$array), x$1.$offset, x$1.$offset + x$1.$length)), (_r$3 = s % 32, _r$3 === _r$3 ? _r$3 : $throwRuntimeError("integer divide by zero")));
 54284  		return z.norm();
 54285  	};
 54286  	$ptrType(nat).prototype.shr = function(x, s) { return this.$get().shr(x, s); };
 54287  	nat.prototype.setBit = function(x, i, b) {
 54288  		var _1, _q, _r$3, b, i, j, m, n, x, y, z;
 54289  		z = this;
 54290  		j = (((_q = i / 32, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >>> 0 : $throwRuntimeError("integer divide by zero")) >> 0));
 54291  		m = (y = ((_r$3 = i % 32, _r$3 === _r$3 ? _r$3 : $throwRuntimeError("integer divide by zero"))), y < 32 ? (1 << y) : 0) >>> 0;
 54292  		n = x.$length;
 54293  		_1 = b;
 54294  		if (_1 === (0)) {
 54295  			z = z.make(n);
 54296  			$copySlice(z, x);
 54297  			if (j >= n) {
 54298  				return z;
 54299  			}
 54300  			((j < 0 || j >= z.$length) ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + j] = ((((j < 0 || j >= z.$length) ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + j]) & ~(m)) >>> 0));
 54301  			return z.norm();
 54302  		} else if (_1 === (1)) {
 54303  			if (j >= n) {
 54304  				z = z.make(j + 1 >> 0);
 54305  				$subslice(z, n).clear();
 54306  			} else {
 54307  				z = z.make(n);
 54308  			}
 54309  			$copySlice(z, x);
 54310  			((j < 0 || j >= z.$length) ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + j] = ((((j < 0 || j >= z.$length) ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + j]) | (m)) >>> 0));
 54311  			return z;
 54312  		}
 54313  		$panic(new $String("set bit is not 0 or 1"));
 54314  	};
 54315  	$ptrType(nat).prototype.setBit = function(x, i, b) { return this.$get().setBit(x, i, b); };
 54316  	nat.prototype.bit = function(i) {
 54317  		var _q, _r$3, i, j, x, y;
 54318  		x = this;
 54319  		j = (_q = i / 32, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >>> 0 : $throwRuntimeError("integer divide by zero"));
 54320  		if (j >= ((x.$length >>> 0))) {
 54321  			return 0;
 54322  		}
 54323  		return ((((((y = ((_r$3 = i % 32, _r$3 === _r$3 ? _r$3 : $throwRuntimeError("integer divide by zero"))), y < 32 ? (((j < 0 || j >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + j]) >>> y) : 0) >>> 0) & 1) >>> 0) >>> 0));
 54324  	};
 54325  	$ptrType(nat).prototype.bit = function(i) { return this.$get().bit(i); };
 54326  	nat.prototype.sticky = function(i) {
 54327  		var _i, _q, _r$3, _ref, i, j, x, x$1, y;
 54328  		x = this;
 54329  		j = (_q = i / 32, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >>> 0 : $throwRuntimeError("integer divide by zero"));
 54330  		if (j >= ((x.$length >>> 0))) {
 54331  			if (x.$length === 0) {
 54332  				return 0;
 54333  			}
 54334  			return 1;
 54335  		}
 54336  		_ref = $subslice(x, 0, j);
 54337  		_i = 0;
 54338  		while (true) {
 54339  			if (!(_i < _ref.$length)) { break; }
 54340  			x$1 = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
 54341  			if (!((x$1 === 0))) {
 54342  				return 1;
 54343  			}
 54344  			_i++;
 54345  		}
 54346  		if (!((((y = ((32 - (_r$3 = i % 32, _r$3 === _r$3 ? _r$3 : $throwRuntimeError("integer divide by zero")) >>> 0)), y < 32 ? (((j < 0 || j >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + j]) << y) : 0) >>> 0) === 0))) {
 54347  			return 1;
 54348  		}
 54349  		return 0;
 54350  	};
 54351  	$ptrType(nat).prototype.sticky = function(i) { return this.$get().sticky(i); };
 54352  	nat.prototype.and = function(x, y) {
 54353  		var i, m, n, x, y, z;
 54354  		z = this;
 54355  		m = x.$length;
 54356  		n = y.$length;
 54357  		if (m > n) {
 54358  			m = n;
 54359  		}
 54360  		z = z.make(m);
 54361  		i = 0;
 54362  		while (true) {
 54363  			if (!(i < m)) { break; }
 54364  			((i < 0 || i >= z.$length) ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + i] = ((((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i]) & ((i < 0 || i >= y.$length) ? ($throwRuntimeError("index out of range"), undefined) : y.$array[y.$offset + i])) >>> 0));
 54365  			i = i + (1) >> 0;
 54366  		}
 54367  		return z.norm();
 54368  	};
 54369  	$ptrType(nat).prototype.and = function(x, y) { return this.$get().and(x, y); };
 54370  	nat.prototype.andNot = function(x, y) {
 54371  		var i, m, n, x, y, z;
 54372  		z = this;
 54373  		m = x.$length;
 54374  		n = y.$length;
 54375  		if (n > m) {
 54376  			n = m;
 54377  		}
 54378  		z = z.make(m);
 54379  		i = 0;
 54380  		while (true) {
 54381  			if (!(i < n)) { break; }
 54382  			((i < 0 || i >= z.$length) ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + i] = ((((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i]) & ~((i < 0 || i >= y.$length) ? ($throwRuntimeError("index out of range"), undefined) : y.$array[y.$offset + i])) >>> 0));
 54383  			i = i + (1) >> 0;
 54384  		}
 54385  		$copySlice($subslice(z, n, m), $subslice(x, n, m));
 54386  		return z.norm();
 54387  	};
 54388  	$ptrType(nat).prototype.andNot = function(x, y) { return this.$get().andNot(x, y); };
 54389  	nat.prototype.or = function(x, y) {
 54390  		var _tmp, _tmp$1, i, m, n, s, x, y, z;
 54391  		z = this;
 54392  		m = x.$length;
 54393  		n = y.$length;
 54394  		s = x;
 54395  		if (m < n) {
 54396  			_tmp = m;
 54397  			_tmp$1 = n;
 54398  			n = _tmp;
 54399  			m = _tmp$1;
 54400  			s = y;
 54401  		}
 54402  		z = z.make(m);
 54403  		i = 0;
 54404  		while (true) {
 54405  			if (!(i < n)) { break; }
 54406  			((i < 0 || i >= z.$length) ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + i] = ((((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i]) | ((i < 0 || i >= y.$length) ? ($throwRuntimeError("index out of range"), undefined) : y.$array[y.$offset + i])) >>> 0));
 54407  			i = i + (1) >> 0;
 54408  		}
 54409  		$copySlice($subslice(z, n, m), $subslice(s, n, m));
 54410  		return z.norm();
 54411  	};
 54412  	$ptrType(nat).prototype.or = function(x, y) { return this.$get().or(x, y); };
 54413  	nat.prototype.xor = function(x, y) {
 54414  		var _tmp, _tmp$1, i, m, n, s, x, y, z;
 54415  		z = this;
 54416  		m = x.$length;
 54417  		n = y.$length;
 54418  		s = x;
 54419  		if (m < n) {
 54420  			_tmp = m;
 54421  			_tmp$1 = n;
 54422  			n = _tmp;
 54423  			m = _tmp$1;
 54424  			s = y;
 54425  		}
 54426  		z = z.make(m);
 54427  		i = 0;
 54428  		while (true) {
 54429  			if (!(i < n)) { break; }
 54430  			((i < 0 || i >= z.$length) ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + i] = ((((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i]) ^ ((i < 0 || i >= y.$length) ? ($throwRuntimeError("index out of range"), undefined) : y.$array[y.$offset + i])) >>> 0));
 54431  			i = i + (1) >> 0;
 54432  		}
 54433  		$copySlice($subslice(z, n, m), $subslice(s, n, m));
 54434  		return z.norm();
 54435  	};
 54436  	$ptrType(nat).prototype.xor = function(x, y) { return this.$get().xor(x, y); };
 54437  	greaterThan = function(x1, x2, y1, y2) {
 54438  		var x1, x2, y1, y2;
 54439  		return x1 > y1 || (x1 === y1) && x2 > y2;
 54440  	};
 54441  	nat.prototype.modW = function(d) {
 54442  		var d, q, r, x;
 54443  		r = 0;
 54444  		x = this;
 54445  		q = nat.nil;
 54446  		q = q.make(x.$length);
 54447  		r = divWVW($subslice(new sliceType$2(q.$array), q.$offset, q.$offset + q.$length), 0, $subslice(new sliceType$2(x.$array), x.$offset, x.$offset + x.$length), d);
 54448  		return r;
 54449  	};
 54450  	$ptrType(nat).prototype.modW = function(d) { return this.$get().modW(d); };
 54451  	nat.prototype.random = function(rand$1, limit, n) {
 54452  		var _1, _i, _i$1, _index, _r$3, _r$4, _r$5, _ref, _ref$1, bitLengthOfMSW, i, i$1, limit, mask, n, rand$1, y, z, $s, $r;
 54453  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _i = $f._i; _i$1 = $f._i$1; _index = $f._index; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _ref = $f._ref; _ref$1 = $f._ref$1; bitLengthOfMSW = $f.bitLengthOfMSW; i = $f.i; i$1 = $f.i$1; limit = $f.limit; mask = $f.mask; n = $f.n; rand$1 = $f.rand$1; y = $f.y; z = $f.z; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 54454  		z = this;
 54455  		if (alias(z, limit)) {
 54456  			z = nat.nil;
 54457  		}
 54458  		z = z.make(limit.$length);
 54459  		bitLengthOfMSW = (((_r$3 = n % 32, _r$3 === _r$3 ? _r$3 : $throwRuntimeError("integer divide by zero")) >>> 0));
 54460  		if (bitLengthOfMSW === 0) {
 54461  			bitLengthOfMSW = 32;
 54462  		}
 54463  		mask = (((((y = bitLengthOfMSW, y < 32 ? (1 << y) : 0) >>> 0)) - 1 >>> 0));
 54464  		/* while (true) { */ case 1:
 54465  				_1 = 32;
 54466  				/* */ if (_1 === (32)) { $s = 4; continue; }
 54467  				/* */ if (_1 === (64)) { $s = 5; continue; }
 54468  				/* */ $s = 6; continue;
 54469  				/* if (_1 === (32)) { */ case 4:
 54470  					_ref = z;
 54471  					_i = 0;
 54472  					/* while (true) { */ case 8:
 54473  						/* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 9; continue; }
 54474  						i = _i;
 54475  						_r$4 = rand$1.Uint32(); /* */ $s = 10; case 10: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 54476  						((i < 0 || i >= z.$length) ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + i] = ((_r$4 >>> 0)));
 54477  						_i++;
 54478  					/* } */ $s = 8; continue; case 9:
 54479  					$s = 7; continue;
 54480  				/* } else if (_1 === (64)) { */ case 5:
 54481  					_ref$1 = z;
 54482  					_i$1 = 0;
 54483  					/* while (true) { */ case 11:
 54484  						/* if (!(_i$1 < _ref$1.$length)) { break; } */ if(!(_i$1 < _ref$1.$length)) { $s = 12; continue; }
 54485  						i$1 = _i$1;
 54486  						_r$5 = rand$1.Uint32(); /* */ $s = 13; case 13: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
 54487  						((i$1 < 0 || i$1 >= z.$length) ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + i$1] = ((((_r$5 >>> 0)) | 0) >>> 0));
 54488  						_i$1++;
 54489  					/* } */ $s = 11; continue; case 12:
 54490  					$s = 7; continue;
 54491  				/* } else { */ case 6:
 54492  					$panic(new $String("unknown word size"));
 54493  				/* } */ case 7:
 54494  			case 3:
 54495  			_index = limit.$length - 1 >> 0;
 54496  			((_index < 0 || _index >= z.$length) ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + _index] = ((((_index < 0 || _index >= z.$length) ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + _index]) & (mask)) >>> 0));
 54497  			if (z.cmp(limit) < 0) {
 54498  				/* break; */ $s = 2; continue;
 54499  			}
 54500  		/* } */ $s = 1; continue; case 2:
 54501  		$s = -1; return z.norm();
 54502  		/* */ } return; } if ($f === undefined) { $f = { $blk: nat.prototype.random }; } $f._1 = _1; $f._i = _i; $f._i$1 = _i$1; $f._index = _index; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._ref = _ref; $f._ref$1 = _ref$1; $f.bitLengthOfMSW = bitLengthOfMSW; $f.i = i; $f.i$1 = i$1; $f.limit = limit; $f.mask = mask; $f.n = n; $f.rand$1 = rand$1; $f.y = y; $f.z = z; $f.$s = $s; $f.$r = $r; return $f;
 54503  	};
 54504  	$ptrType(nat).prototype.random = function(rand$1, limit, n) { return this.$get().random(rand$1, limit, n); };
 54505  	nat.prototype.expNN = function(x, y, m) {
 54506  		var _r$3, _r$4, _r$5, _r$6, _r$7, _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$14, _tmp$15, _tmp$16, _tmp$17, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, _tuple$1, _tuple$2, i, j, j$1, m, q, r, shift, v, w, x, x$1, y, y$1, y$2, y$3, z, zz, $s, $r;
 54507  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$10 = $f._tmp$10; _tmp$11 = $f._tmp$11; _tmp$12 = $f._tmp$12; _tmp$13 = $f._tmp$13; _tmp$14 = $f._tmp$14; _tmp$15 = $f._tmp$15; _tmp$16 = $f._tmp$16; _tmp$17 = $f._tmp$17; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tmp$4 = $f._tmp$4; _tmp$5 = $f._tmp$5; _tmp$6 = $f._tmp$6; _tmp$7 = $f._tmp$7; _tmp$8 = $f._tmp$8; _tmp$9 = $f._tmp$9; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; i = $f.i; j = $f.j; j$1 = $f.j$1; m = $f.m; q = $f.q; r = $f.r; shift = $f.shift; v = $f.v; w = $f.w; x = $f.x; x$1 = $f.x$1; y = $f.y; y$1 = $f.y$1; y$2 = $f.y$2; y$3 = $f.y$3; z = $f.z; zz = $f.zz; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 54508  		z = this;
 54509  		if (alias(z, x) || alias(z, y)) {
 54510  			z = nat.nil;
 54511  		}
 54512  		if ((m.$length === 1) && ((0 >= m.$length ? ($throwRuntimeError("index out of range"), undefined) : m.$array[m.$offset + 0]) === 1)) {
 54513  			$s = -1; return z.setWord(0);
 54514  		}
 54515  		if (y.$length === 0) {
 54516  			$s = -1; return z.setWord(1);
 54517  		}
 54518  		/* */ if ((y.$length === 1) && ((0 >= y.$length ? ($throwRuntimeError("index out of range"), undefined) : y.$array[y.$offset + 0]) === 1) && !((m.$length === 0))) { $s = 1; continue; }
 54519  		/* */ $s = 2; continue;
 54520  		/* if ((y.$length === 1) && ((0 >= y.$length ? ($throwRuntimeError("index out of range"), undefined) : y.$array[y.$offset + 0]) === 1) && !((m.$length === 0))) { */ case 1:
 54521  			_r$3 = z.div(z, x, m); /* */ $s = 3; case 3: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 54522  			_tuple = _r$3;
 54523  			z = _tuple[1];
 54524  			$s = -1; return z;
 54525  		/* } */ case 2:
 54526  		if (!((m.$length === 0))) {
 54527  			z = z.make(m.$length);
 54528  		}
 54529  		z = z.set(x);
 54530  		/* */ if (x.cmp(natOne) > 0 && y.$length > 1 && m.$length > 0) { $s = 4; continue; }
 54531  		/* */ $s = 5; continue;
 54532  		/* if (x.cmp(natOne) > 0 && y.$length > 1 && m.$length > 0) { */ case 4:
 54533  			/* */ if ((((0 >= m.$length ? ($throwRuntimeError("index out of range"), undefined) : m.$array[m.$offset + 0]) & 1) >>> 0) === 1) { $s = 6; continue; }
 54534  			/* */ $s = 7; continue;
 54535  			/* if ((((0 >= m.$length ? ($throwRuntimeError("index out of range"), undefined) : m.$array[m.$offset + 0]) & 1) >>> 0) === 1) { */ case 6:
 54536  				_r$4 = z.expNNMontgomery(x, y, m); /* */ $s = 8; case 8: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 54537  				$s = -1; return _r$4;
 54538  			/* } */ case 7:
 54539  			_r$5 = z.expNNWindowed(x, y, m); /* */ $s = 9; case 9: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
 54540  			$s = -1; return _r$5;
 54541  		/* } */ case 5:
 54542  		v = (x$1 = y.$length - 1 >> 0, ((x$1 < 0 || x$1 >= y.$length) ? ($throwRuntimeError("index out of range"), undefined) : y.$array[y.$offset + x$1]));
 54543  		shift = nlz(v) + 1 >>> 0;
 54544  		v = (y$1 = (shift), y$1 < 32 ? (v << y$1) : 0) >>> 0;
 54545  		q = nat.nil;
 54546  		w = 32 - ((shift >> 0)) >> 0;
 54547  		_tmp = nat.nil;
 54548  		_tmp$1 = nat.nil;
 54549  		zz = _tmp;
 54550  		r = _tmp$1;
 54551  		j = 0;
 54552  		/* while (true) { */ case 10:
 54553  			/* if (!(j < w)) { break; } */ if(!(j < w)) { $s = 11; continue; }
 54554  			zz = zz.sqr(z);
 54555  			_tmp$2 = z;
 54556  			_tmp$3 = zz;
 54557  			zz = _tmp$2;
 54558  			z = _tmp$3;
 54559  			if (!((((v & 2147483648) >>> 0) === 0))) {
 54560  				zz = zz.mul(z, x);
 54561  				_tmp$4 = z;
 54562  				_tmp$5 = zz;
 54563  				zz = _tmp$4;
 54564  				z = _tmp$5;
 54565  			}
 54566  			/* */ if (!((m.$length === 0))) { $s = 12; continue; }
 54567  			/* */ $s = 13; continue;
 54568  			/* if (!((m.$length === 0))) { */ case 12:
 54569  				_r$6 = zz.div(r, z, m); /* */ $s = 14; case 14: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
 54570  				_tuple$1 = _r$6;
 54571  				zz = _tuple$1[0];
 54572  				r = _tuple$1[1];
 54573  				_tmp$6 = q;
 54574  				_tmp$7 = z;
 54575  				_tmp$8 = zz;
 54576  				_tmp$9 = r;
 54577  				zz = _tmp$6;
 54578  				r = _tmp$7;
 54579  				q = _tmp$8;
 54580  				z = _tmp$9;
 54581  			/* } */ case 13:
 54582  			v = (y$2 = (1), y$2 < 32 ? (v << y$2) : 0) >>> 0;
 54583  			j = j + (1) >> 0;
 54584  		/* } */ $s = 10; continue; case 11:
 54585  		i = y.$length - 2 >> 0;
 54586  		/* while (true) { */ case 15:
 54587  			/* if (!(i >= 0)) { break; } */ if(!(i >= 0)) { $s = 16; continue; }
 54588  			v = ((i < 0 || i >= y.$length) ? ($throwRuntimeError("index out of range"), undefined) : y.$array[y.$offset + i]);
 54589  			j$1 = 0;
 54590  			/* while (true) { */ case 17:
 54591  				/* if (!(j$1 < 32)) { break; } */ if(!(j$1 < 32)) { $s = 18; continue; }
 54592  				zz = zz.sqr(z);
 54593  				_tmp$10 = z;
 54594  				_tmp$11 = zz;
 54595  				zz = _tmp$10;
 54596  				z = _tmp$11;
 54597  				if (!((((v & 2147483648) >>> 0) === 0))) {
 54598  					zz = zz.mul(z, x);
 54599  					_tmp$12 = z;
 54600  					_tmp$13 = zz;
 54601  					zz = _tmp$12;
 54602  					z = _tmp$13;
 54603  				}
 54604  				/* */ if (!((m.$length === 0))) { $s = 19; continue; }
 54605  				/* */ $s = 20; continue;
 54606  				/* if (!((m.$length === 0))) { */ case 19:
 54607  					_r$7 = zz.div(r, z, m); /* */ $s = 21; case 21: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
 54608  					_tuple$2 = _r$7;
 54609  					zz = _tuple$2[0];
 54610  					r = _tuple$2[1];
 54611  					_tmp$14 = q;
 54612  					_tmp$15 = z;
 54613  					_tmp$16 = zz;
 54614  					_tmp$17 = r;
 54615  					zz = _tmp$14;
 54616  					r = _tmp$15;
 54617  					q = _tmp$16;
 54618  					z = _tmp$17;
 54619  				/* } */ case 20:
 54620  				v = (y$3 = (1), y$3 < 32 ? (v << y$3) : 0) >>> 0;
 54621  				j$1 = j$1 + (1) >> 0;
 54622  			/* } */ $s = 17; continue; case 18:
 54623  			i = i - (1) >> 0;
 54624  		/* } */ $s = 15; continue; case 16:
 54625  		$s = -1; return z.norm();
 54626  		/* */ } return; } if ($f === undefined) { $f = { $blk: nat.prototype.expNN }; } $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$10 = _tmp$10; $f._tmp$11 = _tmp$11; $f._tmp$12 = _tmp$12; $f._tmp$13 = _tmp$13; $f._tmp$14 = _tmp$14; $f._tmp$15 = _tmp$15; $f._tmp$16 = _tmp$16; $f._tmp$17 = _tmp$17; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tmp$4 = _tmp$4; $f._tmp$5 = _tmp$5; $f._tmp$6 = _tmp$6; $f._tmp$7 = _tmp$7; $f._tmp$8 = _tmp$8; $f._tmp$9 = _tmp$9; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f.i = i; $f.j = j; $f.j$1 = j$1; $f.m = m; $f.q = q; $f.r = r; $f.shift = shift; $f.v = v; $f.w = w; $f.x = x; $f.x$1 = x$1; $f.y = y; $f.y$1 = y$1; $f.y$2 = y$2; $f.y$3 = y$3; $f.z = z; $f.zz = zz; $f.$s = $s; $f.$r = $r; return $f;
 54627  	};
 54628  	$ptrType(nat).prototype.expNN = function(x, y, m) { return this.$get().expNN(x, y, m); };
 54629  	nat.prototype.expNNWindowed = function(x, y, m) {
 54630  		var _q, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$14, _tmp$15, _tmp$16, _tmp$17, _tmp$18, _tmp$19, _tmp$2, _tmp$20, _tmp$21, _tmp$22, _tmp$23, _tmp$24, _tmp$25, _tmp$26, _tmp$27, _tmp$28, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, _tuple$5, _tuple$6, i, i$1, j, m, p, p1, p2, powers, r, x, x$1, y, y$1, yi, z, zz, $s, $r;
 54631  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _q = $f._q; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _r$8 = $f._r$8; _r$9 = $f._r$9; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$10 = $f._tmp$10; _tmp$11 = $f._tmp$11; _tmp$12 = $f._tmp$12; _tmp$13 = $f._tmp$13; _tmp$14 = $f._tmp$14; _tmp$15 = $f._tmp$15; _tmp$16 = $f._tmp$16; _tmp$17 = $f._tmp$17; _tmp$18 = $f._tmp$18; _tmp$19 = $f._tmp$19; _tmp$2 = $f._tmp$2; _tmp$20 = $f._tmp$20; _tmp$21 = $f._tmp$21; _tmp$22 = $f._tmp$22; _tmp$23 = $f._tmp$23; _tmp$24 = $f._tmp$24; _tmp$25 = $f._tmp$25; _tmp$26 = $f._tmp$26; _tmp$27 = $f._tmp$27; _tmp$28 = $f._tmp$28; _tmp$3 = $f._tmp$3; _tmp$4 = $f._tmp$4; _tmp$5 = $f._tmp$5; _tmp$6 = $f._tmp$6; _tmp$7 = $f._tmp$7; _tmp$8 = $f._tmp$8; _tmp$9 = $f._tmp$9; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; _tuple$4 = $f._tuple$4; _tuple$5 = $f._tuple$5; _tuple$6 = $f._tuple$6; i = $f.i; i$1 = $f.i$1; j = $f.j; m = $f.m; p = $f.p; p1 = $f.p1; p2 = $f.p2; powers = $f.powers; r = $f.r; x = $f.x; x$1 = $f.x$1; y = $f.y; y$1 = $f.y$1; yi = $f.yi; z = $f.z; zz = $f.zz; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 54632  		z = this;
 54633  		_tmp = nat.nil;
 54634  		_tmp$1 = nat.nil;
 54635  		zz = _tmp;
 54636  		r = _tmp$1;
 54637  		powers = arrayType$1.zero();
 54638  		powers[0] = natOne;
 54639  		powers[1] = x;
 54640  		i = 2;
 54641  		/* while (true) { */ case 1:
 54642  			/* if (!(i < 16)) { break; } */ if(!(i < 16)) { $s = 2; continue; }
 54643  			_tmp$2 = $indexPtr(powers, (_q = i / 2, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")), ptrType$4);
 54644  			_tmp$3 = $indexPtr(powers, i, ptrType$4);
 54645  			_tmp$4 = $indexPtr(powers, (i + 1 >> 0), ptrType$4);
 54646  			p2 = _tmp$2;
 54647  			p = _tmp$3;
 54648  			p1 = _tmp$4;
 54649  			p.$set(p.sqr(p2.$get()));
 54650  			_r$3 = zz.div(r, p.$get(), m); /* */ $s = 3; case 3: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 54651  			_tuple = _r$3;
 54652  			zz = _tuple[0];
 54653  			r = _tuple[1];
 54654  			_tmp$5 = r;
 54655  			_tmp$6 = p.$get();
 54656  			p.$set(_tmp$5);
 54657  			r = _tmp$6;
 54658  			p1.$set(p1.mul(p.$get(), x));
 54659  			_r$4 = zz.div(r, p1.$get(), m); /* */ $s = 4; case 4: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 54660  			_tuple$1 = _r$4;
 54661  			zz = _tuple$1[0];
 54662  			r = _tuple$1[1];
 54663  			_tmp$7 = r;
 54664  			_tmp$8 = p1.$get();
 54665  			p1.$set(_tmp$7);
 54666  			r = _tmp$8;
 54667  			i = i + (2) >> 0;
 54668  		/* } */ $s = 1; continue; case 2:
 54669  		z = z.setWord(1);
 54670  		i$1 = y.$length - 1 >> 0;
 54671  		/* while (true) { */ case 5:
 54672  			/* if (!(i$1 >= 0)) { break; } */ if(!(i$1 >= 0)) { $s = 6; continue; }
 54673  			yi = ((i$1 < 0 || i$1 >= y.$length) ? ($throwRuntimeError("index out of range"), undefined) : y.$array[y.$offset + i$1]);
 54674  			j = 0;
 54675  			/* while (true) { */ case 7:
 54676  				/* if (!(j < 32)) { break; } */ if(!(j < 32)) { $s = 8; continue; }
 54677  				/* */ if (!((i$1 === (y.$length - 1 >> 0))) || !((j === 0))) { $s = 9; continue; }
 54678  				/* */ $s = 10; continue;
 54679  				/* if (!((i$1 === (y.$length - 1 >> 0))) || !((j === 0))) { */ case 9:
 54680  					zz = zz.sqr(z);
 54681  					_tmp$9 = z;
 54682  					_tmp$10 = zz;
 54683  					zz = _tmp$9;
 54684  					z = _tmp$10;
 54685  					_r$5 = zz.div(r, z, m); /* */ $s = 11; case 11: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
 54686  					_tuple$2 = _r$5;
 54687  					zz = _tuple$2[0];
 54688  					r = _tuple$2[1];
 54689  					_tmp$11 = r;
 54690  					_tmp$12 = z;
 54691  					z = _tmp$11;
 54692  					r = _tmp$12;
 54693  					zz = zz.sqr(z);
 54694  					_tmp$13 = z;
 54695  					_tmp$14 = zz;
 54696  					zz = _tmp$13;
 54697  					z = _tmp$14;
 54698  					_r$6 = zz.div(r, z, m); /* */ $s = 12; case 12: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
 54699  					_tuple$3 = _r$6;
 54700  					zz = _tuple$3[0];
 54701  					r = _tuple$3[1];
 54702  					_tmp$15 = r;
 54703  					_tmp$16 = z;
 54704  					z = _tmp$15;
 54705  					r = _tmp$16;
 54706  					zz = zz.sqr(z);
 54707  					_tmp$17 = z;
 54708  					_tmp$18 = zz;
 54709  					zz = _tmp$17;
 54710  					z = _tmp$18;
 54711  					_r$7 = zz.div(r, z, m); /* */ $s = 13; case 13: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
 54712  					_tuple$4 = _r$7;
 54713  					zz = _tuple$4[0];
 54714  					r = _tuple$4[1];
 54715  					_tmp$19 = r;
 54716  					_tmp$20 = z;
 54717  					z = _tmp$19;
 54718  					r = _tmp$20;
 54719  					zz = zz.sqr(z);
 54720  					_tmp$21 = z;
 54721  					_tmp$22 = zz;
 54722  					zz = _tmp$21;
 54723  					z = _tmp$22;
 54724  					_r$8 = zz.div(r, z, m); /* */ $s = 14; case 14: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
 54725  					_tuple$5 = _r$8;
 54726  					zz = _tuple$5[0];
 54727  					r = _tuple$5[1];
 54728  					_tmp$23 = r;
 54729  					_tmp$24 = z;
 54730  					z = _tmp$23;
 54731  					r = _tmp$24;
 54732  				/* } */ case 10:
 54733  				zz = zz.mul(z, (x$1 = yi >>> 28 >>> 0, ((x$1 < 0 || x$1 >= powers.length) ? ($throwRuntimeError("index out of range"), undefined) : powers[x$1])));
 54734  				_tmp$25 = z;
 54735  				_tmp$26 = zz;
 54736  				zz = _tmp$25;
 54737  				z = _tmp$26;
 54738  				_r$9 = zz.div(r, z, m); /* */ $s = 15; case 15: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 54739  				_tuple$6 = _r$9;
 54740  				zz = _tuple$6[0];
 54741  				r = _tuple$6[1];
 54742  				_tmp$27 = r;
 54743  				_tmp$28 = z;
 54744  				z = _tmp$27;
 54745  				r = _tmp$28;
 54746  				yi = (y$1 = (4), y$1 < 32 ? (yi << y$1) : 0) >>> 0;
 54747  				j = j + (4) >> 0;
 54748  			/* } */ $s = 7; continue; case 8:
 54749  			i$1 = i$1 - (1) >> 0;
 54750  		/* } */ $s = 5; continue; case 6:
 54751  		$s = -1; return z.norm();
 54752  		/* */ } return; } if ($f === undefined) { $f = { $blk: nat.prototype.expNNWindowed }; } $f._q = _q; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._r$8 = _r$8; $f._r$9 = _r$9; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$10 = _tmp$10; $f._tmp$11 = _tmp$11; $f._tmp$12 = _tmp$12; $f._tmp$13 = _tmp$13; $f._tmp$14 = _tmp$14; $f._tmp$15 = _tmp$15; $f._tmp$16 = _tmp$16; $f._tmp$17 = _tmp$17; $f._tmp$18 = _tmp$18; $f._tmp$19 = _tmp$19; $f._tmp$2 = _tmp$2; $f._tmp$20 = _tmp$20; $f._tmp$21 = _tmp$21; $f._tmp$22 = _tmp$22; $f._tmp$23 = _tmp$23; $f._tmp$24 = _tmp$24; $f._tmp$25 = _tmp$25; $f._tmp$26 = _tmp$26; $f._tmp$27 = _tmp$27; $f._tmp$28 = _tmp$28; $f._tmp$3 = _tmp$3; $f._tmp$4 = _tmp$4; $f._tmp$5 = _tmp$5; $f._tmp$6 = _tmp$6; $f._tmp$7 = _tmp$7; $f._tmp$8 = _tmp$8; $f._tmp$9 = _tmp$9; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f._tuple$4 = _tuple$4; $f._tuple$5 = _tuple$5; $f._tuple$6 = _tuple$6; $f.i = i; $f.i$1 = i$1; $f.j = j; $f.m = m; $f.p = p; $f.p1 = p1; $f.p2 = p2; $f.powers = powers; $f.r = r; $f.x = x; $f.x$1 = x$1; $f.y = y; $f.y$1 = y$1; $f.yi = yi; $f.z = z; $f.zz = zz; $f.$s = $s; $f.$r = $r; return $f;
 54753  	};
 54754  	$ptrType(nat).prototype.expNNWindowed = function(x, y, m) { return this.$get().expNNWindowed(x, y, m); };
 54755  	nat.prototype.expNNMontgomery = function(x, y, m) {
 54756  		var RR, _r$3, _r$4, _r$5, _tmp, _tmp$1, _tuple, _tuple$1, _tuple$2, i, i$1, i$2, j, k0, m, numWords, one, powers, rr, t, x, x$1, x$2, y, y$1, y$2, yi, z, zz, $s, $r;
 54757  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; RR = $f.RR; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; i = $f.i; i$1 = $f.i$1; i$2 = $f.i$2; j = $f.j; k0 = $f.k0; m = $f.m; numWords = $f.numWords; one = $f.one; powers = $f.powers; rr = $f.rr; t = $f.t; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; y = $f.y; y$1 = $f.y$1; y$2 = $f.y$2; yi = $f.yi; z = $f.z; zz = $f.zz; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 54758  		z = this;
 54759  		numWords = m.$length;
 54760  		/* */ if (x.$length > numWords) { $s = 1; continue; }
 54761  		/* */ $s = 2; continue;
 54762  		/* if (x.$length > numWords) { */ case 1:
 54763  			_r$3 = (nat.nil).div(nat.nil, x, m); /* */ $s = 3; case 3: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 54764  			_tuple = _r$3;
 54765  			x = _tuple[1];
 54766  		/* } */ case 2:
 54767  		if (x.$length < numWords) {
 54768  			rr = $makeSlice(nat, numWords);
 54769  			$copySlice(rr, x);
 54770  			x = rr;
 54771  		}
 54772  		k0 = 2 - (0 >= m.$length ? ($throwRuntimeError("index out of range"), undefined) : m.$array[m.$offset + 0]) >>> 0;
 54773  		t = (0 >= m.$length ? ($throwRuntimeError("index out of range"), undefined) : m.$array[m.$offset + 0]) - 1 >>> 0;
 54774  		i = 1;
 54775  		while (true) {
 54776  			if (!(i < 32)) { break; }
 54777  			t = $imul(t, (t)) >>> 0;
 54778  			k0 = $imul(k0, (((t + 1 >>> 0)))) >>> 0;
 54779  			i = (y$1 = (1), y$1 < 32 ? (i << y$1) : 0) >> 0;
 54780  		}
 54781  		k0 = -k0 >>> 0;
 54782  		RR = (nat.nil).setWord(1);
 54783  		zz = (nat.nil).shl(RR, ((($imul(($imul(2, numWords)), 32)) >>> 0)));
 54784  		_r$4 = RR.div(RR, zz, m); /* */ $s = 4; case 4: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 54785  		_tuple$1 = _r$4;
 54786  		RR = _tuple$1[1];
 54787  		if (RR.$length < numWords) {
 54788  			zz = zz.make(numWords);
 54789  			$copySlice(zz, RR);
 54790  			RR = zz;
 54791  		}
 54792  		one = $makeSlice(nat, numWords);
 54793  		(0 >= one.$length ? ($throwRuntimeError("index out of range"), undefined) : one.$array[one.$offset + 0] = 1);
 54794  		powers = arrayType$1.zero();
 54795  		powers[0] = powers[0].montgomery(one, RR, m, k0, numWords);
 54796  		powers[1] = powers[1].montgomery(x, RR, m, k0, numWords);
 54797  		i$1 = 2;
 54798  		while (true) {
 54799  			if (!(i$1 < 16)) { break; }
 54800  			((i$1 < 0 || i$1 >= powers.length) ? ($throwRuntimeError("index out of range"), undefined) : powers[i$1] = ((i$1 < 0 || i$1 >= powers.length) ? ($throwRuntimeError("index out of range"), undefined) : powers[i$1]).montgomery((x$1 = i$1 - 1 >> 0, ((x$1 < 0 || x$1 >= powers.length) ? ($throwRuntimeError("index out of range"), undefined) : powers[x$1])), powers[1], m, k0, numWords));
 54801  			i$1 = i$1 + (1) >> 0;
 54802  		}
 54803  		z = z.make(numWords);
 54804  		$copySlice(z, powers[0]);
 54805  		zz = zz.make(numWords);
 54806  		i$2 = y.$length - 1 >> 0;
 54807  		while (true) {
 54808  			if (!(i$2 >= 0)) { break; }
 54809  			yi = ((i$2 < 0 || i$2 >= y.$length) ? ($throwRuntimeError("index out of range"), undefined) : y.$array[y.$offset + i$2]);
 54810  			j = 0;
 54811  			while (true) {
 54812  				if (!(j < 32)) { break; }
 54813  				if (!((i$2 === (y.$length - 1 >> 0))) || !((j === 0))) {
 54814  					zz = zz.montgomery(z, z, m, k0, numWords);
 54815  					z = z.montgomery(zz, zz, m, k0, numWords);
 54816  					zz = zz.montgomery(z, z, m, k0, numWords);
 54817  					z = z.montgomery(zz, zz, m, k0, numWords);
 54818  				}
 54819  				zz = zz.montgomery(z, (x$2 = yi >>> 28 >>> 0, ((x$2 < 0 || x$2 >= powers.length) ? ($throwRuntimeError("index out of range"), undefined) : powers[x$2])), m, k0, numWords);
 54820  				_tmp = zz;
 54821  				_tmp$1 = z;
 54822  				z = _tmp;
 54823  				zz = _tmp$1;
 54824  				yi = (y$2 = (4), y$2 < 32 ? (yi << y$2) : 0) >>> 0;
 54825  				j = j + (4) >> 0;
 54826  			}
 54827  			i$2 = i$2 - (1) >> 0;
 54828  		}
 54829  		zz = zz.montgomery(z, one, m, k0, numWords);
 54830  		/* */ if (zz.cmp(m) >= 0) { $s = 5; continue; }
 54831  		/* */ $s = 6; continue;
 54832  		/* if (zz.cmp(m) >= 0) { */ case 5:
 54833  			zz = zz.sub(zz, m);
 54834  			/* */ if (zz.cmp(m) >= 0) { $s = 7; continue; }
 54835  			/* */ $s = 8; continue;
 54836  			/* if (zz.cmp(m) >= 0) { */ case 7:
 54837  				_r$5 = (nat.nil).div(nat.nil, zz, m); /* */ $s = 9; case 9: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
 54838  				_tuple$2 = _r$5;
 54839  				zz = _tuple$2[1];
 54840  			/* } */ case 8:
 54841  		/* } */ case 6:
 54842  		$s = -1; return zz.norm();
 54843  		/* */ } return; } if ($f === undefined) { $f = { $blk: nat.prototype.expNNMontgomery }; } $f.RR = RR; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f.i = i; $f.i$1 = i$1; $f.i$2 = i$2; $f.j = j; $f.k0 = k0; $f.m = m; $f.numWords = numWords; $f.one = one; $f.powers = powers; $f.rr = rr; $f.t = t; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.y = y; $f.y$1 = y$1; $f.y$2 = y$2; $f.yi = yi; $f.z = z; $f.zz = zz; $f.$s = $s; $f.$r = $r; return $f;
 54844  	};
 54845  	$ptrType(nat).prototype.expNNMontgomery = function(x, y, m) { return this.$get().expNNMontgomery(x, y, m); };
 54846  	nat.prototype.bytes = function(buf) {
 54847  		var _i, _ref, buf, d, i, j, y, z;
 54848  		i = 0;
 54849  		z = this;
 54850  		i = buf.$length;
 54851  		_ref = z;
 54852  		_i = 0;
 54853  		while (true) {
 54854  			if (!(_i < _ref.$length)) { break; }
 54855  			d = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
 54856  			j = 0;
 54857  			while (true) {
 54858  				if (!(j < 4)) { break; }
 54859  				i = i - (1) >> 0;
 54860  				((i < 0 || i >= buf.$length) ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + i] = ((d << 24 >>> 24)));
 54861  				d = (y = (8), y < 32 ? (d >>> y) : 0) >>> 0;
 54862  				j = j + (1) >> 0;
 54863  			}
 54864  			_i++;
 54865  		}
 54866  		while (true) {
 54867  			if (!(i < buf.$length && (((i < 0 || i >= buf.$length) ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + i]) === 0))) { break; }
 54868  			i = i + (1) >> 0;
 54869  		}
 54870  		return i;
 54871  	};
 54872  	$ptrType(nat).prototype.bytes = function(buf) { return this.$get().bytes(buf); };
 54873  	nat.prototype.setBytes = function(buf) {
 54874  		var _q, buf, d, i, k, s, x, y, z;
 54875  		z = this;
 54876  		z = z.make((_q = (((buf.$length + 4 >> 0) - 1 >> 0)) / 4, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")));
 54877  		k = 0;
 54878  		s = 0;
 54879  		d = 0;
 54880  		i = buf.$length;
 54881  		while (true) {
 54882  			if (!(i > 0)) { break; }
 54883  			d = (d | (((y = s, y < 32 ? ((((x = i - 1 >> 0, ((x < 0 || x >= buf.$length) ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + x])) >>> 0)) << y) : 0) >>> 0))) >>> 0;
 54884  			s = s + (8) >>> 0;
 54885  			if (s === 32) {
 54886  				((k < 0 || k >= z.$length) ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + k] = d);
 54887  				k = k + (1) >> 0;
 54888  				s = 0;
 54889  				d = 0;
 54890  			}
 54891  			i = i - (1) >> 0;
 54892  		}
 54893  		if (k < z.$length) {
 54894  			((k < 0 || k >= z.$length) ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + k] = d);
 54895  		}
 54896  		return z.norm();
 54897  	};
 54898  	$ptrType(nat).prototype.setBytes = function(buf) { return this.$get().setBytes(buf); };
 54899  	nat.prototype.sqrt = function(x) {
 54900  		var _q, _r$3, _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, n, x, z, z1, z2, $s, $r;
 54901  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _q = $f._q; _r$3 = $f._r$3; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tuple = $f._tuple; n = $f.n; x = $f.x; z = $f.z; z1 = $f.z1; z2 = $f.z2; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 54902  		z = this;
 54903  		if (x.cmp(natOne) <= 0) {
 54904  			$s = -1; return z.set(x);
 54905  		}
 54906  		if (alias(z, x)) {
 54907  			z = nat.nil;
 54908  		}
 54909  		_tmp = nat.nil;
 54910  		_tmp$1 = nat.nil;
 54911  		z1 = _tmp;
 54912  		z2 = _tmp$1;
 54913  		z1 = z;
 54914  		z1 = z1.setUint64(new $Uint64(0, 1));
 54915  		z1 = z1.shl(z1, ((((_q = x.bitLen() / 2, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")) + 1 >> 0) >>> 0)));
 54916  		n = 0;
 54917  		/* while (true) { */ case 1:
 54918  			_r$3 = z2.div(nat.nil, x, z1); /* */ $s = 3; case 3: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 54919  			_tuple = _r$3;
 54920  			z2 = _tuple[0];
 54921  			z2 = z2.add(z2, z1);
 54922  			z2 = z2.shr(z2, 1);
 54923  			if (z2.cmp(z1) >= 0) {
 54924  				if ((n & 1) === 0) {
 54925  					$s = -1; return z1;
 54926  				}
 54927  				$s = -1; return z.set(z1);
 54928  			}
 54929  			_tmp$2 = z2;
 54930  			_tmp$3 = z1;
 54931  			z1 = _tmp$2;
 54932  			z2 = _tmp$3;
 54933  			n = n + (1) >> 0;
 54934  		/* } */ $s = 1; continue; case 2:
 54935  		$s = -1; return nat.nil;
 54936  		/* */ } return; } if ($f === undefined) { $f = { $blk: nat.prototype.sqrt }; } $f._q = _q; $f._r$3 = _r$3; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tuple = _tuple; $f.n = n; $f.x = x; $f.z = z; $f.z1 = z1; $f.z2 = z2; $f.$s = $s; $f.$r = $r; return $f;
 54937  	};
 54938  	$ptrType(nat).prototype.sqrt = function(x) { return this.$get().sqrt(x); };
 54939  	maxPow = function(b) {
 54940  		var _q, _tmp, _tmp$1, b, max$1, n, p;
 54941  		p = 0;
 54942  		n = 0;
 54943  		_tmp = b;
 54944  		_tmp$1 = 1;
 54945  		p = _tmp;
 54946  		n = _tmp$1;
 54947  		max$1 = (_q = 4294967295 / b, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >>> 0 : $throwRuntimeError("integer divide by zero"));
 54948  		while (true) {
 54949  			if (!(p <= max$1)) { break; }
 54950  			p = $imul(p, (b)) >>> 0;
 54951  			n = n + (1) >> 0;
 54952  		}
 54953  		return [p, n];
 54954  	};
 54955  	pow = function(x, n) {
 54956  		var n, p, x;
 54957  		p = 0;
 54958  		p = 1;
 54959  		while (true) {
 54960  			if (!(n > 0)) { break; }
 54961  			if (!(((n & 1) === 0))) {
 54962  				p = $imul(p, (x)) >>> 0;
 54963  			}
 54964  			x = $imul(x, (x)) >>> 0;
 54965  			n = (n >> $min((1), 31)) >> 0;
 54966  		}
 54967  		return p;
 54968  	};
 54969  	nat.prototype.scan = function(r, base, fracOk) {
 54970  		var _1, _2, _3, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, _tuple$5, b, b1, base, baseOk, bn, ch, count, d1, di, dp, err, fracOk, i, n, r, res, z, $s, $r;
 54971  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _2 = $f._2; _3 = $f._3; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _r$8 = $f._r$8; _r$9 = $f._r$9; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; _tuple$4 = $f._tuple$4; _tuple$5 = $f._tuple$5; b = $f.b; b1 = $f.b1; base = $f.base; baseOk = $f.baseOk; bn = $f.bn; ch = $f.ch; count = $f.count; d1 = $f.d1; di = $f.di; dp = $f.dp; err = $f.err; fracOk = $f.fracOk; i = $f.i; n = $f.n; r = $f.r; res = $f.res; z = $f.z; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 54972  		res = nat.nil;
 54973  		b = 0;
 54974  		count = 0;
 54975  		err = $ifaceNil;
 54976  		z = this;
 54977  		baseOk = (base === 0) || !fracOk && 2 <= base && base <= 62 || fracOk && ((base === 2) || (base === 10) || (base === 16));
 54978  		/* */ if (!baseOk) { $s = 1; continue; }
 54979  		/* */ $s = 2; continue;
 54980  		/* if (!baseOk) { */ case 1:
 54981  			_r$3 = fmt.Sprintf("illegal number base %d", new sliceType([new $Int(base)])); /* */ $s = 3; case 3: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 54982  			$panic(new $String(_r$3));
 54983  		/* } */ case 2:
 54984  		_r$4 = r.ReadByte(); /* */ $s = 4; case 4: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 54985  		_tuple = _r$4;
 54986  		ch = _tuple[0];
 54987  		err = _tuple[1];
 54988  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 54989  			$s = -1; return [res, b, count, err];
 54990  		}
 54991  		b = base;
 54992  		/* */ if (base === 0) { $s = 5; continue; }
 54993  		/* */ $s = 6; continue;
 54994  		/* if (base === 0) { */ case 5:
 54995  			b = 10;
 54996  			/* */ if (ch === 48) { $s = 7; continue; }
 54997  			/* */ $s = 8; continue;
 54998  			/* if (ch === 48) { */ case 7:
 54999  				count = 1;
 55000  					_r$5 = r.ReadByte(); /* */ $s = 10; case 10: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
 55001  					_tuple$1 = _r$5;
 55002  					ch = _tuple$1[0];
 55003  					err = _tuple$1[1];
 55004  					_1 = err;
 55005  					/* */ if ($interfaceIsEqual(_1, $ifaceNil)) { $s = 11; continue; }
 55006  					/* */ if ($interfaceIsEqual(_1, (io.EOF))) { $s = 12; continue; }
 55007  					/* */ $s = 13; continue;
 55008  					/* if ($interfaceIsEqual(_1, $ifaceNil)) { */ case 11:
 55009  						if (!fracOk) {
 55010  							b = 8;
 55011  						}
 55012  						_2 = ch;
 55013  						if ((_2 === (120)) || (_2 === (88))) {
 55014  							b = 16;
 55015  						} else if ((_2 === (98)) || (_2 === (66))) {
 55016  							b = 2;
 55017  						}
 55018  							_3 = b;
 55019  							/* */ if ((_3 === (16)) || (_3 === (2))) { $s = 16; continue; }
 55020  							/* */ if (_3 === (8)) { $s = 17; continue; }
 55021  							/* */ $s = 18; continue;
 55022  							/* if ((_3 === (16)) || (_3 === (2))) { */ case 16:
 55023  								count = 0;
 55024  								_r$6 = r.ReadByte(); /* */ $s = 19; case 19: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
 55025  								_tuple$2 = _r$6;
 55026  								ch = _tuple$2[0];
 55027  								err = _tuple$2[1];
 55028  								if (!($interfaceIsEqual(err, $ifaceNil))) {
 55029  									$s = -1; return [res, b, count, err];
 55030  								}
 55031  								$s = 18; continue;
 55032  							/* } else if (_3 === (8)) { */ case 17:
 55033  								count = 0;
 55034  							/* } */ case 18:
 55035  						case 15:
 55036  						$s = 14; continue;
 55037  					/* } else if ($interfaceIsEqual(_1, (io.EOF))) { */ case 12:
 55038  						res = $subslice(z, 0, 0);
 55039  						err = $ifaceNil;
 55040  						$s = -1; return [res, b, count, err];
 55041  					/* } else { */ case 13:
 55042  						$s = -1; return [res, b, count, err];
 55043  					/* } */ case 14:
 55044  				case 9:
 55045  			/* } */ case 8:
 55046  		/* } */ case 6:
 55047  		z = $subslice(z, 0, 0);
 55048  		b1 = ((b >>> 0));
 55049  		_tuple$3 = maxPow(b1);
 55050  		bn = _tuple$3[0];
 55051  		n = _tuple$3[1];
 55052  		di = 0;
 55053  		i = 0;
 55054  		dp = -1;
 55055  		/* while (true) { */ case 20:
 55056  			/* */ if (fracOk && (ch === 46)) { $s = 22; continue; }
 55057  			/* */ $s = 23; continue;
 55058  			/* if (fracOk && (ch === 46)) { */ case 22:
 55059  				fracOk = false;
 55060  				dp = count;
 55061  				_r$7 = r.ReadByte(); /* */ $s = 24; case 24: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
 55062  				_tuple$4 = _r$7;
 55063  				ch = _tuple$4[0];
 55064  				err = _tuple$4[1];
 55065  				if (!($interfaceIsEqual(err, $ifaceNil))) {
 55066  					if ($interfaceIsEqual(err, io.EOF)) {
 55067  						err = $ifaceNil;
 55068  						/* break; */ $s = 21; continue;
 55069  					}
 55070  					$s = -1; return [res, b, count, err];
 55071  				}
 55072  			/* } */ case 23:
 55073  			d1 = 0;
 55074  			if (48 <= ch && ch <= 57) {
 55075  				d1 = (((ch - 48 << 24 >>> 24) >>> 0));
 55076  			} else if (97 <= ch && ch <= 122) {
 55077  				d1 = ((((ch - 97 << 24 >>> 24) + 10 << 24 >>> 24) >>> 0));
 55078  			} else if (65 <= ch && ch <= 90) {
 55079  				if (b <= 36) {
 55080  					d1 = ((((ch - 65 << 24 >>> 24) + 10 << 24 >>> 24) >>> 0));
 55081  				} else {
 55082  					d1 = ((((ch - 65 << 24 >>> 24) + 36 << 24 >>> 24) >>> 0));
 55083  				}
 55084  			} else {
 55085  				d1 = 63;
 55086  			}
 55087  			/* */ if (d1 >= b1) { $s = 25; continue; }
 55088  			/* */ $s = 26; continue;
 55089  			/* if (d1 >= b1) { */ case 25:
 55090  				_r$8 = r.UnreadByte(); /* */ $s = 27; case 27: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
 55091  				_r$8;
 55092  				/* break; */ $s = 21; continue;
 55093  			/* } */ case 26:
 55094  			count = count + (1) >> 0;
 55095  			di = ($imul(di, b1) >>> 0) + d1 >>> 0;
 55096  			i = i + (1) >> 0;
 55097  			if (i === n) {
 55098  				z = z.mulAddWW(z, bn, di);
 55099  				di = 0;
 55100  				i = 0;
 55101  			}
 55102  			_r$9 = r.ReadByte(); /* */ $s = 28; case 28: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 55103  			_tuple$5 = _r$9;
 55104  			ch = _tuple$5[0];
 55105  			err = _tuple$5[1];
 55106  			if (!($interfaceIsEqual(err, $ifaceNil))) {
 55107  				if ($interfaceIsEqual(err, io.EOF)) {
 55108  					err = $ifaceNil;
 55109  					/* break; */ $s = 21; continue;
 55110  				}
 55111  				$s = -1; return [res, b, count, err];
 55112  			}
 55113  		/* } */ $s = 20; continue; case 21:
 55114  		if (count === 0) {
 55115  			if ((base === 0) && (b === 8)) {
 55116  				count = 1;
 55117  				b = 10;
 55118  			} else if (!((base === 0)) || !((b === 8))) {
 55119  				err = errors.New("syntax error scanning number");
 55120  			}
 55121  			$s = -1; return [res, b, count, err];
 55122  		}
 55123  		if (i > 0) {
 55124  			z = z.mulAddWW(z, pow(b1, i), di);
 55125  		}
 55126  		res = z.norm();
 55127  		if (dp >= 0) {
 55128  			count = dp - count >> 0;
 55129  		}
 55130  		$s = -1; return [res, b, count, err];
 55131  		/* */ } return; } if ($f === undefined) { $f = { $blk: nat.prototype.scan }; } $f._1 = _1; $f._2 = _2; $f._3 = _3; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._r$8 = _r$8; $f._r$9 = _r$9; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f._tuple$4 = _tuple$4; $f._tuple$5 = _tuple$5; $f.b = b; $f.b1 = b1; $f.base = base; $f.baseOk = baseOk; $f.bn = bn; $f.ch = ch; $f.count = count; $f.d1 = d1; $f.di = di; $f.dp = dp; $f.err = err; $f.fracOk = fracOk; $f.i = i; $f.n = n; $f.r = r; $f.res = res; $f.z = z; $f.$s = $s; $f.$r = $r; return $f;
 55132  	};
 55133  	$ptrType(nat).prototype.scan = function(r, base, fracOk) { return this.$get().scan(r, base, fracOk); };
 55134  	nat.prototype.utoa = function(base) {
 55135  		var _r$3, base, x, $s, $r;
 55136  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$3 = $f._r$3; base = $f.base; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 55137  		x = this;
 55138  		_r$3 = x.itoa(false, base); /* */ $s = 1; case 1: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 55139  		$s = -1; return _r$3;
 55140  		/* */ } return; } if ($f === undefined) { $f = { $blk: nat.prototype.utoa }; } $f._r$3 = _r$3; $f.base = base; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
 55141  	};
 55142  	$ptrType(nat).prototype.utoa = function(base) { return this.$get().utoa(base); };
 55143  	nat.prototype.itoa = function(neg, base) {
 55144  		var _r$3, _tuple, b, base, bb, i, k, mask, nbits, ndigits, neg, q, s, shift, table, w, x, y, y$1, y$2, y$3, y$4, $s, $r;
 55145  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$3 = $f._r$3; _tuple = $f._tuple; b = $f.b; base = $f.base; bb = $f.bb; i = $f.i; k = $f.k; mask = $f.mask; nbits = $f.nbits; ndigits = $f.ndigits; neg = $f.neg; q = $f.q; s = $f.s; shift = $f.shift; table = $f.table; w = $f.w; x = $f.x; y = $f.y; y$1 = $f.y$1; y$2 = $f.y$2; y$3 = $f.y$3; y$4 = $f.y$4; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 55146  		x = this;
 55147  		if (base < 2 || base > 62) {
 55148  			$panic(new $String("invalid base"));
 55149  		}
 55150  		if (x.$length === 0) {
 55151  			$s = -1; return (new sliceType$1($stringToBytes("0")));
 55152  		}
 55153  		i = (((x.bitLen()) / math.Log2((base)) >> 0)) + 1 >> 0;
 55154  		if (neg) {
 55155  			i = i + (1) >> 0;
 55156  		}
 55157  		s = $makeSlice(sliceType$1, i);
 55158  		b = ((base >>> 0));
 55159  		/* */ if (b === ((b & (-b >>> 0)) >>> 0)) { $s = 1; continue; }
 55160  		/* */ $s = 2; continue;
 55161  		/* if (b === ((b & (-b >>> 0)) >>> 0)) { */ case 1:
 55162  			shift = ((bits.TrailingZeros(((b >>> 0))) >>> 0));
 55163  			mask = ((((y = shift, y < 32 ? (1 << y) : 0) >>> 0) - 1 >>> 0));
 55164  			w = (0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0]);
 55165  			nbits = 32;
 55166  			k = 1;
 55167  			while (true) {
 55168  				if (!(k < x.$length)) { break; }
 55169  				while (true) {
 55170  					if (!(nbits >= shift)) { break; }
 55171  					i = i - (1) >> 0;
 55172  					((i < 0 || i >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + i] = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ".charCodeAt(((w & mask) >>> 0)));
 55173  					w = (y$1 = (shift), y$1 < 32 ? (w >>> y$1) : 0) >>> 0;
 55174  					nbits = nbits - (shift) >>> 0;
 55175  				}
 55176  				if (nbits === 0) {
 55177  					w = ((k < 0 || k >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + k]);
 55178  					nbits = 32;
 55179  				} else {
 55180  					w = (w | (((y$2 = nbits, y$2 < 32 ? (((k < 0 || k >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + k]) << y$2) : 0) >>> 0))) >>> 0;
 55181  					i = i - (1) >> 0;
 55182  					((i < 0 || i >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + i] = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ".charCodeAt(((w & mask) >>> 0)));
 55183  					w = (y$3 = ((shift - nbits >>> 0)), y$3 < 32 ? (((k < 0 || k >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + k]) >>> y$3) : 0) >>> 0;
 55184  					nbits = 32 - ((shift - nbits >>> 0)) >>> 0;
 55185  				}
 55186  				k = k + (1) >> 0;
 55187  			}
 55188  			while (true) {
 55189  				if (!(!((w === 0)))) { break; }
 55190  				i = i - (1) >> 0;
 55191  				((i < 0 || i >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + i] = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ".charCodeAt(((w & mask) >>> 0)));
 55192  				w = (y$4 = (shift), y$4 < 32 ? (w >>> y$4) : 0) >>> 0;
 55193  			}
 55194  			$s = 3; continue;
 55195  		/* } else { */ case 2:
 55196  			_tuple = maxPow(b);
 55197  			bb = _tuple[0];
 55198  			ndigits = _tuple[1];
 55199  			_r$3 = divisors(x.$length, b, ndigits, bb); /* */ $s = 4; case 4: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 55200  			table = _r$3;
 55201  			q = (nat.nil).set(x);
 55202  			$r = q.convertWords(s, b, ndigits, bb, table); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 55203  			i = 0;
 55204  			while (true) {
 55205  				if (!(((i < 0 || i >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + i]) === 48)) { break; }
 55206  				i = i + (1) >> 0;
 55207  			}
 55208  		/* } */ case 3:
 55209  		if (neg) {
 55210  			i = i - (1) >> 0;
 55211  			((i < 0 || i >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + i] = 45);
 55212  		}
 55213  		$s = -1; return $subslice(s, i);
 55214  		/* */ } return; } if ($f === undefined) { $f = { $blk: nat.prototype.itoa }; } $f._r$3 = _r$3; $f._tuple = _tuple; $f.b = b; $f.base = base; $f.bb = bb; $f.i = i; $f.k = k; $f.mask = mask; $f.nbits = nbits; $f.ndigits = ndigits; $f.neg = neg; $f.q = q; $f.s = s; $f.shift = shift; $f.table = table; $f.w = w; $f.x = x; $f.y = y; $f.y$1 = y$1; $f.y$2 = y$2; $f.y$3 = y$3; $f.y$4 = y$4; $f.$s = $s; $f.$r = $r; return $f;
 55215  	};
 55216  	$ptrType(nat).prototype.itoa = function(neg, base) { return this.$get().itoa(neg, base); };
 55217  	nat.prototype.convertWords = function(s, b, ndigits, bb, table) {
 55218  		var _q, _q$1, _r$3, _r$4, _tuple, _tuple$1, _tuple$2, b, bb, h, i, index, j, j$1, maxLength, minLength, ndigits, q, r, r$1, s, t, table, x, $s, $r;
 55219  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _q = $f._q; _q$1 = $f._q$1; _r$3 = $f._r$3; _r$4 = $f._r$4; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; b = $f.b; bb = $f.bb; h = $f.h; i = $f.i; index = $f.index; j = $f.j; j$1 = $f.j$1; maxLength = $f.maxLength; minLength = $f.minLength; ndigits = $f.ndigits; q = $f.q; r = $f.r; r$1 = $f.r$1; s = $f.s; t = $f.t; table = $f.table; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 55220  		q = this;
 55221  		/* */ if (!(table === sliceType$3.nil)) { $s = 1; continue; }
 55222  		/* */ $s = 2; continue;
 55223  		/* if (!(table === sliceType$3.nil)) { */ case 1:
 55224  			r = nat.nil;
 55225  			index = table.$length - 1 >> 0;
 55226  			/* while (true) { */ case 3:
 55227  				/* if (!(q.$length > leafSize)) { break; } */ if(!(q.$length > leafSize)) { $s = 4; continue; }
 55228  				maxLength = q.bitLen();
 55229  				minLength = maxLength >> 1 >> 0;
 55230  				while (true) {
 55231  					if (!(index > 0 && (x = index - 1 >> 0, ((x < 0 || x >= table.$length) ? ($throwRuntimeError("index out of range"), undefined) : table.$array[table.$offset + x])).nbits > minLength)) { break; }
 55232  					index = index - (1) >> 0;
 55233  				}
 55234  				if (((index < 0 || index >= table.$length) ? ($throwRuntimeError("index out of range"), undefined) : table.$array[table.$offset + index]).nbits >= maxLength && ((index < 0 || index >= table.$length) ? ($throwRuntimeError("index out of range"), undefined) : table.$array[table.$offset + index]).bbb.cmp(q) >= 0) {
 55235  					index = index - (1) >> 0;
 55236  					if (index < 0) {
 55237  						$panic(new $String("internal inconsistency"));
 55238  					}
 55239  				}
 55240  				_r$3 = q.div(r, q, ((index < 0 || index >= table.$length) ? ($throwRuntimeError("index out of range"), undefined) : table.$array[table.$offset + index]).bbb); /* */ $s = 5; case 5: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 55241  				_tuple = _r$3;
 55242  				q = _tuple[0];
 55243  				r = _tuple[1];
 55244  				h = s.$length - ((index < 0 || index >= table.$length) ? ($throwRuntimeError("index out of range"), undefined) : table.$array[table.$offset + index]).ndigits >> 0;
 55245  				$r = r.convertWords($subslice(s, h), b, ndigits, bb, $subslice(table, 0, index)); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 55246  				s = $subslice(s, 0, h);
 55247  			/* } */ $s = 3; continue; case 4:
 55248  		/* } */ case 2:
 55249  		i = s.$length;
 55250  		r$1 = 0;
 55251  		if (b === 10) {
 55252  			while (true) {
 55253  				if (!(q.$length > 0)) { break; }
 55254  				_tuple$1 = q.divW(q, bb);
 55255  				q = _tuple$1[0];
 55256  				r$1 = _tuple$1[1];
 55257  				j = 0;
 55258  				while (true) {
 55259  					if (!(j < ndigits && i > 0)) { break; }
 55260  					i = i - (1) >> 0;
 55261  					t = (_q = r$1 / 10, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >>> 0 : $throwRuntimeError("integer divide by zero"));
 55262  					((i < 0 || i >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + i] = (48 + (((r$1 - ($imul(t, 10) >>> 0) >>> 0) << 24 >>> 24)) << 24 >>> 24));
 55263  					r$1 = t;
 55264  					j = j + (1) >> 0;
 55265  				}
 55266  			}
 55267  		} else {
 55268  			while (true) {
 55269  				if (!(q.$length > 0)) { break; }
 55270  				_tuple$2 = q.divW(q, bb);
 55271  				q = _tuple$2[0];
 55272  				r$1 = _tuple$2[1];
 55273  				j$1 = 0;
 55274  				while (true) {
 55275  					if (!(j$1 < ndigits && i > 0)) { break; }
 55276  					i = i - (1) >> 0;
 55277  					((i < 0 || i >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + i] = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ".charCodeAt((_r$4 = r$1 % b, _r$4 === _r$4 ? _r$4 : $throwRuntimeError("integer divide by zero"))));
 55278  					r$1 = (_q$1 = r$1 / (b), (_q$1 === _q$1 && _q$1 !== 1/0 && _q$1 !== -1/0) ? _q$1 >>> 0 : $throwRuntimeError("integer divide by zero"));
 55279  					j$1 = j$1 + (1) >> 0;
 55280  				}
 55281  			}
 55282  		}
 55283  		while (true) {
 55284  			if (!(i > 0)) { break; }
 55285  			i = i - (1) >> 0;
 55286  			((i < 0 || i >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + i] = 48);
 55287  		}
 55288  		$s = -1; return;
 55289  		/* */ } return; } if ($f === undefined) { $f = { $blk: nat.prototype.convertWords }; } $f._q = _q; $f._q$1 = _q$1; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f.b = b; $f.bb = bb; $f.h = h; $f.i = i; $f.index = index; $f.j = j; $f.j$1 = j$1; $f.maxLength = maxLength; $f.minLength = minLength; $f.ndigits = ndigits; $f.q = q; $f.r = r; $f.r$1 = r$1; $f.s = s; $f.t = t; $f.table = table; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
 55290  	};
 55291  	$ptrType(nat).prototype.convertWords = function(s, b, ndigits, bb, table) { return this.$get().convertWords(s, b, ndigits, bb, table); };
 55292  	nat.prototype.expWW = function(x, y) {
 55293  		var _r$3, x, y, z, $s, $r;
 55294  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$3 = $f._r$3; x = $f.x; y = $f.y; z = $f.z; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 55295  		z = this;
 55296  		_r$3 = z.expNN((nat.nil).setWord(x), (nat.nil).setWord(y), nat.nil); /* */ $s = 1; case 1: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 55297  		$s = -1; return _r$3;
 55298  		/* */ } return; } if ($f === undefined) { $f = { $blk: nat.prototype.expWW }; } $f._r$3 = _r$3; $f.x = x; $f.y = y; $f.z = z; $f.$s = $s; $f.$r = $r; return $f;
 55299  	};
 55300  	$ptrType(nat).prototype.expWW = function(x, y) { return this.$get().expWW(x, y); };
 55301  	divisors = function(m, b, ndigits, bb) {
 55302  		var _r$3, b, bb, i, k, larger, m, ndigits, table, words, x, x$1, x$2, y, $s, $r;
 55303  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$3 = $f._r$3; b = $f.b; bb = $f.bb; i = $f.i; k = $f.k; larger = $f.larger; m = $f.m; ndigits = $f.ndigits; table = $f.table; words = $f.words; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; y = $f.y; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 55304  		if ((leafSize === 0) || m <= leafSize) {
 55305  			$s = -1; return sliceType$3.nil;
 55306  		}
 55307  		k = 1;
 55308  		words = leafSize;
 55309  		while (true) {
 55310  			if (!(words < (m >> 1 >> 0) && k < 64)) { break; }
 55311  			k = k + (1) >> 0;
 55312  			words = (y = (1), y < 32 ? (words << y) : 0) >> 0;
 55313  		}
 55314  		table = sliceType$3.nil;
 55315  		if (b === 10) {
 55316  			cacheBase10.Mutex.Lock();
 55317  			table = $subslice(new sliceType$3(cacheBase10.table), 0, k);
 55318  		} else {
 55319  			table = $makeSlice(sliceType$3, k);
 55320  		}
 55321  		/* */ if ((x = k - 1 >> 0, ((x < 0 || x >= table.$length) ? ($throwRuntimeError("index out of range"), undefined) : table.$array[table.$offset + x])).ndigits === 0) { $s = 1; continue; }
 55322  		/* */ $s = 2; continue;
 55323  		/* if ((x = k - 1 >> 0, ((x < 0 || x >= table.$length) ? ($throwRuntimeError("index out of range"), undefined) : table.$array[table.$offset + x])).ndigits === 0) { */ case 1:
 55324  			larger = nat.nil;
 55325  			i = 0;
 55326  			/* while (true) { */ case 3:
 55327  				/* if (!(i < k)) { break; } */ if(!(i < k)) { $s = 4; continue; }
 55328  				/* */ if (((i < 0 || i >= table.$length) ? ($throwRuntimeError("index out of range"), undefined) : table.$array[table.$offset + i]).ndigits === 0) { $s = 5; continue; }
 55329  				/* */ $s = 6; continue;
 55330  				/* if (((i < 0 || i >= table.$length) ? ($throwRuntimeError("index out of range"), undefined) : table.$array[table.$offset + i]).ndigits === 0) { */ case 5:
 55331  					/* */ if (i === 0) { $s = 7; continue; }
 55332  					/* */ $s = 8; continue;
 55333  					/* if (i === 0) { */ case 7:
 55334  						_r$3 = (nat.nil).expWW(bb, ((leafSize >>> 0))); /* */ $s = 10; case 10: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 55335  						(0 >= table.$length ? ($throwRuntimeError("index out of range"), undefined) : table.$array[table.$offset + 0]).bbb = _r$3;
 55336  						(0 >= table.$length ? ($throwRuntimeError("index out of range"), undefined) : table.$array[table.$offset + 0]).ndigits = $imul(ndigits, leafSize);
 55337  						$s = 9; continue;
 55338  					/* } else { */ case 8:
 55339  						((i < 0 || i >= table.$length) ? ($throwRuntimeError("index out of range"), undefined) : table.$array[table.$offset + i]).bbb = (nat.nil).sqr((x$1 = i - 1 >> 0, ((x$1 < 0 || x$1 >= table.$length) ? ($throwRuntimeError("index out of range"), undefined) : table.$array[table.$offset + x$1])).bbb);
 55340  						((i < 0 || i >= table.$length) ? ($throwRuntimeError("index out of range"), undefined) : table.$array[table.$offset + i]).ndigits = $imul(2, (x$2 = i - 1 >> 0, ((x$2 < 0 || x$2 >= table.$length) ? ($throwRuntimeError("index out of range"), undefined) : table.$array[table.$offset + x$2])).ndigits);
 55341  					/* } */ case 9:
 55342  					larger = (nat.nil).set(((i < 0 || i >= table.$length) ? ($throwRuntimeError("index out of range"), undefined) : table.$array[table.$offset + i]).bbb);
 55343  					while (true) {
 55344  						if (!(mulAddVWW($subslice(new sliceType$2(larger.$array), larger.$offset, larger.$offset + larger.$length), $subslice(new sliceType$2(larger.$array), larger.$offset, larger.$offset + larger.$length), b, 0) === 0)) { break; }
 55345  						((i < 0 || i >= table.$length) ? ($throwRuntimeError("index out of range"), undefined) : table.$array[table.$offset + i]).bbb = ((i < 0 || i >= table.$length) ? ($throwRuntimeError("index out of range"), undefined) : table.$array[table.$offset + i]).bbb.set(larger);
 55346  						((i < 0 || i >= table.$length) ? ($throwRuntimeError("index out of range"), undefined) : table.$array[table.$offset + i]).ndigits = ((i < 0 || i >= table.$length) ? ($throwRuntimeError("index out of range"), undefined) : table.$array[table.$offset + i]).ndigits + (1) >> 0;
 55347  					}
 55348  					((i < 0 || i >= table.$length) ? ($throwRuntimeError("index out of range"), undefined) : table.$array[table.$offset + i]).nbits = ((i < 0 || i >= table.$length) ? ($throwRuntimeError("index out of range"), undefined) : table.$array[table.$offset + i]).bbb.bitLen();
 55349  				/* } */ case 6:
 55350  				i = i + (1) >> 0;
 55351  			/* } */ $s = 3; continue; case 4:
 55352  		/* } */ case 2:
 55353  		if (b === 10) {
 55354  			cacheBase10.Mutex.Unlock();
 55355  		}
 55356  		$s = -1; return table;
 55357  		/* */ } return; } if ($f === undefined) { $f = { $blk: divisors }; } $f._r$3 = _r$3; $f.b = b; $f.bb = bb; $f.i = i; $f.k = k; $f.larger = larger; $f.m = m; $f.ndigits = ndigits; $f.table = table; $f.words = words; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.y = y; $f.$s = $s; $f.$r = $r; return $f;
 55358  	};
 55359  	Int.ptr.prototype.ProbablyPrime = function(n) {
 55360  		var _1, _r$10, _r$11, _r$12, _r$13, _r$14, _r$15, _r$16, _r$17, _r$18, _r$19, _r$20, _r$21, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _tmp, _tmp$1, _v, n, r, rA, rB, w, x, x$1, x$2, x$3, $s, $r;
 55361  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _r$10 = $f._r$10; _r$11 = $f._r$11; _r$12 = $f._r$12; _r$13 = $f._r$13; _r$14 = $f._r$14; _r$15 = $f._r$15; _r$16 = $f._r$16; _r$17 = $f._r$17; _r$18 = $f._r$18; _r$19 = $f._r$19; _r$20 = $f._r$20; _r$21 = $f._r$21; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _r$8 = $f._r$8; _r$9 = $f._r$9; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _v = $f._v; n = $f.n; r = $f.r; rA = $f.rA; rB = $f.rB; w = $f.w; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; x$3 = $f.x$3; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 55362  		x = this;
 55363  		if (n < 0) {
 55364  			$panic(new $String("negative n for ProbablyPrime"));
 55365  		}
 55366  		if (x.neg || (x.abs.$length === 0)) {
 55367  			$s = -1; return false;
 55368  		}
 55369  		w = (x$1 = x.abs, (0 >= x$1.$length ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + 0]));
 55370  		if ((x.abs.$length === 1) && w < 64) {
 55371  			$s = -1; return !((x$2 = (x$3 = $shiftLeft64(new $Uint64(0, 1), w), new $Uint64(673221152 & x$3.$high, (2693408940 & x$3.$low) >>> 0)), (x$2.$high === 0 && x$2.$low === 0)));
 55372  		}
 55373  		if (((w & 1) >>> 0) === 0) {
 55374  			$s = -1; return false;
 55375  		}
 55376  		_tmp = 0;
 55377  		_tmp$1 = 0;
 55378  		rA = _tmp;
 55379  		rB = _tmp$1;
 55380  		_1 = 32;
 55381  		if (_1 === (32)) {
 55382  			rA = ((x.abs.modW(4127218095) >>> 0));
 55383  			rB = ((x.abs.modW(3948078067) >>> 0));
 55384  		} else if (_1 === (64)) {
 55385  			r = x.abs.modW(820596253);
 55386  			rA = (((_r$3 = r % 4127218095, _r$3 === _r$3 ? _r$3 : $throwRuntimeError("integer divide by zero")) >>> 0));
 55387  			rB = (((_r$4 = r % 3948078067, _r$4 === _r$4 ? _r$4 : $throwRuntimeError("integer divide by zero")) >>> 0));
 55388  		} else {
 55389  			$panic(new $String("math/big: invalid word size"));
 55390  		}
 55391  		if (((_r$5 = rA % 3, _r$5 === _r$5 ? _r$5 : $throwRuntimeError("integer divide by zero")) === 0) || ((_r$6 = rA % 5, _r$6 === _r$6 ? _r$6 : $throwRuntimeError("integer divide by zero")) === 0) || ((_r$7 = rA % 7, _r$7 === _r$7 ? _r$7 : $throwRuntimeError("integer divide by zero")) === 0) || ((_r$8 = rA % 11, _r$8 === _r$8 ? _r$8 : $throwRuntimeError("integer divide by zero")) === 0) || ((_r$9 = rA % 13, _r$9 === _r$9 ? _r$9 : $throwRuntimeError("integer divide by zero")) === 0) || ((_r$10 = rA % 17, _r$10 === _r$10 ? _r$10 : $throwRuntimeError("integer divide by zero")) === 0) || ((_r$11 = rA % 19, _r$11 === _r$11 ? _r$11 : $throwRuntimeError("integer divide by zero")) === 0) || ((_r$12 = rA % 23, _r$12 === _r$12 ? _r$12 : $throwRuntimeError("integer divide by zero")) === 0) || ((_r$13 = rA % 37, _r$13 === _r$13 ? _r$13 : $throwRuntimeError("integer divide by zero")) === 0) || ((_r$14 = rB % 29, _r$14 === _r$14 ? _r$14 : $throwRuntimeError("integer divide by zero")) === 0) || ((_r$15 = rB % 31, _r$15 === _r$15 ? _r$15 : $throwRuntimeError("integer divide by zero")) === 0) || ((_r$16 = rB % 41, _r$16 === _r$16 ? _r$16 : $throwRuntimeError("integer divide by zero")) === 0) || ((_r$17 = rB % 43, _r$17 === _r$17 ? _r$17 : $throwRuntimeError("integer divide by zero")) === 0) || ((_r$18 = rB % 47, _r$18 === _r$18 ? _r$18 : $throwRuntimeError("integer divide by zero")) === 0) || ((_r$19 = rB % 53, _r$19 === _r$19 ? _r$19 : $throwRuntimeError("integer divide by zero")) === 0)) {
 55392  			$s = -1; return false;
 55393  		}
 55394  		_r$20 = x.abs.probablyPrimeMillerRabin(n + 1 >> 0, true); /* */ $s = 2; case 2: if($c) { $c = false; _r$20 = _r$20.$blk(); } if (_r$20 && _r$20.$blk !== undefined) { break s; }
 55395  		if (!(_r$20)) { _v = false; $s = 1; continue s; }
 55396  		_r$21 = x.abs.probablyPrimeLucas(); /* */ $s = 3; case 3: if($c) { $c = false; _r$21 = _r$21.$blk(); } if (_r$21 && _r$21.$blk !== undefined) { break s; }
 55397  		_v = _r$21; case 1:
 55398  		$s = -1; return _v;
 55399  		/* */ } return; } if ($f === undefined) { $f = { $blk: Int.ptr.prototype.ProbablyPrime }; } $f._1 = _1; $f._r$10 = _r$10; $f._r$11 = _r$11; $f._r$12 = _r$12; $f._r$13 = _r$13; $f._r$14 = _r$14; $f._r$15 = _r$15; $f._r$16 = _r$16; $f._r$17 = _r$17; $f._r$18 = _r$18; $f._r$19 = _r$19; $f._r$20 = _r$20; $f._r$21 = _r$21; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._r$8 = _r$8; $f._r$9 = _r$9; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._v = _v; $f.n = n; $f.r = r; $f.rA = rA; $f.rB = rB; $f.w = w; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.x$3 = x$3; $f.$s = $s; $f.$r = $r; return $f;
 55400  	};
 55401  	Int.prototype.ProbablyPrime = function(n) { return this.$val.ProbablyPrime(n); };
 55402  	nat.prototype.probablyPrimeMillerRabin = function(reps, force2) {
 55403  		var _r$3, _r$4, _r$5, _tmp, _tmp$1, _tmp$2, _tuple, force2, i, j, k, n, nm1, nm3, nm3Len, q, quotient, rand$1, reps, x, x$1, y, $s, $r;
 55404  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tuple = $f._tuple; force2 = $f.force2; i = $f.i; j = $f.j; k = $f.k; n = $f.n; nm1 = $f.nm1; nm3 = $f.nm3; nm3Len = $f.nm3Len; q = $f.q; quotient = $f.quotient; rand$1 = $f.rand$1; reps = $f.reps; x = $f.x; x$1 = $f.x$1; y = $f.y; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 55405  		n = this;
 55406  		nm1 = (nat.nil).sub(n, natOne);
 55407  		k = nm1.trailingZeroBits();
 55408  		q = (nat.nil).shr(nm1, k);
 55409  		nm3 = (nat.nil).sub(nm1, natTwo);
 55410  		rand$1 = rand.New(rand.NewSource(((x = (0 >= n.$length ? ($throwRuntimeError("index out of range"), undefined) : n.$array[n.$offset + 0]), new $Int64(0, x.constructor === Number ? x : 1)))));
 55411  		_tmp = nat.nil;
 55412  		_tmp$1 = nat.nil;
 55413  		_tmp$2 = nat.nil;
 55414  		x$1 = _tmp;
 55415  		y = _tmp$1;
 55416  		quotient = _tmp$2;
 55417  		nm3Len = nm3.bitLen();
 55418  		i = 0;
 55419  		/* while (true) { */ case 1:
 55420  			/* if (!(i < reps)) { break; } */ if(!(i < reps)) { $s = 2; continue; }
 55421  			/* */ if ((i === (reps - 1 >> 0)) && force2) { $s = 3; continue; }
 55422  			/* */ $s = 4; continue;
 55423  			/* if ((i === (reps - 1 >> 0)) && force2) { */ case 3:
 55424  				x$1 = x$1.set(natTwo);
 55425  				$s = 5; continue;
 55426  			/* } else { */ case 4:
 55427  				_r$3 = x$1.random(rand$1, nm3, nm3Len); /* */ $s = 6; case 6: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 55428  				x$1 = _r$3;
 55429  				x$1 = x$1.add(x$1, natTwo);
 55430  			/* } */ case 5:
 55431  			_r$4 = y.expNN(x$1, q, n); /* */ $s = 7; case 7: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 55432  			y = _r$4;
 55433  			/* */ if ((y.cmp(natOne) === 0) || (y.cmp(nm1) === 0)) { $s = 8; continue; }
 55434  			/* */ $s = 9; continue;
 55435  			/* if ((y.cmp(natOne) === 0) || (y.cmp(nm1) === 0)) { */ case 8:
 55436  				i = i + (1) >> 0;
 55437  				/* continue; */ $s = 1; continue;
 55438  			/* } */ case 9:
 55439  			j = 1;
 55440  			/* while (true) { */ case 10:
 55441  				/* if (!(j < k)) { break; } */ if(!(j < k)) { $s = 11; continue; }
 55442  				y = y.sqr(y);
 55443  				_r$5 = quotient.div(y, y, n); /* */ $s = 12; case 12: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
 55444  				_tuple = _r$5;
 55445  				quotient = _tuple[0];
 55446  				y = _tuple[1];
 55447  				if (y.cmp(nm1) === 0) {
 55448  					i = i + (1) >> 0;
 55449  					/* continue NextRandom; */ $s = 1; continue s;
 55450  				}
 55451  				if (y.cmp(natOne) === 0) {
 55452  					$s = -1; return false;
 55453  				}
 55454  				j = j + (1) >>> 0;
 55455  			/* } */ $s = 10; continue; case 11:
 55456  			$s = -1; return false;
 55457  		/* } */ $s = 1; continue; case 2:
 55458  		$s = -1; return true;
 55459  		/* */ } return; } if ($f === undefined) { $f = { $blk: nat.prototype.probablyPrimeMillerRabin }; } $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tuple = _tuple; $f.force2 = force2; $f.i = i; $f.j = j; $f.k = k; $f.n = n; $f.nm1 = nm1; $f.nm3 = nm3; $f.nm3Len = nm3Len; $f.q = q; $f.quotient = quotient; $f.rand$1 = rand$1; $f.reps = reps; $f.x = x; $f.x$1 = x$1; $f.y = y; $f.$s = $s; $f.$r = $r; return $f;
 55460  	};
 55461  	$ptrType(nat).prototype.probablyPrimeMillerRabin = function(reps, force2) { return this.$get().probablyPrimeMillerRabin(reps, force2); };
 55462  	nat.prototype.probablyPrimeLucas = function() {
 55463  		var _r$10, _r$11, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _tmp, _tmp$1, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, _tuple$5, d, i, intD, intN, j, n, natP, nm2, p, r, s, t, t1, t1$1, t2, t2$1, t3, vk, vk1, $s, $r;
 55464  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$10 = $f._r$10; _r$11 = $f._r$11; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _r$8 = $f._r$8; _r$9 = $f._r$9; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; _tuple$4 = $f._tuple$4; _tuple$5 = $f._tuple$5; d = $f.d; i = $f.i; intD = $f.intD; intN = $f.intN; j = $f.j; n = $f.n; natP = $f.natP; nm2 = $f.nm2; p = $f.p; r = $f.r; s = $f.s; t = $f.t; t1 = $f.t1; t1$1 = $f.t1$1; t2 = $f.t2; t2$1 = $f.t2$1; t3 = $f.t3; vk = $f.vk; vk1 = $f.vk1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 55465  		n = this;
 55466  		if ((n.$length === 0) || (n.cmp(natOne) === 0)) {
 55467  			$s = -1; return false;
 55468  		}
 55469  		if ((((0 >= n.$length ? ($throwRuntimeError("index out of range"), undefined) : n.$array[n.$offset + 0]) & 1) >>> 0) === 0) {
 55470  			$s = -1; return n.cmp(natTwo) === 0;
 55471  		}
 55472  		p = 3;
 55473  		d = new nat([1]);
 55474  		t1 = (nat.nil);
 55475  		intD = new Int.ptr(false, d);
 55476  		intN = new Int.ptr(false, n);
 55477  		/* while (true) { */ case 1:
 55478  			/* */ if (p > 10000) { $s = 3; continue; }
 55479  			/* */ $s = 4; continue;
 55480  			/* if (p > 10000) { */ case 3:
 55481  				_r$3 = intN.String(); /* */ $s = 5; case 5: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 55482  				$panic(new $String("math/big: internal error: cannot find (D/n) = -1 for " + _r$3));
 55483  			/* } */ case 4:
 55484  			(0 >= d.$length ? ($throwRuntimeError("index out of range"), undefined) : d.$array[d.$offset + 0] = (($imul(p, p) >>> 0) - 4 >>> 0));
 55485  			_r$4 = Jacobi(intD, intN); /* */ $s = 6; case 6: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 55486  			j = _r$4;
 55487  			if (j === -1) {
 55488  				/* break; */ $s = 2; continue;
 55489  			}
 55490  			if (j === 0) {
 55491  				$s = -1; return (n.$length === 1) && ((0 >= n.$length ? ($throwRuntimeError("index out of range"), undefined) : n.$array[n.$offset + 0]) === (p + 2 >>> 0));
 55492  			}
 55493  			/* */ if (p === 40) { $s = 7; continue; }
 55494  			/* */ $s = 8; continue;
 55495  			/* if (p === 40) { */ case 7:
 55496  				_r$5 = t1.sqrt(n); /* */ $s = 9; case 9: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
 55497  				t1 = _r$5;
 55498  				t1 = t1.sqr(t1);
 55499  				if (t1.cmp(n) === 0) {
 55500  					$s = -1; return false;
 55501  				}
 55502  			/* } */ case 8:
 55503  			p = p + (1) >>> 0;
 55504  		/* } */ $s = 1; continue; case 2:
 55505  		s = (nat.nil).add(n, natOne);
 55506  		r = ((s.trailingZeroBits() >> 0));
 55507  		s = s.shr(s, ((r >>> 0)));
 55508  		nm2 = (nat.nil).sub(n, natTwo);
 55509  		natP = (nat.nil).setWord(p);
 55510  		vk = (nat.nil).setWord(2);
 55511  		vk1 = (nat.nil).setWord(p);
 55512  		t2 = (nat.nil);
 55513  		i = (s.bitLen());
 55514  		/* while (true) { */ case 10:
 55515  			/* if (!(i >= 0)) { break; } */ if(!(i >= 0)) { $s = 11; continue; }
 55516  			/* */ if (!((s.bit(((i >>> 0))) === 0))) { $s = 12; continue; }
 55517  			/* */ $s = 13; continue;
 55518  			/* if (!((s.bit(((i >>> 0))) === 0))) { */ case 12:
 55519  				t1 = t1.mul(vk, vk1);
 55520  				t1 = t1.add(t1, n);
 55521  				t1 = t1.sub(t1, natP);
 55522  				_r$6 = t2.div(vk, t1, n); /* */ $s = 15; case 15: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
 55523  				_tuple = _r$6;
 55524  				t2 = _tuple[0];
 55525  				vk = _tuple[1];
 55526  				t1 = t1.sqr(vk1);
 55527  				t1 = t1.add(t1, nm2);
 55528  				_r$7 = t2.div(vk1, t1, n); /* */ $s = 16; case 16: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
 55529  				_tuple$1 = _r$7;
 55530  				t2 = _tuple$1[0];
 55531  				vk1 = _tuple$1[1];
 55532  				$s = 14; continue;
 55533  			/* } else { */ case 13:
 55534  				t1 = t1.mul(vk, vk1);
 55535  				t1 = t1.add(t1, n);
 55536  				t1 = t1.sub(t1, natP);
 55537  				_r$8 = t2.div(vk1, t1, n); /* */ $s = 17; case 17: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
 55538  				_tuple$2 = _r$8;
 55539  				t2 = _tuple$2[0];
 55540  				vk1 = _tuple$2[1];
 55541  				t1 = t1.sqr(vk);
 55542  				t1 = t1.add(t1, nm2);
 55543  				_r$9 = t2.div(vk, t1, n); /* */ $s = 18; case 18: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 55544  				_tuple$3 = _r$9;
 55545  				t2 = _tuple$3[0];
 55546  				vk = _tuple$3[1];
 55547  			/* } */ case 14:
 55548  			i = i - (1) >> 0;
 55549  		/* } */ $s = 10; continue; case 11:
 55550  		/* */ if ((vk.cmp(natTwo) === 0) || (vk.cmp(nm2) === 0)) { $s = 19; continue; }
 55551  		/* */ $s = 20; continue;
 55552  		/* if ((vk.cmp(natTwo) === 0) || (vk.cmp(nm2) === 0)) { */ case 19:
 55553  			t1$1 = t1.mul(vk, natP);
 55554  			t2$1 = t2.shl(vk1, 1);
 55555  			if (t1$1.cmp(t2$1) < 0) {
 55556  				_tmp = t2$1;
 55557  				_tmp$1 = t1$1;
 55558  				t1$1 = _tmp;
 55559  				t2$1 = _tmp$1;
 55560  			}
 55561  			t1$1 = t1$1.sub(t1$1, t2$1);
 55562  			t3 = vk1;
 55563  			vk1 = nat.nil;
 55564  			$unused(vk1);
 55565  			_r$10 = t2$1.div(t3, t1$1, n); /* */ $s = 21; case 21: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
 55566  			_tuple$4 = _r$10;
 55567  			t2$1 = _tuple$4[0];
 55568  			t3 = _tuple$4[1];
 55569  			if (t3.$length === 0) {
 55570  				$s = -1; return true;
 55571  			}
 55572  		/* } */ case 20:
 55573  		t = 0;
 55574  		/* while (true) { */ case 22:
 55575  			/* if (!(t < (r - 1 >> 0))) { break; } */ if(!(t < (r - 1 >> 0))) { $s = 23; continue; }
 55576  			if (vk.$length === 0) {
 55577  				$s = -1; return true;
 55578  			}
 55579  			if ((vk.$length === 1) && ((0 >= vk.$length ? ($throwRuntimeError("index out of range"), undefined) : vk.$array[vk.$offset + 0]) === 2)) {
 55580  				$s = -1; return false;
 55581  			}
 55582  			t1 = t1.sqr(vk);
 55583  			t1 = t1.sub(t1, natTwo);
 55584  			_r$11 = t2.div(vk, t1, n); /* */ $s = 24; case 24: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; }
 55585  			_tuple$5 = _r$11;
 55586  			t2 = _tuple$5[0];
 55587  			vk = _tuple$5[1];
 55588  			t = t + (1) >> 0;
 55589  		/* } */ $s = 22; continue; case 23:
 55590  		$s = -1; return false;
 55591  		/* */ } return; } if ($f === undefined) { $f = { $blk: nat.prototype.probablyPrimeLucas }; } $f._r$10 = _r$10; $f._r$11 = _r$11; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._r$8 = _r$8; $f._r$9 = _r$9; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f._tuple$4 = _tuple$4; $f._tuple$5 = _tuple$5; $f.d = d; $f.i = i; $f.intD = intD; $f.intN = intN; $f.j = j; $f.n = n; $f.natP = natP; $f.nm2 = nm2; $f.p = p; $f.r = r; $f.s = s; $f.t = t; $f.t1 = t1; $f.t1$1 = t1$1; $f.t2 = t2; $f.t2$1 = t2$1; $f.t3 = t3; $f.vk = vk; $f.vk1 = vk1; $f.$s = $s; $f.$r = $r; return $f;
 55592  	};
 55593  	$ptrType(nat).prototype.probablyPrimeLucas = function() { return this.$get().probablyPrimeLucas(); };
 55594  	Rat.ptr.prototype.SetFloat64 = function(f) {
 55595  		var _1, _r$3, bits$1, exp, f, mantissa, shift, x, x$1, x$2, z, $s, $r;
 55596  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _r$3 = $f._r$3; bits$1 = $f.bits$1; exp = $f.exp; f = $f.f; mantissa = $f.mantissa; shift = $f.shift; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; z = $f.z; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 55597  		z = this;
 55598  		bits$1 = math.Float64bits(f);
 55599  		mantissa = new $Uint64(bits$1.$high & 1048575, (bits$1.$low & 4294967295) >>> 0);
 55600  		exp = (((x = $shiftRightUint64(bits$1, 52), new $Uint64(x.$high & 0, (x.$low & 2047) >>> 0)).$low >> 0));
 55601  		_1 = exp;
 55602  		if (_1 === (2047)) {
 55603  			$s = -1; return ptrType$2.nil;
 55604  		} else if (_1 === (0)) {
 55605  			exp = exp - (1022) >> 0;
 55606  		} else {
 55607  			mantissa = (x$1 = new $Uint64(1048576, 0), new $Uint64(mantissa.$high | x$1.$high, (mantissa.$low | x$1.$low) >>> 0));
 55608  			exp = exp - (1023) >> 0;
 55609  		}
 55610  		shift = 52 - exp >> 0;
 55611  		while (true) {
 55612  			if (!((x$2 = new $Uint64(mantissa.$high & 0, (mantissa.$low & 1) >>> 0), (x$2.$high === 0 && x$2.$low === 0)) && shift > 0)) { break; }
 55613  			mantissa = $shiftRightUint64(mantissa, (1));
 55614  			shift = shift - (1) >> 0;
 55615  		}
 55616  		z.a.SetUint64(mantissa);
 55617  		z.a.neg = f < 0;
 55618  		z.b.Set(intOne);
 55619  		if (shift > 0) {
 55620  			z.b.Lsh(z.b, ((shift >>> 0)));
 55621  		} else {
 55622  			z.a.Lsh(z.a, ((-shift >>> 0)));
 55623  		}
 55624  		_r$3 = z.norm(); /* */ $s = 1; case 1: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 55625  		$s = -1; return _r$3;
 55626  		/* */ } return; } if ($f === undefined) { $f = { $blk: Rat.ptr.prototype.SetFloat64 }; } $f._1 = _1; $f._r$3 = _r$3; $f.bits$1 = bits$1; $f.exp = exp; $f.f = f; $f.mantissa = mantissa; $f.shift = shift; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.z = z; $f.$s = $s; $f.$r = $r; return $f;
 55627  	};
 55628  	Rat.prototype.SetFloat64 = function(f) { return this.$val.SetFloat64(f); };
 55629  	quotToFloat32 = function(a, b) {
 55630  		var _r$3, _r$4, _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, a, a2, alen, b, b2, blen, exact, exp, f, haveRem, lostbits, mantissa, q, r, shift, shift$1, y, y$1, y$2, y$3, y$4, $s, $r;
 55631  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$3 = $f._r$3; _r$4 = $f._r$4; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tuple = $f._tuple; a = $f.a; a2 = $f.a2; alen = $f.alen; b = $f.b; b2 = $f.b2; blen = $f.blen; exact = $f.exact; exp = $f.exp; f = $f.f; haveRem = $f.haveRem; lostbits = $f.lostbits; mantissa = $f.mantissa; q = $f.q; r = $f.r; shift = $f.shift; shift$1 = $f.shift$1; y = $f.y; y$1 = $f.y$1; y$2 = $f.y$2; y$3 = $f.y$3; y$4 = $f.y$4; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 55632  		f = 0;
 55633  		exact = false;
 55634  		alen = a.bitLen();
 55635  		if (alen === 0) {
 55636  			_tmp = 0;
 55637  			_tmp$1 = true;
 55638  			f = _tmp;
 55639  			exact = _tmp$1;
 55640  			$s = -1; return [f, exact];
 55641  		}
 55642  		blen = b.bitLen();
 55643  		if (blen === 0) {
 55644  			$panic(new $String("division by zero"));
 55645  		}
 55646  		exp = alen - blen >> 0;
 55647  		_tmp$2 = nat.nil;
 55648  		_tmp$3 = nat.nil;
 55649  		a2 = _tmp$2;
 55650  		b2 = _tmp$3;
 55651  		a2 = a2.set(a);
 55652  		b2 = b2.set(b);
 55653  		shift = 25 - exp >> 0;
 55654  		if (shift > 0) {
 55655  			a2 = a2.shl(a2, ((shift >>> 0)));
 55656  		} else if (shift < 0) {
 55657  			b2 = b2.shl(b2, ((-shift >>> 0)));
 55658  		}
 55659  		q = nat.nil;
 55660  		_r$3 = q.div(a2, a2, b2); /* */ $s = 1; case 1: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 55661  		_tuple = _r$3;
 55662  		q = _tuple[0];
 55663  		r = _tuple[1];
 55664  		mantissa = low32(q);
 55665  		haveRem = r.$length > 0;
 55666  		if ((mantissa >>> 25 >>> 0) === 1) {
 55667  			if (((mantissa & 1) >>> 0) === 1) {
 55668  				haveRem = true;
 55669  			}
 55670  			mantissa = (y = (1), y < 32 ? (mantissa >>> y) : 0) >>> 0;
 55671  			exp = exp + (1) >> 0;
 55672  		}
 55673  		/* */ if (!(((mantissa >>> 24 >>> 0) === 1))) { $s = 2; continue; }
 55674  		/* */ $s = 3; continue;
 55675  		/* if (!(((mantissa >>> 24 >>> 0) === 1))) { */ case 2:
 55676  			_r$4 = fmt.Sprintf("expected exactly %d bits of result", new sliceType([new $Int(25)])); /* */ $s = 4; case 4: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 55677  			$panic(new $String(_r$4));
 55678  		/* } */ case 3:
 55679  		if (-149 <= exp && exp <= -126) {
 55680  			shift$1 = (((-126 - ((exp - 1 >> 0)) >> 0) >>> 0));
 55681  			lostbits = (mantissa & ((((y$1 = shift$1, y$1 < 32 ? (1 << y$1) : 0) >>> 0) - 1 >>> 0))) >>> 0;
 55682  			haveRem = haveRem || !((lostbits === 0));
 55683  			mantissa = (y$2 = (shift$1), y$2 < 32 ? (mantissa >>> y$2) : 0) >>> 0;
 55684  			exp = -125;
 55685  		}
 55686  		exact = !haveRem;
 55687  		if (!((((mantissa & 1) >>> 0) === 0))) {
 55688  			exact = false;
 55689  			if (haveRem || !((((mantissa & 2) >>> 0) === 0))) {
 55690  				mantissa = mantissa + (1) >>> 0;
 55691  				if (mantissa >= 33554432) {
 55692  					mantissa = (y$3 = (1), y$3 < 32 ? (mantissa >>> y$3) : 0) >>> 0;
 55693  					exp = exp + (1) >> 0;
 55694  				}
 55695  			}
 55696  		}
 55697  		mantissa = (y$4 = (1), y$4 < 32 ? (mantissa >>> y$4) : 0) >>> 0;
 55698  		f = ($fround(math.Ldexp((mantissa), exp - 24 >> 0)));
 55699  		if (math.IsInf((f), 0)) {
 55700  			exact = false;
 55701  		}
 55702  		$s = -1; return [f, exact];
 55703  		/* */ } return; } if ($f === undefined) { $f = { $blk: quotToFloat32 }; } $f._r$3 = _r$3; $f._r$4 = _r$4; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tuple = _tuple; $f.a = a; $f.a2 = a2; $f.alen = alen; $f.b = b; $f.b2 = b2; $f.blen = blen; $f.exact = exact; $f.exp = exp; $f.f = f; $f.haveRem = haveRem; $f.lostbits = lostbits; $f.mantissa = mantissa; $f.q = q; $f.r = r; $f.shift = shift; $f.shift$1 = shift$1; $f.y = y; $f.y$1 = y$1; $f.y$2 = y$2; $f.y$3 = y$3; $f.y$4 = y$4; $f.$s = $s; $f.$r = $r; return $f;
 55704  	};
 55705  	quotToFloat64 = function(a, b) {
 55706  		var _r$3, _r$4, _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, a, a2, alen, b, b2, blen, exact, exp, f, haveRem, lostbits, mantissa, q, r, shift, shift$1, x, x$1, x$2, x$3, x$4, x$5, x$6, x$7, $s, $r;
 55707  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$3 = $f._r$3; _r$4 = $f._r$4; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tuple = $f._tuple; a = $f.a; a2 = $f.a2; alen = $f.alen; b = $f.b; b2 = $f.b2; blen = $f.blen; exact = $f.exact; exp = $f.exp; f = $f.f; haveRem = $f.haveRem; lostbits = $f.lostbits; mantissa = $f.mantissa; q = $f.q; r = $f.r; shift = $f.shift; shift$1 = $f.shift$1; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; x$3 = $f.x$3; x$4 = $f.x$4; x$5 = $f.x$5; x$6 = $f.x$6; x$7 = $f.x$7; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 55708  		f = 0;
 55709  		exact = false;
 55710  		alen = a.bitLen();
 55711  		if (alen === 0) {
 55712  			_tmp = 0;
 55713  			_tmp$1 = true;
 55714  			f = _tmp;
 55715  			exact = _tmp$1;
 55716  			$s = -1; return [f, exact];
 55717  		}
 55718  		blen = b.bitLen();
 55719  		if (blen === 0) {
 55720  			$panic(new $String("division by zero"));
 55721  		}
 55722  		exp = alen - blen >> 0;
 55723  		_tmp$2 = nat.nil;
 55724  		_tmp$3 = nat.nil;
 55725  		a2 = _tmp$2;
 55726  		b2 = _tmp$3;
 55727  		a2 = a2.set(a);
 55728  		b2 = b2.set(b);
 55729  		shift = 54 - exp >> 0;
 55730  		if (shift > 0) {
 55731  			a2 = a2.shl(a2, ((shift >>> 0)));
 55732  		} else if (shift < 0) {
 55733  			b2 = b2.shl(b2, ((-shift >>> 0)));
 55734  		}
 55735  		q = nat.nil;
 55736  		_r$3 = q.div(a2, a2, b2); /* */ $s = 1; case 1: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 55737  		_tuple = _r$3;
 55738  		q = _tuple[0];
 55739  		r = _tuple[1];
 55740  		mantissa = low64(q);
 55741  		haveRem = r.$length > 0;
 55742  		if ((x = $shiftRightUint64(mantissa, 54), (x.$high === 0 && x.$low === 1))) {
 55743  			if ((x$1 = new $Uint64(mantissa.$high & 0, (mantissa.$low & 1) >>> 0), (x$1.$high === 0 && x$1.$low === 1))) {
 55744  				haveRem = true;
 55745  			}
 55746  			mantissa = $shiftRightUint64(mantissa, (1));
 55747  			exp = exp + (1) >> 0;
 55748  		}
 55749  		/* */ if (!((x$2 = $shiftRightUint64(mantissa, 53), (x$2.$high === 0 && x$2.$low === 1)))) { $s = 2; continue; }
 55750  		/* */ $s = 3; continue;
 55751  		/* if (!((x$2 = $shiftRightUint64(mantissa, 53), (x$2.$high === 0 && x$2.$low === 1)))) { */ case 2:
 55752  			_r$4 = fmt.Sprintf("expected exactly %d bits of result", new sliceType([new $Int(54)])); /* */ $s = 4; case 4: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 55753  			$panic(new $String(_r$4));
 55754  		/* } */ case 3:
 55755  		if (-1074 <= exp && exp <= -1022) {
 55756  			shift$1 = (((-1022 - ((exp - 1 >> 0)) >> 0) >>> 0));
 55757  			lostbits = (x$3 = (x$4 = $shiftLeft64(new $Uint64(0, 1), shift$1), new $Uint64(x$4.$high - 0, x$4.$low - 1)), new $Uint64(mantissa.$high & x$3.$high, (mantissa.$low & x$3.$low) >>> 0));
 55758  			haveRem = haveRem || !((lostbits.$high === 0 && lostbits.$low === 0));
 55759  			mantissa = $shiftRightUint64(mantissa, (shift$1));
 55760  			exp = -1021;
 55761  		}
 55762  		exact = !haveRem;
 55763  		if (!((x$5 = new $Uint64(mantissa.$high & 0, (mantissa.$low & 1) >>> 0), (x$5.$high === 0 && x$5.$low === 0)))) {
 55764  			exact = false;
 55765  			if (haveRem || !((x$6 = new $Uint64(mantissa.$high & 0, (mantissa.$low & 2) >>> 0), (x$6.$high === 0 && x$6.$low === 0)))) {
 55766  				mantissa = (x$7 = new $Uint64(0, 1), new $Uint64(mantissa.$high + x$7.$high, mantissa.$low + x$7.$low));
 55767  				if ((mantissa.$high > 4194304 || (mantissa.$high === 4194304 && mantissa.$low >= 0))) {
 55768  					mantissa = $shiftRightUint64(mantissa, (1));
 55769  					exp = exp + (1) >> 0;
 55770  				}
 55771  			}
 55772  		}
 55773  		mantissa = $shiftRightUint64(mantissa, (1));
 55774  		f = math.Ldexp(($flatten64(mantissa)), exp - 53 >> 0);
 55775  		if (math.IsInf(f, 0)) {
 55776  			exact = false;
 55777  		}
 55778  		$s = -1; return [f, exact];
 55779  		/* */ } return; } if ($f === undefined) { $f = { $blk: quotToFloat64 }; } $f._r$3 = _r$3; $f._r$4 = _r$4; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tuple = _tuple; $f.a = a; $f.a2 = a2; $f.alen = alen; $f.b = b; $f.b2 = b2; $f.blen = blen; $f.exact = exact; $f.exp = exp; $f.f = f; $f.haveRem = haveRem; $f.lostbits = lostbits; $f.mantissa = mantissa; $f.q = q; $f.r = r; $f.shift = shift; $f.shift$1 = shift$1; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.x$3 = x$3; $f.x$4 = x$4; $f.x$5 = x$5; $f.x$6 = x$6; $f.x$7 = x$7; $f.$s = $s; $f.$r = $r; return $f;
 55780  	};
 55781  	Rat.ptr.prototype.Float32 = function() {
 55782  		var _r$3, _tuple, b, exact, f, x, $s, $r;
 55783  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$3 = $f._r$3; _tuple = $f._tuple; b = $f.b; exact = $f.exact; f = $f.f; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 55784  		f = 0;
 55785  		exact = false;
 55786  		x = this;
 55787  		b = x.b.abs;
 55788  		if (b.$length === 0) {
 55789  			b = b.set(natOne);
 55790  		}
 55791  		_r$3 = quotToFloat32(x.a.abs, b); /* */ $s = 1; case 1: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 55792  		_tuple = _r$3;
 55793  		f = _tuple[0];
 55794  		exact = _tuple[1];
 55795  		if (x.a.neg) {
 55796  			f = -f;
 55797  		}
 55798  		$s = -1; return [f, exact];
 55799  		/* */ } return; } if ($f === undefined) { $f = { $blk: Rat.ptr.prototype.Float32 }; } $f._r$3 = _r$3; $f._tuple = _tuple; $f.b = b; $f.exact = exact; $f.f = f; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
 55800  	};
 55801  	Rat.prototype.Float32 = function() { return this.$val.Float32(); };
 55802  	Rat.ptr.prototype.Float64 = function() {
 55803  		var _r$3, _tuple, b, exact, f, x, $s, $r;
 55804  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$3 = $f._r$3; _tuple = $f._tuple; b = $f.b; exact = $f.exact; f = $f.f; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 55805  		f = 0;
 55806  		exact = false;
 55807  		x = this;
 55808  		b = x.b.abs;
 55809  		if (b.$length === 0) {
 55810  			b = b.set(natOne);
 55811  		}
 55812  		_r$3 = quotToFloat64(x.a.abs, b); /* */ $s = 1; case 1: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 55813  		_tuple = _r$3;
 55814  		f = _tuple[0];
 55815  		exact = _tuple[1];
 55816  		if (x.a.neg) {
 55817  			f = -f;
 55818  		}
 55819  		$s = -1; return [f, exact];
 55820  		/* */ } return; } if ($f === undefined) { $f = { $blk: Rat.ptr.prototype.Float64 }; } $f._r$3 = _r$3; $f._tuple = _tuple; $f.b = b; $f.exact = exact; $f.f = f; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
 55821  	};
 55822  	Rat.prototype.Float64 = function() { return this.$val.Float64(); };
 55823  	Rat.ptr.prototype.SetFrac = function(a, b) {
 55824  		var _r$3, a, b, babs, z, $s, $r;
 55825  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$3 = $f._r$3; a = $f.a; b = $f.b; babs = $f.babs; z = $f.z; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 55826  		z = this;
 55827  		z.a.neg = !(a.neg === b.neg);
 55828  		babs = b.abs;
 55829  		if (babs.$length === 0) {
 55830  			$panic(new $String("division by zero"));
 55831  		}
 55832  		if (z.a === b || alias(z.a.abs, babs)) {
 55833  			babs = (nat.nil).set(babs);
 55834  		}
 55835  		z.a.abs = z.a.abs.set(a.abs);
 55836  		z.b.abs = z.b.abs.set(babs);
 55837  		_r$3 = z.norm(); /* */ $s = 1; case 1: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 55838  		$s = -1; return _r$3;
 55839  		/* */ } return; } if ($f === undefined) { $f = { $blk: Rat.ptr.prototype.SetFrac }; } $f._r$3 = _r$3; $f.a = a; $f.b = b; $f.babs = babs; $f.z = z; $f.$s = $s; $f.$r = $r; return $f;
 55840  	};
 55841  	Rat.prototype.SetFrac = function(a, b) { return this.$val.SetFrac(a, b); };
 55842  	Rat.ptr.prototype.SetFrac64 = function(a, b) {
 55843  		var _r$3, a, b, z, $s, $r;
 55844  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$3 = $f._r$3; a = $f.a; b = $f.b; z = $f.z; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 55845  		z = this;
 55846  		z.a.SetInt64(a);
 55847  		if ((b.$high === 0 && b.$low === 0)) {
 55848  			$panic(new $String("division by zero"));
 55849  		}
 55850  		if ((b.$high < 0 || (b.$high === 0 && b.$low < 0))) {
 55851  			b = new $Int64(-b.$high, -b.$low);
 55852  			z.a.neg = !z.a.neg;
 55853  		}
 55854  		z.b.abs = z.b.abs.setUint64((new $Uint64(b.$high, b.$low)));
 55855  		_r$3 = z.norm(); /* */ $s = 1; case 1: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 55856  		$s = -1; return _r$3;
 55857  		/* */ } return; } if ($f === undefined) { $f = { $blk: Rat.ptr.prototype.SetFrac64 }; } $f._r$3 = _r$3; $f.a = a; $f.b = b; $f.z = z; $f.$s = $s; $f.$r = $r; return $f;
 55858  	};
 55859  	Rat.prototype.SetFrac64 = function(a, b) { return this.$val.SetFrac64(a, b); };
 55860  	Rat.ptr.prototype.SetInt = function(x) {
 55861  		var x, z;
 55862  		z = this;
 55863  		z.a.Set(x);
 55864  		z.b.abs = $subslice(z.b.abs, 0, 0);
 55865  		return z;
 55866  	};
 55867  	Rat.prototype.SetInt = function(x) { return this.$val.SetInt(x); };
 55868  	Rat.ptr.prototype.SetInt64 = function(x) {
 55869  		var x, z;
 55870  		z = this;
 55871  		z.a.SetInt64(x);
 55872  		z.b.abs = $subslice(z.b.abs, 0, 0);
 55873  		return z;
 55874  	};
 55875  	Rat.prototype.SetInt64 = function(x) { return this.$val.SetInt64(x); };
 55876  	Rat.ptr.prototype.Set = function(x) {
 55877  		var x, z;
 55878  		z = this;
 55879  		if (!(z === x)) {
 55880  			z.a.Set(x.a);
 55881  			z.b.Set(x.b);
 55882  		}
 55883  		return z;
 55884  	};
 55885  	Rat.prototype.Set = function(x) { return this.$val.Set(x); };
 55886  	Rat.ptr.prototype.Abs = function(x) {
 55887  		var x, z;
 55888  		z = this;
 55889  		z.Set(x);
 55890  		z.a.neg = false;
 55891  		return z;
 55892  	};
 55893  	Rat.prototype.Abs = function(x) { return this.$val.Abs(x); };
 55894  	Rat.ptr.prototype.Neg = function(x) {
 55895  		var x, z;
 55896  		z = this;
 55897  		z.Set(x);
 55898  		z.a.neg = z.a.abs.$length > 0 && !z.a.neg;
 55899  		return z;
 55900  	};
 55901  	Rat.prototype.Neg = function(x) { return this.$val.Neg(x); };
 55902  	Rat.ptr.prototype.Inv = function(x) {
 55903  		var _tmp, _tmp$1, a, b, x, z;
 55904  		z = this;
 55905  		if (x.a.abs.$length === 0) {
 55906  			$panic(new $String("division by zero"));
 55907  		}
 55908  		z.Set(x);
 55909  		a = z.b.abs;
 55910  		if (a.$length === 0) {
 55911  			a = a.set(natOne);
 55912  		}
 55913  		b = z.a.abs;
 55914  		if (b.cmp(natOne) === 0) {
 55915  			b = $subslice(b, 0, 0);
 55916  		}
 55917  		_tmp = a;
 55918  		_tmp$1 = b;
 55919  		z.a.abs = _tmp;
 55920  		z.b.abs = _tmp$1;
 55921  		return z;
 55922  	};
 55923  	Rat.prototype.Inv = function(x) { return this.$val.Inv(x); };
 55924  	Rat.ptr.prototype.Sign = function() {
 55925  		var x;
 55926  		x = this;
 55927  		return x.a.Sign();
 55928  	};
 55929  	Rat.prototype.Sign = function() { return this.$val.Sign(); };
 55930  	Rat.ptr.prototype.IsInt = function() {
 55931  		var x;
 55932  		x = this;
 55933  		return (x.b.abs.$length === 0) || (x.b.abs.cmp(natOne) === 0);
 55934  	};
 55935  	Rat.prototype.IsInt = function() { return this.$val.IsInt(); };
 55936  	Rat.ptr.prototype.Num = function() {
 55937  		var x;
 55938  		x = this;
 55939  		return x.a;
 55940  	};
 55941  	Rat.prototype.Num = function() { return this.$val.Num(); };
 55942  	Rat.ptr.prototype.Denom = function() {
 55943  		var x;
 55944  		x = this;
 55945  		x.b.neg = false;
 55946  		if (x.b.abs.$length === 0) {
 55947  			x.b.abs = x.b.abs.set(natOne);
 55948  		}
 55949  		return x.b;
 55950  	};
 55951  	Rat.prototype.Denom = function() { return this.$val.Denom(); };
 55952  	Rat.ptr.prototype.norm = function() {
 55953  		var _r$3, _r$4, _r$5, _tuple, _tuple$1, f, neg, z, $s, $r;
 55954  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; f = $f.f; neg = $f.neg; z = $f.z; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 55955  		z = this;
 55956  			/* */ if ((z.a.abs.$length === 0)) { $s = 2; continue; }
 55957  			/* */ if ((z.b.abs.$length === 0)) { $s = 3; continue; }
 55958  			/* */ if ((z.b.abs.cmp(natOne) === 0)) { $s = 4; continue; }
 55959  			/* */ $s = 5; continue;
 55960  			/* if ((z.a.abs.$length === 0)) { */ case 2:
 55961  				z.a.neg = false;
 55962  				z.b.abs = $subslice(z.b.abs, 0, 0);
 55963  				$s = 6; continue;
 55964  			/* } else if ((z.b.abs.$length === 0)) { */ case 3:
 55965  				$s = 6; continue;
 55966  			/* } else if ((z.b.abs.cmp(natOne) === 0)) { */ case 4:
 55967  				z.b.abs = $subslice(z.b.abs, 0, 0);
 55968  				$s = 6; continue;
 55969  			/* } else { */ case 5:
 55970  				neg = z.a.neg;
 55971  				z.a.neg = false;
 55972  				z.b.neg = false;
 55973  				_r$3 = NewInt(new $Int64(0, 0)).lehmerGCD(z.a, z.b); /* */ $s = 7; case 7: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 55974  				f = _r$3;
 55975  				/* */ if (!((f.Cmp(intOne) === 0))) { $s = 8; continue; }
 55976  				/* */ $s = 9; continue;
 55977  				/* if (!((f.Cmp(intOne) === 0))) { */ case 8:
 55978  					_r$4 = z.a.abs.div(nat.nil, z.a.abs, f.abs); /* */ $s = 10; case 10: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 55979  					_tuple = _r$4;
 55980  					z.a.abs = _tuple[0];
 55981  					_r$5 = z.b.abs.div(nat.nil, z.b.abs, f.abs); /* */ $s = 11; case 11: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
 55982  					_tuple$1 = _r$5;
 55983  					z.b.abs = _tuple$1[0];
 55984  					if (z.b.abs.cmp(natOne) === 0) {
 55985  						z.b.abs = $subslice(z.b.abs, 0, 0);
 55986  					}
 55987  				/* } */ case 9:
 55988  				z.a.neg = neg;
 55989  			/* } */ case 6:
 55990  		case 1:
 55991  		$s = -1; return z;
 55992  		/* */ } return; } if ($f === undefined) { $f = { $blk: Rat.ptr.prototype.norm }; } $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.f = f; $f.neg = neg; $f.z = z; $f.$s = $s; $f.$r = $r; return $f;
 55993  	};
 55994  	Rat.prototype.norm = function() { return this.$val.norm(); };
 55995  	mulDenom = function(z, x, y) {
 55996  		var x, y, z;
 55997  		if ((x.$length === 0)) {
 55998  			return z.set(y);
 55999  		} else if ((y.$length === 0)) {
 56000  			return z.set(x);
 56001  		}
 56002  		return z.mul(x, y);
 56003  	};
 56004  	scaleDenom = function(x, f) {
 56005  		var f, x, z;
 56006  		z = new Int.ptr(false, nat.nil);
 56007  		if (f.$length === 0) {
 56008  			return z.Set(x);
 56009  		}
 56010  		z.abs = z.abs.mul(x.abs, f);
 56011  		z.neg = x.neg;
 56012  		return z;
 56013  	};
 56014  	Rat.ptr.prototype.Cmp = function(y) {
 56015  		var x, y;
 56016  		x = this;
 56017  		return scaleDenom(x.a, y.b.abs).Cmp(scaleDenom(y.a, x.b.abs));
 56018  	};
 56019  	Rat.prototype.Cmp = function(y) { return this.$val.Cmp(y); };
 56020  	Rat.ptr.prototype.Add = function(x, y) {
 56021  		var _r$3, a1, a2, x, y, z, $s, $r;
 56022  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$3 = $f._r$3; a1 = $f.a1; a2 = $f.a2; x = $f.x; y = $f.y; z = $f.z; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 56023  		z = this;
 56024  		a1 = scaleDenom(x.a, y.b.abs);
 56025  		a2 = scaleDenom(y.a, x.b.abs);
 56026  		z.a.Add(a1, a2);
 56027  		z.b.abs = mulDenom(z.b.abs, x.b.abs, y.b.abs);
 56028  		_r$3 = z.norm(); /* */ $s = 1; case 1: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 56029  		$s = -1; return _r$3;
 56030  		/* */ } return; } if ($f === undefined) { $f = { $blk: Rat.ptr.prototype.Add }; } $f._r$3 = _r$3; $f.a1 = a1; $f.a2 = a2; $f.x = x; $f.y = y; $f.z = z; $f.$s = $s; $f.$r = $r; return $f;
 56031  	};
 56032  	Rat.prototype.Add = function(x, y) { return this.$val.Add(x, y); };
 56033  	Rat.ptr.prototype.Sub = function(x, y) {
 56034  		var _r$3, a1, a2, x, y, z, $s, $r;
 56035  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$3 = $f._r$3; a1 = $f.a1; a2 = $f.a2; x = $f.x; y = $f.y; z = $f.z; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 56036  		z = this;
 56037  		a1 = scaleDenom(x.a, y.b.abs);
 56038  		a2 = scaleDenom(y.a, x.b.abs);
 56039  		z.a.Sub(a1, a2);
 56040  		z.b.abs = mulDenom(z.b.abs, x.b.abs, y.b.abs);
 56041  		_r$3 = z.norm(); /* */ $s = 1; case 1: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 56042  		$s = -1; return _r$3;
 56043  		/* */ } return; } if ($f === undefined) { $f = { $blk: Rat.ptr.prototype.Sub }; } $f._r$3 = _r$3; $f.a1 = a1; $f.a2 = a2; $f.x = x; $f.y = y; $f.z = z; $f.$s = $s; $f.$r = $r; return $f;
 56044  	};
 56045  	Rat.prototype.Sub = function(x, y) { return this.$val.Sub(x, y); };
 56046  	Rat.ptr.prototype.Mul = function(x, y) {
 56047  		var _r$3, x, y, z, $s, $r;
 56048  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$3 = $f._r$3; x = $f.x; y = $f.y; z = $f.z; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 56049  		z = this;
 56050  		if (x === y) {
 56051  			z.a.neg = false;
 56052  			z.a.abs = z.a.abs.sqr(x.a.abs);
 56053  			z.b.abs = z.b.abs.sqr(x.b.abs);
 56054  			$s = -1; return z;
 56055  		}
 56056  		z.a.Mul(x.a, y.a);
 56057  		z.b.abs = mulDenom(z.b.abs, x.b.abs, y.b.abs);
 56058  		_r$3 = z.norm(); /* */ $s = 1; case 1: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 56059  		$s = -1; return _r$3;
 56060  		/* */ } return; } if ($f === undefined) { $f = { $blk: Rat.ptr.prototype.Mul }; } $f._r$3 = _r$3; $f.x = x; $f.y = y; $f.z = z; $f.$s = $s; $f.$r = $r; return $f;
 56061  	};
 56062  	Rat.prototype.Mul = function(x, y) { return this.$val.Mul(x, y); };
 56063  	Rat.ptr.prototype.Quo = function(x, y) {
 56064  		var _r$3, a, b, x, y, z, $s, $r;
 56065  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$3 = $f._r$3; a = $f.a; b = $f.b; x = $f.x; y = $f.y; z = $f.z; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 56066  		z = this;
 56067  		if (y.a.abs.$length === 0) {
 56068  			$panic(new $String("division by zero"));
 56069  		}
 56070  		a = scaleDenom(x.a, y.b.abs);
 56071  		b = scaleDenom(y.a, x.b.abs);
 56072  		z.a.abs = a.abs;
 56073  		z.b.abs = b.abs;
 56074  		z.a.neg = !(a.neg === b.neg);
 56075  		_r$3 = z.norm(); /* */ $s = 1; case 1: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 56076  		$s = -1; return _r$3;
 56077  		/* */ } return; } if ($f === undefined) { $f = { $blk: Rat.ptr.prototype.Quo }; } $f._r$3 = _r$3; $f.a = a; $f.b = b; $f.x = x; $f.y = y; $f.z = z; $f.$s = $s; $f.$r = $r; return $f;
 56078  	};
 56079  	Rat.prototype.Quo = function(x, y) { return this.$val.Quo(x, y); };
 56080  	ratTok = function(ch) {
 56081  		var ch;
 56082  		return strings.ContainsRune("+-/0123456789.eE", ch);
 56083  	};
 56084  	Rat.ptr.prototype.Scan = function(s, ch) {
 56085  		var _r$3, _r$4, _tuple, _tuple$1, ch, err, ok, s, tok, z, $s, $r;
 56086  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$3 = $f._r$3; _r$4 = $f._r$4; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; ch = $f.ch; err = $f.err; ok = $f.ok; s = $f.s; tok = $f.tok; z = $f.z; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 56087  		z = this;
 56088  		_r$3 = s.Token(true, ratTok); /* */ $s = 1; case 1: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 56089  		_tuple = _r$3;
 56090  		tok = _tuple[0];
 56091  		err = _tuple[1];
 56092  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 56093  			$s = -1; return err;
 56094  		}
 56095  		if (!strings.ContainsRune("efgEFGv", ch)) {
 56096  			$s = -1; return errors.New("Rat.Scan: invalid verb");
 56097  		}
 56098  		_r$4 = z.SetString(($bytesToString(tok))); /* */ $s = 2; case 2: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 56099  		_tuple$1 = _r$4;
 56100  		ok = _tuple$1[1];
 56101  		if (!ok) {
 56102  			$s = -1; return errors.New("Rat.Scan: invalid syntax");
 56103  		}
 56104  		$s = -1; return $ifaceNil;
 56105  		/* */ } return; } if ($f === undefined) { $f = { $blk: Rat.ptr.prototype.Scan }; } $f._r$3 = _r$3; $f._r$4 = _r$4; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.ch = ch; $f.err = err; $f.ok = ok; $f.s = s; $f.tok = tok; $f.z = z; $f.$s = $s; $f.$r = $r; return $f;
 56106  	};
 56107  	Rat.prototype.Scan = function(s, ch) { return this.$val.Scan(s, ch); };
 56108  	Rat.ptr.prototype.SetString = function(s) {
 56109  		var _r$10, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, _tuple$5, _tuple$6, ecorr, err, err$1, exp, expabs, neg, ok, powTen, r, r$1, s, sep, x, z, $s, $r;
 56110  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$10 = $f._r$10; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _r$8 = $f._r$8; _r$9 = $f._r$9; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; _tuple$4 = $f._tuple$4; _tuple$5 = $f._tuple$5; _tuple$6 = $f._tuple$6; ecorr = $f.ecorr; err = $f.err; err$1 = $f.err$1; exp = $f.exp; expabs = $f.expabs; neg = $f.neg; ok = $f.ok; powTen = $f.powTen; r = $f.r; r$1 = $f.r$1; s = $f.s; sep = $f.sep; x = $f.x; z = $f.z; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 56111  		z = this;
 56112  		if (s.length === 0) {
 56113  			$s = -1; return [ptrType$2.nil, false];
 56114  		}
 56115  		sep = strings.Index(s, "/");
 56116  		/* */ if (sep >= 0) { $s = 1; continue; }
 56117  		/* */ $s = 2; continue;
 56118  		/* if (sep >= 0) { */ case 1:
 56119  			_r$3 = z.a.SetString($substring(s, 0, sep), 0); /* */ $s = 3; case 3: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 56120  			_tuple = _r$3;
 56121  			ok = _tuple[1];
 56122  			if (!ok) {
 56123  				$s = -1; return [ptrType$2.nil, false];
 56124  			}
 56125  			r = strings.NewReader($substring(s, (sep + 1 >> 0)));
 56126  			err = $ifaceNil;
 56127  			_r$4 = z.b.abs.scan(r, 0, false); /* */ $s = 4; case 4: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 56128  			_tuple$1 = _r$4;
 56129  			z.b.abs = _tuple$1[0];
 56130  			err = _tuple$1[3];
 56131  			if (!($interfaceIsEqual(err, $ifaceNil))) {
 56132  				$s = -1; return [ptrType$2.nil, false];
 56133  			}
 56134  			_tuple$2 = r.ReadByte();
 56135  			err = _tuple$2[1];
 56136  			if (!($interfaceIsEqual(err, io.EOF))) {
 56137  				$s = -1; return [ptrType$2.nil, false];
 56138  			}
 56139  			if (z.b.abs.$length === 0) {
 56140  				$s = -1; return [ptrType$2.nil, false];
 56141  			}
 56142  			_r$5 = z.norm(); /* */ $s = 5; case 5: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
 56143  			$s = -1; return [_r$5, true];
 56144  		/* } */ case 2:
 56145  		r$1 = strings.NewReader(s);
 56146  		_r$6 = scanSign(r$1); /* */ $s = 6; case 6: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
 56147  		_tuple$3 = _r$6;
 56148  		neg = _tuple$3[0];
 56149  		err$1 = _tuple$3[1];
 56150  		if (!($interfaceIsEqual(err$1, $ifaceNil))) {
 56151  			$s = -1; return [ptrType$2.nil, false];
 56152  		}
 56153  		ecorr = 0;
 56154  		_r$7 = z.a.abs.scan(r$1, 10, true); /* */ $s = 7; case 7: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
 56155  		_tuple$4 = _r$7;
 56156  		z.a.abs = _tuple$4[0];
 56157  		ecorr = _tuple$4[2];
 56158  		err$1 = _tuple$4[3];
 56159  		if (!($interfaceIsEqual(err$1, $ifaceNil))) {
 56160  			$s = -1; return [ptrType$2.nil, false];
 56161  		}
 56162  		exp = new $Int64(0, 0);
 56163  		_r$8 = scanExponent(r$1, false); /* */ $s = 8; case 8: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
 56164  		_tuple$5 = _r$8;
 56165  		exp = _tuple$5[0];
 56166  		err$1 = _tuple$5[2];
 56167  		if (!($interfaceIsEqual(err$1, $ifaceNil))) {
 56168  			$s = -1; return [ptrType$2.nil, false];
 56169  		}
 56170  		_tuple$6 = r$1.ReadByte();
 56171  		err$1 = _tuple$6[1];
 56172  		if (!($interfaceIsEqual(err$1, io.EOF))) {
 56173  			$s = -1; return [ptrType$2.nil, false];
 56174  		}
 56175  		if (z.a.abs.$length === 0) {
 56176  			$s = -1; return [z, true];
 56177  		}
 56178  		if (ecorr < 0) {
 56179  			exp = (x = (new $Int64(0, ecorr)), new $Int64(exp.$high + x.$high, exp.$low + x.$low));
 56180  		}
 56181  		expabs = exp;
 56182  		if ((expabs.$high < 0 || (expabs.$high === 0 && expabs.$low < 0))) {
 56183  			expabs = new $Int64(-expabs.$high, -expabs.$low);
 56184  		}
 56185  		_r$9 = (nat.nil).expNN(natTen, (nat.nil).setWord(((expabs.$low >>> 0))), nat.nil); /* */ $s = 9; case 9: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 56186  		powTen = _r$9;
 56187  		/* */ if ((exp.$high < 0 || (exp.$high === 0 && exp.$low < 0))) { $s = 10; continue; }
 56188  		/* */ $s = 11; continue;
 56189  		/* if ((exp.$high < 0 || (exp.$high === 0 && exp.$low < 0))) { */ case 10:
 56190  			z.b.abs = powTen;
 56191  			_r$10 = z.norm(); /* */ $s = 13; case 13: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
 56192  			_r$10;
 56193  			$s = 12; continue;
 56194  		/* } else { */ case 11:
 56195  			z.a.abs = z.a.abs.mul(z.a.abs, powTen);
 56196  			z.b.abs = $subslice(z.b.abs, 0, 0);
 56197  		/* } */ case 12:
 56198  		z.a.neg = neg && z.a.abs.$length > 0;
 56199  		$s = -1; return [z, true];
 56200  		/* */ } return; } if ($f === undefined) { $f = { $blk: Rat.ptr.prototype.SetString }; } $f._r$10 = _r$10; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._r$8 = _r$8; $f._r$9 = _r$9; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f._tuple$4 = _tuple$4; $f._tuple$5 = _tuple$5; $f._tuple$6 = _tuple$6; $f.ecorr = ecorr; $f.err = err; $f.err$1 = err$1; $f.exp = exp; $f.expabs = expabs; $f.neg = neg; $f.ok = ok; $f.powTen = powTen; $f.r = r; $f.r$1 = r$1; $f.s = s; $f.sep = sep; $f.x = x; $f.z = z; $f.$s = $s; $f.$r = $r; return $f;
 56201  	};
 56202  	Rat.prototype.SetString = function(s) { return this.$val.SetString(s); };
 56203  	scanExponent = function(r, binExpOk) {
 56204  		var _1, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _tuple, _tuple$1, _tuple$2, _tuple$3, base, binExpOk, ch, digits, err, exp, i, neg, r, $s, $r;
 56205  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _r$8 = $f._r$8; _r$9 = $f._r$9; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; base = $f.base; binExpOk = $f.binExpOk; ch = $f.ch; digits = $f.digits; err = $f.err; exp = $f.exp; i = $f.i; neg = $f.neg; r = $f.r; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 56206  		exp = new $Int64(0, 0);
 56207  		base = 0;
 56208  		err = $ifaceNil;
 56209  		base = 10;
 56210  		ch = 0;
 56211  		_r$3 = r.ReadByte(); /* */ $s = 1; case 1: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 56212  		_tuple = _r$3;
 56213  		ch = _tuple[0];
 56214  		err = _tuple[1];
 56215  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 56216  			if ($interfaceIsEqual(err, io.EOF)) {
 56217  				err = $ifaceNil;
 56218  			}
 56219  			$s = -1; return [exp, base, err];
 56220  		}
 56221  			_1 = ch;
 56222  			/* */ if ((_1 === (101)) || (_1 === (69))) { $s = 3; continue; }
 56223  			/* */ if (_1 === (112)) { $s = 4; continue; }
 56224  			/* */ $s = 5; continue;
 56225  			/* if ((_1 === (101)) || (_1 === (69))) { */ case 3:
 56226  				$s = 6; continue;
 56227  			/* } else if (_1 === (112)) { */ case 4:
 56228  				if (binExpOk) {
 56229  					base = 2;
 56230  					/* break; */ $s = 2; continue;
 56231  				}
 56232  				_r$4 = r.UnreadByte(); /* */ $s = 7; case 7: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 56233  				_r$4;
 56234  				$s = -1; return [exp, base, err];
 56235  			/* } else { */ case 5:
 56236  				_r$5 = r.UnreadByte(); /* */ $s = 8; case 8: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
 56237  				_r$5;
 56238  				$s = -1; return [exp, base, err];
 56239  			/* } */ case 6:
 56240  		case 2:
 56241  		neg = false;
 56242  		_r$6 = scanSign(r); /* */ $s = 9; case 9: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
 56243  		_tuple$1 = _r$6;
 56244  		neg = _tuple$1[0];
 56245  		err = _tuple$1[1];
 56246  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 56247  			$s = -1; return [exp, base, err];
 56248  		}
 56249  		digits = sliceType$1.nil;
 56250  		if (neg) {
 56251  			digits = $append(digits, 45);
 56252  		}
 56253  		i = 0;
 56254  		/* while (true) { */ case 10:
 56255  			_r$7 = r.ReadByte(); /* */ $s = 12; case 12: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
 56256  			_tuple$2 = _r$7;
 56257  			ch = _tuple$2[0];
 56258  			err = _tuple$2[1];
 56259  			if (!($interfaceIsEqual(err, $ifaceNil))) {
 56260  				if (!($interfaceIsEqual(err, io.EOF)) || (i === 0)) {
 56261  					$s = -1; return [exp, base, err];
 56262  				}
 56263  				err = $ifaceNil;
 56264  				/* break; */ $s = 11; continue;
 56265  			}
 56266  			/* */ if (ch < 48 || 57 < ch) { $s = 13; continue; }
 56267  			/* */ $s = 14; continue;
 56268  			/* if (ch < 48 || 57 < ch) { */ case 13:
 56269  				/* */ if (i === 0) { $s = 15; continue; }
 56270  				/* */ $s = 16; continue;
 56271  				/* if (i === 0) { */ case 15:
 56272  					_r$8 = r.UnreadByte(); /* */ $s = 17; case 17: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
 56273  					_r$8;
 56274  					_r$9 = fmt.Errorf("invalid exponent (missing digits)", new sliceType([])); /* */ $s = 18; case 18: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 56275  					err = _r$9;
 56276  					$s = -1; return [exp, base, err];
 56277  				/* } */ case 16:
 56278  				/* break; */ $s = 11; continue;
 56279  			/* } */ case 14:
 56280  			digits = $append(digits, ch);
 56281  			i = i + (1) >> 0;
 56282  		/* } */ $s = 10; continue; case 11:
 56283  		_tuple$3 = strconv.ParseInt(($bytesToString(digits)), 10, 64);
 56284  		exp = _tuple$3[0];
 56285  		err = _tuple$3[1];
 56286  		$s = -1; return [exp, base, err];
 56287  		/* */ } return; } if ($f === undefined) { $f = { $blk: scanExponent }; } $f._1 = _1; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._r$8 = _r$8; $f._r$9 = _r$9; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f.base = base; $f.binExpOk = binExpOk; $f.ch = ch; $f.digits = digits; $f.err = err; $f.exp = exp; $f.i = i; $f.neg = neg; $f.r = r; $f.$s = $s; $f.$r = $r; return $f;
 56288  	};
 56289  	Rat.ptr.prototype.String = function() {
 56290  		var _r$3, x, $s, $r;
 56291  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$3 = $f._r$3; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 56292  		x = this;
 56293  		_r$3 = x.marshal(); /* */ $s = 1; case 1: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 56294  		$s = -1; return ($bytesToString(_r$3));
 56295  		/* */ } return; } if ($f === undefined) { $f = { $blk: Rat.ptr.prototype.String }; } $f._r$3 = _r$3; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
 56296  	};
 56297  	Rat.prototype.String = function() { return this.$val.String(); };
 56298  	Rat.ptr.prototype.marshal = function() {
 56299  		var _r$3, _r$4, buf, x, $s, $r;
 56300  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$3 = $f._r$3; _r$4 = $f._r$4; buf = $f.buf; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 56301  		x = this;
 56302  		buf = sliceType$1.nil;
 56303  		_r$3 = x.a.Append(buf, 10); /* */ $s = 1; case 1: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 56304  		buf = _r$3;
 56305  		buf = $append(buf, 47);
 56306  		/* */ if (!((x.b.abs.$length === 0))) { $s = 2; continue; }
 56307  		/* */ $s = 3; continue;
 56308  		/* if (!((x.b.abs.$length === 0))) { */ case 2:
 56309  			_r$4 = x.b.Append(buf, 10); /* */ $s = 5; case 5: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 56310  			buf = _r$4;
 56311  			$s = 4; continue;
 56312  		/* } else { */ case 3:
 56313  			buf = $append(buf, 49);
 56314  		/* } */ case 4:
 56315  		$s = -1; return buf;
 56316  		/* */ } return; } if ($f === undefined) { $f = { $blk: Rat.ptr.prototype.marshal }; } $f._r$3 = _r$3; $f._r$4 = _r$4; $f.buf = buf; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
 56317  	};
 56318  	Rat.prototype.marshal = function() { return this.$val.marshal(); };
 56319  	Rat.ptr.prototype.RatString = function() {
 56320  		var _r$3, _r$4, x, $s, $r;
 56321  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$3 = $f._r$3; _r$4 = $f._r$4; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 56322  		x = this;
 56323  		/* */ if (x.IsInt()) { $s = 1; continue; }
 56324  		/* */ $s = 2; continue;
 56325  		/* if (x.IsInt()) { */ case 1:
 56326  			_r$3 = x.a.String(); /* */ $s = 3; case 3: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 56327  			$s = -1; return _r$3;
 56328  		/* } */ case 2:
 56329  		_r$4 = x.String(); /* */ $s = 4; case 4: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 56330  		$s = -1; return _r$4;
 56331  		/* */ } return; } if ($f === undefined) { $f = { $blk: Rat.ptr.prototype.RatString }; } $f._r$3 = _r$3; $f._r$4 = _r$4; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
 56332  	};
 56333  	Rat.prototype.RatString = function() { return this.$val.RatString(); };
 56334  	Rat.ptr.prototype.FloatString = function(prec) {
 56335  		var _arg, _arg$1, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _tuple, _tuple$1, buf, i, i$1, p, prec, q, r, r2, rs, x, $s, $r;
 56336  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _arg = $f._arg; _arg$1 = $f._arg$1; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _r$8 = $f._r$8; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; buf = $f.buf; i = $f.i; i$1 = $f.i$1; p = $f.p; prec = $f.prec; q = $f.q; r = $f.r; r2 = $f.r2; rs = $f.rs; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 56337  		x = this;
 56338  		buf = sliceType$1.nil;
 56339  		/* */ if (x.IsInt()) { $s = 1; continue; }
 56340  		/* */ $s = 2; continue;
 56341  		/* if (x.IsInt()) { */ case 1:
 56342  			_r$3 = x.a.Append(buf, 10); /* */ $s = 3; case 3: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 56343  			buf = _r$3;
 56344  			if (prec > 0) {
 56345  				buf = $append(buf, 46);
 56346  				i = prec;
 56347  				while (true) {
 56348  					if (!(i > 0)) { break; }
 56349  					buf = $append(buf, 48);
 56350  					i = i - (1) >> 0;
 56351  				}
 56352  			}
 56353  			$s = -1; return ($bytesToString(buf));
 56354  		/* } */ case 2:
 56355  		_r$4 = (nat.nil).div((nat.nil), x.a.abs, x.b.abs); /* */ $s = 4; case 4: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 56356  		_tuple = _r$4;
 56357  		q = _tuple[0];
 56358  		r = _tuple[1];
 56359  		p = natOne;
 56360  		/* */ if (prec > 0) { $s = 5; continue; }
 56361  		/* */ $s = 6; continue;
 56362  		/* if (prec > 0) { */ case 5:
 56363  			_r$5 = (nat.nil).expNN(natTen, (nat.nil).setUint64((new $Uint64(0, prec))), nat.nil); /* */ $s = 7; case 7: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
 56364  			p = _r$5;
 56365  		/* } */ case 6:
 56366  		r = r.mul(r, p);
 56367  		_r$6 = r.div((nat.nil), r, x.b.abs); /* */ $s = 8; case 8: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
 56368  		_tuple$1 = _r$6;
 56369  		r = _tuple$1[0];
 56370  		r2 = _tuple$1[1];
 56371  		r2 = r2.add(r2, r2);
 56372  		if (x.b.abs.cmp(r2) <= 0) {
 56373  			r = r.add(r, natOne);
 56374  			if (r.cmp(p) >= 0) {
 56375  				q = (nat.nil).add(q, natOne);
 56376  				r = (nat.nil).sub(r, p);
 56377  			}
 56378  		}
 56379  		if (x.a.neg) {
 56380  			buf = $append(buf, 45);
 56381  		}
 56382  		_arg = buf;
 56383  		_r$7 = q.utoa(10); /* */ $s = 9; case 9: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
 56384  		_arg$1 = _r$7;
 56385  		buf = $appendSlice(_arg, _arg$1);
 56386  		/* */ if (prec > 0) { $s = 10; continue; }
 56387  		/* */ $s = 11; continue;
 56388  		/* if (prec > 0) { */ case 10:
 56389  			buf = $append(buf, 46);
 56390  			_r$8 = r.utoa(10); /* */ $s = 12; case 12: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
 56391  			rs = _r$8;
 56392  			i$1 = prec - rs.$length >> 0;
 56393  			while (true) {
 56394  				if (!(i$1 > 0)) { break; }
 56395  				buf = $append(buf, 48);
 56396  				i$1 = i$1 - (1) >> 0;
 56397  			}
 56398  			buf = $appendSlice(buf, rs);
 56399  		/* } */ case 11:
 56400  		$s = -1; return ($bytesToString(buf));
 56401  		/* */ } return; } if ($f === undefined) { $f = { $blk: Rat.ptr.prototype.FloatString }; } $f._arg = _arg; $f._arg$1 = _arg$1; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._r$8 = _r$8; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.buf = buf; $f.i = i; $f.i$1 = i$1; $f.p = p; $f.prec = prec; $f.q = q; $f.r = r; $f.r2 = r2; $f.rs = rs; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
 56402  	};
 56403  	Rat.prototype.FloatString = function(prec) { return this.$val.FloatString(prec); };
 56404  	Rat.ptr.prototype.GobEncode = function() {
 56405  		var b, buf, i, j, n, x;
 56406  		x = this;
 56407  		if (x === ptrType$2.nil) {
 56408  			return [sliceType$1.nil, $ifaceNil];
 56409  		}
 56410  		buf = $makeSlice(sliceType$1, (5 + ($imul(((x.a.abs.$length + x.b.abs.$length >> 0)), 4)) >> 0));
 56411  		i = x.b.abs.bytes(buf);
 56412  		j = x.a.abs.bytes($subslice(buf, 0, i));
 56413  		n = i - j >> 0;
 56414  		if (!((((((n >>> 0)) >> 0)) === n))) {
 56415  			return [sliceType$1.nil, errors.New("Rat.GobEncode: numerator too large")];
 56416  		}
 56417  		$clone(binary.BigEndian, binary.bigEndian).PutUint32($subslice(buf, (j - 4 >> 0), j), ((n >>> 0)));
 56418  		j = j - (5) >> 0;
 56419  		b = 2;
 56420  		if (x.a.neg) {
 56421  			b = (b | (1)) >>> 0;
 56422  		}
 56423  		((j < 0 || j >= buf.$length) ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + j] = b);
 56424  		return [$subslice(buf, j), $ifaceNil];
 56425  	};
 56426  	Rat.prototype.GobEncode = function() { return this.$val.GobEncode(); };
 56427  	Rat.ptr.prototype.GobDecode = function(buf) {
 56428  		var _r$3, b, buf, i, z, $s, $r;
 56429  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$3 = $f._r$3; b = $f.b; buf = $f.buf; i = $f.i; z = $f.z; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 56430  		z = this;
 56431  		if (buf.$length === 0) {
 56432  			Rat.copy(z, new Rat.ptr(new Int.ptr(false, nat.nil), new Int.ptr(false, nat.nil)));
 56433  			$s = -1; return $ifaceNil;
 56434  		}
 56435  		b = (0 >= buf.$length ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + 0]);
 56436  		/* */ if (!(((b >>> 1 << 24 >>> 24) === 1))) { $s = 1; continue; }
 56437  		/* */ $s = 2; continue;
 56438  		/* if (!(((b >>> 1 << 24 >>> 24) === 1))) { */ case 1:
 56439  			_r$3 = fmt.Errorf("Rat.GobDecode: encoding version %d not supported", new sliceType([new $Uint8((b >>> 1 << 24 >>> 24))])); /* */ $s = 3; case 3: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 56440  			$s = -1; return _r$3;
 56441  		/* } */ case 2:
 56442  		i = 5 + $clone(binary.BigEndian, binary.bigEndian).Uint32($subslice(buf, 1, 5)) >>> 0;
 56443  		z.a.neg = !((((b & 1) >>> 0) === 0));
 56444  		z.a.abs = z.a.abs.setBytes($subslice(buf, 5, i));
 56445  		z.b.abs = z.b.abs.setBytes($subslice(buf, i));
 56446  		$s = -1; return $ifaceNil;
 56447  		/* */ } return; } if ($f === undefined) { $f = { $blk: Rat.ptr.prototype.GobDecode }; } $f._r$3 = _r$3; $f.b = b; $f.buf = buf; $f.i = i; $f.z = z; $f.$s = $s; $f.$r = $r; return $f;
 56448  	};
 56449  	Rat.prototype.GobDecode = function(buf) { return this.$val.GobDecode(buf); };
 56450  	Rat.ptr.prototype.MarshalText = function() {
 56451  		var _r$3, _r$4, _tmp, _tmp$1, _tuple, err, text, x, $s, $r;
 56452  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$3 = $f._r$3; _r$4 = $f._r$4; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tuple = $f._tuple; err = $f.err; text = $f.text; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 56453  		text = sliceType$1.nil;
 56454  		err = $ifaceNil;
 56455  		x = this;
 56456  		/* */ if (x.IsInt()) { $s = 1; continue; }
 56457  		/* */ $s = 2; continue;
 56458  		/* if (x.IsInt()) { */ case 1:
 56459  			_r$3 = x.a.MarshalText(); /* */ $s = 3; case 3: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 56460  			_tuple = _r$3;
 56461  			text = _tuple[0];
 56462  			err = _tuple[1];
 56463  			$s = -1; return [text, err];
 56464  		/* } */ case 2:
 56465  		_r$4 = x.marshal(); /* */ $s = 4; case 4: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 56466  		_tmp = _r$4;
 56467  		_tmp$1 = $ifaceNil;
 56468  		text = _tmp;
 56469  		err = _tmp$1;
 56470  		$s = -1; return [text, err];
 56471  		/* */ } return; } if ($f === undefined) { $f = { $blk: Rat.ptr.prototype.MarshalText }; } $f._r$3 = _r$3; $f._r$4 = _r$4; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tuple = _tuple; $f.err = err; $f.text = text; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
 56472  	};
 56473  	Rat.prototype.MarshalText = function() { return this.$val.MarshalText(); };
 56474  	Rat.ptr.prototype.UnmarshalText = function(text) {
 56475  		var _r$3, _r$4, _tuple, ok, text, z, $s, $r;
 56476  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$3 = $f._r$3; _r$4 = $f._r$4; _tuple = $f._tuple; ok = $f.ok; text = $f.text; z = $f.z; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 56477  		z = this;
 56478  		_r$3 = z.SetString(($bytesToString(text))); /* */ $s = 1; case 1: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 56479  		_tuple = _r$3;
 56480  		ok = _tuple[1];
 56481  		/* */ if (!ok) { $s = 2; continue; }
 56482  		/* */ $s = 3; continue;
 56483  		/* if (!ok) { */ case 2:
 56484  			_r$4 = fmt.Errorf("math/big: cannot unmarshal %q into a *big.Rat", new sliceType([text])); /* */ $s = 4; case 4: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 56485  			$s = -1; return _r$4;
 56486  		/* } */ case 3:
 56487  		$s = -1; return $ifaceNil;
 56488  		/* */ } return; } if ($f === undefined) { $f = { $blk: Rat.ptr.prototype.UnmarshalText }; } $f._r$3 = _r$3; $f._r$4 = _r$4; $f._tuple = _tuple; $f.ok = ok; $f.text = text; $f.z = z; $f.$s = $s; $f.$r = $r; return $f;
 56489  	};
 56490  	Rat.prototype.UnmarshalText = function(text) { return this.$val.UnmarshalText(text); };
 56491  	RoundingMode.prototype.String = function() {
 56492  		var _r$3, i, x, $s, $r;
 56493  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$3 = $f._r$3; i = $f.i; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 56494  		i = this.$val;
 56495  		/* */ if ((i + 1 << 24 >>> 24) >= 7) { $s = 1; continue; }
 56496  		/* */ $s = 2; continue;
 56497  		/* if ((i + 1 << 24 >>> 24) >= 7) { */ case 1:
 56498  			_r$3 = fmt.Sprintf("RoundingMode(%d)", new sliceType([new RoundingMode(i)])); /* */ $s = 3; case 3: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 56499  			$s = -1; return _r$3;
 56500  		/* } */ case 2:
 56501  		$s = -1; return $substring("ToNearestEvenToNearestAwayToZeroAwayFromZeroToNegativeInfToPositiveInf", ((i < 0 || i >= _RoundingMode_index.length) ? ($throwRuntimeError("index out of range"), undefined) : _RoundingMode_index[i]), (x = i + 1 << 24 >>> 24, ((x < 0 || x >= _RoundingMode_index.length) ? ($throwRuntimeError("index out of range"), undefined) : _RoundingMode_index[x])));
 56502  		/* */ } return; } if ($f === undefined) { $f = { $blk: RoundingMode.prototype.String }; } $f._r$3 = _r$3; $f.i = i; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
 56503  	};
 56504  	$ptrType(RoundingMode).prototype.String = function() { return new RoundingMode(this.$get()).String(); };
 56505  	Float.ptr.prototype.Sqrt = function(x) {
 56506  		var _1, _q, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, b, prec, x, x$1, z, $s, $r;
 56507  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _q = $f._q; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _r$8 = $f._r$8; b = $f.b; prec = $f.prec; x = $f.x; x$1 = $f.x$1; z = $f.z; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 56508  		z = this;
 56509  		/* */ if (false) { $s = 1; continue; }
 56510  		/* */ $s = 2; continue;
 56511  		/* if (false) { */ case 1:
 56512  			$r = x.validate(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 56513  		/* } */ case 2:
 56514  		if (z.prec === 0) {
 56515  			z.prec = x.prec;
 56516  		}
 56517  		_r$3 = x.Sign(); /* */ $s = 6; case 6: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 56518  		/* */ if (_r$3 === -1) { $s = 4; continue; }
 56519  		/* */ $s = 5; continue;
 56520  		/* if (_r$3 === -1) { */ case 4:
 56521  			$panic((x$1 = new ErrNaN.ptr("square root of negative operand"), new x$1.constructor.elem(x$1)));
 56522  		/* } */ case 5:
 56523  		if (!((x.form === 1))) {
 56524  			z.acc = 0;
 56525  			z.form = x.form;
 56526  			z.neg = x.neg;
 56527  			$s = -1; return z;
 56528  		}
 56529  		prec = z.prec;
 56530  		_r$4 = x.MantExp(z); /* */ $s = 7; case 7: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 56531  		b = _r$4;
 56532  		z.prec = prec;
 56533  			_1 = (_r$5 = b % 2, _r$5 === _r$5 ? _r$5 : $throwRuntimeError("integer divide by zero"));
 56534  			/* */ if (_1 === (0)) { $s = 9; continue; }
 56535  			/* */ if (_1 === (1)) { $s = 10; continue; }
 56536  			/* */ if (_1 === (-1)) { $s = 11; continue; }
 56537  			/* */ $s = 12; continue;
 56538  			/* if (_1 === (0)) { */ case 9:
 56539  				$s = 12; continue;
 56540  			/* } else if (_1 === (1)) { */ case 10:
 56541  				_r$6 = z.Mul(two, z); /* */ $s = 13; case 13: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
 56542  				_r$6;
 56543  				$s = 12; continue;
 56544  			/* } else if (_1 === (-1)) { */ case 11:
 56545  				_r$7 = z.Mul(half, z); /* */ $s = 14; case 14: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
 56546  				_r$7;
 56547  			/* } */ case 12:
 56548  		case 8:
 56549  		/* */ if (z.prec <= 128) { $s = 15; continue; }
 56550  		/* */ $s = 16; continue;
 56551  		/* if (z.prec <= 128) { */ case 15:
 56552  			$r = z.sqrtDirect(z); /* */ $s = 18; case 18: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 56553  			$s = 17; continue;
 56554  		/* } else { */ case 16:
 56555  			$r = z.sqrtInverse(z); /* */ $s = 19; case 19: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 56556  		/* } */ case 17:
 56557  		_r$8 = z.SetMantExp(z, (_q = b / 2, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero"))); /* */ $s = 20; case 20: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
 56558  		$s = -1; return _r$8;
 56559  		/* */ } return; } if ($f === undefined) { $f = { $blk: Float.ptr.prototype.Sqrt }; } $f._1 = _1; $f._q = _q; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._r$8 = _r$8; $f.b = b; $f.prec = prec; $f.x = x; $f.x$1 = x$1; $f.z = z; $f.$s = $s; $f.$r = $r; return $f;
 56560  	};
 56561  	Float.prototype.Sqrt = function(x) { return this.$val.Sqrt(x); };
 56562  	Float.ptr.prototype.sqrtDirect = function(x) {
 56563  		var _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _tuple, ng, sq, u, x, xf, z, $s, $r;
 56564  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _r$8 = $f._r$8; _tuple = $f._tuple; ng = $f.ng; sq = $f.sq; u = $f.u; x = $f.x; xf = $f.xf; z = $f.z; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 56565  		u = [u];
 56566  		x = [x];
 56567  		z = this;
 56568  		u[0] = new Float.ptr(0, 0, 0, 0, false, nat.nil, 0);
 56569  		ng = (function(u, x) { return function $b(t) {
 56570  			var _r$3, _r$4, _r$5, _r$6, t, $s, $r;
 56571  			/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; t = $f.t; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 56572  			u[0].prec = t.prec;
 56573  			_r$3 = u[0].Mul(t, t); /* */ $s = 1; case 1: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 56574  			_r$3;
 56575  			_r$4 = u[0].Add(u[0], x[0]); /* */ $s = 2; case 2: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 56576  			_r$4;
 56577  			_r$5 = u[0].Mul(half, u[0]); /* */ $s = 3; case 3: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
 56578  			_r$5;
 56579  			_r$6 = t.Quo(u[0], t); /* */ $s = 4; case 4: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
 56580  			$s = -1; return _r$6;
 56581  			/* */ } return; } if ($f === undefined) { $f = { $blk: $b }; } $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f.t = t; $f.$s = $s; $f.$r = $r; return $f;
 56582  		}; })(u, x);
 56583  		_r$3 = x[0].Float64(); /* */ $s = 1; case 1: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 56584  		_tuple = _r$3;
 56585  		xf = _tuple[0];
 56586  		_r$4 = NewFloat(math.Sqrt(xf)); /* */ $s = 2; case 2: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 56587  		sq = _r$4;
 56588  			/* */ if (z.prec > 128) { $s = 4; continue; }
 56589  			/* */ if (z.prec > 64) { $s = 5; continue; }
 56590  			/* */ $s = 6; continue;
 56591  			/* if (z.prec > 128) { */ case 4:
 56592  				$panic(new $String("sqrtDirect: only for z.prec <= 128"));
 56593  				$s = 7; continue;
 56594  			/* } else if (z.prec > 64) { */ case 5:
 56595  				sq.prec = $imul(sq.prec, (2)) >>> 0;
 56596  				_r$5 = ng(sq); /* */ $s = 8; case 8: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
 56597  				sq = _r$5;
 56598  				sq.prec = $imul(sq.prec, (2)) >>> 0;
 56599  				_r$6 = ng(sq); /* */ $s = 9; case 9: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
 56600  				sq = _r$6;
 56601  				$s = 7; continue;
 56602  			/* } else { */ case 6:
 56603  				sq.prec = $imul(sq.prec, (2)) >>> 0;
 56604  				_r$7 = ng(sq); /* */ $s = 10; case 10: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
 56605  				sq = _r$7;
 56606  			/* } */ case 7:
 56607  		case 3:
 56608  		_r$8 = z.Set(sq); /* */ $s = 11; case 11: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
 56609  		_r$8;
 56610  		$s = -1; return;
 56611  		/* */ } return; } if ($f === undefined) { $f = { $blk: Float.ptr.prototype.sqrtDirect }; } $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._r$8 = _r$8; $f._tuple = _tuple; $f.ng = ng; $f.sq = sq; $f.u = u; $f.x = x; $f.xf = xf; $f.z = z; $f.$s = $s; $f.$r = $r; return $f;
 56612  	};
 56613  	Float.prototype.sqrtDirect = function(x) { return this.$val.sqrtDirect(x); };
 56614  	Float.ptr.prototype.sqrtInverse = function(x) {
 56615  		var _r$3, _r$4, _r$5, _r$6, _tuple, ng, prec, sqi, u, x, xf, z, $s, $r;
 56616  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _tuple = $f._tuple; ng = $f.ng; prec = $f.prec; sqi = $f.sqi; u = $f.u; x = $f.x; xf = $f.xf; z = $f.z; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 56617  		u = [u];
 56618  		x = [x];
 56619  		z = this;
 56620  		u[0] = new Float.ptr(0, 0, 0, 0, false, nat.nil, 0);
 56621  		ng = (function(u, x) { return function $b(t) {
 56622  			var _r$3, _r$4, _r$5, _r$6, _r$7, t, $s, $r;
 56623  			/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; t = $f.t; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 56624  			u[0].prec = t.prec;
 56625  			_r$3 = u[0].Mul(t, t); /* */ $s = 1; case 1: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 56626  			_r$3;
 56627  			_r$4 = u[0].Mul(x[0], u[0]); /* */ $s = 2; case 2: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 56628  			_r$4;
 56629  			_r$5 = u[0].Sub(three, u[0]); /* */ $s = 3; case 3: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
 56630  			_r$5;
 56631  			_r$6 = u[0].Mul(t, u[0]); /* */ $s = 4; case 4: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
 56632  			_r$6;
 56633  			_r$7 = t.Mul(half, u[0]); /* */ $s = 5; case 5: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
 56634  			$s = -1; return _r$7;
 56635  			/* */ } return; } if ($f === undefined) { $f = { $blk: $b }; } $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f.t = t; $f.$s = $s; $f.$r = $r; return $f;
 56636  		}; })(u, x);
 56637  		_r$3 = x[0].Float64(); /* */ $s = 1; case 1: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 56638  		_tuple = _r$3;
 56639  		xf = _tuple[0];
 56640  		_r$4 = NewFloat(1 / math.Sqrt(xf)); /* */ $s = 2; case 2: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 56641  		sqi = _r$4;
 56642  		prec = z.prec + 32 >>> 0;
 56643  		/* while (true) { */ case 3:
 56644  			/* if (!(sqi.prec < prec)) { break; } */ if(!(sqi.prec < prec)) { $s = 4; continue; }
 56645  			sqi.prec = $imul(sqi.prec, (2)) >>> 0;
 56646  			_r$5 = ng(sqi); /* */ $s = 5; case 5: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
 56647  			sqi = _r$5;
 56648  		/* } */ $s = 3; continue; case 4:
 56649  		_r$6 = z.Mul(x[0], sqi); /* */ $s = 6; case 6: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
 56650  		_r$6;
 56651  		$s = -1; return;
 56652  		/* */ } return; } if ($f === undefined) { $f = { $blk: Float.ptr.prototype.sqrtInverse }; } $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._tuple = _tuple; $f.ng = ng; $f.prec = prec; $f.sqi = sqi; $f.u = u; $f.x = x; $f.xf = xf; $f.z = z; $f.$s = $s; $f.$r = $r; return $f;
 56653  	};
 56654  	Float.prototype.sqrtInverse = function(x) { return this.$val.sqrtInverse(x); };
 56655  	ptrType$5.methods = [{prop: "at", name: "at", pkg: "math/big", typ: $funcType([$Int], [$Uint8], false)}, {prop: "init", name: "init", pkg: "math/big", typ: $funcType([nat, $Int], [], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "round", name: "round", pkg: "math/big", typ: $funcType([$Int], [], false)}, {prop: "roundUp", name: "roundUp", pkg: "math/big", typ: $funcType([$Int], [], false)}, {prop: "roundDown", name: "roundDown", pkg: "math/big", typ: $funcType([$Int], [], false)}];
 56656  	ptrType.methods = [{prop: "SetPrec", name: "SetPrec", pkg: "", typ: $funcType([$Uint], [ptrType], false)}, {prop: "SetMode", name: "SetMode", pkg: "", typ: $funcType([RoundingMode], [ptrType], false)}, {prop: "Prec", name: "Prec", pkg: "", typ: $funcType([], [$Uint], false)}, {prop: "MinPrec", name: "MinPrec", pkg: "", typ: $funcType([], [$Uint], false)}, {prop: "Mode", name: "Mode", pkg: "", typ: $funcType([], [RoundingMode], false)}, {prop: "Acc", name: "Acc", pkg: "", typ: $funcType([], [Accuracy], false)}, {prop: "Sign", name: "Sign", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "MantExp", name: "MantExp", pkg: "", typ: $funcType([ptrType], [$Int], false)}, {prop: "setExpAndRound", name: "setExpAndRound", pkg: "math/big", typ: $funcType([$Int64, $Uint], [], false)}, {prop: "SetMantExp", name: "SetMantExp", pkg: "", typ: $funcType([ptrType, $Int], [ptrType], false)}, {prop: "Signbit", name: "Signbit", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "IsInf", name: "IsInf", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "IsInt", name: "IsInt", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "validate", name: "validate", pkg: "math/big", typ: $funcType([], [], false)}, {prop: "round", name: "round", pkg: "math/big", typ: $funcType([$Uint], [], false)}, {prop: "setBits64", name: "setBits64", pkg: "math/big", typ: $funcType([$Bool, $Uint64], [ptrType], false)}, {prop: "SetUint64", name: "SetUint64", pkg: "", typ: $funcType([$Uint64], [ptrType], false)}, {prop: "SetInt64", name: "SetInt64", pkg: "", typ: $funcType([$Int64], [ptrType], false)}, {prop: "SetFloat64", name: "SetFloat64", pkg: "", typ: $funcType([$Float64], [ptrType], false)}, {prop: "SetInt", name: "SetInt", pkg: "", typ: $funcType([ptrType$1], [ptrType], false)}, {prop: "SetRat", name: "SetRat", pkg: "", typ: $funcType([ptrType$2], [ptrType], false)}, {prop: "SetInf", name: "SetInf", pkg: "", typ: $funcType([$Bool], [ptrType], false)}, {prop: "Set", name: "Set", pkg: "", typ: $funcType([ptrType], [ptrType], false)}, {prop: "Copy", name: "Copy", pkg: "", typ: $funcType([ptrType], [ptrType], false)}, {prop: "Uint64", name: "Uint64", pkg: "", typ: $funcType([], [$Uint64, Accuracy], false)}, {prop: "Int64", name: "Int64", pkg: "", typ: $funcType([], [$Int64, Accuracy], false)}, {prop: "Float32", name: "Float32", pkg: "", typ: $funcType([], [$Float32, Accuracy], false)}, {prop: "Float64", name: "Float64", pkg: "", typ: $funcType([], [$Float64, Accuracy], false)}, {prop: "Int", name: "Int", pkg: "", typ: $funcType([ptrType$1], [ptrType$1, Accuracy], false)}, {prop: "Rat", name: "Rat", pkg: "", typ: $funcType([ptrType$2], [ptrType$2, Accuracy], false)}, {prop: "Abs", name: "Abs", pkg: "", typ: $funcType([ptrType], [ptrType], false)}, {prop: "Neg", name: "Neg", pkg: "", typ: $funcType([ptrType], [ptrType], false)}, {prop: "uadd", name: "uadd", pkg: "math/big", typ: $funcType([ptrType, ptrType], [], false)}, {prop: "usub", name: "usub", pkg: "math/big", typ: $funcType([ptrType, ptrType], [], false)}, {prop: "umul", name: "umul", pkg: "math/big", typ: $funcType([ptrType, ptrType], [], false)}, {prop: "uquo", name: "uquo", pkg: "math/big", typ: $funcType([ptrType, ptrType], [], false)}, {prop: "ucmp", name: "ucmp", pkg: "math/big", typ: $funcType([ptrType], [$Int], false)}, {prop: "Add", name: "Add", pkg: "", typ: $funcType([ptrType, ptrType], [ptrType], false)}, {prop: "Sub", name: "Sub", pkg: "", typ: $funcType([ptrType, ptrType], [ptrType], false)}, {prop: "Mul", name: "Mul", pkg: "", typ: $funcType([ptrType, ptrType], [ptrType], false)}, {prop: "Quo", name: "Quo", pkg: "", typ: $funcType([ptrType, ptrType], [ptrType], false)}, {prop: "Cmp", name: "Cmp", pkg: "", typ: $funcType([ptrType], [$Int], false)}, {prop: "ord", name: "ord", pkg: "math/big", typ: $funcType([], [$Int], false)}, {prop: "SetString", name: "SetString", pkg: "", typ: $funcType([$String], [ptrType, $Bool], false)}, {prop: "scan", name: "scan", pkg: "math/big", typ: $funcType([io.ByteScanner, $Int], [ptrType, $Int, $error], false)}, {prop: "pow5", name: "pow5", pkg: "math/big", typ: $funcType([$Uint64], [ptrType], false)}, {prop: "Parse", name: "Parse", pkg: "", typ: $funcType([$String, $Int], [ptrType, $Int, $error], false)}, {prop: "Scan", name: "Scan", pkg: "", typ: $funcType([fmt.ScanState, $Int32], [$error], false)}, {prop: "GobEncode", name: "GobEncode", pkg: "", typ: $funcType([], [sliceType$1, $error], false)}, {prop: "GobDecode", name: "GobDecode", pkg: "", typ: $funcType([sliceType$1], [$error], false)}, {prop: "MarshalText", name: "MarshalText", pkg: "", typ: $funcType([], [sliceType$1, $error], false)}, {prop: "UnmarshalText", name: "UnmarshalText", pkg: "", typ: $funcType([sliceType$1], [$error], false)}, {prop: "Text", name: "Text", pkg: "", typ: $funcType([$Uint8, $Int], [$String], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Append", name: "Append", pkg: "", typ: $funcType([sliceType$1, $Uint8, $Int], [sliceType$1], false)}, {prop: "fmtB", name: "fmtB", pkg: "math/big", typ: $funcType([sliceType$1], [sliceType$1], false)}, {prop: "fmtP", name: "fmtP", pkg: "math/big", typ: $funcType([sliceType$1], [sliceType$1], false)}, {prop: "Format", name: "Format", pkg: "", typ: $funcType([fmt.State, $Int32], [], false)}, {prop: "Sqrt", name: "Sqrt", pkg: "", typ: $funcType([ptrType], [ptrType], false)}, {prop: "sqrtDirect", name: "sqrtDirect", pkg: "math/big", typ: $funcType([ptrType], [], false)}, {prop: "sqrtInverse", name: "sqrtInverse", pkg: "math/big", typ: $funcType([ptrType], [], false)}];
 56657  	ErrNaN.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}];
 56658  	RoundingMode.methods = [{prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}];
 56659  	Accuracy.methods = [{prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}];
 56660  	ptrType$1.methods = [{prop: "Sign", name: "Sign", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "SetInt64", name: "SetInt64", pkg: "", typ: $funcType([$Int64], [ptrType$1], false)}, {prop: "SetUint64", name: "SetUint64", pkg: "", typ: $funcType([$Uint64], [ptrType$1], false)}, {prop: "Set", name: "Set", pkg: "", typ: $funcType([ptrType$1], [ptrType$1], false)}, {prop: "Bits", name: "Bits", pkg: "", typ: $funcType([], [sliceType$2], false)}, {prop: "SetBits", name: "SetBits", pkg: "", typ: $funcType([sliceType$2], [ptrType$1], false)}, {prop: "Abs", name: "Abs", pkg: "", typ: $funcType([ptrType$1], [ptrType$1], false)}, {prop: "Neg", name: "Neg", pkg: "", typ: $funcType([ptrType$1], [ptrType$1], false)}, {prop: "Add", name: "Add", pkg: "", typ: $funcType([ptrType$1, ptrType$1], [ptrType$1], false)}, {prop: "Sub", name: "Sub", pkg: "", typ: $funcType([ptrType$1, ptrType$1], [ptrType$1], false)}, {prop: "Mul", name: "Mul", pkg: "", typ: $funcType([ptrType$1, ptrType$1], [ptrType$1], false)}, {prop: "MulRange", name: "MulRange", pkg: "", typ: $funcType([$Int64, $Int64], [ptrType$1], false)}, {prop: "Binomial", name: "Binomial", pkg: "", typ: $funcType([$Int64, $Int64], [ptrType$1], false)}, {prop: "Quo", name: "Quo", pkg: "", typ: $funcType([ptrType$1, ptrType$1], [ptrType$1], false)}, {prop: "Rem", name: "Rem", pkg: "", typ: $funcType([ptrType$1, ptrType$1], [ptrType$1], false)}, {prop: "QuoRem", name: "QuoRem", pkg: "", typ: $funcType([ptrType$1, ptrType$1, ptrType$1], [ptrType$1, ptrType$1], false)}, {prop: "Div", name: "Div", pkg: "", typ: $funcType([ptrType$1, ptrType$1], [ptrType$1], false)}, {prop: "Mod", name: "Mod", pkg: "", typ: $funcType([ptrType$1, ptrType$1], [ptrType$1], false)}, {prop: "DivMod", name: "DivMod", pkg: "", typ: $funcType([ptrType$1, ptrType$1, ptrType$1], [ptrType$1, ptrType$1], false)}, {prop: "Cmp", name: "Cmp", pkg: "", typ: $funcType([ptrType$1], [$Int], false)}, {prop: "CmpAbs", name: "CmpAbs", pkg: "", typ: $funcType([ptrType$1], [$Int], false)}, {prop: "Int64", name: "Int64", pkg: "", typ: $funcType([], [$Int64], false)}, {prop: "Uint64", name: "Uint64", pkg: "", typ: $funcType([], [$Uint64], false)}, {prop: "IsInt64", name: "IsInt64", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "IsUint64", name: "IsUint64", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "SetString", name: "SetString", pkg: "", typ: $funcType([$String, $Int], [ptrType$1, $Bool], false)}, {prop: "setFromScanner", name: "setFromScanner", pkg: "math/big", typ: $funcType([io.ByteScanner, $Int], [ptrType$1, $Bool], false)}, {prop: "SetBytes", name: "SetBytes", pkg: "", typ: $funcType([sliceType$1], [ptrType$1], false)}, {prop: "Bytes", name: "Bytes", pkg: "", typ: $funcType([], [sliceType$1], false)}, {prop: "BitLen", name: "BitLen", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Exp", name: "Exp", pkg: "", typ: $funcType([ptrType$1, ptrType$1, ptrType$1], [ptrType$1], false)}, {prop: "GCD", name: "GCD", pkg: "", typ: $funcType([ptrType$1, ptrType$1, ptrType$1, ptrType$1], [ptrType$1], false)}, {prop: "lehmerGCD", name: "lehmerGCD", pkg: "math/big", typ: $funcType([ptrType$1, ptrType$1], [ptrType$1], false)}, {prop: "Rand", name: "Rand", pkg: "", typ: $funcType([ptrType$6, ptrType$1], [ptrType$1], false)}, {prop: "ModInverse", name: "ModInverse", pkg: "", typ: $funcType([ptrType$1, ptrType$1], [ptrType$1], false)}, {prop: "modSqrt3Mod4Prime", name: "modSqrt3Mod4Prime", pkg: "math/big", typ: $funcType([ptrType$1, ptrType$1], [ptrType$1], false)}, {prop: "modSqrtTonelliShanks", name: "modSqrtTonelliShanks", pkg: "math/big", typ: $funcType([ptrType$1, ptrType$1], [ptrType$1], false)}, {prop: "ModSqrt", name: "ModSqrt", pkg: "", typ: $funcType([ptrType$1, ptrType$1], [ptrType$1], false)}, {prop: "Lsh", name: "Lsh", pkg: "", typ: $funcType([ptrType$1, $Uint], [ptrType$1], false)}, {prop: "Rsh", name: "Rsh", pkg: "", typ: $funcType([ptrType$1, $Uint], [ptrType$1], false)}, {prop: "Bit", name: "Bit", pkg: "", typ: $funcType([$Int], [$Uint], false)}, {prop: "SetBit", name: "SetBit", pkg: "", typ: $funcType([ptrType$1, $Int, $Uint], [ptrType$1], false)}, {prop: "And", name: "And", pkg: "", typ: $funcType([ptrType$1, ptrType$1], [ptrType$1], false)}, {prop: "AndNot", name: "AndNot", pkg: "", typ: $funcType([ptrType$1, ptrType$1], [ptrType$1], false)}, {prop: "Or", name: "Or", pkg: "", typ: $funcType([ptrType$1, ptrType$1], [ptrType$1], false)}, {prop: "Xor", name: "Xor", pkg: "", typ: $funcType([ptrType$1, ptrType$1], [ptrType$1], false)}, {prop: "Not", name: "Not", pkg: "", typ: $funcType([ptrType$1], [ptrType$1], false)}, {prop: "Sqrt", name: "Sqrt", pkg: "", typ: $funcType([ptrType$1], [ptrType$1], false)}, {prop: "Text", name: "Text", pkg: "", typ: $funcType([$Int], [$String], false)}, {prop: "Append", name: "Append", pkg: "", typ: $funcType([sliceType$1, $Int], [sliceType$1], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Format", name: "Format", pkg: "", typ: $funcType([fmt.State, $Int32], [], false)}, {prop: "scan", name: "scan", pkg: "math/big", typ: $funcType([io.ByteScanner, $Int], [ptrType$1, $Int, $error], false)}, {prop: "Scan", name: "Scan", pkg: "", typ: $funcType([fmt.ScanState, $Int32], [$error], false)}, {prop: "GobEncode", name: "GobEncode", pkg: "", typ: $funcType([], [sliceType$1, $error], false)}, {prop: "GobDecode", name: "GobDecode", pkg: "", typ: $funcType([sliceType$1], [$error], false)}, {prop: "MarshalText", name: "MarshalText", pkg: "", typ: $funcType([], [sliceType$1, $error], false)}, {prop: "UnmarshalText", name: "UnmarshalText", pkg: "", typ: $funcType([sliceType$1], [$error], false)}, {prop: "MarshalJSON", name: "MarshalJSON", pkg: "", typ: $funcType([], [sliceType$1, $error], false)}, {prop: "UnmarshalJSON", name: "UnmarshalJSON", pkg: "", typ: $funcType([sliceType$1], [$error], false)}, {prop: "ProbablyPrime", name: "ProbablyPrime", pkg: "", typ: $funcType([$Int], [$Bool], false)}];
 56661  	byteReader.methods = [{prop: "ReadByte", name: "ReadByte", pkg: "", typ: $funcType([], [$Uint8, $error], false)}, {prop: "UnreadByte", name: "UnreadByte", pkg: "", typ: $funcType([], [$error], false)}];
 56662  	nat.methods = [{prop: "clear", name: "clear", pkg: "math/big", typ: $funcType([], [], false)}, {prop: "norm", name: "norm", pkg: "math/big", typ: $funcType([], [nat], false)}, {prop: "make", name: "make", pkg: "math/big", typ: $funcType([$Int], [nat], false)}, {prop: "setWord", name: "setWord", pkg: "math/big", typ: $funcType([Word], [nat], false)}, {prop: "setUint64", name: "setUint64", pkg: "math/big", typ: $funcType([$Uint64], [nat], false)}, {prop: "set", name: "set", pkg: "math/big", typ: $funcType([nat], [nat], false)}, {prop: "add", name: "add", pkg: "math/big", typ: $funcType([nat, nat], [nat], false)}, {prop: "sub", name: "sub", pkg: "math/big", typ: $funcType([nat, nat], [nat], false)}, {prop: "cmp", name: "cmp", pkg: "math/big", typ: $funcType([nat], [$Int], false)}, {prop: "mulAddWW", name: "mulAddWW", pkg: "math/big", typ: $funcType([nat, Word, Word], [nat], false)}, {prop: "montgomery", name: "montgomery", pkg: "math/big", typ: $funcType([nat, nat, nat, Word, $Int], [nat], false)}, {prop: "mul", name: "mul", pkg: "math/big", typ: $funcType([nat, nat], [nat], false)}, {prop: "sqr", name: "sqr", pkg: "math/big", typ: $funcType([nat], [nat], false)}, {prop: "mulRange", name: "mulRange", pkg: "math/big", typ: $funcType([$Uint64, $Uint64], [nat], false)}, {prop: "divW", name: "divW", pkg: "math/big", typ: $funcType([nat, Word], [nat, Word], false)}, {prop: "div", name: "div", pkg: "math/big", typ: $funcType([nat, nat, nat], [nat, nat], false)}, {prop: "divLarge", name: "divLarge", pkg: "math/big", typ: $funcType([nat, nat, nat], [nat, nat], false)}, {prop: "bitLen", name: "bitLen", pkg: "math/big", typ: $funcType([], [$Int], false)}, {prop: "trailingZeroBits", name: "trailingZeroBits", pkg: "math/big", typ: $funcType([], [$Uint], false)}, {prop: "shl", name: "shl", pkg: "math/big", typ: $funcType([nat, $Uint], [nat], false)}, {prop: "shr", name: "shr", pkg: "math/big", typ: $funcType([nat, $Uint], [nat], false)}, {prop: "setBit", name: "setBit", pkg: "math/big", typ: $funcType([nat, $Uint, $Uint], [nat], false)}, {prop: "bit", name: "bit", pkg: "math/big", typ: $funcType([$Uint], [$Uint], false)}, {prop: "sticky", name: "sticky", pkg: "math/big", typ: $funcType([$Uint], [$Uint], false)}, {prop: "and", name: "and", pkg: "math/big", typ: $funcType([nat, nat], [nat], false)}, {prop: "andNot", name: "andNot", pkg: "math/big", typ: $funcType([nat, nat], [nat], false)}, {prop: "or", name: "or", pkg: "math/big", typ: $funcType([nat, nat], [nat], false)}, {prop: "xor", name: "xor", pkg: "math/big", typ: $funcType([nat, nat], [nat], false)}, {prop: "modW", name: "modW", pkg: "math/big", typ: $funcType([Word], [Word], false)}, {prop: "random", name: "random", pkg: "math/big", typ: $funcType([ptrType$6, nat, $Int], [nat], false)}, {prop: "expNN", name: "expNN", pkg: "math/big", typ: $funcType([nat, nat, nat], [nat], false)}, {prop: "expNNWindowed", name: "expNNWindowed", pkg: "math/big", typ: $funcType([nat, nat, nat], [nat], false)}, {prop: "expNNMontgomery", name: "expNNMontgomery", pkg: "math/big", typ: $funcType([nat, nat, nat], [nat], false)}, {prop: "bytes", name: "bytes", pkg: "math/big", typ: $funcType([sliceType$1], [$Int], false)}, {prop: "setBytes", name: "setBytes", pkg: "math/big", typ: $funcType([sliceType$1], [nat], false)}, {prop: "sqrt", name: "sqrt", pkg: "math/big", typ: $funcType([nat], [nat], false)}, {prop: "scan", name: "scan", pkg: "math/big", typ: $funcType([io.ByteScanner, $Int, $Bool], [nat, $Int, $Int, $error], false)}, {prop: "utoa", name: "utoa", pkg: "math/big", typ: $funcType([$Int], [sliceType$1], false)}, {prop: "itoa", name: "itoa", pkg: "math/big", typ: $funcType([$Bool, $Int], [sliceType$1], false)}, {prop: "convertWords", name: "convertWords", pkg: "math/big", typ: $funcType([sliceType$1, Word, $Int, Word, sliceType$3], [], false)}, {prop: "expWW", name: "expWW", pkg: "math/big", typ: $funcType([Word, Word], [nat], false)}, {prop: "probablyPrimeMillerRabin", name: "probablyPrimeMillerRabin", pkg: "math/big", typ: $funcType([$Int, $Bool], [$Bool], false)}, {prop: "probablyPrimeLucas", name: "probablyPrimeLucas", pkg: "math/big", typ: $funcType([], [$Bool], false)}];
 56663  	ptrType$2.methods = [{prop: "SetFloat64", name: "SetFloat64", pkg: "", typ: $funcType([$Float64], [ptrType$2], false)}, {prop: "Float32", name: "Float32", pkg: "", typ: $funcType([], [$Float32, $Bool], false)}, {prop: "Float64", name: "Float64", pkg: "", typ: $funcType([], [$Float64, $Bool], false)}, {prop: "SetFrac", name: "SetFrac", pkg: "", typ: $funcType([ptrType$1, ptrType$1], [ptrType$2], false)}, {prop: "SetFrac64", name: "SetFrac64", pkg: "", typ: $funcType([$Int64, $Int64], [ptrType$2], false)}, {prop: "SetInt", name: "SetInt", pkg: "", typ: $funcType([ptrType$1], [ptrType$2], false)}, {prop: "SetInt64", name: "SetInt64", pkg: "", typ: $funcType([$Int64], [ptrType$2], false)}, {prop: "Set", name: "Set", pkg: "", typ: $funcType([ptrType$2], [ptrType$2], false)}, {prop: "Abs", name: "Abs", pkg: "", typ: $funcType([ptrType$2], [ptrType$2], false)}, {prop: "Neg", name: "Neg", pkg: "", typ: $funcType([ptrType$2], [ptrType$2], false)}, {prop: "Inv", name: "Inv", pkg: "", typ: $funcType([ptrType$2], [ptrType$2], false)}, {prop: "Sign", name: "Sign", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "IsInt", name: "IsInt", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "Num", name: "Num", pkg: "", typ: $funcType([], [ptrType$1], false)}, {prop: "Denom", name: "Denom", pkg: "", typ: $funcType([], [ptrType$1], false)}, {prop: "norm", name: "norm", pkg: "math/big", typ: $funcType([], [ptrType$2], false)}, {prop: "Cmp", name: "Cmp", pkg: "", typ: $funcType([ptrType$2], [$Int], false)}, {prop: "Add", name: "Add", pkg: "", typ: $funcType([ptrType$2, ptrType$2], [ptrType$2], false)}, {prop: "Sub", name: "Sub", pkg: "", typ: $funcType([ptrType$2, ptrType$2], [ptrType$2], false)}, {prop: "Mul", name: "Mul", pkg: "", typ: $funcType([ptrType$2, ptrType$2], [ptrType$2], false)}, {prop: "Quo", name: "Quo", pkg: "", typ: $funcType([ptrType$2, ptrType$2], [ptrType$2], false)}, {prop: "Scan", name: "Scan", pkg: "", typ: $funcType([fmt.ScanState, $Int32], [$error], false)}, {prop: "SetString", name: "SetString", pkg: "", typ: $funcType([$String], [ptrType$2, $Bool], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "marshal", name: "marshal", pkg: "math/big", typ: $funcType([], [sliceType$1], false)}, {prop: "RatString", name: "RatString", pkg: "", typ: $funcType([], [$String], false)}, {prop: "FloatString", name: "FloatString", pkg: "", typ: $funcType([$Int], [$String], false)}, {prop: "GobEncode", name: "GobEncode", pkg: "", typ: $funcType([], [sliceType$1, $error], false)}, {prop: "GobDecode", name: "GobDecode", pkg: "", typ: $funcType([sliceType$1], [$error], false)}, {prop: "MarshalText", name: "MarshalText", pkg: "", typ: $funcType([], [sliceType$1, $error], false)}, {prop: "UnmarshalText", name: "UnmarshalText", pkg: "", typ: $funcType([sliceType$1], [$error], false)}];
 56664  	decimal.init("math/big", [{prop: "mant", name: "mant", anonymous: false, exported: false, typ: sliceType$1, tag: ""}, {prop: "exp", name: "exp", anonymous: false, exported: false, typ: $Int, tag: ""}]);
 56665  	Float.init("math/big", [{prop: "prec", name: "prec", anonymous: false, exported: false, typ: $Uint32, tag: ""}, {prop: "mode", name: "mode", anonymous: false, exported: false, typ: RoundingMode, tag: ""}, {prop: "acc", name: "acc", anonymous: false, exported: false, typ: Accuracy, tag: ""}, {prop: "form", name: "form", anonymous: false, exported: false, typ: form, tag: ""}, {prop: "neg", name: "neg", anonymous: false, exported: false, typ: $Bool, tag: ""}, {prop: "mant", name: "mant", anonymous: false, exported: false, typ: nat, tag: ""}, {prop: "exp", name: "exp", anonymous: false, exported: false, typ: $Int32, tag: ""}]);
 56666  	ErrNaN.init("math/big", [{prop: "msg", name: "msg", anonymous: false, exported: false, typ: $String, tag: ""}]);
 56667  	Int.init("math/big", [{prop: "neg", name: "neg", anonymous: false, exported: false, typ: $Bool, tag: ""}, {prop: "abs", name: "abs", anonymous: false, exported: false, typ: nat, tag: ""}]);
 56668  	byteReader.init("", [{prop: "ScanState", name: "ScanState", anonymous: true, exported: true, typ: fmt.ScanState, tag: ""}]);
 56669  	nat.init(Word);
 56670  	divisor.init("math/big", [{prop: "bbb", name: "bbb", anonymous: false, exported: false, typ: nat, tag: ""}, {prop: "nbits", name: "nbits", anonymous: false, exported: false, typ: $Int, tag: ""}, {prop: "ndigits", name: "ndigits", anonymous: false, exported: false, typ: $Int, tag: ""}]);
 56671  	Rat.init("math/big", [{prop: "a", name: "a", anonymous: false, exported: false, typ: Int, tag: ""}, {prop: "b", name: "b", anonymous: false, exported: false, typ: Int, tag: ""}]);
 56672  	$init = function() {
 56673  		$pkg.$init = function() {};
 56674  		/* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 56675  		$r = bytes.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 56676  		$r = binary.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 56677  		$r = errors.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 56678  		$r = fmt.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 56679  		$r = nosync.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 56680  		$r = io.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 56681  		$r = math.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 56682  		$r = bits.$init(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 56683  		$r = rand.$init(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 56684  		$r = strconv.$init(); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 56685  		$r = strings.$init(); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 56686  		natPool = new nosync.Pool.ptr(sliceType.nil, $throwNilPointerError);
 56687  		cacheBase10 = new structType.ptr(new nosync.Mutex.ptr(false), arrayType.zero());
 56688  		_Accuracy_index = $toNativeArray($kindUint8, [0, 5, 10, 15]);
 56689  		pow5tab = $toNativeArray($kindUint64, [new $Uint64(0, 1), new $Uint64(0, 5), new $Uint64(0, 25), new $Uint64(0, 125), new $Uint64(0, 625), new $Uint64(0, 3125), new $Uint64(0, 15625), new $Uint64(0, 78125), new $Uint64(0, 390625), new $Uint64(0, 1953125), new $Uint64(0, 9765625), new $Uint64(0, 48828125), new $Uint64(0, 244140625), new $Uint64(0, 1220703125), new $Uint64(1, 1808548329), new $Uint64(7, 452807053), new $Uint64(35, 2264035265), new $Uint64(177, 2730241733), new $Uint64(888, 766306777), new $Uint64(4440, 3831533885), new $Uint64(22204, 1977800241), new $Uint64(111022, 1299066613), new $Uint64(555111, 2200365769), new $Uint64(2775557, 2411894253), new $Uint64(13877787, 3469536673), new $Uint64(69388939, 167814181), new $Uint64(346944695, 839070905), new $Uint64(1734723475, 4195354525)]);
 56690  		natOne = new nat([1]);
 56691  		intOne = new Int.ptr(false, natOne);
 56692  		natTwo = new nat([2]);
 56693  		natTen = new nat([10]);
 56694  		karatsubaThreshold = 40;
 56695  		basicSqrThreshold = 20;
 56696  		karatsubaSqrThreshold = 400;
 56697  		leafSize = 8;
 56698  		_RoundingMode_index = $toNativeArray($kindUint8, [0, 13, 26, 32, 44, 57, 70]);
 56699  		_r = NewFloat(0.5); /* */ $s = 12; case 12: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 56700  		half = _r;
 56701  		_r$1 = NewFloat(2); /* */ $s = 13; case 13: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 56702  		two = _r$1;
 56703  		_r$2 = NewFloat(3); /* */ $s = 14; case 14: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 56704  		three = _r$2;
 56705  		/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
 56706  	};
 56707  	$pkg.$init = $init;
 56708  	return $pkg;
 56709  })();
 56710  $packages["crypto/rand"] = (function() {
 56711  	var $pkg = {}, $init, errors, js, io, big, rngReader, sliceType, ptrType, ptrType$1, smallPrimesProduct, init, Read, Int;
 56712  	errors = $packages["errors"];
 56713  	js = $packages["github.com/gopherjs/gopherjs/js"];
 56714  	io = $packages["io"];
 56715  	big = $packages["math/big"];
 56716  	rngReader = $pkg.rngReader = $newType(0, $kindStruct, "rand.rngReader", true, "crypto/rand", false, function() {
 56717  		this.$val = this;
 56718  		if (arguments.length === 0) {
 56719  			return;
 56720  		}
 56721  	});
 56722  	sliceType = $sliceType($Uint8);
 56723  	ptrType = $ptrType(big.Int);
 56724  	ptrType$1 = $ptrType(rngReader);
 56725  	init = function() {
 56726  		$pkg.Reader = new rngReader.ptr();
 56727  	};
 56728  	rngReader.ptr.prototype.Read = function(b) {
 56729  		var _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, array, b, crypto, err, n, offset, r, randomBytes, require;
 56730  		n = 0;
 56731  		err = $ifaceNil;
 56732  		r = this;
 56733  		array = b.$array;
 56734  		offset = $parseInt(b.$offset) >> 0;
 56735  		crypto = $global.crypto;
 56736  		if (crypto === undefined) {
 56737  			crypto = $global.msCrypto;
 56738  		}
 56739  		if (!(crypto === undefined)) {
 56740  			if (!(crypto.getRandomValues === undefined)) {
 56741  				n = b.$length;
 56742  				if (n > 65536) {
 56743  					n = 65536;
 56744  				}
 56745  				crypto.getRandomValues(array.subarray(offset, offset + n >> 0));
 56746  				_tmp = n;
 56747  				_tmp$1 = $ifaceNil;
 56748  				n = _tmp;
 56749  				err = _tmp$1;
 56750  				return [n, err];
 56751  			}
 56752  		}
 56753  		require = $global.require;
 56754  		if (!(require === undefined)) {
 56755  			randomBytes = require($externalize("crypto", $String)).randomBytes;
 56756  			if (!(randomBytes === undefined)) {
 56757  				array.set(randomBytes(b.$length), offset);
 56758  				_tmp$2 = b.$length;
 56759  				_tmp$3 = $ifaceNil;
 56760  				n = _tmp$2;
 56761  				err = _tmp$3;
 56762  				return [n, err];
 56763  			}
 56764  		}
 56765  		_tmp$4 = 0;
 56766  		_tmp$5 = errors.New("crypto/rand not available in this environment");
 56767  		n = _tmp$4;
 56768  		err = _tmp$5;
 56769  		return [n, err];
 56770  	};
 56771  	rngReader.prototype.Read = function(b) { return this.$val.Read(b); };
 56772  	Read = function(b) {
 56773  		var _r, _tuple, b, err, n, $s, $r;
 56774  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; b = $f.b; err = $f.err; n = $f.n; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 56775  		n = 0;
 56776  		err = $ifaceNil;
 56777  		_r = io.ReadFull($pkg.Reader, b); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 56778  		_tuple = _r;
 56779  		n = _tuple[0];
 56780  		err = _tuple[1];
 56781  		$s = -1; return [n, err];
 56782  		/* */ } return; } if ($f === undefined) { $f = { $blk: Read }; } $f._r = _r; $f._tuple = _tuple; $f.b = b; $f.err = err; $f.n = n; $f.$s = $s; $f.$r = $r; return $f;
 56783  	};
 56784  	$pkg.Read = Read;
 56785  	Int = function(rand, max) {
 56786  		var _q, _r, _r$1, _tmp, _tmp$1, _tuple, b, bitLen, bytes, err, k, max, n, rand, y, $s, $r;
 56787  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _q = $f._q; _r = $f._r; _r$1 = $f._r$1; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tuple = $f._tuple; b = $f.b; bitLen = $f.bitLen; bytes = $f.bytes; err = $f.err; k = $f.k; max = $f.max; n = $f.n; rand = $f.rand; y = $f.y; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 56788  		n = ptrType.nil;
 56789  		err = $ifaceNil;
 56790  		if (max.Sign() <= 0) {
 56791  			$panic(new $String("crypto/rand: argument to Int is <= 0"));
 56792  		}
 56793  		n = new big.Int.ptr(false, big.nat.nil);
 56794  		n.Sub(max, n.SetUint64(new $Uint64(0, 1)));
 56795  		bitLen = n.BitLen();
 56796  		if (bitLen === 0) {
 56797  			$s = -1; return [n, err];
 56798  		}
 56799  		k = (_q = ((bitLen + 7 >> 0)) / 8, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero"));
 56800  		b = (((_r = bitLen % 8, _r === _r ? _r : $throwRuntimeError("integer divide by zero")) >>> 0));
 56801  		if (b === 0) {
 56802  			b = 8;
 56803  		}
 56804  		bytes = $makeSlice(sliceType, k);
 56805  		/* while (true) { */ case 1:
 56806  			_r$1 = io.ReadFull(rand, bytes); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 56807  			_tuple = _r$1;
 56808  			err = _tuple[1];
 56809  			if (!($interfaceIsEqual(err, $ifaceNil))) {
 56810  				_tmp = ptrType.nil;
 56811  				_tmp$1 = err;
 56812  				n = _tmp;
 56813  				err = _tmp$1;
 56814  				$s = -1; return [n, err];
 56815  			}
 56816  			(0 >= bytes.$length ? ($throwRuntimeError("index out of range"), undefined) : bytes.$array[bytes.$offset + 0] = (((0 >= bytes.$length ? ($throwRuntimeError("index out of range"), undefined) : bytes.$array[bytes.$offset + 0]) & (((((((y = b, y < 32 ? (1 << y) : 0) >> 0)) - 1 >> 0) << 24 >>> 24)))) >>> 0));
 56817  			n.SetBytes(bytes);
 56818  			if (n.Cmp(max) < 0) {
 56819  				$s = -1; return [n, err];
 56820  			}
 56821  		/* } */ $s = 1; continue; case 2:
 56822  		$s = -1; return [n, err];
 56823  		/* */ } return; } if ($f === undefined) { $f = { $blk: Int }; } $f._q = _q; $f._r = _r; $f._r$1 = _r$1; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tuple = _tuple; $f.b = b; $f.bitLen = bitLen; $f.bytes = bytes; $f.err = err; $f.k = k; $f.max = max; $f.n = n; $f.rand = rand; $f.y = y; $f.$s = $s; $f.$r = $r; return $f;
 56824  	};
 56825  	$pkg.Int = Int;
 56826  	ptrType$1.methods = [{prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType], [$Int, $error], false)}];
 56827  	rngReader.init("", []);
 56828  	$init = function() {
 56829  		$pkg.$init = function() {};
 56830  		/* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 56831  		$r = errors.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 56832  		$r = js.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 56833  		$r = io.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 56834  		$r = big.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 56835  		$pkg.Reader = $ifaceNil;
 56836  		smallPrimesProduct = new big.Int.ptr(false, big.nat.nil).SetUint64(new $Uint64(3793877372, 820596253));
 56837  		init();
 56838  		/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
 56839  	};
 56840  	$pkg.$init = $init;
 56841  	return $pkg;
 56842  })();
 56843  $packages["crypto"] = (function() {
 56844  	var $pkg = {}, $init, hash, io, strconv, Hash, PublicKey, PrivateKey, Signer, SignerOpts, Decrypter, DecrypterOpts, sliceType, funcType, sliceType$1, digestSizes, hashes, RegisterHash;
 56845  	hash = $packages["hash"];
 56846  	io = $packages["io"];
 56847  	strconv = $packages["strconv"];
 56848  	Hash = $pkg.Hash = $newType(4, $kindUint, "crypto.Hash", true, "crypto", true, null);
 56849  	PublicKey = $pkg.PublicKey = $newType(8, $kindInterface, "crypto.PublicKey", true, "crypto", true, null);
 56850  	PrivateKey = $pkg.PrivateKey = $newType(8, $kindInterface, "crypto.PrivateKey", true, "crypto", true, null);
 56851  	Signer = $pkg.Signer = $newType(8, $kindInterface, "crypto.Signer", true, "crypto", true, null);
 56852  	SignerOpts = $pkg.SignerOpts = $newType(8, $kindInterface, "crypto.SignerOpts", true, "crypto", true, null);
 56853  	Decrypter = $pkg.Decrypter = $newType(8, $kindInterface, "crypto.Decrypter", true, "crypto", true, null);
 56854  	DecrypterOpts = $pkg.DecrypterOpts = $newType(8, $kindInterface, "crypto.DecrypterOpts", true, "crypto", true, null);
 56855  	sliceType = $sliceType($Uint8);
 56856  	funcType = $funcType([], [hash.Hash], false);
 56857  	sliceType$1 = $sliceType(funcType);
 56858  	Hash.prototype.HashFunc = function() {
 56859  		var h;
 56860  		h = this.$val;
 56861  		return h;
 56862  	};
 56863  	$ptrType(Hash).prototype.HashFunc = function() { return new Hash(this.$get()).HashFunc(); };
 56864  	Hash.prototype.Size = function() {
 56865  		var h;
 56866  		h = this.$val;
 56867  		if (h > 0 && h < 20) {
 56868  			return ((((h < 0 || h >= digestSizes.$length) ? ($throwRuntimeError("index out of range"), undefined) : digestSizes.$array[digestSizes.$offset + h]) >> 0));
 56869  		}
 56870  		$panic(new $String("crypto: Size of unknown hash function"));
 56871  	};
 56872  	$ptrType(Hash).prototype.Size = function() { return new Hash(this.$get()).Size(); };
 56873  	Hash.prototype.New = function() {
 56874  		var _r, f, h, $s, $r;
 56875  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; f = $f.f; h = $f.h; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 56876  		h = this.$val;
 56877  		/* */ if (h > 0 && h < 20) { $s = 1; continue; }
 56878  		/* */ $s = 2; continue;
 56879  		/* if (h > 0 && h < 20) { */ case 1:
 56880  			f = ((h < 0 || h >= hashes.$length) ? ($throwRuntimeError("index out of range"), undefined) : hashes.$array[hashes.$offset + h]);
 56881  			/* */ if (!(f === $throwNilPointerError)) { $s = 3; continue; }
 56882  			/* */ $s = 4; continue;
 56883  			/* if (!(f === $throwNilPointerError)) { */ case 3:
 56884  				_r = f(); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 56885  				$s = -1; return _r;
 56886  			/* } */ case 4:
 56887  		/* } */ case 2:
 56888  		$panic(new $String("crypto: requested hash function #" + strconv.Itoa(((h >> 0))) + " is unavailable"));
 56889  		$s = -1; return $ifaceNil;
 56890  		/* */ } return; } if ($f === undefined) { $f = { $blk: Hash.prototype.New }; } $f._r = _r; $f.f = f; $f.h = h; $f.$s = $s; $f.$r = $r; return $f;
 56891  	};
 56892  	$ptrType(Hash).prototype.New = function() { return new Hash(this.$get()).New(); };
 56893  	Hash.prototype.Available = function() {
 56894  		var h;
 56895  		h = this.$val;
 56896  		return h < 20 && !(((h < 0 || h >= hashes.$length) ? ($throwRuntimeError("index out of range"), undefined) : hashes.$array[hashes.$offset + h]) === $throwNilPointerError);
 56897  	};
 56898  	$ptrType(Hash).prototype.Available = function() { return new Hash(this.$get()).Available(); };
 56899  	RegisterHash = function(h, f) {
 56900  		var f, h;
 56901  		if (h >= 20) {
 56902  			$panic(new $String("crypto: RegisterHash of unknown hash function"));
 56903  		}
 56904  		((h < 0 || h >= hashes.$length) ? ($throwRuntimeError("index out of range"), undefined) : hashes.$array[hashes.$offset + h] = f);
 56905  	};
 56906  	$pkg.RegisterHash = RegisterHash;
 56907  	Hash.methods = [{prop: "HashFunc", name: "HashFunc", pkg: "", typ: $funcType([], [Hash], false)}, {prop: "Size", name: "Size", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "New", name: "New", pkg: "", typ: $funcType([], [hash.Hash], false)}, {prop: "Available", name: "Available", pkg: "", typ: $funcType([], [$Bool], false)}];
 56908  	PublicKey.init([]);
 56909  	PrivateKey.init([]);
 56910  	Signer.init([{prop: "Public", name: "Public", pkg: "", typ: $funcType([], [PublicKey], false)}, {prop: "Sign", name: "Sign", pkg: "", typ: $funcType([io.Reader, sliceType, SignerOpts], [sliceType, $error], false)}]);
 56911  	SignerOpts.init([{prop: "HashFunc", name: "HashFunc", pkg: "", typ: $funcType([], [Hash], false)}]);
 56912  	Decrypter.init([{prop: "Decrypt", name: "Decrypt", pkg: "", typ: $funcType([io.Reader, sliceType, DecrypterOpts], [sliceType, $error], false)}, {prop: "Public", name: "Public", pkg: "", typ: $funcType([], [PublicKey], false)}]);
 56913  	DecrypterOpts.init([]);
 56914  	$init = function() {
 56915  		$pkg.$init = function() {};
 56916  		/* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 56917  		$r = hash.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 56918  		$r = io.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 56919  		$r = strconv.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 56920  		digestSizes = new sliceType([0, 16, 16, 20, 28, 32, 48, 64, 36, 20, 28, 32, 48, 64, 28, 32, 32, 32, 48, 64]);
 56921  		hashes = $makeSlice(sliceType$1, 20);
 56922  		/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
 56923  	};
 56924  	$pkg.$init = $init;
 56925  	return $pkg;
 56926  })();
 56927  $packages["crypto/subtle"] = (function() {
 56928  	var $pkg = {}, $init, ConstantTimeCompare, ConstantTimeSelect, ConstantTimeByteEq, ConstantTimeEq, ConstantTimeCopy, ConstantTimeLessOrEq;
 56929  	ConstantTimeCompare = function(x, y) {
 56930  		var i, v, x, y;
 56931  		if (!((x.$length === y.$length))) {
 56932  			return 0;
 56933  		}
 56934  		v = 0;
 56935  		i = 0;
 56936  		while (true) {
 56937  			if (!(i < x.$length)) { break; }
 56938  			v = (v | (((((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i]) ^ ((i < 0 || i >= y.$length) ? ($throwRuntimeError("index out of range"), undefined) : y.$array[y.$offset + i])) << 24 >>> 24))) >>> 0;
 56939  			i = i + (1) >> 0;
 56940  		}
 56941  		return ConstantTimeByteEq(v, 0);
 56942  	};
 56943  	$pkg.ConstantTimeCompare = ConstantTimeCompare;
 56944  	ConstantTimeSelect = function(v, x, y) {
 56945  		var v, x, y;
 56946  		return ((~((v - 1 >> 0)) >> 0) & x) | (((v - 1 >> 0)) & y);
 56947  	};
 56948  	$pkg.ConstantTimeSelect = ConstantTimeSelect;
 56949  	ConstantTimeByteEq = function(x, y) {
 56950  		var x, y;
 56951  		return (((((((((x ^ y) << 24 >>> 24) >>> 0)) - 1 >>> 0)) >>> 31 >>> 0) >> 0));
 56952  	};
 56953  	$pkg.ConstantTimeByteEq = ConstantTimeByteEq;
 56954  	ConstantTimeEq = function(x, y) {
 56955  		var x, x$1, y;
 56956  		return (($shiftRightUint64(((x$1 = (new $Uint64(0, ((((x ^ y) >> 0) >>> 0)))), new $Uint64(x$1.$high - 0, x$1.$low - 1))), 63).$low >> 0));
 56957  	};
 56958  	$pkg.ConstantTimeEq = ConstantTimeEq;
 56959  	ConstantTimeCopy = function(v, x, y) {
 56960  		var i, v, x, xmask, y, ymask;
 56961  		if (!((x.$length === y.$length))) {
 56962  			$panic(new $String("subtle: slices have different lengths"));
 56963  		}
 56964  		xmask = (((v - 1 >> 0) << 24 >>> 24));
 56965  		ymask = (((~((v - 1 >> 0)) >> 0) << 24 >>> 24));
 56966  		i = 0;
 56967  		while (true) {
 56968  			if (!(i < x.$length)) { break; }
 56969  			((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i] = ((((((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i]) & xmask) >>> 0) | ((((i < 0 || i >= y.$length) ? ($throwRuntimeError("index out of range"), undefined) : y.$array[y.$offset + i]) & ymask) >>> 0)) >>> 0));
 56970  			i = i + (1) >> 0;
 56971  		}
 56972  	};
 56973  	$pkg.ConstantTimeCopy = ConstantTimeCopy;
 56974  	ConstantTimeLessOrEq = function(x, y) {
 56975  		var x, x32, y, y32;
 56976  		x32 = ((x >> 0));
 56977  		y32 = ((y >> 0));
 56978  		return ((((((((x32 - y32 >> 0) - 1 >> 0)) >> 31 >> 0)) & 1) >> 0));
 56979  	};
 56980  	$pkg.ConstantTimeLessOrEq = ConstantTimeLessOrEq;
 56981  	$init = function() {
 56982  		$pkg.$init = function() {};
 56983  		/* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 56984  		/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
 56985  	};
 56986  	$pkg.$init = $init;
 56987  	return $pkg;
 56988  })();
 56989  $packages["crypto/cipher"] = (function() {
 56990  	var $pkg = {}, $init, subtle, errors, io, runtime, cbc, cbcEncrypter, cbcEncAble, cbcDecrypter, cbcDecAble, Block, Stream, BlockMode, ctr, ctrAble, AEAD, gcmAble, gcmFieldElement, gcm, StreamReader, sliceType, sliceType$1, ptrType, ptrType$1, arrayType, arrayType$1, ptrType$3, ptrType$4, ptrType$5, ptrType$6, errOpen, gcmReductionTable, newCBC, NewCBCEncrypter, NewCBCDecrypter, dup, NewCTR, NewGCM, NewGCMWithNonceSize, reverseBits, gcmAdd, gcmDouble, gcmInc32, sliceForAppend, getUint64, putUint64, fastXORBytes, safeXORBytes, xorBytes, fastXORWords, xorWords;
 56991  	subtle = $packages["crypto/subtle"];
 56992  	errors = $packages["errors"];
 56993  	io = $packages["io"];
 56994  	runtime = $packages["runtime"];
 56995  	cbc = $pkg.cbc = $newType(0, $kindStruct, "cipher.cbc", true, "crypto/cipher", false, function(b_, blockSize_, iv_, tmp_) {
 56996  		this.$val = this;
 56997  		if (arguments.length === 0) {
 56998  			this.b = $ifaceNil;
 56999  			this.blockSize = 0;
 57000  			this.iv = sliceType$1.nil;
 57001  			this.tmp = sliceType$1.nil;
 57002  			return;
 57003  		}
 57004  		this.b = b_;
 57005  		this.blockSize = blockSize_;
 57006  		this.iv = iv_;
 57007  		this.tmp = tmp_;
 57008  	});
 57009  	cbcEncrypter = $pkg.cbcEncrypter = $newType(0, $kindStruct, "cipher.cbcEncrypter", true, "crypto/cipher", false, function(b_, blockSize_, iv_, tmp_) {
 57010  		this.$val = this;
 57011  		if (arguments.length === 0) {
 57012  			this.b = $ifaceNil;
 57013  			this.blockSize = 0;
 57014  			this.iv = sliceType$1.nil;
 57015  			this.tmp = sliceType$1.nil;
 57016  			return;
 57017  		}
 57018  		this.b = b_;
 57019  		this.blockSize = blockSize_;
 57020  		this.iv = iv_;
 57021  		this.tmp = tmp_;
 57022  	});
 57023  	cbcEncAble = $pkg.cbcEncAble = $newType(8, $kindInterface, "cipher.cbcEncAble", true, "crypto/cipher", false, null);
 57024  	cbcDecrypter = $pkg.cbcDecrypter = $newType(0, $kindStruct, "cipher.cbcDecrypter", true, "crypto/cipher", false, function(b_, blockSize_, iv_, tmp_) {
 57025  		this.$val = this;
 57026  		if (arguments.length === 0) {
 57027  			this.b = $ifaceNil;
 57028  			this.blockSize = 0;
 57029  			this.iv = sliceType$1.nil;
 57030  			this.tmp = sliceType$1.nil;
 57031  			return;
 57032  		}
 57033  		this.b = b_;
 57034  		this.blockSize = blockSize_;
 57035  		this.iv = iv_;
 57036  		this.tmp = tmp_;
 57037  	});
 57038  	cbcDecAble = $pkg.cbcDecAble = $newType(8, $kindInterface, "cipher.cbcDecAble", true, "crypto/cipher", false, null);
 57039  	Block = $pkg.Block = $newType(8, $kindInterface, "cipher.Block", true, "crypto/cipher", true, null);
 57040  	Stream = $pkg.Stream = $newType(8, $kindInterface, "cipher.Stream", true, "crypto/cipher", true, null);
 57041  	BlockMode = $pkg.BlockMode = $newType(8, $kindInterface, "cipher.BlockMode", true, "crypto/cipher", true, null);
 57042  	ctr = $pkg.ctr = $newType(0, $kindStruct, "cipher.ctr", true, "crypto/cipher", false, function(b_, ctr_, out_, outUsed_) {
 57043  		this.$val = this;
 57044  		if (arguments.length === 0) {
 57045  			this.b = $ifaceNil;
 57046  			this.ctr = sliceType$1.nil;
 57047  			this.out = sliceType$1.nil;
 57048  			this.outUsed = 0;
 57049  			return;
 57050  		}
 57051  		this.b = b_;
 57052  		this.ctr = ctr_;
 57053  		this.out = out_;
 57054  		this.outUsed = outUsed_;
 57055  	});
 57056  	ctrAble = $pkg.ctrAble = $newType(8, $kindInterface, "cipher.ctrAble", true, "crypto/cipher", false, null);
 57057  	AEAD = $pkg.AEAD = $newType(8, $kindInterface, "cipher.AEAD", true, "crypto/cipher", true, null);
 57058  	gcmAble = $pkg.gcmAble = $newType(8, $kindInterface, "cipher.gcmAble", true, "crypto/cipher", false, null);
 57059  	gcmFieldElement = $pkg.gcmFieldElement = $newType(0, $kindStruct, "cipher.gcmFieldElement", true, "crypto/cipher", false, function(low_, high_) {
 57060  		this.$val = this;
 57061  		if (arguments.length === 0) {
 57062  			this.low = new $Uint64(0, 0);
 57063  			this.high = new $Uint64(0, 0);
 57064  			return;
 57065  		}
 57066  		this.low = low_;
 57067  		this.high = high_;
 57068  	});
 57069  	gcm = $pkg.gcm = $newType(0, $kindStruct, "cipher.gcm", true, "crypto/cipher", false, function(cipher_, nonceSize_, productTable_) {
 57070  		this.$val = this;
 57071  		if (arguments.length === 0) {
 57072  			this.cipher = $ifaceNil;
 57073  			this.nonceSize = 0;
 57074  			this.productTable = arrayType$1.zero();
 57075  			return;
 57076  		}
 57077  		this.cipher = cipher_;
 57078  		this.nonceSize = nonceSize_;
 57079  		this.productTable = productTable_;
 57080  	});
 57081  	StreamReader = $pkg.StreamReader = $newType(0, $kindStruct, "cipher.StreamReader", true, "crypto/cipher", true, function(S_, R_) {
 57082  		this.$val = this;
 57083  		if (arguments.length === 0) {
 57084  			this.S = $ifaceNil;
 57085  			this.R = $ifaceNil;
 57086  			return;
 57087  		}
 57088  		this.S = S_;
 57089  		this.R = R_;
 57090  	});
 57091  	sliceType = $sliceType($Uint16);
 57092  	sliceType$1 = $sliceType($Uint8);
 57093  	ptrType = $ptrType(cbcEncrypter);
 57094  	ptrType$1 = $ptrType(cbcDecrypter);
 57095  	arrayType = $arrayType($Uint8, 16);
 57096  	arrayType$1 = $arrayType(gcmFieldElement, 16);
 57097  	ptrType$3 = $ptrType(ctr);
 57098  	ptrType$4 = $ptrType(gcmFieldElement);
 57099  	ptrType$5 = $ptrType(arrayType);
 57100  	ptrType$6 = $ptrType(gcm);
 57101  	newCBC = function(b, iv) {
 57102  		var _r, _r$1, b, iv, $s, $r;
 57103  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; b = $f.b; iv = $f.iv; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 57104  		_r = b.BlockSize(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 57105  		_r$1 = b.BlockSize(); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 57106  		$s = -1; return new cbc.ptr(b, _r, dup(iv), $makeSlice(sliceType$1, _r$1));
 57107  		/* */ } return; } if ($f === undefined) { $f = { $blk: newCBC }; } $f._r = _r; $f._r$1 = _r$1; $f.b = b; $f.iv = iv; $f.$s = $s; $f.$r = $r; return $f;
 57108  	};
 57109  	NewCBCEncrypter = function(b, iv) {
 57110  		var _r, _r$1, _r$2, _tuple, b, cbc$1, iv, ok, $s, $r;
 57111  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _tuple = $f._tuple; b = $f.b; cbc$1 = $f.cbc$1; iv = $f.iv; ok = $f.ok; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 57112  		_r = b.BlockSize(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 57113  		/* */ if (!((iv.$length === _r))) { $s = 1; continue; }
 57114  		/* */ $s = 2; continue;
 57115  		/* if (!((iv.$length === _r))) { */ case 1:
 57116  			$panic(new $String("cipher.NewCBCEncrypter: IV length must equal block size"));
 57117  		/* } */ case 2:
 57118  		_tuple = $assertType(b, cbcEncAble, true);
 57119  		cbc$1 = _tuple[0];
 57120  		ok = _tuple[1];
 57121  		/* */ if (ok) { $s = 4; continue; }
 57122  		/* */ $s = 5; continue;
 57123  		/* if (ok) { */ case 4:
 57124  			_r$1 = cbc$1.NewCBCEncrypter(iv); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 57125  			$s = -1; return _r$1;
 57126  		/* } */ case 5:
 57127  		_r$2 = newCBC(b, iv); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 57128  		$s = -1; return ($pointerOfStructConversion(_r$2, ptrType));
 57129  		/* */ } return; } if ($f === undefined) { $f = { $blk: NewCBCEncrypter }; } $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._tuple = _tuple; $f.b = b; $f.cbc$1 = cbc$1; $f.iv = iv; $f.ok = ok; $f.$s = $s; $f.$r = $r; return $f;
 57130  	};
 57131  	$pkg.NewCBCEncrypter = NewCBCEncrypter;
 57132  	cbcEncrypter.ptr.prototype.BlockSize = function() {
 57133  		var x;
 57134  		x = this;
 57135  		return x.blockSize;
 57136  	};
 57137  	cbcEncrypter.prototype.BlockSize = function() { return this.$val.BlockSize(); };
 57138  	cbcEncrypter.ptr.prototype.CryptBlocks = function(dst, src) {
 57139  		var _r, dst, iv, src, x, $s, $r;
 57140  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; dst = $f.dst; iv = $f.iv; src = $f.src; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 57141  		x = this;
 57142  		if (!(((_r = src.$length % x.blockSize, _r === _r ? _r : $throwRuntimeError("integer divide by zero")) === 0))) {
 57143  			$panic(new $String("crypto/cipher: input not full blocks"));
 57144  		}
 57145  		if (dst.$length < src.$length) {
 57146  			$panic(new $String("crypto/cipher: output smaller than input"));
 57147  		}
 57148  		iv = x.iv;
 57149  		/* while (true) { */ case 1:
 57150  			/* if (!(src.$length > 0)) { break; } */ if(!(src.$length > 0)) { $s = 2; continue; }
 57151  			xorBytes($subslice(dst, 0, x.blockSize), $subslice(src, 0, x.blockSize), iv);
 57152  			$r = x.b.Encrypt($subslice(dst, 0, x.blockSize), $subslice(dst, 0, x.blockSize)); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 57153  			iv = $subslice(dst, 0, x.blockSize);
 57154  			src = $subslice(src, x.blockSize);
 57155  			dst = $subslice(dst, x.blockSize);
 57156  		/* } */ $s = 1; continue; case 2:
 57157  		$copySlice(x.iv, iv);
 57158  		$s = -1; return;
 57159  		/* */ } return; } if ($f === undefined) { $f = { $blk: cbcEncrypter.ptr.prototype.CryptBlocks }; } $f._r = _r; $f.dst = dst; $f.iv = iv; $f.src = src; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
 57160  	};
 57161  	cbcEncrypter.prototype.CryptBlocks = function(dst, src) { return this.$val.CryptBlocks(dst, src); };
 57162  	cbcEncrypter.ptr.prototype.SetIV = function(iv) {
 57163  		var iv, x;
 57164  		x = this;
 57165  		if (!((iv.$length === x.iv.$length))) {
 57166  			$panic(new $String("cipher: incorrect length IV"));
 57167  		}
 57168  		$copySlice(x.iv, iv);
 57169  	};
 57170  	cbcEncrypter.prototype.SetIV = function(iv) { return this.$val.SetIV(iv); };
 57171  	NewCBCDecrypter = function(b, iv) {
 57172  		var _r, _r$1, _r$2, _tuple, b, cbc$1, iv, ok, $s, $r;
 57173  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _tuple = $f._tuple; b = $f.b; cbc$1 = $f.cbc$1; iv = $f.iv; ok = $f.ok; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 57174  		_r = b.BlockSize(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 57175  		/* */ if (!((iv.$length === _r))) { $s = 1; continue; }
 57176  		/* */ $s = 2; continue;
 57177  		/* if (!((iv.$length === _r))) { */ case 1:
 57178  			$panic(new $String("cipher.NewCBCDecrypter: IV length must equal block size"));
 57179  		/* } */ case 2:
 57180  		_tuple = $assertType(b, cbcDecAble, true);
 57181  		cbc$1 = _tuple[0];
 57182  		ok = _tuple[1];
 57183  		/* */ if (ok) { $s = 4; continue; }
 57184  		/* */ $s = 5; continue;
 57185  		/* if (ok) { */ case 4:
 57186  			_r$1 = cbc$1.NewCBCDecrypter(iv); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 57187  			$s = -1; return _r$1;
 57188  		/* } */ case 5:
 57189  		_r$2 = newCBC(b, iv); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 57190  		$s = -1; return ($pointerOfStructConversion(_r$2, ptrType$1));
 57191  		/* */ } return; } if ($f === undefined) { $f = { $blk: NewCBCDecrypter }; } $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._tuple = _tuple; $f.b = b; $f.cbc$1 = cbc$1; $f.iv = iv; $f.ok = ok; $f.$s = $s; $f.$r = $r; return $f;
 57192  	};
 57193  	$pkg.NewCBCDecrypter = NewCBCDecrypter;
 57194  	cbcDecrypter.ptr.prototype.BlockSize = function() {
 57195  		var x;
 57196  		x = this;
 57197  		return x.blockSize;
 57198  	};
 57199  	cbcDecrypter.prototype.BlockSize = function() { return this.$val.BlockSize(); };
 57200  	cbcDecrypter.ptr.prototype.CryptBlocks = function(dst, src) {
 57201  		var _r, _tmp, _tmp$1, dst, end, prev, src, start, x, $s, $r;
 57202  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; dst = $f.dst; end = $f.end; prev = $f.prev; src = $f.src; start = $f.start; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 57203  		x = this;
 57204  		if (!(((_r = src.$length % x.blockSize, _r === _r ? _r : $throwRuntimeError("integer divide by zero")) === 0))) {
 57205  			$panic(new $String("crypto/cipher: input not full blocks"));
 57206  		}
 57207  		if (dst.$length < src.$length) {
 57208  			$panic(new $String("crypto/cipher: output smaller than input"));
 57209  		}
 57210  		if (src.$length === 0) {
 57211  			$s = -1; return;
 57212  		}
 57213  		end = src.$length;
 57214  		start = end - x.blockSize >> 0;
 57215  		prev = start - x.blockSize >> 0;
 57216  		$copySlice(x.tmp, $subslice(src, start, end));
 57217  		/* while (true) { */ case 1:
 57218  			/* if (!(start > 0)) { break; } */ if(!(start > 0)) { $s = 2; continue; }
 57219  			$r = x.b.Decrypt($subslice(dst, start, end), $subslice(src, start, end)); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 57220  			xorBytes($subslice(dst, start, end), $subslice(dst, start, end), $subslice(src, prev, start));
 57221  			end = start;
 57222  			start = prev;
 57223  			prev = prev - (x.blockSize) >> 0;
 57224  		/* } */ $s = 1; continue; case 2:
 57225  		$r = x.b.Decrypt($subslice(dst, start, end), $subslice(src, start, end)); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 57226  		xorBytes($subslice(dst, start, end), $subslice(dst, start, end), x.iv);
 57227  		_tmp = x.tmp;
 57228  		_tmp$1 = x.iv;
 57229  		x.iv = _tmp;
 57230  		x.tmp = _tmp$1;
 57231  		$s = -1; return;
 57232  		/* */ } return; } if ($f === undefined) { $f = { $blk: cbcDecrypter.ptr.prototype.CryptBlocks }; } $f._r = _r; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f.dst = dst; $f.end = end; $f.prev = prev; $f.src = src; $f.start = start; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
 57233  	};
 57234  	cbcDecrypter.prototype.CryptBlocks = function(dst, src) { return this.$val.CryptBlocks(dst, src); };
 57235  	cbcDecrypter.ptr.prototype.SetIV = function(iv) {
 57236  		var iv, x;
 57237  		x = this;
 57238  		if (!((iv.$length === x.iv.$length))) {
 57239  			$panic(new $String("cipher: incorrect length IV"));
 57240  		}
 57241  		$copySlice(x.iv, iv);
 57242  	};
 57243  	cbcDecrypter.prototype.SetIV = function(iv) { return this.$val.SetIV(iv); };
 57244  	dup = function(p) {
 57245  		var p, q;
 57246  		q = $makeSlice(sliceType$1, p.$length);
 57247  		$copySlice(q, p);
 57248  		return q;
 57249  	};
 57250  	NewCTR = function(block, iv) {
 57251  		var _r, _r$1, _r$2, _r$3, _tuple, block, bufSize, ctr$1, iv, ok, $s, $r;
 57252  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _tuple = $f._tuple; block = $f.block; bufSize = $f.bufSize; ctr$1 = $f.ctr$1; iv = $f.iv; ok = $f.ok; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 57253  		_tuple = $assertType(block, ctrAble, true);
 57254  		ctr$1 = _tuple[0];
 57255  		ok = _tuple[1];
 57256  		/* */ if (ok) { $s = 1; continue; }
 57257  		/* */ $s = 2; continue;
 57258  		/* if (ok) { */ case 1:
 57259  			_r = ctr$1.NewCTR(iv); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 57260  			$s = -1; return _r;
 57261  		/* } */ case 2:
 57262  		_r$1 = block.BlockSize(); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 57263  		/* */ if (!((iv.$length === _r$1))) { $s = 4; continue; }
 57264  		/* */ $s = 5; continue;
 57265  		/* if (!((iv.$length === _r$1))) { */ case 4:
 57266  			$panic(new $String("cipher.NewCTR: IV length must equal block size"));
 57267  		/* } */ case 5:
 57268  		bufSize = 512;
 57269  		_r$2 = block.BlockSize(); /* */ $s = 9; case 9: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 57270  		/* */ if (bufSize < _r$2) { $s = 7; continue; }
 57271  		/* */ $s = 8; continue;
 57272  		/* if (bufSize < _r$2) { */ case 7:
 57273  			_r$3 = block.BlockSize(); /* */ $s = 10; case 10: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 57274  			bufSize = _r$3;
 57275  		/* } */ case 8:
 57276  		$s = -1; return new ctr.ptr(block, dup(iv), $makeSlice(sliceType$1, 0, bufSize), 0);
 57277  		/* */ } return; } if ($f === undefined) { $f = { $blk: NewCTR }; } $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._tuple = _tuple; $f.block = block; $f.bufSize = bufSize; $f.ctr$1 = ctr$1; $f.iv = iv; $f.ok = ok; $f.$s = $s; $f.$r = $r; return $f;
 57278  	};
 57279  	$pkg.NewCTR = NewCTR;
 57280  	ctr.ptr.prototype.refill = function() {
 57281  		var _r, bs, i, remain, x, x$1, x$2, x$3, $s, $r;
 57282  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; bs = $f.bs; i = $f.i; remain = $f.remain; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; x$3 = $f.x$3; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 57283  		x = this;
 57284  		remain = x.out.$length - x.outUsed >> 0;
 57285  		$copySlice(x.out, $subslice(x.out, x.outUsed));
 57286  		x.out = $subslice(x.out, 0, x.out.$capacity);
 57287  		_r = x.b.BlockSize(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 57288  		bs = _r;
 57289  		/* while (true) { */ case 2:
 57290  			/* if (!(remain <= (x.out.$length - bs >> 0))) { break; } */ if(!(remain <= (x.out.$length - bs >> 0))) { $s = 3; continue; }
 57291  			$r = x.b.Encrypt($subslice(x.out, remain), x.ctr); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 57292  			remain = remain + (bs) >> 0;
 57293  			i = x.ctr.$length - 1 >> 0;
 57294  			while (true) {
 57295  				if (!(i >= 0)) { break; }
 57296  				(x$2 = x.ctr, ((i < 0 || i >= x$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + i] = ((x$1 = x.ctr, ((i < 0 || i >= x$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + i])) + (1) << 24 >>> 24)));
 57297  				if (!(((x$3 = x.ctr, ((i < 0 || i >= x$3.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$3.$array[x$3.$offset + i])) === 0))) {
 57298  					break;
 57299  				}
 57300  				i = i - (1) >> 0;
 57301  			}
 57302  		/* } */ $s = 2; continue; case 3:
 57303  		x.out = $subslice(x.out, 0, remain);
 57304  		x.outUsed = 0;
 57305  		$s = -1; return;
 57306  		/* */ } return; } if ($f === undefined) { $f = { $blk: ctr.ptr.prototype.refill }; } $f._r = _r; $f.bs = bs; $f.i = i; $f.remain = remain; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.x$3 = x$3; $f.$s = $s; $f.$r = $r; return $f;
 57307  	};
 57308  	ctr.prototype.refill = function() { return this.$val.refill(); };
 57309  	ctr.ptr.prototype.XORKeyStream = function(dst, src) {
 57310  		var _r, dst, n, src, x, $s, $r;
 57311  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; dst = $f.dst; n = $f.n; src = $f.src; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 57312  		x = this;
 57313  		/* while (true) { */ case 1:
 57314  			/* if (!(src.$length > 0)) { break; } */ if(!(src.$length > 0)) { $s = 2; continue; }
 57315  			_r = x.b.BlockSize(); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 57316  			/* */ if (x.outUsed >= (x.out.$length - _r >> 0)) { $s = 3; continue; }
 57317  			/* */ $s = 4; continue;
 57318  			/* if (x.outUsed >= (x.out.$length - _r >> 0)) { */ case 3:
 57319  				$r = x.refill(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 57320  			/* } */ case 4:
 57321  			n = xorBytes(dst, src, $subslice(x.out, x.outUsed));
 57322  			dst = $subslice(dst, n);
 57323  			src = $subslice(src, n);
 57324  			x.outUsed = x.outUsed + (n) >> 0;
 57325  		/* } */ $s = 1; continue; case 2:
 57326  		$s = -1; return;
 57327  		/* */ } return; } if ($f === undefined) { $f = { $blk: ctr.ptr.prototype.XORKeyStream }; } $f._r = _r; $f.dst = dst; $f.n = n; $f.src = src; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
 57328  	};
 57329  	ctr.prototype.XORKeyStream = function(dst, src) { return this.$val.XORKeyStream(dst, src); };
 57330  	NewGCM = function(cipher) {
 57331  		var _r, cipher, $s, $r;
 57332  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; cipher = $f.cipher; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 57333  		_r = NewGCMWithNonceSize(cipher, 12); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 57334  		$s = -1; return _r;
 57335  		/* */ } return; } if ($f === undefined) { $f = { $blk: NewGCM }; } $f._r = _r; $f.cipher = cipher; $f.$s = $s; $f.$r = $r; return $f;
 57336  	};
 57337  	$pkg.NewGCM = NewGCM;
 57338  	NewGCMWithNonceSize = function(cipher, size) {
 57339  		var _q, _r, _r$1, _tuple, cipher, cipher$1, g, i, key, ok, size, x, x$1, x$10, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9, $s, $r;
 57340  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _q = $f._q; _r = $f._r; _r$1 = $f._r$1; _tuple = $f._tuple; cipher = $f.cipher; cipher$1 = $f.cipher$1; g = $f.g; i = $f.i; key = $f.key; ok = $f.ok; size = $f.size; x = $f.x; x$1 = $f.x$1; x$10 = $f.x$10; x$2 = $f.x$2; x$3 = $f.x$3; x$4 = $f.x$4; x$5 = $f.x$5; x$6 = $f.x$6; x$7 = $f.x$7; x$8 = $f.x$8; x$9 = $f.x$9; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 57341  		x = [x];
 57342  		_tuple = $assertType(cipher, gcmAble, true);
 57343  		cipher$1 = _tuple[0];
 57344  		ok = _tuple[1];
 57345  		/* */ if (ok) { $s = 1; continue; }
 57346  		/* */ $s = 2; continue;
 57347  		/* if (ok) { */ case 1:
 57348  			_r = cipher$1.NewGCM(size); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 57349  			$s = -1; return _r;
 57350  		/* } */ case 2:
 57351  		_r$1 = cipher.BlockSize(); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 57352  		/* */ if (!((_r$1 === 16))) { $s = 4; continue; }
 57353  		/* */ $s = 5; continue;
 57354  		/* if (!((_r$1 === 16))) { */ case 4:
 57355  			$s = -1; return [$ifaceNil, errors.New("cipher: NewGCM requires 128-bit block cipher")];
 57356  		/* } */ case 5:
 57357  		key = arrayType.zero();
 57358  		$r = cipher.Encrypt(new sliceType$1(key), new sliceType$1(key)); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 57359  		g = new gcm.ptr(cipher, size, arrayType$1.zero());
 57360  		x[0] = new gcmFieldElement.ptr(getUint64($subslice(new sliceType$1(key), 0, 8)), getUint64($subslice(new sliceType$1(key), 8)));
 57361  		gcmFieldElement.copy((x$1 = g.productTable, x$2 = reverseBits(1), ((x$2 < 0 || x$2 >= x$1.length) ? ($throwRuntimeError("index out of range"), undefined) : x$1[x$2])), x[0]);
 57362  		i = 2;
 57363  		while (true) {
 57364  			if (!(i < 16)) { break; }
 57365  			gcmFieldElement.copy((x$5 = g.productTable, x$6 = reverseBits(i), ((x$6 < 0 || x$6 >= x$5.length) ? ($throwRuntimeError("index out of range"), undefined) : x$5[x$6])), gcmDouble((x$3 = g.productTable, x$4 = reverseBits((_q = i / 2, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero"))), ((x$4 < 0 || x$4 >= x$3.length) ? ($throwRuntimeError("index out of range"), undefined) : x$3[x$4]))));
 57366  			gcmFieldElement.copy((x$9 = g.productTable, x$10 = reverseBits(i + 1 >> 0), ((x$10 < 0 || x$10 >= x$9.length) ? ($throwRuntimeError("index out of range"), undefined) : x$9[x$10])), gcmAdd((x$7 = g.productTable, x$8 = reverseBits(i), ((x$8 < 0 || x$8 >= x$7.length) ? ($throwRuntimeError("index out of range"), undefined) : x$7[x$8])), x[0]));
 57367  			i = i + (2) >> 0;
 57368  		}
 57369  		$s = -1; return [g, $ifaceNil];
 57370  		/* */ } return; } if ($f === undefined) { $f = { $blk: NewGCMWithNonceSize }; } $f._q = _q; $f._r = _r; $f._r$1 = _r$1; $f._tuple = _tuple; $f.cipher = cipher; $f.cipher$1 = cipher$1; $f.g = g; $f.i = i; $f.key = key; $f.ok = ok; $f.size = size; $f.x = x; $f.x$1 = x$1; $f.x$10 = x$10; $f.x$2 = x$2; $f.x$3 = x$3; $f.x$4 = x$4; $f.x$5 = x$5; $f.x$6 = x$6; $f.x$7 = x$7; $f.x$8 = x$8; $f.x$9 = x$9; $f.$s = $s; $f.$r = $r; return $f;
 57371  	};
 57372  	$pkg.NewGCMWithNonceSize = NewGCMWithNonceSize;
 57373  	gcm.ptr.prototype.NonceSize = function() {
 57374  		var g;
 57375  		g = this;
 57376  		return g.nonceSize;
 57377  	};
 57378  	gcm.prototype.NonceSize = function() { return this.$val.NonceSize(); };
 57379  	gcm.ptr.prototype.Overhead = function() {
 57380  		return 16;
 57381  	};
 57382  	gcm.prototype.Overhead = function() { return this.$val.Overhead(); };
 57383  	gcm.ptr.prototype.Seal = function(dst, nonce, plaintext, data) {
 57384  		var _r, _tmp, _tmp$1, _tuple, counter, data, dst, g, nonce, out, plaintext, ret, tagMask, x, x$1, $s, $r;
 57385  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tuple = $f._tuple; counter = $f.counter; data = $f.data; dst = $f.dst; g = $f.g; nonce = $f.nonce; out = $f.out; plaintext = $f.plaintext; ret = $f.ret; tagMask = $f.tagMask; x = $f.x; x$1 = $f.x$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 57386  		counter = [counter];
 57387  		tagMask = [tagMask];
 57388  		g = this;
 57389  		if (!((nonce.$length === g.nonceSize))) {
 57390  			$panic(new $String("cipher: incorrect nonce length given to GCM"));
 57391  		}
 57392  		_r = g.cipher.BlockSize(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 57393  		/* */ if ((x = (new $Uint64(0, plaintext.$length)), x$1 = $mul64(new $Uint64(0, 4294967294), (new $Uint64(0, _r))), (x.$high > x$1.$high || (x.$high === x$1.$high && x.$low > x$1.$low)))) { $s = 1; continue; }
 57394  		/* */ $s = 2; continue;
 57395  		/* if ((x = (new $Uint64(0, plaintext.$length)), x$1 = $mul64(new $Uint64(0, 4294967294), (new $Uint64(0, _r))), (x.$high > x$1.$high || (x.$high === x$1.$high && x.$low > x$1.$low)))) { */ case 1:
 57396  			$panic(new $String("cipher: message too large for GCM"));
 57397  		/* } */ case 2:
 57398  		_tuple = sliceForAppend(dst, plaintext.$length + 16 >> 0);
 57399  		ret = _tuple[0];
 57400  		out = _tuple[1];
 57401  		_tmp = arrayType.zero();
 57402  		_tmp$1 = arrayType.zero();
 57403  		counter[0] = $clone(_tmp, arrayType);
 57404  		tagMask[0] = $clone(_tmp$1, arrayType);
 57405  		g.deriveCounter(counter[0], nonce);
 57406  		$r = g.cipher.Encrypt(new sliceType$1(tagMask[0]), new sliceType$1(counter[0])); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 57407  		gcmInc32(counter[0]);
 57408  		$r = g.counterCrypt(out, plaintext, counter[0]); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 57409  		g.auth($subslice(out, plaintext.$length), $subslice(out, 0, plaintext.$length), data, tagMask[0]);
 57410  		$s = -1; return ret;
 57411  		/* */ } return; } if ($f === undefined) { $f = { $blk: gcm.ptr.prototype.Seal }; } $f._r = _r; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tuple = _tuple; $f.counter = counter; $f.data = data; $f.dst = dst; $f.g = g; $f.nonce = nonce; $f.out = out; $f.plaintext = plaintext; $f.ret = ret; $f.tagMask = tagMask; $f.x = x; $f.x$1 = x$1; $f.$s = $s; $f.$r = $r; return $f;
 57412  	};
 57413  	gcm.prototype.Seal = function(dst, nonce, plaintext, data) { return this.$val.Seal(dst, nonce, plaintext, data); };
 57414  	gcm.ptr.prototype.Open = function(dst, nonce, ciphertext, data) {
 57415  		var _i, _r, _ref, _tmp, _tmp$1, _tuple, ciphertext, counter, data, dst, expectedTag, g, i, nonce, out, ret, tag, tagMask, x, x$1, x$2, $s, $r;
 57416  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _i = $f._i; _r = $f._r; _ref = $f._ref; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tuple = $f._tuple; ciphertext = $f.ciphertext; counter = $f.counter; data = $f.data; dst = $f.dst; expectedTag = $f.expectedTag; g = $f.g; i = $f.i; nonce = $f.nonce; out = $f.out; ret = $f.ret; tag = $f.tag; tagMask = $f.tagMask; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 57417  		counter = [counter];
 57418  		tagMask = [tagMask];
 57419  		g = this;
 57420  		if (!((nonce.$length === g.nonceSize))) {
 57421  			$panic(new $String("cipher: incorrect nonce length given to GCM"));
 57422  		}
 57423  		if (ciphertext.$length < 16) {
 57424  			$s = -1; return [sliceType$1.nil, errOpen];
 57425  		}
 57426  		_r = g.cipher.BlockSize(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 57427  		/* */ if ((x = (new $Uint64(0, ciphertext.$length)), x$1 = (x$2 = $mul64(new $Uint64(0, 4294967294), (new $Uint64(0, _r))), new $Uint64(x$2.$high + 0, x$2.$low + 16)), (x.$high > x$1.$high || (x.$high === x$1.$high && x.$low > x$1.$low)))) { $s = 1; continue; }
 57428  		/* */ $s = 2; continue;
 57429  		/* if ((x = (new $Uint64(0, ciphertext.$length)), x$1 = (x$2 = $mul64(new $Uint64(0, 4294967294), (new $Uint64(0, _r))), new $Uint64(x$2.$high + 0, x$2.$low + 16)), (x.$high > x$1.$high || (x.$high === x$1.$high && x.$low > x$1.$low)))) { */ case 1:
 57430  			$s = -1; return [sliceType$1.nil, errOpen];
 57431  		/* } */ case 2:
 57432  		tag = $subslice(ciphertext, (ciphertext.$length - 16 >> 0));
 57433  		ciphertext = $subslice(ciphertext, 0, (ciphertext.$length - 16 >> 0));
 57434  		_tmp = arrayType.zero();
 57435  		_tmp$1 = arrayType.zero();
 57436  		counter[0] = $clone(_tmp, arrayType);
 57437  		tagMask[0] = $clone(_tmp$1, arrayType);
 57438  		g.deriveCounter(counter[0], nonce);
 57439  		$r = g.cipher.Encrypt(new sliceType$1(tagMask[0]), new sliceType$1(counter[0])); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 57440  		gcmInc32(counter[0]);
 57441  		expectedTag = arrayType.zero();
 57442  		g.auth(new sliceType$1(expectedTag), ciphertext, data, tagMask[0]);
 57443  		_tuple = sliceForAppend(dst, ciphertext.$length);
 57444  		ret = _tuple[0];
 57445  		out = _tuple[1];
 57446  		if (!((subtle.ConstantTimeCompare(new sliceType$1(expectedTag), tag) === 1))) {
 57447  			_ref = out;
 57448  			_i = 0;
 57449  			while (true) {
 57450  				if (!(_i < _ref.$length)) { break; }
 57451  				i = _i;
 57452  				((i < 0 || i >= out.$length) ? ($throwRuntimeError("index out of range"), undefined) : out.$array[out.$offset + i] = 0);
 57453  				_i++;
 57454  			}
 57455  			$s = -1; return [sliceType$1.nil, errOpen];
 57456  		}
 57457  		$r = g.counterCrypt(out, ciphertext, counter[0]); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 57458  		$s = -1; return [ret, $ifaceNil];
 57459  		/* */ } return; } if ($f === undefined) { $f = { $blk: gcm.ptr.prototype.Open }; } $f._i = _i; $f._r = _r; $f._ref = _ref; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tuple = _tuple; $f.ciphertext = ciphertext; $f.counter = counter; $f.data = data; $f.dst = dst; $f.expectedTag = expectedTag; $f.g = g; $f.i = i; $f.nonce = nonce; $f.out = out; $f.ret = ret; $f.tag = tag; $f.tagMask = tagMask; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.$s = $s; $f.$r = $r; return $f;
 57460  	};
 57461  	gcm.prototype.Open = function(dst, nonce, ciphertext, data) { return this.$val.Open(dst, nonce, ciphertext, data); };
 57462  	reverseBits = function(i) {
 57463  		var i;
 57464  		i = ((((i << 2 >> 0)) & 12)) | ((((i >> 2 >> 0)) & 3));
 57465  		i = ((((i << 1 >> 0)) & 10)) | ((((i >> 1 >> 0)) & 5));
 57466  		return i;
 57467  	};
 57468  	gcmAdd = function(x, y) {
 57469  		var x, x$1, x$2, x$3, x$4, y;
 57470  		return new gcmFieldElement.ptr((x$1 = x.low, x$2 = y.low, new $Uint64(x$1.$high ^ x$2.$high, (x$1.$low ^ x$2.$low) >>> 0)), (x$3 = x.high, x$4 = y.high, new $Uint64(x$3.$high ^ x$4.$high, (x$3.$low ^ x$4.$low) >>> 0)));
 57471  	};
 57472  	gcmDouble = function(x) {
 57473  		var double$1, msbSet, x, x$1, x$2, x$3, x$4, x$5, x$6;
 57474  		double$1 = new gcmFieldElement.ptr(new $Uint64(0, 0), new $Uint64(0, 0));
 57475  		msbSet = (x$1 = (x$2 = x.high, new $Uint64(x$2.$high & 0, (x$2.$low & 1) >>> 0)), (x$1.$high === 0 && x$1.$low === 1));
 57476  		double$1.high = $shiftRightUint64(x.high, 1);
 57477  		double$1.high = (x$3 = double$1.high, x$4 = $shiftLeft64(x.low, 63), new $Uint64(x$3.$high | x$4.$high, (x$3.$low | x$4.$low) >>> 0));
 57478  		double$1.low = $shiftRightUint64(x.low, 1);
 57479  		if (msbSet) {
 57480  			double$1.low = (x$5 = double$1.low, x$6 = new $Uint64(3774873600, 0), new $Uint64(x$5.$high ^ x$6.$high, (x$5.$low ^ x$6.$low) >>> 0));
 57481  		}
 57482  		return double$1;
 57483  	};
 57484  	gcm.ptr.prototype.mul = function(y) {
 57485  		var g, i, j, msw, t, word, x, x$1, x$10, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9, y, z;
 57486  		g = this;
 57487  		z = new gcmFieldElement.ptr(new $Uint64(0, 0), new $Uint64(0, 0));
 57488  		i = 0;
 57489  		while (true) {
 57490  			if (!(i < 2)) { break; }
 57491  			word = y.high;
 57492  			if (i === 1) {
 57493  				word = y.low;
 57494  			}
 57495  			j = 0;
 57496  			while (true) {
 57497  				if (!(j < 64)) { break; }
 57498  				msw = (x = z.high, new $Uint64(x.$high & 0, (x.$low & 15) >>> 0));
 57499  				z.high = $shiftRightUint64(z.high, (4));
 57500  				z.high = (x$1 = z.high, x$2 = $shiftLeft64(z.low, 60), new $Uint64(x$1.$high | x$2.$high, (x$1.$low | x$2.$low) >>> 0));
 57501  				z.low = $shiftRightUint64(z.low, (4));
 57502  				z.low = (x$3 = z.low, x$4 = $shiftLeft64((new $Uint64(0, (($flatten64(msw) < 0 || $flatten64(msw) >= gcmReductionTable.$length) ? ($throwRuntimeError("index out of range"), undefined) : gcmReductionTable.$array[gcmReductionTable.$offset + $flatten64(msw)]))), 48), new $Uint64(x$3.$high ^ x$4.$high, (x$3.$low ^ x$4.$low) >>> 0));
 57503  				t = (x$5 = g.productTable, x$6 = new $Uint64(word.$high & 0, (word.$low & 15) >>> 0), (($flatten64(x$6) < 0 || $flatten64(x$6) >= x$5.length) ? ($throwRuntimeError("index out of range"), undefined) : x$5[$flatten64(x$6)]));
 57504  				z.low = (x$7 = z.low, x$8 = t.low, new $Uint64(x$7.$high ^ x$8.$high, (x$7.$low ^ x$8.$low) >>> 0));
 57505  				z.high = (x$9 = z.high, x$10 = t.high, new $Uint64(x$9.$high ^ x$10.$high, (x$9.$low ^ x$10.$low) >>> 0));
 57506  				word = $shiftRightUint64(word, (4));
 57507  				j = j + (4) >> 0;
 57508  			}
 57509  			i = i + (1) >> 0;
 57510  		}
 57511  		gcmFieldElement.copy(y, z);
 57512  	};
 57513  	gcm.prototype.mul = function(y) { return this.$val.mul(y); };
 57514  	gcm.ptr.prototype.updateBlocks = function(y, blocks) {
 57515  		var blocks, g, x, x$1, x$2, x$3, y;
 57516  		g = this;
 57517  		while (true) {
 57518  			if (!(blocks.$length > 0)) { break; }
 57519  			y.low = (x = y.low, x$1 = getUint64(blocks), new $Uint64(x.$high ^ x$1.$high, (x.$low ^ x$1.$low) >>> 0));
 57520  			y.high = (x$2 = y.high, x$3 = getUint64($subslice(blocks, 8)), new $Uint64(x$2.$high ^ x$3.$high, (x$2.$low ^ x$3.$low) >>> 0));
 57521  			g.mul(y);
 57522  			blocks = $subslice(blocks, 16);
 57523  		}
 57524  	};
 57525  	gcm.prototype.updateBlocks = function(y, blocks) { return this.$val.updateBlocks(y, blocks); };
 57526  	gcm.ptr.prototype.update = function(y, data) {
 57527  		var data, fullBlocks, g, partialBlock, y;
 57528  		g = this;
 57529  		fullBlocks = ((data.$length >> 4 >> 0)) << 4 >> 0;
 57530  		g.updateBlocks(y, $subslice(data, 0, fullBlocks));
 57531  		if (!((data.$length === fullBlocks))) {
 57532  			partialBlock = arrayType.zero();
 57533  			$copySlice(new sliceType$1(partialBlock), $subslice(data, fullBlocks));
 57534  			g.updateBlocks(y, new sliceType$1(partialBlock));
 57535  		}
 57536  	};
 57537  	gcm.prototype.update = function(y, data) { return this.$val.update(y, data); };
 57538  	gcmInc32 = function(counterBlock) {
 57539  		var counterBlock, i;
 57540  		i = 15;
 57541  		while (true) {
 57542  			if (!(i >= 12)) { break; }
 57543  			counterBlock.nilCheck, ((i < 0 || i >= counterBlock.length) ? ($throwRuntimeError("index out of range"), undefined) : counterBlock[i] = ((counterBlock.nilCheck, ((i < 0 || i >= counterBlock.length) ? ($throwRuntimeError("index out of range"), undefined) : counterBlock[i])) + (1) << 24 >>> 24));
 57544  			if (!(((counterBlock.nilCheck, ((i < 0 || i >= counterBlock.length) ? ($throwRuntimeError("index out of range"), undefined) : counterBlock[i])) === 0))) {
 57545  				break;
 57546  			}
 57547  			i = i - (1) >> 0;
 57548  		}
 57549  	};
 57550  	sliceForAppend = function(in$1, n) {
 57551  		var head, in$1, n, tail, total;
 57552  		head = sliceType$1.nil;
 57553  		tail = sliceType$1.nil;
 57554  		total = in$1.$length + n >> 0;
 57555  		if (in$1.$capacity >= total) {
 57556  			head = $subslice(in$1, 0, total);
 57557  		} else {
 57558  			head = $makeSlice(sliceType$1, total);
 57559  			$copySlice(head, in$1);
 57560  		}
 57561  		tail = $subslice(head, in$1.$length);
 57562  		return [head, tail];
 57563  	};
 57564  	gcm.ptr.prototype.counterCrypt = function(out, in$1, counter) {
 57565  		var counter, g, in$1, mask, out, $s, $r;
 57566  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; counter = $f.counter; g = $f.g; in$1 = $f.in$1; mask = $f.mask; out = $f.out; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 57567  		g = this;
 57568  		mask = arrayType.zero();
 57569  		/* while (true) { */ case 1:
 57570  			/* if (!(in$1.$length >= 16)) { break; } */ if(!(in$1.$length >= 16)) { $s = 2; continue; }
 57571  			$r = g.cipher.Encrypt(new sliceType$1(mask), new sliceType$1(counter)); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 57572  			gcmInc32(counter);
 57573  			xorWords(out, in$1, new sliceType$1(mask));
 57574  			out = $subslice(out, 16);
 57575  			in$1 = $subslice(in$1, 16);
 57576  		/* } */ $s = 1; continue; case 2:
 57577  		/* */ if (in$1.$length > 0) { $s = 4; continue; }
 57578  		/* */ $s = 5; continue;
 57579  		/* if (in$1.$length > 0) { */ case 4:
 57580  			$r = g.cipher.Encrypt(new sliceType$1(mask), new sliceType$1(counter)); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 57581  			gcmInc32(counter);
 57582  			xorBytes(out, in$1, new sliceType$1(mask));
 57583  		/* } */ case 5:
 57584  		$s = -1; return;
 57585  		/* */ } return; } if ($f === undefined) { $f = { $blk: gcm.ptr.prototype.counterCrypt }; } $f.counter = counter; $f.g = g; $f.in$1 = in$1; $f.mask = mask; $f.out = out; $f.$s = $s; $f.$r = $r; return $f;
 57586  	};
 57587  	gcm.prototype.counterCrypt = function(out, in$1, counter) { return this.$val.counterCrypt(out, in$1, counter); };
 57588  	gcm.ptr.prototype.deriveCounter = function(counter, nonce) {
 57589  		var counter, g, nonce, x, x$1, y;
 57590  		g = this;
 57591  		if (nonce.$length === 12) {
 57592  			$copySlice(new sliceType$1(counter), nonce);
 57593  			counter.nilCheck, counter[15] = 1;
 57594  		} else {
 57595  			y = new gcmFieldElement.ptr(new $Uint64(0, 0), new $Uint64(0, 0));
 57596  			g.update(y, nonce);
 57597  			y.high = (x = y.high, x$1 = $mul64((new $Uint64(0, nonce.$length)), new $Uint64(0, 8)), new $Uint64(x.$high ^ x$1.$high, (x.$low ^ x$1.$low) >>> 0));
 57598  			g.mul(y);
 57599  			putUint64($subslice(new sliceType$1(counter), 0, 8), y.low);
 57600  			putUint64($subslice(new sliceType$1(counter), 8), y.high);
 57601  		}
 57602  	};
 57603  	gcm.prototype.deriveCounter = function(counter, nonce) { return this.$val.deriveCounter(counter, nonce); };
 57604  	gcm.ptr.prototype.auth = function(out, ciphertext, additionalData, tagMask) {
 57605  		var additionalData, ciphertext, g, out, tagMask, x, x$1, x$2, x$3, y;
 57606  		g = this;
 57607  		y = new gcmFieldElement.ptr(new $Uint64(0, 0), new $Uint64(0, 0));
 57608  		g.update(y, additionalData);
 57609  		g.update(y, ciphertext);
 57610  		y.low = (x = y.low, x$1 = $mul64((new $Uint64(0, additionalData.$length)), new $Uint64(0, 8)), new $Uint64(x.$high ^ x$1.$high, (x.$low ^ x$1.$low) >>> 0));
 57611  		y.high = (x$2 = y.high, x$3 = $mul64((new $Uint64(0, ciphertext.$length)), new $Uint64(0, 8)), new $Uint64(x$2.$high ^ x$3.$high, (x$2.$low ^ x$3.$low) >>> 0));
 57612  		g.mul(y);
 57613  		putUint64(out, y.low);
 57614  		putUint64($subslice(out, 8), y.high);
 57615  		xorWords(out, out, new sliceType$1(tagMask));
 57616  	};
 57617  	gcm.prototype.auth = function(out, ciphertext, additionalData, tagMask) { return this.$val.auth(out, ciphertext, additionalData, tagMask); };
 57618  	getUint64 = function(data) {
 57619  		var data, r, x, x$1, x$10, x$11, x$12, x$13, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9;
 57620  		r = (x = (x$1 = (x$2 = (x$3 = (x$4 = (x$5 = (x$6 = $shiftLeft64((new $Uint64(0, (0 >= data.$length ? ($throwRuntimeError("index out of range"), undefined) : data.$array[data.$offset + 0]))), 56), x$7 = $shiftLeft64((new $Uint64(0, (1 >= data.$length ? ($throwRuntimeError("index out of range"), undefined) : data.$array[data.$offset + 1]))), 48), new $Uint64(x$6.$high | x$7.$high, (x$6.$low | x$7.$low) >>> 0)), x$8 = $shiftLeft64((new $Uint64(0, (2 >= data.$length ? ($throwRuntimeError("index out of range"), undefined) : data.$array[data.$offset + 2]))), 40), new $Uint64(x$5.$high | x$8.$high, (x$5.$low | x$8.$low) >>> 0)), x$9 = $shiftLeft64((new $Uint64(0, (3 >= data.$length ? ($throwRuntimeError("index out of range"), undefined) : data.$array[data.$offset + 3]))), 32), new $Uint64(x$4.$high | x$9.$high, (x$4.$low | x$9.$low) >>> 0)), x$10 = $shiftLeft64((new $Uint64(0, (4 >= data.$length ? ($throwRuntimeError("index out of range"), undefined) : data.$array[data.$offset + 4]))), 24), new $Uint64(x$3.$high | x$10.$high, (x$3.$low | x$10.$low) >>> 0)), x$11 = $shiftLeft64((new $Uint64(0, (5 >= data.$length ? ($throwRuntimeError("index out of range"), undefined) : data.$array[data.$offset + 5]))), 16), new $Uint64(x$2.$high | x$11.$high, (x$2.$low | x$11.$low) >>> 0)), x$12 = $shiftLeft64((new $Uint64(0, (6 >= data.$length ? ($throwRuntimeError("index out of range"), undefined) : data.$array[data.$offset + 6]))), 8), new $Uint64(x$1.$high | x$12.$high, (x$1.$low | x$12.$low) >>> 0)), x$13 = (new $Uint64(0, (7 >= data.$length ? ($throwRuntimeError("index out of range"), undefined) : data.$array[data.$offset + 7]))), new $Uint64(x.$high | x$13.$high, (x.$low | x$13.$low) >>> 0));
 57621  		return r;
 57622  	};
 57623  	putUint64 = function(out, v) {
 57624  		var out, v;
 57625  		(0 >= out.$length ? ($throwRuntimeError("index out of range"), undefined) : out.$array[out.$offset + 0] = (($shiftRightUint64(v, 56).$low << 24 >>> 24)));
 57626  		(1 >= out.$length ? ($throwRuntimeError("index out of range"), undefined) : out.$array[out.$offset + 1] = (($shiftRightUint64(v, 48).$low << 24 >>> 24)));
 57627  		(2 >= out.$length ? ($throwRuntimeError("index out of range"), undefined) : out.$array[out.$offset + 2] = (($shiftRightUint64(v, 40).$low << 24 >>> 24)));
 57628  		(3 >= out.$length ? ($throwRuntimeError("index out of range"), undefined) : out.$array[out.$offset + 3] = (($shiftRightUint64(v, 32).$low << 24 >>> 24)));
 57629  		(4 >= out.$length ? ($throwRuntimeError("index out of range"), undefined) : out.$array[out.$offset + 4] = (($shiftRightUint64(v, 24).$low << 24 >>> 24)));
 57630  		(5 >= out.$length ? ($throwRuntimeError("index out of range"), undefined) : out.$array[out.$offset + 5] = (($shiftRightUint64(v, 16).$low << 24 >>> 24)));
 57631  		(6 >= out.$length ? ($throwRuntimeError("index out of range"), undefined) : out.$array[out.$offset + 6] = (($shiftRightUint64(v, 8).$low << 24 >>> 24)));
 57632  		(7 >= out.$length ? ($throwRuntimeError("index out of range"), undefined) : out.$array[out.$offset + 7] = ((v.$low << 24 >>> 24)));
 57633  	};
 57634  	StreamReader.ptr.prototype.Read = function(dst) {
 57635  		var _r, _tuple, dst, err, n, r, $s, $r;
 57636  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; dst = $f.dst; err = $f.err; n = $f.n; r = $f.r; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 57637  		n = 0;
 57638  		err = $ifaceNil;
 57639  		r = this;
 57640  		_r = r.R.Read(dst); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 57641  		_tuple = _r;
 57642  		n = _tuple[0];
 57643  		err = _tuple[1];
 57644  		$r = r.S.XORKeyStream($subslice(dst, 0, n), $subslice(dst, 0, n)); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 57645  		$s = -1; return [n, err];
 57646  		/* */ } return; } if ($f === undefined) { $f = { $blk: StreamReader.ptr.prototype.Read }; } $f._r = _r; $f._tuple = _tuple; $f.dst = dst; $f.err = err; $f.n = n; $f.r = r; $f.$s = $s; $f.$r = $r; return $f;
 57647  	};
 57648  	StreamReader.prototype.Read = function(dst) { return this.$val.Read(dst); };
 57649  	fastXORBytes = function(dst, a, b) {
 57650  		var _q, _r, a, aw, b, bw, dst, dw, i, i$1, n, w, x;
 57651  		n = a.$length;
 57652  		if (b.$length < n) {
 57653  			n = b.$length;
 57654  		}
 57655  		if (n === 0) {
 57656  			return 0;
 57657  		}
 57658  		$unused((x = n - 1 >> 0, ((x < 0 || x >= dst.$length) ? ($throwRuntimeError("index out of range"), undefined) : dst.$array[dst.$offset + x])));
 57659  		w = (_q = n / 4, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero"));
 57660  		if (w > 0) {
 57661  			dw = dst;
 57662  			aw = a;
 57663  			bw = b;
 57664  			i = 0;
 57665  			while (true) {
 57666  				if (!(i < w)) { break; }
 57667  				((i < 0 || i >= dw.$length) ? ($throwRuntimeError("index out of range"), undefined) : dw.$array[dw.$offset + i] = ((((i < 0 || i >= aw.$length) ? ($throwRuntimeError("index out of range"), undefined) : aw.$array[aw.$offset + i]) ^ ((i < 0 || i >= bw.$length) ? ($throwRuntimeError("index out of range"), undefined) : bw.$array[bw.$offset + i])) >>> 0));
 57668  				i = i + (1) >> 0;
 57669  			}
 57670  		}
 57671  		i$1 = (n - (_r = n % 4, _r === _r ? _r : $throwRuntimeError("integer divide by zero")) >> 0);
 57672  		while (true) {
 57673  			if (!(i$1 < n)) { break; }
 57674  			((i$1 < 0 || i$1 >= dst.$length) ? ($throwRuntimeError("index out of range"), undefined) : dst.$array[dst.$offset + i$1] = ((((i$1 < 0 || i$1 >= a.$length) ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + i$1]) ^ ((i$1 < 0 || i$1 >= b.$length) ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + i$1])) << 24 >>> 24));
 57675  			i$1 = i$1 + (1) >> 0;
 57676  		}
 57677  		return n;
 57678  	};
 57679  	safeXORBytes = function(dst, a, b) {
 57680  		var a, b, dst, i, n;
 57681  		n = a.$length;
 57682  		if (b.$length < n) {
 57683  			n = b.$length;
 57684  		}
 57685  		i = 0;
 57686  		while (true) {
 57687  			if (!(i < n)) { break; }
 57688  			((i < 0 || i >= dst.$length) ? ($throwRuntimeError("index out of range"), undefined) : dst.$array[dst.$offset + i] = ((((i < 0 || i >= a.$length) ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + i]) ^ ((i < 0 || i >= b.$length) ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + i])) << 24 >>> 24));
 57689  			i = i + (1) >> 0;
 57690  		}
 57691  		return n;
 57692  	};
 57693  	xorBytes = function(dst, a, b) {
 57694  		var a, b, dst;
 57695  		if (false) {
 57696  			return fastXORBytes(dst, a, b);
 57697  		} else {
 57698  			return safeXORBytes(dst, a, b);
 57699  		}
 57700  	};
 57701  	fastXORWords = function(dst, a, b) {
 57702  		var _q, a, aw, b, bw, dst, dw, i, n;
 57703  		dw = dst;
 57704  		aw = a;
 57705  		bw = b;
 57706  		n = (_q = b.$length / 4, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero"));
 57707  		i = 0;
 57708  		while (true) {
 57709  			if (!(i < n)) { break; }
 57710  			((i < 0 || i >= dw.$length) ? ($throwRuntimeError("index out of range"), undefined) : dw.$array[dw.$offset + i] = ((((i < 0 || i >= aw.$length) ? ($throwRuntimeError("index out of range"), undefined) : aw.$array[aw.$offset + i]) ^ ((i < 0 || i >= bw.$length) ? ($throwRuntimeError("index out of range"), undefined) : bw.$array[bw.$offset + i])) >>> 0));
 57711  			i = i + (1) >> 0;
 57712  		}
 57713  	};
 57714  	xorWords = function(dst, a, b) {
 57715  		var a, b, dst;
 57716  		if (false) {
 57717  			fastXORWords(dst, a, b);
 57718  		} else {
 57719  			safeXORBytes(dst, a, b);
 57720  		}
 57721  	};
 57722  	ptrType.methods = [{prop: "BlockSize", name: "BlockSize", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "CryptBlocks", name: "CryptBlocks", pkg: "", typ: $funcType([sliceType$1, sliceType$1], [], false)}, {prop: "SetIV", name: "SetIV", pkg: "", typ: $funcType([sliceType$1], [], false)}];
 57723  	ptrType$1.methods = [{prop: "BlockSize", name: "BlockSize", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "CryptBlocks", name: "CryptBlocks", pkg: "", typ: $funcType([sliceType$1, sliceType$1], [], false)}, {prop: "SetIV", name: "SetIV", pkg: "", typ: $funcType([sliceType$1], [], false)}];
 57724  	ptrType$3.methods = [{prop: "refill", name: "refill", pkg: "crypto/cipher", typ: $funcType([], [], false)}, {prop: "XORKeyStream", name: "XORKeyStream", pkg: "", typ: $funcType([sliceType$1, sliceType$1], [], false)}];
 57725  	ptrType$6.methods = [{prop: "NonceSize", name: "NonceSize", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Overhead", name: "Overhead", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Seal", name: "Seal", pkg: "", typ: $funcType([sliceType$1, sliceType$1, sliceType$1, sliceType$1], [sliceType$1], false)}, {prop: "Open", name: "Open", pkg: "", typ: $funcType([sliceType$1, sliceType$1, sliceType$1, sliceType$1], [sliceType$1, $error], false)}, {prop: "mul", name: "mul", pkg: "crypto/cipher", typ: $funcType([ptrType$4], [], false)}, {prop: "updateBlocks", name: "updateBlocks", pkg: "crypto/cipher", typ: $funcType([ptrType$4, sliceType$1], [], false)}, {prop: "update", name: "update", pkg: "crypto/cipher", typ: $funcType([ptrType$4, sliceType$1], [], false)}, {prop: "counterCrypt", name: "counterCrypt", pkg: "crypto/cipher", typ: $funcType([sliceType$1, sliceType$1, ptrType$5], [], false)}, {prop: "deriveCounter", name: "deriveCounter", pkg: "crypto/cipher", typ: $funcType([ptrType$5, sliceType$1], [], false)}, {prop: "auth", name: "auth", pkg: "crypto/cipher", typ: $funcType([sliceType$1, sliceType$1, sliceType$1, ptrType$5], [], false)}];
 57726  	StreamReader.methods = [{prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType$1], [$Int, $error], false)}];
 57727  	cbc.init("crypto/cipher", [{prop: "b", name: "b", anonymous: false, exported: false, typ: Block, tag: ""}, {prop: "blockSize", name: "blockSize", anonymous: false, exported: false, typ: $Int, tag: ""}, {prop: "iv", name: "iv", anonymous: false, exported: false, typ: sliceType$1, tag: ""}, {prop: "tmp", name: "tmp", anonymous: false, exported: false, typ: sliceType$1, tag: ""}]);
 57728  	cbcEncrypter.init("crypto/cipher", [{prop: "b", name: "b", anonymous: false, exported: false, typ: Block, tag: ""}, {prop: "blockSize", name: "blockSize", anonymous: false, exported: false, typ: $Int, tag: ""}, {prop: "iv", name: "iv", anonymous: false, exported: false, typ: sliceType$1, tag: ""}, {prop: "tmp", name: "tmp", anonymous: false, exported: false, typ: sliceType$1, tag: ""}]);
 57729  	cbcEncAble.init([{prop: "NewCBCEncrypter", name: "NewCBCEncrypter", pkg: "", typ: $funcType([sliceType$1], [BlockMode], false)}]);
 57730  	cbcDecrypter.init("crypto/cipher", [{prop: "b", name: "b", anonymous: false, exported: false, typ: Block, tag: ""}, {prop: "blockSize", name: "blockSize", anonymous: false, exported: false, typ: $Int, tag: ""}, {prop: "iv", name: "iv", anonymous: false, exported: false, typ: sliceType$1, tag: ""}, {prop: "tmp", name: "tmp", anonymous: false, exported: false, typ: sliceType$1, tag: ""}]);
 57731  	cbcDecAble.init([{prop: "NewCBCDecrypter", name: "NewCBCDecrypter", pkg: "", typ: $funcType([sliceType$1], [BlockMode], false)}]);
 57732  	Block.init([{prop: "BlockSize", name: "BlockSize", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Decrypt", name: "Decrypt", pkg: "", typ: $funcType([sliceType$1, sliceType$1], [], false)}, {prop: "Encrypt", name: "Encrypt", pkg: "", typ: $funcType([sliceType$1, sliceType$1], [], false)}]);
 57733  	Stream.init([{prop: "XORKeyStream", name: "XORKeyStream", pkg: "", typ: $funcType([sliceType$1, sliceType$1], [], false)}]);
 57734  	BlockMode.init([{prop: "BlockSize", name: "BlockSize", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "CryptBlocks", name: "CryptBlocks", pkg: "", typ: $funcType([sliceType$1, sliceType$1], [], false)}]);
 57735  	ctr.init("crypto/cipher", [{prop: "b", name: "b", anonymous: false, exported: false, typ: Block, tag: ""}, {prop: "ctr", name: "ctr", anonymous: false, exported: false, typ: sliceType$1, tag: ""}, {prop: "out", name: "out", anonymous: false, exported: false, typ: sliceType$1, tag: ""}, {prop: "outUsed", name: "outUsed", anonymous: false, exported: false, typ: $Int, tag: ""}]);
 57736  	ctrAble.init([{prop: "NewCTR", name: "NewCTR", pkg: "", typ: $funcType([sliceType$1], [Stream], false)}]);
 57737  	AEAD.init([{prop: "NonceSize", name: "NonceSize", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Open", name: "Open", pkg: "", typ: $funcType([sliceType$1, sliceType$1, sliceType$1, sliceType$1], [sliceType$1, $error], false)}, {prop: "Overhead", name: "Overhead", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Seal", name: "Seal", pkg: "", typ: $funcType([sliceType$1, sliceType$1, sliceType$1, sliceType$1], [sliceType$1], false)}]);
 57738  	gcmAble.init([{prop: "NewGCM", name: "NewGCM", pkg: "", typ: $funcType([$Int], [AEAD, $error], false)}]);
 57739  	gcmFieldElement.init("crypto/cipher", [{prop: "low", name: "low", anonymous: false, exported: false, typ: $Uint64, tag: ""}, {prop: "high", name: "high", anonymous: false, exported: false, typ: $Uint64, tag: ""}]);
 57740  	gcm.init("crypto/cipher", [{prop: "cipher", name: "cipher", anonymous: false, exported: false, typ: Block, tag: ""}, {prop: "nonceSize", name: "nonceSize", anonymous: false, exported: false, typ: $Int, tag: ""}, {prop: "productTable", name: "productTable", anonymous: false, exported: false, typ: arrayType$1, tag: ""}]);
 57741  	StreamReader.init("", [{prop: "S", name: "S", anonymous: false, exported: true, typ: Stream, tag: ""}, {prop: "R", name: "R", anonymous: false, exported: true, typ: io.Reader, tag: ""}]);
 57742  	$init = function() {
 57743  		$pkg.$init = function() {};
 57744  		/* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 57745  		$r = subtle.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 57746  		$r = errors.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 57747  		$r = io.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 57748  		$r = runtime.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 57749  		errOpen = errors.New("cipher: message authentication failed");
 57750  		gcmReductionTable = new sliceType([0, 7200, 14400, 9312, 28800, 27808, 18624, 21728, 57600, 64800, 55616, 50528, 37248, 36256, 43456, 46560]);
 57751  		/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
 57752  	};
 57753  	$pkg.$init = $init;
 57754  	return $pkg;
 57755  })();
 57756  $packages["crypto/aes"] = (function() {
 57757  	var $pkg = {}, $init, cipher, strconv, aesCipher, KeySizeError, sliceType, sliceType$1, ptrType, powx, sbox0, sbox1, te0, te1, te2, te3, td0, td1, td2, td3, encryptBlockGo, decryptBlockGo, subw, rotw, expandKeyGo, NewCipher, newCipherGeneric, newCipher;
 57758  	cipher = $packages["crypto/cipher"];
 57759  	strconv = $packages["strconv"];
 57760  	aesCipher = $pkg.aesCipher = $newType(0, $kindStruct, "aes.aesCipher", true, "crypto/aes", false, function(enc_, dec_) {
 57761  		this.$val = this;
 57762  		if (arguments.length === 0) {
 57763  			this.enc = sliceType.nil;
 57764  			this.dec = sliceType.nil;
 57765  			return;
 57766  		}
 57767  		this.enc = enc_;
 57768  		this.dec = dec_;
 57769  	});
 57770  	KeySizeError = $pkg.KeySizeError = $newType(4, $kindInt, "aes.KeySizeError", true, "crypto/aes", true, null);
 57771  	sliceType = $sliceType($Uint32);
 57772  	sliceType$1 = $sliceType($Uint8);
 57773  	ptrType = $ptrType(aesCipher);
 57774  	encryptBlockGo = function(xk, dst, src) {
 57775  		var _q, _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$14, _tmp$15, _tmp$16, _tmp$17, _tmp$18, _tmp$19, _tmp$2, _tmp$20, _tmp$21, _tmp$22, _tmp$23, _tmp$24, _tmp$25, _tmp$26, _tmp$27, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, dst, k, nr, r, s0, s1, s2, s3, src, t0, t1, t2, t3, x, x$1, x$10, x$11, x$12, x$13, x$14, x$15, x$16, x$17, x$18, x$19, x$2, x$20, x$21, x$22, x$23, x$24, x$25, x$26, x$27, x$28, x$29, x$3, x$30, x$31, x$32, x$33, x$34, x$35, x$36, x$37, x$38, x$39, x$4, x$5, x$6, x$7, x$8, x$9, xk;
 57776  		_tmp = 0;
 57777  		_tmp$1 = 0;
 57778  		_tmp$2 = 0;
 57779  		_tmp$3 = 0;
 57780  		_tmp$4 = 0;
 57781  		_tmp$5 = 0;
 57782  		_tmp$6 = 0;
 57783  		_tmp$7 = 0;
 57784  		s0 = _tmp;
 57785  		s1 = _tmp$1;
 57786  		s2 = _tmp$2;
 57787  		s3 = _tmp$3;
 57788  		t0 = _tmp$4;
 57789  		t1 = _tmp$5;
 57790  		t2 = _tmp$6;
 57791  		t3 = _tmp$7;
 57792  		s0 = (((((((((0 >= src.$length ? ($throwRuntimeError("index out of range"), undefined) : src.$array[src.$offset + 0]) >>> 0)) << 24 >>> 0) | ((((1 >= src.$length ? ($throwRuntimeError("index out of range"), undefined) : src.$array[src.$offset + 1]) >>> 0)) << 16 >>> 0)) >>> 0) | ((((2 >= src.$length ? ($throwRuntimeError("index out of range"), undefined) : src.$array[src.$offset + 2]) >>> 0)) << 8 >>> 0)) >>> 0) | (((3 >= src.$length ? ($throwRuntimeError("index out of range"), undefined) : src.$array[src.$offset + 3]) >>> 0))) >>> 0;
 57793  		s1 = (((((((((4 >= src.$length ? ($throwRuntimeError("index out of range"), undefined) : src.$array[src.$offset + 4]) >>> 0)) << 24 >>> 0) | ((((5 >= src.$length ? ($throwRuntimeError("index out of range"), undefined) : src.$array[src.$offset + 5]) >>> 0)) << 16 >>> 0)) >>> 0) | ((((6 >= src.$length ? ($throwRuntimeError("index out of range"), undefined) : src.$array[src.$offset + 6]) >>> 0)) << 8 >>> 0)) >>> 0) | (((7 >= src.$length ? ($throwRuntimeError("index out of range"), undefined) : src.$array[src.$offset + 7]) >>> 0))) >>> 0;
 57794  		s2 = (((((((((8 >= src.$length ? ($throwRuntimeError("index out of range"), undefined) : src.$array[src.$offset + 8]) >>> 0)) << 24 >>> 0) | ((((9 >= src.$length ? ($throwRuntimeError("index out of range"), undefined) : src.$array[src.$offset + 9]) >>> 0)) << 16 >>> 0)) >>> 0) | ((((10 >= src.$length ? ($throwRuntimeError("index out of range"), undefined) : src.$array[src.$offset + 10]) >>> 0)) << 8 >>> 0)) >>> 0) | (((11 >= src.$length ? ($throwRuntimeError("index out of range"), undefined) : src.$array[src.$offset + 11]) >>> 0))) >>> 0;
 57795  		s3 = (((((((((12 >= src.$length ? ($throwRuntimeError("index out of range"), undefined) : src.$array[src.$offset + 12]) >>> 0)) << 24 >>> 0) | ((((13 >= src.$length ? ($throwRuntimeError("index out of range"), undefined) : src.$array[src.$offset + 13]) >>> 0)) << 16 >>> 0)) >>> 0) | ((((14 >= src.$length ? ($throwRuntimeError("index out of range"), undefined) : src.$array[src.$offset + 14]) >>> 0)) << 8 >>> 0)) >>> 0) | (((15 >= src.$length ? ($throwRuntimeError("index out of range"), undefined) : src.$array[src.$offset + 15]) >>> 0))) >>> 0;
 57796  		s0 = (s0 ^ ((0 >= xk.$length ? ($throwRuntimeError("index out of range"), undefined) : xk.$array[xk.$offset + 0]))) >>> 0;
 57797  		s1 = (s1 ^ ((1 >= xk.$length ? ($throwRuntimeError("index out of range"), undefined) : xk.$array[xk.$offset + 1]))) >>> 0;
 57798  		s2 = (s2 ^ ((2 >= xk.$length ? ($throwRuntimeError("index out of range"), undefined) : xk.$array[xk.$offset + 2]))) >>> 0;
 57799  		s3 = (s3 ^ ((3 >= xk.$length ? ($throwRuntimeError("index out of range"), undefined) : xk.$array[xk.$offset + 3]))) >>> 0;
 57800  		nr = (_q = xk.$length / 4, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")) - 2 >> 0;
 57801  		k = 4;
 57802  		r = 0;
 57803  		while (true) {
 57804  			if (!(r < nr)) { break; }
 57805  			t0 = ((((((((x = k + 0 >> 0, ((x < 0 || x >= xk.$length) ? ($throwRuntimeError("index out of range"), undefined) : xk.$array[xk.$offset + x])) ^ (x$1 = (((s0 >>> 24 >>> 0) << 24 >>> 24)), ((x$1 < 0 || x$1 >= te0.length) ? ($throwRuntimeError("index out of range"), undefined) : te0[x$1]))) >>> 0) ^ (x$2 = (((s1 >>> 16 >>> 0) << 24 >>> 24)), ((x$2 < 0 || x$2 >= te1.length) ? ($throwRuntimeError("index out of range"), undefined) : te1[x$2]))) >>> 0) ^ (x$3 = (((s2 >>> 8 >>> 0) << 24 >>> 24)), ((x$3 < 0 || x$3 >= te2.length) ? ($throwRuntimeError("index out of range"), undefined) : te2[x$3]))) >>> 0) ^ (x$4 = ((s3 << 24 >>> 24)), ((x$4 < 0 || x$4 >= te3.length) ? ($throwRuntimeError("index out of range"), undefined) : te3[x$4]))) >>> 0;
 57806  			t1 = ((((((((x$5 = k + 1 >> 0, ((x$5 < 0 || x$5 >= xk.$length) ? ($throwRuntimeError("index out of range"), undefined) : xk.$array[xk.$offset + x$5])) ^ (x$6 = (((s1 >>> 24 >>> 0) << 24 >>> 24)), ((x$6 < 0 || x$6 >= te0.length) ? ($throwRuntimeError("index out of range"), undefined) : te0[x$6]))) >>> 0) ^ (x$7 = (((s2 >>> 16 >>> 0) << 24 >>> 24)), ((x$7 < 0 || x$7 >= te1.length) ? ($throwRuntimeError("index out of range"), undefined) : te1[x$7]))) >>> 0) ^ (x$8 = (((s3 >>> 8 >>> 0) << 24 >>> 24)), ((x$8 < 0 || x$8 >= te2.length) ? ($throwRuntimeError("index out of range"), undefined) : te2[x$8]))) >>> 0) ^ (x$9 = ((s0 << 24 >>> 24)), ((x$9 < 0 || x$9 >= te3.length) ? ($throwRuntimeError("index out of range"), undefined) : te3[x$9]))) >>> 0;
 57807  			t2 = ((((((((x$10 = k + 2 >> 0, ((x$10 < 0 || x$10 >= xk.$length) ? ($throwRuntimeError("index out of range"), undefined) : xk.$array[xk.$offset + x$10])) ^ (x$11 = (((s2 >>> 24 >>> 0) << 24 >>> 24)), ((x$11 < 0 || x$11 >= te0.length) ? ($throwRuntimeError("index out of range"), undefined) : te0[x$11]))) >>> 0) ^ (x$12 = (((s3 >>> 16 >>> 0) << 24 >>> 24)), ((x$12 < 0 || x$12 >= te1.length) ? ($throwRuntimeError("index out of range"), undefined) : te1[x$12]))) >>> 0) ^ (x$13 = (((s0 >>> 8 >>> 0) << 24 >>> 24)), ((x$13 < 0 || x$13 >= te2.length) ? ($throwRuntimeError("index out of range"), undefined) : te2[x$13]))) >>> 0) ^ (x$14 = ((s1 << 24 >>> 24)), ((x$14 < 0 || x$14 >= te3.length) ? ($throwRuntimeError("index out of range"), undefined) : te3[x$14]))) >>> 0;
 57808  			t3 = ((((((((x$15 = k + 3 >> 0, ((x$15 < 0 || x$15 >= xk.$length) ? ($throwRuntimeError("index out of range"), undefined) : xk.$array[xk.$offset + x$15])) ^ (x$16 = (((s3 >>> 24 >>> 0) << 24 >>> 24)), ((x$16 < 0 || x$16 >= te0.length) ? ($throwRuntimeError("index out of range"), undefined) : te0[x$16]))) >>> 0) ^ (x$17 = (((s0 >>> 16 >>> 0) << 24 >>> 24)), ((x$17 < 0 || x$17 >= te1.length) ? ($throwRuntimeError("index out of range"), undefined) : te1[x$17]))) >>> 0) ^ (x$18 = (((s1 >>> 8 >>> 0) << 24 >>> 24)), ((x$18 < 0 || x$18 >= te2.length) ? ($throwRuntimeError("index out of range"), undefined) : te2[x$18]))) >>> 0) ^ (x$19 = ((s2 << 24 >>> 24)), ((x$19 < 0 || x$19 >= te3.length) ? ($throwRuntimeError("index out of range"), undefined) : te3[x$19]))) >>> 0;
 57809  			k = k + (4) >> 0;
 57810  			_tmp$8 = t0;
 57811  			_tmp$9 = t1;
 57812  			_tmp$10 = t2;
 57813  			_tmp$11 = t3;
 57814  			s0 = _tmp$8;
 57815  			s1 = _tmp$9;
 57816  			s2 = _tmp$10;
 57817  			s3 = _tmp$11;
 57818  			r = r + (1) >> 0;
 57819  		}
 57820  		s0 = (((((((((x$20 = t0 >>> 24 >>> 0, ((x$20 < 0 || x$20 >= sbox0.length) ? ($throwRuntimeError("index out of range"), undefined) : sbox0[x$20])) >>> 0)) << 24 >>> 0) | ((((x$21 = ((t1 >>> 16 >>> 0) & 255) >>> 0, ((x$21 < 0 || x$21 >= sbox0.length) ? ($throwRuntimeError("index out of range"), undefined) : sbox0[x$21])) >>> 0)) << 16 >>> 0)) >>> 0) | ((((x$22 = ((t2 >>> 8 >>> 0) & 255) >>> 0, ((x$22 < 0 || x$22 >= sbox0.length) ? ($throwRuntimeError("index out of range"), undefined) : sbox0[x$22])) >>> 0)) << 8 >>> 0)) >>> 0) | (((x$23 = (t3 & 255) >>> 0, ((x$23 < 0 || x$23 >= sbox0.length) ? ($throwRuntimeError("index out of range"), undefined) : sbox0[x$23])) >>> 0))) >>> 0;
 57821  		s1 = (((((((((x$24 = t1 >>> 24 >>> 0, ((x$24 < 0 || x$24 >= sbox0.length) ? ($throwRuntimeError("index out of range"), undefined) : sbox0[x$24])) >>> 0)) << 24 >>> 0) | ((((x$25 = ((t2 >>> 16 >>> 0) & 255) >>> 0, ((x$25 < 0 || x$25 >= sbox0.length) ? ($throwRuntimeError("index out of range"), undefined) : sbox0[x$25])) >>> 0)) << 16 >>> 0)) >>> 0) | ((((x$26 = ((t3 >>> 8 >>> 0) & 255) >>> 0, ((x$26 < 0 || x$26 >= sbox0.length) ? ($throwRuntimeError("index out of range"), undefined) : sbox0[x$26])) >>> 0)) << 8 >>> 0)) >>> 0) | (((x$27 = (t0 & 255) >>> 0, ((x$27 < 0 || x$27 >= sbox0.length) ? ($throwRuntimeError("index out of range"), undefined) : sbox0[x$27])) >>> 0))) >>> 0;
 57822  		s2 = (((((((((x$28 = t2 >>> 24 >>> 0, ((x$28 < 0 || x$28 >= sbox0.length) ? ($throwRuntimeError("index out of range"), undefined) : sbox0[x$28])) >>> 0)) << 24 >>> 0) | ((((x$29 = ((t3 >>> 16 >>> 0) & 255) >>> 0, ((x$29 < 0 || x$29 >= sbox0.length) ? ($throwRuntimeError("index out of range"), undefined) : sbox0[x$29])) >>> 0)) << 16 >>> 0)) >>> 0) | ((((x$30 = ((t0 >>> 8 >>> 0) & 255) >>> 0, ((x$30 < 0 || x$30 >= sbox0.length) ? ($throwRuntimeError("index out of range"), undefined) : sbox0[x$30])) >>> 0)) << 8 >>> 0)) >>> 0) | (((x$31 = (t1 & 255) >>> 0, ((x$31 < 0 || x$31 >= sbox0.length) ? ($throwRuntimeError("index out of range"), undefined) : sbox0[x$31])) >>> 0))) >>> 0;
 57823  		s3 = (((((((((x$32 = t3 >>> 24 >>> 0, ((x$32 < 0 || x$32 >= sbox0.length) ? ($throwRuntimeError("index out of range"), undefined) : sbox0[x$32])) >>> 0)) << 24 >>> 0) | ((((x$33 = ((t0 >>> 16 >>> 0) & 255) >>> 0, ((x$33 < 0 || x$33 >= sbox0.length) ? ($throwRuntimeError("index out of range"), undefined) : sbox0[x$33])) >>> 0)) << 16 >>> 0)) >>> 0) | ((((x$34 = ((t1 >>> 8 >>> 0) & 255) >>> 0, ((x$34 < 0 || x$34 >= sbox0.length) ? ($throwRuntimeError("index out of range"), undefined) : sbox0[x$34])) >>> 0)) << 8 >>> 0)) >>> 0) | (((x$35 = (t2 & 255) >>> 0, ((x$35 < 0 || x$35 >= sbox0.length) ? ($throwRuntimeError("index out of range"), undefined) : sbox0[x$35])) >>> 0))) >>> 0;
 57824  		s0 = (s0 ^ ((x$36 = k + 0 >> 0, ((x$36 < 0 || x$36 >= xk.$length) ? ($throwRuntimeError("index out of range"), undefined) : xk.$array[xk.$offset + x$36])))) >>> 0;
 57825  		s1 = (s1 ^ ((x$37 = k + 1 >> 0, ((x$37 < 0 || x$37 >= xk.$length) ? ($throwRuntimeError("index out of range"), undefined) : xk.$array[xk.$offset + x$37])))) >>> 0;
 57826  		s2 = (s2 ^ ((x$38 = k + 2 >> 0, ((x$38 < 0 || x$38 >= xk.$length) ? ($throwRuntimeError("index out of range"), undefined) : xk.$array[xk.$offset + x$38])))) >>> 0;
 57827  		s3 = (s3 ^ ((x$39 = k + 3 >> 0, ((x$39 < 0 || x$39 >= xk.$length) ? ($throwRuntimeError("index out of range"), undefined) : xk.$array[xk.$offset + x$39])))) >>> 0;
 57828  		_tmp$12 = (((s0 >>> 24 >>> 0) << 24 >>> 24));
 57829  		_tmp$13 = (((s0 >>> 16 >>> 0) << 24 >>> 24));
 57830  		_tmp$14 = (((s0 >>> 8 >>> 0) << 24 >>> 24));
 57831  		_tmp$15 = ((s0 << 24 >>> 24));
 57832  		(0 >= dst.$length ? ($throwRuntimeError("index out of range"), undefined) : dst.$array[dst.$offset + 0] = _tmp$12);
 57833  		(1 >= dst.$length ? ($throwRuntimeError("index out of range"), undefined) : dst.$array[dst.$offset + 1] = _tmp$13);
 57834  		(2 >= dst.$length ? ($throwRuntimeError("index out of range"), undefined) : dst.$array[dst.$offset + 2] = _tmp$14);
 57835  		(3 >= dst.$length ? ($throwRuntimeError("index out of range"), undefined) : dst.$array[dst.$offset + 3] = _tmp$15);
 57836  		_tmp$16 = (((s1 >>> 24 >>> 0) << 24 >>> 24));
 57837  		_tmp$17 = (((s1 >>> 16 >>> 0) << 24 >>> 24));
 57838  		_tmp$18 = (((s1 >>> 8 >>> 0) << 24 >>> 24));
 57839  		_tmp$19 = ((s1 << 24 >>> 24));
 57840  		(4 >= dst.$length ? ($throwRuntimeError("index out of range"), undefined) : dst.$array[dst.$offset + 4] = _tmp$16);
 57841  		(5 >= dst.$length ? ($throwRuntimeError("index out of range"), undefined) : dst.$array[dst.$offset + 5] = _tmp$17);
 57842  		(6 >= dst.$length ? ($throwRuntimeError("index out of range"), undefined) : dst.$array[dst.$offset + 6] = _tmp$18);
 57843  		(7 >= dst.$length ? ($throwRuntimeError("index out of range"), undefined) : dst.$array[dst.$offset + 7] = _tmp$19);
 57844  		_tmp$20 = (((s2 >>> 24 >>> 0) << 24 >>> 24));
 57845  		_tmp$21 = (((s2 >>> 16 >>> 0) << 24 >>> 24));
 57846  		_tmp$22 = (((s2 >>> 8 >>> 0) << 24 >>> 24));
 57847  		_tmp$23 = ((s2 << 24 >>> 24));
 57848  		(8 >= dst.$length ? ($throwRuntimeError("index out of range"), undefined) : dst.$array[dst.$offset + 8] = _tmp$20);
 57849  		(9 >= dst.$length ? ($throwRuntimeError("index out of range"), undefined) : dst.$array[dst.$offset + 9] = _tmp$21);
 57850  		(10 >= dst.$length ? ($throwRuntimeError("index out of range"), undefined) : dst.$array[dst.$offset + 10] = _tmp$22);
 57851  		(11 >= dst.$length ? ($throwRuntimeError("index out of range"), undefined) : dst.$array[dst.$offset + 11] = _tmp$23);
 57852  		_tmp$24 = (((s3 >>> 24 >>> 0) << 24 >>> 24));
 57853  		_tmp$25 = (((s3 >>> 16 >>> 0) << 24 >>> 24));
 57854  		_tmp$26 = (((s3 >>> 8 >>> 0) << 24 >>> 24));
 57855  		_tmp$27 = ((s3 << 24 >>> 24));
 57856  		(12 >= dst.$length ? ($throwRuntimeError("index out of range"), undefined) : dst.$array[dst.$offset + 12] = _tmp$24);
 57857  		(13 >= dst.$length ? ($throwRuntimeError("index out of range"), undefined) : dst.$array[dst.$offset + 13] = _tmp$25);
 57858  		(14 >= dst.$length ? ($throwRuntimeError("index out of range"), undefined) : dst.$array[dst.$offset + 14] = _tmp$26);
 57859  		(15 >= dst.$length ? ($throwRuntimeError("index out of range"), undefined) : dst.$array[dst.$offset + 15] = _tmp$27);
 57860  	};
 57861  	decryptBlockGo = function(xk, dst, src) {
 57862  		var _q, _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$14, _tmp$15, _tmp$16, _tmp$17, _tmp$18, _tmp$19, _tmp$2, _tmp$20, _tmp$21, _tmp$22, _tmp$23, _tmp$24, _tmp$25, _tmp$26, _tmp$27, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, dst, k, nr, r, s0, s1, s2, s3, src, t0, t1, t2, t3, x, x$1, x$10, x$11, x$12, x$13, x$14, x$15, x$16, x$17, x$18, x$19, x$2, x$20, x$21, x$22, x$23, x$24, x$25, x$26, x$27, x$28, x$29, x$3, x$30, x$31, x$32, x$33, x$34, x$35, x$36, x$37, x$38, x$39, x$4, x$5, x$6, x$7, x$8, x$9, xk;
 57863  		_tmp = 0;
 57864  		_tmp$1 = 0;
 57865  		_tmp$2 = 0;
 57866  		_tmp$3 = 0;
 57867  		_tmp$4 = 0;
 57868  		_tmp$5 = 0;
 57869  		_tmp$6 = 0;
 57870  		_tmp$7 = 0;
 57871  		s0 = _tmp;
 57872  		s1 = _tmp$1;
 57873  		s2 = _tmp$2;
 57874  		s3 = _tmp$3;
 57875  		t0 = _tmp$4;
 57876  		t1 = _tmp$5;
 57877  		t2 = _tmp$6;
 57878  		t3 = _tmp$7;
 57879  		s0 = (((((((((0 >= src.$length ? ($throwRuntimeError("index out of range"), undefined) : src.$array[src.$offset + 0]) >>> 0)) << 24 >>> 0) | ((((1 >= src.$length ? ($throwRuntimeError("index out of range"), undefined) : src.$array[src.$offset + 1]) >>> 0)) << 16 >>> 0)) >>> 0) | ((((2 >= src.$length ? ($throwRuntimeError("index out of range"), undefined) : src.$array[src.$offset + 2]) >>> 0)) << 8 >>> 0)) >>> 0) | (((3 >= src.$length ? ($throwRuntimeError("index out of range"), undefined) : src.$array[src.$offset + 3]) >>> 0))) >>> 0;
 57880  		s1 = (((((((((4 >= src.$length ? ($throwRuntimeError("index out of range"), undefined) : src.$array[src.$offset + 4]) >>> 0)) << 24 >>> 0) | ((((5 >= src.$length ? ($throwRuntimeError("index out of range"), undefined) : src.$array[src.$offset + 5]) >>> 0)) << 16 >>> 0)) >>> 0) | ((((6 >= src.$length ? ($throwRuntimeError("index out of range"), undefined) : src.$array[src.$offset + 6]) >>> 0)) << 8 >>> 0)) >>> 0) | (((7 >= src.$length ? ($throwRuntimeError("index out of range"), undefined) : src.$array[src.$offset + 7]) >>> 0))) >>> 0;
 57881  		s2 = (((((((((8 >= src.$length ? ($throwRuntimeError("index out of range"), undefined) : src.$array[src.$offset + 8]) >>> 0)) << 24 >>> 0) | ((((9 >= src.$length ? ($throwRuntimeError("index out of range"), undefined) : src.$array[src.$offset + 9]) >>> 0)) << 16 >>> 0)) >>> 0) | ((((10 >= src.$length ? ($throwRuntimeError("index out of range"), undefined) : src.$array[src.$offset + 10]) >>> 0)) << 8 >>> 0)) >>> 0) | (((11 >= src.$length ? ($throwRuntimeError("index out of range"), undefined) : src.$array[src.$offset + 11]) >>> 0))) >>> 0;
 57882  		s3 = (((((((((12 >= src.$length ? ($throwRuntimeError("index out of range"), undefined) : src.$array[src.$offset + 12]) >>> 0)) << 24 >>> 0) | ((((13 >= src.$length ? ($throwRuntimeError("index out of range"), undefined) : src.$array[src.$offset + 13]) >>> 0)) << 16 >>> 0)) >>> 0) | ((((14 >= src.$length ? ($throwRuntimeError("index out of range"), undefined) : src.$array[src.$offset + 14]) >>> 0)) << 8 >>> 0)) >>> 0) | (((15 >= src.$length ? ($throwRuntimeError("index out of range"), undefined) : src.$array[src.$offset + 15]) >>> 0))) >>> 0;
 57883  		s0 = (s0 ^ ((0 >= xk.$length ? ($throwRuntimeError("index out of range"), undefined) : xk.$array[xk.$offset + 0]))) >>> 0;
 57884  		s1 = (s1 ^ ((1 >= xk.$length ? ($throwRuntimeError("index out of range"), undefined) : xk.$array[xk.$offset + 1]))) >>> 0;
 57885  		s2 = (s2 ^ ((2 >= xk.$length ? ($throwRuntimeError("index out of range"), undefined) : xk.$array[xk.$offset + 2]))) >>> 0;
 57886  		s3 = (s3 ^ ((3 >= xk.$length ? ($throwRuntimeError("index out of range"), undefined) : xk.$array[xk.$offset + 3]))) >>> 0;
 57887  		nr = (_q = xk.$length / 4, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")) - 2 >> 0;
 57888  		k = 4;
 57889  		r = 0;
 57890  		while (true) {
 57891  			if (!(r < nr)) { break; }
 57892  			t0 = ((((((((x = k + 0 >> 0, ((x < 0 || x >= xk.$length) ? ($throwRuntimeError("index out of range"), undefined) : xk.$array[xk.$offset + x])) ^ (x$1 = (((s0 >>> 24 >>> 0) << 24 >>> 24)), ((x$1 < 0 || x$1 >= td0.length) ? ($throwRuntimeError("index out of range"), undefined) : td0[x$1]))) >>> 0) ^ (x$2 = (((s3 >>> 16 >>> 0) << 24 >>> 24)), ((x$2 < 0 || x$2 >= td1.length) ? ($throwRuntimeError("index out of range"), undefined) : td1[x$2]))) >>> 0) ^ (x$3 = (((s2 >>> 8 >>> 0) << 24 >>> 24)), ((x$3 < 0 || x$3 >= td2.length) ? ($throwRuntimeError("index out of range"), undefined) : td2[x$3]))) >>> 0) ^ (x$4 = ((s1 << 24 >>> 24)), ((x$4 < 0 || x$4 >= td3.length) ? ($throwRuntimeError("index out of range"), undefined) : td3[x$4]))) >>> 0;
 57893  			t1 = ((((((((x$5 = k + 1 >> 0, ((x$5 < 0 || x$5 >= xk.$length) ? ($throwRuntimeError("index out of range"), undefined) : xk.$array[xk.$offset + x$5])) ^ (x$6 = (((s1 >>> 24 >>> 0) << 24 >>> 24)), ((x$6 < 0 || x$6 >= td0.length) ? ($throwRuntimeError("index out of range"), undefined) : td0[x$6]))) >>> 0) ^ (x$7 = (((s0 >>> 16 >>> 0) << 24 >>> 24)), ((x$7 < 0 || x$7 >= td1.length) ? ($throwRuntimeError("index out of range"), undefined) : td1[x$7]))) >>> 0) ^ (x$8 = (((s3 >>> 8 >>> 0) << 24 >>> 24)), ((x$8 < 0 || x$8 >= td2.length) ? ($throwRuntimeError("index out of range"), undefined) : td2[x$8]))) >>> 0) ^ (x$9 = ((s2 << 24 >>> 24)), ((x$9 < 0 || x$9 >= td3.length) ? ($throwRuntimeError("index out of range"), undefined) : td3[x$9]))) >>> 0;
 57894  			t2 = ((((((((x$10 = k + 2 >> 0, ((x$10 < 0 || x$10 >= xk.$length) ? ($throwRuntimeError("index out of range"), undefined) : xk.$array[xk.$offset + x$10])) ^ (x$11 = (((s2 >>> 24 >>> 0) << 24 >>> 24)), ((x$11 < 0 || x$11 >= td0.length) ? ($throwRuntimeError("index out of range"), undefined) : td0[x$11]))) >>> 0) ^ (x$12 = (((s1 >>> 16 >>> 0) << 24 >>> 24)), ((x$12 < 0 || x$12 >= td1.length) ? ($throwRuntimeError("index out of range"), undefined) : td1[x$12]))) >>> 0) ^ (x$13 = (((s0 >>> 8 >>> 0) << 24 >>> 24)), ((x$13 < 0 || x$13 >= td2.length) ? ($throwRuntimeError("index out of range"), undefined) : td2[x$13]))) >>> 0) ^ (x$14 = ((s3 << 24 >>> 24)), ((x$14 < 0 || x$14 >= td3.length) ? ($throwRuntimeError("index out of range"), undefined) : td3[x$14]))) >>> 0;
 57895  			t3 = ((((((((x$15 = k + 3 >> 0, ((x$15 < 0 || x$15 >= xk.$length) ? ($throwRuntimeError("index out of range"), undefined) : xk.$array[xk.$offset + x$15])) ^ (x$16 = (((s3 >>> 24 >>> 0) << 24 >>> 24)), ((x$16 < 0 || x$16 >= td0.length) ? ($throwRuntimeError("index out of range"), undefined) : td0[x$16]))) >>> 0) ^ (x$17 = (((s2 >>> 16 >>> 0) << 24 >>> 24)), ((x$17 < 0 || x$17 >= td1.length) ? ($throwRuntimeError("index out of range"), undefined) : td1[x$17]))) >>> 0) ^ (x$18 = (((s1 >>> 8 >>> 0) << 24 >>> 24)), ((x$18 < 0 || x$18 >= td2.length) ? ($throwRuntimeError("index out of range"), undefined) : td2[x$18]))) >>> 0) ^ (x$19 = ((s0 << 24 >>> 24)), ((x$19 < 0 || x$19 >= td3.length) ? ($throwRuntimeError("index out of range"), undefined) : td3[x$19]))) >>> 0;
 57896  			k = k + (4) >> 0;
 57897  			_tmp$8 = t0;
 57898  			_tmp$9 = t1;
 57899  			_tmp$10 = t2;
 57900  			_tmp$11 = t3;
 57901  			s0 = _tmp$8;
 57902  			s1 = _tmp$9;
 57903  			s2 = _tmp$10;
 57904  			s3 = _tmp$11;
 57905  			r = r + (1) >> 0;
 57906  		}
 57907  		s0 = (((((((((x$20 = t0 >>> 24 >>> 0, ((x$20 < 0 || x$20 >= sbox1.length) ? ($throwRuntimeError("index out of range"), undefined) : sbox1[x$20])) >>> 0)) << 24 >>> 0) | ((((x$21 = ((t3 >>> 16 >>> 0) & 255) >>> 0, ((x$21 < 0 || x$21 >= sbox1.length) ? ($throwRuntimeError("index out of range"), undefined) : sbox1[x$21])) >>> 0)) << 16 >>> 0)) >>> 0) | ((((x$22 = ((t2 >>> 8 >>> 0) & 255) >>> 0, ((x$22 < 0 || x$22 >= sbox1.length) ? ($throwRuntimeError("index out of range"), undefined) : sbox1[x$22])) >>> 0)) << 8 >>> 0)) >>> 0) | (((x$23 = (t1 & 255) >>> 0, ((x$23 < 0 || x$23 >= sbox1.length) ? ($throwRuntimeError("index out of range"), undefined) : sbox1[x$23])) >>> 0))) >>> 0;
 57908  		s1 = (((((((((x$24 = t1 >>> 24 >>> 0, ((x$24 < 0 || x$24 >= sbox1.length) ? ($throwRuntimeError("index out of range"), undefined) : sbox1[x$24])) >>> 0)) << 24 >>> 0) | ((((x$25 = ((t0 >>> 16 >>> 0) & 255) >>> 0, ((x$25 < 0 || x$25 >= sbox1.length) ? ($throwRuntimeError("index out of range"), undefined) : sbox1[x$25])) >>> 0)) << 16 >>> 0)) >>> 0) | ((((x$26 = ((t3 >>> 8 >>> 0) & 255) >>> 0, ((x$26 < 0 || x$26 >= sbox1.length) ? ($throwRuntimeError("index out of range"), undefined) : sbox1[x$26])) >>> 0)) << 8 >>> 0)) >>> 0) | (((x$27 = (t2 & 255) >>> 0, ((x$27 < 0 || x$27 >= sbox1.length) ? ($throwRuntimeError("index out of range"), undefined) : sbox1[x$27])) >>> 0))) >>> 0;
 57909  		s2 = (((((((((x$28 = t2 >>> 24 >>> 0, ((x$28 < 0 || x$28 >= sbox1.length) ? ($throwRuntimeError("index out of range"), undefined) : sbox1[x$28])) >>> 0)) << 24 >>> 0) | ((((x$29 = ((t1 >>> 16 >>> 0) & 255) >>> 0, ((x$29 < 0 || x$29 >= sbox1.length) ? ($throwRuntimeError("index out of range"), undefined) : sbox1[x$29])) >>> 0)) << 16 >>> 0)) >>> 0) | ((((x$30 = ((t0 >>> 8 >>> 0) & 255) >>> 0, ((x$30 < 0 || x$30 >= sbox1.length) ? ($throwRuntimeError("index out of range"), undefined) : sbox1[x$30])) >>> 0)) << 8 >>> 0)) >>> 0) | (((x$31 = (t3 & 255) >>> 0, ((x$31 < 0 || x$31 >= sbox1.length) ? ($throwRuntimeError("index out of range"), undefined) : sbox1[x$31])) >>> 0))) >>> 0;
 57910  		s3 = (((((((((x$32 = t3 >>> 24 >>> 0, ((x$32 < 0 || x$32 >= sbox1.length) ? ($throwRuntimeError("index out of range"), undefined) : sbox1[x$32])) >>> 0)) << 24 >>> 0) | ((((x$33 = ((t2 >>> 16 >>> 0) & 255) >>> 0, ((x$33 < 0 || x$33 >= sbox1.length) ? ($throwRuntimeError("index out of range"), undefined) : sbox1[x$33])) >>> 0)) << 16 >>> 0)) >>> 0) | ((((x$34 = ((t1 >>> 8 >>> 0) & 255) >>> 0, ((x$34 < 0 || x$34 >= sbox1.length) ? ($throwRuntimeError("index out of range"), undefined) : sbox1[x$34])) >>> 0)) << 8 >>> 0)) >>> 0) | (((x$35 = (t0 & 255) >>> 0, ((x$35 < 0 || x$35 >= sbox1.length) ? ($throwRuntimeError("index out of range"), undefined) : sbox1[x$35])) >>> 0))) >>> 0;
 57911  		s0 = (s0 ^ ((x$36 = k + 0 >> 0, ((x$36 < 0 || x$36 >= xk.$length) ? ($throwRuntimeError("index out of range"), undefined) : xk.$array[xk.$offset + x$36])))) >>> 0;
 57912  		s1 = (s1 ^ ((x$37 = k + 1 >> 0, ((x$37 < 0 || x$37 >= xk.$length) ? ($throwRuntimeError("index out of range"), undefined) : xk.$array[xk.$offset + x$37])))) >>> 0;
 57913  		s2 = (s2 ^ ((x$38 = k + 2 >> 0, ((x$38 < 0 || x$38 >= xk.$length) ? ($throwRuntimeError("index out of range"), undefined) : xk.$array[xk.$offset + x$38])))) >>> 0;
 57914  		s3 = (s3 ^ ((x$39 = k + 3 >> 0, ((x$39 < 0 || x$39 >= xk.$length) ? ($throwRuntimeError("index out of range"), undefined) : xk.$array[xk.$offset + x$39])))) >>> 0;
 57915  		_tmp$12 = (((s0 >>> 24 >>> 0) << 24 >>> 24));
 57916  		_tmp$13 = (((s0 >>> 16 >>> 0) << 24 >>> 24));
 57917  		_tmp$14 = (((s0 >>> 8 >>> 0) << 24 >>> 24));
 57918  		_tmp$15 = ((s0 << 24 >>> 24));
 57919  		(0 >= dst.$length ? ($throwRuntimeError("index out of range"), undefined) : dst.$array[dst.$offset + 0] = _tmp$12);
 57920  		(1 >= dst.$length ? ($throwRuntimeError("index out of range"), undefined) : dst.$array[dst.$offset + 1] = _tmp$13);
 57921  		(2 >= dst.$length ? ($throwRuntimeError("index out of range"), undefined) : dst.$array[dst.$offset + 2] = _tmp$14);
 57922  		(3 >= dst.$length ? ($throwRuntimeError("index out of range"), undefined) : dst.$array[dst.$offset + 3] = _tmp$15);
 57923  		_tmp$16 = (((s1 >>> 24 >>> 0) << 24 >>> 24));
 57924  		_tmp$17 = (((s1 >>> 16 >>> 0) << 24 >>> 24));
 57925  		_tmp$18 = (((s1 >>> 8 >>> 0) << 24 >>> 24));
 57926  		_tmp$19 = ((s1 << 24 >>> 24));
 57927  		(4 >= dst.$length ? ($throwRuntimeError("index out of range"), undefined) : dst.$array[dst.$offset + 4] = _tmp$16);
 57928  		(5 >= dst.$length ? ($throwRuntimeError("index out of range"), undefined) : dst.$array[dst.$offset + 5] = _tmp$17);
 57929  		(6 >= dst.$length ? ($throwRuntimeError("index out of range"), undefined) : dst.$array[dst.$offset + 6] = _tmp$18);
 57930  		(7 >= dst.$length ? ($throwRuntimeError("index out of range"), undefined) : dst.$array[dst.$offset + 7] = _tmp$19);
 57931  		_tmp$20 = (((s2 >>> 24 >>> 0) << 24 >>> 24));
 57932  		_tmp$21 = (((s2 >>> 16 >>> 0) << 24 >>> 24));
 57933  		_tmp$22 = (((s2 >>> 8 >>> 0) << 24 >>> 24));
 57934  		_tmp$23 = ((s2 << 24 >>> 24));
 57935  		(8 >= dst.$length ? ($throwRuntimeError("index out of range"), undefined) : dst.$array[dst.$offset + 8] = _tmp$20);
 57936  		(9 >= dst.$length ? ($throwRuntimeError("index out of range"), undefined) : dst.$array[dst.$offset + 9] = _tmp$21);
 57937  		(10 >= dst.$length ? ($throwRuntimeError("index out of range"), undefined) : dst.$array[dst.$offset + 10] = _tmp$22);
 57938  		(11 >= dst.$length ? ($throwRuntimeError("index out of range"), undefined) : dst.$array[dst.$offset + 11] = _tmp$23);
 57939  		_tmp$24 = (((s3 >>> 24 >>> 0) << 24 >>> 24));
 57940  		_tmp$25 = (((s3 >>> 16 >>> 0) << 24 >>> 24));
 57941  		_tmp$26 = (((s3 >>> 8 >>> 0) << 24 >>> 24));
 57942  		_tmp$27 = ((s3 << 24 >>> 24));
 57943  		(12 >= dst.$length ? ($throwRuntimeError("index out of range"), undefined) : dst.$array[dst.$offset + 12] = _tmp$24);
 57944  		(13 >= dst.$length ? ($throwRuntimeError("index out of range"), undefined) : dst.$array[dst.$offset + 13] = _tmp$25);
 57945  		(14 >= dst.$length ? ($throwRuntimeError("index out of range"), undefined) : dst.$array[dst.$offset + 14] = _tmp$26);
 57946  		(15 >= dst.$length ? ($throwRuntimeError("index out of range"), undefined) : dst.$array[dst.$offset + 15] = _tmp$27);
 57947  	};
 57948  	subw = function(w) {
 57949  		var w, x, x$1, x$2, x$3;
 57950  		return (((((((((x = w >>> 24 >>> 0, ((x < 0 || x >= sbox0.length) ? ($throwRuntimeError("index out of range"), undefined) : sbox0[x])) >>> 0)) << 24 >>> 0) | ((((x$1 = ((w >>> 16 >>> 0) & 255) >>> 0, ((x$1 < 0 || x$1 >= sbox0.length) ? ($throwRuntimeError("index out of range"), undefined) : sbox0[x$1])) >>> 0)) << 16 >>> 0)) >>> 0) | ((((x$2 = ((w >>> 8 >>> 0) & 255) >>> 0, ((x$2 < 0 || x$2 >= sbox0.length) ? ($throwRuntimeError("index out of range"), undefined) : sbox0[x$2])) >>> 0)) << 8 >>> 0)) >>> 0) | (((x$3 = (w & 255) >>> 0, ((x$3 < 0 || x$3 >= sbox0.length) ? ($throwRuntimeError("index out of range"), undefined) : sbox0[x$3])) >>> 0))) >>> 0;
 57951  	};
 57952  	rotw = function(w) {
 57953  		var w;
 57954  		return ((w << 8 >>> 0) | (w >>> 24 >>> 0)) >>> 0;
 57955  	};
 57956  	expandKeyGo = function(key, enc, dec) {
 57957  		var _q, _q$1, _r, _r$1, dec, ei, enc, i, i$1, j, key, n, nk, t, x, x$1, x$10, x$11, x$12, x$13, x$14, x$15, x$16, x$17, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9;
 57958  		i = 0;
 57959  		nk = (_q = key.$length / 4, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero"));
 57960  		i = 0;
 57961  		while (true) {
 57962  			if (!(i < nk)) { break; }
 57963  			((i < 0 || i >= enc.$length) ? ($throwRuntimeError("index out of range"), undefined) : enc.$array[enc.$offset + i] = ((((((((((x = $imul(4, i), ((x < 0 || x >= key.$length) ? ($throwRuntimeError("index out of range"), undefined) : key.$array[key.$offset + x])) >>> 0)) << 24 >>> 0) | ((((x$1 = ($imul(4, i)) + 1 >> 0, ((x$1 < 0 || x$1 >= key.$length) ? ($throwRuntimeError("index out of range"), undefined) : key.$array[key.$offset + x$1])) >>> 0)) << 16 >>> 0)) >>> 0) | ((((x$2 = ($imul(4, i)) + 2 >> 0, ((x$2 < 0 || x$2 >= key.$length) ? ($throwRuntimeError("index out of range"), undefined) : key.$array[key.$offset + x$2])) >>> 0)) << 8 >>> 0)) >>> 0) | (((x$3 = ($imul(4, i)) + 3 >> 0, ((x$3 < 0 || x$3 >= key.$length) ? ($throwRuntimeError("index out of range"), undefined) : key.$array[key.$offset + x$3])) >>> 0))) >>> 0));
 57964  			i = i + (1) >> 0;
 57965  		}
 57966  		while (true) {
 57967  			if (!(i < enc.$length)) { break; }
 57968  			t = (x$4 = i - 1 >> 0, ((x$4 < 0 || x$4 >= enc.$length) ? ($throwRuntimeError("index out of range"), undefined) : enc.$array[enc.$offset + x$4]));
 57969  			if ((_r = i % nk, _r === _r ? _r : $throwRuntimeError("integer divide by zero")) === 0) {
 57970  				t = (subw(rotw(t)) ^ (((((x$5 = (_q$1 = i / nk, (_q$1 === _q$1 && _q$1 !== 1/0 && _q$1 !== -1/0) ? _q$1 >> 0 : $throwRuntimeError("integer divide by zero")) - 1 >> 0, ((x$5 < 0 || x$5 >= powx.length) ? ($throwRuntimeError("index out of range"), undefined) : powx[x$5])) >>> 0)) << 24 >>> 0))) >>> 0;
 57971  			} else if (nk > 6 && ((_r$1 = i % nk, _r$1 === _r$1 ? _r$1 : $throwRuntimeError("integer divide by zero")) === 4)) {
 57972  				t = subw(t);
 57973  			}
 57974  			((i < 0 || i >= enc.$length) ? ($throwRuntimeError("index out of range"), undefined) : enc.$array[enc.$offset + i] = (((x$6 = i - nk >> 0, ((x$6 < 0 || x$6 >= enc.$length) ? ($throwRuntimeError("index out of range"), undefined) : enc.$array[enc.$offset + x$6])) ^ t) >>> 0));
 57975  			i = i + (1) >> 0;
 57976  		}
 57977  		if (dec === sliceType.nil) {
 57978  			return;
 57979  		}
 57980  		n = enc.$length;
 57981  		i$1 = 0;
 57982  		while (true) {
 57983  			if (!(i$1 < n)) { break; }
 57984  			ei = (n - i$1 >> 0) - 4 >> 0;
 57985  			j = 0;
 57986  			while (true) {
 57987  				if (!(j < 4)) { break; }
 57988  				x$8 = (x$7 = ei + j >> 0, ((x$7 < 0 || x$7 >= enc.$length) ? ($throwRuntimeError("index out of range"), undefined) : enc.$array[enc.$offset + x$7]));
 57989  				if (i$1 > 0 && (i$1 + 4 >> 0) < n) {
 57990  					x$8 = ((((((x$9 = (x$10 = x$8 >>> 24 >>> 0, ((x$10 < 0 || x$10 >= sbox0.length) ? ($throwRuntimeError("index out of range"), undefined) : sbox0[x$10])), ((x$9 < 0 || x$9 >= td0.length) ? ($throwRuntimeError("index out of range"), undefined) : td0[x$9])) ^ (x$11 = (x$12 = ((x$8 >>> 16 >>> 0) & 255) >>> 0, ((x$12 < 0 || x$12 >= sbox0.length) ? ($throwRuntimeError("index out of range"), undefined) : sbox0[x$12])), ((x$11 < 0 || x$11 >= td1.length) ? ($throwRuntimeError("index out of range"), undefined) : td1[x$11]))) >>> 0) ^ (x$13 = (x$14 = ((x$8 >>> 8 >>> 0) & 255) >>> 0, ((x$14 < 0 || x$14 >= sbox0.length) ? ($throwRuntimeError("index out of range"), undefined) : sbox0[x$14])), ((x$13 < 0 || x$13 >= td2.length) ? ($throwRuntimeError("index out of range"), undefined) : td2[x$13]))) >>> 0) ^ (x$15 = (x$16 = (x$8 & 255) >>> 0, ((x$16 < 0 || x$16 >= sbox0.length) ? ($throwRuntimeError("index out of range"), undefined) : sbox0[x$16])), ((x$15 < 0 || x$15 >= td3.length) ? ($throwRuntimeError("index out of range"), undefined) : td3[x$15]))) >>> 0;
 57991  				}
 57992  				(x$17 = i$1 + j >> 0, ((x$17 < 0 || x$17 >= dec.$length) ? ($throwRuntimeError("index out of range"), undefined) : dec.$array[dec.$offset + x$17] = x$8));
 57993  				j = j + (1) >> 0;
 57994  			}
 57995  			i$1 = i$1 + (4) >> 0;
 57996  		}
 57997  	};
 57998  	KeySizeError.prototype.Error = function() {
 57999  		var k;
 58000  		k = this.$val;
 58001  		return "crypto/aes: invalid key size " + strconv.Itoa(((k >> 0)));
 58002  	};
 58003  	$ptrType(KeySizeError).prototype.Error = function() { return new KeySizeError(this.$get()).Error(); };
 58004  	NewCipher = function(key) {
 58005  		var _1, k, key;
 58006  		k = key.$length;
 58007  		switch (0) { default:
 58008  			_1 = k;
 58009  			if ((_1 === (16)) || (_1 === (24)) || (_1 === (32))) {
 58010  				break;
 58011  			} else {
 58012  				return [$ifaceNil, new KeySizeError(((k >> 0)))];
 58013  			}
 58014  		}
 58015  		return newCipher(key);
 58016  	};
 58017  	$pkg.NewCipher = NewCipher;
 58018  	newCipherGeneric = function(key) {
 58019  		var c, key, n;
 58020  		n = key.$length + 28 >> 0;
 58021  		c = new aesCipher.ptr($makeSlice(sliceType, n), $makeSlice(sliceType, n));
 58022  		expandKeyGo(key, c.enc, c.dec);
 58023  		return [c, $ifaceNil];
 58024  	};
 58025  	aesCipher.ptr.prototype.BlockSize = function() {
 58026  		var c;
 58027  		c = this;
 58028  		return 16;
 58029  	};
 58030  	aesCipher.prototype.BlockSize = function() { return this.$val.BlockSize(); };
 58031  	aesCipher.ptr.prototype.Encrypt = function(dst, src) {
 58032  		var c, dst, src;
 58033  		c = this;
 58034  		if (src.$length < 16) {
 58035  			$panic(new $String("crypto/aes: input not full block"));
 58036  		}
 58037  		if (dst.$length < 16) {
 58038  			$panic(new $String("crypto/aes: output not full block"));
 58039  		}
 58040  		encryptBlockGo(c.enc, dst, src);
 58041  	};
 58042  	aesCipher.prototype.Encrypt = function(dst, src) { return this.$val.Encrypt(dst, src); };
 58043  	aesCipher.ptr.prototype.Decrypt = function(dst, src) {
 58044  		var c, dst, src;
 58045  		c = this;
 58046  		if (src.$length < 16) {
 58047  			$panic(new $String("crypto/aes: input not full block"));
 58048  		}
 58049  		if (dst.$length < 16) {
 58050  			$panic(new $String("crypto/aes: output not full block"));
 58051  		}
 58052  		decryptBlockGo(c.dec, dst, src);
 58053  	};
 58054  	aesCipher.prototype.Decrypt = function(dst, src) { return this.$val.Decrypt(dst, src); };
 58055  	newCipher = function(key) {
 58056  		var key;
 58057  		return newCipherGeneric(key);
 58058  	};
 58059  	ptrType.methods = [{prop: "BlockSize", name: "BlockSize", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Encrypt", name: "Encrypt", pkg: "", typ: $funcType([sliceType$1, sliceType$1], [], false)}, {prop: "Decrypt", name: "Decrypt", pkg: "", typ: $funcType([sliceType$1, sliceType$1], [], false)}];
 58060  	KeySizeError.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}];
 58061  	aesCipher.init("crypto/aes", [{prop: "enc", name: "enc", anonymous: false, exported: false, typ: sliceType, tag: ""}, {prop: "dec", name: "dec", anonymous: false, exported: false, typ: sliceType, tag: ""}]);
 58062  	$init = function() {
 58063  		$pkg.$init = function() {};
 58064  		/* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 58065  		$r = cipher.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 58066  		$r = strconv.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 58067  		powx = $toNativeArray($kindUint8, [1, 2, 4, 8, 16, 32, 64, 128, 27, 54, 108, 216, 171, 77, 154, 47]);
 58068  		sbox0 = $toNativeArray($kindUint8, [99, 124, 119, 123, 242, 107, 111, 197, 48, 1, 103, 43, 254, 215, 171, 118, 202, 130, 201, 125, 250, 89, 71, 240, 173, 212, 162, 175, 156, 164, 114, 192, 183, 253, 147, 38, 54, 63, 247, 204, 52, 165, 229, 241, 113, 216, 49, 21, 4, 199, 35, 195, 24, 150, 5, 154, 7, 18, 128, 226, 235, 39, 178, 117, 9, 131, 44, 26, 27, 110, 90, 160, 82, 59, 214, 179, 41, 227, 47, 132, 83, 209, 0, 237, 32, 252, 177, 91, 106, 203, 190, 57, 74, 76, 88, 207, 208, 239, 170, 251, 67, 77, 51, 133, 69, 249, 2, 127, 80, 60, 159, 168, 81, 163, 64, 143, 146, 157, 56, 245, 188, 182, 218, 33, 16, 255, 243, 210, 205, 12, 19, 236, 95, 151, 68, 23, 196, 167, 126, 61, 100, 93, 25, 115, 96, 129, 79, 220, 34, 42, 144, 136, 70, 238, 184, 20, 222, 94, 11, 219, 224, 50, 58, 10, 73, 6, 36, 92, 194, 211, 172, 98, 145, 149, 228, 121, 231, 200, 55, 109, 141, 213, 78, 169, 108, 86, 244, 234, 101, 122, 174, 8, 186, 120, 37, 46, 28, 166, 180, 198, 232, 221, 116, 31, 75, 189, 139, 138, 112, 62, 181, 102, 72, 3, 246, 14, 97, 53, 87, 185, 134, 193, 29, 158, 225, 248, 152, 17, 105, 217, 142, 148, 155, 30, 135, 233, 206, 85, 40, 223, 140, 161, 137, 13, 191, 230, 66, 104, 65, 153, 45, 15, 176, 84, 187, 22]);
 58069  		sbox1 = $toNativeArray($kindUint8, [82, 9, 106, 213, 48, 54, 165, 56, 191, 64, 163, 158, 129, 243, 215, 251, 124, 227, 57, 130, 155, 47, 255, 135, 52, 142, 67, 68, 196, 222, 233, 203, 84, 123, 148, 50, 166, 194, 35, 61, 238, 76, 149, 11, 66, 250, 195, 78, 8, 46, 161, 102, 40, 217, 36, 178, 118, 91, 162, 73, 109, 139, 209, 37, 114, 248, 246, 100, 134, 104, 152, 22, 212, 164, 92, 204, 93, 101, 182, 146, 108, 112, 72, 80, 253, 237, 185, 218, 94, 21, 70, 87, 167, 141, 157, 132, 144, 216, 171, 0, 140, 188, 211, 10, 247, 228, 88, 5, 184, 179, 69, 6, 208, 44, 30, 143, 202, 63, 15, 2, 193, 175, 189, 3, 1, 19, 138, 107, 58, 145, 17, 65, 79, 103, 220, 234, 151, 242, 207, 206, 240, 180, 230, 115, 150, 172, 116, 34, 231, 173, 53, 133, 226, 249, 55, 232, 28, 117, 223, 110, 71, 241, 26, 113, 29, 41, 197, 137, 111, 183, 98, 14, 170, 24, 190, 27, 252, 86, 62, 75, 198, 210, 121, 32, 154, 219, 192, 254, 120, 205, 90, 244, 31, 221, 168, 51, 136, 7, 199, 49, 177, 18, 16, 89, 39, 128, 236, 95, 96, 81, 127, 169, 25, 181, 74, 13, 45, 229, 122, 159, 147, 201, 156, 239, 160, 224, 59, 77, 174, 42, 245, 176, 200, 235, 187, 60, 131, 83, 153, 97, 23, 43, 4, 126, 186, 119, 214, 38, 225, 105, 20, 99, 85, 33, 12, 125]);
 58070  		te0 = $toNativeArray($kindUint32, [3328402341, 4168907908, 4000806809, 4135287693, 4294111757, 3597364157, 3731845041, 2445657428, 1613770832, 33620227, 3462883241, 1445669757, 3892248089, 3050821474, 1303096294, 3967186586, 2412431941, 528646813, 2311702848, 4202528135, 4026202645, 2992200171, 2387036105, 4226871307, 1101901292, 3017069671, 1604494077, 1169141738, 597466303, 1403299063, 3832705686, 2613100635, 1974974402, 3791519004, 1033081774, 1277568618, 1815492186, 2118074177, 4126668546, 2211236943, 1748251740, 1369810420, 3521504564, 4193382664, 3799085459, 2883115123, 1647391059, 706024767, 134480908, 2512897874, 1176707941, 2646852446, 806885416, 932615841, 168101135, 798661301, 235341577, 605164086, 461406363, 3756188221, 3454790438, 1311188841, 2142417613, 3933566367, 302582043, 495158174, 1479289972, 874125870, 907746093, 3698224818, 3025820398, 1537253627, 2756858614, 1983593293, 3084310113, 2108928974, 1378429307, 3722699582, 1580150641, 327451799, 2790478837, 3117535592, 0, 3253595436, 1075847264, 3825007647, 2041688520, 3059440621, 3563743934, 2378943302, 1740553945, 1916352843, 2487896798, 2555137236, 2958579944, 2244988746, 3151024235, 3320835882, 1336584933, 3992714006, 2252555205, 2588757463, 1714631509, 293963156, 2319795663, 3925473552, 67240454, 4269768577, 2689618160, 2017213508, 631218106, 1269344483, 2723238387, 1571005438, 2151694528, 93294474, 1066570413, 563977660, 1882732616, 4059428100, 1673313503, 2008463041, 2950355573, 1109467491, 537923632, 3858759450, 4260623118, 3218264685, 2177748300, 403442708, 638784309, 3287084079, 3193921505, 899127202, 2286175436, 773265209, 2479146071, 1437050866, 4236148354, 2050833735, 3362022572, 3126681063, 840505643, 3866325909, 3227541664, 427917720, 2655997905, 2749160575, 1143087718, 1412049534, 999329963, 193497219, 2353415882, 3354324521, 1807268051, 672404540, 2816401017, 3160301282, 369822493, 2916866934, 3688947771, 1681011286, 1949973070, 336202270, 2454276571, 201721354, 1210328172, 3093060836, 2680341085, 3184776046, 1135389935, 3294782118, 965841320, 831886756, 3554993207, 4068047243, 3588745010, 2345191491, 1849112409, 3664604599, 26054028, 2983581028, 2622377682, 1235855840, 3630984372, 2891339514, 4092916743, 3488279077, 3395642799, 4101667470, 1202630377, 268961816, 1874508501, 4034427016, 1243948399, 1546530418, 941366308, 1470539505, 1941222599, 2546386513, 3421038627, 2715671932, 3899946140, 1042226977, 2521517021, 1639824860, 227249030, 260737669, 3765465232, 2084453954, 1907733956, 3429263018, 2420656344, 100860677, 4160157185, 470683154, 3261161891, 1781871967, 2924959737, 1773779408, 394692241, 2579611992, 974986535, 664706745, 3655459128, 3958962195, 731420851, 571543859, 3530123707, 2849626480, 126783113, 865375399, 765172662, 1008606754, 361203602, 3387549984, 2278477385, 2857719295, 1344809080, 2782912378, 59542671, 1503764984, 160008576, 437062935, 1707065306, 3622233649, 2218934982, 3496503480, 2185314755, 697932208, 1512910199, 504303377, 2075177163, 2824099068, 1841019862, 739644986]);
 58071  		te1 = $toNativeArray($kindUint32, [2781242211, 2230877308, 2582542199, 2381740923, 234877682, 3184946027, 2984144751, 1418839493, 1348481072, 50462977, 2848876391, 2102799147, 434634494, 1656084439, 3863849899, 2599188086, 1167051466, 2636087938, 1082771913, 2281340285, 368048890, 3954334041, 3381544775, 201060592, 3963727277, 1739838676, 4250903202, 3930435503, 3206782108, 4149453988, 2531553906, 1536934080, 3262494647, 484572669, 2923271059, 1783375398, 1517041206, 1098792767, 49674231, 1334037708, 1550332980, 4098991525, 886171109, 150598129, 2481090929, 1940642008, 1398944049, 1059722517, 201851908, 1385547719, 1699095331, 1587397571, 674240536, 2704774806, 252314885, 3039795866, 151914247, 908333586, 2602270848, 1038082786, 651029483, 1766729511, 3447698098, 2682942837, 454166793, 2652734339, 1951935532, 775166490, 758520603, 3000790638, 4004797018, 4217086112, 4137964114, 1299594043, 1639438038, 3464344499, 2068982057, 1054729187, 1901997871, 2534638724, 4121318227, 1757008337, 0, 750906861, 1614815264, 535035132, 3363418545, 3988151131, 3201591914, 1183697867, 3647454910, 1265776953, 3734260298, 3566750796, 3903871064, 1250283471, 1807470800, 717615087, 3847203498, 384695291, 3313910595, 3617213773, 1432761139, 2484176261, 3481945413, 283769337, 100925954, 2180939647, 4037038160, 1148730428, 3123027871, 3813386408, 4087501137, 4267549603, 3229630528, 2315620239, 2906624658, 3156319645, 1215313976, 82966005, 3747855548, 3245848246, 1974459098, 1665278241, 807407632, 451280895, 251524083, 1841287890, 1283575245, 337120268, 891687699, 801369324, 3787349855, 2721421207, 3431482436, 959321879, 1469301956, 4065699751, 2197585534, 1199193405, 2898814052, 3887750493, 724703513, 2514908019, 2696962144, 2551808385, 3516813135, 2141445340, 1715741218, 2119445034, 2872807568, 2198571144, 3398190662, 700968686, 3547052216, 1009259540, 2041044702, 3803995742, 487983883, 1991105499, 1004265696, 1449407026, 1316239930, 504629770, 3683797321, 168560134, 1816667172, 3837287516, 1570751170, 1857934291, 4014189740, 2797888098, 2822345105, 2754712981, 936633572, 2347923833, 852879335, 1133234376, 1500395319, 3084545389, 2348912013, 1689376213, 3533459022, 3762923945, 3034082412, 4205598294, 133428468, 634383082, 2949277029, 2398386810, 3913789102, 403703816, 3580869306, 2297460856, 1867130149, 1918643758, 607656988, 4049053350, 3346248884, 1368901318, 600565992, 2090982877, 2632479860, 557719327, 3717614411, 3697393085, 2249034635, 2232388234, 2430627952, 1115438654, 3295786421, 2865522278, 3633334344, 84280067, 33027830, 303828494, 2747425121, 1600795957, 4188952407, 3496589753, 2434238086, 1486471617, 658119965, 3106381470, 953803233, 334231800, 3005978776, 857870609, 3151128937, 1890179545, 2298973838, 2805175444, 3056442267, 574365214, 2450884487, 550103529, 1233637070, 4289353045, 2018519080, 2057691103, 2399374476, 4166623649, 2148108681, 387583245, 3664101311, 836232934, 3330556482, 3100665960, 3280093505, 2955516313, 2002398509, 287182607, 3413881008, 4238890068, 3597515707, 975967766]);
 58072  		te2 = $toNativeArray($kindUint32, [1671808611, 2089089148, 2006576759, 2072901243, 4061003762, 1807603307, 1873927791, 3310653893, 810573872, 16974337, 1739181671, 729634347, 4263110654, 3613570519, 2883997099, 1989864566, 3393556426, 2191335298, 3376449993, 2106063485, 4195741690, 1508618841, 1204391495, 4027317232, 2917941677, 3563566036, 2734514082, 2951366063, 2629772188, 2767672228, 1922491506, 3227229120, 3082974647, 4246528509, 2477669779, 644500518, 911895606, 1061256767, 4144166391, 3427763148, 878471220, 2784252325, 3845444069, 4043897329, 1905517169, 3631459288, 827548209, 356461077, 67897348, 3344078279, 593839651, 3277757891, 405286936, 2527147926, 84871685, 2595565466, 118033927, 305538066, 2157648768, 3795705826, 3945188843, 661212711, 2999812018, 1973414517, 152769033, 2208177539, 745822252, 439235610, 455947803, 1857215598, 1525593178, 2700827552, 1391895634, 994932283, 3596728278, 3016654259, 695947817, 3812548067, 795958831, 2224493444, 1408607827, 3513301457, 0, 3979133421, 543178784, 4229948412, 2982705585, 1542305371, 1790891114, 3410398667, 3201918910, 961245753, 1256100938, 1289001036, 1491644504, 3477767631, 3496721360, 4012557807, 2867154858, 4212583931, 1137018435, 1305975373, 861234739, 2241073541, 1171229253, 4178635257, 33948674, 2139225727, 1357946960, 1011120188, 2679776671, 2833468328, 1374921297, 2751356323, 1086357568, 2408187279, 2460827538, 2646352285, 944271416, 4110742005, 3168756668, 3066132406, 3665145818, 560153121, 271589392, 4279952895, 4077846003, 3530407890, 3444343245, 202643468, 322250259, 3962553324, 1608629855, 2543990167, 1154254916, 389623319, 3294073796, 2817676711, 2122513534, 1028094525, 1689045092, 1575467613, 422261273, 1939203699, 1621147744, 2174228865, 1339137615, 3699352540, 577127458, 712922154, 2427141008, 2290289544, 1187679302, 3995715566, 3100863416, 339486740, 3732514782, 1591917662, 186455563, 3681988059, 3762019296, 844522546, 978220090, 169743370, 1239126601, 101321734, 611076132, 1558493276, 3260915650, 3547250131, 2901361580, 1655096418, 2443721105, 2510565781, 3828863972, 2039214713, 3878868455, 3359869896, 928607799, 1840765549, 2374762893, 3580146133, 1322425422, 2850048425, 1823791212, 1459268694, 4094161908, 3928346602, 1706019429, 2056189050, 2934523822, 135794696, 3134549946, 2022240376, 628050469, 779246638, 472135708, 2800834470, 3032970164, 3327236038, 3894660072, 3715932637, 1956440180, 522272287, 1272813131, 3185336765, 2340818315, 2323976074, 1888542832, 1044544574, 3049550261, 1722469478, 1222152264, 50660867, 4127324150, 236067854, 1638122081, 895445557, 1475980887, 3117443513, 2257655686, 3243809217, 489110045, 2662934430, 3778599393, 4162055160, 2561878936, 288563729, 1773916777, 3648039385, 2391345038, 2493985684, 2612407707, 505560094, 2274497927, 3911240169, 3460925390, 1442818645, 678973480, 3749357023, 2358182796, 2717407649, 2306869641, 219617805, 3218761151, 3862026214, 1120306242, 1756942440, 1103331905, 2578459033, 762796589, 252780047, 2966125488, 1425844308, 3151392187, 372911126]);
 58073  		te3 = $toNativeArray($kindUint32, [1667474886, 2088535288, 2004326894, 2071694838, 4075949567, 1802223062, 1869591006, 3318043793, 808472672, 16843522, 1734846926, 724270422, 4278065639, 3621216949, 2880169549, 1987484396, 3402253711, 2189597983, 3385409673, 2105378810, 4210693615, 1499065266, 1195886990, 4042263547, 2913856577, 3570689971, 2728590687, 2947541573, 2627518243, 2762274643, 1920112356, 3233831835, 3082273397, 4261223649, 2475929149, 640051788, 909531756, 1061110142, 4160160501, 3435941763, 875846760, 2779116625, 3857003729, 4059105529, 1903268834, 3638064043, 825316194, 353713962, 67374088, 3351728789, 589522246, 3284360861, 404236336, 2526454071, 84217610, 2593830191, 117901582, 303183396, 2155911963, 3806477791, 3958056653, 656894286, 2998062463, 1970642922, 151591698, 2206440989, 741110872, 437923380, 454765878, 1852748508, 1515908788, 2694904667, 1381168804, 993742198, 3604373943, 3014905469, 690584402, 3823320797, 791638366, 2223281939, 1398011302, 3520161977, 0, 3991743681, 538992704, 4244381667, 2981218425, 1532751286, 1785380564, 3419096717, 3200178535, 960056178, 1246420628, 1280103576, 1482221744, 3486468741, 3503319995, 4025428677, 2863326543, 4227536621, 1128514950, 1296947098, 859002214, 2240123921, 1162203018, 4193849577, 33687044, 2139062782, 1347481760, 1010582648, 2678045221, 2829640523, 1364325282, 2745433693, 1077985408, 2408548869, 2459086143, 2644360225, 943212656, 4126475505, 3166494563, 3065430391, 3671750063, 555836226, 269496352, 4294908645, 4092792573, 3537006015, 3452783745, 202118168, 320025894, 3974901699, 1600119230, 2543297077, 1145359496, 387397934, 3301201811, 2812801621, 2122220284, 1027426170, 1684319432, 1566435258, 421079858, 1936954854, 1616945344, 2172753945, 1330631070, 3705438115, 572679748, 707427924, 2425400123, 2290647819, 1179044492, 4008585671, 3099120491, 336870440, 3739122087, 1583276732, 185277718, 3688593069, 3772791771, 842159716, 976899700, 168435220, 1229577106, 101059084, 606366792, 1549591736, 3267517855, 3553849021, 2897014595, 1650632388, 2442242105, 2509612081, 3840161747, 2038008818, 3890688725, 3368567691, 926374254, 1835907034, 2374863873, 3587531953, 1313788572, 2846482505, 1819063512, 1448540844, 4109633523, 3941213647, 1701162954, 2054852340, 2930698567, 134748176, 3132806511, 2021165296, 623210314, 774795868, 471606328, 2795958615, 3031746419, 3334885783, 3907527627, 3722280097, 1953799400, 522133822, 1263263126, 3183336545, 2341176845, 2324333839, 1886425312, 1044267644, 3048588401, 1718004428, 1212733584, 50529542, 4143317495, 235803164, 1633788866, 892690282, 1465383342, 3115962473, 2256965911, 3250673817, 488449850, 2661202215, 3789633753, 4177007595, 2560144171, 286339874, 1768537042, 3654906025, 2391705863, 2492770099, 2610673197, 505291324, 2273808917, 3924369609, 3469625735, 1431699370, 673740880, 3755965093, 2358021891, 2711746649, 2307489801, 218961690, 3217021541, 3873845719, 1111672452, 1751693520, 1094828930, 2576986153, 757954394, 252645662, 2964376443, 1414855848, 3149649517, 370555436]);
 58074  		td0 = $toNativeArray($kindUint32, [1374988112, 2118214995, 437757123, 975658646, 1001089995, 530400753, 2902087851, 1273168787, 540080725, 2910219766, 2295101073, 4110568485, 1340463100, 3307916247, 641025152, 3043140495, 3736164937, 632953703, 1172967064, 1576976609, 3274667266, 2169303058, 2370213795, 1809054150, 59727847, 361929877, 3211623147, 2505202138, 3569255213, 1484005843, 1239443753, 2395588676, 1975683434, 4102977912, 2572697195, 666464733, 3202437046, 4035489047, 3374361702, 2110667444, 1675577880, 3843699074, 2538681184, 1649639237, 2976151520, 3144396420, 4269907996, 4178062228, 1883793496, 2403728665, 2497604743, 1383856311, 2876494627, 1917518562, 3810496343, 1716890410, 3001755655, 800440835, 2261089178, 3543599269, 807962610, 599762354, 33778362, 3977675356, 2328828971, 2809771154, 4077384432, 1315562145, 1708848333, 101039829, 3509871135, 3299278474, 875451293, 2733856160, 92987698, 2767645557, 193195065, 1080094634, 1584504582, 3178106961, 1042385657, 2531067453, 3711829422, 1306967366, 2438237621, 1908694277, 67556463, 1615861247, 429456164, 3602770327, 2302690252, 1742315127, 2968011453, 126454664, 3877198648, 2043211483, 2709260871, 2084704233, 4169408201, 0, 159417987, 841739592, 504459436, 1817866830, 4245618683, 260388950, 1034867998, 908933415, 168810852, 1750902305, 2606453969, 607530554, 202008497, 2472011535, 3035535058, 463180190, 2160117071, 1641816226, 1517767529, 470948374, 3801332234, 3231722213, 1008918595, 303765277, 235474187, 4069246893, 766945465, 337553864, 1475418501, 2943682380, 4003061179, 2743034109, 4144047775, 1551037884, 1147550661, 1543208500, 2336434550, 3408119516, 3069049960, 3102011747, 3610369226, 1113818384, 328671808, 2227573024, 2236228733, 3535486456, 2935566865, 3341394285, 496906059, 3702665459, 226906860, 2009195472, 733156972, 2842737049, 294930682, 1206477858, 2835123396, 2700099354, 1451044056, 573804783, 2269728455, 3644379585, 2362090238, 2564033334, 2801107407, 2776292904, 3669462566, 1068351396, 742039012, 1350078989, 1784663195, 1417561698, 4136440770, 2430122216, 775550814, 2193862645, 2673705150, 1775276924, 1876241833, 3475313331, 3366754619, 270040487, 3902563182, 3678124923, 3441850377, 1851332852, 3969562369, 2203032232, 3868552805, 2868897406, 566021896, 4011190502, 3135740889, 1248802510, 3936291284, 699432150, 832877231, 708780849, 3332740144, 899835584, 1951317047, 4236429990, 3767586992, 866637845, 4043610186, 1106041591, 2144161806, 395441711, 1984812685, 1139781709, 3433712980, 3835036895, 2664543715, 1282050075, 3240894392, 1181045119, 2640243204, 25965917, 4203181171, 4211818798, 3009879386, 2463879762, 3910161971, 1842759443, 2597806476, 933301370, 1509430414, 3943906441, 3467192302, 3076639029, 3776767469, 2051518780, 2631065433, 1441952575, 404016761, 1942435775, 1408749034, 1610459739, 3745345300, 2017778566, 3400528769, 3110650942, 941896748, 3265478751, 371049330, 3168937228, 675039627, 4279080257, 967311729, 135050206, 3635733660, 1683407248, 2076935265, 3576870512, 1215061108, 3501741890]);
 58075  		td1 = $toNativeArray($kindUint32, [1347548327, 1400783205, 3273267108, 2520393566, 3409685355, 4045380933, 2880240216, 2471224067, 1428173050, 4138563181, 2441661558, 636813900, 4233094615, 3620022987, 2149987652, 2411029155, 1239331162, 1730525723, 2554718734, 3781033664, 46346101, 310463728, 2743944855, 3328955385, 3875770207, 2501218972, 3955191162, 3667219033, 768917123, 3545789473, 692707433, 1150208456, 1786102409, 2029293177, 1805211710, 3710368113, 3065962831, 401639597, 1724457132, 3028143674, 409198410, 2196052529, 1620529459, 1164071807, 3769721975, 2226875310, 486441376, 2499348523, 1483753576, 428819965, 2274680428, 3075636216, 598438867, 3799141122, 1474502543, 711349675, 129166120, 53458370, 2592523643, 2782082824, 4063242375, 2988687269, 3120694122, 1559041666, 730517276, 2460449204, 4042459122, 2706270690, 3446004468, 3573941694, 533804130, 2328143614, 2637442643, 2695033685, 839224033, 1973745387, 957055980, 2856345839, 106852767, 1371368976, 4181598602, 1033297158, 2933734917, 1179510461, 3046200461, 91341917, 1862534868, 4284502037, 605657339, 2547432937, 3431546947, 2003294622, 3182487618, 2282195339, 954669403, 3682191598, 1201765386, 3917234703, 3388507166, 0, 2198438022, 1211247597, 2887651696, 1315723890, 4227665663, 1443857720, 507358933, 657861945, 1678381017, 560487590, 3516619604, 975451694, 2970356327, 261314535, 3535072918, 2652609425, 1333838021, 2724322336, 1767536459, 370938394, 182621114, 3854606378, 1128014560, 487725847, 185469197, 2918353863, 3106780840, 3356761769, 2237133081, 1286567175, 3152976349, 4255350624, 2683765030, 3160175349, 3309594171, 878443390, 1988838185, 3704300486, 1756818940, 1673061617, 3403100636, 272786309, 1075025698, 545572369, 2105887268, 4174560061, 296679730, 1841768865, 1260232239, 4091327024, 3960309330, 3497509347, 1814803222, 2578018489, 4195456072, 575138148, 3299409036, 446754879, 3629546796, 4011996048, 3347532110, 3252238545, 4270639778, 915985419, 3483825537, 681933534, 651868046, 2755636671, 3828103837, 223377554, 2607439820, 1649704518, 3270937875, 3901806776, 1580087799, 4118987695, 3198115200, 2087309459, 2842678573, 3016697106, 1003007129, 2802849917, 1860738147, 2077965243, 164439672, 4100872472, 32283319, 2827177882, 1709610350, 2125135846, 136428751, 3874428392, 3652904859, 3460984630, 3572145929, 3593056380, 2939266226, 824852259, 818324884, 3224740454, 930369212, 2801566410, 2967507152, 355706840, 1257309336, 4148292826, 243256656, 790073846, 2373340630, 1296297904, 1422699085, 3756299780, 3818836405, 457992840, 3099667487, 2135319889, 77422314, 1560382517, 1945798516, 788204353, 1521706781, 1385356242, 870912086, 325965383, 2358957921, 2050466060, 2388260884, 2313884476, 4006521127, 901210569, 3990953189, 1014646705, 1503449823, 1062597235, 2031621326, 3212035895, 3931371469, 1533017514, 350174575, 2256028891, 2177544179, 1052338372, 741876788, 1606591296, 1914052035, 213705253, 2334669897, 1107234197, 1899603969, 3725069491, 2631447780, 2422494913, 1635502980, 1893020342, 1950903388, 1120974935]);
 58076  		td2 = $toNativeArray($kindUint32, [2807058932, 1699970625, 2764249623, 1586903591, 1808481195, 1173430173, 1487645946, 59984867, 4199882800, 1844882806, 1989249228, 1277555970, 3623636965, 3419915562, 1149249077, 2744104290, 1514790577, 459744698, 244860394, 3235995134, 1963115311, 4027744588, 2544078150, 4190530515, 1608975247, 2627016082, 2062270317, 1507497298, 2200818878, 567498868, 1764313568, 3359936201, 2305455554, 2037970062, 1047239000, 1910319033, 1337376481, 2904027272, 2892417312, 984907214, 1243112415, 830661914, 861968209, 2135253587, 2011214180, 2927934315, 2686254721, 731183368, 1750626376, 4246310725, 1820824798, 4172763771, 3542330227, 48394827, 2404901663, 2871682645, 671593195, 3254988725, 2073724613, 145085239, 2280796200, 2779915199, 1790575107, 2187128086, 472615631, 3029510009, 4075877127, 3802222185, 4107101658, 3201631749, 1646252340, 4270507174, 1402811438, 1436590835, 3778151818, 3950355702, 3963161475, 4020912224, 2667994737, 273792366, 2331590177, 104699613, 95345982, 3175501286, 2377486676, 1560637892, 3564045318, 369057872, 4213447064, 3919042237, 1137477952, 2658625497, 1119727848, 2340947849, 1530455833, 4007360968, 172466556, 266959938, 516552836, 0, 2256734592, 3980931627, 1890328081, 1917742170, 4294704398, 945164165, 3575528878, 958871085, 3647212047, 2787207260, 1423022939, 775562294, 1739656202, 3876557655, 2530391278, 2443058075, 3310321856, 547512796, 1265195639, 437656594, 3121275539, 719700128, 3762502690, 387781147, 218828297, 3350065803, 2830708150, 2848461854, 428169201, 122466165, 3720081049, 1627235199, 648017665, 4122762354, 1002783846, 2117360635, 695634755, 3336358691, 4234721005, 4049844452, 3704280881, 2232435299, 574624663, 287343814, 612205898, 1039717051, 840019705, 2708326185, 793451934, 821288114, 1391201670, 3822090177, 376187827, 3113855344, 1224348052, 1679968233, 2361698556, 1058709744, 752375421, 2431590963, 1321699145, 3519142200, 2734591178, 188127444, 2177869557, 3727205754, 2384911031, 3215212461, 2648976442, 2450346104, 3432737375, 1180849278, 331544205, 3102249176, 4150144569, 2952102595, 2159976285, 2474404304, 766078933, 313773861, 2570832044, 2108100632, 1668212892, 3145456443, 2013908262, 418672217, 3070356634, 2594734927, 1852171925, 3867060991, 3473416636, 3907448597, 2614737639, 919489135, 164948639, 2094410160, 2997825956, 590424639, 2486224549, 1723872674, 3157750862, 3399941250, 3501252752, 3625268135, 2555048196, 3673637356, 1343127501, 4130281361, 3599595085, 2957853679, 1297403050, 81781910, 3051593425, 2283490410, 532201772, 1367295589, 3926170974, 895287692, 1953757831, 1093597963, 492483431, 3528626907, 1446242576, 1192455638, 1636604631, 209336225, 344873464, 1015671571, 669961897, 3375740769, 3857572124, 2973530695, 3747192018, 1933530610, 3464042516, 935293895, 3454686199, 2858115069, 1863638845, 3683022916, 4085369519, 3292445032, 875313188, 1080017571, 3279033885, 621591778, 1233856572, 2504130317, 24197544, 3017672716, 3835484340, 3247465558, 2220981195, 3060847922, 1551124588, 1463996600]);
 58077  		td3 = $toNativeArray($kindUint32, [4104605777, 1097159550, 396673818, 660510266, 2875968315, 2638606623, 4200115116, 3808662347, 821712160, 1986918061, 3430322568, 38544885, 3856137295, 718002117, 893681702, 1654886325, 2975484382, 3122358053, 3926825029, 4274053469, 796197571, 1290801793, 1184342925, 3556361835, 2405426947, 2459735317, 1836772287, 1381620373, 3196267988, 1948373848, 3764988233, 3385345166, 3263785589, 2390325492, 1480485785, 3111247143, 3780097726, 2293045232, 548169417, 3459953789, 3746175075, 439452389, 1362321559, 1400849762, 1685577905, 1806599355, 2174754046, 137073913, 1214797936, 1174215055, 3731654548, 2079897426, 1943217067, 1258480242, 529487843, 1437280870, 3945269170, 3049390895, 3313212038, 923313619, 679998000, 3215307299, 57326082, 377642221, 3474729866, 2041877159, 133361907, 1776460110, 3673476453, 96392454, 878845905, 2801699524, 777231668, 4082475170, 2330014213, 4142626212, 2213296395, 1626319424, 1906247262, 1846563261, 562755902, 3708173718, 1040559837, 3871163981, 1418573201, 3294430577, 114585348, 1343618912, 2566595609, 3186202582, 1078185097, 3651041127, 3896688048, 2307622919, 425408743, 3371096953, 2081048481, 1108339068, 2216610296, 0, 2156299017, 736970802, 292596766, 1517440620, 251657213, 2235061775, 2933202493, 758720310, 265905162, 1554391400, 1532285339, 908999204, 174567692, 1474760595, 4002861748, 2610011675, 3234156416, 3693126241, 2001430874, 303699484, 2478443234, 2687165888, 585122620, 454499602, 151849742, 2345119218, 3064510765, 514443284, 4044981591, 1963412655, 2581445614, 2137062819, 19308535, 1928707164, 1715193156, 4219352155, 1126790795, 600235211, 3992742070, 3841024952, 836553431, 1669664834, 2535604243, 3323011204, 1243905413, 3141400786, 4180808110, 698445255, 2653899549, 2989552604, 2253581325, 3252932727, 3004591147, 1891211689, 2487810577, 3915653703, 4237083816, 4030667424, 2100090966, 865136418, 1229899655, 953270745, 3399679628, 3557504664, 4118925222, 2061379749, 3079546586, 2915017791, 983426092, 2022837584, 1607244650, 2118541908, 2366882550, 3635996816, 972512814, 3283088770, 1568718495, 3499326569, 3576539503, 621982671, 2895723464, 410887952, 2623762152, 1002142683, 645401037, 1494807662, 2595684844, 1335535747, 2507040230, 4293295786, 3167684641, 367585007, 3885750714, 1865862730, 2668221674, 2960971305, 2763173681, 1059270954, 2777952454, 2724642869, 1320957812, 2194319100, 2429595872, 2815956275, 77089521, 3973773121, 3444575871, 2448830231, 1305906550, 4021308739, 2857194700, 2516901860, 3518358430, 1787304780, 740276417, 1699839814, 1592394909, 2352307457, 2272556026, 188821243, 1729977011, 3687994002, 274084841, 3594982253, 3613494426, 2701949495, 4162096729, 322734571, 2837966542, 1640576439, 484830689, 1202797690, 3537852828, 4067639125, 349075736, 3342319475, 4157467219, 4255800159, 1030690015, 1155237496, 2951971274, 1757691577, 607398968, 2738905026, 499347990, 3794078908, 1011452712, 227885567, 2818666809, 213114376, 3034881240, 1455525988, 3414450555, 850817237, 1817998408, 3092726480]);
 58078  		/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
 58079  	};
 58080  	$pkg.$init = $init;
 58081  	return $pkg;
 58082  })();
 58083  $packages["crypto/des"] = (function() {
 58084  	var $pkg = {}, $init, cipher, binary, strconv, KeySizeError, desCipher, tripleDESCipher, arrayType, arrayType$1, arrayType$2, arrayType$3, sliceType, sliceType$1, arrayType$4, sliceType$2, ptrType, ptrType$1, feistelBox, permutationFunction, permutedChoice1, permutedChoice2, sBoxes, ksRotations, cryptBlock, encryptBlock, decryptBlock, feistel, permuteBlock, init, permuteInitialBlock, permuteFinalBlock, ksRotate, unpack, NewTripleDESCipher;
 58085  	cipher = $packages["crypto/cipher"];
 58086  	binary = $packages["encoding/binary"];
 58087  	strconv = $packages["strconv"];
 58088  	KeySizeError = $pkg.KeySizeError = $newType(4, $kindInt, "des.KeySizeError", true, "crypto/des", true, null);
 58089  	desCipher = $pkg.desCipher = $newType(0, $kindStruct, "des.desCipher", true, "crypto/des", false, function(subkeys_) {
 58090  		this.$val = this;
 58091  		if (arguments.length === 0) {
 58092  			this.subkeys = arrayType$4.zero();
 58093  			return;
 58094  		}
 58095  		this.subkeys = subkeys_;
 58096  	});
 58097  	tripleDESCipher = $pkg.tripleDESCipher = $newType(0, $kindStruct, "des.tripleDESCipher", true, "crypto/des", false, function(cipher1_, cipher2_, cipher3_) {
 58098  		this.$val = this;
 58099  		if (arguments.length === 0) {
 58100  			this.cipher1 = new desCipher.ptr(arrayType$4.zero());
 58101  			this.cipher2 = new desCipher.ptr(arrayType$4.zero());
 58102  			this.cipher3 = new desCipher.ptr(arrayType$4.zero());
 58103  			return;
 58104  		}
 58105  		this.cipher1 = cipher1_;
 58106  		this.cipher2 = cipher2_;
 58107  		this.cipher3 = cipher3_;
 58108  	});
 58109  	arrayType = $arrayType($Uint32, 64);
 58110  	arrayType$1 = $arrayType(arrayType, 8);
 58111  	arrayType$2 = $arrayType($Uint8, 16);
 58112  	arrayType$3 = $arrayType(arrayType$2, 4);
 58113  	sliceType = $sliceType($Uint8);
 58114  	sliceType$1 = $sliceType($Uint32);
 58115  	arrayType$4 = $arrayType($Uint64, 16);
 58116  	sliceType$2 = $sliceType($Uint64);
 58117  	ptrType = $ptrType(desCipher);
 58118  	ptrType$1 = $ptrType(tripleDESCipher);
 58119  	cryptBlock = function(subkeys, dst, src, decrypt) {
 58120  		var _tmp, _tmp$1, _tuple, _tuple$1, b, decrypt, dst, i, i$1, left, preOutput, right, src, subkeys, x, x$1, x$2, x$3, x$4, x$5;
 58121  		b = $clone(binary.BigEndian, binary.bigEndian).Uint64(src);
 58122  		b = permuteInitialBlock(b);
 58123  		_tmp = (($shiftRightUint64(b, 32).$low >>> 0));
 58124  		_tmp$1 = ((b.$low >>> 0));
 58125  		left = _tmp;
 58126  		right = _tmp$1;
 58127  		left = (((left << 1 >>> 0)) | ((left >>> 31 >>> 0))) >>> 0;
 58128  		right = (((right << 1 >>> 0)) | ((right >>> 31 >>> 0))) >>> 0;
 58129  		if (decrypt) {
 58130  			i = 0;
 58131  			while (true) {
 58132  				if (!(i < 8)) { break; }
 58133  				_tuple = feistel(left, right, (x = 15 - ($imul(2, i)) >> 0, ((x < 0 || x >= subkeys.$length) ? ($throwRuntimeError("index out of range"), undefined) : subkeys.$array[subkeys.$offset + x])), (x$1 = 15 - ((($imul(2, i)) + 1 >> 0)) >> 0, ((x$1 < 0 || x$1 >= subkeys.$length) ? ($throwRuntimeError("index out of range"), undefined) : subkeys.$array[subkeys.$offset + x$1])));
 58134  				left = _tuple[0];
 58135  				right = _tuple[1];
 58136  				i = i + (1) >> 0;
 58137  			}
 58138  		} else {
 58139  			i$1 = 0;
 58140  			while (true) {
 58141  				if (!(i$1 < 8)) { break; }
 58142  				_tuple$1 = feistel(left, right, (x$2 = $imul(2, i$1), ((x$2 < 0 || x$2 >= subkeys.$length) ? ($throwRuntimeError("index out of range"), undefined) : subkeys.$array[subkeys.$offset + x$2])), (x$3 = ($imul(2, i$1)) + 1 >> 0, ((x$3 < 0 || x$3 >= subkeys.$length) ? ($throwRuntimeError("index out of range"), undefined) : subkeys.$array[subkeys.$offset + x$3])));
 58143  				left = _tuple$1[0];
 58144  				right = _tuple$1[1];
 58145  				i$1 = i$1 + (1) >> 0;
 58146  			}
 58147  		}
 58148  		left = (((left << 31 >>> 0)) | ((left >>> 1 >>> 0))) >>> 0;
 58149  		right = (((right << 31 >>> 0)) | ((right >>> 1 >>> 0))) >>> 0;
 58150  		preOutput = (x$4 = $shiftLeft64((new $Uint64(0, right)), 32), x$5 = (new $Uint64(0, left)), new $Uint64(x$4.$high | x$5.$high, (x$4.$low | x$5.$low) >>> 0));
 58151  		$clone(binary.BigEndian, binary.bigEndian).PutUint64(dst, permuteFinalBlock(preOutput));
 58152  	};
 58153  	encryptBlock = function(subkeys, dst, src) {
 58154  		var dst, src, subkeys;
 58155  		cryptBlock(subkeys, dst, src, false);
 58156  	};
 58157  	decryptBlock = function(subkeys, dst, src) {
 58158  		var dst, src, subkeys;
 58159  		cryptBlock(subkeys, dst, src, true);
 58160  	};
 58161  	feistel = function(l, r, k0, k1) {
 58162  		var _tmp, _tmp$1, k0, k1, l, lout, r, rout, t, x, x$1, x$10, x$11, x$12, x$13, x$14, x$15, x$16, x$17, x$18, x$19, x$2, x$20, x$21, x$22, x$23, x$24, x$25, x$26, x$27, x$28, x$29, x$3, x$30, x$31, x$4, x$5, x$6, x$7, x$8, x$9;
 58163  		lout = 0;
 58164  		rout = 0;
 58165  		t = 0;
 58166  		t = (r ^ (($shiftRightUint64(k0, 32).$low >>> 0))) >>> 0;
 58167  		l = (l ^ ((((((((x = feistelBox[7], x$1 = (t & 63) >>> 0, ((x$1 < 0 || x$1 >= x.length) ? ($throwRuntimeError("index out of range"), undefined) : x[x$1])) ^ (x$2 = feistelBox[5], x$3 = (((t >>> 8 >>> 0)) & 63) >>> 0, ((x$3 < 0 || x$3 >= x$2.length) ? ($throwRuntimeError("index out of range"), undefined) : x$2[x$3]))) >>> 0) ^ (x$4 = feistelBox[3], x$5 = (((t >>> 16 >>> 0)) & 63) >>> 0, ((x$5 < 0 || x$5 >= x$4.length) ? ($throwRuntimeError("index out of range"), undefined) : x$4[x$5]))) >>> 0) ^ (x$6 = feistelBox[1], x$7 = (((t >>> 24 >>> 0)) & 63) >>> 0, ((x$7 < 0 || x$7 >= x$6.length) ? ($throwRuntimeError("index out of range"), undefined) : x$6[x$7]))) >>> 0))) >>> 0;
 58168  		t = ((((((r << 28 >>> 0)) | ((r >>> 4 >>> 0))) >>> 0)) ^ ((k0.$low >>> 0))) >>> 0;
 58169  		l = (l ^ ((((((((x$8 = feistelBox[6], x$9 = ((t) & 63) >>> 0, ((x$9 < 0 || x$9 >= x$8.length) ? ($throwRuntimeError("index out of range"), undefined) : x$8[x$9])) ^ (x$10 = feistelBox[4], x$11 = (((t >>> 8 >>> 0)) & 63) >>> 0, ((x$11 < 0 || x$11 >= x$10.length) ? ($throwRuntimeError("index out of range"), undefined) : x$10[x$11]))) >>> 0) ^ (x$12 = feistelBox[2], x$13 = (((t >>> 16 >>> 0)) & 63) >>> 0, ((x$13 < 0 || x$13 >= x$12.length) ? ($throwRuntimeError("index out of range"), undefined) : x$12[x$13]))) >>> 0) ^ (x$14 = feistelBox[0], x$15 = (((t >>> 24 >>> 0)) & 63) >>> 0, ((x$15 < 0 || x$15 >= x$14.length) ? ($throwRuntimeError("index out of range"), undefined) : x$14[x$15]))) >>> 0))) >>> 0;
 58170  		t = (l ^ (($shiftRightUint64(k1, 32).$low >>> 0))) >>> 0;
 58171  		r = (r ^ ((((((((x$16 = feistelBox[7], x$17 = (t & 63) >>> 0, ((x$17 < 0 || x$17 >= x$16.length) ? ($throwRuntimeError("index out of range"), undefined) : x$16[x$17])) ^ (x$18 = feistelBox[5], x$19 = (((t >>> 8 >>> 0)) & 63) >>> 0, ((x$19 < 0 || x$19 >= x$18.length) ? ($throwRuntimeError("index out of range"), undefined) : x$18[x$19]))) >>> 0) ^ (x$20 = feistelBox[3], x$21 = (((t >>> 16 >>> 0)) & 63) >>> 0, ((x$21 < 0 || x$21 >= x$20.length) ? ($throwRuntimeError("index out of range"), undefined) : x$20[x$21]))) >>> 0) ^ (x$22 = feistelBox[1], x$23 = (((t >>> 24 >>> 0)) & 63) >>> 0, ((x$23 < 0 || x$23 >= x$22.length) ? ($throwRuntimeError("index out of range"), undefined) : x$22[x$23]))) >>> 0))) >>> 0;
 58172  		t = ((((((l << 28 >>> 0)) | ((l >>> 4 >>> 0))) >>> 0)) ^ ((k1.$low >>> 0))) >>> 0;
 58173  		r = (r ^ ((((((((x$24 = feistelBox[6], x$25 = ((t) & 63) >>> 0, ((x$25 < 0 || x$25 >= x$24.length) ? ($throwRuntimeError("index out of range"), undefined) : x$24[x$25])) ^ (x$26 = feistelBox[4], x$27 = (((t >>> 8 >>> 0)) & 63) >>> 0, ((x$27 < 0 || x$27 >= x$26.length) ? ($throwRuntimeError("index out of range"), undefined) : x$26[x$27]))) >>> 0) ^ (x$28 = feistelBox[2], x$29 = (((t >>> 16 >>> 0)) & 63) >>> 0, ((x$29 < 0 || x$29 >= x$28.length) ? ($throwRuntimeError("index out of range"), undefined) : x$28[x$29]))) >>> 0) ^ (x$30 = feistelBox[0], x$31 = (((t >>> 24 >>> 0)) & 63) >>> 0, ((x$31 < 0 || x$31 >= x$30.length) ? ($throwRuntimeError("index out of range"), undefined) : x$30[x$31]))) >>> 0))) >>> 0;
 58174  		_tmp = l;
 58175  		_tmp$1 = r;
 58176  		lout = _tmp;
 58177  		rout = _tmp$1;
 58178  		return [lout, rout];
 58179  	};
 58180  	permuteBlock = function(src, permutation) {
 58181  		var _i, _ref, bit, block, n, permutation, position, src, x, x$1;
 58182  		block = new $Uint64(0, 0);
 58183  		_ref = permutation;
 58184  		_i = 0;
 58185  		while (true) {
 58186  			if (!(_i < _ref.$length)) { break; }
 58187  			position = _i;
 58188  			n = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
 58189  			bit = (x = $shiftRightUint64(src, n), new $Uint64(x.$high & 0, (x.$low & 1) >>> 0));
 58190  			block = (x$1 = $shiftLeft64(bit, (((((permutation.$length - 1 >> 0)) - position >> 0) >>> 0))), new $Uint64(block.$high | x$1.$high, (block.$low | x$1.$low) >>> 0));
 58191  			_i++;
 58192  		}
 58193  		return block;
 58194  	};
 58195  	init = function() {
 58196  		var _i, _ref, col, f, i, j, row, s, t, x, x$1, x$2, x$3, x$4;
 58197  		_ref = sBoxes;
 58198  		_i = 0;
 58199  		while (true) {
 58200  			if (!(_i < 8)) { break; }
 58201  			s = _i;
 58202  			i = 0;
 58203  			while (true) {
 58204  				if (!(i < 4)) { break; }
 58205  				j = 0;
 58206  				while (true) {
 58207  					if (!(j < 16)) { break; }
 58208  					f = $shiftLeft64((new $Uint64(0, (x = (x$1 = ((s < 0 || s >= sBoxes.length) ? ($throwRuntimeError("index out of range"), undefined) : sBoxes[s]), ((i < 0 || i >= x$1.length) ? ($throwRuntimeError("index out of range"), undefined) : x$1[i])), ((j < 0 || j >= x.length) ? ($throwRuntimeError("index out of range"), undefined) : x[j])))), ((4 * ((7 - ((s >>> 0)) >>> 0)) >>> 0)));
 58209  					f = permuteBlock(f, new sliceType(permutationFunction));
 58210  					row = (((((((i & 2)) << 4 >> 0)) | (i & 1)) << 24 >>> 24));
 58211  					col = (((j << 1 >> 0) << 24 >>> 24));
 58212  					t = (row | col) >>> 0;
 58213  					f = (x$2 = $shiftLeft64(f, 1), x$3 = $shiftRightUint64(f, 31), new $Uint64(x$2.$high | x$3.$high, (x$2.$low | x$3.$low) >>> 0));
 58214  					(x$4 = ((s < 0 || s >= feistelBox.length) ? ($throwRuntimeError("index out of range"), undefined) : feistelBox[s]), ((t < 0 || t >= x$4.length) ? ($throwRuntimeError("index out of range"), undefined) : x$4[t] = ((f.$low >>> 0))));
 58215  					j = j + (1) >> 0;
 58216  				}
 58217  				i = i + (1) >> 0;
 58218  			}
 58219  			_i++;
 58220  		}
 58221  	};
 58222  	permuteInitialBlock = function(block) {
 58223  		var b1, b2, block, x, x$1, x$10, x$11, x$12, x$13, x$14, x$15, x$16, x$17, x$18, x$19, x$2, x$20, x$21, x$22, x$23, x$24, x$25, x$3, x$4, x$5, x$6, x$7, x$8, x$9;
 58224  		b1 = $shiftRightUint64(block, 48);
 58225  		b2 = $shiftLeft64(block, 48);
 58226  		block = (x = (x$1 = (x$2 = new $Uint64(b1.$high ^ b2.$high, (b1.$low ^ b2.$low) >>> 0), x$3 = $shiftLeft64(b1, 48), new $Uint64(x$2.$high ^ x$3.$high, (x$2.$low ^ x$3.$low) >>> 0)), x$4 = $shiftRightUint64(b2, 48), new $Uint64(x$1.$high ^ x$4.$high, (x$1.$low ^ x$4.$low) >>> 0)), new $Uint64(block.$high ^ x.$high, (block.$low ^ x.$low) >>> 0));
 58227  		b1 = (x$5 = $shiftRightUint64(block, 32), new $Uint64(x$5.$high & 0, (x$5.$low & 16711935) >>> 0));
 58228  		b2 = new $Uint64(block.$high & 0, (block.$low & 4278255360) >>> 0);
 58229  		block = (x$6 = (x$7 = (x$8 = (x$9 = $shiftLeft64(b1, 32), new $Uint64(x$9.$high ^ b2.$high, (x$9.$low ^ b2.$low) >>> 0)), x$10 = $shiftLeft64(b1, 8), new $Uint64(x$8.$high ^ x$10.$high, (x$8.$low ^ x$10.$low) >>> 0)), x$11 = $shiftLeft64(b2, 24), new $Uint64(x$7.$high ^ x$11.$high, (x$7.$low ^ x$11.$low) >>> 0)), new $Uint64(block.$high ^ x$6.$high, (block.$low ^ x$6.$low) >>> 0));
 58230  		b1 = new $Uint64(block.$high & 252641280, (block.$low & 252641280) >>> 0);
 58231  		b2 = new $Uint64(block.$high & 61680, (block.$low & 61680) >>> 0);
 58232  		block = (x$12 = (x$13 = (x$14 = new $Uint64(b1.$high ^ b2.$high, (b1.$low ^ b2.$low) >>> 0), x$15 = $shiftRightUint64(b1, 12), new $Uint64(x$14.$high ^ x$15.$high, (x$14.$low ^ x$15.$low) >>> 0)), x$16 = $shiftLeft64(b2, 12), new $Uint64(x$13.$high ^ x$16.$high, (x$13.$low ^ x$16.$low) >>> 0)), new $Uint64(block.$high ^ x$12.$high, (block.$low ^ x$12.$low) >>> 0));
 58233  		b1 = new $Uint64(block.$high & 855651072, (block.$low & 855651072) >>> 0);
 58234  		b2 = new $Uint64(block.$high & 13369548, (block.$low & 13369548) >>> 0);
 58235  		block = (x$17 = (x$18 = (x$19 = new $Uint64(b1.$high ^ b2.$high, (b1.$low ^ b2.$low) >>> 0), x$20 = $shiftRightUint64(b1, 6), new $Uint64(x$19.$high ^ x$20.$high, (x$19.$low ^ x$20.$low) >>> 0)), x$21 = $shiftLeft64(b2, 6), new $Uint64(x$18.$high ^ x$21.$high, (x$18.$low ^ x$21.$low) >>> 0)), new $Uint64(block.$high ^ x$17.$high, (block.$low ^ x$17.$low) >>> 0));
 58236  		b1 = new $Uint64(block.$high & 2863311530, (block.$low & 1431655765) >>> 0);
 58237  		block = (x$22 = (x$23 = (x$24 = $shiftRightUint64(b1, 33), new $Uint64(b1.$high ^ x$24.$high, (b1.$low ^ x$24.$low) >>> 0)), x$25 = $shiftLeft64(b1, 33), new $Uint64(x$23.$high ^ x$25.$high, (x$23.$low ^ x$25.$low) >>> 0)), new $Uint64(block.$high ^ x$22.$high, (block.$low ^ x$22.$low) >>> 0));
 58238  		return block;
 58239  	};
 58240  	permuteFinalBlock = function(block) {
 58241  		var b1, b2, block, x, x$1, x$10, x$11, x$12, x$13, x$14, x$15, x$16, x$17, x$18, x$19, x$2, x$20, x$21, x$22, x$23, x$24, x$25, x$3, x$4, x$5, x$6, x$7, x$8, x$9;
 58242  		b1 = new $Uint64(block.$high & 2863311530, (block.$low & 1431655765) >>> 0);
 58243  		block = (x = (x$1 = (x$2 = $shiftRightUint64(b1, 33), new $Uint64(b1.$high ^ x$2.$high, (b1.$low ^ x$2.$low) >>> 0)), x$3 = $shiftLeft64(b1, 33), new $Uint64(x$1.$high ^ x$3.$high, (x$1.$low ^ x$3.$low) >>> 0)), new $Uint64(block.$high ^ x.$high, (block.$low ^ x.$low) >>> 0));
 58244  		b1 = new $Uint64(block.$high & 855651072, (block.$low & 855651072) >>> 0);
 58245  		b2 = new $Uint64(block.$high & 13369548, (block.$low & 13369548) >>> 0);
 58246  		block = (x$4 = (x$5 = (x$6 = new $Uint64(b1.$high ^ b2.$high, (b1.$low ^ b2.$low) >>> 0), x$7 = $shiftRightUint64(b1, 6), new $Uint64(x$6.$high ^ x$7.$high, (x$6.$low ^ x$7.$low) >>> 0)), x$8 = $shiftLeft64(b2, 6), new $Uint64(x$5.$high ^ x$8.$high, (x$5.$low ^ x$8.$low) >>> 0)), new $Uint64(block.$high ^ x$4.$high, (block.$low ^ x$4.$low) >>> 0));
 58247  		b1 = new $Uint64(block.$high & 252641280, (block.$low & 252641280) >>> 0);
 58248  		b2 = new $Uint64(block.$high & 61680, (block.$low & 61680) >>> 0);
 58249  		block = (x$9 = (x$10 = (x$11 = new $Uint64(b1.$high ^ b2.$high, (b1.$low ^ b2.$low) >>> 0), x$12 = $shiftRightUint64(b1, 12), new $Uint64(x$11.$high ^ x$12.$high, (x$11.$low ^ x$12.$low) >>> 0)), x$13 = $shiftLeft64(b2, 12), new $Uint64(x$10.$high ^ x$13.$high, (x$10.$low ^ x$13.$low) >>> 0)), new $Uint64(block.$high ^ x$9.$high, (block.$low ^ x$9.$low) >>> 0));
 58250  		b1 = (x$14 = $shiftRightUint64(block, 32), new $Uint64(x$14.$high & 0, (x$14.$low & 16711935) >>> 0));
 58251  		b2 = new $Uint64(block.$high & 0, (block.$low & 4278255360) >>> 0);
 58252  		block = (x$15 = (x$16 = (x$17 = (x$18 = $shiftLeft64(b1, 32), new $Uint64(x$18.$high ^ b2.$high, (x$18.$low ^ b2.$low) >>> 0)), x$19 = $shiftLeft64(b1, 8), new $Uint64(x$17.$high ^ x$19.$high, (x$17.$low ^ x$19.$low) >>> 0)), x$20 = $shiftLeft64(b2, 24), new $Uint64(x$16.$high ^ x$20.$high, (x$16.$low ^ x$20.$low) >>> 0)), new $Uint64(block.$high ^ x$15.$high, (block.$low ^ x$15.$low) >>> 0));
 58253  		b1 = $shiftRightUint64(block, 48);
 58254  		b2 = $shiftLeft64(block, 48);
 58255  		block = (x$21 = (x$22 = (x$23 = new $Uint64(b1.$high ^ b2.$high, (b1.$low ^ b2.$low) >>> 0), x$24 = $shiftLeft64(b1, 48), new $Uint64(x$23.$high ^ x$24.$high, (x$23.$low ^ x$24.$low) >>> 0)), x$25 = $shiftRightUint64(b2, 48), new $Uint64(x$22.$high ^ x$25.$high, (x$22.$low ^ x$25.$low) >>> 0)), new $Uint64(block.$high ^ x$21.$high, (block.$low ^ x$21.$low) >>> 0));
 58256  		return block;
 58257  	};
 58258  	ksRotate = function(in$1) {
 58259  		var i, in$1, last, left, out, right, y, y$1;
 58260  		out = sliceType$1.nil;
 58261  		out = $makeSlice(sliceType$1, 16);
 58262  		last = in$1;
 58263  		i = 0;
 58264  		while (true) {
 58265  			if (!(i < 16)) { break; }
 58266  			left = (((y = ((4 + ((i < 0 || i >= ksRotations.length) ? ($throwRuntimeError("index out of range"), undefined) : ksRotations[i]) << 24 >>> 24)), y < 32 ? (last << y) : 0) >>> 0)) >>> 4 >>> 0;
 58267  			right = (y$1 = ((32 - ((i < 0 || i >= ksRotations.length) ? ($throwRuntimeError("index out of range"), undefined) : ksRotations[i]) << 24 >>> 24)), y$1 < 32 ? (((last << 4 >>> 0)) >>> y$1) : 0) >>> 0;
 58268  			((i < 0 || i >= out.$length) ? ($throwRuntimeError("index out of range"), undefined) : out.$array[out.$offset + i] = ((left | right) >>> 0));
 58269  			last = ((i < 0 || i >= out.$length) ? ($throwRuntimeError("index out of range"), undefined) : out.$array[out.$offset + i]);
 58270  			i = i + (1) >> 0;
 58271  		}
 58272  		return out;
 58273  	};
 58274  	desCipher.ptr.prototype.generateSubkeys = function(keyBytes) {
 58275  		var c, i, key, keyBytes, leftRotations, pc2Input, permutedKey, rightRotations, x, x$1, x$2;
 58276  		c = this;
 58277  		key = $clone(binary.BigEndian, binary.bigEndian).Uint64(keyBytes);
 58278  		permutedKey = permuteBlock(key, new sliceType(permutedChoice1));
 58279  		leftRotations = ksRotate((($shiftRightUint64(permutedKey, 28).$low >>> 0)));
 58280  		rightRotations = ksRotate((($shiftLeft64(permutedKey, 4).$low >>> 0)) >>> 4 >>> 0);
 58281  		i = 0;
 58282  		while (true) {
 58283  			if (!(i < 16)) { break; }
 58284  			pc2Input = (x = $shiftLeft64((new $Uint64(0, ((i < 0 || i >= leftRotations.$length) ? ($throwRuntimeError("index out of range"), undefined) : leftRotations.$array[leftRotations.$offset + i]))), 28), x$1 = (new $Uint64(0, ((i < 0 || i >= rightRotations.$length) ? ($throwRuntimeError("index out of range"), undefined) : rightRotations.$array[rightRotations.$offset + i]))), new $Uint64(x.$high | x$1.$high, (x.$low | x$1.$low) >>> 0));
 58285  			(x$2 = c.subkeys, ((i < 0 || i >= x$2.length) ? ($throwRuntimeError("index out of range"), undefined) : x$2[i] = unpack(permuteBlock(pc2Input, new sliceType(permutedChoice2)))));
 58286  			i = i + (1) >> 0;
 58287  		}
 58288  	};
 58289  	desCipher.prototype.generateSubkeys = function(keyBytes) { return this.$val.generateSubkeys(keyBytes); };
 58290  	unpack = function(x) {
 58291  		var result, x, x$1, x$10, x$11, x$12, x$13, x$14, x$15, x$16, x$17, x$18, x$19, x$2, x$20, x$21, x$22, x$3, x$4, x$5, x$6, x$7, x$8, x$9;
 58292  		result = new $Uint64(0, 0);
 58293  		result = (x$1 = (x$2 = (x$3 = (x$4 = (x$5 = (x$6 = (x$7 = $shiftLeft64(((x$8 = $shiftRightUint64(x, 6), new $Uint64(x$8.$high & 0, (x$8.$low & 255) >>> 0))), 0), x$9 = $shiftLeft64(((x$10 = $shiftRightUint64(x, 18), new $Uint64(x$10.$high & 0, (x$10.$low & 255) >>> 0))), 8), new $Uint64(x$7.$high | x$9.$high, (x$7.$low | x$9.$low) >>> 0)), x$11 = $shiftLeft64(((x$12 = $shiftRightUint64(x, 30), new $Uint64(x$12.$high & 0, (x$12.$low & 255) >>> 0))), 16), new $Uint64(x$6.$high | x$11.$high, (x$6.$low | x$11.$low) >>> 0)), x$13 = $shiftLeft64(((x$14 = $shiftRightUint64(x, 42), new $Uint64(x$14.$high & 0, (x$14.$low & 255) >>> 0))), 24), new $Uint64(x$5.$high | x$13.$high, (x$5.$low | x$13.$low) >>> 0)), x$15 = $shiftLeft64(((x$16 = $shiftRightUint64(x, 0), new $Uint64(x$16.$high & 0, (x$16.$low & 255) >>> 0))), 32), new $Uint64(x$4.$high | x$15.$high, (x$4.$low | x$15.$low) >>> 0)), x$17 = $shiftLeft64(((x$18 = $shiftRightUint64(x, 12), new $Uint64(x$18.$high & 0, (x$18.$low & 255) >>> 0))), 40), new $Uint64(x$3.$high | x$17.$high, (x$3.$low | x$17.$low) >>> 0)), x$19 = $shiftLeft64(((x$20 = $shiftRightUint64(x, 24), new $Uint64(x$20.$high & 0, (x$20.$low & 255) >>> 0))), 48), new $Uint64(x$2.$high | x$19.$high, (x$2.$low | x$19.$low) >>> 0)), x$21 = $shiftLeft64(((x$22 = $shiftRightUint64(x, 36), new $Uint64(x$22.$high & 0, (x$22.$low & 255) >>> 0))), 56), new $Uint64(x$1.$high | x$21.$high, (x$1.$low | x$21.$low) >>> 0));
 58294  		return result;
 58295  	};
 58296  	KeySizeError.prototype.Error = function() {
 58297  		var k;
 58298  		k = this.$val;
 58299  		return "crypto/des: invalid key size " + strconv.Itoa(((k >> 0)));
 58300  	};
 58301  	$ptrType(KeySizeError).prototype.Error = function() { return new KeySizeError(this.$get()).Error(); };
 58302  	desCipher.ptr.prototype.BlockSize = function() {
 58303  		var c;
 58304  		c = this;
 58305  		return 8;
 58306  	};
 58307  	desCipher.prototype.BlockSize = function() { return this.$val.BlockSize(); };
 58308  	desCipher.ptr.prototype.Encrypt = function(dst, src) {
 58309  		var c, dst, src;
 58310  		c = this;
 58311  		encryptBlock(new sliceType$2(c.subkeys), dst, src);
 58312  	};
 58313  	desCipher.prototype.Encrypt = function(dst, src) { return this.$val.Encrypt(dst, src); };
 58314  	desCipher.ptr.prototype.Decrypt = function(dst, src) {
 58315  		var c, dst, src;
 58316  		c = this;
 58317  		decryptBlock(new sliceType$2(c.subkeys), dst, src);
 58318  	};
 58319  	desCipher.prototype.Decrypt = function(dst, src) { return this.$val.Decrypt(dst, src); };
 58320  	NewTripleDESCipher = function(key) {
 58321  		var c, key;
 58322  		if (!((key.$length === 24))) {
 58323  			return [$ifaceNil, new KeySizeError(((key.$length >> 0)))];
 58324  		}
 58325  		c = new tripleDESCipher.ptr(new desCipher.ptr(arrayType$4.zero()), new desCipher.ptr(arrayType$4.zero()), new desCipher.ptr(arrayType$4.zero()));
 58326  		c.cipher1.generateSubkeys($subslice(key, 0, 8));
 58327  		c.cipher2.generateSubkeys($subslice(key, 8, 16));
 58328  		c.cipher3.generateSubkeys($subslice(key, 16));
 58329  		return [c, $ifaceNil];
 58330  	};
 58331  	$pkg.NewTripleDESCipher = NewTripleDESCipher;
 58332  	tripleDESCipher.ptr.prototype.BlockSize = function() {
 58333  		var c;
 58334  		c = this;
 58335  		return 8;
 58336  	};
 58337  	tripleDESCipher.prototype.BlockSize = function() { return this.$val.BlockSize(); };
 58338  	tripleDESCipher.ptr.prototype.Encrypt = function(dst, src) {
 58339  		var _tmp, _tmp$1, _tuple, _tuple$1, _tuple$2, b, c, dst, i, i$1, i$2, left, preOutput, right, src, x, x$1, x$10, x$11, x$12, x$13, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9;
 58340  		c = this;
 58341  		b = $clone(binary.BigEndian, binary.bigEndian).Uint64(src);
 58342  		b = permuteInitialBlock(b);
 58343  		_tmp = (($shiftRightUint64(b, 32).$low >>> 0));
 58344  		_tmp$1 = ((b.$low >>> 0));
 58345  		left = _tmp;
 58346  		right = _tmp$1;
 58347  		left = (((left << 1 >>> 0)) | ((left >>> 31 >>> 0))) >>> 0;
 58348  		right = (((right << 1 >>> 0)) | ((right >>> 31 >>> 0))) >>> 0;
 58349  		i = 0;
 58350  		while (true) {
 58351  			if (!(i < 8)) { break; }
 58352  			_tuple = feistel(left, right, (x = c.cipher1.subkeys, x$1 = $imul(2, i), ((x$1 < 0 || x$1 >= x.length) ? ($throwRuntimeError("index out of range"), undefined) : x[x$1])), (x$2 = c.cipher1.subkeys, x$3 = ($imul(2, i)) + 1 >> 0, ((x$3 < 0 || x$3 >= x$2.length) ? ($throwRuntimeError("index out of range"), undefined) : x$2[x$3])));
 58353  			left = _tuple[0];
 58354  			right = _tuple[1];
 58355  			i = i + (1) >> 0;
 58356  		}
 58357  		i$1 = 0;
 58358  		while (true) {
 58359  			if (!(i$1 < 8)) { break; }
 58360  			_tuple$1 = feistel(right, left, (x$4 = c.cipher2.subkeys, x$5 = 15 - ($imul(2, i$1)) >> 0, ((x$5 < 0 || x$5 >= x$4.length) ? ($throwRuntimeError("index out of range"), undefined) : x$4[x$5])), (x$6 = c.cipher2.subkeys, x$7 = 15 - ((($imul(2, i$1)) + 1 >> 0)) >> 0, ((x$7 < 0 || x$7 >= x$6.length) ? ($throwRuntimeError("index out of range"), undefined) : x$6[x$7])));
 58361  			right = _tuple$1[0];
 58362  			left = _tuple$1[1];
 58363  			i$1 = i$1 + (1) >> 0;
 58364  		}
 58365  		i$2 = 0;
 58366  		while (true) {
 58367  			if (!(i$2 < 8)) { break; }
 58368  			_tuple$2 = feistel(left, right, (x$8 = c.cipher3.subkeys, x$9 = $imul(2, i$2), ((x$9 < 0 || x$9 >= x$8.length) ? ($throwRuntimeError("index out of range"), undefined) : x$8[x$9])), (x$10 = c.cipher3.subkeys, x$11 = ($imul(2, i$2)) + 1 >> 0, ((x$11 < 0 || x$11 >= x$10.length) ? ($throwRuntimeError("index out of range"), undefined) : x$10[x$11])));
 58369  			left = _tuple$2[0];
 58370  			right = _tuple$2[1];
 58371  			i$2 = i$2 + (1) >> 0;
 58372  		}
 58373  		left = (((left << 31 >>> 0)) | ((left >>> 1 >>> 0))) >>> 0;
 58374  		right = (((right << 31 >>> 0)) | ((right >>> 1 >>> 0))) >>> 0;
 58375  		preOutput = (x$12 = $shiftLeft64((new $Uint64(0, right)), 32), x$13 = (new $Uint64(0, left)), new $Uint64(x$12.$high | x$13.$high, (x$12.$low | x$13.$low) >>> 0));
 58376  		$clone(binary.BigEndian, binary.bigEndian).PutUint64(dst, permuteFinalBlock(preOutput));
 58377  	};
 58378  	tripleDESCipher.prototype.Encrypt = function(dst, src) { return this.$val.Encrypt(dst, src); };
 58379  	tripleDESCipher.ptr.prototype.Decrypt = function(dst, src) {
 58380  		var _tmp, _tmp$1, _tuple, _tuple$1, _tuple$2, b, c, dst, i, i$1, i$2, left, preOutput, right, src, x, x$1, x$10, x$11, x$12, x$13, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9;
 58381  		c = this;
 58382  		b = $clone(binary.BigEndian, binary.bigEndian).Uint64(src);
 58383  		b = permuteInitialBlock(b);
 58384  		_tmp = (($shiftRightUint64(b, 32).$low >>> 0));
 58385  		_tmp$1 = ((b.$low >>> 0));
 58386  		left = _tmp;
 58387  		right = _tmp$1;
 58388  		left = (((left << 1 >>> 0)) | ((left >>> 31 >>> 0))) >>> 0;
 58389  		right = (((right << 1 >>> 0)) | ((right >>> 31 >>> 0))) >>> 0;
 58390  		i = 0;
 58391  		while (true) {
 58392  			if (!(i < 8)) { break; }
 58393  			_tuple = feistel(left, right, (x = c.cipher3.subkeys, x$1 = 15 - ($imul(2, i)) >> 0, ((x$1 < 0 || x$1 >= x.length) ? ($throwRuntimeError("index out of range"), undefined) : x[x$1])), (x$2 = c.cipher3.subkeys, x$3 = 15 - ((($imul(2, i)) + 1 >> 0)) >> 0, ((x$3 < 0 || x$3 >= x$2.length) ? ($throwRuntimeError("index out of range"), undefined) : x$2[x$3])));
 58394  			left = _tuple[0];
 58395  			right = _tuple[1];
 58396  			i = i + (1) >> 0;
 58397  		}
 58398  		i$1 = 0;
 58399  		while (true) {
 58400  			if (!(i$1 < 8)) { break; }
 58401  			_tuple$1 = feistel(right, left, (x$4 = c.cipher2.subkeys, x$5 = $imul(2, i$1), ((x$5 < 0 || x$5 >= x$4.length) ? ($throwRuntimeError("index out of range"), undefined) : x$4[x$5])), (x$6 = c.cipher2.subkeys, x$7 = ($imul(2, i$1)) + 1 >> 0, ((x$7 < 0 || x$7 >= x$6.length) ? ($throwRuntimeError("index out of range"), undefined) : x$6[x$7])));
 58402  			right = _tuple$1[0];
 58403  			left = _tuple$1[1];
 58404  			i$1 = i$1 + (1) >> 0;
 58405  		}
 58406  		i$2 = 0;
 58407  		while (true) {
 58408  			if (!(i$2 < 8)) { break; }
 58409  			_tuple$2 = feistel(left, right, (x$8 = c.cipher1.subkeys, x$9 = 15 - ($imul(2, i$2)) >> 0, ((x$9 < 0 || x$9 >= x$8.length) ? ($throwRuntimeError("index out of range"), undefined) : x$8[x$9])), (x$10 = c.cipher1.subkeys, x$11 = 15 - ((($imul(2, i$2)) + 1 >> 0)) >> 0, ((x$11 < 0 || x$11 >= x$10.length) ? ($throwRuntimeError("index out of range"), undefined) : x$10[x$11])));
 58410  			left = _tuple$2[0];
 58411  			right = _tuple$2[1];
 58412  			i$2 = i$2 + (1) >> 0;
 58413  		}
 58414  		left = (((left << 31 >>> 0)) | ((left >>> 1 >>> 0))) >>> 0;
 58415  		right = (((right << 31 >>> 0)) | ((right >>> 1 >>> 0))) >>> 0;
 58416  		preOutput = (x$12 = $shiftLeft64((new $Uint64(0, right)), 32), x$13 = (new $Uint64(0, left)), new $Uint64(x$12.$high | x$13.$high, (x$12.$low | x$13.$low) >>> 0));
 58417  		$clone(binary.BigEndian, binary.bigEndian).PutUint64(dst, permuteFinalBlock(preOutput));
 58418  	};
 58419  	tripleDESCipher.prototype.Decrypt = function(dst, src) { return this.$val.Decrypt(dst, src); };
 58420  	KeySizeError.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}];
 58421  	ptrType.methods = [{prop: "generateSubkeys", name: "generateSubkeys", pkg: "crypto/des", typ: $funcType([sliceType], [], false)}, {prop: "BlockSize", name: "BlockSize", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Encrypt", name: "Encrypt", pkg: "", typ: $funcType([sliceType, sliceType], [], false)}, {prop: "Decrypt", name: "Decrypt", pkg: "", typ: $funcType([sliceType, sliceType], [], false)}];
 58422  	ptrType$1.methods = [{prop: "BlockSize", name: "BlockSize", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Encrypt", name: "Encrypt", pkg: "", typ: $funcType([sliceType, sliceType], [], false)}, {prop: "Decrypt", name: "Decrypt", pkg: "", typ: $funcType([sliceType, sliceType], [], false)}];
 58423  	desCipher.init("crypto/des", [{prop: "subkeys", name: "subkeys", anonymous: false, exported: false, typ: arrayType$4, tag: ""}]);
 58424  	tripleDESCipher.init("crypto/des", [{prop: "cipher1", name: "cipher1", anonymous: false, exported: false, typ: desCipher, tag: ""}, {prop: "cipher2", name: "cipher2", anonymous: false, exported: false, typ: desCipher, tag: ""}, {prop: "cipher3", name: "cipher3", anonymous: false, exported: false, typ: desCipher, tag: ""}]);
 58425  	$init = function() {
 58426  		$pkg.$init = function() {};
 58427  		/* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 58428  		$r = cipher.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 58429  		$r = binary.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 58430  		$r = strconv.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 58431  		feistelBox = arrayType$1.zero();
 58432  		permutationFunction = $toNativeArray($kindUint8, [16, 25, 12, 11, 3, 20, 4, 15, 31, 17, 9, 6, 27, 14, 1, 22, 30, 24, 8, 18, 0, 5, 29, 23, 13, 19, 2, 26, 10, 21, 28, 7]);
 58433  		permutedChoice1 = $toNativeArray($kindUint8, [7, 15, 23, 31, 39, 47, 55, 63, 6, 14, 22, 30, 38, 46, 54, 62, 5, 13, 21, 29, 37, 45, 53, 61, 4, 12, 20, 28, 1, 9, 17, 25, 33, 41, 49, 57, 2, 10, 18, 26, 34, 42, 50, 58, 3, 11, 19, 27, 35, 43, 51, 59, 36, 44, 52, 60]);
 58434  		permutedChoice2 = $toNativeArray($kindUint8, [42, 39, 45, 32, 55, 51, 53, 28, 41, 50, 35, 46, 33, 37, 44, 52, 30, 48, 40, 49, 29, 36, 43, 54, 15, 4, 25, 19, 9, 1, 26, 16, 5, 11, 23, 8, 12, 7, 17, 0, 22, 3, 10, 14, 6, 20, 27, 24]);
 58435  		sBoxes = $toNativeArray($kindArray, [$toNativeArray($kindArray, [$toNativeArray($kindUint8, [14, 4, 13, 1, 2, 15, 11, 8, 3, 10, 6, 12, 5, 9, 0, 7]), $toNativeArray($kindUint8, [0, 15, 7, 4, 14, 2, 13, 1, 10, 6, 12, 11, 9, 5, 3, 8]), $toNativeArray($kindUint8, [4, 1, 14, 8, 13, 6, 2, 11, 15, 12, 9, 7, 3, 10, 5, 0]), $toNativeArray($kindUint8, [15, 12, 8, 2, 4, 9, 1, 7, 5, 11, 3, 14, 10, 0, 6, 13])]), $toNativeArray($kindArray, [$toNativeArray($kindUint8, [15, 1, 8, 14, 6, 11, 3, 4, 9, 7, 2, 13, 12, 0, 5, 10]), $toNativeArray($kindUint8, [3, 13, 4, 7, 15, 2, 8, 14, 12, 0, 1, 10, 6, 9, 11, 5]), $toNativeArray($kindUint8, [0, 14, 7, 11, 10, 4, 13, 1, 5, 8, 12, 6, 9, 3, 2, 15]), $toNativeArray($kindUint8, [13, 8, 10, 1, 3, 15, 4, 2, 11, 6, 7, 12, 0, 5, 14, 9])]), $toNativeArray($kindArray, [$toNativeArray($kindUint8, [10, 0, 9, 14, 6, 3, 15, 5, 1, 13, 12, 7, 11, 4, 2, 8]), $toNativeArray($kindUint8, [13, 7, 0, 9, 3, 4, 6, 10, 2, 8, 5, 14, 12, 11, 15, 1]), $toNativeArray($kindUint8, [13, 6, 4, 9, 8, 15, 3, 0, 11, 1, 2, 12, 5, 10, 14, 7]), $toNativeArray($kindUint8, [1, 10, 13, 0, 6, 9, 8, 7, 4, 15, 14, 3, 11, 5, 2, 12])]), $toNativeArray($kindArray, [$toNativeArray($kindUint8, [7, 13, 14, 3, 0, 6, 9, 10, 1, 2, 8, 5, 11, 12, 4, 15]), $toNativeArray($kindUint8, [13, 8, 11, 5, 6, 15, 0, 3, 4, 7, 2, 12, 1, 10, 14, 9]), $toNativeArray($kindUint8, [10, 6, 9, 0, 12, 11, 7, 13, 15, 1, 3, 14, 5, 2, 8, 4]), $toNativeArray($kindUint8, [3, 15, 0, 6, 10, 1, 13, 8, 9, 4, 5, 11, 12, 7, 2, 14])]), $toNativeArray($kindArray, [$toNativeArray($kindUint8, [2, 12, 4, 1, 7, 10, 11, 6, 8, 5, 3, 15, 13, 0, 14, 9]), $toNativeArray($kindUint8, [14, 11, 2, 12, 4, 7, 13, 1, 5, 0, 15, 10, 3, 9, 8, 6]), $toNativeArray($kindUint8, [4, 2, 1, 11, 10, 13, 7, 8, 15, 9, 12, 5, 6, 3, 0, 14]), $toNativeArray($kindUint8, [11, 8, 12, 7, 1, 14, 2, 13, 6, 15, 0, 9, 10, 4, 5, 3])]), $toNativeArray($kindArray, [$toNativeArray($kindUint8, [12, 1, 10, 15, 9, 2, 6, 8, 0, 13, 3, 4, 14, 7, 5, 11]), $toNativeArray($kindUint8, [10, 15, 4, 2, 7, 12, 9, 5, 6, 1, 13, 14, 0, 11, 3, 8]), $toNativeArray($kindUint8, [9, 14, 15, 5, 2, 8, 12, 3, 7, 0, 4, 10, 1, 13, 11, 6]), $toNativeArray($kindUint8, [4, 3, 2, 12, 9, 5, 15, 10, 11, 14, 1, 7, 6, 0, 8, 13])]), $toNativeArray($kindArray, [$toNativeArray($kindUint8, [4, 11, 2, 14, 15, 0, 8, 13, 3, 12, 9, 7, 5, 10, 6, 1]), $toNativeArray($kindUint8, [13, 0, 11, 7, 4, 9, 1, 10, 14, 3, 5, 12, 2, 15, 8, 6]), $toNativeArray($kindUint8, [1, 4, 11, 13, 12, 3, 7, 14, 10, 15, 6, 8, 0, 5, 9, 2]), $toNativeArray($kindUint8, [6, 11, 13, 8, 1, 4, 10, 7, 9, 5, 0, 15, 14, 2, 3, 12])]), $toNativeArray($kindArray, [$toNativeArray($kindUint8, [13, 2, 8, 4, 6, 15, 11, 1, 10, 9, 3, 14, 5, 0, 12, 7]), $toNativeArray($kindUint8, [1, 15, 13, 8, 10, 3, 7, 4, 12, 5, 6, 11, 0, 14, 9, 2]), $toNativeArray($kindUint8, [7, 11, 4, 1, 9, 12, 14, 2, 0, 6, 10, 13, 15, 3, 5, 8]), $toNativeArray($kindUint8, [2, 1, 14, 7, 4, 10, 8, 13, 15, 12, 9, 0, 3, 5, 6, 11])])]);
 58436  		ksRotations = $toNativeArray($kindUint8, [1, 1, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 1]);
 58437  		init();
 58438  		/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
 58439  	};
 58440  	$pkg.$init = $init;
 58441  	return $pkg;
 58442  })();
 58443  $packages["crypto/elliptic"] = (function() {
 58444  	var $pkg = {}, $init, io, big, sync, Curve, CurveParams, p224Curve, p224FieldElement, p256Curve, ptrType, arrayType, ptrType$1, sliceType, sliceType$1, arrayType$1, arrayType$2, arrayType$3, arrayType$4, arrayType$5, arrayType$6, arrayType$7, arrayType$8, mask, initonce, p384, p521, p224, p224P, p224ZeroModP31, p224ZeroModP63, p256Params, p256RInverse, p256One, p256One$24ptr, p256Precomputed, p256Zero31, p256, zForAffine, GenerateKey, Marshal, Unmarshal, initAll, initP384, initP521, P256, P384, P521, initP224, P224, p224IsZero, p224Add, p224Sub, p224Mul, p224Square, p224ReduceLarge, p224Reduce, p224Invert, p224Contract, p224AddJacobian, p224DoubleJacobian, p224CopyConditional, p224ScalarMult, p224ToAffine, get28BitsFromEnd, p224FromBig, p224ToBig, initP256, p256GetScalar, nonZeroToAllOnes, p256ReduceCarry, p256Sum, p256Diff, p256ReduceDegree, p256Square, p256Mul, p256Assign, p256Invert, p256Scalar3, p256Scalar4, p256Scalar8, p256PointDouble, p256PointAddMixed, p256PointAdd, p256CopyConditional, p256SelectAffinePoint, p256SelectJacobianPoint, p256GetBit, p256ScalarBaseMult, p256PointToAffine, p256ToAffine, p256ScalarMult, p256FromBig, p256ToBig, initP256Arch;
 58445  	io = $packages["io"];
 58446  	big = $packages["math/big"];
 58447  	sync = $packages["sync"];
 58448  	Curve = $pkg.Curve = $newType(8, $kindInterface, "elliptic.Curve", true, "crypto/elliptic", true, null);
 58449  	CurveParams = $pkg.CurveParams = $newType(0, $kindStruct, "elliptic.CurveParams", true, "crypto/elliptic", true, function(P_, N_, B_, Gx_, Gy_, BitSize_, Name_) {
 58450  		this.$val = this;
 58451  		if (arguments.length === 0) {
 58452  			this.P = ptrType$1.nil;
 58453  			this.N = ptrType$1.nil;
 58454  			this.B = ptrType$1.nil;
 58455  			this.Gx = ptrType$1.nil;
 58456  			this.Gy = ptrType$1.nil;
 58457  			this.BitSize = 0;
 58458  			this.Name = "";
 58459  			return;
 58460  		}
 58461  		this.P = P_;
 58462  		this.N = N_;
 58463  		this.B = B_;
 58464  		this.Gx = Gx_;
 58465  		this.Gy = Gy_;
 58466  		this.BitSize = BitSize_;
 58467  		this.Name = Name_;
 58468  	});
 58469  	p224Curve = $pkg.p224Curve = $newType(0, $kindStruct, "elliptic.p224Curve", true, "crypto/elliptic", false, function(CurveParams_, gx_, gy_, b_) {
 58470  		this.$val = this;
 58471  		if (arguments.length === 0) {
 58472  			this.CurveParams = ptrType.nil;
 58473  			this.gx = arrayType.zero();
 58474  			this.gy = arrayType.zero();
 58475  			this.b = arrayType.zero();
 58476  			return;
 58477  		}
 58478  		this.CurveParams = CurveParams_;
 58479  		this.gx = gx_;
 58480  		this.gy = gy_;
 58481  		this.b = b_;
 58482  	});
 58483  	p224FieldElement = $pkg.p224FieldElement = $newType(32, $kindArray, "elliptic.p224FieldElement", true, "crypto/elliptic", false, null);
 58484  	p256Curve = $pkg.p256Curve = $newType(0, $kindStruct, "elliptic.p256Curve", true, "crypto/elliptic", false, function(CurveParams_) {
 58485  		this.$val = this;
 58486  		if (arguments.length === 0) {
 58487  			this.CurveParams = ptrType.nil;
 58488  			return;
 58489  		}
 58490  		this.CurveParams = CurveParams_;
 58491  	});
 58492  	ptrType = $ptrType(CurveParams);
 58493  	arrayType = $arrayType($Uint32, 8);
 58494  	ptrType$1 = $ptrType(big.Int);
 58495  	sliceType = $sliceType($Uint8);
 58496  	sliceType$1 = $sliceType($Uint32);
 58497  	arrayType$1 = $arrayType($Uint64, 15);
 58498  	arrayType$2 = $arrayType($Uint8, 28);
 58499  	arrayType$3 = $arrayType($Uint8, 32);
 58500  	arrayType$4 = $arrayType($Uint32, 9);
 58501  	arrayType$5 = $arrayType($Uint32, 18);
 58502  	arrayType$6 = $arrayType($Uint64, 17);
 58503  	arrayType$7 = $arrayType(arrayType$4, 3);
 58504  	arrayType$8 = $arrayType(arrayType$7, 16);
 58505  	CurveParams.ptr.prototype.Params = function() {
 58506  		var curve;
 58507  		curve = this;
 58508  		return curve;
 58509  	};
 58510  	CurveParams.prototype.Params = function() { return this.$val.Params(); };
 58511  	CurveParams.ptr.prototype.IsOnCurve = function(x, y) {
 58512  		var _r, _r$1, curve, threeX, x, x3, y, y2, $s, $r;
 58513  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; curve = $f.curve; threeX = $f.threeX; x = $f.x; x3 = $f.x3; y = $f.y; y2 = $f.y2; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 58514  		curve = this;
 58515  		y2 = new big.Int.ptr(false, big.nat.nil).Mul(y, y);
 58516  		_r = y2.Mod(y2, curve.P); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 58517  		_r;
 58518  		x3 = new big.Int.ptr(false, big.nat.nil).Mul(x, x);
 58519  		x3.Mul(x3, x);
 58520  		threeX = new big.Int.ptr(false, big.nat.nil).Lsh(x, 1);
 58521  		threeX.Add(threeX, x);
 58522  		x3.Sub(x3, threeX);
 58523  		x3.Add(x3, curve.B);
 58524  		_r$1 = x3.Mod(x3, curve.P); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 58525  		_r$1;
 58526  		$s = -1; return x3.Cmp(y2) === 0;
 58527  		/* */ } return; } if ($f === undefined) { $f = { $blk: CurveParams.ptr.prototype.IsOnCurve }; } $f._r = _r; $f._r$1 = _r$1; $f.curve = curve; $f.threeX = threeX; $f.x = x; $f.x3 = x3; $f.y = y; $f.y2 = y2; $f.$s = $s; $f.$r = $r; return $f;
 58528  	};
 58529  	CurveParams.prototype.IsOnCurve = function(x, y) { return this.$val.IsOnCurve(x, y); };
 58530  	zForAffine = function(x, y) {
 58531  		var x, y, z;
 58532  		z = new big.Int.ptr(false, big.nat.nil);
 58533  		if (!((x.Sign() === 0)) || !((y.Sign() === 0))) {
 58534  			z.SetInt64(new $Int64(0, 1));
 58535  		}
 58536  		return z;
 58537  	};
 58538  	CurveParams.ptr.prototype.affineFromJacobian = function(x, y, z) {
 58539  		var _r, _r$1, _r$2, _tmp, _tmp$1, curve, x, xOut, y, yOut, z, zinv, zinvsq, $s, $r;
 58540  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; curve = $f.curve; x = $f.x; xOut = $f.xOut; y = $f.y; yOut = $f.yOut; z = $f.z; zinv = $f.zinv; zinvsq = $f.zinvsq; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 58541  		xOut = ptrType$1.nil;
 58542  		yOut = ptrType$1.nil;
 58543  		curve = this;
 58544  		if (z.Sign() === 0) {
 58545  			_tmp = new big.Int.ptr(false, big.nat.nil);
 58546  			_tmp$1 = new big.Int.ptr(false, big.nat.nil);
 58547  			xOut = _tmp;
 58548  			yOut = _tmp$1;
 58549  			$s = -1; return [xOut, yOut];
 58550  		}
 58551  		_r = new big.Int.ptr(false, big.nat.nil).ModInverse(z, curve.P); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 58552  		zinv = _r;
 58553  		zinvsq = new big.Int.ptr(false, big.nat.nil).Mul(zinv, zinv);
 58554  		xOut = new big.Int.ptr(false, big.nat.nil).Mul(x, zinvsq);
 58555  		_r$1 = xOut.Mod(xOut, curve.P); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 58556  		_r$1;
 58557  		zinvsq.Mul(zinvsq, zinv);
 58558  		yOut = new big.Int.ptr(false, big.nat.nil).Mul(y, zinvsq);
 58559  		_r$2 = yOut.Mod(yOut, curve.P); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 58560  		_r$2;
 58561  		$s = -1; return [xOut, yOut];
 58562  		/* */ } return; } if ($f === undefined) { $f = { $blk: CurveParams.ptr.prototype.affineFromJacobian }; } $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f.curve = curve; $f.x = x; $f.xOut = xOut; $f.y = y; $f.yOut = yOut; $f.z = z; $f.zinv = zinv; $f.zinvsq = zinvsq; $f.$s = $s; $f.$r = $r; return $f;
 58563  	};
 58564  	CurveParams.prototype.affineFromJacobian = function(x, y, z) { return this.$val.affineFromJacobian(x, y, z); };
 58565  	CurveParams.ptr.prototype.Add = function(x1, y1, x2, y2) {
 58566  		var _r, _r$1, _tuple, curve, x1, x2, y1, y2, z1, z2, $s, $r;
 58567  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _tuple = $f._tuple; curve = $f.curve; x1 = $f.x1; x2 = $f.x2; y1 = $f.y1; y2 = $f.y2; z1 = $f.z1; z2 = $f.z2; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 58568  		curve = this;
 58569  		z1 = zForAffine(x1, y1);
 58570  		z2 = zForAffine(x2, y2);
 58571  		_r = curve.addJacobian(x1, y1, z1, x2, y2, z2); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 58572  		_tuple = _r;
 58573  		_r$1 = curve.affineFromJacobian(_tuple[0], _tuple[1], _tuple[2]); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 58574  		$s = -1; return _r$1;
 58575  		/* */ } return; } if ($f === undefined) { $f = { $blk: CurveParams.ptr.prototype.Add }; } $f._r = _r; $f._r$1 = _r$1; $f._tuple = _tuple; $f.curve = curve; $f.x1 = x1; $f.x2 = x2; $f.y1 = y1; $f.y2 = y2; $f.z1 = z1; $f.z2 = z2; $f.$s = $s; $f.$r = $r; return $f;
 58576  	};
 58577  	CurveParams.prototype.Add = function(x1, y1, x2, y2) { return this.$val.Add(x1, y1, x2, y2); };
 58578  	CurveParams.ptr.prototype.addJacobian = function(x1, y1, z1, x2, y2, z2) {
 58579  		var _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _tmp, _tmp$1, _tmp$2, curve, h, i, j, r, s1, s2, u1, u2, v, x1, x2, x3, xEqual, y1, y2, y3, yEqual, z1, z1z1, z2, z2z2, z3, $s, $r;
 58580  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _r$8 = $f._r$8; _r$9 = $f._r$9; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; curve = $f.curve; h = $f.h; i = $f.i; j = $f.j; r = $f.r; s1 = $f.s1; s2 = $f.s2; u1 = $f.u1; u2 = $f.u2; v = $f.v; x1 = $f.x1; x2 = $f.x2; x3 = $f.x3; xEqual = $f.xEqual; y1 = $f.y1; y2 = $f.y2; y3 = $f.y3; yEqual = $f.yEqual; z1 = $f.z1; z1z1 = $f.z1z1; z2 = $f.z2; z2z2 = $f.z2z2; z3 = $f.z3; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 58581  		curve = this;
 58582  		_tmp = new big.Int.ptr(false, big.nat.nil);
 58583  		_tmp$1 = new big.Int.ptr(false, big.nat.nil);
 58584  		_tmp$2 = new big.Int.ptr(false, big.nat.nil);
 58585  		x3 = _tmp;
 58586  		y3 = _tmp$1;
 58587  		z3 = _tmp$2;
 58588  		if (z1.Sign() === 0) {
 58589  			x3.Set(x2);
 58590  			y3.Set(y2);
 58591  			z3.Set(z2);
 58592  			$s = -1; return [x3, y3, z3];
 58593  		}
 58594  		if (z2.Sign() === 0) {
 58595  			x3.Set(x1);
 58596  			y3.Set(y1);
 58597  			z3.Set(z1);
 58598  			$s = -1; return [x3, y3, z3];
 58599  		}
 58600  		z1z1 = new big.Int.ptr(false, big.nat.nil).Mul(z1, z1);
 58601  		_r = z1z1.Mod(z1z1, curve.P); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 58602  		_r;
 58603  		z2z2 = new big.Int.ptr(false, big.nat.nil).Mul(z2, z2);
 58604  		_r$1 = z2z2.Mod(z2z2, curve.P); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 58605  		_r$1;
 58606  		u1 = new big.Int.ptr(false, big.nat.nil).Mul(x1, z2z2);
 58607  		_r$2 = u1.Mod(u1, curve.P); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 58608  		_r$2;
 58609  		u2 = new big.Int.ptr(false, big.nat.nil).Mul(x2, z1z1);
 58610  		_r$3 = u2.Mod(u2, curve.P); /* */ $s = 4; case 4: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 58611  		_r$3;
 58612  		h = new big.Int.ptr(false, big.nat.nil).Sub(u2, u1);
 58613  		xEqual = h.Sign() === 0;
 58614  		if (h.Sign() === -1) {
 58615  			h.Add(h, curve.P);
 58616  		}
 58617  		i = new big.Int.ptr(false, big.nat.nil).Lsh(h, 1);
 58618  		i.Mul(i, i);
 58619  		j = new big.Int.ptr(false, big.nat.nil).Mul(h, i);
 58620  		s1 = new big.Int.ptr(false, big.nat.nil).Mul(y1, z2);
 58621  		s1.Mul(s1, z2z2);
 58622  		_r$4 = s1.Mod(s1, curve.P); /* */ $s = 5; case 5: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 58623  		_r$4;
 58624  		s2 = new big.Int.ptr(false, big.nat.nil).Mul(y2, z1);
 58625  		s2.Mul(s2, z1z1);
 58626  		_r$5 = s2.Mod(s2, curve.P); /* */ $s = 6; case 6: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
 58627  		_r$5;
 58628  		r = new big.Int.ptr(false, big.nat.nil).Sub(s2, s1);
 58629  		if (r.Sign() === -1) {
 58630  			r.Add(r, curve.P);
 58631  		}
 58632  		yEqual = r.Sign() === 0;
 58633  		/* */ if (xEqual && yEqual) { $s = 7; continue; }
 58634  		/* */ $s = 8; continue;
 58635  		/* if (xEqual && yEqual) { */ case 7:
 58636  			_r$6 = curve.doubleJacobian(x1, y1, z1); /* */ $s = 9; case 9: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
 58637  			$s = -1; return _r$6;
 58638  		/* } */ case 8:
 58639  		r.Lsh(r, 1);
 58640  		v = new big.Int.ptr(false, big.nat.nil).Mul(u1, i);
 58641  		x3.Set(r);
 58642  		x3.Mul(x3, x3);
 58643  		x3.Sub(x3, j);
 58644  		x3.Sub(x3, v);
 58645  		x3.Sub(x3, v);
 58646  		_r$7 = x3.Mod(x3, curve.P); /* */ $s = 10; case 10: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
 58647  		_r$7;
 58648  		y3.Set(r);
 58649  		v.Sub(v, x3);
 58650  		y3.Mul(y3, v);
 58651  		s1.Mul(s1, j);
 58652  		s1.Lsh(s1, 1);
 58653  		y3.Sub(y3, s1);
 58654  		_r$8 = y3.Mod(y3, curve.P); /* */ $s = 11; case 11: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
 58655  		_r$8;
 58656  		z3.Add(z1, z2);
 58657  		z3.Mul(z3, z3);
 58658  		z3.Sub(z3, z1z1);
 58659  		z3.Sub(z3, z2z2);
 58660  		z3.Mul(z3, h);
 58661  		_r$9 = z3.Mod(z3, curve.P); /* */ $s = 12; case 12: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 58662  		_r$9;
 58663  		$s = -1; return [x3, y3, z3];
 58664  		/* */ } return; } if ($f === undefined) { $f = { $blk: CurveParams.ptr.prototype.addJacobian }; } $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._r$8 = _r$8; $f._r$9 = _r$9; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f.curve = curve; $f.h = h; $f.i = i; $f.j = j; $f.r = r; $f.s1 = s1; $f.s2 = s2; $f.u1 = u1; $f.u2 = u2; $f.v = v; $f.x1 = x1; $f.x2 = x2; $f.x3 = x3; $f.xEqual = xEqual; $f.y1 = y1; $f.y2 = y2; $f.y3 = y3; $f.yEqual = yEqual; $f.z1 = z1; $f.z1z1 = z1z1; $f.z2 = z2; $f.z2z2 = z2z2; $f.z3 = z3; $f.$s = $s; $f.$r = $r; return $f;
 58665  	};
 58666  	CurveParams.prototype.addJacobian = function(x1, y1, z1, x2, y2, z2) { return this.$val.addJacobian(x1, y1, z1, x2, y2, z2); };
 58667  	CurveParams.ptr.prototype.Double = function(x1, y1) {
 58668  		var _r, _r$1, _tuple, curve, x1, y1, z1, $s, $r;
 58669  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _tuple = $f._tuple; curve = $f.curve; x1 = $f.x1; y1 = $f.y1; z1 = $f.z1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 58670  		curve = this;
 58671  		z1 = zForAffine(x1, y1);
 58672  		_r = curve.doubleJacobian(x1, y1, z1); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 58673  		_tuple = _r;
 58674  		_r$1 = curve.affineFromJacobian(_tuple[0], _tuple[1], _tuple[2]); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 58675  		$s = -1; return _r$1;
 58676  		/* */ } return; } if ($f === undefined) { $f = { $blk: CurveParams.ptr.prototype.Double }; } $f._r = _r; $f._r$1 = _r$1; $f._tuple = _tuple; $f.curve = curve; $f.x1 = x1; $f.y1 = y1; $f.z1 = z1; $f.$s = $s; $f.$r = $r; return $f;
 58677  	};
 58678  	CurveParams.prototype.Double = function(x1, y1) { return this.$val.Double(x1, y1); };
 58679  	CurveParams.ptr.prototype.doubleJacobian = function(x, y, z) {
 58680  		var _r, _r$1, _r$2, _r$3, _r$4, _r$5, alpha, alpha2, beta, beta8, curve, delta, gamma, x, x3, y, y3, z, z3, $s, $r;
 58681  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; alpha = $f.alpha; alpha2 = $f.alpha2; beta = $f.beta; beta8 = $f.beta8; curve = $f.curve; delta = $f.delta; gamma = $f.gamma; x = $f.x; x3 = $f.x3; y = $f.y; y3 = $f.y3; z = $f.z; z3 = $f.z3; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 58682  		curve = this;
 58683  		delta = new big.Int.ptr(false, big.nat.nil).Mul(z, z);
 58684  		_r = delta.Mod(delta, curve.P); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 58685  		_r;
 58686  		gamma = new big.Int.ptr(false, big.nat.nil).Mul(y, y);
 58687  		_r$1 = gamma.Mod(gamma, curve.P); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 58688  		_r$1;
 58689  		alpha = new big.Int.ptr(false, big.nat.nil).Sub(x, delta);
 58690  		if (alpha.Sign() === -1) {
 58691  			alpha.Add(alpha, curve.P);
 58692  		}
 58693  		alpha2 = new big.Int.ptr(false, big.nat.nil).Add(x, delta);
 58694  		alpha.Mul(alpha, alpha2);
 58695  		alpha2.Set(alpha);
 58696  		alpha.Lsh(alpha, 1);
 58697  		alpha.Add(alpha, alpha2);
 58698  		beta = alpha2.Mul(x, gamma);
 58699  		x3 = new big.Int.ptr(false, big.nat.nil).Mul(alpha, alpha);
 58700  		beta8 = new big.Int.ptr(false, big.nat.nil).Lsh(beta, 3);
 58701  		x3.Sub(x3, beta8);
 58702  		while (true) {
 58703  			if (!(x3.Sign() === -1)) { break; }
 58704  			x3.Add(x3, curve.P);
 58705  		}
 58706  		_r$2 = x3.Mod(x3, curve.P); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 58707  		_r$2;
 58708  		z3 = new big.Int.ptr(false, big.nat.nil).Add(y, z);
 58709  		z3.Mul(z3, z3);
 58710  		z3.Sub(z3, gamma);
 58711  		if (z3.Sign() === -1) {
 58712  			z3.Add(z3, curve.P);
 58713  		}
 58714  		z3.Sub(z3, delta);
 58715  		if (z3.Sign() === -1) {
 58716  			z3.Add(z3, curve.P);
 58717  		}
 58718  		_r$3 = z3.Mod(z3, curve.P); /* */ $s = 4; case 4: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 58719  		_r$3;
 58720  		beta.Lsh(beta, 2);
 58721  		beta.Sub(beta, x3);
 58722  		if (beta.Sign() === -1) {
 58723  			beta.Add(beta, curve.P);
 58724  		}
 58725  		y3 = alpha.Mul(alpha, beta);
 58726  		gamma.Mul(gamma, gamma);
 58727  		gamma.Lsh(gamma, 3);
 58728  		_r$4 = gamma.Mod(gamma, curve.P); /* */ $s = 5; case 5: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 58729  		_r$4;
 58730  		y3.Sub(y3, gamma);
 58731  		if (y3.Sign() === -1) {
 58732  			y3.Add(y3, curve.P);
 58733  		}
 58734  		_r$5 = y3.Mod(y3, curve.P); /* */ $s = 6; case 6: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
 58735  		_r$5;
 58736  		$s = -1; return [x3, y3, z3];
 58737  		/* */ } return; } if ($f === undefined) { $f = { $blk: CurveParams.ptr.prototype.doubleJacobian }; } $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f.alpha = alpha; $f.alpha2 = alpha2; $f.beta = beta; $f.beta8 = beta8; $f.curve = curve; $f.delta = delta; $f.gamma = gamma; $f.x = x; $f.x3 = x3; $f.y = y; $f.y3 = y3; $f.z = z; $f.z3 = z3; $f.$s = $s; $f.$r = $r; return $f;
 58738  	};
 58739  	CurveParams.prototype.doubleJacobian = function(x, y, z) { return this.$val.doubleJacobian(x, y, z); };
 58740  	CurveParams.ptr.prototype.ScalarMult = function(Bx, By, k) {
 58741  		var Bx, By, Bz, _i, _r, _r$1, _r$2, _ref, _tmp, _tmp$1, _tmp$2, _tuple, _tuple$1, bitNum, byte$1, curve, k, x, y, y$1, z, $s, $r;
 58742  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; Bx = $f.Bx; By = $f.By; Bz = $f.Bz; _i = $f._i; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _ref = $f._ref; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; bitNum = $f.bitNum; byte$1 = $f.byte$1; curve = $f.curve; k = $f.k; x = $f.x; y = $f.y; y$1 = $f.y$1; z = $f.z; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 58743  		curve = this;
 58744  		Bz = new big.Int.ptr(false, big.nat.nil).SetInt64(new $Int64(0, 1));
 58745  		_tmp = new big.Int.ptr(false, big.nat.nil);
 58746  		_tmp$1 = new big.Int.ptr(false, big.nat.nil);
 58747  		_tmp$2 = new big.Int.ptr(false, big.nat.nil);
 58748  		x = _tmp;
 58749  		y = _tmp$1;
 58750  		z = _tmp$2;
 58751  		_ref = k;
 58752  		_i = 0;
 58753  		/* while (true) { */ case 1:
 58754  			/* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; }
 58755  			byte$1 = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
 58756  			bitNum = 0;
 58757  			/* while (true) { */ case 3:
 58758  				/* if (!(bitNum < 8)) { break; } */ if(!(bitNum < 8)) { $s = 4; continue; }
 58759  				_r = curve.doubleJacobian(x, y, z); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 58760  				_tuple = _r;
 58761  				x = _tuple[0];
 58762  				y = _tuple[1];
 58763  				z = _tuple[2];
 58764  				/* */ if (((byte$1 & 128) >>> 0) === 128) { $s = 6; continue; }
 58765  				/* */ $s = 7; continue;
 58766  				/* if (((byte$1 & 128) >>> 0) === 128) { */ case 6:
 58767  					_r$1 = curve.addJacobian(Bx, By, Bz, x, y, z); /* */ $s = 8; case 8: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 58768  					_tuple$1 = _r$1;
 58769  					x = _tuple$1[0];
 58770  					y = _tuple$1[1];
 58771  					z = _tuple$1[2];
 58772  				/* } */ case 7:
 58773  				byte$1 = (y$1 = (1), y$1 < 32 ? (byte$1 << y$1) : 0) << 24 >>> 24;
 58774  				bitNum = bitNum + (1) >> 0;
 58775  			/* } */ $s = 3; continue; case 4:
 58776  			_i++;
 58777  		/* } */ $s = 1; continue; case 2:
 58778  		_r$2 = curve.affineFromJacobian(x, y, z); /* */ $s = 9; case 9: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 58779  		$s = -1; return _r$2;
 58780  		/* */ } return; } if ($f === undefined) { $f = { $blk: CurveParams.ptr.prototype.ScalarMult }; } $f.Bx = Bx; $f.By = By; $f.Bz = Bz; $f._i = _i; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._ref = _ref; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.bitNum = bitNum; $f.byte$1 = byte$1; $f.curve = curve; $f.k = k; $f.x = x; $f.y = y; $f.y$1 = y$1; $f.z = z; $f.$s = $s; $f.$r = $r; return $f;
 58781  	};
 58782  	CurveParams.prototype.ScalarMult = function(Bx, By, k) { return this.$val.ScalarMult(Bx, By, k); };
 58783  	CurveParams.ptr.prototype.ScalarBaseMult = function(k) {
 58784  		var _r, curve, k, $s, $r;
 58785  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; curve = $f.curve; k = $f.k; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 58786  		curve = this;
 58787  		_r = curve.ScalarMult(curve.Gx, curve.Gy, k); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 58788  		$s = -1; return _r;
 58789  		/* */ } return; } if ($f === undefined) { $f = { $blk: CurveParams.ptr.prototype.ScalarBaseMult }; } $f._r = _r; $f.curve = curve; $f.k = k; $f.$s = $s; $f.$r = $r; return $f;
 58790  	};
 58791  	CurveParams.prototype.ScalarBaseMult = function(k) { return this.$val.ScalarBaseMult(k); };
 58792  	GenerateKey = function(curve, rand) {
 58793  		var N, _r, _r$1, _r$2, _r$3, _tuple, _tuple$1, bitSize, byteLen, curve, err, priv, rand, x, x$1, y, $s, $r;
 58794  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; N = $f.N; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; bitSize = $f.bitSize; byteLen = $f.byteLen; curve = $f.curve; err = $f.err; priv = $f.priv; rand = $f.rand; x = $f.x; x$1 = $f.x$1; y = $f.y; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 58795  		priv = sliceType.nil;
 58796  		x = ptrType$1.nil;
 58797  		y = ptrType$1.nil;
 58798  		err = $ifaceNil;
 58799  		_r = curve.Params(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 58800  		N = _r.N;
 58801  		bitSize = N.BitLen();
 58802  		byteLen = ((bitSize + 7 >> 0)) >> 3 >> 0;
 58803  		priv = $makeSlice(sliceType, byteLen);
 58804  		/* while (true) { */ case 2:
 58805  			/* if (!(x === ptrType$1.nil)) { break; } */ if(!(x === ptrType$1.nil)) { $s = 3; continue; }
 58806  			_r$1 = io.ReadFull(rand, priv); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 58807  			_tuple = _r$1;
 58808  			err = _tuple[1];
 58809  			if (!($interfaceIsEqual(err, $ifaceNil))) {
 58810  				$s = -1; return [priv, x, y, err];
 58811  			}
 58812  			(0 >= priv.$length ? ($throwRuntimeError("index out of range"), undefined) : priv.$array[priv.$offset + 0] = (((0 >= priv.$length ? ($throwRuntimeError("index out of range"), undefined) : priv.$array[priv.$offset + 0]) & ((x$1 = (_r$2 = bitSize % 8, _r$2 === _r$2 ? _r$2 : $throwRuntimeError("integer divide by zero")), ((x$1 < 0 || x$1 >= mask.$length) ? ($throwRuntimeError("index out of range"), undefined) : mask.$array[mask.$offset + x$1])))) >>> 0));
 58813  			(1 >= priv.$length ? ($throwRuntimeError("index out of range"), undefined) : priv.$array[priv.$offset + 1] = (((1 >= priv.$length ? ($throwRuntimeError("index out of range"), undefined) : priv.$array[priv.$offset + 1]) ^ (66)) << 24 >>> 24));
 58814  			/* */ if (new big.Int.ptr(false, big.nat.nil).SetBytes(priv).Cmp(N) >= 0) { $s = 5; continue; }
 58815  			/* */ $s = 6; continue;
 58816  			/* if (new big.Int.ptr(false, big.nat.nil).SetBytes(priv).Cmp(N) >= 0) { */ case 5:
 58817  				/* continue; */ $s = 2; continue;
 58818  			/* } */ case 6:
 58819  			_r$3 = curve.ScalarBaseMult(priv); /* */ $s = 7; case 7: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 58820  			_tuple$1 = _r$3;
 58821  			x = _tuple$1[0];
 58822  			y = _tuple$1[1];
 58823  		/* } */ $s = 2; continue; case 3:
 58824  		$s = -1; return [priv, x, y, err];
 58825  		/* */ } return; } if ($f === undefined) { $f = { $blk: GenerateKey }; } $f.N = N; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.bitSize = bitSize; $f.byteLen = byteLen; $f.curve = curve; $f.err = err; $f.priv = priv; $f.rand = rand; $f.x = x; $f.x$1 = x$1; $f.y = y; $f.$s = $s; $f.$r = $r; return $f;
 58826  	};
 58827  	$pkg.GenerateKey = GenerateKey;
 58828  	Marshal = function(curve, x, y) {
 58829  		var _r, byteLen, curve, ret, x, xBytes, y, yBytes, $s, $r;
 58830  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; byteLen = $f.byteLen; curve = $f.curve; ret = $f.ret; x = $f.x; xBytes = $f.xBytes; y = $f.y; yBytes = $f.yBytes; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 58831  		_r = curve.Params(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 58832  		byteLen = ((_r.BitSize + 7 >> 0)) >> 3 >> 0;
 58833  		ret = $makeSlice(sliceType, (1 + ($imul(2, byteLen)) >> 0));
 58834  		(0 >= ret.$length ? ($throwRuntimeError("index out of range"), undefined) : ret.$array[ret.$offset + 0] = 4);
 58835  		xBytes = x.Bytes();
 58836  		$copySlice($subslice(ret, ((1 + byteLen >> 0) - xBytes.$length >> 0)), xBytes);
 58837  		yBytes = y.Bytes();
 58838  		$copySlice($subslice(ret, ((1 + ($imul(2, byteLen)) >> 0) - yBytes.$length >> 0)), yBytes);
 58839  		$s = -1; return ret;
 58840  		/* */ } return; } if ($f === undefined) { $f = { $blk: Marshal }; } $f._r = _r; $f.byteLen = byteLen; $f.curve = curve; $f.ret = ret; $f.x = x; $f.xBytes = xBytes; $f.y = y; $f.yBytes = yBytes; $f.$s = $s; $f.$r = $r; return $f;
 58841  	};
 58842  	$pkg.Marshal = Marshal;
 58843  	Unmarshal = function(curve, data) {
 58844  		var _r, _r$1, _r$2, _tmp, _tmp$1, _tmp$2, _tmp$3, byteLen, curve, data, p, x, y, $s, $r;
 58845  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; byteLen = $f.byteLen; curve = $f.curve; data = $f.data; p = $f.p; x = $f.x; y = $f.y; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 58846  		x = ptrType$1.nil;
 58847  		y = ptrType$1.nil;
 58848  		_r = curve.Params(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 58849  		byteLen = ((_r.BitSize + 7 >> 0)) >> 3 >> 0;
 58850  		if (!((data.$length === (1 + ($imul(2, byteLen)) >> 0)))) {
 58851  			$s = -1; return [x, y];
 58852  		}
 58853  		if (!(((0 >= data.$length ? ($throwRuntimeError("index out of range"), undefined) : data.$array[data.$offset + 0]) === 4))) {
 58854  			$s = -1; return [x, y];
 58855  		}
 58856  		_r$1 = curve.Params(); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 58857  		p = _r$1.P;
 58858  		x = new big.Int.ptr(false, big.nat.nil).SetBytes($subslice(data, 1, (1 + byteLen >> 0)));
 58859  		y = new big.Int.ptr(false, big.nat.nil).SetBytes($subslice(data, (1 + byteLen >> 0)));
 58860  		if (x.Cmp(p) >= 0 || y.Cmp(p) >= 0) {
 58861  			_tmp = ptrType$1.nil;
 58862  			_tmp$1 = ptrType$1.nil;
 58863  			x = _tmp;
 58864  			y = _tmp$1;
 58865  			$s = -1; return [x, y];
 58866  		}
 58867  		_r$2 = curve.IsOnCurve(x, y); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 58868  		/* */ if (!_r$2) { $s = 3; continue; }
 58869  		/* */ $s = 4; continue;
 58870  		/* if (!_r$2) { */ case 3:
 58871  			_tmp$2 = ptrType$1.nil;
 58872  			_tmp$3 = ptrType$1.nil;
 58873  			x = _tmp$2;
 58874  			y = _tmp$3;
 58875  			$s = -1; return [x, y];
 58876  		/* } */ case 4:
 58877  		$s = -1; return [x, y];
 58878  		/* */ } return; } if ($f === undefined) { $f = { $blk: Unmarshal }; } $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f.byteLen = byteLen; $f.curve = curve; $f.data = data; $f.p = p; $f.x = x; $f.y = y; $f.$s = $s; $f.$r = $r; return $f;
 58879  	};
 58880  	$pkg.Unmarshal = Unmarshal;
 58881  	initAll = function() {
 58882  		var $s, $r;
 58883  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 58884  		$r = initP224(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 58885  		$r = initP256(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 58886  		$r = initP384(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 58887  		$r = initP521(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 58888  		$s = -1; return;
 58889  		/* */ } return; } if ($f === undefined) { $f = { $blk: initAll }; } $f.$s = $s; $f.$r = $r; return $f;
 58890  	};
 58891  	initP384 = function() {
 58892  		var _r, _r$1, _r$2, _r$3, _r$4, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, $s, $r;
 58893  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; _tuple$4 = $f._tuple$4; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 58894  		p384 = new CurveParams.ptr(ptrType$1.nil, ptrType$1.nil, ptrType$1.nil, ptrType$1.nil, ptrType$1.nil, 0, "P-384");
 58895  		_r = new big.Int.ptr(false, big.nat.nil).SetString("39402006196394479212279040100143613805079739270465446667948293404245721771496870329047266088258938001861606973112319", 10); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 58896  		_tuple = _r;
 58897  		p384.P = _tuple[0];
 58898  		_r$1 = new big.Int.ptr(false, big.nat.nil).SetString("39402006196394479212279040100143613805079739270465446667946905279627659399113263569398956308152294913554433653942643", 10); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 58899  		_tuple$1 = _r$1;
 58900  		p384.N = _tuple$1[0];
 58901  		_r$2 = new big.Int.ptr(false, big.nat.nil).SetString("b3312fa7e23ee7e4988e056be3f82d19181d9c6efe8141120314088f5013875ac656398d8a2ed19d2a85c8edd3ec2aef", 16); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 58902  		_tuple$2 = _r$2;
 58903  		p384.B = _tuple$2[0];
 58904  		_r$3 = new big.Int.ptr(false, big.nat.nil).SetString("aa87ca22be8b05378eb1c71ef320ad746e1d3b628ba79b9859f741e082542a385502f25dbf55296c3a545e3872760ab7", 16); /* */ $s = 4; case 4: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 58905  		_tuple$3 = _r$3;
 58906  		p384.Gx = _tuple$3[0];
 58907  		_r$4 = new big.Int.ptr(false, big.nat.nil).SetString("3617de4a96262c6f5d9e98bf9292dc29f8f41dbd289a147ce9da3113b5f0b8c00a60b1ce1d7e819d7a431d7c90ea0e5f", 16); /* */ $s = 5; case 5: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 58908  		_tuple$4 = _r$4;
 58909  		p384.Gy = _tuple$4[0];
 58910  		p384.BitSize = 384;
 58911  		$s = -1; return;
 58912  		/* */ } return; } if ($f === undefined) { $f = { $blk: initP384 }; } $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f._tuple$4 = _tuple$4; $f.$s = $s; $f.$r = $r; return $f;
 58913  	};
 58914  	initP521 = function() {
 58915  		var _r, _r$1, _r$2, _r$3, _r$4, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, $s, $r;
 58916  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; _tuple$4 = $f._tuple$4; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 58917  		p521 = new CurveParams.ptr(ptrType$1.nil, ptrType$1.nil, ptrType$1.nil, ptrType$1.nil, ptrType$1.nil, 0, "P-521");
 58918  		_r = new big.Int.ptr(false, big.nat.nil).SetString("6864797660130609714981900799081393217269435300143305409394463459185543183397656052122559640661454554977296311391480858037121987999716643812574028291115057151", 10); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 58919  		_tuple = _r;
 58920  		p521.P = _tuple[0];
 58921  		_r$1 = new big.Int.ptr(false, big.nat.nil).SetString("6864797660130609714981900799081393217269435300143305409394463459185543183397655394245057746333217197532963996371363321113864768612440380340372808892707005449", 10); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 58922  		_tuple$1 = _r$1;
 58923  		p521.N = _tuple$1[0];
 58924  		_r$2 = new big.Int.ptr(false, big.nat.nil).SetString("051953eb9618e1c9a1f929a21a0b68540eea2da725b99b315f3b8b489918ef109e156193951ec7e937b1652c0bd3bb1bf073573df883d2c34f1ef451fd46b503f00", 16); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 58925  		_tuple$2 = _r$2;
 58926  		p521.B = _tuple$2[0];
 58927  		_r$3 = new big.Int.ptr(false, big.nat.nil).SetString("c6858e06b70404e9cd9e3ecb662395b4429c648139053fb521f828af606b4d3dbaa14b5e77efe75928fe1dc127a2ffa8de3348b3c1856a429bf97e7e31c2e5bd66", 16); /* */ $s = 4; case 4: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 58928  		_tuple$3 = _r$3;
 58929  		p521.Gx = _tuple$3[0];
 58930  		_r$4 = new big.Int.ptr(false, big.nat.nil).SetString("11839296a789a3bc0045c8a5fb42c7d1bd998f54449579b446817afbd17273e662c97ee72995ef42640c550b9013fad0761353c7086a272c24088be94769fd16650", 16); /* */ $s = 5; case 5: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 58931  		_tuple$4 = _r$4;
 58932  		p521.Gy = _tuple$4[0];
 58933  		p521.BitSize = 521;
 58934  		$s = -1; return;
 58935  		/* */ } return; } if ($f === undefined) { $f = { $blk: initP521 }; } $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f._tuple$4 = _tuple$4; $f.$s = $s; $f.$r = $r; return $f;
 58936  	};
 58937  	P256 = function() {
 58938  		var $s, $r;
 58939  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 58940  		$r = initonce.Do(initAll); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 58941  		$s = -1; return new p256.constructor.elem(p256);
 58942  		/* */ } return; } if ($f === undefined) { $f = { $blk: P256 }; } $f.$s = $s; $f.$r = $r; return $f;
 58943  	};
 58944  	$pkg.P256 = P256;
 58945  	P384 = function() {
 58946  		var $s, $r;
 58947  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 58948  		$r = initonce.Do(initAll); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 58949  		$s = -1; return p384;
 58950  		/* */ } return; } if ($f === undefined) { $f = { $blk: P384 }; } $f.$s = $s; $f.$r = $r; return $f;
 58951  	};
 58952  	$pkg.P384 = P384;
 58953  	P521 = function() {
 58954  		var $s, $r;
 58955  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 58956  		$r = initonce.Do(initAll); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 58957  		$s = -1; return p521;
 58958  		/* */ } return; } if ($f === undefined) { $f = { $blk: P521 }; } $f.$s = $s; $f.$r = $r; return $f;
 58959  	};
 58960  	$pkg.P521 = P521;
 58961  	initP224 = function() {
 58962  		var _r, _r$1, _r$2, _r$3, _r$4, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, $s, $r;
 58963  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; _tuple$4 = $f._tuple$4; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 58964  		p224.CurveParams = new CurveParams.ptr(ptrType$1.nil, ptrType$1.nil, ptrType$1.nil, ptrType$1.nil, ptrType$1.nil, 0, "P-224");
 58965  		_r = new big.Int.ptr(false, big.nat.nil).SetString("26959946667150639794667015087019630673557916260026308143510066298881", 10); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 58966  		_tuple = _r;
 58967  		p224.CurveParams.P = _tuple[0];
 58968  		_r$1 = new big.Int.ptr(false, big.nat.nil).SetString("26959946667150639794667015087019625940457807714424391721682722368061", 10); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 58969  		_tuple$1 = _r$1;
 58970  		p224.CurveParams.N = _tuple$1[0];
 58971  		_r$2 = new big.Int.ptr(false, big.nat.nil).SetString("b4050a850c04b3abf54132565044b0b7d7bfd8ba270b39432355ffb4", 16); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 58972  		_tuple$2 = _r$2;
 58973  		p224.CurveParams.B = _tuple$2[0];
 58974  		_r$3 = new big.Int.ptr(false, big.nat.nil).SetString("b70e0cbd6bb4bf7f321390b94a03c1d356c21122343280d6115c1d21", 16); /* */ $s = 4; case 4: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 58975  		_tuple$3 = _r$3;
 58976  		p224.CurveParams.Gx = _tuple$3[0];
 58977  		_r$4 = new big.Int.ptr(false, big.nat.nil).SetString("bd376388b5f723fb4c22dfe6cd4375a05a07476444d5819985007e34", 16); /* */ $s = 5; case 5: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 58978  		_tuple$4 = _r$4;
 58979  		p224.CurveParams.Gy = _tuple$4[0];
 58980  		p224.CurveParams.BitSize = 224;
 58981  		p224FromBig(p224.gx, p224.CurveParams.Gx);
 58982  		p224FromBig(p224.gy, p224.CurveParams.Gy);
 58983  		p224FromBig(p224.b, p224.CurveParams.B);
 58984  		$s = -1; return;
 58985  		/* */ } return; } if ($f === undefined) { $f = { $blk: initP224 }; } $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f._tuple$4 = _tuple$4; $f.$s = $s; $f.$r = $r; return $f;
 58986  	};
 58987  	P224 = function() {
 58988  		var $s, $r;
 58989  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 58990  		$r = initonce.Do(initAll); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 58991  		$s = -1; return new p224.constructor.elem(p224);
 58992  		/* */ } return; } if ($f === undefined) { $f = { $blk: P224 }; } $f.$s = $s; $f.$r = $r; return $f;
 58993  	};
 58994  	$pkg.P224 = P224;
 58995  	p224Curve.ptr.prototype.Params = function() {
 58996  		var curve;
 58997  		curve = this;
 58998  		return curve.CurveParams;
 58999  	};
 59000  	p224Curve.prototype.Params = function() { return this.$val.Params(); };
 59001  	p224Curve.ptr.prototype.IsOnCurve = function(bigX, bigY) {
 59002  		var _tmp, _tmp$1, bigX, bigY, curve, i, i$1, tmp, x, x3, y;
 59003  		curve = this;
 59004  		_tmp = arrayType.zero();
 59005  		_tmp$1 = arrayType.zero();
 59006  		x = $clone(_tmp, p224FieldElement);
 59007  		y = $clone(_tmp$1, p224FieldElement);
 59008  		p224FromBig(x, bigX);
 59009  		p224FromBig(y, bigY);
 59010  		tmp = arrayType$1.zero();
 59011  		x3 = arrayType.zero();
 59012  		p224Square(x3, x, tmp);
 59013  		p224Mul(x3, x3, x, tmp);
 59014  		i = 0;
 59015  		while (true) {
 59016  			if (!(i < 8)) { break; }
 59017  			((i < 0 || i >= x.length) ? ($throwRuntimeError("index out of range"), undefined) : x[i] = ($imul(((i < 0 || i >= x.length) ? ($throwRuntimeError("index out of range"), undefined) : x[i]), (3)) >>> 0));
 59018  			i = i + (1) >> 0;
 59019  		}
 59020  		p224Sub(x3, x3, x);
 59021  		p224Reduce(x3);
 59022  		p224Add(x3, x3, curve.b);
 59023  		p224Contract(x3, x3);
 59024  		p224Square(y, y, tmp);
 59025  		p224Contract(y, y);
 59026  		i$1 = 0;
 59027  		while (true) {
 59028  			if (!(i$1 < 8)) { break; }
 59029  			if (!((((i$1 < 0 || i$1 >= y.length) ? ($throwRuntimeError("index out of range"), undefined) : y[i$1]) === ((i$1 < 0 || i$1 >= x3.length) ? ($throwRuntimeError("index out of range"), undefined) : x3[i$1])))) {
 59030  				return false;
 59031  			}
 59032  			i$1 = i$1 + (1) >> 0;
 59033  		}
 59034  		return true;
 59035  	};
 59036  	p224Curve.prototype.IsOnCurve = function(bigX, bigY) { return this.$val.IsOnCurve(bigX, bigY); };
 59037  	p224Curve.ptr.prototype.Add = function(bigX1, bigY1, bigX2, bigY2) {
 59038  		var _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tuple, bigX1, bigX2, bigY1, bigY2, x, x1, x2, x3, y, y1, y2, y3, z1, z2, z3;
 59039  		x = ptrType$1.nil;
 59040  		y = ptrType$1.nil;
 59041  		_tmp = arrayType.zero();
 59042  		_tmp$1 = arrayType.zero();
 59043  		_tmp$2 = arrayType.zero();
 59044  		_tmp$3 = arrayType.zero();
 59045  		_tmp$4 = arrayType.zero();
 59046  		_tmp$5 = arrayType.zero();
 59047  		_tmp$6 = arrayType.zero();
 59048  		_tmp$7 = arrayType.zero();
 59049  		_tmp$8 = arrayType.zero();
 59050  		x1 = $clone(_tmp, p224FieldElement);
 59051  		y1 = $clone(_tmp$1, p224FieldElement);
 59052  		z1 = $clone(_tmp$2, p224FieldElement);
 59053  		x2 = $clone(_tmp$3, p224FieldElement);
 59054  		y2 = $clone(_tmp$4, p224FieldElement);
 59055  		z2 = $clone(_tmp$5, p224FieldElement);
 59056  		x3 = $clone(_tmp$6, p224FieldElement);
 59057  		y3 = $clone(_tmp$7, p224FieldElement);
 59058  		z3 = $clone(_tmp$8, p224FieldElement);
 59059  		p224FromBig(x1, bigX1);
 59060  		p224FromBig(y1, bigY1);
 59061  		if (!((bigX1.Sign() === 0)) || !((bigY1.Sign() === 0))) {
 59062  			z1[0] = 1;
 59063  		}
 59064  		p224FromBig(x2, bigX2);
 59065  		p224FromBig(y2, bigY2);
 59066  		if (!((bigX2.Sign() === 0)) || !((bigY2.Sign() === 0))) {
 59067  			z2[0] = 1;
 59068  		}
 59069  		p224AddJacobian(x3, y3, z3, x1, y1, z1, x2, y2, z2);
 59070  		_tuple = p224ToAffine(x3, y3, z3);
 59071  		x = _tuple[0];
 59072  		y = _tuple[1];
 59073  		return [x, y];
 59074  	};
 59075  	p224Curve.prototype.Add = function(bigX1, bigY1, bigX2, bigY2) { return this.$val.Add(bigX1, bigY1, bigX2, bigY2); };
 59076  	p224Curve.ptr.prototype.Double = function(bigX1, bigY1) {
 59077  		var _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tuple, bigX1, bigY1, x, x1, x2, y, y1, y2, z1, z2;
 59078  		x = ptrType$1.nil;
 59079  		y = ptrType$1.nil;
 59080  		_tmp = arrayType.zero();
 59081  		_tmp$1 = arrayType.zero();
 59082  		_tmp$2 = arrayType.zero();
 59083  		_tmp$3 = arrayType.zero();
 59084  		_tmp$4 = arrayType.zero();
 59085  		_tmp$5 = arrayType.zero();
 59086  		x1 = $clone(_tmp, p224FieldElement);
 59087  		y1 = $clone(_tmp$1, p224FieldElement);
 59088  		z1 = $clone(_tmp$2, p224FieldElement);
 59089  		x2 = $clone(_tmp$3, p224FieldElement);
 59090  		y2 = $clone(_tmp$4, p224FieldElement);
 59091  		z2 = $clone(_tmp$5, p224FieldElement);
 59092  		p224FromBig(x1, bigX1);
 59093  		p224FromBig(y1, bigY1);
 59094  		z1[0] = 1;
 59095  		p224DoubleJacobian(x2, y2, z2, x1, y1, z1);
 59096  		_tuple = p224ToAffine(x2, y2, z2);
 59097  		x = _tuple[0];
 59098  		y = _tuple[1];
 59099  		return [x, y];
 59100  	};
 59101  	p224Curve.prototype.Double = function(bigX1, bigY1) { return this.$val.Double(bigX1, bigY1); };
 59102  	p224Curve.ptr.prototype.ScalarMult = function(bigX1, bigY1, scalar) {
 59103  		var _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tuple, bigX1, bigY1, scalar, x, x1, x2, y, y1, y2, z1, z2;
 59104  		x = ptrType$1.nil;
 59105  		y = ptrType$1.nil;
 59106  		_tmp = arrayType.zero();
 59107  		_tmp$1 = arrayType.zero();
 59108  		_tmp$2 = arrayType.zero();
 59109  		_tmp$3 = arrayType.zero();
 59110  		_tmp$4 = arrayType.zero();
 59111  		_tmp$5 = arrayType.zero();
 59112  		x1 = $clone(_tmp, p224FieldElement);
 59113  		y1 = $clone(_tmp$1, p224FieldElement);
 59114  		z1 = $clone(_tmp$2, p224FieldElement);
 59115  		x2 = $clone(_tmp$3, p224FieldElement);
 59116  		y2 = $clone(_tmp$4, p224FieldElement);
 59117  		z2 = $clone(_tmp$5, p224FieldElement);
 59118  		p224FromBig(x1, bigX1);
 59119  		p224FromBig(y1, bigY1);
 59120  		z1[0] = 1;
 59121  		p224ScalarMult(x2, y2, z2, x1, y1, z1, scalar);
 59122  		_tuple = p224ToAffine(x2, y2, z2);
 59123  		x = _tuple[0];
 59124  		y = _tuple[1];
 59125  		return [x, y];
 59126  	};
 59127  	p224Curve.prototype.ScalarMult = function(bigX1, bigY1, scalar) { return this.$val.ScalarMult(bigX1, bigY1, scalar); };
 59128  	p224Curve.ptr.prototype.ScalarBaseMult = function(scalar) {
 59129  		var _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, curve, scalar, x, x2, y, y2, z1, z2;
 59130  		x = ptrType$1.nil;
 59131  		y = ptrType$1.nil;
 59132  		curve = this;
 59133  		_tmp = arrayType.zero();
 59134  		_tmp$1 = arrayType.zero();
 59135  		_tmp$2 = arrayType.zero();
 59136  		_tmp$3 = arrayType.zero();
 59137  		z1 = $clone(_tmp, p224FieldElement);
 59138  		x2 = $clone(_tmp$1, p224FieldElement);
 59139  		y2 = $clone(_tmp$2, p224FieldElement);
 59140  		z2 = $clone(_tmp$3, p224FieldElement);
 59141  		z1[0] = 1;
 59142  		p224ScalarMult(x2, y2, z2, curve.gx, curve.gy, z1, scalar);
 59143  		_tuple = p224ToAffine(x2, y2, z2);
 59144  		x = _tuple[0];
 59145  		y = _tuple[1];
 59146  		return [x, y];
 59147  	};
 59148  	p224Curve.prototype.ScalarBaseMult = function(scalar) { return this.$val.ScalarBaseMult(scalar); };
 59149  	p224IsZero = function(a) {
 59150  		var _i, _ref, _tmp, _tmp$1, a, i, isP, isZero, minimal, result, v;
 59151  		minimal = arrayType.zero();
 59152  		p224Contract(minimal, a);
 59153  		_tmp = 0;
 59154  		_tmp$1 = 0;
 59155  		isZero = _tmp;
 59156  		isP = _tmp$1;
 59157  		_ref = minimal;
 59158  		_i = 0;
 59159  		while (true) {
 59160  			if (!(_i < 8)) { break; }
 59161  			i = _i;
 59162  			v = ((_i < 0 || _i >= _ref.length) ? ($throwRuntimeError("index out of range"), undefined) : _ref[_i]);
 59163  			isZero = (isZero | (v)) >>> 0;
 59164  			isP = (isP | ((v - ((i < 0 || i >= p224P.length) ? ($throwRuntimeError("index out of range"), undefined) : p224P[i]) >>> 0))) >>> 0;
 59165  			_i++;
 59166  		}
 59167  		isZero = (isZero | ((isZero >>> 16 >>> 0))) >>> 0;
 59168  		isZero = (isZero | ((isZero >>> 8 >>> 0))) >>> 0;
 59169  		isZero = (isZero | ((isZero >>> 4 >>> 0))) >>> 0;
 59170  		isZero = (isZero | ((isZero >>> 2 >>> 0))) >>> 0;
 59171  		isZero = (isZero | ((isZero >>> 1 >>> 0))) >>> 0;
 59172  		isP = (isP | ((isP >>> 16 >>> 0))) >>> 0;
 59173  		isP = (isP | ((isP >>> 8 >>> 0))) >>> 0;
 59174  		isP = (isP | ((isP >>> 4 >>> 0))) >>> 0;
 59175  		isP = (isP | ((isP >>> 2 >>> 0))) >>> 0;
 59176  		isP = (isP | ((isP >>> 1 >>> 0))) >>> 0;
 59177  		result = (isZero & isP) >>> 0;
 59178  		result = (((~result >>> 0)) & 1) >>> 0;
 59179  		return result;
 59180  	};
 59181  	p224Add = function(out, a, b) {
 59182  		var a, b, i, out;
 59183  		i = 0;
 59184  		while (true) {
 59185  			if (!(i < 8)) { break; }
 59186  			out.nilCheck, ((i < 0 || i >= out.length) ? ($throwRuntimeError("index out of range"), undefined) : out[i] = ((a.nilCheck, ((i < 0 || i >= a.length) ? ($throwRuntimeError("index out of range"), undefined) : a[i])) + (b.nilCheck, ((i < 0 || i >= b.length) ? ($throwRuntimeError("index out of range"), undefined) : b[i])) >>> 0));
 59187  			i = i + (1) >> 0;
 59188  		}
 59189  	};
 59190  	p224Sub = function(out, a, b) {
 59191  		var a, b, i, out;
 59192  		i = 0;
 59193  		while (true) {
 59194  			if (!(i < 8)) { break; }
 59195  			out.nilCheck, ((i < 0 || i >= out.length) ? ($throwRuntimeError("index out of range"), undefined) : out[i] = (((a.nilCheck, ((i < 0 || i >= a.length) ? ($throwRuntimeError("index out of range"), undefined) : a[i])) + ((i < 0 || i >= p224ZeroModP31.$length) ? ($throwRuntimeError("index out of range"), undefined) : p224ZeroModP31.$array[p224ZeroModP31.$offset + i]) >>> 0) - (b.nilCheck, ((i < 0 || i >= b.length) ? ($throwRuntimeError("index out of range"), undefined) : b[i])) >>> 0));
 59196  			i = i + (1) >> 0;
 59197  		}
 59198  	};
 59199  	p224Mul = function(out, a, b, tmp) {
 59200  		var _index, a, b, i, i$1, j, out, tmp, x, x$1;
 59201  		i = 0;
 59202  		while (true) {
 59203  			if (!(i < 15)) { break; }
 59204  			tmp.nilCheck, ((i < 0 || i >= tmp.length) ? ($throwRuntimeError("index out of range"), undefined) : tmp[i] = new $Uint64(0, 0));
 59205  			i = i + (1) >> 0;
 59206  		}
 59207  		i$1 = 0;
 59208  		while (true) {
 59209  			if (!(i$1 < 8)) { break; }
 59210  			j = 0;
 59211  			while (true) {
 59212  				if (!(j < 8)) { break; }
 59213  				_index = i$1 + j >> 0;
 59214  				tmp.nilCheck, ((_index < 0 || _index >= tmp.length) ? ($throwRuntimeError("index out of range"), undefined) : tmp[_index] = (x = (tmp.nilCheck, ((_index < 0 || _index >= tmp.length) ? ($throwRuntimeError("index out of range"), undefined) : tmp[_index])), x$1 = $mul64((new $Uint64(0, (a.nilCheck, ((i$1 < 0 || i$1 >= a.length) ? ($throwRuntimeError("index out of range"), undefined) : a[i$1])))), (new $Uint64(0, (b.nilCheck, ((j < 0 || j >= b.length) ? ($throwRuntimeError("index out of range"), undefined) : b[j]))))), new $Uint64(x.$high + x$1.$high, x.$low + x$1.$low)));
 59215  				j = j + (1) >> 0;
 59216  			}
 59217  			i$1 = i$1 + (1) >> 0;
 59218  		}
 59219  		p224ReduceLarge(out, tmp);
 59220  	};
 59221  	p224Square = function(out, a, tmp) {
 59222  		var _index, _index$1, a, i, i$1, j, out, r, tmp, x, x$1, x$2, x$3;
 59223  		i = 0;
 59224  		while (true) {
 59225  			if (!(i < 15)) { break; }
 59226  			tmp.nilCheck, ((i < 0 || i >= tmp.length) ? ($throwRuntimeError("index out of range"), undefined) : tmp[i] = new $Uint64(0, 0));
 59227  			i = i + (1) >> 0;
 59228  		}
 59229  		i$1 = 0;
 59230  		while (true) {
 59231  			if (!(i$1 < 8)) { break; }
 59232  			j = 0;
 59233  			while (true) {
 59234  				if (!(j <= i$1)) { break; }
 59235  				r = $mul64((new $Uint64(0, (a.nilCheck, ((i$1 < 0 || i$1 >= a.length) ? ($throwRuntimeError("index out of range"), undefined) : a[i$1])))), (new $Uint64(0, (a.nilCheck, ((j < 0 || j >= a.length) ? ($throwRuntimeError("index out of range"), undefined) : a[j])))));
 59236  				if (i$1 === j) {
 59237  					_index = i$1 + j >> 0;
 59238  					tmp.nilCheck, ((_index < 0 || _index >= tmp.length) ? ($throwRuntimeError("index out of range"), undefined) : tmp[_index] = (x = (tmp.nilCheck, ((_index < 0 || _index >= tmp.length) ? ($throwRuntimeError("index out of range"), undefined) : tmp[_index])), x$1 = r, new $Uint64(x.$high + x$1.$high, x.$low + x$1.$low)));
 59239  				} else {
 59240  					_index$1 = i$1 + j >> 0;
 59241  					tmp.nilCheck, ((_index$1 < 0 || _index$1 >= tmp.length) ? ($throwRuntimeError("index out of range"), undefined) : tmp[_index$1] = (x$2 = (tmp.nilCheck, ((_index$1 < 0 || _index$1 >= tmp.length) ? ($throwRuntimeError("index out of range"), undefined) : tmp[_index$1])), x$3 = $shiftLeft64(r, 1), new $Uint64(x$2.$high + x$3.$high, x$2.$low + x$3.$low)));
 59242  				}
 59243  				j = j + (1) >> 0;
 59244  			}
 59245  			i$1 = i$1 + (1) >> 0;
 59246  		}
 59247  		p224ReduceLarge(out, tmp);
 59248  	};
 59249  	p224ReduceLarge = function(out, in$1) {
 59250  		var _index, _index$1, _index$2, _index$3, i, i$1, i$2, in$1, out, x, x$1, x$10, x$11, x$12, x$13, x$14, x$15, x$16, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9;
 59251  		i = 0;
 59252  		while (true) {
 59253  			if (!(i < 8)) { break; }
 59254  			in$1.nilCheck, ((i < 0 || i >= in$1.length) ? ($throwRuntimeError("index out of range"), undefined) : in$1[i] = (x = (in$1.nilCheck, ((i < 0 || i >= in$1.length) ? ($throwRuntimeError("index out of range"), undefined) : in$1[i])), x$1 = ((i < 0 || i >= p224ZeroModP63.length) ? ($throwRuntimeError("index out of range"), undefined) : p224ZeroModP63[i]), new $Uint64(x.$high + x$1.$high, x.$low + x$1.$low)));
 59255  			i = i + (1) >> 0;
 59256  		}
 59257  		i$1 = 14;
 59258  		while (true) {
 59259  			if (!(i$1 >= 8)) { break; }
 59260  			_index = i$1 - 8 >> 0;
 59261  			in$1.nilCheck, ((_index < 0 || _index >= in$1.length) ? ($throwRuntimeError("index out of range"), undefined) : in$1[_index] = (x$2 = (in$1.nilCheck, ((_index < 0 || _index >= in$1.length) ? ($throwRuntimeError("index out of range"), undefined) : in$1[_index])), x$3 = (in$1.nilCheck, ((i$1 < 0 || i$1 >= in$1.length) ? ($throwRuntimeError("index out of range"), undefined) : in$1[i$1])), new $Uint64(x$2.$high - x$3.$high, x$2.$low - x$3.$low)));
 59262  			_index$1 = i$1 - 5 >> 0;
 59263  			in$1.nilCheck, ((_index$1 < 0 || _index$1 >= in$1.length) ? ($throwRuntimeError("index out of range"), undefined) : in$1[_index$1] = (x$4 = (in$1.nilCheck, ((_index$1 < 0 || _index$1 >= in$1.length) ? ($throwRuntimeError("index out of range"), undefined) : in$1[_index$1])), x$5 = $shiftLeft64(((x$6 = (in$1.nilCheck, ((i$1 < 0 || i$1 >= in$1.length) ? ($throwRuntimeError("index out of range"), undefined) : in$1[i$1])), new $Uint64(x$6.$high & 0, (x$6.$low & 65535) >>> 0))), 12), new $Uint64(x$4.$high + x$5.$high, x$4.$low + x$5.$low)));
 59264  			_index$2 = i$1 - 4 >> 0;
 59265  			in$1.nilCheck, ((_index$2 < 0 || _index$2 >= in$1.length) ? ($throwRuntimeError("index out of range"), undefined) : in$1[_index$2] = (x$7 = (in$1.nilCheck, ((_index$2 < 0 || _index$2 >= in$1.length) ? ($throwRuntimeError("index out of range"), undefined) : in$1[_index$2])), x$8 = $shiftRightUint64((in$1.nilCheck, ((i$1 < 0 || i$1 >= in$1.length) ? ($throwRuntimeError("index out of range"), undefined) : in$1[i$1])), 16), new $Uint64(x$7.$high + x$8.$high, x$7.$low + x$8.$low)));
 59266  			i$1 = i$1 - (1) >> 0;
 59267  		}
 59268  		in$1.nilCheck, in$1[8] = new $Uint64(0, 0);
 59269  		i$2 = 1;
 59270  		while (true) {
 59271  			if (!(i$2 < 8)) { break; }
 59272  			_index$3 = i$2 + 1 >> 0;
 59273  			in$1.nilCheck, ((_index$3 < 0 || _index$3 >= in$1.length) ? ($throwRuntimeError("index out of range"), undefined) : in$1[_index$3] = (x$9 = (in$1.nilCheck, ((_index$3 < 0 || _index$3 >= in$1.length) ? ($throwRuntimeError("index out of range"), undefined) : in$1[_index$3])), x$10 = $shiftRightUint64((in$1.nilCheck, ((i$2 < 0 || i$2 >= in$1.length) ? ($throwRuntimeError("index out of range"), undefined) : in$1[i$2])), 28), new $Uint64(x$9.$high + x$10.$high, x$9.$low + x$10.$low)));
 59274  			out.nilCheck, ((i$2 < 0 || i$2 >= out.length) ? ($throwRuntimeError("index out of range"), undefined) : out[i$2] = (((x$11 = (in$1.nilCheck, ((i$2 < 0 || i$2 >= in$1.length) ? ($throwRuntimeError("index out of range"), undefined) : in$1[i$2])), new $Uint64(x$11.$high & 0, (x$11.$low & 268435455) >>> 0)).$low >>> 0)));
 59275  			i$2 = i$2 + (1) >> 0;
 59276  		}
 59277  		in$1.nilCheck, in$1[0] = (x$12 = (in$1.nilCheck, in$1[0]), x$13 = (in$1.nilCheck, in$1[8]), new $Uint64(x$12.$high - x$13.$high, x$12.$low - x$13.$low));
 59278  		out.nilCheck, out[3] = ((out.nilCheck, out[3]) + (((((x$14 = (in$1.nilCheck, in$1[8]), new $Uint64(x$14.$high & 0, (x$14.$low & 65535) >>> 0)).$low >>> 0)) << 12 >>> 0)) >>> 0);
 59279  		out.nilCheck, out[4] = ((out.nilCheck, out[4]) + ((($shiftRightUint64((in$1.nilCheck, in$1[8]), 16).$low >>> 0))) >>> 0);
 59280  		out.nilCheck, out[0] = (((x$15 = (in$1.nilCheck, in$1[0]), new $Uint64(x$15.$high & 0, (x$15.$low & 268435455) >>> 0)).$low >>> 0));
 59281  		out.nilCheck, out[1] = ((out.nilCheck, out[1]) + ((((x$16 = $shiftRightUint64((in$1.nilCheck, in$1[0]), 28), new $Uint64(x$16.$high & 0, (x$16.$low & 268435455) >>> 0)).$low >>> 0))) >>> 0);
 59282  		out.nilCheck, out[2] = ((out.nilCheck, out[2]) + ((($shiftRightUint64((in$1.nilCheck, in$1[0]), 56).$low >>> 0))) >>> 0);
 59283  	};
 59284  	p224Reduce = function(a) {
 59285  		var _index, a, i, mask$1, top, y;
 59286  		i = 0;
 59287  		while (true) {
 59288  			if (!(i < 7)) { break; }
 59289  			_index = i + 1 >> 0;
 59290  			a.nilCheck, ((_index < 0 || _index >= a.length) ? ($throwRuntimeError("index out of range"), undefined) : a[_index] = ((a.nilCheck, ((_index < 0 || _index >= a.length) ? ($throwRuntimeError("index out of range"), undefined) : a[_index])) + (((a.nilCheck, ((i < 0 || i >= a.length) ? ($throwRuntimeError("index out of range"), undefined) : a[i])) >>> 28 >>> 0)) >>> 0));
 59291  			a.nilCheck, ((i < 0 || i >= a.length) ? ($throwRuntimeError("index out of range"), undefined) : a[i] = (((a.nilCheck, ((i < 0 || i >= a.length) ? ($throwRuntimeError("index out of range"), undefined) : a[i])) & (268435455)) >>> 0));
 59292  			i = i + (1) >> 0;
 59293  		}
 59294  		top = (a.nilCheck, a[7]) >>> 28 >>> 0;
 59295  		a.nilCheck, a[7] = (((a.nilCheck, a[7]) & (268435455)) >>> 0);
 59296  		mask$1 = top;
 59297  		mask$1 = (mask$1 | ((mask$1 >>> 2 >>> 0))) >>> 0;
 59298  		mask$1 = (mask$1 | ((mask$1 >>> 1 >>> 0))) >>> 0;
 59299  		mask$1 = (y = (31), y < 32 ? (mask$1 << y) : 0) >>> 0;
 59300  		mask$1 = (((((mask$1 >> 0)) >> 31 >> 0) >>> 0));
 59301  		a.nilCheck, a[0] = ((a.nilCheck, a[0]) - (top) >>> 0);
 59302  		a.nilCheck, a[3] = ((a.nilCheck, a[3]) + ((top << 12 >>> 0)) >>> 0);
 59303  		a.nilCheck, a[3] = ((a.nilCheck, a[3]) - (((1 & mask$1) >>> 0)) >>> 0);
 59304  		a.nilCheck, a[2] = ((a.nilCheck, a[2]) + (((mask$1 & 268435455) >>> 0)) >>> 0);
 59305  		a.nilCheck, a[1] = ((a.nilCheck, a[1]) + (((mask$1 & 268435455) >>> 0)) >>> 0);
 59306  		a.nilCheck, a[0] = ((a.nilCheck, a[0]) + (((mask$1 & 268435456) >>> 0)) >>> 0);
 59307  	};
 59308  	p224Invert = function(out, in$1) {
 59309  		var _tmp, _tmp$1, _tmp$2, _tmp$3, c, f1, f2, f3, f4, i, i$1, i$2, i$3, i$4, i$5, i$6, in$1, out;
 59310  		_tmp = arrayType.zero();
 59311  		_tmp$1 = arrayType.zero();
 59312  		_tmp$2 = arrayType.zero();
 59313  		_tmp$3 = arrayType.zero();
 59314  		f1 = $clone(_tmp, p224FieldElement);
 59315  		f2 = $clone(_tmp$1, p224FieldElement);
 59316  		f3 = $clone(_tmp$2, p224FieldElement);
 59317  		f4 = $clone(_tmp$3, p224FieldElement);
 59318  		c = arrayType$1.zero();
 59319  		p224Square(f1, in$1, c);
 59320  		p224Mul(f1, f1, in$1, c);
 59321  		p224Square(f1, f1, c);
 59322  		p224Mul(f1, f1, in$1, c);
 59323  		p224Square(f2, f1, c);
 59324  		p224Square(f2, f2, c);
 59325  		p224Square(f2, f2, c);
 59326  		p224Mul(f1, f1, f2, c);
 59327  		p224Square(f2, f1, c);
 59328  		i = 0;
 59329  		while (true) {
 59330  			if (!(i < 5)) { break; }
 59331  			p224Square(f2, f2, c);
 59332  			i = i + (1) >> 0;
 59333  		}
 59334  		p224Mul(f2, f2, f1, c);
 59335  		p224Square(f3, f2, c);
 59336  		i$1 = 0;
 59337  		while (true) {
 59338  			if (!(i$1 < 11)) { break; }
 59339  			p224Square(f3, f3, c);
 59340  			i$1 = i$1 + (1) >> 0;
 59341  		}
 59342  		p224Mul(f2, f3, f2, c);
 59343  		p224Square(f3, f2, c);
 59344  		i$2 = 0;
 59345  		while (true) {
 59346  			if (!(i$2 < 23)) { break; }
 59347  			p224Square(f3, f3, c);
 59348  			i$2 = i$2 + (1) >> 0;
 59349  		}
 59350  		p224Mul(f3, f3, f2, c);
 59351  		p224Square(f4, f3, c);
 59352  		i$3 = 0;
 59353  		while (true) {
 59354  			if (!(i$3 < 47)) { break; }
 59355  			p224Square(f4, f4, c);
 59356  			i$3 = i$3 + (1) >> 0;
 59357  		}
 59358  		p224Mul(f3, f3, f4, c);
 59359  		p224Square(f4, f3, c);
 59360  		i$4 = 0;
 59361  		while (true) {
 59362  			if (!(i$4 < 23)) { break; }
 59363  			p224Square(f4, f4, c);
 59364  			i$4 = i$4 + (1) >> 0;
 59365  		}
 59366  		p224Mul(f2, f4, f2, c);
 59367  		i$5 = 0;
 59368  		while (true) {
 59369  			if (!(i$5 < 6)) { break; }
 59370  			p224Square(f2, f2, c);
 59371  			i$5 = i$5 + (1) >> 0;
 59372  		}
 59373  		p224Mul(f1, f1, f2, c);
 59374  		p224Square(f1, f1, c);
 59375  		p224Mul(f1, f1, in$1, c);
 59376  		i$6 = 0;
 59377  		while (true) {
 59378  			if (!(i$6 < 97)) { break; }
 59379  			p224Square(f1, f1, c);
 59380  			i$6 = i$6 + (1) >> 0;
 59381  		}
 59382  		p224Mul(out, f1, f3, c);
 59383  	};
 59384  	p224Contract = function(out, in$1) {
 59385  		var _index, _index$1, _index$2, _index$3, bottom3NonZero, i, i$1, i$2, i$3, i$4, in$1, mask$1, mask$2, mask$3, n, out, out3Equal, out3GT, top, top4AllOnes;
 59386  		$copySlice(new sliceType$1(out), new sliceType$1(in$1));
 59387  		i = 0;
 59388  		while (true) {
 59389  			if (!(i < 7)) { break; }
 59390  			_index = i + 1 >> 0;
 59391  			out.nilCheck, ((_index < 0 || _index >= out.length) ? ($throwRuntimeError("index out of range"), undefined) : out[_index] = ((out.nilCheck, ((_index < 0 || _index >= out.length) ? ($throwRuntimeError("index out of range"), undefined) : out[_index])) + (((out.nilCheck, ((i < 0 || i >= out.length) ? ($throwRuntimeError("index out of range"), undefined) : out[i])) >>> 28 >>> 0)) >>> 0));
 59392  			out.nilCheck, ((i < 0 || i >= out.length) ? ($throwRuntimeError("index out of range"), undefined) : out[i] = (((out.nilCheck, ((i < 0 || i >= out.length) ? ($throwRuntimeError("index out of range"), undefined) : out[i])) & (268435455)) >>> 0));
 59393  			i = i + (1) >> 0;
 59394  		}
 59395  		top = (out.nilCheck, out[7]) >>> 28 >>> 0;
 59396  		out.nilCheck, out[7] = (((out.nilCheck, out[7]) & (268435455)) >>> 0);
 59397  		out.nilCheck, out[0] = ((out.nilCheck, out[0]) - (top) >>> 0);
 59398  		out.nilCheck, out[3] = ((out.nilCheck, out[3]) + ((top << 12 >>> 0)) >>> 0);
 59399  		i$1 = 0;
 59400  		while (true) {
 59401  			if (!(i$1 < 3)) { break; }
 59402  			mask$1 = ((((((out.nilCheck, ((i$1 < 0 || i$1 >= out.length) ? ($throwRuntimeError("index out of range"), undefined) : out[i$1])) >> 0)) >> 31 >> 0) >>> 0));
 59403  			out.nilCheck, ((i$1 < 0 || i$1 >= out.length) ? ($throwRuntimeError("index out of range"), undefined) : out[i$1] = ((out.nilCheck, ((i$1 < 0 || i$1 >= out.length) ? ($throwRuntimeError("index out of range"), undefined) : out[i$1])) + (((268435456 & mask$1) >>> 0)) >>> 0));
 59404  			_index$1 = i$1 + 1 >> 0;
 59405  			out.nilCheck, ((_index$1 < 0 || _index$1 >= out.length) ? ($throwRuntimeError("index out of range"), undefined) : out[_index$1] = ((out.nilCheck, ((_index$1 < 0 || _index$1 >= out.length) ? ($throwRuntimeError("index out of range"), undefined) : out[_index$1])) - (((1 & mask$1) >>> 0)) >>> 0));
 59406  			i$1 = i$1 + (1) >> 0;
 59407  		}
 59408  		i$2 = 3;
 59409  		while (true) {
 59410  			if (!(i$2 < 7)) { break; }
 59411  			_index$2 = i$2 + 1 >> 0;
 59412  			out.nilCheck, ((_index$2 < 0 || _index$2 >= out.length) ? ($throwRuntimeError("index out of range"), undefined) : out[_index$2] = ((out.nilCheck, ((_index$2 < 0 || _index$2 >= out.length) ? ($throwRuntimeError("index out of range"), undefined) : out[_index$2])) + (((out.nilCheck, ((i$2 < 0 || i$2 >= out.length) ? ($throwRuntimeError("index out of range"), undefined) : out[i$2])) >>> 28 >>> 0)) >>> 0));
 59413  			out.nilCheck, ((i$2 < 0 || i$2 >= out.length) ? ($throwRuntimeError("index out of range"), undefined) : out[i$2] = (((out.nilCheck, ((i$2 < 0 || i$2 >= out.length) ? ($throwRuntimeError("index out of range"), undefined) : out[i$2])) & (268435455)) >>> 0));
 59414  			i$2 = i$2 + (1) >> 0;
 59415  		}
 59416  		top = (out.nilCheck, out[7]) >>> 28 >>> 0;
 59417  		out.nilCheck, out[7] = (((out.nilCheck, out[7]) & (268435455)) >>> 0);
 59418  		out.nilCheck, out[0] = ((out.nilCheck, out[0]) - (top) >>> 0);
 59419  		out.nilCheck, out[3] = ((out.nilCheck, out[3]) + ((top << 12 >>> 0)) >>> 0);
 59420  		i$3 = 0;
 59421  		while (true) {
 59422  			if (!(i$3 < 3)) { break; }
 59423  			mask$2 = ((((((out.nilCheck, ((i$3 < 0 || i$3 >= out.length) ? ($throwRuntimeError("index out of range"), undefined) : out[i$3])) >> 0)) >> 31 >> 0) >>> 0));
 59424  			out.nilCheck, ((i$3 < 0 || i$3 >= out.length) ? ($throwRuntimeError("index out of range"), undefined) : out[i$3] = ((out.nilCheck, ((i$3 < 0 || i$3 >= out.length) ? ($throwRuntimeError("index out of range"), undefined) : out[i$3])) + (((268435456 & mask$2) >>> 0)) >>> 0));
 59425  			_index$3 = i$3 + 1 >> 0;
 59426  			out.nilCheck, ((_index$3 < 0 || _index$3 >= out.length) ? ($throwRuntimeError("index out of range"), undefined) : out[_index$3] = ((out.nilCheck, ((_index$3 < 0 || _index$3 >= out.length) ? ($throwRuntimeError("index out of range"), undefined) : out[_index$3])) - (((1 & mask$2) >>> 0)) >>> 0));
 59427  			i$3 = i$3 + (1) >> 0;
 59428  		}
 59429  		top4AllOnes = 4294967295;
 59430  		i$4 = 4;
 59431  		while (true) {
 59432  			if (!(i$4 < 8)) { break; }
 59433  			top4AllOnes = (top4AllOnes & ((out.nilCheck, ((i$4 < 0 || i$4 >= out.length) ? ($throwRuntimeError("index out of range"), undefined) : out[i$4])))) >>> 0;
 59434  			i$4 = i$4 + (1) >> 0;
 59435  		}
 59436  		top4AllOnes = (top4AllOnes | (4026531840)) >>> 0;
 59437  		top4AllOnes = (top4AllOnes & ((top4AllOnes >>> 16 >>> 0))) >>> 0;
 59438  		top4AllOnes = (top4AllOnes & ((top4AllOnes >>> 8 >>> 0))) >>> 0;
 59439  		top4AllOnes = (top4AllOnes & ((top4AllOnes >>> 4 >>> 0))) >>> 0;
 59440  		top4AllOnes = (top4AllOnes & ((top4AllOnes >>> 2 >>> 0))) >>> 0;
 59441  		top4AllOnes = (top4AllOnes & ((top4AllOnes >>> 1 >>> 0))) >>> 0;
 59442  		top4AllOnes = ((((((top4AllOnes << 31 >>> 0) >> 0)) >> 31 >> 0) >>> 0));
 59443  		bottom3NonZero = ((((out.nilCheck, out[0]) | (out.nilCheck, out[1])) >>> 0) | (out.nilCheck, out[2])) >>> 0;
 59444  		bottom3NonZero = (bottom3NonZero | ((bottom3NonZero >>> 16 >>> 0))) >>> 0;
 59445  		bottom3NonZero = (bottom3NonZero | ((bottom3NonZero >>> 8 >>> 0))) >>> 0;
 59446  		bottom3NonZero = (bottom3NonZero | ((bottom3NonZero >>> 4 >>> 0))) >>> 0;
 59447  		bottom3NonZero = (bottom3NonZero | ((bottom3NonZero >>> 2 >>> 0))) >>> 0;
 59448  		bottom3NonZero = (bottom3NonZero | ((bottom3NonZero >>> 1 >>> 0))) >>> 0;
 59449  		bottom3NonZero = ((((((bottom3NonZero << 31 >>> 0) >> 0)) >> 31 >> 0) >>> 0));
 59450  		n = (out.nilCheck, out[3]) - 268431360 >>> 0;
 59451  		out3Equal = n;
 59452  		out3Equal = (out3Equal | ((out3Equal >>> 16 >>> 0))) >>> 0;
 59453  		out3Equal = (out3Equal | ((out3Equal >>> 8 >>> 0))) >>> 0;
 59454  		out3Equal = (out3Equal | ((out3Equal >>> 4 >>> 0))) >>> 0;
 59455  		out3Equal = (out3Equal | ((out3Equal >>> 2 >>> 0))) >>> 0;
 59456  		out3Equal = (out3Equal | ((out3Equal >>> 1 >>> 0))) >>> 0;
 59457  		out3Equal = ~((((((out3Equal << 31 >>> 0) >> 0)) >> 31 >> 0) >>> 0)) >>> 0;
 59458  		out3GT = ~(((((n >> 0)) >> 31 >> 0) >>> 0)) >>> 0;
 59459  		mask$3 = (top4AllOnes & ((((((out3Equal & bottom3NonZero) >>> 0)) | out3GT) >>> 0))) >>> 0;
 59460  		out.nilCheck, out[0] = ((out.nilCheck, out[0]) - (((1 & mask$3) >>> 0)) >>> 0);
 59461  		out.nilCheck, out[3] = ((out.nilCheck, out[3]) - (((268431360 & mask$3) >>> 0)) >>> 0);
 59462  		out.nilCheck, out[4] = ((out.nilCheck, out[4]) - (((268435455 & mask$3) >>> 0)) >>> 0);
 59463  		out.nilCheck, out[5] = ((out.nilCheck, out[5]) - (((268435455 & mask$3) >>> 0)) >>> 0);
 59464  		out.nilCheck, out[6] = ((out.nilCheck, out[6]) - (((268435455 & mask$3) >>> 0)) >>> 0);
 59465  		out.nilCheck, out[7] = ((out.nilCheck, out[7]) - (((268435455 & mask$3) >>> 0)) >>> 0);
 59466  	};
 59467  	p224AddJacobian = function(x3, y3, z3, x1, y1, z1, x2, y2, z2) {
 59468  		var _tmp, _tmp$1, _tmp$10, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, c, h, i, i$1, i$2, i$3, j, j$1, r, s1, s2, u1, u2, v, x1, x2, x3, xEqual, y, y$1, y1, y2, y3, yEqual, z1, z1IsZero, z1z1, z2, z2IsZero, z2z2, z3;
 59469  		_tmp = arrayType.zero();
 59470  		_tmp$1 = arrayType.zero();
 59471  		_tmp$2 = arrayType.zero();
 59472  		_tmp$3 = arrayType.zero();
 59473  		_tmp$4 = arrayType.zero();
 59474  		_tmp$5 = arrayType.zero();
 59475  		_tmp$6 = arrayType.zero();
 59476  		_tmp$7 = arrayType.zero();
 59477  		_tmp$8 = arrayType.zero();
 59478  		_tmp$9 = arrayType.zero();
 59479  		_tmp$10 = arrayType.zero();
 59480  		z1z1 = $clone(_tmp, p224FieldElement);
 59481  		z2z2 = $clone(_tmp$1, p224FieldElement);
 59482  		u1 = $clone(_tmp$2, p224FieldElement);
 59483  		u2 = $clone(_tmp$3, p224FieldElement);
 59484  		s1 = $clone(_tmp$4, p224FieldElement);
 59485  		s2 = $clone(_tmp$5, p224FieldElement);
 59486  		h = $clone(_tmp$6, p224FieldElement);
 59487  		i = $clone(_tmp$7, p224FieldElement);
 59488  		j = $clone(_tmp$8, p224FieldElement);
 59489  		r = $clone(_tmp$9, p224FieldElement);
 59490  		v = $clone(_tmp$10, p224FieldElement);
 59491  		c = arrayType$1.zero();
 59492  		z1IsZero = p224IsZero(z1);
 59493  		z2IsZero = p224IsZero(z2);
 59494  		p224Square(z1z1, z1, c);
 59495  		p224Square(z2z2, z2, c);
 59496  		p224Mul(u1, x1, z2z2, c);
 59497  		p224Mul(u2, x2, z1z1, c);
 59498  		p224Mul(s1, z2, z2z2, c);
 59499  		p224Mul(s1, y1, s1, c);
 59500  		p224Mul(s2, z1, z1z1, c);
 59501  		p224Mul(s2, y2, s2, c);
 59502  		p224Sub(h, u2, u1);
 59503  		p224Reduce(h);
 59504  		xEqual = p224IsZero(h);
 59505  		j$1 = 0;
 59506  		while (true) {
 59507  			if (!(j$1 < 8)) { break; }
 59508  			((j$1 < 0 || j$1 >= i.length) ? ($throwRuntimeError("index out of range"), undefined) : i[j$1] = (((j$1 < 0 || j$1 >= h.length) ? ($throwRuntimeError("index out of range"), undefined) : h[j$1]) << 1 >>> 0));
 59509  			j$1 = j$1 + (1) >> 0;
 59510  		}
 59511  		p224Reduce(i);
 59512  		p224Square(i, i, c);
 59513  		p224Mul(j, h, i, c);
 59514  		p224Sub(r, s2, s1);
 59515  		p224Reduce(r);
 59516  		yEqual = p224IsZero(r);
 59517  		if ((xEqual === 1) && (yEqual === 1) && (z1IsZero === 0) && (z2IsZero === 0)) {
 59518  			p224DoubleJacobian(x3, y3, z3, x1, y1, z1);
 59519  			return;
 59520  		}
 59521  		i$1 = 0;
 59522  		while (true) {
 59523  			if (!(i$1 < 8)) { break; }
 59524  			((i$1 < 0 || i$1 >= r.length) ? ($throwRuntimeError("index out of range"), undefined) : r[i$1] = ((y = (1), y < 32 ? (((i$1 < 0 || i$1 >= r.length) ? ($throwRuntimeError("index out of range"), undefined) : r[i$1]) << y) : 0) >>> 0));
 59525  			i$1 = i$1 + (1) >> 0;
 59526  		}
 59527  		p224Reduce(r);
 59528  		p224Mul(v, u1, i, c);
 59529  		p224Add(z1z1, z1z1, z2z2);
 59530  		p224Add(z2z2, z1, z2);
 59531  		p224Reduce(z2z2);
 59532  		p224Square(z2z2, z2z2, c);
 59533  		p224Sub(z3, z2z2, z1z1);
 59534  		p224Reduce(z3);
 59535  		p224Mul(z3, z3, h, c);
 59536  		i$2 = 0;
 59537  		while (true) {
 59538  			if (!(i$2 < 8)) { break; }
 59539  			((i$2 < 0 || i$2 >= z1z1.length) ? ($throwRuntimeError("index out of range"), undefined) : z1z1[i$2] = (((i$2 < 0 || i$2 >= v.length) ? ($throwRuntimeError("index out of range"), undefined) : v[i$2]) << 1 >>> 0));
 59540  			i$2 = i$2 + (1) >> 0;
 59541  		}
 59542  		p224Add(z1z1, j, z1z1);
 59543  		p224Reduce(z1z1);
 59544  		p224Square(x3, r, c);
 59545  		p224Sub(x3, x3, z1z1);
 59546  		p224Reduce(x3);
 59547  		i$3 = 0;
 59548  		while (true) {
 59549  			if (!(i$3 < 8)) { break; }
 59550  			((i$3 < 0 || i$3 >= s1.length) ? ($throwRuntimeError("index out of range"), undefined) : s1[i$3] = ((y$1 = (1), y$1 < 32 ? (((i$3 < 0 || i$3 >= s1.length) ? ($throwRuntimeError("index out of range"), undefined) : s1[i$3]) << y$1) : 0) >>> 0));
 59551  			i$3 = i$3 + (1) >> 0;
 59552  		}
 59553  		p224Mul(s1, s1, j, c);
 59554  		p224Sub(z1z1, v, x3);
 59555  		p224Reduce(z1z1);
 59556  		p224Mul(z1z1, z1z1, r, c);
 59557  		p224Sub(y3, z1z1, s1);
 59558  		p224Reduce(y3);
 59559  		p224CopyConditional(x3, x2, z1IsZero);
 59560  		p224CopyConditional(x3, x1, z2IsZero);
 59561  		p224CopyConditional(y3, y2, z1IsZero);
 59562  		p224CopyConditional(y3, y1, z2IsZero);
 59563  		p224CopyConditional(z3, z2, z1IsZero);
 59564  		p224CopyConditional(z3, z1, z2IsZero);
 59565  	};
 59566  	p224DoubleJacobian = function(x3, y3, z3, x1, y1, z1) {
 59567  		var _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, alpha, beta, c, delta, gamma, i, i$1, i$2, i$3, t, x1, x3, y, y$1, y1, y3, z1, z3;
 59568  		_tmp = arrayType.zero();
 59569  		_tmp$1 = arrayType.zero();
 59570  		_tmp$2 = arrayType.zero();
 59571  		_tmp$3 = arrayType.zero();
 59572  		_tmp$4 = arrayType.zero();
 59573  		delta = $clone(_tmp, p224FieldElement);
 59574  		gamma = $clone(_tmp$1, p224FieldElement);
 59575  		beta = $clone(_tmp$2, p224FieldElement);
 59576  		alpha = $clone(_tmp$3, p224FieldElement);
 59577  		t = $clone(_tmp$4, p224FieldElement);
 59578  		c = arrayType$1.zero();
 59579  		p224Square(delta, z1, c);
 59580  		p224Square(gamma, y1, c);
 59581  		p224Mul(beta, x1, gamma, c);
 59582  		p224Add(t, x1, delta);
 59583  		i = 0;
 59584  		while (true) {
 59585  			if (!(i < 8)) { break; }
 59586  			((i < 0 || i >= t.length) ? ($throwRuntimeError("index out of range"), undefined) : t[i] = (((i < 0 || i >= t.length) ? ($throwRuntimeError("index out of range"), undefined) : t[i]) + ((((i < 0 || i >= t.length) ? ($throwRuntimeError("index out of range"), undefined) : t[i]) << 1 >>> 0)) >>> 0));
 59587  			i = i + (1) >> 0;
 59588  		}
 59589  		p224Reduce(t);
 59590  		p224Sub(alpha, x1, delta);
 59591  		p224Reduce(alpha);
 59592  		p224Mul(alpha, alpha, t, c);
 59593  		p224Add(z3, y1, z1);
 59594  		p224Reduce(z3);
 59595  		p224Square(z3, z3, c);
 59596  		p224Sub(z3, z3, gamma);
 59597  		p224Reduce(z3);
 59598  		p224Sub(z3, z3, delta);
 59599  		p224Reduce(z3);
 59600  		i$1 = 0;
 59601  		while (true) {
 59602  			if (!(i$1 < 8)) { break; }
 59603  			((i$1 < 0 || i$1 >= delta.length) ? ($throwRuntimeError("index out of range"), undefined) : delta[i$1] = (((i$1 < 0 || i$1 >= beta.length) ? ($throwRuntimeError("index out of range"), undefined) : beta[i$1]) << 3 >>> 0));
 59604  			i$1 = i$1 + (1) >> 0;
 59605  		}
 59606  		p224Reduce(delta);
 59607  		p224Square(x3, alpha, c);
 59608  		p224Sub(x3, x3, delta);
 59609  		p224Reduce(x3);
 59610  		i$2 = 0;
 59611  		while (true) {
 59612  			if (!(i$2 < 8)) { break; }
 59613  			((i$2 < 0 || i$2 >= beta.length) ? ($throwRuntimeError("index out of range"), undefined) : beta[i$2] = ((y = (2), y < 32 ? (((i$2 < 0 || i$2 >= beta.length) ? ($throwRuntimeError("index out of range"), undefined) : beta[i$2]) << y) : 0) >>> 0));
 59614  			i$2 = i$2 + (1) >> 0;
 59615  		}
 59616  		p224Sub(beta, beta, x3);
 59617  		p224Reduce(beta);
 59618  		p224Square(gamma, gamma, c);
 59619  		i$3 = 0;
 59620  		while (true) {
 59621  			if (!(i$3 < 8)) { break; }
 59622  			((i$3 < 0 || i$3 >= gamma.length) ? ($throwRuntimeError("index out of range"), undefined) : gamma[i$3] = ((y$1 = (3), y$1 < 32 ? (((i$3 < 0 || i$3 >= gamma.length) ? ($throwRuntimeError("index out of range"), undefined) : gamma[i$3]) << y$1) : 0) >>> 0));
 59623  			i$3 = i$3 + (1) >> 0;
 59624  		}
 59625  		p224Reduce(gamma);
 59626  		p224Mul(y3, alpha, beta, c);
 59627  		p224Sub(y3, y3, gamma);
 59628  		p224Reduce(y3);
 59629  	};
 59630  	p224CopyConditional = function(out, in$1, control) {
 59631  		var control, i, in$1, out, y;
 59632  		control = (y = (31), y < 32 ? (control << y) : 0) >>> 0;
 59633  		control = (((((control >> 0)) >> 31 >> 0) >>> 0));
 59634  		i = 0;
 59635  		while (true) {
 59636  			if (!(i < 8)) { break; }
 59637  			out.nilCheck, ((i < 0 || i >= out.length) ? ($throwRuntimeError("index out of range"), undefined) : out[i] = (((out.nilCheck, ((i < 0 || i >= out.length) ? ($throwRuntimeError("index out of range"), undefined) : out[i])) ^ (((((((out.nilCheck, ((i < 0 || i >= out.length) ? ($throwRuntimeError("index out of range"), undefined) : out[i])) ^ (in$1.nilCheck, ((i < 0 || i >= in$1.length) ? ($throwRuntimeError("index out of range"), undefined) : in$1[i]))) >>> 0)) & control) >>> 0))) >>> 0));
 59638  			i = i + (1) >> 0;
 59639  		}
 59640  	};
 59641  	p224ScalarMult = function(outX, outY, outZ, inX, inY, inZ, scalar) {
 59642  		var _i, _ref, _tmp, _tmp$1, _tmp$2, bit, bitNum, byte$1, i, inX, inY, inZ, outX, outY, outZ, scalar, xx, y, yy, zz;
 59643  		_tmp = arrayType.zero();
 59644  		_tmp$1 = arrayType.zero();
 59645  		_tmp$2 = arrayType.zero();
 59646  		xx = $clone(_tmp, p224FieldElement);
 59647  		yy = $clone(_tmp$1, p224FieldElement);
 59648  		zz = $clone(_tmp$2, p224FieldElement);
 59649  		i = 0;
 59650  		while (true) {
 59651  			if (!(i < 8)) { break; }
 59652  			outX.nilCheck, ((i < 0 || i >= outX.length) ? ($throwRuntimeError("index out of range"), undefined) : outX[i] = 0);
 59653  			outY.nilCheck, ((i < 0 || i >= outY.length) ? ($throwRuntimeError("index out of range"), undefined) : outY[i] = 0);
 59654  			outZ.nilCheck, ((i < 0 || i >= outZ.length) ? ($throwRuntimeError("index out of range"), undefined) : outZ[i] = 0);
 59655  			i = i + (1) >> 0;
 59656  		}
 59657  		_ref = scalar;
 59658  		_i = 0;
 59659  		while (true) {
 59660  			if (!(_i < _ref.$length)) { break; }
 59661  			byte$1 = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
 59662  			bitNum = 0;
 59663  			while (true) {
 59664  				if (!(bitNum < 8)) { break; }
 59665  				p224DoubleJacobian(outX, outY, outZ, outX, outY, outZ);
 59666  				bit = (((((((y = ((7 - bitNum >>> 0)), y < 32 ? (byte$1 >>> y) : 0) << 24 >>> 24)) & 1) >>> 0) >>> 0));
 59667  				p224AddJacobian(xx, yy, zz, inX, inY, inZ, outX, outY, outZ);
 59668  				p224CopyConditional(outX, xx, bit);
 59669  				p224CopyConditional(outY, yy, bit);
 59670  				p224CopyConditional(outZ, zz, bit);
 59671  				bitNum = bitNum + (1) >>> 0;
 59672  			}
 59673  			_i++;
 59674  		}
 59675  	};
 59676  	p224ToAffine = function(x, y, z) {
 59677  		var _tmp, _tmp$1, _tmp$2, _tmp$3, isPointAtInfinity, outx, outy, tmp, x, y, z, zinv, zinvsq;
 59678  		_tmp = arrayType.zero();
 59679  		_tmp$1 = arrayType.zero();
 59680  		_tmp$2 = arrayType.zero();
 59681  		_tmp$3 = arrayType.zero();
 59682  		zinv = $clone(_tmp, p224FieldElement);
 59683  		zinvsq = $clone(_tmp$1, p224FieldElement);
 59684  		outx = $clone(_tmp$2, p224FieldElement);
 59685  		outy = $clone(_tmp$3, p224FieldElement);
 59686  		tmp = arrayType$1.zero();
 59687  		isPointAtInfinity = p224IsZero(z);
 59688  		if (isPointAtInfinity === 1) {
 59689  			return [new big.Int.ptr(false, big.nat.nil), new big.Int.ptr(false, big.nat.nil)];
 59690  		}
 59691  		p224Invert(zinv, z);
 59692  		p224Square(zinvsq, zinv, tmp);
 59693  		p224Mul(x, x, zinvsq, tmp);
 59694  		p224Mul(zinvsq, zinvsq, zinv, tmp);
 59695  		p224Mul(y, y, zinvsq, tmp);
 59696  		p224Contract(outx, x);
 59697  		p224Contract(outy, y);
 59698  		return [p224ToBig(outx), p224ToBig(outy)];
 59699  	};
 59700  	get28BitsFromEnd = function(buf, shift) {
 59701  		var b, buf, i, l, ret, shift, x, y, y$1;
 59702  		ret = 0;
 59703  		i = 0;
 59704  		while (true) {
 59705  			if (!(i < 4)) { break; }
 59706  			b = 0;
 59707  			l = buf.$length;
 59708  			if (l > 0) {
 59709  				b = (x = l - 1 >> 0, ((x < 0 || x >= buf.$length) ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + x]));
 59710  				if (!((i === 3)) || (shift === 4)) {
 59711  					buf = $subslice(buf, 0, (l - 1 >> 0));
 59712  				}
 59713  			}
 59714  			ret = (ret | (((y = shift, y < 32 ? (((y$1 = ((8 * i >>> 0)), y$1 < 32 ? (((b >>> 0)) << y$1) : 0) >>> 0) >>> y) : 0) >>> 0))) >>> 0;
 59715  			i = i + (1) >>> 0;
 59716  		}
 59717  		ret = (ret & (268435455)) >>> 0;
 59718  		return [ret, buf];
 59719  	};
 59720  	p224FromBig = function(out, in$1) {
 59721  		var _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, _tuple$5, _tuple$6, _tuple$7, bytes, in$1, out;
 59722  		bytes = in$1.Bytes();
 59723  		_tuple = get28BitsFromEnd(bytes, 0);
 59724  		out.nilCheck, out[0] = _tuple[0];
 59725  		bytes = _tuple[1];
 59726  		_tuple$1 = get28BitsFromEnd(bytes, 4);
 59727  		out.nilCheck, out[1] = _tuple$1[0];
 59728  		bytes = _tuple$1[1];
 59729  		_tuple$2 = get28BitsFromEnd(bytes, 0);
 59730  		out.nilCheck, out[2] = _tuple$2[0];
 59731  		bytes = _tuple$2[1];
 59732  		_tuple$3 = get28BitsFromEnd(bytes, 4);
 59733  		out.nilCheck, out[3] = _tuple$3[0];
 59734  		bytes = _tuple$3[1];
 59735  		_tuple$4 = get28BitsFromEnd(bytes, 0);
 59736  		out.nilCheck, out[4] = _tuple$4[0];
 59737  		bytes = _tuple$4[1];
 59738  		_tuple$5 = get28BitsFromEnd(bytes, 4);
 59739  		out.nilCheck, out[5] = _tuple$5[0];
 59740  		bytes = _tuple$5[1];
 59741  		_tuple$6 = get28BitsFromEnd(bytes, 0);
 59742  		out.nilCheck, out[6] = _tuple$6[0];
 59743  		bytes = _tuple$6[1];
 59744  		_tuple$7 = get28BitsFromEnd(bytes, 4);
 59745  		out.nilCheck, out[7] = _tuple$7[0];
 59746  		bytes = _tuple$7[1];
 59747  	};
 59748  	p224ToBig = function(in$1) {
 59749  		var buf, in$1;
 59750  		buf = arrayType$2.zero();
 59751  		buf[27] = (((in$1.nilCheck, in$1[0]) << 24 >>> 24));
 59752  		buf[26] = ((((in$1.nilCheck, in$1[0]) >>> 8 >>> 0) << 24 >>> 24));
 59753  		buf[25] = ((((in$1.nilCheck, in$1[0]) >>> 16 >>> 0) << 24 >>> 24));
 59754  		buf[24] = ((((((((((in$1.nilCheck, in$1[0]) >>> 24 >>> 0)) & 15) >>> 0)) | (((((in$1.nilCheck, in$1[1]) << 4 >>> 0)) & 240) >>> 0)) >>> 0) << 24 >>> 24));
 59755  		buf[23] = ((((in$1.nilCheck, in$1[1]) >>> 4 >>> 0) << 24 >>> 24));
 59756  		buf[22] = ((((in$1.nilCheck, in$1[1]) >>> 12 >>> 0) << 24 >>> 24));
 59757  		buf[21] = ((((in$1.nilCheck, in$1[1]) >>> 20 >>> 0) << 24 >>> 24));
 59758  		buf[20] = (((in$1.nilCheck, in$1[2]) << 24 >>> 24));
 59759  		buf[19] = ((((in$1.nilCheck, in$1[2]) >>> 8 >>> 0) << 24 >>> 24));
 59760  		buf[18] = ((((in$1.nilCheck, in$1[2]) >>> 16 >>> 0) << 24 >>> 24));
 59761  		buf[17] = ((((((((((in$1.nilCheck, in$1[2]) >>> 24 >>> 0)) & 15) >>> 0)) | (((((in$1.nilCheck, in$1[3]) << 4 >>> 0)) & 240) >>> 0)) >>> 0) << 24 >>> 24));
 59762  		buf[16] = ((((in$1.nilCheck, in$1[3]) >>> 4 >>> 0) << 24 >>> 24));
 59763  		buf[15] = ((((in$1.nilCheck, in$1[3]) >>> 12 >>> 0) << 24 >>> 24));
 59764  		buf[14] = ((((in$1.nilCheck, in$1[3]) >>> 20 >>> 0) << 24 >>> 24));
 59765  		buf[13] = (((in$1.nilCheck, in$1[4]) << 24 >>> 24));
 59766  		buf[12] = ((((in$1.nilCheck, in$1[4]) >>> 8 >>> 0) << 24 >>> 24));
 59767  		buf[11] = ((((in$1.nilCheck, in$1[4]) >>> 16 >>> 0) << 24 >>> 24));
 59768  		buf[10] = ((((((((((in$1.nilCheck, in$1[4]) >>> 24 >>> 0)) & 15) >>> 0)) | (((((in$1.nilCheck, in$1[5]) << 4 >>> 0)) & 240) >>> 0)) >>> 0) << 24 >>> 24));
 59769  		buf[9] = ((((in$1.nilCheck, in$1[5]) >>> 4 >>> 0) << 24 >>> 24));
 59770  		buf[8] = ((((in$1.nilCheck, in$1[5]) >>> 12 >>> 0) << 24 >>> 24));
 59771  		buf[7] = ((((in$1.nilCheck, in$1[5]) >>> 20 >>> 0) << 24 >>> 24));
 59772  		buf[6] = (((in$1.nilCheck, in$1[6]) << 24 >>> 24));
 59773  		buf[5] = ((((in$1.nilCheck, in$1[6]) >>> 8 >>> 0) << 24 >>> 24));
 59774  		buf[4] = ((((in$1.nilCheck, in$1[6]) >>> 16 >>> 0) << 24 >>> 24));
 59775  		buf[3] = ((((((((((in$1.nilCheck, in$1[6]) >>> 24 >>> 0)) & 15) >>> 0)) | (((((in$1.nilCheck, in$1[7]) << 4 >>> 0)) & 240) >>> 0)) >>> 0) << 24 >>> 24));
 59776  		buf[2] = ((((in$1.nilCheck, in$1[7]) >>> 4 >>> 0) << 24 >>> 24));
 59777  		buf[1] = ((((in$1.nilCheck, in$1[7]) >>> 12 >>> 0) << 24 >>> 24));
 59778  		buf[0] = ((((in$1.nilCheck, in$1[7]) >>> 20 >>> 0) << 24 >>> 24));
 59779  		return new big.Int.ptr(false, big.nat.nil).SetBytes(new sliceType(buf));
 59780  	};
 59781  	initP256 = function() {
 59782  		var _r, _r$1, _r$2, _r$3, _r$4, _r$5, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, _tuple$5, $s, $r;
 59783  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; _tuple$4 = $f._tuple$4; _tuple$5 = $f._tuple$5; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 59784  		p256Params = new CurveParams.ptr(ptrType$1.nil, ptrType$1.nil, ptrType$1.nil, ptrType$1.nil, ptrType$1.nil, 0, "P-256");
 59785  		_r = new big.Int.ptr(false, big.nat.nil).SetString("115792089210356248762697446949407573530086143415290314195533631308867097853951", 10); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 59786  		_tuple = _r;
 59787  		p256Params.P = _tuple[0];
 59788  		_r$1 = new big.Int.ptr(false, big.nat.nil).SetString("115792089210356248762697446949407573529996955224135760342422259061068512044369", 10); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 59789  		_tuple$1 = _r$1;
 59790  		p256Params.N = _tuple$1[0];
 59791  		_r$2 = new big.Int.ptr(false, big.nat.nil).SetString("5ac635d8aa3a93e7b3ebbd55769886bc651d06b0cc53b0f63bce3c3e27d2604b", 16); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 59792  		_tuple$2 = _r$2;
 59793  		p256Params.B = _tuple$2[0];
 59794  		_r$3 = new big.Int.ptr(false, big.nat.nil).SetString("6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296", 16); /* */ $s = 4; case 4: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 59795  		_tuple$3 = _r$3;
 59796  		p256Params.Gx = _tuple$3[0];
 59797  		_r$4 = new big.Int.ptr(false, big.nat.nil).SetString("4fe342e2fe1a7f9b8ee7eb4a7c0f9e162bce33576b315ececbb6406837bf51f5", 16); /* */ $s = 5; case 5: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 59798  		_tuple$4 = _r$4;
 59799  		p256Params.Gy = _tuple$4[0];
 59800  		p256Params.BitSize = 256;
 59801  		_r$5 = new big.Int.ptr(false, big.nat.nil).SetString("7fffffff00000001fffffffe8000000100000000ffffffff0000000180000000", 16); /* */ $s = 6; case 6: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
 59802  		_tuple$5 = _r$5;
 59803  		p256RInverse = _tuple$5[0];
 59804  		initP256Arch();
 59805  		$s = -1; return;
 59806  		/* */ } return; } if ($f === undefined) { $f = { $blk: initP256 }; } $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f._tuple$4 = _tuple$4; $f._tuple$5 = _tuple$5; $f.$s = $s; $f.$r = $r; return $f;
 59807  	};
 59808  	p256Curve.ptr.prototype.Params = function() {
 59809  		var curve;
 59810  		curve = this;
 59811  		return curve.CurveParams;
 59812  	};
 59813  	p256Curve.prototype.Params = function() { return this.$val.Params(); };
 59814  	p256GetScalar = function(out, in$1) {
 59815  		var _i, _r, _ref, i, in$1, n, out, scalarBytes, v, x, $s, $r;
 59816  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _i = $f._i; _r = $f._r; _ref = $f._ref; i = $f.i; in$1 = $f.in$1; n = $f.n; out = $f.out; scalarBytes = $f.scalarBytes; v = $f.v; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 59817  		n = new big.Int.ptr(false, big.nat.nil).SetBytes(in$1);
 59818  		scalarBytes = sliceType.nil;
 59819  		/* */ if (n.Cmp(p256Params.N) >= 0) { $s = 1; continue; }
 59820  		/* */ $s = 2; continue;
 59821  		/* if (n.Cmp(p256Params.N) >= 0) { */ case 1:
 59822  			_r = n.Mod(n, p256Params.N); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 59823  			_r;
 59824  			scalarBytes = n.Bytes();
 59825  			$s = 3; continue;
 59826  		/* } else { */ case 2:
 59827  			scalarBytes = in$1;
 59828  		/* } */ case 3:
 59829  		_ref = scalarBytes;
 59830  		_i = 0;
 59831  		while (true) {
 59832  			if (!(_i < _ref.$length)) { break; }
 59833  			i = _i;
 59834  			v = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
 59835  			(x = scalarBytes.$length - ((1 + i >> 0)) >> 0, out.nilCheck, ((x < 0 || x >= out.length) ? ($throwRuntimeError("index out of range"), undefined) : out[x] = v));
 59836  			_i++;
 59837  		}
 59838  		$s = -1; return;
 59839  		/* */ } return; } if ($f === undefined) { $f = { $blk: p256GetScalar }; } $f._i = _i; $f._r = _r; $f._ref = _ref; $f.i = i; $f.in$1 = in$1; $f.n = n; $f.out = out; $f.scalarBytes = scalarBytes; $f.v = v; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
 59840  	};
 59841  	p256Curve.ptr.prototype.ScalarBaseMult = function(scalar) {
 59842  		var _r, _tmp, _tmp$1, _tmp$2, _tuple, scalar, scalarReversed, x, x1, y, y1, z1, $s, $r;
 59843  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tuple = $f._tuple; scalar = $f.scalar; scalarReversed = $f.scalarReversed; x = $f.x; x1 = $f.x1; y = $f.y; y1 = $f.y1; z1 = $f.z1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 59844  		scalarReversed = [scalarReversed];
 59845  		x1 = [x1];
 59846  		y1 = [y1];
 59847  		z1 = [z1];
 59848  		x = ptrType$1.nil;
 59849  		y = ptrType$1.nil;
 59850  		scalarReversed[0] = arrayType$3.zero();
 59851  		$r = p256GetScalar(scalarReversed[0], scalar); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 59852  		_tmp = arrayType$4.zero();
 59853  		_tmp$1 = arrayType$4.zero();
 59854  		_tmp$2 = arrayType$4.zero();
 59855  		x1[0] = $clone(_tmp, arrayType$4);
 59856  		y1[0] = $clone(_tmp$1, arrayType$4);
 59857  		z1[0] = $clone(_tmp$2, arrayType$4);
 59858  		p256ScalarBaseMult(x1[0], y1[0], z1[0], scalarReversed[0]);
 59859  		_r = p256ToAffine(x1[0], y1[0], z1[0]); /* */ $s = 2; case 2: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 59860  		_tuple = _r;
 59861  		x = _tuple[0];
 59862  		y = _tuple[1];
 59863  		$s = -1; return [x, y];
 59864  		/* */ } return; } if ($f === undefined) { $f = { $blk: p256Curve.ptr.prototype.ScalarBaseMult }; } $f._r = _r; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tuple = _tuple; $f.scalar = scalar; $f.scalarReversed = scalarReversed; $f.x = x; $f.x1 = x1; $f.y = y; $f.y1 = y1; $f.z1 = z1; $f.$s = $s; $f.$r = $r; return $f;
 59865  	};
 59866  	p256Curve.prototype.ScalarBaseMult = function(scalar) { return this.$val.ScalarBaseMult(scalar); };
 59867  	p256Curve.ptr.prototype.ScalarMult = function(bigX, bigY, scalar) {
 59868  		var _r, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tuple, bigX, bigY, px, py, scalar, scalarReversed, x, x1, y, y1, z1, $s, $r;
 59869  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tmp$4 = $f._tmp$4; _tuple = $f._tuple; bigX = $f.bigX; bigY = $f.bigY; px = $f.px; py = $f.py; scalar = $f.scalar; scalarReversed = $f.scalarReversed; x = $f.x; x1 = $f.x1; y = $f.y; y1 = $f.y1; z1 = $f.z1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 59870  		px = [px];
 59871  		py = [py];
 59872  		scalarReversed = [scalarReversed];
 59873  		x1 = [x1];
 59874  		y1 = [y1];
 59875  		z1 = [z1];
 59876  		x = ptrType$1.nil;
 59877  		y = ptrType$1.nil;
 59878  		scalarReversed[0] = arrayType$3.zero();
 59879  		$r = p256GetScalar(scalarReversed[0], scalar); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 59880  		_tmp = arrayType$4.zero();
 59881  		_tmp$1 = arrayType$4.zero();
 59882  		_tmp$2 = arrayType$4.zero();
 59883  		_tmp$3 = arrayType$4.zero();
 59884  		_tmp$4 = arrayType$4.zero();
 59885  		px[0] = $clone(_tmp, arrayType$4);
 59886  		py[0] = $clone(_tmp$1, arrayType$4);
 59887  		x1[0] = $clone(_tmp$2, arrayType$4);
 59888  		y1[0] = $clone(_tmp$3, arrayType$4);
 59889  		z1[0] = $clone(_tmp$4, arrayType$4);
 59890  		$r = p256FromBig(px[0], bigX); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 59891  		$r = p256FromBig(py[0], bigY); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 59892  		p256ScalarMult(x1[0], y1[0], z1[0], px[0], py[0], scalarReversed[0]);
 59893  		_r = p256ToAffine(x1[0], y1[0], z1[0]); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 59894  		_tuple = _r;
 59895  		x = _tuple[0];
 59896  		y = _tuple[1];
 59897  		$s = -1; return [x, y];
 59898  		/* */ } return; } if ($f === undefined) { $f = { $blk: p256Curve.ptr.prototype.ScalarMult }; } $f._r = _r; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tmp$4 = _tmp$4; $f._tuple = _tuple; $f.bigX = bigX; $f.bigY = bigY; $f.px = px; $f.py = py; $f.scalar = scalar; $f.scalarReversed = scalarReversed; $f.x = x; $f.x1 = x1; $f.y = y; $f.y1 = y1; $f.z1 = z1; $f.$s = $s; $f.$r = $r; return $f;
 59899  	};
 59900  	p256Curve.prototype.ScalarMult = function(bigX, bigY, scalar) { return this.$val.ScalarMult(bigX, bigY, scalar); };
 59901  	nonZeroToAllOnes = function(x) {
 59902  		var x;
 59903  		return ((((x - 1 >>> 0)) >>> 31 >>> 0)) - 1 >>> 0;
 59904  	};
 59905  	p256ReduceCarry = function(inout, carry) {
 59906  		var carry, carry_mask, inout;
 59907  		carry_mask = nonZeroToAllOnes(carry);
 59908  		inout.nilCheck, inout[0] = ((inout.nilCheck, inout[0]) + ((carry << 1 >>> 0)) >>> 0);
 59909  		inout.nilCheck, inout[3] = ((inout.nilCheck, inout[3]) + (((268435456 & carry_mask) >>> 0)) >>> 0);
 59910  		inout.nilCheck, inout[3] = ((inout.nilCheck, inout[3]) - ((carry << 11 >>> 0)) >>> 0);
 59911  		inout.nilCheck, inout[4] = ((inout.nilCheck, inout[4]) + (((536870911 & carry_mask) >>> 0)) >>> 0);
 59912  		inout.nilCheck, inout[5] = ((inout.nilCheck, inout[5]) + (((268435455 & carry_mask) >>> 0)) >>> 0);
 59913  		inout.nilCheck, inout[6] = ((inout.nilCheck, inout[6]) + (((536870911 & carry_mask) >>> 0)) >>> 0);
 59914  		inout.nilCheck, inout[6] = ((inout.nilCheck, inout[6]) - ((carry << 22 >>> 0)) >>> 0);
 59915  		inout.nilCheck, inout[7] = ((inout.nilCheck, inout[7]) - (((1 & carry_mask) >>> 0)) >>> 0);
 59916  		inout.nilCheck, inout[7] = ((inout.nilCheck, inout[7]) + ((carry << 25 >>> 0)) >>> 0);
 59917  	};
 59918  	p256Sum = function(out, in$1, in2) {
 59919  		var carry, i, in$1, in2, out;
 59920  		carry = 0;
 59921  		i = 0;
 59922  		while (true) {
 59923  			out.nilCheck, ((i < 0 || i >= out.length) ? ($throwRuntimeError("index out of range"), undefined) : out[i] = ((in$1.nilCheck, ((i < 0 || i >= in$1.length) ? ($throwRuntimeError("index out of range"), undefined) : in$1[i])) + (in2.nilCheck, ((i < 0 || i >= in2.length) ? ($throwRuntimeError("index out of range"), undefined) : in2[i])) >>> 0));
 59924  			out.nilCheck, ((i < 0 || i >= out.length) ? ($throwRuntimeError("index out of range"), undefined) : out[i] = ((out.nilCheck, ((i < 0 || i >= out.length) ? ($throwRuntimeError("index out of range"), undefined) : out[i])) + (carry) >>> 0));
 59925  			carry = (out.nilCheck, ((i < 0 || i >= out.length) ? ($throwRuntimeError("index out of range"), undefined) : out[i])) >>> 29 >>> 0;
 59926  			out.nilCheck, ((i < 0 || i >= out.length) ? ($throwRuntimeError("index out of range"), undefined) : out[i] = (((out.nilCheck, ((i < 0 || i >= out.length) ? ($throwRuntimeError("index out of range"), undefined) : out[i])) & (536870911)) >>> 0));
 59927  			i = i + (1) >> 0;
 59928  			if (i === 9) {
 59929  				break;
 59930  			}
 59931  			out.nilCheck, ((i < 0 || i >= out.length) ? ($throwRuntimeError("index out of range"), undefined) : out[i] = ((in$1.nilCheck, ((i < 0 || i >= in$1.length) ? ($throwRuntimeError("index out of range"), undefined) : in$1[i])) + (in2.nilCheck, ((i < 0 || i >= in2.length) ? ($throwRuntimeError("index out of range"), undefined) : in2[i])) >>> 0));
 59932  			out.nilCheck, ((i < 0 || i >= out.length) ? ($throwRuntimeError("index out of range"), undefined) : out[i] = ((out.nilCheck, ((i < 0 || i >= out.length) ? ($throwRuntimeError("index out of range"), undefined) : out[i])) + (carry) >>> 0));
 59933  			carry = (out.nilCheck, ((i < 0 || i >= out.length) ? ($throwRuntimeError("index out of range"), undefined) : out[i])) >>> 28 >>> 0;
 59934  			out.nilCheck, ((i < 0 || i >= out.length) ? ($throwRuntimeError("index out of range"), undefined) : out[i] = (((out.nilCheck, ((i < 0 || i >= out.length) ? ($throwRuntimeError("index out of range"), undefined) : out[i])) & (268435455)) >>> 0));
 59935  			i = i + (1) >> 0;
 59936  		}
 59937  		p256ReduceCarry(out, carry);
 59938  	};
 59939  	p256Diff = function(out, in$1, in2) {
 59940  		var carry, i, in$1, in2, out;
 59941  		carry = 0;
 59942  		i = 0;
 59943  		while (true) {
 59944  			out.nilCheck, ((i < 0 || i >= out.length) ? ($throwRuntimeError("index out of range"), undefined) : out[i] = ((in$1.nilCheck, ((i < 0 || i >= in$1.length) ? ($throwRuntimeError("index out of range"), undefined) : in$1[i])) - (in2.nilCheck, ((i < 0 || i >= in2.length) ? ($throwRuntimeError("index out of range"), undefined) : in2[i])) >>> 0));
 59945  			out.nilCheck, ((i < 0 || i >= out.length) ? ($throwRuntimeError("index out of range"), undefined) : out[i] = ((out.nilCheck, ((i < 0 || i >= out.length) ? ($throwRuntimeError("index out of range"), undefined) : out[i])) + (((i < 0 || i >= p256Zero31.length) ? ($throwRuntimeError("index out of range"), undefined) : p256Zero31[i])) >>> 0));
 59946  			out.nilCheck, ((i < 0 || i >= out.length) ? ($throwRuntimeError("index out of range"), undefined) : out[i] = ((out.nilCheck, ((i < 0 || i >= out.length) ? ($throwRuntimeError("index out of range"), undefined) : out[i])) + (carry) >>> 0));
 59947  			carry = (out.nilCheck, ((i < 0 || i >= out.length) ? ($throwRuntimeError("index out of range"), undefined) : out[i])) >>> 29 >>> 0;
 59948  			out.nilCheck, ((i < 0 || i >= out.length) ? ($throwRuntimeError("index out of range"), undefined) : out[i] = (((out.nilCheck, ((i < 0 || i >= out.length) ? ($throwRuntimeError("index out of range"), undefined) : out[i])) & (536870911)) >>> 0));
 59949  			i = i + (1) >> 0;
 59950  			if (i === 9) {
 59951  				break;
 59952  			}
 59953  			out.nilCheck, ((i < 0 || i >= out.length) ? ($throwRuntimeError("index out of range"), undefined) : out[i] = ((in$1.nilCheck, ((i < 0 || i >= in$1.length) ? ($throwRuntimeError("index out of range"), undefined) : in$1[i])) - (in2.nilCheck, ((i < 0 || i >= in2.length) ? ($throwRuntimeError("index out of range"), undefined) : in2[i])) >>> 0));
 59954  			out.nilCheck, ((i < 0 || i >= out.length) ? ($throwRuntimeError("index out of range"), undefined) : out[i] = ((out.nilCheck, ((i < 0 || i >= out.length) ? ($throwRuntimeError("index out of range"), undefined) : out[i])) + (((i < 0 || i >= p256Zero31.length) ? ($throwRuntimeError("index out of range"), undefined) : p256Zero31[i])) >>> 0));
 59955  			out.nilCheck, ((i < 0 || i >= out.length) ? ($throwRuntimeError("index out of range"), undefined) : out[i] = ((out.nilCheck, ((i < 0 || i >= out.length) ? ($throwRuntimeError("index out of range"), undefined) : out[i])) + (carry) >>> 0));
 59956  			carry = (out.nilCheck, ((i < 0 || i >= out.length) ? ($throwRuntimeError("index out of range"), undefined) : out[i])) >>> 28 >>> 0;
 59957  			out.nilCheck, ((i < 0 || i >= out.length) ? ($throwRuntimeError("index out of range"), undefined) : out[i] = (((out.nilCheck, ((i < 0 || i >= out.length) ? ($throwRuntimeError("index out of range"), undefined) : out[i])) & (268435455)) >>> 0));
 59958  			i = i + (1) >> 0;
 59959  		}
 59960  		p256ReduceCarry(out, carry);
 59961  	};
 59962  	p256ReduceDegree = function(out, tmp) {
 59963  		var _index, _index$1, _index$10, _index$11, _index$12, _index$13, _index$14, _index$15, _index$16, _index$17, _index$18, _index$19, _index$2, _index$20, _index$21, _index$22, _index$23, _index$24, _index$3, _index$4, _index$5, _index$6, _index$7, _index$8, _index$9, _tmp, _tmp$1, _tmp$2, carry, i, i$1, i$2, out, tmp, tmp2, x, x$1, x$10, x$11, x$12, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9, xMask;
 59964  		tmp2 = arrayType$5.zero();
 59965  		_tmp = 0;
 59966  		_tmp$1 = 0;
 59967  		_tmp$2 = 0;
 59968  		carry = _tmp;
 59969  		x = _tmp$1;
 59970  		xMask = _tmp$2;
 59971  		tmp2[0] = ((((tmp[0].$low >>> 0)) & 536870911) >>> 0);
 59972  		tmp2[1] = (((tmp[0].$low >>> 0)) >>> 29 >>> 0);
 59973  		tmp2[1] = ((tmp2[1] | ((((((($shiftRightUint64(tmp[0], 32).$low >>> 0)) << 3 >>> 0)) & 268435455) >>> 0))) >>> 0);
 59974  		tmp2[1] = (tmp2[1] + (((((tmp[1].$low >>> 0)) & 268435455) >>> 0)) >>> 0);
 59975  		carry = tmp2[1] >>> 28 >>> 0;
 59976  		tmp2[1] = ((tmp2[1] & (268435455)) >>> 0);
 59977  		i = 2;
 59978  		while (true) {
 59979  			if (!(i < 17)) { break; }
 59980  			((i < 0 || i >= tmp2.length) ? ($throwRuntimeError("index out of range"), undefined) : tmp2[i] = (((($shiftRightUint64((x$1 = i - 2 >> 0, ((x$1 < 0 || x$1 >= tmp.length) ? ($throwRuntimeError("index out of range"), undefined) : tmp[x$1])), 32).$low >>> 0))) >>> 25 >>> 0));
 59981  			((i < 0 || i >= tmp2.length) ? ($throwRuntimeError("index out of range"), undefined) : tmp2[i] = (((i < 0 || i >= tmp2.length) ? ($throwRuntimeError("index out of range"), undefined) : tmp2[i]) + ((((((x$2 = i - 1 >> 0, ((x$2 < 0 || x$2 >= tmp.length) ? ($throwRuntimeError("index out of range"), undefined) : tmp[x$2])).$low >>> 0))) >>> 28 >>> 0)) >>> 0));
 59982  			((i < 0 || i >= tmp2.length) ? ($throwRuntimeError("index out of range"), undefined) : tmp2[i] = (((i < 0 || i >= tmp2.length) ? ($throwRuntimeError("index out of range"), undefined) : tmp2[i]) + ((((((($shiftRightUint64((x$3 = i - 1 >> 0, ((x$3 < 0 || x$3 >= tmp.length) ? ($throwRuntimeError("index out of range"), undefined) : tmp[x$3])), 32).$low >>> 0)) << 4 >>> 0)) & 536870911) >>> 0)) >>> 0));
 59983  			((i < 0 || i >= tmp2.length) ? ($throwRuntimeError("index out of range"), undefined) : tmp2[i] = (((i < 0 || i >= tmp2.length) ? ($throwRuntimeError("index out of range"), undefined) : tmp2[i]) + (((((((i < 0 || i >= tmp.length) ? ($throwRuntimeError("index out of range"), undefined) : tmp[i]).$low >>> 0)) & 536870911) >>> 0)) >>> 0));
 59984  			((i < 0 || i >= tmp2.length) ? ($throwRuntimeError("index out of range"), undefined) : tmp2[i] = (((i < 0 || i >= tmp2.length) ? ($throwRuntimeError("index out of range"), undefined) : tmp2[i]) + (carry) >>> 0));
 59985  			carry = ((i < 0 || i >= tmp2.length) ? ($throwRuntimeError("index out of range"), undefined) : tmp2[i]) >>> 29 >>> 0;
 59986  			((i < 0 || i >= tmp2.length) ? ($throwRuntimeError("index out of range"), undefined) : tmp2[i] = ((((i < 0 || i >= tmp2.length) ? ($throwRuntimeError("index out of range"), undefined) : tmp2[i]) & (536870911)) >>> 0));
 59987  			i = i + (1) >> 0;
 59988  			if (i === 17) {
 59989  				break;
 59990  			}
 59991  			((i < 0 || i >= tmp2.length) ? ($throwRuntimeError("index out of range"), undefined) : tmp2[i] = ((($shiftRightUint64((x$4 = i - 2 >> 0, ((x$4 < 0 || x$4 >= tmp.length) ? ($throwRuntimeError("index out of range"), undefined) : tmp[x$4])), 32).$low >>> 0)) >>> 25 >>> 0));
 59992  			((i < 0 || i >= tmp2.length) ? ($throwRuntimeError("index out of range"), undefined) : tmp2[i] = (((i < 0 || i >= tmp2.length) ? ($throwRuntimeError("index out of range"), undefined) : tmp2[i]) + (((((x$5 = i - 1 >> 0, ((x$5 < 0 || x$5 >= tmp.length) ? ($throwRuntimeError("index out of range"), undefined) : tmp[x$5])).$low >>> 0)) >>> 29 >>> 0)) >>> 0));
 59993  			((i < 0 || i >= tmp2.length) ? ($throwRuntimeError("index out of range"), undefined) : tmp2[i] = (((i < 0 || i >= tmp2.length) ? ($throwRuntimeError("index out of range"), undefined) : tmp2[i]) + (((((((($shiftRightUint64((x$6 = i - 1 >> 0, ((x$6 < 0 || x$6 >= tmp.length) ? ($throwRuntimeError("index out of range"), undefined) : tmp[x$6])), 32).$low >>> 0))) << 3 >>> 0)) & 268435455) >>> 0)) >>> 0));
 59994  			((i < 0 || i >= tmp2.length) ? ($throwRuntimeError("index out of range"), undefined) : tmp2[i] = (((i < 0 || i >= tmp2.length) ? ($throwRuntimeError("index out of range"), undefined) : tmp2[i]) + (((((((i < 0 || i >= tmp.length) ? ($throwRuntimeError("index out of range"), undefined) : tmp[i]).$low >>> 0)) & 268435455) >>> 0)) >>> 0));
 59995  			((i < 0 || i >= tmp2.length) ? ($throwRuntimeError("index out of range"), undefined) : tmp2[i] = (((i < 0 || i >= tmp2.length) ? ($throwRuntimeError("index out of range"), undefined) : tmp2[i]) + (carry) >>> 0));
 59996  			carry = ((i < 0 || i >= tmp2.length) ? ($throwRuntimeError("index out of range"), undefined) : tmp2[i]) >>> 28 >>> 0;
 59997  			((i < 0 || i >= tmp2.length) ? ($throwRuntimeError("index out of range"), undefined) : tmp2[i] = ((((i < 0 || i >= tmp2.length) ? ($throwRuntimeError("index out of range"), undefined) : tmp2[i]) & (268435455)) >>> 0));
 59998  			i = i + (1) >> 0;
 59999  		}
 60000  		tmp2[17] = ((($shiftRightUint64(tmp[15], 32).$low >>> 0)) >>> 25 >>> 0);
 60001  		tmp2[17] = (tmp2[17] + ((((tmp[16].$low >>> 0)) >>> 29 >>> 0)) >>> 0);
 60002  		tmp2[17] = (tmp2[17] + (((($shiftRightUint64(tmp[16], 32).$low >>> 0)) << 3 >>> 0)) >>> 0);
 60003  		tmp2[17] = (tmp2[17] + (carry) >>> 0);
 60004  		i$1 = 0;
 60005  		while (true) {
 60006  			_index = i$1 + 1 >> 0;
 60007  			((_index < 0 || _index >= tmp2.length) ? ($throwRuntimeError("index out of range"), undefined) : tmp2[_index] = (((_index < 0 || _index >= tmp2.length) ? ($throwRuntimeError("index out of range"), undefined) : tmp2[_index]) + ((((i$1 < 0 || i$1 >= tmp2.length) ? ($throwRuntimeError("index out of range"), undefined) : tmp2[i$1]) >>> 29 >>> 0)) >>> 0));
 60008  			x = (((i$1 < 0 || i$1 >= tmp2.length) ? ($throwRuntimeError("index out of range"), undefined) : tmp2[i$1]) & 536870911) >>> 0;
 60009  			xMask = nonZeroToAllOnes(x);
 60010  			((i$1 < 0 || i$1 >= tmp2.length) ? ($throwRuntimeError("index out of range"), undefined) : tmp2[i$1] = 0);
 60011  			_index$1 = i$1 + 3 >> 0;
 60012  			((_index$1 < 0 || _index$1 >= tmp2.length) ? ($throwRuntimeError("index out of range"), undefined) : tmp2[_index$1] = (((_index$1 < 0 || _index$1 >= tmp2.length) ? ($throwRuntimeError("index out of range"), undefined) : tmp2[_index$1]) + (((((x << 10 >>> 0)) & 268435455) >>> 0)) >>> 0));
 60013  			_index$2 = i$1 + 4 >> 0;
 60014  			((_index$2 < 0 || _index$2 >= tmp2.length) ? ($throwRuntimeError("index out of range"), undefined) : tmp2[_index$2] = (((_index$2 < 0 || _index$2 >= tmp2.length) ? ($throwRuntimeError("index out of range"), undefined) : tmp2[_index$2]) + (((x >>> 18 >>> 0))) >>> 0));
 60015  			_index$3 = i$1 + 6 >> 0;
 60016  			((_index$3 < 0 || _index$3 >= tmp2.length) ? ($throwRuntimeError("index out of range"), undefined) : tmp2[_index$3] = (((_index$3 < 0 || _index$3 >= tmp2.length) ? ($throwRuntimeError("index out of range"), undefined) : tmp2[_index$3]) + (((((x << 21 >>> 0)) & 536870911) >>> 0)) >>> 0));
 60017  			_index$4 = i$1 + 7 >> 0;
 60018  			((_index$4 < 0 || _index$4 >= tmp2.length) ? ($throwRuntimeError("index out of range"), undefined) : tmp2[_index$4] = (((_index$4 < 0 || _index$4 >= tmp2.length) ? ($throwRuntimeError("index out of range"), undefined) : tmp2[_index$4]) + ((x >>> 8 >>> 0)) >>> 0));
 60019  			_index$5 = i$1 + 7 >> 0;
 60020  			((_index$5 < 0 || _index$5 >= tmp2.length) ? ($throwRuntimeError("index out of range"), undefined) : tmp2[_index$5] = (((_index$5 < 0 || _index$5 >= tmp2.length) ? ($throwRuntimeError("index out of range"), undefined) : tmp2[_index$5]) + (((268435456 & xMask) >>> 0)) >>> 0));
 60021  			_index$6 = i$1 + 8 >> 0;
 60022  			((_index$6 < 0 || _index$6 >= tmp2.length) ? ($throwRuntimeError("index out of range"), undefined) : tmp2[_index$6] = (((_index$6 < 0 || _index$6 >= tmp2.length) ? ($throwRuntimeError("index out of range"), undefined) : tmp2[_index$6]) + (((((x - 1 >>> 0)) & xMask) >>> 0)) >>> 0));
 60023  			_index$7 = i$1 + 7 >> 0;
 60024  			((_index$7 < 0 || _index$7 >= tmp2.length) ? ($throwRuntimeError("index out of range"), undefined) : tmp2[_index$7] = (((_index$7 < 0 || _index$7 >= tmp2.length) ? ($throwRuntimeError("index out of range"), undefined) : tmp2[_index$7]) - (((((x << 24 >>> 0)) & 268435455) >>> 0)) >>> 0));
 60025  			_index$8 = i$1 + 8 >> 0;
 60026  			((_index$8 < 0 || _index$8 >= tmp2.length) ? ($throwRuntimeError("index out of range"), undefined) : tmp2[_index$8] = (((_index$8 < 0 || _index$8 >= tmp2.length) ? ($throwRuntimeError("index out of range"), undefined) : tmp2[_index$8]) - ((x >>> 4 >>> 0)) >>> 0));
 60027  			_index$9 = i$1 + 8 >> 0;
 60028  			((_index$9 < 0 || _index$9 >= tmp2.length) ? ($throwRuntimeError("index out of range"), undefined) : tmp2[_index$9] = (((_index$9 < 0 || _index$9 >= tmp2.length) ? ($throwRuntimeError("index out of range"), undefined) : tmp2[_index$9]) + (((536870912 & xMask) >>> 0)) >>> 0));
 60029  			_index$10 = i$1 + 8 >> 0;
 60030  			((_index$10 < 0 || _index$10 >= tmp2.length) ? ($throwRuntimeError("index out of range"), undefined) : tmp2[_index$10] = (((_index$10 < 0 || _index$10 >= tmp2.length) ? ($throwRuntimeError("index out of range"), undefined) : tmp2[_index$10]) - (x) >>> 0));
 60031  			_index$11 = i$1 + 8 >> 0;
 60032  			((_index$11 < 0 || _index$11 >= tmp2.length) ? ($throwRuntimeError("index out of range"), undefined) : tmp2[_index$11] = (((_index$11 < 0 || _index$11 >= tmp2.length) ? ($throwRuntimeError("index out of range"), undefined) : tmp2[_index$11]) + (((((x << 28 >>> 0)) & 536870911) >>> 0)) >>> 0));
 60033  			_index$12 = i$1 + 9 >> 0;
 60034  			((_index$12 < 0 || _index$12 >= tmp2.length) ? ($throwRuntimeError("index out of range"), undefined) : tmp2[_index$12] = (((_index$12 < 0 || _index$12 >= tmp2.length) ? ($throwRuntimeError("index out of range"), undefined) : tmp2[_index$12]) + (((((((x >>> 1 >>> 0)) - 1 >>> 0)) & xMask) >>> 0)) >>> 0));
 60035  			if ((i$1 + 1 >> 0) === 9) {
 60036  				break;
 60037  			}
 60038  			_index$13 = i$1 + 2 >> 0;
 60039  			((_index$13 < 0 || _index$13 >= tmp2.length) ? ($throwRuntimeError("index out of range"), undefined) : tmp2[_index$13] = (((_index$13 < 0 || _index$13 >= tmp2.length) ? ($throwRuntimeError("index out of range"), undefined) : tmp2[_index$13]) + (((x$7 = i$1 + 1 >> 0, ((x$7 < 0 || x$7 >= tmp2.length) ? ($throwRuntimeError("index out of range"), undefined) : tmp2[x$7])) >>> 28 >>> 0)) >>> 0));
 60040  			x = ((x$8 = i$1 + 1 >> 0, ((x$8 < 0 || x$8 >= tmp2.length) ? ($throwRuntimeError("index out of range"), undefined) : tmp2[x$8])) & 268435455) >>> 0;
 60041  			xMask = nonZeroToAllOnes(x);
 60042  			(x$9 = i$1 + 1 >> 0, ((x$9 < 0 || x$9 >= tmp2.length) ? ($throwRuntimeError("index out of range"), undefined) : tmp2[x$9] = 0));
 60043  			_index$14 = i$1 + 4 >> 0;
 60044  			((_index$14 < 0 || _index$14 >= tmp2.length) ? ($throwRuntimeError("index out of range"), undefined) : tmp2[_index$14] = (((_index$14 < 0 || _index$14 >= tmp2.length) ? ($throwRuntimeError("index out of range"), undefined) : tmp2[_index$14]) + (((((x << 11 >>> 0)) & 536870911) >>> 0)) >>> 0));
 60045  			_index$15 = i$1 + 5 >> 0;
 60046  			((_index$15 < 0 || _index$15 >= tmp2.length) ? ($throwRuntimeError("index out of range"), undefined) : tmp2[_index$15] = (((_index$15 < 0 || _index$15 >= tmp2.length) ? ($throwRuntimeError("index out of range"), undefined) : tmp2[_index$15]) + (((x >>> 18 >>> 0))) >>> 0));
 60047  			_index$16 = i$1 + 7 >> 0;
 60048  			((_index$16 < 0 || _index$16 >= tmp2.length) ? ($throwRuntimeError("index out of range"), undefined) : tmp2[_index$16] = (((_index$16 < 0 || _index$16 >= tmp2.length) ? ($throwRuntimeError("index out of range"), undefined) : tmp2[_index$16]) + (((((x << 21 >>> 0)) & 268435455) >>> 0)) >>> 0));
 60049  			_index$17 = i$1 + 8 >> 0;
 60050  			((_index$17 < 0 || _index$17 >= tmp2.length) ? ($throwRuntimeError("index out of range"), undefined) : tmp2[_index$17] = (((_index$17 < 0 || _index$17 >= tmp2.length) ? ($throwRuntimeError("index out of range"), undefined) : tmp2[_index$17]) + ((x >>> 7 >>> 0)) >>> 0));
 60051  			_index$18 = i$1 + 8 >> 0;
 60052  			((_index$18 < 0 || _index$18 >= tmp2.length) ? ($throwRuntimeError("index out of range"), undefined) : tmp2[_index$18] = (((_index$18 < 0 || _index$18 >= tmp2.length) ? ($throwRuntimeError("index out of range"), undefined) : tmp2[_index$18]) + (((536870912 & xMask) >>> 0)) >>> 0));
 60053  			_index$19 = i$1 + 9 >> 0;
 60054  			((_index$19 < 0 || _index$19 >= tmp2.length) ? ($throwRuntimeError("index out of range"), undefined) : tmp2[_index$19] = (((_index$19 < 0 || _index$19 >= tmp2.length) ? ($throwRuntimeError("index out of range"), undefined) : tmp2[_index$19]) + (((((x - 1 >>> 0)) & xMask) >>> 0)) >>> 0));
 60055  			_index$20 = i$1 + 8 >> 0;
 60056  			((_index$20 < 0 || _index$20 >= tmp2.length) ? ($throwRuntimeError("index out of range"), undefined) : tmp2[_index$20] = (((_index$20 < 0 || _index$20 >= tmp2.length) ? ($throwRuntimeError("index out of range"), undefined) : tmp2[_index$20]) - (((((x << 25 >>> 0)) & 536870911) >>> 0)) >>> 0));
 60057  			_index$21 = i$1 + 9 >> 0;
 60058  			((_index$21 < 0 || _index$21 >= tmp2.length) ? ($throwRuntimeError("index out of range"), undefined) : tmp2[_index$21] = (((_index$21 < 0 || _index$21 >= tmp2.length) ? ($throwRuntimeError("index out of range"), undefined) : tmp2[_index$21]) - ((x >>> 4 >>> 0)) >>> 0));
 60059  			_index$22 = i$1 + 9 >> 0;
 60060  			((_index$22 < 0 || _index$22 >= tmp2.length) ? ($throwRuntimeError("index out of range"), undefined) : tmp2[_index$22] = (((_index$22 < 0 || _index$22 >= tmp2.length) ? ($throwRuntimeError("index out of range"), undefined) : tmp2[_index$22]) + (((268435456 & xMask) >>> 0)) >>> 0));
 60061  			_index$23 = i$1 + 9 >> 0;
 60062  			((_index$23 < 0 || _index$23 >= tmp2.length) ? ($throwRuntimeError("index out of range"), undefined) : tmp2[_index$23] = (((_index$23 < 0 || _index$23 >= tmp2.length) ? ($throwRuntimeError("index out of range"), undefined) : tmp2[_index$23]) - (x) >>> 0));
 60063  			_index$24 = i$1 + 10 >> 0;
 60064  			((_index$24 < 0 || _index$24 >= tmp2.length) ? ($throwRuntimeError("index out of range"), undefined) : tmp2[_index$24] = (((_index$24 < 0 || _index$24 >= tmp2.length) ? ($throwRuntimeError("index out of range"), undefined) : tmp2[_index$24]) + (((((x - 1 >>> 0)) & xMask) >>> 0)) >>> 0));
 60065  			i$1 = i$1 + (2) >> 0;
 60066  		}
 60067  		carry = 0;
 60068  		i$2 = 0;
 60069  		while (true) {
 60070  			if (!(i$2 < 8)) { break; }
 60071  			out.nilCheck, ((i$2 < 0 || i$2 >= out.length) ? ($throwRuntimeError("index out of range"), undefined) : out[i$2] = (x$10 = i$2 + 9 >> 0, ((x$10 < 0 || x$10 >= tmp2.length) ? ($throwRuntimeError("index out of range"), undefined) : tmp2[x$10])));
 60072  			out.nilCheck, ((i$2 < 0 || i$2 >= out.length) ? ($throwRuntimeError("index out of range"), undefined) : out[i$2] = ((out.nilCheck, ((i$2 < 0 || i$2 >= out.length) ? ($throwRuntimeError("index out of range"), undefined) : out[i$2])) + (carry) >>> 0));
 60073  			out.nilCheck, ((i$2 < 0 || i$2 >= out.length) ? ($throwRuntimeError("index out of range"), undefined) : out[i$2] = ((out.nilCheck, ((i$2 < 0 || i$2 >= out.length) ? ($throwRuntimeError("index out of range"), undefined) : out[i$2])) + ((((((x$11 = i$2 + 10 >> 0, ((x$11 < 0 || x$11 >= tmp2.length) ? ($throwRuntimeError("index out of range"), undefined) : tmp2[x$11])) << 28 >>> 0)) & 536870911) >>> 0)) >>> 0));
 60074  			carry = (out.nilCheck, ((i$2 < 0 || i$2 >= out.length) ? ($throwRuntimeError("index out of range"), undefined) : out[i$2])) >>> 29 >>> 0;
 60075  			out.nilCheck, ((i$2 < 0 || i$2 >= out.length) ? ($throwRuntimeError("index out of range"), undefined) : out[i$2] = (((out.nilCheck, ((i$2 < 0 || i$2 >= out.length) ? ($throwRuntimeError("index out of range"), undefined) : out[i$2])) & (536870911)) >>> 0));
 60076  			i$2 = i$2 + (1) >> 0;
 60077  			out.nilCheck, ((i$2 < 0 || i$2 >= out.length) ? ($throwRuntimeError("index out of range"), undefined) : out[i$2] = ((x$12 = i$2 + 9 >> 0, ((x$12 < 0 || x$12 >= tmp2.length) ? ($throwRuntimeError("index out of range"), undefined) : tmp2[x$12])) >>> 1 >>> 0));
 60078  			out.nilCheck, ((i$2 < 0 || i$2 >= out.length) ? ($throwRuntimeError("index out of range"), undefined) : out[i$2] = ((out.nilCheck, ((i$2 < 0 || i$2 >= out.length) ? ($throwRuntimeError("index out of range"), undefined) : out[i$2])) + (carry) >>> 0));
 60079  			carry = (out.nilCheck, ((i$2 < 0 || i$2 >= out.length) ? ($throwRuntimeError("index out of range"), undefined) : out[i$2])) >>> 28 >>> 0;
 60080  			out.nilCheck, ((i$2 < 0 || i$2 >= out.length) ? ($throwRuntimeError("index out of range"), undefined) : out[i$2] = (((out.nilCheck, ((i$2 < 0 || i$2 >= out.length) ? ($throwRuntimeError("index out of range"), undefined) : out[i$2])) & (268435455)) >>> 0));
 60081  			i$2 = i$2 + (1) >> 0;
 60082  		}
 60083  		out.nilCheck, out[8] = tmp2[17];
 60084  		out.nilCheck, out[8] = ((out.nilCheck, out[8]) + (carry) >>> 0);
 60085  		carry = (out.nilCheck, out[8]) >>> 29 >>> 0;
 60086  		out.nilCheck, out[8] = (((out.nilCheck, out[8]) & (536870911)) >>> 0);
 60087  		p256ReduceCarry(out, carry);
 60088  	};
 60089  	p256Square = function(out, in$1) {
 60090  		var in$1, out, tmp, x, x$1, x$10, x$11, x$12, x$13, x$14, x$15, x$16, x$17, x$18, x$19, x$2, x$20, x$21, x$22, x$23, x$24, x$25, x$26, x$27, x$28, x$29, x$3, x$30, x$31, x$32, x$33, x$34, x$35, x$36, x$37, x$38, x$39, x$4, x$40, x$41, x$42, x$43, x$44, x$45, x$46, x$47, x$48, x$49, x$5, x$50, x$51, x$52, x$53, x$54, x$55, x$6, x$7, x$8, x$9;
 60091  		tmp = arrayType$6.zero();
 60092  		tmp[0] = $mul64((new $Uint64(0, (in$1.nilCheck, in$1[0]))), (new $Uint64(0, (in$1.nilCheck, in$1[0]))));
 60093  		tmp[1] = $mul64((new $Uint64(0, (in$1.nilCheck, in$1[0]))), ($shiftLeft64((new $Uint64(0, (in$1.nilCheck, in$1[1]))), 1)));
 60094  		tmp[2] = (x = $mul64((new $Uint64(0, (in$1.nilCheck, in$1[0]))), ($shiftLeft64((new $Uint64(0, (in$1.nilCheck, in$1[2]))), 1))), x$1 = $mul64((new $Uint64(0, (in$1.nilCheck, in$1[1]))), ($shiftLeft64((new $Uint64(0, (in$1.nilCheck, in$1[1]))), 1))), new $Uint64(x.$high + x$1.$high, x.$low + x$1.$low));
 60095  		tmp[3] = (x$2 = $mul64((new $Uint64(0, (in$1.nilCheck, in$1[0]))), ($shiftLeft64((new $Uint64(0, (in$1.nilCheck, in$1[3]))), 1))), x$3 = $mul64((new $Uint64(0, (in$1.nilCheck, in$1[1]))), ($shiftLeft64((new $Uint64(0, (in$1.nilCheck, in$1[2]))), 1))), new $Uint64(x$2.$high + x$3.$high, x$2.$low + x$3.$low));
 60096  		tmp[4] = (x$4 = (x$5 = $mul64((new $Uint64(0, (in$1.nilCheck, in$1[0]))), ($shiftLeft64((new $Uint64(0, (in$1.nilCheck, in$1[4]))), 1))), x$6 = $mul64((new $Uint64(0, (in$1.nilCheck, in$1[1]))), ($shiftLeft64((new $Uint64(0, (in$1.nilCheck, in$1[3]))), 2))), new $Uint64(x$5.$high + x$6.$high, x$5.$low + x$6.$low)), x$7 = $mul64((new $Uint64(0, (in$1.nilCheck, in$1[2]))), (new $Uint64(0, (in$1.nilCheck, in$1[2])))), new $Uint64(x$4.$high + x$7.$high, x$4.$low + x$7.$low));
 60097  		tmp[5] = (x$8 = (x$9 = $mul64((new $Uint64(0, (in$1.nilCheck, in$1[0]))), ($shiftLeft64((new $Uint64(0, (in$1.nilCheck, in$1[5]))), 1))), x$10 = $mul64((new $Uint64(0, (in$1.nilCheck, in$1[1]))), ($shiftLeft64((new $Uint64(0, (in$1.nilCheck, in$1[4]))), 1))), new $Uint64(x$9.$high + x$10.$high, x$9.$low + x$10.$low)), x$11 = $mul64((new $Uint64(0, (in$1.nilCheck, in$1[2]))), ($shiftLeft64((new $Uint64(0, (in$1.nilCheck, in$1[3]))), 1))), new $Uint64(x$8.$high + x$11.$high, x$8.$low + x$11.$low));
 60098  		tmp[6] = (x$12 = (x$13 = (x$14 = $mul64((new $Uint64(0, (in$1.nilCheck, in$1[0]))), ($shiftLeft64((new $Uint64(0, (in$1.nilCheck, in$1[6]))), 1))), x$15 = $mul64((new $Uint64(0, (in$1.nilCheck, in$1[1]))), ($shiftLeft64((new $Uint64(0, (in$1.nilCheck, in$1[5]))), 2))), new $Uint64(x$14.$high + x$15.$high, x$14.$low + x$15.$low)), x$16 = $mul64((new $Uint64(0, (in$1.nilCheck, in$1[2]))), ($shiftLeft64((new $Uint64(0, (in$1.nilCheck, in$1[4]))), 1))), new $Uint64(x$13.$high + x$16.$high, x$13.$low + x$16.$low)), x$17 = $mul64((new $Uint64(0, (in$1.nilCheck, in$1[3]))), ($shiftLeft64((new $Uint64(0, (in$1.nilCheck, in$1[3]))), 1))), new $Uint64(x$12.$high + x$17.$high, x$12.$low + x$17.$low));
 60099  		tmp[7] = (x$18 = (x$19 = (x$20 = $mul64((new $Uint64(0, (in$1.nilCheck, in$1[0]))), ($shiftLeft64((new $Uint64(0, (in$1.nilCheck, in$1[7]))), 1))), x$21 = $mul64((new $Uint64(0, (in$1.nilCheck, in$1[1]))), ($shiftLeft64((new $Uint64(0, (in$1.nilCheck, in$1[6]))), 1))), new $Uint64(x$20.$high + x$21.$high, x$20.$low + x$21.$low)), x$22 = $mul64((new $Uint64(0, (in$1.nilCheck, in$1[2]))), ($shiftLeft64((new $Uint64(0, (in$1.nilCheck, in$1[5]))), 1))), new $Uint64(x$19.$high + x$22.$high, x$19.$low + x$22.$low)), x$23 = $mul64((new $Uint64(0, (in$1.nilCheck, in$1[3]))), ($shiftLeft64((new $Uint64(0, (in$1.nilCheck, in$1[4]))), 1))), new $Uint64(x$18.$high + x$23.$high, x$18.$low + x$23.$low));
 60100  		tmp[8] = (x$24 = (x$25 = (x$26 = (x$27 = $mul64((new $Uint64(0, (in$1.nilCheck, in$1[0]))), ($shiftLeft64((new $Uint64(0, (in$1.nilCheck, in$1[8]))), 1))), x$28 = $mul64((new $Uint64(0, (in$1.nilCheck, in$1[1]))), ($shiftLeft64((new $Uint64(0, (in$1.nilCheck, in$1[7]))), 2))), new $Uint64(x$27.$high + x$28.$high, x$27.$low + x$28.$low)), x$29 = $mul64((new $Uint64(0, (in$1.nilCheck, in$1[2]))), ($shiftLeft64((new $Uint64(0, (in$1.nilCheck, in$1[6]))), 1))), new $Uint64(x$26.$high + x$29.$high, x$26.$low + x$29.$low)), x$30 = $mul64((new $Uint64(0, (in$1.nilCheck, in$1[3]))), ($shiftLeft64((new $Uint64(0, (in$1.nilCheck, in$1[5]))), 2))), new $Uint64(x$25.$high + x$30.$high, x$25.$low + x$30.$low)), x$31 = $mul64((new $Uint64(0, (in$1.nilCheck, in$1[4]))), (new $Uint64(0, (in$1.nilCheck, in$1[4])))), new $Uint64(x$24.$high + x$31.$high, x$24.$low + x$31.$low));
 60101  		tmp[9] = (x$32 = (x$33 = (x$34 = $mul64((new $Uint64(0, (in$1.nilCheck, in$1[1]))), ($shiftLeft64((new $Uint64(0, (in$1.nilCheck, in$1[8]))), 1))), x$35 = $mul64((new $Uint64(0, (in$1.nilCheck, in$1[2]))), ($shiftLeft64((new $Uint64(0, (in$1.nilCheck, in$1[7]))), 1))), new $Uint64(x$34.$high + x$35.$high, x$34.$low + x$35.$low)), x$36 = $mul64((new $Uint64(0, (in$1.nilCheck, in$1[3]))), ($shiftLeft64((new $Uint64(0, (in$1.nilCheck, in$1[6]))), 1))), new $Uint64(x$33.$high + x$36.$high, x$33.$low + x$36.$low)), x$37 = $mul64((new $Uint64(0, (in$1.nilCheck, in$1[4]))), ($shiftLeft64((new $Uint64(0, (in$1.nilCheck, in$1[5]))), 1))), new $Uint64(x$32.$high + x$37.$high, x$32.$low + x$37.$low));
 60102  		tmp[10] = (x$38 = (x$39 = (x$40 = $mul64((new $Uint64(0, (in$1.nilCheck, in$1[2]))), ($shiftLeft64((new $Uint64(0, (in$1.nilCheck, in$1[8]))), 1))), x$41 = $mul64((new $Uint64(0, (in$1.nilCheck, in$1[3]))), ($shiftLeft64((new $Uint64(0, (in$1.nilCheck, in$1[7]))), 2))), new $Uint64(x$40.$high + x$41.$high, x$40.$low + x$41.$low)), x$42 = $mul64((new $Uint64(0, (in$1.nilCheck, in$1[4]))), ($shiftLeft64((new $Uint64(0, (in$1.nilCheck, in$1[6]))), 1))), new $Uint64(x$39.$high + x$42.$high, x$39.$low + x$42.$low)), x$43 = $mul64((new $Uint64(0, (in$1.nilCheck, in$1[5]))), ($shiftLeft64((new $Uint64(0, (in$1.nilCheck, in$1[5]))), 1))), new $Uint64(x$38.$high + x$43.$high, x$38.$low + x$43.$low));
 60103  		tmp[11] = (x$44 = (x$45 = $mul64((new $Uint64(0, (in$1.nilCheck, in$1[3]))), ($shiftLeft64((new $Uint64(0, (in$1.nilCheck, in$1[8]))), 1))), x$46 = $mul64((new $Uint64(0, (in$1.nilCheck, in$1[4]))), ($shiftLeft64((new $Uint64(0, (in$1.nilCheck, in$1[7]))), 1))), new $Uint64(x$45.$high + x$46.$high, x$45.$low + x$46.$low)), x$47 = $mul64((new $Uint64(0, (in$1.nilCheck, in$1[5]))), ($shiftLeft64((new $Uint64(0, (in$1.nilCheck, in$1[6]))), 1))), new $Uint64(x$44.$high + x$47.$high, x$44.$low + x$47.$low));
 60104  		tmp[12] = (x$48 = (x$49 = $mul64((new $Uint64(0, (in$1.nilCheck, in$1[4]))), ($shiftLeft64((new $Uint64(0, (in$1.nilCheck, in$1[8]))), 1))), x$50 = $mul64((new $Uint64(0, (in$1.nilCheck, in$1[5]))), ($shiftLeft64((new $Uint64(0, (in$1.nilCheck, in$1[7]))), 2))), new $Uint64(x$49.$high + x$50.$high, x$49.$low + x$50.$low)), x$51 = $mul64((new $Uint64(0, (in$1.nilCheck, in$1[6]))), (new $Uint64(0, (in$1.nilCheck, in$1[6])))), new $Uint64(x$48.$high + x$51.$high, x$48.$low + x$51.$low));
 60105  		tmp[13] = (x$52 = $mul64((new $Uint64(0, (in$1.nilCheck, in$1[5]))), ($shiftLeft64((new $Uint64(0, (in$1.nilCheck, in$1[8]))), 1))), x$53 = $mul64((new $Uint64(0, (in$1.nilCheck, in$1[6]))), ($shiftLeft64((new $Uint64(0, (in$1.nilCheck, in$1[7]))), 1))), new $Uint64(x$52.$high + x$53.$high, x$52.$low + x$53.$low));
 60106  		tmp[14] = (x$54 = $mul64((new $Uint64(0, (in$1.nilCheck, in$1[6]))), ($shiftLeft64((new $Uint64(0, (in$1.nilCheck, in$1[8]))), 1))), x$55 = $mul64((new $Uint64(0, (in$1.nilCheck, in$1[7]))), ($shiftLeft64((new $Uint64(0, (in$1.nilCheck, in$1[7]))), 1))), new $Uint64(x$54.$high + x$55.$high, x$54.$low + x$55.$low));
 60107  		tmp[15] = $mul64((new $Uint64(0, (in$1.nilCheck, in$1[7]))), ($shiftLeft64((new $Uint64(0, (in$1.nilCheck, in$1[8]))), 1)));
 60108  		tmp[16] = $mul64((new $Uint64(0, (in$1.nilCheck, in$1[8]))), (new $Uint64(0, (in$1.nilCheck, in$1[8]))));
 60109  		p256ReduceDegree(out, $clone(tmp, arrayType$6));
 60110  	};
 60111  	p256Mul = function(out, in$1, in2) {
 60112  		var in$1, in2, out, tmp, x, x$1, x$10, x$100, x$101, x$102, x$103, x$104, x$105, x$106, x$107, x$108, x$109, x$11, x$110, x$111, x$112, x$113, x$114, x$115, x$116, x$117, x$118, x$119, x$12, x$120, x$121, x$122, x$123, x$124, x$125, x$126, x$127, x$13, x$14, x$15, x$16, x$17, x$18, x$19, x$2, x$20, x$21, x$22, x$23, x$24, x$25, x$26, x$27, x$28, x$29, x$3, x$30, x$31, x$32, x$33, x$34, x$35, x$36, x$37, x$38, x$39, x$4, x$40, x$41, x$42, x$43, x$44, x$45, x$46, x$47, x$48, x$49, x$5, x$50, x$51, x$52, x$53, x$54, x$55, x$56, x$57, x$58, x$59, x$6, x$60, x$61, x$62, x$63, x$64, x$65, x$66, x$67, x$68, x$69, x$7, x$70, x$71, x$72, x$73, x$74, x$75, x$76, x$77, x$78, x$79, x$8, x$80, x$81, x$82, x$83, x$84, x$85, x$86, x$87, x$88, x$89, x$9, x$90, x$91, x$92, x$93, x$94, x$95, x$96, x$97, x$98, x$99;
 60113  		tmp = arrayType$6.zero();
 60114  		tmp[0] = $mul64((new $Uint64(0, (in$1.nilCheck, in$1[0]))), (new $Uint64(0, (in2.nilCheck, in2[0]))));
 60115  		tmp[1] = (x = $mul64((new $Uint64(0, (in$1.nilCheck, in$1[0]))), ($shiftLeft64((new $Uint64(0, (in2.nilCheck, in2[1]))), 0))), x$1 = $mul64((new $Uint64(0, (in$1.nilCheck, in$1[1]))), ($shiftLeft64((new $Uint64(0, (in2.nilCheck, in2[0]))), 0))), new $Uint64(x.$high + x$1.$high, x.$low + x$1.$low));
 60116  		tmp[2] = (x$2 = (x$3 = $mul64((new $Uint64(0, (in$1.nilCheck, in$1[0]))), ($shiftLeft64((new $Uint64(0, (in2.nilCheck, in2[2]))), 0))), x$4 = $mul64((new $Uint64(0, (in$1.nilCheck, in$1[1]))), ($shiftLeft64((new $Uint64(0, (in2.nilCheck, in2[1]))), 1))), new $Uint64(x$3.$high + x$4.$high, x$3.$low + x$4.$low)), x$5 = $mul64((new $Uint64(0, (in$1.nilCheck, in$1[2]))), ($shiftLeft64((new $Uint64(0, (in2.nilCheck, in2[0]))), 0))), new $Uint64(x$2.$high + x$5.$high, x$2.$low + x$5.$low));
 60117  		tmp[3] = (x$6 = (x$7 = (x$8 = $mul64((new $Uint64(0, (in$1.nilCheck, in$1[0]))), ($shiftLeft64((new $Uint64(0, (in2.nilCheck, in2[3]))), 0))), x$9 = $mul64((new $Uint64(0, (in$1.nilCheck, in$1[1]))), ($shiftLeft64((new $Uint64(0, (in2.nilCheck, in2[2]))), 0))), new $Uint64(x$8.$high + x$9.$high, x$8.$low + x$9.$low)), x$10 = $mul64((new $Uint64(0, (in$1.nilCheck, in$1[2]))), ($shiftLeft64((new $Uint64(0, (in2.nilCheck, in2[1]))), 0))), new $Uint64(x$7.$high + x$10.$high, x$7.$low + x$10.$low)), x$11 = $mul64((new $Uint64(0, (in$1.nilCheck, in$1[3]))), ($shiftLeft64((new $Uint64(0, (in2.nilCheck, in2[0]))), 0))), new $Uint64(x$6.$high + x$11.$high, x$6.$low + x$11.$low));
 60118  		tmp[4] = (x$12 = (x$13 = (x$14 = (x$15 = $mul64((new $Uint64(0, (in$1.nilCheck, in$1[0]))), ($shiftLeft64((new $Uint64(0, (in2.nilCheck, in2[4]))), 0))), x$16 = $mul64((new $Uint64(0, (in$1.nilCheck, in$1[1]))), ($shiftLeft64((new $Uint64(0, (in2.nilCheck, in2[3]))), 1))), new $Uint64(x$15.$high + x$16.$high, x$15.$low + x$16.$low)), x$17 = $mul64((new $Uint64(0, (in$1.nilCheck, in$1[2]))), ($shiftLeft64((new $Uint64(0, (in2.nilCheck, in2[2]))), 0))), new $Uint64(x$14.$high + x$17.$high, x$14.$low + x$17.$low)), x$18 = $mul64((new $Uint64(0, (in$1.nilCheck, in$1[3]))), ($shiftLeft64((new $Uint64(0, (in2.nilCheck, in2[1]))), 1))), new $Uint64(x$13.$high + x$18.$high, x$13.$low + x$18.$low)), x$19 = $mul64((new $Uint64(0, (in$1.nilCheck, in$1[4]))), ($shiftLeft64((new $Uint64(0, (in2.nilCheck, in2[0]))), 0))), new $Uint64(x$12.$high + x$19.$high, x$12.$low + x$19.$low));
 60119  		tmp[5] = (x$20 = (x$21 = (x$22 = (x$23 = (x$24 = $mul64((new $Uint64(0, (in$1.nilCheck, in$1[0]))), ($shiftLeft64((new $Uint64(0, (in2.nilCheck, in2[5]))), 0))), x$25 = $mul64((new $Uint64(0, (in$1.nilCheck, in$1[1]))), ($shiftLeft64((new $Uint64(0, (in2.nilCheck, in2[4]))), 0))), new $Uint64(x$24.$high + x$25.$high, x$24.$low + x$25.$low)), x$26 = $mul64((new $Uint64(0, (in$1.nilCheck, in$1[2]))), ($shiftLeft64((new $Uint64(0, (in2.nilCheck, in2[3]))), 0))), new $Uint64(x$23.$high + x$26.$high, x$23.$low + x$26.$low)), x$27 = $mul64((new $Uint64(0, (in$1.nilCheck, in$1[3]))), ($shiftLeft64((new $Uint64(0, (in2.nilCheck, in2[2]))), 0))), new $Uint64(x$22.$high + x$27.$high, x$22.$low + x$27.$low)), x$28 = $mul64((new $Uint64(0, (in$1.nilCheck, in$1[4]))), ($shiftLeft64((new $Uint64(0, (in2.nilCheck, in2[1]))), 0))), new $Uint64(x$21.$high + x$28.$high, x$21.$low + x$28.$low)), x$29 = $mul64((new $Uint64(0, (in$1.nilCheck, in$1[5]))), ($shiftLeft64((new $Uint64(0, (in2.nilCheck, in2[0]))), 0))), new $Uint64(x$20.$high + x$29.$high, x$20.$low + x$29.$low));
 60120  		tmp[6] = (x$30 = (x$31 = (x$32 = (x$33 = (x$34 = (x$35 = $mul64((new $Uint64(0, (in$1.nilCheck, in$1[0]))), ($shiftLeft64((new $Uint64(0, (in2.nilCheck, in2[6]))), 0))), x$36 = $mul64((new $Uint64(0, (in$1.nilCheck, in$1[1]))), ($shiftLeft64((new $Uint64(0, (in2.nilCheck, in2[5]))), 1))), new $Uint64(x$35.$high + x$36.$high, x$35.$low + x$36.$low)), x$37 = $mul64((new $Uint64(0, (in$1.nilCheck, in$1[2]))), ($shiftLeft64((new $Uint64(0, (in2.nilCheck, in2[4]))), 0))), new $Uint64(x$34.$high + x$37.$high, x$34.$low + x$37.$low)), x$38 = $mul64((new $Uint64(0, (in$1.nilCheck, in$1[3]))), ($shiftLeft64((new $Uint64(0, (in2.nilCheck, in2[3]))), 1))), new $Uint64(x$33.$high + x$38.$high, x$33.$low + x$38.$low)), x$39 = $mul64((new $Uint64(0, (in$1.nilCheck, in$1[4]))), ($shiftLeft64((new $Uint64(0, (in2.nilCheck, in2[2]))), 0))), new $Uint64(x$32.$high + x$39.$high, x$32.$low + x$39.$low)), x$40 = $mul64((new $Uint64(0, (in$1.nilCheck, in$1[5]))), ($shiftLeft64((new $Uint64(0, (in2.nilCheck, in2[1]))), 1))), new $Uint64(x$31.$high + x$40.$high, x$31.$low + x$40.$low)), x$41 = $mul64((new $Uint64(0, (in$1.nilCheck, in$1[6]))), ($shiftLeft64((new $Uint64(0, (in2.nilCheck, in2[0]))), 0))), new $Uint64(x$30.$high + x$41.$high, x$30.$low + x$41.$low));
 60121  		tmp[7] = (x$42 = (x$43 = (x$44 = (x$45 = (x$46 = (x$47 = (x$48 = $mul64((new $Uint64(0, (in$1.nilCheck, in$1[0]))), ($shiftLeft64((new $Uint64(0, (in2.nilCheck, in2[7]))), 0))), x$49 = $mul64((new $Uint64(0, (in$1.nilCheck, in$1[1]))), ($shiftLeft64((new $Uint64(0, (in2.nilCheck, in2[6]))), 0))), new $Uint64(x$48.$high + x$49.$high, x$48.$low + x$49.$low)), x$50 = $mul64((new $Uint64(0, (in$1.nilCheck, in$1[2]))), ($shiftLeft64((new $Uint64(0, (in2.nilCheck, in2[5]))), 0))), new $Uint64(x$47.$high + x$50.$high, x$47.$low + x$50.$low)), x$51 = $mul64((new $Uint64(0, (in$1.nilCheck, in$1[3]))), ($shiftLeft64((new $Uint64(0, (in2.nilCheck, in2[4]))), 0))), new $Uint64(x$46.$high + x$51.$high, x$46.$low + x$51.$low)), x$52 = $mul64((new $Uint64(0, (in$1.nilCheck, in$1[4]))), ($shiftLeft64((new $Uint64(0, (in2.nilCheck, in2[3]))), 0))), new $Uint64(x$45.$high + x$52.$high, x$45.$low + x$52.$low)), x$53 = $mul64((new $Uint64(0, (in$1.nilCheck, in$1[5]))), ($shiftLeft64((new $Uint64(0, (in2.nilCheck, in2[2]))), 0))), new $Uint64(x$44.$high + x$53.$high, x$44.$low + x$53.$low)), x$54 = $mul64((new $Uint64(0, (in$1.nilCheck, in$1[6]))), ($shiftLeft64((new $Uint64(0, (in2.nilCheck, in2[1]))), 0))), new $Uint64(x$43.$high + x$54.$high, x$43.$low + x$54.$low)), x$55 = $mul64((new $Uint64(0, (in$1.nilCheck, in$1[7]))), ($shiftLeft64((new $Uint64(0, (in2.nilCheck, in2[0]))), 0))), new $Uint64(x$42.$high + x$55.$high, x$42.$low + x$55.$low));
 60122  		tmp[8] = (x$56 = (x$57 = (x$58 = (x$59 = (x$60 = (x$61 = (x$62 = (x$63 = $mul64((new $Uint64(0, (in$1.nilCheck, in$1[0]))), ($shiftLeft64((new $Uint64(0, (in2.nilCheck, in2[8]))), 0))), x$64 = $mul64((new $Uint64(0, (in$1.nilCheck, in$1[1]))), ($shiftLeft64((new $Uint64(0, (in2.nilCheck, in2[7]))), 1))), new $Uint64(x$63.$high + x$64.$high, x$63.$low + x$64.$low)), x$65 = $mul64((new $Uint64(0, (in$1.nilCheck, in$1[2]))), ($shiftLeft64((new $Uint64(0, (in2.nilCheck, in2[6]))), 0))), new $Uint64(x$62.$high + x$65.$high, x$62.$low + x$65.$low)), x$66 = $mul64((new $Uint64(0, (in$1.nilCheck, in$1[3]))), ($shiftLeft64((new $Uint64(0, (in2.nilCheck, in2[5]))), 1))), new $Uint64(x$61.$high + x$66.$high, x$61.$low + x$66.$low)), x$67 = $mul64((new $Uint64(0, (in$1.nilCheck, in$1[4]))), ($shiftLeft64((new $Uint64(0, (in2.nilCheck, in2[4]))), 0))), new $Uint64(x$60.$high + x$67.$high, x$60.$low + x$67.$low)), x$68 = $mul64((new $Uint64(0, (in$1.nilCheck, in$1[5]))), ($shiftLeft64((new $Uint64(0, (in2.nilCheck, in2[3]))), 1))), new $Uint64(x$59.$high + x$68.$high, x$59.$low + x$68.$low)), x$69 = $mul64((new $Uint64(0, (in$1.nilCheck, in$1[6]))), ($shiftLeft64((new $Uint64(0, (in2.nilCheck, in2[2]))), 0))), new $Uint64(x$58.$high + x$69.$high, x$58.$low + x$69.$low)), x$70 = $mul64((new $Uint64(0, (in$1.nilCheck, in$1[7]))), ($shiftLeft64((new $Uint64(0, (in2.nilCheck, in2[1]))), 1))), new $Uint64(x$57.$high + x$70.$high, x$57.$low + x$70.$low)), x$71 = $mul64((new $Uint64(0, (in$1.nilCheck, in$1[8]))), ($shiftLeft64((new $Uint64(0, (in2.nilCheck, in2[0]))), 0))), new $Uint64(x$56.$high + x$71.$high, x$56.$low + x$71.$low));
 60123  		tmp[9] = (x$72 = (x$73 = (x$74 = (x$75 = (x$76 = (x$77 = (x$78 = $mul64((new $Uint64(0, (in$1.nilCheck, in$1[1]))), ($shiftLeft64((new $Uint64(0, (in2.nilCheck, in2[8]))), 0))), x$79 = $mul64((new $Uint64(0, (in$1.nilCheck, in$1[2]))), ($shiftLeft64((new $Uint64(0, (in2.nilCheck, in2[7]))), 0))), new $Uint64(x$78.$high + x$79.$high, x$78.$low + x$79.$low)), x$80 = $mul64((new $Uint64(0, (in$1.nilCheck, in$1[3]))), ($shiftLeft64((new $Uint64(0, (in2.nilCheck, in2[6]))), 0))), new $Uint64(x$77.$high + x$80.$high, x$77.$low + x$80.$low)), x$81 = $mul64((new $Uint64(0, (in$1.nilCheck, in$1[4]))), ($shiftLeft64((new $Uint64(0, (in2.nilCheck, in2[5]))), 0))), new $Uint64(x$76.$high + x$81.$high, x$76.$low + x$81.$low)), x$82 = $mul64((new $Uint64(0, (in$1.nilCheck, in$1[5]))), ($shiftLeft64((new $Uint64(0, (in2.nilCheck, in2[4]))), 0))), new $Uint64(x$75.$high + x$82.$high, x$75.$low + x$82.$low)), x$83 = $mul64((new $Uint64(0, (in$1.nilCheck, in$1[6]))), ($shiftLeft64((new $Uint64(0, (in2.nilCheck, in2[3]))), 0))), new $Uint64(x$74.$high + x$83.$high, x$74.$low + x$83.$low)), x$84 = $mul64((new $Uint64(0, (in$1.nilCheck, in$1[7]))), ($shiftLeft64((new $Uint64(0, (in2.nilCheck, in2[2]))), 0))), new $Uint64(x$73.$high + x$84.$high, x$73.$low + x$84.$low)), x$85 = $mul64((new $Uint64(0, (in$1.nilCheck, in$1[8]))), ($shiftLeft64((new $Uint64(0, (in2.nilCheck, in2[1]))), 0))), new $Uint64(x$72.$high + x$85.$high, x$72.$low + x$85.$low));
 60124  		tmp[10] = (x$86 = (x$87 = (x$88 = (x$89 = (x$90 = (x$91 = $mul64((new $Uint64(0, (in$1.nilCheck, in$1[2]))), ($shiftLeft64((new $Uint64(0, (in2.nilCheck, in2[8]))), 0))), x$92 = $mul64((new $Uint64(0, (in$1.nilCheck, in$1[3]))), ($shiftLeft64((new $Uint64(0, (in2.nilCheck, in2[7]))), 1))), new $Uint64(x$91.$high + x$92.$high, x$91.$low + x$92.$low)), x$93 = $mul64((new $Uint64(0, (in$1.nilCheck, in$1[4]))), ($shiftLeft64((new $Uint64(0, (in2.nilCheck, in2[6]))), 0))), new $Uint64(x$90.$high + x$93.$high, x$90.$low + x$93.$low)), x$94 = $mul64((new $Uint64(0, (in$1.nilCheck, in$1[5]))), ($shiftLeft64((new $Uint64(0, (in2.nilCheck, in2[5]))), 1))), new $Uint64(x$89.$high + x$94.$high, x$89.$low + x$94.$low)), x$95 = $mul64((new $Uint64(0, (in$1.nilCheck, in$1[6]))), ($shiftLeft64((new $Uint64(0, (in2.nilCheck, in2[4]))), 0))), new $Uint64(x$88.$high + x$95.$high, x$88.$low + x$95.$low)), x$96 = $mul64((new $Uint64(0, (in$1.nilCheck, in$1[7]))), ($shiftLeft64((new $Uint64(0, (in2.nilCheck, in2[3]))), 1))), new $Uint64(x$87.$high + x$96.$high, x$87.$low + x$96.$low)), x$97 = $mul64((new $Uint64(0, (in$1.nilCheck, in$1[8]))), ($shiftLeft64((new $Uint64(0, (in2.nilCheck, in2[2]))), 0))), new $Uint64(x$86.$high + x$97.$high, x$86.$low + x$97.$low));
 60125  		tmp[11] = (x$98 = (x$99 = (x$100 = (x$101 = (x$102 = $mul64((new $Uint64(0, (in$1.nilCheck, in$1[3]))), ($shiftLeft64((new $Uint64(0, (in2.nilCheck, in2[8]))), 0))), x$103 = $mul64((new $Uint64(0, (in$1.nilCheck, in$1[4]))), ($shiftLeft64((new $Uint64(0, (in2.nilCheck, in2[7]))), 0))), new $Uint64(x$102.$high + x$103.$high, x$102.$low + x$103.$low)), x$104 = $mul64((new $Uint64(0, (in$1.nilCheck, in$1[5]))), ($shiftLeft64((new $Uint64(0, (in2.nilCheck, in2[6]))), 0))), new $Uint64(x$101.$high + x$104.$high, x$101.$low + x$104.$low)), x$105 = $mul64((new $Uint64(0, (in$1.nilCheck, in$1[6]))), ($shiftLeft64((new $Uint64(0, (in2.nilCheck, in2[5]))), 0))), new $Uint64(x$100.$high + x$105.$high, x$100.$low + x$105.$low)), x$106 = $mul64((new $Uint64(0, (in$1.nilCheck, in$1[7]))), ($shiftLeft64((new $Uint64(0, (in2.nilCheck, in2[4]))), 0))), new $Uint64(x$99.$high + x$106.$high, x$99.$low + x$106.$low)), x$107 = $mul64((new $Uint64(0, (in$1.nilCheck, in$1[8]))), ($shiftLeft64((new $Uint64(0, (in2.nilCheck, in2[3]))), 0))), new $Uint64(x$98.$high + x$107.$high, x$98.$low + x$107.$low));
 60126  		tmp[12] = (x$108 = (x$109 = (x$110 = (x$111 = $mul64((new $Uint64(0, (in$1.nilCheck, in$1[4]))), ($shiftLeft64((new $Uint64(0, (in2.nilCheck, in2[8]))), 0))), x$112 = $mul64((new $Uint64(0, (in$1.nilCheck, in$1[5]))), ($shiftLeft64((new $Uint64(0, (in2.nilCheck, in2[7]))), 1))), new $Uint64(x$111.$high + x$112.$high, x$111.$low + x$112.$low)), x$113 = $mul64((new $Uint64(0, (in$1.nilCheck, in$1[6]))), ($shiftLeft64((new $Uint64(0, (in2.nilCheck, in2[6]))), 0))), new $Uint64(x$110.$high + x$113.$high, x$110.$low + x$113.$low)), x$114 = $mul64((new $Uint64(0, (in$1.nilCheck, in$1[7]))), ($shiftLeft64((new $Uint64(0, (in2.nilCheck, in2[5]))), 1))), new $Uint64(x$109.$high + x$114.$high, x$109.$low + x$114.$low)), x$115 = $mul64((new $Uint64(0, (in$1.nilCheck, in$1[8]))), ($shiftLeft64((new $Uint64(0, (in2.nilCheck, in2[4]))), 0))), new $Uint64(x$108.$high + x$115.$high, x$108.$low + x$115.$low));
 60127  		tmp[13] = (x$116 = (x$117 = (x$118 = $mul64((new $Uint64(0, (in$1.nilCheck, in$1[5]))), ($shiftLeft64((new $Uint64(0, (in2.nilCheck, in2[8]))), 0))), x$119 = $mul64((new $Uint64(0, (in$1.nilCheck, in$1[6]))), ($shiftLeft64((new $Uint64(0, (in2.nilCheck, in2[7]))), 0))), new $Uint64(x$118.$high + x$119.$high, x$118.$low + x$119.$low)), x$120 = $mul64((new $Uint64(0, (in$1.nilCheck, in$1[7]))), ($shiftLeft64((new $Uint64(0, (in2.nilCheck, in2[6]))), 0))), new $Uint64(x$117.$high + x$120.$high, x$117.$low + x$120.$low)), x$121 = $mul64((new $Uint64(0, (in$1.nilCheck, in$1[8]))), ($shiftLeft64((new $Uint64(0, (in2.nilCheck, in2[5]))), 0))), new $Uint64(x$116.$high + x$121.$high, x$116.$low + x$121.$low));
 60128  		tmp[14] = (x$122 = (x$123 = $mul64((new $Uint64(0, (in$1.nilCheck, in$1[6]))), ($shiftLeft64((new $Uint64(0, (in2.nilCheck, in2[8]))), 0))), x$124 = $mul64((new $Uint64(0, (in$1.nilCheck, in$1[7]))), ($shiftLeft64((new $Uint64(0, (in2.nilCheck, in2[7]))), 1))), new $Uint64(x$123.$high + x$124.$high, x$123.$low + x$124.$low)), x$125 = $mul64((new $Uint64(0, (in$1.nilCheck, in$1[8]))), ($shiftLeft64((new $Uint64(0, (in2.nilCheck, in2[6]))), 0))), new $Uint64(x$122.$high + x$125.$high, x$122.$low + x$125.$low));
 60129  		tmp[15] = (x$126 = $mul64((new $Uint64(0, (in$1.nilCheck, in$1[7]))), ($shiftLeft64((new $Uint64(0, (in2.nilCheck, in2[8]))), 0))), x$127 = $mul64((new $Uint64(0, (in$1.nilCheck, in$1[8]))), ($shiftLeft64((new $Uint64(0, (in2.nilCheck, in2[7]))), 0))), new $Uint64(x$126.$high + x$127.$high, x$126.$low + x$127.$low));
 60130  		tmp[16] = $mul64((new $Uint64(0, (in$1.nilCheck, in$1[8]))), ($shiftLeft64((new $Uint64(0, (in2.nilCheck, in2[8]))), 0)));
 60131  		p256ReduceDegree(out, $clone(tmp, arrayType$6));
 60132  	};
 60133  	p256Assign = function(out, in$1) {
 60134  		var in$1, out;
 60135  		arrayType$4.copy(out, in$1);
 60136  	};
 60137  	p256Invert = function(out, in$1) {
 60138  		var _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, e16, e2, e32, e4, e64, e8, ftmp, ftmp2, i, i$1, i$2, i$3, i$4, i$5, i$6, in$1, out;
 60139  		_tmp = arrayType$4.zero();
 60140  		_tmp$1 = arrayType$4.zero();
 60141  		ftmp = $clone(_tmp, arrayType$4);
 60142  		ftmp2 = $clone(_tmp$1, arrayType$4);
 60143  		_tmp$2 = arrayType$4.zero();
 60144  		_tmp$3 = arrayType$4.zero();
 60145  		_tmp$4 = arrayType$4.zero();
 60146  		_tmp$5 = arrayType$4.zero();
 60147  		_tmp$6 = arrayType$4.zero();
 60148  		_tmp$7 = arrayType$4.zero();
 60149  		e2 = $clone(_tmp$2, arrayType$4);
 60150  		e4 = $clone(_tmp$3, arrayType$4);
 60151  		e8 = $clone(_tmp$4, arrayType$4);
 60152  		e16 = $clone(_tmp$5, arrayType$4);
 60153  		e32 = $clone(_tmp$6, arrayType$4);
 60154  		e64 = $clone(_tmp$7, arrayType$4);
 60155  		p256Square(ftmp, in$1);
 60156  		p256Mul(ftmp, in$1, ftmp);
 60157  		p256Assign(e2, ftmp);
 60158  		p256Square(ftmp, ftmp);
 60159  		p256Square(ftmp, ftmp);
 60160  		p256Mul(ftmp, ftmp, e2);
 60161  		p256Assign(e4, ftmp);
 60162  		p256Square(ftmp, ftmp);
 60163  		p256Square(ftmp, ftmp);
 60164  		p256Square(ftmp, ftmp);
 60165  		p256Square(ftmp, ftmp);
 60166  		p256Mul(ftmp, ftmp, e4);
 60167  		p256Assign(e8, ftmp);
 60168  		i = 0;
 60169  		while (true) {
 60170  			if (!(i < 8)) { break; }
 60171  			p256Square(ftmp, ftmp);
 60172  			i = i + (1) >> 0;
 60173  		}
 60174  		p256Mul(ftmp, ftmp, e8);
 60175  		p256Assign(e16, ftmp);
 60176  		i$1 = 0;
 60177  		while (true) {
 60178  			if (!(i$1 < 16)) { break; }
 60179  			p256Square(ftmp, ftmp);
 60180  			i$1 = i$1 + (1) >> 0;
 60181  		}
 60182  		p256Mul(ftmp, ftmp, e16);
 60183  		p256Assign(e32, ftmp);
 60184  		i$2 = 0;
 60185  		while (true) {
 60186  			if (!(i$2 < 32)) { break; }
 60187  			p256Square(ftmp, ftmp);
 60188  			i$2 = i$2 + (1) >> 0;
 60189  		}
 60190  		p256Assign(e64, ftmp);
 60191  		p256Mul(ftmp, ftmp, in$1);
 60192  		i$3 = 0;
 60193  		while (true) {
 60194  			if (!(i$3 < 192)) { break; }
 60195  			p256Square(ftmp, ftmp);
 60196  			i$3 = i$3 + (1) >> 0;
 60197  		}
 60198  		p256Mul(ftmp2, e64, e32);
 60199  		i$4 = 0;
 60200  		while (true) {
 60201  			if (!(i$4 < 16)) { break; }
 60202  			p256Square(ftmp2, ftmp2);
 60203  			i$4 = i$4 + (1) >> 0;
 60204  		}
 60205  		p256Mul(ftmp2, ftmp2, e16);
 60206  		i$5 = 0;
 60207  		while (true) {
 60208  			if (!(i$5 < 8)) { break; }
 60209  			p256Square(ftmp2, ftmp2);
 60210  			i$5 = i$5 + (1) >> 0;
 60211  		}
 60212  		p256Mul(ftmp2, ftmp2, e8);
 60213  		i$6 = 0;
 60214  		while (true) {
 60215  			if (!(i$6 < 4)) { break; }
 60216  			p256Square(ftmp2, ftmp2);
 60217  			i$6 = i$6 + (1) >> 0;
 60218  		}
 60219  		p256Mul(ftmp2, ftmp2, e4);
 60220  		p256Square(ftmp2, ftmp2);
 60221  		p256Square(ftmp2, ftmp2);
 60222  		p256Mul(ftmp2, ftmp2, e2);
 60223  		p256Square(ftmp2, ftmp2);
 60224  		p256Square(ftmp2, ftmp2);
 60225  		p256Mul(ftmp2, ftmp2, in$1);
 60226  		p256Mul(out, ftmp2, ftmp);
 60227  	};
 60228  	p256Scalar3 = function(out) {
 60229  		var carry, i, out;
 60230  		carry = 0;
 60231  		i = 0;
 60232  		while (true) {
 60233  			out.nilCheck, ((i < 0 || i >= out.length) ? ($throwRuntimeError("index out of range"), undefined) : out[i] = ($imul((out.nilCheck, ((i < 0 || i >= out.length) ? ($throwRuntimeError("index out of range"), undefined) : out[i])), (3)) >>> 0));
 60234  			out.nilCheck, ((i < 0 || i >= out.length) ? ($throwRuntimeError("index out of range"), undefined) : out[i] = ((out.nilCheck, ((i < 0 || i >= out.length) ? ($throwRuntimeError("index out of range"), undefined) : out[i])) + (carry) >>> 0));
 60235  			carry = (out.nilCheck, ((i < 0 || i >= out.length) ? ($throwRuntimeError("index out of range"), undefined) : out[i])) >>> 29 >>> 0;
 60236  			out.nilCheck, ((i < 0 || i >= out.length) ? ($throwRuntimeError("index out of range"), undefined) : out[i] = (((out.nilCheck, ((i < 0 || i >= out.length) ? ($throwRuntimeError("index out of range"), undefined) : out[i])) & (536870911)) >>> 0));
 60237  			i = i + (1) >> 0;
 60238  			if (i === 9) {
 60239  				break;
 60240  			}
 60241  			out.nilCheck, ((i < 0 || i >= out.length) ? ($throwRuntimeError("index out of range"), undefined) : out[i] = ($imul((out.nilCheck, ((i < 0 || i >= out.length) ? ($throwRuntimeError("index out of range"), undefined) : out[i])), (3)) >>> 0));
 60242  			out.nilCheck, ((i < 0 || i >= out.length) ? ($throwRuntimeError("index out of range"), undefined) : out[i] = ((out.nilCheck, ((i < 0 || i >= out.length) ? ($throwRuntimeError("index out of range"), undefined) : out[i])) + (carry) >>> 0));
 60243  			carry = (out.nilCheck, ((i < 0 || i >= out.length) ? ($throwRuntimeError("index out of range"), undefined) : out[i])) >>> 28 >>> 0;
 60244  			out.nilCheck, ((i < 0 || i >= out.length) ? ($throwRuntimeError("index out of range"), undefined) : out[i] = (((out.nilCheck, ((i < 0 || i >= out.length) ? ($throwRuntimeError("index out of range"), undefined) : out[i])) & (268435455)) >>> 0));
 60245  			i = i + (1) >> 0;
 60246  		}
 60247  		p256ReduceCarry(out, carry);
 60248  	};
 60249  	p256Scalar4 = function(out) {
 60250  		var _tmp, _tmp$1, carry, i, nextCarry, out, y, y$1;
 60251  		_tmp = 0;
 60252  		_tmp$1 = 0;
 60253  		carry = _tmp;
 60254  		nextCarry = _tmp$1;
 60255  		i = 0;
 60256  		while (true) {
 60257  			nextCarry = (out.nilCheck, ((i < 0 || i >= out.length) ? ($throwRuntimeError("index out of range"), undefined) : out[i])) >>> 27 >>> 0;
 60258  			out.nilCheck, ((i < 0 || i >= out.length) ? ($throwRuntimeError("index out of range"), undefined) : out[i] = ((y = (2), y < 32 ? ((out.nilCheck, ((i < 0 || i >= out.length) ? ($throwRuntimeError("index out of range"), undefined) : out[i])) << y) : 0) >>> 0));
 60259  			out.nilCheck, ((i < 0 || i >= out.length) ? ($throwRuntimeError("index out of range"), undefined) : out[i] = (((out.nilCheck, ((i < 0 || i >= out.length) ? ($throwRuntimeError("index out of range"), undefined) : out[i])) & (536870911)) >>> 0));
 60260  			out.nilCheck, ((i < 0 || i >= out.length) ? ($throwRuntimeError("index out of range"), undefined) : out[i] = ((out.nilCheck, ((i < 0 || i >= out.length) ? ($throwRuntimeError("index out of range"), undefined) : out[i])) + (carry) >>> 0));
 60261  			carry = nextCarry + (((out.nilCheck, ((i < 0 || i >= out.length) ? ($throwRuntimeError("index out of range"), undefined) : out[i])) >>> 29 >>> 0)) >>> 0;
 60262  			out.nilCheck, ((i < 0 || i >= out.length) ? ($throwRuntimeError("index out of range"), undefined) : out[i] = (((out.nilCheck, ((i < 0 || i >= out.length) ? ($throwRuntimeError("index out of range"), undefined) : out[i])) & (536870911)) >>> 0));
 60263  			i = i + (1) >> 0;
 60264  			if (i === 9) {
 60265  				break;
 60266  			}
 60267  			nextCarry = (out.nilCheck, ((i < 0 || i >= out.length) ? ($throwRuntimeError("index out of range"), undefined) : out[i])) >>> 26 >>> 0;
 60268  			out.nilCheck, ((i < 0 || i >= out.length) ? ($throwRuntimeError("index out of range"), undefined) : out[i] = ((y$1 = (2), y$1 < 32 ? ((out.nilCheck, ((i < 0 || i >= out.length) ? ($throwRuntimeError("index out of range"), undefined) : out[i])) << y$1) : 0) >>> 0));
 60269  			out.nilCheck, ((i < 0 || i >= out.length) ? ($throwRuntimeError("index out of range"), undefined) : out[i] = (((out.nilCheck, ((i < 0 || i >= out.length) ? ($throwRuntimeError("index out of range"), undefined) : out[i])) & (268435455)) >>> 0));
 60270  			out.nilCheck, ((i < 0 || i >= out.length) ? ($throwRuntimeError("index out of range"), undefined) : out[i] = ((out.nilCheck, ((i < 0 || i >= out.length) ? ($throwRuntimeError("index out of range"), undefined) : out[i])) + (carry) >>> 0));
 60271  			carry = nextCarry + (((out.nilCheck, ((i < 0 || i >= out.length) ? ($throwRuntimeError("index out of range"), undefined) : out[i])) >>> 28 >>> 0)) >>> 0;
 60272  			out.nilCheck, ((i < 0 || i >= out.length) ? ($throwRuntimeError("index out of range"), undefined) : out[i] = (((out.nilCheck, ((i < 0 || i >= out.length) ? ($throwRuntimeError("index out of range"), undefined) : out[i])) & (268435455)) >>> 0));
 60273  			i = i + (1) >> 0;
 60274  		}
 60275  		p256ReduceCarry(out, carry);
 60276  	};
 60277  	p256Scalar8 = function(out) {
 60278  		var _tmp, _tmp$1, carry, i, nextCarry, out, y, y$1;
 60279  		_tmp = 0;
 60280  		_tmp$1 = 0;
 60281  		carry = _tmp;
 60282  		nextCarry = _tmp$1;
 60283  		i = 0;
 60284  		while (true) {
 60285  			nextCarry = (out.nilCheck, ((i < 0 || i >= out.length) ? ($throwRuntimeError("index out of range"), undefined) : out[i])) >>> 26 >>> 0;
 60286  			out.nilCheck, ((i < 0 || i >= out.length) ? ($throwRuntimeError("index out of range"), undefined) : out[i] = ((y = (3), y < 32 ? ((out.nilCheck, ((i < 0 || i >= out.length) ? ($throwRuntimeError("index out of range"), undefined) : out[i])) << y) : 0) >>> 0));
 60287  			out.nilCheck, ((i < 0 || i >= out.length) ? ($throwRuntimeError("index out of range"), undefined) : out[i] = (((out.nilCheck, ((i < 0 || i >= out.length) ? ($throwRuntimeError("index out of range"), undefined) : out[i])) & (536870911)) >>> 0));
 60288  			out.nilCheck, ((i < 0 || i >= out.length) ? ($throwRuntimeError("index out of range"), undefined) : out[i] = ((out.nilCheck, ((i < 0 || i >= out.length) ? ($throwRuntimeError("index out of range"), undefined) : out[i])) + (carry) >>> 0));
 60289  			carry = nextCarry + (((out.nilCheck, ((i < 0 || i >= out.length) ? ($throwRuntimeError("index out of range"), undefined) : out[i])) >>> 29 >>> 0)) >>> 0;
 60290  			out.nilCheck, ((i < 0 || i >= out.length) ? ($throwRuntimeError("index out of range"), undefined) : out[i] = (((out.nilCheck, ((i < 0 || i >= out.length) ? ($throwRuntimeError("index out of range"), undefined) : out[i])) & (536870911)) >>> 0));
 60291  			i = i + (1) >> 0;
 60292  			if (i === 9) {
 60293  				break;
 60294  			}
 60295  			nextCarry = (out.nilCheck, ((i < 0 || i >= out.length) ? ($throwRuntimeError("index out of range"), undefined) : out[i])) >>> 25 >>> 0;
 60296  			out.nilCheck, ((i < 0 || i >= out.length) ? ($throwRuntimeError("index out of range"), undefined) : out[i] = ((y$1 = (3), y$1 < 32 ? ((out.nilCheck, ((i < 0 || i >= out.length) ? ($throwRuntimeError("index out of range"), undefined) : out[i])) << y$1) : 0) >>> 0));
 60297  			out.nilCheck, ((i < 0 || i >= out.length) ? ($throwRuntimeError("index out of range"), undefined) : out[i] = (((out.nilCheck, ((i < 0 || i >= out.length) ? ($throwRuntimeError("index out of range"), undefined) : out[i])) & (268435455)) >>> 0));
 60298  			out.nilCheck, ((i < 0 || i >= out.length) ? ($throwRuntimeError("index out of range"), undefined) : out[i] = ((out.nilCheck, ((i < 0 || i >= out.length) ? ($throwRuntimeError("index out of range"), undefined) : out[i])) + (carry) >>> 0));
 60299  			carry = nextCarry + (((out.nilCheck, ((i < 0 || i >= out.length) ? ($throwRuntimeError("index out of range"), undefined) : out[i])) >>> 28 >>> 0)) >>> 0;
 60300  			out.nilCheck, ((i < 0 || i >= out.length) ? ($throwRuntimeError("index out of range"), undefined) : out[i] = (((out.nilCheck, ((i < 0 || i >= out.length) ? ($throwRuntimeError("index out of range"), undefined) : out[i])) & (268435455)) >>> 0));
 60301  			i = i + (1) >> 0;
 60302  		}
 60303  		p256ReduceCarry(out, carry);
 60304  	};
 60305  	p256PointDouble = function(xOut, yOut, zOut, x, y, z) {
 60306  		var _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, alpha, beta, delta, gamma, tmp, tmp2, x, xOut, y, yOut, z, zOut;
 60307  		_tmp = arrayType$4.zero();
 60308  		_tmp$1 = arrayType$4.zero();
 60309  		_tmp$2 = arrayType$4.zero();
 60310  		_tmp$3 = arrayType$4.zero();
 60311  		_tmp$4 = arrayType$4.zero();
 60312  		_tmp$5 = arrayType$4.zero();
 60313  		delta = $clone(_tmp, arrayType$4);
 60314  		gamma = $clone(_tmp$1, arrayType$4);
 60315  		alpha = $clone(_tmp$2, arrayType$4);
 60316  		beta = $clone(_tmp$3, arrayType$4);
 60317  		tmp = $clone(_tmp$4, arrayType$4);
 60318  		tmp2 = $clone(_tmp$5, arrayType$4);
 60319  		p256Square(delta, z);
 60320  		p256Square(gamma, y);
 60321  		p256Mul(beta, x, gamma);
 60322  		p256Sum(tmp, x, delta);
 60323  		p256Diff(tmp2, x, delta);
 60324  		p256Mul(alpha, tmp, tmp2);
 60325  		p256Scalar3(alpha);
 60326  		p256Sum(tmp, y, z);
 60327  		p256Square(tmp, tmp);
 60328  		p256Diff(tmp, tmp, gamma);
 60329  		p256Diff(zOut, tmp, delta);
 60330  		p256Scalar4(beta);
 60331  		p256Square(xOut, alpha);
 60332  		p256Diff(xOut, xOut, beta);
 60333  		p256Diff(xOut, xOut, beta);
 60334  		p256Diff(tmp, beta, xOut);
 60335  		p256Mul(tmp, alpha, tmp);
 60336  		p256Square(tmp2, gamma);
 60337  		p256Scalar8(tmp2);
 60338  		p256Diff(yOut, tmp, tmp2);
 60339  	};
 60340  	p256PointAddMixed = function(xOut, yOut, zOut, x1, y1, z1, x2, y2) {
 60341  		var _tmp, _tmp$1, _tmp$10, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, h, i, j, r, rr, s2, tmp, u2, v, x1, x2, xOut, y1, y2, yOut, z1, z1z1, z1z1z1, zOut;
 60342  		_tmp = arrayType$4.zero();
 60343  		_tmp$1 = arrayType$4.zero();
 60344  		_tmp$2 = arrayType$4.zero();
 60345  		_tmp$3 = arrayType$4.zero();
 60346  		_tmp$4 = arrayType$4.zero();
 60347  		_tmp$5 = arrayType$4.zero();
 60348  		_tmp$6 = arrayType$4.zero();
 60349  		_tmp$7 = arrayType$4.zero();
 60350  		_tmp$8 = arrayType$4.zero();
 60351  		_tmp$9 = arrayType$4.zero();
 60352  		_tmp$10 = arrayType$4.zero();
 60353  		z1z1 = $clone(_tmp, arrayType$4);
 60354  		z1z1z1 = $clone(_tmp$1, arrayType$4);
 60355  		s2 = $clone(_tmp$2, arrayType$4);
 60356  		u2 = $clone(_tmp$3, arrayType$4);
 60357  		h = $clone(_tmp$4, arrayType$4);
 60358  		i = $clone(_tmp$5, arrayType$4);
 60359  		j = $clone(_tmp$6, arrayType$4);
 60360  		r = $clone(_tmp$7, arrayType$4);
 60361  		rr = $clone(_tmp$8, arrayType$4);
 60362  		v = $clone(_tmp$9, arrayType$4);
 60363  		tmp = $clone(_tmp$10, arrayType$4);
 60364  		p256Square(z1z1, z1);
 60365  		p256Sum(tmp, z1, z1);
 60366  		p256Mul(u2, x2, z1z1);
 60367  		p256Mul(z1z1z1, z1, z1z1);
 60368  		p256Mul(s2, y2, z1z1z1);
 60369  		p256Diff(h, u2, x1);
 60370  		p256Sum(i, h, h);
 60371  		p256Square(i, i);
 60372  		p256Mul(j, h, i);
 60373  		p256Diff(r, s2, y1);
 60374  		p256Sum(r, r, r);
 60375  		p256Mul(v, x1, i);
 60376  		p256Mul(zOut, tmp, h);
 60377  		p256Square(rr, r);
 60378  		p256Diff(xOut, rr, j);
 60379  		p256Diff(xOut, xOut, v);
 60380  		p256Diff(xOut, xOut, v);
 60381  		p256Diff(tmp, v, xOut);
 60382  		p256Mul(yOut, tmp, r);
 60383  		p256Mul(tmp, y1, j);
 60384  		p256Diff(yOut, yOut, tmp);
 60385  		p256Diff(yOut, yOut, tmp);
 60386  	};
 60387  	p256PointAdd = function(xOut, yOut, zOut, x1, y1, z1, x2, y2, z2) {
 60388  		var _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$14, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, h, i, j, r, rr, s1, s2, tmp, u1, u2, v, x1, x2, xOut, y1, y2, yOut, z1, z1z1, z1z1z1, z2, z2z2, z2z2z2, zOut;
 60389  		_tmp = arrayType$4.zero();
 60390  		_tmp$1 = arrayType$4.zero();
 60391  		_tmp$2 = arrayType$4.zero();
 60392  		_tmp$3 = arrayType$4.zero();
 60393  		_tmp$4 = arrayType$4.zero();
 60394  		_tmp$5 = arrayType$4.zero();
 60395  		_tmp$6 = arrayType$4.zero();
 60396  		_tmp$7 = arrayType$4.zero();
 60397  		_tmp$8 = arrayType$4.zero();
 60398  		_tmp$9 = arrayType$4.zero();
 60399  		_tmp$10 = arrayType$4.zero();
 60400  		_tmp$11 = arrayType$4.zero();
 60401  		_tmp$12 = arrayType$4.zero();
 60402  		_tmp$13 = arrayType$4.zero();
 60403  		_tmp$14 = arrayType$4.zero();
 60404  		z1z1 = $clone(_tmp, arrayType$4);
 60405  		z1z1z1 = $clone(_tmp$1, arrayType$4);
 60406  		z2z2 = $clone(_tmp$2, arrayType$4);
 60407  		z2z2z2 = $clone(_tmp$3, arrayType$4);
 60408  		s1 = $clone(_tmp$4, arrayType$4);
 60409  		s2 = $clone(_tmp$5, arrayType$4);
 60410  		u1 = $clone(_tmp$6, arrayType$4);
 60411  		u2 = $clone(_tmp$7, arrayType$4);
 60412  		h = $clone(_tmp$8, arrayType$4);
 60413  		i = $clone(_tmp$9, arrayType$4);
 60414  		j = $clone(_tmp$10, arrayType$4);
 60415  		r = $clone(_tmp$11, arrayType$4);
 60416  		rr = $clone(_tmp$12, arrayType$4);
 60417  		v = $clone(_tmp$13, arrayType$4);
 60418  		tmp = $clone(_tmp$14, arrayType$4);
 60419  		p256Square(z1z1, z1);
 60420  		p256Square(z2z2, z2);
 60421  		p256Mul(u1, x1, z2z2);
 60422  		p256Sum(tmp, z1, z2);
 60423  		p256Square(tmp, tmp);
 60424  		p256Diff(tmp, tmp, z1z1);
 60425  		p256Diff(tmp, tmp, z2z2);
 60426  		p256Mul(z2z2z2, z2, z2z2);
 60427  		p256Mul(s1, y1, z2z2z2);
 60428  		p256Mul(u2, x2, z1z1);
 60429  		p256Mul(z1z1z1, z1, z1z1);
 60430  		p256Mul(s2, y2, z1z1z1);
 60431  		p256Diff(h, u2, u1);
 60432  		p256Sum(i, h, h);
 60433  		p256Square(i, i);
 60434  		p256Mul(j, h, i);
 60435  		p256Diff(r, s2, s1);
 60436  		p256Sum(r, r, r);
 60437  		p256Mul(v, u1, i);
 60438  		p256Mul(zOut, tmp, h);
 60439  		p256Square(rr, r);
 60440  		p256Diff(xOut, rr, j);
 60441  		p256Diff(xOut, xOut, v);
 60442  		p256Diff(xOut, xOut, v);
 60443  		p256Diff(tmp, v, xOut);
 60444  		p256Mul(yOut, tmp, r);
 60445  		p256Mul(tmp, s1, j);
 60446  		p256Diff(yOut, yOut, tmp);
 60447  		p256Diff(yOut, yOut, tmp);
 60448  	};
 60449  	p256CopyConditional = function(out, in$1, mask$1) {
 60450  		var i, in$1, mask$1, out, tmp;
 60451  		i = 0;
 60452  		while (true) {
 60453  			if (!(i < 9)) { break; }
 60454  			tmp = (mask$1 & ((((in$1.nilCheck, ((i < 0 || i >= in$1.length) ? ($throwRuntimeError("index out of range"), undefined) : in$1[i])) ^ (out.nilCheck, ((i < 0 || i >= out.length) ? ($throwRuntimeError("index out of range"), undefined) : out[i]))) >>> 0))) >>> 0;
 60455  			out.nilCheck, ((i < 0 || i >= out.length) ? ($throwRuntimeError("index out of range"), undefined) : out[i] = (((out.nilCheck, ((i < 0 || i >= out.length) ? ($throwRuntimeError("index out of range"), undefined) : out[i])) ^ (tmp)) >>> 0));
 60456  			i = i + (1) >> 0;
 60457  		}
 60458  	};
 60459  	p256SelectAffinePoint = function(xOut, yOut, table, index) {
 60460  		var _i, _i$1, _i$2, _i$3, _ref, _ref$1, _ref$2, _ref$3, i, i$1, i$2, index, j, j$1, mask$1, table, xOut, yOut;
 60461  		_ref = xOut;
 60462  		_i = 0;
 60463  		while (true) {
 60464  			if (!(_i < 9)) { break; }
 60465  			i = _i;
 60466  			xOut.nilCheck, ((i < 0 || i >= xOut.length) ? ($throwRuntimeError("index out of range"), undefined) : xOut[i] = 0);
 60467  			_i++;
 60468  		}
 60469  		_ref$1 = yOut;
 60470  		_i$1 = 0;
 60471  		while (true) {
 60472  			if (!(_i$1 < 9)) { break; }
 60473  			i$1 = _i$1;
 60474  			yOut.nilCheck, ((i$1 < 0 || i$1 >= yOut.length) ? ($throwRuntimeError("index out of range"), undefined) : yOut[i$1] = 0);
 60475  			_i$1++;
 60476  		}
 60477  		i$2 = 1;
 60478  		while (true) {
 60479  			if (!(i$2 < 16)) { break; }
 60480  			mask$1 = (i$2 ^ index) >>> 0;
 60481  			mask$1 = (mask$1 | ((mask$1 >>> 2 >>> 0))) >>> 0;
 60482  			mask$1 = (mask$1 | ((mask$1 >>> 1 >>> 0))) >>> 0;
 60483  			mask$1 = (mask$1 & (1)) >>> 0;
 60484  			mask$1 = mask$1 - (1) >>> 0;
 60485  			_ref$2 = xOut;
 60486  			_i$2 = 0;
 60487  			while (true) {
 60488  				if (!(_i$2 < 9)) { break; }
 60489  				j = _i$2;
 60490  				xOut.nilCheck, ((j < 0 || j >= xOut.length) ? ($throwRuntimeError("index out of range"), undefined) : xOut[j] = (((xOut.nilCheck, ((j < 0 || j >= xOut.length) ? ($throwRuntimeError("index out of range"), undefined) : xOut[j])) | ((((0 >= table.$length ? ($throwRuntimeError("index out of range"), undefined) : table.$array[table.$offset + 0]) & mask$1) >>> 0))) >>> 0));
 60491  				table = $subslice(table, 1);
 60492  				_i$2++;
 60493  			}
 60494  			_ref$3 = yOut;
 60495  			_i$3 = 0;
 60496  			while (true) {
 60497  				if (!(_i$3 < 9)) { break; }
 60498  				j$1 = _i$3;
 60499  				yOut.nilCheck, ((j$1 < 0 || j$1 >= yOut.length) ? ($throwRuntimeError("index out of range"), undefined) : yOut[j$1] = (((yOut.nilCheck, ((j$1 < 0 || j$1 >= yOut.length) ? ($throwRuntimeError("index out of range"), undefined) : yOut[j$1])) | ((((0 >= table.$length ? ($throwRuntimeError("index out of range"), undefined) : table.$array[table.$offset + 0]) & mask$1) >>> 0))) >>> 0));
 60500  				table = $subslice(table, 1);
 60501  				_i$3++;
 60502  			}
 60503  			i$2 = i$2 + (1) >>> 0;
 60504  		}
 60505  	};
 60506  	p256SelectJacobianPoint = function(xOut, yOut, zOut, table, index) {
 60507  		var _i, _i$1, _i$2, _i$3, _i$4, _i$5, _ref, _ref$1, _ref$2, _ref$3, _ref$4, _ref$5, i, i$1, i$2, i$3, index, j, j$1, j$2, mask$1, table, x, x$1, x$2, xOut, yOut, zOut;
 60508  		_ref = xOut;
 60509  		_i = 0;
 60510  		while (true) {
 60511  			if (!(_i < 9)) { break; }
 60512  			i = _i;
 60513  			xOut.nilCheck, ((i < 0 || i >= xOut.length) ? ($throwRuntimeError("index out of range"), undefined) : xOut[i] = 0);
 60514  			_i++;
 60515  		}
 60516  		_ref$1 = yOut;
 60517  		_i$1 = 0;
 60518  		while (true) {
 60519  			if (!(_i$1 < 9)) { break; }
 60520  			i$1 = _i$1;
 60521  			yOut.nilCheck, ((i$1 < 0 || i$1 >= yOut.length) ? ($throwRuntimeError("index out of range"), undefined) : yOut[i$1] = 0);
 60522  			_i$1++;
 60523  		}
 60524  		_ref$2 = zOut;
 60525  		_i$2 = 0;
 60526  		while (true) {
 60527  			if (!(_i$2 < 9)) { break; }
 60528  			i$2 = _i$2;
 60529  			zOut.nilCheck, ((i$2 < 0 || i$2 >= zOut.length) ? ($throwRuntimeError("index out of range"), undefined) : zOut[i$2] = 0);
 60530  			_i$2++;
 60531  		}
 60532  		i$3 = 1;
 60533  		while (true) {
 60534  			if (!(i$3 < 16)) { break; }
 60535  			mask$1 = (i$3 ^ index) >>> 0;
 60536  			mask$1 = (mask$1 | ((mask$1 >>> 2 >>> 0))) >>> 0;
 60537  			mask$1 = (mask$1 | ((mask$1 >>> 1 >>> 0))) >>> 0;
 60538  			mask$1 = (mask$1 & (1)) >>> 0;
 60539  			mask$1 = mask$1 - (1) >>> 0;
 60540  			_ref$3 = xOut;
 60541  			_i$3 = 0;
 60542  			while (true) {
 60543  				if (!(_i$3 < 9)) { break; }
 60544  				j = _i$3;
 60545  				xOut.nilCheck, ((j < 0 || j >= xOut.length) ? ($throwRuntimeError("index out of range"), undefined) : xOut[j] = (((xOut.nilCheck, ((j < 0 || j >= xOut.length) ? ($throwRuntimeError("index out of range"), undefined) : xOut[j])) | ((((x = (table.nilCheck, ((i$3 < 0 || i$3 >= table.length) ? ($throwRuntimeError("index out of range"), undefined) : table[i$3]))[0], ((j < 0 || j >= x.length) ? ($throwRuntimeError("index out of range"), undefined) : x[j])) & mask$1) >>> 0))) >>> 0));
 60546  				_i$3++;
 60547  			}
 60548  			_ref$4 = yOut;
 60549  			_i$4 = 0;
 60550  			while (true) {
 60551  				if (!(_i$4 < 9)) { break; }
 60552  				j$1 = _i$4;
 60553  				yOut.nilCheck, ((j$1 < 0 || j$1 >= yOut.length) ? ($throwRuntimeError("index out of range"), undefined) : yOut[j$1] = (((yOut.nilCheck, ((j$1 < 0 || j$1 >= yOut.length) ? ($throwRuntimeError("index out of range"), undefined) : yOut[j$1])) | ((((x$1 = (table.nilCheck, ((i$3 < 0 || i$3 >= table.length) ? ($throwRuntimeError("index out of range"), undefined) : table[i$3]))[1], ((j$1 < 0 || j$1 >= x$1.length) ? ($throwRuntimeError("index out of range"), undefined) : x$1[j$1])) & mask$1) >>> 0))) >>> 0));
 60554  				_i$4++;
 60555  			}
 60556  			_ref$5 = zOut;
 60557  			_i$5 = 0;
 60558  			while (true) {
 60559  				if (!(_i$5 < 9)) { break; }
 60560  				j$2 = _i$5;
 60561  				zOut.nilCheck, ((j$2 < 0 || j$2 >= zOut.length) ? ($throwRuntimeError("index out of range"), undefined) : zOut[j$2] = (((zOut.nilCheck, ((j$2 < 0 || j$2 >= zOut.length) ? ($throwRuntimeError("index out of range"), undefined) : zOut[j$2])) | ((((x$2 = (table.nilCheck, ((i$3 < 0 || i$3 >= table.length) ? ($throwRuntimeError("index out of range"), undefined) : table[i$3]))[2], ((j$2 < 0 || j$2 >= x$2.length) ? ($throwRuntimeError("index out of range"), undefined) : x$2[j$2])) & mask$1) >>> 0))) >>> 0));
 60562  				_i$5++;
 60563  			}
 60564  			i$3 = i$3 + (1) >>> 0;
 60565  		}
 60566  	};
 60567  	p256GetBit = function(scalar, bit) {
 60568  		var bit, scalar, x, y;
 60569  		return (((((((y = (((bit & 7) >>> 0)), y < 32 ? (((x = bit >>> 3 >>> 0, (scalar.nilCheck, ((x < 0 || x >= scalar.length) ? ($throwRuntimeError("index out of range"), undefined) : scalar[x])))) >>> y) : 0) << 24 >>> 24)) & 1) >>> 0) >>> 0));
 60570  	};
 60571  	p256ScalarBaseMult = function(xOut, yOut, zOut, scalar) {
 60572  		var _i, _i$1, _i$2, _ref, _ref$1, _ref$2, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, bit0, bit1, bit2, bit3, i, i$1, i$2, i$3, index, j, mask$1, nIsInfinityMask, pIsNoninfiniteMask, px, py, scalar, tableOffset, tx, ty, tz, xOut, yOut, zOut;
 60573  		nIsInfinityMask = 4294967295;
 60574  		_tmp = 0;
 60575  		_tmp$1 = 0;
 60576  		_tmp$2 = 0;
 60577  		pIsNoninfiniteMask = _tmp;
 60578  		mask$1 = _tmp$1;
 60579  		tableOffset = _tmp$2;
 60580  		_tmp$3 = arrayType$4.zero();
 60581  		_tmp$4 = arrayType$4.zero();
 60582  		_tmp$5 = arrayType$4.zero();
 60583  		_tmp$6 = arrayType$4.zero();
 60584  		_tmp$7 = arrayType$4.zero();
 60585  		px = $clone(_tmp$3, arrayType$4);
 60586  		py = $clone(_tmp$4, arrayType$4);
 60587  		tx = $clone(_tmp$5, arrayType$4);
 60588  		ty = $clone(_tmp$6, arrayType$4);
 60589  		tz = $clone(_tmp$7, arrayType$4);
 60590  		_ref = xOut;
 60591  		_i = 0;
 60592  		while (true) {
 60593  			if (!(_i < 9)) { break; }
 60594  			i = _i;
 60595  			xOut.nilCheck, ((i < 0 || i >= xOut.length) ? ($throwRuntimeError("index out of range"), undefined) : xOut[i] = 0);
 60596  			_i++;
 60597  		}
 60598  		_ref$1 = yOut;
 60599  		_i$1 = 0;
 60600  		while (true) {
 60601  			if (!(_i$1 < 9)) { break; }
 60602  			i$1 = _i$1;
 60603  			yOut.nilCheck, ((i$1 < 0 || i$1 >= yOut.length) ? ($throwRuntimeError("index out of range"), undefined) : yOut[i$1] = 0);
 60604  			_i$1++;
 60605  		}
 60606  		_ref$2 = zOut;
 60607  		_i$2 = 0;
 60608  		while (true) {
 60609  			if (!(_i$2 < 9)) { break; }
 60610  			i$2 = _i$2;
 60611  			zOut.nilCheck, ((i$2 < 0 || i$2 >= zOut.length) ? ($throwRuntimeError("index out of range"), undefined) : zOut[i$2] = 0);
 60612  			_i$2++;
 60613  		}
 60614  		i$3 = 0;
 60615  		while (true) {
 60616  			if (!(i$3 < 32)) { break; }
 60617  			if (!((i$3 === 0))) {
 60618  				p256PointDouble(xOut, yOut, zOut, xOut, yOut, zOut);
 60619  			}
 60620  			tableOffset = 0;
 60621  			j = 0;
 60622  			while (true) {
 60623  				if (!(j <= 32)) { break; }
 60624  				bit0 = p256GetBit(scalar, (31 - i$3 >>> 0) + j >>> 0);
 60625  				bit1 = p256GetBit(scalar, (95 - i$3 >>> 0) + j >>> 0);
 60626  				bit2 = p256GetBit(scalar, (159 - i$3 >>> 0) + j >>> 0);
 60627  				bit3 = p256GetBit(scalar, (223 - i$3 >>> 0) + j >>> 0);
 60628  				index = (((((bit0 | ((bit1 << 1 >>> 0))) >>> 0) | ((bit2 << 2 >>> 0))) >>> 0) | ((bit3 << 3 >>> 0))) >>> 0;
 60629  				p256SelectAffinePoint(px, py, $subslice(new sliceType$1(p256Precomputed), tableOffset), index);
 60630  				tableOffset = tableOffset + (270) >>> 0;
 60631  				p256PointAddMixed(tx, ty, tz, xOut, yOut, zOut, px, py);
 60632  				p256CopyConditional(xOut, px, nIsInfinityMask);
 60633  				p256CopyConditional(yOut, py, nIsInfinityMask);
 60634  				p256CopyConditional(zOut, p256One, nIsInfinityMask);
 60635  				pIsNoninfiniteMask = nonZeroToAllOnes(index);
 60636  				mask$1 = (pIsNoninfiniteMask & (~nIsInfinityMask >>> 0)) >>> 0;
 60637  				p256CopyConditional(xOut, tx, mask$1);
 60638  				p256CopyConditional(yOut, ty, mask$1);
 60639  				p256CopyConditional(zOut, tz, mask$1);
 60640  				nIsInfinityMask = (nIsInfinityMask & ~(pIsNoninfiniteMask)) >>> 0;
 60641  				j = j + (32) >>> 0;
 60642  			}
 60643  			i$3 = i$3 + (1) >>> 0;
 60644  		}
 60645  	};
 60646  	p256PointToAffine = function(xOut, yOut, x, y, z) {
 60647  		var _tmp, _tmp$1, x, xOut, y, yOut, z, zInv, zInvSq;
 60648  		_tmp = arrayType$4.zero();
 60649  		_tmp$1 = arrayType$4.zero();
 60650  		zInv = $clone(_tmp, arrayType$4);
 60651  		zInvSq = $clone(_tmp$1, arrayType$4);
 60652  		p256Invert(zInv, z);
 60653  		p256Square(zInvSq, zInv);
 60654  		p256Mul(xOut, x, zInvSq);
 60655  		p256Mul(zInv, zInv, zInvSq);
 60656  		p256Mul(yOut, y, zInv);
 60657  	};
 60658  	p256ToAffine = function(x, y, z) {
 60659  		var _r, _r$1, _tmp, _tmp$1, _tmp$2, _tmp$3, x, xOut, xx, y, yOut, yy, z, $s, $r;
 60660  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; x = $f.x; xOut = $f.xOut; xx = $f.xx; y = $f.y; yOut = $f.yOut; yy = $f.yy; z = $f.z; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 60661  		xx = [xx];
 60662  		yy = [yy];
 60663  		xOut = ptrType$1.nil;
 60664  		yOut = ptrType$1.nil;
 60665  		_tmp = arrayType$4.zero();
 60666  		_tmp$1 = arrayType$4.zero();
 60667  		xx[0] = $clone(_tmp, arrayType$4);
 60668  		yy[0] = $clone(_tmp$1, arrayType$4);
 60669  		p256PointToAffine(xx[0], yy[0], x, y, z);
 60670  		_r = p256ToBig(xx[0]); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 60671  		_tmp$2 = _r;
 60672  		_r$1 = p256ToBig(yy[0]); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 60673  		_tmp$3 = _r$1;
 60674  		xOut = _tmp$2;
 60675  		yOut = _tmp$3;
 60676  		$s = -1; return [xOut, yOut];
 60677  		/* */ } return; } if ($f === undefined) { $f = { $blk: p256ToAffine }; } $f._r = _r; $f._r$1 = _r$1; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f.x = x; $f.xOut = xOut; $f.xx = xx; $f.y = y; $f.yOut = yOut; $f.yy = yy; $f.z = z; $f.$s = $s; $f.$r = $r; return $f;
 60678  	};
 60679  	p256ScalarMult = function(xOut, yOut, zOut, x, y, scalar) {
 60680  		var _i, _i$1, _i$2, _q, _q$1, _q$2, _q$3, _ref, _ref$1, _ref$2, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, i, i$1, i$2, i$3, i$4, index, mask$1, nIsInfinityMask, pIsNoninfiniteMask, precomp, px, py, pz, scalar, tx, ty, tz, x, x$1, x$2, x$3, x$4, x$5, x$6, x$7, xOut, y, y$1, yOut, zOut;
 60681  		_tmp = arrayType$4.zero();
 60682  		_tmp$1 = arrayType$4.zero();
 60683  		_tmp$2 = arrayType$4.zero();
 60684  		_tmp$3 = arrayType$4.zero();
 60685  		_tmp$4 = arrayType$4.zero();
 60686  		_tmp$5 = arrayType$4.zero();
 60687  		px = $clone(_tmp, arrayType$4);
 60688  		py = $clone(_tmp$1, arrayType$4);
 60689  		pz = $clone(_tmp$2, arrayType$4);
 60690  		tx = $clone(_tmp$3, arrayType$4);
 60691  		ty = $clone(_tmp$4, arrayType$4);
 60692  		tz = $clone(_tmp$5, arrayType$4);
 60693  		precomp = arrayType$8.zero();
 60694  		_tmp$6 = 0;
 60695  		_tmp$7 = 0;
 60696  		_tmp$8 = 0;
 60697  		_tmp$9 = 0;
 60698  		nIsInfinityMask = _tmp$6;
 60699  		index = _tmp$7;
 60700  		pIsNoninfiniteMask = _tmp$8;
 60701  		mask$1 = _tmp$9;
 60702  		arrayType$4.copy(precomp[1][0], x);
 60703  		arrayType$4.copy(precomp[1][1], y);
 60704  		arrayType$4.copy(precomp[1][2], p256One);
 60705  		i = 2;
 60706  		while (true) {
 60707  			if (!(i < 16)) { break; }
 60708  			p256PointDouble(((i < 0 || i >= precomp.length) ? ($throwRuntimeError("index out of range"), undefined) : precomp[i])[0], ((i < 0 || i >= precomp.length) ? ($throwRuntimeError("index out of range"), undefined) : precomp[i])[1], ((i < 0 || i >= precomp.length) ? ($throwRuntimeError("index out of range"), undefined) : precomp[i])[2], (x$1 = (_q = i / 2, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")), ((x$1 < 0 || x$1 >= precomp.length) ? ($throwRuntimeError("index out of range"), undefined) : precomp[x$1]))[0], (x$2 = (_q$1 = i / 2, (_q$1 === _q$1 && _q$1 !== 1/0 && _q$1 !== -1/0) ? _q$1 >> 0 : $throwRuntimeError("integer divide by zero")), ((x$2 < 0 || x$2 >= precomp.length) ? ($throwRuntimeError("index out of range"), undefined) : precomp[x$2]))[1], (x$3 = (_q$2 = i / 2, (_q$2 === _q$2 && _q$2 !== 1/0 && _q$2 !== -1/0) ? _q$2 >> 0 : $throwRuntimeError("integer divide by zero")), ((x$3 < 0 || x$3 >= precomp.length) ? ($throwRuntimeError("index out of range"), undefined) : precomp[x$3]))[2]);
 60709  			p256PointAddMixed((x$4 = i + 1 >> 0, ((x$4 < 0 || x$4 >= precomp.length) ? ($throwRuntimeError("index out of range"), undefined) : precomp[x$4]))[0], (x$5 = i + 1 >> 0, ((x$5 < 0 || x$5 >= precomp.length) ? ($throwRuntimeError("index out of range"), undefined) : precomp[x$5]))[1], (x$6 = i + 1 >> 0, ((x$6 < 0 || x$6 >= precomp.length) ? ($throwRuntimeError("index out of range"), undefined) : precomp[x$6]))[2], ((i < 0 || i >= precomp.length) ? ($throwRuntimeError("index out of range"), undefined) : precomp[i])[0], ((i < 0 || i >= precomp.length) ? ($throwRuntimeError("index out of range"), undefined) : precomp[i])[1], ((i < 0 || i >= precomp.length) ? ($throwRuntimeError("index out of range"), undefined) : precomp[i])[2], x, y);
 60710  			i = i + (2) >> 0;
 60711  		}
 60712  		_ref = xOut;
 60713  		_i = 0;
 60714  		while (true) {
 60715  			if (!(_i < 9)) { break; }
 60716  			i$1 = _i;
 60717  			xOut.nilCheck, ((i$1 < 0 || i$1 >= xOut.length) ? ($throwRuntimeError("index out of range"), undefined) : xOut[i$1] = 0);
 60718  			_i++;
 60719  		}
 60720  		_ref$1 = yOut;
 60721  		_i$1 = 0;
 60722  		while (true) {
 60723  			if (!(_i$1 < 9)) { break; }
 60724  			i$2 = _i$1;
 60725  			yOut.nilCheck, ((i$2 < 0 || i$2 >= yOut.length) ? ($throwRuntimeError("index out of range"), undefined) : yOut[i$2] = 0);
 60726  			_i$1++;
 60727  		}
 60728  		_ref$2 = zOut;
 60729  		_i$2 = 0;
 60730  		while (true) {
 60731  			if (!(_i$2 < 9)) { break; }
 60732  			i$3 = _i$2;
 60733  			zOut.nilCheck, ((i$3 < 0 || i$3 >= zOut.length) ? ($throwRuntimeError("index out of range"), undefined) : zOut[i$3] = 0);
 60734  			_i$2++;
 60735  		}
 60736  		nIsInfinityMask = 4294967295;
 60737  		i$4 = 0;
 60738  		while (true) {
 60739  			if (!(i$4 < 64)) { break; }
 60740  			if (!((i$4 === 0))) {
 60741  				p256PointDouble(xOut, yOut, zOut, xOut, yOut, zOut);
 60742  				p256PointDouble(xOut, yOut, zOut, xOut, yOut, zOut);
 60743  				p256PointDouble(xOut, yOut, zOut, xOut, yOut, zOut);
 60744  				p256PointDouble(xOut, yOut, zOut, xOut, yOut, zOut);
 60745  			}
 60746  			index = (((x$7 = 31 - (_q$3 = i$4 / 2, (_q$3 === _q$3 && _q$3 !== 1/0 && _q$3 !== -1/0) ? _q$3 >> 0 : $throwRuntimeError("integer divide by zero")) >> 0, (scalar.nilCheck, ((x$7 < 0 || x$7 >= scalar.length) ? ($throwRuntimeError("index out of range"), undefined) : scalar[x$7]))) >>> 0));
 60747  			if (((i$4 & 1)) === 1) {
 60748  				index = (index & (15)) >>> 0;
 60749  			} else {
 60750  				index = (y$1 = (4), y$1 < 32 ? (index >>> y$1) : 0) >>> 0;
 60751  			}
 60752  			p256SelectJacobianPoint(px, py, pz, precomp, index);
 60753  			p256PointAdd(tx, ty, tz, xOut, yOut, zOut, px, py, pz);
 60754  			p256CopyConditional(xOut, px, nIsInfinityMask);
 60755  			p256CopyConditional(yOut, py, nIsInfinityMask);
 60756  			p256CopyConditional(zOut, pz, nIsInfinityMask);
 60757  			pIsNoninfiniteMask = nonZeroToAllOnes(index);
 60758  			mask$1 = (pIsNoninfiniteMask & (~nIsInfinityMask >>> 0)) >>> 0;
 60759  			p256CopyConditional(xOut, tx, mask$1);
 60760  			p256CopyConditional(yOut, ty, mask$1);
 60761  			p256CopyConditional(zOut, tz, mask$1);
 60762  			nIsInfinityMask = (nIsInfinityMask & ~(pIsNoninfiniteMask)) >>> 0;
 60763  			i$4 = i$4 + (1) >> 0;
 60764  		}
 60765  	};
 60766  	p256FromBig = function(out, in$1) {
 60767  		var _r, bits, bits$1, i, in$1, out, tmp, $s, $r;
 60768  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; bits = $f.bits; bits$1 = $f.bits$1; i = $f.i; in$1 = $f.in$1; out = $f.out; tmp = $f.tmp; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 60769  		tmp = new big.Int.ptr(false, big.nat.nil).Lsh(in$1, 257);
 60770  		_r = tmp.Mod(tmp, p256Params.P); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 60771  		_r;
 60772  		i = 0;
 60773  		while (true) {
 60774  			if (!(i < 9)) { break; }
 60775  			bits = tmp.Bits();
 60776  			if (bits.$length > 0) {
 60777  				out.nilCheck, ((i < 0 || i >= out.length) ? ($throwRuntimeError("index out of range"), undefined) : out[i] = (((((0 >= bits.$length ? ($throwRuntimeError("index out of range"), undefined) : bits.$array[bits.$offset + 0]) >>> 0)) & 536870911) >>> 0));
 60778  			} else {
 60779  				out.nilCheck, ((i < 0 || i >= out.length) ? ($throwRuntimeError("index out of range"), undefined) : out[i] = 0);
 60780  			}
 60781  			tmp.Rsh(tmp, 29);
 60782  			i = i + (1) >> 0;
 60783  			if (i === 9) {
 60784  				break;
 60785  			}
 60786  			bits$1 = tmp.Bits();
 60787  			if (bits$1.$length > 0) {
 60788  				out.nilCheck, ((i < 0 || i >= out.length) ? ($throwRuntimeError("index out of range"), undefined) : out[i] = (((((0 >= bits$1.$length ? ($throwRuntimeError("index out of range"), undefined) : bits$1.$array[bits$1.$offset + 0]) >>> 0)) & 268435455) >>> 0));
 60789  			} else {
 60790  				out.nilCheck, ((i < 0 || i >= out.length) ? ($throwRuntimeError("index out of range"), undefined) : out[i] = 0);
 60791  			}
 60792  			tmp.Rsh(tmp, 28);
 60793  			i = i + (1) >> 0;
 60794  		}
 60795  		$s = -1; return;
 60796  		/* */ } return; } if ($f === undefined) { $f = { $blk: p256FromBig }; } $f._r = _r; $f.bits = bits; $f.bits$1 = bits$1; $f.i = i; $f.in$1 = in$1; $f.out = out; $f.tmp = tmp; $f.$s = $s; $f.$r = $r; return $f;
 60797  	};
 60798  	p256ToBig = function(in$1) {
 60799  		var _r, _tmp, _tmp$1, i, in$1, result, tmp, $s, $r;
 60800  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; i = $f.i; in$1 = $f.in$1; result = $f.result; tmp = $f.tmp; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 60801  		_tmp = new big.Int.ptr(false, big.nat.nil);
 60802  		_tmp$1 = new big.Int.ptr(false, big.nat.nil);
 60803  		result = _tmp;
 60804  		tmp = _tmp$1;
 60805  		result.SetInt64((new $Int64(0, (in$1.nilCheck, in$1[8]))));
 60806  		i = 7;
 60807  		while (true) {
 60808  			if (!(i >= 0)) { break; }
 60809  			if (((i & 1)) === 0) {
 60810  				result.Lsh(result, 29);
 60811  			} else {
 60812  				result.Lsh(result, 28);
 60813  			}
 60814  			tmp.SetInt64((new $Int64(0, (in$1.nilCheck, ((i < 0 || i >= in$1.length) ? ($throwRuntimeError("index out of range"), undefined) : in$1[i])))));
 60815  			result.Add(result, tmp);
 60816  			i = i - (1) >> 0;
 60817  		}
 60818  		result.Mul(result, p256RInverse);
 60819  		_r = result.Mod(result, p256Params.P); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 60820  		_r;
 60821  		$s = -1; return result;
 60822  		/* */ } return; } if ($f === undefined) { $f = { $blk: p256ToBig }; } $f._r = _r; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f.i = i; $f.in$1 = in$1; $f.result = result; $f.tmp = tmp; $f.$s = $s; $f.$r = $r; return $f;
 60823  	};
 60824  	initP256Arch = function() {
 60825  		p256Curve.copy(p256, new p256Curve.ptr(p256Params));
 60826  	};
 60827  	ptrType.methods = [{prop: "Params", name: "Params", pkg: "", typ: $funcType([], [ptrType], false)}, {prop: "IsOnCurve", name: "IsOnCurve", pkg: "", typ: $funcType([ptrType$1, ptrType$1], [$Bool], false)}, {prop: "affineFromJacobian", name: "affineFromJacobian", pkg: "crypto/elliptic", typ: $funcType([ptrType$1, ptrType$1, ptrType$1], [ptrType$1, ptrType$1], false)}, {prop: "Add", name: "Add", pkg: "", typ: $funcType([ptrType$1, ptrType$1, ptrType$1, ptrType$1], [ptrType$1, ptrType$1], false)}, {prop: "addJacobian", name: "addJacobian", pkg: "crypto/elliptic", typ: $funcType([ptrType$1, ptrType$1, ptrType$1, ptrType$1, ptrType$1, ptrType$1], [ptrType$1, ptrType$1, ptrType$1], false)}, {prop: "Double", name: "Double", pkg: "", typ: $funcType([ptrType$1, ptrType$1], [ptrType$1, ptrType$1], false)}, {prop: "doubleJacobian", name: "doubleJacobian", pkg: "crypto/elliptic", typ: $funcType([ptrType$1, ptrType$1, ptrType$1], [ptrType$1, ptrType$1, ptrType$1], false)}, {prop: "ScalarMult", name: "ScalarMult", pkg: "", typ: $funcType([ptrType$1, ptrType$1, sliceType], [ptrType$1, ptrType$1], false)}, {prop: "ScalarBaseMult", name: "ScalarBaseMult", pkg: "", typ: $funcType([sliceType], [ptrType$1, ptrType$1], false)}];
 60828  	p224Curve.methods = [{prop: "Params", name: "Params", pkg: "", typ: $funcType([], [ptrType], false)}, {prop: "IsOnCurve", name: "IsOnCurve", pkg: "", typ: $funcType([ptrType$1, ptrType$1], [$Bool], false)}, {prop: "Add", name: "Add", pkg: "", typ: $funcType([ptrType$1, ptrType$1, ptrType$1, ptrType$1], [ptrType$1, ptrType$1], false)}, {prop: "Double", name: "Double", pkg: "", typ: $funcType([ptrType$1, ptrType$1], [ptrType$1, ptrType$1], false)}, {prop: "ScalarMult", name: "ScalarMult", pkg: "", typ: $funcType([ptrType$1, ptrType$1, sliceType], [ptrType$1, ptrType$1], false)}, {prop: "ScalarBaseMult", name: "ScalarBaseMult", pkg: "", typ: $funcType([sliceType], [ptrType$1, ptrType$1], false)}];
 60829  	p256Curve.methods = [{prop: "Params", name: "Params", pkg: "", typ: $funcType([], [ptrType], false)}, {prop: "ScalarBaseMult", name: "ScalarBaseMult", pkg: "", typ: $funcType([sliceType], [ptrType$1, ptrType$1], false)}, {prop: "ScalarMult", name: "ScalarMult", pkg: "", typ: $funcType([ptrType$1, ptrType$1, sliceType], [ptrType$1, ptrType$1], false)}];
 60830  	Curve.init([{prop: "Add", name: "Add", pkg: "", typ: $funcType([ptrType$1, ptrType$1, ptrType$1, ptrType$1], [ptrType$1, ptrType$1], false)}, {prop: "Double", name: "Double", pkg: "", typ: $funcType([ptrType$1, ptrType$1], [ptrType$1, ptrType$1], false)}, {prop: "IsOnCurve", name: "IsOnCurve", pkg: "", typ: $funcType([ptrType$1, ptrType$1], [$Bool], false)}, {prop: "Params", name: "Params", pkg: "", typ: $funcType([], [ptrType], false)}, {prop: "ScalarBaseMult", name: "ScalarBaseMult", pkg: "", typ: $funcType([sliceType], [ptrType$1, ptrType$1], false)}, {prop: "ScalarMult", name: "ScalarMult", pkg: "", typ: $funcType([ptrType$1, ptrType$1, sliceType], [ptrType$1, ptrType$1], false)}]);
 60831  	CurveParams.init("", [{prop: "P", name: "P", anonymous: false, exported: true, typ: ptrType$1, tag: ""}, {prop: "N", name: "N", anonymous: false, exported: true, typ: ptrType$1, tag: ""}, {prop: "B", name: "B", anonymous: false, exported: true, typ: ptrType$1, tag: ""}, {prop: "Gx", name: "Gx", anonymous: false, exported: true, typ: ptrType$1, tag: ""}, {prop: "Gy", name: "Gy", anonymous: false, exported: true, typ: ptrType$1, tag: ""}, {prop: "BitSize", name: "BitSize", anonymous: false, exported: true, typ: $Int, tag: ""}, {prop: "Name", name: "Name", anonymous: false, exported: true, typ: $String, tag: ""}]);
 60832  	p224Curve.init("crypto/elliptic", [{prop: "CurveParams", name: "CurveParams", anonymous: true, exported: true, typ: ptrType, tag: ""}, {prop: "gx", name: "gx", anonymous: false, exported: false, typ: p224FieldElement, tag: ""}, {prop: "gy", name: "gy", anonymous: false, exported: false, typ: p224FieldElement, tag: ""}, {prop: "b", name: "b", anonymous: false, exported: false, typ: p224FieldElement, tag: ""}]);
 60833  	p224FieldElement.init($Uint32, 8);
 60834  	p256Curve.init("", [{prop: "CurveParams", name: "CurveParams", anonymous: true, exported: true, typ: ptrType, tag: ""}]);
 60835  	$init = function() {
 60836  		$pkg.$init = function() {};
 60837  		/* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 60838  		$r = io.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 60839  		$r = big.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 60840  		$r = sync.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 60841  		initonce = new sync.Once.ptr(new sync.Mutex.ptr(0, 0), 0);
 60842  		p384 = ptrType.nil;
 60843  		p521 = ptrType.nil;
 60844  		p224 = new p224Curve.ptr(ptrType.nil, arrayType.zero(), arrayType.zero(), arrayType.zero());
 60845  		p256Params = ptrType.nil;
 60846  		p256RInverse = ptrType$1.nil;
 60847  		p256 = new p256Curve.ptr(ptrType.nil);
 60848  		mask = new sliceType([255, 1, 3, 7, 15, 31, 63, 127]);
 60849  		p224P = $toNativeArray($kindUint32, [1, 0, 0, 268431360, 268435455, 268435455, 268435455, 268435455]);
 60850  		p224ZeroModP31 = new sliceType$1([2147483656, 2147483640, 2147483640, 2147450872, 2147483640, 2147483640, 2147483640, 2147483640]);
 60851  		p224ZeroModP63 = $toNativeArray($kindUint64, [new $Uint64(2147483656, 0), new $Uint64(2147483640, 0), new $Uint64(2147483640, 0), new $Uint64(2147483640, 0), new $Uint64(2147483639, 4294443008), new $Uint64(2147483640, 0), new $Uint64(2147483640, 0), new $Uint64(2147483640, 0)]);
 60852  		p256One = $toNativeArray($kindUint32, [2, 0, 0, 268433408, 536870911, 268435455, 532676607, 33554431, 0]);
 60853  		p256Precomputed = $toNativeArray($kindUint32, [290596984, 242421057, 230031737, 78635775, 310917853, 212721032, 295599836, 222981803, 51514350, 489335829, 254096764, 434396381, 96936400, 429049253, 170095751, 22329889, 21696699, 11419619, 222406006, 153287761, 37001551, 101408979, 373655214, 216620824, 535072883, 66729676, 99339564, 188755759, 22835391, 358715996, 94529284, 229187216, 215751807, 513877062, 236641822, 248061730, 40859512, 90604670, 168553630, 37024851, 439480858, 226879324, 90992905, 170293760, 190300240, 10025815, 178796492, 101451666, 217734681, 102476702, 92922779, 10691781, 131522279, 43478603, 532943434, 176956491, 484992866, 215358590, 405915872, 123172065, 496412073, 138651209, 205172986, 115533781, 124205610, 395011560, 67124891, 438243778, 7870186, 258227729, 93078495, 255999938, 425934842, 143782578, 305931036, 74112396, 88539357, 94251799, 388871183, 138291069, 185456137, 265411090, 56389202, 435020300, 219799744, 159190848, 184638233, 71951349, 14748830, 54179201, 90859435, 91714381, 501071970, 207073549, 21607325, 40541819, 204857247, 75982029, 124632266, 212120422, 244515755, 443842791, 92184193, 504621904, 256273651, 116484896, 79311219, 202804275, 365646905, 111382033, 121002173, 187258447, 66509915, 5486974, 321045696, 106813439, 60941558, 350622890, 153379607, 466107082, 182025965, 221826634, 260222982, 54653047, 174775689, 76106445, 166814421, 260313327, 455502422, 14152227, 65063826, 238663282, 111317018, 110789974, 518080, 163043539, 3185280, 449863551, 204453341, 213898269, 164542008, 273777244, 228642651, 135456897, 116610665, 111505196, 502845828, 3430432, 343397495, 23354801, 199756881, 203603518, 238413402, 451639968, 204952341, 258456729, 134076345, 421511614, 6366045, 46236905, 29730873, 75111974, 192722006, 155066973, 351520493, 214702793, 402536435, 77105545, 445695234, 49487938, 169309851, 184388732, 135863406, 500019767, 23199936, 276509345, 107743451, 282094082, 261267, 90308643, 376580903, 109796441, 40959228, 262999756, 241033666, 246105707, 50090300, 67630940, 195735859, 158359529, 193509607, 120899987, 31588239, 420833648, 180162304, 273063591, 53033664, 215783594, 30950397, 236240872, 364806751, 9130514, 246676327, 136101161, 197537558, 45546695, 257576489, 324406118, 202074818, 85649040, 222421617, 255761364, 30870187, 16949106, 121510965, 250023868, 181935023, 166511770, 141325342, 266780208, 392647399, 2348054, 528735877, 41804168, 107966648, 404542751, 158035532, 412033845, 173930329, 396852918, 267062899, 357230868, 49540177, 58878809, 194113917, 29829449, 325238538, 237239775, 173413552, 1015183, 495713, 136567250, 136396601, 287878667, 218717445, 193315010, 32289519, 38657156, 238414081, 406919754, 257809469, 58222217, 86139112, 95303012, 88256781, 148453957, 429206180, 160877633, 273786665, 79574169, 86713258, 278868094, 116766395, 528802279, 125439226, 281337663, 39453418, 184844341, 238149222, 208587427, 42902325, 42491940, 326299680, 16080181, 367290444, 254451223, 441087273, 213368497, 187332769, 447880991, 104209615, 113842077, 185816615, 308787572, 71338925, 482342488, 238904593, 13096815, 30177897, 243196699, 89107279, 2855247, 450001456, 215177118, 206574156, 84781712, 11616114, 184986229, 118447302, 373941674, 139088658, 53019708, 68960273, 332604433, 184854584, 225840429, 387167538, 195693571, 138420907, 113046977, 49566585, 25878640, 415883550, 34327194, 107956587, 65991316, 108331218, 226451772, 2997227, 192155704, 235148095, 360879757, 199853559, 28097562, 443192223, 54415606, 224812756, 189496278, 509228953, 112408647, 402282239, 106887472, 2219082, 45315673, 72416791, 188054373, 234221484, 356088815, 164846207, 288014687, 103081518, 177253935, 276753618, 32938942, 125660110, 91493268, 331777276, 156289296, 119886379, 231179651, 68086459, 534655626, 198581654, 220775303, 166165897, 307563584, 123325309, 57143092, 182626656, 152800220, 154428073, 16017903, 187603695, 221030257, 89005890, 8038985, 103901883, 37829774, 88235001, 468532794, 254222964, 526283558, 104949015, 245526642, 164552359, 7239219, 130619730, 226520526, 149071841, 239214106, 68733409, 31180944, 456743990, 169722229, 499445619, 144011060, 239820018, 453851672, 51989046, 113402911, 239342156, 170872490, 176956858, 261258967, 103265812, 121052362, 195126932, 68664323, 130066403, 163798041, 292069893, 146190349, 283373001, 163683314, 92807721, 455819618, 173862682, 356737579, 163398462, 56942669, 122161042, 97105331, 243662629, 67694423, 404017060, 18986011, 220498447, 61887010, 60535146, 209032813, 168001811, 172627817, 18857068, 152560910, 250363304, 379416236, 17569433, 172056915, 259148050, 365781175, 78428889, 99599866, 253038295, 1190737, 285520906, 213382210, 263923967, 111956938, 425804492, 129961897, 9795153, 81850901, 248789496, 66350037, 95217711, 285808310, 7188600, 268270935, 254724780, 212364780, 366392026, 157674697, 479376578, 2045969, 481329397, 47757316, 433176877, 253803846, 26550183, 171333315, 86221861, 265094802, 222617032, 320802651, 184028746, 215612532, 161199640, 47944780, 174534800, 29495521, 395087139, 21447555, 280523837, 159753563, 48711545, 5726520, 156793127, 321990906, 199251222, 167040537, 196486512, 161400209, 227830014, 487028781, 264711691, 117551768, 409175611, 140072120, 303696950, 166199007, 258257961, 163174174, 350418392, 260410682, 155381416, 228964197, 116240383, 178067660, 208004282, 477396614, 240036117, 427939745, 137975385, 86955234, 142427063, 58372379, 433230542, 260916882, 415434047, 143015443, 79775424, 113112410, 82068861, 370483849, 180850370, 442090914, 33721239, 119287041, 43353375, 67400827, 142103949, 131242660, 332936223, 148565975, 329029421, 112716405, 222993886, 267477976, 136140247, 173797224, 192622808, 199703919, 178815297, 228027521, 132622796, 415151985, 225918141, 334829905, 164675959, 29661816]);
 60854  		p256Zero31 = $toNativeArray($kindUint32, [2147483640, 1073741820, 2147483644, 1073750012, 2147483644, 1073741820, 2164260860, 939524092, 2147483644]);
 60855  		/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
 60856  	};
 60857  	$pkg.$init = $init;
 60858  	return $pkg;
 60859  })();
 60860  $packages["crypto/sha512"] = (function() {
 60861  	var $pkg = {}, $init, crypto, errors, hash, digest, sliceType, sliceType$1, arrayType, arrayType$1, arrayType$2, arrayType$6, ptrType, _K, block, init, appendUint64, consumeUint64, New, New512_224, New512_256, New384, Sum512, blockGeneric;
 60862  	crypto = $packages["crypto"];
 60863  	errors = $packages["errors"];
 60864  	hash = $packages["hash"];
 60865  	digest = $pkg.digest = $newType(0, $kindStruct, "sha512.digest", true, "crypto/sha512", false, function(h_, x_, nx_, len_, function$4_) {
 60866  		this.$val = this;
 60867  		if (arguments.length === 0) {
 60868  			this.h = arrayType.zero();
 60869  			this.x = arrayType$1.zero();
 60870  			this.nx = 0;
 60871  			this.len = new $Uint64(0, 0);
 60872  			this.function$4 = 0;
 60873  			return;
 60874  		}
 60875  		this.h = h_;
 60876  		this.x = x_;
 60877  		this.nx = nx_;
 60878  		this.len = len_;
 60879  		this.function$4 = function$4_;
 60880  	});
 60881  	sliceType = $sliceType($Uint64);
 60882  	sliceType$1 = $sliceType($Uint8);
 60883  	arrayType = $arrayType($Uint64, 8);
 60884  	arrayType$1 = $arrayType($Uint8, 128);
 60885  	arrayType$2 = $arrayType($Uint8, 64);
 60886  	arrayType$6 = $arrayType($Uint64, 80);
 60887  	ptrType = $ptrType(digest);
 60888  	init = function() {
 60889  		crypto.RegisterHash(6, New384);
 60890  		crypto.RegisterHash(7, New);
 60891  		crypto.RegisterHash(14, New512_224);
 60892  		crypto.RegisterHash(15, New512_256);
 60893  	};
 60894  	digest.ptr.prototype.Reset = function() {
 60895  		var _1, d;
 60896  		d = this;
 60897  		_1 = d.function$4;
 60898  		if (_1 === (6)) {
 60899  			d.h[0] = new $Uint64(3418070365, 3238371032);
 60900  			d.h[1] = new $Uint64(1654270250, 914150663);
 60901  			d.h[2] = new $Uint64(2438529370, 812702999);
 60902  			d.h[3] = new $Uint64(355462360, 4144912697);
 60903  			d.h[4] = new $Uint64(1731405415, 4290775857);
 60904  			d.h[5] = new $Uint64(2394180231, 1750603025);
 60905  			d.h[6] = new $Uint64(3675008525, 1694076839);
 60906  			d.h[7] = new $Uint64(1203062813, 3204075428);
 60907  		} else if (_1 === (14)) {
 60908  			d.h[0] = new $Uint64(2352822216, 424955298);
 60909  			d.h[1] = new $Uint64(1944164710, 2312950998);
 60910  			d.h[2] = new $Uint64(502970286, 855612546);
 60911  			d.h[3] = new $Uint64(1738396948, 1479516111);
 60912  			d.h[4] = new $Uint64(258812777, 2077511080);
 60913  			d.h[5] = new $Uint64(2011393907, 79989058);
 60914  			d.h[6] = new $Uint64(1067287976, 1780299464);
 60915  			d.h[7] = new $Uint64(286451373, 2446758561);
 60916  		} else if (_1 === (15)) {
 60917  			d.h[0] = new $Uint64(573645204, 4230739756);
 60918  			d.h[1] = new $Uint64(2673172387, 3360449730);
 60919  			d.h[2] = new $Uint64(596883563, 1867755857);
 60920  			d.h[3] = new $Uint64(2520282905, 1497426621);
 60921  			d.h[4] = new $Uint64(2519219938, 2827943907);
 60922  			d.h[5] = new $Uint64(3193839141, 1401305490);
 60923  			d.h[6] = new $Uint64(721525244, 746961066);
 60924  			d.h[7] = new $Uint64(246885852, 2177182882);
 60925  		} else {
 60926  			d.h[0] = new $Uint64(1779033703, 4089235720);
 60927  			d.h[1] = new $Uint64(3144134277, 2227873595);
 60928  			d.h[2] = new $Uint64(1013904242, 4271175723);
 60929  			d.h[3] = new $Uint64(2773480762, 1595750129);
 60930  			d.h[4] = new $Uint64(1359893119, 2917565137);
 60931  			d.h[5] = new $Uint64(2600822924, 725511199);
 60932  			d.h[6] = new $Uint64(528734635, 4215389547);
 60933  			d.h[7] = new $Uint64(1541459225, 327033209);
 60934  		}
 60935  		d.nx = 0;
 60936  		d.len = new $Uint64(0, 0);
 60937  	};
 60938  	digest.prototype.Reset = function() { return this.$val.Reset(); };
 60939  	digest.ptr.prototype.MarshalBinary = function() {
 60940  		var _1, b, d;
 60941  		d = this;
 60942  		b = $makeSlice(sliceType$1, 0, 204);
 60943  		_1 = d.function$4;
 60944  		if (_1 === (6)) {
 60945  			b = $appendSlice(b, "sha\x04");
 60946  		} else if (_1 === (14)) {
 60947  			b = $appendSlice(b, "sha\x05");
 60948  		} else if (_1 === (15)) {
 60949  			b = $appendSlice(b, "sha\x06");
 60950  		} else if (_1 === (7)) {
 60951  			b = $appendSlice(b, "sha\x07");
 60952  		} else {
 60953  			return [sliceType$1.nil, errors.New("crypto/sha512: invalid hash function")];
 60954  		}
 60955  		b = appendUint64(b, d.h[0]);
 60956  		b = appendUint64(b, d.h[1]);
 60957  		b = appendUint64(b, d.h[2]);
 60958  		b = appendUint64(b, d.h[3]);
 60959  		b = appendUint64(b, d.h[4]);
 60960  		b = appendUint64(b, d.h[5]);
 60961  		b = appendUint64(b, d.h[6]);
 60962  		b = appendUint64(b, d.h[7]);
 60963  		b = $appendSlice(b, $subslice(new sliceType$1(d.x), 0, d.nx));
 60964  		b = $subslice(b, 0, ((b.$length + 128 >> 0) - (d.nx) >> 0));
 60965  		b = appendUint64(b, d.len);
 60966  		return [b, $ifaceNil];
 60967  	};
 60968  	digest.prototype.MarshalBinary = function() { return this.$val.MarshalBinary(); };
 60969  	digest.ptr.prototype.UnmarshalBinary = function(b) {
 60970  		var _r, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, _tuple$5, _tuple$6, _tuple$7, _tuple$8, b, d;
 60971  		d = this;
 60972  		if (b.$length < 4) {
 60973  			return errors.New("crypto/sha512: invalid hash state identifier");
 60974  		}
 60975  		if ((d.function$4 === 6) && ($bytesToString($subslice(b, 0, 4))) === "sha\x04") {
 60976  		} else if ((d.function$4 === 14) && ($bytesToString($subslice(b, 0, 4))) === "sha\x05") {
 60977  		} else if ((d.function$4 === 15) && ($bytesToString($subslice(b, 0, 4))) === "sha\x06") {
 60978  		} else if ((d.function$4 === 7) && ($bytesToString($subslice(b, 0, 4))) === "sha\x07") {
 60979  		} else {
 60980  			return errors.New("crypto/sha512: invalid hash state identifier");
 60981  		}
 60982  		if (!((b.$length === 204))) {
 60983  			return errors.New("crypto/sha512: invalid hash state size");
 60984  		}
 60985  		b = $subslice(b, 4);
 60986  		_tuple = consumeUint64(b);
 60987  		b = _tuple[0];
 60988  		d.h[0] = _tuple[1];
 60989  		_tuple$1 = consumeUint64(b);
 60990  		b = _tuple$1[0];
 60991  		d.h[1] = _tuple$1[1];
 60992  		_tuple$2 = consumeUint64(b);
 60993  		b = _tuple$2[0];
 60994  		d.h[2] = _tuple$2[1];
 60995  		_tuple$3 = consumeUint64(b);
 60996  		b = _tuple$3[0];
 60997  		d.h[3] = _tuple$3[1];
 60998  		_tuple$4 = consumeUint64(b);
 60999  		b = _tuple$4[0];
 61000  		d.h[4] = _tuple$4[1];
 61001  		_tuple$5 = consumeUint64(b);
 61002  		b = _tuple$5[0];
 61003  		d.h[5] = _tuple$5[1];
 61004  		_tuple$6 = consumeUint64(b);
 61005  		b = _tuple$6[0];
 61006  		d.h[6] = _tuple$6[1];
 61007  		_tuple$7 = consumeUint64(b);
 61008  		b = _tuple$7[0];
 61009  		d.h[7] = _tuple$7[1];
 61010  		b = $subslice(b, $copySlice(new sliceType$1(d.x), b));
 61011  		_tuple$8 = consumeUint64(b);
 61012  		b = _tuple$8[0];
 61013  		d.len = _tuple$8[1];
 61014  		d.nx = (_r = ((d.len.$low >> 0)) % 128, _r === _r ? _r : $throwRuntimeError("integer divide by zero"));
 61015  		return $ifaceNil;
 61016  	};
 61017  	digest.prototype.UnmarshalBinary = function(b) { return this.$val.UnmarshalBinary(b); };
 61018  	appendUint64 = function(b, x) {
 61019  		var a, b, x;
 61020  		a = $toNativeArray($kindUint8, [(($shiftRightUint64(x, 56).$low << 24 >>> 24)), (($shiftRightUint64(x, 48).$low << 24 >>> 24)), (($shiftRightUint64(x, 40).$low << 24 >>> 24)), (($shiftRightUint64(x, 32).$low << 24 >>> 24)), (($shiftRightUint64(x, 24).$low << 24 >>> 24)), (($shiftRightUint64(x, 16).$low << 24 >>> 24)), (($shiftRightUint64(x, 8).$low << 24 >>> 24)), ((x.$low << 24 >>> 24))]);
 61021  		return $appendSlice(b, new sliceType$1(a));
 61022  	};
 61023  	consumeUint64 = function(b) {
 61024  		var b, x, x$1, x$10, x$11, x$12, x$13, x$14, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9;
 61025  		$unused((7 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 7]));
 61026  		x$14 = (x = (x$1 = (x$2 = (x$3 = (x$4 = (x$5 = (x$6 = (new $Uint64(0, (7 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 7]))), x$7 = $shiftLeft64((new $Uint64(0, (6 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 6]))), 8), new $Uint64(x$6.$high | x$7.$high, (x$6.$low | x$7.$low) >>> 0)), x$8 = $shiftLeft64((new $Uint64(0, (5 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 5]))), 16), new $Uint64(x$5.$high | x$8.$high, (x$5.$low | x$8.$low) >>> 0)), x$9 = $shiftLeft64((new $Uint64(0, (4 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 4]))), 24), new $Uint64(x$4.$high | x$9.$high, (x$4.$low | x$9.$low) >>> 0)), x$10 = $shiftLeft64((new $Uint64(0, (3 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 3]))), 32), new $Uint64(x$3.$high | x$10.$high, (x$3.$low | x$10.$low) >>> 0)), x$11 = $shiftLeft64((new $Uint64(0, (2 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 2]))), 40), new $Uint64(x$2.$high | x$11.$high, (x$2.$low | x$11.$low) >>> 0)), x$12 = $shiftLeft64((new $Uint64(0, (1 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 1]))), 48), new $Uint64(x$1.$high | x$12.$high, (x$1.$low | x$12.$low) >>> 0)), x$13 = $shiftLeft64((new $Uint64(0, (0 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 0]))), 56), new $Uint64(x.$high | x$13.$high, (x.$low | x$13.$low) >>> 0));
 61027  		return [$subslice(b, 8), x$14];
 61028  	};
 61029  	New = function() {
 61030  		var d;
 61031  		d = new digest.ptr(arrayType.zero(), arrayType$1.zero(), 0, new $Uint64(0, 0), 7);
 61032  		d.Reset();
 61033  		return d;
 61034  	};
 61035  	$pkg.New = New;
 61036  	New512_224 = function() {
 61037  		var d;
 61038  		d = new digest.ptr(arrayType.zero(), arrayType$1.zero(), 0, new $Uint64(0, 0), 14);
 61039  		d.Reset();
 61040  		return d;
 61041  	};
 61042  	$pkg.New512_224 = New512_224;
 61043  	New512_256 = function() {
 61044  		var d;
 61045  		d = new digest.ptr(arrayType.zero(), arrayType$1.zero(), 0, new $Uint64(0, 0), 15);
 61046  		d.Reset();
 61047  		return d;
 61048  	};
 61049  	$pkg.New512_256 = New512_256;
 61050  	New384 = function() {
 61051  		var d;
 61052  		d = new digest.ptr(arrayType.zero(), arrayType$1.zero(), 0, new $Uint64(0, 0), 6);
 61053  		d.Reset();
 61054  		return d;
 61055  	};
 61056  	$pkg.New384 = New384;
 61057  	digest.ptr.prototype.Size = function() {
 61058  		var _1, d;
 61059  		d = this;
 61060  		_1 = d.function$4;
 61061  		if (_1 === (14)) {
 61062  			return 28;
 61063  		} else if (_1 === (15)) {
 61064  			return 32;
 61065  		} else if (_1 === (6)) {
 61066  			return 48;
 61067  		} else {
 61068  			return 64;
 61069  		}
 61070  	};
 61071  	digest.prototype.Size = function() { return this.$val.Size(); };
 61072  	digest.ptr.prototype.BlockSize = function() {
 61073  		var d;
 61074  		d = this;
 61075  		return 128;
 61076  	};
 61077  	digest.prototype.BlockSize = function() { return this.$val.BlockSize(); };
 61078  	digest.ptr.prototype.Write = function(p) {
 61079  		var d, err, n, n$1, nn, p, x, x$1, $s, $r;
 61080  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; d = $f.d; err = $f.err; n = $f.n; n$1 = $f.n$1; nn = $f.nn; p = $f.p; x = $f.x; x$1 = $f.x$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 61081  		nn = 0;
 61082  		err = $ifaceNil;
 61083  		d = this;
 61084  		nn = p.$length;
 61085  		d.len = (x = d.len, x$1 = (new $Uint64(0, nn)), new $Uint64(x.$high + x$1.$high, x.$low + x$1.$low));
 61086  		/* */ if (d.nx > 0) { $s = 1; continue; }
 61087  		/* */ $s = 2; continue;
 61088  		/* if (d.nx > 0) { */ case 1:
 61089  			n = $copySlice($subslice(new sliceType$1(d.x), d.nx), p);
 61090  			d.nx = d.nx + (n) >> 0;
 61091  			/* */ if (d.nx === 128) { $s = 3; continue; }
 61092  			/* */ $s = 4; continue;
 61093  			/* if (d.nx === 128) { */ case 3:
 61094  				$r = block(d, new sliceType$1(d.x)); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 61095  				d.nx = 0;
 61096  			/* } */ case 4:
 61097  			p = $subslice(p, n);
 61098  		/* } */ case 2:
 61099  		/* */ if (p.$length >= 128) { $s = 6; continue; }
 61100  		/* */ $s = 7; continue;
 61101  		/* if (p.$length >= 128) { */ case 6:
 61102  			n$1 = (p.$length & ~127) >> 0;
 61103  			$r = block(d, $subslice(p, 0, n$1)); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 61104  			p = $subslice(p, n$1);
 61105  		/* } */ case 7:
 61106  		if (p.$length > 0) {
 61107  			d.nx = $copySlice(new sliceType$1(d.x), p);
 61108  		}
 61109  		$s = -1; return [nn, err];
 61110  		/* */ } return; } if ($f === undefined) { $f = { $blk: digest.ptr.prototype.Write }; } $f.d = d; $f.err = err; $f.n = n; $f.n$1 = n$1; $f.nn = nn; $f.p = p; $f.x = x; $f.x$1 = x$1; $f.$s = $s; $f.$r = $r; return $f;
 61111  	};
 61112  	digest.prototype.Write = function(p) { return this.$val.Write(p); };
 61113  	digest.ptr.prototype.Sum = function(in$1) {
 61114  		var _1, _r, d, d0, hash$1, in$1, $s, $r;
 61115  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _r = $f._r; d = $f.d; d0 = $f.d0; hash$1 = $f.hash$1; in$1 = $f.in$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 61116  		d0 = this;
 61117  		d = new digest.ptr(arrayType.zero(), arrayType$1.zero(), 0, new $Uint64(0, 0), 0);
 61118  		digest.copy(d, d0);
 61119  		_r = d.checkSum(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 61120  		hash$1 = $clone(_r, arrayType$2);
 61121  		_1 = d.function$4;
 61122  		if (_1 === (6)) {
 61123  			$s = -1; return $appendSlice(in$1, $subslice(new sliceType$1(hash$1), 0, 48));
 61124  		} else if (_1 === (14)) {
 61125  			$s = -1; return $appendSlice(in$1, $subslice(new sliceType$1(hash$1), 0, 28));
 61126  		} else if (_1 === (15)) {
 61127  			$s = -1; return $appendSlice(in$1, $subslice(new sliceType$1(hash$1), 0, 32));
 61128  		} else {
 61129  			$s = -1; return $appendSlice(in$1, new sliceType$1(hash$1));
 61130  		}
 61131  		$s = -1; return sliceType$1.nil;
 61132  		/* */ } return; } if ($f === undefined) { $f = { $blk: digest.ptr.prototype.Sum }; } $f._1 = _1; $f._r = _r; $f.d = d; $f.d0 = d0; $f.hash$1 = hash$1; $f.in$1 = in$1; $f.$s = $s; $f.$r = $r; return $f;
 61133  	};
 61134  	digest.prototype.Sum = function(in$1) { return this.$val.Sum(in$1); };
 61135  	digest.ptr.prototype.checkSum = function() {
 61136  		var _i, _r, _r$1, _r$2, _ref, d, digest$1, h, i, i$1, len, s, tmp, x, x$1, x$10, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9, $s, $r;
 61137  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _i = $f._i; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _ref = $f._ref; d = $f.d; digest$1 = $f.digest$1; h = $f.h; i = $f.i; i$1 = $f.i$1; len = $f.len; s = $f.s; tmp = $f.tmp; x = $f.x; x$1 = $f.x$1; x$10 = $f.x$10; x$2 = $f.x$2; x$3 = $f.x$3; x$4 = $f.x$4; x$5 = $f.x$5; x$6 = $f.x$6; x$7 = $f.x$7; x$8 = $f.x$8; x$9 = $f.x$9; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 61138  		d = this;
 61139  		len = d.len;
 61140  		tmp = arrayType$1.zero();
 61141  		tmp[0] = 128;
 61142  		/* */ if ((x = $div64(len, new $Uint64(0, 128), true), (x.$high < 0 || (x.$high === 0 && x.$low < 112)))) { $s = 1; continue; }
 61143  		/* */ $s = 2; continue;
 61144  		/* if ((x = $div64(len, new $Uint64(0, 128), true), (x.$high < 0 || (x.$high === 0 && x.$low < 112)))) { */ case 1:
 61145  			_r = d.Write($subslice(new sliceType$1(tmp), 0, $flatten64((x$1 = $div64(len, new $Uint64(0, 128), true), new $Uint64(0 - x$1.$high, 112 - x$1.$low))))); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 61146  			_r;
 61147  			$s = 3; continue;
 61148  		/* } else { */ case 2:
 61149  			_r$1 = d.Write($subslice(new sliceType$1(tmp), 0, $flatten64((x$2 = $div64(len, new $Uint64(0, 128), true), new $Uint64(0 - x$2.$high, 240 - x$2.$low))))); /* */ $s = 5; case 5: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 61150  			_r$1;
 61151  		/* } */ case 3:
 61152  		len = $shiftLeft64(len, (3));
 61153  		i = 0;
 61154  		while (true) {
 61155  			if (!(i < 16)) { break; }
 61156  			((i < 0 || i >= tmp.length) ? ($throwRuntimeError("index out of range"), undefined) : tmp[i] = (($shiftRightUint64(len, ((120 - (8 * i >>> 0) >>> 0))).$low << 24 >>> 24)));
 61157  			i = i + (1) >>> 0;
 61158  		}
 61159  		_r$2 = d.Write($subslice(new sliceType$1(tmp), 0, 16)); /* */ $s = 6; case 6: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 61160  		_r$2;
 61161  		if (!((d.nx === 0))) {
 61162  			$panic(new $String("d.nx != 0"));
 61163  		}
 61164  		h = new sliceType(d.h);
 61165  		if (d.function$4 === 6) {
 61166  			h = $subslice(new sliceType(d.h), 0, 6);
 61167  		}
 61168  		digest$1 = arrayType$2.zero();
 61169  		_ref = h;
 61170  		_i = 0;
 61171  		while (true) {
 61172  			if (!(_i < _ref.$length)) { break; }
 61173  			i$1 = _i;
 61174  			s = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
 61175  			(x$3 = $imul(i$1, 8), ((x$3 < 0 || x$3 >= digest$1.length) ? ($throwRuntimeError("index out of range"), undefined) : digest$1[x$3] = (($shiftRightUint64(s, 56).$low << 24 >>> 24))));
 61176  			(x$4 = ($imul(i$1, 8)) + 1 >> 0, ((x$4 < 0 || x$4 >= digest$1.length) ? ($throwRuntimeError("index out of range"), undefined) : digest$1[x$4] = (($shiftRightUint64(s, 48).$low << 24 >>> 24))));
 61177  			(x$5 = ($imul(i$1, 8)) + 2 >> 0, ((x$5 < 0 || x$5 >= digest$1.length) ? ($throwRuntimeError("index out of range"), undefined) : digest$1[x$5] = (($shiftRightUint64(s, 40).$low << 24 >>> 24))));
 61178  			(x$6 = ($imul(i$1, 8)) + 3 >> 0, ((x$6 < 0 || x$6 >= digest$1.length) ? ($throwRuntimeError("index out of range"), undefined) : digest$1[x$6] = (($shiftRightUint64(s, 32).$low << 24 >>> 24))));
 61179  			(x$7 = ($imul(i$1, 8)) + 4 >> 0, ((x$7 < 0 || x$7 >= digest$1.length) ? ($throwRuntimeError("index out of range"), undefined) : digest$1[x$7] = (($shiftRightUint64(s, 24).$low << 24 >>> 24))));
 61180  			(x$8 = ($imul(i$1, 8)) + 5 >> 0, ((x$8 < 0 || x$8 >= digest$1.length) ? ($throwRuntimeError("index out of range"), undefined) : digest$1[x$8] = (($shiftRightUint64(s, 16).$low << 24 >>> 24))));
 61181  			(x$9 = ($imul(i$1, 8)) + 6 >> 0, ((x$9 < 0 || x$9 >= digest$1.length) ? ($throwRuntimeError("index out of range"), undefined) : digest$1[x$9] = (($shiftRightUint64(s, 8).$low << 24 >>> 24))));
 61182  			(x$10 = ($imul(i$1, 8)) + 7 >> 0, ((x$10 < 0 || x$10 >= digest$1.length) ? ($throwRuntimeError("index out of range"), undefined) : digest$1[x$10] = ((s.$low << 24 >>> 24))));
 61183  			_i++;
 61184  		}
 61185  		$s = -1; return digest$1;
 61186  		/* */ } return; } if ($f === undefined) { $f = { $blk: digest.ptr.prototype.checkSum }; } $f._i = _i; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._ref = _ref; $f.d = d; $f.digest$1 = digest$1; $f.h = h; $f.i = i; $f.i$1 = i$1; $f.len = len; $f.s = s; $f.tmp = tmp; $f.x = x; $f.x$1 = x$1; $f.x$10 = x$10; $f.x$2 = x$2; $f.x$3 = x$3; $f.x$4 = x$4; $f.x$5 = x$5; $f.x$6 = x$6; $f.x$7 = x$7; $f.x$8 = x$8; $f.x$9 = x$9; $f.$s = $s; $f.$r = $r; return $f;
 61187  	};
 61188  	digest.prototype.checkSum = function() { return this.$val.checkSum(); };
 61189  	Sum512 = function(data) {
 61190  		var _r, _r$1, d, data, $s, $r;
 61191  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; d = $f.d; data = $f.data; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 61192  		d = new digest.ptr(arrayType.zero(), arrayType$1.zero(), 0, new $Uint64(0, 0), 7);
 61193  		d.Reset();
 61194  		_r = d.Write(data); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 61195  		_r;
 61196  		_r$1 = d.checkSum(); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 61197  		$s = -1; return _r$1;
 61198  		/* */ } return; } if ($f === undefined) { $f = { $blk: Sum512 }; } $f._r = _r; $f._r$1 = _r$1; $f.d = d; $f.data = data; $f.$s = $s; $f.$r = $r; return $f;
 61199  	};
 61200  	$pkg.Sum512 = Sum512;
 61201  	blockGeneric = function(dig, p) {
 61202  		var _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$14, _tmp$15, _tmp$16, _tmp$17, _tmp$18, _tmp$19, _tmp$2, _tmp$20, _tmp$21, _tmp$22, _tmp$23, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, a, b, c, d, dig, e, f, g, h, h0, h1, h2, h3, h4, h5, h6, h7, i, i$1, i$2, j, p, t1, t1$1, t2, t2$1, v1, v2, w, x, x$1, x$10, x$11, x$12, x$13, x$14, x$15, x$16, x$17, x$18, x$19, x$2, x$20, x$21, x$22, x$23, x$24, x$25, x$26, x$27, x$28, x$29, x$3, x$30, x$31, x$32, x$33, x$34, x$35, x$36, x$37, x$38, x$39, x$4, x$40, x$41, x$42, x$43, x$44, x$45, x$46, x$47, x$48, x$49, x$5, x$50, x$51, x$52, x$53, x$54, x$55, x$56, x$57, x$58, x$59, x$6, x$60, x$61, x$62, x$63, x$64, x$65, x$66, x$67, x$68, x$69, x$7, x$70, x$71, x$72, x$73, x$74, x$75, x$76, x$77, x$78, x$79, x$8, x$80, x$81, x$82, x$83, x$84, x$85, x$86, x$87, x$88, x$9;
 61203  		w = arrayType$6.zero();
 61204  		_tmp = dig.h[0];
 61205  		_tmp$1 = dig.h[1];
 61206  		_tmp$2 = dig.h[2];
 61207  		_tmp$3 = dig.h[3];
 61208  		_tmp$4 = dig.h[4];
 61209  		_tmp$5 = dig.h[5];
 61210  		_tmp$6 = dig.h[6];
 61211  		_tmp$7 = dig.h[7];
 61212  		h0 = _tmp;
 61213  		h1 = _tmp$1;
 61214  		h2 = _tmp$2;
 61215  		h3 = _tmp$3;
 61216  		h4 = _tmp$4;
 61217  		h5 = _tmp$5;
 61218  		h6 = _tmp$6;
 61219  		h7 = _tmp$7;
 61220  		while (true) {
 61221  			if (!(p.$length >= 128)) { break; }
 61222  			i = 0;
 61223  			while (true) {
 61224  				if (!(i < 16)) { break; }
 61225  				j = $imul(i, 8);
 61226  				((i < 0 || i >= w.length) ? ($throwRuntimeError("index out of range"), undefined) : w[i] = (x = (x$1 = (x$2 = (x$3 = (x$4 = (x$5 = (x$6 = $shiftLeft64((new $Uint64(0, ((j < 0 || j >= p.$length) ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + j]))), 56), x$7 = $shiftLeft64((new $Uint64(0, (x$8 = j + 1 >> 0, ((x$8 < 0 || x$8 >= p.$length) ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + x$8])))), 48), new $Uint64(x$6.$high | x$7.$high, (x$6.$low | x$7.$low) >>> 0)), x$9 = $shiftLeft64((new $Uint64(0, (x$10 = j + 2 >> 0, ((x$10 < 0 || x$10 >= p.$length) ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + x$10])))), 40), new $Uint64(x$5.$high | x$9.$high, (x$5.$low | x$9.$low) >>> 0)), x$11 = $shiftLeft64((new $Uint64(0, (x$12 = j + 3 >> 0, ((x$12 < 0 || x$12 >= p.$length) ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + x$12])))), 32), new $Uint64(x$4.$high | x$11.$high, (x$4.$low | x$11.$low) >>> 0)), x$13 = $shiftLeft64((new $Uint64(0, (x$14 = j + 4 >> 0, ((x$14 < 0 || x$14 >= p.$length) ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + x$14])))), 24), new $Uint64(x$3.$high | x$13.$high, (x$3.$low | x$13.$low) >>> 0)), x$15 = $shiftLeft64((new $Uint64(0, (x$16 = j + 5 >> 0, ((x$16 < 0 || x$16 >= p.$length) ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + x$16])))), 16), new $Uint64(x$2.$high | x$15.$high, (x$2.$low | x$15.$low) >>> 0)), x$17 = $shiftLeft64((new $Uint64(0, (x$18 = j + 6 >> 0, ((x$18 < 0 || x$18 >= p.$length) ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + x$18])))), 8), new $Uint64(x$1.$high | x$17.$high, (x$1.$low | x$17.$low) >>> 0)), x$19 = (new $Uint64(0, (x$20 = j + 7 >> 0, ((x$20 < 0 || x$20 >= p.$length) ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + x$20])))), new $Uint64(x.$high | x$19.$high, (x.$low | x$19.$low) >>> 0)));
 61227  				i = i + (1) >> 0;
 61228  			}
 61229  			i$1 = 16;
 61230  			while (true) {
 61231  				if (!(i$1 < 80)) { break; }
 61232  				v1 = (x$21 = i$1 - 2 >> 0, ((x$21 < 0 || x$21 >= w.length) ? ($throwRuntimeError("index out of range"), undefined) : w[x$21]));
 61233  				t1 = (x$22 = (x$23 = (x$24 = $shiftRightUint64(v1, 19), x$25 = $shiftLeft64(v1, 45), new $Uint64(x$24.$high | x$25.$high, (x$24.$low | x$25.$low) >>> 0)), x$26 = (x$27 = $shiftRightUint64(v1, 61), x$28 = $shiftLeft64(v1, 3), new $Uint64(x$27.$high | x$28.$high, (x$27.$low | x$28.$low) >>> 0)), new $Uint64(x$23.$high ^ x$26.$high, (x$23.$low ^ x$26.$low) >>> 0)), x$29 = $shiftRightUint64(v1, 6), new $Uint64(x$22.$high ^ x$29.$high, (x$22.$low ^ x$29.$low) >>> 0));
 61234  				v2 = (x$30 = i$1 - 15 >> 0, ((x$30 < 0 || x$30 >= w.length) ? ($throwRuntimeError("index out of range"), undefined) : w[x$30]));
 61235  				t2 = (x$31 = (x$32 = (x$33 = $shiftRightUint64(v2, 1), x$34 = $shiftLeft64(v2, 63), new $Uint64(x$33.$high | x$34.$high, (x$33.$low | x$34.$low) >>> 0)), x$35 = (x$36 = $shiftRightUint64(v2, 8), x$37 = $shiftLeft64(v2, 56), new $Uint64(x$36.$high | x$37.$high, (x$36.$low | x$37.$low) >>> 0)), new $Uint64(x$32.$high ^ x$35.$high, (x$32.$low ^ x$35.$low) >>> 0)), x$38 = $shiftRightUint64(v2, 7), new $Uint64(x$31.$high ^ x$38.$high, (x$31.$low ^ x$38.$low) >>> 0));
 61236  				((i$1 < 0 || i$1 >= w.length) ? ($throwRuntimeError("index out of range"), undefined) : w[i$1] = (x$39 = (x$40 = (x$41 = (x$42 = i$1 - 7 >> 0, ((x$42 < 0 || x$42 >= w.length) ? ($throwRuntimeError("index out of range"), undefined) : w[x$42])), new $Uint64(t1.$high + x$41.$high, t1.$low + x$41.$low)), new $Uint64(x$40.$high + t2.$high, x$40.$low + t2.$low)), x$43 = (x$44 = i$1 - 16 >> 0, ((x$44 < 0 || x$44 >= w.length) ? ($throwRuntimeError("index out of range"), undefined) : w[x$44])), new $Uint64(x$39.$high + x$43.$high, x$39.$low + x$43.$low)));
 61237  				i$1 = i$1 + (1) >> 0;
 61238  			}
 61239  			_tmp$8 = h0;
 61240  			_tmp$9 = h1;
 61241  			_tmp$10 = h2;
 61242  			_tmp$11 = h3;
 61243  			_tmp$12 = h4;
 61244  			_tmp$13 = h5;
 61245  			_tmp$14 = h6;
 61246  			_tmp$15 = h7;
 61247  			a = _tmp$8;
 61248  			b = _tmp$9;
 61249  			c = _tmp$10;
 61250  			d = _tmp$11;
 61251  			e = _tmp$12;
 61252  			f = _tmp$13;
 61253  			g = _tmp$14;
 61254  			h = _tmp$15;
 61255  			i$2 = 0;
 61256  			while (true) {
 61257  				if (!(i$2 < 80)) { break; }
 61258  				t1$1 = (x$45 = (x$46 = (x$47 = (x$48 = (x$49 = (x$50 = (x$51 = $shiftRightUint64(e, 14), x$52 = $shiftLeft64(e, 50), new $Uint64(x$51.$high | x$52.$high, (x$51.$low | x$52.$low) >>> 0)), x$53 = (x$54 = $shiftRightUint64(e, 18), x$55 = $shiftLeft64(e, 46), new $Uint64(x$54.$high | x$55.$high, (x$54.$low | x$55.$low) >>> 0)), new $Uint64(x$50.$high ^ x$53.$high, (x$50.$low ^ x$53.$low) >>> 0)), x$56 = (x$57 = $shiftRightUint64(e, 41), x$58 = $shiftLeft64(e, 23), new $Uint64(x$57.$high | x$58.$high, (x$57.$low | x$58.$low) >>> 0)), new $Uint64(x$49.$high ^ x$56.$high, (x$49.$low ^ x$56.$low) >>> 0)), new $Uint64(h.$high + x$48.$high, h.$low + x$48.$low)), x$59 = (x$60 = new $Uint64(e.$high & f.$high, (e.$low & f.$low) >>> 0), x$61 = (x$62 = new $Uint64(~e.$high, ~e.$low >>> 0), new $Uint64(x$62.$high & g.$high, (x$62.$low & g.$low) >>> 0)), new $Uint64(x$60.$high ^ x$61.$high, (x$60.$low ^ x$61.$low) >>> 0)), new $Uint64(x$47.$high + x$59.$high, x$47.$low + x$59.$low)), x$63 = ((i$2 < 0 || i$2 >= _K.$length) ? ($throwRuntimeError("index out of range"), undefined) : _K.$array[_K.$offset + i$2]), new $Uint64(x$46.$high + x$63.$high, x$46.$low + x$63.$low)), x$64 = ((i$2 < 0 || i$2 >= w.length) ? ($throwRuntimeError("index out of range"), undefined) : w[i$2]), new $Uint64(x$45.$high + x$64.$high, x$45.$low + x$64.$low));
 61259  				t2$1 = (x$65 = (x$66 = (x$67 = (x$68 = $shiftRightUint64(a, 28), x$69 = $shiftLeft64(a, 36), new $Uint64(x$68.$high | x$69.$high, (x$68.$low | x$69.$low) >>> 0)), x$70 = (x$71 = $shiftRightUint64(a, 34), x$72 = $shiftLeft64(a, 30), new $Uint64(x$71.$high | x$72.$high, (x$71.$low | x$72.$low) >>> 0)), new $Uint64(x$67.$high ^ x$70.$high, (x$67.$low ^ x$70.$low) >>> 0)), x$73 = (x$74 = $shiftRightUint64(a, 39), x$75 = $shiftLeft64(a, 25), new $Uint64(x$74.$high | x$75.$high, (x$74.$low | x$75.$low) >>> 0)), new $Uint64(x$66.$high ^ x$73.$high, (x$66.$low ^ x$73.$low) >>> 0)), x$76 = (x$77 = (x$78 = new $Uint64(a.$high & b.$high, (a.$low & b.$low) >>> 0), x$79 = new $Uint64(a.$high & c.$high, (a.$low & c.$low) >>> 0), new $Uint64(x$78.$high ^ x$79.$high, (x$78.$low ^ x$79.$low) >>> 0)), x$80 = new $Uint64(b.$high & c.$high, (b.$low & c.$low) >>> 0), new $Uint64(x$77.$high ^ x$80.$high, (x$77.$low ^ x$80.$low) >>> 0)), new $Uint64(x$65.$high + x$76.$high, x$65.$low + x$76.$low));
 61260  				h = g;
 61261  				g = f;
 61262  				f = e;
 61263  				e = new $Uint64(d.$high + t1$1.$high, d.$low + t1$1.$low);
 61264  				d = c;
 61265  				c = b;
 61266  				b = a;
 61267  				a = new $Uint64(t1$1.$high + t2$1.$high, t1$1.$low + t2$1.$low);
 61268  				i$2 = i$2 + (1) >> 0;
 61269  			}
 61270  			h0 = (x$81 = a, new $Uint64(h0.$high + x$81.$high, h0.$low + x$81.$low));
 61271  			h1 = (x$82 = b, new $Uint64(h1.$high + x$82.$high, h1.$low + x$82.$low));
 61272  			h2 = (x$83 = c, new $Uint64(h2.$high + x$83.$high, h2.$low + x$83.$low));
 61273  			h3 = (x$84 = d, new $Uint64(h3.$high + x$84.$high, h3.$low + x$84.$low));
 61274  			h4 = (x$85 = e, new $Uint64(h4.$high + x$85.$high, h4.$low + x$85.$low));
 61275  			h5 = (x$86 = f, new $Uint64(h5.$high + x$86.$high, h5.$low + x$86.$low));
 61276  			h6 = (x$87 = g, new $Uint64(h6.$high + x$87.$high, h6.$low + x$87.$low));
 61277  			h7 = (x$88 = h, new $Uint64(h7.$high + x$88.$high, h7.$low + x$88.$low));
 61278  			p = $subslice(p, 128);
 61279  		}
 61280  		_tmp$16 = h0;
 61281  		_tmp$17 = h1;
 61282  		_tmp$18 = h2;
 61283  		_tmp$19 = h3;
 61284  		_tmp$20 = h4;
 61285  		_tmp$21 = h5;
 61286  		_tmp$22 = h6;
 61287  		_tmp$23 = h7;
 61288  		dig.h[0] = _tmp$16;
 61289  		dig.h[1] = _tmp$17;
 61290  		dig.h[2] = _tmp$18;
 61291  		dig.h[3] = _tmp$19;
 61292  		dig.h[4] = _tmp$20;
 61293  		dig.h[5] = _tmp$21;
 61294  		dig.h[6] = _tmp$22;
 61295  		dig.h[7] = _tmp$23;
 61296  	};
 61297  	ptrType.methods = [{prop: "Reset", name: "Reset", pkg: "", typ: $funcType([], [], false)}, {prop: "MarshalBinary", name: "MarshalBinary", pkg: "", typ: $funcType([], [sliceType$1, $error], false)}, {prop: "UnmarshalBinary", name: "UnmarshalBinary", pkg: "", typ: $funcType([sliceType$1], [$error], false)}, {prop: "Size", name: "Size", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "BlockSize", name: "BlockSize", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Write", name: "Write", pkg: "", typ: $funcType([sliceType$1], [$Int, $error], false)}, {prop: "Sum", name: "Sum", pkg: "", typ: $funcType([sliceType$1], [sliceType$1], false)}, {prop: "checkSum", name: "checkSum", pkg: "crypto/sha512", typ: $funcType([], [arrayType$2], false)}];
 61298  	digest.init("crypto/sha512", [{prop: "h", name: "h", anonymous: false, exported: false, typ: arrayType, tag: ""}, {prop: "x", name: "x", anonymous: false, exported: false, typ: arrayType$1, tag: ""}, {prop: "nx", name: "nx", anonymous: false, exported: false, typ: $Int, tag: ""}, {prop: "len", name: "len", anonymous: false, exported: false, typ: $Uint64, tag: ""}, {prop: "function$4", name: "function", anonymous: false, exported: false, typ: crypto.Hash, tag: ""}]);
 61299  	$init = function() {
 61300  		$pkg.$init = function() {};
 61301  		/* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 61302  		$r = crypto.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 61303  		$r = errors.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 61304  		$r = hash.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 61305  		_K = new sliceType([new $Uint64(1116352408, 3609767458), new $Uint64(1899447441, 602891725), new $Uint64(3049323471, 3964484399), new $Uint64(3921009573, 2173295548), new $Uint64(961987163, 4081628472), new $Uint64(1508970993, 3053834265), new $Uint64(2453635748, 2937671579), new $Uint64(2870763221, 3664609560), new $Uint64(3624381080, 2734883394), new $Uint64(310598401, 1164996542), new $Uint64(607225278, 1323610764), new $Uint64(1426881987, 3590304994), new $Uint64(1925078388, 4068182383), new $Uint64(2162078206, 991336113), new $Uint64(2614888103, 633803317), new $Uint64(3248222580, 3479774868), new $Uint64(3835390401, 2666613458), new $Uint64(4022224774, 944711139), new $Uint64(264347078, 2341262773), new $Uint64(604807628, 2007800933), new $Uint64(770255983, 1495990901), new $Uint64(1249150122, 1856431235), new $Uint64(1555081692, 3175218132), new $Uint64(1996064986, 2198950837), new $Uint64(2554220882, 3999719339), new $Uint64(2821834349, 766784016), new $Uint64(2952996808, 2566594879), new $Uint64(3210313671, 3203337956), new $Uint64(3336571891, 1034457026), new $Uint64(3584528711, 2466948901), new $Uint64(113926993, 3758326383), new $Uint64(338241895, 168717936), new $Uint64(666307205, 1188179964), new $Uint64(773529912, 1546045734), new $Uint64(1294757372, 1522805485), new $Uint64(1396182291, 2643833823), new $Uint64(1695183700, 2343527390), new $Uint64(1986661051, 1014477480), new $Uint64(2177026350, 1206759142), new $Uint64(2456956037, 344077627), new $Uint64(2730485921, 1290863460), new $Uint64(2820302411, 3158454273), new $Uint64(3259730800, 3505952657), new $Uint64(3345764771, 106217008), new $Uint64(3516065817, 3606008344), new $Uint64(3600352804, 1432725776), new $Uint64(4094571909, 1467031594), new $Uint64(275423344, 851169720), new $Uint64(430227734, 3100823752), new $Uint64(506948616, 1363258195), new $Uint64(659060556, 3750685593), new $Uint64(883997877, 3785050280), new $Uint64(958139571, 3318307427), new $Uint64(1322822218, 3812723403), new $Uint64(1537002063, 2003034995), new $Uint64(1747873779, 3602036899), new $Uint64(1955562222, 1575990012), new $Uint64(2024104815, 1125592928), new $Uint64(2227730452, 2716904306), new $Uint64(2361852424, 442776044), new $Uint64(2428436474, 593698344), new $Uint64(2756734187, 3733110249), new $Uint64(3204031479, 2999351573), new $Uint64(3329325298, 3815920427), new $Uint64(3391569614, 3928383900), new $Uint64(3515267271, 566280711), new $Uint64(3940187606, 3454069534), new $Uint64(4118630271, 4000239992), new $Uint64(116418474, 1914138554), new $Uint64(174292421, 2731055270), new $Uint64(289380356, 3203993006), new $Uint64(460393269, 320620315), new $Uint64(685471733, 587496836), new $Uint64(852142971, 1086792851), new $Uint64(1017036298, 365543100), new $Uint64(1126000580, 2618297676), new $Uint64(1288033470, 3409855158), new $Uint64(1501505948, 4234509866), new $Uint64(1607167915, 987167468), new $Uint64(1816402316, 1246189591)]);
 61306  		block = blockGeneric;
 61307  		init();
 61308  		/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
 61309  	};
 61310  	$pkg.$init = $init;
 61311  	return $pkg;
 61312  })();
 61313  $packages["encoding/asn1"] = (function() {
 61314  	var $pkg = {}, $init, errors, fmt, math, big, reflect, strconv, strings, time, utf8, StructuralError, SyntaxError, BitString, ObjectIdentifier, Enumerated, Flag, RawValue, RawContent, tagAndLength, fieldParameters, encoder, byteEncoder, bytesEncoder, stringEncoder, multiEncoder, taggedEncoder, int64Encoder, bitStringEncoder, oidEncoder, sliceType, ptrType, ptrType$1, sliceType$1, sliceType$2, ptrType$2, ptrType$3, ptrType$4, sliceType$3, arrayType, arrayType$1, ptrType$5, bigOne, bitStringType, objectIdentifierType, enumeratedType, flagType, timeType, rawValueType, rawContentsType, bigIntType, byte00Encoder, byteFFEncoder, x, x$1, x$2, parseBool, checkInteger, parseInt64, parseInt32, parseBigInt, parseBitString, parseObjectIdentifier, parseBase128Int, parseUTCTime, parseGeneralizedTime, parseNumericString, isNumeric, parsePrintableString, isPrintable, parseIA5String, parseT61String, parseUTF8String, parseTagAndLength, parseSequenceOf, invalidLength, parseField, canHaveDefaultValue, setDefaultValue, Unmarshal, UnmarshalWithParams, parseFieldParameters, getUniversalType, base128IntLength, appendBase128Int, makeBigInt, appendLength, lengthLength, appendTagAndLength, makeObjectIdentifier, makePrintableString, makeIA5String, makeNumericString, makeUTF8String, appendTwoDigits, appendFourDigits, outsideUTCRange, makeUTCTime, makeGeneralizedTime, appendUTCTime, appendGeneralizedTime, appendTimeCommon, stripTagAndLength, makeBody, makeField, Marshal, MarshalWithParams;
 61315  	errors = $packages["errors"];
 61316  	fmt = $packages["fmt"];
 61317  	math = $packages["math"];
 61318  	big = $packages["math/big"];
 61319  	reflect = $packages["reflect"];
 61320  	strconv = $packages["strconv"];
 61321  	strings = $packages["strings"];
 61322  	time = $packages["time"];
 61323  	utf8 = $packages["unicode/utf8"];
 61324  	StructuralError = $pkg.StructuralError = $newType(0, $kindStruct, "asn1.StructuralError", true, "encoding/asn1", true, function(Msg_) {
 61325  		this.$val = this;
 61326  		if (arguments.length === 0) {
 61327  			this.Msg = "";
 61328  			return;
 61329  		}
 61330  		this.Msg = Msg_;
 61331  	});
 61332  	SyntaxError = $pkg.SyntaxError = $newType(0, $kindStruct, "asn1.SyntaxError", true, "encoding/asn1", true, function(Msg_) {
 61333  		this.$val = this;
 61334  		if (arguments.length === 0) {
 61335  			this.Msg = "";
 61336  			return;
 61337  		}
 61338  		this.Msg = Msg_;
 61339  	});
 61340  	BitString = $pkg.BitString = $newType(0, $kindStruct, "asn1.BitString", true, "encoding/asn1", true, function(Bytes_, BitLength_) {
 61341  		this.$val = this;
 61342  		if (arguments.length === 0) {
 61343  			this.Bytes = sliceType.nil;
 61344  			this.BitLength = 0;
 61345  			return;
 61346  		}
 61347  		this.Bytes = Bytes_;
 61348  		this.BitLength = BitLength_;
 61349  	});
 61350  	ObjectIdentifier = $pkg.ObjectIdentifier = $newType(12, $kindSlice, "asn1.ObjectIdentifier", true, "encoding/asn1", true, null);
 61351  	Enumerated = $pkg.Enumerated = $newType(4, $kindInt, "asn1.Enumerated", true, "encoding/asn1", true, null);
 61352  	Flag = $pkg.Flag = $newType(1, $kindBool, "asn1.Flag", true, "encoding/asn1", true, null);
 61353  	RawValue = $pkg.RawValue = $newType(0, $kindStruct, "asn1.RawValue", true, "encoding/asn1", true, function(Class_, Tag_, IsCompound_, Bytes_, FullBytes_) {
 61354  		this.$val = this;
 61355  		if (arguments.length === 0) {
 61356  			this.Class = 0;
 61357  			this.Tag = 0;
 61358  			this.IsCompound = false;
 61359  			this.Bytes = sliceType.nil;
 61360  			this.FullBytes = sliceType.nil;
 61361  			return;
 61362  		}
 61363  		this.Class = Class_;
 61364  		this.Tag = Tag_;
 61365  		this.IsCompound = IsCompound_;
 61366  		this.Bytes = Bytes_;
 61367  		this.FullBytes = FullBytes_;
 61368  	});
 61369  	RawContent = $pkg.RawContent = $newType(12, $kindSlice, "asn1.RawContent", true, "encoding/asn1", true, null);
 61370  	tagAndLength = $pkg.tagAndLength = $newType(0, $kindStruct, "asn1.tagAndLength", true, "encoding/asn1", false, function(class$0_, tag_, length_, isCompound_) {
 61371  		this.$val = this;
 61372  		if (arguments.length === 0) {
 61373  			this.class$0 = 0;
 61374  			this.tag = 0;
 61375  			this.length = 0;
 61376  			this.isCompound = false;
 61377  			return;
 61378  		}
 61379  		this.class$0 = class$0_;
 61380  		this.tag = tag_;
 61381  		this.length = length_;
 61382  		this.isCompound = isCompound_;
 61383  	});
 61384  	fieldParameters = $pkg.fieldParameters = $newType(0, $kindStruct, "asn1.fieldParameters", true, "encoding/asn1", false, function(optional_, explicit_, application_, defaultValue_, tag_, stringType_, timeType_, set_, omitEmpty_) {
 61385  		this.$val = this;
 61386  		if (arguments.length === 0) {
 61387  			this.optional = false;
 61388  			this.explicit = false;
 61389  			this.application = false;
 61390  			this.defaultValue = ptrType$3.nil;
 61391  			this.tag = ptrType$4.nil;
 61392  			this.stringType = 0;
 61393  			this.timeType = 0;
 61394  			this.set = false;
 61395  			this.omitEmpty = false;
 61396  			return;
 61397  		}
 61398  		this.optional = optional_;
 61399  		this.explicit = explicit_;
 61400  		this.application = application_;
 61401  		this.defaultValue = defaultValue_;
 61402  		this.tag = tag_;
 61403  		this.stringType = stringType_;
 61404  		this.timeType = timeType_;
 61405  		this.set = set_;
 61406  		this.omitEmpty = omitEmpty_;
 61407  	});
 61408  	encoder = $pkg.encoder = $newType(8, $kindInterface, "asn1.encoder", true, "encoding/asn1", false, null);
 61409  	byteEncoder = $pkg.byteEncoder = $newType(1, $kindUint8, "asn1.byteEncoder", true, "encoding/asn1", false, null);
 61410  	bytesEncoder = $pkg.bytesEncoder = $newType(12, $kindSlice, "asn1.bytesEncoder", true, "encoding/asn1", false, null);
 61411  	stringEncoder = $pkg.stringEncoder = $newType(8, $kindString, "asn1.stringEncoder", true, "encoding/asn1", false, null);
 61412  	multiEncoder = $pkg.multiEncoder = $newType(12, $kindSlice, "asn1.multiEncoder", true, "encoding/asn1", false, null);
 61413  	taggedEncoder = $pkg.taggedEncoder = $newType(0, $kindStruct, "asn1.taggedEncoder", true, "encoding/asn1", false, function(scratch_, tag_, body_) {
 61414  		this.$val = this;
 61415  		if (arguments.length === 0) {
 61416  			this.scratch = arrayType$1.zero();
 61417  			this.tag = $ifaceNil;
 61418  			this.body = $ifaceNil;
 61419  			return;
 61420  		}
 61421  		this.scratch = scratch_;
 61422  		this.tag = tag_;
 61423  		this.body = body_;
 61424  	});
 61425  	int64Encoder = $pkg.int64Encoder = $newType(8, $kindInt64, "asn1.int64Encoder", true, "encoding/asn1", false, null);
 61426  	bitStringEncoder = $pkg.bitStringEncoder = $newType(0, $kindStruct, "asn1.bitStringEncoder", true, "encoding/asn1", false, function(Bytes_, BitLength_) {
 61427  		this.$val = this;
 61428  		if (arguments.length === 0) {
 61429  			this.Bytes = sliceType.nil;
 61430  			this.BitLength = 0;
 61431  			return;
 61432  		}
 61433  		this.Bytes = Bytes_;
 61434  		this.BitLength = BitLength_;
 61435  	});
 61436  	oidEncoder = $pkg.oidEncoder = $newType(12, $kindSlice, "asn1.oidEncoder", true, "encoding/asn1", false, null);
 61437  	sliceType = $sliceType($Uint8);
 61438  	ptrType = $ptrType(time.Location);
 61439  	ptrType$1 = $ptrType(big.Int);
 61440  	sliceType$1 = $sliceType($Int);
 61441  	sliceType$2 = $sliceType($emptyInterface);
 61442  	ptrType$2 = $ptrType(reflect.rtype);
 61443  	ptrType$3 = $ptrType($Int64);
 61444  	ptrType$4 = $ptrType($Int);
 61445  	sliceType$3 = $sliceType(encoder);
 61446  	arrayType = $arrayType($Uint8, 4);
 61447  	arrayType$1 = $arrayType($Uint8, 8);
 61448  	ptrType$5 = $ptrType(taggedEncoder);
 61449  	StructuralError.ptr.prototype.Error = function() {
 61450  		var e;
 61451  		e = this;
 61452  		return "asn1: structure error: " + e.Msg;
 61453  	};
 61454  	StructuralError.prototype.Error = function() { return this.$val.Error(); };
 61455  	SyntaxError.ptr.prototype.Error = function() {
 61456  		var e;
 61457  		e = this;
 61458  		return "asn1: syntax error: " + e.Msg;
 61459  	};
 61460  	SyntaxError.prototype.Error = function() { return this.$val.Error(); };
 61461  	parseBool = function(bytes) {
 61462  		var _1, bytes, err, ret, x$3, x$4;
 61463  		ret = false;
 61464  		err = $ifaceNil;
 61465  		if (!((bytes.$length === 1))) {
 61466  			err = (x$3 = new SyntaxError.ptr("invalid boolean"), new x$3.constructor.elem(x$3));
 61467  			return [ret, err];
 61468  		}
 61469  		_1 = (0 >= bytes.$length ? ($throwRuntimeError("index out of range"), undefined) : bytes.$array[bytes.$offset + 0]);
 61470  		if (_1 === (0)) {
 61471  			ret = false;
 61472  		} else if (_1 === (255)) {
 61473  			ret = true;
 61474  		} else {
 61475  			err = (x$4 = new SyntaxError.ptr("invalid boolean"), new x$4.constructor.elem(x$4));
 61476  		}
 61477  		return [ret, err];
 61478  	};
 61479  	checkInteger = function(bytes) {
 61480  		var bytes, x$3, x$4;
 61481  		if (bytes.$length === 0) {
 61482  			return (x$3 = new StructuralError.ptr("empty integer"), new x$3.constructor.elem(x$3));
 61483  		}
 61484  		if (bytes.$length === 1) {
 61485  			return $ifaceNil;
 61486  		}
 61487  		if ((((0 >= bytes.$length ? ($throwRuntimeError("index out of range"), undefined) : bytes.$array[bytes.$offset + 0]) === 0) && ((((1 >= bytes.$length ? ($throwRuntimeError("index out of range"), undefined) : bytes.$array[bytes.$offset + 1]) & 128) >>> 0) === 0)) || (((0 >= bytes.$length ? ($throwRuntimeError("index out of range"), undefined) : bytes.$array[bytes.$offset + 0]) === 255) && ((((1 >= bytes.$length ? ($throwRuntimeError("index out of range"), undefined) : bytes.$array[bytes.$offset + 1]) & 128) >>> 0) === 128))) {
 61488  			return (x$4 = new StructuralError.ptr("integer not minimally-encoded"), new x$4.constructor.elem(x$4));
 61489  		}
 61490  		return $ifaceNil;
 61491  	};
 61492  	parseInt64 = function(bytes) {
 61493  		var bytes, bytesRead, err, ret, x$3, x$4;
 61494  		ret = new $Int64(0, 0);
 61495  		err = $ifaceNil;
 61496  		err = checkInteger(bytes);
 61497  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 61498  			return [ret, err];
 61499  		}
 61500  		if (bytes.$length > 8) {
 61501  			err = (x$3 = new StructuralError.ptr("integer too large"), new x$3.constructor.elem(x$3));
 61502  			return [ret, err];
 61503  		}
 61504  		bytesRead = 0;
 61505  		while (true) {
 61506  			if (!(bytesRead < bytes.$length)) { break; }
 61507  			ret = $shiftLeft64(ret, (8));
 61508  			ret = (x$4 = (new $Int64(0, ((bytesRead < 0 || bytesRead >= bytes.$length) ? ($throwRuntimeError("index out of range"), undefined) : bytes.$array[bytes.$offset + bytesRead]))), new $Int64(ret.$high | x$4.$high, (ret.$low | x$4.$low) >>> 0));
 61509  			bytesRead = bytesRead + (1) >> 0;
 61510  		}
 61511  		ret = $shiftLeft64(ret, ((64 - (((bytes.$length << 24 >>> 24)) * 8 << 24 >>> 24) << 24 >>> 24)));
 61512  		ret = $shiftRightInt64(ret, ((64 - (((bytes.$length << 24 >>> 24)) * 8 << 24 >>> 24) << 24 >>> 24)));
 61513  		return [ret, err];
 61514  	};
 61515  	parseInt32 = function(bytes) {
 61516  		var _tuple, bytes, err, err$1, ret64, x$3, x$4;
 61517  		err = checkInteger(bytes);
 61518  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 61519  			return [0, err];
 61520  		}
 61521  		_tuple = parseInt64(bytes);
 61522  		ret64 = _tuple[0];
 61523  		err$1 = _tuple[1];
 61524  		if (!($interfaceIsEqual(err$1, $ifaceNil))) {
 61525  			return [0, err$1];
 61526  		}
 61527  		if (!((x$3 = (new $Int64(0, (((ret64.$low + ((ret64.$high >> 31) * 4294967296)) >> 0)))), (ret64.$high === x$3.$high && ret64.$low === x$3.$low)))) {
 61528  			return [0, (x$4 = new StructuralError.ptr("integer too large"), new x$4.constructor.elem(x$4))];
 61529  		}
 61530  		return [(((ret64.$low + ((ret64.$high >> 31) * 4294967296)) >> 0)), $ifaceNil];
 61531  	};
 61532  	parseBigInt = function(bytes) {
 61533  		var _i, _ref, bytes, err, i, notBytes, ret;
 61534  		err = checkInteger(bytes);
 61535  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 61536  			return [ptrType$1.nil, err];
 61537  		}
 61538  		ret = new big.Int.ptr(false, big.nat.nil);
 61539  		if (bytes.$length > 0 && ((((0 >= bytes.$length ? ($throwRuntimeError("index out of range"), undefined) : bytes.$array[bytes.$offset + 0]) & 128) >>> 0) === 128)) {
 61540  			notBytes = $makeSlice(sliceType, bytes.$length);
 61541  			_ref = notBytes;
 61542  			_i = 0;
 61543  			while (true) {
 61544  				if (!(_i < _ref.$length)) { break; }
 61545  				i = _i;
 61546  				((i < 0 || i >= notBytes.$length) ? ($throwRuntimeError("index out of range"), undefined) : notBytes.$array[notBytes.$offset + i] = (~((i < 0 || i >= bytes.$length) ? ($throwRuntimeError("index out of range"), undefined) : bytes.$array[bytes.$offset + i]) << 24 >>> 24));
 61547  				_i++;
 61548  			}
 61549  			ret.SetBytes(notBytes);
 61550  			ret.Add(ret, bigOne);
 61551  			ret.Neg(ret);
 61552  			return [ret, $ifaceNil];
 61553  		}
 61554  		ret.SetBytes(bytes);
 61555  		return [ret, $ifaceNil];
 61556  	};
 61557  	BitString.ptr.prototype.At = function(i) {
 61558  		var _q, _r, b, i, x$3, x$4, y, y$1;
 61559  		b = this;
 61560  		if (i < 0 || i >= b.BitLength) {
 61561  			return 0;
 61562  		}
 61563  		x$3 = (_q = i / 8, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero"));
 61564  		y = 7 - (((_r = i % 8, _r === _r ? _r : $throwRuntimeError("integer divide by zero")) >>> 0)) >>> 0;
 61565  		return ((((y$1 = y, y$1 < 32 ? ((x$4 = b.Bytes, ((x$3 < 0 || x$3 >= x$4.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$4.$array[x$4.$offset + x$3])) >>> y$1) : 0) << 24 >>> 24) >> 0)) & 1;
 61566  	};
 61567  	BitString.prototype.At = function(i) { return this.$val.At(i); };
 61568  	BitString.ptr.prototype.RightAlign = function() {
 61569  		var _r, a, b, i, shift, x$3, x$4, x$5, x$6, y, y$1, y$2;
 61570  		b = this;
 61571  		shift = (((8 - ((_r = b.BitLength % 8, _r === _r ? _r : $throwRuntimeError("integer divide by zero"))) >> 0) >>> 0));
 61572  		if ((shift === 8) || (b.Bytes.$length === 0)) {
 61573  			return b.Bytes;
 61574  		}
 61575  		a = $makeSlice(sliceType, b.Bytes.$length);
 61576  		(0 >= a.$length ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + 0] = ((y = shift, y < 32 ? ((x$3 = b.Bytes, (0 >= x$3.$length ? ($throwRuntimeError("index out of range"), undefined) : x$3.$array[x$3.$offset + 0])) >>> y) : 0) << 24 >>> 24));
 61577  		i = 1;
 61578  		while (true) {
 61579  			if (!(i < b.Bytes.$length)) { break; }
 61580  			((i < 0 || i >= a.$length) ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + i] = ((y$1 = ((8 - shift >>> 0)), y$1 < 32 ? ((x$4 = b.Bytes, x$5 = i - 1 >> 0, ((x$5 < 0 || x$5 >= x$4.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$4.$array[x$4.$offset + x$5])) << y$1) : 0) << 24 >>> 24));
 61581  			((i < 0 || i >= a.$length) ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + i] = ((((i < 0 || i >= a.$length) ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + i]) | (((y$2 = shift, y$2 < 32 ? ((x$6 = b.Bytes, ((i < 0 || i >= x$6.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$6.$array[x$6.$offset + i])) >>> y$2) : 0) << 24 >>> 24))) >>> 0));
 61582  			i = i + (1) >> 0;
 61583  		}
 61584  		return a;
 61585  	};
 61586  	BitString.prototype.RightAlign = function() { return this.$val.RightAlign(); };
 61587  	parseBitString = function(bytes) {
 61588  		var bytes, err, paddingBits, ret, x$3, x$4, x$5, y;
 61589  		ret = new BitString.ptr(sliceType.nil, 0);
 61590  		err = $ifaceNil;
 61591  		if (bytes.$length === 0) {
 61592  			err = (x$3 = new SyntaxError.ptr("zero length BIT STRING"), new x$3.constructor.elem(x$3));
 61593  			return [ret, err];
 61594  		}
 61595  		paddingBits = (((0 >= bytes.$length ? ($throwRuntimeError("index out of range"), undefined) : bytes.$array[bytes.$offset + 0]) >> 0));
 61596  		if (paddingBits > 7 || (bytes.$length === 1) && paddingBits > 0 || !(((((x$4 = bytes.$length - 1 >> 0, ((x$4 < 0 || x$4 >= bytes.$length) ? ($throwRuntimeError("index out of range"), undefined) : bytes.$array[bytes.$offset + x$4])) & (((((y = (0 >= bytes.$length ? ($throwRuntimeError("index out of range"), undefined) : bytes.$array[bytes.$offset + 0]), y < 32 ? (1 << y) : 0) << 24 >>> 24)) - 1 << 24 >>> 24))) >>> 0) === 0))) {
 61597  			err = (x$5 = new SyntaxError.ptr("invalid padding bits in BIT STRING"), new x$5.constructor.elem(x$5));
 61598  			return [ret, err];
 61599  		}
 61600  		ret.BitLength = ($imul(((bytes.$length - 1 >> 0)), 8)) - paddingBits >> 0;
 61601  		ret.Bytes = $subslice(bytes, 1);
 61602  		return [ret, err];
 61603  	};
 61604  	ObjectIdentifier.prototype.Equal = function(other) {
 61605  		var i, oi, other;
 61606  		oi = this;
 61607  		if (!((oi.$length === other.$length))) {
 61608  			return false;
 61609  		}
 61610  		i = 0;
 61611  		while (true) {
 61612  			if (!(i < oi.$length)) { break; }
 61613  			if (!((((i < 0 || i >= oi.$length) ? ($throwRuntimeError("index out of range"), undefined) : oi.$array[oi.$offset + i]) === ((i < 0 || i >= other.$length) ? ($throwRuntimeError("index out of range"), undefined) : other.$array[other.$offset + i])))) {
 61614  				return false;
 61615  			}
 61616  			i = i + (1) >> 0;
 61617  		}
 61618  		return true;
 61619  	};
 61620  	$ptrType(ObjectIdentifier).prototype.Equal = function(other) { return this.$get().Equal(other); };
 61621  	ObjectIdentifier.prototype.String = function() {
 61622  		var _i, _ref, i, oi, s, v;
 61623  		oi = this;
 61624  		s = "";
 61625  		_ref = oi;
 61626  		_i = 0;
 61627  		while (true) {
 61628  			if (!(_i < _ref.$length)) { break; }
 61629  			i = _i;
 61630  			v = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
 61631  			if (i > 0) {
 61632  				s = s + (".");
 61633  			}
 61634  			s = s + (strconv.Itoa(v));
 61635  			_i++;
 61636  		}
 61637  		return s;
 61638  	};
 61639  	$ptrType(ObjectIdentifier).prototype.String = function() { return this.$get().String(); };
 61640  	parseObjectIdentifier = function(bytes) {
 61641  		var _q, _r, _tuple, _tuple$1, bytes, err, i, offset, s, v, x$3;
 61642  		s = sliceType$1.nil;
 61643  		err = $ifaceNil;
 61644  		if (bytes.$length === 0) {
 61645  			err = (x$3 = new SyntaxError.ptr("zero length OBJECT IDENTIFIER"), new x$3.constructor.elem(x$3));
 61646  			return [s, err];
 61647  		}
 61648  		s = $makeSlice(sliceType$1, (bytes.$length + 1 >> 0));
 61649  		_tuple = parseBase128Int(bytes, 0);
 61650  		v = _tuple[0];
 61651  		offset = _tuple[1];
 61652  		err = _tuple[2];
 61653  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 61654  			return [s, err];
 61655  		}
 61656  		if (v < 80) {
 61657  			(0 >= s.$length ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + 0] = (_q = v / 40, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")));
 61658  			(1 >= s.$length ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + 1] = (_r = v % 40, _r === _r ? _r : $throwRuntimeError("integer divide by zero")));
 61659  		} else {
 61660  			(0 >= s.$length ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + 0] = 2);
 61661  			(1 >= s.$length ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + 1] = (v - 80 >> 0));
 61662  		}
 61663  		i = 2;
 61664  		while (true) {
 61665  			if (!(offset < bytes.$length)) { break; }
 61666  			_tuple$1 = parseBase128Int(bytes, offset);
 61667  			v = _tuple$1[0];
 61668  			offset = _tuple$1[1];
 61669  			err = _tuple$1[2];
 61670  			if (!($interfaceIsEqual(err, $ifaceNil))) {
 61671  				return [s, err];
 61672  			}
 61673  			((i < 0 || i >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + i] = v);
 61674  			i = i + (1) >> 0;
 61675  		}
 61676  		s = $subslice(s, 0, i);
 61677  		return [s, err];
 61678  	};
 61679  	parseBase128Int = function(bytes, initOffset) {
 61680  		var b, bytes, err, initOffset, offset, ret, ret64, shifted, x$3, x$4, x$5, x$6;
 61681  		ret = 0;
 61682  		offset = 0;
 61683  		err = $ifaceNil;
 61684  		offset = initOffset;
 61685  		ret64 = new $Int64(0, 0);
 61686  		shifted = 0;
 61687  		while (true) {
 61688  			if (!(offset < bytes.$length)) { break; }
 61689  			if (shifted === 5) {
 61690  				err = (x$3 = new StructuralError.ptr("base 128 integer too large"), new x$3.constructor.elem(x$3));
 61691  				return [ret, offset, err];
 61692  			}
 61693  			ret64 = $shiftLeft64(ret64, (7));
 61694  			b = ((offset < 0 || offset >= bytes.$length) ? ($throwRuntimeError("index out of range"), undefined) : bytes.$array[bytes.$offset + offset]);
 61695  			ret64 = (x$4 = (new $Int64(0, ((b & 127) >>> 0))), new $Int64(ret64.$high | x$4.$high, (ret64.$low | x$4.$low) >>> 0));
 61696  			offset = offset + (1) >> 0;
 61697  			if (((b & 128) >>> 0) === 0) {
 61698  				ret = (((ret64.$low + ((ret64.$high >> 31) * 4294967296)) >> 0));
 61699  				if ((ret64.$high > 0 || (ret64.$high === 0 && ret64.$low > 2147483647))) {
 61700  					err = (x$5 = new StructuralError.ptr("base 128 integer too large"), new x$5.constructor.elem(x$5));
 61701  				}
 61702  				return [ret, offset, err];
 61703  			}
 61704  			shifted = shifted + (1) >> 0;
 61705  		}
 61706  		err = (x$6 = new SyntaxError.ptr("truncated base 128 integer"), new x$6.constructor.elem(x$6));
 61707  		return [ret, offset, err];
 61708  	};
 61709  	parseUTCTime = function(bytes) {
 61710  		var _r, _r$1, _r$2, _r$3, _r$4, _r$5, _tuple, _tuple$1, bytes, err, formatStr, ret, s, serialized, $s, $r;
 61711  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; bytes = $f.bytes; err = $f.err; formatStr = $f.formatStr; ret = $f.ret; s = $f.s; serialized = $f.serialized; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 61712  		ret = new time.Time.ptr(new $Uint64(0, 0), new $Int64(0, 0), ptrType.nil);
 61713  		err = $ifaceNil;
 61714  		s = ($bytesToString(bytes));
 61715  		formatStr = "0601021504Z0700";
 61716  		_r = time.Parse(formatStr, s); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 61717  		_tuple = _r;
 61718  		time.Time.copy(ret, _tuple[0]);
 61719  		err = _tuple[1];
 61720  		/* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 2; continue; }
 61721  		/* */ $s = 3; continue;
 61722  		/* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 2:
 61723  			formatStr = "060102150405Z0700";
 61724  			_r$1 = time.Parse(formatStr, s); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 61725  			_tuple$1 = _r$1;
 61726  			time.Time.copy(ret, _tuple$1[0]);
 61727  			err = _tuple$1[1];
 61728  		/* } */ case 3:
 61729  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 61730  			$s = -1; return [ret, err];
 61731  		}
 61732  		_r$2 = $clone(ret, time.Time).Format(formatStr); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 61733  		serialized = _r$2;
 61734  		/* */ if (!(serialized === s)) { $s = 6; continue; }
 61735  		/* */ $s = 7; continue;
 61736  		/* if (!(serialized === s)) { */ case 6:
 61737  			_r$3 = fmt.Errorf("asn1: time did not serialize back to the original value and may be invalid: given %q, but serialized as %q", new sliceType$2([new $String(s), new $String(serialized)])); /* */ $s = 8; case 8: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 61738  			err = _r$3;
 61739  			$s = -1; return [ret, err];
 61740  		/* } */ case 7:
 61741  		_r$4 = $clone(ret, time.Time).Year(); /* */ $s = 11; case 11: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 61742  		/* */ if (_r$4 >= 2050) { $s = 9; continue; }
 61743  		/* */ $s = 10; continue;
 61744  		/* if (_r$4 >= 2050) { */ case 9:
 61745  			_r$5 = $clone(ret, time.Time).AddDate(-100, 0, 0); /* */ $s = 12; case 12: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
 61746  			time.Time.copy(ret, _r$5);
 61747  		/* } */ case 10:
 61748  		$s = -1; return [ret, err];
 61749  		/* */ } return; } if ($f === undefined) { $f = { $blk: parseUTCTime }; } $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.bytes = bytes; $f.err = err; $f.formatStr = formatStr; $f.ret = ret; $f.s = s; $f.serialized = serialized; $f.$s = $s; $f.$r = $r; return $f;
 61750  	};
 61751  	parseGeneralizedTime = function(bytes) {
 61752  		var _r, _r$1, _r$2, _tuple, bytes, err, ret, s, serialized, $s, $r;
 61753  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _tuple = $f._tuple; bytes = $f.bytes; err = $f.err; ret = $f.ret; s = $f.s; serialized = $f.serialized; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 61754  		ret = new time.Time.ptr(new $Uint64(0, 0), new $Int64(0, 0), ptrType.nil);
 61755  		err = $ifaceNil;
 61756  		s = ($bytesToString(bytes));
 61757  		_r = time.Parse("20060102150405Z0700", s); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 61758  		_tuple = _r;
 61759  		time.Time.copy(ret, _tuple[0]);
 61760  		err = _tuple[1];
 61761  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 61762  			$s = -1; return [ret, err];
 61763  		}
 61764  		_r$1 = $clone(ret, time.Time).Format("20060102150405Z0700"); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 61765  		serialized = _r$1;
 61766  		/* */ if (!(serialized === s)) { $s = 3; continue; }
 61767  		/* */ $s = 4; continue;
 61768  		/* if (!(serialized === s)) { */ case 3:
 61769  			_r$2 = fmt.Errorf("asn1: time did not serialize back to the original value and may be invalid: given %q, but serialized as %q", new sliceType$2([new $String(s), new $String(serialized)])); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 61770  			err = _r$2;
 61771  		/* } */ case 4:
 61772  		$s = -1; return [ret, err];
 61773  		/* */ } return; } if ($f === undefined) { $f = { $blk: parseGeneralizedTime }; } $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._tuple = _tuple; $f.bytes = bytes; $f.err = err; $f.ret = ret; $f.s = s; $f.serialized = serialized; $f.$s = $s; $f.$r = $r; return $f;
 61774  	};
 61775  	parseNumericString = function(bytes) {
 61776  		var _i, _ref, _tmp, _tmp$1, _tmp$2, _tmp$3, b, bytes, err, ret, x$3;
 61777  		ret = "";
 61778  		err = $ifaceNil;
 61779  		_ref = bytes;
 61780  		_i = 0;
 61781  		while (true) {
 61782  			if (!(_i < _ref.$length)) { break; }
 61783  			b = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
 61784  			if (!isNumeric(b)) {
 61785  				_tmp = "";
 61786  				_tmp$1 = (x$3 = new SyntaxError.ptr("NumericString contains invalid character"), new x$3.constructor.elem(x$3));
 61787  				ret = _tmp;
 61788  				err = _tmp$1;
 61789  				return [ret, err];
 61790  			}
 61791  			_i++;
 61792  		}
 61793  		_tmp$2 = ($bytesToString(bytes));
 61794  		_tmp$3 = $ifaceNil;
 61795  		ret = _tmp$2;
 61796  		err = _tmp$3;
 61797  		return [ret, err];
 61798  	};
 61799  	isNumeric = function(b) {
 61800  		var b;
 61801  		return 48 <= b && b <= 57 || (b === 32);
 61802  	};
 61803  	parsePrintableString = function(bytes) {
 61804  		var _i, _ref, b, bytes, err, ret, x$3;
 61805  		ret = "";
 61806  		err = $ifaceNil;
 61807  		_ref = bytes;
 61808  		_i = 0;
 61809  		while (true) {
 61810  			if (!(_i < _ref.$length)) { break; }
 61811  			b = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
 61812  			if (!isPrintable(b, true, true)) {
 61813  				err = (x$3 = new SyntaxError.ptr("PrintableString contains invalid character"), new x$3.constructor.elem(x$3));
 61814  				return [ret, err];
 61815  			}
 61816  			_i++;
 61817  		}
 61818  		ret = ($bytesToString(bytes));
 61819  		return [ret, err];
 61820  	};
 61821  	isPrintable = function(b, asterisk, ampersand) {
 61822  		var ampersand, asterisk, b;
 61823  		return 97 <= b && b <= 122 || 65 <= b && b <= 90 || 48 <= b && b <= 57 || 39 <= b && b <= 41 || 43 <= b && b <= 47 || (b === 32) || (b === 58) || (b === 61) || (b === 63) || ((asterisk) && (b === 42)) || ((ampersand) && (b === 38));
 61824  	};
 61825  	parseIA5String = function(bytes) {
 61826  		var _i, _ref, b, bytes, err, ret, x$3;
 61827  		ret = "";
 61828  		err = $ifaceNil;
 61829  		_ref = bytes;
 61830  		_i = 0;
 61831  		while (true) {
 61832  			if (!(_i < _ref.$length)) { break; }
 61833  			b = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
 61834  			if (b >= 128) {
 61835  				err = (x$3 = new SyntaxError.ptr("IA5String contains invalid character"), new x$3.constructor.elem(x$3));
 61836  				return [ret, err];
 61837  			}
 61838  			_i++;
 61839  		}
 61840  		ret = ($bytesToString(bytes));
 61841  		return [ret, err];
 61842  	};
 61843  	parseT61String = function(bytes) {
 61844  		var _tmp, _tmp$1, bytes, err, ret;
 61845  		ret = "";
 61846  		err = $ifaceNil;
 61847  		_tmp = ($bytesToString(bytes));
 61848  		_tmp$1 = $ifaceNil;
 61849  		ret = _tmp;
 61850  		err = _tmp$1;
 61851  		return [ret, err];
 61852  	};
 61853  	parseUTF8String = function(bytes) {
 61854  		var _tmp, _tmp$1, _tmp$2, _tmp$3, bytes, err, ret;
 61855  		ret = "";
 61856  		err = $ifaceNil;
 61857  		if (!utf8.Valid(bytes)) {
 61858  			_tmp = "";
 61859  			_tmp$1 = errors.New("asn1: invalid UTF-8 string");
 61860  			ret = _tmp;
 61861  			err = _tmp$1;
 61862  			return [ret, err];
 61863  		}
 61864  		_tmp$2 = ($bytesToString(bytes));
 61865  		_tmp$3 = $ifaceNil;
 61866  		ret = _tmp$2;
 61867  		err = _tmp$3;
 61868  		return [ret, err];
 61869  	};
 61870  	parseTagAndLength = function(bytes, initOffset) {
 61871  		var _tuple, b, bytes, err, i, initOffset, numBytes, offset, ret, x$3, x$4, x$5, x$6, x$7, x$8, x$9, y;
 61872  		ret = new tagAndLength.ptr(0, 0, 0, false);
 61873  		offset = 0;
 61874  		err = $ifaceNil;
 61875  		offset = initOffset;
 61876  		if (offset >= bytes.$length) {
 61877  			err = errors.New("asn1: internal error in parseTagAndLength");
 61878  			return [ret, offset, err];
 61879  		}
 61880  		b = ((offset < 0 || offset >= bytes.$length) ? ($throwRuntimeError("index out of range"), undefined) : bytes.$array[bytes.$offset + offset]);
 61881  		offset = offset + (1) >> 0;
 61882  		ret.class$0 = (((b >>> 6 << 24 >>> 24) >> 0));
 61883  		ret.isCompound = ((b & 32) >>> 0) === 32;
 61884  		ret.tag = ((((b & 31) >>> 0) >> 0));
 61885  		if (ret.tag === 31) {
 61886  			_tuple = parseBase128Int(bytes, offset);
 61887  			ret.tag = _tuple[0];
 61888  			offset = _tuple[1];
 61889  			err = _tuple[2];
 61890  			if (!($interfaceIsEqual(err, $ifaceNil))) {
 61891  				return [ret, offset, err];
 61892  			}
 61893  			if (ret.tag < 31) {
 61894  				err = (x$3 = new SyntaxError.ptr("non-minimal tag"), new x$3.constructor.elem(x$3));
 61895  				return [ret, offset, err];
 61896  			}
 61897  		}
 61898  		if (offset >= bytes.$length) {
 61899  			err = (x$4 = new SyntaxError.ptr("truncated tag or length"), new x$4.constructor.elem(x$4));
 61900  			return [ret, offset, err];
 61901  		}
 61902  		b = ((offset < 0 || offset >= bytes.$length) ? ($throwRuntimeError("index out of range"), undefined) : bytes.$array[bytes.$offset + offset]);
 61903  		offset = offset + (1) >> 0;
 61904  		if (((b & 128) >>> 0) === 0) {
 61905  			ret.length = ((((b & 127) >>> 0) >> 0));
 61906  		} else {
 61907  			numBytes = ((((b & 127) >>> 0) >> 0));
 61908  			if (numBytes === 0) {
 61909  				err = (x$5 = new SyntaxError.ptr("indefinite length found (not DER)"), new x$5.constructor.elem(x$5));
 61910  				return [ret, offset, err];
 61911  			}
 61912  			ret.length = 0;
 61913  			i = 0;
 61914  			while (true) {
 61915  				if (!(i < numBytes)) { break; }
 61916  				if (offset >= bytes.$length) {
 61917  					err = (x$6 = new SyntaxError.ptr("truncated tag or length"), new x$6.constructor.elem(x$6));
 61918  					return [ret, offset, err];
 61919  				}
 61920  				b = ((offset < 0 || offset >= bytes.$length) ? ($throwRuntimeError("index out of range"), undefined) : bytes.$array[bytes.$offset + offset]);
 61921  				offset = offset + (1) >> 0;
 61922  				if (ret.length >= 8388608) {
 61923  					err = (x$7 = new StructuralError.ptr("length too large"), new x$7.constructor.elem(x$7));
 61924  					return [ret, offset, err];
 61925  				}
 61926  				ret.length = (y = (8), y < 32 ? (ret.length << y) : 0) >> 0;
 61927  				ret.length = ret.length | (((b >> 0)));
 61928  				if (ret.length === 0) {
 61929  					err = (x$8 = new StructuralError.ptr("superfluous leading zeros in length"), new x$8.constructor.elem(x$8));
 61930  					return [ret, offset, err];
 61931  				}
 61932  				i = i + (1) >> 0;
 61933  			}
 61934  			if (ret.length < 128) {
 61935  				err = (x$9 = new StructuralError.ptr("non-minimal length"), new x$9.constructor.elem(x$9));
 61936  				return [ret, offset, err];
 61937  			}
 61938  		}
 61939  		return [ret, offset, err];
 61940  	};
 61941  	parseSequenceOf = function(bytes, sliceType$3, elemType) {
 61942  		var _1, _r, _r$1, _r$2, _r$3, _tuple, _tuple$1, _tuple$2, bytes, compoundType, elemType, err, expectedTag, i, matchAny, numElements, offset, offset$1, ok, params, ret, sliceType$3, t, x$3, x$4, x$5, $s, $r;
 61943  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; bytes = $f.bytes; compoundType = $f.compoundType; elemType = $f.elemType; err = $f.err; expectedTag = $f.expectedTag; i = $f.i; matchAny = $f.matchAny; numElements = $f.numElements; offset = $f.offset; offset$1 = $f.offset$1; ok = $f.ok; params = $f.params; ret = $f.ret; sliceType$3 = $f.sliceType$3; t = $f.t; x$3 = $f.x$3; x$4 = $f.x$4; x$5 = $f.x$5; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 61944  		ret = new reflect.Value.ptr(ptrType$2.nil, 0, 0);
 61945  		err = $ifaceNil;
 61946  		_r = getUniversalType(elemType); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 61947  		_tuple = _r;
 61948  		matchAny = _tuple[0];
 61949  		expectedTag = _tuple[1];
 61950  		compoundType = _tuple[2];
 61951  		ok = _tuple[3];
 61952  		if (!ok) {
 61953  			err = (x$3 = new StructuralError.ptr("unknown Go type for slice"), new x$3.constructor.elem(x$3));
 61954  			$s = -1; return [ret, err];
 61955  		}
 61956  		numElements = 0;
 61957  		offset = 0;
 61958  		while (true) {
 61959  			if (!(offset < bytes.$length)) { break; }
 61960  			t = new tagAndLength.ptr(0, 0, 0, false);
 61961  			_tuple$1 = parseTagAndLength(bytes, offset);
 61962  			tagAndLength.copy(t, _tuple$1[0]);
 61963  			offset = _tuple$1[1];
 61964  			err = _tuple$1[2];
 61965  			if (!($interfaceIsEqual(err, $ifaceNil))) {
 61966  				$s = -1; return [ret, err];
 61967  			}
 61968  			_1 = t.tag;
 61969  			if ((_1 === (22)) || (_1 === (27)) || (_1 === (20)) || (_1 === (12)) || (_1 === (18))) {
 61970  				t.tag = 19;
 61971  			} else if ((_1 === (24)) || (_1 === (23))) {
 61972  				t.tag = 23;
 61973  			}
 61974  			if (!matchAny && (!((t.class$0 === 0)) || !(t.isCompound === compoundType) || !((t.tag === expectedTag)))) {
 61975  				err = (x$4 = new StructuralError.ptr("sequence tag mismatch"), new x$4.constructor.elem(x$4));
 61976  				$s = -1; return [ret, err];
 61977  			}
 61978  			if (invalidLength(offset, t.length, bytes.$length)) {
 61979  				err = (x$5 = new SyntaxError.ptr("truncated sequence"), new x$5.constructor.elem(x$5));
 61980  				$s = -1; return [ret, err];
 61981  			}
 61982  			offset = offset + (t.length) >> 0;
 61983  			numElements = numElements + (1) >> 0;
 61984  		}
 61985  		_r$1 = reflect.MakeSlice(sliceType$3, numElements, numElements); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 61986  		ret = _r$1;
 61987  		params = new fieldParameters.ptr(false, false, false, ptrType$3.nil, ptrType$4.nil, 0, 0, false, false);
 61988  		offset$1 = 0;
 61989  		i = 0;
 61990  		/* while (true) { */ case 3:
 61991  			/* if (!(i < numElements)) { break; } */ if(!(i < numElements)) { $s = 4; continue; }
 61992  			_r$2 = $clone(ret, reflect.Value).Index(i); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 61993  			_r$3 = parseField($clone(_r$2, reflect.Value), bytes, offset$1, $clone(params, fieldParameters)); /* */ $s = 6; case 6: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 61994  			_tuple$2 = _r$3;
 61995  			offset$1 = _tuple$2[0];
 61996  			err = _tuple$2[1];
 61997  			if (!($interfaceIsEqual(err, $ifaceNil))) {
 61998  				$s = -1; return [ret, err];
 61999  			}
 62000  			i = i + (1) >> 0;
 62001  		/* } */ $s = 3; continue; case 4:
 62002  		$s = -1; return [ret, err];
 62003  		/* */ } return; } if ($f === undefined) { $f = { $blk: parseSequenceOf }; } $f._1 = _1; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f.bytes = bytes; $f.compoundType = compoundType; $f.elemType = elemType; $f.err = err; $f.expectedTag = expectedTag; $f.i = i; $f.matchAny = matchAny; $f.numElements = numElements; $f.offset = offset; $f.offset$1 = offset$1; $f.ok = ok; $f.params = params; $f.ret = ret; $f.sliceType$3 = sliceType$3; $f.t = t; $f.x$3 = x$3; $f.x$4 = x$4; $f.x$5 = x$5; $f.$s = $s; $f.$r = $r; return $f;
 62004  	};
 62005  	invalidLength = function(offset, length, sliceLength) {
 62006  		var length, offset, sliceLength;
 62007  		return (offset + length >> 0) < offset || (offset + length >> 0) > sliceLength;
 62008  	};
 62009  	parseField = function(v, bytes, initOffset, params) {
 62010  		var _1, _2, _3, _4, _5, _arg, _arg$1, _arg$10, _arg$11, _arg$2, _arg$3, _arg$4, _arg$5, _arg$6, _arg$7, _arg$8, _arg$9, _r, _r$1, _r$10, _r$11, _r$12, _r$13, _r$14, _r$15, _r$16, _r$17, _r$18, _r$19, _r$2, _r$20, _r$21, _r$22, _r$23, _r$24, _r$25, _r$26, _r$27, _r$28, _r$29, _r$3, _r$30, _r$31, _r$32, _r$33, _r$34, _r$35, _r$36, _r$37, _r$38, _r$39, _r$4, _r$40, _r$41, _r$5, _r$6, _r$7, _r$8, _r$9, _tuple, _tuple$1, _tuple$10, _tuple$11, _tuple$12, _tuple$13, _tuple$14, _tuple$15, _tuple$16, _tuple$17, _tuple$18, _tuple$19, _tuple$2, _tuple$20, _tuple$21, _tuple$22, _tuple$23, _tuple$24, _tuple$25, _tuple$26, _tuple$27, _tuple$28, _tuple$29, _tuple$3, _tuple$30, _tuple$4, _tuple$5, _tuple$6, _tuple$7, _tuple$8, _tuple$9, _v, _v$1, bs, bytes, bytes$1, compoundType, err, err1, err1$1, err1$2, err1$3, err1$4, err1$5, err1$6, err1$7, err1$8, expectedClass, expectedClass$1, expectedTag, field, fieldType, i, i$1, ifaceType, initOffset, innerBytes, innerBytes$1, innerOffset, matchAny, matchAnyClassAndTag, newSlice, newSlice$1, offset, ok, ok$1, ok1, params, parsedBool, parsedInt, parsedInt$1, parsedInt$2, parsedInt$3, result, result$1, sliceType$3, structType, t, t$1, time$1, universalTag, v, v$1, val, x$10, x$11, x$12, x$13, x$3, x$4, x$5, x$6, x$7, x$8, x$9, $s, $r;
 62011  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _2 = $f._2; _3 = $f._3; _4 = $f._4; _5 = $f._5; _arg = $f._arg; _arg$1 = $f._arg$1; _arg$10 = $f._arg$10; _arg$11 = $f._arg$11; _arg$2 = $f._arg$2; _arg$3 = $f._arg$3; _arg$4 = $f._arg$4; _arg$5 = $f._arg$5; _arg$6 = $f._arg$6; _arg$7 = $f._arg$7; _arg$8 = $f._arg$8; _arg$9 = $f._arg$9; _r = $f._r; _r$1 = $f._r$1; _r$10 = $f._r$10; _r$11 = $f._r$11; _r$12 = $f._r$12; _r$13 = $f._r$13; _r$14 = $f._r$14; _r$15 = $f._r$15; _r$16 = $f._r$16; _r$17 = $f._r$17; _r$18 = $f._r$18; _r$19 = $f._r$19; _r$2 = $f._r$2; _r$20 = $f._r$20; _r$21 = $f._r$21; _r$22 = $f._r$22; _r$23 = $f._r$23; _r$24 = $f._r$24; _r$25 = $f._r$25; _r$26 = $f._r$26; _r$27 = $f._r$27; _r$28 = $f._r$28; _r$29 = $f._r$29; _r$3 = $f._r$3; _r$30 = $f._r$30; _r$31 = $f._r$31; _r$32 = $f._r$32; _r$33 = $f._r$33; _r$34 = $f._r$34; _r$35 = $f._r$35; _r$36 = $f._r$36; _r$37 = $f._r$37; _r$38 = $f._r$38; _r$39 = $f._r$39; _r$4 = $f._r$4; _r$40 = $f._r$40; _r$41 = $f._r$41; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _r$8 = $f._r$8; _r$9 = $f._r$9; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$10 = $f._tuple$10; _tuple$11 = $f._tuple$11; _tuple$12 = $f._tuple$12; _tuple$13 = $f._tuple$13; _tuple$14 = $f._tuple$14; _tuple$15 = $f._tuple$15; _tuple$16 = $f._tuple$16; _tuple$17 = $f._tuple$17; _tuple$18 = $f._tuple$18; _tuple$19 = $f._tuple$19; _tuple$2 = $f._tuple$2; _tuple$20 = $f._tuple$20; _tuple$21 = $f._tuple$21; _tuple$22 = $f._tuple$22; _tuple$23 = $f._tuple$23; _tuple$24 = $f._tuple$24; _tuple$25 = $f._tuple$25; _tuple$26 = $f._tuple$26; _tuple$27 = $f._tuple$27; _tuple$28 = $f._tuple$28; _tuple$29 = $f._tuple$29; _tuple$3 = $f._tuple$3; _tuple$30 = $f._tuple$30; _tuple$4 = $f._tuple$4; _tuple$5 = $f._tuple$5; _tuple$6 = $f._tuple$6; _tuple$7 = $f._tuple$7; _tuple$8 = $f._tuple$8; _tuple$9 = $f._tuple$9; _v = $f._v; _v$1 = $f._v$1; bs = $f.bs; bytes = $f.bytes; bytes$1 = $f.bytes$1; compoundType = $f.compoundType; err = $f.err; err1 = $f.err1; err1$1 = $f.err1$1; err1$2 = $f.err1$2; err1$3 = $f.err1$3; err1$4 = $f.err1$4; err1$5 = $f.err1$5; err1$6 = $f.err1$6; err1$7 = $f.err1$7; err1$8 = $f.err1$8; expectedClass = $f.expectedClass; expectedClass$1 = $f.expectedClass$1; expectedTag = $f.expectedTag; field = $f.field; fieldType = $f.fieldType; i = $f.i; i$1 = $f.i$1; ifaceType = $f.ifaceType; initOffset = $f.initOffset; innerBytes = $f.innerBytes; innerBytes$1 = $f.innerBytes$1; innerOffset = $f.innerOffset; matchAny = $f.matchAny; matchAnyClassAndTag = $f.matchAnyClassAndTag; newSlice = $f.newSlice; newSlice$1 = $f.newSlice$1; offset = $f.offset; ok = $f.ok; ok$1 = $f.ok$1; ok1 = $f.ok1; params = $f.params; parsedBool = $f.parsedBool; parsedInt = $f.parsedInt; parsedInt$1 = $f.parsedInt$1; parsedInt$2 = $f.parsedInt$2; parsedInt$3 = $f.parsedInt$3; result = $f.result; result$1 = $f.result$1; sliceType$3 = $f.sliceType$3; structType = $f.structType; t = $f.t; t$1 = $f.t$1; time$1 = $f.time$1; universalTag = $f.universalTag; v = $f.v; v$1 = $f.v$1; val = $f.val; x$10 = $f.x$10; x$11 = $f.x$11; x$12 = $f.x$12; x$13 = $f.x$13; x$3 = $f.x$3; x$4 = $f.x$4; x$5 = $f.x$5; x$6 = $f.x$6; x$7 = $f.x$7; x$8 = $f.x$8; x$9 = $f.x$9; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 62012  		offset = 0;
 62013  		err = $ifaceNil;
 62014  		offset = initOffset;
 62015  		_r = $clone(v, reflect.Value).Type(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 62016  		fieldType = _r;
 62017  		if (offset === bytes.$length) {
 62018  			if (!setDefaultValue($clone(v, reflect.Value), $clone(params, fieldParameters))) {
 62019  				err = (x$3 = new SyntaxError.ptr("sequence truncated"), new x$3.constructor.elem(x$3));
 62020  			}
 62021  			$s = -1; return [offset, err];
 62022  		}
 62023  		ifaceType = fieldType;
 62024  		_r$1 = ifaceType.Kind(); /* */ $s = 5; case 5: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 62025  		if (!(_r$1 === 20)) { _v = false; $s = 4; continue s; }
 62026  		_r$2 = ifaceType.NumMethod(); /* */ $s = 6; case 6: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 62027  		_v = _r$2 === 0; case 4:
 62028  		/* */ if (_v) { $s = 2; continue; }
 62029  		/* */ $s = 3; continue;
 62030  		/* if (_v) { */ case 2:
 62031  			t = new tagAndLength.ptr(0, 0, 0, false);
 62032  			_tuple = parseTagAndLength(bytes, offset);
 62033  			tagAndLength.copy(t, _tuple[0]);
 62034  			offset = _tuple[1];
 62035  			err = _tuple[2];
 62036  			if (!($interfaceIsEqual(err, $ifaceNil))) {
 62037  				$s = -1; return [offset, err];
 62038  			}
 62039  			if (invalidLength(offset, t.length, bytes.$length)) {
 62040  				err = (x$4 = new SyntaxError.ptr("data truncated"), new x$4.constructor.elem(x$4));
 62041  				$s = -1; return [offset, err];
 62042  			}
 62043  			result = $ifaceNil;
 62044  			/* */ if (!t.isCompound && (t.class$0 === 0)) { $s = 7; continue; }
 62045  			/* */ $s = 8; continue;
 62046  			/* if (!t.isCompound && (t.class$0 === 0)) { */ case 7:
 62047  				innerBytes = $subslice(bytes, offset, (offset + t.length >> 0));
 62048  					_1 = t.tag;
 62049  					/* */ if (_1 === (19)) { $s = 10; continue; }
 62050  					/* */ if (_1 === (18)) { $s = 11; continue; }
 62051  					/* */ if (_1 === (22)) { $s = 12; continue; }
 62052  					/* */ if (_1 === (20)) { $s = 13; continue; }
 62053  					/* */ if (_1 === (12)) { $s = 14; continue; }
 62054  					/* */ if (_1 === (2)) { $s = 15; continue; }
 62055  					/* */ if (_1 === (3)) { $s = 16; continue; }
 62056  					/* */ if (_1 === (6)) { $s = 17; continue; }
 62057  					/* */ if (_1 === (23)) { $s = 18; continue; }
 62058  					/* */ if (_1 === (24)) { $s = 19; continue; }
 62059  					/* */ if (_1 === (4)) { $s = 20; continue; }
 62060  					/* */ $s = 21; continue;
 62061  					/* if (_1 === (19)) { */ case 10:
 62062  						_tuple$1 = parsePrintableString(innerBytes);
 62063  						result = new $String(_tuple$1[0]);
 62064  						err = _tuple$1[1];
 62065  						$s = 21; continue;
 62066  					/* } else if (_1 === (18)) { */ case 11:
 62067  						_tuple$2 = parseNumericString(innerBytes);
 62068  						result = new $String(_tuple$2[0]);
 62069  						err = _tuple$2[1];
 62070  						$s = 21; continue;
 62071  					/* } else if (_1 === (22)) { */ case 12:
 62072  						_tuple$3 = parseIA5String(innerBytes);
 62073  						result = new $String(_tuple$3[0]);
 62074  						err = _tuple$3[1];
 62075  						$s = 21; continue;
 62076  					/* } else if (_1 === (20)) { */ case 13:
 62077  						_tuple$4 = parseT61String(innerBytes);
 62078  						result = new $String(_tuple$4[0]);
 62079  						err = _tuple$4[1];
 62080  						$s = 21; continue;
 62081  					/* } else if (_1 === (12)) { */ case 14:
 62082  						_tuple$5 = parseUTF8String(innerBytes);
 62083  						result = new $String(_tuple$5[0]);
 62084  						err = _tuple$5[1];
 62085  						$s = 21; continue;
 62086  					/* } else if (_1 === (2)) { */ case 15:
 62087  						_tuple$6 = parseInt64(innerBytes);
 62088  						result = _tuple$6[0];
 62089  						err = _tuple$6[1];
 62090  						$s = 21; continue;
 62091  					/* } else if (_1 === (3)) { */ case 16:
 62092  						_tuple$7 = parseBitString(innerBytes);
 62093  						result = new _tuple$7[0].constructor.elem(_tuple$7[0]);
 62094  						err = _tuple$7[1];
 62095  						$s = 21; continue;
 62096  					/* } else if (_1 === (6)) { */ case 17:
 62097  						_tuple$8 = parseObjectIdentifier(innerBytes);
 62098  						result = _tuple$8[0];
 62099  						err = _tuple$8[1];
 62100  						$s = 21; continue;
 62101  					/* } else if (_1 === (23)) { */ case 18:
 62102  						_r$3 = parseUTCTime(innerBytes); /* */ $s = 22; case 22: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 62103  						_tuple$9 = _r$3;
 62104  						result = new _tuple$9[0].constructor.elem(_tuple$9[0]);
 62105  						err = _tuple$9[1];
 62106  						$s = 21; continue;
 62107  					/* } else if (_1 === (24)) { */ case 19:
 62108  						_r$4 = parseGeneralizedTime(innerBytes); /* */ $s = 23; case 23: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 62109  						_tuple$10 = _r$4;
 62110  						result = new _tuple$10[0].constructor.elem(_tuple$10[0]);
 62111  						err = _tuple$10[1];
 62112  						$s = 21; continue;
 62113  					/* } else if (_1 === (4)) { */ case 20:
 62114  						result = innerBytes;
 62115  					/* } */ case 21:
 62116  				case 9:
 62117  			/* } */ case 8:
 62118  			offset = offset + (t.length) >> 0;
 62119  			if (!($interfaceIsEqual(err, $ifaceNil))) {
 62120  				$s = -1; return [offset, err];
 62121  			}
 62122  			/* */ if (!($interfaceIsEqual(result, $ifaceNil))) { $s = 24; continue; }
 62123  			/* */ $s = 25; continue;
 62124  			/* if (!($interfaceIsEqual(result, $ifaceNil))) { */ case 24:
 62125  				_r$5 = reflect.ValueOf(result); /* */ $s = 26; case 26: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
 62126  				$r = $clone(v, reflect.Value).Set($clone(_r$5, reflect.Value)); /* */ $s = 27; case 27: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 62127  			/* } */ case 25:
 62128  			$s = -1; return [offset, err];
 62129  		/* } */ case 3:
 62130  		_tuple$11 = parseTagAndLength(bytes, offset);
 62131  		t$1 = $clone(_tuple$11[0], tagAndLength);
 62132  		offset = _tuple$11[1];
 62133  		err = _tuple$11[2];
 62134  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 62135  			$s = -1; return [offset, err];
 62136  		}
 62137  		if (params.explicit) {
 62138  			expectedClass = 2;
 62139  			if (params.application) {
 62140  				expectedClass = 1;
 62141  			}
 62142  			if (offset === bytes.$length) {
 62143  				err = (x$5 = new StructuralError.ptr("explicit tag has no child"), new x$5.constructor.elem(x$5));
 62144  				$s = -1; return [offset, err];
 62145  			}
 62146  			if ((t$1.class$0 === expectedClass) && (t$1.tag === params.tag.$get()) && ((t$1.length === 0) || t$1.isCompound)) {
 62147  				if ($interfaceIsEqual(fieldType, rawValueType)) {
 62148  				} else if (t$1.length > 0) {
 62149  					_tuple$12 = parseTagAndLength(bytes, offset);
 62150  					tagAndLength.copy(t$1, _tuple$12[0]);
 62151  					offset = _tuple$12[1];
 62152  					err = _tuple$12[2];
 62153  					if (!($interfaceIsEqual(err, $ifaceNil))) {
 62154  						$s = -1; return [offset, err];
 62155  					}
 62156  				} else {
 62157  					if (!($interfaceIsEqual(fieldType, flagType))) {
 62158  						err = (x$6 = new StructuralError.ptr("zero length explicit tag was not an asn1.Flag"), new x$6.constructor.elem(x$6));
 62159  						$s = -1; return [offset, err];
 62160  					}
 62161  					$clone(v, reflect.Value).SetBool(true);
 62162  					$s = -1; return [offset, err];
 62163  				}
 62164  			} else {
 62165  				ok = setDefaultValue($clone(v, reflect.Value), $clone(params, fieldParameters));
 62166  				if (ok) {
 62167  					offset = initOffset;
 62168  				} else {
 62169  					err = (x$7 = new StructuralError.ptr("explicitly tagged member didn't match"), new x$7.constructor.elem(x$7));
 62170  				}
 62171  				$s = -1; return [offset, err];
 62172  			}
 62173  		}
 62174  		_r$6 = getUniversalType(fieldType); /* */ $s = 28; case 28: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
 62175  		_tuple$13 = _r$6;
 62176  		matchAny = _tuple$13[0];
 62177  		universalTag = _tuple$13[1];
 62178  		compoundType = _tuple$13[2];
 62179  		ok1 = _tuple$13[3];
 62180  		/* */ if (!ok1) { $s = 29; continue; }
 62181  		/* */ $s = 30; continue;
 62182  		/* if (!ok1) { */ case 29:
 62183  			_r$7 = fmt.Sprintf("unknown Go type: %v", new sliceType$2([fieldType])); /* */ $s = 31; case 31: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
 62184  			err = (x$8 = new StructuralError.ptr(_r$7), new x$8.constructor.elem(x$8));
 62185  			$s = -1; return [offset, err];
 62186  		/* } */ case 30:
 62187  		if (universalTag === 19) {
 62188  			if (t$1.class$0 === 0) {
 62189  				_2 = t$1.tag;
 62190  				if ((_2 === (22)) || (_2 === (27)) || (_2 === (20)) || (_2 === (12)) || (_2 === (18))) {
 62191  					universalTag = t$1.tag;
 62192  				}
 62193  			} else if (!((params.stringType === 0))) {
 62194  				universalTag = params.stringType;
 62195  			}
 62196  		}
 62197  		if ((universalTag === 23) && (t$1.tag === 24) && (t$1.class$0 === 0)) {
 62198  			universalTag = 24;
 62199  		}
 62200  		if (params.set) {
 62201  			universalTag = 17;
 62202  		}
 62203  		matchAnyClassAndTag = matchAny;
 62204  		expectedClass$1 = 0;
 62205  		expectedTag = universalTag;
 62206  		if (!params.explicit && !(params.tag === ptrType$4.nil)) {
 62207  			expectedClass$1 = 2;
 62208  			expectedTag = params.tag.$get();
 62209  			matchAnyClassAndTag = false;
 62210  		}
 62211  		if (!params.explicit && params.application && !(params.tag === ptrType$4.nil)) {
 62212  			expectedClass$1 = 1;
 62213  			expectedTag = params.tag.$get();
 62214  			matchAnyClassAndTag = false;
 62215  		}
 62216  		/* */ if (!matchAnyClassAndTag && (!((t$1.class$0 === expectedClass$1)) || !((t$1.tag === expectedTag))) || (!matchAny && !(t$1.isCompound === compoundType))) { $s = 32; continue; }
 62217  		/* */ $s = 33; continue;
 62218  		/* if (!matchAnyClassAndTag && (!((t$1.class$0 === expectedClass$1)) || !((t$1.tag === expectedTag))) || (!matchAny && !(t$1.isCompound === compoundType))) { */ case 32:
 62219  			ok$1 = setDefaultValue($clone(v, reflect.Value), $clone(params, fieldParameters));
 62220  			/* */ if (ok$1) { $s = 34; continue; }
 62221  			/* */ $s = 35; continue;
 62222  			/* if (ok$1) { */ case 34:
 62223  				offset = initOffset;
 62224  				$s = 36; continue;
 62225  			/* } else { */ case 35:
 62226  				_arg = new $Int(expectedTag);
 62227  				_arg$1 = new t$1.constructor.elem(t$1);
 62228  				_arg$2 = new params.constructor.elem(params);
 62229  				_r$8 = fieldType.Name(); /* */ $s = 37; case 37: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
 62230  				_arg$3 = new $String(_r$8);
 62231  				_arg$4 = new $Int(offset);
 62232  				_r$9 = fmt.Sprintf("tags don't match (%d vs %+v) %+v %s @%d", new sliceType$2([_arg, _arg$1, _arg$2, _arg$3, _arg$4])); /* */ $s = 38; case 38: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 62233  				err = (x$9 = new StructuralError.ptr(_r$9), new x$9.constructor.elem(x$9));
 62234  			/* } */ case 36:
 62235  			$s = -1; return [offset, err];
 62236  		/* } */ case 33:
 62237  		if (invalidLength(offset, t$1.length, bytes.$length)) {
 62238  			err = (x$10 = new SyntaxError.ptr("data truncated"), new x$10.constructor.elem(x$10));
 62239  			$s = -1; return [offset, err];
 62240  		}
 62241  		innerBytes$1 = $subslice(bytes, offset, (offset + t$1.length >> 0));
 62242  		offset = offset + (t$1.length) >> 0;
 62243  			_3 = fieldType;
 62244  			/* */ if ($interfaceIsEqual(_3, (rawValueType))) { $s = 40; continue; }
 62245  			/* */ if ($interfaceIsEqual(_3, (objectIdentifierType))) { $s = 41; continue; }
 62246  			/* */ if ($interfaceIsEqual(_3, (bitStringType))) { $s = 42; continue; }
 62247  			/* */ if ($interfaceIsEqual(_3, (timeType))) { $s = 43; continue; }
 62248  			/* */ if ($interfaceIsEqual(_3, (enumeratedType))) { $s = 44; continue; }
 62249  			/* */ if ($interfaceIsEqual(_3, (flagType))) { $s = 45; continue; }
 62250  			/* */ if ($interfaceIsEqual(_3, (bigIntType))) { $s = 46; continue; }
 62251  			/* */ $s = 47; continue;
 62252  			/* if ($interfaceIsEqual(_3, (rawValueType))) { */ case 40:
 62253  				result$1 = new RawValue.ptr(t$1.class$0, t$1.tag, t$1.isCompound, innerBytes$1, $subslice(bytes, initOffset, offset));
 62254  				_r$10 = reflect.ValueOf(new result$1.constructor.elem(result$1)); /* */ $s = 48; case 48: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
 62255  				$r = $clone(v, reflect.Value).Set($clone(_r$10, reflect.Value)); /* */ $s = 49; case 49: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 62256  				$s = -1; return [offset, err];
 62257  			/* } else if ($interfaceIsEqual(_3, (objectIdentifierType))) { */ case 41:
 62258  				_tuple$14 = parseObjectIdentifier(innerBytes$1);
 62259  				newSlice = _tuple$14[0];
 62260  				err1 = _tuple$14[1];
 62261  				_r$11 = $clone(v, reflect.Value).Type(); /* */ $s = 50; case 50: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; }
 62262  				_r$12 = reflect.MakeSlice(_r$11, newSlice.$length, newSlice.$length); /* */ $s = 51; case 51: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; }
 62263  				$r = $clone(v, reflect.Value).Set($clone(_r$12, reflect.Value)); /* */ $s = 52; case 52: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 62264  				/* */ if ($interfaceIsEqual(err1, $ifaceNil)) { $s = 53; continue; }
 62265  				/* */ $s = 54; continue;
 62266  				/* if ($interfaceIsEqual(err1, $ifaceNil)) { */ case 53:
 62267  					_arg$5 = $clone(v, reflect.Value);
 62268  					_r$13 = reflect.ValueOf(newSlice); /* */ $s = 55; case 55: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; }
 62269  					_arg$6 = $clone(_r$13, reflect.Value);
 62270  					_r$14 = reflect.Copy(_arg$5, _arg$6); /* */ $s = 56; case 56: if($c) { $c = false; _r$14 = _r$14.$blk(); } if (_r$14 && _r$14.$blk !== undefined) { break s; }
 62271  					_r$14;
 62272  				/* } */ case 54:
 62273  				err = err1;
 62274  				$s = -1; return [offset, err];
 62275  			/* } else if ($interfaceIsEqual(_3, (bitStringType))) { */ case 42:
 62276  				_tuple$15 = parseBitString(innerBytes$1);
 62277  				bs = $clone(_tuple$15[0], BitString);
 62278  				err1$1 = _tuple$15[1];
 62279  				/* */ if ($interfaceIsEqual(err1$1, $ifaceNil)) { $s = 57; continue; }
 62280  				/* */ $s = 58; continue;
 62281  				/* if ($interfaceIsEqual(err1$1, $ifaceNil)) { */ case 57:
 62282  					_r$15 = reflect.ValueOf(new bs.constructor.elem(bs)); /* */ $s = 59; case 59: if($c) { $c = false; _r$15 = _r$15.$blk(); } if (_r$15 && _r$15.$blk !== undefined) { break s; }
 62283  					$r = $clone(v, reflect.Value).Set($clone(_r$15, reflect.Value)); /* */ $s = 60; case 60: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 62284  				/* } */ case 58:
 62285  				err = err1$1;
 62286  				$s = -1; return [offset, err];
 62287  			/* } else if ($interfaceIsEqual(_3, (timeType))) { */ case 43:
 62288  				time$1 = new time.Time.ptr(new $Uint64(0, 0), new $Int64(0, 0), ptrType.nil);
 62289  				err1$2 = $ifaceNil;
 62290  				/* */ if (universalTag === 23) { $s = 61; continue; }
 62291  				/* */ $s = 62; continue;
 62292  				/* if (universalTag === 23) { */ case 61:
 62293  					_r$16 = parseUTCTime(innerBytes$1); /* */ $s = 64; case 64: if($c) { $c = false; _r$16 = _r$16.$blk(); } if (_r$16 && _r$16.$blk !== undefined) { break s; }
 62294  					_tuple$16 = _r$16;
 62295  					time.Time.copy(time$1, _tuple$16[0]);
 62296  					err1$2 = _tuple$16[1];
 62297  					$s = 63; continue;
 62298  				/* } else { */ case 62:
 62299  					_r$17 = parseGeneralizedTime(innerBytes$1); /* */ $s = 65; case 65: if($c) { $c = false; _r$17 = _r$17.$blk(); } if (_r$17 && _r$17.$blk !== undefined) { break s; }
 62300  					_tuple$17 = _r$17;
 62301  					time.Time.copy(time$1, _tuple$17[0]);
 62302  					err1$2 = _tuple$17[1];
 62303  				/* } */ case 63:
 62304  				/* */ if ($interfaceIsEqual(err1$2, $ifaceNil)) { $s = 66; continue; }
 62305  				/* */ $s = 67; continue;
 62306  				/* if ($interfaceIsEqual(err1$2, $ifaceNil)) { */ case 66:
 62307  					_r$18 = reflect.ValueOf(new time$1.constructor.elem(time$1)); /* */ $s = 68; case 68: if($c) { $c = false; _r$18 = _r$18.$blk(); } if (_r$18 && _r$18.$blk !== undefined) { break s; }
 62308  					$r = $clone(v, reflect.Value).Set($clone(_r$18, reflect.Value)); /* */ $s = 69; case 69: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 62309  				/* } */ case 67:
 62310  				err = err1$2;
 62311  				$s = -1; return [offset, err];
 62312  			/* } else if ($interfaceIsEqual(_3, (enumeratedType))) { */ case 44:
 62313  				_tuple$18 = parseInt32(innerBytes$1);
 62314  				parsedInt = _tuple$18[0];
 62315  				err1$3 = _tuple$18[1];
 62316  				if ($interfaceIsEqual(err1$3, $ifaceNil)) {
 62317  					$clone(v, reflect.Value).SetInt((new $Int64(0, parsedInt)));
 62318  				}
 62319  				err = err1$3;
 62320  				$s = -1; return [offset, err];
 62321  			/* } else if ($interfaceIsEqual(_3, (flagType))) { */ case 45:
 62322  				$clone(v, reflect.Value).SetBool(true);
 62323  				$s = -1; return [offset, err];
 62324  			/* } else if ($interfaceIsEqual(_3, (bigIntType))) { */ case 46:
 62325  				_tuple$19 = parseBigInt(innerBytes$1);
 62326  				parsedInt$1 = _tuple$19[0];
 62327  				err1$4 = _tuple$19[1];
 62328  				/* */ if ($interfaceIsEqual(err1$4, $ifaceNil)) { $s = 70; continue; }
 62329  				/* */ $s = 71; continue;
 62330  				/* if ($interfaceIsEqual(err1$4, $ifaceNil)) { */ case 70:
 62331  					_r$19 = reflect.ValueOf(parsedInt$1); /* */ $s = 72; case 72: if($c) { $c = false; _r$19 = _r$19.$blk(); } if (_r$19 && _r$19.$blk !== undefined) { break s; }
 62332  					$r = $clone(v, reflect.Value).Set($clone(_r$19, reflect.Value)); /* */ $s = 73; case 73: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 62333  				/* } */ case 71:
 62334  				err = err1$4;
 62335  				$s = -1; return [offset, err];
 62336  			/* } */ case 47:
 62337  		case 39:
 62338  			val = v;
 62339  			_4 = $clone(val, reflect.Value).Kind();
 62340  			/* */ if (_4 === (1)) { $s = 75; continue; }
 62341  			/* */ if ((_4 === (2)) || (_4 === (5)) || (_4 === (6))) { $s = 76; continue; }
 62342  			/* */ if (_4 === (25)) { $s = 77; continue; }
 62343  			/* */ if (_4 === (23)) { $s = 78; continue; }
 62344  			/* */ if (_4 === (24)) { $s = 79; continue; }
 62345  			/* */ $s = 80; continue;
 62346  			/* if (_4 === (1)) { */ case 75:
 62347  				_tuple$20 = parseBool(innerBytes$1);
 62348  				parsedBool = _tuple$20[0];
 62349  				err1$5 = _tuple$20[1];
 62350  				if ($interfaceIsEqual(err1$5, $ifaceNil)) {
 62351  					$clone(val, reflect.Value).SetBool(parsedBool);
 62352  				}
 62353  				err = err1$5;
 62354  				$s = -1; return [offset, err];
 62355  			/* } else if ((_4 === (2)) || (_4 === (5)) || (_4 === (6))) { */ case 76:
 62356  				_r$20 = $clone(val, reflect.Value).Type(); /* */ $s = 84; case 84: if($c) { $c = false; _r$20 = _r$20.$blk(); } if (_r$20 && _r$20.$blk !== undefined) { break s; }
 62357  				_r$21 = _r$20.Size(); /* */ $s = 85; case 85: if($c) { $c = false; _r$21 = _r$21.$blk(); } if (_r$21 && _r$21.$blk !== undefined) { break s; }
 62358  				/* */ if (_r$21 === 4) { $s = 81; continue; }
 62359  				/* */ $s = 82; continue;
 62360  				/* if (_r$21 === 4) { */ case 81:
 62361  					_tuple$21 = parseInt32(innerBytes$1);
 62362  					parsedInt$2 = _tuple$21[0];
 62363  					err1$6 = _tuple$21[1];
 62364  					if ($interfaceIsEqual(err1$6, $ifaceNil)) {
 62365  						$clone(val, reflect.Value).SetInt((new $Int64(0, parsedInt$2)));
 62366  					}
 62367  					err = err1$6;
 62368  					$s = 83; continue;
 62369  				/* } else { */ case 82:
 62370  					_tuple$22 = parseInt64(innerBytes$1);
 62371  					parsedInt$3 = _tuple$22[0];
 62372  					err1$7 = _tuple$22[1];
 62373  					if ($interfaceIsEqual(err1$7, $ifaceNil)) {
 62374  						$clone(val, reflect.Value).SetInt(parsedInt$3);
 62375  					}
 62376  					err = err1$7;
 62377  				/* } */ case 83:
 62378  				$s = -1; return [offset, err];
 62379  			/* } else if (_4 === (25)) { */ case 77:
 62380  				structType = fieldType;
 62381  				i = 0;
 62382  				/* while (true) { */ case 86:
 62383  					_r$22 = structType.NumField(); /* */ $s = 88; case 88: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; }
 62384  					/* if (!(i < _r$22)) { break; } */ if(!(i < _r$22)) { $s = 87; continue; }
 62385  					_r$23 = structType.Field(i); /* */ $s = 91; case 91: if($c) { $c = false; _r$23 = _r$23.$blk(); } if (_r$23 && _r$23.$blk !== undefined) { break s; }
 62386  					/* */ if (!(_r$23.PkgPath === "")) { $s = 89; continue; }
 62387  					/* */ $s = 90; continue;
 62388  					/* if (!(_r$23.PkgPath === "")) { */ case 89:
 62389  						err = (x$11 = new StructuralError.ptr("struct contains unexported fields"), new x$11.constructor.elem(x$11));
 62390  						$s = -1; return [offset, err];
 62391  					/* } */ case 90:
 62392  					i = i + (1) >> 0;
 62393  				/* } */ $s = 86; continue; case 87:
 62394  				_r$24 = structType.NumField(); /* */ $s = 95; case 95: if($c) { $c = false; _r$24 = _r$24.$blk(); } if (_r$24 && _r$24.$blk !== undefined) { break s; }
 62395  				if (!(_r$24 > 0)) { _v$1 = false; $s = 94; continue s; }
 62396  				_r$25 = structType.Field(0); /* */ $s = 96; case 96: if($c) { $c = false; _r$25 = _r$25.$blk(); } if (_r$25 && _r$25.$blk !== undefined) { break s; }
 62397  				_v$1 = $interfaceIsEqual(_r$25.Type, rawContentsType); case 94:
 62398  				/* */ if (_v$1) { $s = 92; continue; }
 62399  				/* */ $s = 93; continue;
 62400  				/* if (_v$1) { */ case 92:
 62401  					bytes$1 = $subslice(bytes, initOffset, offset);
 62402  					_r$26 = $clone(val, reflect.Value).Field(0); /* */ $s = 97; case 97: if($c) { $c = false; _r$26 = _r$26.$blk(); } if (_r$26 && _r$26.$blk !== undefined) { break s; }
 62403  					_r$27 = reflect.ValueOf(($subslice(new RawContent(bytes$1.$array), bytes$1.$offset, bytes$1.$offset + bytes$1.$length))); /* */ $s = 98; case 98: if($c) { $c = false; _r$27 = _r$27.$blk(); } if (_r$27 && _r$27.$blk !== undefined) { break s; }
 62404  					$r = $clone(_r$26, reflect.Value).Set($clone(_r$27, reflect.Value)); /* */ $s = 99; case 99: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 62405  				/* } */ case 93:
 62406  				innerOffset = 0;
 62407  				i$1 = 0;
 62408  				/* while (true) { */ case 100:
 62409  					_r$28 = structType.NumField(); /* */ $s = 102; case 102: if($c) { $c = false; _r$28 = _r$28.$blk(); } if (_r$28 && _r$28.$blk !== undefined) { break s; }
 62410  					/* if (!(i$1 < _r$28)) { break; } */ if(!(i$1 < _r$28)) { $s = 101; continue; }
 62411  					_r$29 = structType.Field(i$1); /* */ $s = 103; case 103: if($c) { $c = false; _r$29 = _r$29.$blk(); } if (_r$29 && _r$29.$blk !== undefined) { break s; }
 62412  					field = $clone(_r$29, reflect.StructField);
 62413  					/* */ if ((i$1 === 0) && $interfaceIsEqual(field.Type, rawContentsType)) { $s = 104; continue; }
 62414  					/* */ $s = 105; continue;
 62415  					/* if ((i$1 === 0) && $interfaceIsEqual(field.Type, rawContentsType)) { */ case 104:
 62416  						i$1 = i$1 + (1) >> 0;
 62417  						/* continue; */ $s = 100; continue;
 62418  					/* } */ case 105:
 62419  					_r$30 = $clone(val, reflect.Value).Field(i$1); /* */ $s = 106; case 106: if($c) { $c = false; _r$30 = _r$30.$blk(); } if (_r$30 && _r$30.$blk !== undefined) { break s; }
 62420  					_r$31 = parseField($clone(_r$30, reflect.Value), innerBytes$1, innerOffset, $clone(parseFieldParameters(new reflect.StructTag(field.Tag).Get("asn1")), fieldParameters)); /* */ $s = 107; case 107: if($c) { $c = false; _r$31 = _r$31.$blk(); } if (_r$31 && _r$31.$blk !== undefined) { break s; }
 62421  					_tuple$23 = _r$31;
 62422  					innerOffset = _tuple$23[0];
 62423  					err = _tuple$23[1];
 62424  					if (!($interfaceIsEqual(err, $ifaceNil))) {
 62425  						$s = -1; return [offset, err];
 62426  					}
 62427  					i$1 = i$1 + (1) >> 0;
 62428  				/* } */ $s = 100; continue; case 101:
 62429  				$s = -1; return [offset, err];
 62430  			/* } else if (_4 === (23)) { */ case 78:
 62431  				sliceType$3 = fieldType;
 62432  				_r$32 = sliceType$3.Elem(); /* */ $s = 110; case 110: if($c) { $c = false; _r$32 = _r$32.$blk(); } if (_r$32 && _r$32.$blk !== undefined) { break s; }
 62433  				_r$33 = _r$32.Kind(); /* */ $s = 111; case 111: if($c) { $c = false; _r$33 = _r$33.$blk(); } if (_r$33 && _r$33.$blk !== undefined) { break s; }
 62434  				/* */ if (_r$33 === 8) { $s = 108; continue; }
 62435  				/* */ $s = 109; continue;
 62436  				/* if (_r$33 === 8) { */ case 108:
 62437  					_r$34 = reflect.MakeSlice(sliceType$3, innerBytes$1.$length, innerBytes$1.$length); /* */ $s = 112; case 112: if($c) { $c = false; _r$34 = _r$34.$blk(); } if (_r$34 && _r$34.$blk !== undefined) { break s; }
 62438  					$r = $clone(val, reflect.Value).Set($clone(_r$34, reflect.Value)); /* */ $s = 113; case 113: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 62439  					_arg$7 = $clone(val, reflect.Value);
 62440  					_r$35 = reflect.ValueOf(innerBytes$1); /* */ $s = 114; case 114: if($c) { $c = false; _r$35 = _r$35.$blk(); } if (_r$35 && _r$35.$blk !== undefined) { break s; }
 62441  					_arg$8 = $clone(_r$35, reflect.Value);
 62442  					_r$36 = reflect.Copy(_arg$7, _arg$8); /* */ $s = 115; case 115: if($c) { $c = false; _r$36 = _r$36.$blk(); } if (_r$36 && _r$36.$blk !== undefined) { break s; }
 62443  					_r$36;
 62444  					$s = -1; return [offset, err];
 62445  				/* } */ case 109:
 62446  				_arg$9 = innerBytes$1;
 62447  				_arg$10 = sliceType$3;
 62448  				_r$37 = sliceType$3.Elem(); /* */ $s = 116; case 116: if($c) { $c = false; _r$37 = _r$37.$blk(); } if (_r$37 && _r$37.$blk !== undefined) { break s; }
 62449  				_arg$11 = _r$37;
 62450  				_r$38 = parseSequenceOf(_arg$9, _arg$10, _arg$11); /* */ $s = 117; case 117: if($c) { $c = false; _r$38 = _r$38.$blk(); } if (_r$38 && _r$38.$blk !== undefined) { break s; }
 62451  				_tuple$24 = _r$38;
 62452  				newSlice$1 = _tuple$24[0];
 62453  				err1$8 = _tuple$24[1];
 62454  				/* */ if ($interfaceIsEqual(err1$8, $ifaceNil)) { $s = 118; continue; }
 62455  				/* */ $s = 119; continue;
 62456  				/* if ($interfaceIsEqual(err1$8, $ifaceNil)) { */ case 118:
 62457  					$r = $clone(val, reflect.Value).Set($clone(newSlice$1, reflect.Value)); /* */ $s = 120; case 120: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 62458  				/* } */ case 119:
 62459  				err = err1$8;
 62460  				$s = -1; return [offset, err];
 62461  			/* } else if (_4 === (24)) { */ case 79:
 62462  				v$1 = "";
 62463  					_5 = universalTag;
 62464  					/* */ if (_5 === (19)) { $s = 122; continue; }
 62465  					/* */ if (_5 === (18)) { $s = 123; continue; }
 62466  					/* */ if (_5 === (22)) { $s = 124; continue; }
 62467  					/* */ if (_5 === (20)) { $s = 125; continue; }
 62468  					/* */ if (_5 === (12)) { $s = 126; continue; }
 62469  					/* */ if (_5 === (27)) { $s = 127; continue; }
 62470  					/* */ $s = 128; continue;
 62471  					/* if (_5 === (19)) { */ case 122:
 62472  						_tuple$25 = parsePrintableString(innerBytes$1);
 62473  						v$1 = _tuple$25[0];
 62474  						err = _tuple$25[1];
 62475  						$s = 129; continue;
 62476  					/* } else if (_5 === (18)) { */ case 123:
 62477  						_tuple$26 = parseNumericString(innerBytes$1);
 62478  						v$1 = _tuple$26[0];
 62479  						err = _tuple$26[1];
 62480  						$s = 129; continue;
 62481  					/* } else if (_5 === (22)) { */ case 124:
 62482  						_tuple$27 = parseIA5String(innerBytes$1);
 62483  						v$1 = _tuple$27[0];
 62484  						err = _tuple$27[1];
 62485  						$s = 129; continue;
 62486  					/* } else if (_5 === (20)) { */ case 125:
 62487  						_tuple$28 = parseT61String(innerBytes$1);
 62488  						v$1 = _tuple$28[0];
 62489  						err = _tuple$28[1];
 62490  						$s = 129; continue;
 62491  					/* } else if (_5 === (12)) { */ case 126:
 62492  						_tuple$29 = parseUTF8String(innerBytes$1);
 62493  						v$1 = _tuple$29[0];
 62494  						err = _tuple$29[1];
 62495  						$s = 129; continue;
 62496  					/* } else if (_5 === (27)) { */ case 127:
 62497  						_tuple$30 = parseT61String(innerBytes$1);
 62498  						v$1 = _tuple$30[0];
 62499  						err = _tuple$30[1];
 62500  						$s = 129; continue;
 62501  					/* } else { */ case 128:
 62502  						_r$39 = fmt.Sprintf("internal error: unknown string type %d", new sliceType$2([new $Int(universalTag)])); /* */ $s = 130; case 130: if($c) { $c = false; _r$39 = _r$39.$blk(); } if (_r$39 && _r$39.$blk !== undefined) { break s; }
 62503  						err = (x$12 = new SyntaxError.ptr(_r$39), new x$12.constructor.elem(x$12));
 62504  					/* } */ case 129:
 62505  				case 121:
 62506  				if ($interfaceIsEqual(err, $ifaceNil)) {
 62507  					$clone(val, reflect.Value).SetString(v$1);
 62508  				}
 62509  				$s = -1; return [offset, err];
 62510  			/* } */ case 80:
 62511  		case 74:
 62512  		_r$40 = $clone(v, reflect.Value).Type(); /* */ $s = 131; case 131: if($c) { $c = false; _r$40 = _r$40.$blk(); } if (_r$40 && _r$40.$blk !== undefined) { break s; }
 62513  		_r$41 = _r$40.String(); /* */ $s = 132; case 132: if($c) { $c = false; _r$41 = _r$41.$blk(); } if (_r$41 && _r$41.$blk !== undefined) { break s; }
 62514  		err = (x$13 = new StructuralError.ptr("unsupported: " + _r$41), new x$13.constructor.elem(x$13));
 62515  		$s = -1; return [offset, err];
 62516  		/* */ } return; } if ($f === undefined) { $f = { $blk: parseField }; } $f._1 = _1; $f._2 = _2; $f._3 = _3; $f._4 = _4; $f._5 = _5; $f._arg = _arg; $f._arg$1 = _arg$1; $f._arg$10 = _arg$10; $f._arg$11 = _arg$11; $f._arg$2 = _arg$2; $f._arg$3 = _arg$3; $f._arg$4 = _arg$4; $f._arg$5 = _arg$5; $f._arg$6 = _arg$6; $f._arg$7 = _arg$7; $f._arg$8 = _arg$8; $f._arg$9 = _arg$9; $f._r = _r; $f._r$1 = _r$1; $f._r$10 = _r$10; $f._r$11 = _r$11; $f._r$12 = _r$12; $f._r$13 = _r$13; $f._r$14 = _r$14; $f._r$15 = _r$15; $f._r$16 = _r$16; $f._r$17 = _r$17; $f._r$18 = _r$18; $f._r$19 = _r$19; $f._r$2 = _r$2; $f._r$20 = _r$20; $f._r$21 = _r$21; $f._r$22 = _r$22; $f._r$23 = _r$23; $f._r$24 = _r$24; $f._r$25 = _r$25; $f._r$26 = _r$26; $f._r$27 = _r$27; $f._r$28 = _r$28; $f._r$29 = _r$29; $f._r$3 = _r$3; $f._r$30 = _r$30; $f._r$31 = _r$31; $f._r$32 = _r$32; $f._r$33 = _r$33; $f._r$34 = _r$34; $f._r$35 = _r$35; $f._r$36 = _r$36; $f._r$37 = _r$37; $f._r$38 = _r$38; $f._r$39 = _r$39; $f._r$4 = _r$4; $f._r$40 = _r$40; $f._r$41 = _r$41; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._r$8 = _r$8; $f._r$9 = _r$9; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$10 = _tuple$10; $f._tuple$11 = _tuple$11; $f._tuple$12 = _tuple$12; $f._tuple$13 = _tuple$13; $f._tuple$14 = _tuple$14; $f._tuple$15 = _tuple$15; $f._tuple$16 = _tuple$16; $f._tuple$17 = _tuple$17; $f._tuple$18 = _tuple$18; $f._tuple$19 = _tuple$19; $f._tuple$2 = _tuple$2; $f._tuple$20 = _tuple$20; $f._tuple$21 = _tuple$21; $f._tuple$22 = _tuple$22; $f._tuple$23 = _tuple$23; $f._tuple$24 = _tuple$24; $f._tuple$25 = _tuple$25; $f._tuple$26 = _tuple$26; $f._tuple$27 = _tuple$27; $f._tuple$28 = _tuple$28; $f._tuple$29 = _tuple$29; $f._tuple$3 = _tuple$3; $f._tuple$30 = _tuple$30; $f._tuple$4 = _tuple$4; $f._tuple$5 = _tuple$5; $f._tuple$6 = _tuple$6; $f._tuple$7 = _tuple$7; $f._tuple$8 = _tuple$8; $f._tuple$9 = _tuple$9; $f._v = _v; $f._v$1 = _v$1; $f.bs = bs; $f.bytes = bytes; $f.bytes$1 = bytes$1; $f.compoundType = compoundType; $f.err = err; $f.err1 = err1; $f.err1$1 = err1$1; $f.err1$2 = err1$2; $f.err1$3 = err1$3; $f.err1$4 = err1$4; $f.err1$5 = err1$5; $f.err1$6 = err1$6; $f.err1$7 = err1$7; $f.err1$8 = err1$8; $f.expectedClass = expectedClass; $f.expectedClass$1 = expectedClass$1; $f.expectedTag = expectedTag; $f.field = field; $f.fieldType = fieldType; $f.i = i; $f.i$1 = i$1; $f.ifaceType = ifaceType; $f.initOffset = initOffset; $f.innerBytes = innerBytes; $f.innerBytes$1 = innerBytes$1; $f.innerOffset = innerOffset; $f.matchAny = matchAny; $f.matchAnyClassAndTag = matchAnyClassAndTag; $f.newSlice = newSlice; $f.newSlice$1 = newSlice$1; $f.offset = offset; $f.ok = ok; $f.ok$1 = ok$1; $f.ok1 = ok1; $f.params = params; $f.parsedBool = parsedBool; $f.parsedInt = parsedInt; $f.parsedInt$1 = parsedInt$1; $f.parsedInt$2 = parsedInt$2; $f.parsedInt$3 = parsedInt$3; $f.result = result; $f.result$1 = result$1; $f.sliceType$3 = sliceType$3; $f.structType = structType; $f.t = t; $f.t$1 = t$1; $f.time$1 = time$1; $f.universalTag = universalTag; $f.v = v; $f.v$1 = v$1; $f.val = val; $f.x$10 = x$10; $f.x$11 = x$11; $f.x$12 = x$12; $f.x$13 = x$13; $f.x$3 = x$3; $f.x$4 = x$4; $f.x$5 = x$5; $f.x$6 = x$6; $f.x$7 = x$7; $f.x$8 = x$8; $f.x$9 = x$9; $f.$s = $s; $f.$r = $r; return $f;
 62517  	};
 62518  	canHaveDefaultValue = function(k) {
 62519  		var _1, k;
 62520  		_1 = k;
 62521  		if ((_1 === (2)) || (_1 === (3)) || (_1 === (4)) || (_1 === (5)) || (_1 === (6))) {
 62522  			return true;
 62523  		}
 62524  		return false;
 62525  	};
 62526  	setDefaultValue = function(v, params) {
 62527  		var ok, params, v;
 62528  		ok = false;
 62529  		if (!params.optional) {
 62530  			return ok;
 62531  		}
 62532  		ok = true;
 62533  		if (params.defaultValue === ptrType$3.nil) {
 62534  			return ok;
 62535  		}
 62536  		if (canHaveDefaultValue($clone(v, reflect.Value).Kind())) {
 62537  			$clone(v, reflect.Value).SetInt(params.defaultValue.$get());
 62538  		}
 62539  		return ok;
 62540  	};
 62541  	Unmarshal = function(b, val) {
 62542  		var _r, _tuple, b, err, rest, val, $s, $r;
 62543  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; b = $f.b; err = $f.err; rest = $f.rest; val = $f.val; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 62544  		rest = sliceType.nil;
 62545  		err = $ifaceNil;
 62546  		_r = UnmarshalWithParams(b, val, ""); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 62547  		_tuple = _r;
 62548  		rest = _tuple[0];
 62549  		err = _tuple[1];
 62550  		$s = -1; return [rest, err];
 62551  		/* */ } return; } if ($f === undefined) { $f = { $blk: Unmarshal }; } $f._r = _r; $f._tuple = _tuple; $f.b = b; $f.err = err; $f.rest = rest; $f.val = val; $f.$s = $s; $f.$r = $r; return $f;
 62552  	};
 62553  	$pkg.Unmarshal = Unmarshal;
 62554  	UnmarshalWithParams = function(b, val, params) {
 62555  		var _r, _r$1, _r$2, _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, b, err, offset, params, rest, v, val, $s, $r;
 62556  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tuple = $f._tuple; b = $f.b; err = $f.err; offset = $f.offset; params = $f.params; rest = $f.rest; v = $f.v; val = $f.val; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 62557  		rest = sliceType.nil;
 62558  		err = $ifaceNil;
 62559  		_r = reflect.ValueOf(val); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 62560  		_r$1 = $clone(_r, reflect.Value).Elem(); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 62561  		v = _r$1;
 62562  		_r$2 = parseField($clone(v, reflect.Value), b, 0, $clone(parseFieldParameters(params), fieldParameters)); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 62563  		_tuple = _r$2;
 62564  		offset = _tuple[0];
 62565  		err = _tuple[1];
 62566  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 62567  			_tmp = sliceType.nil;
 62568  			_tmp$1 = err;
 62569  			rest = _tmp;
 62570  			err = _tmp$1;
 62571  			$s = -1; return [rest, err];
 62572  		}
 62573  		_tmp$2 = $subslice(b, offset);
 62574  		_tmp$3 = $ifaceNil;
 62575  		rest = _tmp$2;
 62576  		err = _tmp$3;
 62577  		$s = -1; return [rest, err];
 62578  		/* */ } return; } if ($f === undefined) { $f = { $blk: UnmarshalWithParams }; } $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tuple = _tuple; $f.b = b; $f.err = err; $f.offset = offset; $f.params = params; $f.rest = rest; $f.v = v; $f.val = val; $f.$s = $s; $f.$r = $r; return $f;
 62579  	};
 62580  	$pkg.UnmarshalWithParams = UnmarshalWithParams;
 62581  	parseFieldParameters = function(str) {
 62582  		var _i, _ref, _tuple, _tuple$1, err, err$1, i, i$1, part, ret, str;
 62583  		ret = new fieldParameters.ptr(false, false, false, ptrType$3.nil, ptrType$4.nil, 0, 0, false, false);
 62584  		_ref = strings.Split(str, ",");
 62585  		_i = 0;
 62586  		while (true) {
 62587  			if (!(_i < _ref.$length)) { break; }
 62588  			part = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
 62589  			if (part === "optional") {
 62590  				ret.optional = true;
 62591  			} else if (part === "explicit") {
 62592  				ret.explicit = true;
 62593  				if (ret.tag === ptrType$4.nil) {
 62594  					ret.tag = $newDataPointer(0, ptrType$4);
 62595  				}
 62596  			} else if (part === "generalized") {
 62597  				ret.timeType = 24;
 62598  			} else if (part === "utc") {
 62599  				ret.timeType = 23;
 62600  			} else if (part === "ia5") {
 62601  				ret.stringType = 22;
 62602  			} else if (part === "printable") {
 62603  				ret.stringType = 19;
 62604  			} else if (part === "numeric") {
 62605  				ret.stringType = 18;
 62606  			} else if (part === "utf8") {
 62607  				ret.stringType = 12;
 62608  			} else if (strings.HasPrefix(part, "default:")) {
 62609  				_tuple = strconv.ParseInt($substring(part, 8), 10, 64);
 62610  				i = _tuple[0];
 62611  				err = _tuple[1];
 62612  				if ($interfaceIsEqual(err, $ifaceNil)) {
 62613  					ret.defaultValue = $newDataPointer(new $Int64(0, 0), ptrType$3);
 62614  					ret.defaultValue.$set(i);
 62615  				}
 62616  			} else if (strings.HasPrefix(part, "tag:")) {
 62617  				_tuple$1 = strconv.Atoi($substring(part, 4));
 62618  				i$1 = _tuple$1[0];
 62619  				err$1 = _tuple$1[1];
 62620  				if ($interfaceIsEqual(err$1, $ifaceNil)) {
 62621  					ret.tag = $newDataPointer(0, ptrType$4);
 62622  					ret.tag.$set(i$1);
 62623  				}
 62624  			} else if (part === "set") {
 62625  				ret.set = true;
 62626  			} else if (part === "application") {
 62627  				ret.application = true;
 62628  				if (ret.tag === ptrType$4.nil) {
 62629  					ret.tag = $newDataPointer(0, ptrType$4);
 62630  				}
 62631  			} else if (part === "omitempty") {
 62632  				ret.omitEmpty = true;
 62633  			}
 62634  			_i++;
 62635  		}
 62636  		return ret;
 62637  	};
 62638  	getUniversalType = function(t) {
 62639  		var _1, _2, _r, _r$1, _r$2, _r$3, _r$4, _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$14, _tmp$15, _tmp$16, _tmp$17, _tmp$18, _tmp$19, _tmp$2, _tmp$20, _tmp$21, _tmp$22, _tmp$23, _tmp$24, _tmp$25, _tmp$26, _tmp$27, _tmp$28, _tmp$29, _tmp$3, _tmp$30, _tmp$31, _tmp$32, _tmp$33, _tmp$34, _tmp$35, _tmp$36, _tmp$37, _tmp$38, _tmp$39, _tmp$4, _tmp$40, _tmp$41, _tmp$42, _tmp$43, _tmp$44, _tmp$45, _tmp$46, _tmp$47, _tmp$48, _tmp$49, _tmp$5, _tmp$50, _tmp$51, _tmp$52, _tmp$53, _tmp$54, _tmp$55, _tmp$6, _tmp$7, _tmp$8, _tmp$9, isCompound, matchAny, ok, t, tagNumber, $s, $r;
 62640  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _2 = $f._2; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$10 = $f._tmp$10; _tmp$11 = $f._tmp$11; _tmp$12 = $f._tmp$12; _tmp$13 = $f._tmp$13; _tmp$14 = $f._tmp$14; _tmp$15 = $f._tmp$15; _tmp$16 = $f._tmp$16; _tmp$17 = $f._tmp$17; _tmp$18 = $f._tmp$18; _tmp$19 = $f._tmp$19; _tmp$2 = $f._tmp$2; _tmp$20 = $f._tmp$20; _tmp$21 = $f._tmp$21; _tmp$22 = $f._tmp$22; _tmp$23 = $f._tmp$23; _tmp$24 = $f._tmp$24; _tmp$25 = $f._tmp$25; _tmp$26 = $f._tmp$26; _tmp$27 = $f._tmp$27; _tmp$28 = $f._tmp$28; _tmp$29 = $f._tmp$29; _tmp$3 = $f._tmp$3; _tmp$30 = $f._tmp$30; _tmp$31 = $f._tmp$31; _tmp$32 = $f._tmp$32; _tmp$33 = $f._tmp$33; _tmp$34 = $f._tmp$34; _tmp$35 = $f._tmp$35; _tmp$36 = $f._tmp$36; _tmp$37 = $f._tmp$37; _tmp$38 = $f._tmp$38; _tmp$39 = $f._tmp$39; _tmp$4 = $f._tmp$4; _tmp$40 = $f._tmp$40; _tmp$41 = $f._tmp$41; _tmp$42 = $f._tmp$42; _tmp$43 = $f._tmp$43; _tmp$44 = $f._tmp$44; _tmp$45 = $f._tmp$45; _tmp$46 = $f._tmp$46; _tmp$47 = $f._tmp$47; _tmp$48 = $f._tmp$48; _tmp$49 = $f._tmp$49; _tmp$5 = $f._tmp$5; _tmp$50 = $f._tmp$50; _tmp$51 = $f._tmp$51; _tmp$52 = $f._tmp$52; _tmp$53 = $f._tmp$53; _tmp$54 = $f._tmp$54; _tmp$55 = $f._tmp$55; _tmp$6 = $f._tmp$6; _tmp$7 = $f._tmp$7; _tmp$8 = $f._tmp$8; _tmp$9 = $f._tmp$9; isCompound = $f.isCompound; matchAny = $f.matchAny; ok = $f.ok; t = $f.t; tagNumber = $f.tagNumber; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 62641  		matchAny = false;
 62642  		tagNumber = 0;
 62643  		isCompound = false;
 62644  		ok = false;
 62645  		_1 = t;
 62646  		if ($interfaceIsEqual(_1, (rawValueType))) {
 62647  			_tmp = true;
 62648  			_tmp$1 = -1;
 62649  			_tmp$2 = false;
 62650  			_tmp$3 = true;
 62651  			matchAny = _tmp;
 62652  			tagNumber = _tmp$1;
 62653  			isCompound = _tmp$2;
 62654  			ok = _tmp$3;
 62655  			$s = -1; return [matchAny, tagNumber, isCompound, ok];
 62656  		} else if ($interfaceIsEqual(_1, (objectIdentifierType))) {
 62657  			_tmp$4 = false;
 62658  			_tmp$5 = 6;
 62659  			_tmp$6 = false;
 62660  			_tmp$7 = true;
 62661  			matchAny = _tmp$4;
 62662  			tagNumber = _tmp$5;
 62663  			isCompound = _tmp$6;
 62664  			ok = _tmp$7;
 62665  			$s = -1; return [matchAny, tagNumber, isCompound, ok];
 62666  		} else if ($interfaceIsEqual(_1, (bitStringType))) {
 62667  			_tmp$8 = false;
 62668  			_tmp$9 = 3;
 62669  			_tmp$10 = false;
 62670  			_tmp$11 = true;
 62671  			matchAny = _tmp$8;
 62672  			tagNumber = _tmp$9;
 62673  			isCompound = _tmp$10;
 62674  			ok = _tmp$11;
 62675  			$s = -1; return [matchAny, tagNumber, isCompound, ok];
 62676  		} else if ($interfaceIsEqual(_1, (timeType))) {
 62677  			_tmp$12 = false;
 62678  			_tmp$13 = 23;
 62679  			_tmp$14 = false;
 62680  			_tmp$15 = true;
 62681  			matchAny = _tmp$12;
 62682  			tagNumber = _tmp$13;
 62683  			isCompound = _tmp$14;
 62684  			ok = _tmp$15;
 62685  			$s = -1; return [matchAny, tagNumber, isCompound, ok];
 62686  		} else if ($interfaceIsEqual(_1, (enumeratedType))) {
 62687  			_tmp$16 = false;
 62688  			_tmp$17 = 10;
 62689  			_tmp$18 = false;
 62690  			_tmp$19 = true;
 62691  			matchAny = _tmp$16;
 62692  			tagNumber = _tmp$17;
 62693  			isCompound = _tmp$18;
 62694  			ok = _tmp$19;
 62695  			$s = -1; return [matchAny, tagNumber, isCompound, ok];
 62696  		} else if ($interfaceIsEqual(_1, (bigIntType))) {
 62697  			_tmp$20 = false;
 62698  			_tmp$21 = 2;
 62699  			_tmp$22 = false;
 62700  			_tmp$23 = true;
 62701  			matchAny = _tmp$20;
 62702  			tagNumber = _tmp$21;
 62703  			isCompound = _tmp$22;
 62704  			ok = _tmp$23;
 62705  			$s = -1; return [matchAny, tagNumber, isCompound, ok];
 62706  		}
 62707  			_r = t.Kind(); /* */ $s = 2; case 2: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 62708  			_2 = _r;
 62709  			/* */ if (_2 === (1)) { $s = 3; continue; }
 62710  			/* */ if ((_2 === (2)) || (_2 === (3)) || (_2 === (4)) || (_2 === (5)) || (_2 === (6))) { $s = 4; continue; }
 62711  			/* */ if (_2 === (25)) { $s = 5; continue; }
 62712  			/* */ if (_2 === (23)) { $s = 6; continue; }
 62713  			/* */ if (_2 === (24)) { $s = 7; continue; }
 62714  			/* */ $s = 8; continue;
 62715  			/* if (_2 === (1)) { */ case 3:
 62716  				_tmp$24 = false;
 62717  				_tmp$25 = 1;
 62718  				_tmp$26 = false;
 62719  				_tmp$27 = true;
 62720  				matchAny = _tmp$24;
 62721  				tagNumber = _tmp$25;
 62722  				isCompound = _tmp$26;
 62723  				ok = _tmp$27;
 62724  				$s = -1; return [matchAny, tagNumber, isCompound, ok];
 62725  			/* } else if ((_2 === (2)) || (_2 === (3)) || (_2 === (4)) || (_2 === (5)) || (_2 === (6))) { */ case 4:
 62726  				_tmp$28 = false;
 62727  				_tmp$29 = 2;
 62728  				_tmp$30 = false;
 62729  				_tmp$31 = true;
 62730  				matchAny = _tmp$28;
 62731  				tagNumber = _tmp$29;
 62732  				isCompound = _tmp$30;
 62733  				ok = _tmp$31;
 62734  				$s = -1; return [matchAny, tagNumber, isCompound, ok];
 62735  			/* } else if (_2 === (25)) { */ case 5:
 62736  				_tmp$32 = false;
 62737  				_tmp$33 = 16;
 62738  				_tmp$34 = true;
 62739  				_tmp$35 = true;
 62740  				matchAny = _tmp$32;
 62741  				tagNumber = _tmp$33;
 62742  				isCompound = _tmp$34;
 62743  				ok = _tmp$35;
 62744  				$s = -1; return [matchAny, tagNumber, isCompound, ok];
 62745  			/* } else if (_2 === (23)) { */ case 6:
 62746  				_r$1 = t.Elem(); /* */ $s = 11; case 11: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 62747  				_r$2 = _r$1.Kind(); /* */ $s = 12; case 12: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 62748  				/* */ if (_r$2 === 8) { $s = 9; continue; }
 62749  				/* */ $s = 10; continue;
 62750  				/* if (_r$2 === 8) { */ case 9:
 62751  					_tmp$36 = false;
 62752  					_tmp$37 = 4;
 62753  					_tmp$38 = false;
 62754  					_tmp$39 = true;
 62755  					matchAny = _tmp$36;
 62756  					tagNumber = _tmp$37;
 62757  					isCompound = _tmp$38;
 62758  					ok = _tmp$39;
 62759  					$s = -1; return [matchAny, tagNumber, isCompound, ok];
 62760  				/* } */ case 10:
 62761  				_r$3 = t.Name(); /* */ $s = 15; case 15: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 62762  				_r$4 = strings.HasSuffix(_r$3, "SET"); /* */ $s = 16; case 16: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 62763  				/* */ if (_r$4) { $s = 13; continue; }
 62764  				/* */ $s = 14; continue;
 62765  				/* if (_r$4) { */ case 13:
 62766  					_tmp$40 = false;
 62767  					_tmp$41 = 17;
 62768  					_tmp$42 = true;
 62769  					_tmp$43 = true;
 62770  					matchAny = _tmp$40;
 62771  					tagNumber = _tmp$41;
 62772  					isCompound = _tmp$42;
 62773  					ok = _tmp$43;
 62774  					$s = -1; return [matchAny, tagNumber, isCompound, ok];
 62775  				/* } */ case 14:
 62776  				_tmp$44 = false;
 62777  				_tmp$45 = 16;
 62778  				_tmp$46 = true;
 62779  				_tmp$47 = true;
 62780  				matchAny = _tmp$44;
 62781  				tagNumber = _tmp$45;
 62782  				isCompound = _tmp$46;
 62783  				ok = _tmp$47;
 62784  				$s = -1; return [matchAny, tagNumber, isCompound, ok];
 62785  			/* } else if (_2 === (24)) { */ case 7:
 62786  				_tmp$48 = false;
 62787  				_tmp$49 = 19;
 62788  				_tmp$50 = false;
 62789  				_tmp$51 = true;
 62790  				matchAny = _tmp$48;
 62791  				tagNumber = _tmp$49;
 62792  				isCompound = _tmp$50;
 62793  				ok = _tmp$51;
 62794  				$s = -1; return [matchAny, tagNumber, isCompound, ok];
 62795  			/* } */ case 8:
 62796  		case 1:
 62797  		_tmp$52 = false;
 62798  		_tmp$53 = 0;
 62799  		_tmp$54 = false;
 62800  		_tmp$55 = false;
 62801  		matchAny = _tmp$52;
 62802  		tagNumber = _tmp$53;
 62803  		isCompound = _tmp$54;
 62804  		ok = _tmp$55;
 62805  		$s = -1; return [matchAny, tagNumber, isCompound, ok];
 62806  		/* */ } return; } if ($f === undefined) { $f = { $blk: getUniversalType }; } $f._1 = _1; $f._2 = _2; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$10 = _tmp$10; $f._tmp$11 = _tmp$11; $f._tmp$12 = _tmp$12; $f._tmp$13 = _tmp$13; $f._tmp$14 = _tmp$14; $f._tmp$15 = _tmp$15; $f._tmp$16 = _tmp$16; $f._tmp$17 = _tmp$17; $f._tmp$18 = _tmp$18; $f._tmp$19 = _tmp$19; $f._tmp$2 = _tmp$2; $f._tmp$20 = _tmp$20; $f._tmp$21 = _tmp$21; $f._tmp$22 = _tmp$22; $f._tmp$23 = _tmp$23; $f._tmp$24 = _tmp$24; $f._tmp$25 = _tmp$25; $f._tmp$26 = _tmp$26; $f._tmp$27 = _tmp$27; $f._tmp$28 = _tmp$28; $f._tmp$29 = _tmp$29; $f._tmp$3 = _tmp$3; $f._tmp$30 = _tmp$30; $f._tmp$31 = _tmp$31; $f._tmp$32 = _tmp$32; $f._tmp$33 = _tmp$33; $f._tmp$34 = _tmp$34; $f._tmp$35 = _tmp$35; $f._tmp$36 = _tmp$36; $f._tmp$37 = _tmp$37; $f._tmp$38 = _tmp$38; $f._tmp$39 = _tmp$39; $f._tmp$4 = _tmp$4; $f._tmp$40 = _tmp$40; $f._tmp$41 = _tmp$41; $f._tmp$42 = _tmp$42; $f._tmp$43 = _tmp$43; $f._tmp$44 = _tmp$44; $f._tmp$45 = _tmp$45; $f._tmp$46 = _tmp$46; $f._tmp$47 = _tmp$47; $f._tmp$48 = _tmp$48; $f._tmp$49 = _tmp$49; $f._tmp$5 = _tmp$5; $f._tmp$50 = _tmp$50; $f._tmp$51 = _tmp$51; $f._tmp$52 = _tmp$52; $f._tmp$53 = _tmp$53; $f._tmp$54 = _tmp$54; $f._tmp$55 = _tmp$55; $f._tmp$6 = _tmp$6; $f._tmp$7 = _tmp$7; $f._tmp$8 = _tmp$8; $f._tmp$9 = _tmp$9; $f.isCompound = isCompound; $f.matchAny = matchAny; $f.ok = ok; $f.t = t; $f.tagNumber = tagNumber; $f.$s = $s; $f.$r = $r; return $f;
 62807  	};
 62808  	byteEncoder.prototype.Len = function() {
 62809  		var c;
 62810  		c = this.$val;
 62811  		return 1;
 62812  	};
 62813  	$ptrType(byteEncoder).prototype.Len = function() { return new byteEncoder(this.$get()).Len(); };
 62814  	byteEncoder.prototype.Encode = function(dst) {
 62815  		var c, dst;
 62816  		c = this.$val;
 62817  		(0 >= dst.$length ? ($throwRuntimeError("index out of range"), undefined) : dst.$array[dst.$offset + 0] = ((c << 24 >>> 24)));
 62818  	};
 62819  	$ptrType(byteEncoder).prototype.Encode = function(dst) { return new byteEncoder(this.$get()).Encode(dst); };
 62820  	bytesEncoder.prototype.Len = function() {
 62821  		var b;
 62822  		b = this;
 62823  		return b.$length;
 62824  	};
 62825  	$ptrType(bytesEncoder).prototype.Len = function() { return this.$get().Len(); };
 62826  	bytesEncoder.prototype.Encode = function(dst) {
 62827  		var b, dst;
 62828  		b = this;
 62829  		if (!(($copySlice(dst, b) === b.$length))) {
 62830  			$panic(new $String("internal error"));
 62831  		}
 62832  	};
 62833  	$ptrType(bytesEncoder).prototype.Encode = function(dst) { return this.$get().Encode(dst); };
 62834  	stringEncoder.prototype.Len = function() {
 62835  		var s;
 62836  		s = this.$val;
 62837  		return s.length;
 62838  	};
 62839  	$ptrType(stringEncoder).prototype.Len = function() { return new stringEncoder(this.$get()).Len(); };
 62840  	stringEncoder.prototype.Encode = function(dst) {
 62841  		var dst, s;
 62842  		s = this.$val;
 62843  		if (!(($copyString(dst, s) === s.length))) {
 62844  			$panic(new $String("internal error"));
 62845  		}
 62846  	};
 62847  	$ptrType(stringEncoder).prototype.Encode = function(dst) { return new stringEncoder(this.$get()).Encode(dst); };
 62848  	multiEncoder.prototype.Len = function() {
 62849  		var _i, _r, _ref, e, m, size, $s, $r;
 62850  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _i = $f._i; _r = $f._r; _ref = $f._ref; e = $f.e; m = $f.m; size = $f.size; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 62851  		m = this;
 62852  		size = 0;
 62853  		_ref = m;
 62854  		_i = 0;
 62855  		/* while (true) { */ case 1:
 62856  			/* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; }
 62857  			e = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
 62858  			_r = e.Len(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 62859  			size = size + (_r) >> 0;
 62860  			_i++;
 62861  		/* } */ $s = 1; continue; case 2:
 62862  		$s = -1; return size;
 62863  		/* */ } return; } if ($f === undefined) { $f = { $blk: multiEncoder.prototype.Len }; } $f._i = _i; $f._r = _r; $f._ref = _ref; $f.e = e; $f.m = m; $f.size = size; $f.$s = $s; $f.$r = $r; return $f;
 62864  	};
 62865  	$ptrType(multiEncoder).prototype.Len = function() { return this.$get().Len(); };
 62866  	multiEncoder.prototype.Encode = function(dst) {
 62867  		var _i, _r, _ref, dst, e, m, off, $s, $r;
 62868  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _i = $f._i; _r = $f._r; _ref = $f._ref; dst = $f.dst; e = $f.e; m = $f.m; off = $f.off; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 62869  		m = this;
 62870  		off = 0;
 62871  		_ref = m;
 62872  		_i = 0;
 62873  		/* while (true) { */ case 1:
 62874  			/* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; }
 62875  			e = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
 62876  			$r = e.Encode($subslice(dst, off)); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 62877  			_r = e.Len(); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 62878  			off = off + (_r) >> 0;
 62879  			_i++;
 62880  		/* } */ $s = 1; continue; case 2:
 62881  		$s = -1; return;
 62882  		/* */ } return; } if ($f === undefined) { $f = { $blk: multiEncoder.prototype.Encode }; } $f._i = _i; $f._r = _r; $f._ref = _ref; $f.dst = dst; $f.e = e; $f.m = m; $f.off = off; $f.$s = $s; $f.$r = $r; return $f;
 62883  	};
 62884  	$ptrType(multiEncoder).prototype.Encode = function(dst) { return this.$get().Encode(dst); };
 62885  	taggedEncoder.ptr.prototype.Len = function() {
 62886  		var _r, _r$1, t, $s, $r;
 62887  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; t = $f.t; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 62888  		t = this;
 62889  		_r = t.tag.Len(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 62890  		_r$1 = t.body.Len(); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 62891  		$s = -1; return _r + _r$1 >> 0;
 62892  		/* */ } return; } if ($f === undefined) { $f = { $blk: taggedEncoder.ptr.prototype.Len }; } $f._r = _r; $f._r$1 = _r$1; $f.t = t; $f.$s = $s; $f.$r = $r; return $f;
 62893  	};
 62894  	taggedEncoder.prototype.Len = function() { return this.$val.Len(); };
 62895  	taggedEncoder.ptr.prototype.Encode = function(dst) {
 62896  		var _r, dst, t, $s, $r;
 62897  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; dst = $f.dst; t = $f.t; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 62898  		t = this;
 62899  		$r = t.tag.Encode(dst); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 62900  		_r = t.tag.Len(); /* */ $s = 2; case 2: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 62901  		$r = t.body.Encode($subslice(dst, _r)); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 62902  		$s = -1; return;
 62903  		/* */ } return; } if ($f === undefined) { $f = { $blk: taggedEncoder.ptr.prototype.Encode }; } $f._r = _r; $f.dst = dst; $f.t = t; $f.$s = $s; $f.$r = $r; return $f;
 62904  	};
 62905  	taggedEncoder.prototype.Encode = function(dst) { return this.$val.Encode(dst); };
 62906  	int64Encoder.prototype.Len = function() {
 62907  		var i, n;
 62908  		i = this;
 62909  		n = 1;
 62910  		while (true) {
 62911  			if (!((i.$high > 0 || (i.$high === 0 && i.$low > 127)))) { break; }
 62912  			n = n + (1) >> 0;
 62913  			i = $shiftRightInt64(i, (8));
 62914  		}
 62915  		while (true) {
 62916  			if (!((i.$high < -1 || (i.$high === -1 && i.$low < 4294967168)))) { break; }
 62917  			n = n + (1) >> 0;
 62918  			i = $shiftRightInt64(i, (8));
 62919  		}
 62920  		return n;
 62921  	};
 62922  	$ptrType(int64Encoder).prototype.Len = function() { return this.$get().Len(); };
 62923  	int64Encoder.prototype.Encode = function(dst) {
 62924  		var dst, i, j, n;
 62925  		i = this;
 62926  		n = i.Len();
 62927  		j = 0;
 62928  		while (true) {
 62929  			if (!(j < n)) { break; }
 62930  			((j < 0 || j >= dst.$length) ? ($throwRuntimeError("index out of range"), undefined) : dst.$array[dst.$offset + j] = (($shiftRightInt64(i, ((($imul((((n - 1 >> 0) - j >> 0)), 8)) >>> 0))).$low << 24 >>> 24)));
 62931  			j = j + (1) >> 0;
 62932  		}
 62933  	};
 62934  	$ptrType(int64Encoder).prototype.Encode = function(dst) { return this.$get().Encode(dst); };
 62935  	base128IntLength = function(n) {
 62936  		var i, l, n;
 62937  		if ((n.$high === 0 && n.$low === 0)) {
 62938  			return 1;
 62939  		}
 62940  		l = 0;
 62941  		i = n;
 62942  		while (true) {
 62943  			if (!((i.$high > 0 || (i.$high === 0 && i.$low > 0)))) { break; }
 62944  			l = l + (1) >> 0;
 62945  			i = $shiftRightInt64(i, (7));
 62946  		}
 62947  		return l;
 62948  	};
 62949  	appendBase128Int = function(dst, n) {
 62950  		var dst, i, l, n, o;
 62951  		l = base128IntLength(n);
 62952  		i = l - 1 >> 0;
 62953  		while (true) {
 62954  			if (!(i >= 0)) { break; }
 62955  			o = (($shiftRightInt64(n, ((($imul(i, 7)) >>> 0))).$low << 24 >>> 24));
 62956  			o = (o & (127)) >>> 0;
 62957  			if (!((i === 0))) {
 62958  				o = (o | (128)) >>> 0;
 62959  			}
 62960  			dst = $append(dst, o);
 62961  			i = i - (1) >> 0;
 62962  		}
 62963  		return dst;
 62964  	};
 62965  	makeBigInt = function(n) {
 62966  		var _i, _ref, bytes, bytes$1, i, n, nMinus1, x$3, x$4, x$5;
 62967  		if (n === ptrType$1.nil) {
 62968  			return [$ifaceNil, (x$3 = new StructuralError.ptr("empty integer"), new x$3.constructor.elem(x$3))];
 62969  		}
 62970  		if (n.Sign() < 0) {
 62971  			nMinus1 = new big.Int.ptr(false, big.nat.nil).Neg(n);
 62972  			nMinus1.Sub(nMinus1, bigOne);
 62973  			bytes = nMinus1.Bytes();
 62974  			_ref = bytes;
 62975  			_i = 0;
 62976  			while (true) {
 62977  				if (!(_i < _ref.$length)) { break; }
 62978  				i = _i;
 62979  				((i < 0 || i >= bytes.$length) ? ($throwRuntimeError("index out of range"), undefined) : bytes.$array[bytes.$offset + i] = ((((i < 0 || i >= bytes.$length) ? ($throwRuntimeError("index out of range"), undefined) : bytes.$array[bytes.$offset + i]) ^ (255)) << 24 >>> 24));
 62980  				_i++;
 62981  			}
 62982  			if ((bytes.$length === 0) || ((((0 >= bytes.$length ? ($throwRuntimeError("index out of range"), undefined) : bytes.$array[bytes.$offset + 0]) & 128) >>> 0) === 0)) {
 62983  				return [((x$4 = new sliceType$3([byteFFEncoder, ($subslice(new bytesEncoder(bytes.$array), bytes.$offset, bytes.$offset + bytes.$length))]), $subslice(new multiEncoder(x$4.$array), x$4.$offset, x$4.$offset + x$4.$length))), $ifaceNil];
 62984  			}
 62985  			return [($subslice(new bytesEncoder(bytes.$array), bytes.$offset, bytes.$offset + bytes.$length)), $ifaceNil];
 62986  		} else if (n.Sign() === 0) {
 62987  			return [byte00Encoder, $ifaceNil];
 62988  		} else {
 62989  			bytes$1 = n.Bytes();
 62990  			if (bytes$1.$length > 0 && !(((((0 >= bytes$1.$length ? ($throwRuntimeError("index out of range"), undefined) : bytes$1.$array[bytes$1.$offset + 0]) & 128) >>> 0) === 0))) {
 62991  				return [((x$5 = new sliceType$3([byte00Encoder, ($subslice(new bytesEncoder(bytes$1.$array), bytes$1.$offset, bytes$1.$offset + bytes$1.$length))]), $subslice(new multiEncoder(x$5.$array), x$5.$offset, x$5.$offset + x$5.$length))), $ifaceNil];
 62992  			}
 62993  			return [($subslice(new bytesEncoder(bytes$1.$array), bytes$1.$offset, bytes$1.$offset + bytes$1.$length)), $ifaceNil];
 62994  		}
 62995  	};
 62996  	appendLength = function(dst, i) {
 62997  		var dst, i, n;
 62998  		n = lengthLength(i);
 62999  		while (true) {
 63000  			if (!(n > 0)) { break; }
 63001  			dst = $append(dst, ((((i >> $min(((($imul(((n - 1 >> 0)), 8)) >>> 0)), 31)) >> 0) << 24 >>> 24)));
 63002  			n = n - (1) >> 0;
 63003  		}
 63004  		return dst;
 63005  	};
 63006  	lengthLength = function(i) {
 63007  		var i, numBytes;
 63008  		numBytes = 0;
 63009  		numBytes = 1;
 63010  		while (true) {
 63011  			if (!(i > 255)) { break; }
 63012  			numBytes = numBytes + (1) >> 0;
 63013  			i = (i >> $min((8), 31)) >> 0;
 63014  		}
 63015  		return numBytes;
 63016  	};
 63017  	appendTagAndLength = function(dst, t) {
 63018  		var b, dst, l, t;
 63019  		b = ((t.class$0 << 24 >>> 24)) << 6 << 24 >>> 24;
 63020  		if (t.isCompound) {
 63021  			b = (b | (32)) >>> 0;
 63022  		}
 63023  		if (t.tag >= 31) {
 63024  			b = (b | (31)) >>> 0;
 63025  			dst = $append(dst, b);
 63026  			dst = appendBase128Int(dst, (new $Int64(0, t.tag)));
 63027  		} else {
 63028  			b = (b | (((t.tag << 24 >>> 24)))) >>> 0;
 63029  			dst = $append(dst, b);
 63030  		}
 63031  		if (t.length >= 128) {
 63032  			l = lengthLength(t.length);
 63033  			dst = $append(dst, (128 | ((l << 24 >>> 24))) >>> 0);
 63034  			dst = appendLength(dst, t.length);
 63035  		} else {
 63036  			dst = $append(dst, ((t.length << 24 >>> 24)));
 63037  		}
 63038  		return dst;
 63039  	};
 63040  	bitStringEncoder.ptr.prototype.Len = function() {
 63041  		var b;
 63042  		b = this;
 63043  		return b.Bytes.$length + 1 >> 0;
 63044  	};
 63045  	bitStringEncoder.prototype.Len = function() { return this.$val.Len(); };
 63046  	bitStringEncoder.ptr.prototype.Encode = function(dst) {
 63047  		var _r, _r$1, b, dst;
 63048  		b = this;
 63049  		(0 >= dst.$length ? ($throwRuntimeError("index out of range"), undefined) : dst.$array[dst.$offset + 0] = (((_r = ((8 - (_r$1 = b.BitLength % 8, _r$1 === _r$1 ? _r$1 : $throwRuntimeError("integer divide by zero")) >> 0)) % 8, _r === _r ? _r : $throwRuntimeError("integer divide by zero")) << 24 >>> 24)));
 63050  		if (!(($copySlice($subslice(dst, 1), b.Bytes) === b.Bytes.$length))) {
 63051  			$panic(new $String("internal error"));
 63052  		}
 63053  	};
 63054  	bitStringEncoder.prototype.Encode = function(dst) { return this.$val.Encode(dst); };
 63055  	oidEncoder.prototype.Len = function() {
 63056  		var i, l, oid;
 63057  		oid = this;
 63058  		l = base128IntLength((new $Int64(0, (($imul((0 >= oid.$length ? ($throwRuntimeError("index out of range"), undefined) : oid.$array[oid.$offset + 0]), 40)) + (1 >= oid.$length ? ($throwRuntimeError("index out of range"), undefined) : oid.$array[oid.$offset + 1]) >> 0))));
 63059  		i = 2;
 63060  		while (true) {
 63061  			if (!(i < oid.$length)) { break; }
 63062  			l = l + (base128IntLength((new $Int64(0, ((i < 0 || i >= oid.$length) ? ($throwRuntimeError("index out of range"), undefined) : oid.$array[oid.$offset + i]))))) >> 0;
 63063  			i = i + (1) >> 0;
 63064  		}
 63065  		return l;
 63066  	};
 63067  	$ptrType(oidEncoder).prototype.Len = function() { return this.$get().Len(); };
 63068  	oidEncoder.prototype.Encode = function(dst) {
 63069  		var dst, i, oid;
 63070  		oid = this;
 63071  		dst = appendBase128Int($subslice(dst, 0, 0), (new $Int64(0, (($imul((0 >= oid.$length ? ($throwRuntimeError("index out of range"), undefined) : oid.$array[oid.$offset + 0]), 40)) + (1 >= oid.$length ? ($throwRuntimeError("index out of range"), undefined) : oid.$array[oid.$offset + 1]) >> 0))));
 63072  		i = 2;
 63073  		while (true) {
 63074  			if (!(i < oid.$length)) { break; }
 63075  			dst = appendBase128Int(dst, (new $Int64(0, ((i < 0 || i >= oid.$length) ? ($throwRuntimeError("index out of range"), undefined) : oid.$array[oid.$offset + i]))));
 63076  			i = i + (1) >> 0;
 63077  		}
 63078  	};
 63079  	$ptrType(oidEncoder).prototype.Encode = function(dst) { return this.$get().Encode(dst); };
 63080  	makeObjectIdentifier = function(oid) {
 63081  		var _tmp, _tmp$1, _tmp$2, _tmp$3, e, err, oid, x$3;
 63082  		e = $ifaceNil;
 63083  		err = $ifaceNil;
 63084  		if (oid.$length < 2 || (0 >= oid.$length ? ($throwRuntimeError("index out of range"), undefined) : oid.$array[oid.$offset + 0]) > 2 || ((0 >= oid.$length ? ($throwRuntimeError("index out of range"), undefined) : oid.$array[oid.$offset + 0]) < 2 && (1 >= oid.$length ? ($throwRuntimeError("index out of range"), undefined) : oid.$array[oid.$offset + 1]) >= 40)) {
 63085  			_tmp = $ifaceNil;
 63086  			_tmp$1 = (x$3 = new StructuralError.ptr("invalid object identifier"), new x$3.constructor.elem(x$3));
 63087  			e = _tmp;
 63088  			err = _tmp$1;
 63089  			return [e, err];
 63090  		}
 63091  		_tmp$2 = ($subslice(new oidEncoder(oid.$array), oid.$offset, oid.$offset + oid.$length));
 63092  		_tmp$3 = $ifaceNil;
 63093  		e = _tmp$2;
 63094  		err = _tmp$3;
 63095  		return [e, err];
 63096  	};
 63097  	makePrintableString = function(s) {
 63098  		var _tmp, _tmp$1, _tmp$2, _tmp$3, e, err, i, s, x$3;
 63099  		e = $ifaceNil;
 63100  		err = $ifaceNil;
 63101  		i = 0;
 63102  		while (true) {
 63103  			if (!(i < s.length)) { break; }
 63104  			if (!isPrintable(s.charCodeAt(i), true, false)) {
 63105  				_tmp = $ifaceNil;
 63106  				_tmp$1 = (x$3 = new StructuralError.ptr("PrintableString contains invalid character"), new x$3.constructor.elem(x$3));
 63107  				e = _tmp;
 63108  				err = _tmp$1;
 63109  				return [e, err];
 63110  			}
 63111  			i = i + (1) >> 0;
 63112  		}
 63113  		_tmp$2 = new stringEncoder((s));
 63114  		_tmp$3 = $ifaceNil;
 63115  		e = _tmp$2;
 63116  		err = _tmp$3;
 63117  		return [e, err];
 63118  	};
 63119  	makeIA5String = function(s) {
 63120  		var _tmp, _tmp$1, _tmp$2, _tmp$3, e, err, i, s, x$3;
 63121  		e = $ifaceNil;
 63122  		err = $ifaceNil;
 63123  		i = 0;
 63124  		while (true) {
 63125  			if (!(i < s.length)) { break; }
 63126  			if (s.charCodeAt(i) > 127) {
 63127  				_tmp = $ifaceNil;
 63128  				_tmp$1 = (x$3 = new StructuralError.ptr("IA5String contains invalid character"), new x$3.constructor.elem(x$3));
 63129  				e = _tmp;
 63130  				err = _tmp$1;
 63131  				return [e, err];
 63132  			}
 63133  			i = i + (1) >> 0;
 63134  		}
 63135  		_tmp$2 = new stringEncoder((s));
 63136  		_tmp$3 = $ifaceNil;
 63137  		e = _tmp$2;
 63138  		err = _tmp$3;
 63139  		return [e, err];
 63140  	};
 63141  	makeNumericString = function(s) {
 63142  		var _tmp, _tmp$1, _tmp$2, _tmp$3, e, err, i, s, x$3;
 63143  		e = $ifaceNil;
 63144  		err = $ifaceNil;
 63145  		i = 0;
 63146  		while (true) {
 63147  			if (!(i < s.length)) { break; }
 63148  			if (!isNumeric(s.charCodeAt(i))) {
 63149  				_tmp = $ifaceNil;
 63150  				_tmp$1 = (x$3 = new StructuralError.ptr("NumericString contains invalid character"), new x$3.constructor.elem(x$3));
 63151  				e = _tmp;
 63152  				err = _tmp$1;
 63153  				return [e, err];
 63154  			}
 63155  			i = i + (1) >> 0;
 63156  		}
 63157  		_tmp$2 = new stringEncoder((s));
 63158  		_tmp$3 = $ifaceNil;
 63159  		e = _tmp$2;
 63160  		err = _tmp$3;
 63161  		return [e, err];
 63162  	};
 63163  	makeUTF8String = function(s) {
 63164  		var s;
 63165  		return new stringEncoder((s));
 63166  	};
 63167  	appendTwoDigits = function(dst, v) {
 63168  		var _q, _r, _r$1, dst, v;
 63169  		return $append(dst, (((48 + (_r = ((_q = v / 10, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero"))) % 10, _r === _r ? _r : $throwRuntimeError("integer divide by zero")) >> 0) << 24 >>> 24)), (((48 + (_r$1 = v % 10, _r$1 === _r$1 ? _r$1 : $throwRuntimeError("integer divide by zero")) >> 0) << 24 >>> 24)));
 63170  	};
 63171  	appendFourDigits = function(dst, v) {
 63172  		var _i, _q, _r, _ref, bytes, dst, i, v, x$3;
 63173  		bytes = arrayType.zero();
 63174  		_ref = bytes;
 63175  		_i = 0;
 63176  		while (true) {
 63177  			if (!(_i < 4)) { break; }
 63178  			i = _i;
 63179  			(x$3 = 3 - i >> 0, ((x$3 < 0 || x$3 >= bytes.length) ? ($throwRuntimeError("index out of range"), undefined) : bytes[x$3] = (48 + (((_r = v % 10, _r === _r ? _r : $throwRuntimeError("integer divide by zero")) << 24 >>> 24)) << 24 >>> 24)));
 63180  			v = (_q = v / (10), (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero"));
 63181  			_i++;
 63182  		}
 63183  		return $appendSlice(dst, new sliceType(bytes));
 63184  	};
 63185  	outsideUTCRange = function(t) {
 63186  		var _r, t, year, $s, $r;
 63187  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; t = $f.t; year = $f.year; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 63188  		_r = $clone(t, time.Time).Year(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 63189  		year = _r;
 63190  		$s = -1; return year < 1950 || year >= 2050;
 63191  		/* */ } return; } if ($f === undefined) { $f = { $blk: outsideUTCRange }; } $f._r = _r; $f.t = t; $f.year = year; $f.$s = $s; $f.$r = $r; return $f;
 63192  	};
 63193  	makeUTCTime = function(t) {
 63194  		var _r, _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, dst, e, err, t, $s, $r;
 63195  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tuple = $f._tuple; dst = $f.dst; e = $f.e; err = $f.err; t = $f.t; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 63196  		e = $ifaceNil;
 63197  		err = $ifaceNil;
 63198  		dst = $makeSlice(sliceType, 0, 18);
 63199  		_r = appendUTCTime(dst, $clone(t, time.Time)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 63200  		_tuple = _r;
 63201  		dst = _tuple[0];
 63202  		err = _tuple[1];
 63203  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 63204  			_tmp = $ifaceNil;
 63205  			_tmp$1 = err;
 63206  			e = _tmp;
 63207  			err = _tmp$1;
 63208  			$s = -1; return [e, err];
 63209  		}
 63210  		_tmp$2 = ($subslice(new bytesEncoder(dst.$array), dst.$offset, dst.$offset + dst.$length));
 63211  		_tmp$3 = $ifaceNil;
 63212  		e = _tmp$2;
 63213  		err = _tmp$3;
 63214  		$s = -1; return [e, err];
 63215  		/* */ } return; } if ($f === undefined) { $f = { $blk: makeUTCTime }; } $f._r = _r; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tuple = _tuple; $f.dst = dst; $f.e = e; $f.err = err; $f.t = t; $f.$s = $s; $f.$r = $r; return $f;
 63216  	};
 63217  	makeGeneralizedTime = function(t) {
 63218  		var _r, _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, dst, e, err, t, $s, $r;
 63219  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tuple = $f._tuple; dst = $f.dst; e = $f.e; err = $f.err; t = $f.t; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 63220  		e = $ifaceNil;
 63221  		err = $ifaceNil;
 63222  		dst = $makeSlice(sliceType, 0, 20);
 63223  		_r = appendGeneralizedTime(dst, $clone(t, time.Time)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 63224  		_tuple = _r;
 63225  		dst = _tuple[0];
 63226  		err = _tuple[1];
 63227  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 63228  			_tmp = $ifaceNil;
 63229  			_tmp$1 = err;
 63230  			e = _tmp;
 63231  			err = _tmp$1;
 63232  			$s = -1; return [e, err];
 63233  		}
 63234  		_tmp$2 = ($subslice(new bytesEncoder(dst.$array), dst.$offset, dst.$offset + dst.$length));
 63235  		_tmp$3 = $ifaceNil;
 63236  		e = _tmp$2;
 63237  		err = _tmp$3;
 63238  		$s = -1; return [e, err];
 63239  		/* */ } return; } if ($f === undefined) { $f = { $blk: makeGeneralizedTime }; } $f._r = _r; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tuple = _tuple; $f.dst = dst; $f.e = e; $f.err = err; $f.t = t; $f.$s = $s; $f.$r = $r; return $f;
 63240  	};
 63241  	appendUTCTime = function(dst, t) {
 63242  		var _r, _r$1, _tmp, _tmp$1, _tmp$2, _tmp$3, dst, err, ret, t, x$3, year, $s, $r;
 63243  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; dst = $f.dst; err = $f.err; ret = $f.ret; t = $f.t; x$3 = $f.x$3; year = $f.year; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 63244  		ret = sliceType.nil;
 63245  		err = $ifaceNil;
 63246  		_r = $clone(t, time.Time).Year(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 63247  		year = _r;
 63248  		if (1950 <= year && year < 2000) {
 63249  			dst = appendTwoDigits(dst, year - 1900 >> 0);
 63250  		} else if (2000 <= year && year < 2050) {
 63251  			dst = appendTwoDigits(dst, year - 2000 >> 0);
 63252  		} else {
 63253  			_tmp = sliceType.nil;
 63254  			_tmp$1 = (x$3 = new StructuralError.ptr("cannot represent time as UTCTime"), new x$3.constructor.elem(x$3));
 63255  			ret = _tmp;
 63256  			err = _tmp$1;
 63257  			$s = -1; return [ret, err];
 63258  		}
 63259  		_r$1 = appendTimeCommon(dst, $clone(t, time.Time)); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 63260  		_tmp$2 = _r$1;
 63261  		_tmp$3 = $ifaceNil;
 63262  		ret = _tmp$2;
 63263  		err = _tmp$3;
 63264  		$s = -1; return [ret, err];
 63265  		/* */ } return; } if ($f === undefined) { $f = { $blk: appendUTCTime }; } $f._r = _r; $f._r$1 = _r$1; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f.dst = dst; $f.err = err; $f.ret = ret; $f.t = t; $f.x$3 = x$3; $f.year = year; $f.$s = $s; $f.$r = $r; return $f;
 63266  	};
 63267  	appendGeneralizedTime = function(dst, t) {
 63268  		var _r, _r$1, _tmp, _tmp$1, _tmp$2, _tmp$3, dst, err, ret, t, x$3, year, $s, $r;
 63269  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; dst = $f.dst; err = $f.err; ret = $f.ret; t = $f.t; x$3 = $f.x$3; year = $f.year; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 63270  		ret = sliceType.nil;
 63271  		err = $ifaceNil;
 63272  		_r = $clone(t, time.Time).Year(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 63273  		year = _r;
 63274  		if (year < 0 || year > 9999) {
 63275  			_tmp = sliceType.nil;
 63276  			_tmp$1 = (x$3 = new StructuralError.ptr("cannot represent time as GeneralizedTime"), new x$3.constructor.elem(x$3));
 63277  			ret = _tmp;
 63278  			err = _tmp$1;
 63279  			$s = -1; return [ret, err];
 63280  		}
 63281  		dst = appendFourDigits(dst, year);
 63282  		_r$1 = appendTimeCommon(dst, $clone(t, time.Time)); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 63283  		_tmp$2 = _r$1;
 63284  		_tmp$3 = $ifaceNil;
 63285  		ret = _tmp$2;
 63286  		err = _tmp$3;
 63287  		$s = -1; return [ret, err];
 63288  		/* */ } return; } if ($f === undefined) { $f = { $blk: appendGeneralizedTime }; } $f._r = _r; $f._r$1 = _r$1; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f.dst = dst; $f.err = err; $f.ret = ret; $f.t = t; $f.x$3 = x$3; $f.year = year; $f.$s = $s; $f.$r = $r; return $f;
 63289  	};
 63290  	appendTimeCommon = function(dst, t) {
 63291  		var _q, _q$1, _q$2, _r, _r$1, _r$2, _r$3, _tuple, _tuple$1, _tuple$2, day, dst, hour, min, month, offset, offsetMinutes, sec, t, $s, $r;
 63292  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _q = $f._q; _q$1 = $f._q$1; _q$2 = $f._q$2; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; day = $f.day; dst = $f.dst; hour = $f.hour; min = $f.min; month = $f.month; offset = $f.offset; offsetMinutes = $f.offsetMinutes; sec = $f.sec; t = $f.t; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 63293  		_r = $clone(t, time.Time).Date(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 63294  		_tuple = _r;
 63295  		month = _tuple[1];
 63296  		day = _tuple[2];
 63297  		dst = appendTwoDigits(dst, ((month >> 0)));
 63298  		dst = appendTwoDigits(dst, day);
 63299  		_r$1 = $clone(t, time.Time).Clock(); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 63300  		_tuple$1 = _r$1;
 63301  		hour = _tuple$1[0];
 63302  		min = _tuple$1[1];
 63303  		sec = _tuple$1[2];
 63304  		dst = appendTwoDigits(dst, hour);
 63305  		dst = appendTwoDigits(dst, min);
 63306  		dst = appendTwoDigits(dst, sec);
 63307  		_r$2 = $clone(t, time.Time).Zone(); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 63308  		_tuple$2 = _r$2;
 63309  		offset = _tuple$2[1];
 63310  		if (((_q = offset / 60, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")) === 0)) {
 63311  			$s = -1; return $append(dst, 90);
 63312  		} else if (offset > 0) {
 63313  			dst = $append(dst, 43);
 63314  		} else if (offset < 0) {
 63315  			dst = $append(dst, 45);
 63316  		}
 63317  		offsetMinutes = (_q$1 = offset / 60, (_q$1 === _q$1 && _q$1 !== 1/0 && _q$1 !== -1/0) ? _q$1 >> 0 : $throwRuntimeError("integer divide by zero"));
 63318  		if (offsetMinutes < 0) {
 63319  			offsetMinutes = -offsetMinutes;
 63320  		}
 63321  		dst = appendTwoDigits(dst, (_q$2 = offsetMinutes / 60, (_q$2 === _q$2 && _q$2 !== 1/0 && _q$2 !== -1/0) ? _q$2 >> 0 : $throwRuntimeError("integer divide by zero")));
 63322  		dst = appendTwoDigits(dst, (_r$3 = offsetMinutes % 60, _r$3 === _r$3 ? _r$3 : $throwRuntimeError("integer divide by zero")));
 63323  		$s = -1; return dst;
 63324  		/* */ } return; } if ($f === undefined) { $f = { $blk: appendTimeCommon }; } $f._q = _q; $f._q$1 = _q$1; $f._q$2 = _q$2; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f.day = day; $f.dst = dst; $f.hour = hour; $f.min = min; $f.month = month; $f.offset = offset; $f.offsetMinutes = offsetMinutes; $f.sec = sec; $f.t = t; $f.$s = $s; $f.$r = $r; return $f;
 63325  	};
 63326  	stripTagAndLength = function(in$1) {
 63327  		var _tuple, err, in$1, offset;
 63328  		_tuple = parseTagAndLength(in$1, 0);
 63329  		offset = _tuple[1];
 63330  		err = _tuple[2];
 63331  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 63332  			return in$1;
 63333  		}
 63334  		return $subslice(in$1, offset);
 63335  	};
 63336  	makeBody = function(value, params) {
 63337  		var _1, _2, _3, _4, _5, _arg, _arg$1, _arg$2, _arg$3, _r, _r$1, _r$10, _r$11, _r$12, _r$13, _r$14, _r$15, _r$16, _r$17, _r$18, _r$19, _r$2, _r$20, _r$21, _r$22, _r$23, _r$24, _r$25, _r$26, _r$27, _r$28, _r$29, _r$3, _r$30, _r$31, _r$32, _r$33, _r$34, _r$35, _r$36, _r$37, _r$38, _r$39, _r$4, _r$40, _r$41, _r$42, _r$5, _r$6, _r$7, _r$8, _r$9, _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$14, _tmp$15, _tmp$16, _tmp$17, _tmp$18, _tmp$19, _tmp$2, _tmp$20, _tmp$21, _tmp$22, _tmp$23, _tmp$24, _tmp$25, _tmp$26, _tmp$27, _tmp$28, _tmp$29, _tmp$3, _tmp$30, _tmp$31, _tmp$32, _tmp$33, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, _tuple$1, _tuple$10, _tuple$2, _tuple$3, _tuple$4, _tuple$5, _tuple$6, _tuple$7, _tuple$8, _tuple$9, _v, bytes, e, err, fp, i, i$1, i$2, l, m, m$1, n, n1, params, s, sliceType$4, startingField, t, t$1, v, value, x$3, x$4, x$5, x$6, x$7, x$8, x$9, $s, $r;
 63338  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _2 = $f._2; _3 = $f._3; _4 = $f._4; _5 = $f._5; _arg = $f._arg; _arg$1 = $f._arg$1; _arg$2 = $f._arg$2; _arg$3 = $f._arg$3; _r = $f._r; _r$1 = $f._r$1; _r$10 = $f._r$10; _r$11 = $f._r$11; _r$12 = $f._r$12; _r$13 = $f._r$13; _r$14 = $f._r$14; _r$15 = $f._r$15; _r$16 = $f._r$16; _r$17 = $f._r$17; _r$18 = $f._r$18; _r$19 = $f._r$19; _r$2 = $f._r$2; _r$20 = $f._r$20; _r$21 = $f._r$21; _r$22 = $f._r$22; _r$23 = $f._r$23; _r$24 = $f._r$24; _r$25 = $f._r$25; _r$26 = $f._r$26; _r$27 = $f._r$27; _r$28 = $f._r$28; _r$29 = $f._r$29; _r$3 = $f._r$3; _r$30 = $f._r$30; _r$31 = $f._r$31; _r$32 = $f._r$32; _r$33 = $f._r$33; _r$34 = $f._r$34; _r$35 = $f._r$35; _r$36 = $f._r$36; _r$37 = $f._r$37; _r$38 = $f._r$38; _r$39 = $f._r$39; _r$4 = $f._r$4; _r$40 = $f._r$40; _r$41 = $f._r$41; _r$42 = $f._r$42; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _r$8 = $f._r$8; _r$9 = $f._r$9; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$10 = $f._tmp$10; _tmp$11 = $f._tmp$11; _tmp$12 = $f._tmp$12; _tmp$13 = $f._tmp$13; _tmp$14 = $f._tmp$14; _tmp$15 = $f._tmp$15; _tmp$16 = $f._tmp$16; _tmp$17 = $f._tmp$17; _tmp$18 = $f._tmp$18; _tmp$19 = $f._tmp$19; _tmp$2 = $f._tmp$2; _tmp$20 = $f._tmp$20; _tmp$21 = $f._tmp$21; _tmp$22 = $f._tmp$22; _tmp$23 = $f._tmp$23; _tmp$24 = $f._tmp$24; _tmp$25 = $f._tmp$25; _tmp$26 = $f._tmp$26; _tmp$27 = $f._tmp$27; _tmp$28 = $f._tmp$28; _tmp$29 = $f._tmp$29; _tmp$3 = $f._tmp$3; _tmp$30 = $f._tmp$30; _tmp$31 = $f._tmp$31; _tmp$32 = $f._tmp$32; _tmp$33 = $f._tmp$33; _tmp$4 = $f._tmp$4; _tmp$5 = $f._tmp$5; _tmp$6 = $f._tmp$6; _tmp$7 = $f._tmp$7; _tmp$8 = $f._tmp$8; _tmp$9 = $f._tmp$9; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$10 = $f._tuple$10; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; _tuple$4 = $f._tuple$4; _tuple$5 = $f._tuple$5; _tuple$6 = $f._tuple$6; _tuple$7 = $f._tuple$7; _tuple$8 = $f._tuple$8; _tuple$9 = $f._tuple$9; _v = $f._v; bytes = $f.bytes; e = $f.e; err = $f.err; fp = $f.fp; i = $f.i; i$1 = $f.i$1; i$2 = $f.i$2; l = $f.l; m = $f.m; m$1 = $f.m$1; n = $f.n; n1 = $f.n1; params = $f.params; s = $f.s; sliceType$4 = $f.sliceType$4; startingField = $f.startingField; t = $f.t; t$1 = $f.t$1; v = $f.v; value = $f.value; x$3 = $f.x$3; x$4 = $f.x$4; x$5 = $f.x$5; x$6 = $f.x$6; x$7 = $f.x$7; x$8 = $f.x$8; x$9 = $f.x$9; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 63339  		e = $ifaceNil;
 63340  		err = $ifaceNil;
 63341  			_r = $clone(value, reflect.Value).Type(); /* */ $s = 2; case 2: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 63342  			_1 = _r;
 63343  			/* */ if ($interfaceIsEqual(_1, (flagType))) { $s = 3; continue; }
 63344  			/* */ if ($interfaceIsEqual(_1, (timeType))) { $s = 4; continue; }
 63345  			/* */ if ($interfaceIsEqual(_1, (bitStringType))) { $s = 5; continue; }
 63346  			/* */ if ($interfaceIsEqual(_1, (objectIdentifierType))) { $s = 6; continue; }
 63347  			/* */ if ($interfaceIsEqual(_1, (bigIntType))) { $s = 7; continue; }
 63348  			/* */ $s = 8; continue;
 63349  			/* if ($interfaceIsEqual(_1, (flagType))) { */ case 3:
 63350  				_tmp = (bytesEncoder.nil);
 63351  				_tmp$1 = $ifaceNil;
 63352  				e = _tmp;
 63353  				err = _tmp$1;
 63354  				$s = -1; return [e, err];
 63355  			/* } else if ($interfaceIsEqual(_1, (timeType))) { */ case 4:
 63356  				_r$1 = $clone(value, reflect.Value).Interface(); /* */ $s = 9; case 9: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 63357  				t = $clone($assertType(_r$1, time.Time), time.Time);
 63358  				if (params.timeType === 24) { _v = true; $s = 12; continue s; }
 63359  				_r$2 = outsideUTCRange($clone(t, time.Time)); /* */ $s = 13; case 13: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 63360  				_v = _r$2; case 12:
 63361  				/* */ if (_v) { $s = 10; continue; }
 63362  				/* */ $s = 11; continue;
 63363  				/* if (_v) { */ case 10:
 63364  					_r$3 = makeGeneralizedTime($clone(t, time.Time)); /* */ $s = 14; case 14: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 63365  					_tuple = _r$3;
 63366  					e = _tuple[0];
 63367  					err = _tuple[1];
 63368  					$s = -1; return [e, err];
 63369  				/* } */ case 11:
 63370  				_r$4 = makeUTCTime($clone(t, time.Time)); /* */ $s = 15; case 15: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 63371  				_tuple$1 = _r$4;
 63372  				e = _tuple$1[0];
 63373  				err = _tuple$1[1];
 63374  				$s = -1; return [e, err];
 63375  			/* } else if ($interfaceIsEqual(_1, (bitStringType))) { */ case 5:
 63376  				_r$5 = $clone(value, reflect.Value).Interface(); /* */ $s = 16; case 16: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
 63377  				_tmp$2 = (x$3 = ($clone($assertType(_r$5, BitString), bitStringEncoder)), new x$3.constructor.elem(x$3));
 63378  				_tmp$3 = $ifaceNil;
 63379  				e = _tmp$2;
 63380  				err = _tmp$3;
 63381  				$s = -1; return [e, err];
 63382  			/* } else if ($interfaceIsEqual(_1, (objectIdentifierType))) { */ case 6:
 63383  				_r$6 = $clone(value, reflect.Value).Interface(); /* */ $s = 17; case 17: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
 63384  				_r$7 = makeObjectIdentifier((x$4 = $assertType(_r$6, ObjectIdentifier), $subslice(new sliceType$1(x$4.$array), x$4.$offset, x$4.$offset + x$4.$length))); /* */ $s = 18; case 18: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
 63385  				_tuple$2 = _r$7;
 63386  				e = _tuple$2[0];
 63387  				err = _tuple$2[1];
 63388  				$s = -1; return [e, err];
 63389  			/* } else if ($interfaceIsEqual(_1, (bigIntType))) { */ case 7:
 63390  				_r$8 = $clone(value, reflect.Value).Interface(); /* */ $s = 19; case 19: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
 63391  				_r$9 = makeBigInt($assertType(_r$8, ptrType$1)); /* */ $s = 20; case 20: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 63392  				_tuple$3 = _r$9;
 63393  				e = _tuple$3[0];
 63394  				err = _tuple$3[1];
 63395  				$s = -1; return [e, err];
 63396  			/* } */ case 8:
 63397  		case 1:
 63398  			v = value;
 63399  			_2 = $clone(v, reflect.Value).Kind();
 63400  			/* */ if (_2 === (1)) { $s = 22; continue; }
 63401  			/* */ if ((_2 === (2)) || (_2 === (3)) || (_2 === (4)) || (_2 === (5)) || (_2 === (6))) { $s = 23; continue; }
 63402  			/* */ if (_2 === (25)) { $s = 24; continue; }
 63403  			/* */ if (_2 === (23)) { $s = 25; continue; }
 63404  			/* */ if (_2 === (24)) { $s = 26; continue; }
 63405  			/* */ $s = 27; continue;
 63406  			/* if (_2 === (1)) { */ case 22:
 63407  				if ($clone(v, reflect.Value).Bool()) {
 63408  					_tmp$4 = byteFFEncoder;
 63409  					_tmp$5 = $ifaceNil;
 63410  					e = _tmp$4;
 63411  					err = _tmp$5;
 63412  					$s = -1; return [e, err];
 63413  				}
 63414  				_tmp$6 = byte00Encoder;
 63415  				_tmp$7 = $ifaceNil;
 63416  				e = _tmp$6;
 63417  				err = _tmp$7;
 63418  				$s = -1; return [e, err];
 63419  			/* } else if ((_2 === (2)) || (_2 === (3)) || (_2 === (4)) || (_2 === (5)) || (_2 === (6))) { */ case 23:
 63420  				_tmp$8 = ((x$5 = $clone(v, reflect.Value).Int(), new int64Encoder(x$5.$high, x$5.$low)));
 63421  				_tmp$9 = $ifaceNil;
 63422  				e = _tmp$8;
 63423  				err = _tmp$9;
 63424  				$s = -1; return [e, err];
 63425  			/* } else if (_2 === (25)) { */ case 24:
 63426  				_r$10 = $clone(v, reflect.Value).Type(); /* */ $s = 28; case 28: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
 63427  				t$1 = _r$10;
 63428  				i = 0;
 63429  				/* while (true) { */ case 29:
 63430  					_r$11 = t$1.NumField(); /* */ $s = 31; case 31: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; }
 63431  					/* if (!(i < _r$11)) { break; } */ if(!(i < _r$11)) { $s = 30; continue; }
 63432  					_r$12 = t$1.Field(i); /* */ $s = 34; case 34: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; }
 63433  					/* */ if (!(_r$12.PkgPath === "")) { $s = 32; continue; }
 63434  					/* */ $s = 33; continue;
 63435  					/* if (!(_r$12.PkgPath === "")) { */ case 32:
 63436  						_tmp$10 = $ifaceNil;
 63437  						_tmp$11 = (x$6 = new StructuralError.ptr("struct contains unexported fields"), new x$6.constructor.elem(x$6));
 63438  						e = _tmp$10;
 63439  						err = _tmp$11;
 63440  						$s = -1; return [e, err];
 63441  					/* } */ case 33:
 63442  					i = i + (1) >> 0;
 63443  				/* } */ $s = 29; continue; case 30:
 63444  				startingField = 0;
 63445  				_r$13 = t$1.NumField(); /* */ $s = 35; case 35: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; }
 63446  				n = _r$13;
 63447  				if (n === 0) {
 63448  					_tmp$12 = (bytesEncoder.nil);
 63449  					_tmp$13 = $ifaceNil;
 63450  					e = _tmp$12;
 63451  					err = _tmp$13;
 63452  					$s = -1; return [e, err];
 63453  				}
 63454  				_r$14 = t$1.Field(0); /* */ $s = 38; case 38: if($c) { $c = false; _r$14 = _r$14.$blk(); } if (_r$14 && _r$14.$blk !== undefined) { break s; }
 63455  				/* */ if ($interfaceIsEqual(_r$14.Type, rawContentsType)) { $s = 36; continue; }
 63456  				/* */ $s = 37; continue;
 63457  				/* if ($interfaceIsEqual(_r$14.Type, rawContentsType)) { */ case 36:
 63458  					_r$15 = $clone(v, reflect.Value).Field(0); /* */ $s = 39; case 39: if($c) { $c = false; _r$15 = _r$15.$blk(); } if (_r$15 && _r$15.$blk !== undefined) { break s; }
 63459  					s = _r$15;
 63460  					/* */ if ($clone(s, reflect.Value).Len() > 0) { $s = 40; continue; }
 63461  					/* */ $s = 41; continue;
 63462  					/* if ($clone(s, reflect.Value).Len() > 0) { */ case 40:
 63463  						_r$16 = $clone(s, reflect.Value).Bytes(); /* */ $s = 42; case 42: if($c) { $c = false; _r$16 = _r$16.$blk(); } if (_r$16 && _r$16.$blk !== undefined) { break s; }
 63464  						bytes = _r$16;
 63465  						_tmp$14 = ((x$7 = stripTagAndLength(bytes), $subslice(new bytesEncoder(x$7.$array), x$7.$offset, x$7.$offset + x$7.$length)));
 63466  						_tmp$15 = $ifaceNil;
 63467  						e = _tmp$14;
 63468  						err = _tmp$15;
 63469  						$s = -1; return [e, err];
 63470  					/* } */ case 41:
 63471  					startingField = 1;
 63472  				/* } */ case 37:
 63473  					n1 = n - startingField >> 0;
 63474  					_3 = n1;
 63475  					/* */ if (_3 === (0)) { $s = 44; continue; }
 63476  					/* */ if (_3 === (1)) { $s = 45; continue; }
 63477  					/* */ $s = 46; continue;
 63478  					/* if (_3 === (0)) { */ case 44:
 63479  						_tmp$16 = (bytesEncoder.nil);
 63480  						_tmp$17 = $ifaceNil;
 63481  						e = _tmp$16;
 63482  						err = _tmp$17;
 63483  						$s = -1; return [e, err];
 63484  					/* } else if (_3 === (1)) { */ case 45:
 63485  						_r$17 = $clone(v, reflect.Value).Field(startingField); /* */ $s = 48; case 48: if($c) { $c = false; _r$17 = _r$17.$blk(); } if (_r$17 && _r$17.$blk !== undefined) { break s; }
 63486  						_arg = $clone(_r$17, reflect.Value);
 63487  						_r$18 = t$1.Field(startingField); /* */ $s = 49; case 49: if($c) { $c = false; _r$18 = _r$18.$blk(); } if (_r$18 && _r$18.$blk !== undefined) { break s; }
 63488  						_r$19 = new reflect.StructTag(_r$18.Tag).Get("asn1"); /* */ $s = 50; case 50: if($c) { $c = false; _r$19 = _r$19.$blk(); } if (_r$19 && _r$19.$blk !== undefined) { break s; }
 63489  						_r$20 = parseFieldParameters(_r$19); /* */ $s = 51; case 51: if($c) { $c = false; _r$20 = _r$20.$blk(); } if (_r$20 && _r$20.$blk !== undefined) { break s; }
 63490  						_arg$1 = $clone(_r$20, fieldParameters);
 63491  						_r$21 = makeField(_arg, _arg$1); /* */ $s = 52; case 52: if($c) { $c = false; _r$21 = _r$21.$blk(); } if (_r$21 && _r$21.$blk !== undefined) { break s; }
 63492  						_tuple$4 = _r$21;
 63493  						e = _tuple$4[0];
 63494  						err = _tuple$4[1];
 63495  						$s = -1; return [e, err];
 63496  					/* } else { */ case 46:
 63497  						m = $makeSlice(sliceType$3, n1);
 63498  						i$1 = 0;
 63499  						/* while (true) { */ case 53:
 63500  							/* if (!(i$1 < n1)) { break; } */ if(!(i$1 < n1)) { $s = 54; continue; }
 63501  							_r$22 = $clone(v, reflect.Value).Field(i$1 + startingField >> 0); /* */ $s = 55; case 55: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; }
 63502  							_arg$2 = $clone(_r$22, reflect.Value);
 63503  							_r$23 = t$1.Field(i$1 + startingField >> 0); /* */ $s = 56; case 56: if($c) { $c = false; _r$23 = _r$23.$blk(); } if (_r$23 && _r$23.$blk !== undefined) { break s; }
 63504  							_r$24 = new reflect.StructTag(_r$23.Tag).Get("asn1"); /* */ $s = 57; case 57: if($c) { $c = false; _r$24 = _r$24.$blk(); } if (_r$24 && _r$24.$blk !== undefined) { break s; }
 63505  							_r$25 = parseFieldParameters(_r$24); /* */ $s = 58; case 58: if($c) { $c = false; _r$25 = _r$25.$blk(); } if (_r$25 && _r$25.$blk !== undefined) { break s; }
 63506  							_arg$3 = $clone(_r$25, fieldParameters);
 63507  							_r$26 = makeField(_arg$2, _arg$3); /* */ $s = 59; case 59: if($c) { $c = false; _r$26 = _r$26.$blk(); } if (_r$26 && _r$26.$blk !== undefined) { break s; }
 63508  							_tuple$5 = _r$26;
 63509  							((i$1 < 0 || i$1 >= m.$length) ? ($throwRuntimeError("index out of range"), undefined) : m.$array[m.$offset + i$1] = _tuple$5[0]);
 63510  							err = _tuple$5[1];
 63511  							if (!($interfaceIsEqual(err, $ifaceNil))) {
 63512  								_tmp$18 = $ifaceNil;
 63513  								_tmp$19 = err;
 63514  								e = _tmp$18;
 63515  								err = _tmp$19;
 63516  								$s = -1; return [e, err];
 63517  							}
 63518  							i$1 = i$1 + (1) >> 0;
 63519  						/* } */ $s = 53; continue; case 54:
 63520  						_tmp$20 = ($subslice(new multiEncoder(m.$array), m.$offset, m.$offset + m.$length));
 63521  						_tmp$21 = $ifaceNil;
 63522  						e = _tmp$20;
 63523  						err = _tmp$21;
 63524  						$s = -1; return [e, err];
 63525  					/* } */ case 47:
 63526  				case 43:
 63527  				$s = 27; continue;
 63528  			/* } else if (_2 === (23)) { */ case 25:
 63529  				_r$27 = $clone(v, reflect.Value).Type(); /* */ $s = 60; case 60: if($c) { $c = false; _r$27 = _r$27.$blk(); } if (_r$27 && _r$27.$blk !== undefined) { break s; }
 63530  				sliceType$4 = _r$27;
 63531  				_r$28 = sliceType$4.Elem(); /* */ $s = 63; case 63: if($c) { $c = false; _r$28 = _r$28.$blk(); } if (_r$28 && _r$28.$blk !== undefined) { break s; }
 63532  				_r$29 = _r$28.Kind(); /* */ $s = 64; case 64: if($c) { $c = false; _r$29 = _r$29.$blk(); } if (_r$29 && _r$29.$blk !== undefined) { break s; }
 63533  				/* */ if (_r$29 === 8) { $s = 61; continue; }
 63534  				/* */ $s = 62; continue;
 63535  				/* if (_r$29 === 8) { */ case 61:
 63536  					_r$30 = $clone(v, reflect.Value).Bytes(); /* */ $s = 65; case 65: if($c) { $c = false; _r$30 = _r$30.$blk(); } if (_r$30 && _r$30.$blk !== undefined) { break s; }
 63537  					_tmp$22 = ((x$8 = _r$30, $subslice(new bytesEncoder(x$8.$array), x$8.$offset, x$8.$offset + x$8.$length)));
 63538  					_tmp$23 = $ifaceNil;
 63539  					e = _tmp$22;
 63540  					err = _tmp$23;
 63541  					$s = -1; return [e, err];
 63542  				/* } */ case 62:
 63543  				fp = new fieldParameters.ptr(false, false, false, ptrType$3.nil, ptrType$4.nil, 0, 0, false, false);
 63544  					l = $clone(v, reflect.Value).Len();
 63545  					_4 = l;
 63546  					/* */ if (_4 === (0)) { $s = 67; continue; }
 63547  					/* */ if (_4 === (1)) { $s = 68; continue; }
 63548  					/* */ $s = 69; continue;
 63549  					/* if (_4 === (0)) { */ case 67:
 63550  						_tmp$24 = (bytesEncoder.nil);
 63551  						_tmp$25 = $ifaceNil;
 63552  						e = _tmp$24;
 63553  						err = _tmp$25;
 63554  						$s = -1; return [e, err];
 63555  					/* } else if (_4 === (1)) { */ case 68:
 63556  						_r$31 = $clone(v, reflect.Value).Index(0); /* */ $s = 71; case 71: if($c) { $c = false; _r$31 = _r$31.$blk(); } if (_r$31 && _r$31.$blk !== undefined) { break s; }
 63557  						_r$32 = makeField($clone(_r$31, reflect.Value), $clone(fp, fieldParameters)); /* */ $s = 72; case 72: if($c) { $c = false; _r$32 = _r$32.$blk(); } if (_r$32 && _r$32.$blk !== undefined) { break s; }
 63558  						_tuple$6 = _r$32;
 63559  						e = _tuple$6[0];
 63560  						err = _tuple$6[1];
 63561  						$s = -1; return [e, err];
 63562  					/* } else { */ case 69:
 63563  						m$1 = $makeSlice(sliceType$3, l);
 63564  						i$2 = 0;
 63565  						/* while (true) { */ case 73:
 63566  							/* if (!(i$2 < l)) { break; } */ if(!(i$2 < l)) { $s = 74; continue; }
 63567  							_r$33 = $clone(v, reflect.Value).Index(i$2); /* */ $s = 75; case 75: if($c) { $c = false; _r$33 = _r$33.$blk(); } if (_r$33 && _r$33.$blk !== undefined) { break s; }
 63568  							_r$34 = makeField($clone(_r$33, reflect.Value), $clone(fp, fieldParameters)); /* */ $s = 76; case 76: if($c) { $c = false; _r$34 = _r$34.$blk(); } if (_r$34 && _r$34.$blk !== undefined) { break s; }
 63569  							_tuple$7 = _r$34;
 63570  							((i$2 < 0 || i$2 >= m$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : m$1.$array[m$1.$offset + i$2] = _tuple$7[0]);
 63571  							err = _tuple$7[1];
 63572  							if (!($interfaceIsEqual(err, $ifaceNil))) {
 63573  								_tmp$26 = $ifaceNil;
 63574  								_tmp$27 = err;
 63575  								e = _tmp$26;
 63576  								err = _tmp$27;
 63577  								$s = -1; return [e, err];
 63578  							}
 63579  							i$2 = i$2 + (1) >> 0;
 63580  						/* } */ $s = 73; continue; case 74:
 63581  						_tmp$28 = ($subslice(new multiEncoder(m$1.$array), m$1.$offset, m$1.$offset + m$1.$length));
 63582  						_tmp$29 = $ifaceNil;
 63583  						e = _tmp$28;
 63584  						err = _tmp$29;
 63585  						$s = -1; return [e, err];
 63586  					/* } */ case 70:
 63587  				case 66:
 63588  				$s = 27; continue;
 63589  			/* } else if (_2 === (24)) { */ case 26:
 63590  					_5 = params.stringType;
 63591  					/* */ if (_5 === (22)) { $s = 78; continue; }
 63592  					/* */ if (_5 === (19)) { $s = 79; continue; }
 63593  					/* */ if (_5 === (18)) { $s = 80; continue; }
 63594  					/* */ $s = 81; continue;
 63595  					/* if (_5 === (22)) { */ case 78:
 63596  						_r$35 = $clone(v, reflect.Value).String(); /* */ $s = 83; case 83: if($c) { $c = false; _r$35 = _r$35.$blk(); } if (_r$35 && _r$35.$blk !== undefined) { break s; }
 63597  						_r$36 = makeIA5String(_r$35); /* */ $s = 84; case 84: if($c) { $c = false; _r$36 = _r$36.$blk(); } if (_r$36 && _r$36.$blk !== undefined) { break s; }
 63598  						_tuple$8 = _r$36;
 63599  						e = _tuple$8[0];
 63600  						err = _tuple$8[1];
 63601  						$s = -1; return [e, err];
 63602  					/* } else if (_5 === (19)) { */ case 79:
 63603  						_r$37 = $clone(v, reflect.Value).String(); /* */ $s = 85; case 85: if($c) { $c = false; _r$37 = _r$37.$blk(); } if (_r$37 && _r$37.$blk !== undefined) { break s; }
 63604  						_r$38 = makePrintableString(_r$37); /* */ $s = 86; case 86: if($c) { $c = false; _r$38 = _r$38.$blk(); } if (_r$38 && _r$38.$blk !== undefined) { break s; }
 63605  						_tuple$9 = _r$38;
 63606  						e = _tuple$9[0];
 63607  						err = _tuple$9[1];
 63608  						$s = -1; return [e, err];
 63609  					/* } else if (_5 === (18)) { */ case 80:
 63610  						_r$39 = $clone(v, reflect.Value).String(); /* */ $s = 87; case 87: if($c) { $c = false; _r$39 = _r$39.$blk(); } if (_r$39 && _r$39.$blk !== undefined) { break s; }
 63611  						_r$40 = makeNumericString(_r$39); /* */ $s = 88; case 88: if($c) { $c = false; _r$40 = _r$40.$blk(); } if (_r$40 && _r$40.$blk !== undefined) { break s; }
 63612  						_tuple$10 = _r$40;
 63613  						e = _tuple$10[0];
 63614  						err = _tuple$10[1];
 63615  						$s = -1; return [e, err];
 63616  					/* } else { */ case 81:
 63617  						_r$41 = $clone(v, reflect.Value).String(); /* */ $s = 89; case 89: if($c) { $c = false; _r$41 = _r$41.$blk(); } if (_r$41 && _r$41.$blk !== undefined) { break s; }
 63618  						_r$42 = makeUTF8String(_r$41); /* */ $s = 90; case 90: if($c) { $c = false; _r$42 = _r$42.$blk(); } if (_r$42 && _r$42.$blk !== undefined) { break s; }
 63619  						_tmp$30 = _r$42;
 63620  						_tmp$31 = $ifaceNil;
 63621  						e = _tmp$30;
 63622  						err = _tmp$31;
 63623  						$s = -1; return [e, err];
 63624  					/* } */ case 82:
 63625  				case 77:
 63626  			/* } */ case 27:
 63627  		case 21:
 63628  		_tmp$32 = $ifaceNil;
 63629  		_tmp$33 = (x$9 = new StructuralError.ptr("unknown Go type"), new x$9.constructor.elem(x$9));
 63630  		e = _tmp$32;
 63631  		err = _tmp$33;
 63632  		$s = -1; return [e, err];
 63633  		/* */ } return; } if ($f === undefined) { $f = { $blk: makeBody }; } $f._1 = _1; $f._2 = _2; $f._3 = _3; $f._4 = _4; $f._5 = _5; $f._arg = _arg; $f._arg$1 = _arg$1; $f._arg$2 = _arg$2; $f._arg$3 = _arg$3; $f._r = _r; $f._r$1 = _r$1; $f._r$10 = _r$10; $f._r$11 = _r$11; $f._r$12 = _r$12; $f._r$13 = _r$13; $f._r$14 = _r$14; $f._r$15 = _r$15; $f._r$16 = _r$16; $f._r$17 = _r$17; $f._r$18 = _r$18; $f._r$19 = _r$19; $f._r$2 = _r$2; $f._r$20 = _r$20; $f._r$21 = _r$21; $f._r$22 = _r$22; $f._r$23 = _r$23; $f._r$24 = _r$24; $f._r$25 = _r$25; $f._r$26 = _r$26; $f._r$27 = _r$27; $f._r$28 = _r$28; $f._r$29 = _r$29; $f._r$3 = _r$3; $f._r$30 = _r$30; $f._r$31 = _r$31; $f._r$32 = _r$32; $f._r$33 = _r$33; $f._r$34 = _r$34; $f._r$35 = _r$35; $f._r$36 = _r$36; $f._r$37 = _r$37; $f._r$38 = _r$38; $f._r$39 = _r$39; $f._r$4 = _r$4; $f._r$40 = _r$40; $f._r$41 = _r$41; $f._r$42 = _r$42; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._r$8 = _r$8; $f._r$9 = _r$9; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$10 = _tmp$10; $f._tmp$11 = _tmp$11; $f._tmp$12 = _tmp$12; $f._tmp$13 = _tmp$13; $f._tmp$14 = _tmp$14; $f._tmp$15 = _tmp$15; $f._tmp$16 = _tmp$16; $f._tmp$17 = _tmp$17; $f._tmp$18 = _tmp$18; $f._tmp$19 = _tmp$19; $f._tmp$2 = _tmp$2; $f._tmp$20 = _tmp$20; $f._tmp$21 = _tmp$21; $f._tmp$22 = _tmp$22; $f._tmp$23 = _tmp$23; $f._tmp$24 = _tmp$24; $f._tmp$25 = _tmp$25; $f._tmp$26 = _tmp$26; $f._tmp$27 = _tmp$27; $f._tmp$28 = _tmp$28; $f._tmp$29 = _tmp$29; $f._tmp$3 = _tmp$3; $f._tmp$30 = _tmp$30; $f._tmp$31 = _tmp$31; $f._tmp$32 = _tmp$32; $f._tmp$33 = _tmp$33; $f._tmp$4 = _tmp$4; $f._tmp$5 = _tmp$5; $f._tmp$6 = _tmp$6; $f._tmp$7 = _tmp$7; $f._tmp$8 = _tmp$8; $f._tmp$9 = _tmp$9; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$10 = _tuple$10; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f._tuple$4 = _tuple$4; $f._tuple$5 = _tuple$5; $f._tuple$6 = _tuple$6; $f._tuple$7 = _tuple$7; $f._tuple$8 = _tuple$8; $f._tuple$9 = _tuple$9; $f._v = _v; $f.bytes = bytes; $f.e = e; $f.err = err; $f.fp = fp; $f.i = i; $f.i$1 = i$1; $f.i$2 = i$2; $f.l = l; $f.m = m; $f.m$1 = m$1; $f.n = n; $f.n1 = n1; $f.params = params; $f.s = s; $f.sliceType$4 = sliceType$4; $f.startingField = startingField; $f.t = t; $f.t$1 = t$1; $f.v = v; $f.value = value; $f.x$3 = x$3; $f.x$4 = x$4; $f.x$5 = x$5; $f.x$6 = x$6; $f.x$7 = x$7; $f.x$8 = x$8; $f.x$9 = x$9; $f.$s = $s; $f.$r = $r; return $f;
 63634  	};
 63635  	makeField = function(v, params) {
 63636  		var _1, _arg, _arg$1, _arg$2, _arg$3, _arg$4, _arg$5, _arg$6, _i, _r, _r$1, _r$10, _r$11, _r$12, _r$13, _r$14, _r$15, _r$16, _r$17, _r$18, _r$19, _r$2, _r$20, _r$21, _r$22, _r$23, _r$24, _r$25, _r$26, _r$27, _r$28, _r$29, _r$3, _r$30, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, _rune, _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$14, _tmp$15, _tmp$16, _tmp$17, _tmp$18, _tmp$19, _tmp$2, _tmp$20, _tmp$21, _tmp$22, _tmp$23, _tmp$24, _tmp$25, _tmp$26, _tmp$27, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, _tuple$1, _tuple$2, _v, _v$1, bodyLen, class$1, defaultValue, e, err, isCompound, matchAny, ok, params, r, rv, t, t$1, tag, tt, v, x$10, x$11, x$12, x$3, x$4, x$5, x$6, x$7, x$8, x$9, $s, $r;
 63637  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _arg = $f._arg; _arg$1 = $f._arg$1; _arg$2 = $f._arg$2; _arg$3 = $f._arg$3; _arg$4 = $f._arg$4; _arg$5 = $f._arg$5; _arg$6 = $f._arg$6; _i = $f._i; _r = $f._r; _r$1 = $f._r$1; _r$10 = $f._r$10; _r$11 = $f._r$11; _r$12 = $f._r$12; _r$13 = $f._r$13; _r$14 = $f._r$14; _r$15 = $f._r$15; _r$16 = $f._r$16; _r$17 = $f._r$17; _r$18 = $f._r$18; _r$19 = $f._r$19; _r$2 = $f._r$2; _r$20 = $f._r$20; _r$21 = $f._r$21; _r$22 = $f._r$22; _r$23 = $f._r$23; _r$24 = $f._r$24; _r$25 = $f._r$25; _r$26 = $f._r$26; _r$27 = $f._r$27; _r$28 = $f._r$28; _r$29 = $f._r$29; _r$3 = $f._r$3; _r$30 = $f._r$30; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _r$8 = $f._r$8; _r$9 = $f._r$9; _ref = $f._ref; _rune = $f._rune; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$10 = $f._tmp$10; _tmp$11 = $f._tmp$11; _tmp$12 = $f._tmp$12; _tmp$13 = $f._tmp$13; _tmp$14 = $f._tmp$14; _tmp$15 = $f._tmp$15; _tmp$16 = $f._tmp$16; _tmp$17 = $f._tmp$17; _tmp$18 = $f._tmp$18; _tmp$19 = $f._tmp$19; _tmp$2 = $f._tmp$2; _tmp$20 = $f._tmp$20; _tmp$21 = $f._tmp$21; _tmp$22 = $f._tmp$22; _tmp$23 = $f._tmp$23; _tmp$24 = $f._tmp$24; _tmp$25 = $f._tmp$25; _tmp$26 = $f._tmp$26; _tmp$27 = $f._tmp$27; _tmp$3 = $f._tmp$3; _tmp$4 = $f._tmp$4; _tmp$5 = $f._tmp$5; _tmp$6 = $f._tmp$6; _tmp$7 = $f._tmp$7; _tmp$8 = $f._tmp$8; _tmp$9 = $f._tmp$9; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _v = $f._v; _v$1 = $f._v$1; bodyLen = $f.bodyLen; class$1 = $f.class$1; defaultValue = $f.defaultValue; e = $f.e; err = $f.err; isCompound = $f.isCompound; matchAny = $f.matchAny; ok = $f.ok; params = $f.params; r = $f.r; rv = $f.rv; t = $f.t; t$1 = $f.t$1; tag = $f.tag; tt = $f.tt; v = $f.v; x$10 = $f.x$10; x$11 = $f.x$11; x$12 = $f.x$12; x$3 = $f.x$3; x$4 = $f.x$4; x$5 = $f.x$5; x$6 = $f.x$6; x$7 = $f.x$7; x$8 = $f.x$8; x$9 = $f.x$9; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 63638  		e = $ifaceNil;
 63639  		err = $ifaceNil;
 63640  		/* */ if (!$clone(v, reflect.Value).IsValid()) { $s = 1; continue; }
 63641  		/* */ $s = 2; continue;
 63642  		/* if (!$clone(v, reflect.Value).IsValid()) { */ case 1:
 63643  			_tmp = $ifaceNil;
 63644  			_r = fmt.Errorf("asn1: cannot marshal nil value", new sliceType$2([])); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 63645  			_tmp$1 = _r;
 63646  			e = _tmp;
 63647  			err = _tmp$1;
 63648  			$s = -1; return [e, err];
 63649  		/* } */ case 2:
 63650  		if (!($clone(v, reflect.Value).Kind() === 20)) { _v = false; $s = 6; continue s; }
 63651  		_r$1 = $clone(v, reflect.Value).Type(); /* */ $s = 7; case 7: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 63652  		_r$2 = _r$1.NumMethod(); /* */ $s = 8; case 8: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 63653  		_v = _r$2 === 0; case 6:
 63654  		/* */ if (_v) { $s = 4; continue; }
 63655  		/* */ $s = 5; continue;
 63656  		/* if (_v) { */ case 4:
 63657  			_r$3 = $clone(v, reflect.Value).Elem(); /* */ $s = 9; case 9: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 63658  			_r$4 = makeField($clone(_r$3, reflect.Value), $clone(params, fieldParameters)); /* */ $s = 10; case 10: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 63659  			_tuple = _r$4;
 63660  			e = _tuple[0];
 63661  			err = _tuple[1];
 63662  			$s = -1; return [e, err];
 63663  		/* } */ case 5:
 63664  		if (($clone(v, reflect.Value).Kind() === 23) && ($clone(v, reflect.Value).Len() === 0) && params.omitEmpty) {
 63665  			_tmp$2 = (bytesEncoder.nil);
 63666  			_tmp$3 = $ifaceNil;
 63667  			e = _tmp$2;
 63668  			err = _tmp$3;
 63669  			$s = -1; return [e, err];
 63670  		}
 63671  		/* */ if (params.optional && !(params.defaultValue === ptrType$3.nil) && canHaveDefaultValue($clone(v, reflect.Value).Kind())) { $s = 11; continue; }
 63672  		/* */ $s = 12; continue;
 63673  		/* if (params.optional && !(params.defaultValue === ptrType$3.nil) && canHaveDefaultValue($clone(v, reflect.Value).Kind())) { */ case 11:
 63674  			_r$5 = $clone(v, reflect.Value).Type(); /* */ $s = 13; case 13: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
 63675  			_r$6 = reflect.New(_r$5); /* */ $s = 14; case 14: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
 63676  			_r$7 = $clone(_r$6, reflect.Value).Elem(); /* */ $s = 15; case 15: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
 63677  			defaultValue = _r$7;
 63678  			$clone(defaultValue, reflect.Value).SetInt(params.defaultValue.$get());
 63679  			_r$8 = $clone(v, reflect.Value).Interface(); /* */ $s = 18; case 18: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
 63680  			_arg = _r$8;
 63681  			_r$9 = $clone(defaultValue, reflect.Value).Interface(); /* */ $s = 19; case 19: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 63682  			_arg$1 = _r$9;
 63683  			_r$10 = reflect.DeepEqual(_arg, _arg$1); /* */ $s = 20; case 20: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
 63684  			/* */ if (_r$10) { $s = 16; continue; }
 63685  			/* */ $s = 17; continue;
 63686  			/* if (_r$10) { */ case 16:
 63687  				_tmp$4 = (bytesEncoder.nil);
 63688  				_tmp$5 = $ifaceNil;
 63689  				e = _tmp$4;
 63690  				err = _tmp$5;
 63691  				$s = -1; return [e, err];
 63692  			/* } */ case 17:
 63693  		/* } */ case 12:
 63694  		/* */ if (params.optional && params.defaultValue === ptrType$3.nil) { $s = 21; continue; }
 63695  		/* */ $s = 22; continue;
 63696  		/* if (params.optional && params.defaultValue === ptrType$3.nil) { */ case 21:
 63697  			_r$11 = $clone(v, reflect.Value).Interface(); /* */ $s = 25; case 25: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; }
 63698  			_arg$2 = _r$11;
 63699  			_r$12 = $clone(v, reflect.Value).Type(); /* */ $s = 26; case 26: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; }
 63700  			_r$13 = reflect.Zero(_r$12); /* */ $s = 27; case 27: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; }
 63701  			_r$14 = $clone(_r$13, reflect.Value).Interface(); /* */ $s = 28; case 28: if($c) { $c = false; _r$14 = _r$14.$blk(); } if (_r$14 && _r$14.$blk !== undefined) { break s; }
 63702  			_arg$3 = _r$14;
 63703  			_r$15 = reflect.DeepEqual(_arg$2, _arg$3); /* */ $s = 29; case 29: if($c) { $c = false; _r$15 = _r$15.$blk(); } if (_r$15 && _r$15.$blk !== undefined) { break s; }
 63704  			/* */ if (_r$15) { $s = 23; continue; }
 63705  			/* */ $s = 24; continue;
 63706  			/* if (_r$15) { */ case 23:
 63707  				_tmp$6 = (bytesEncoder.nil);
 63708  				_tmp$7 = $ifaceNil;
 63709  				e = _tmp$6;
 63710  				err = _tmp$7;
 63711  				$s = -1; return [e, err];
 63712  			/* } */ case 24:
 63713  		/* } */ case 22:
 63714  		_r$16 = $clone(v, reflect.Value).Type(); /* */ $s = 32; case 32: if($c) { $c = false; _r$16 = _r$16.$blk(); } if (_r$16 && _r$16.$blk !== undefined) { break s; }
 63715  		/* */ if ($interfaceIsEqual(_r$16, rawValueType)) { $s = 30; continue; }
 63716  		/* */ $s = 31; continue;
 63717  		/* if ($interfaceIsEqual(_r$16, rawValueType)) { */ case 30:
 63718  			_r$17 = $clone(v, reflect.Value).Interface(); /* */ $s = 33; case 33: if($c) { $c = false; _r$17 = _r$17.$blk(); } if (_r$17 && _r$17.$blk !== undefined) { break s; }
 63719  			rv = $clone($assertType(_r$17, RawValue), RawValue);
 63720  			if (!((rv.FullBytes.$length === 0))) {
 63721  				_tmp$8 = ((x$3 = rv.FullBytes, $subslice(new bytesEncoder(x$3.$array), x$3.$offset, x$3.$offset + x$3.$length)));
 63722  				_tmp$9 = $ifaceNil;
 63723  				e = _tmp$8;
 63724  				err = _tmp$9;
 63725  				$s = -1; return [e, err];
 63726  			}
 63727  			t = new taggedEncoder.ptr(arrayType$1.zero(), $ifaceNil, $ifaceNil);
 63728  			t.tag = ((x$4 = appendTagAndLength($subslice(new sliceType(t.scratch), 0, 0), new tagAndLength.ptr(rv.Class, rv.Tag, rv.Bytes.$length, rv.IsCompound)), $subslice(new bytesEncoder(x$4.$array), x$4.$offset, x$4.$offset + x$4.$length)));
 63729  			t.body = ((x$5 = rv.Bytes, $subslice(new bytesEncoder(x$5.$array), x$5.$offset, x$5.$offset + x$5.$length)));
 63730  			_tmp$10 = t;
 63731  			_tmp$11 = $ifaceNil;
 63732  			e = _tmp$10;
 63733  			err = _tmp$11;
 63734  			$s = -1; return [e, err];
 63735  		/* } */ case 31:
 63736  		_r$18 = $clone(v, reflect.Value).Type(); /* */ $s = 34; case 34: if($c) { $c = false; _r$18 = _r$18.$blk(); } if (_r$18 && _r$18.$blk !== undefined) { break s; }
 63737  		_r$19 = getUniversalType(_r$18); /* */ $s = 35; case 35: if($c) { $c = false; _r$19 = _r$19.$blk(); } if (_r$19 && _r$19.$blk !== undefined) { break s; }
 63738  		_tuple$1 = _r$19;
 63739  		matchAny = _tuple$1[0];
 63740  		tag = _tuple$1[1];
 63741  		isCompound = _tuple$1[2];
 63742  		ok = _tuple$1[3];
 63743  		/* */ if (!ok || matchAny) { $s = 36; continue; }
 63744  		/* */ $s = 37; continue;
 63745  		/* if (!ok || matchAny) { */ case 36:
 63746  			_tmp$12 = $ifaceNil;
 63747  			_r$20 = $clone(v, reflect.Value).Type(); /* */ $s = 38; case 38: if($c) { $c = false; _r$20 = _r$20.$blk(); } if (_r$20 && _r$20.$blk !== undefined) { break s; }
 63748  			_arg$4 = _r$20;
 63749  			_r$21 = fmt.Sprintf("unknown Go type: %v", new sliceType$2([_arg$4])); /* */ $s = 39; case 39: if($c) { $c = false; _r$21 = _r$21.$blk(); } if (_r$21 && _r$21.$blk !== undefined) { break s; }
 63750  			_tmp$13 = (x$6 = new StructuralError.ptr(_r$21), new x$6.constructor.elem(x$6));
 63751  			e = _tmp$12;
 63752  			err = _tmp$13;
 63753  			$s = -1; return [e, err];
 63754  		/* } */ case 37:
 63755  		if (!((params.timeType === 0)) && !((tag === 23))) {
 63756  			_tmp$14 = $ifaceNil;
 63757  			_tmp$15 = (x$7 = new StructuralError.ptr("explicit time type given to non-time member"), new x$7.constructor.elem(x$7));
 63758  			e = _tmp$14;
 63759  			err = _tmp$15;
 63760  			$s = -1; return [e, err];
 63761  		}
 63762  		if (!((params.stringType === 0)) && !((tag === 19))) {
 63763  			_tmp$16 = $ifaceNil;
 63764  			_tmp$17 = (x$8 = new StructuralError.ptr("explicit string type given to non-string member"), new x$8.constructor.elem(x$8));
 63765  			e = _tmp$16;
 63766  			err = _tmp$17;
 63767  			$s = -1; return [e, err];
 63768  		}
 63769  			_1 = tag;
 63770  			/* */ if (_1 === (19)) { $s = 41; continue; }
 63771  			/* */ if (_1 === (23)) { $s = 42; continue; }
 63772  			/* */ $s = 43; continue;
 63773  			/* if (_1 === (19)) { */ case 41:
 63774  				/* */ if (params.stringType === 0) { $s = 44; continue; }
 63775  				/* */ $s = 45; continue;
 63776  				/* if (params.stringType === 0) { */ case 44:
 63777  					_r$22 = $clone(v, reflect.Value).String(); /* */ $s = 47; case 47: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; }
 63778  					_ref = _r$22;
 63779  					_i = 0;
 63780  					/* while (true) { */ case 48:
 63781  						/* if (!(_i < _ref.length)) { break; } */ if(!(_i < _ref.length)) { $s = 49; continue; }
 63782  						_rune = $decodeRune(_ref, _i);
 63783  						r = _rune[0];
 63784  						/* */ if (r >= 128 || !isPrintable(((r << 24 >>> 24)), false, false)) { $s = 50; continue; }
 63785  						/* */ $s = 51; continue;
 63786  						/* if (r >= 128 || !isPrintable(((r << 24 >>> 24)), false, false)) { */ case 50:
 63787  							_r$23 = $clone(v, reflect.Value).String(); /* */ $s = 54; case 54: if($c) { $c = false; _r$23 = _r$23.$blk(); } if (_r$23 && _r$23.$blk !== undefined) { break s; }
 63788  							_r$24 = utf8.ValidString(_r$23); /* */ $s = 55; case 55: if($c) { $c = false; _r$24 = _r$24.$blk(); } if (_r$24 && _r$24.$blk !== undefined) { break s; }
 63789  							/* */ if (!_r$24) { $s = 52; continue; }
 63790  							/* */ $s = 53; continue;
 63791  							/* if (!_r$24) { */ case 52:
 63792  								_tmp$18 = $ifaceNil;
 63793  								_tmp$19 = errors.New("asn1: string not valid UTF-8");
 63794  								e = _tmp$18;
 63795  								err = _tmp$19;
 63796  								$s = -1; return [e, err];
 63797  							/* } */ case 53:
 63798  							tag = 12;
 63799  							/* break; */ $s = 49; continue;
 63800  						/* } */ case 51:
 63801  						_i += _rune[1];
 63802  					/* } */ $s = 48; continue; case 49:
 63803  					$s = 46; continue;
 63804  				/* } else { */ case 45:
 63805  					tag = params.stringType;
 63806  				/* } */ case 46:
 63807  				$s = 43; continue;
 63808  			/* } else if (_1 === (23)) { */ case 42:
 63809  				if (params.timeType === 24) { _v$1 = true; $s = 58; continue s; }
 63810  				_r$25 = $clone(v, reflect.Value).Interface(); /* */ $s = 59; case 59: if($c) { $c = false; _r$25 = _r$25.$blk(); } if (_r$25 && _r$25.$blk !== undefined) { break s; }
 63811  				_r$26 = outsideUTCRange($clone($assertType(_r$25, time.Time), time.Time)); /* */ $s = 60; case 60: if($c) { $c = false; _r$26 = _r$26.$blk(); } if (_r$26 && _r$26.$blk !== undefined) { break s; }
 63812  				_v$1 = _r$26; case 58:
 63813  				/* */ if (_v$1) { $s = 56; continue; }
 63814  				/* */ $s = 57; continue;
 63815  				/* if (_v$1) { */ case 56:
 63816  					tag = 24;
 63817  				/* } */ case 57:
 63818  			/* } */ case 43:
 63819  		case 40:
 63820  		if (params.set) {
 63821  			if (!((tag === 16))) {
 63822  				_tmp$20 = $ifaceNil;
 63823  				_tmp$21 = (x$9 = new StructuralError.ptr("non sequence tagged as set"), new x$9.constructor.elem(x$9));
 63824  				e = _tmp$20;
 63825  				err = _tmp$21;
 63826  				$s = -1; return [e, err];
 63827  			}
 63828  			tag = 17;
 63829  		}
 63830  		t$1 = new taggedEncoder.ptr(arrayType$1.zero(), $ifaceNil, $ifaceNil);
 63831  		_r$27 = makeBody($clone(v, reflect.Value), $clone(params, fieldParameters)); /* */ $s = 61; case 61: if($c) { $c = false; _r$27 = _r$27.$blk(); } if (_r$27 && _r$27.$blk !== undefined) { break s; }
 63832  		_tuple$2 = _r$27;
 63833  		t$1.body = _tuple$2[0];
 63834  		err = _tuple$2[1];
 63835  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 63836  			_tmp$22 = $ifaceNil;
 63837  			_tmp$23 = err;
 63838  			e = _tmp$22;
 63839  			err = _tmp$23;
 63840  			$s = -1; return [e, err];
 63841  		}
 63842  		_r$28 = t$1.body.Len(); /* */ $s = 62; case 62: if($c) { $c = false; _r$28 = _r$28.$blk(); } if (_r$28 && _r$28.$blk !== undefined) { break s; }
 63843  		bodyLen = _r$28;
 63844  		class$1 = 0;
 63845  		/* */ if (!(params.tag === ptrType$4.nil)) { $s = 63; continue; }
 63846  		/* */ $s = 64; continue;
 63847  		/* if (!(params.tag === ptrType$4.nil)) { */ case 63:
 63848  			if (params.application) {
 63849  				class$1 = 1;
 63850  			} else {
 63851  				class$1 = 2;
 63852  			}
 63853  			/* */ if (params.explicit) { $s = 65; continue; }
 63854  			/* */ $s = 66; continue;
 63855  			/* if (params.explicit) { */ case 65:
 63856  				t$1.tag = ((x$10 = appendTagAndLength($subslice(new sliceType(t$1.scratch), 0, 0), new tagAndLength.ptr(0, tag, bodyLen, isCompound)), $subslice(new bytesEncoder(x$10.$array), x$10.$offset, x$10.$offset + x$10.$length)));
 63857  				tt = new taggedEncoder.ptr(arrayType$1.zero(), $ifaceNil, $ifaceNil);
 63858  				tt.body = t$1;
 63859  				_arg$5 = $subslice(new sliceType(tt.scratch), 0, 0);
 63860  				_r$29 = t$1.tag.Len(); /* */ $s = 67; case 67: if($c) { $c = false; _r$29 = _r$29.$blk(); } if (_r$29 && _r$29.$blk !== undefined) { break s; }
 63861  				_arg$6 = new tagAndLength.ptr(class$1, params.tag.$get(), bodyLen + _r$29 >> 0, true);
 63862  				_r$30 = appendTagAndLength(_arg$5, _arg$6); /* */ $s = 68; case 68: if($c) { $c = false; _r$30 = _r$30.$blk(); } if (_r$30 && _r$30.$blk !== undefined) { break s; }
 63863  				tt.tag = ((x$11 = _r$30, $subslice(new bytesEncoder(x$11.$array), x$11.$offset, x$11.$offset + x$11.$length)));
 63864  				_tmp$24 = tt;
 63865  				_tmp$25 = $ifaceNil;
 63866  				e = _tmp$24;
 63867  				err = _tmp$25;
 63868  				$s = -1; return [e, err];
 63869  			/* } */ case 66:
 63870  			tag = params.tag.$get();
 63871  		/* } */ case 64:
 63872  		t$1.tag = ((x$12 = appendTagAndLength($subslice(new sliceType(t$1.scratch), 0, 0), new tagAndLength.ptr(class$1, tag, bodyLen, isCompound)), $subslice(new bytesEncoder(x$12.$array), x$12.$offset, x$12.$offset + x$12.$length)));
 63873  		_tmp$26 = t$1;
 63874  		_tmp$27 = $ifaceNil;
 63875  		e = _tmp$26;
 63876  		err = _tmp$27;
 63877  		$s = -1; return [e, err];
 63878  		/* */ } return; } if ($f === undefined) { $f = { $blk: makeField }; } $f._1 = _1; $f._arg = _arg; $f._arg$1 = _arg$1; $f._arg$2 = _arg$2; $f._arg$3 = _arg$3; $f._arg$4 = _arg$4; $f._arg$5 = _arg$5; $f._arg$6 = _arg$6; $f._i = _i; $f._r = _r; $f._r$1 = _r$1; $f._r$10 = _r$10; $f._r$11 = _r$11; $f._r$12 = _r$12; $f._r$13 = _r$13; $f._r$14 = _r$14; $f._r$15 = _r$15; $f._r$16 = _r$16; $f._r$17 = _r$17; $f._r$18 = _r$18; $f._r$19 = _r$19; $f._r$2 = _r$2; $f._r$20 = _r$20; $f._r$21 = _r$21; $f._r$22 = _r$22; $f._r$23 = _r$23; $f._r$24 = _r$24; $f._r$25 = _r$25; $f._r$26 = _r$26; $f._r$27 = _r$27; $f._r$28 = _r$28; $f._r$29 = _r$29; $f._r$3 = _r$3; $f._r$30 = _r$30; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._r$8 = _r$8; $f._r$9 = _r$9; $f._ref = _ref; $f._rune = _rune; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$10 = _tmp$10; $f._tmp$11 = _tmp$11; $f._tmp$12 = _tmp$12; $f._tmp$13 = _tmp$13; $f._tmp$14 = _tmp$14; $f._tmp$15 = _tmp$15; $f._tmp$16 = _tmp$16; $f._tmp$17 = _tmp$17; $f._tmp$18 = _tmp$18; $f._tmp$19 = _tmp$19; $f._tmp$2 = _tmp$2; $f._tmp$20 = _tmp$20; $f._tmp$21 = _tmp$21; $f._tmp$22 = _tmp$22; $f._tmp$23 = _tmp$23; $f._tmp$24 = _tmp$24; $f._tmp$25 = _tmp$25; $f._tmp$26 = _tmp$26; $f._tmp$27 = _tmp$27; $f._tmp$3 = _tmp$3; $f._tmp$4 = _tmp$4; $f._tmp$5 = _tmp$5; $f._tmp$6 = _tmp$6; $f._tmp$7 = _tmp$7; $f._tmp$8 = _tmp$8; $f._tmp$9 = _tmp$9; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._v = _v; $f._v$1 = _v$1; $f.bodyLen = bodyLen; $f.class$1 = class$1; $f.defaultValue = defaultValue; $f.e = e; $f.err = err; $f.isCompound = isCompound; $f.matchAny = matchAny; $f.ok = ok; $f.params = params; $f.r = r; $f.rv = rv; $f.t = t; $f.t$1 = t$1; $f.tag = tag; $f.tt = tt; $f.v = v; $f.x$10 = x$10; $f.x$11 = x$11; $f.x$12 = x$12; $f.x$3 = x$3; $f.x$4 = x$4; $f.x$5 = x$5; $f.x$6 = x$6; $f.x$7 = x$7; $f.x$8 = x$8; $f.x$9 = x$9; $f.$s = $s; $f.$r = $r; return $f;
 63879  	};
 63880  	Marshal = function(val) {
 63881  		var _r, val, $s, $r;
 63882  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; val = $f.val; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 63883  		_r = MarshalWithParams(val, ""); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 63884  		$s = -1; return _r;
 63885  		/* */ } return; } if ($f === undefined) { $f = { $blk: Marshal }; } $f._r = _r; $f.val = val; $f.$s = $s; $f.$r = $r; return $f;
 63886  	};
 63887  	$pkg.Marshal = Marshal;
 63888  	MarshalWithParams = function(val, params) {
 63889  		var _r, _r$1, _r$2, _tuple, b, e, err, params, val, $s, $r;
 63890  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _tuple = $f._tuple; b = $f.b; e = $f.e; err = $f.err; params = $f.params; val = $f.val; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 63891  		_r = reflect.ValueOf(val); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 63892  		_r$1 = makeField($clone(_r, reflect.Value), $clone(parseFieldParameters(params), fieldParameters)); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 63893  		_tuple = _r$1;
 63894  		e = _tuple[0];
 63895  		err = _tuple[1];
 63896  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 63897  			$s = -1; return [sliceType.nil, err];
 63898  		}
 63899  		_r$2 = e.Len(); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 63900  		b = $makeSlice(sliceType, _r$2);
 63901  		$r = e.Encode(b); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 63902  		$s = -1; return [b, $ifaceNil];
 63903  		/* */ } return; } if ($f === undefined) { $f = { $blk: MarshalWithParams }; } $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._tuple = _tuple; $f.b = b; $f.e = e; $f.err = err; $f.params = params; $f.val = val; $f.$s = $s; $f.$r = $r; return $f;
 63904  	};
 63905  	$pkg.MarshalWithParams = MarshalWithParams;
 63906  	StructuralError.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}];
 63907  	SyntaxError.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}];
 63908  	BitString.methods = [{prop: "At", name: "At", pkg: "", typ: $funcType([$Int], [$Int], false)}, {prop: "RightAlign", name: "RightAlign", pkg: "", typ: $funcType([], [sliceType], false)}];
 63909  	ObjectIdentifier.methods = [{prop: "Equal", name: "Equal", pkg: "", typ: $funcType([ObjectIdentifier], [$Bool], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}];
 63910  	byteEncoder.methods = [{prop: "Len", name: "Len", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Encode", name: "Encode", pkg: "", typ: $funcType([sliceType], [], false)}];
 63911  	bytesEncoder.methods = [{prop: "Len", name: "Len", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Encode", name: "Encode", pkg: "", typ: $funcType([sliceType], [], false)}];
 63912  	stringEncoder.methods = [{prop: "Len", name: "Len", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Encode", name: "Encode", pkg: "", typ: $funcType([sliceType], [], false)}];
 63913  	multiEncoder.methods = [{prop: "Len", name: "Len", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Encode", name: "Encode", pkg: "", typ: $funcType([sliceType], [], false)}];
 63914  	ptrType$5.methods = [{prop: "Len", name: "Len", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Encode", name: "Encode", pkg: "", typ: $funcType([sliceType], [], false)}];
 63915  	int64Encoder.methods = [{prop: "Len", name: "Len", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Encode", name: "Encode", pkg: "", typ: $funcType([sliceType], [], false)}];
 63916  	bitStringEncoder.methods = [{prop: "Len", name: "Len", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Encode", name: "Encode", pkg: "", typ: $funcType([sliceType], [], false)}];
 63917  	oidEncoder.methods = [{prop: "Len", name: "Len", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Encode", name: "Encode", pkg: "", typ: $funcType([sliceType], [], false)}];
 63918  	StructuralError.init("", [{prop: "Msg", name: "Msg", anonymous: false, exported: true, typ: $String, tag: ""}]);
 63919  	SyntaxError.init("", [{prop: "Msg", name: "Msg", anonymous: false, exported: true, typ: $String, tag: ""}]);
 63920  	BitString.init("", [{prop: "Bytes", name: "Bytes", anonymous: false, exported: true, typ: sliceType, tag: ""}, {prop: "BitLength", name: "BitLength", anonymous: false, exported: true, typ: $Int, tag: ""}]);
 63921  	ObjectIdentifier.init($Int);
 63922  	RawValue.init("", [{prop: "Class", name: "Class", anonymous: false, exported: true, typ: $Int, tag: ""}, {prop: "Tag", name: "Tag", anonymous: false, exported: true, typ: $Int, tag: ""}, {prop: "IsCompound", name: "IsCompound", anonymous: false, exported: true, typ: $Bool, tag: ""}, {prop: "Bytes", name: "Bytes", anonymous: false, exported: true, typ: sliceType, tag: ""}, {prop: "FullBytes", name: "FullBytes", anonymous: false, exported: true, typ: sliceType, tag: ""}]);
 63923  	RawContent.init($Uint8);
 63924  	tagAndLength.init("encoding/asn1", [{prop: "class$0", name: "class", anonymous: false, exported: false, typ: $Int, tag: ""}, {prop: "tag", name: "tag", anonymous: false, exported: false, typ: $Int, tag: ""}, {prop: "length", name: "length", anonymous: false, exported: false, typ: $Int, tag: ""}, {prop: "isCompound", name: "isCompound", anonymous: false, exported: false, typ: $Bool, tag: ""}]);
 63925  	fieldParameters.init("encoding/asn1", [{prop: "optional", name: "optional", anonymous: false, exported: false, typ: $Bool, tag: ""}, {prop: "explicit", name: "explicit", anonymous: false, exported: false, typ: $Bool, tag: ""}, {prop: "application", name: "application", anonymous: false, exported: false, typ: $Bool, tag: ""}, {prop: "defaultValue", name: "defaultValue", anonymous: false, exported: false, typ: ptrType$3, tag: ""}, {prop: "tag", name: "tag", anonymous: false, exported: false, typ: ptrType$4, tag: ""}, {prop: "stringType", name: "stringType", anonymous: false, exported: false, typ: $Int, tag: ""}, {prop: "timeType", name: "timeType", anonymous: false, exported: false, typ: $Int, tag: ""}, {prop: "set", name: "set", anonymous: false, exported: false, typ: $Bool, tag: ""}, {prop: "omitEmpty", name: "omitEmpty", anonymous: false, exported: false, typ: $Bool, tag: ""}]);
 63926  	encoder.init([{prop: "Encode", name: "Encode", pkg: "", typ: $funcType([sliceType], [], false)}, {prop: "Len", name: "Len", pkg: "", typ: $funcType([], [$Int], false)}]);
 63927  	bytesEncoder.init($Uint8);
 63928  	multiEncoder.init(encoder);
 63929  	taggedEncoder.init("encoding/asn1", [{prop: "scratch", name: "scratch", anonymous: false, exported: false, typ: arrayType$1, tag: ""}, {prop: "tag", name: "tag", anonymous: false, exported: false, typ: encoder, tag: ""}, {prop: "body", name: "body", anonymous: false, exported: false, typ: encoder, tag: ""}]);
 63930  	bitStringEncoder.init("", [{prop: "Bytes", name: "Bytes", anonymous: false, exported: true, typ: sliceType, tag: ""}, {prop: "BitLength", name: "BitLength", anonymous: false, exported: true, typ: $Int, tag: ""}]);
 63931  	oidEncoder.init($Int);
 63932  	$init = function() {
 63933  		$pkg.$init = function() {};
 63934  		/* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 63935  		$r = errors.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 63936  		$r = fmt.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 63937  		$r = math.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 63938  		$r = big.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 63939  		$r = reflect.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 63940  		$r = strconv.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 63941  		$r = strings.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 63942  		$r = time.$init(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 63943  		$r = utf8.$init(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 63944  		bigOne = big.NewInt(new $Int64(0, 1));
 63945  		bitStringType = reflect.TypeOf((x = new BitString.ptr(sliceType.nil, 0), new x.constructor.elem(x)));
 63946  		objectIdentifierType = reflect.TypeOf(new ObjectIdentifier([]));
 63947  		enumeratedType = reflect.TypeOf(new Enumerated(0));
 63948  		flagType = reflect.TypeOf(new Flag(false));
 63949  		timeType = reflect.TypeOf((x$1 = new time.Time.ptr(new $Uint64(0, 0), new $Int64(0, 0), ptrType.nil), new x$1.constructor.elem(x$1)));
 63950  		rawValueType = reflect.TypeOf((x$2 = new RawValue.ptr(0, 0, false, sliceType.nil, sliceType.nil), new x$2.constructor.elem(x$2)));
 63951  		rawContentsType = reflect.TypeOf((RawContent.nil));
 63952  		bigIntType = reflect.TypeOf(new big.Int.ptr(false, big.nat.nil));
 63953  		$pkg.NullRawValue = new RawValue.ptr(0, 5, false, sliceType.nil, sliceType.nil);
 63954  		$pkg.NullBytes = new sliceType([5, 0]);
 63955  		byte00Encoder = new byteEncoder(0);
 63956  		byteFFEncoder = new byteEncoder(255);
 63957  		/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
 63958  	};
 63959  	$pkg.$init = $init;
 63960  	return $pkg;
 63961  })();
 63962  $packages["crypto/ecdsa"] = (function() {
 63963  	var $pkg = {}, $init, crypto, aes, cipher, elliptic, sha512, asn1, errors, io, big, invertible, combinedMult, PublicKey, PrivateKey, ecdsaSignature, zr, sliceType, ptrType, ptrType$1, ptrType$2, one, errZeroParam, zeroReader, randFieldElement, hashToInt, fermatInverse, Sign, Verify;
 63964  	crypto = $packages["crypto"];
 63965  	aes = $packages["crypto/aes"];
 63966  	cipher = $packages["crypto/cipher"];
 63967  	elliptic = $packages["crypto/elliptic"];
 63968  	sha512 = $packages["crypto/sha512"];
 63969  	asn1 = $packages["encoding/asn1"];
 63970  	errors = $packages["errors"];
 63971  	io = $packages["io"];
 63972  	big = $packages["math/big"];
 63973  	invertible = $pkg.invertible = $newType(8, $kindInterface, "ecdsa.invertible", true, "crypto/ecdsa", false, null);
 63974  	combinedMult = $pkg.combinedMult = $newType(8, $kindInterface, "ecdsa.combinedMult", true, "crypto/ecdsa", false, null);
 63975  	PublicKey = $pkg.PublicKey = $newType(0, $kindStruct, "ecdsa.PublicKey", true, "crypto/ecdsa", true, function(Curve_, X_, Y_) {
 63976  		this.$val = this;
 63977  		if (arguments.length === 0) {
 63978  			this.Curve = $ifaceNil;
 63979  			this.X = ptrType.nil;
 63980  			this.Y = ptrType.nil;
 63981  			return;
 63982  		}
 63983  		this.Curve = Curve_;
 63984  		this.X = X_;
 63985  		this.Y = Y_;
 63986  	});
 63987  	PrivateKey = $pkg.PrivateKey = $newType(0, $kindStruct, "ecdsa.PrivateKey", true, "crypto/ecdsa", true, function(PublicKey_, D_) {
 63988  		this.$val = this;
 63989  		if (arguments.length === 0) {
 63990  			this.PublicKey = new PublicKey.ptr($ifaceNil, ptrType.nil, ptrType.nil);
 63991  			this.D = ptrType.nil;
 63992  			return;
 63993  		}
 63994  		this.PublicKey = PublicKey_;
 63995  		this.D = D_;
 63996  	});
 63997  	ecdsaSignature = $pkg.ecdsaSignature = $newType(0, $kindStruct, "ecdsa.ecdsaSignature", true, "crypto/ecdsa", false, function(R_, S_) {
 63998  		this.$val = this;
 63999  		if (arguments.length === 0) {
 64000  			this.R = ptrType.nil;
 64001  			this.S = ptrType.nil;
 64002  			return;
 64003  		}
 64004  		this.R = R_;
 64005  		this.S = S_;
 64006  	});
 64007  	zr = $pkg.zr = $newType(0, $kindStruct, "ecdsa.zr", true, "crypto/ecdsa", false, function(Reader_) {
 64008  		this.$val = this;
 64009  		if (arguments.length === 0) {
 64010  			this.Reader = $ifaceNil;
 64011  			return;
 64012  		}
 64013  		this.Reader = Reader_;
 64014  	});
 64015  	sliceType = $sliceType($Uint8);
 64016  	ptrType = $ptrType(big.Int);
 64017  	ptrType$1 = $ptrType(PrivateKey);
 64018  	ptrType$2 = $ptrType(zr);
 64019  	PrivateKey.ptr.prototype.Public = function() {
 64020  		var priv;
 64021  		priv = this;
 64022  		return priv.PublicKey;
 64023  	};
 64024  	PrivateKey.prototype.Public = function() { return this.$val.Public(); };
 64025  	PrivateKey.ptr.prototype.Sign = function(rand, digest, opts) {
 64026  		var _r, _r$1, _tuple, digest, err, opts, priv, r, rand, s, x, $s, $r;
 64027  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _tuple = $f._tuple; digest = $f.digest; err = $f.err; opts = $f.opts; priv = $f.priv; r = $f.r; rand = $f.rand; s = $f.s; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 64028  		priv = this;
 64029  		_r = Sign(rand, priv, digest); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 64030  		_tuple = _r;
 64031  		r = _tuple[0];
 64032  		s = _tuple[1];
 64033  		err = _tuple[2];
 64034  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 64035  			$s = -1; return [sliceType.nil, err];
 64036  		}
 64037  		_r$1 = asn1.Marshal((x = new ecdsaSignature.ptr(r, s), new x.constructor.elem(x))); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 64038  		$s = -1; return _r$1;
 64039  		/* */ } return; } if ($f === undefined) { $f = { $blk: PrivateKey.ptr.prototype.Sign }; } $f._r = _r; $f._r$1 = _r$1; $f._tuple = _tuple; $f.digest = digest; $f.err = err; $f.opts = opts; $f.priv = priv; $f.r = r; $f.rand = rand; $f.s = s; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
 64040  	};
 64041  	PrivateKey.prototype.Sign = function(rand, digest, opts) { return this.$val.Sign(rand, digest, opts); };
 64042  	randFieldElement = function(c, rand) {
 64043  		var _q, _r, _r$1, _r$2, _tuple, b, c, err, k, n, params, rand, $s, $r;
 64044  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _q = $f._q; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _tuple = $f._tuple; b = $f.b; c = $f.c; err = $f.err; k = $f.k; n = $f.n; params = $f.params; rand = $f.rand; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 64045  		k = ptrType.nil;
 64046  		err = $ifaceNil;
 64047  		_r = c.Params(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 64048  		params = _r;
 64049  		b = $makeSlice(sliceType, ((_q = params.BitSize / 8, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")) + 8 >> 0));
 64050  		_r$1 = io.ReadFull(rand, b); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 64051  		_tuple = _r$1;
 64052  		err = _tuple[1];
 64053  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 64054  			$s = -1; return [k, err];
 64055  		}
 64056  		k = new big.Int.ptr(false, big.nat.nil).SetBytes(b);
 64057  		n = new big.Int.ptr(false, big.nat.nil).Sub(params.N, one);
 64058  		_r$2 = k.Mod(k, n); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 64059  		_r$2;
 64060  		k.Add(k, one);
 64061  		$s = -1; return [k, err];
 64062  		/* */ } return; } if ($f === undefined) { $f = { $blk: randFieldElement }; } $f._q = _q; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._tuple = _tuple; $f.b = b; $f.c = c; $f.err = err; $f.k = k; $f.n = n; $f.params = params; $f.rand = rand; $f.$s = $s; $f.$r = $r; return $f;
 64063  	};
 64064  	hashToInt = function(hash, c) {
 64065  		var _q, _r, _r$1, c, excess, hash, orderBits, orderBytes, ret, $s, $r;
 64066  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _q = $f._q; _r = $f._r; _r$1 = $f._r$1; c = $f.c; excess = $f.excess; hash = $f.hash; orderBits = $f.orderBits; orderBytes = $f.orderBytes; ret = $f.ret; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 64067  		_r = c.Params(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 64068  		_r$1 = _r.N.BitLen(); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 64069  		orderBits = _r$1;
 64070  		orderBytes = (_q = ((orderBits + 7 >> 0)) / 8, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero"));
 64071  		if (hash.$length > orderBytes) {
 64072  			hash = $subslice(hash, 0, orderBytes);
 64073  		}
 64074  		ret = new big.Int.ptr(false, big.nat.nil).SetBytes(hash);
 64075  		excess = ($imul(hash.$length, 8)) - orderBits >> 0;
 64076  		if (excess > 0) {
 64077  			ret.Rsh(ret, ((excess >>> 0)));
 64078  		}
 64079  		$s = -1; return ret;
 64080  		/* */ } return; } if ($f === undefined) { $f = { $blk: hashToInt }; } $f._q = _q; $f._r = _r; $f._r$1 = _r$1; $f.c = c; $f.excess = excess; $f.hash = hash; $f.orderBits = orderBits; $f.orderBytes = orderBytes; $f.ret = ret; $f.$s = $s; $f.$r = $r; return $f;
 64081  	};
 64082  	fermatInverse = function(k, N) {
 64083  		var N, _r, k, nMinus2, two, $s, $r;
 64084  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; N = $f.N; _r = $f._r; k = $f.k; nMinus2 = $f.nMinus2; two = $f.two; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 64085  		two = big.NewInt(new $Int64(0, 2));
 64086  		nMinus2 = new big.Int.ptr(false, big.nat.nil).Sub(N, two);
 64087  		_r = new big.Int.ptr(false, big.nat.nil).Exp(k, nMinus2, N); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 64088  		$s = -1; return _r;
 64089  		/* */ } return; } if ($f === undefined) { $f = { $blk: fermatInverse }; } $f.N = N; $f._r = _r; $f.k = k; $f.nMinus2 = nMinus2; $f.two = two; $f.$s = $s; $f.$r = $r; return $f;
 64090  	};
 64091  	Sign = function(rand, priv, hash) {
 64092  		var N, _q, _r, _r$1, _r$10, _r$11, _r$12, _r$13, _r$14, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, block, c, csprng, e, entropy, entropylen, err, hash, in$1, k, kInv, key, md, ok, priv, r, rand, s, $s, $r;
 64093  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; N = $f.N; _q = $f._q; _r = $f._r; _r$1 = $f._r$1; _r$10 = $f._r$10; _r$11 = $f._r$11; _r$12 = $f._r$12; _r$13 = $f._r$13; _r$14 = $f._r$14; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _r$8 = $f._r$8; _r$9 = $f._r$9; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tmp$4 = $f._tmp$4; _tmp$5 = $f._tmp$5; _tmp$6 = $f._tmp$6; _tmp$7 = $f._tmp$7; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; _tuple$4 = $f._tuple$4; block = $f.block; c = $f.c; csprng = $f.csprng; e = $f.e; entropy = $f.entropy; entropylen = $f.entropylen; err = $f.err; hash = $f.hash; in$1 = $f.in$1; k = $f.k; kInv = $f.kInv; key = $f.key; md = $f.md; ok = $f.ok; priv = $f.priv; r = $f.r; rand = $f.rand; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 64094  		r = ptrType.nil;
 64095  		s = ptrType.nil;
 64096  		err = $ifaceNil;
 64097  		_r = priv.PublicKey.Curve.Params(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 64098  		entropylen = (_q = ((_r.BitSize + 7 >> 0)) / 16, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero"));
 64099  		if (entropylen > 32) {
 64100  			entropylen = 32;
 64101  		}
 64102  		entropy = $makeSlice(sliceType, entropylen);
 64103  		_r$1 = io.ReadFull(rand, entropy); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 64104  		_tuple = _r$1;
 64105  		err = _tuple[1];
 64106  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 64107  			$s = -1; return [r, s, err];
 64108  		}
 64109  		md = sha512.New();
 64110  		_r$2 = md.Write(priv.D.Bytes()); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 64111  		_r$2;
 64112  		_r$3 = md.Write(entropy); /* */ $s = 4; case 4: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 64113  		_r$3;
 64114  		_r$4 = md.Write(hash); /* */ $s = 5; case 5: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 64115  		_r$4;
 64116  		_r$5 = md.Sum(sliceType.nil); /* */ $s = 6; case 6: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
 64117  		key = $subslice(_r$5, 0, 32);
 64118  		_tuple$1 = aes.NewCipher(key);
 64119  		block = _tuple$1[0];
 64120  		err = _tuple$1[1];
 64121  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 64122  			_tmp = ptrType.nil;
 64123  			_tmp$1 = ptrType.nil;
 64124  			_tmp$2 = err;
 64125  			r = _tmp;
 64126  			s = _tmp$1;
 64127  			err = _tmp$2;
 64128  			$s = -1; return [r, s, err];
 64129  		}
 64130  		_r$6 = cipher.NewCTR(block, (new sliceType($stringToBytes("IV for ECDSA CTR")))); /* */ $s = 7; case 7: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
 64131  		csprng = new cipher.StreamReader.ptr(_r$6, zeroReader);
 64132  		c = priv.PublicKey.Curve;
 64133  		_r$7 = c.Params(); /* */ $s = 8; case 8: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
 64134  		N = _r$7.N;
 64135  		if (N.Sign() === 0) {
 64136  			_tmp$3 = ptrType.nil;
 64137  			_tmp$4 = ptrType.nil;
 64138  			_tmp$5 = errZeroParam;
 64139  			r = _tmp$3;
 64140  			s = _tmp$4;
 64141  			err = _tmp$5;
 64142  			$s = -1; return [r, s, err];
 64143  		}
 64144  		_tmp$6 = ptrType.nil;
 64145  		_tmp$7 = ptrType.nil;
 64146  		k = _tmp$6;
 64147  		kInv = _tmp$7;
 64148  		/* while (true) { */ case 9:
 64149  			/* while (true) { */ case 11:
 64150  				_r$8 = randFieldElement(c, new csprng.constructor.elem(csprng)); /* */ $s = 13; case 13: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
 64151  				_tuple$2 = _r$8;
 64152  				k = _tuple$2[0];
 64153  				err = _tuple$2[1];
 64154  				if (!($interfaceIsEqual(err, $ifaceNil))) {
 64155  					r = ptrType.nil;
 64156  					$s = -1; return [r, s, err];
 64157  				}
 64158  				_tuple$3 = $assertType(priv.PublicKey.Curve, invertible, true);
 64159  				in$1 = _tuple$3[0];
 64160  				ok = _tuple$3[1];
 64161  				/* */ if (ok) { $s = 14; continue; }
 64162  				/* */ $s = 15; continue;
 64163  				/* if (ok) { */ case 14:
 64164  					_r$9 = in$1.Inverse(k); /* */ $s = 17; case 17: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 64165  					kInv = _r$9;
 64166  					$s = 16; continue;
 64167  				/* } else { */ case 15:
 64168  					_r$10 = fermatInverse(k, N); /* */ $s = 18; case 18: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
 64169  					kInv = _r$10;
 64170  				/* } */ case 16:
 64171  				_r$11 = priv.PublicKey.Curve.ScalarBaseMult(k.Bytes()); /* */ $s = 19; case 19: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; }
 64172  				_tuple$4 = _r$11;
 64173  				r = _tuple$4[0];
 64174  				_r$12 = r.Mod(r, N); /* */ $s = 20; case 20: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; }
 64175  				_r$12;
 64176  				if (!((r.Sign() === 0))) {
 64177  					/* break; */ $s = 12; continue;
 64178  				}
 64179  			/* } */ $s = 11; continue; case 12:
 64180  			_r$13 = hashToInt(hash, c); /* */ $s = 21; case 21: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; }
 64181  			e = _r$13;
 64182  			s = new big.Int.ptr(false, big.nat.nil).Mul(priv.D, r);
 64183  			s.Add(s, e);
 64184  			s.Mul(s, kInv);
 64185  			_r$14 = s.Mod(s, N); /* */ $s = 22; case 22: if($c) { $c = false; _r$14 = _r$14.$blk(); } if (_r$14 && _r$14.$blk !== undefined) { break s; }
 64186  			_r$14;
 64187  			if (!((s.Sign() === 0))) {
 64188  				/* break; */ $s = 10; continue;
 64189  			}
 64190  		/* } */ $s = 9; continue; case 10:
 64191  		$s = -1; return [r, s, err];
 64192  		/* */ } return; } if ($f === undefined) { $f = { $blk: Sign }; } $f.N = N; $f._q = _q; $f._r = _r; $f._r$1 = _r$1; $f._r$10 = _r$10; $f._r$11 = _r$11; $f._r$12 = _r$12; $f._r$13 = _r$13; $f._r$14 = _r$14; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._r$8 = _r$8; $f._r$9 = _r$9; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tmp$4 = _tmp$4; $f._tmp$5 = _tmp$5; $f._tmp$6 = _tmp$6; $f._tmp$7 = _tmp$7; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f._tuple$4 = _tuple$4; $f.block = block; $f.c = c; $f.csprng = csprng; $f.e = e; $f.entropy = entropy; $f.entropylen = entropylen; $f.err = err; $f.hash = hash; $f.in$1 = in$1; $f.k = k; $f.kInv = kInv; $f.key = key; $f.md = md; $f.ok = ok; $f.priv = priv; $f.r = r; $f.rand = rand; $f.s = s; $f.$s = $s; $f.$r = $r; return $f;
 64193  	};
 64194  	$pkg.Sign = Sign;
 64195  	Verify = function(pub, hash, r, s) {
 64196  		var N, _r, _r$1, _r$10, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _tmp, _tmp$1, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, _tuple$5, c, e, hash, in$1, ok, ok$1, opt, pub, r, s, u1, u2, w, x, x1, x2, y, y1, y2, $s, $r;
 64197  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; N = $f.N; _r = $f._r; _r$1 = $f._r$1; _r$10 = $f._r$10; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _r$8 = $f._r$8; _r$9 = $f._r$9; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; _tuple$4 = $f._tuple$4; _tuple$5 = $f._tuple$5; c = $f.c; e = $f.e; hash = $f.hash; in$1 = $f.in$1; ok = $f.ok; ok$1 = $f.ok$1; opt = $f.opt; pub = $f.pub; r = $f.r; s = $f.s; u1 = $f.u1; u2 = $f.u2; w = $f.w; x = $f.x; x1 = $f.x1; x2 = $f.x2; y = $f.y; y1 = $f.y1; y2 = $f.y2; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 64198  		c = pub.Curve;
 64199  		_r = c.Params(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 64200  		N = _r.N;
 64201  		if (r.Sign() <= 0 || s.Sign() <= 0) {
 64202  			$s = -1; return false;
 64203  		}
 64204  		if (r.Cmp(N) >= 0 || s.Cmp(N) >= 0) {
 64205  			$s = -1; return false;
 64206  		}
 64207  		_r$1 = hashToInt(hash, c); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 64208  		e = _r$1;
 64209  		w = ptrType.nil;
 64210  		_tuple = $assertType(c, invertible, true);
 64211  		in$1 = _tuple[0];
 64212  		ok = _tuple[1];
 64213  		/* */ if (ok) { $s = 3; continue; }
 64214  		/* */ $s = 4; continue;
 64215  		/* if (ok) { */ case 3:
 64216  			_r$2 = in$1.Inverse(s); /* */ $s = 6; case 6: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 64217  			w = _r$2;
 64218  			$s = 5; continue;
 64219  		/* } else { */ case 4:
 64220  			_r$3 = new big.Int.ptr(false, big.nat.nil).ModInverse(s, N); /* */ $s = 7; case 7: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 64221  			w = _r$3;
 64222  		/* } */ case 5:
 64223  		u1 = e.Mul(e, w);
 64224  		_r$4 = u1.Mod(u1, N); /* */ $s = 8; case 8: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 64225  		_r$4;
 64226  		u2 = w.Mul(r, w);
 64227  		_r$5 = u2.Mod(u2, N); /* */ $s = 9; case 9: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
 64228  		_r$5;
 64229  		_tmp = ptrType.nil;
 64230  		_tmp$1 = ptrType.nil;
 64231  		x = _tmp;
 64232  		y = _tmp$1;
 64233  		_tuple$1 = $assertType(c, combinedMult, true);
 64234  		opt = _tuple$1[0];
 64235  		ok$1 = _tuple$1[1];
 64236  		/* */ if (ok$1) { $s = 10; continue; }
 64237  		/* */ $s = 11; continue;
 64238  		/* if (ok$1) { */ case 10:
 64239  			_r$6 = opt.CombinedMult(pub.X, pub.Y, u1.Bytes(), u2.Bytes()); /* */ $s = 13; case 13: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
 64240  			_tuple$2 = _r$6;
 64241  			x = _tuple$2[0];
 64242  			y = _tuple$2[1];
 64243  			$s = 12; continue;
 64244  		/* } else { */ case 11:
 64245  			_r$7 = c.ScalarBaseMult(u1.Bytes()); /* */ $s = 14; case 14: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
 64246  			_tuple$3 = _r$7;
 64247  			x1 = _tuple$3[0];
 64248  			y1 = _tuple$3[1];
 64249  			_r$8 = c.ScalarMult(pub.X, pub.Y, u2.Bytes()); /* */ $s = 15; case 15: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
 64250  			_tuple$4 = _r$8;
 64251  			x2 = _tuple$4[0];
 64252  			y2 = _tuple$4[1];
 64253  			_r$9 = c.Add(x1, y1, x2, y2); /* */ $s = 16; case 16: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 64254  			_tuple$5 = _r$9;
 64255  			x = _tuple$5[0];
 64256  			y = _tuple$5[1];
 64257  		/* } */ case 12:
 64258  		if ((x.Sign() === 0) && (y.Sign() === 0)) {
 64259  			$s = -1; return false;
 64260  		}
 64261  		_r$10 = x.Mod(x, N); /* */ $s = 17; case 17: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
 64262  		_r$10;
 64263  		$s = -1; return x.Cmp(r) === 0;
 64264  		/* */ } return; } if ($f === undefined) { $f = { $blk: Verify }; } $f.N = N; $f._r = _r; $f._r$1 = _r$1; $f._r$10 = _r$10; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._r$8 = _r$8; $f._r$9 = _r$9; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f._tuple$4 = _tuple$4; $f._tuple$5 = _tuple$5; $f.c = c; $f.e = e; $f.hash = hash; $f.in$1 = in$1; $f.ok = ok; $f.ok$1 = ok$1; $f.opt = opt; $f.pub = pub; $f.r = r; $f.s = s; $f.u1 = u1; $f.u2 = u2; $f.w = w; $f.x = x; $f.x1 = x1; $f.x2 = x2; $f.y = y; $f.y1 = y1; $f.y2 = y2; $f.$s = $s; $f.$r = $r; return $f;
 64265  	};
 64266  	$pkg.Verify = Verify;
 64267  	zr.ptr.prototype.Read = function(dst) {
 64268  		var _i, _ref, _tmp, _tmp$1, dst, err, i, n, z;
 64269  		n = 0;
 64270  		err = $ifaceNil;
 64271  		z = this;
 64272  		_ref = dst;
 64273  		_i = 0;
 64274  		while (true) {
 64275  			if (!(_i < _ref.$length)) { break; }
 64276  			i = _i;
 64277  			((i < 0 || i >= dst.$length) ? ($throwRuntimeError("index out of range"), undefined) : dst.$array[dst.$offset + i] = 0);
 64278  			_i++;
 64279  		}
 64280  		_tmp = dst.$length;
 64281  		_tmp$1 = $ifaceNil;
 64282  		n = _tmp;
 64283  		err = _tmp$1;
 64284  		return [n, err];
 64285  	};
 64286  	zr.prototype.Read = function(dst) { return this.$val.Read(dst); };
 64287  	ptrType$1.methods = [{prop: "Public", name: "Public", pkg: "", typ: $funcType([], [crypto.PublicKey], false)}, {prop: "Sign", name: "Sign", pkg: "", typ: $funcType([io.Reader, sliceType, crypto.SignerOpts], [sliceType, $error], false)}];
 64288  	ptrType$2.methods = [{prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType], [$Int, $error], false)}];
 64289  	invertible.init([{prop: "Inverse", name: "Inverse", pkg: "", typ: $funcType([ptrType], [ptrType], false)}]);
 64290  	combinedMult.init([{prop: "CombinedMult", name: "CombinedMult", pkg: "", typ: $funcType([ptrType, ptrType, sliceType, sliceType], [ptrType, ptrType], false)}]);
 64291  	PublicKey.init("", [{prop: "Curve", name: "Curve", anonymous: true, exported: true, typ: elliptic.Curve, tag: ""}, {prop: "X", name: "X", anonymous: false, exported: true, typ: ptrType, tag: ""}, {prop: "Y", name: "Y", anonymous: false, exported: true, typ: ptrType, tag: ""}]);
 64292  	PrivateKey.init("", [{prop: "PublicKey", name: "PublicKey", anonymous: true, exported: true, typ: PublicKey, tag: ""}, {prop: "D", name: "D", anonymous: false, exported: true, typ: ptrType, tag: ""}]);
 64293  	ecdsaSignature.init("", [{prop: "R", name: "R", anonymous: false, exported: true, typ: ptrType, tag: ""}, {prop: "S", name: "S", anonymous: false, exported: true, typ: ptrType, tag: ""}]);
 64294  	zr.init("", [{prop: "Reader", name: "Reader", anonymous: true, exported: true, typ: io.Reader, tag: ""}]);
 64295  	$init = function() {
 64296  		$pkg.$init = function() {};
 64297  		/* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 64298  		$r = crypto.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 64299  		$r = aes.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 64300  		$r = cipher.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 64301  		$r = elliptic.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 64302  		$r = sha512.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 64303  		$r = asn1.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 64304  		$r = errors.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 64305  		$r = io.$init(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 64306  		$r = big.$init(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 64307  		one = new big.Int.ptr(false, big.nat.nil).SetInt64(new $Int64(0, 1));
 64308  		errZeroParam = errors.New("zero parameter");
 64309  		zeroReader = new zr.ptr($ifaceNil);
 64310  		/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
 64311  	};
 64312  	$pkg.$init = $init;
 64313  	return $pkg;
 64314  })();
 64315  $packages["crypto/hmac"] = (function() {
 64316  	var $pkg = {}, $init, subtle, hash, hmac, sliceType, ptrType, New;
 64317  	subtle = $packages["crypto/subtle"];
 64318  	hash = $packages["hash"];
 64319  	hmac = $pkg.hmac = $newType(0, $kindStruct, "hmac.hmac", true, "crypto/hmac", false, function(size_, blocksize_, opad_, ipad_, outer_, inner_) {
 64320  		this.$val = this;
 64321  		if (arguments.length === 0) {
 64322  			this.size = 0;
 64323  			this.blocksize = 0;
 64324  			this.opad = sliceType.nil;
 64325  			this.ipad = sliceType.nil;
 64326  			this.outer = $ifaceNil;
 64327  			this.inner = $ifaceNil;
 64328  			return;
 64329  		}
 64330  		this.size = size_;
 64331  		this.blocksize = blocksize_;
 64332  		this.opad = opad_;
 64333  		this.ipad = ipad_;
 64334  		this.outer = outer_;
 64335  		this.inner = inner_;
 64336  	});
 64337  	sliceType = $sliceType($Uint8);
 64338  	ptrType = $ptrType(hmac);
 64339  	hmac.ptr.prototype.Sum = function(in$1) {
 64340  		var _r, _r$1, _r$2, _r$3, h, in$1, origLen, $s, $r;
 64341  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; h = $f.h; in$1 = $f.in$1; origLen = $f.origLen; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 64342  		h = this;
 64343  		origLen = in$1.$length;
 64344  		_r = h.inner.Sum(in$1); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 64345  		in$1 = _r;
 64346  		$r = h.outer.Reset(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 64347  		_r$1 = h.outer.Write(h.opad); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 64348  		_r$1;
 64349  		_r$2 = h.outer.Write($subslice(in$1, origLen)); /* */ $s = 4; case 4: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 64350  		_r$2;
 64351  		_r$3 = h.outer.Sum($subslice(in$1, 0, origLen)); /* */ $s = 5; case 5: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 64352  		$s = -1; return _r$3;
 64353  		/* */ } return; } if ($f === undefined) { $f = { $blk: hmac.ptr.prototype.Sum }; } $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f.h = h; $f.in$1 = in$1; $f.origLen = origLen; $f.$s = $s; $f.$r = $r; return $f;
 64354  	};
 64355  	hmac.prototype.Sum = function(in$1) { return this.$val.Sum(in$1); };
 64356  	hmac.ptr.prototype.Write = function(p) {
 64357  		var _r, _tuple, err, h, n, p, $s, $r;
 64358  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; err = $f.err; h = $f.h; n = $f.n; p = $f.p; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 64359  		n = 0;
 64360  		err = $ifaceNil;
 64361  		h = this;
 64362  		_r = h.inner.Write(p); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 64363  		_tuple = _r;
 64364  		n = _tuple[0];
 64365  		err = _tuple[1];
 64366  		$s = -1; return [n, err];
 64367  		/* */ } return; } if ($f === undefined) { $f = { $blk: hmac.ptr.prototype.Write }; } $f._r = _r; $f._tuple = _tuple; $f.err = err; $f.h = h; $f.n = n; $f.p = p; $f.$s = $s; $f.$r = $r; return $f;
 64368  	};
 64369  	hmac.prototype.Write = function(p) { return this.$val.Write(p); };
 64370  	hmac.ptr.prototype.Size = function() {
 64371  		var h;
 64372  		h = this;
 64373  		return h.size;
 64374  	};
 64375  	hmac.prototype.Size = function() { return this.$val.Size(); };
 64376  	hmac.ptr.prototype.BlockSize = function() {
 64377  		var h;
 64378  		h = this;
 64379  		return h.blocksize;
 64380  	};
 64381  	hmac.prototype.BlockSize = function() { return this.$val.BlockSize(); };
 64382  	hmac.ptr.prototype.Reset = function() {
 64383  		var _r, h, $s, $r;
 64384  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; h = $f.h; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 64385  		h = this;
 64386  		$r = h.inner.Reset(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 64387  		_r = h.inner.Write(h.ipad); /* */ $s = 2; case 2: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 64388  		_r;
 64389  		$s = -1; return;
 64390  		/* */ } return; } if ($f === undefined) { $f = { $blk: hmac.ptr.prototype.Reset }; } $f._r = _r; $f.h = h; $f.$s = $s; $f.$r = $r; return $f;
 64391  	};
 64392  	hmac.prototype.Reset = function() { return this.$val.Reset(); };
 64393  	New = function(h, key) {
 64394  		var _i, _i$1, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _ref, _ref$1, h, hm, i, i$1, key, x, x$1, x$2, x$3, $s, $r;
 64395  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _i = $f._i; _i$1 = $f._i$1; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _ref = $f._ref; _ref$1 = $f._ref$1; h = $f.h; hm = $f.hm; i = $f.i; i$1 = $f.i$1; key = $f.key; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; x$3 = $f.x$3; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 64396  		hm = new hmac.ptr(0, 0, sliceType.nil, sliceType.nil, $ifaceNil, $ifaceNil);
 64397  		_r = h(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 64398  		hm.outer = _r;
 64399  		_r$1 = h(); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 64400  		hm.inner = _r$1;
 64401  		_r$2 = hm.inner.Size(); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 64402  		hm.size = _r$2;
 64403  		_r$3 = hm.inner.BlockSize(); /* */ $s = 4; case 4: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 64404  		hm.blocksize = _r$3;
 64405  		hm.ipad = $makeSlice(sliceType, hm.blocksize);
 64406  		hm.opad = $makeSlice(sliceType, hm.blocksize);
 64407  		/* */ if (key.$length > hm.blocksize) { $s = 5; continue; }
 64408  		/* */ $s = 6; continue;
 64409  		/* if (key.$length > hm.blocksize) { */ case 5:
 64410  			_r$4 = hm.outer.Write(key); /* */ $s = 7; case 7: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 64411  			_r$4;
 64412  			_r$5 = hm.outer.Sum(sliceType.nil); /* */ $s = 8; case 8: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
 64413  			key = _r$5;
 64414  		/* } */ case 6:
 64415  		$copySlice(hm.ipad, key);
 64416  		$copySlice(hm.opad, key);
 64417  		_ref = hm.ipad;
 64418  		_i = 0;
 64419  		while (true) {
 64420  			if (!(_i < _ref.$length)) { break; }
 64421  			i = _i;
 64422  			(x$1 = hm.ipad, ((i < 0 || i >= x$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + i] = (((x = hm.ipad, ((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i])) ^ (54)) << 24 >>> 24)));
 64423  			_i++;
 64424  		}
 64425  		_ref$1 = hm.opad;
 64426  		_i$1 = 0;
 64427  		while (true) {
 64428  			if (!(_i$1 < _ref$1.$length)) { break; }
 64429  			i$1 = _i$1;
 64430  			(x$3 = hm.opad, ((i$1 < 0 || i$1 >= x$3.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$3.$array[x$3.$offset + i$1] = (((x$2 = hm.opad, ((i$1 < 0 || i$1 >= x$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + i$1])) ^ (92)) << 24 >>> 24)));
 64431  			_i$1++;
 64432  		}
 64433  		_r$6 = hm.inner.Write(hm.ipad); /* */ $s = 9; case 9: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
 64434  		_r$6;
 64435  		$s = -1; return hm;
 64436  		/* */ } return; } if ($f === undefined) { $f = { $blk: New }; } $f._i = _i; $f._i$1 = _i$1; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._ref = _ref; $f._ref$1 = _ref$1; $f.h = h; $f.hm = hm; $f.i = i; $f.i$1 = i$1; $f.key = key; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.x$3 = x$3; $f.$s = $s; $f.$r = $r; return $f;
 64437  	};
 64438  	$pkg.New = New;
 64439  	ptrType.methods = [{prop: "Sum", name: "Sum", pkg: "", typ: $funcType([sliceType], [sliceType], false)}, {prop: "Write", name: "Write", pkg: "", typ: $funcType([sliceType], [$Int, $error], false)}, {prop: "Size", name: "Size", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "BlockSize", name: "BlockSize", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Reset", name: "Reset", pkg: "", typ: $funcType([], [], false)}];
 64440  	hmac.init("crypto/hmac", [{prop: "size", name: "size", anonymous: false, exported: false, typ: $Int, tag: ""}, {prop: "blocksize", name: "blocksize", anonymous: false, exported: false, typ: $Int, tag: ""}, {prop: "opad", name: "opad", anonymous: false, exported: false, typ: sliceType, tag: ""}, {prop: "ipad", name: "ipad", anonymous: false, exported: false, typ: sliceType, tag: ""}, {prop: "outer", name: "outer", anonymous: false, exported: false, typ: hash.Hash, tag: ""}, {prop: "inner", name: "inner", anonymous: false, exported: false, typ: hash.Hash, tag: ""}]);
 64441  	$init = function() {
 64442  		$pkg.$init = function() {};
 64443  		/* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 64444  		$r = subtle.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 64445  		$r = hash.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 64446  		/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
 64447  	};
 64448  	$pkg.$init = $init;
 64449  	return $pkg;
 64450  })();
 64451  $packages["crypto/internal/cipherhw"] = (function() {
 64452  	var $pkg = {}, $init, AESGCMSupport;
 64453  	AESGCMSupport = function() {
 64454  		return false;
 64455  	};
 64456  	$pkg.AESGCMSupport = AESGCMSupport;
 64457  	$init = function() {
 64458  		$pkg.$init = function() {};
 64459  		/* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 64460  		/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
 64461  	};
 64462  	$pkg.$init = $init;
 64463  	return $pkg;
 64464  })();
 64465  $packages["crypto/md5"] = (function() {
 64466  	var $pkg = {}, $init, crypto, errors, hash, runtime, digest, sliceType, arrayType, arrayType$1, arrayType$2, arrayType$3, arrayType$4, ptrType, ptrType$1, littleEndian, block, init, appendUint64, appendUint32, consumeUint64, consumeUint32, New, init$1, blockGeneric;
 64467  	crypto = $packages["crypto"];
 64468  	errors = $packages["errors"];
 64469  	hash = $packages["hash"];
 64470  	runtime = $packages["runtime"];
 64471  	digest = $pkg.digest = $newType(0, $kindStruct, "md5.digest", true, "crypto/md5", false, function(s_, x_, nx_, len_) {
 64472  		this.$val = this;
 64473  		if (arguments.length === 0) {
 64474  			this.s = arrayType.zero();
 64475  			this.x = arrayType$1.zero();
 64476  			this.nx = 0;
 64477  			this.len = new $Uint64(0, 0);
 64478  			return;
 64479  		}
 64480  		this.s = s_;
 64481  		this.x = x_;
 64482  		this.nx = nx_;
 64483  		this.len = len_;
 64484  	});
 64485  	sliceType = $sliceType($Uint8);
 64486  	arrayType = $arrayType($Uint32, 4);
 64487  	arrayType$1 = $arrayType($Uint8, 64);
 64488  	arrayType$2 = $arrayType($Uint8, 16);
 64489  	arrayType$3 = $arrayType($Uint8, 4);
 64490  	arrayType$4 = $arrayType($Uint32, 16);
 64491  	ptrType = $ptrType(arrayType$4);
 64492  	ptrType$1 = $ptrType(digest);
 64493  	init = function() {
 64494  		crypto.RegisterHash(2, New);
 64495  	};
 64496  	digest.ptr.prototype.Reset = function() {
 64497  		var d;
 64498  		d = this;
 64499  		d.s[0] = 1732584193;
 64500  		d.s[1] = 4023233417;
 64501  		d.s[2] = 2562383102;
 64502  		d.s[3] = 271733878;
 64503  		d.nx = 0;
 64504  		d.len = new $Uint64(0, 0);
 64505  	};
 64506  	digest.prototype.Reset = function() { return this.$val.Reset(); };
 64507  	digest.ptr.prototype.MarshalBinary = function() {
 64508  		var b, d;
 64509  		d = this;
 64510  		b = $makeSlice(sliceType, 0, 92);
 64511  		b = $appendSlice(b, "md5\x01");
 64512  		b = appendUint32(b, d.s[0]);
 64513  		b = appendUint32(b, d.s[1]);
 64514  		b = appendUint32(b, d.s[2]);
 64515  		b = appendUint32(b, d.s[3]);
 64516  		b = $appendSlice(b, $subslice(new sliceType(d.x), 0, d.nx));
 64517  		b = $subslice(b, 0, ((b.$length + 64 >> 0) - (d.nx) >> 0));
 64518  		b = appendUint64(b, d.len);
 64519  		return [b, $ifaceNil];
 64520  	};
 64521  	digest.prototype.MarshalBinary = function() { return this.$val.MarshalBinary(); };
 64522  	digest.ptr.prototype.UnmarshalBinary = function(b) {
 64523  		var _r, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, b, d;
 64524  		d = this;
 64525  		if (b.$length < 4 || !(($bytesToString($subslice(b, 0, 4))) === "md5\x01")) {
 64526  			return errors.New("crypto/md5: invalid hash state identifier");
 64527  		}
 64528  		if (!((b.$length === 92))) {
 64529  			return errors.New("crypto/md5: invalid hash state size");
 64530  		}
 64531  		b = $subslice(b, 4);
 64532  		_tuple = consumeUint32(b);
 64533  		b = _tuple[0];
 64534  		d.s[0] = _tuple[1];
 64535  		_tuple$1 = consumeUint32(b);
 64536  		b = _tuple$1[0];
 64537  		d.s[1] = _tuple$1[1];
 64538  		_tuple$2 = consumeUint32(b);
 64539  		b = _tuple$2[0];
 64540  		d.s[2] = _tuple$2[1];
 64541  		_tuple$3 = consumeUint32(b);
 64542  		b = _tuple$3[0];
 64543  		d.s[3] = _tuple$3[1];
 64544  		b = $subslice(b, $copySlice(new sliceType(d.x), b));
 64545  		_tuple$4 = consumeUint64(b);
 64546  		b = _tuple$4[0];
 64547  		d.len = _tuple$4[1];
 64548  		d.nx = (_r = ((d.len.$low >> 0)) % 64, _r === _r ? _r : $throwRuntimeError("integer divide by zero"));
 64549  		return $ifaceNil;
 64550  	};
 64551  	digest.prototype.UnmarshalBinary = function(b) { return this.$val.UnmarshalBinary(b); };
 64552  	appendUint64 = function(b, x) {
 64553  		var a, b, x;
 64554  		a = $toNativeArray($kindUint8, [(($shiftRightUint64(x, 56).$low << 24 >>> 24)), (($shiftRightUint64(x, 48).$low << 24 >>> 24)), (($shiftRightUint64(x, 40).$low << 24 >>> 24)), (($shiftRightUint64(x, 32).$low << 24 >>> 24)), (($shiftRightUint64(x, 24).$low << 24 >>> 24)), (($shiftRightUint64(x, 16).$low << 24 >>> 24)), (($shiftRightUint64(x, 8).$low << 24 >>> 24)), ((x.$low << 24 >>> 24))]);
 64555  		return $appendSlice(b, new sliceType(a));
 64556  	};
 64557  	appendUint32 = function(b, x) {
 64558  		var a, b, x;
 64559  		a = $toNativeArray($kindUint8, [(((x >>> 24 >>> 0) << 24 >>> 24)), (((x >>> 16 >>> 0) << 24 >>> 24)), (((x >>> 8 >>> 0) << 24 >>> 24)), ((x << 24 >>> 24))]);
 64560  		return $appendSlice(b, new sliceType(a));
 64561  	};
 64562  	consumeUint64 = function(b) {
 64563  		var b, x, x$1, x$10, x$11, x$12, x$13, x$14, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9;
 64564  		$unused((7 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 7]));
 64565  		x$14 = (x = (x$1 = (x$2 = (x$3 = (x$4 = (x$5 = (x$6 = (new $Uint64(0, (7 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 7]))), x$7 = $shiftLeft64((new $Uint64(0, (6 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 6]))), 8), new $Uint64(x$6.$high | x$7.$high, (x$6.$low | x$7.$low) >>> 0)), x$8 = $shiftLeft64((new $Uint64(0, (5 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 5]))), 16), new $Uint64(x$5.$high | x$8.$high, (x$5.$low | x$8.$low) >>> 0)), x$9 = $shiftLeft64((new $Uint64(0, (4 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 4]))), 24), new $Uint64(x$4.$high | x$9.$high, (x$4.$low | x$9.$low) >>> 0)), x$10 = $shiftLeft64((new $Uint64(0, (3 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 3]))), 32), new $Uint64(x$3.$high | x$10.$high, (x$3.$low | x$10.$low) >>> 0)), x$11 = $shiftLeft64((new $Uint64(0, (2 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 2]))), 40), new $Uint64(x$2.$high | x$11.$high, (x$2.$low | x$11.$low) >>> 0)), x$12 = $shiftLeft64((new $Uint64(0, (1 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 1]))), 48), new $Uint64(x$1.$high | x$12.$high, (x$1.$low | x$12.$low) >>> 0)), x$13 = $shiftLeft64((new $Uint64(0, (0 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 0]))), 56), new $Uint64(x.$high | x$13.$high, (x.$low | x$13.$low) >>> 0));
 64566  		return [$subslice(b, 8), x$14];
 64567  	};
 64568  	consumeUint32 = function(b) {
 64569  		var b, x;
 64570  		$unused((3 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 3]));
 64571  		x = ((((((((3 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 3]) >>> 0)) | ((((2 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 2]) >>> 0)) << 8 >>> 0)) >>> 0) | ((((1 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 1]) >>> 0)) << 16 >>> 0)) >>> 0) | ((((0 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 0]) >>> 0)) << 24 >>> 0)) >>> 0;
 64572  		return [$subslice(b, 4), x];
 64573  	};
 64574  	New = function() {
 64575  		var d;
 64576  		d = new digest.ptr(arrayType.zero(), arrayType$1.zero(), 0, new $Uint64(0, 0));
 64577  		d.Reset();
 64578  		return d;
 64579  	};
 64580  	$pkg.New = New;
 64581  	digest.ptr.prototype.Size = function() {
 64582  		var d;
 64583  		d = this;
 64584  		return 16;
 64585  	};
 64586  	digest.prototype.Size = function() { return this.$val.Size(); };
 64587  	digest.ptr.prototype.BlockSize = function() {
 64588  		var d;
 64589  		d = this;
 64590  		return 64;
 64591  	};
 64592  	digest.prototype.BlockSize = function() { return this.$val.BlockSize(); };
 64593  	digest.ptr.prototype.Write = function(p) {
 64594  		var d, err, n, n$1, nn, p, x, x$1, $s, $r;
 64595  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; d = $f.d; err = $f.err; n = $f.n; n$1 = $f.n$1; nn = $f.nn; p = $f.p; x = $f.x; x$1 = $f.x$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 64596  		nn = 0;
 64597  		err = $ifaceNil;
 64598  		d = this;
 64599  		nn = p.$length;
 64600  		d.len = (x = d.len, x$1 = (new $Uint64(0, nn)), new $Uint64(x.$high + x$1.$high, x.$low + x$1.$low));
 64601  		/* */ if (d.nx > 0) { $s = 1; continue; }
 64602  		/* */ $s = 2; continue;
 64603  		/* if (d.nx > 0) { */ case 1:
 64604  			n = $copySlice($subslice(new sliceType(d.x), d.nx), p);
 64605  			d.nx = d.nx + (n) >> 0;
 64606  			/* */ if (d.nx === 64) { $s = 3; continue; }
 64607  			/* */ $s = 4; continue;
 64608  			/* if (d.nx === 64) { */ case 3:
 64609  				$r = block(d, new sliceType(d.x)); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 64610  				d.nx = 0;
 64611  			/* } */ case 4:
 64612  			p = $subslice(p, n);
 64613  		/* } */ case 2:
 64614  		/* */ if (p.$length >= 64) { $s = 6; continue; }
 64615  		/* */ $s = 7; continue;
 64616  		/* if (p.$length >= 64) { */ case 6:
 64617  			n$1 = (p.$length & ~63) >> 0;
 64618  			$r = block(d, $subslice(p, 0, n$1)); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 64619  			p = $subslice(p, n$1);
 64620  		/* } */ case 7:
 64621  		if (p.$length > 0) {
 64622  			d.nx = $copySlice(new sliceType(d.x), p);
 64623  		}
 64624  		$s = -1; return [nn, err];
 64625  		/* */ } return; } if ($f === undefined) { $f = { $blk: digest.ptr.prototype.Write }; } $f.d = d; $f.err = err; $f.n = n; $f.n$1 = n$1; $f.nn = nn; $f.p = p; $f.x = x; $f.x$1 = x$1; $f.$s = $s; $f.$r = $r; return $f;
 64626  	};
 64627  	digest.prototype.Write = function(p) { return this.$val.Write(p); };
 64628  	digest.ptr.prototype.Sum = function(in$1) {
 64629  		var _r, d, d0, hash$1, in$1, $s, $r;
 64630  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; d = $f.d; d0 = $f.d0; hash$1 = $f.hash$1; in$1 = $f.in$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 64631  		d0 = this;
 64632  		d = $clone(d0, digest);
 64633  		_r = d.checkSum(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 64634  		hash$1 = $clone(_r, arrayType$2);
 64635  		$s = -1; return $appendSlice(in$1, new sliceType(hash$1));
 64636  		/* */ } return; } if ($f === undefined) { $f = { $blk: digest.ptr.prototype.Sum }; } $f._r = _r; $f.d = d; $f.d0 = d0; $f.hash$1 = hash$1; $f.in$1 = in$1; $f.$s = $s; $f.$r = $r; return $f;
 64637  	};
 64638  	digest.prototype.Sum = function(in$1) { return this.$val.Sum(in$1); };
 64639  	digest.ptr.prototype.checkSum = function() {
 64640  		var _i, _r, _r$1, _r$2, _ref, d, digest$1, i, i$1, len, s, tmp, x, x$1, x$2, x$3, x$4, x$5, x$6, $s, $r;
 64641  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _i = $f._i; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _ref = $f._ref; d = $f.d; digest$1 = $f.digest$1; i = $f.i; i$1 = $f.i$1; len = $f.len; s = $f.s; tmp = $f.tmp; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; x$3 = $f.x$3; x$4 = $f.x$4; x$5 = $f.x$5; x$6 = $f.x$6; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 64642  		d = this;
 64643  		len = d.len;
 64644  		tmp = arrayType$1.zero();
 64645  		tmp[0] = 128;
 64646  		/* */ if ((x = $div64(len, new $Uint64(0, 64), true), (x.$high < 0 || (x.$high === 0 && x.$low < 56)))) { $s = 1; continue; }
 64647  		/* */ $s = 2; continue;
 64648  		/* if ((x = $div64(len, new $Uint64(0, 64), true), (x.$high < 0 || (x.$high === 0 && x.$low < 56)))) { */ case 1:
 64649  			_r = d.Write($subslice(new sliceType(tmp), 0, $flatten64((x$1 = $div64(len, new $Uint64(0, 64), true), new $Uint64(0 - x$1.$high, 56 - x$1.$low))))); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 64650  			_r;
 64651  			$s = 3; continue;
 64652  		/* } else { */ case 2:
 64653  			_r$1 = d.Write($subslice(new sliceType(tmp), 0, $flatten64((x$2 = $div64(len, new $Uint64(0, 64), true), new $Uint64(0 - x$2.$high, 120 - x$2.$low))))); /* */ $s = 5; case 5: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 64654  			_r$1;
 64655  		/* } */ case 3:
 64656  		len = $shiftLeft64(len, (3));
 64657  		i = 0;
 64658  		while (true) {
 64659  			if (!(i < 8)) { break; }
 64660  			((i < 0 || i >= tmp.length) ? ($throwRuntimeError("index out of range"), undefined) : tmp[i] = (($shiftRightUint64(len, ((8 * i >>> 0))).$low << 24 >>> 24)));
 64661  			i = i + (1) >>> 0;
 64662  		}
 64663  		_r$2 = d.Write($subslice(new sliceType(tmp), 0, 8)); /* */ $s = 6; case 6: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 64664  		_r$2;
 64665  		if (!((d.nx === 0))) {
 64666  			$panic(new $String("d.nx != 0"));
 64667  		}
 64668  		digest$1 = arrayType$2.zero();
 64669  		_ref = d.s;
 64670  		_i = 0;
 64671  		while (true) {
 64672  			if (!(_i < 4)) { break; }
 64673  			i$1 = _i;
 64674  			s = ((_i < 0 || _i >= _ref.length) ? ($throwRuntimeError("index out of range"), undefined) : _ref[_i]);
 64675  			(x$3 = $imul(i$1, 4), ((x$3 < 0 || x$3 >= digest$1.length) ? ($throwRuntimeError("index out of range"), undefined) : digest$1[x$3] = ((s << 24 >>> 24))));
 64676  			(x$4 = ($imul(i$1, 4)) + 1 >> 0, ((x$4 < 0 || x$4 >= digest$1.length) ? ($throwRuntimeError("index out of range"), undefined) : digest$1[x$4] = (((s >>> 8 >>> 0) << 24 >>> 24))));
 64677  			(x$5 = ($imul(i$1, 4)) + 2 >> 0, ((x$5 < 0 || x$5 >= digest$1.length) ? ($throwRuntimeError("index out of range"), undefined) : digest$1[x$5] = (((s >>> 16 >>> 0) << 24 >>> 24))));
 64678  			(x$6 = ($imul(i$1, 4)) + 3 >> 0, ((x$6 < 0 || x$6 >= digest$1.length) ? ($throwRuntimeError("index out of range"), undefined) : digest$1[x$6] = (((s >>> 24 >>> 0) << 24 >>> 24))));
 64679  			_i++;
 64680  		}
 64681  		$s = -1; return digest$1;
 64682  		/* */ } return; } if ($f === undefined) { $f = { $blk: digest.ptr.prototype.checkSum }; } $f._i = _i; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._ref = _ref; $f.d = d; $f.digest$1 = digest$1; $f.i = i; $f.i$1 = i$1; $f.len = len; $f.s = s; $f.tmp = tmp; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.x$3 = x$3; $f.x$4 = x$4; $f.x$5 = x$5; $f.x$6 = x$6; $f.$s = $s; $f.$r = $r; return $f;
 64683  	};
 64684  	digest.prototype.checkSum = function() { return this.$val.checkSum(); };
 64685  	init$1 = function() {
 64686  		var x, y;
 64687  		x = 67305985;
 64688  		y = $toNativeArray($kindUint8, [1, 2, 3, 4]);
 64689  		littleEndian = $equal(x, y, arrayType$3);
 64690  	};
 64691  	blockGeneric = function(dig, p) {
 64692  		var X, _tmp, _tmp$1, _tmp$2, _tmp$3, a, aa, b, bb, c, cc, d, dd, dig, i, j, p, x, x$1, x$2, x$3, xbuf;
 64693  		a = dig.s[0];
 64694  		b = dig.s[1];
 64695  		c = dig.s[2];
 64696  		d = dig.s[3];
 64697  		X = ptrType.nil;
 64698  		xbuf = arrayType$4.zero();
 64699  		while (true) {
 64700  			if (!(p.$length >= 64)) { break; }
 64701  			_tmp = a;
 64702  			_tmp$1 = b;
 64703  			_tmp$2 = c;
 64704  			_tmp$3 = d;
 64705  			aa = _tmp;
 64706  			bb = _tmp$1;
 64707  			cc = _tmp$2;
 64708  			dd = _tmp$3;
 64709  			if (false) {
 64710  				X = (($sliceToArray(p)));
 64711  			} else if (littleEndian && ((((($sliceToArray(p))) & 3) >>> 0) === 0)) {
 64712  				X = (($sliceToArray(p)));
 64713  			} else {
 64714  				X = xbuf;
 64715  				j = 0;
 64716  				i = 0;
 64717  				while (true) {
 64718  					if (!(i < 16)) { break; }
 64719  					(x$3 = i & 15, X.nilCheck, ((x$3 < 0 || x$3 >= X.length) ? ($throwRuntimeError("index out of range"), undefined) : X[x$3] = ((((((((((j < 0 || j >= p.$length) ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + j]) >>> 0)) | ((((x = j + 1 >> 0, ((x < 0 || x >= p.$length) ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + x])) >>> 0)) << 8 >>> 0)) >>> 0) | ((((x$1 = j + 2 >> 0, ((x$1 < 0 || x$1 >= p.$length) ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + x$1])) >>> 0)) << 16 >>> 0)) >>> 0) | ((((x$2 = j + 3 >> 0, ((x$2 < 0 || x$2 >= p.$length) ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + x$2])) >>> 0)) << 24 >>> 0)) >>> 0)));
 64720  					j = j + (4) >> 0;
 64721  					i = i + (1) >> 0;
 64722  				}
 64723  			}
 64724  			a = a + ((((((((((((c ^ d) >>> 0)) & b) >>> 0)) ^ d) >>> 0)) + (X.nilCheck, X[0]) >>> 0) + 3614090360 >>> 0)) >>> 0;
 64725  			a = (((a << 7 >>> 0) | (a >>> 25 >>> 0)) >>> 0) + b >>> 0;
 64726  			d = d + ((((((((((((b ^ c) >>> 0)) & a) >>> 0)) ^ c) >>> 0)) + (X.nilCheck, X[1]) >>> 0) + 3905402710 >>> 0)) >>> 0;
 64727  			d = (((d << 12 >>> 0) | (d >>> 20 >>> 0)) >>> 0) + a >>> 0;
 64728  			c = c + ((((((((((((a ^ b) >>> 0)) & d) >>> 0)) ^ b) >>> 0)) + (X.nilCheck, X[2]) >>> 0) + 606105819 >>> 0)) >>> 0;
 64729  			c = (((c << 17 >>> 0) | (c >>> 15 >>> 0)) >>> 0) + d >>> 0;
 64730  			b = b + ((((((((((((d ^ a) >>> 0)) & c) >>> 0)) ^ a) >>> 0)) + (X.nilCheck, X[3]) >>> 0) + 3250441966 >>> 0)) >>> 0;
 64731  			b = (((b << 22 >>> 0) | (b >>> 10 >>> 0)) >>> 0) + c >>> 0;
 64732  			a = a + ((((((((((((c ^ d) >>> 0)) & b) >>> 0)) ^ d) >>> 0)) + (X.nilCheck, X[4]) >>> 0) + 4118548399 >>> 0)) >>> 0;
 64733  			a = (((a << 7 >>> 0) | (a >>> 25 >>> 0)) >>> 0) + b >>> 0;
 64734  			d = d + ((((((((((((b ^ c) >>> 0)) & a) >>> 0)) ^ c) >>> 0)) + (X.nilCheck, X[5]) >>> 0) + 1200080426 >>> 0)) >>> 0;
 64735  			d = (((d << 12 >>> 0) | (d >>> 20 >>> 0)) >>> 0) + a >>> 0;
 64736  			c = c + ((((((((((((a ^ b) >>> 0)) & d) >>> 0)) ^ b) >>> 0)) + (X.nilCheck, X[6]) >>> 0) + 2821735955 >>> 0)) >>> 0;
 64737  			c = (((c << 17 >>> 0) | (c >>> 15 >>> 0)) >>> 0) + d >>> 0;
 64738  			b = b + ((((((((((((d ^ a) >>> 0)) & c) >>> 0)) ^ a) >>> 0)) + (X.nilCheck, X[7]) >>> 0) + 4249261313 >>> 0)) >>> 0;
 64739  			b = (((b << 22 >>> 0) | (b >>> 10 >>> 0)) >>> 0) + c >>> 0;
 64740  			a = a + ((((((((((((c ^ d) >>> 0)) & b) >>> 0)) ^ d) >>> 0)) + (X.nilCheck, X[8]) >>> 0) + 1770035416 >>> 0)) >>> 0;
 64741  			a = (((a << 7 >>> 0) | (a >>> 25 >>> 0)) >>> 0) + b >>> 0;
 64742  			d = d + ((((((((((((b ^ c) >>> 0)) & a) >>> 0)) ^ c) >>> 0)) + (X.nilCheck, X[9]) >>> 0) + 2336552879 >>> 0)) >>> 0;
 64743  			d = (((d << 12 >>> 0) | (d >>> 20 >>> 0)) >>> 0) + a >>> 0;
 64744  			c = c + ((((((((((((a ^ b) >>> 0)) & d) >>> 0)) ^ b) >>> 0)) + (X.nilCheck, X[10]) >>> 0) + 4294925233 >>> 0)) >>> 0;
 64745  			c = (((c << 17 >>> 0) | (c >>> 15 >>> 0)) >>> 0) + d >>> 0;
 64746  			b = b + ((((((((((((d ^ a) >>> 0)) & c) >>> 0)) ^ a) >>> 0)) + (X.nilCheck, X[11]) >>> 0) + 2304563134 >>> 0)) >>> 0;
 64747  			b = (((b << 22 >>> 0) | (b >>> 10 >>> 0)) >>> 0) + c >>> 0;
 64748  			a = a + ((((((((((((c ^ d) >>> 0)) & b) >>> 0)) ^ d) >>> 0)) + (X.nilCheck, X[12]) >>> 0) + 1804603682 >>> 0)) >>> 0;
 64749  			a = (((a << 7 >>> 0) | (a >>> 25 >>> 0)) >>> 0) + b >>> 0;
 64750  			d = d + ((((((((((((b ^ c) >>> 0)) & a) >>> 0)) ^ c) >>> 0)) + (X.nilCheck, X[13]) >>> 0) + 4254626195 >>> 0)) >>> 0;
 64751  			d = (((d << 12 >>> 0) | (d >>> 20 >>> 0)) >>> 0) + a >>> 0;
 64752  			c = c + ((((((((((((a ^ b) >>> 0)) & d) >>> 0)) ^ b) >>> 0)) + (X.nilCheck, X[14]) >>> 0) + 2792965006 >>> 0)) >>> 0;
 64753  			c = (((c << 17 >>> 0) | (c >>> 15 >>> 0)) >>> 0) + d >>> 0;
 64754  			b = b + ((((((((((((d ^ a) >>> 0)) & c) >>> 0)) ^ a) >>> 0)) + (X.nilCheck, X[15]) >>> 0) + 1236535329 >>> 0)) >>> 0;
 64755  			b = (((b << 22 >>> 0) | (b >>> 10 >>> 0)) >>> 0) + c >>> 0;
 64756  			a = a + ((((((((((((b ^ c) >>> 0)) & d) >>> 0)) ^ c) >>> 0)) + (X.nilCheck, X[1]) >>> 0) + 4129170786 >>> 0)) >>> 0;
 64757  			a = (((a << 5 >>> 0) | (a >>> 27 >>> 0)) >>> 0) + b >>> 0;
 64758  			d = d + ((((((((((((a ^ b) >>> 0)) & c) >>> 0)) ^ b) >>> 0)) + (X.nilCheck, X[6]) >>> 0) + 3225465664 >>> 0)) >>> 0;
 64759  			d = (((d << 9 >>> 0) | (d >>> 23 >>> 0)) >>> 0) + a >>> 0;
 64760  			c = c + ((((((((((((d ^ a) >>> 0)) & b) >>> 0)) ^ a) >>> 0)) + (X.nilCheck, X[11]) >>> 0) + 643717713 >>> 0)) >>> 0;
 64761  			c = (((c << 14 >>> 0) | (c >>> 18 >>> 0)) >>> 0) + d >>> 0;
 64762  			b = b + ((((((((((((c ^ d) >>> 0)) & a) >>> 0)) ^ d) >>> 0)) + (X.nilCheck, X[0]) >>> 0) + 3921069994 >>> 0)) >>> 0;
 64763  			b = (((b << 20 >>> 0) | (b >>> 12 >>> 0)) >>> 0) + c >>> 0;
 64764  			a = a + ((((((((((((b ^ c) >>> 0)) & d) >>> 0)) ^ c) >>> 0)) + (X.nilCheck, X[5]) >>> 0) + 3593408605 >>> 0)) >>> 0;
 64765  			a = (((a << 5 >>> 0) | (a >>> 27 >>> 0)) >>> 0) + b >>> 0;
 64766  			d = d + ((((((((((((a ^ b) >>> 0)) & c) >>> 0)) ^ b) >>> 0)) + (X.nilCheck, X[10]) >>> 0) + 38016083 >>> 0)) >>> 0;
 64767  			d = (((d << 9 >>> 0) | (d >>> 23 >>> 0)) >>> 0) + a >>> 0;
 64768  			c = c + ((((((((((((d ^ a) >>> 0)) & b) >>> 0)) ^ a) >>> 0)) + (X.nilCheck, X[15]) >>> 0) + 3634488961 >>> 0)) >>> 0;
 64769  			c = (((c << 14 >>> 0) | (c >>> 18 >>> 0)) >>> 0) + d >>> 0;
 64770  			b = b + ((((((((((((c ^ d) >>> 0)) & a) >>> 0)) ^ d) >>> 0)) + (X.nilCheck, X[4]) >>> 0) + 3889429448 >>> 0)) >>> 0;
 64771  			b = (((b << 20 >>> 0) | (b >>> 12 >>> 0)) >>> 0) + c >>> 0;
 64772  			a = a + ((((((((((((b ^ c) >>> 0)) & d) >>> 0)) ^ c) >>> 0)) + (X.nilCheck, X[9]) >>> 0) + 568446438 >>> 0)) >>> 0;
 64773  			a = (((a << 5 >>> 0) | (a >>> 27 >>> 0)) >>> 0) + b >>> 0;
 64774  			d = d + ((((((((((((a ^ b) >>> 0)) & c) >>> 0)) ^ b) >>> 0)) + (X.nilCheck, X[14]) >>> 0) + 3275163606 >>> 0)) >>> 0;
 64775  			d = (((d << 9 >>> 0) | (d >>> 23 >>> 0)) >>> 0) + a >>> 0;
 64776  			c = c + ((((((((((((d ^ a) >>> 0)) & b) >>> 0)) ^ a) >>> 0)) + (X.nilCheck, X[3]) >>> 0) + 4107603335 >>> 0)) >>> 0;
 64777  			c = (((c << 14 >>> 0) | (c >>> 18 >>> 0)) >>> 0) + d >>> 0;
 64778  			b = b + ((((((((((((c ^ d) >>> 0)) & a) >>> 0)) ^ d) >>> 0)) + (X.nilCheck, X[8]) >>> 0) + 1163531501 >>> 0)) >>> 0;
 64779  			b = (((b << 20 >>> 0) | (b >>> 12 >>> 0)) >>> 0) + c >>> 0;
 64780  			a = a + ((((((((((((b ^ c) >>> 0)) & d) >>> 0)) ^ c) >>> 0)) + (X.nilCheck, X[13]) >>> 0) + 2850285829 >>> 0)) >>> 0;
 64781  			a = (((a << 5 >>> 0) | (a >>> 27 >>> 0)) >>> 0) + b >>> 0;
 64782  			d = d + ((((((((((((a ^ b) >>> 0)) & c) >>> 0)) ^ b) >>> 0)) + (X.nilCheck, X[2]) >>> 0) + 4243563512 >>> 0)) >>> 0;
 64783  			d = (((d << 9 >>> 0) | (d >>> 23 >>> 0)) >>> 0) + a >>> 0;
 64784  			c = c + ((((((((((((d ^ a) >>> 0)) & b) >>> 0)) ^ a) >>> 0)) + (X.nilCheck, X[7]) >>> 0) + 1735328473 >>> 0)) >>> 0;
 64785  			c = (((c << 14 >>> 0) | (c >>> 18 >>> 0)) >>> 0) + d >>> 0;
 64786  			b = b + ((((((((((((c ^ d) >>> 0)) & a) >>> 0)) ^ d) >>> 0)) + (X.nilCheck, X[12]) >>> 0) + 2368359562 >>> 0)) >>> 0;
 64787  			b = (((b << 20 >>> 0) | (b >>> 12 >>> 0)) >>> 0) + c >>> 0;
 64788  			a = a + ((((((((b ^ c) >>> 0) ^ d) >>> 0)) + (X.nilCheck, X[5]) >>> 0) + 4294588738 >>> 0)) >>> 0;
 64789  			a = (((a << 4 >>> 0) | (a >>> 28 >>> 0)) >>> 0) + b >>> 0;
 64790  			d = d + ((((((((a ^ b) >>> 0) ^ c) >>> 0)) + (X.nilCheck, X[8]) >>> 0) + 2272392833 >>> 0)) >>> 0;
 64791  			d = (((d << 11 >>> 0) | (d >>> 21 >>> 0)) >>> 0) + a >>> 0;
 64792  			c = c + ((((((((d ^ a) >>> 0) ^ b) >>> 0)) + (X.nilCheck, X[11]) >>> 0) + 1839030562 >>> 0)) >>> 0;
 64793  			c = (((c << 16 >>> 0) | (c >>> 16 >>> 0)) >>> 0) + d >>> 0;
 64794  			b = b + ((((((((c ^ d) >>> 0) ^ a) >>> 0)) + (X.nilCheck, X[14]) >>> 0) + 4259657740 >>> 0)) >>> 0;
 64795  			b = (((b << 23 >>> 0) | (b >>> 9 >>> 0)) >>> 0) + c >>> 0;
 64796  			a = a + ((((((((b ^ c) >>> 0) ^ d) >>> 0)) + (X.nilCheck, X[1]) >>> 0) + 2763975236 >>> 0)) >>> 0;
 64797  			a = (((a << 4 >>> 0) | (a >>> 28 >>> 0)) >>> 0) + b >>> 0;
 64798  			d = d + ((((((((a ^ b) >>> 0) ^ c) >>> 0)) + (X.nilCheck, X[4]) >>> 0) + 1272893353 >>> 0)) >>> 0;
 64799  			d = (((d << 11 >>> 0) | (d >>> 21 >>> 0)) >>> 0) + a >>> 0;
 64800  			c = c + ((((((((d ^ a) >>> 0) ^ b) >>> 0)) + (X.nilCheck, X[7]) >>> 0) + 4139469664 >>> 0)) >>> 0;
 64801  			c = (((c << 16 >>> 0) | (c >>> 16 >>> 0)) >>> 0) + d >>> 0;
 64802  			b = b + ((((((((c ^ d) >>> 0) ^ a) >>> 0)) + (X.nilCheck, X[10]) >>> 0) + 3200236656 >>> 0)) >>> 0;
 64803  			b = (((b << 23 >>> 0) | (b >>> 9 >>> 0)) >>> 0) + c >>> 0;
 64804  			a = a + ((((((((b ^ c) >>> 0) ^ d) >>> 0)) + (X.nilCheck, X[13]) >>> 0) + 681279174 >>> 0)) >>> 0;
 64805  			a = (((a << 4 >>> 0) | (a >>> 28 >>> 0)) >>> 0) + b >>> 0;
 64806  			d = d + ((((((((a ^ b) >>> 0) ^ c) >>> 0)) + (X.nilCheck, X[0]) >>> 0) + 3936430074 >>> 0)) >>> 0;
 64807  			d = (((d << 11 >>> 0) | (d >>> 21 >>> 0)) >>> 0) + a >>> 0;
 64808  			c = c + ((((((((d ^ a) >>> 0) ^ b) >>> 0)) + (X.nilCheck, X[3]) >>> 0) + 3572445317 >>> 0)) >>> 0;
 64809  			c = (((c << 16 >>> 0) | (c >>> 16 >>> 0)) >>> 0) + d >>> 0;
 64810  			b = b + ((((((((c ^ d) >>> 0) ^ a) >>> 0)) + (X.nilCheck, X[6]) >>> 0) + 76029189 >>> 0)) >>> 0;
 64811  			b = (((b << 23 >>> 0) | (b >>> 9 >>> 0)) >>> 0) + c >>> 0;
 64812  			a = a + ((((((((b ^ c) >>> 0) ^ d) >>> 0)) + (X.nilCheck, X[9]) >>> 0) + 3654602809 >>> 0)) >>> 0;
 64813  			a = (((a << 4 >>> 0) | (a >>> 28 >>> 0)) >>> 0) + b >>> 0;
 64814  			d = d + ((((((((a ^ b) >>> 0) ^ c) >>> 0)) + (X.nilCheck, X[12]) >>> 0) + 3873151461 >>> 0)) >>> 0;
 64815  			d = (((d << 11 >>> 0) | (d >>> 21 >>> 0)) >>> 0) + a >>> 0;
 64816  			c = c + ((((((((d ^ a) >>> 0) ^ b) >>> 0)) + (X.nilCheck, X[15]) >>> 0) + 530742520 >>> 0)) >>> 0;
 64817  			c = (((c << 16 >>> 0) | (c >>> 16 >>> 0)) >>> 0) + d >>> 0;
 64818  			b = b + ((((((((c ^ d) >>> 0) ^ a) >>> 0)) + (X.nilCheck, X[2]) >>> 0) + 3299628645 >>> 0)) >>> 0;
 64819  			b = (((b << 23 >>> 0) | (b >>> 9 >>> 0)) >>> 0) + c >>> 0;
 64820  			a = a + ((((((c ^ (((b | (~d >>> 0)) >>> 0))) >>> 0)) + (X.nilCheck, X[0]) >>> 0) + 4096336452 >>> 0)) >>> 0;
 64821  			a = (((a << 6 >>> 0) | (a >>> 26 >>> 0)) >>> 0) + b >>> 0;
 64822  			d = d + ((((((b ^ (((a | (~c >>> 0)) >>> 0))) >>> 0)) + (X.nilCheck, X[7]) >>> 0) + 1126891415 >>> 0)) >>> 0;
 64823  			d = (((d << 10 >>> 0) | (d >>> 22 >>> 0)) >>> 0) + a >>> 0;
 64824  			c = c + ((((((a ^ (((d | (~b >>> 0)) >>> 0))) >>> 0)) + (X.nilCheck, X[14]) >>> 0) + 2878612391 >>> 0)) >>> 0;
 64825  			c = (((c << 15 >>> 0) | (c >>> 17 >>> 0)) >>> 0) + d >>> 0;
 64826  			b = b + ((((((d ^ (((c | (~a >>> 0)) >>> 0))) >>> 0)) + (X.nilCheck, X[5]) >>> 0) + 4237533241 >>> 0)) >>> 0;
 64827  			b = (((b << 21 >>> 0) | (b >>> 11 >>> 0)) >>> 0) + c >>> 0;
 64828  			a = a + ((((((c ^ (((b | (~d >>> 0)) >>> 0))) >>> 0)) + (X.nilCheck, X[12]) >>> 0) + 1700485571 >>> 0)) >>> 0;
 64829  			a = (((a << 6 >>> 0) | (a >>> 26 >>> 0)) >>> 0) + b >>> 0;
 64830  			d = d + ((((((b ^ (((a | (~c >>> 0)) >>> 0))) >>> 0)) + (X.nilCheck, X[3]) >>> 0) + 2399980690 >>> 0)) >>> 0;
 64831  			d = (((d << 10 >>> 0) | (d >>> 22 >>> 0)) >>> 0) + a >>> 0;
 64832  			c = c + ((((((a ^ (((d | (~b >>> 0)) >>> 0))) >>> 0)) + (X.nilCheck, X[10]) >>> 0) + 4293915773 >>> 0)) >>> 0;
 64833  			c = (((c << 15 >>> 0) | (c >>> 17 >>> 0)) >>> 0) + d >>> 0;
 64834  			b = b + ((((((d ^ (((c | (~a >>> 0)) >>> 0))) >>> 0)) + (X.nilCheck, X[1]) >>> 0) + 2240044497 >>> 0)) >>> 0;
 64835  			b = (((b << 21 >>> 0) | (b >>> 11 >>> 0)) >>> 0) + c >>> 0;
 64836  			a = a + ((((((c ^ (((b | (~d >>> 0)) >>> 0))) >>> 0)) + (X.nilCheck, X[8]) >>> 0) + 1873313359 >>> 0)) >>> 0;
 64837  			a = (((a << 6 >>> 0) | (a >>> 26 >>> 0)) >>> 0) + b >>> 0;
 64838  			d = d + ((((((b ^ (((a | (~c >>> 0)) >>> 0))) >>> 0)) + (X.nilCheck, X[15]) >>> 0) + 4264355552 >>> 0)) >>> 0;
 64839  			d = (((d << 10 >>> 0) | (d >>> 22 >>> 0)) >>> 0) + a >>> 0;
 64840  			c = c + ((((((a ^ (((d | (~b >>> 0)) >>> 0))) >>> 0)) + (X.nilCheck, X[6]) >>> 0) + 2734768916 >>> 0)) >>> 0;
 64841  			c = (((c << 15 >>> 0) | (c >>> 17 >>> 0)) >>> 0) + d >>> 0;
 64842  			b = b + ((((((d ^ (((c | (~a >>> 0)) >>> 0))) >>> 0)) + (X.nilCheck, X[13]) >>> 0) + 1309151649 >>> 0)) >>> 0;
 64843  			b = (((b << 21 >>> 0) | (b >>> 11 >>> 0)) >>> 0) + c >>> 0;
 64844  			a = a + ((((((c ^ (((b | (~d >>> 0)) >>> 0))) >>> 0)) + (X.nilCheck, X[4]) >>> 0) + 4149444226 >>> 0)) >>> 0;
 64845  			a = (((a << 6 >>> 0) | (a >>> 26 >>> 0)) >>> 0) + b >>> 0;
 64846  			d = d + ((((((b ^ (((a | (~c >>> 0)) >>> 0))) >>> 0)) + (X.nilCheck, X[11]) >>> 0) + 3174756917 >>> 0)) >>> 0;
 64847  			d = (((d << 10 >>> 0) | (d >>> 22 >>> 0)) >>> 0) + a >>> 0;
 64848  			c = c + ((((((a ^ (((d | (~b >>> 0)) >>> 0))) >>> 0)) + (X.nilCheck, X[2]) >>> 0) + 718787259 >>> 0)) >>> 0;
 64849  			c = (((c << 15 >>> 0) | (c >>> 17 >>> 0)) >>> 0) + d >>> 0;
 64850  			b = b + ((((((d ^ (((c | (~a >>> 0)) >>> 0))) >>> 0)) + (X.nilCheck, X[9]) >>> 0) + 3951481745 >>> 0)) >>> 0;
 64851  			b = (((b << 21 >>> 0) | (b >>> 11 >>> 0)) >>> 0) + c >>> 0;
 64852  			a = a + (aa) >>> 0;
 64853  			b = b + (bb) >>> 0;
 64854  			c = c + (cc) >>> 0;
 64855  			d = d + (dd) >>> 0;
 64856  			p = $subslice(p, 64);
 64857  		}
 64858  		dig.s[0] = a;
 64859  		dig.s[1] = b;
 64860  		dig.s[2] = c;
 64861  		dig.s[3] = d;
 64862  	};
 64863  	ptrType$1.methods = [{prop: "Reset", name: "Reset", pkg: "", typ: $funcType([], [], false)}, {prop: "MarshalBinary", name: "MarshalBinary", pkg: "", typ: $funcType([], [sliceType, $error], false)}, {prop: "UnmarshalBinary", name: "UnmarshalBinary", pkg: "", typ: $funcType([sliceType], [$error], false)}, {prop: "Size", name: "Size", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "BlockSize", name: "BlockSize", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Write", name: "Write", pkg: "", typ: $funcType([sliceType], [$Int, $error], false)}, {prop: "Sum", name: "Sum", pkg: "", typ: $funcType([sliceType], [sliceType], false)}, {prop: "checkSum", name: "checkSum", pkg: "crypto/md5", typ: $funcType([], [arrayType$2], false)}];
 64864  	digest.init("crypto/md5", [{prop: "s", name: "s", anonymous: false, exported: false, typ: arrayType, tag: ""}, {prop: "x", name: "x", anonymous: false, exported: false, typ: arrayType$1, tag: ""}, {prop: "nx", name: "nx", anonymous: false, exported: false, typ: $Int, tag: ""}, {prop: "len", name: "len", anonymous: false, exported: false, typ: $Uint64, tag: ""}]);
 64865  	$init = function() {
 64866  		$pkg.$init = function() {};
 64867  		/* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 64868  		$r = crypto.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 64869  		$r = errors.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 64870  		$r = hash.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 64871  		$r = runtime.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 64872  		littleEndian = false;
 64873  		block = blockGeneric;
 64874  		init();
 64875  		init$1();
 64876  		/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
 64877  	};
 64878  	$pkg.$init = $init;
 64879  	return $pkg;
 64880  })();
 64881  $packages["crypto/rc4"] = (function() {
 64882  	var $pkg = {}, $init, strconv, Cipher, KeySizeError, ptrType, arrayType, sliceType, NewCipher;
 64883  	strconv = $packages["strconv"];
 64884  	Cipher = $pkg.Cipher = $newType(0, $kindStruct, "rc4.Cipher", true, "crypto/rc4", true, function(s_, i_, j_) {
 64885  		this.$val = this;
 64886  		if (arguments.length === 0) {
 64887  			this.s = arrayType.zero();
 64888  			this.i = 0;
 64889  			this.j = 0;
 64890  			return;
 64891  		}
 64892  		this.s = s_;
 64893  		this.i = i_;
 64894  		this.j = j_;
 64895  	});
 64896  	KeySizeError = $pkg.KeySizeError = $newType(4, $kindInt, "rc4.KeySizeError", true, "crypto/rc4", true, null);
 64897  	ptrType = $ptrType(Cipher);
 64898  	arrayType = $arrayType($Uint32, 256);
 64899  	sliceType = $sliceType($Uint8);
 64900  	KeySizeError.prototype.Error = function() {
 64901  		var k;
 64902  		k = this.$val;
 64903  		return "crypto/rc4: invalid key size " + strconv.Itoa(((k >> 0)));
 64904  	};
 64905  	$ptrType(KeySizeError).prototype.Error = function() { return new KeySizeError(this.$get()).Error(); };
 64906  	NewCipher = function(key) {
 64907  		var _r, _tmp, _tmp$1, c, i, i$1, j, k, key, x, x$1, x$2, x$3, x$4, x$5, x$6;
 64908  		k = key.$length;
 64909  		if (k < 1 || k > 256) {
 64910  			return [ptrType.nil, new KeySizeError(((k >> 0)))];
 64911  		}
 64912  		c = new Cipher.ptr(arrayType.zero(), 0, 0);
 64913  		i = 0;
 64914  		while (true) {
 64915  			if (!(i < 256)) { break; }
 64916  			(x = c.s, ((i < 0 || i >= x.length) ? ($throwRuntimeError("index out of range"), undefined) : x[i] = ((i >>> 0))));
 64917  			i = i + (1) >> 0;
 64918  		}
 64919  		j = 0;
 64920  		i$1 = 0;
 64921  		while (true) {
 64922  			if (!(i$1 < 256)) { break; }
 64923  			j = j + (((((x$1 = c.s, ((i$1 < 0 || i$1 >= x$1.length) ? ($throwRuntimeError("index out of range"), undefined) : x$1[i$1])) << 24 >>> 24)) + (x$2 = (_r = i$1 % k, _r === _r ? _r : $throwRuntimeError("integer divide by zero")), ((x$2 < 0 || x$2 >= key.$length) ? ($throwRuntimeError("index out of range"), undefined) : key.$array[key.$offset + x$2])) << 24 >>> 24)) << 24 >>> 24;
 64924  			_tmp = (x$3 = c.s, ((j < 0 || j >= x$3.length) ? ($throwRuntimeError("index out of range"), undefined) : x$3[j]));
 64925  			_tmp$1 = (x$4 = c.s, ((i$1 < 0 || i$1 >= x$4.length) ? ($throwRuntimeError("index out of range"), undefined) : x$4[i$1]));
 64926  			(x$5 = c.s, ((i$1 < 0 || i$1 >= x$5.length) ? ($throwRuntimeError("index out of range"), undefined) : x$5[i$1] = _tmp));
 64927  			(x$6 = c.s, ((j < 0 || j >= x$6.length) ? ($throwRuntimeError("index out of range"), undefined) : x$6[j] = _tmp$1));
 64928  			i$1 = i$1 + (1) >> 0;
 64929  		}
 64930  		return [c, $ifaceNil];
 64931  	};
 64932  	$pkg.NewCipher = NewCipher;
 64933  	Cipher.ptr.prototype.Reset = function() {
 64934  		var _i, _ref, _tmp, _tmp$1, c, i, x;
 64935  		c = this;
 64936  		_ref = c.s;
 64937  		_i = 0;
 64938  		while (true) {
 64939  			if (!(_i < 256)) { break; }
 64940  			i = _i;
 64941  			(x = c.s, ((i < 0 || i >= x.length) ? ($throwRuntimeError("index out of range"), undefined) : x[i] = 0));
 64942  			_i++;
 64943  		}
 64944  		_tmp = 0;
 64945  		_tmp$1 = 0;
 64946  		c.i = _tmp;
 64947  		c.j = _tmp$1;
 64948  	};
 64949  	Cipher.prototype.Reset = function() { return this.$val.Reset(); };
 64950  	Cipher.ptr.prototype.xorKeyStreamGeneric = function(dst, src) {
 64951  		var _i, _ref, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, c, dst, i, j, k, src, v, x, x$1, x$2, x$3, x$4, x$5, x$6, x$7, x$8;
 64952  		c = this;
 64953  		_tmp = c.i;
 64954  		_tmp$1 = c.j;
 64955  		i = _tmp;
 64956  		j = _tmp$1;
 64957  		_ref = src;
 64958  		_i = 0;
 64959  		while (true) {
 64960  			if (!(_i < _ref.$length)) { break; }
 64961  			k = _i;
 64962  			v = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
 64963  			i = i + (1) << 24 >>> 24;
 64964  			j = j + ((((x = c.s, ((i < 0 || i >= x.length) ? ($throwRuntimeError("index out of range"), undefined) : x[i])) << 24 >>> 24))) << 24 >>> 24;
 64965  			_tmp$2 = (x$1 = c.s, ((j < 0 || j >= x$1.length) ? ($throwRuntimeError("index out of range"), undefined) : x$1[j]));
 64966  			_tmp$3 = (x$2 = c.s, ((i < 0 || i >= x$2.length) ? ($throwRuntimeError("index out of range"), undefined) : x$2[i]));
 64967  			(x$3 = c.s, ((i < 0 || i >= x$3.length) ? ($throwRuntimeError("index out of range"), undefined) : x$3[i] = _tmp$2));
 64968  			(x$4 = c.s, ((j < 0 || j >= x$4.length) ? ($throwRuntimeError("index out of range"), undefined) : x$4[j] = _tmp$3));
 64969  			((k < 0 || k >= dst.$length) ? ($throwRuntimeError("index out of range"), undefined) : dst.$array[dst.$offset + k] = ((v ^ (((x$5 = c.s, x$6 = ((((x$7 = c.s, ((i < 0 || i >= x$7.length) ? ($throwRuntimeError("index out of range"), undefined) : x$7[i])) + (x$8 = c.s, ((j < 0 || j >= x$8.length) ? ($throwRuntimeError("index out of range"), undefined) : x$8[j])) >>> 0) << 24 >>> 24)), ((x$6 < 0 || x$6 >= x$5.length) ? ($throwRuntimeError("index out of range"), undefined) : x$5[x$6])) << 24 >>> 24))) << 24 >>> 24));
 64970  			_i++;
 64971  		}
 64972  		_tmp$4 = i;
 64973  		_tmp$5 = j;
 64974  		c.i = _tmp$4;
 64975  		c.j = _tmp$5;
 64976  	};
 64977  	Cipher.prototype.xorKeyStreamGeneric = function(dst, src) { return this.$val.xorKeyStreamGeneric(dst, src); };
 64978  	Cipher.ptr.prototype.XORKeyStream = function(dst, src) {
 64979  		var c, dst, src;
 64980  		c = this;
 64981  		c.xorKeyStreamGeneric(dst, src);
 64982  	};
 64983  	Cipher.prototype.XORKeyStream = function(dst, src) { return this.$val.XORKeyStream(dst, src); };
 64984  	ptrType.methods = [{prop: "Reset", name: "Reset", pkg: "", typ: $funcType([], [], false)}, {prop: "xorKeyStreamGeneric", name: "xorKeyStreamGeneric", pkg: "crypto/rc4", typ: $funcType([sliceType, sliceType], [], false)}, {prop: "XORKeyStream", name: "XORKeyStream", pkg: "", typ: $funcType([sliceType, sliceType], [], false)}];
 64985  	KeySizeError.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}];
 64986  	Cipher.init("crypto/rc4", [{prop: "s", name: "s", anonymous: false, exported: false, typ: arrayType, tag: ""}, {prop: "i", name: "i", anonymous: false, exported: false, typ: $Uint8, tag: ""}, {prop: "j", name: "j", anonymous: false, exported: false, typ: $Uint8, tag: ""}]);
 64987  	$init = function() {
 64988  		$pkg.$init = function() {};
 64989  		/* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 64990  		$r = strconv.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 64991  		/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
 64992  	};
 64993  	$pkg.$init = $init;
 64994  	return $pkg;
 64995  })();
 64996  $packages["crypto/rsa"] = (function() {
 64997  	var $pkg = {}, $init, bytes, crypto, rand, subtle, errors, hash, io, math, big, PKCS1v15DecryptOptions, PSSOptions, PublicKey, OAEPOptions, PrivateKey, PrecomputedValues, CRTValue, sliceType, arrayType, ptrType, ptrType$1, ptrType$2, ptrType$3, sliceType$1, sliceType$2, ptrType$4, arrayType$1, hashPrefixes, bigZero, bigOne, errPublicModulus, errPublicExponentSmall, errPublicExponentLarge, EncryptPKCS1v15, DecryptPKCS1v15, DecryptPKCS1v15SessionKey, decryptPKCS1v15, nonZeroRandomBytes, SignPKCS1v15, VerifyPKCS1v15, pkcs1v15HashInfo, copyWithLeftPad, emsaPSSEncode, emsaPSSVerify, signPSSWithSalt, SignPSS, VerifyPSS, verifyPSS, checkPub, incCounter, mgf1XOR, encrypt, modInverse, decrypt, decryptAndCheck, DecryptOAEP, leftPad;
 64998  	bytes = $packages["bytes"];
 64999  	crypto = $packages["crypto"];
 65000  	rand = $packages["crypto/rand"];
 65001  	subtle = $packages["crypto/subtle"];
 65002  	errors = $packages["errors"];
 65003  	hash = $packages["hash"];
 65004  	io = $packages["io"];
 65005  	math = $packages["math"];
 65006  	big = $packages["math/big"];
 65007  	PKCS1v15DecryptOptions = $pkg.PKCS1v15DecryptOptions = $newType(0, $kindStruct, "rsa.PKCS1v15DecryptOptions", true, "crypto/rsa", true, function(SessionKeyLen_) {
 65008  		this.$val = this;
 65009  		if (arguments.length === 0) {
 65010  			this.SessionKeyLen = 0;
 65011  			return;
 65012  		}
 65013  		this.SessionKeyLen = SessionKeyLen_;
 65014  	});
 65015  	PSSOptions = $pkg.PSSOptions = $newType(0, $kindStruct, "rsa.PSSOptions", true, "crypto/rsa", true, function(SaltLength_, Hash_) {
 65016  		this.$val = this;
 65017  		if (arguments.length === 0) {
 65018  			this.SaltLength = 0;
 65019  			this.Hash = 0;
 65020  			return;
 65021  		}
 65022  		this.SaltLength = SaltLength_;
 65023  		this.Hash = Hash_;
 65024  	});
 65025  	PublicKey = $pkg.PublicKey = $newType(0, $kindStruct, "rsa.PublicKey", true, "crypto/rsa", true, function(N_, E_) {
 65026  		this.$val = this;
 65027  		if (arguments.length === 0) {
 65028  			this.N = ptrType$1.nil;
 65029  			this.E = 0;
 65030  			return;
 65031  		}
 65032  		this.N = N_;
 65033  		this.E = E_;
 65034  	});
 65035  	OAEPOptions = $pkg.OAEPOptions = $newType(0, $kindStruct, "rsa.OAEPOptions", true, "crypto/rsa", true, function(Hash_, Label_) {
 65036  		this.$val = this;
 65037  		if (arguments.length === 0) {
 65038  			this.Hash = 0;
 65039  			this.Label = sliceType.nil;
 65040  			return;
 65041  		}
 65042  		this.Hash = Hash_;
 65043  		this.Label = Label_;
 65044  	});
 65045  	PrivateKey = $pkg.PrivateKey = $newType(0, $kindStruct, "rsa.PrivateKey", true, "crypto/rsa", true, function(PublicKey_, D_, Primes_, Precomputed_) {
 65046  		this.$val = this;
 65047  		if (arguments.length === 0) {
 65048  			this.PublicKey = new PublicKey.ptr(ptrType$1.nil, 0);
 65049  			this.D = ptrType$1.nil;
 65050  			this.Primes = sliceType$1.nil;
 65051  			this.Precomputed = new PrecomputedValues.ptr(ptrType$1.nil, ptrType$1.nil, ptrType$1.nil, sliceType$2.nil);
 65052  			return;
 65053  		}
 65054  		this.PublicKey = PublicKey_;
 65055  		this.D = D_;
 65056  		this.Primes = Primes_;
 65057  		this.Precomputed = Precomputed_;
 65058  	});
 65059  	PrecomputedValues = $pkg.PrecomputedValues = $newType(0, $kindStruct, "rsa.PrecomputedValues", true, "crypto/rsa", true, function(Dp_, Dq_, Qinv_, CRTValues_) {
 65060  		this.$val = this;
 65061  		if (arguments.length === 0) {
 65062  			this.Dp = ptrType$1.nil;
 65063  			this.Dq = ptrType$1.nil;
 65064  			this.Qinv = ptrType$1.nil;
 65065  			this.CRTValues = sliceType$2.nil;
 65066  			return;
 65067  		}
 65068  		this.Dp = Dp_;
 65069  		this.Dq = Dq_;
 65070  		this.Qinv = Qinv_;
 65071  		this.CRTValues = CRTValues_;
 65072  	});
 65073  	CRTValue = $pkg.CRTValue = $newType(0, $kindStruct, "rsa.CRTValue", true, "crypto/rsa", true, function(Exp_, Coeff_, R_) {
 65074  		this.$val = this;
 65075  		if (arguments.length === 0) {
 65076  			this.Exp = ptrType$1.nil;
 65077  			this.Coeff = ptrType$1.nil;
 65078  			this.R = ptrType$1.nil;
 65079  			return;
 65080  		}
 65081  		this.Exp = Exp_;
 65082  		this.Coeff = Coeff_;
 65083  		this.R = R_;
 65084  	});
 65085  	sliceType = $sliceType($Uint8);
 65086  	arrayType = $arrayType($Uint8, 8);
 65087  	ptrType = $ptrType(PSSOptions);
 65088  	ptrType$1 = $ptrType(big.Int);
 65089  	ptrType$2 = $ptrType(OAEPOptions);
 65090  	ptrType$3 = $ptrType(PKCS1v15DecryptOptions);
 65091  	sliceType$1 = $sliceType(ptrType$1);
 65092  	sliceType$2 = $sliceType(CRTValue);
 65093  	ptrType$4 = $ptrType(PrivateKey);
 65094  	arrayType$1 = $arrayType($Uint8, 4);
 65095  	EncryptPKCS1v15 = function(rand$1, pub, msg) {
 65096  		var _q, _r, _r$1, _tmp, _tmp$1, c, em, err, err$1, k, m, mm, msg, ps, pub, rand$1, x, $s, $r;
 65097  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _q = $f._q; _r = $f._r; _r$1 = $f._r$1; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; c = $f.c; em = $f.em; err = $f.err; err$1 = $f.err$1; k = $f.k; m = $f.m; mm = $f.mm; msg = $f.msg; ps = $f.ps; pub = $f.pub; rand$1 = $f.rand$1; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 65098  		err = checkPub(pub);
 65099  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 65100  			$s = -1; return [sliceType.nil, err];
 65101  		}
 65102  		k = (_q = ((pub.N.BitLen() + 7 >> 0)) / 8, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero"));
 65103  		if (msg.$length > (k - 11 >> 0)) {
 65104  			$s = -1; return [sliceType.nil, $pkg.ErrMessageTooLong];
 65105  		}
 65106  		em = $makeSlice(sliceType, k);
 65107  		(1 >= em.$length ? ($throwRuntimeError("index out of range"), undefined) : em.$array[em.$offset + 1] = 2);
 65108  		_tmp = $subslice(em, 2, ((em.$length - msg.$length >> 0) - 1 >> 0));
 65109  		_tmp$1 = $subslice(em, (em.$length - msg.$length >> 0));
 65110  		ps = _tmp;
 65111  		mm = _tmp$1;
 65112  		_r = nonZeroRandomBytes(ps, rand$1); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 65113  		err$1 = _r;
 65114  		if (!($interfaceIsEqual(err$1, $ifaceNil))) {
 65115  			$s = -1; return [sliceType.nil, err$1];
 65116  		}
 65117  		(x = (em.$length - msg.$length >> 0) - 1 >> 0, ((x < 0 || x >= em.$length) ? ($throwRuntimeError("index out of range"), undefined) : em.$array[em.$offset + x] = 0));
 65118  		$copySlice(mm, msg);
 65119  		m = new big.Int.ptr(false, big.nat.nil).SetBytes(em);
 65120  		_r$1 = encrypt(new big.Int.ptr(false, big.nat.nil), pub, m); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 65121  		c = _r$1;
 65122  		copyWithLeftPad(em, c.Bytes());
 65123  		$s = -1; return [em, $ifaceNil];
 65124  		/* */ } return; } if ($f === undefined) { $f = { $blk: EncryptPKCS1v15 }; } $f._q = _q; $f._r = _r; $f._r$1 = _r$1; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f.c = c; $f.em = em; $f.err = err; $f.err$1 = err$1; $f.k = k; $f.m = m; $f.mm = mm; $f.msg = msg; $f.ps = ps; $f.pub = pub; $f.rand$1 = rand$1; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
 65125  	};
 65126  	$pkg.EncryptPKCS1v15 = EncryptPKCS1v15;
 65127  	DecryptPKCS1v15 = function(rand$1, priv, ciphertext) {
 65128  		var _r, _tuple, ciphertext, err, err$1, index, out, priv, rand$1, valid, $s, $r;
 65129  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; ciphertext = $f.ciphertext; err = $f.err; err$1 = $f.err$1; index = $f.index; out = $f.out; priv = $f.priv; rand$1 = $f.rand$1; valid = $f.valid; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 65130  		err = checkPub(priv.PublicKey);
 65131  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 65132  			$s = -1; return [sliceType.nil, err];
 65133  		}
 65134  		_r = decryptPKCS1v15(rand$1, priv, ciphertext); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 65135  		_tuple = _r;
 65136  		valid = _tuple[0];
 65137  		out = _tuple[1];
 65138  		index = _tuple[2];
 65139  		err$1 = _tuple[3];
 65140  		if (!($interfaceIsEqual(err$1, $ifaceNil))) {
 65141  			$s = -1; return [sliceType.nil, err$1];
 65142  		}
 65143  		if (valid === 0) {
 65144  			$s = -1; return [sliceType.nil, $pkg.ErrDecryption];
 65145  		}
 65146  		$s = -1; return [$subslice(out, index), $ifaceNil];
 65147  		/* */ } return; } if ($f === undefined) { $f = { $blk: DecryptPKCS1v15 }; } $f._r = _r; $f._tuple = _tuple; $f.ciphertext = ciphertext; $f.err = err; $f.err$1 = err$1; $f.index = index; $f.out = out; $f.priv = priv; $f.rand$1 = rand$1; $f.valid = valid; $f.$s = $s; $f.$r = $r; return $f;
 65148  	};
 65149  	$pkg.DecryptPKCS1v15 = DecryptPKCS1v15;
 65150  	DecryptPKCS1v15SessionKey = function(rand$1, priv, ciphertext, key) {
 65151  		var _q, _r, _tuple, ciphertext, em, err, err$1, index, k, key, priv, rand$1, valid, $s, $r;
 65152  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _q = $f._q; _r = $f._r; _tuple = $f._tuple; ciphertext = $f.ciphertext; em = $f.em; err = $f.err; err$1 = $f.err$1; index = $f.index; k = $f.k; key = $f.key; priv = $f.priv; rand$1 = $f.rand$1; valid = $f.valid; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 65153  		err = checkPub(priv.PublicKey);
 65154  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 65155  			$s = -1; return err;
 65156  		}
 65157  		k = (_q = ((priv.PublicKey.N.BitLen() + 7 >> 0)) / 8, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero"));
 65158  		if ((k - (((key.$length + 3 >> 0) + 8 >> 0)) >> 0) < 0) {
 65159  			$s = -1; return $pkg.ErrDecryption;
 65160  		}
 65161  		_r = decryptPKCS1v15(rand$1, priv, ciphertext); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 65162  		_tuple = _r;
 65163  		valid = _tuple[0];
 65164  		em = _tuple[1];
 65165  		index = _tuple[2];
 65166  		err$1 = _tuple[3];
 65167  		if (!($interfaceIsEqual(err$1, $ifaceNil))) {
 65168  			$s = -1; return err$1;
 65169  		}
 65170  		if (!((em.$length === k))) {
 65171  			$s = -1; return $pkg.ErrDecryption;
 65172  		}
 65173  		valid = valid & (subtle.ConstantTimeEq((((em.$length - index >> 0) >> 0)), ((key.$length >> 0))));
 65174  		subtle.ConstantTimeCopy(valid, key, $subslice(em, (em.$length - key.$length >> 0)));
 65175  		$s = -1; return $ifaceNil;
 65176  		/* */ } return; } if ($f === undefined) { $f = { $blk: DecryptPKCS1v15SessionKey }; } $f._q = _q; $f._r = _r; $f._tuple = _tuple; $f.ciphertext = ciphertext; $f.em = em; $f.err = err; $f.err$1 = err$1; $f.index = index; $f.k = k; $f.key = key; $f.priv = priv; $f.rand$1 = rand$1; $f.valid = valid; $f.$s = $s; $f.$r = $r; return $f;
 65177  	};
 65178  	$pkg.DecryptPKCS1v15SessionKey = DecryptPKCS1v15SessionKey;
 65179  	decryptPKCS1v15 = function(rand$1, priv, ciphertext) {
 65180  		var _q, _r, _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, c, ciphertext, em, equals0, err, firstByteIsZero, i, index, k, lookingForIndex, m, priv, rand$1, secondByteIsTwo, valid, validPS, $s, $r;
 65181  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _q = $f._q; _r = $f._r; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tuple = $f._tuple; c = $f.c; ciphertext = $f.ciphertext; em = $f.em; equals0 = $f.equals0; err = $f.err; firstByteIsZero = $f.firstByteIsZero; i = $f.i; index = $f.index; k = $f.k; lookingForIndex = $f.lookingForIndex; m = $f.m; priv = $f.priv; rand$1 = $f.rand$1; secondByteIsTwo = $f.secondByteIsTwo; valid = $f.valid; validPS = $f.validPS; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 65182  		valid = 0;
 65183  		em = sliceType.nil;
 65184  		index = 0;
 65185  		err = $ifaceNil;
 65186  		k = (_q = ((priv.PublicKey.N.BitLen() + 7 >> 0)) / 8, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero"));
 65187  		if (k < 11) {
 65188  			err = $pkg.ErrDecryption;
 65189  			$s = -1; return [valid, em, index, err];
 65190  		}
 65191  		c = new big.Int.ptr(false, big.nat.nil).SetBytes(ciphertext);
 65192  		_r = decrypt(rand$1, priv, c); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 65193  		_tuple = _r;
 65194  		m = _tuple[0];
 65195  		err = _tuple[1];
 65196  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 65197  			$s = -1; return [valid, em, index, err];
 65198  		}
 65199  		em = leftPad(m.Bytes(), k);
 65200  		firstByteIsZero = subtle.ConstantTimeByteEq((0 >= em.$length ? ($throwRuntimeError("index out of range"), undefined) : em.$array[em.$offset + 0]), 0);
 65201  		secondByteIsTwo = subtle.ConstantTimeByteEq((1 >= em.$length ? ($throwRuntimeError("index out of range"), undefined) : em.$array[em.$offset + 1]), 2);
 65202  		lookingForIndex = 1;
 65203  		i = 2;
 65204  		while (true) {
 65205  			if (!(i < em.$length)) { break; }
 65206  			equals0 = subtle.ConstantTimeByteEq(((i < 0 || i >= em.$length) ? ($throwRuntimeError("index out of range"), undefined) : em.$array[em.$offset + i]), 0);
 65207  			index = subtle.ConstantTimeSelect(lookingForIndex & equals0, i, index);
 65208  			lookingForIndex = subtle.ConstantTimeSelect(equals0, 0, lookingForIndex);
 65209  			i = i + (1) >> 0;
 65210  		}
 65211  		validPS = subtle.ConstantTimeLessOrEq(10, index);
 65212  		valid = ((firstByteIsZero & secondByteIsTwo) & (((~lookingForIndex >> 0) & 1))) & validPS;
 65213  		index = subtle.ConstantTimeSelect(valid, index + 1 >> 0, 0);
 65214  		_tmp = valid;
 65215  		_tmp$1 = em;
 65216  		_tmp$2 = index;
 65217  		_tmp$3 = $ifaceNil;
 65218  		valid = _tmp;
 65219  		em = _tmp$1;
 65220  		index = _tmp$2;
 65221  		err = _tmp$3;
 65222  		$s = -1; return [valid, em, index, err];
 65223  		/* */ } return; } if ($f === undefined) { $f = { $blk: decryptPKCS1v15 }; } $f._q = _q; $f._r = _r; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tuple = _tuple; $f.c = c; $f.ciphertext = ciphertext; $f.em = em; $f.equals0 = equals0; $f.err = err; $f.firstByteIsZero = firstByteIsZero; $f.i = i; $f.index = index; $f.k = k; $f.lookingForIndex = lookingForIndex; $f.m = m; $f.priv = priv; $f.rand$1 = rand$1; $f.secondByteIsTwo = secondByteIsTwo; $f.valid = valid; $f.validPS = validPS; $f.$s = $s; $f.$r = $r; return $f;
 65224  	};
 65225  	nonZeroRandomBytes = function(s, rand$1) {
 65226  		var _r, _r$1, _tuple, _tuple$1, err, i, rand$1, s, $s, $r;
 65227  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; err = $f.err; i = $f.i; rand$1 = $f.rand$1; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 65228  		err = $ifaceNil;
 65229  		_r = io.ReadFull(rand$1, s); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 65230  		_tuple = _r;
 65231  		err = _tuple[1];
 65232  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 65233  			$s = -1; return err;
 65234  		}
 65235  		i = 0;
 65236  		/* while (true) { */ case 2:
 65237  			/* if (!(i < s.$length)) { break; } */ if(!(i < s.$length)) { $s = 3; continue; }
 65238  			/* while (true) { */ case 4:
 65239  				/* if (!(((i < 0 || i >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + i]) === 0)) { break; } */ if(!(((i < 0 || i >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + i]) === 0)) { $s = 5; continue; }
 65240  				_r$1 = io.ReadFull(rand$1, $subslice(s, i, (i + 1 >> 0))); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 65241  				_tuple$1 = _r$1;
 65242  				err = _tuple$1[1];
 65243  				if (!($interfaceIsEqual(err, $ifaceNil))) {
 65244  					$s = -1; return err;
 65245  				}
 65246  				((i < 0 || i >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + i] = ((((i < 0 || i >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + i]) ^ (66)) << 24 >>> 24));
 65247  			/* } */ $s = 4; continue; case 5:
 65248  			i = i + (1) >> 0;
 65249  		/* } */ $s = 2; continue; case 3:
 65250  		$s = -1; return err;
 65251  		/* */ } return; } if ($f === undefined) { $f = { $blk: nonZeroRandomBytes }; } $f._r = _r; $f._r$1 = _r$1; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.err = err; $f.i = i; $f.rand$1 = rand$1; $f.s = s; $f.$s = $s; $f.$r = $r; return $f;
 65252  	};
 65253  	SignPKCS1v15 = function(rand$1, priv, hash$1, hashed) {
 65254  		var _q, _r, _tuple, _tuple$1, c, em, err, hash$1, hashLen, hashed, i, k, m, prefix, priv, rand$1, tLen, $s, $r;
 65255  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _q = $f._q; _r = $f._r; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; c = $f.c; em = $f.em; err = $f.err; hash$1 = $f.hash$1; hashLen = $f.hashLen; hashed = $f.hashed; i = $f.i; k = $f.k; m = $f.m; prefix = $f.prefix; priv = $f.priv; rand$1 = $f.rand$1; tLen = $f.tLen; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 65256  		_tuple = pkcs1v15HashInfo(hash$1, hashed.$length);
 65257  		hashLen = _tuple[0];
 65258  		prefix = _tuple[1];
 65259  		err = _tuple[2];
 65260  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 65261  			$s = -1; return [sliceType.nil, err];
 65262  		}
 65263  		tLen = prefix.$length + hashLen >> 0;
 65264  		k = (_q = ((priv.PublicKey.N.BitLen() + 7 >> 0)) / 8, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero"));
 65265  		if (k < (tLen + 11 >> 0)) {
 65266  			$s = -1; return [sliceType.nil, $pkg.ErrMessageTooLong];
 65267  		}
 65268  		em = $makeSlice(sliceType, k);
 65269  		(1 >= em.$length ? ($throwRuntimeError("index out of range"), undefined) : em.$array[em.$offset + 1] = 1);
 65270  		i = 2;
 65271  		while (true) {
 65272  			if (!(i < ((k - tLen >> 0) - 1 >> 0))) { break; }
 65273  			((i < 0 || i >= em.$length) ? ($throwRuntimeError("index out of range"), undefined) : em.$array[em.$offset + i] = 255);
 65274  			i = i + (1) >> 0;
 65275  		}
 65276  		$copySlice($subslice(em, (k - tLen >> 0), (k - hashLen >> 0)), prefix);
 65277  		$copySlice($subslice(em, (k - hashLen >> 0), k), hashed);
 65278  		m = new big.Int.ptr(false, big.nat.nil).SetBytes(em);
 65279  		_r = decryptAndCheck(rand$1, priv, m); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 65280  		_tuple$1 = _r;
 65281  		c = _tuple$1[0];
 65282  		err = _tuple$1[1];
 65283  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 65284  			$s = -1; return [sliceType.nil, err];
 65285  		}
 65286  		copyWithLeftPad(em, c.Bytes());
 65287  		$s = -1; return [em, $ifaceNil];
 65288  		/* */ } return; } if ($f === undefined) { $f = { $blk: SignPKCS1v15 }; } $f._q = _q; $f._r = _r; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.c = c; $f.em = em; $f.err = err; $f.hash$1 = hash$1; $f.hashLen = hashLen; $f.hashed = hashed; $f.i = i; $f.k = k; $f.m = m; $f.prefix = prefix; $f.priv = priv; $f.rand$1 = rand$1; $f.tLen = tLen; $f.$s = $s; $f.$r = $r; return $f;
 65289  	};
 65290  	$pkg.SignPKCS1v15 = SignPKCS1v15;
 65291  	VerifyPKCS1v15 = function(pub, hash$1, hashed, sig) {
 65292  		var _q, _r, _tuple, c, em, err, hash$1, hashLen, hashed, i, k, m, ok, prefix, pub, sig, tLen, x, $s, $r;
 65293  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _q = $f._q; _r = $f._r; _tuple = $f._tuple; c = $f.c; em = $f.em; err = $f.err; hash$1 = $f.hash$1; hashLen = $f.hashLen; hashed = $f.hashed; i = $f.i; k = $f.k; m = $f.m; ok = $f.ok; prefix = $f.prefix; pub = $f.pub; sig = $f.sig; tLen = $f.tLen; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 65294  		_tuple = pkcs1v15HashInfo(hash$1, hashed.$length);
 65295  		hashLen = _tuple[0];
 65296  		prefix = _tuple[1];
 65297  		err = _tuple[2];
 65298  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 65299  			$s = -1; return err;
 65300  		}
 65301  		tLen = prefix.$length + hashLen >> 0;
 65302  		k = (_q = ((pub.N.BitLen() + 7 >> 0)) / 8, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero"));
 65303  		if (k < (tLen + 11 >> 0)) {
 65304  			$s = -1; return $pkg.ErrVerification;
 65305  		}
 65306  		c = new big.Int.ptr(false, big.nat.nil).SetBytes(sig);
 65307  		_r = encrypt(new big.Int.ptr(false, big.nat.nil), pub, c); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 65308  		m = _r;
 65309  		em = leftPad(m.Bytes(), k);
 65310  		ok = subtle.ConstantTimeByteEq((0 >= em.$length ? ($throwRuntimeError("index out of range"), undefined) : em.$array[em.$offset + 0]), 0);
 65311  		ok = ok & (subtle.ConstantTimeByteEq((1 >= em.$length ? ($throwRuntimeError("index out of range"), undefined) : em.$array[em.$offset + 1]), 1));
 65312  		ok = ok & (subtle.ConstantTimeCompare($subslice(em, (k - hashLen >> 0), k), hashed));
 65313  		ok = ok & (subtle.ConstantTimeCompare($subslice(em, (k - tLen >> 0), (k - hashLen >> 0)), prefix));
 65314  		ok = ok & (subtle.ConstantTimeByteEq((x = (k - tLen >> 0) - 1 >> 0, ((x < 0 || x >= em.$length) ? ($throwRuntimeError("index out of range"), undefined) : em.$array[em.$offset + x])), 0));
 65315  		i = 2;
 65316  		while (true) {
 65317  			if (!(i < ((k - tLen >> 0) - 1 >> 0))) { break; }
 65318  			ok = ok & (subtle.ConstantTimeByteEq(((i < 0 || i >= em.$length) ? ($throwRuntimeError("index out of range"), undefined) : em.$array[em.$offset + i]), 255));
 65319  			i = i + (1) >> 0;
 65320  		}
 65321  		if (!((ok === 1))) {
 65322  			$s = -1; return $pkg.ErrVerification;
 65323  		}
 65324  		$s = -1; return $ifaceNil;
 65325  		/* */ } return; } if ($f === undefined) { $f = { $blk: VerifyPKCS1v15 }; } $f._q = _q; $f._r = _r; $f._tuple = _tuple; $f.c = c; $f.em = em; $f.err = err; $f.hash$1 = hash$1; $f.hashLen = hashLen; $f.hashed = hashed; $f.i = i; $f.k = k; $f.m = m; $f.ok = ok; $f.prefix = prefix; $f.pub = pub; $f.sig = sig; $f.tLen = tLen; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
 65326  	};
 65327  	$pkg.VerifyPKCS1v15 = VerifyPKCS1v15;
 65328  	pkcs1v15HashInfo = function(hash$1, inLen) {
 65329  		var _entry, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tuple, err, hash$1, hashLen, inLen, ok, prefix;
 65330  		hashLen = 0;
 65331  		prefix = sliceType.nil;
 65332  		err = $ifaceNil;
 65333  		if (hash$1 === 0) {
 65334  			_tmp = inLen;
 65335  			_tmp$1 = sliceType.nil;
 65336  			_tmp$2 = $ifaceNil;
 65337  			hashLen = _tmp;
 65338  			prefix = _tmp$1;
 65339  			err = _tmp$2;
 65340  			return [hashLen, prefix, err];
 65341  		}
 65342  		hashLen = new crypto.Hash(hash$1).Size();
 65343  		if (!((inLen === hashLen))) {
 65344  			_tmp$3 = 0;
 65345  			_tmp$4 = sliceType.nil;
 65346  			_tmp$5 = errors.New("crypto/rsa: input must be hashed message");
 65347  			hashLen = _tmp$3;
 65348  			prefix = _tmp$4;
 65349  			err = _tmp$5;
 65350  			return [hashLen, prefix, err];
 65351  		}
 65352  		_tuple = (_entry = hashPrefixes[crypto.Hash.keyFor(hash$1)], _entry !== undefined ? [_entry.v, true] : [sliceType.nil, false]);
 65353  		prefix = _tuple[0];
 65354  		ok = _tuple[1];
 65355  		if (!ok) {
 65356  			_tmp$6 = 0;
 65357  			_tmp$7 = sliceType.nil;
 65358  			_tmp$8 = errors.New("crypto/rsa: unsupported hash function");
 65359  			hashLen = _tmp$6;
 65360  			prefix = _tmp$7;
 65361  			err = _tmp$8;
 65362  			return [hashLen, prefix, err];
 65363  		}
 65364  		return [hashLen, prefix, err];
 65365  	};
 65366  	copyWithLeftPad = function(dest, src) {
 65367  		var dest, i, numPaddingBytes, src;
 65368  		numPaddingBytes = dest.$length - src.$length >> 0;
 65369  		i = 0;
 65370  		while (true) {
 65371  			if (!(i < numPaddingBytes)) { break; }
 65372  			((i < 0 || i >= dest.$length) ? ($throwRuntimeError("index out of range"), undefined) : dest.$array[dest.$offset + i] = 0);
 65373  			i = i + (1) >> 0;
 65374  		}
 65375  		$copySlice($subslice(dest, numPaddingBytes), src);
 65376  	};
 65377  	emsaPSSEncode = function(mHash, emBits, salt, hash$1) {
 65378  		var _q, _r, _r$1, _r$2, _r$3, _r$4, db, em, emBits, emLen, h, hLen, hash$1, mHash, prefix, sLen, salt, x, x$1, y, $s, $r;
 65379  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _q = $f._q; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; db = $f.db; em = $f.em; emBits = $f.emBits; emLen = $f.emLen; h = $f.h; hLen = $f.hLen; hash$1 = $f.hash$1; mHash = $f.mHash; prefix = $f.prefix; sLen = $f.sLen; salt = $f.salt; x = $f.x; x$1 = $f.x$1; y = $f.y; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 65380  		_r = hash$1.Size(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 65381  		hLen = _r;
 65382  		sLen = salt.$length;
 65383  		emLen = (_q = ((emBits + 7 >> 0)) / 8, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero"));
 65384  		if (!((mHash.$length === hLen))) {
 65385  			$s = -1; return [sliceType.nil, errors.New("crypto/rsa: input must be hashed message")];
 65386  		}
 65387  		if (emLen < ((hLen + sLen >> 0) + 2 >> 0)) {
 65388  			$s = -1; return [sliceType.nil, errors.New("crypto/rsa: encoding error")];
 65389  		}
 65390  		em = $makeSlice(sliceType, emLen);
 65391  		db = $subslice(em, 0, (((((emLen - sLen >> 0) - hLen >> 0) - 2 >> 0) + 1 >> 0) + sLen >> 0));
 65392  		h = $subslice(em, (((((emLen - sLen >> 0) - hLen >> 0) - 2 >> 0) + 1 >> 0) + sLen >> 0), (emLen - 1 >> 0));
 65393  		prefix = arrayType.zero();
 65394  		_r$1 = hash$1.Write(new sliceType(prefix)); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 65395  		_r$1;
 65396  		_r$2 = hash$1.Write(mHash); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 65397  		_r$2;
 65398  		_r$3 = hash$1.Write(salt); /* */ $s = 4; case 4: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 65399  		_r$3;
 65400  		_r$4 = hash$1.Sum($subslice(h, 0, 0)); /* */ $s = 5; case 5: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 65401  		h = _r$4;
 65402  		$r = hash$1.Reset(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 65403  		(x = ((emLen - sLen >> 0) - hLen >> 0) - 2 >> 0, ((x < 0 || x >= db.$length) ? ($throwRuntimeError("index out of range"), undefined) : db.$array[db.$offset + x] = 1));
 65404  		$copySlice($subslice(db, (((emLen - sLen >> 0) - hLen >> 0) - 1 >> 0)), salt);
 65405  		$r = mgf1XOR(db, hash$1, h); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 65406  		(0 >= db.$length ? ($throwRuntimeError("index out of range"), undefined) : db.$array[db.$offset + 0] = (((0 >= db.$length ? ($throwRuntimeError("index out of range"), undefined) : db.$array[db.$offset + 0]) & ((((y = (((($imul(8, emLen)) - emBits >> 0) >>> 0)), y < 32 ? (255 >>> y) : 0) << 24 >>> 24)))) >>> 0));
 65407  		(x$1 = emLen - 1 >> 0, ((x$1 < 0 || x$1 >= em.$length) ? ($throwRuntimeError("index out of range"), undefined) : em.$array[em.$offset + x$1] = 188));
 65408  		$s = -1; return [em, $ifaceNil];
 65409  		/* */ } return; } if ($f === undefined) { $f = { $blk: emsaPSSEncode }; } $f._q = _q; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f.db = db; $f.em = em; $f.emBits = emBits; $f.emLen = emLen; $f.h = h; $f.hLen = hLen; $f.hash$1 = hash$1; $f.mHash = mHash; $f.prefix = prefix; $f.sLen = sLen; $f.salt = salt; $f.x = x; $f.x$1 = x$1; $f.y = y; $f.$s = $s; $f.$r = $r; return $f;
 65410  	};
 65411  	emsaPSSVerify = function(mHash, em, emBits, sLen, hash$1) {
 65412  		var _1, _i, _q, _r, _r$1, _r$2, _r$3, _r$4, _ref, db, e, em, emBits, emLen, h, h0, hLen, hash$1, mHash, prefix, sLen, salt, x, x$1, x$2, y, y$1, $s, $r;
 65413  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _i = $f._i; _q = $f._q; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _ref = $f._ref; db = $f.db; e = $f.e; em = $f.em; emBits = $f.emBits; emLen = $f.emLen; h = $f.h; h0 = $f.h0; hLen = $f.hLen; hash$1 = $f.hash$1; mHash = $f.mHash; prefix = $f.prefix; sLen = $f.sLen; salt = $f.salt; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; y = $f.y; y$1 = $f.y$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 65414  		_r = hash$1.Size(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 65415  		hLen = _r;
 65416  		if (!((hLen === mHash.$length))) {
 65417  			$s = -1; return $pkg.ErrVerification;
 65418  		}
 65419  		emLen = (_q = ((emBits + 7 >> 0)) / 8, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero"));
 65420  		if (emLen < ((hLen + sLen >> 0) + 2 >> 0)) {
 65421  			$s = -1; return $pkg.ErrVerification;
 65422  		}
 65423  		if (!(((x = em.$length - 1 >> 0, ((x < 0 || x >= em.$length) ? ($throwRuntimeError("index out of range"), undefined) : em.$array[em.$offset + x])) === 188))) {
 65424  			$s = -1; return $pkg.ErrVerification;
 65425  		}
 65426  		db = $subslice(em, 0, ((emLen - hLen >> 0) - 1 >> 0));
 65427  		h = $subslice(em, ((emLen - hLen >> 0) - 1 >> 0), (em.$length - 1 >> 0));
 65428  		if (!(((((0 >= em.$length ? ($throwRuntimeError("index out of range"), undefined) : em.$array[em.$offset + 0]) & (((y = (((8 - ((($imul(8, emLen)) - emBits >> 0)) >> 0) >>> 0)), y < 32 ? (255 << y) : 0) << 24 >>> 24))) >>> 0) === 0))) {
 65429  			$s = -1; return $pkg.ErrVerification;
 65430  		}
 65431  		$r = mgf1XOR(db, hash$1, h); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 65432  		(0 >= db.$length ? ($throwRuntimeError("index out of range"), undefined) : db.$array[db.$offset + 0] = (((0 >= db.$length ? ($throwRuntimeError("index out of range"), undefined) : db.$array[db.$offset + 0]) & ((((y$1 = (((($imul(8, emLen)) - emBits >> 0) >>> 0)), y$1 < 32 ? (255 >>> y$1) : 0) << 24 >>> 24)))) >>> 0));
 65433  		/* */ if (sLen === 0) { $s = 3; continue; }
 65434  		/* */ $s = 4; continue;
 65435  		/* if (sLen === 0) { */ case 3:
 65436  			sLen = emLen - ((hLen + 2 >> 0)) >> 0;
 65437  			FindSaltLength:
 65438  			while (true) {
 65439  				if (!(sLen >= 0)) { break; }
 65440  				_1 = (x$1 = ((emLen - hLen >> 0) - sLen >> 0) - 2 >> 0, ((x$1 < 0 || x$1 >= db.$length) ? ($throwRuntimeError("index out of range"), undefined) : db.$array[db.$offset + x$1]));
 65441  				if (_1 === (1)) {
 65442  					break FindSaltLength;
 65443  				} else if (_1 === (0)) {
 65444  					sLen = sLen - (1) >> 0;
 65445  					continue;
 65446  				} else {
 65447  					$s = -1; return $pkg.ErrVerification;
 65448  				}
 65449  				sLen = sLen - (1) >> 0;
 65450  			}
 65451  			if (sLen < 0) {
 65452  				$s = -1; return $pkg.ErrVerification;
 65453  			}
 65454  			$s = 5; continue;
 65455  		/* } else { */ case 4:
 65456  			_ref = $subslice(db, 0, (((emLen - hLen >> 0) - sLen >> 0) - 2 >> 0));
 65457  			_i = 0;
 65458  			while (true) {
 65459  				if (!(_i < _ref.$length)) { break; }
 65460  				e = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
 65461  				if (!((e === 0))) {
 65462  					$s = -1; return $pkg.ErrVerification;
 65463  				}
 65464  				_i++;
 65465  			}
 65466  			if (!(((x$2 = ((emLen - hLen >> 0) - sLen >> 0) - 2 >> 0, ((x$2 < 0 || x$2 >= db.$length) ? ($throwRuntimeError("index out of range"), undefined) : db.$array[db.$offset + x$2])) === 1))) {
 65467  				$s = -1; return $pkg.ErrVerification;
 65468  			}
 65469  		/* } */ case 5:
 65470  		salt = $subslice(db, (db.$length - sLen >> 0));
 65471  		prefix = arrayType.zero();
 65472  		_r$1 = hash$1.Write(new sliceType(prefix)); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 65473  		_r$1;
 65474  		_r$2 = hash$1.Write(mHash); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 65475  		_r$2;
 65476  		_r$3 = hash$1.Write(salt); /* */ $s = 8; case 8: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 65477  		_r$3;
 65478  		_r$4 = hash$1.Sum(sliceType.nil); /* */ $s = 9; case 9: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 65479  		h0 = _r$4;
 65480  		if (!bytes.Equal(h0, h)) {
 65481  			$s = -1; return $pkg.ErrVerification;
 65482  		}
 65483  		$s = -1; return $ifaceNil;
 65484  		/* */ } return; } if ($f === undefined) { $f = { $blk: emsaPSSVerify }; } $f._1 = _1; $f._i = _i; $f._q = _q; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._ref = _ref; $f.db = db; $f.e = e; $f.em = em; $f.emBits = emBits; $f.emLen = emLen; $f.h = h; $f.h0 = h0; $f.hLen = hLen; $f.hash$1 = hash$1; $f.mHash = mHash; $f.prefix = prefix; $f.sLen = sLen; $f.salt = salt; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.y = y; $f.y$1 = y$1; $f.$s = $s; $f.$r = $r; return $f;
 65485  	};
 65486  	signPSSWithSalt = function(rand$1, priv, hash$1, hashed, salt) {
 65487  		var _arg, _arg$1, _arg$2, _arg$3, _q, _r, _r$1, _r$2, _tuple, _tuple$1, c, em, err, hash$1, hashed, m, nBits, priv, rand$1, s, salt, $s, $r;
 65488  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _arg = $f._arg; _arg$1 = $f._arg$1; _arg$2 = $f._arg$2; _arg$3 = $f._arg$3; _q = $f._q; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; c = $f.c; em = $f.em; err = $f.err; hash$1 = $f.hash$1; hashed = $f.hashed; m = $f.m; nBits = $f.nBits; priv = $f.priv; rand$1 = $f.rand$1; s = $f.s; salt = $f.salt; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 65489  		s = sliceType.nil;
 65490  		err = $ifaceNil;
 65491  		nBits = priv.PublicKey.N.BitLen();
 65492  		_arg = hashed;
 65493  		_arg$1 = nBits - 1 >> 0;
 65494  		_arg$2 = salt;
 65495  		_r = new crypto.Hash(hash$1).New(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 65496  		_arg$3 = _r;
 65497  		_r$1 = emsaPSSEncode(_arg, _arg$1, _arg$2, _arg$3); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 65498  		_tuple = _r$1;
 65499  		em = _tuple[0];
 65500  		err = _tuple[1];
 65501  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 65502  			$s = -1; return [s, err];
 65503  		}
 65504  		m = new big.Int.ptr(false, big.nat.nil).SetBytes(em);
 65505  		_r$2 = decryptAndCheck(rand$1, priv, m); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 65506  		_tuple$1 = _r$2;
 65507  		c = _tuple$1[0];
 65508  		err = _tuple$1[1];
 65509  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 65510  			$s = -1; return [s, err];
 65511  		}
 65512  		s = $makeSlice(sliceType, (_q = ((nBits + 7 >> 0)) / 8, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")));
 65513  		copyWithLeftPad(s, c.Bytes());
 65514  		$s = -1; return [s, err];
 65515  		/* */ } return; } if ($f === undefined) { $f = { $blk: signPSSWithSalt }; } $f._arg = _arg; $f._arg$1 = _arg$1; $f._arg$2 = _arg$2; $f._arg$3 = _arg$3; $f._q = _q; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.c = c; $f.em = em; $f.err = err; $f.hash$1 = hash$1; $f.hashed = hashed; $f.m = m; $f.nBits = nBits; $f.priv = priv; $f.rand$1 = rand$1; $f.s = s; $f.salt = salt; $f.$s = $s; $f.$r = $r; return $f;
 65516  	};
 65517  	PSSOptions.ptr.prototype.HashFunc = function() {
 65518  		var pssOpts;
 65519  		pssOpts = this;
 65520  		return pssOpts.Hash;
 65521  	};
 65522  	PSSOptions.prototype.HashFunc = function() { return this.$val.HashFunc(); };
 65523  	PSSOptions.ptr.prototype.saltLength = function() {
 65524  		var opts;
 65525  		opts = this;
 65526  		if (opts === ptrType.nil) {
 65527  			return 0;
 65528  		}
 65529  		return opts.SaltLength;
 65530  	};
 65531  	PSSOptions.prototype.saltLength = function() { return this.$val.saltLength(); };
 65532  	SignPSS = function(rand$1, priv, hash$1, hashed, opts) {
 65533  		var _1, _q, _r, _r$1, _tuple, err, hash$1, hashed, opts, priv, rand$1, salt, saltLength, $s, $r;
 65534  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _q = $f._q; _r = $f._r; _r$1 = $f._r$1; _tuple = $f._tuple; err = $f.err; hash$1 = $f.hash$1; hashed = $f.hashed; opts = $f.opts; priv = $f.priv; rand$1 = $f.rand$1; salt = $f.salt; saltLength = $f.saltLength; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 65535  		saltLength = opts.saltLength();
 65536  		_1 = saltLength;
 65537  		if (_1 === (0)) {
 65538  			saltLength = ((_q = ((priv.PublicKey.N.BitLen() + 7 >> 0)) / 8, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")) - 2 >> 0) - new crypto.Hash(hash$1).Size() >> 0;
 65539  		} else if (_1 === (-1)) {
 65540  			saltLength = new crypto.Hash(hash$1).Size();
 65541  		}
 65542  		if (!(opts === ptrType.nil) && !((opts.Hash === 0))) {
 65543  			hash$1 = opts.Hash;
 65544  		}
 65545  		salt = $makeSlice(sliceType, saltLength);
 65546  		_r = io.ReadFull(rand$1, salt); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 65547  		_tuple = _r;
 65548  		err = _tuple[1];
 65549  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 65550  			$s = -1; return [sliceType.nil, err];
 65551  		}
 65552  		_r$1 = signPSSWithSalt(rand$1, priv, hash$1, hashed, salt); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 65553  		$s = -1; return _r$1;
 65554  		/* */ } return; } if ($f === undefined) { $f = { $blk: SignPSS }; } $f._1 = _1; $f._q = _q; $f._r = _r; $f._r$1 = _r$1; $f._tuple = _tuple; $f.err = err; $f.hash$1 = hash$1; $f.hashed = hashed; $f.opts = opts; $f.priv = priv; $f.rand$1 = rand$1; $f.salt = salt; $f.saltLength = saltLength; $f.$s = $s; $f.$r = $r; return $f;
 65555  	};
 65556  	$pkg.SignPSS = SignPSS;
 65557  	VerifyPSS = function(pub, hash$1, hashed, sig, opts) {
 65558  		var _r, hash$1, hashed, opts, pub, sig, $s, $r;
 65559  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; hash$1 = $f.hash$1; hashed = $f.hashed; opts = $f.opts; pub = $f.pub; sig = $f.sig; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 65560  		_r = verifyPSS(pub, hash$1, hashed, sig, opts.saltLength()); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 65561  		$s = -1; return _r;
 65562  		/* */ } return; } if ($f === undefined) { $f = { $blk: VerifyPSS }; } $f._r = _r; $f.hash$1 = hash$1; $f.hashed = hashed; $f.opts = opts; $f.pub = pub; $f.sig = sig; $f.$s = $s; $f.$r = $r; return $f;
 65563  	};
 65564  	$pkg.VerifyPSS = VerifyPSS;
 65565  	verifyPSS = function(pub, hash$1, hashed, sig, saltLen) {
 65566  		var _arg, _arg$1, _arg$2, _arg$3, _arg$4, _q, _q$1, _r, _r$1, _r$2, em, emBits, emLen, hash$1, hashed, m, nBits, pub, s, saltLen, sig, $s, $r;
 65567  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _arg = $f._arg; _arg$1 = $f._arg$1; _arg$2 = $f._arg$2; _arg$3 = $f._arg$3; _arg$4 = $f._arg$4; _q = $f._q; _q$1 = $f._q$1; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; em = $f.em; emBits = $f.emBits; emLen = $f.emLen; hash$1 = $f.hash$1; hashed = $f.hashed; m = $f.m; nBits = $f.nBits; pub = $f.pub; s = $f.s; saltLen = $f.saltLen; sig = $f.sig; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 65568  		nBits = pub.N.BitLen();
 65569  		if (!((sig.$length === (_q = ((nBits + 7 >> 0)) / 8, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero"))))) {
 65570  			$s = -1; return $pkg.ErrVerification;
 65571  		}
 65572  		s = new big.Int.ptr(false, big.nat.nil).SetBytes(sig);
 65573  		_r = encrypt(new big.Int.ptr(false, big.nat.nil), pub, s); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 65574  		m = _r;
 65575  		emBits = nBits - 1 >> 0;
 65576  		emLen = (_q$1 = ((emBits + 7 >> 0)) / 8, (_q$1 === _q$1 && _q$1 !== 1/0 && _q$1 !== -1/0) ? _q$1 >> 0 : $throwRuntimeError("integer divide by zero"));
 65577  		if (emLen < m.Bytes().$length) {
 65578  			$s = -1; return $pkg.ErrVerification;
 65579  		}
 65580  		em = $makeSlice(sliceType, emLen);
 65581  		copyWithLeftPad(em, m.Bytes());
 65582  		if (saltLen === -1) {
 65583  			saltLen = new crypto.Hash(hash$1).Size();
 65584  		}
 65585  		_arg = hashed;
 65586  		_arg$1 = em;
 65587  		_arg$2 = emBits;
 65588  		_arg$3 = saltLen;
 65589  		_r$1 = new crypto.Hash(hash$1).New(); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 65590  		_arg$4 = _r$1;
 65591  		_r$2 = emsaPSSVerify(_arg, _arg$1, _arg$2, _arg$3, _arg$4); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 65592  		$s = -1; return _r$2;
 65593  		/* */ } return; } if ($f === undefined) { $f = { $blk: verifyPSS }; } $f._arg = _arg; $f._arg$1 = _arg$1; $f._arg$2 = _arg$2; $f._arg$3 = _arg$3; $f._arg$4 = _arg$4; $f._q = _q; $f._q$1 = _q$1; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f.em = em; $f.emBits = emBits; $f.emLen = emLen; $f.hash$1 = hash$1; $f.hashed = hashed; $f.m = m; $f.nBits = nBits; $f.pub = pub; $f.s = s; $f.saltLen = saltLen; $f.sig = sig; $f.$s = $s; $f.$r = $r; return $f;
 65594  	};
 65595  	checkPub = function(pub) {
 65596  		var pub;
 65597  		if (pub.N === ptrType$1.nil) {
 65598  			return errPublicModulus;
 65599  		}
 65600  		if (pub.E < 2) {
 65601  			return errPublicExponentSmall;
 65602  		}
 65603  		if (pub.E > 2147483647) {
 65604  			return errPublicExponentLarge;
 65605  		}
 65606  		return $ifaceNil;
 65607  	};
 65608  	PrivateKey.ptr.prototype.Public = function() {
 65609  		var priv;
 65610  		priv = this;
 65611  		return priv.PublicKey;
 65612  	};
 65613  	PrivateKey.prototype.Public = function() { return this.$val.Public(); };
 65614  	PrivateKey.ptr.prototype.Sign = function(rand$1, digest, opts) {
 65615  		var _arg, _arg$1, _arg$2, _arg$3, _r, _r$1, _r$2, _tuple, digest, ok, opts, priv, pssOpts, rand$1, $s, $r;
 65616  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _arg = $f._arg; _arg$1 = $f._arg$1; _arg$2 = $f._arg$2; _arg$3 = $f._arg$3; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _tuple = $f._tuple; digest = $f.digest; ok = $f.ok; opts = $f.opts; priv = $f.priv; pssOpts = $f.pssOpts; rand$1 = $f.rand$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 65617  		priv = this;
 65618  		_tuple = $assertType(opts, ptrType, true);
 65619  		pssOpts = _tuple[0];
 65620  		ok = _tuple[1];
 65621  		/* */ if (ok) { $s = 1; continue; }
 65622  		/* */ $s = 2; continue;
 65623  		/* if (ok) { */ case 1:
 65624  			_r = SignPSS(rand$1, priv, pssOpts.Hash, digest, pssOpts); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 65625  			$s = -1; return _r;
 65626  		/* } */ case 2:
 65627  		_arg = rand$1;
 65628  		_arg$1 = priv;
 65629  		_r$1 = opts.HashFunc(); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 65630  		_arg$2 = _r$1;
 65631  		_arg$3 = digest;
 65632  		_r$2 = SignPKCS1v15(_arg, _arg$1, _arg$2, _arg$3); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 65633  		$s = -1; return _r$2;
 65634  		/* */ } return; } if ($f === undefined) { $f = { $blk: PrivateKey.ptr.prototype.Sign }; } $f._arg = _arg; $f._arg$1 = _arg$1; $f._arg$2 = _arg$2; $f._arg$3 = _arg$3; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._tuple = _tuple; $f.digest = digest; $f.ok = ok; $f.opts = opts; $f.priv = priv; $f.pssOpts = pssOpts; $f.rand$1 = rand$1; $f.$s = $s; $f.$r = $r; return $f;
 65635  	};
 65636  	PrivateKey.prototype.Sign = function(rand$1, digest, opts) { return this.$val.Sign(rand$1, digest, opts); };
 65637  	PrivateKey.ptr.prototype.Decrypt = function(rand$1, ciphertext, opts) {
 65638  		var _r, _r$1, _r$2, _r$3, _r$4, _r$5, _ref, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tuple, _tuple$1, _tuple$2, _tuple$3, ciphertext, err, err$1, err$2, l, opts, opts$1, opts$2, opts$3, plaintext, priv, rand$1, $s, $r;
 65639  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _ref = $f._ref; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tmp$4 = $f._tmp$4; _tmp$5 = $f._tmp$5; _tmp$6 = $f._tmp$6; _tmp$7 = $f._tmp$7; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; ciphertext = $f.ciphertext; err = $f.err; err$1 = $f.err$1; err$2 = $f.err$2; l = $f.l; opts = $f.opts; opts$1 = $f.opts$1; opts$2 = $f.opts$2; opts$3 = $f.opts$3; plaintext = $f.plaintext; priv = $f.priv; rand$1 = $f.rand$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 65640  		plaintext = sliceType.nil;
 65641  		err = $ifaceNil;
 65642  		priv = this;
 65643  		/* */ if ($interfaceIsEqual(opts, $ifaceNil)) { $s = 1; continue; }
 65644  		/* */ $s = 2; continue;
 65645  		/* if ($interfaceIsEqual(opts, $ifaceNil)) { */ case 1:
 65646  			_r = DecryptPKCS1v15(rand$1, priv, ciphertext); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 65647  			_tuple = _r;
 65648  			plaintext = _tuple[0];
 65649  			err = _tuple[1];
 65650  			$s = -1; return [plaintext, err];
 65651  		/* } */ case 2:
 65652  		_ref = opts;
 65653  		/* */ if ($assertType(_ref, ptrType$2, true)[1]) { $s = 4; continue; }
 65654  		/* */ if ($assertType(_ref, ptrType$3, true)[1]) { $s = 5; continue; }
 65655  		/* */ $s = 6; continue;
 65656  		/* if ($assertType(_ref, ptrType$2, true)[1]) { */ case 4:
 65657  			opts$1 = _ref.$val;
 65658  			_r$1 = new crypto.Hash(opts$1.Hash).New(); /* */ $s = 8; case 8: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 65659  			_r$2 = DecryptOAEP(_r$1, rand$1, priv, ciphertext, opts$1.Label); /* */ $s = 9; case 9: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 65660  			_tuple$1 = _r$2;
 65661  			plaintext = _tuple$1[0];
 65662  			err = _tuple$1[1];
 65663  			$s = -1; return [plaintext, err];
 65664  		/* } else if ($assertType(_ref, ptrType$3, true)[1]) { */ case 5:
 65665  			opts$2 = _ref.$val;
 65666  			l = opts$2.SessionKeyLen;
 65667  			/* */ if (l > 0) { $s = 10; continue; }
 65668  			/* */ $s = 11; continue;
 65669  			/* if (l > 0) { */ case 10:
 65670  				plaintext = $makeSlice(sliceType, l);
 65671  				_r$3 = io.ReadFull(rand$1, plaintext); /* */ $s = 13; case 13: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 65672  				_tuple$2 = _r$3;
 65673  				err$1 = _tuple$2[1];
 65674  				if (!($interfaceIsEqual(err$1, $ifaceNil))) {
 65675  					_tmp = sliceType.nil;
 65676  					_tmp$1 = err$1;
 65677  					plaintext = _tmp;
 65678  					err = _tmp$1;
 65679  					$s = -1; return [plaintext, err];
 65680  				}
 65681  				_r$4 = DecryptPKCS1v15SessionKey(rand$1, priv, ciphertext, plaintext); /* */ $s = 14; case 14: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 65682  				err$2 = _r$4;
 65683  				if (!($interfaceIsEqual(err$2, $ifaceNil))) {
 65684  					_tmp$2 = sliceType.nil;
 65685  					_tmp$3 = err$2;
 65686  					plaintext = _tmp$2;
 65687  					err = _tmp$3;
 65688  					$s = -1; return [plaintext, err];
 65689  				}
 65690  				_tmp$4 = plaintext;
 65691  				_tmp$5 = $ifaceNil;
 65692  				plaintext = _tmp$4;
 65693  				err = _tmp$5;
 65694  				$s = -1; return [plaintext, err];
 65695  			/* } else { */ case 11:
 65696  				_r$5 = DecryptPKCS1v15(rand$1, priv, ciphertext); /* */ $s = 15; case 15: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
 65697  				_tuple$3 = _r$5;
 65698  				plaintext = _tuple$3[0];
 65699  				err = _tuple$3[1];
 65700  				$s = -1; return [plaintext, err];
 65701  			/* } */ case 12:
 65702  			$s = 7; continue;
 65703  		/* } else { */ case 6:
 65704  			opts$3 = _ref;
 65705  			_tmp$6 = sliceType.nil;
 65706  			_tmp$7 = errors.New("crypto/rsa: invalid options for Decrypt");
 65707  			plaintext = _tmp$6;
 65708  			err = _tmp$7;
 65709  			$s = -1; return [plaintext, err];
 65710  		/* } */ case 7:
 65711  		$s = -1; return [plaintext, err];
 65712  		/* */ } return; } if ($f === undefined) { $f = { $blk: PrivateKey.ptr.prototype.Decrypt }; } $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._ref = _ref; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tmp$4 = _tmp$4; $f._tmp$5 = _tmp$5; $f._tmp$6 = _tmp$6; $f._tmp$7 = _tmp$7; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f.ciphertext = ciphertext; $f.err = err; $f.err$1 = err$1; $f.err$2 = err$2; $f.l = l; $f.opts = opts; $f.opts$1 = opts$1; $f.opts$2 = opts$2; $f.opts$3 = opts$3; $f.plaintext = plaintext; $f.priv = priv; $f.rand$1 = rand$1; $f.$s = $s; $f.$r = $r; return $f;
 65713  	};
 65714  	PrivateKey.prototype.Decrypt = function(rand$1, ciphertext, opts) { return this.$val.Decrypt(rand$1, ciphertext, opts); };
 65715  	PrivateKey.ptr.prototype.Validate = function() {
 65716  		var _i, _i$1, _r, _ref, _ref$1, congruence, de, err, modulus, pminus1, prime, prime$1, priv, $s, $r;
 65717  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _i = $f._i; _i$1 = $f._i$1; _r = $f._r; _ref = $f._ref; _ref$1 = $f._ref$1; congruence = $f.congruence; de = $f.de; err = $f.err; modulus = $f.modulus; pminus1 = $f.pminus1; prime = $f.prime; prime$1 = $f.prime$1; priv = $f.priv; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 65718  		priv = this;
 65719  		err = checkPub(priv.PublicKey);
 65720  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 65721  			$s = -1; return err;
 65722  		}
 65723  		modulus = new big.Int.ptr(false, big.nat.nil).Set(bigOne);
 65724  		_ref = priv.Primes;
 65725  		_i = 0;
 65726  		while (true) {
 65727  			if (!(_i < _ref.$length)) { break; }
 65728  			prime = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
 65729  			if (prime.Cmp(bigOne) <= 0) {
 65730  				$s = -1; return errors.New("crypto/rsa: invalid prime value");
 65731  			}
 65732  			modulus.Mul(modulus, prime);
 65733  			_i++;
 65734  		}
 65735  		if (!((modulus.Cmp(priv.PublicKey.N) === 0))) {
 65736  			$s = -1; return errors.New("crypto/rsa: invalid modulus");
 65737  		}
 65738  		congruence = new big.Int.ptr(false, big.nat.nil);
 65739  		de = new big.Int.ptr(false, big.nat.nil).SetInt64((new $Int64(0, priv.PublicKey.E)));
 65740  		de.Mul(de, priv.D);
 65741  		_ref$1 = priv.Primes;
 65742  		_i$1 = 0;
 65743  		/* while (true) { */ case 1:
 65744  			/* if (!(_i$1 < _ref$1.$length)) { break; } */ if(!(_i$1 < _ref$1.$length)) { $s = 2; continue; }
 65745  			prime$1 = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]);
 65746  			pminus1 = new big.Int.ptr(false, big.nat.nil).Sub(prime$1, bigOne);
 65747  			_r = congruence.Mod(de, pminus1); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 65748  			_r;
 65749  			if (!((congruence.Cmp(bigOne) === 0))) {
 65750  				$s = -1; return errors.New("crypto/rsa: invalid exponents");
 65751  			}
 65752  			_i$1++;
 65753  		/* } */ $s = 1; continue; case 2:
 65754  		$s = -1; return $ifaceNil;
 65755  		/* */ } return; } if ($f === undefined) { $f = { $blk: PrivateKey.ptr.prototype.Validate }; } $f._i = _i; $f._i$1 = _i$1; $f._r = _r; $f._ref = _ref; $f._ref$1 = _ref$1; $f.congruence = congruence; $f.de = de; $f.err = err; $f.modulus = modulus; $f.pminus1 = pminus1; $f.prime = prime; $f.prime$1 = prime$1; $f.priv = priv; $f.$s = $s; $f.$r = $r; return $f;
 65756  	};
 65757  	PrivateKey.prototype.Validate = function() { return this.$val.Validate(); };
 65758  	incCounter = function(c) {
 65759  		var c;
 65760  		c.nilCheck, c[3] = ((c.nilCheck, c[3]) + (1) << 24 >>> 24);
 65761  		if (!(((c.nilCheck, c[3]) === 0))) {
 65762  			return;
 65763  		}
 65764  		c.nilCheck, c[2] = ((c.nilCheck, c[2]) + (1) << 24 >>> 24);
 65765  		if (!(((c.nilCheck, c[2]) === 0))) {
 65766  			return;
 65767  		}
 65768  		c.nilCheck, c[1] = ((c.nilCheck, c[1]) + (1) << 24 >>> 24);
 65769  		if (!(((c.nilCheck, c[1]) === 0))) {
 65770  			return;
 65771  		}
 65772  		c.nilCheck, c[0] = ((c.nilCheck, c[0]) + (1) << 24 >>> 24);
 65773  	};
 65774  	mgf1XOR = function(out, hash$1, seed) {
 65775  		var _r, _r$1, _r$2, counter, digest, done, hash$1, i, out, seed, $s, $r;
 65776  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; counter = $f.counter; digest = $f.digest; done = $f.done; hash$1 = $f.hash$1; i = $f.i; out = $f.out; seed = $f.seed; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 65777  		counter = [counter];
 65778  		counter[0] = arrayType$1.zero();
 65779  		digest = sliceType.nil;
 65780  		done = 0;
 65781  		/* while (true) { */ case 1:
 65782  			/* if (!(done < out.$length)) { break; } */ if(!(done < out.$length)) { $s = 2; continue; }
 65783  			_r = hash$1.Write(seed); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 65784  			_r;
 65785  			_r$1 = hash$1.Write($subslice(new sliceType(counter[0]), 0, 4)); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 65786  			_r$1;
 65787  			_r$2 = hash$1.Sum($subslice(digest, 0, 0)); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 65788  			digest = _r$2;
 65789  			$r = hash$1.Reset(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 65790  			i = 0;
 65791  			while (true) {
 65792  				if (!(i < digest.$length && done < out.$length)) { break; }
 65793  				((done < 0 || done >= out.$length) ? ($throwRuntimeError("index out of range"), undefined) : out.$array[out.$offset + done] = ((((done < 0 || done >= out.$length) ? ($throwRuntimeError("index out of range"), undefined) : out.$array[out.$offset + done]) ^ (((i < 0 || i >= digest.$length) ? ($throwRuntimeError("index out of range"), undefined) : digest.$array[digest.$offset + i]))) << 24 >>> 24));
 65794  				done = done + (1) >> 0;
 65795  				i = i + (1) >> 0;
 65796  			}
 65797  			incCounter(counter[0]);
 65798  		/* } */ $s = 1; continue; case 2:
 65799  		$s = -1; return;
 65800  		/* */ } return; } if ($f === undefined) { $f = { $blk: mgf1XOR }; } $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f.counter = counter; $f.digest = digest; $f.done = done; $f.hash$1 = hash$1; $f.i = i; $f.out = out; $f.seed = seed; $f.$s = $s; $f.$r = $r; return $f;
 65801  	};
 65802  	encrypt = function(c, pub, m) {
 65803  		var _r, c, e, m, pub, $s, $r;
 65804  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; c = $f.c; e = $f.e; m = $f.m; pub = $f.pub; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 65805  		e = big.NewInt((new $Int64(0, pub.E)));
 65806  		_r = c.Exp(m, e, pub.N); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 65807  		_r;
 65808  		$s = -1; return c;
 65809  		/* */ } return; } if ($f === undefined) { $f = { $blk: encrypt }; } $f._r = _r; $f.c = c; $f.e = e; $f.m = m; $f.pub = pub; $f.$s = $s; $f.$r = $r; return $f;
 65810  	};
 65811  	modInverse = function(a, n) {
 65812  		var _r, _tmp, _tmp$1, a, g, ia, n, ok, x, $s, $r;
 65813  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; a = $f.a; g = $f.g; ia = $f.ia; n = $f.n; ok = $f.ok; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 65814  		ia = ptrType$1.nil;
 65815  		ok = false;
 65816  		g = new big.Int.ptr(false, big.nat.nil);
 65817  		x = new big.Int.ptr(false, big.nat.nil);
 65818  		_r = g.GCD(x, ptrType$1.nil, a, n); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 65819  		_r;
 65820  		if (!((g.Cmp(bigOne) === 0))) {
 65821  			$s = -1; return [ia, ok];
 65822  		}
 65823  		if (x.Cmp(bigOne) < 0) {
 65824  			x.Add(x, n);
 65825  		}
 65826  		_tmp = x;
 65827  		_tmp$1 = true;
 65828  		ia = _tmp;
 65829  		ok = _tmp$1;
 65830  		$s = -1; return [ia, ok];
 65831  		/* */ } return; } if ($f === undefined) { $f = { $blk: modInverse }; } $f._r = _r; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f.a = a; $f.g = g; $f.ia = ia; $f.n = n; $f.ok = ok; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
 65832  	};
 65833  	PrivateKey.ptr.prototype.Precompute = function() {
 65834  		var _r, _r$1, _r$2, _r$3, _r$4, i, prime, priv, r, values, x, x$1, x$2, x$3, x$4, x$5, x$6, x$7, x$8, $s, $r;
 65835  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; i = $f.i; prime = $f.prime; priv = $f.priv; r = $f.r; values = $f.values; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; x$3 = $f.x$3; x$4 = $f.x$4; x$5 = $f.x$5; x$6 = $f.x$6; x$7 = $f.x$7; x$8 = $f.x$8; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 65836  		priv = this;
 65837  		if (!(priv.Precomputed.Dp === ptrType$1.nil)) {
 65838  			$s = -1; return;
 65839  		}
 65840  		priv.Precomputed.Dp = new big.Int.ptr(false, big.nat.nil).Sub((x = priv.Primes, (0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0])), bigOne);
 65841  		_r = priv.Precomputed.Dp.Mod(priv.D, priv.Precomputed.Dp); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 65842  		_r;
 65843  		priv.Precomputed.Dq = new big.Int.ptr(false, big.nat.nil).Sub((x$1 = priv.Primes, (1 >= x$1.$length ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + 1])), bigOne);
 65844  		_r$1 = priv.Precomputed.Dq.Mod(priv.D, priv.Precomputed.Dq); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 65845  		_r$1;
 65846  		_r$2 = new big.Int.ptr(false, big.nat.nil).ModInverse((x$2 = priv.Primes, (1 >= x$2.$length ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + 1])), (x$3 = priv.Primes, (0 >= x$3.$length ? ($throwRuntimeError("index out of range"), undefined) : x$3.$array[x$3.$offset + 0]))); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 65847  		priv.Precomputed.Qinv = _r$2;
 65848  		r = new big.Int.ptr(false, big.nat.nil).Mul((x$4 = priv.Primes, (0 >= x$4.$length ? ($throwRuntimeError("index out of range"), undefined) : x$4.$array[x$4.$offset + 0])), (x$5 = priv.Primes, (1 >= x$5.$length ? ($throwRuntimeError("index out of range"), undefined) : x$5.$array[x$5.$offset + 1])));
 65849  		priv.Precomputed.CRTValues = $makeSlice(sliceType$2, (priv.Primes.$length - 2 >> 0));
 65850  		i = 2;
 65851  		/* while (true) { */ case 4:
 65852  			/* if (!(i < priv.Primes.$length)) { break; } */ if(!(i < priv.Primes.$length)) { $s = 5; continue; }
 65853  			prime = (x$6 = priv.Primes, ((i < 0 || i >= x$6.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$6.$array[x$6.$offset + i]));
 65854  			values = (x$7 = priv.Precomputed.CRTValues, x$8 = i - 2 >> 0, ((x$8 < 0 || x$8 >= x$7.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$7.$array[x$7.$offset + x$8]));
 65855  			values.Exp = new big.Int.ptr(false, big.nat.nil).Sub(prime, bigOne);
 65856  			_r$3 = values.Exp.Mod(priv.D, values.Exp); /* */ $s = 6; case 6: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 65857  			_r$3;
 65858  			values.R = new big.Int.ptr(false, big.nat.nil).Set(r);
 65859  			_r$4 = new big.Int.ptr(false, big.nat.nil).ModInverse(r, prime); /* */ $s = 7; case 7: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 65860  			values.Coeff = _r$4;
 65861  			r.Mul(r, prime);
 65862  			i = i + (1) >> 0;
 65863  		/* } */ $s = 4; continue; case 5:
 65864  		$s = -1; return;
 65865  		/* */ } return; } if ($f === undefined) { $f = { $blk: PrivateKey.ptr.prototype.Precompute }; } $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f.i = i; $f.prime = prime; $f.priv = priv; $f.r = r; $f.values = values; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.x$3 = x$3; $f.x$4 = x$4; $f.x$5 = x$5; $f.x$6 = x$6; $f.x$7 = x$7; $f.x$8 = x$8; $f.$s = $s; $f.$r = $r; return $f;
 65866  	};
 65867  	PrivateKey.prototype.Precompute = function() { return this.$val.Precompute(); };
 65868  	decrypt = function(random, priv, c) {
 65869  		var _i, _r, _r$1, _r$10, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, _tmp, _tmp$1, _tuple, _tuple$1, bigE, c, cCopy, err, i, ir, m, m2, ok, prime, priv, r, random, rpowe, values, x, x$1, x$2, x$3, x$4, x$5, x$6, $s, $r;
 65870  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _i = $f._i; _r = $f._r; _r$1 = $f._r$1; _r$10 = $f._r$10; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _r$8 = $f._r$8; _r$9 = $f._r$9; _ref = $f._ref; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; bigE = $f.bigE; c = $f.c; cCopy = $f.cCopy; err = $f.err; i = $f.i; ir = $f.ir; m = $f.m; m2 = $f.m2; ok = $f.ok; prime = $f.prime; priv = $f.priv; r = $f.r; random = $f.random; rpowe = $f.rpowe; values = $f.values; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; x$3 = $f.x$3; x$4 = $f.x$4; x$5 = $f.x$5; x$6 = $f.x$6; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 65871  		m = ptrType$1.nil;
 65872  		err = $ifaceNil;
 65873  		if (c.Cmp(priv.PublicKey.N) > 0) {
 65874  			err = $pkg.ErrDecryption;
 65875  			$s = -1; return [m, err];
 65876  		}
 65877  		if (priv.PublicKey.N.Sign() === 0) {
 65878  			_tmp = ptrType$1.nil;
 65879  			_tmp$1 = $pkg.ErrDecryption;
 65880  			m = _tmp;
 65881  			err = _tmp$1;
 65882  			$s = -1; return [m, err];
 65883  		}
 65884  		ir = ptrType$1.nil;
 65885  		/* */ if (!($interfaceIsEqual(random, $ifaceNil))) { $s = 1; continue; }
 65886  		/* */ $s = 2; continue;
 65887  		/* if (!($interfaceIsEqual(random, $ifaceNil))) { */ case 1:
 65888  			r = ptrType$1.nil;
 65889  			/* while (true) { */ case 3:
 65890  				_r = rand.Int(random, priv.PublicKey.N); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 65891  				_tuple = _r;
 65892  				r = _tuple[0];
 65893  				err = _tuple[1];
 65894  				if (!($interfaceIsEqual(err, $ifaceNil))) {
 65895  					$s = -1; return [m, err];
 65896  				}
 65897  				if (r.Cmp(bigZero) === 0) {
 65898  					r = bigOne;
 65899  				}
 65900  				ok = false;
 65901  				_r$1 = modInverse(r, priv.PublicKey.N); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 65902  				_tuple$1 = _r$1;
 65903  				ir = _tuple$1[0];
 65904  				ok = _tuple$1[1];
 65905  				if (ok) {
 65906  					/* break; */ $s = 4; continue;
 65907  				}
 65908  			/* } */ $s = 3; continue; case 4:
 65909  			bigE = big.NewInt((new $Int64(0, priv.PublicKey.E)));
 65910  			_r$2 = new big.Int.ptr(false, big.nat.nil).Exp(r, bigE, priv.PublicKey.N); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 65911  			rpowe = _r$2;
 65912  			cCopy = new big.Int.ptr(false, big.nat.nil).Set(c);
 65913  			cCopy.Mul(cCopy, rpowe);
 65914  			_r$3 = cCopy.Mod(cCopy, priv.PublicKey.N); /* */ $s = 8; case 8: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 65915  			_r$3;
 65916  			c = cCopy;
 65917  		/* } */ case 2:
 65918  		/* */ if (priv.Precomputed.Dp === ptrType$1.nil) { $s = 9; continue; }
 65919  		/* */ $s = 10; continue;
 65920  		/* if (priv.Precomputed.Dp === ptrType$1.nil) { */ case 9:
 65921  			_r$4 = new big.Int.ptr(false, big.nat.nil).Exp(c, priv.D, priv.PublicKey.N); /* */ $s = 12; case 12: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 65922  			m = _r$4;
 65923  			$s = 11; continue;
 65924  		/* } else { */ case 10:
 65925  			_r$5 = new big.Int.ptr(false, big.nat.nil).Exp(c, priv.Precomputed.Dp, (x = priv.Primes, (0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0]))); /* */ $s = 13; case 13: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
 65926  			m = _r$5;
 65927  			_r$6 = new big.Int.ptr(false, big.nat.nil).Exp(c, priv.Precomputed.Dq, (x$1 = priv.Primes, (1 >= x$1.$length ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + 1]))); /* */ $s = 14; case 14: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
 65928  			m2 = _r$6;
 65929  			m.Sub(m, m2);
 65930  			if (m.Sign() < 0) {
 65931  				m.Add(m, (x$2 = priv.Primes, (0 >= x$2.$length ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + 0])));
 65932  			}
 65933  			m.Mul(m, priv.Precomputed.Qinv);
 65934  			_r$7 = m.Mod(m, (x$3 = priv.Primes, (0 >= x$3.$length ? ($throwRuntimeError("index out of range"), undefined) : x$3.$array[x$3.$offset + 0]))); /* */ $s = 15; case 15: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
 65935  			_r$7;
 65936  			m.Mul(m, (x$4 = priv.Primes, (1 >= x$4.$length ? ($throwRuntimeError("index out of range"), undefined) : x$4.$array[x$4.$offset + 1])));
 65937  			m.Add(m, m2);
 65938  			_ref = priv.Precomputed.CRTValues;
 65939  			_i = 0;
 65940  			/* while (true) { */ case 16:
 65941  				/* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 17; continue; }
 65942  				i = _i;
 65943  				values = $clone(((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]), CRTValue);
 65944  				prime = (x$5 = priv.Primes, x$6 = 2 + i >> 0, ((x$6 < 0 || x$6 >= x$5.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$5.$array[x$5.$offset + x$6]));
 65945  				_r$8 = m2.Exp(c, values.Exp, prime); /* */ $s = 18; case 18: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
 65946  				_r$8;
 65947  				m2.Sub(m2, m);
 65948  				m2.Mul(m2, values.Coeff);
 65949  				_r$9 = m2.Mod(m2, prime); /* */ $s = 19; case 19: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 65950  				_r$9;
 65951  				if (m2.Sign() < 0) {
 65952  					m2.Add(m2, prime);
 65953  				}
 65954  				m2.Mul(m2, values.R);
 65955  				m.Add(m, m2);
 65956  				_i++;
 65957  			/* } */ $s = 16; continue; case 17:
 65958  		/* } */ case 11:
 65959  		/* */ if (!(ir === ptrType$1.nil)) { $s = 20; continue; }
 65960  		/* */ $s = 21; continue;
 65961  		/* if (!(ir === ptrType$1.nil)) { */ case 20:
 65962  			m.Mul(m, ir);
 65963  			_r$10 = m.Mod(m, priv.PublicKey.N); /* */ $s = 22; case 22: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
 65964  			_r$10;
 65965  		/* } */ case 21:
 65966  		$s = -1; return [m, err];
 65967  		/* */ } return; } if ($f === undefined) { $f = { $blk: decrypt }; } $f._i = _i; $f._r = _r; $f._r$1 = _r$1; $f._r$10 = _r$10; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._r$8 = _r$8; $f._r$9 = _r$9; $f._ref = _ref; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.bigE = bigE; $f.c = c; $f.cCopy = cCopy; $f.err = err; $f.i = i; $f.ir = ir; $f.m = m; $f.m2 = m2; $f.ok = ok; $f.prime = prime; $f.priv = priv; $f.r = r; $f.random = random; $f.rpowe = rpowe; $f.values = values; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.x$3 = x$3; $f.x$4 = x$4; $f.x$5 = x$5; $f.x$6 = x$6; $f.$s = $s; $f.$r = $r; return $f;
 65968  	};
 65969  	decryptAndCheck = function(random, priv, c) {
 65970  		var _r, _r$1, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tuple, c, check, err, m, priv, random, $s, $r;
 65971  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tmp$4 = $f._tmp$4; _tmp$5 = $f._tmp$5; _tuple = $f._tuple; c = $f.c; check = $f.check; err = $f.err; m = $f.m; priv = $f.priv; random = $f.random; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 65972  		m = ptrType$1.nil;
 65973  		err = $ifaceNil;
 65974  		_r = decrypt(random, priv, c); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 65975  		_tuple = _r;
 65976  		m = _tuple[0];
 65977  		err = _tuple[1];
 65978  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 65979  			_tmp = ptrType$1.nil;
 65980  			_tmp$1 = err;
 65981  			m = _tmp;
 65982  			err = _tmp$1;
 65983  			$s = -1; return [m, err];
 65984  		}
 65985  		_r$1 = encrypt(new big.Int.ptr(false, big.nat.nil), priv.PublicKey, m); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 65986  		check = _r$1;
 65987  		if (!((c.Cmp(check) === 0))) {
 65988  			_tmp$2 = ptrType$1.nil;
 65989  			_tmp$3 = errors.New("rsa: internal error");
 65990  			m = _tmp$2;
 65991  			err = _tmp$3;
 65992  			$s = -1; return [m, err];
 65993  		}
 65994  		_tmp$4 = m;
 65995  		_tmp$5 = $ifaceNil;
 65996  		m = _tmp$4;
 65997  		err = _tmp$5;
 65998  		$s = -1; return [m, err];
 65999  		/* */ } return; } if ($f === undefined) { $f = { $blk: decryptAndCheck }; } $f._r = _r; $f._r$1 = _r$1; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tmp$4 = _tmp$4; $f._tmp$5 = _tmp$5; $f._tuple = _tuple; $f.c = c; $f.check = check; $f.err = err; $f.m = m; $f.priv = priv; $f.random = random; $f.$s = $s; $f.$r = $r; return $f;
 66000  	};
 66001  	DecryptOAEP = function(hash$1, random, priv, ciphertext, label) {
 66002  		var _q, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _tmp, _tmp$1, _tmp$2, _tuple, _v, c, ciphertext, db, em, equals0, equals1, err, err$1, firstByteIsZero, hash$1, i, index, invalid, k, lHash, lHash2, lHash2Good, label, lookingForIndex, m, priv, random, rest, seed, $s, $r;
 66003  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _q = $f._q; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tuple = $f._tuple; _v = $f._v; c = $f.c; ciphertext = $f.ciphertext; db = $f.db; em = $f.em; equals0 = $f.equals0; equals1 = $f.equals1; err = $f.err; err$1 = $f.err$1; firstByteIsZero = $f.firstByteIsZero; hash$1 = $f.hash$1; i = $f.i; index = $f.index; invalid = $f.invalid; k = $f.k; lHash = $f.lHash; lHash2 = $f.lHash2; lHash2Good = $f.lHash2Good; label = $f.label; lookingForIndex = $f.lookingForIndex; m = $f.m; priv = $f.priv; random = $f.random; rest = $f.rest; seed = $f.seed; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 66004  		err = checkPub(priv.PublicKey);
 66005  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 66006  			$s = -1; return [sliceType.nil, err];
 66007  		}
 66008  		k = (_q = ((priv.PublicKey.N.BitLen() + 7 >> 0)) / 8, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero"));
 66009  		if (ciphertext.$length > k) { _v = true; $s = 3; continue s; }
 66010  		_r = hash$1.Size(); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 66011  		_v = k < (($imul(_r, 2)) + 2 >> 0); case 3:
 66012  		/* */ if (_v) { $s = 1; continue; }
 66013  		/* */ $s = 2; continue;
 66014  		/* if (_v) { */ case 1:
 66015  			$s = -1; return [sliceType.nil, $pkg.ErrDecryption];
 66016  		/* } */ case 2:
 66017  		c = new big.Int.ptr(false, big.nat.nil).SetBytes(ciphertext);
 66018  		_r$1 = decrypt(random, priv, c); /* */ $s = 5; case 5: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 66019  		_tuple = _r$1;
 66020  		m = _tuple[0];
 66021  		err$1 = _tuple[1];
 66022  		if (!($interfaceIsEqual(err$1, $ifaceNil))) {
 66023  			$s = -1; return [sliceType.nil, err$1];
 66024  		}
 66025  		_r$2 = hash$1.Write(label); /* */ $s = 6; case 6: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 66026  		_r$2;
 66027  		_r$3 = hash$1.Sum(sliceType.nil); /* */ $s = 7; case 7: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 66028  		lHash = _r$3;
 66029  		$r = hash$1.Reset(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 66030  		em = leftPad(m.Bytes(), k);
 66031  		firstByteIsZero = subtle.ConstantTimeByteEq((0 >= em.$length ? ($throwRuntimeError("index out of range"), undefined) : em.$array[em.$offset + 0]), 0);
 66032  		_r$4 = hash$1.Size(); /* */ $s = 9; case 9: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 66033  		seed = $subslice(em, 1, (_r$4 + 1 >> 0));
 66034  		_r$5 = hash$1.Size(); /* */ $s = 10; case 10: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
 66035  		db = $subslice(em, (_r$5 + 1 >> 0));
 66036  		$r = mgf1XOR(seed, hash$1, db); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 66037  		$r = mgf1XOR(db, hash$1, seed); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 66038  		_r$6 = hash$1.Size(); /* */ $s = 13; case 13: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
 66039  		lHash2 = $subslice(db, 0, _r$6);
 66040  		lHash2Good = subtle.ConstantTimeCompare(lHash, lHash2);
 66041  		_tmp = 0;
 66042  		_tmp$1 = 0;
 66043  		_tmp$2 = 0;
 66044  		lookingForIndex = _tmp;
 66045  		index = _tmp$1;
 66046  		invalid = _tmp$2;
 66047  		lookingForIndex = 1;
 66048  		_r$7 = hash$1.Size(); /* */ $s = 14; case 14: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
 66049  		rest = $subslice(db, _r$7);
 66050  		i = 0;
 66051  		while (true) {
 66052  			if (!(i < rest.$length)) { break; }
 66053  			equals0 = subtle.ConstantTimeByteEq(((i < 0 || i >= rest.$length) ? ($throwRuntimeError("index out of range"), undefined) : rest.$array[rest.$offset + i]), 0);
 66054  			equals1 = subtle.ConstantTimeByteEq(((i < 0 || i >= rest.$length) ? ($throwRuntimeError("index out of range"), undefined) : rest.$array[rest.$offset + i]), 1);
 66055  			index = subtle.ConstantTimeSelect(lookingForIndex & equals1, i, index);
 66056  			lookingForIndex = subtle.ConstantTimeSelect(equals1, 0, lookingForIndex);
 66057  			invalid = subtle.ConstantTimeSelect((lookingForIndex & ~equals0) >> 0, 1, invalid);
 66058  			i = i + (1) >> 0;
 66059  		}
 66060  		if (!(((((((firstByteIsZero & lHash2Good) & ~invalid) >> 0) & ~lookingForIndex) >> 0) === 1))) {
 66061  			$s = -1; return [sliceType.nil, $pkg.ErrDecryption];
 66062  		}
 66063  		$s = -1; return [$subslice(rest, (index + 1 >> 0)), $ifaceNil];
 66064  		/* */ } return; } if ($f === undefined) { $f = { $blk: DecryptOAEP }; } $f._q = _q; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tuple = _tuple; $f._v = _v; $f.c = c; $f.ciphertext = ciphertext; $f.db = db; $f.em = em; $f.equals0 = equals0; $f.equals1 = equals1; $f.err = err; $f.err$1 = err$1; $f.firstByteIsZero = firstByteIsZero; $f.hash$1 = hash$1; $f.i = i; $f.index = index; $f.invalid = invalid; $f.k = k; $f.lHash = lHash; $f.lHash2 = lHash2; $f.lHash2Good = lHash2Good; $f.label = label; $f.lookingForIndex = lookingForIndex; $f.m = m; $f.priv = priv; $f.random = random; $f.rest = rest; $f.seed = seed; $f.$s = $s; $f.$r = $r; return $f;
 66065  	};
 66066  	$pkg.DecryptOAEP = DecryptOAEP;
 66067  	leftPad = function(input, size) {
 66068  		var input, n, out, size;
 66069  		out = sliceType.nil;
 66070  		n = input.$length;
 66071  		if (n > size) {
 66072  			n = size;
 66073  		}
 66074  		out = $makeSlice(sliceType, size);
 66075  		$copySlice($subslice(out, (out.$length - n >> 0)), input);
 66076  		return out;
 66077  	};
 66078  	ptrType.methods = [{prop: "HashFunc", name: "HashFunc", pkg: "", typ: $funcType([], [crypto.Hash], false)}, {prop: "saltLength", name: "saltLength", pkg: "crypto/rsa", typ: $funcType([], [$Int], false)}];
 66079  	ptrType$4.methods = [{prop: "Public", name: "Public", pkg: "", typ: $funcType([], [crypto.PublicKey], false)}, {prop: "Sign", name: "Sign", pkg: "", typ: $funcType([io.Reader, sliceType, crypto.SignerOpts], [sliceType, $error], false)}, {prop: "Decrypt", name: "Decrypt", pkg: "", typ: $funcType([io.Reader, sliceType, crypto.DecrypterOpts], [sliceType, $error], false)}, {prop: "Validate", name: "Validate", pkg: "", typ: $funcType([], [$error], false)}, {prop: "Precompute", name: "Precompute", pkg: "", typ: $funcType([], [], false)}];
 66080  	PKCS1v15DecryptOptions.init("", [{prop: "SessionKeyLen", name: "SessionKeyLen", anonymous: false, exported: true, typ: $Int, tag: ""}]);
 66081  	PSSOptions.init("", [{prop: "SaltLength", name: "SaltLength", anonymous: false, exported: true, typ: $Int, tag: ""}, {prop: "Hash", name: "Hash", anonymous: false, exported: true, typ: crypto.Hash, tag: ""}]);
 66082  	PublicKey.init("", [{prop: "N", name: "N", anonymous: false, exported: true, typ: ptrType$1, tag: ""}, {prop: "E", name: "E", anonymous: false, exported: true, typ: $Int, tag: ""}]);
 66083  	OAEPOptions.init("", [{prop: "Hash", name: "Hash", anonymous: false, exported: true, typ: crypto.Hash, tag: ""}, {prop: "Label", name: "Label", anonymous: false, exported: true, typ: sliceType, tag: ""}]);
 66084  	PrivateKey.init("", [{prop: "PublicKey", name: "PublicKey", anonymous: true, exported: true, typ: PublicKey, tag: ""}, {prop: "D", name: "D", anonymous: false, exported: true, typ: ptrType$1, tag: ""}, {prop: "Primes", name: "Primes", anonymous: false, exported: true, typ: sliceType$1, tag: ""}, {prop: "Precomputed", name: "Precomputed", anonymous: false, exported: true, typ: PrecomputedValues, tag: ""}]);
 66085  	PrecomputedValues.init("", [{prop: "Dp", name: "Dp", anonymous: false, exported: true, typ: ptrType$1, tag: ""}, {prop: "Dq", name: "Dq", anonymous: false, exported: true, typ: ptrType$1, tag: ""}, {prop: "Qinv", name: "Qinv", anonymous: false, exported: true, typ: ptrType$1, tag: ""}, {prop: "CRTValues", name: "CRTValues", anonymous: false, exported: true, typ: sliceType$2, tag: ""}]);
 66086  	CRTValue.init("", [{prop: "Exp", name: "Exp", anonymous: false, exported: true, typ: ptrType$1, tag: ""}, {prop: "Coeff", name: "Coeff", anonymous: false, exported: true, typ: ptrType$1, tag: ""}, {prop: "R", name: "R", anonymous: false, exported: true, typ: ptrType$1, tag: ""}]);
 66087  	$init = function() {
 66088  		$pkg.$init = function() {};
 66089  		/* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 66090  		$r = bytes.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 66091  		$r = crypto.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 66092  		$r = rand.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 66093  		$r = subtle.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 66094  		$r = errors.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 66095  		$r = hash.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 66096  		$r = io.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 66097  		$r = math.$init(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 66098  		$r = big.$init(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 66099  		hashPrefixes = $makeMap(crypto.Hash.keyFor, [{ k: 2, v: new sliceType([48, 32, 48, 12, 6, 8, 42, 134, 72, 134, 247, 13, 2, 5, 5, 0, 4, 16]) }, { k: 3, v: new sliceType([48, 33, 48, 9, 6, 5, 43, 14, 3, 2, 26, 5, 0, 4, 20]) }, { k: 4, v: new sliceType([48, 45, 48, 13, 6, 9, 96, 134, 72, 1, 101, 3, 4, 2, 4, 5, 0, 4, 28]) }, { k: 5, v: new sliceType([48, 49, 48, 13, 6, 9, 96, 134, 72, 1, 101, 3, 4, 2, 1, 5, 0, 4, 32]) }, { k: 6, v: new sliceType([48, 65, 48, 13, 6, 9, 96, 134, 72, 1, 101, 3, 4, 2, 2, 5, 0, 4, 48]) }, { k: 7, v: new sliceType([48, 81, 48, 13, 6, 9, 96, 134, 72, 1, 101, 3, 4, 2, 3, 5, 0, 4, 64]) }, { k: 8, v: new sliceType([]) }, { k: 9, v: new sliceType([48, 32, 48, 8, 6, 6, 40, 207, 6, 3, 0, 49, 4, 20]) }]);
 66100  		bigZero = big.NewInt(new $Int64(0, 0));
 66101  		bigOne = big.NewInt(new $Int64(0, 1));
 66102  		errPublicModulus = errors.New("crypto/rsa: missing public modulus");
 66103  		errPublicExponentSmall = errors.New("crypto/rsa: public exponent too small");
 66104  		errPublicExponentLarge = errors.New("crypto/rsa: public exponent too large");
 66105  		$pkg.ErrMessageTooLong = errors.New("crypto/rsa: message too long for RSA public key size");
 66106  		$pkg.ErrDecryption = errors.New("crypto/rsa: decryption error");
 66107  		$pkg.ErrVerification = errors.New("crypto/rsa: verification error");
 66108  		/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
 66109  	};
 66110  	$pkg.$init = $init;
 66111  	return $pkg;
 66112  })();
 66113  $packages["crypto/sha1"] = (function() {
 66114  	var $pkg = {}, $init, crypto, errors, hash, digest, sliceType, arrayType, arrayType$1, arrayType$2, arrayType$3, arrayType$4, arrayType$5, ptrType, block, init, appendUint64, appendUint32, consumeUint64, consumeUint32, New, putUint64, putUint32, blockGeneric;
 66115  	crypto = $packages["crypto"];
 66116  	errors = $packages["errors"];
 66117  	hash = $packages["hash"];
 66118  	digest = $pkg.digest = $newType(0, $kindStruct, "sha1.digest", true, "crypto/sha1", false, function(h_, x_, nx_, len_) {
 66119  		this.$val = this;
 66120  		if (arguments.length === 0) {
 66121  			this.h = arrayType$2.zero();
 66122  			this.x = arrayType$3.zero();
 66123  			this.nx = 0;
 66124  			this.len = new $Uint64(0, 0);
 66125  			return;
 66126  		}
 66127  		this.h = h_;
 66128  		this.x = x_;
 66129  		this.nx = nx_;
 66130  		this.len = len_;
 66131  	});
 66132  	sliceType = $sliceType($Uint8);
 66133  	arrayType = $arrayType($Uint8, 8);
 66134  	arrayType$1 = $arrayType($Uint8, 4);
 66135  	arrayType$2 = $arrayType($Uint32, 5);
 66136  	arrayType$3 = $arrayType($Uint8, 64);
 66137  	arrayType$4 = $arrayType($Uint8, 20);
 66138  	arrayType$5 = $arrayType($Uint32, 16);
 66139  	ptrType = $ptrType(digest);
 66140  	init = function() {
 66141  		crypto.RegisterHash(3, New);
 66142  	};
 66143  	digest.ptr.prototype.MarshalBinary = function() {
 66144  		var b, d;
 66145  		d = this;
 66146  		b = $makeSlice(sliceType, 0, 96);
 66147  		b = $appendSlice(b, "sha\x01");
 66148  		b = appendUint32(b, d.h[0]);
 66149  		b = appendUint32(b, d.h[1]);
 66150  		b = appendUint32(b, d.h[2]);
 66151  		b = appendUint32(b, d.h[3]);
 66152  		b = appendUint32(b, d.h[4]);
 66153  		b = $appendSlice(b, $subslice(new sliceType(d.x), 0, d.nx));
 66154  		b = $subslice(b, 0, ((b.$length + 64 >> 0) - (d.nx) >> 0));
 66155  		b = appendUint64(b, d.len);
 66156  		return [b, $ifaceNil];
 66157  	};
 66158  	digest.prototype.MarshalBinary = function() { return this.$val.MarshalBinary(); };
 66159  	digest.ptr.prototype.UnmarshalBinary = function(b) {
 66160  		var _r, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, _tuple$5, b, d;
 66161  		d = this;
 66162  		if (b.$length < 4 || !(($bytesToString($subslice(b, 0, 4))) === "sha\x01")) {
 66163  			return errors.New("crypto/sha1: invalid hash state identifier");
 66164  		}
 66165  		if (!((b.$length === 96))) {
 66166  			return errors.New("crypto/sha1: invalid hash state size");
 66167  		}
 66168  		b = $subslice(b, 4);
 66169  		_tuple = consumeUint32(b);
 66170  		b = _tuple[0];
 66171  		d.h[0] = _tuple[1];
 66172  		_tuple$1 = consumeUint32(b);
 66173  		b = _tuple$1[0];
 66174  		d.h[1] = _tuple$1[1];
 66175  		_tuple$2 = consumeUint32(b);
 66176  		b = _tuple$2[0];
 66177  		d.h[2] = _tuple$2[1];
 66178  		_tuple$3 = consumeUint32(b);
 66179  		b = _tuple$3[0];
 66180  		d.h[3] = _tuple$3[1];
 66181  		_tuple$4 = consumeUint32(b);
 66182  		b = _tuple$4[0];
 66183  		d.h[4] = _tuple$4[1];
 66184  		b = $subslice(b, $copySlice(new sliceType(d.x), b));
 66185  		_tuple$5 = consumeUint64(b);
 66186  		b = _tuple$5[0];
 66187  		d.len = _tuple$5[1];
 66188  		d.nx = (_r = ((d.len.$low >> 0)) % 64, _r === _r ? _r : $throwRuntimeError("integer divide by zero"));
 66189  		return $ifaceNil;
 66190  	};
 66191  	digest.prototype.UnmarshalBinary = function(b) { return this.$val.UnmarshalBinary(b); };
 66192  	appendUint64 = function(b, x) {
 66193  		var a, b, x;
 66194  		a = arrayType.zero();
 66195  		putUint64(new sliceType(a), x);
 66196  		return $appendSlice(b, new sliceType(a));
 66197  	};
 66198  	appendUint32 = function(b, x) {
 66199  		var a, b, x;
 66200  		a = arrayType$1.zero();
 66201  		putUint32(new sliceType(a), x);
 66202  		return $appendSlice(b, new sliceType(a));
 66203  	};
 66204  	consumeUint64 = function(b) {
 66205  		var b, x, x$1, x$10, x$11, x$12, x$13, x$14, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9;
 66206  		$unused((7 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 7]));
 66207  		x$14 = (x = (x$1 = (x$2 = (x$3 = (x$4 = (x$5 = (x$6 = (new $Uint64(0, (7 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 7]))), x$7 = $shiftLeft64((new $Uint64(0, (6 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 6]))), 8), new $Uint64(x$6.$high | x$7.$high, (x$6.$low | x$7.$low) >>> 0)), x$8 = $shiftLeft64((new $Uint64(0, (5 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 5]))), 16), new $Uint64(x$5.$high | x$8.$high, (x$5.$low | x$8.$low) >>> 0)), x$9 = $shiftLeft64((new $Uint64(0, (4 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 4]))), 24), new $Uint64(x$4.$high | x$9.$high, (x$4.$low | x$9.$low) >>> 0)), x$10 = $shiftLeft64((new $Uint64(0, (3 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 3]))), 32), new $Uint64(x$3.$high | x$10.$high, (x$3.$low | x$10.$low) >>> 0)), x$11 = $shiftLeft64((new $Uint64(0, (2 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 2]))), 40), new $Uint64(x$2.$high | x$11.$high, (x$2.$low | x$11.$low) >>> 0)), x$12 = $shiftLeft64((new $Uint64(0, (1 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 1]))), 48), new $Uint64(x$1.$high | x$12.$high, (x$1.$low | x$12.$low) >>> 0)), x$13 = $shiftLeft64((new $Uint64(0, (0 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 0]))), 56), new $Uint64(x.$high | x$13.$high, (x.$low | x$13.$low) >>> 0));
 66208  		return [$subslice(b, 8), x$14];
 66209  	};
 66210  	consumeUint32 = function(b) {
 66211  		var b, x;
 66212  		$unused((3 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 3]));
 66213  		x = ((((((((3 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 3]) >>> 0)) | ((((2 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 2]) >>> 0)) << 8 >>> 0)) >>> 0) | ((((1 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 1]) >>> 0)) << 16 >>> 0)) >>> 0) | ((((0 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 0]) >>> 0)) << 24 >>> 0)) >>> 0;
 66214  		return [$subslice(b, 4), x];
 66215  	};
 66216  	digest.ptr.prototype.Reset = function() {
 66217  		var d;
 66218  		d = this;
 66219  		d.h[0] = 1732584193;
 66220  		d.h[1] = 4023233417;
 66221  		d.h[2] = 2562383102;
 66222  		d.h[3] = 271733878;
 66223  		d.h[4] = 3285377520;
 66224  		d.nx = 0;
 66225  		d.len = new $Uint64(0, 0);
 66226  	};
 66227  	digest.prototype.Reset = function() { return this.$val.Reset(); };
 66228  	New = function() {
 66229  		var d;
 66230  		d = new digest.ptr(arrayType$2.zero(), arrayType$3.zero(), 0, new $Uint64(0, 0));
 66231  		d.Reset();
 66232  		return d;
 66233  	};
 66234  	$pkg.New = New;
 66235  	digest.ptr.prototype.Size = function() {
 66236  		var d;
 66237  		d = this;
 66238  		return 20;
 66239  	};
 66240  	digest.prototype.Size = function() { return this.$val.Size(); };
 66241  	digest.ptr.prototype.BlockSize = function() {
 66242  		var d;
 66243  		d = this;
 66244  		return 64;
 66245  	};
 66246  	digest.prototype.BlockSize = function() { return this.$val.BlockSize(); };
 66247  	digest.ptr.prototype.Write = function(p) {
 66248  		var d, err, n, n$1, nn, p, x, x$1, $s, $r;
 66249  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; d = $f.d; err = $f.err; n = $f.n; n$1 = $f.n$1; nn = $f.nn; p = $f.p; x = $f.x; x$1 = $f.x$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 66250  		nn = 0;
 66251  		err = $ifaceNil;
 66252  		d = this;
 66253  		nn = p.$length;
 66254  		d.len = (x = d.len, x$1 = (new $Uint64(0, nn)), new $Uint64(x.$high + x$1.$high, x.$low + x$1.$low));
 66255  		/* */ if (d.nx > 0) { $s = 1; continue; }
 66256  		/* */ $s = 2; continue;
 66257  		/* if (d.nx > 0) { */ case 1:
 66258  			n = $copySlice($subslice(new sliceType(d.x), d.nx), p);
 66259  			d.nx = d.nx + (n) >> 0;
 66260  			/* */ if (d.nx === 64) { $s = 3; continue; }
 66261  			/* */ $s = 4; continue;
 66262  			/* if (d.nx === 64) { */ case 3:
 66263  				$r = block(d, new sliceType(d.x)); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 66264  				d.nx = 0;
 66265  			/* } */ case 4:
 66266  			p = $subslice(p, n);
 66267  		/* } */ case 2:
 66268  		/* */ if (p.$length >= 64) { $s = 6; continue; }
 66269  		/* */ $s = 7; continue;
 66270  		/* if (p.$length >= 64) { */ case 6:
 66271  			n$1 = (p.$length & ~63) >> 0;
 66272  			$r = block(d, $subslice(p, 0, n$1)); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 66273  			p = $subslice(p, n$1);
 66274  		/* } */ case 7:
 66275  		if (p.$length > 0) {
 66276  			d.nx = $copySlice(new sliceType(d.x), p);
 66277  		}
 66278  		$s = -1; return [nn, err];
 66279  		/* */ } return; } if ($f === undefined) { $f = { $blk: digest.ptr.prototype.Write }; } $f.d = d; $f.err = err; $f.n = n; $f.n$1 = n$1; $f.nn = nn; $f.p = p; $f.x = x; $f.x$1 = x$1; $f.$s = $s; $f.$r = $r; return $f;
 66280  	};
 66281  	digest.prototype.Write = function(p) { return this.$val.Write(p); };
 66282  	digest.ptr.prototype.Sum = function(in$1) {
 66283  		var _r, d, d0, hash$1, in$1, $s, $r;
 66284  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; d = $f.d; d0 = $f.d0; hash$1 = $f.hash$1; in$1 = $f.in$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 66285  		d0 = this;
 66286  		d = $clone(d0, digest);
 66287  		_r = d.checkSum(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 66288  		hash$1 = $clone(_r, arrayType$4);
 66289  		$s = -1; return $appendSlice(in$1, new sliceType(hash$1));
 66290  		/* */ } return; } if ($f === undefined) { $f = { $blk: digest.ptr.prototype.Sum }; } $f._r = _r; $f.d = d; $f.d0 = d0; $f.hash$1 = hash$1; $f.in$1 = in$1; $f.$s = $s; $f.$r = $r; return $f;
 66291  	};
 66292  	digest.prototype.Sum = function(in$1) { return this.$val.Sum(in$1); };
 66293  	digest.ptr.prototype.checkSum = function() {
 66294  		var _r, _r$1, _r$2, d, digest$1, len, tmp, x, x$1, x$2, $s, $r;
 66295  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; d = $f.d; digest$1 = $f.digest$1; len = $f.len; tmp = $f.tmp; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 66296  		d = this;
 66297  		len = d.len;
 66298  		tmp = arrayType$3.zero();
 66299  		tmp[0] = 128;
 66300  		/* */ if ((x = $div64(len, new $Uint64(0, 64), true), (x.$high < 0 || (x.$high === 0 && x.$low < 56)))) { $s = 1; continue; }
 66301  		/* */ $s = 2; continue;
 66302  		/* if ((x = $div64(len, new $Uint64(0, 64), true), (x.$high < 0 || (x.$high === 0 && x.$low < 56)))) { */ case 1:
 66303  			_r = d.Write($subslice(new sliceType(tmp), 0, $flatten64((x$1 = $div64(len, new $Uint64(0, 64), true), new $Uint64(0 - x$1.$high, 56 - x$1.$low))))); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 66304  			_r;
 66305  			$s = 3; continue;
 66306  		/* } else { */ case 2:
 66307  			_r$1 = d.Write($subslice(new sliceType(tmp), 0, $flatten64((x$2 = $div64(len, new $Uint64(0, 64), true), new $Uint64(0 - x$2.$high, 120 - x$2.$low))))); /* */ $s = 5; case 5: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 66308  			_r$1;
 66309  		/* } */ case 3:
 66310  		len = $shiftLeft64(len, (3));
 66311  		putUint64(new sliceType(tmp), len);
 66312  		_r$2 = d.Write($subslice(new sliceType(tmp), 0, 8)); /* */ $s = 6; case 6: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 66313  		_r$2;
 66314  		if (!((d.nx === 0))) {
 66315  			$panic(new $String("d.nx != 0"));
 66316  		}
 66317  		digest$1 = arrayType$4.zero();
 66318  		putUint32($subslice(new sliceType(digest$1), 0), d.h[0]);
 66319  		putUint32($subslice(new sliceType(digest$1), 4), d.h[1]);
 66320  		putUint32($subslice(new sliceType(digest$1), 8), d.h[2]);
 66321  		putUint32($subslice(new sliceType(digest$1), 12), d.h[3]);
 66322  		putUint32($subslice(new sliceType(digest$1), 16), d.h[4]);
 66323  		$s = -1; return digest$1;
 66324  		/* */ } return; } if ($f === undefined) { $f = { $blk: digest.ptr.prototype.checkSum }; } $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f.d = d; $f.digest$1 = digest$1; $f.len = len; $f.tmp = tmp; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.$s = $s; $f.$r = $r; return $f;
 66325  	};
 66326  	digest.prototype.checkSum = function() { return this.$val.checkSum(); };
 66327  	digest.ptr.prototype.ConstantTimeSum = function(in$1) {
 66328  		var _r, d, d0, hash$1, in$1, $s, $r;
 66329  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; d = $f.d; d0 = $f.d0; hash$1 = $f.hash$1; in$1 = $f.in$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 66330  		d0 = this;
 66331  		d = $clone(d0, digest);
 66332  		_r = d.constSum(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 66333  		hash$1 = $clone(_r, arrayType$4);
 66334  		$s = -1; return $appendSlice(in$1, new sliceType(hash$1));
 66335  		/* */ } return; } if ($f === undefined) { $f = { $blk: digest.ptr.prototype.ConstantTimeSum }; } $f._r = _r; $f.d = d; $f.d0 = d0; $f.hash$1 = hash$1; $f.in$1 = in$1; $f.$s = $s; $f.$r = $r; return $f;
 66336  	};
 66337  	digest.prototype.ConstantTimeSum = function(in$1) { return this.$val.ConstantTimeSum(in$1); };
 66338  	digest.ptr.prototype.constSum = function() {
 66339  		var _i, _i$1, _index, _index$1, _index$2, _index$3, _ref, _ref$1, d, digest$1, i, i$1, i$2, i$3, i$4, l, length, mask, mask1b, nx, s, s$1, separator, t, x, x$1, x$10, x$11, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9, $s, $r;
 66340  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _i = $f._i; _i$1 = $f._i$1; _index = $f._index; _index$1 = $f._index$1; _index$2 = $f._index$2; _index$3 = $f._index$3; _ref = $f._ref; _ref$1 = $f._ref$1; d = $f.d; digest$1 = $f.digest$1; i = $f.i; i$1 = $f.i$1; i$2 = $f.i$2; i$3 = $f.i$3; i$4 = $f.i$4; l = $f.l; length = $f.length; mask = $f.mask; mask1b = $f.mask1b; nx = $f.nx; s = $f.s; s$1 = $f.s$1; separator = $f.separator; t = $f.t; x = $f.x; x$1 = $f.x$1; x$10 = $f.x$10; x$11 = $f.x$11; x$2 = $f.x$2; x$3 = $f.x$3; x$4 = $f.x$4; x$5 = $f.x$5; x$6 = $f.x$6; x$7 = $f.x$7; x$8 = $f.x$8; x$9 = $f.x$9; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 66341  		d = this;
 66342  		length = arrayType.zero();
 66343  		l = $shiftLeft64(d.len, 3);
 66344  		i = 0;
 66345  		while (true) {
 66346  			if (!(i < 8)) { break; }
 66347  			((i < 0 || i >= length.length) ? ($throwRuntimeError("index out of range"), undefined) : length[i] = (($shiftRightUint64(l, ((56 - (8 * i >>> 0) >>> 0))).$low << 24 >>> 24)));
 66348  			i = i + (1) >>> 0;
 66349  		}
 66350  		nx = ((d.nx << 24 >>> 24));
 66351  		t = nx - 56 << 24 >>> 24;
 66352  		mask1b = (((((t << 24 >> 24)) >> 7 << 24 >> 24) << 24 >>> 24));
 66353  		separator = 128;
 66354  		i$1 = 0;
 66355  		while (true) {
 66356  			if (!(i$1 < 64)) { break; }
 66357  			mask = ((((((i$1 - nx << 24 >>> 24) << 24 >> 24)) >> 7 << 24 >> 24) << 24 >>> 24));
 66358  			(x$1 = d.x, ((i$1 < 0 || i$1 >= x$1.length) ? ($throwRuntimeError("index out of range"), undefined) : x$1[i$1] = ((((((~mask << 24 >>> 24) & separator) >>> 0)) | (((mask & (x = d.x, ((i$1 < 0 || i$1 >= x.length) ? ($throwRuntimeError("index out of range"), undefined) : x[i$1]))) >>> 0))) >>> 0)));
 66359  			separator = (separator & (mask)) >>> 0;
 66360  			if (i$1 >= 56) {
 66361  				(x$4 = d.x, ((i$1 < 0 || i$1 >= x$4.length) ? ($throwRuntimeError("index out of range"), undefined) : x$4[i$1] = (((x$2 = d.x, ((i$1 < 0 || i$1 >= x$2.length) ? ($throwRuntimeError("index out of range"), undefined) : x$2[i$1])) | (((mask1b & (x$3 = i$1 - 56 << 24 >>> 24, ((x$3 < 0 || x$3 >= length.length) ? ($throwRuntimeError("index out of range"), undefined) : length[x$3]))) >>> 0))) >>> 0)));
 66362  			}
 66363  			i$1 = i$1 + (1) << 24 >>> 24;
 66364  		}
 66365  		$r = block(d, new sliceType(d.x)); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 66366  		digest$1 = arrayType$4.zero();
 66367  		_ref = d.h;
 66368  		_i = 0;
 66369  		while (true) {
 66370  			if (!(_i < 5)) { break; }
 66371  			i$2 = _i;
 66372  			s = ((_i < 0 || _i >= _ref.length) ? ($throwRuntimeError("index out of range"), undefined) : _ref[_i]);
 66373  			(x$5 = $imul(i$2, 4), ((x$5 < 0 || x$5 >= digest$1.length) ? ($throwRuntimeError("index out of range"), undefined) : digest$1[x$5] = ((mask1b & (((s >>> 24 >>> 0) << 24 >>> 24))) >>> 0)));
 66374  			(x$6 = ($imul(i$2, 4)) + 1 >> 0, ((x$6 < 0 || x$6 >= digest$1.length) ? ($throwRuntimeError("index out of range"), undefined) : digest$1[x$6] = ((mask1b & (((s >>> 16 >>> 0) << 24 >>> 24))) >>> 0)));
 66375  			(x$7 = ($imul(i$2, 4)) + 2 >> 0, ((x$7 < 0 || x$7 >= digest$1.length) ? ($throwRuntimeError("index out of range"), undefined) : digest$1[x$7] = ((mask1b & (((s >>> 8 >>> 0) << 24 >>> 24))) >>> 0)));
 66376  			(x$8 = ($imul(i$2, 4)) + 3 >> 0, ((x$8 < 0 || x$8 >= digest$1.length) ? ($throwRuntimeError("index out of range"), undefined) : digest$1[x$8] = ((mask1b & ((s << 24 >>> 24))) >>> 0)));
 66377  			_i++;
 66378  		}
 66379  		i$3 = 0;
 66380  		while (true) {
 66381  			if (!(i$3 < 64)) { break; }
 66382  			if (i$3 < 56) {
 66383  				(x$9 = d.x, ((i$3 < 0 || i$3 >= x$9.length) ? ($throwRuntimeError("index out of range"), undefined) : x$9[i$3] = separator));
 66384  				separator = 0;
 66385  			} else {
 66386  				(x$11 = d.x, ((i$3 < 0 || i$3 >= x$11.length) ? ($throwRuntimeError("index out of range"), undefined) : x$11[i$3] = (x$10 = i$3 - 56 << 24 >>> 24, ((x$10 < 0 || x$10 >= length.length) ? ($throwRuntimeError("index out of range"), undefined) : length[x$10]))));
 66387  			}
 66388  			i$3 = i$3 + (1) << 24 >>> 24;
 66389  		}
 66390  		$r = block(d, new sliceType(d.x)); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 66391  		_ref$1 = d.h;
 66392  		_i$1 = 0;
 66393  		while (true) {
 66394  			if (!(_i$1 < 5)) { break; }
 66395  			i$4 = _i$1;
 66396  			s$1 = ((_i$1 < 0 || _i$1 >= _ref$1.length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1[_i$1]);
 66397  			_index = $imul(i$4, 4);
 66398  			((_index < 0 || _index >= digest$1.length) ? ($throwRuntimeError("index out of range"), undefined) : digest$1[_index] = ((((_index < 0 || _index >= digest$1.length) ? ($throwRuntimeError("index out of range"), undefined) : digest$1[_index]) | ((((~mask1b << 24 >>> 24) & (((s$1 >>> 24 >>> 0) << 24 >>> 24))) >>> 0))) >>> 0));
 66399  			_index$1 = ($imul(i$4, 4)) + 1 >> 0;
 66400  			((_index$1 < 0 || _index$1 >= digest$1.length) ? ($throwRuntimeError("index out of range"), undefined) : digest$1[_index$1] = ((((_index$1 < 0 || _index$1 >= digest$1.length) ? ($throwRuntimeError("index out of range"), undefined) : digest$1[_index$1]) | ((((~mask1b << 24 >>> 24) & (((s$1 >>> 16 >>> 0) << 24 >>> 24))) >>> 0))) >>> 0));
 66401  			_index$2 = ($imul(i$4, 4)) + 2 >> 0;
 66402  			((_index$2 < 0 || _index$2 >= digest$1.length) ? ($throwRuntimeError("index out of range"), undefined) : digest$1[_index$2] = ((((_index$2 < 0 || _index$2 >= digest$1.length) ? ($throwRuntimeError("index out of range"), undefined) : digest$1[_index$2]) | ((((~mask1b << 24 >>> 24) & (((s$1 >>> 8 >>> 0) << 24 >>> 24))) >>> 0))) >>> 0));
 66403  			_index$3 = ($imul(i$4, 4)) + 3 >> 0;
 66404  			((_index$3 < 0 || _index$3 >= digest$1.length) ? ($throwRuntimeError("index out of range"), undefined) : digest$1[_index$3] = ((((_index$3 < 0 || _index$3 >= digest$1.length) ? ($throwRuntimeError("index out of range"), undefined) : digest$1[_index$3]) | ((((~mask1b << 24 >>> 24) & ((s$1 << 24 >>> 24))) >>> 0))) >>> 0));
 66405  			_i$1++;
 66406  		}
 66407  		$s = -1; return digest$1;
 66408  		/* */ } return; } if ($f === undefined) { $f = { $blk: digest.ptr.prototype.constSum }; } $f._i = _i; $f._i$1 = _i$1; $f._index = _index; $f._index$1 = _index$1; $f._index$2 = _index$2; $f._index$3 = _index$3; $f._ref = _ref; $f._ref$1 = _ref$1; $f.d = d; $f.digest$1 = digest$1; $f.i = i; $f.i$1 = i$1; $f.i$2 = i$2; $f.i$3 = i$3; $f.i$4 = i$4; $f.l = l; $f.length = length; $f.mask = mask; $f.mask1b = mask1b; $f.nx = nx; $f.s = s; $f.s$1 = s$1; $f.separator = separator; $f.t = t; $f.x = x; $f.x$1 = x$1; $f.x$10 = x$10; $f.x$11 = x$11; $f.x$2 = x$2; $f.x$3 = x$3; $f.x$4 = x$4; $f.x$5 = x$5; $f.x$6 = x$6; $f.x$7 = x$7; $f.x$8 = x$8; $f.x$9 = x$9; $f.$s = $s; $f.$r = $r; return $f;
 66409  	};
 66410  	digest.prototype.constSum = function() { return this.$val.constSum(); };
 66411  	putUint64 = function(x, s) {
 66412  		var s, x;
 66413  		$unused((7 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 7]));
 66414  		(0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0] = (($shiftRightUint64(s, 56).$low << 24 >>> 24)));
 66415  		(1 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 1] = (($shiftRightUint64(s, 48).$low << 24 >>> 24)));
 66416  		(2 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 2] = (($shiftRightUint64(s, 40).$low << 24 >>> 24)));
 66417  		(3 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 3] = (($shiftRightUint64(s, 32).$low << 24 >>> 24)));
 66418  		(4 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 4] = (($shiftRightUint64(s, 24).$low << 24 >>> 24)));
 66419  		(5 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 5] = (($shiftRightUint64(s, 16).$low << 24 >>> 24)));
 66420  		(6 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 6] = (($shiftRightUint64(s, 8).$low << 24 >>> 24)));
 66421  		(7 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 7] = ((s.$low << 24 >>> 24)));
 66422  	};
 66423  	putUint32 = function(x, s) {
 66424  		var s, x;
 66425  		$unused((3 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 3]));
 66426  		(0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0] = (((s >>> 24 >>> 0) << 24 >>> 24)));
 66427  		(1 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 1] = (((s >>> 16 >>> 0) << 24 >>> 24)));
 66428  		(2 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 2] = (((s >>> 8 >>> 0) << 24 >>> 24)));
 66429  		(3 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 3] = ((s << 24 >>> 24)));
 66430  	};
 66431  	blockGeneric = function(dig, p) {
 66432  		var _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$14, _tmp$15, _tmp$16, _tmp$17, _tmp$18, _tmp$19, _tmp$2, _tmp$20, _tmp$21, _tmp$22, _tmp$23, _tmp$24, _tmp$25, _tmp$26, _tmp$27, _tmp$28, _tmp$29, _tmp$3, _tmp$30, _tmp$31, _tmp$32, _tmp$33, _tmp$34, _tmp$35, _tmp$36, _tmp$37, _tmp$38, _tmp$39, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, a, a5, a5$1, a5$2, a5$3, a5$4, b, b30, b30$1, b30$2, b30$3, b30$4, c, d, dig, e, f, f$1, f$2, f$3, f$4, h0, h1, h2, h3, h4, i, i$1, j, p, t, t$1, t$2, t$3, t$4, tmp, tmp$1, tmp$2, tmp$3, w, x, x$1, x$10, x$11, x$12, x$13, x$14, x$15, x$16, x$17, x$18, x$19, x$2, x$20, x$21, x$22, x$23, x$24, x$25, x$26, x$27, x$3, x$4, x$5, x$6, x$7, x$8, x$9;
 66433  		w = arrayType$5.zero();
 66434  		_tmp = dig.h[0];
 66435  		_tmp$1 = dig.h[1];
 66436  		_tmp$2 = dig.h[2];
 66437  		_tmp$3 = dig.h[3];
 66438  		_tmp$4 = dig.h[4];
 66439  		h0 = _tmp;
 66440  		h1 = _tmp$1;
 66441  		h2 = _tmp$2;
 66442  		h3 = _tmp$3;
 66443  		h4 = _tmp$4;
 66444  		while (true) {
 66445  			if (!(p.$length >= 64)) { break; }
 66446  			i = 0;
 66447  			while (true) {
 66448  				if (!(i < 16)) { break; }
 66449  				j = $imul(i, 4);
 66450  				((i < 0 || i >= w.length) ? ($throwRuntimeError("index out of range"), undefined) : w[i] = (((((((((((j < 0 || j >= p.$length) ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + j]) >>> 0)) << 24 >>> 0) | ((((x = j + 1 >> 0, ((x < 0 || x >= p.$length) ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + x])) >>> 0)) << 16 >>> 0)) >>> 0) | ((((x$1 = j + 2 >> 0, ((x$1 < 0 || x$1 >= p.$length) ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + x$1])) >>> 0)) << 8 >>> 0)) >>> 0) | (((x$2 = j + 3 >> 0, ((x$2 < 0 || x$2 >= p.$length) ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + x$2])) >>> 0))) >>> 0));
 66451  				i = i + (1) >> 0;
 66452  			}
 66453  			_tmp$5 = h0;
 66454  			_tmp$6 = h1;
 66455  			_tmp$7 = h2;
 66456  			_tmp$8 = h3;
 66457  			_tmp$9 = h4;
 66458  			a = _tmp$5;
 66459  			b = _tmp$6;
 66460  			c = _tmp$7;
 66461  			d = _tmp$8;
 66462  			e = _tmp$9;
 66463  			i$1 = 0;
 66464  			while (true) {
 66465  				if (!(i$1 < 16)) { break; }
 66466  				f = (((b & c) >>> 0) | ((((~b >>> 0)) & d) >>> 0)) >>> 0;
 66467  				a5 = ((a << 5 >>> 0) | (a >>> 27 >>> 0)) >>> 0;
 66468  				b30 = ((b << 30 >>> 0) | (b >>> 2 >>> 0)) >>> 0;
 66469  				t = (((a5 + f >>> 0) + e >>> 0) + (x$3 = i$1 & 15, ((x$3 < 0 || x$3 >= w.length) ? ($throwRuntimeError("index out of range"), undefined) : w[x$3])) >>> 0) + 1518500249 >>> 0;
 66470  				_tmp$10 = t;
 66471  				_tmp$11 = a;
 66472  				_tmp$12 = b30;
 66473  				_tmp$13 = c;
 66474  				_tmp$14 = d;
 66475  				a = _tmp$10;
 66476  				b = _tmp$11;
 66477  				c = _tmp$12;
 66478  				d = _tmp$13;
 66479  				e = _tmp$14;
 66480  				i$1 = i$1 + (1) >> 0;
 66481  			}
 66482  			while (true) {
 66483  				if (!(i$1 < 20)) { break; }
 66484  				tmp = ((((((x$4 = ((i$1 - 3 >> 0)) & 15, ((x$4 < 0 || x$4 >= w.length) ? ($throwRuntimeError("index out of range"), undefined) : w[x$4])) ^ (x$5 = ((i$1 - 8 >> 0)) & 15, ((x$5 < 0 || x$5 >= w.length) ? ($throwRuntimeError("index out of range"), undefined) : w[x$5]))) >>> 0) ^ (x$6 = ((i$1 - 14 >> 0)) & 15, ((x$6 < 0 || x$6 >= w.length) ? ($throwRuntimeError("index out of range"), undefined) : w[x$6]))) >>> 0) ^ (x$7 = (i$1) & 15, ((x$7 < 0 || x$7 >= w.length) ? ($throwRuntimeError("index out of range"), undefined) : w[x$7]))) >>> 0;
 66485  				(x$8 = i$1 & 15, ((x$8 < 0 || x$8 >= w.length) ? ($throwRuntimeError("index out of range"), undefined) : w[x$8] = (((tmp << 1 >>> 0) | (tmp >>> 31 >>> 0)) >>> 0)));
 66486  				f$1 = (((b & c) >>> 0) | ((((~b >>> 0)) & d) >>> 0)) >>> 0;
 66487  				a5$1 = ((a << 5 >>> 0) | (a >>> 27 >>> 0)) >>> 0;
 66488  				b30$1 = ((b << 30 >>> 0) | (b >>> 2 >>> 0)) >>> 0;
 66489  				t$1 = (((a5$1 + f$1 >>> 0) + e >>> 0) + (x$9 = i$1 & 15, ((x$9 < 0 || x$9 >= w.length) ? ($throwRuntimeError("index out of range"), undefined) : w[x$9])) >>> 0) + 1518500249 >>> 0;
 66490  				_tmp$15 = t$1;
 66491  				_tmp$16 = a;
 66492  				_tmp$17 = b30$1;
 66493  				_tmp$18 = c;
 66494  				_tmp$19 = d;
 66495  				a = _tmp$15;
 66496  				b = _tmp$16;
 66497  				c = _tmp$17;
 66498  				d = _tmp$18;
 66499  				e = _tmp$19;
 66500  				i$1 = i$1 + (1) >> 0;
 66501  			}
 66502  			while (true) {
 66503  				if (!(i$1 < 40)) { break; }
 66504  				tmp$1 = ((((((x$10 = ((i$1 - 3 >> 0)) & 15, ((x$10 < 0 || x$10 >= w.length) ? ($throwRuntimeError("index out of range"), undefined) : w[x$10])) ^ (x$11 = ((i$1 - 8 >> 0)) & 15, ((x$11 < 0 || x$11 >= w.length) ? ($throwRuntimeError("index out of range"), undefined) : w[x$11]))) >>> 0) ^ (x$12 = ((i$1 - 14 >> 0)) & 15, ((x$12 < 0 || x$12 >= w.length) ? ($throwRuntimeError("index out of range"), undefined) : w[x$12]))) >>> 0) ^ (x$13 = (i$1) & 15, ((x$13 < 0 || x$13 >= w.length) ? ($throwRuntimeError("index out of range"), undefined) : w[x$13]))) >>> 0;
 66505  				(x$14 = i$1 & 15, ((x$14 < 0 || x$14 >= w.length) ? ($throwRuntimeError("index out of range"), undefined) : w[x$14] = (((tmp$1 << 1 >>> 0) | (tmp$1 >>> 31 >>> 0)) >>> 0)));
 66506  				f$2 = (((b ^ c) >>> 0) ^ d) >>> 0;
 66507  				a5$2 = ((a << 5 >>> 0) | (a >>> 27 >>> 0)) >>> 0;
 66508  				b30$2 = ((b << 30 >>> 0) | (b >>> 2 >>> 0)) >>> 0;
 66509  				t$2 = (((a5$2 + f$2 >>> 0) + e >>> 0) + (x$15 = i$1 & 15, ((x$15 < 0 || x$15 >= w.length) ? ($throwRuntimeError("index out of range"), undefined) : w[x$15])) >>> 0) + 1859775393 >>> 0;
 66510  				_tmp$20 = t$2;
 66511  				_tmp$21 = a;
 66512  				_tmp$22 = b30$2;
 66513  				_tmp$23 = c;
 66514  				_tmp$24 = d;
 66515  				a = _tmp$20;
 66516  				b = _tmp$21;
 66517  				c = _tmp$22;
 66518  				d = _tmp$23;
 66519  				e = _tmp$24;
 66520  				i$1 = i$1 + (1) >> 0;
 66521  			}
 66522  			while (true) {
 66523  				if (!(i$1 < 60)) { break; }
 66524  				tmp$2 = ((((((x$16 = ((i$1 - 3 >> 0)) & 15, ((x$16 < 0 || x$16 >= w.length) ? ($throwRuntimeError("index out of range"), undefined) : w[x$16])) ^ (x$17 = ((i$1 - 8 >> 0)) & 15, ((x$17 < 0 || x$17 >= w.length) ? ($throwRuntimeError("index out of range"), undefined) : w[x$17]))) >>> 0) ^ (x$18 = ((i$1 - 14 >> 0)) & 15, ((x$18 < 0 || x$18 >= w.length) ? ($throwRuntimeError("index out of range"), undefined) : w[x$18]))) >>> 0) ^ (x$19 = (i$1) & 15, ((x$19 < 0 || x$19 >= w.length) ? ($throwRuntimeError("index out of range"), undefined) : w[x$19]))) >>> 0;
 66525  				(x$20 = i$1 & 15, ((x$20 < 0 || x$20 >= w.length) ? ($throwRuntimeError("index out of range"), undefined) : w[x$20] = (((tmp$2 << 1 >>> 0) | (tmp$2 >>> 31 >>> 0)) >>> 0)));
 66526  				f$3 = (((((((b | c) >>> 0)) & d) >>> 0)) | (((b & c) >>> 0))) >>> 0;
 66527  				a5$3 = ((a << 5 >>> 0) | (a >>> 27 >>> 0)) >>> 0;
 66528  				b30$3 = ((b << 30 >>> 0) | (b >>> 2 >>> 0)) >>> 0;
 66529  				t$3 = (((a5$3 + f$3 >>> 0) + e >>> 0) + (x$21 = i$1 & 15, ((x$21 < 0 || x$21 >= w.length) ? ($throwRuntimeError("index out of range"), undefined) : w[x$21])) >>> 0) + 2400959708 >>> 0;
 66530  				_tmp$25 = t$3;
 66531  				_tmp$26 = a;
 66532  				_tmp$27 = b30$3;
 66533  				_tmp$28 = c;
 66534  				_tmp$29 = d;
 66535  				a = _tmp$25;
 66536  				b = _tmp$26;
 66537  				c = _tmp$27;
 66538  				d = _tmp$28;
 66539  				e = _tmp$29;
 66540  				i$1 = i$1 + (1) >> 0;
 66541  			}
 66542  			while (true) {
 66543  				if (!(i$1 < 80)) { break; }
 66544  				tmp$3 = ((((((x$22 = ((i$1 - 3 >> 0)) & 15, ((x$22 < 0 || x$22 >= w.length) ? ($throwRuntimeError("index out of range"), undefined) : w[x$22])) ^ (x$23 = ((i$1 - 8 >> 0)) & 15, ((x$23 < 0 || x$23 >= w.length) ? ($throwRuntimeError("index out of range"), undefined) : w[x$23]))) >>> 0) ^ (x$24 = ((i$1 - 14 >> 0)) & 15, ((x$24 < 0 || x$24 >= w.length) ? ($throwRuntimeError("index out of range"), undefined) : w[x$24]))) >>> 0) ^ (x$25 = (i$1) & 15, ((x$25 < 0 || x$25 >= w.length) ? ($throwRuntimeError("index out of range"), undefined) : w[x$25]))) >>> 0;
 66545  				(x$26 = i$1 & 15, ((x$26 < 0 || x$26 >= w.length) ? ($throwRuntimeError("index out of range"), undefined) : w[x$26] = (((tmp$3 << 1 >>> 0) | (tmp$3 >>> 31 >>> 0)) >>> 0)));
 66546  				f$4 = (((b ^ c) >>> 0) ^ d) >>> 0;
 66547  				a5$4 = ((a << 5 >>> 0) | (a >>> 27 >>> 0)) >>> 0;
 66548  				b30$4 = ((b << 30 >>> 0) | (b >>> 2 >>> 0)) >>> 0;
 66549  				t$4 = (((a5$4 + f$4 >>> 0) + e >>> 0) + (x$27 = i$1 & 15, ((x$27 < 0 || x$27 >= w.length) ? ($throwRuntimeError("index out of range"), undefined) : w[x$27])) >>> 0) + 3395469782 >>> 0;
 66550  				_tmp$30 = t$4;
 66551  				_tmp$31 = a;
 66552  				_tmp$32 = b30$4;
 66553  				_tmp$33 = c;
 66554  				_tmp$34 = d;
 66555  				a = _tmp$30;
 66556  				b = _tmp$31;
 66557  				c = _tmp$32;
 66558  				d = _tmp$33;
 66559  				e = _tmp$34;
 66560  				i$1 = i$1 + (1) >> 0;
 66561  			}
 66562  			h0 = h0 + (a) >>> 0;
 66563  			h1 = h1 + (b) >>> 0;
 66564  			h2 = h2 + (c) >>> 0;
 66565  			h3 = h3 + (d) >>> 0;
 66566  			h4 = h4 + (e) >>> 0;
 66567  			p = $subslice(p, 64);
 66568  		}
 66569  		_tmp$35 = h0;
 66570  		_tmp$36 = h1;
 66571  		_tmp$37 = h2;
 66572  		_tmp$38 = h3;
 66573  		_tmp$39 = h4;
 66574  		dig.h[0] = _tmp$35;
 66575  		dig.h[1] = _tmp$36;
 66576  		dig.h[2] = _tmp$37;
 66577  		dig.h[3] = _tmp$38;
 66578  		dig.h[4] = _tmp$39;
 66579  	};
 66580  	ptrType.methods = [{prop: "MarshalBinary", name: "MarshalBinary", pkg: "", typ: $funcType([], [sliceType, $error], false)}, {prop: "UnmarshalBinary", name: "UnmarshalBinary", pkg: "", typ: $funcType([sliceType], [$error], false)}, {prop: "Reset", name: "Reset", pkg: "", typ: $funcType([], [], false)}, {prop: "Size", name: "Size", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "BlockSize", name: "BlockSize", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Write", name: "Write", pkg: "", typ: $funcType([sliceType], [$Int, $error], false)}, {prop: "Sum", name: "Sum", pkg: "", typ: $funcType([sliceType], [sliceType], false)}, {prop: "checkSum", name: "checkSum", pkg: "crypto/sha1", typ: $funcType([], [arrayType$4], false)}, {prop: "ConstantTimeSum", name: "ConstantTimeSum", pkg: "", typ: $funcType([sliceType], [sliceType], false)}, {prop: "constSum", name: "constSum", pkg: "crypto/sha1", typ: $funcType([], [arrayType$4], false)}];
 66581  	digest.init("crypto/sha1", [{prop: "h", name: "h", anonymous: false, exported: false, typ: arrayType$2, tag: ""}, {prop: "x", name: "x", anonymous: false, exported: false, typ: arrayType$3, tag: ""}, {prop: "nx", name: "nx", anonymous: false, exported: false, typ: $Int, tag: ""}, {prop: "len", name: "len", anonymous: false, exported: false, typ: $Uint64, tag: ""}]);
 66582  	$init = function() {
 66583  		$pkg.$init = function() {};
 66584  		/* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 66585  		$r = crypto.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 66586  		$r = errors.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 66587  		$r = hash.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 66588  		block = blockGeneric;
 66589  		init();
 66590  		/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
 66591  	};
 66592  	$pkg.$init = $init;
 66593  	return $pkg;
 66594  })();
 66595  $packages["crypto/sha256"] = (function() {
 66596  	var $pkg = {}, $init, crypto, errors, hash, digest, sliceType, sliceType$1, arrayType, arrayType$1, arrayType$2, arrayType$4, ptrType, _K, block, init, appendUint64, appendUint32, consumeUint64, consumeUint32, New, New224, blockGeneric;
 66597  	crypto = $packages["crypto"];
 66598  	errors = $packages["errors"];
 66599  	hash = $packages["hash"];
 66600  	digest = $pkg.digest = $newType(0, $kindStruct, "sha256.digest", true, "crypto/sha256", false, function(h_, x_, nx_, len_, is224_) {
 66601  		this.$val = this;
 66602  		if (arguments.length === 0) {
 66603  			this.h = arrayType.zero();
 66604  			this.x = arrayType$1.zero();
 66605  			this.nx = 0;
 66606  			this.len = new $Uint64(0, 0);
 66607  			this.is224 = false;
 66608  			return;
 66609  		}
 66610  		this.h = h_;
 66611  		this.x = x_;
 66612  		this.nx = nx_;
 66613  		this.len = len_;
 66614  		this.is224 = is224_;
 66615  	});
 66616  	sliceType = $sliceType($Uint32);
 66617  	sliceType$1 = $sliceType($Uint8);
 66618  	arrayType = $arrayType($Uint32, 8);
 66619  	arrayType$1 = $arrayType($Uint8, 64);
 66620  	arrayType$2 = $arrayType($Uint8, 32);
 66621  	arrayType$4 = $arrayType($Uint32, 64);
 66622  	ptrType = $ptrType(digest);
 66623  	init = function() {
 66624  		crypto.RegisterHash(4, New224);
 66625  		crypto.RegisterHash(5, New);
 66626  	};
 66627  	digest.ptr.prototype.MarshalBinary = function() {
 66628  		var b, d;
 66629  		d = this;
 66630  		b = $makeSlice(sliceType$1, 0, 108);
 66631  		if (d.is224) {
 66632  			b = $appendSlice(b, "sha\x02");
 66633  		} else {
 66634  			b = $appendSlice(b, "sha\x03");
 66635  		}
 66636  		b = appendUint32(b, d.h[0]);
 66637  		b = appendUint32(b, d.h[1]);
 66638  		b = appendUint32(b, d.h[2]);
 66639  		b = appendUint32(b, d.h[3]);
 66640  		b = appendUint32(b, d.h[4]);
 66641  		b = appendUint32(b, d.h[5]);
 66642  		b = appendUint32(b, d.h[6]);
 66643  		b = appendUint32(b, d.h[7]);
 66644  		b = $appendSlice(b, $subslice(new sliceType$1(d.x), 0, d.nx));
 66645  		b = $subslice(b, 0, ((b.$length + 64 >> 0) - (d.nx) >> 0));
 66646  		b = appendUint64(b, d.len);
 66647  		return [b, $ifaceNil];
 66648  	};
 66649  	digest.prototype.MarshalBinary = function() { return this.$val.MarshalBinary(); };
 66650  	digest.ptr.prototype.UnmarshalBinary = function(b) {
 66651  		var _r, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, _tuple$5, _tuple$6, _tuple$7, _tuple$8, b, d;
 66652  		d = this;
 66653  		if (b.$length < 4 || (d.is224 && !(($bytesToString($subslice(b, 0, 4))) === "sha\x02")) || (!d.is224 && !(($bytesToString($subslice(b, 0, 4))) === "sha\x03"))) {
 66654  			return errors.New("crypto/sha256: invalid hash state identifier");
 66655  		}
 66656  		if (!((b.$length === 108))) {
 66657  			return errors.New("crypto/sha256: invalid hash state size");
 66658  		}
 66659  		b = $subslice(b, 4);
 66660  		_tuple = consumeUint32(b);
 66661  		b = _tuple[0];
 66662  		d.h[0] = _tuple[1];
 66663  		_tuple$1 = consumeUint32(b);
 66664  		b = _tuple$1[0];
 66665  		d.h[1] = _tuple$1[1];
 66666  		_tuple$2 = consumeUint32(b);
 66667  		b = _tuple$2[0];
 66668  		d.h[2] = _tuple$2[1];
 66669  		_tuple$3 = consumeUint32(b);
 66670  		b = _tuple$3[0];
 66671  		d.h[3] = _tuple$3[1];
 66672  		_tuple$4 = consumeUint32(b);
 66673  		b = _tuple$4[0];
 66674  		d.h[4] = _tuple$4[1];
 66675  		_tuple$5 = consumeUint32(b);
 66676  		b = _tuple$5[0];
 66677  		d.h[5] = _tuple$5[1];
 66678  		_tuple$6 = consumeUint32(b);
 66679  		b = _tuple$6[0];
 66680  		d.h[6] = _tuple$6[1];
 66681  		_tuple$7 = consumeUint32(b);
 66682  		b = _tuple$7[0];
 66683  		d.h[7] = _tuple$7[1];
 66684  		b = $subslice(b, $copySlice(new sliceType$1(d.x), b));
 66685  		_tuple$8 = consumeUint64(b);
 66686  		b = _tuple$8[0];
 66687  		d.len = _tuple$8[1];
 66688  		d.nx = (_r = ((d.len.$low >> 0)) % 64, _r === _r ? _r : $throwRuntimeError("integer divide by zero"));
 66689  		return $ifaceNil;
 66690  	};
 66691  	digest.prototype.UnmarshalBinary = function(b) { return this.$val.UnmarshalBinary(b); };
 66692  	appendUint64 = function(b, x) {
 66693  		var a, b, x;
 66694  		a = $toNativeArray($kindUint8, [(($shiftRightUint64(x, 56).$low << 24 >>> 24)), (($shiftRightUint64(x, 48).$low << 24 >>> 24)), (($shiftRightUint64(x, 40).$low << 24 >>> 24)), (($shiftRightUint64(x, 32).$low << 24 >>> 24)), (($shiftRightUint64(x, 24).$low << 24 >>> 24)), (($shiftRightUint64(x, 16).$low << 24 >>> 24)), (($shiftRightUint64(x, 8).$low << 24 >>> 24)), ((x.$low << 24 >>> 24))]);
 66695  		return $appendSlice(b, new sliceType$1(a));
 66696  	};
 66697  	appendUint32 = function(b, x) {
 66698  		var a, b, x;
 66699  		a = $toNativeArray($kindUint8, [(((x >>> 24 >>> 0) << 24 >>> 24)), (((x >>> 16 >>> 0) << 24 >>> 24)), (((x >>> 8 >>> 0) << 24 >>> 24)), ((x << 24 >>> 24))]);
 66700  		return $appendSlice(b, new sliceType$1(a));
 66701  	};
 66702  	consumeUint64 = function(b) {
 66703  		var b, x, x$1, x$10, x$11, x$12, x$13, x$14, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9;
 66704  		$unused((7 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 7]));
 66705  		x$14 = (x = (x$1 = (x$2 = (x$3 = (x$4 = (x$5 = (x$6 = (new $Uint64(0, (7 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 7]))), x$7 = $shiftLeft64((new $Uint64(0, (6 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 6]))), 8), new $Uint64(x$6.$high | x$7.$high, (x$6.$low | x$7.$low) >>> 0)), x$8 = $shiftLeft64((new $Uint64(0, (5 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 5]))), 16), new $Uint64(x$5.$high | x$8.$high, (x$5.$low | x$8.$low) >>> 0)), x$9 = $shiftLeft64((new $Uint64(0, (4 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 4]))), 24), new $Uint64(x$4.$high | x$9.$high, (x$4.$low | x$9.$low) >>> 0)), x$10 = $shiftLeft64((new $Uint64(0, (3 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 3]))), 32), new $Uint64(x$3.$high | x$10.$high, (x$3.$low | x$10.$low) >>> 0)), x$11 = $shiftLeft64((new $Uint64(0, (2 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 2]))), 40), new $Uint64(x$2.$high | x$11.$high, (x$2.$low | x$11.$low) >>> 0)), x$12 = $shiftLeft64((new $Uint64(0, (1 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 1]))), 48), new $Uint64(x$1.$high | x$12.$high, (x$1.$low | x$12.$low) >>> 0)), x$13 = $shiftLeft64((new $Uint64(0, (0 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 0]))), 56), new $Uint64(x.$high | x$13.$high, (x.$low | x$13.$low) >>> 0));
 66706  		return [$subslice(b, 8), x$14];
 66707  	};
 66708  	consumeUint32 = function(b) {
 66709  		var b, x;
 66710  		$unused((3 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 3]));
 66711  		x = ((((((((3 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 3]) >>> 0)) | ((((2 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 2]) >>> 0)) << 8 >>> 0)) >>> 0) | ((((1 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 1]) >>> 0)) << 16 >>> 0)) >>> 0) | ((((0 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 0]) >>> 0)) << 24 >>> 0)) >>> 0;
 66712  		return [$subslice(b, 4), x];
 66713  	};
 66714  	digest.ptr.prototype.Reset = function() {
 66715  		var d;
 66716  		d = this;
 66717  		if (!d.is224) {
 66718  			d.h[0] = 1779033703;
 66719  			d.h[1] = 3144134277;
 66720  			d.h[2] = 1013904242;
 66721  			d.h[3] = 2773480762;
 66722  			d.h[4] = 1359893119;
 66723  			d.h[5] = 2600822924;
 66724  			d.h[6] = 528734635;
 66725  			d.h[7] = 1541459225;
 66726  		} else {
 66727  			d.h[0] = 3238371032;
 66728  			d.h[1] = 914150663;
 66729  			d.h[2] = 812702999;
 66730  			d.h[3] = 4144912697;
 66731  			d.h[4] = 4290775857;
 66732  			d.h[5] = 1750603025;
 66733  			d.h[6] = 1694076839;
 66734  			d.h[7] = 3204075428;
 66735  		}
 66736  		d.nx = 0;
 66737  		d.len = new $Uint64(0, 0);
 66738  	};
 66739  	digest.prototype.Reset = function() { return this.$val.Reset(); };
 66740  	New = function() {
 66741  		var d;
 66742  		d = new digest.ptr(arrayType.zero(), arrayType$1.zero(), 0, new $Uint64(0, 0), false);
 66743  		d.Reset();
 66744  		return d;
 66745  	};
 66746  	$pkg.New = New;
 66747  	New224 = function() {
 66748  		var d;
 66749  		d = new digest.ptr(arrayType.zero(), arrayType$1.zero(), 0, new $Uint64(0, 0), false);
 66750  		d.is224 = true;
 66751  		d.Reset();
 66752  		return d;
 66753  	};
 66754  	$pkg.New224 = New224;
 66755  	digest.ptr.prototype.Size = function() {
 66756  		var d;
 66757  		d = this;
 66758  		if (!d.is224) {
 66759  			return 32;
 66760  		}
 66761  		return 28;
 66762  	};
 66763  	digest.prototype.Size = function() { return this.$val.Size(); };
 66764  	digest.ptr.prototype.BlockSize = function() {
 66765  		var d;
 66766  		d = this;
 66767  		return 64;
 66768  	};
 66769  	digest.prototype.BlockSize = function() { return this.$val.BlockSize(); };
 66770  	digest.ptr.prototype.Write = function(p) {
 66771  		var d, err, n, n$1, nn, p, x, x$1, $s, $r;
 66772  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; d = $f.d; err = $f.err; n = $f.n; n$1 = $f.n$1; nn = $f.nn; p = $f.p; x = $f.x; x$1 = $f.x$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 66773  		nn = 0;
 66774  		err = $ifaceNil;
 66775  		d = this;
 66776  		nn = p.$length;
 66777  		d.len = (x = d.len, x$1 = (new $Uint64(0, nn)), new $Uint64(x.$high + x$1.$high, x.$low + x$1.$low));
 66778  		/* */ if (d.nx > 0) { $s = 1; continue; }
 66779  		/* */ $s = 2; continue;
 66780  		/* if (d.nx > 0) { */ case 1:
 66781  			n = $copySlice($subslice(new sliceType$1(d.x), d.nx), p);
 66782  			d.nx = d.nx + (n) >> 0;
 66783  			/* */ if (d.nx === 64) { $s = 3; continue; }
 66784  			/* */ $s = 4; continue;
 66785  			/* if (d.nx === 64) { */ case 3:
 66786  				$r = block(d, new sliceType$1(d.x)); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 66787  				d.nx = 0;
 66788  			/* } */ case 4:
 66789  			p = $subslice(p, n);
 66790  		/* } */ case 2:
 66791  		/* */ if (p.$length >= 64) { $s = 6; continue; }
 66792  		/* */ $s = 7; continue;
 66793  		/* if (p.$length >= 64) { */ case 6:
 66794  			n$1 = (p.$length & ~63) >> 0;
 66795  			$r = block(d, $subslice(p, 0, n$1)); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 66796  			p = $subslice(p, n$1);
 66797  		/* } */ case 7:
 66798  		if (p.$length > 0) {
 66799  			d.nx = $copySlice(new sliceType$1(d.x), p);
 66800  		}
 66801  		$s = -1; return [nn, err];
 66802  		/* */ } return; } if ($f === undefined) { $f = { $blk: digest.ptr.prototype.Write }; } $f.d = d; $f.err = err; $f.n = n; $f.n$1 = n$1; $f.nn = nn; $f.p = p; $f.x = x; $f.x$1 = x$1; $f.$s = $s; $f.$r = $r; return $f;
 66803  	};
 66804  	digest.prototype.Write = function(p) { return this.$val.Write(p); };
 66805  	digest.ptr.prototype.Sum = function(in$1) {
 66806  		var _r, d, d0, hash$1, in$1, $s, $r;
 66807  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; d = $f.d; d0 = $f.d0; hash$1 = $f.hash$1; in$1 = $f.in$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 66808  		d0 = this;
 66809  		d = $clone(d0, digest);
 66810  		_r = d.checkSum(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 66811  		hash$1 = $clone(_r, arrayType$2);
 66812  		if (d.is224) {
 66813  			$s = -1; return $appendSlice(in$1, $subslice(new sliceType$1(hash$1), 0, 28));
 66814  		}
 66815  		$s = -1; return $appendSlice(in$1, new sliceType$1(hash$1));
 66816  		/* */ } return; } if ($f === undefined) { $f = { $blk: digest.ptr.prototype.Sum }; } $f._r = _r; $f.d = d; $f.d0 = d0; $f.hash$1 = hash$1; $f.in$1 = in$1; $f.$s = $s; $f.$r = $r; return $f;
 66817  	};
 66818  	digest.prototype.Sum = function(in$1) { return this.$val.Sum(in$1); };
 66819  	digest.ptr.prototype.checkSum = function() {
 66820  		var _i, _r, _r$1, _r$2, _ref, d, digest$1, h, i, i$1, len, s, tmp, x, x$1, x$2, x$3, x$4, x$5, x$6, $s, $r;
 66821  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _i = $f._i; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _ref = $f._ref; d = $f.d; digest$1 = $f.digest$1; h = $f.h; i = $f.i; i$1 = $f.i$1; len = $f.len; s = $f.s; tmp = $f.tmp; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; x$3 = $f.x$3; x$4 = $f.x$4; x$5 = $f.x$5; x$6 = $f.x$6; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 66822  		d = this;
 66823  		len = d.len;
 66824  		tmp = arrayType$1.zero();
 66825  		tmp[0] = 128;
 66826  		/* */ if ((x = $div64(len, new $Uint64(0, 64), true), (x.$high < 0 || (x.$high === 0 && x.$low < 56)))) { $s = 1; continue; }
 66827  		/* */ $s = 2; continue;
 66828  		/* if ((x = $div64(len, new $Uint64(0, 64), true), (x.$high < 0 || (x.$high === 0 && x.$low < 56)))) { */ case 1:
 66829  			_r = d.Write($subslice(new sliceType$1(tmp), 0, $flatten64((x$1 = $div64(len, new $Uint64(0, 64), true), new $Uint64(0 - x$1.$high, 56 - x$1.$low))))); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 66830  			_r;
 66831  			$s = 3; continue;
 66832  		/* } else { */ case 2:
 66833  			_r$1 = d.Write($subslice(new sliceType$1(tmp), 0, $flatten64((x$2 = $div64(len, new $Uint64(0, 64), true), new $Uint64(0 - x$2.$high, 120 - x$2.$low))))); /* */ $s = 5; case 5: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 66834  			_r$1;
 66835  		/* } */ case 3:
 66836  		len = $shiftLeft64(len, (3));
 66837  		i = 0;
 66838  		while (true) {
 66839  			if (!(i < 8)) { break; }
 66840  			((i < 0 || i >= tmp.length) ? ($throwRuntimeError("index out of range"), undefined) : tmp[i] = (($shiftRightUint64(len, ((56 - (8 * i >>> 0) >>> 0))).$low << 24 >>> 24)));
 66841  			i = i + (1) >>> 0;
 66842  		}
 66843  		_r$2 = d.Write($subslice(new sliceType$1(tmp), 0, 8)); /* */ $s = 6; case 6: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 66844  		_r$2;
 66845  		if (!((d.nx === 0))) {
 66846  			$panic(new $String("d.nx != 0"));
 66847  		}
 66848  		h = new sliceType(d.h);
 66849  		if (d.is224) {
 66850  			h = $subslice(new sliceType(d.h), 0, 7);
 66851  		}
 66852  		digest$1 = arrayType$2.zero();
 66853  		_ref = h;
 66854  		_i = 0;
 66855  		while (true) {
 66856  			if (!(_i < _ref.$length)) { break; }
 66857  			i$1 = _i;
 66858  			s = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
 66859  			(x$3 = $imul(i$1, 4), ((x$3 < 0 || x$3 >= digest$1.length) ? ($throwRuntimeError("index out of range"), undefined) : digest$1[x$3] = (((s >>> 24 >>> 0) << 24 >>> 24))));
 66860  			(x$4 = ($imul(i$1, 4)) + 1 >> 0, ((x$4 < 0 || x$4 >= digest$1.length) ? ($throwRuntimeError("index out of range"), undefined) : digest$1[x$4] = (((s >>> 16 >>> 0) << 24 >>> 24))));
 66861  			(x$5 = ($imul(i$1, 4)) + 2 >> 0, ((x$5 < 0 || x$5 >= digest$1.length) ? ($throwRuntimeError("index out of range"), undefined) : digest$1[x$5] = (((s >>> 8 >>> 0) << 24 >>> 24))));
 66862  			(x$6 = ($imul(i$1, 4)) + 3 >> 0, ((x$6 < 0 || x$6 >= digest$1.length) ? ($throwRuntimeError("index out of range"), undefined) : digest$1[x$6] = ((s << 24 >>> 24))));
 66863  			_i++;
 66864  		}
 66865  		$s = -1; return digest$1;
 66866  		/* */ } return; } if ($f === undefined) { $f = { $blk: digest.ptr.prototype.checkSum }; } $f._i = _i; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._ref = _ref; $f.d = d; $f.digest$1 = digest$1; $f.h = h; $f.i = i; $f.i$1 = i$1; $f.len = len; $f.s = s; $f.tmp = tmp; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.x$3 = x$3; $f.x$4 = x$4; $f.x$5 = x$5; $f.x$6 = x$6; $f.$s = $s; $f.$r = $r; return $f;
 66867  	};
 66868  	digest.prototype.checkSum = function() { return this.$val.checkSum(); };
 66869  	blockGeneric = function(dig, p) {
 66870  		var _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$14, _tmp$15, _tmp$16, _tmp$17, _tmp$18, _tmp$19, _tmp$2, _tmp$20, _tmp$21, _tmp$22, _tmp$23, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, a, b, c, d, dig, e, f, g, h, h0, h1, h2, h3, h4, h5, h6, h7, i, i$1, i$2, j, p, t1, t1$1, t2, t2$1, v1, v2, w, x, x$1, x$2, x$3, x$4, x$5, x$6;
 66871  		w = arrayType$4.zero();
 66872  		_tmp = dig.h[0];
 66873  		_tmp$1 = dig.h[1];
 66874  		_tmp$2 = dig.h[2];
 66875  		_tmp$3 = dig.h[3];
 66876  		_tmp$4 = dig.h[4];
 66877  		_tmp$5 = dig.h[5];
 66878  		_tmp$6 = dig.h[6];
 66879  		_tmp$7 = dig.h[7];
 66880  		h0 = _tmp;
 66881  		h1 = _tmp$1;
 66882  		h2 = _tmp$2;
 66883  		h3 = _tmp$3;
 66884  		h4 = _tmp$4;
 66885  		h5 = _tmp$5;
 66886  		h6 = _tmp$6;
 66887  		h7 = _tmp$7;
 66888  		while (true) {
 66889  			if (!(p.$length >= 64)) { break; }
 66890  			i = 0;
 66891  			while (true) {
 66892  				if (!(i < 16)) { break; }
 66893  				j = $imul(i, 4);
 66894  				((i < 0 || i >= w.length) ? ($throwRuntimeError("index out of range"), undefined) : w[i] = (((((((((((j < 0 || j >= p.$length) ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + j]) >>> 0)) << 24 >>> 0) | ((((x = j + 1 >> 0, ((x < 0 || x >= p.$length) ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + x])) >>> 0)) << 16 >>> 0)) >>> 0) | ((((x$1 = j + 2 >> 0, ((x$1 < 0 || x$1 >= p.$length) ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + x$1])) >>> 0)) << 8 >>> 0)) >>> 0) | (((x$2 = j + 3 >> 0, ((x$2 < 0 || x$2 >= p.$length) ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + x$2])) >>> 0))) >>> 0));
 66895  				i = i + (1) >> 0;
 66896  			}
 66897  			i$1 = 16;
 66898  			while (true) {
 66899  				if (!(i$1 < 64)) { break; }
 66900  				v1 = (x$3 = i$1 - 2 >> 0, ((x$3 < 0 || x$3 >= w.length) ? ($throwRuntimeError("index out of range"), undefined) : w[x$3]));
 66901  				t1 = (((((((v1 >>> 17 >>> 0) | (v1 << 15 >>> 0)) >>> 0)) ^ ((((v1 >>> 19 >>> 0) | (v1 << 13 >>> 0)) >>> 0))) >>> 0) ^ ((v1 >>> 10 >>> 0))) >>> 0;
 66902  				v2 = (x$4 = i$1 - 15 >> 0, ((x$4 < 0 || x$4 >= w.length) ? ($throwRuntimeError("index out of range"), undefined) : w[x$4]));
 66903  				t2 = (((((((v2 >>> 7 >>> 0) | (v2 << 25 >>> 0)) >>> 0)) ^ ((((v2 >>> 18 >>> 0) | (v2 << 14 >>> 0)) >>> 0))) >>> 0) ^ ((v2 >>> 3 >>> 0))) >>> 0;
 66904  				((i$1 < 0 || i$1 >= w.length) ? ($throwRuntimeError("index out of range"), undefined) : w[i$1] = (((t1 + (x$5 = i$1 - 7 >> 0, ((x$5 < 0 || x$5 >= w.length) ? ($throwRuntimeError("index out of range"), undefined) : w[x$5])) >>> 0) + t2 >>> 0) + (x$6 = i$1 - 16 >> 0, ((x$6 < 0 || x$6 >= w.length) ? ($throwRuntimeError("index out of range"), undefined) : w[x$6])) >>> 0));
 66905  				i$1 = i$1 + (1) >> 0;
 66906  			}
 66907  			_tmp$8 = h0;
 66908  			_tmp$9 = h1;
 66909  			_tmp$10 = h2;
 66910  			_tmp$11 = h3;
 66911  			_tmp$12 = h4;
 66912  			_tmp$13 = h5;
 66913  			_tmp$14 = h6;
 66914  			_tmp$15 = h7;
 66915  			a = _tmp$8;
 66916  			b = _tmp$9;
 66917  			c = _tmp$10;
 66918  			d = _tmp$11;
 66919  			e = _tmp$12;
 66920  			f = _tmp$13;
 66921  			g = _tmp$14;
 66922  			h = _tmp$15;
 66923  			i$2 = 0;
 66924  			while (true) {
 66925  				if (!(i$2 < 64)) { break; }
 66926  				t1$1 = (((h + (((((((((e >>> 6 >>> 0) | (e << 26 >>> 0)) >>> 0)) ^ ((((e >>> 11 >>> 0) | (e << 21 >>> 0)) >>> 0))) >>> 0) ^ ((((e >>> 25 >>> 0) | (e << 7 >>> 0)) >>> 0))) >>> 0)) >>> 0) + ((((((e & f) >>> 0)) ^ ((((~e >>> 0) & g) >>> 0))) >>> 0)) >>> 0) + ((i$2 < 0 || i$2 >= _K.$length) ? ($throwRuntimeError("index out of range"), undefined) : _K.$array[_K.$offset + i$2]) >>> 0) + ((i$2 < 0 || i$2 >= w.length) ? ($throwRuntimeError("index out of range"), undefined) : w[i$2]) >>> 0;
 66927  				t2$1 = (((((((((a >>> 2 >>> 0) | (a << 30 >>> 0)) >>> 0)) ^ ((((a >>> 13 >>> 0) | (a << 19 >>> 0)) >>> 0))) >>> 0) ^ ((((a >>> 22 >>> 0) | (a << 10 >>> 0)) >>> 0))) >>> 0)) + ((((((((a & b) >>> 0)) ^ (((a & c) >>> 0))) >>> 0) ^ (((b & c) >>> 0))) >>> 0)) >>> 0;
 66928  				h = g;
 66929  				g = f;
 66930  				f = e;
 66931  				e = d + t1$1 >>> 0;
 66932  				d = c;
 66933  				c = b;
 66934  				b = a;
 66935  				a = t1$1 + t2$1 >>> 0;
 66936  				i$2 = i$2 + (1) >> 0;
 66937  			}
 66938  			h0 = h0 + (a) >>> 0;
 66939  			h1 = h1 + (b) >>> 0;
 66940  			h2 = h2 + (c) >>> 0;
 66941  			h3 = h3 + (d) >>> 0;
 66942  			h4 = h4 + (e) >>> 0;
 66943  			h5 = h5 + (f) >>> 0;
 66944  			h6 = h6 + (g) >>> 0;
 66945  			h7 = h7 + (h) >>> 0;
 66946  			p = $subslice(p, 64);
 66947  		}
 66948  		_tmp$16 = h0;
 66949  		_tmp$17 = h1;
 66950  		_tmp$18 = h2;
 66951  		_tmp$19 = h3;
 66952  		_tmp$20 = h4;
 66953  		_tmp$21 = h5;
 66954  		_tmp$22 = h6;
 66955  		_tmp$23 = h7;
 66956  		dig.h[0] = _tmp$16;
 66957  		dig.h[1] = _tmp$17;
 66958  		dig.h[2] = _tmp$18;
 66959  		dig.h[3] = _tmp$19;
 66960  		dig.h[4] = _tmp$20;
 66961  		dig.h[5] = _tmp$21;
 66962  		dig.h[6] = _tmp$22;
 66963  		dig.h[7] = _tmp$23;
 66964  	};
 66965  	ptrType.methods = [{prop: "MarshalBinary", name: "MarshalBinary", pkg: "", typ: $funcType([], [sliceType$1, $error], false)}, {prop: "UnmarshalBinary", name: "UnmarshalBinary", pkg: "", typ: $funcType([sliceType$1], [$error], false)}, {prop: "Reset", name: "Reset", pkg: "", typ: $funcType([], [], false)}, {prop: "Size", name: "Size", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "BlockSize", name: "BlockSize", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Write", name: "Write", pkg: "", typ: $funcType([sliceType$1], [$Int, $error], false)}, {prop: "Sum", name: "Sum", pkg: "", typ: $funcType([sliceType$1], [sliceType$1], false)}, {prop: "checkSum", name: "checkSum", pkg: "crypto/sha256", typ: $funcType([], [arrayType$2], false)}];
 66966  	digest.init("crypto/sha256", [{prop: "h", name: "h", anonymous: false, exported: false, typ: arrayType, tag: ""}, {prop: "x", name: "x", anonymous: false, exported: false, typ: arrayType$1, tag: ""}, {prop: "nx", name: "nx", anonymous: false, exported: false, typ: $Int, tag: ""}, {prop: "len", name: "len", anonymous: false, exported: false, typ: $Uint64, tag: ""}, {prop: "is224", name: "is224", anonymous: false, exported: false, typ: $Bool, tag: ""}]);
 66967  	$init = function() {
 66968  		$pkg.$init = function() {};
 66969  		/* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 66970  		$r = crypto.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 66971  		$r = errors.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 66972  		$r = hash.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 66973  		_K = new sliceType([1116352408, 1899447441, 3049323471, 3921009573, 961987163, 1508970993, 2453635748, 2870763221, 3624381080, 310598401, 607225278, 1426881987, 1925078388, 2162078206, 2614888103, 3248222580, 3835390401, 4022224774, 264347078, 604807628, 770255983, 1249150122, 1555081692, 1996064986, 2554220882, 2821834349, 2952996808, 3210313671, 3336571891, 3584528711, 113926993, 338241895, 666307205, 773529912, 1294757372, 1396182291, 1695183700, 1986661051, 2177026350, 2456956037, 2730485921, 2820302411, 3259730800, 3345764771, 3516065817, 3600352804, 4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298]);
 66974  		block = blockGeneric;
 66975  		init();
 66976  		/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
 66977  	};
 66978  	$pkg.$init = $init;
 66979  	return $pkg;
 66980  })();
 66981  $packages["crypto/dsa"] = (function() {
 66982  	var $pkg = {}, $init, errors, io, big, Parameters, PublicKey, ptrType, Verify;
 66983  	errors = $packages["errors"];
 66984  	io = $packages["io"];
 66985  	big = $packages["math/big"];
 66986  	Parameters = $pkg.Parameters = $newType(0, $kindStruct, "dsa.Parameters", true, "crypto/dsa", true, function(P_, Q_, G_) {
 66987  		this.$val = this;
 66988  		if (arguments.length === 0) {
 66989  			this.P = ptrType.nil;
 66990  			this.Q = ptrType.nil;
 66991  			this.G = ptrType.nil;
 66992  			return;
 66993  		}
 66994  		this.P = P_;
 66995  		this.Q = Q_;
 66996  		this.G = G_;
 66997  	});
 66998  	PublicKey = $pkg.PublicKey = $newType(0, $kindStruct, "dsa.PublicKey", true, "crypto/dsa", true, function(Parameters_, Y_) {
 66999  		this.$val = this;
 67000  		if (arguments.length === 0) {
 67001  			this.Parameters = new Parameters.ptr(ptrType.nil, ptrType.nil, ptrType.nil);
 67002  			this.Y = ptrType.nil;
 67003  			return;
 67004  		}
 67005  		this.Parameters = Parameters_;
 67006  		this.Y = Y_;
 67007  	});
 67008  	ptrType = $ptrType(big.Int);
 67009  	Verify = function(pub, hash, r, s) {
 67010  		var _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, hash, n, pub, r, s, u1, u2, v, w, z, $s, $r;
 67011  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; hash = $f.hash; n = $f.n; pub = $f.pub; r = $f.r; s = $f.s; u1 = $f.u1; u2 = $f.u2; v = $f.v; w = $f.w; z = $f.z; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 67012  		if (pub.Parameters.P.Sign() === 0) {
 67013  			$s = -1; return false;
 67014  		}
 67015  		if (r.Sign() < 1 || r.Cmp(pub.Parameters.Q) >= 0) {
 67016  			$s = -1; return false;
 67017  		}
 67018  		if (s.Sign() < 1 || s.Cmp(pub.Parameters.Q) >= 0) {
 67019  			$s = -1; return false;
 67020  		}
 67021  		_r = new big.Int.ptr(false, big.nat.nil).ModInverse(s, pub.Parameters.Q); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 67022  		w = _r;
 67023  		n = pub.Parameters.Q.BitLen();
 67024  		if (!(((n & 7) === 0))) {
 67025  			$s = -1; return false;
 67026  		}
 67027  		z = new big.Int.ptr(false, big.nat.nil).SetBytes(hash);
 67028  		u1 = new big.Int.ptr(false, big.nat.nil).Mul(z, w);
 67029  		_r$1 = u1.Mod(u1, pub.Parameters.Q); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 67030  		_r$1;
 67031  		u2 = w.Mul(r, w);
 67032  		_r$2 = u2.Mod(u2, pub.Parameters.Q); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 67033  		_r$2;
 67034  		_r$3 = u1.Exp(pub.Parameters.G, u1, pub.Parameters.P); /* */ $s = 4; case 4: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 67035  		v = _r$3;
 67036  		_r$4 = u2.Exp(pub.Y, u2, pub.Parameters.P); /* */ $s = 5; case 5: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 67037  		_r$4;
 67038  		v.Mul(v, u2);
 67039  		_r$5 = v.Mod(v, pub.Parameters.P); /* */ $s = 6; case 6: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
 67040  		_r$5;
 67041  		_r$6 = v.Mod(v, pub.Parameters.Q); /* */ $s = 7; case 7: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
 67042  		_r$6;
 67043  		$s = -1; return v.Cmp(r) === 0;
 67044  		/* */ } return; } if ($f === undefined) { $f = { $blk: Verify }; } $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f.hash = hash; $f.n = n; $f.pub = pub; $f.r = r; $f.s = s; $f.u1 = u1; $f.u2 = u2; $f.v = v; $f.w = w; $f.z = z; $f.$s = $s; $f.$r = $r; return $f;
 67045  	};
 67046  	$pkg.Verify = Verify;
 67047  	Parameters.init("", [{prop: "P", name: "P", anonymous: false, exported: true, typ: ptrType, tag: ""}, {prop: "Q", name: "Q", anonymous: false, exported: true, typ: ptrType, tag: ""}, {prop: "G", name: "G", anonymous: false, exported: true, typ: ptrType, tag: ""}]);
 67048  	PublicKey.init("", [{prop: "Parameters", name: "Parameters", anonymous: true, exported: true, typ: Parameters, tag: ""}, {prop: "Y", name: "Y", anonymous: false, exported: true, typ: ptrType, tag: ""}]);
 67049  	$init = function() {
 67050  		$pkg.$init = function() {};
 67051  		/* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 67052  		$r = errors.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 67053  		$r = io.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 67054  		$r = big.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 67055  		$pkg.ErrInvalidPublicKey = errors.New("crypto/dsa: invalid public key");
 67056  		/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
 67057  	};
 67058  	$pkg.$init = $init;
 67059  	return $pkg;
 67060  })();
 67061  $packages["encoding/hex"] = (function() {
 67062  	var $pkg = {}, $init, bytes, errors, fmt, io, sliceType$1, EncodedLen, Encode, EncodeToString;
 67063  	bytes = $packages["bytes"];
 67064  	errors = $packages["errors"];
 67065  	fmt = $packages["fmt"];
 67066  	io = $packages["io"];
 67067  	sliceType$1 = $sliceType($Uint8);
 67068  	EncodedLen = function(n) {
 67069  		var n;
 67070  		return $imul(n, 2);
 67071  	};
 67072  	$pkg.EncodedLen = EncodedLen;
 67073  	Encode = function(dst, src) {
 67074  		var _i, _ref, dst, i, src, v, x, x$1;
 67075  		_ref = src;
 67076  		_i = 0;
 67077  		while (true) {
 67078  			if (!(_i < _ref.$length)) { break; }
 67079  			i = _i;
 67080  			v = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
 67081  			(x = $imul(i, 2), ((x < 0 || x >= dst.$length) ? ($throwRuntimeError("index out of range"), undefined) : dst.$array[dst.$offset + x] = "0123456789abcdef".charCodeAt((v >>> 4 << 24 >>> 24))));
 67082  			(x$1 = ($imul(i, 2)) + 1 >> 0, ((x$1 < 0 || x$1 >= dst.$length) ? ($throwRuntimeError("index out of range"), undefined) : dst.$array[dst.$offset + x$1] = "0123456789abcdef".charCodeAt(((v & 15) >>> 0))));
 67083  			_i++;
 67084  		}
 67085  		return $imul(src.$length, 2);
 67086  	};
 67087  	$pkg.Encode = Encode;
 67088  	EncodeToString = function(src) {
 67089  		var dst, src;
 67090  		dst = $makeSlice(sliceType$1, EncodedLen(src.$length));
 67091  		Encode(dst, src);
 67092  		return ($bytesToString(dst));
 67093  	};
 67094  	$pkg.EncodeToString = EncodeToString;
 67095  	$init = function() {
 67096  		$pkg.$init = function() {};
 67097  		/* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 67098  		$r = bytes.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 67099  		$r = errors.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 67100  		$r = fmt.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 67101  		$r = io.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 67102  		$pkg.ErrLength = errors.New("encoding/hex: odd length hex string");
 67103  		/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
 67104  	};
 67105  	$pkg.$init = $init;
 67106  	return $pkg;
 67107  })();
 67108  $packages["crypto/x509/pkix"] = (function() {
 67109  	var $pkg = {}, $init, asn1, hex, fmt, big, time, AlgorithmIdentifier, RDNSequence, RelativeDistinguishedNameSET, AttributeTypeAndValue, Extension, Name, CertificateList, TBSCertificateList, RevokedCertificate, sliceType, sliceType$1, sliceType$2, sliceType$3, sliceType$4, sliceType$5, ptrType, ptrType$1, ptrType$2, sliceType$7, sliceType$8, ptrType$3, ptrType$4, attributeTypeNames, oidCountry, oidOrganization, oidOrganizationalUnit, oidCommonName, oidSerialNumber, oidLocality, oidProvince, oidStreetAddress, oidPostalCode, oidInAttributeTypeAndValue;
 67110  	asn1 = $packages["encoding/asn1"];
 67111  	hex = $packages["encoding/hex"];
 67112  	fmt = $packages["fmt"];
 67113  	big = $packages["math/big"];
 67114  	time = $packages["time"];
 67115  	AlgorithmIdentifier = $pkg.AlgorithmIdentifier = $newType(0, $kindStruct, "pkix.AlgorithmIdentifier", true, "crypto/x509/pkix", true, function(Algorithm_, Parameters_) {
 67116  		this.$val = this;
 67117  		if (arguments.length === 0) {
 67118  			this.Algorithm = asn1.ObjectIdentifier.nil;
 67119  			this.Parameters = new asn1.RawValue.ptr(0, 0, false, sliceType$5.nil, sliceType$5.nil);
 67120  			return;
 67121  		}
 67122  		this.Algorithm = Algorithm_;
 67123  		this.Parameters = Parameters_;
 67124  	});
 67125  	RDNSequence = $pkg.RDNSequence = $newType(12, $kindSlice, "pkix.RDNSequence", true, "crypto/x509/pkix", true, null);
 67126  	RelativeDistinguishedNameSET = $pkg.RelativeDistinguishedNameSET = $newType(12, $kindSlice, "pkix.RelativeDistinguishedNameSET", true, "crypto/x509/pkix", true, null);
 67127  	AttributeTypeAndValue = $pkg.AttributeTypeAndValue = $newType(0, $kindStruct, "pkix.AttributeTypeAndValue", true, "crypto/x509/pkix", true, function(Type_, Value_) {
 67128  		this.$val = this;
 67129  		if (arguments.length === 0) {
 67130  			this.Type = asn1.ObjectIdentifier.nil;
 67131  			this.Value = $ifaceNil;
 67132  			return;
 67133  		}
 67134  		this.Type = Type_;
 67135  		this.Value = Value_;
 67136  	});
 67137  	Extension = $pkg.Extension = $newType(0, $kindStruct, "pkix.Extension", true, "crypto/x509/pkix", true, function(Id_, Critical_, Value_) {
 67138  		this.$val = this;
 67139  		if (arguments.length === 0) {
 67140  			this.Id = asn1.ObjectIdentifier.nil;
 67141  			this.Critical = false;
 67142  			this.Value = sliceType$5.nil;
 67143  			return;
 67144  		}
 67145  		this.Id = Id_;
 67146  		this.Critical = Critical_;
 67147  		this.Value = Value_;
 67148  	});
 67149  	Name = $pkg.Name = $newType(0, $kindStruct, "pkix.Name", true, "crypto/x509/pkix", true, function(Country_, Organization_, OrganizationalUnit_, Locality_, Province_, StreetAddress_, PostalCode_, SerialNumber_, CommonName_, Names_, ExtraNames_) {
 67150  		this.$val = this;
 67151  		if (arguments.length === 0) {
 67152  			this.Country = sliceType$4.nil;
 67153  			this.Organization = sliceType$4.nil;
 67154  			this.OrganizationalUnit = sliceType$4.nil;
 67155  			this.Locality = sliceType$4.nil;
 67156  			this.Province = sliceType$4.nil;
 67157  			this.StreetAddress = sliceType$4.nil;
 67158  			this.PostalCode = sliceType$4.nil;
 67159  			this.SerialNumber = "";
 67160  			this.CommonName = "";
 67161  			this.Names = sliceType$3.nil;
 67162  			this.ExtraNames = sliceType$3.nil;
 67163  			return;
 67164  		}
 67165  		this.Country = Country_;
 67166  		this.Organization = Organization_;
 67167  		this.OrganizationalUnit = OrganizationalUnit_;
 67168  		this.Locality = Locality_;
 67169  		this.Province = Province_;
 67170  		this.StreetAddress = StreetAddress_;
 67171  		this.PostalCode = PostalCode_;
 67172  		this.SerialNumber = SerialNumber_;
 67173  		this.CommonName = CommonName_;
 67174  		this.Names = Names_;
 67175  		this.ExtraNames = ExtraNames_;
 67176  	});
 67177  	CertificateList = $pkg.CertificateList = $newType(0, $kindStruct, "pkix.CertificateList", true, "crypto/x509/pkix", true, function(TBSCertList_, SignatureAlgorithm_, SignatureValue_) {
 67178  		this.$val = this;
 67179  		if (arguments.length === 0) {
 67180  			this.TBSCertList = new TBSCertificateList.ptr(asn1.RawContent.nil, 0, new AlgorithmIdentifier.ptr(asn1.ObjectIdentifier.nil, new asn1.RawValue.ptr(0, 0, false, sliceType$5.nil, sliceType$5.nil)), RDNSequence.nil, new time.Time.ptr(new $Uint64(0, 0), new $Int64(0, 0), ptrType$2.nil), new time.Time.ptr(new $Uint64(0, 0), new $Int64(0, 0), ptrType$2.nil), sliceType$7.nil, sliceType$8.nil);
 67181  			this.SignatureAlgorithm = new AlgorithmIdentifier.ptr(asn1.ObjectIdentifier.nil, new asn1.RawValue.ptr(0, 0, false, sliceType$5.nil, sliceType$5.nil));
 67182  			this.SignatureValue = new asn1.BitString.ptr(sliceType$5.nil, 0);
 67183  			return;
 67184  		}
 67185  		this.TBSCertList = TBSCertList_;
 67186  		this.SignatureAlgorithm = SignatureAlgorithm_;
 67187  		this.SignatureValue = SignatureValue_;
 67188  	});
 67189  	TBSCertificateList = $pkg.TBSCertificateList = $newType(0, $kindStruct, "pkix.TBSCertificateList", true, "crypto/x509/pkix", true, function(Raw_, Version_, Signature_, Issuer_, ThisUpdate_, NextUpdate_, RevokedCertificates_, Extensions_) {
 67190  		this.$val = this;
 67191  		if (arguments.length === 0) {
 67192  			this.Raw = asn1.RawContent.nil;
 67193  			this.Version = 0;
 67194  			this.Signature = new AlgorithmIdentifier.ptr(asn1.ObjectIdentifier.nil, new asn1.RawValue.ptr(0, 0, false, sliceType$5.nil, sliceType$5.nil));
 67195  			this.Issuer = RDNSequence.nil;
 67196  			this.ThisUpdate = new time.Time.ptr(new $Uint64(0, 0), new $Int64(0, 0), ptrType$2.nil);
 67197  			this.NextUpdate = new time.Time.ptr(new $Uint64(0, 0), new $Int64(0, 0), ptrType$2.nil);
 67198  			this.RevokedCertificates = sliceType$7.nil;
 67199  			this.Extensions = sliceType$8.nil;
 67200  			return;
 67201  		}
 67202  		this.Raw = Raw_;
 67203  		this.Version = Version_;
 67204  		this.Signature = Signature_;
 67205  		this.Issuer = Issuer_;
 67206  		this.ThisUpdate = ThisUpdate_;
 67207  		this.NextUpdate = NextUpdate_;
 67208  		this.RevokedCertificates = RevokedCertificates_;
 67209  		this.Extensions = Extensions_;
 67210  	});
 67211  	RevokedCertificate = $pkg.RevokedCertificate = $newType(0, $kindStruct, "pkix.RevokedCertificate", true, "crypto/x509/pkix", true, function(SerialNumber_, RevocationTime_, Extensions_) {
 67212  		this.$val = this;
 67213  		if (arguments.length === 0) {
 67214  			this.SerialNumber = ptrType$4.nil;
 67215  			this.RevocationTime = new time.Time.ptr(new $Uint64(0, 0), new $Int64(0, 0), ptrType$2.nil);
 67216  			this.Extensions = sliceType$8.nil;
 67217  			return;
 67218  		}
 67219  		this.SerialNumber = SerialNumber_;
 67220  		this.RevocationTime = RevocationTime_;
 67221  		this.Extensions = Extensions_;
 67222  	});
 67223  	sliceType = $sliceType($Int);
 67224  	sliceType$1 = $sliceType($emptyInterface);
 67225  	sliceType$2 = $sliceType($Int32);
 67226  	sliceType$3 = $sliceType(AttributeTypeAndValue);
 67227  	sliceType$4 = $sliceType($String);
 67228  	sliceType$5 = $sliceType($Uint8);
 67229  	ptrType = $ptrType(RDNSequence);
 67230  	ptrType$1 = $ptrType(Name);
 67231  	ptrType$2 = $ptrType(time.Location);
 67232  	sliceType$7 = $sliceType(RevokedCertificate);
 67233  	sliceType$8 = $sliceType(Extension);
 67234  	ptrType$3 = $ptrType(CertificateList);
 67235  	ptrType$4 = $ptrType(big.Int);
 67236  	RDNSequence.prototype.String = function() {
 67237  		var _1, _entry, _i, _i$1, _r, _r$1, _ref, _ref$1, _rune, _tuple, _tuple$1, c, derBytes, err, escape, escaped, i, j, k, oidString, ok, r, rdn, s, tv, typeName, valueString, x, $s, $r;
 67238  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _entry = $f._entry; _i = $f._i; _i$1 = $f._i$1; _r = $f._r; _r$1 = $f._r$1; _ref = $f._ref; _ref$1 = $f._ref$1; _rune = $f._rune; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; c = $f.c; derBytes = $f.derBytes; err = $f.err; escape = $f.escape; escaped = $f.escaped; i = $f.i; j = $f.j; k = $f.k; oidString = $f.oidString; ok = $f.ok; r = $f.r; rdn = $f.rdn; s = $f.s; tv = $f.tv; typeName = $f.typeName; valueString = $f.valueString; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 67239  		r = this;
 67240  		s = "";
 67241  		i = 0;
 67242  		/* while (true) { */ case 1:
 67243  			/* if (!(i < r.$length)) { break; } */ if(!(i < r.$length)) { $s = 2; continue; }
 67244  			rdn = (x = (r.$length - 1 >> 0) - i >> 0, ((x < 0 || x >= r.$length) ? ($throwRuntimeError("index out of range"), undefined) : r.$array[r.$offset + x]));
 67245  			if (i > 0) {
 67246  				s = s + (",");
 67247  			}
 67248  			_ref = rdn;
 67249  			_i = 0;
 67250  			/* while (true) { */ case 3:
 67251  				/* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 4; continue; }
 67252  				j = _i;
 67253  				tv = $clone(((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]), AttributeTypeAndValue);
 67254  				if (j > 0) {
 67255  					s = s + ("+");
 67256  				}
 67257  				oidString = tv.Type.String();
 67258  				_tuple = (_entry = attributeTypeNames[$String.keyFor(oidString)], _entry !== undefined ? [_entry.v, true] : ["", false]);
 67259  				typeName = _tuple[0];
 67260  				ok = _tuple[1];
 67261  				/* */ if (!ok) { $s = 5; continue; }
 67262  				/* */ $s = 6; continue;
 67263  				/* if (!ok) { */ case 5:
 67264  					_r = asn1.Marshal(tv.Value); /* */ $s = 7; case 7: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 67265  					_tuple$1 = _r;
 67266  					derBytes = _tuple$1[0];
 67267  					err = _tuple$1[1];
 67268  					if ($interfaceIsEqual(err, $ifaceNil)) {
 67269  						s = s + (oidString + "=#" + hex.EncodeToString(derBytes));
 67270  						_i++;
 67271  						/* continue; */ $s = 3; continue;
 67272  					}
 67273  					typeName = oidString;
 67274  				/* } */ case 6:
 67275  				_r$1 = fmt.Sprint(new sliceType$1([tv.Value])); /* */ $s = 8; case 8: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 67276  				valueString = _r$1;
 67277  				escaped = $makeSlice(sliceType$2, 0, valueString.length);
 67278  				_ref$1 = valueString;
 67279  				_i$1 = 0;
 67280  				while (true) {
 67281  					if (!(_i$1 < _ref$1.length)) { break; }
 67282  					_rune = $decodeRune(_ref$1, _i$1);
 67283  					k = _i$1;
 67284  					c = _rune[0];
 67285  					escape = false;
 67286  					_1 = c;
 67287  					if ((_1 === (44)) || (_1 === (43)) || (_1 === (34)) || (_1 === (92)) || (_1 === (60)) || (_1 === (62)) || (_1 === (59))) {
 67288  						escape = true;
 67289  					} else if (_1 === (32)) {
 67290  						escape = (k === 0) || (k === (valueString.length - 1 >> 0));
 67291  					} else if (_1 === (35)) {
 67292  						escape = k === 0;
 67293  					}
 67294  					if (escape) {
 67295  						escaped = $append(escaped, 92, c);
 67296  					} else {
 67297  						escaped = $append(escaped, c);
 67298  					}
 67299  					_i$1 += _rune[1];
 67300  				}
 67301  				s = s + (typeName + "=" + ($runesToString(escaped)));
 67302  				_i++;
 67303  			/* } */ $s = 3; continue; case 4:
 67304  			i = i + (1) >> 0;
 67305  		/* } */ $s = 1; continue; case 2:
 67306  		$s = -1; return s;
 67307  		/* */ } return; } if ($f === undefined) { $f = { $blk: RDNSequence.prototype.String }; } $f._1 = _1; $f._entry = _entry; $f._i = _i; $f._i$1 = _i$1; $f._r = _r; $f._r$1 = _r$1; $f._ref = _ref; $f._ref$1 = _ref$1; $f._rune = _rune; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.c = c; $f.derBytes = derBytes; $f.err = err; $f.escape = escape; $f.escaped = escaped; $f.i = i; $f.j = j; $f.k = k; $f.oidString = oidString; $f.ok = ok; $f.r = r; $f.rdn = rdn; $f.s = s; $f.tv = tv; $f.typeName = typeName; $f.valueString = valueString; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
 67308  	};
 67309  	$ptrType(RDNSequence).prototype.String = function() { return this.$get().String(); };
 67310  	Name.ptr.prototype.FillFromRDNSequence = function(rdns) {
 67311  		var _1, _i, _i$1, _ref, _ref$1, _tuple, atv, n, ok, rdn, rdns, t, value;
 67312  		n = this;
 67313  		_ref = rdns.$get();
 67314  		_i = 0;
 67315  		while (true) {
 67316  			if (!(_i < _ref.$length)) { break; }
 67317  			rdn = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
 67318  			if (rdn.$length === 0) {
 67319  				_i++;
 67320  				continue;
 67321  			}
 67322  			_ref$1 = rdn;
 67323  			_i$1 = 0;
 67324  			while (true) {
 67325  				if (!(_i$1 < _ref$1.$length)) { break; }
 67326  				atv = $clone(((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]), AttributeTypeAndValue);
 67327  				n.Names = $append(n.Names, atv);
 67328  				_tuple = $assertType(atv.Value, $String, true);
 67329  				value = _tuple[0];
 67330  				ok = _tuple[1];
 67331  				if (!ok) {
 67332  					_i$1++;
 67333  					continue;
 67334  				}
 67335  				t = atv.Type;
 67336  				if ((t.$length === 4) && ((0 >= t.$length ? ($throwRuntimeError("index out of range"), undefined) : t.$array[t.$offset + 0]) === 2) && ((1 >= t.$length ? ($throwRuntimeError("index out of range"), undefined) : t.$array[t.$offset + 1]) === 5) && ((2 >= t.$length ? ($throwRuntimeError("index out of range"), undefined) : t.$array[t.$offset + 2]) === 4)) {
 67337  					_1 = (3 >= t.$length ? ($throwRuntimeError("index out of range"), undefined) : t.$array[t.$offset + 3]);
 67338  					if (_1 === (3)) {
 67339  						n.CommonName = value;
 67340  					} else if (_1 === (5)) {
 67341  						n.SerialNumber = value;
 67342  					} else if (_1 === (6)) {
 67343  						n.Country = $append(n.Country, value);
 67344  					} else if (_1 === (7)) {
 67345  						n.Locality = $append(n.Locality, value);
 67346  					} else if (_1 === (8)) {
 67347  						n.Province = $append(n.Province, value);
 67348  					} else if (_1 === (9)) {
 67349  						n.StreetAddress = $append(n.StreetAddress, value);
 67350  					} else if (_1 === (10)) {
 67351  						n.Organization = $append(n.Organization, value);
 67352  					} else if (_1 === (11)) {
 67353  						n.OrganizationalUnit = $append(n.OrganizationalUnit, value);
 67354  					} else if (_1 === (17)) {
 67355  						n.PostalCode = $append(n.PostalCode, value);
 67356  					}
 67357  				}
 67358  				_i$1++;
 67359  			}
 67360  			_i++;
 67361  		}
 67362  	};
 67363  	Name.prototype.FillFromRDNSequence = function(rdns) { return this.$val.FillFromRDNSequence(rdns); };
 67364  	Name.ptr.prototype.appendRDNs = function(in$1, values, oid) {
 67365  		var _i, _ref, i, in$1, n, oid, s, value, values;
 67366  		n = this;
 67367  		if ((values.$length === 0) || oidInAttributeTypeAndValue(oid, n.ExtraNames)) {
 67368  			return in$1;
 67369  		}
 67370  		s = $makeSlice(sliceType$3, values.$length);
 67371  		_ref = values;
 67372  		_i = 0;
 67373  		while (true) {
 67374  			if (!(_i < _ref.$length)) { break; }
 67375  			i = _i;
 67376  			value = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
 67377  			((i < 0 || i >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + i]).Type = oid;
 67378  			((i < 0 || i >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + i]).Value = new $String(value);
 67379  			_i++;
 67380  		}
 67381  		return $append(in$1, $subslice(new RelativeDistinguishedNameSET(s.$array), s.$offset, s.$offset + s.$length));
 67382  	};
 67383  	Name.prototype.appendRDNs = function(in$1, values, oid) { return this.$val.appendRDNs(in$1, values, oid); };
 67384  	Name.ptr.prototype.ToRDNSequence = function() {
 67385  		var _i, _ref, atv, n, ret, x;
 67386  		ret = RDNSequence.nil;
 67387  		n = this;
 67388  		ret = $clone(n, Name).appendRDNs(ret, n.Country, $subslice(new asn1.ObjectIdentifier(oidCountry.$array), oidCountry.$offset, oidCountry.$offset + oidCountry.$length));
 67389  		ret = $clone(n, Name).appendRDNs(ret, n.Province, $subslice(new asn1.ObjectIdentifier(oidProvince.$array), oidProvince.$offset, oidProvince.$offset + oidProvince.$length));
 67390  		ret = $clone(n, Name).appendRDNs(ret, n.Locality, $subslice(new asn1.ObjectIdentifier(oidLocality.$array), oidLocality.$offset, oidLocality.$offset + oidLocality.$length));
 67391  		ret = $clone(n, Name).appendRDNs(ret, n.StreetAddress, $subslice(new asn1.ObjectIdentifier(oidStreetAddress.$array), oidStreetAddress.$offset, oidStreetAddress.$offset + oidStreetAddress.$length));
 67392  		ret = $clone(n, Name).appendRDNs(ret, n.PostalCode, $subslice(new asn1.ObjectIdentifier(oidPostalCode.$array), oidPostalCode.$offset, oidPostalCode.$offset + oidPostalCode.$length));
 67393  		ret = $clone(n, Name).appendRDNs(ret, n.Organization, $subslice(new asn1.ObjectIdentifier(oidOrganization.$array), oidOrganization.$offset, oidOrganization.$offset + oidOrganization.$length));
 67394  		ret = $clone(n, Name).appendRDNs(ret, n.OrganizationalUnit, $subslice(new asn1.ObjectIdentifier(oidOrganizationalUnit.$array), oidOrganizationalUnit.$offset, oidOrganizationalUnit.$offset + oidOrganizationalUnit.$length));
 67395  		if (n.CommonName.length > 0) {
 67396  			ret = $clone(n, Name).appendRDNs(ret, new sliceType$4([n.CommonName]), $subslice(new asn1.ObjectIdentifier(oidCommonName.$array), oidCommonName.$offset, oidCommonName.$offset + oidCommonName.$length));
 67397  		}
 67398  		if (n.SerialNumber.length > 0) {
 67399  			ret = $clone(n, Name).appendRDNs(ret, new sliceType$4([n.SerialNumber]), $subslice(new asn1.ObjectIdentifier(oidSerialNumber.$array), oidSerialNumber.$offset, oidSerialNumber.$offset + oidSerialNumber.$length));
 67400  		}
 67401  		_ref = n.ExtraNames;
 67402  		_i = 0;
 67403  		while (true) {
 67404  			if (!(_i < _ref.$length)) { break; }
 67405  			atv = $clone(((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]), AttributeTypeAndValue);
 67406  			ret = $append(ret, (x = new sliceType$3([$clone(atv, AttributeTypeAndValue)]), $subslice(new RelativeDistinguishedNameSET(x.$array), x.$offset, x.$offset + x.$length)));
 67407  			_i++;
 67408  		}
 67409  		ret = ret;
 67410  		return ret;
 67411  	};
 67412  	Name.prototype.ToRDNSequence = function() { return this.$val.ToRDNSequence(); };
 67413  	Name.ptr.prototype.String = function() {
 67414  		var _r, n, $s, $r;
 67415  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; n = $f.n; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 67416  		n = this;
 67417  		_r = $clone(n, Name).ToRDNSequence().String(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 67418  		$s = -1; return _r;
 67419  		/* */ } return; } if ($f === undefined) { $f = { $blk: Name.ptr.prototype.String }; } $f._r = _r; $f.n = n; $f.$s = $s; $f.$r = $r; return $f;
 67420  	};
 67421  	Name.prototype.String = function() { return this.$val.String(); };
 67422  	oidInAttributeTypeAndValue = function(oid, atv) {
 67423  		var _i, _ref, a, atv, oid;
 67424  		_ref = atv;
 67425  		_i = 0;
 67426  		while (true) {
 67427  			if (!(_i < _ref.$length)) { break; }
 67428  			a = $clone(((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]), AttributeTypeAndValue);
 67429  			if (a.Type.Equal(oid)) {
 67430  				return true;
 67431  			}
 67432  			_i++;
 67433  		}
 67434  		return false;
 67435  	};
 67436  	CertificateList.ptr.prototype.HasExpired = function(now) {
 67437  		var certList, now;
 67438  		certList = this;
 67439  		return !$clone(now, time.Time).Before($clone(certList.TBSCertList.NextUpdate, time.Time));
 67440  	};
 67441  	CertificateList.prototype.HasExpired = function(now) { return this.$val.HasExpired(now); };
 67442  	RDNSequence.methods = [{prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}];
 67443  	Name.methods = [{prop: "appendRDNs", name: "appendRDNs", pkg: "crypto/x509/pkix", typ: $funcType([RDNSequence, sliceType$4, asn1.ObjectIdentifier], [RDNSequence], false)}, {prop: "ToRDNSequence", name: "ToRDNSequence", pkg: "", typ: $funcType([], [RDNSequence], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}];
 67444  	ptrType$1.methods = [{prop: "FillFromRDNSequence", name: "FillFromRDNSequence", pkg: "", typ: $funcType([ptrType], [], false)}];
 67445  	ptrType$3.methods = [{prop: "HasExpired", name: "HasExpired", pkg: "", typ: $funcType([time.Time], [$Bool], false)}];
 67446  	AlgorithmIdentifier.init("", [{prop: "Algorithm", name: "Algorithm", anonymous: false, exported: true, typ: asn1.ObjectIdentifier, tag: ""}, {prop: "Parameters", name: "Parameters", anonymous: false, exported: true, typ: asn1.RawValue, tag: "asn1:\"optional\""}]);
 67447  	RDNSequence.init(RelativeDistinguishedNameSET);
 67448  	RelativeDistinguishedNameSET.init(AttributeTypeAndValue);
 67449  	AttributeTypeAndValue.init("", [{prop: "Type", name: "Type", anonymous: false, exported: true, typ: asn1.ObjectIdentifier, tag: ""}, {prop: "Value", name: "Value", anonymous: false, exported: true, typ: $emptyInterface, tag: ""}]);
 67450  	Extension.init("", [{prop: "Id", name: "Id", anonymous: false, exported: true, typ: asn1.ObjectIdentifier, tag: ""}, {prop: "Critical", name: "Critical", anonymous: false, exported: true, typ: $Bool, tag: "asn1:\"optional\""}, {prop: "Value", name: "Value", anonymous: false, exported: true, typ: sliceType$5, tag: ""}]);
 67451  	Name.init("", [{prop: "Country", name: "Country", anonymous: false, exported: true, typ: sliceType$4, tag: ""}, {prop: "Organization", name: "Organization", anonymous: false, exported: true, typ: sliceType$4, tag: ""}, {prop: "OrganizationalUnit", name: "OrganizationalUnit", anonymous: false, exported: true, typ: sliceType$4, tag: ""}, {prop: "Locality", name: "Locality", anonymous: false, exported: true, typ: sliceType$4, tag: ""}, {prop: "Province", name: "Province", anonymous: false, exported: true, typ: sliceType$4, tag: ""}, {prop: "StreetAddress", name: "StreetAddress", anonymous: false, exported: true, typ: sliceType$4, tag: ""}, {prop: "PostalCode", name: "PostalCode", anonymous: false, exported: true, typ: sliceType$4, tag: ""}, {prop: "SerialNumber", name: "SerialNumber", anonymous: false, exported: true, typ: $String, tag: ""}, {prop: "CommonName", name: "CommonName", anonymous: false, exported: true, typ: $String, tag: ""}, {prop: "Names", name: "Names", anonymous: false, exported: true, typ: sliceType$3, tag: ""}, {prop: "ExtraNames", name: "ExtraNames", anonymous: false, exported: true, typ: sliceType$3, tag: ""}]);
 67452  	CertificateList.init("", [{prop: "TBSCertList", name: "TBSCertList", anonymous: false, exported: true, typ: TBSCertificateList, tag: ""}, {prop: "SignatureAlgorithm", name: "SignatureAlgorithm", anonymous: false, exported: true, typ: AlgorithmIdentifier, tag: ""}, {prop: "SignatureValue", name: "SignatureValue", anonymous: false, exported: true, typ: asn1.BitString, tag: ""}]);
 67453  	TBSCertificateList.init("", [{prop: "Raw", name: "Raw", anonymous: false, exported: true, typ: asn1.RawContent, tag: ""}, {prop: "Version", name: "Version", anonymous: false, exported: true, typ: $Int, tag: "asn1:\"optional,default:0\""}, {prop: "Signature", name: "Signature", anonymous: false, exported: true, typ: AlgorithmIdentifier, tag: ""}, {prop: "Issuer", name: "Issuer", anonymous: false, exported: true, typ: RDNSequence, tag: ""}, {prop: "ThisUpdate", name: "ThisUpdate", anonymous: false, exported: true, typ: time.Time, tag: ""}, {prop: "NextUpdate", name: "NextUpdate", anonymous: false, exported: true, typ: time.Time, tag: "asn1:\"optional\""}, {prop: "RevokedCertificates", name: "RevokedCertificates", anonymous: false, exported: true, typ: sliceType$7, tag: "asn1:\"optional\""}, {prop: "Extensions", name: "Extensions", anonymous: false, exported: true, typ: sliceType$8, tag: "asn1:\"tag:0,optional,explicit\""}]);
 67454  	RevokedCertificate.init("", [{prop: "SerialNumber", name: "SerialNumber", anonymous: false, exported: true, typ: ptrType$4, tag: ""}, {prop: "RevocationTime", name: "RevocationTime", anonymous: false, exported: true, typ: time.Time, tag: ""}, {prop: "Extensions", name: "Extensions", anonymous: false, exported: true, typ: sliceType$8, tag: "asn1:\"optional\""}]);
 67455  	$init = function() {
 67456  		$pkg.$init = function() {};
 67457  		/* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 67458  		$r = asn1.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 67459  		$r = hex.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 67460  		$r = fmt.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 67461  		$r = big.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 67462  		$r = time.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 67463  		attributeTypeNames = $makeMap($String.keyFor, [{ k: "2.5.4.6", v: "C" }, { k: "2.5.4.10", v: "O" }, { k: "2.5.4.11", v: "OU" }, { k: "2.5.4.3", v: "CN" }, { k: "2.5.4.5", v: "SERIALNUMBER" }, { k: "2.5.4.7", v: "L" }, { k: "2.5.4.8", v: "ST" }, { k: "2.5.4.9", v: "STREET" }, { k: "2.5.4.17", v: "POSTALCODE" }]);
 67464  		oidCountry = new sliceType([2, 5, 4, 6]);
 67465  		oidOrganization = new sliceType([2, 5, 4, 10]);
 67466  		oidOrganizationalUnit = new sliceType([2, 5, 4, 11]);
 67467  		oidCommonName = new sliceType([2, 5, 4, 3]);
 67468  		oidSerialNumber = new sliceType([2, 5, 4, 5]);
 67469  		oidLocality = new sliceType([2, 5, 4, 7]);
 67470  		oidProvince = new sliceType([2, 5, 4, 8]);
 67471  		oidStreetAddress = new sliceType([2, 5, 4, 9]);
 67472  		oidPostalCode = new sliceType([2, 5, 4, 17]);
 67473  		/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
 67474  	};
 67475  	$pkg.$init = $init;
 67476  	return $pkg;
 67477  })();
 67478  $packages["encoding/pem"] = (function() {
 67479  	var $pkg = {}, $init, bytes, base64, errors, io, sort, strings, Block, sliceType, ptrType, mapType, pemStart, pemEnd, pemEndOfLine, getLine, removeWhitespace, Decode, decodeError;
 67480  	bytes = $packages["bytes"];
 67481  	base64 = $packages["encoding/base64"];
 67482  	errors = $packages["errors"];
 67483  	io = $packages["io"];
 67484  	sort = $packages["sort"];
 67485  	strings = $packages["strings"];
 67486  	Block = $pkg.Block = $newType(0, $kindStruct, "pem.Block", true, "encoding/pem", true, function(Type_, Headers_, Bytes_) {
 67487  		this.$val = this;
 67488  		if (arguments.length === 0) {
 67489  			this.Type = "";
 67490  			this.Headers = false;
 67491  			this.Bytes = sliceType.nil;
 67492  			return;
 67493  		}
 67494  		this.Type = Type_;
 67495  		this.Headers = Headers_;
 67496  		this.Bytes = Bytes_;
 67497  	});
 67498  	sliceType = $sliceType($Uint8);
 67499  	ptrType = $ptrType(Block);
 67500  	mapType = $mapType($String, $String);
 67501  	getLine = function(data) {
 67502  		var _r, _tmp, _tmp$1, data, i, j, line, rest, x, $s, $r;
 67503  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; data = $f.data; i = $f.i; j = $f.j; line = $f.line; rest = $f.rest; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 67504  		line = sliceType.nil;
 67505  		rest = sliceType.nil;
 67506  		i = bytes.IndexByte(data, 10);
 67507  		j = 0;
 67508  		if (i < 0) {
 67509  			i = data.$length;
 67510  			j = i;
 67511  		} else {
 67512  			j = i + 1 >> 0;
 67513  			if (i > 0 && ((x = i - 1 >> 0, ((x < 0 || x >= data.$length) ? ($throwRuntimeError("index out of range"), undefined) : data.$array[data.$offset + x])) === 13)) {
 67514  				i = i - (1) >> 0;
 67515  			}
 67516  		}
 67517  		_r = bytes.TrimRight($subslice(data, 0, i), " \t"); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 67518  		_tmp = _r;
 67519  		_tmp$1 = $subslice(data, j);
 67520  		line = _tmp;
 67521  		rest = _tmp$1;
 67522  		$s = -1; return [line, rest];
 67523  		/* */ } return; } if ($f === undefined) { $f = { $blk: getLine }; } $f._r = _r; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f.data = data; $f.i = i; $f.j = j; $f.line = line; $f.rest = rest; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
 67524  	};
 67525  	removeWhitespace = function(data) {
 67526  		var _i, _ref, b, data, n, result;
 67527  		result = $makeSlice(sliceType, data.$length);
 67528  		n = 0;
 67529  		_ref = data;
 67530  		_i = 0;
 67531  		while (true) {
 67532  			if (!(_i < _ref.$length)) { break; }
 67533  			b = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
 67534  			if ((b === 32) || (b === 9) || (b === 13) || (b === 10)) {
 67535  				_i++;
 67536  				continue;
 67537  			}
 67538  			((n < 0 || n >= result.$length) ? ($throwRuntimeError("index out of range"), undefined) : result.$array[result.$offset + n] = b);
 67539  			n = n + (1) >> 0;
 67540  			_i++;
 67541  		}
 67542  		return $subslice(result, 0, n);
 67543  	};
 67544  	Decode = function(data) {
 67545  		var _key, _r, _r$1, _r$10, _r$11, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tuple, _tuple$1, _tuple$10, _tuple$2, _tuple$3, _tuple$4, _tuple$5, _tuple$6, _tuple$7, _tuple$8, _tuple$9, base64Data, data, endIndex, endTrailer, endTrailerIndex, endTrailerLen, err, i, i$1, key, line, n, next, p, rest, restOfEndLine, s, typeLine, val, $s, $r;
 67546  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _key = $f._key; _r = $f._r; _r$1 = $f._r$1; _r$10 = $f._r$10; _r$11 = $f._r$11; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _r$8 = $f._r$8; _r$9 = $f._r$9; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tmp$4 = $f._tmp$4; _tmp$5 = $f._tmp$5; _tmp$6 = $f._tmp$6; _tmp$7 = $f._tmp$7; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$10 = $f._tuple$10; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; _tuple$4 = $f._tuple$4; _tuple$5 = $f._tuple$5; _tuple$6 = $f._tuple$6; _tuple$7 = $f._tuple$7; _tuple$8 = $f._tuple$8; _tuple$9 = $f._tuple$9; base64Data = $f.base64Data; data = $f.data; endIndex = $f.endIndex; endTrailer = $f.endTrailer; endTrailerIndex = $f.endTrailerIndex; endTrailerLen = $f.endTrailerLen; err = $f.err; i = $f.i; i$1 = $f.i$1; key = $f.key; line = $f.line; n = $f.n; next = $f.next; p = $f.p; rest = $f.rest; restOfEndLine = $f.restOfEndLine; s = $f.s; typeLine = $f.typeLine; val = $f.val; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 67547  		p = ptrType.nil;
 67548  		rest = sliceType.nil;
 67549  		rest = data;
 67550  		if (bytes.HasPrefix(data, $subslice(pemStart, 1))) {
 67551  			rest = $subslice(rest, (pemStart.$length - 1 >> 0), data.$length);
 67552  		} else {
 67553  			i = bytes.Index(data, pemStart);
 67554  			if (i >= 0) {
 67555  				rest = $subslice(rest, (i + pemStart.$length >> 0), data.$length);
 67556  			} else {
 67557  				_tmp = ptrType.nil;
 67558  				_tmp$1 = data;
 67559  				p = _tmp;
 67560  				rest = _tmp$1;
 67561  				$s = -1; return [p, rest];
 67562  			}
 67563  		}
 67564  		_r = getLine(rest); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 67565  		_tuple = _r;
 67566  		typeLine = _tuple[0];
 67567  		rest = _tuple[1];
 67568  		/* */ if (!bytes.HasSuffix(typeLine, pemEndOfLine)) { $s = 2; continue; }
 67569  		/* */ $s = 3; continue;
 67570  		/* if (!bytes.HasSuffix(typeLine, pemEndOfLine)) { */ case 2:
 67571  			_r$1 = decodeError(data, rest); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 67572  			_tuple$1 = _r$1;
 67573  			p = _tuple$1[0];
 67574  			rest = _tuple$1[1];
 67575  			$s = -1; return [p, rest];
 67576  		/* } */ case 3:
 67577  		typeLine = $subslice(typeLine, 0, (typeLine.$length - pemEndOfLine.$length >> 0));
 67578  		p = new Block.ptr(($bytesToString(typeLine)), {}, sliceType.nil);
 67579  		/* while (true) { */ case 5:
 67580  			if (rest.$length === 0) {
 67581  				_tmp$2 = ptrType.nil;
 67582  				_tmp$3 = data;
 67583  				p = _tmp$2;
 67584  				rest = _tmp$3;
 67585  				$s = -1; return [p, rest];
 67586  			}
 67587  			_r$2 = getLine(rest); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 67588  			_tuple$2 = _r$2;
 67589  			line = _tuple$2[0];
 67590  			next = _tuple$2[1];
 67591  			i$1 = bytes.IndexByte(line, 58);
 67592  			if (i$1 === -1) {
 67593  				/* break; */ $s = 6; continue;
 67594  			}
 67595  			_tmp$4 = $subslice(line, 0, i$1);
 67596  			_tmp$5 = $subslice(line, (i$1 + 1 >> 0));
 67597  			key = _tmp$4;
 67598  			val = _tmp$5;
 67599  			_r$3 = bytes.TrimSpace(key); /* */ $s = 8; case 8: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 67600  			key = _r$3;
 67601  			_r$4 = bytes.TrimSpace(val); /* */ $s = 9; case 9: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 67602  			val = _r$4;
 67603  			_key = ($bytesToString(key)); (p.Headers || $throwRuntimeError("assignment to entry in nil map"))[$String.keyFor(_key)] = { k: _key, v: ($bytesToString(val)) };
 67604  			rest = next;
 67605  		/* } */ $s = 5; continue; case 6:
 67606  		_tmp$6 = 0;
 67607  		_tmp$7 = 0;
 67608  		endIndex = _tmp$6;
 67609  		endTrailerIndex = _tmp$7;
 67610  		if (($keys(p.Headers).length === 0) && bytes.HasPrefix(rest, $subslice(pemEnd, 1))) {
 67611  			endIndex = 0;
 67612  			endTrailerIndex = pemEnd.$length - 1 >> 0;
 67613  		} else {
 67614  			endIndex = bytes.Index(rest, pemEnd);
 67615  			endTrailerIndex = endIndex + pemEnd.$length >> 0;
 67616  		}
 67617  		/* */ if (endIndex < 0) { $s = 10; continue; }
 67618  		/* */ $s = 11; continue;
 67619  		/* if (endIndex < 0) { */ case 10:
 67620  			_r$5 = decodeError(data, rest); /* */ $s = 12; case 12: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
 67621  			_tuple$3 = _r$5;
 67622  			p = _tuple$3[0];
 67623  			rest = _tuple$3[1];
 67624  			$s = -1; return [p, rest];
 67625  		/* } */ case 11:
 67626  		endTrailer = $subslice(rest, endTrailerIndex);
 67627  		endTrailerLen = typeLine.$length + pemEndOfLine.$length >> 0;
 67628  		/* */ if (endTrailer.$length < endTrailerLen) { $s = 13; continue; }
 67629  		/* */ $s = 14; continue;
 67630  		/* if (endTrailer.$length < endTrailerLen) { */ case 13:
 67631  			_r$6 = decodeError(data, rest); /* */ $s = 15; case 15: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
 67632  			_tuple$4 = _r$6;
 67633  			p = _tuple$4[0];
 67634  			rest = _tuple$4[1];
 67635  			$s = -1; return [p, rest];
 67636  		/* } */ case 14:
 67637  		restOfEndLine = $subslice(endTrailer, endTrailerLen);
 67638  		endTrailer = $subslice(endTrailer, 0, endTrailerLen);
 67639  		/* */ if (!bytes.HasPrefix(endTrailer, typeLine) || !bytes.HasSuffix(endTrailer, pemEndOfLine)) { $s = 16; continue; }
 67640  		/* */ $s = 17; continue;
 67641  		/* if (!bytes.HasPrefix(endTrailer, typeLine) || !bytes.HasSuffix(endTrailer, pemEndOfLine)) { */ case 16:
 67642  			_r$7 = decodeError(data, rest); /* */ $s = 18; case 18: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
 67643  			_tuple$5 = _r$7;
 67644  			p = _tuple$5[0];
 67645  			rest = _tuple$5[1];
 67646  			$s = -1; return [p, rest];
 67647  		/* } */ case 17:
 67648  		_r$8 = getLine(restOfEndLine); /* */ $s = 19; case 19: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
 67649  		_tuple$6 = _r$8;
 67650  		s = _tuple$6[0];
 67651  		/* */ if (!((s.$length === 0))) { $s = 20; continue; }
 67652  		/* */ $s = 21; continue;
 67653  		/* if (!((s.$length === 0))) { */ case 20:
 67654  			_r$9 = decodeError(data, rest); /* */ $s = 22; case 22: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 67655  			_tuple$7 = _r$9;
 67656  			p = _tuple$7[0];
 67657  			rest = _tuple$7[1];
 67658  			$s = -1; return [p, rest];
 67659  		/* } */ case 21:
 67660  		base64Data = removeWhitespace($subslice(rest, 0, endIndex));
 67661  		p.Bytes = $makeSlice(sliceType, base64.StdEncoding.DecodedLen(base64Data.$length));
 67662  		_tuple$8 = base64.StdEncoding.Decode(p.Bytes, base64Data);
 67663  		n = _tuple$8[0];
 67664  		err = _tuple$8[1];
 67665  		/* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 23; continue; }
 67666  		/* */ $s = 24; continue;
 67667  		/* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 23:
 67668  			_r$10 = decodeError(data, rest); /* */ $s = 25; case 25: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
 67669  			_tuple$9 = _r$10;
 67670  			p = _tuple$9[0];
 67671  			rest = _tuple$9[1];
 67672  			$s = -1; return [p, rest];
 67673  		/* } */ case 24:
 67674  		p.Bytes = $subslice(p.Bytes, 0, n);
 67675  		_r$11 = getLine($subslice(rest, ((endIndex + pemEnd.$length >> 0) - 1 >> 0))); /* */ $s = 26; case 26: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; }
 67676  		_tuple$10 = _r$11;
 67677  		rest = _tuple$10[1];
 67678  		$s = -1; return [p, rest];
 67679  		/* */ } return; } if ($f === undefined) { $f = { $blk: Decode }; } $f._key = _key; $f._r = _r; $f._r$1 = _r$1; $f._r$10 = _r$10; $f._r$11 = _r$11; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._r$8 = _r$8; $f._r$9 = _r$9; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tmp$4 = _tmp$4; $f._tmp$5 = _tmp$5; $f._tmp$6 = _tmp$6; $f._tmp$7 = _tmp$7; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$10 = _tuple$10; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f._tuple$4 = _tuple$4; $f._tuple$5 = _tuple$5; $f._tuple$6 = _tuple$6; $f._tuple$7 = _tuple$7; $f._tuple$8 = _tuple$8; $f._tuple$9 = _tuple$9; $f.base64Data = base64Data; $f.data = data; $f.endIndex = endIndex; $f.endTrailer = endTrailer; $f.endTrailerIndex = endTrailerIndex; $f.endTrailerLen = endTrailerLen; $f.err = err; $f.i = i; $f.i$1 = i$1; $f.key = key; $f.line = line; $f.n = n; $f.next = next; $f.p = p; $f.rest = rest; $f.restOfEndLine = restOfEndLine; $f.s = s; $f.typeLine = typeLine; $f.val = val; $f.$s = $s; $f.$r = $r; return $f;
 67680  	};
 67681  	$pkg.Decode = Decode;
 67682  	decodeError = function(data, rest) {
 67683  		var _r, _tuple, data, p, rest, $s, $r;
 67684  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; data = $f.data; p = $f.p; rest = $f.rest; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 67685  		_r = Decode(rest); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 67686  		_tuple = _r;
 67687  		p = _tuple[0];
 67688  		rest = _tuple[1];
 67689  		if (p === ptrType.nil) {
 67690  			rest = data;
 67691  		}
 67692  		$s = -1; return [p, rest];
 67693  		/* */ } return; } if ($f === undefined) { $f = { $blk: decodeError }; } $f._r = _r; $f._tuple = _tuple; $f.data = data; $f.p = p; $f.rest = rest; $f.$s = $s; $f.$r = $r; return $f;
 67694  	};
 67695  	Block.init("", [{prop: "Type", name: "Type", anonymous: false, exported: true, typ: $String, tag: ""}, {prop: "Headers", name: "Headers", anonymous: false, exported: true, typ: mapType, tag: ""}, {prop: "Bytes", name: "Bytes", anonymous: false, exported: true, typ: sliceType, tag: ""}]);
 67696  	$init = function() {
 67697  		$pkg.$init = function() {};
 67698  		/* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 67699  		$r = bytes.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 67700  		$r = base64.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 67701  		$r = errors.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 67702  		$r = io.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 67703  		$r = sort.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 67704  		$r = strings.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 67705  		pemStart = (new sliceType($stringToBytes("\n-----BEGIN ")));
 67706  		pemEnd = (new sliceType($stringToBytes("\n-----END ")));
 67707  		pemEndOfLine = (new sliceType($stringToBytes("-----")));
 67708  		/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
 67709  	};
 67710  	$pkg.$init = $init;
 67711  	return $pkg;
 67712  })();
 67713  $packages["net/url"] = (function() {
 67714  	var $pkg = {}, $init, bytes, errors, fmt, sort, strconv, strings, Error, timeout, temporary, EscapeError, InvalidHostError, URL, Userinfo, Values, sliceType, ptrType, ptrType$1, sliceType$1, arrayType, sliceType$2, ptrType$2, ishex, unhex, shouldEscape, QueryUnescape, unescape, QueryEscape, escape, User, UserPassword, getscheme, split, Parse, ParseRequestURI, parse, parseAuthority, parseHost, validEncodedPath, validOptionalPort, ParseQuery, parseQuery, resolvePath, stripPort, portOnly, validUserinfo;
 67715  	bytes = $packages["bytes"];
 67716  	errors = $packages["errors"];
 67717  	fmt = $packages["fmt"];
 67718  	sort = $packages["sort"];
 67719  	strconv = $packages["strconv"];
 67720  	strings = $packages["strings"];
 67721  	Error = $pkg.Error = $newType(0, $kindStruct, "url.Error", true, "net/url", true, function(Op_, URL_, Err_) {
 67722  		this.$val = this;
 67723  		if (arguments.length === 0) {
 67724  			this.Op = "";
 67725  			this.URL = "";
 67726  			this.Err = $ifaceNil;
 67727  			return;
 67728  		}
 67729  		this.Op = Op_;
 67730  		this.URL = URL_;
 67731  		this.Err = Err_;
 67732  	});
 67733  	timeout = $pkg.timeout = $newType(8, $kindInterface, "url.timeout", true, "net/url", false, null);
 67734  	temporary = $pkg.temporary = $newType(8, $kindInterface, "url.temporary", true, "net/url", false, null);
 67735  	EscapeError = $pkg.EscapeError = $newType(8, $kindString, "url.EscapeError", true, "net/url", true, null);
 67736  	InvalidHostError = $pkg.InvalidHostError = $newType(8, $kindString, "url.InvalidHostError", true, "net/url", true, null);
 67737  	URL = $pkg.URL = $newType(0, $kindStruct, "url.URL", true, "net/url", true, function(Scheme_, Opaque_, User_, Host_, Path_, RawPath_, ForceQuery_, RawQuery_, Fragment_) {
 67738  		this.$val = this;
 67739  		if (arguments.length === 0) {
 67740  			this.Scheme = "";
 67741  			this.Opaque = "";
 67742  			this.User = ptrType.nil;
 67743  			this.Host = "";
 67744  			this.Path = "";
 67745  			this.RawPath = "";
 67746  			this.ForceQuery = false;
 67747  			this.RawQuery = "";
 67748  			this.Fragment = "";
 67749  			return;
 67750  		}
 67751  		this.Scheme = Scheme_;
 67752  		this.Opaque = Opaque_;
 67753  		this.User = User_;
 67754  		this.Host = Host_;
 67755  		this.Path = Path_;
 67756  		this.RawPath = RawPath_;
 67757  		this.ForceQuery = ForceQuery_;
 67758  		this.RawQuery = RawQuery_;
 67759  		this.Fragment = Fragment_;
 67760  	});
 67761  	Userinfo = $pkg.Userinfo = $newType(0, $kindStruct, "url.Userinfo", true, "net/url", true, function(username_, password_, passwordSet_) {
 67762  		this.$val = this;
 67763  		if (arguments.length === 0) {
 67764  			this.username = "";
 67765  			this.password = "";
 67766  			this.passwordSet = false;
 67767  			return;
 67768  		}
 67769  		this.username = username_;
 67770  		this.password = password_;
 67771  		this.passwordSet = passwordSet_;
 67772  	});
 67773  	Values = $pkg.Values = $newType(4, $kindMap, "url.Values", true, "net/url", true, null);
 67774  	sliceType = $sliceType($Uint8);
 67775  	ptrType = $ptrType(Userinfo);
 67776  	ptrType$1 = $ptrType(URL);
 67777  	sliceType$1 = $sliceType($emptyInterface);
 67778  	arrayType = $arrayType($Uint8, 64);
 67779  	sliceType$2 = $sliceType($String);
 67780  	ptrType$2 = $ptrType(Error);
 67781  	Error.ptr.prototype.Error = function() {
 67782  		var _r, e, $s, $r;
 67783  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; e = $f.e; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 67784  		e = this;
 67785  		_r = e.Err.Error(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 67786  		$s = -1; return e.Op + " " + e.URL + ": " + _r;
 67787  		/* */ } return; } if ($f === undefined) { $f = { $blk: Error.ptr.prototype.Error }; } $f._r = _r; $f.e = e; $f.$s = $s; $f.$r = $r; return $f;
 67788  	};
 67789  	Error.prototype.Error = function() { return this.$val.Error(); };
 67790  	Error.ptr.prototype.Timeout = function() {
 67791  		var _r, _tuple, _v, e, ok, t, $s, $r;
 67792  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; _v = $f._v; e = $f.e; ok = $f.ok; t = $f.t; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 67793  		e = this;
 67794  		_tuple = $assertType(e.Err, timeout, true);
 67795  		t = _tuple[0];
 67796  		ok = _tuple[1];
 67797  		if (!(ok)) { _v = false; $s = 1; continue s; }
 67798  		_r = t.Timeout(); /* */ $s = 2; case 2: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 67799  		_v = _r; case 1:
 67800  		$s = -1; return _v;
 67801  		/* */ } return; } if ($f === undefined) { $f = { $blk: Error.ptr.prototype.Timeout }; } $f._r = _r; $f._tuple = _tuple; $f._v = _v; $f.e = e; $f.ok = ok; $f.t = t; $f.$s = $s; $f.$r = $r; return $f;
 67802  	};
 67803  	Error.prototype.Timeout = function() { return this.$val.Timeout(); };
 67804  	Error.ptr.prototype.Temporary = function() {
 67805  		var _r, _tuple, _v, e, ok, t, $s, $r;
 67806  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; _v = $f._v; e = $f.e; ok = $f.ok; t = $f.t; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 67807  		e = this;
 67808  		_tuple = $assertType(e.Err, temporary, true);
 67809  		t = _tuple[0];
 67810  		ok = _tuple[1];
 67811  		if (!(ok)) { _v = false; $s = 1; continue s; }
 67812  		_r = t.Temporary(); /* */ $s = 2; case 2: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 67813  		_v = _r; case 1:
 67814  		$s = -1; return _v;
 67815  		/* */ } return; } if ($f === undefined) { $f = { $blk: Error.ptr.prototype.Temporary }; } $f._r = _r; $f._tuple = _tuple; $f._v = _v; $f.e = e; $f.ok = ok; $f.t = t; $f.$s = $s; $f.$r = $r; return $f;
 67816  	};
 67817  	Error.prototype.Temporary = function() { return this.$val.Temporary(); };
 67818  	ishex = function(c) {
 67819  		var c;
 67820  		if (48 <= c && c <= 57) {
 67821  			return true;
 67822  		} else if (97 <= c && c <= 102) {
 67823  			return true;
 67824  		} else if (65 <= c && c <= 70) {
 67825  			return true;
 67826  		}
 67827  		return false;
 67828  	};
 67829  	unhex = function(c) {
 67830  		var c;
 67831  		if (48 <= c && c <= 57) {
 67832  			return c - 48 << 24 >>> 24;
 67833  		} else if (97 <= c && c <= 102) {
 67834  			return (c - 97 << 24 >>> 24) + 10 << 24 >>> 24;
 67835  		} else if (65 <= c && c <= 70) {
 67836  			return (c - 65 << 24 >>> 24) + 10 << 24 >>> 24;
 67837  		}
 67838  		return 0;
 67839  	};
 67840  	EscapeError.prototype.Error = function() {
 67841  		var e;
 67842  		e = this.$val;
 67843  		return "invalid URL escape " + strconv.Quote((e));
 67844  	};
 67845  	$ptrType(EscapeError).prototype.Error = function() { return new EscapeError(this.$get()).Error(); };
 67846  	InvalidHostError.prototype.Error = function() {
 67847  		var e;
 67848  		e = this.$val;
 67849  		return "invalid character " + strconv.Quote((e)) + " in host name";
 67850  	};
 67851  	$ptrType(InvalidHostError).prototype.Error = function() { return new InvalidHostError(this.$get()).Error(); };
 67852  	shouldEscape = function(c, mode) {
 67853  		var _1, _2, _3, c, mode;
 67854  		if (65 <= c && c <= 90 || 97 <= c && c <= 122 || 48 <= c && c <= 57) {
 67855  			return false;
 67856  		}
 67857  		if ((mode === 3) || (mode === 4)) {
 67858  			_1 = c;
 67859  			if ((_1 === (33)) || (_1 === (36)) || (_1 === (38)) || (_1 === (39)) || (_1 === (40)) || (_1 === (41)) || (_1 === (42)) || (_1 === (43)) || (_1 === (44)) || (_1 === (59)) || (_1 === (61)) || (_1 === (58)) || (_1 === (91)) || (_1 === (93)) || (_1 === (60)) || (_1 === (62)) || (_1 === (34))) {
 67860  				return false;
 67861  			}
 67862  		}
 67863  		_2 = c;
 67864  		if ((_2 === (45)) || (_2 === (95)) || (_2 === (46)) || (_2 === (126))) {
 67865  			return false;
 67866  		} else if ((_2 === (36)) || (_2 === (38)) || (_2 === (43)) || (_2 === (44)) || (_2 === (47)) || (_2 === (58)) || (_2 === (59)) || (_2 === (61)) || (_2 === (63)) || (_2 === (64))) {
 67867  			_3 = mode;
 67868  			if (_3 === (1)) {
 67869  				return c === 63;
 67870  			} else if (_3 === (2)) {
 67871  				return (c === 47) || (c === 59) || (c === 44) || (c === 63);
 67872  			} else if (_3 === (5)) {
 67873  				return (c === 64) || (c === 47) || (c === 63) || (c === 58);
 67874  			} else if (_3 === (6)) {
 67875  				return true;
 67876  			} else if (_3 === (7)) {
 67877  				return false;
 67878  			}
 67879  		}
 67880  		return true;
 67881  	};
 67882  	QueryUnescape = function(s) {
 67883  		var s;
 67884  		return unescape(s, 6);
 67885  	};
 67886  	$pkg.QueryUnescape = QueryUnescape;
 67887  	unescape = function(s, mode) {
 67888  		var _1, _2, hasPlus, i, i$1, j, mode, n, s, t, v;
 67889  		n = 0;
 67890  		hasPlus = false;
 67891  		i = 0;
 67892  		while (true) {
 67893  			if (!(i < s.length)) { break; }
 67894  			_1 = s.charCodeAt(i);
 67895  			if (_1 === (37)) {
 67896  				n = n + (1) >> 0;
 67897  				if ((i + 2 >> 0) >= s.length || !ishex(s.charCodeAt((i + 1 >> 0))) || !ishex(s.charCodeAt((i + 2 >> 0)))) {
 67898  					s = $substring(s, i);
 67899  					if (s.length > 3) {
 67900  						s = $substring(s, 0, 3);
 67901  					}
 67902  					return ["", new EscapeError((s))];
 67903  				}
 67904  				if ((mode === 3) && unhex(s.charCodeAt((i + 1 >> 0))) < 8 && !($substring(s, i, (i + 3 >> 0)) === "%25")) {
 67905  					return ["", new EscapeError(($substring(s, i, (i + 3 >> 0))))];
 67906  				}
 67907  				if (mode === 4) {
 67908  					v = ((unhex(s.charCodeAt((i + 1 >> 0))) << 4 << 24 >>> 24) | unhex(s.charCodeAt((i + 2 >> 0)))) >>> 0;
 67909  					if (!($substring(s, i, (i + 3 >> 0)) === "%25") && !((v === 32)) && shouldEscape(v, 3)) {
 67910  						return ["", new EscapeError(($substring(s, i, (i + 3 >> 0))))];
 67911  					}
 67912  				}
 67913  				i = i + (3) >> 0;
 67914  			} else if (_1 === (43)) {
 67915  				hasPlus = mode === 6;
 67916  				i = i + (1) >> 0;
 67917  			} else {
 67918  				if (((mode === 3) || (mode === 4)) && s.charCodeAt(i) < 128 && shouldEscape(s.charCodeAt(i), mode)) {
 67919  					return ["", new InvalidHostError(($substring(s, i, (i + 1 >> 0))))];
 67920  				}
 67921  				i = i + (1) >> 0;
 67922  			}
 67923  		}
 67924  		if ((n === 0) && !hasPlus) {
 67925  			return [s, $ifaceNil];
 67926  		}
 67927  		t = $makeSlice(sliceType, (s.length - ($imul(2, n)) >> 0));
 67928  		j = 0;
 67929  		i$1 = 0;
 67930  		while (true) {
 67931  			if (!(i$1 < s.length)) { break; }
 67932  			_2 = s.charCodeAt(i$1);
 67933  			if (_2 === (37)) {
 67934  				((j < 0 || j >= t.$length) ? ($throwRuntimeError("index out of range"), undefined) : t.$array[t.$offset + j] = (((unhex(s.charCodeAt((i$1 + 1 >> 0))) << 4 << 24 >>> 24) | unhex(s.charCodeAt((i$1 + 2 >> 0)))) >>> 0));
 67935  				j = j + (1) >> 0;
 67936  				i$1 = i$1 + (3) >> 0;
 67937  			} else if (_2 === (43)) {
 67938  				if (mode === 6) {
 67939  					((j < 0 || j >= t.$length) ? ($throwRuntimeError("index out of range"), undefined) : t.$array[t.$offset + j] = 32);
 67940  				} else {
 67941  					((j < 0 || j >= t.$length) ? ($throwRuntimeError("index out of range"), undefined) : t.$array[t.$offset + j] = 43);
 67942  				}
 67943  				j = j + (1) >> 0;
 67944  				i$1 = i$1 + (1) >> 0;
 67945  			} else {
 67946  				((j < 0 || j >= t.$length) ? ($throwRuntimeError("index out of range"), undefined) : t.$array[t.$offset + j] = s.charCodeAt(i$1));
 67947  				j = j + (1) >> 0;
 67948  				i$1 = i$1 + (1) >> 0;
 67949  			}
 67950  		}
 67951  		return [($bytesToString(t)), $ifaceNil];
 67952  	};
 67953  	QueryEscape = function(s) {
 67954  		var s;
 67955  		return escape(s, 6);
 67956  	};
 67957  	$pkg.QueryEscape = QueryEscape;
 67958  	escape = function(s, mode) {
 67959  		var _tmp, _tmp$1, c, c$1, hexCount, i, i$1, j, mode, s, spaceCount, t, x, x$1;
 67960  		_tmp = 0;
 67961  		_tmp$1 = 0;
 67962  		spaceCount = _tmp;
 67963  		hexCount = _tmp$1;
 67964  		i = 0;
 67965  		while (true) {
 67966  			if (!(i < s.length)) { break; }
 67967  			c = s.charCodeAt(i);
 67968  			if (shouldEscape(c, mode)) {
 67969  				if ((c === 32) && (mode === 6)) {
 67970  					spaceCount = spaceCount + (1) >> 0;
 67971  				} else {
 67972  					hexCount = hexCount + (1) >> 0;
 67973  				}
 67974  			}
 67975  			i = i + (1) >> 0;
 67976  		}
 67977  		if ((spaceCount === 0) && (hexCount === 0)) {
 67978  			return s;
 67979  		}
 67980  		t = $makeSlice(sliceType, (s.length + ($imul(2, hexCount)) >> 0));
 67981  		j = 0;
 67982  		i$1 = 0;
 67983  		while (true) {
 67984  			if (!(i$1 < s.length)) { break; }
 67985  			c$1 = s.charCodeAt(i$1);
 67986  			if ((c$1 === 32) && (mode === 6)) {
 67987  				((j < 0 || j >= t.$length) ? ($throwRuntimeError("index out of range"), undefined) : t.$array[t.$offset + j] = 43);
 67988  				j = j + (1) >> 0;
 67989  			} else if (shouldEscape(c$1, mode)) {
 67990  				((j < 0 || j >= t.$length) ? ($throwRuntimeError("index out of range"), undefined) : t.$array[t.$offset + j] = 37);
 67991  				(x = j + 1 >> 0, ((x < 0 || x >= t.$length) ? ($throwRuntimeError("index out of range"), undefined) : t.$array[t.$offset + x] = "0123456789ABCDEF".charCodeAt((c$1 >>> 4 << 24 >>> 24))));
 67992  				(x$1 = j + 2 >> 0, ((x$1 < 0 || x$1 >= t.$length) ? ($throwRuntimeError("index out of range"), undefined) : t.$array[t.$offset + x$1] = "0123456789ABCDEF".charCodeAt(((c$1 & 15) >>> 0))));
 67993  				j = j + (3) >> 0;
 67994  			} else {
 67995  				((j < 0 || j >= t.$length) ? ($throwRuntimeError("index out of range"), undefined) : t.$array[t.$offset + j] = s.charCodeAt(i$1));
 67996  				j = j + (1) >> 0;
 67997  			}
 67998  			i$1 = i$1 + (1) >> 0;
 67999  		}
 68000  		return ($bytesToString(t));
 68001  	};
 68002  	User = function(username) {
 68003  		var username;
 68004  		return new Userinfo.ptr(username, "", false);
 68005  	};
 68006  	$pkg.User = User;
 68007  	UserPassword = function(username, password) {
 68008  		var password, username;
 68009  		return new Userinfo.ptr(username, password, true);
 68010  	};
 68011  	$pkg.UserPassword = UserPassword;
 68012  	Userinfo.ptr.prototype.Username = function() {
 68013  		var u;
 68014  		u = this;
 68015  		if (u === ptrType.nil) {
 68016  			return "";
 68017  		}
 68018  		return u.username;
 68019  	};
 68020  	Userinfo.prototype.Username = function() { return this.$val.Username(); };
 68021  	Userinfo.ptr.prototype.Password = function() {
 68022  		var u;
 68023  		u = this;
 68024  		if (u === ptrType.nil) {
 68025  			return ["", false];
 68026  		}
 68027  		return [u.password, u.passwordSet];
 68028  	};
 68029  	Userinfo.prototype.Password = function() { return this.$val.Password(); };
 68030  	Userinfo.ptr.prototype.String = function() {
 68031  		var s, u;
 68032  		u = this;
 68033  		if (u === ptrType.nil) {
 68034  			return "";
 68035  		}
 68036  		s = escape(u.username, 5);
 68037  		if (u.passwordSet) {
 68038  			s = s + (":" + escape(u.password, 5));
 68039  		}
 68040  		return s;
 68041  	};
 68042  	Userinfo.prototype.String = function() { return this.$val.String(); };
 68043  	getscheme = function(rawurl) {
 68044  		var _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$14, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, c, err, i, path, rawurl, scheme;
 68045  		scheme = "";
 68046  		path = "";
 68047  		err = $ifaceNil;
 68048  		i = 0;
 68049  		while (true) {
 68050  			if (!(i < rawurl.length)) { break; }
 68051  			c = rawurl.charCodeAt(i);
 68052  			if (97 <= c && c <= 122 || 65 <= c && c <= 90) {
 68053  			} else if (48 <= c && c <= 57 || (c === 43) || (c === 45) || (c === 46)) {
 68054  				if (i === 0) {
 68055  					_tmp = "";
 68056  					_tmp$1 = rawurl;
 68057  					_tmp$2 = $ifaceNil;
 68058  					scheme = _tmp;
 68059  					path = _tmp$1;
 68060  					err = _tmp$2;
 68061  					return [scheme, path, err];
 68062  				}
 68063  			} else if ((c === 58)) {
 68064  				if (i === 0) {
 68065  					_tmp$3 = "";
 68066  					_tmp$4 = "";
 68067  					_tmp$5 = errors.New("missing protocol scheme");
 68068  					scheme = _tmp$3;
 68069  					path = _tmp$4;
 68070  					err = _tmp$5;
 68071  					return [scheme, path, err];
 68072  				}
 68073  				_tmp$6 = $substring(rawurl, 0, i);
 68074  				_tmp$7 = $substring(rawurl, (i + 1 >> 0));
 68075  				_tmp$8 = $ifaceNil;
 68076  				scheme = _tmp$6;
 68077  				path = _tmp$7;
 68078  				err = _tmp$8;
 68079  				return [scheme, path, err];
 68080  			} else {
 68081  				_tmp$9 = "";
 68082  				_tmp$10 = rawurl;
 68083  				_tmp$11 = $ifaceNil;
 68084  				scheme = _tmp$9;
 68085  				path = _tmp$10;
 68086  				err = _tmp$11;
 68087  				return [scheme, path, err];
 68088  			}
 68089  			i = i + (1) >> 0;
 68090  		}
 68091  		_tmp$12 = "";
 68092  		_tmp$13 = rawurl;
 68093  		_tmp$14 = $ifaceNil;
 68094  		scheme = _tmp$12;
 68095  		path = _tmp$13;
 68096  		err = _tmp$14;
 68097  		return [scheme, path, err];
 68098  	};
 68099  	split = function(s, c, cutc) {
 68100  		var c, cutc, i, s;
 68101  		i = strings.Index(s, c);
 68102  		if (i < 0) {
 68103  			return [s, ""];
 68104  		}
 68105  		if (cutc) {
 68106  			return [$substring(s, 0, i), $substring(s, (i + c.length >> 0))];
 68107  		}
 68108  		return [$substring(s, 0, i), $substring(s, i)];
 68109  	};
 68110  	Parse = function(rawurl) {
 68111  		var _r, _tuple, _tuple$1, _tuple$2, err, frag, rawurl, u, url, $s, $r;
 68112  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; err = $f.err; frag = $f.frag; rawurl = $f.rawurl; u = $f.u; url = $f.url; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 68113  		_tuple = split(rawurl, "#", true);
 68114  		u = _tuple[0];
 68115  		frag = _tuple[1];
 68116  		_r = parse(u, false); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 68117  		_tuple$1 = _r;
 68118  		url = _tuple$1[0];
 68119  		err = _tuple$1[1];
 68120  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 68121  			$s = -1; return [ptrType$1.nil, new Error.ptr("parse", u, err)];
 68122  		}
 68123  		if (frag === "") {
 68124  			$s = -1; return [url, $ifaceNil];
 68125  		}
 68126  		_tuple$2 = unescape(frag, 7);
 68127  		url.Fragment = _tuple$2[0];
 68128  		err = _tuple$2[1];
 68129  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 68130  			$s = -1; return [ptrType$1.nil, new Error.ptr("parse", rawurl, err)];
 68131  		}
 68132  		$s = -1; return [url, $ifaceNil];
 68133  		/* */ } return; } if ($f === undefined) { $f = { $blk: Parse }; } $f._r = _r; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f.err = err; $f.frag = frag; $f.rawurl = rawurl; $f.u = u; $f.url = url; $f.$s = $s; $f.$r = $r; return $f;
 68134  	};
 68135  	$pkg.Parse = Parse;
 68136  	ParseRequestURI = function(rawurl) {
 68137  		var _r, _tuple, err, rawurl, url, $s, $r;
 68138  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; err = $f.err; rawurl = $f.rawurl; url = $f.url; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 68139  		_r = parse(rawurl, true); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 68140  		_tuple = _r;
 68141  		url = _tuple[0];
 68142  		err = _tuple[1];
 68143  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 68144  			$s = -1; return [ptrType$1.nil, new Error.ptr("parse", rawurl, err)];
 68145  		}
 68146  		$s = -1; return [url, $ifaceNil];
 68147  		/* */ } return; } if ($f === undefined) { $f = { $blk: ParseRequestURI }; } $f._r = _r; $f._tuple = _tuple; $f.err = err; $f.rawurl = rawurl; $f.url = url; $f.$s = $s; $f.$r = $r; return $f;
 68148  	};
 68149  	$pkg.ParseRequestURI = ParseRequestURI;
 68150  	parse = function(rawurl, viaRequest) {
 68151  		var _r, _r$1, _tuple, _tuple$1, _tuple$2, _tuple$3, authority, colon, err, err$1, rawurl, rest, slash, url, viaRequest, $s, $r;
 68152  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; authority = $f.authority; colon = $f.colon; err = $f.err; err$1 = $f.err$1; rawurl = $f.rawurl; rest = $f.rest; slash = $f.slash; url = $f.url; viaRequest = $f.viaRequest; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 68153  		rest = "";
 68154  		err = $ifaceNil;
 68155  		if (rawurl === "" && viaRequest) {
 68156  			$s = -1; return [ptrType$1.nil, errors.New("empty url")];
 68157  		}
 68158  		url = new URL.ptr("", "", ptrType.nil, "", "", "", false, "", "");
 68159  		if (rawurl === "*") {
 68160  			url.Path = "*";
 68161  			$s = -1; return [url, $ifaceNil];
 68162  		}
 68163  		_tuple = getscheme(rawurl);
 68164  		url.Scheme = _tuple[0];
 68165  		rest = _tuple[1];
 68166  		err = _tuple[2];
 68167  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 68168  			$s = -1; return [ptrType$1.nil, err];
 68169  		}
 68170  		_r = strings.ToLower(url.Scheme); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 68171  		url.Scheme = _r;
 68172  		if (strings.HasSuffix(rest, "?") && (strings.Count(rest, "?") === 1)) {
 68173  			url.ForceQuery = true;
 68174  			rest = $substring(rest, 0, (rest.length - 1 >> 0));
 68175  		} else {
 68176  			_tuple$1 = split(rest, "?", true);
 68177  			rest = _tuple$1[0];
 68178  			url.RawQuery = _tuple$1[1];
 68179  		}
 68180  		if (!strings.HasPrefix(rest, "/")) {
 68181  			if (!(url.Scheme === "")) {
 68182  				url.Opaque = rest;
 68183  				$s = -1; return [url, $ifaceNil];
 68184  			}
 68185  			if (viaRequest) {
 68186  				$s = -1; return [ptrType$1.nil, errors.New("invalid URI for request")];
 68187  			}
 68188  			colon = strings.Index(rest, ":");
 68189  			slash = strings.Index(rest, "/");
 68190  			if (colon >= 0 && (slash < 0 || colon < slash)) {
 68191  				$s = -1; return [ptrType$1.nil, errors.New("first path segment in URL cannot contain colon")];
 68192  			}
 68193  		}
 68194  		/* */ if ((!(url.Scheme === "") || !viaRequest && !strings.HasPrefix(rest, "///")) && strings.HasPrefix(rest, "//")) { $s = 2; continue; }
 68195  		/* */ $s = 3; continue;
 68196  		/* if ((!(url.Scheme === "") || !viaRequest && !strings.HasPrefix(rest, "///")) && strings.HasPrefix(rest, "//")) { */ case 2:
 68197  			authority = "";
 68198  			_tuple$2 = split($substring(rest, 2), "/", false);
 68199  			authority = _tuple$2[0];
 68200  			rest = _tuple$2[1];
 68201  			_r$1 = parseAuthority(authority); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 68202  			_tuple$3 = _r$1;
 68203  			url.User = _tuple$3[0];
 68204  			url.Host = _tuple$3[1];
 68205  			err = _tuple$3[2];
 68206  			if (!($interfaceIsEqual(err, $ifaceNil))) {
 68207  				$s = -1; return [ptrType$1.nil, err];
 68208  			}
 68209  		/* } */ case 3:
 68210  		err$1 = url.setPath(rest);
 68211  		if (!($interfaceIsEqual(err$1, $ifaceNil))) {
 68212  			$s = -1; return [ptrType$1.nil, err$1];
 68213  		}
 68214  		$s = -1; return [url, $ifaceNil];
 68215  		/* */ } return; } if ($f === undefined) { $f = { $blk: parse }; } $f._r = _r; $f._r$1 = _r$1; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f.authority = authority; $f.colon = colon; $f.err = err; $f.err$1 = err$1; $f.rawurl = rawurl; $f.rest = rest; $f.slash = slash; $f.url = url; $f.viaRequest = viaRequest; $f.$s = $s; $f.$r = $r; return $f;
 68216  	};
 68217  	parseAuthority = function(authority) {
 68218  		var _r, _r$1, _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$14, _tmp$15, _tmp$16, _tmp$17, _tmp$18, _tmp$19, _tmp$2, _tmp$20, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, _tuple$5, authority, err, host, i, password, user, userinfo, username, $s, $r;
 68219  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$10 = $f._tmp$10; _tmp$11 = $f._tmp$11; _tmp$12 = $f._tmp$12; _tmp$13 = $f._tmp$13; _tmp$14 = $f._tmp$14; _tmp$15 = $f._tmp$15; _tmp$16 = $f._tmp$16; _tmp$17 = $f._tmp$17; _tmp$18 = $f._tmp$18; _tmp$19 = $f._tmp$19; _tmp$2 = $f._tmp$2; _tmp$20 = $f._tmp$20; _tmp$3 = $f._tmp$3; _tmp$4 = $f._tmp$4; _tmp$5 = $f._tmp$5; _tmp$6 = $f._tmp$6; _tmp$7 = $f._tmp$7; _tmp$8 = $f._tmp$8; _tmp$9 = $f._tmp$9; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; _tuple$4 = $f._tuple$4; _tuple$5 = $f._tuple$5; authority = $f.authority; err = $f.err; host = $f.host; i = $f.i; password = $f.password; user = $f.user; userinfo = $f.userinfo; username = $f.username; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 68220  		user = ptrType.nil;
 68221  		host = "";
 68222  		err = $ifaceNil;
 68223  		i = strings.LastIndex(authority, "@");
 68224  		/* */ if (i < 0) { $s = 1; continue; }
 68225  		/* */ $s = 2; continue;
 68226  		/* if (i < 0) { */ case 1:
 68227  			_r = parseHost(authority); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 68228  			_tuple = _r;
 68229  			host = _tuple[0];
 68230  			err = _tuple[1];
 68231  			$s = 3; continue;
 68232  		/* } else { */ case 2:
 68233  			_r$1 = parseHost($substring(authority, (i + 1 >> 0))); /* */ $s = 5; case 5: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 68234  			_tuple$1 = _r$1;
 68235  			host = _tuple$1[0];
 68236  			err = _tuple$1[1];
 68237  		/* } */ case 3:
 68238  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 68239  			_tmp = ptrType.nil;
 68240  			_tmp$1 = "";
 68241  			_tmp$2 = err;
 68242  			user = _tmp;
 68243  			host = _tmp$1;
 68244  			err = _tmp$2;
 68245  			$s = -1; return [user, host, err];
 68246  		}
 68247  		if (i < 0) {
 68248  			_tmp$3 = ptrType.nil;
 68249  			_tmp$4 = host;
 68250  			_tmp$5 = $ifaceNil;
 68251  			user = _tmp$3;
 68252  			host = _tmp$4;
 68253  			err = _tmp$5;
 68254  			$s = -1; return [user, host, err];
 68255  		}
 68256  		userinfo = $substring(authority, 0, i);
 68257  		if (!validUserinfo(userinfo)) {
 68258  			_tmp$6 = ptrType.nil;
 68259  			_tmp$7 = "";
 68260  			_tmp$8 = errors.New("net/url: invalid userinfo");
 68261  			user = _tmp$6;
 68262  			host = _tmp$7;
 68263  			err = _tmp$8;
 68264  			$s = -1; return [user, host, err];
 68265  		}
 68266  		if (!strings.Contains(userinfo, ":")) {
 68267  			_tuple$2 = unescape(userinfo, 5);
 68268  			userinfo = _tuple$2[0];
 68269  			err = _tuple$2[1];
 68270  			if (!($interfaceIsEqual(err, $ifaceNil))) {
 68271  				_tmp$9 = ptrType.nil;
 68272  				_tmp$10 = "";
 68273  				_tmp$11 = err;
 68274  				user = _tmp$9;
 68275  				host = _tmp$10;
 68276  				err = _tmp$11;
 68277  				$s = -1; return [user, host, err];
 68278  			}
 68279  			user = User(userinfo);
 68280  		} else {
 68281  			_tuple$3 = split(userinfo, ":", true);
 68282  			username = _tuple$3[0];
 68283  			password = _tuple$3[1];
 68284  			_tuple$4 = unescape(username, 5);
 68285  			username = _tuple$4[0];
 68286  			err = _tuple$4[1];
 68287  			if (!($interfaceIsEqual(err, $ifaceNil))) {
 68288  				_tmp$12 = ptrType.nil;
 68289  				_tmp$13 = "";
 68290  				_tmp$14 = err;
 68291  				user = _tmp$12;
 68292  				host = _tmp$13;
 68293  				err = _tmp$14;
 68294  				$s = -1; return [user, host, err];
 68295  			}
 68296  			_tuple$5 = unescape(password, 5);
 68297  			password = _tuple$5[0];
 68298  			err = _tuple$5[1];
 68299  			if (!($interfaceIsEqual(err, $ifaceNil))) {
 68300  				_tmp$15 = ptrType.nil;
 68301  				_tmp$16 = "";
 68302  				_tmp$17 = err;
 68303  				user = _tmp$15;
 68304  				host = _tmp$16;
 68305  				err = _tmp$17;
 68306  				$s = -1; return [user, host, err];
 68307  			}
 68308  			user = UserPassword(username, password);
 68309  		}
 68310  		_tmp$18 = user;
 68311  		_tmp$19 = host;
 68312  		_tmp$20 = $ifaceNil;
 68313  		user = _tmp$18;
 68314  		host = _tmp$19;
 68315  		err = _tmp$20;
 68316  		$s = -1; return [user, host, err];
 68317  		/* */ } return; } if ($f === undefined) { $f = { $blk: parseAuthority }; } $f._r = _r; $f._r$1 = _r$1; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$10 = _tmp$10; $f._tmp$11 = _tmp$11; $f._tmp$12 = _tmp$12; $f._tmp$13 = _tmp$13; $f._tmp$14 = _tmp$14; $f._tmp$15 = _tmp$15; $f._tmp$16 = _tmp$16; $f._tmp$17 = _tmp$17; $f._tmp$18 = _tmp$18; $f._tmp$19 = _tmp$19; $f._tmp$2 = _tmp$2; $f._tmp$20 = _tmp$20; $f._tmp$3 = _tmp$3; $f._tmp$4 = _tmp$4; $f._tmp$5 = _tmp$5; $f._tmp$6 = _tmp$6; $f._tmp$7 = _tmp$7; $f._tmp$8 = _tmp$8; $f._tmp$9 = _tmp$9; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f._tuple$4 = _tuple$4; $f._tuple$5 = _tuple$5; $f.authority = authority; $f.err = err; $f.host = host; $f.i = i; $f.password = password; $f.user = user; $f.userinfo = userinfo; $f.username = username; $f.$s = $s; $f.$r = $r; return $f;
 68318  	};
 68319  	parseHost = function(host) {
 68320  		var _r, _tuple, _tuple$1, _tuple$2, _tuple$3, colonPort, err, err$1, host, host1, host2, host3, i, zone, $s, $r;
 68321  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; colonPort = $f.colonPort; err = $f.err; err$1 = $f.err$1; host = $f.host; host1 = $f.host1; host2 = $f.host2; host3 = $f.host3; i = $f.i; zone = $f.zone; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 68322  		/* */ if (strings.HasPrefix(host, "[")) { $s = 1; continue; }
 68323  		/* */ $s = 2; continue;
 68324  		/* if (strings.HasPrefix(host, "[")) { */ case 1:
 68325  			i = strings.LastIndex(host, "]");
 68326  			if (i < 0) {
 68327  				$s = -1; return ["", errors.New("missing ']' in host")];
 68328  			}
 68329  			colonPort = $substring(host, (i + 1 >> 0));
 68330  			/* */ if (!validOptionalPort(colonPort)) { $s = 3; continue; }
 68331  			/* */ $s = 4; continue;
 68332  			/* if (!validOptionalPort(colonPort)) { */ case 3:
 68333  				_r = fmt.Errorf("invalid port %q after host", new sliceType$1([new $String(colonPort)])); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 68334  				$s = -1; return ["", _r];
 68335  			/* } */ case 4:
 68336  			zone = strings.Index($substring(host, 0, i), "%25");
 68337  			if (zone >= 0) {
 68338  				_tuple = unescape($substring(host, 0, zone), 3);
 68339  				host1 = _tuple[0];
 68340  				err = _tuple[1];
 68341  				if (!($interfaceIsEqual(err, $ifaceNil))) {
 68342  					$s = -1; return ["", err];
 68343  				}
 68344  				_tuple$1 = unescape($substring(host, zone, i), 4);
 68345  				host2 = _tuple$1[0];
 68346  				err = _tuple$1[1];
 68347  				if (!($interfaceIsEqual(err, $ifaceNil))) {
 68348  					$s = -1; return ["", err];
 68349  				}
 68350  				_tuple$2 = unescape($substring(host, i), 3);
 68351  				host3 = _tuple$2[0];
 68352  				err = _tuple$2[1];
 68353  				if (!($interfaceIsEqual(err, $ifaceNil))) {
 68354  					$s = -1; return ["", err];
 68355  				}
 68356  				$s = -1; return [host1 + host2 + host3, $ifaceNil];
 68357  			}
 68358  		/* } */ case 2:
 68359  		err$1 = $ifaceNil;
 68360  		_tuple$3 = unescape(host, 3);
 68361  		host = _tuple$3[0];
 68362  		err$1 = _tuple$3[1];
 68363  		if (!($interfaceIsEqual(err$1, $ifaceNil))) {
 68364  			$s = -1; return ["", err$1];
 68365  		}
 68366  		$s = -1; return [host, $ifaceNil];
 68367  		/* */ } return; } if ($f === undefined) { $f = { $blk: parseHost }; } $f._r = _r; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f.colonPort = colonPort; $f.err = err; $f.err$1 = err$1; $f.host = host; $f.host1 = host1; $f.host2 = host2; $f.host3 = host3; $f.i = i; $f.zone = zone; $f.$s = $s; $f.$r = $r; return $f;
 68368  	};
 68369  	URL.ptr.prototype.setPath = function(p) {
 68370  		var _tuple, err, escp, p, path, u;
 68371  		u = this;
 68372  		_tuple = unescape(p, 1);
 68373  		path = _tuple[0];
 68374  		err = _tuple[1];
 68375  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 68376  			return err;
 68377  		}
 68378  		u.Path = path;
 68379  		escp = escape(path, 1);
 68380  		if (p === escp) {
 68381  			u.RawPath = "";
 68382  		} else {
 68383  			u.RawPath = p;
 68384  		}
 68385  		return $ifaceNil;
 68386  	};
 68387  	URL.prototype.setPath = function(p) { return this.$val.setPath(p); };
 68388  	URL.ptr.prototype.EscapedPath = function() {
 68389  		var _tuple, err, p, u;
 68390  		u = this;
 68391  		if (!(u.RawPath === "") && validEncodedPath(u.RawPath)) {
 68392  			_tuple = unescape(u.RawPath, 1);
 68393  			p = _tuple[0];
 68394  			err = _tuple[1];
 68395  			if ($interfaceIsEqual(err, $ifaceNil) && p === u.Path) {
 68396  				return u.RawPath;
 68397  			}
 68398  		}
 68399  		if (u.Path === "*") {
 68400  			return "*";
 68401  		}
 68402  		return escape(u.Path, 1);
 68403  	};
 68404  	URL.prototype.EscapedPath = function() { return this.$val.EscapedPath(); };
 68405  	validEncodedPath = function(s) {
 68406  		var _1, i, s;
 68407  		i = 0;
 68408  		while (true) {
 68409  			if (!(i < s.length)) { break; }
 68410  			_1 = s.charCodeAt(i);
 68411  			if ((_1 === (33)) || (_1 === (36)) || (_1 === (38)) || (_1 === (39)) || (_1 === (40)) || (_1 === (41)) || (_1 === (42)) || (_1 === (43)) || (_1 === (44)) || (_1 === (59)) || (_1 === (61)) || (_1 === (58)) || (_1 === (64))) {
 68412  			} else if ((_1 === (91)) || (_1 === (93))) {
 68413  			} else if (_1 === (37)) {
 68414  			} else if (shouldEscape(s.charCodeAt(i), 1)) {
 68415  				return false;
 68416  			}
 68417  			i = i + (1) >> 0;
 68418  		}
 68419  		return true;
 68420  	};
 68421  	validOptionalPort = function(port) {
 68422  		var _i, _ref, _rune, b, port;
 68423  		if (port === "") {
 68424  			return true;
 68425  		}
 68426  		if (!((port.charCodeAt(0) === 58))) {
 68427  			return false;
 68428  		}
 68429  		_ref = $substring(port, 1);
 68430  		_i = 0;
 68431  		while (true) {
 68432  			if (!(_i < _ref.length)) { break; }
 68433  			_rune = $decodeRune(_ref, _i);
 68434  			b = _rune[0];
 68435  			if (b < 48 || b > 57) {
 68436  				return false;
 68437  			}
 68438  			_i += _rune[1];
 68439  		}
 68440  		return true;
 68441  	};
 68442  	URL.ptr.prototype.String = function() {
 68443  		var buf, h, i, path, u, ui;
 68444  		u = this;
 68445  		buf = new bytes.Buffer.ptr(sliceType.nil, 0, arrayType.zero(), 0);
 68446  		if (!(u.Scheme === "")) {
 68447  			buf.WriteString(u.Scheme);
 68448  			buf.WriteByte(58);
 68449  		}
 68450  		if (!(u.Opaque === "")) {
 68451  			buf.WriteString(u.Opaque);
 68452  		} else {
 68453  			if (!(u.Scheme === "") || !(u.Host === "") || !(u.User === ptrType.nil)) {
 68454  				if (!(u.Host === "") || !(u.Path === "") || !(u.User === ptrType.nil)) {
 68455  					buf.WriteString("//");
 68456  				}
 68457  				ui = u.User;
 68458  				if (!(ui === ptrType.nil)) {
 68459  					buf.WriteString(ui.String());
 68460  					buf.WriteByte(64);
 68461  				}
 68462  				h = u.Host;
 68463  				if (!(h === "")) {
 68464  					buf.WriteString(escape(h, 3));
 68465  				}
 68466  			}
 68467  			path = u.EscapedPath();
 68468  			if (!(path === "") && !((path.charCodeAt(0) === 47)) && !(u.Host === "")) {
 68469  				buf.WriteByte(47);
 68470  			}
 68471  			if (buf.Len() === 0) {
 68472  				i = strings.IndexByte(path, 58);
 68473  				if (i > -1 && (strings.IndexByte($substring(path, 0, i), 47) === -1)) {
 68474  					buf.WriteString("./");
 68475  				}
 68476  			}
 68477  			buf.WriteString(path);
 68478  		}
 68479  		if (u.ForceQuery || !(u.RawQuery === "")) {
 68480  			buf.WriteByte(63);
 68481  			buf.WriteString(u.RawQuery);
 68482  		}
 68483  		if (!(u.Fragment === "")) {
 68484  			buf.WriteByte(35);
 68485  			buf.WriteString(escape(u.Fragment, 7));
 68486  		}
 68487  		return buf.String();
 68488  	};
 68489  	URL.prototype.String = function() { return this.$val.String(); };
 68490  	Values.prototype.Get = function(key) {
 68491  		var _entry, key, v, vs;
 68492  		v = this.$val;
 68493  		if (v === false) {
 68494  			return "";
 68495  		}
 68496  		vs = (_entry = v[$String.keyFor(key)], _entry !== undefined ? _entry.v : sliceType$2.nil);
 68497  		if (vs.$length === 0) {
 68498  			return "";
 68499  		}
 68500  		return (0 >= vs.$length ? ($throwRuntimeError("index out of range"), undefined) : vs.$array[vs.$offset + 0]);
 68501  	};
 68502  	$ptrType(Values).prototype.Get = function(key) { return new Values(this.$get()).Get(key); };
 68503  	Values.prototype.Set = function(key, value) {
 68504  		var _key, key, v, value;
 68505  		v = this.$val;
 68506  		_key = key; (v || $throwRuntimeError("assignment to entry in nil map"))[$String.keyFor(_key)] = { k: _key, v: new sliceType$2([value]) };
 68507  	};
 68508  	$ptrType(Values).prototype.Set = function(key, value) { return new Values(this.$get()).Set(key, value); };
 68509  	Values.prototype.Add = function(key, value) {
 68510  		var _entry, _key, key, v, value;
 68511  		v = this.$val;
 68512  		_key = key; (v || $throwRuntimeError("assignment to entry in nil map"))[$String.keyFor(_key)] = { k: _key, v: $append((_entry = v[$String.keyFor(key)], _entry !== undefined ? _entry.v : sliceType$2.nil), value) };
 68513  	};
 68514  	$ptrType(Values).prototype.Add = function(key, value) { return new Values(this.$get()).Add(key, value); };
 68515  	Values.prototype.Del = function(key) {
 68516  		var key, v;
 68517  		v = this.$val;
 68518  		delete v[$String.keyFor(key)];
 68519  	};
 68520  	$ptrType(Values).prototype.Del = function(key) { return new Values(this.$get()).Del(key); };
 68521  	ParseQuery = function(query) {
 68522  		var err, m, query;
 68523  		m = {};
 68524  		err = parseQuery(m, query);
 68525  		return [m, err];
 68526  	};
 68527  	$pkg.ParseQuery = ParseQuery;
 68528  	parseQuery = function(m, query) {
 68529  		var _entry, _key, _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, _tuple$1, err, err1, i, i$1, key, m, query, value;
 68530  		err = $ifaceNil;
 68531  		while (true) {
 68532  			if (!(!(query === ""))) { break; }
 68533  			key = query;
 68534  			i = strings.IndexAny(key, "&;");
 68535  			if (i >= 0) {
 68536  				_tmp = $substring(key, 0, i);
 68537  				_tmp$1 = $substring(key, (i + 1 >> 0));
 68538  				key = _tmp;
 68539  				query = _tmp$1;
 68540  			} else {
 68541  				query = "";
 68542  			}
 68543  			if (key === "") {
 68544  				continue;
 68545  			}
 68546  			value = "";
 68547  			i$1 = strings.Index(key, "=");
 68548  			if (i$1 >= 0) {
 68549  				_tmp$2 = $substring(key, 0, i$1);
 68550  				_tmp$3 = $substring(key, (i$1 + 1 >> 0));
 68551  				key = _tmp$2;
 68552  				value = _tmp$3;
 68553  			}
 68554  			_tuple = QueryUnescape(key);
 68555  			key = _tuple[0];
 68556  			err1 = _tuple[1];
 68557  			if (!($interfaceIsEqual(err1, $ifaceNil))) {
 68558  				if ($interfaceIsEqual(err, $ifaceNil)) {
 68559  					err = err1;
 68560  				}
 68561  				continue;
 68562  			}
 68563  			_tuple$1 = QueryUnescape(value);
 68564  			value = _tuple$1[0];
 68565  			err1 = _tuple$1[1];
 68566  			if (!($interfaceIsEqual(err1, $ifaceNil))) {
 68567  				if ($interfaceIsEqual(err, $ifaceNil)) {
 68568  					err = err1;
 68569  				}
 68570  				continue;
 68571  			}
 68572  			_key = key; (m || $throwRuntimeError("assignment to entry in nil map"))[$String.keyFor(_key)] = { k: _key, v: $append((_entry = m[$String.keyFor(key)], _entry !== undefined ? _entry.v : sliceType$2.nil), value) };
 68573  		}
 68574  		err = err;
 68575  		return err;
 68576  	};
 68577  	Values.prototype.Encode = function() {
 68578  		var _entry, _entry$1, _i, _i$1, _i$2, _keys, _ref, _ref$1, _ref$2, buf, k, k$1, keys, prefix, v, v$1, vs, $s, $r;
 68579  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _entry = $f._entry; _entry$1 = $f._entry$1; _i = $f._i; _i$1 = $f._i$1; _i$2 = $f._i$2; _keys = $f._keys; _ref = $f._ref; _ref$1 = $f._ref$1; _ref$2 = $f._ref$2; buf = $f.buf; k = $f.k; k$1 = $f.k$1; keys = $f.keys; prefix = $f.prefix; v = $f.v; v$1 = $f.v$1; vs = $f.vs; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 68580  		v = this.$val;
 68581  		if (v === false) {
 68582  			$s = -1; return "";
 68583  		}
 68584  		buf = new bytes.Buffer.ptr(sliceType.nil, 0, arrayType.zero(), 0);
 68585  		keys = $makeSlice(sliceType$2, 0, $keys(v).length);
 68586  		_ref = v;
 68587  		_i = 0;
 68588  		_keys = $keys(_ref);
 68589  		while (true) {
 68590  			if (!(_i < _keys.length)) { break; }
 68591  			_entry = _ref[_keys[_i]];
 68592  			if (_entry === undefined) {
 68593  				_i++;
 68594  				continue;
 68595  			}
 68596  			k = _entry.k;
 68597  			keys = $append(keys, k);
 68598  			_i++;
 68599  		}
 68600  		$r = sort.Strings(keys); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 68601  		_ref$1 = keys;
 68602  		_i$1 = 0;
 68603  		while (true) {
 68604  			if (!(_i$1 < _ref$1.$length)) { break; }
 68605  			k$1 = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]);
 68606  			vs = (_entry$1 = v[$String.keyFor(k$1)], _entry$1 !== undefined ? _entry$1.v : sliceType$2.nil);
 68607  			prefix = QueryEscape(k$1) + "=";
 68608  			_ref$2 = vs;
 68609  			_i$2 = 0;
 68610  			while (true) {
 68611  				if (!(_i$2 < _ref$2.$length)) { break; }
 68612  				v$1 = ((_i$2 < 0 || _i$2 >= _ref$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$2.$array[_ref$2.$offset + _i$2]);
 68613  				if (buf.Len() > 0) {
 68614  					buf.WriteByte(38);
 68615  				}
 68616  				buf.WriteString(prefix);
 68617  				buf.WriteString(QueryEscape(v$1));
 68618  				_i$2++;
 68619  			}
 68620  			_i$1++;
 68621  		}
 68622  		$s = -1; return buf.String();
 68623  		/* */ } return; } if ($f === undefined) { $f = { $blk: Values.prototype.Encode }; } $f._entry = _entry; $f._entry$1 = _entry$1; $f._i = _i; $f._i$1 = _i$1; $f._i$2 = _i$2; $f._keys = _keys; $f._ref = _ref; $f._ref$1 = _ref$1; $f._ref$2 = _ref$2; $f.buf = buf; $f.k = k; $f.k$1 = k$1; $f.keys = keys; $f.prefix = prefix; $f.v = v; $f.v$1 = v$1; $f.vs = vs; $f.$s = $s; $f.$r = $r; return $f;
 68624  	};
 68625  	$ptrType(Values).prototype.Encode = function() { return new Values(this.$get()).Encode(); };
 68626  	resolvePath = function(base, ref) {
 68627  		var _1, _i, _ref, base, dst, elem, full, i, last, ref, src, x;
 68628  		full = "";
 68629  		if (ref === "") {
 68630  			full = base;
 68631  		} else if (!((ref.charCodeAt(0) === 47))) {
 68632  			i = strings.LastIndex(base, "/");
 68633  			full = $substring(base, 0, (i + 1 >> 0)) + ref;
 68634  		} else {
 68635  			full = ref;
 68636  		}
 68637  		if (full === "") {
 68638  			return "";
 68639  		}
 68640  		dst = sliceType$2.nil;
 68641  		src = strings.Split(full, "/");
 68642  		_ref = src;
 68643  		_i = 0;
 68644  		while (true) {
 68645  			if (!(_i < _ref.$length)) { break; }
 68646  			elem = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
 68647  			_1 = elem;
 68648  			if (_1 === (".")) {
 68649  			} else if (_1 === ("..")) {
 68650  				if (dst.$length > 0) {
 68651  					dst = $subslice(dst, 0, (dst.$length - 1 >> 0));
 68652  				}
 68653  			} else {
 68654  				dst = $append(dst, elem);
 68655  			}
 68656  			_i++;
 68657  		}
 68658  		last = (x = src.$length - 1 >> 0, ((x < 0 || x >= src.$length) ? ($throwRuntimeError("index out of range"), undefined) : src.$array[src.$offset + x]));
 68659  		if (last === "." || last === "..") {
 68660  			dst = $append(dst, "");
 68661  		}
 68662  		return "/" + strings.TrimPrefix(strings.Join(dst, "/"), "/");
 68663  	};
 68664  	URL.ptr.prototype.IsAbs = function() {
 68665  		var u;
 68666  		u = this;
 68667  		return !(u.Scheme === "");
 68668  	};
 68669  	URL.prototype.IsAbs = function() { return this.$val.IsAbs(); };
 68670  	URL.ptr.prototype.Parse = function(ref) {
 68671  		var _r, _tuple, err, ref, refurl, u, $s, $r;
 68672  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; err = $f.err; ref = $f.ref; refurl = $f.refurl; u = $f.u; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 68673  		u = this;
 68674  		_r = Parse(ref); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 68675  		_tuple = _r;
 68676  		refurl = _tuple[0];
 68677  		err = _tuple[1];
 68678  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 68679  			$s = -1; return [ptrType$1.nil, err];
 68680  		}
 68681  		$s = -1; return [u.ResolveReference(refurl), $ifaceNil];
 68682  		/* */ } return; } if ($f === undefined) { $f = { $blk: URL.ptr.prototype.Parse }; } $f._r = _r; $f._tuple = _tuple; $f.err = err; $f.ref = ref; $f.refurl = refurl; $f.u = u; $f.$s = $s; $f.$r = $r; return $f;
 68683  	};
 68684  	URL.prototype.Parse = function(ref) { return this.$val.Parse(ref); };
 68685  	URL.ptr.prototype.ResolveReference = function(ref) {
 68686  		var ref, u, url;
 68687  		u = this;
 68688  		url = $clone(ref, URL);
 68689  		if (ref.Scheme === "") {
 68690  			url.Scheme = u.Scheme;
 68691  		}
 68692  		if (!(ref.Scheme === "") || !(ref.Host === "") || !(ref.User === ptrType.nil)) {
 68693  			url.setPath(resolvePath(ref.EscapedPath(), ""));
 68694  			return url;
 68695  		}
 68696  		if (!(ref.Opaque === "")) {
 68697  			url.User = ptrType.nil;
 68698  			url.Host = "";
 68699  			url.Path = "";
 68700  			return url;
 68701  		}
 68702  		if (ref.Path === "" && ref.RawQuery === "") {
 68703  			url.RawQuery = u.RawQuery;
 68704  			if (ref.Fragment === "") {
 68705  				url.Fragment = u.Fragment;
 68706  			}
 68707  		}
 68708  		url.Host = u.Host;
 68709  		url.User = u.User;
 68710  		url.setPath(resolvePath(u.EscapedPath(), ref.EscapedPath()));
 68711  		return url;
 68712  	};
 68713  	URL.prototype.ResolveReference = function(ref) { return this.$val.ResolveReference(ref); };
 68714  	URL.ptr.prototype.Query = function() {
 68715  		var _tuple, u, v;
 68716  		u = this;
 68717  		_tuple = ParseQuery(u.RawQuery);
 68718  		v = _tuple[0];
 68719  		return v;
 68720  	};
 68721  	URL.prototype.Query = function() { return this.$val.Query(); };
 68722  	URL.ptr.prototype.RequestURI = function() {
 68723  		var result, u;
 68724  		u = this;
 68725  		result = u.Opaque;
 68726  		if (result === "") {
 68727  			result = u.EscapedPath();
 68728  			if (result === "") {
 68729  				result = "/";
 68730  			}
 68731  		} else {
 68732  			if (strings.HasPrefix(result, "//")) {
 68733  				result = u.Scheme + ":" + result;
 68734  			}
 68735  		}
 68736  		if (u.ForceQuery || !(u.RawQuery === "")) {
 68737  			result = result + ("?" + u.RawQuery);
 68738  		}
 68739  		return result;
 68740  	};
 68741  	URL.prototype.RequestURI = function() { return this.$val.RequestURI(); };
 68742  	URL.ptr.prototype.Hostname = function() {
 68743  		var u;
 68744  		u = this;
 68745  		return stripPort(u.Host);
 68746  	};
 68747  	URL.prototype.Hostname = function() { return this.$val.Hostname(); };
 68748  	URL.ptr.prototype.Port = function() {
 68749  		var u;
 68750  		u = this;
 68751  		return portOnly(u.Host);
 68752  	};
 68753  	URL.prototype.Port = function() { return this.$val.Port(); };
 68754  	stripPort = function(hostport) {
 68755  		var colon, hostport, i;
 68756  		colon = strings.IndexByte(hostport, 58);
 68757  		if (colon === -1) {
 68758  			return hostport;
 68759  		}
 68760  		i = strings.IndexByte(hostport, 93);
 68761  		if (!((i === -1))) {
 68762  			return strings.TrimPrefix($substring(hostport, 0, i), "[");
 68763  		}
 68764  		return $substring(hostport, 0, colon);
 68765  	};
 68766  	portOnly = function(hostport) {
 68767  		var colon, hostport, i;
 68768  		colon = strings.IndexByte(hostport, 58);
 68769  		if (colon === -1) {
 68770  			return "";
 68771  		}
 68772  		i = strings.Index(hostport, "]:");
 68773  		if (!((i === -1))) {
 68774  			return $substring(hostport, (i + 2 >> 0));
 68775  		}
 68776  		if (strings.Contains(hostport, "]")) {
 68777  			return "";
 68778  		}
 68779  		return $substring(hostport, (colon + 1 >> 0));
 68780  	};
 68781  	URL.ptr.prototype.MarshalBinary = function() {
 68782  		var _tmp, _tmp$1, err, text, u;
 68783  		text = sliceType.nil;
 68784  		err = $ifaceNil;
 68785  		u = this;
 68786  		_tmp = (new sliceType($stringToBytes(u.String())));
 68787  		_tmp$1 = $ifaceNil;
 68788  		text = _tmp;
 68789  		err = _tmp$1;
 68790  		return [text, err];
 68791  	};
 68792  	URL.prototype.MarshalBinary = function() { return this.$val.MarshalBinary(); };
 68793  	URL.ptr.prototype.UnmarshalBinary = function(text) {
 68794  		var _r, _tuple, err, text, u, u1, $s, $r;
 68795  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; err = $f.err; text = $f.text; u = $f.u; u1 = $f.u1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 68796  		u = this;
 68797  		_r = Parse(($bytesToString(text))); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 68798  		_tuple = _r;
 68799  		u1 = _tuple[0];
 68800  		err = _tuple[1];
 68801  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 68802  			$s = -1; return err;
 68803  		}
 68804  		URL.copy(u, u1);
 68805  		$s = -1; return $ifaceNil;
 68806  		/* */ } return; } if ($f === undefined) { $f = { $blk: URL.ptr.prototype.UnmarshalBinary }; } $f._r = _r; $f._tuple = _tuple; $f.err = err; $f.text = text; $f.u = u; $f.u1 = u1; $f.$s = $s; $f.$r = $r; return $f;
 68807  	};
 68808  	URL.prototype.UnmarshalBinary = function(text) { return this.$val.UnmarshalBinary(text); };
 68809  	validUserinfo = function(s) {
 68810  		var _1, _i, _ref, _rune, r, s;
 68811  		_ref = s;
 68812  		_i = 0;
 68813  		while (true) {
 68814  			if (!(_i < _ref.length)) { break; }
 68815  			_rune = $decodeRune(_ref, _i);
 68816  			r = _rune[0];
 68817  			if (65 <= r && r <= 90) {
 68818  				_i += _rune[1];
 68819  				continue;
 68820  			}
 68821  			if (97 <= r && r <= 122) {
 68822  				_i += _rune[1];
 68823  				continue;
 68824  			}
 68825  			if (48 <= r && r <= 57) {
 68826  				_i += _rune[1];
 68827  				continue;
 68828  			}
 68829  			_1 = r;
 68830  			if ((_1 === (45)) || (_1 === (46)) || (_1 === (95)) || (_1 === (58)) || (_1 === (126)) || (_1 === (33)) || (_1 === (36)) || (_1 === (38)) || (_1 === (39)) || (_1 === (40)) || (_1 === (41)) || (_1 === (42)) || (_1 === (43)) || (_1 === (44)) || (_1 === (59)) || (_1 === (61)) || (_1 === (37)) || (_1 === (64))) {
 68831  				_i += _rune[1];
 68832  				continue;
 68833  			} else {
 68834  				return false;
 68835  			}
 68836  			_i += _rune[1];
 68837  		}
 68838  		return true;
 68839  	};
 68840  	ptrType$2.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Timeout", name: "Timeout", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "Temporary", name: "Temporary", pkg: "", typ: $funcType([], [$Bool], false)}];
 68841  	EscapeError.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}];
 68842  	InvalidHostError.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}];
 68843  	ptrType$1.methods = [{prop: "setPath", name: "setPath", pkg: "net/url", typ: $funcType([$String], [$error], false)}, {prop: "EscapedPath", name: "EscapedPath", pkg: "", typ: $funcType([], [$String], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "IsAbs", name: "IsAbs", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "Parse", name: "Parse", pkg: "", typ: $funcType([$String], [ptrType$1, $error], false)}, {prop: "ResolveReference", name: "ResolveReference", pkg: "", typ: $funcType([ptrType$1], [ptrType$1], false)}, {prop: "Query", name: "Query", pkg: "", typ: $funcType([], [Values], false)}, {prop: "RequestURI", name: "RequestURI", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Hostname", name: "Hostname", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Port", name: "Port", pkg: "", typ: $funcType([], [$String], false)}, {prop: "MarshalBinary", name: "MarshalBinary", pkg: "", typ: $funcType([], [sliceType, $error], false)}, {prop: "UnmarshalBinary", name: "UnmarshalBinary", pkg: "", typ: $funcType([sliceType], [$error], false)}];
 68844  	ptrType.methods = [{prop: "Username", name: "Username", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Password", name: "Password", pkg: "", typ: $funcType([], [$String, $Bool], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}];
 68845  	Values.methods = [{prop: "Get", name: "Get", pkg: "", typ: $funcType([$String], [$String], false)}, {prop: "Set", name: "Set", pkg: "", typ: $funcType([$String, $String], [], false)}, {prop: "Add", name: "Add", pkg: "", typ: $funcType([$String, $String], [], false)}, {prop: "Del", name: "Del", pkg: "", typ: $funcType([$String], [], false)}, {prop: "Encode", name: "Encode", pkg: "", typ: $funcType([], [$String], false)}];
 68846  	Error.init("", [{prop: "Op", name: "Op", anonymous: false, exported: true, typ: $String, tag: ""}, {prop: "URL", name: "URL", anonymous: false, exported: true, typ: $String, tag: ""}, {prop: "Err", name: "Err", anonymous: false, exported: true, typ: $error, tag: ""}]);
 68847  	timeout.init([{prop: "Timeout", name: "Timeout", pkg: "", typ: $funcType([], [$Bool], false)}]);
 68848  	temporary.init([{prop: "Temporary", name: "Temporary", pkg: "", typ: $funcType([], [$Bool], false)}]);
 68849  	URL.init("", [{prop: "Scheme", name: "Scheme", anonymous: false, exported: true, typ: $String, tag: ""}, {prop: "Opaque", name: "Opaque", anonymous: false, exported: true, typ: $String, tag: ""}, {prop: "User", name: "User", anonymous: false, exported: true, typ: ptrType, tag: ""}, {prop: "Host", name: "Host", anonymous: false, exported: true, typ: $String, tag: ""}, {prop: "Path", name: "Path", anonymous: false, exported: true, typ: $String, tag: ""}, {prop: "RawPath", name: "RawPath", anonymous: false, exported: true, typ: $String, tag: ""}, {prop: "ForceQuery", name: "ForceQuery", anonymous: false, exported: true, typ: $Bool, tag: ""}, {prop: "RawQuery", name: "RawQuery", anonymous: false, exported: true, typ: $String, tag: ""}, {prop: "Fragment", name: "Fragment", anonymous: false, exported: true, typ: $String, tag: ""}]);
 68850  	Userinfo.init("net/url", [{prop: "username", name: "username", anonymous: false, exported: false, typ: $String, tag: ""}, {prop: "password", name: "password", anonymous: false, exported: false, typ: $String, tag: ""}, {prop: "passwordSet", name: "passwordSet", anonymous: false, exported: false, typ: $Bool, tag: ""}]);
 68851  	Values.init($String, sliceType$2);
 68852  	$init = function() {
 68853  		$pkg.$init = function() {};
 68854  		/* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 68855  		$r = bytes.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 68856  		$r = errors.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 68857  		$r = fmt.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 68858  		$r = sort.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 68859  		$r = strconv.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 68860  		$r = strings.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 68861  		/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
 68862  	};
 68863  	$pkg.$init = $init;
 68864  	return $pkg;
 68865  })();
 68866  $packages["vendor/golang_org/x/crypto/cryptobyte/asn1"] = (function() {
 68867  	var $pkg = {}, $init, Tag;
 68868  	Tag = $pkg.Tag = $newType(1, $kindUint8, "asn1.Tag", true, "vendor/golang_org/x/crypto/cryptobyte/asn1", true, null);
 68869  	Tag.prototype.Constructed = function() {
 68870  		var t;
 68871  		t = this.$val;
 68872  		return (t | 32) >>> 0;
 68873  	};
 68874  	$ptrType(Tag).prototype.Constructed = function() { return new Tag(this.$get()).Constructed(); };
 68875  	Tag.prototype.ContextSpecific = function() {
 68876  		var t;
 68877  		t = this.$val;
 68878  		return (t | 128) >>> 0;
 68879  	};
 68880  	$ptrType(Tag).prototype.ContextSpecific = function() { return new Tag(this.$get()).ContextSpecific(); };
 68881  	Tag.methods = [{prop: "Constructed", name: "Constructed", pkg: "", typ: $funcType([], [Tag], false)}, {prop: "ContextSpecific", name: "ContextSpecific", pkg: "", typ: $funcType([], [Tag], false)}];
 68882  	$init = function() {
 68883  		$pkg.$init = function() {};
 68884  		/* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 68885  		/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
 68886  	};
 68887  	$pkg.$init = $init;
 68888  	return $pkg;
 68889  })();
 68890  $packages["vendor/golang_org/x/crypto/cryptobyte"] = (function() {
 68891  	var $pkg = {}, $init, asn1, errors, fmt, big, reflect, time, asn1$1, String, ptrType, sliceType, ptrType$1, ptrType$2, ptrType$3, sliceType$2, ptrType$4, ptrType$5, ptrType$6, ptrType$7, ptrType$8, ptrType$10, ptrType$11, ptrType$12, ptrType$13, ptrType$14, bigIntType, bigOne, _r, checkASN1Integer, asn1Signed, asn1Unsigned;
 68892  	asn1 = $packages["encoding/asn1"];
 68893  	errors = $packages["errors"];
 68894  	fmt = $packages["fmt"];
 68895  	big = $packages["math/big"];
 68896  	reflect = $packages["reflect"];
 68897  	time = $packages["time"];
 68898  	asn1$1 = $packages["vendor/golang_org/x/crypto/cryptobyte/asn1"];
 68899  	String = $pkg.String = $newType(12, $kindSlice, "cryptobyte.String", true, "vendor/golang_org/x/crypto/cryptobyte", true, null);
 68900  	ptrType = $ptrType(big.Int);
 68901  	sliceType = $sliceType($Uint8);
 68902  	ptrType$1 = $ptrType(String);
 68903  	ptrType$2 = $ptrType($Int64);
 68904  	ptrType$3 = $ptrType($Uint64);
 68905  	sliceType$2 = $sliceType($Int);
 68906  	ptrType$4 = $ptrType($Int);
 68907  	ptrType$5 = $ptrType(asn1$1.Tag);
 68908  	ptrType$6 = $ptrType($Bool);
 68909  	ptrType$7 = $ptrType($Uint32);
 68910  	ptrType$8 = $ptrType(sliceType);
 68911  	ptrType$10 = $ptrType(asn1.ObjectIdentifier);
 68912  	ptrType$11 = $ptrType(time.Time);
 68913  	ptrType$12 = $ptrType(asn1.BitString);
 68914  	ptrType$13 = $ptrType($Uint8);
 68915  	ptrType$14 = $ptrType($Uint16);
 68916  	$ptrType(String).prototype.ReadASN1Boolean = function(out) {
 68917  		var _1, bytes, bytes$24ptr, out, s;
 68918  		s = this;
 68919  		bytes = String.nil;
 68920  		if (!s.ReadASN1((bytes$24ptr || (bytes$24ptr = new ptrType$1(function() { return bytes; }, function($v) { bytes = $subslice(new String($v.$array), $v.$offset, $v.$offset + $v.$length); }))), 2) || !((bytes.$length === 1))) {
 68921  			return false;
 68922  		}
 68923  		_1 = (0 >= bytes.$length ? ($throwRuntimeError("index out of range"), undefined) : bytes.$array[bytes.$offset + 0]);
 68924  		if (_1 === (0)) {
 68925  			out.$set(false);
 68926  		} else if (_1 === (255)) {
 68927  			out.$set(true);
 68928  		} else {
 68929  			return false;
 68930  		}
 68931  		return true;
 68932  	};
 68933  	$ptrType(String).prototype.ReadASN1Integer = function(out) {
 68934  		var _1, _r$1, _r$10, _r$11, _r$12, _r$13, _r$14, _r$15, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _v, _v$1, i, out, s, u, $s, $r;
 68935  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _r$1 = $f._r$1; _r$10 = $f._r$10; _r$11 = $f._r$11; _r$12 = $f._r$12; _r$13 = $f._r$13; _r$14 = $f._r$14; _r$15 = $f._r$15; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _r$8 = $f._r$8; _r$9 = $f._r$9; _v = $f._v; _v$1 = $f._v$1; i = $f.i; out = $f.out; s = $f.s; u = $f.u; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 68936  		i = [i];
 68937  		u = [u];
 68938  		s = this;
 68939  		_r$1 = reflect.TypeOf(out).Kind(); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 68940  		/* */ if (!((_r$1 === 22))) { $s = 1; continue; }
 68941  		/* */ $s = 2; continue;
 68942  		/* if (!((_r$1 === 22))) { */ case 1:
 68943  			$panic(new $String("out is not a pointer"));
 68944  		/* } */ case 2:
 68945  			_r$2 = reflect.ValueOf(out); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 68946  			_r$3 = $clone(_r$2, reflect.Value).Elem(); /* */ $s = 6; case 6: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 68947  			_r$4 = $clone(_r$3, reflect.Value).Kind(); /* */ $s = 7; case 7: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 68948  			_1 = _r$4;
 68949  			/* */ if ((_1 === (2)) || (_1 === (3)) || (_1 === (4)) || (_1 === (5)) || (_1 === (6))) { $s = 8; continue; }
 68950  			/* */ if ((_1 === (7)) || (_1 === (8)) || (_1 === (9)) || (_1 === (10)) || (_1 === (11))) { $s = 9; continue; }
 68951  			/* */ if (_1 === (25)) { $s = 10; continue; }
 68952  			/* */ $s = 11; continue;
 68953  			/* if ((_1 === (2)) || (_1 === (3)) || (_1 === (4)) || (_1 === (5)) || (_1 === (6))) { */ case 8:
 68954  				i[0] = new $Int64(0, 0);
 68955  				if (!s.readASN1Int64((i.$ptr || (i.$ptr = new ptrType$2(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, i))))) { _v = true; $s = 14; continue s; }
 68956  				_r$5 = reflect.ValueOf(out); /* */ $s = 15; case 15: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
 68957  				_r$6 = $clone(_r$5, reflect.Value).Elem(); /* */ $s = 16; case 16: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
 68958  				_r$7 = $clone(_r$6, reflect.Value).OverflowInt(i[0]); /* */ $s = 17; case 17: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
 68959  				_v = _r$7; case 14:
 68960  				/* */ if (_v) { $s = 12; continue; }
 68961  				/* */ $s = 13; continue;
 68962  				/* if (_v) { */ case 12:
 68963  					$s = -1; return false;
 68964  				/* } */ case 13:
 68965  				_r$8 = reflect.ValueOf(out); /* */ $s = 18; case 18: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
 68966  				_r$9 = $clone(_r$8, reflect.Value).Elem(); /* */ $s = 19; case 19: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 68967  				$r = $clone(_r$9, reflect.Value).SetInt(i[0]); /* */ $s = 20; case 20: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 68968  				$s = -1; return true;
 68969  			/* } else if ((_1 === (7)) || (_1 === (8)) || (_1 === (9)) || (_1 === (10)) || (_1 === (11))) { */ case 9:
 68970  				u[0] = new $Uint64(0, 0);
 68971  				if (!s.readASN1Uint64((u.$ptr || (u.$ptr = new ptrType$3(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, u))))) { _v$1 = true; $s = 23; continue s; }
 68972  				_r$10 = reflect.ValueOf(out); /* */ $s = 24; case 24: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
 68973  				_r$11 = $clone(_r$10, reflect.Value).Elem(); /* */ $s = 25; case 25: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; }
 68974  				_r$12 = $clone(_r$11, reflect.Value).OverflowUint(u[0]); /* */ $s = 26; case 26: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; }
 68975  				_v$1 = _r$12; case 23:
 68976  				/* */ if (_v$1) { $s = 21; continue; }
 68977  				/* */ $s = 22; continue;
 68978  				/* if (_v$1) { */ case 21:
 68979  					$s = -1; return false;
 68980  				/* } */ case 22:
 68981  				_r$13 = reflect.ValueOf(out); /* */ $s = 27; case 27: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; }
 68982  				_r$14 = $clone(_r$13, reflect.Value).Elem(); /* */ $s = 28; case 28: if($c) { $c = false; _r$14 = _r$14.$blk(); } if (_r$14 && _r$14.$blk !== undefined) { break s; }
 68983  				$r = $clone(_r$14, reflect.Value).SetUint(u[0]); /* */ $s = 29; case 29: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 68984  				$s = -1; return true;
 68985  			/* } else if (_1 === (25)) { */ case 10:
 68986  				_r$15 = reflect.TypeOf(out).Elem(); /* */ $s = 32; case 32: if($c) { $c = false; _r$15 = _r$15.$blk(); } if (_r$15 && _r$15.$blk !== undefined) { break s; }
 68987  				/* */ if ($interfaceIsEqual(_r$15, bigIntType)) { $s = 30; continue; }
 68988  				/* */ $s = 31; continue;
 68989  				/* if ($interfaceIsEqual(_r$15, bigIntType)) { */ case 30:
 68990  					$s = -1; return s.readASN1BigInt($assertType(out, ptrType));
 68991  				/* } */ case 31:
 68992  			/* } */ case 11:
 68993  		case 4:
 68994  		$panic(new $String("out does not point to an integer type"));
 68995  		$s = -1; return false;
 68996  		/* */ } return; } if ($f === undefined) { $f = { $blk: $ptrType(String).prototype.ReadASN1Integer }; } $f._1 = _1; $f._r$1 = _r$1; $f._r$10 = _r$10; $f._r$11 = _r$11; $f._r$12 = _r$12; $f._r$13 = _r$13; $f._r$14 = _r$14; $f._r$15 = _r$15; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._r$8 = _r$8; $f._r$9 = _r$9; $f._v = _v; $f._v$1 = _v$1; $f.i = i; $f.out = out; $f.s = s; $f.u = u; $f.$s = $s; $f.$r = $r; return $f;
 68997  	};
 68998  	checkASN1Integer = function(bytes) {
 68999  		var bytes;
 69000  		if (bytes.$length === 0) {
 69001  			return false;
 69002  		}
 69003  		if (bytes.$length === 1) {
 69004  			return true;
 69005  		}
 69006  		if (((0 >= bytes.$length ? ($throwRuntimeError("index out of range"), undefined) : bytes.$array[bytes.$offset + 0]) === 0) && ((((1 >= bytes.$length ? ($throwRuntimeError("index out of range"), undefined) : bytes.$array[bytes.$offset + 1]) & 128) >>> 0) === 0) || ((0 >= bytes.$length ? ($throwRuntimeError("index out of range"), undefined) : bytes.$array[bytes.$offset + 0]) === 255) && ((((1 >= bytes.$length ? ($throwRuntimeError("index out of range"), undefined) : bytes.$array[bytes.$offset + 1]) & 128) >>> 0) === 128)) {
 69007  			return false;
 69008  		}
 69009  		return true;
 69010  	};
 69011  	$ptrType(String).prototype.readASN1BigInt = function(out) {
 69012  		var _i, _ref, b, bytes, bytes$24ptr, i, neg, out, s;
 69013  		s = this;
 69014  		bytes = String.nil;
 69015  		if (!s.ReadASN1((bytes$24ptr || (bytes$24ptr = new ptrType$1(function() { return bytes; }, function($v) { bytes = $subslice(new String($v.$array), $v.$offset, $v.$offset + $v.$length); }))), 2) || !checkASN1Integer($subslice(new sliceType(bytes.$array), bytes.$offset, bytes.$offset + bytes.$length))) {
 69016  			return false;
 69017  		}
 69018  		if ((((0 >= bytes.$length ? ($throwRuntimeError("index out of range"), undefined) : bytes.$array[bytes.$offset + 0]) & 128) >>> 0) === 128) {
 69019  			neg = $makeSlice(sliceType, bytes.$length);
 69020  			_ref = bytes;
 69021  			_i = 0;
 69022  			while (true) {
 69023  				if (!(_i < _ref.$length)) { break; }
 69024  				i = _i;
 69025  				b = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
 69026  				((i < 0 || i >= neg.$length) ? ($throwRuntimeError("index out of range"), undefined) : neg.$array[neg.$offset + i] = (~b << 24 >>> 24));
 69027  				_i++;
 69028  			}
 69029  			out.SetBytes(neg);
 69030  			out.Add(out, bigOne);
 69031  			out.Neg(out);
 69032  		} else {
 69033  			out.SetBytes($subslice(new sliceType(bytes.$array), bytes.$offset, bytes.$offset + bytes.$length));
 69034  		}
 69035  		return true;
 69036  	};
 69037  	$ptrType(String).prototype.readASN1Int64 = function(out) {
 69038  		var bytes, bytes$24ptr, out, s;
 69039  		s = this;
 69040  		bytes = String.nil;
 69041  		if (!s.ReadASN1((bytes$24ptr || (bytes$24ptr = new ptrType$1(function() { return bytes; }, function($v) { bytes = $subslice(new String($v.$array), $v.$offset, $v.$offset + $v.$length); }))), 2) || !checkASN1Integer($subslice(new sliceType(bytes.$array), bytes.$offset, bytes.$offset + bytes.$length)) || !asn1Signed(out, $subslice(new sliceType(bytes.$array), bytes.$offset, bytes.$offset + bytes.$length))) {
 69042  			return false;
 69043  		}
 69044  		return true;
 69045  	};
 69046  	asn1Signed = function(out, n) {
 69047  		var i, length, n, out, x, x$1;
 69048  		length = n.$length;
 69049  		if (length > 8) {
 69050  			return false;
 69051  		}
 69052  		i = 0;
 69053  		while (true) {
 69054  			if (!(i < length)) { break; }
 69055  			out.$set($shiftLeft64(out.$get(), (8)));
 69056  			out.$set((x = out.$get(), x$1 = (new $Int64(0, ((i < 0 || i >= n.$length) ? ($throwRuntimeError("index out of range"), undefined) : n.$array[n.$offset + i]))), new $Int64(x.$high | x$1.$high, (x.$low | x$1.$low) >>> 0)));
 69057  			i = i + (1) >> 0;
 69058  		}
 69059  		out.$set($shiftLeft64(out.$get(), ((64 - (((length << 24 >>> 24)) * 8 << 24 >>> 24) << 24 >>> 24))));
 69060  		out.$set($shiftRightInt64(out.$get(), ((64 - (((length << 24 >>> 24)) * 8 << 24 >>> 24) << 24 >>> 24))));
 69061  		return true;
 69062  	};
 69063  	$ptrType(String).prototype.readASN1Uint64 = function(out) {
 69064  		var bytes, bytes$24ptr, out, s;
 69065  		s = this;
 69066  		bytes = String.nil;
 69067  		if (!s.ReadASN1((bytes$24ptr || (bytes$24ptr = new ptrType$1(function() { return bytes; }, function($v) { bytes = $subslice(new String($v.$array), $v.$offset, $v.$offset + $v.$length); }))), 2) || !checkASN1Integer($subslice(new sliceType(bytes.$array), bytes.$offset, bytes.$offset + bytes.$length)) || !asn1Unsigned(out, $subslice(new sliceType(bytes.$array), bytes.$offset, bytes.$offset + bytes.$length))) {
 69068  			return false;
 69069  		}
 69070  		return true;
 69071  	};
 69072  	asn1Unsigned = function(out, n) {
 69073  		var i, length, n, out, x, x$1;
 69074  		length = n.$length;
 69075  		if (length > 9 || (length === 9) && !(((0 >= n.$length ? ($throwRuntimeError("index out of range"), undefined) : n.$array[n.$offset + 0]) === 0))) {
 69076  			return false;
 69077  		}
 69078  		if (!(((((0 >= n.$length ? ($throwRuntimeError("index out of range"), undefined) : n.$array[n.$offset + 0]) & 128) >>> 0) === 0))) {
 69079  			return false;
 69080  		}
 69081  		i = 0;
 69082  		while (true) {
 69083  			if (!(i < length)) { break; }
 69084  			out.$set($shiftLeft64(out.$get(), (8)));
 69085  			out.$set((x = out.$get(), x$1 = (new $Uint64(0, ((i < 0 || i >= n.$length) ? ($throwRuntimeError("index out of range"), undefined) : n.$array[n.$offset + i]))), new $Uint64(x.$high | x$1.$high, (x.$low | x$1.$low) >>> 0)));
 69086  			i = i + (1) >> 0;
 69087  		}
 69088  		return true;
 69089  	};
 69090  	$ptrType(String).prototype.ReadASN1Enum = function(out) {
 69091  		var bytes, bytes$24ptr, i, i$24ptr, out, s, x;
 69092  		s = this;
 69093  		bytes = String.nil;
 69094  		i = new $Int64(0, 0);
 69095  		if (!s.ReadASN1((bytes$24ptr || (bytes$24ptr = new ptrType$1(function() { return bytes; }, function($v) { bytes = $subslice(new String($v.$array), $v.$offset, $v.$offset + $v.$length); }))), 10) || !checkASN1Integer($subslice(new sliceType(bytes.$array), bytes.$offset, bytes.$offset + bytes.$length)) || !asn1Signed((i$24ptr || (i$24ptr = new ptrType$2(function() { return i; }, function($v) { i = $v; }))), $subslice(new sliceType(bytes.$array), bytes.$offset, bytes.$offset + bytes.$length))) {
 69096  			return false;
 69097  		}
 69098  		if (!((x = (new $Int64(0, (((i.$low + ((i.$high >> 31) * 4294967296)) >> 0)))), (x.$high === i.$high && x.$low === i.$low)))) {
 69099  			return false;
 69100  		}
 69101  		out.$set((((i.$low + ((i.$high >> 31) * 4294967296)) >> 0)));
 69102  		return true;
 69103  	};
 69104  	$ptrType(String).prototype.readBase128Int = function(out) {
 69105  		var b, i, out, ret, s, x, y;
 69106  		s = this;
 69107  		ret = 0;
 69108  		i = 0;
 69109  		while (true) {
 69110  			if (!(s.$get().$length > 0)) { break; }
 69111  			if (i === 4) {
 69112  				return false;
 69113  			}
 69114  			ret = (y = (7), y < 32 ? (ret << y) : 0) >> 0;
 69115  			b = (x = s.read(1), (0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0]));
 69116  			ret = ret | (((((b & 127) >>> 0) >> 0)));
 69117  			if (((b & 128) >>> 0) === 0) {
 69118  				out.$set(ret);
 69119  				return true;
 69120  			}
 69121  			i = i + (1) >> 0;
 69122  		}
 69123  		return false;
 69124  	};
 69125  	$ptrType(String).prototype.ReadASN1ObjectIdentifier = function(out) {
 69126  		var _q, _r$1, bytes, bytes$24ptr, components, i, out, s, v, v$24ptr, x;
 69127  		s = this;
 69128  		bytes = String.nil;
 69129  		if (!s.ReadASN1((bytes$24ptr || (bytes$24ptr = new ptrType$1(function() { return bytes; }, function($v) { bytes = $subslice(new String($v.$array), $v.$offset, $v.$offset + $v.$length); }))), 6) || (bytes.$length === 0)) {
 69130  			return false;
 69131  		}
 69132  		components = $makeSlice(sliceType$2, (bytes.$length + 1 >> 0));
 69133  		v = 0;
 69134  		if (!(bytes$24ptr || (bytes$24ptr = new ptrType$1(function() { return bytes; }, function($v) { bytes = $subslice(new String($v.$array), $v.$offset, $v.$offset + $v.$length); }))).readBase128Int((v$24ptr || (v$24ptr = new ptrType$4(function() { return v; }, function($v) { v = $v; }))))) {
 69135  			return false;
 69136  		}
 69137  		if (v < 80) {
 69138  			(0 >= components.$length ? ($throwRuntimeError("index out of range"), undefined) : components.$array[components.$offset + 0] = (_q = v / 40, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")));
 69139  			(1 >= components.$length ? ($throwRuntimeError("index out of range"), undefined) : components.$array[components.$offset + 1] = (_r$1 = v % 40, _r$1 === _r$1 ? _r$1 : $throwRuntimeError("integer divide by zero")));
 69140  		} else {
 69141  			(0 >= components.$length ? ($throwRuntimeError("index out of range"), undefined) : components.$array[components.$offset + 0] = 2);
 69142  			(1 >= components.$length ? ($throwRuntimeError("index out of range"), undefined) : components.$array[components.$offset + 1] = (v - 80 >> 0));
 69143  		}
 69144  		i = 2;
 69145  		while (true) {
 69146  			if (!(bytes.$length > 0)) { break; }
 69147  			if (!(bytes$24ptr || (bytes$24ptr = new ptrType$1(function() { return bytes; }, function($v) { bytes = $subslice(new String($v.$array), $v.$offset, $v.$offset + $v.$length); }))).readBase128Int((v$24ptr || (v$24ptr = new ptrType$4(function() { return v; }, function($v) { v = $v; }))))) {
 69148  				return false;
 69149  			}
 69150  			((i < 0 || i >= components.$length) ? ($throwRuntimeError("index out of range"), undefined) : components.$array[components.$offset + i] = v);
 69151  			i = i + (1) >> 0;
 69152  		}
 69153  		out.$set((x = $subslice(components, 0, i), $subslice(new asn1.ObjectIdentifier(x.$array), x.$offset, x.$offset + x.$length)));
 69154  		return true;
 69155  	};
 69156  	$ptrType(String).prototype.ReadASN1GeneralizedTime = function(out) {
 69157  		var _r$1, _r$2, _tuple, bytes, err, out, res, s, serialized, t, $s, $r;
 69158  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; _r$2 = $f._r$2; _tuple = $f._tuple; bytes = $f.bytes; err = $f.err; out = $f.out; res = $f.res; s = $f.s; serialized = $f.serialized; t = $f.t; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 69159  		bytes = [bytes];
 69160  		s = this;
 69161  		bytes[0] = String.nil;
 69162  		if (!s.ReadASN1((bytes.$ptr || (bytes.$ptr = new ptrType$1(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, bytes))), 24)) {
 69163  			$s = -1; return false;
 69164  		}
 69165  		t = ($bytesToString(bytes[0]));
 69166  		_r$1 = time.Parse("20060102150405Z0700", t); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 69167  		_tuple = _r$1;
 69168  		res = $clone(_tuple[0], time.Time);
 69169  		err = _tuple[1];
 69170  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 69171  			$s = -1; return false;
 69172  		}
 69173  		_r$2 = $clone(res, time.Time).Format("20060102150405Z0700"); /* */ $s = 2; case 2: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 69174  		serialized = _r$2;
 69175  		if (!(serialized === t)) {
 69176  			$s = -1; return false;
 69177  		}
 69178  		time.Time.copy(out, res);
 69179  		$s = -1; return true;
 69180  		/* */ } return; } if ($f === undefined) { $f = { $blk: $ptrType(String).prototype.ReadASN1GeneralizedTime }; } $f._r$1 = _r$1; $f._r$2 = _r$2; $f._tuple = _tuple; $f.bytes = bytes; $f.err = err; $f.out = out; $f.res = res; $f.s = s; $f.serialized = serialized; $f.t = t; $f.$s = $s; $f.$r = $r; return $f;
 69181  	};
 69182  	$ptrType(String).prototype.ReadASN1BitString = function(out) {
 69183  		var bytes, bytes$24ptr, out, paddingBits, s, x, y;
 69184  		s = this;
 69185  		bytes = String.nil;
 69186  		if (!s.ReadASN1((bytes$24ptr || (bytes$24ptr = new ptrType$1(function() { return bytes; }, function($v) { bytes = $subslice(new String($v.$array), $v.$offset, $v.$offset + $v.$length); }))), 3) || (bytes.$length === 0)) {
 69187  			return false;
 69188  		}
 69189  		paddingBits = ((0 >= bytes.$length ? ($throwRuntimeError("index out of range"), undefined) : bytes.$array[bytes.$offset + 0]));
 69190  		bytes = $subslice(bytes, 1);
 69191  		if (paddingBits > 7 || (bytes.$length === 0) && !((paddingBits === 0)) || bytes.$length > 0 && !(((((x = bytes.$length - 1 >> 0, ((x < 0 || x >= bytes.$length) ? ($throwRuntimeError("index out of range"), undefined) : bytes.$array[bytes.$offset + x])) & ((((y = paddingBits, y < 32 ? (1 << y) : 0) << 24 >>> 24) - 1 << 24 >>> 24))) >>> 0) === 0))) {
 69192  			return false;
 69193  		}
 69194  		out.BitLength = ($imul(bytes.$length, 8)) - ((paddingBits >> 0)) >> 0;
 69195  		out.Bytes = $subslice(new sliceType(bytes.$array), bytes.$offset, bytes.$offset + bytes.$length);
 69196  		return true;
 69197  	};
 69198  	$ptrType(String).prototype.ReadASN1BitStringAsBytes = function(out) {
 69199  		var bytes, bytes$24ptr, out, paddingBits, s, x;
 69200  		s = this;
 69201  		bytes = String.nil;
 69202  		if (!s.ReadASN1((bytes$24ptr || (bytes$24ptr = new ptrType$1(function() { return bytes; }, function($v) { bytes = $subslice(new String($v.$array), $v.$offset, $v.$offset + $v.$length); }))), 3) || (bytes.$length === 0)) {
 69203  			return false;
 69204  		}
 69205  		paddingBits = ((0 >= bytes.$length ? ($throwRuntimeError("index out of range"), undefined) : bytes.$array[bytes.$offset + 0]));
 69206  		if (!((paddingBits === 0))) {
 69207  			return false;
 69208  		}
 69209  		out.$set((x = $subslice(bytes, 1), $subslice(new sliceType(x.$array), x.$offset, x.$offset + x.$length)));
 69210  		return true;
 69211  	};
 69212  	$ptrType(String).prototype.ReadASN1Bytes = function(out, tag) {
 69213  		var _ptr, out, s, tag, x;
 69214  		s = this;
 69215  		return s.ReadASN1(((_ptr = out, new ptrType$1(function() { return (x = _ptr.$get(), $subslice(new String(x.$array), x.$offset, x.$offset + x.$length)); }, function($v) { _ptr.$set($subslice(new sliceType($v.$array), $v.$offset, $v.$offset + $v.$length)); }, _ptr.$target))), tag);
 69216  	};
 69217  	$ptrType(String).prototype.ReadASN1 = function(out, tag) {
 69218  		var out, s, t, t$24ptr, tag;
 69219  		s = this;
 69220  		t = 0;
 69221  		if (!s.ReadAnyASN1(out, (t$24ptr || (t$24ptr = new ptrType$5(function() { return t; }, function($v) { t = $v; })))) || !((t === tag))) {
 69222  			return false;
 69223  		}
 69224  		return true;
 69225  	};
 69226  	$ptrType(String).prototype.ReadASN1Element = function(out, tag) {
 69227  		var out, s, t, t$24ptr, tag;
 69228  		s = this;
 69229  		t = 0;
 69230  		if (!s.ReadAnyASN1Element(out, (t$24ptr || (t$24ptr = new ptrType$5(function() { return t; }, function($v) { t = $v; })))) || !((t === tag))) {
 69231  			return false;
 69232  		}
 69233  		return true;
 69234  	};
 69235  	$ptrType(String).prototype.ReadAnyASN1 = function(out, outTag) {
 69236  		var out, outTag, s;
 69237  		s = this;
 69238  		return s.readASN1(out, outTag, true);
 69239  	};
 69240  	$ptrType(String).prototype.ReadAnyASN1Element = function(out, outTag) {
 69241  		var out, outTag, s;
 69242  		s = this;
 69243  		return s.readASN1(out, outTag, false);
 69244  	};
 69245  	String.prototype.PeekASN1Tag = function(tag) {
 69246  		var s, tag;
 69247  		s = this;
 69248  		if (s.$length === 0) {
 69249  			return false;
 69250  		}
 69251  		return (((0 >= s.$length ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + 0]) << 24 >>> 24)) === tag;
 69252  	};
 69253  	$ptrType(String).prototype.PeekASN1Tag = function(tag) { return this.$get().PeekASN1Tag(tag); };
 69254  	$ptrType(String).prototype.SkipASN1 = function(tag) {
 69255  		var s, tag, unused, unused$24ptr;
 69256  		s = this;
 69257  		unused = String.nil;
 69258  		return s.ReadASN1((unused$24ptr || (unused$24ptr = new ptrType$1(function() { return unused; }, function($v) { unused = $subslice(new String($v.$array), $v.$offset, $v.$offset + $v.$length); }))), tag);
 69259  	};
 69260  	$ptrType(String).prototype.ReadOptionalASN1 = function(out, outPresent, tag) {
 69261  		var out, outPresent, present, s, tag;
 69262  		s = this;
 69263  		present = s.PeekASN1Tag(tag);
 69264  		if (!(outPresent === ptrType$6.nil)) {
 69265  			outPresent.$set(present);
 69266  		}
 69267  		if (present && !s.ReadASN1(out, tag)) {
 69268  			return false;
 69269  		}
 69270  		return true;
 69271  	};
 69272  	$ptrType(String).prototype.SkipOptionalASN1 = function(tag) {
 69273  		var s, tag, unused, unused$24ptr;
 69274  		s = this;
 69275  		if (!s.PeekASN1Tag(tag)) {
 69276  			return true;
 69277  		}
 69278  		unused = String.nil;
 69279  		return s.ReadASN1((unused$24ptr || (unused$24ptr = new ptrType$1(function() { return unused; }, function($v) { unused = $subslice(new String($v.$array), $v.$offset, $v.$offset + $v.$length); }))), tag);
 69280  	};
 69281  	$ptrType(String).prototype.ReadOptionalASN1Integer = function(out, tag, defaultValue) {
 69282  		var _1, _r$1, _r$10, _r$11, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _v, defaultValue, i, out, present, s, tag, $s, $r;
 69283  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _r$1 = $f._r$1; _r$10 = $f._r$10; _r$11 = $f._r$11; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _r$8 = $f._r$8; _r$9 = $f._r$9; _v = $f._v; defaultValue = $f.defaultValue; i = $f.i; out = $f.out; present = $f.present; s = $f.s; tag = $f.tag; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 69284  		i = [i];
 69285  		present = [present];
 69286  		s = this;
 69287  		_r$1 = reflect.TypeOf(out).Kind(); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 69288  		/* */ if (!((_r$1 === 22))) { $s = 1; continue; }
 69289  		/* */ $s = 2; continue;
 69290  		/* if (!((_r$1 === 22))) { */ case 1:
 69291  			$panic(new $String("out is not a pointer"));
 69292  		/* } */ case 2:
 69293  		present[0] = false;
 69294  		i[0] = String.nil;
 69295  		if (!s.ReadOptionalASN1((i.$ptr || (i.$ptr = new ptrType$1(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, i))), (present.$ptr || (present.$ptr = new ptrType$6(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, present))), tag)) {
 69296  			$s = -1; return false;
 69297  		}
 69298  		/* */ if (!present[0]) { $s = 4; continue; }
 69299  		/* */ $s = 5; continue;
 69300  		/* if (!present[0]) { */ case 4:
 69301  				_r$2 = reflect.ValueOf(out); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 69302  				_r$3 = $clone(_r$2, reflect.Value).Elem(); /* */ $s = 8; case 8: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 69303  				_r$4 = $clone(_r$3, reflect.Value).Kind(); /* */ $s = 9; case 9: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 69304  				_1 = _r$4;
 69305  				/* */ if ((_1 === (2)) || (_1 === (3)) || (_1 === (4)) || (_1 === (5)) || (_1 === (6)) || (_1 === (7)) || (_1 === (8)) || (_1 === (9)) || (_1 === (10)) || (_1 === (11))) { $s = 10; continue; }
 69306  				/* */ if (_1 === (25)) { $s = 11; continue; }
 69307  				/* */ $s = 12; continue;
 69308  				/* if ((_1 === (2)) || (_1 === (3)) || (_1 === (4)) || (_1 === (5)) || (_1 === (6)) || (_1 === (7)) || (_1 === (8)) || (_1 === (9)) || (_1 === (10)) || (_1 === (11))) { */ case 10:
 69309  					_r$5 = reflect.ValueOf(out); /* */ $s = 14; case 14: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
 69310  					_r$6 = $clone(_r$5, reflect.Value).Elem(); /* */ $s = 15; case 15: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
 69311  					_r$7 = reflect.ValueOf(defaultValue); /* */ $s = 16; case 16: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
 69312  					$r = $clone(_r$6, reflect.Value).Set($clone(_r$7, reflect.Value)); /* */ $s = 17; case 17: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 69313  					$s = 13; continue;
 69314  				/* } else if (_1 === (25)) { */ case 11:
 69315  					_r$8 = reflect.TypeOf(out).Elem(); /* */ $s = 20; case 20: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
 69316  					/* */ if (!($interfaceIsEqual(_r$8, bigIntType))) { $s = 18; continue; }
 69317  					/* */ $s = 19; continue;
 69318  					/* if (!($interfaceIsEqual(_r$8, bigIntType))) { */ case 18:
 69319  						$panic(new $String("invalid integer type"));
 69320  					/* } */ case 19:
 69321  					_r$9 = reflect.TypeOf(defaultValue).Kind(); /* */ $s = 24; case 24: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 69322  					if (!((_r$9 === 22))) { _v = true; $s = 23; continue s; }
 69323  					_r$10 = reflect.TypeOf(defaultValue).Elem(); /* */ $s = 25; case 25: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
 69324  					_v = !($interfaceIsEqual(_r$10, bigIntType)); case 23:
 69325  					/* */ if (_v) { $s = 21; continue; }
 69326  					/* */ $s = 22; continue;
 69327  					/* if (_v) { */ case 21:
 69328  						$panic(new $String("out points to big.Int, but defaultValue does not"));
 69329  					/* } */ case 22:
 69330  					$assertType(out, ptrType).Set($assertType(defaultValue, ptrType));
 69331  					$s = 13; continue;
 69332  				/* } else { */ case 12:
 69333  					$panic(new $String("invalid integer type"));
 69334  				/* } */ case 13:
 69335  			case 6:
 69336  			$s = -1; return true;
 69337  		/* } */ case 5:
 69338  		_r$11 = (i.$ptr || (i.$ptr = new ptrType$1(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, i))).ReadASN1Integer(out); /* */ $s = 28; case 28: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; }
 69339  		/* */ if (!_r$11 || !i[0].Empty()) { $s = 26; continue; }
 69340  		/* */ $s = 27; continue;
 69341  		/* if (!_r$11 || !i[0].Empty()) { */ case 26:
 69342  			$s = -1; return false;
 69343  		/* } */ case 27:
 69344  		$s = -1; return true;
 69345  		/* */ } return; } if ($f === undefined) { $f = { $blk: $ptrType(String).prototype.ReadOptionalASN1Integer }; } $f._1 = _1; $f._r$1 = _r$1; $f._r$10 = _r$10; $f._r$11 = _r$11; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._r$8 = _r$8; $f._r$9 = _r$9; $f._v = _v; $f.defaultValue = defaultValue; $f.i = i; $f.out = out; $f.present = present; $f.s = s; $f.tag = tag; $f.$s = $s; $f.$r = $r; return $f;
 69346  	};
 69347  	$ptrType(String).prototype.ReadOptionalASN1OctetString = function(out, outPresent, tag) {
 69348  		var child, child$24ptr, oct, oct$24ptr, out, outPresent, present, present$24ptr, s, tag;
 69349  		s = this;
 69350  		present = false;
 69351  		child = String.nil;
 69352  		if (!s.ReadOptionalASN1((child$24ptr || (child$24ptr = new ptrType$1(function() { return child; }, function($v) { child = $subslice(new String($v.$array), $v.$offset, $v.$offset + $v.$length); }))), (present$24ptr || (present$24ptr = new ptrType$6(function() { return present; }, function($v) { present = $v; }))), tag)) {
 69353  			return false;
 69354  		}
 69355  		if (!(outPresent === ptrType$6.nil)) {
 69356  			outPresent.$set(present);
 69357  		}
 69358  		if (present) {
 69359  			oct = String.nil;
 69360  			if (!(child$24ptr || (child$24ptr = new ptrType$1(function() { return child; }, function($v) { child = $subslice(new String($v.$array), $v.$offset, $v.$offset + $v.$length); }))).ReadASN1((oct$24ptr || (oct$24ptr = new ptrType$1(function() { return oct; }, function($v) { oct = $subslice(new String($v.$array), $v.$offset, $v.$offset + $v.$length); }))), 4) || !child.Empty()) {
 69361  				return false;
 69362  			}
 69363  			out.$set($subslice(new sliceType(oct.$array), oct.$offset, oct.$offset + oct.$length));
 69364  		} else {
 69365  			out.$set(sliceType.nil);
 69366  		}
 69367  		return true;
 69368  	};
 69369  	$ptrType(String).prototype.ReadOptionalASN1Boolean = function(out, defaultValue) {
 69370  		var child, child$24ptr, defaultValue, out, present, present$24ptr, s;
 69371  		s = this;
 69372  		present = false;
 69373  		child = String.nil;
 69374  		if (!s.ReadOptionalASN1((child$24ptr || (child$24ptr = new ptrType$1(function() { return child; }, function($v) { child = $subslice(new String($v.$array), $v.$offset, $v.$offset + $v.$length); }))), (present$24ptr || (present$24ptr = new ptrType$6(function() { return present; }, function($v) { present = $v; }))), 1)) {
 69375  			return false;
 69376  		}
 69377  		if (!present) {
 69378  			out.$set(defaultValue);
 69379  			return true;
 69380  		}
 69381  		return s.ReadASN1Boolean(out);
 69382  	};
 69383  	$ptrType(String).prototype.readASN1 = function(out, outTag, skipHeader) {
 69384  		var _ptr, _tmp, _tmp$1, _tmp$2, _tmp$3, headerLen, len32, len32$24ptr, lenByte, lenBytes, lenBytes$24ptr, lenLen, length, out, outTag, s, skipHeader, tag, x, x$1, x$2, y;
 69385  		s = this;
 69386  		if (s.$get().$length < 2) {
 69387  			return false;
 69388  		}
 69389  		_tmp = (x = s.$get(), (0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0]));
 69390  		_tmp$1 = (x$1 = s.$get(), (1 >= x$1.$length ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + 1]));
 69391  		tag = _tmp;
 69392  		lenByte = _tmp$1;
 69393  		if (((tag & 31) >>> 0) === 31) {
 69394  			return false;
 69395  		}
 69396  		if (!(outTag === ptrType$5.nil)) {
 69397  			outTag.$set(((tag << 24 >>> 24)));
 69398  		}
 69399  		_tmp$2 = 0;
 69400  		_tmp$3 = 0;
 69401  		length = _tmp$2;
 69402  		headerLen = _tmp$3;
 69403  		if (((lenByte & 128) >>> 0) === 0) {
 69404  			length = ((lenByte >>> 0)) + 2 >>> 0;
 69405  			headerLen = 2;
 69406  		} else {
 69407  			lenLen = (lenByte & 127) >>> 0;
 69408  			len32 = 0;
 69409  			if ((lenLen === 0) || lenLen > 4 || s.$get().$length < (((2 + lenLen << 24 >>> 24) >> 0))) {
 69410  				return false;
 69411  			}
 69412  			lenBytes = ($subslice((s.$get()), 2, (2 + lenLen << 24 >>> 24)));
 69413  			if (!(lenBytes$24ptr || (lenBytes$24ptr = new ptrType$1(function() { return lenBytes; }, function($v) { lenBytes = $subslice(new String($v.$array), $v.$offset, $v.$offset + $v.$length); }))).readUnsigned((len32$24ptr || (len32$24ptr = new ptrType$7(function() { return len32; }, function($v) { len32 = $v; }))), ((lenLen >> 0)))) {
 69414  				return false;
 69415  			}
 69416  			if (len32 < 128) {
 69417  				return false;
 69418  			}
 69419  			if (((y = ((((lenLen - 1 << 24 >>> 24)) * 8 << 24 >>> 24)), y < 32 ? (len32 >>> y) : 0) >>> 0) === 0) {
 69420  				return false;
 69421  			}
 69422  			headerLen = 2 + ((lenLen >>> 0)) >>> 0;
 69423  			if ((headerLen + len32 >>> 0) < len32) {
 69424  				return false;
 69425  			}
 69426  			length = headerLen + len32 >>> 0;
 69427  		}
 69428  		if (!((((((length >> 0)) >>> 0)) === length)) || !s.ReadBytes(((_ptr = out, new ptrType$8(function() { return (x$2 = _ptr.$get(), $subslice(new sliceType(x$2.$array), x$2.$offset, x$2.$offset + x$2.$length)); }, function($v) { _ptr.$set($subslice(new String($v.$array), $v.$offset, $v.$offset + $v.$length)); }, _ptr.$target))), ((length >> 0)))) {
 69429  			return false;
 69430  		}
 69431  		if (skipHeader && !out.Skip(((headerLen >> 0)))) {
 69432  			$panic(new $String("cryptobyte: internal error"));
 69433  		}
 69434  		return true;
 69435  	};
 69436  	$ptrType(String).prototype.read = function(n) {
 69437  		var n, s, v;
 69438  		s = this;
 69439  		if (s.$get().$length < n) {
 69440  			return sliceType.nil;
 69441  		}
 69442  		v = $subslice((s.$get()), 0, n);
 69443  		s.$set($subslice((s.$get()), n));
 69444  		return $subslice(new sliceType(v.$array), v.$offset, v.$offset + v.$length);
 69445  	};
 69446  	$ptrType(String).prototype.Skip = function(n) {
 69447  		var n, s;
 69448  		s = this;
 69449  		return !(s.read(n) === sliceType.nil);
 69450  	};
 69451  	$ptrType(String).prototype.ReadUint8 = function(out) {
 69452  		var out, s, v;
 69453  		s = this;
 69454  		v = s.read(1);
 69455  		if (v === sliceType.nil) {
 69456  			return false;
 69457  		}
 69458  		out.$set(((0 >= v.$length ? ($throwRuntimeError("index out of range"), undefined) : v.$array[v.$offset + 0])));
 69459  		return true;
 69460  	};
 69461  	$ptrType(String).prototype.ReadUint16 = function(out) {
 69462  		var out, s, v;
 69463  		s = this;
 69464  		v = s.read(2);
 69465  		if (v === sliceType.nil) {
 69466  			return false;
 69467  		}
 69468  		out.$set((((((0 >= v.$length ? ($throwRuntimeError("index out of range"), undefined) : v.$array[v.$offset + 0]) << 16 >>> 16)) << 8 << 16 >>> 16) | (((1 >= v.$length ? ($throwRuntimeError("index out of range"), undefined) : v.$array[v.$offset + 1]) << 16 >>> 16))) >>> 0);
 69469  		return true;
 69470  	};
 69471  	$ptrType(String).prototype.ReadUint24 = function(out) {
 69472  		var out, s, v;
 69473  		s = this;
 69474  		v = s.read(3);
 69475  		if (v === sliceType.nil) {
 69476  			return false;
 69477  		}
 69478  		out.$set((((((((0 >= v.$length ? ($throwRuntimeError("index out of range"), undefined) : v.$array[v.$offset + 0]) >>> 0)) << 16 >>> 0) | ((((1 >= v.$length ? ($throwRuntimeError("index out of range"), undefined) : v.$array[v.$offset + 1]) >>> 0)) << 8 >>> 0)) >>> 0) | (((2 >= v.$length ? ($throwRuntimeError("index out of range"), undefined) : v.$array[v.$offset + 2]) >>> 0))) >>> 0);
 69479  		return true;
 69480  	};
 69481  	$ptrType(String).prototype.ReadUint32 = function(out) {
 69482  		var out, s, v;
 69483  		s = this;
 69484  		v = s.read(4);
 69485  		if (v === sliceType.nil) {
 69486  			return false;
 69487  		}
 69488  		out.$set((((((((((0 >= v.$length ? ($throwRuntimeError("index out of range"), undefined) : v.$array[v.$offset + 0]) >>> 0)) << 24 >>> 0) | ((((1 >= v.$length ? ($throwRuntimeError("index out of range"), undefined) : v.$array[v.$offset + 1]) >>> 0)) << 16 >>> 0)) >>> 0) | ((((2 >= v.$length ? ($throwRuntimeError("index out of range"), undefined) : v.$array[v.$offset + 2]) >>> 0)) << 8 >>> 0)) >>> 0) | (((3 >= v.$length ? ($throwRuntimeError("index out of range"), undefined) : v.$array[v.$offset + 3]) >>> 0))) >>> 0);
 69489  		return true;
 69490  	};
 69491  	$ptrType(String).prototype.readUnsigned = function(out, length) {
 69492  		var i, length, out, result, s, v, y;
 69493  		s = this;
 69494  		v = s.read(length);
 69495  		if (v === sliceType.nil) {
 69496  			return false;
 69497  		}
 69498  		result = 0;
 69499  		i = 0;
 69500  		while (true) {
 69501  			if (!(i < length)) { break; }
 69502  			result = (y = (8), y < 32 ? (result << y) : 0) >>> 0;
 69503  			result = (result | (((((i < 0 || i >= v.$length) ? ($throwRuntimeError("index out of range"), undefined) : v.$array[v.$offset + i]) >>> 0)))) >>> 0;
 69504  			i = i + (1) >> 0;
 69505  		}
 69506  		out.$set(result);
 69507  		return true;
 69508  	};
 69509  	$ptrType(String).prototype.readLengthPrefixed = function(lenLen, outChild) {
 69510  		var _i, _ref, b, lenBytes, lenLen, length, outChild, s, v;
 69511  		s = this;
 69512  		lenBytes = s.read(lenLen);
 69513  		if (lenBytes === sliceType.nil) {
 69514  			return false;
 69515  		}
 69516  		length = 0;
 69517  		_ref = lenBytes;
 69518  		_i = 0;
 69519  		while (true) {
 69520  			if (!(_i < _ref.$length)) { break; }
 69521  			b = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
 69522  			length = length << 8 >>> 0;
 69523  			length = (length | ((b >>> 0))) >>> 0;
 69524  			_i++;
 69525  		}
 69526  		if (((length >> 0)) < 0) {
 69527  			return false;
 69528  		}
 69529  		v = s.read(((length >> 0)));
 69530  		if (v === sliceType.nil) {
 69531  			return false;
 69532  		}
 69533  		outChild.$set($subslice(new String(v.$array), v.$offset, v.$offset + v.$length));
 69534  		return true;
 69535  	};
 69536  	$ptrType(String).prototype.ReadUint8LengthPrefixed = function(out) {
 69537  		var out, s;
 69538  		s = this;
 69539  		return s.readLengthPrefixed(1, out);
 69540  	};
 69541  	$ptrType(String).prototype.ReadUint16LengthPrefixed = function(out) {
 69542  		var out, s;
 69543  		s = this;
 69544  		return s.readLengthPrefixed(2, out);
 69545  	};
 69546  	$ptrType(String).prototype.ReadUint24LengthPrefixed = function(out) {
 69547  		var out, s;
 69548  		s = this;
 69549  		return s.readLengthPrefixed(3, out);
 69550  	};
 69551  	$ptrType(String).prototype.ReadBytes = function(out, n) {
 69552  		var n, out, s, v;
 69553  		s = this;
 69554  		v = s.read(n);
 69555  		if (v === sliceType.nil) {
 69556  			return false;
 69557  		}
 69558  		out.$set(v);
 69559  		return true;
 69560  	};
 69561  	$ptrType(String).prototype.CopyBytes = function(out) {
 69562  		var n, out, s, v;
 69563  		s = this;
 69564  		n = out.$length;
 69565  		v = s.read(n);
 69566  		if (v === sliceType.nil) {
 69567  			return false;
 69568  		}
 69569  		return $copySlice(out, v) === n;
 69570  	};
 69571  	String.prototype.Empty = function() {
 69572  		var s;
 69573  		s = this;
 69574  		return s.$length === 0;
 69575  	};
 69576  	$ptrType(String).prototype.Empty = function() { return this.$get().Empty(); };
 69577  	String.methods = [{prop: "PeekASN1Tag", name: "PeekASN1Tag", pkg: "", typ: $funcType([asn1$1.Tag], [$Bool], false)}, {prop: "Empty", name: "Empty", pkg: "", typ: $funcType([], [$Bool], false)}];
 69578  	ptrType$1.methods = [{prop: "ReadASN1Boolean", name: "ReadASN1Boolean", pkg: "", typ: $funcType([ptrType$6], [$Bool], false)}, {prop: "ReadASN1Integer", name: "ReadASN1Integer", pkg: "", typ: $funcType([$emptyInterface], [$Bool], false)}, {prop: "readASN1BigInt", name: "readASN1BigInt", pkg: "vendor/golang_org/x/crypto/cryptobyte", typ: $funcType([ptrType], [$Bool], false)}, {prop: "readASN1Int64", name: "readASN1Int64", pkg: "vendor/golang_org/x/crypto/cryptobyte", typ: $funcType([ptrType$2], [$Bool], false)}, {prop: "readASN1Uint64", name: "readASN1Uint64", pkg: "vendor/golang_org/x/crypto/cryptobyte", typ: $funcType([ptrType$3], [$Bool], false)}, {prop: "ReadASN1Enum", name: "ReadASN1Enum", pkg: "", typ: $funcType([ptrType$4], [$Bool], false)}, {prop: "readBase128Int", name: "readBase128Int", pkg: "vendor/golang_org/x/crypto/cryptobyte", typ: $funcType([ptrType$4], [$Bool], false)}, {prop: "ReadASN1ObjectIdentifier", name: "ReadASN1ObjectIdentifier", pkg: "", typ: $funcType([ptrType$10], [$Bool], false)}, {prop: "ReadASN1GeneralizedTime", name: "ReadASN1GeneralizedTime", pkg: "", typ: $funcType([ptrType$11], [$Bool], false)}, {prop: "ReadASN1BitString", name: "ReadASN1BitString", pkg: "", typ: $funcType([ptrType$12], [$Bool], false)}, {prop: "ReadASN1BitStringAsBytes", name: "ReadASN1BitStringAsBytes", pkg: "", typ: $funcType([ptrType$8], [$Bool], false)}, {prop: "ReadASN1Bytes", name: "ReadASN1Bytes", pkg: "", typ: $funcType([ptrType$8, asn1$1.Tag], [$Bool], false)}, {prop: "ReadASN1", name: "ReadASN1", pkg: "", typ: $funcType([ptrType$1, asn1$1.Tag], [$Bool], false)}, {prop: "ReadASN1Element", name: "ReadASN1Element", pkg: "", typ: $funcType([ptrType$1, asn1$1.Tag], [$Bool], false)}, {prop: "ReadAnyASN1", name: "ReadAnyASN1", pkg: "", typ: $funcType([ptrType$1, ptrType$5], [$Bool], false)}, {prop: "ReadAnyASN1Element", name: "ReadAnyASN1Element", pkg: "", typ: $funcType([ptrType$1, ptrType$5], [$Bool], false)}, {prop: "SkipASN1", name: "SkipASN1", pkg: "", typ: $funcType([asn1$1.Tag], [$Bool], false)}, {prop: "ReadOptionalASN1", name: "ReadOptionalASN1", pkg: "", typ: $funcType([ptrType$1, ptrType$6, asn1$1.Tag], [$Bool], false)}, {prop: "SkipOptionalASN1", name: "SkipOptionalASN1", pkg: "", typ: $funcType([asn1$1.Tag], [$Bool], false)}, {prop: "ReadOptionalASN1Integer", name: "ReadOptionalASN1Integer", pkg: "", typ: $funcType([$emptyInterface, asn1$1.Tag, $emptyInterface], [$Bool], false)}, {prop: "ReadOptionalASN1OctetString", name: "ReadOptionalASN1OctetString", pkg: "", typ: $funcType([ptrType$8, ptrType$6, asn1$1.Tag], [$Bool], false)}, {prop: "ReadOptionalASN1Boolean", name: "ReadOptionalASN1Boolean", pkg: "", typ: $funcType([ptrType$6, $Bool], [$Bool], false)}, {prop: "readASN1", name: "readASN1", pkg: "vendor/golang_org/x/crypto/cryptobyte", typ: $funcType([ptrType$1, ptrType$5, $Bool], [$Bool], false)}, {prop: "read", name: "read", pkg: "vendor/golang_org/x/crypto/cryptobyte", typ: $funcType([$Int], [sliceType], false)}, {prop: "Skip", name: "Skip", pkg: "", typ: $funcType([$Int], [$Bool], false)}, {prop: "ReadUint8", name: "ReadUint8", pkg: "", typ: $funcType([ptrType$13], [$Bool], false)}, {prop: "ReadUint16", name: "ReadUint16", pkg: "", typ: $funcType([ptrType$14], [$Bool], false)}, {prop: "ReadUint24", name: "ReadUint24", pkg: "", typ: $funcType([ptrType$7], [$Bool], false)}, {prop: "ReadUint32", name: "ReadUint32", pkg: "", typ: $funcType([ptrType$7], [$Bool], false)}, {prop: "readUnsigned", name: "readUnsigned", pkg: "vendor/golang_org/x/crypto/cryptobyte", typ: $funcType([ptrType$7, $Int], [$Bool], false)}, {prop: "readLengthPrefixed", name: "readLengthPrefixed", pkg: "vendor/golang_org/x/crypto/cryptobyte", typ: $funcType([$Int, ptrType$1], [$Bool], false)}, {prop: "ReadUint8LengthPrefixed", name: "ReadUint8LengthPrefixed", pkg: "", typ: $funcType([ptrType$1], [$Bool], false)}, {prop: "ReadUint16LengthPrefixed", name: "ReadUint16LengthPrefixed", pkg: "", typ: $funcType([ptrType$1], [$Bool], false)}, {prop: "ReadUint24LengthPrefixed", name: "ReadUint24LengthPrefixed", pkg: "", typ: $funcType([ptrType$1], [$Bool], false)}, {prop: "ReadBytes", name: "ReadBytes", pkg: "", typ: $funcType([ptrType$8, $Int], [$Bool], false)}, {prop: "CopyBytes", name: "CopyBytes", pkg: "", typ: $funcType([sliceType], [$Bool], false)}];
 69579  	String.init($Uint8);
 69580  	$init = function() {
 69581  		$pkg.$init = function() {};
 69582  		/* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 69583  		$r = asn1.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 69584  		$r = errors.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 69585  		$r = fmt.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 69586  		$r = big.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 69587  		$r = reflect.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 69588  		$r = time.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 69589  		$r = asn1$1.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 69590  		_r = reflect.TypeOf((ptrType.nil)).Elem(); /* */ $s = 8; case 8: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 69591  		bigIntType = _r;
 69592  		bigOne = big.NewInt(new $Int64(0, 1));
 69593  		/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
 69594  	};
 69595  	$pkg.$init = $init;
 69596  	return $pkg;
 69597  })();
 69598  $packages["crypto/x509"] = (function() {
 69599  	var $pkg = {}, $init, bytes, crypto, aes, cipher, des, dsa, ecdsa, elliptic, md5, rsa, sha1, sha256, sha512, pkix, asn1, hex, pem, errors, fmt, io, ioutil, big, net, url, os, reflect, runtime, strconv, strings, sync, time, utf8, cryptobyte, asn1$1, CertPool, pkcs1PrivateKey, pkcs1AdditionalRSAPrime, pkcs1PublicKey, pkcs8, ecPrivateKey, InvalidReason, CertificateInvalidError, HostnameError, UnknownAuthorityError, SystemRootsError, VerifyOptions, rfc2821Mailbox, certificate, tbsCertificate, dsaAlgorithmParameters, dsaSignature, ecdsaSignature, validity, publicKeyInfo, authKeyId, SignatureAlgorithm, PublicKeyAlgorithm, pssParameters, KeyUsage, ExtKeyUsage, Certificate, InsecureAlgorithmError, ConstraintViolationError, UnhandledCriticalExtension, basicConstraints, policyInformation, authorityInfoAccess, distributionPoint, distributionPointName, ptrType, sliceType$1, structType, sliceType$2, structType$1, sliceType$3, sliceType$4, sliceType$5, ptrType$1, sliceType$6, ptrType$2, sliceType$7, ptrType$4, sliceType$8, ptrType$5, sliceType$9, sliceType$10, ptrType$6, ptrType$7, sliceType$11, ptrType$8, sliceType$12, ptrType$9, ptrType$10, ptrType$11, sliceType$13, ptrType$12, ptrType$13, ptrType$14, sliceType$14, sliceType$15, ptrType$15, ptrType$16, sliceType$16, ptrType$17, sliceType$17, ptrType$18, sliceType$18, sliceType$19, ptrType$19, sliceType$20, ptrType$20, ptrType$21, ptrType$22, sliceType$21, ptrType$23, sliceType$22, ptrType$24, sliceType$24, sliceType$25, ptrType$27, mapType, ptrType$31, funcType$1, mapType$1, once, systemRoots, systemRootsErr, errNotParsed, publicKeyAlgoName, oidSignatureMD2WithRSA, oidSignatureMD5WithRSA, oidSignatureSHA1WithRSA, oidSignatureSHA256WithRSA, oidSignatureSHA384WithRSA, oidSignatureSHA512WithRSA, oidSignatureRSAPSS, oidSignatureDSAWithSHA1, oidSignatureDSAWithSHA256, oidSignatureECDSAWithSHA1, oidSignatureECDSAWithSHA256, oidSignatureECDSAWithSHA384, oidSignatureECDSAWithSHA512, oidSHA256, oidSHA384, oidSHA512, oidMGF1, oidISOSignatureSHA1WithRSA, signatureAlgorithmDetails, oidPublicKeyRSA, oidPublicKeyDSA, oidPublicKeyECDSA, oidNamedCurveP224, oidNamedCurveP256, oidNamedCurveP384, oidNamedCurveP521, oidExtKeyUsageAny, oidExtKeyUsageServerAuth, oidExtKeyUsageClientAuth, oidExtKeyUsageCodeSigning, oidExtKeyUsageEmailProtection, oidExtKeyUsageIPSECEndSystem, oidExtKeyUsageIPSECTunnel, oidExtKeyUsageIPSECUser, oidExtKeyUsageTimeStamping, oidExtKeyUsageOCSPSigning, oidExtKeyUsageMicrosoftServerGatedCrypto, oidExtKeyUsageNetscapeServerGatedCrypto, oidExtKeyUsageMicrosoftCommercialCodeSigning, oidExtKeyUsageMicrosoftKernelCodeSigning, extKeyUsageOIDs, entrustBrokenSPKI, oidExtensionAuthorityKeyId, oidExtensionSubjectAltName, oidExtensionAuthorityInfoAccess, oidAuthorityInfoAccessOcsp, oidAuthorityInfoAccessIssuers, loadSystemRoots, NewCertPool, ParsePKCS1PrivateKey, ParsePKCS8PrivateKey, systemRootsPool, initSystemRoots, ParseECPrivateKey, parseECPrivateKey, parseRFC2821Mailbox, domainToReverseLabels, matchEmailConstraint, matchURIConstraint, matchIPConstraint, matchDomainConstraint, ekuPermittedBy, appendToFreshChain, matchHostnames, toLowerCaseASCII, rsaPSSParameters, getSignatureAlgorithmFromAI, getPublicKeyAlgorithmFromOID, namedCurveFromOID, extKeyUsageFromOID, oidFromExtKeyUsage, signaturePublicKeyAlgoMismatchError, checkSignature, parsePublicKey, forEachSAN, parseSANExtension, isValidIPMask, parseNameConstraintsExtension, parseCertificate, ParseCertificate, oidInExtensions, isIA5String, signingParamsForPublicKey;
 69600  	bytes = $packages["bytes"];
 69601  	crypto = $packages["crypto"];
 69602  	aes = $packages["crypto/aes"];
 69603  	cipher = $packages["crypto/cipher"];
 69604  	des = $packages["crypto/des"];
 69605  	dsa = $packages["crypto/dsa"];
 69606  	ecdsa = $packages["crypto/ecdsa"];
 69607  	elliptic = $packages["crypto/elliptic"];
 69608  	md5 = $packages["crypto/md5"];
 69609  	rsa = $packages["crypto/rsa"];
 69610  	sha1 = $packages["crypto/sha1"];
 69611  	sha256 = $packages["crypto/sha256"];
 69612  	sha512 = $packages["crypto/sha512"];
 69613  	pkix = $packages["crypto/x509/pkix"];
 69614  	asn1 = $packages["encoding/asn1"];
 69615  	hex = $packages["encoding/hex"];
 69616  	pem = $packages["encoding/pem"];
 69617  	errors = $packages["errors"];
 69618  	fmt = $packages["fmt"];
 69619  	io = $packages["io"];
 69620  	ioutil = $packages["io/ioutil"];
 69621  	big = $packages["math/big"];
 69622  	net = $packages["net"];
 69623  	url = $packages["net/url"];
 69624  	os = $packages["os"];
 69625  	reflect = $packages["reflect"];
 69626  	runtime = $packages["runtime"];
 69627  	strconv = $packages["strconv"];
 69628  	strings = $packages["strings"];
 69629  	sync = $packages["sync"];
 69630  	time = $packages["time"];
 69631  	utf8 = $packages["unicode/utf8"];
 69632  	cryptobyte = $packages["vendor/golang_org/x/crypto/cryptobyte"];
 69633  	asn1$1 = $packages["vendor/golang_org/x/crypto/cryptobyte/asn1"];
 69634  	CertPool = $pkg.CertPool = $newType(0, $kindStruct, "x509.CertPool", true, "crypto/x509", true, function(bySubjectKeyId_, byName_, certs_) {
 69635  		this.$val = this;
 69636  		if (arguments.length === 0) {
 69637  			this.bySubjectKeyId = false;
 69638  			this.byName = false;
 69639  			this.certs = sliceType$6.nil;
 69640  			return;
 69641  		}
 69642  		this.bySubjectKeyId = bySubjectKeyId_;
 69643  		this.byName = byName_;
 69644  		this.certs = certs_;
 69645  	});
 69646  	pkcs1PrivateKey = $pkg.pkcs1PrivateKey = $newType(0, $kindStruct, "x509.pkcs1PrivateKey", true, "crypto/x509", false, function(Version_, N_, E_, D_, P_, Q_, Dp_, Dq_, Qinv_, AdditionalPrimes_) {
 69647  		this.$val = this;
 69648  		if (arguments.length === 0) {
 69649  			this.Version = 0;
 69650  			this.N = ptrType$4.nil;
 69651  			this.E = 0;
 69652  			this.D = ptrType$4.nil;
 69653  			this.P = ptrType$4.nil;
 69654  			this.Q = ptrType$4.nil;
 69655  			this.Dp = ptrType$4.nil;
 69656  			this.Dq = ptrType$4.nil;
 69657  			this.Qinv = ptrType$4.nil;
 69658  			this.AdditionalPrimes = sliceType$8.nil;
 69659  			return;
 69660  		}
 69661  		this.Version = Version_;
 69662  		this.N = N_;
 69663  		this.E = E_;
 69664  		this.D = D_;
 69665  		this.P = P_;
 69666  		this.Q = Q_;
 69667  		this.Dp = Dp_;
 69668  		this.Dq = Dq_;
 69669  		this.Qinv = Qinv_;
 69670  		this.AdditionalPrimes = AdditionalPrimes_;
 69671  	});
 69672  	pkcs1AdditionalRSAPrime = $pkg.pkcs1AdditionalRSAPrime = $newType(0, $kindStruct, "x509.pkcs1AdditionalRSAPrime", true, "crypto/x509", false, function(Prime_, Exp_, Coeff_) {
 69673  		this.$val = this;
 69674  		if (arguments.length === 0) {
 69675  			this.Prime = ptrType$4.nil;
 69676  			this.Exp = ptrType$4.nil;
 69677  			this.Coeff = ptrType$4.nil;
 69678  			return;
 69679  		}
 69680  		this.Prime = Prime_;
 69681  		this.Exp = Exp_;
 69682  		this.Coeff = Coeff_;
 69683  	});
 69684  	pkcs1PublicKey = $pkg.pkcs1PublicKey = $newType(0, $kindStruct, "x509.pkcs1PublicKey", true, "crypto/x509", false, function(N_, E_) {
 69685  		this.$val = this;
 69686  		if (arguments.length === 0) {
 69687  			this.N = ptrType$4.nil;
 69688  			this.E = 0;
 69689  			return;
 69690  		}
 69691  		this.N = N_;
 69692  		this.E = E_;
 69693  	});
 69694  	pkcs8 = $pkg.pkcs8 = $newType(0, $kindStruct, "x509.pkcs8", true, "crypto/x509", false, function(Version_, Algo_, PrivateKey_) {
 69695  		this.$val = this;
 69696  		if (arguments.length === 0) {
 69697  			this.Version = 0;
 69698  			this.Algo = new pkix.AlgorithmIdentifier.ptr(asn1.ObjectIdentifier.nil, new asn1.RawValue.ptr(0, 0, false, sliceType$4.nil, sliceType$4.nil));
 69699  			this.PrivateKey = sliceType$4.nil;
 69700  			return;
 69701  		}
 69702  		this.Version = Version_;
 69703  		this.Algo = Algo_;
 69704  		this.PrivateKey = PrivateKey_;
 69705  	});
 69706  	ecPrivateKey = $pkg.ecPrivateKey = $newType(0, $kindStruct, "x509.ecPrivateKey", true, "crypto/x509", false, function(Version_, PrivateKey_, NamedCurveOID_, PublicKey_) {
 69707  		this.$val = this;
 69708  		if (arguments.length === 0) {
 69709  			this.Version = 0;
 69710  			this.PrivateKey = sliceType$4.nil;
 69711  			this.NamedCurveOID = asn1.ObjectIdentifier.nil;
 69712  			this.PublicKey = new asn1.BitString.ptr(sliceType$4.nil, 0);
 69713  			return;
 69714  		}
 69715  		this.Version = Version_;
 69716  		this.PrivateKey = PrivateKey_;
 69717  		this.NamedCurveOID = NamedCurveOID_;
 69718  		this.PublicKey = PublicKey_;
 69719  	});
 69720  	InvalidReason = $pkg.InvalidReason = $newType(4, $kindInt, "x509.InvalidReason", true, "crypto/x509", true, null);
 69721  	CertificateInvalidError = $pkg.CertificateInvalidError = $newType(0, $kindStruct, "x509.CertificateInvalidError", true, "crypto/x509", true, function(Cert_, Reason_, Detail_) {
 69722  		this.$val = this;
 69723  		if (arguments.length === 0) {
 69724  			this.Cert = ptrType$1.nil;
 69725  			this.Reason = 0;
 69726  			this.Detail = "";
 69727  			return;
 69728  		}
 69729  		this.Cert = Cert_;
 69730  		this.Reason = Reason_;
 69731  		this.Detail = Detail_;
 69732  	});
 69733  	HostnameError = $pkg.HostnameError = $newType(0, $kindStruct, "x509.HostnameError", true, "crypto/x509", true, function(Certificate_, Host_) {
 69734  		this.$val = this;
 69735  		if (arguments.length === 0) {
 69736  			this.Certificate = ptrType$1.nil;
 69737  			this.Host = "";
 69738  			return;
 69739  		}
 69740  		this.Certificate = Certificate_;
 69741  		this.Host = Host_;
 69742  	});
 69743  	UnknownAuthorityError = $pkg.UnknownAuthorityError = $newType(0, $kindStruct, "x509.UnknownAuthorityError", true, "crypto/x509", true, function(Cert_, hintErr_, hintCert_) {
 69744  		this.$val = this;
 69745  		if (arguments.length === 0) {
 69746  			this.Cert = ptrType$1.nil;
 69747  			this.hintErr = $ifaceNil;
 69748  			this.hintCert = ptrType$1.nil;
 69749  			return;
 69750  		}
 69751  		this.Cert = Cert_;
 69752  		this.hintErr = hintErr_;
 69753  		this.hintCert = hintCert_;
 69754  	});
 69755  	SystemRootsError = $pkg.SystemRootsError = $newType(0, $kindStruct, "x509.SystemRootsError", true, "crypto/x509", true, function(Err_) {
 69756  		this.$val = this;
 69757  		if (arguments.length === 0) {
 69758  			this.Err = $ifaceNil;
 69759  			return;
 69760  		}
 69761  		this.Err = Err_;
 69762  	});
 69763  	VerifyOptions = $pkg.VerifyOptions = $newType(0, $kindStruct, "x509.VerifyOptions", true, "crypto/x509", true, function(DNSName_, Intermediates_, Roots_, CurrentTime_, KeyUsages_, MaxConstraintComparisions_) {
 69764  		this.$val = this;
 69765  		if (arguments.length === 0) {
 69766  			this.DNSName = "";
 69767  			this.Intermediates = ptrType.nil;
 69768  			this.Roots = ptrType.nil;
 69769  			this.CurrentTime = new time.Time.ptr(new $Uint64(0, 0), new $Int64(0, 0), ptrType$18.nil);
 69770  			this.KeyUsages = sliceType$13.nil;
 69771  			this.MaxConstraintComparisions = 0;
 69772  			return;
 69773  		}
 69774  		this.DNSName = DNSName_;
 69775  		this.Intermediates = Intermediates_;
 69776  		this.Roots = Roots_;
 69777  		this.CurrentTime = CurrentTime_;
 69778  		this.KeyUsages = KeyUsages_;
 69779  		this.MaxConstraintComparisions = MaxConstraintComparisions_;
 69780  	});
 69781  	rfc2821Mailbox = $pkg.rfc2821Mailbox = $newType(0, $kindStruct, "x509.rfc2821Mailbox", true, "crypto/x509", false, function(local_, domain_) {
 69782  		this.$val = this;
 69783  		if (arguments.length === 0) {
 69784  			this.local = "";
 69785  			this.domain = "";
 69786  			return;
 69787  		}
 69788  		this.local = local_;
 69789  		this.domain = domain_;
 69790  	});
 69791  	certificate = $pkg.certificate = $newType(0, $kindStruct, "x509.certificate", true, "crypto/x509", false, function(Raw_, TBSCertificate_, SignatureAlgorithm_, SignatureValue_) {
 69792  		this.$val = this;
 69793  		if (arguments.length === 0) {
 69794  			this.Raw = asn1.RawContent.nil;
 69795  			this.TBSCertificate = new tbsCertificate.ptr(asn1.RawContent.nil, 0, ptrType$4.nil, new pkix.AlgorithmIdentifier.ptr(asn1.ObjectIdentifier.nil, new asn1.RawValue.ptr(0, 0, false, sliceType$4.nil, sliceType$4.nil)), new asn1.RawValue.ptr(0, 0, false, sliceType$4.nil, sliceType$4.nil), new validity.ptr(new time.Time.ptr(new $Uint64(0, 0), new $Int64(0, 0), ptrType$18.nil), new time.Time.ptr(new $Uint64(0, 0), new $Int64(0, 0), ptrType$18.nil)), new asn1.RawValue.ptr(0, 0, false, sliceType$4.nil, sliceType$4.nil), new publicKeyInfo.ptr(asn1.RawContent.nil, new pkix.AlgorithmIdentifier.ptr(asn1.ObjectIdentifier.nil, new asn1.RawValue.ptr(0, 0, false, sliceType$4.nil, sliceType$4.nil)), new asn1.BitString.ptr(sliceType$4.nil, 0)), new asn1.BitString.ptr(sliceType$4.nil, 0), new asn1.BitString.ptr(sliceType$4.nil, 0), sliceType$18.nil);
 69796  			this.SignatureAlgorithm = new pkix.AlgorithmIdentifier.ptr(asn1.ObjectIdentifier.nil, new asn1.RawValue.ptr(0, 0, false, sliceType$4.nil, sliceType$4.nil));
 69797  			this.SignatureValue = new asn1.BitString.ptr(sliceType$4.nil, 0);
 69798  			return;
 69799  		}
 69800  		this.Raw = Raw_;
 69801  		this.TBSCertificate = TBSCertificate_;
 69802  		this.SignatureAlgorithm = SignatureAlgorithm_;
 69803  		this.SignatureValue = SignatureValue_;
 69804  	});
 69805  	tbsCertificate = $pkg.tbsCertificate = $newType(0, $kindStruct, "x509.tbsCertificate", true, "crypto/x509", false, function(Raw_, Version_, SerialNumber_, SignatureAlgorithm_, Issuer_, Validity_, Subject_, PublicKey_, UniqueId_, SubjectUniqueId_, Extensions_) {
 69806  		this.$val = this;
 69807  		if (arguments.length === 0) {
 69808  			this.Raw = asn1.RawContent.nil;
 69809  			this.Version = 0;
 69810  			this.SerialNumber = ptrType$4.nil;
 69811  			this.SignatureAlgorithm = new pkix.AlgorithmIdentifier.ptr(asn1.ObjectIdentifier.nil, new asn1.RawValue.ptr(0, 0, false, sliceType$4.nil, sliceType$4.nil));
 69812  			this.Issuer = new asn1.RawValue.ptr(0, 0, false, sliceType$4.nil, sliceType$4.nil);
 69813  			this.Validity = new validity.ptr(new time.Time.ptr(new $Uint64(0, 0), new $Int64(0, 0), ptrType$18.nil), new time.Time.ptr(new $Uint64(0, 0), new $Int64(0, 0), ptrType$18.nil));
 69814  			this.Subject = new asn1.RawValue.ptr(0, 0, false, sliceType$4.nil, sliceType$4.nil);
 69815  			this.PublicKey = new publicKeyInfo.ptr(asn1.RawContent.nil, new pkix.AlgorithmIdentifier.ptr(asn1.ObjectIdentifier.nil, new asn1.RawValue.ptr(0, 0, false, sliceType$4.nil, sliceType$4.nil)), new asn1.BitString.ptr(sliceType$4.nil, 0));
 69816  			this.UniqueId = new asn1.BitString.ptr(sliceType$4.nil, 0);
 69817  			this.SubjectUniqueId = new asn1.BitString.ptr(sliceType$4.nil, 0);
 69818  			this.Extensions = sliceType$18.nil;
 69819  			return;
 69820  		}
 69821  		this.Raw = Raw_;
 69822  		this.Version = Version_;
 69823  		this.SerialNumber = SerialNumber_;
 69824  		this.SignatureAlgorithm = SignatureAlgorithm_;
 69825  		this.Issuer = Issuer_;
 69826  		this.Validity = Validity_;
 69827  		this.Subject = Subject_;
 69828  		this.PublicKey = PublicKey_;
 69829  		this.UniqueId = UniqueId_;
 69830  		this.SubjectUniqueId = SubjectUniqueId_;
 69831  		this.Extensions = Extensions_;
 69832  	});
 69833  	dsaAlgorithmParameters = $pkg.dsaAlgorithmParameters = $newType(0, $kindStruct, "x509.dsaAlgorithmParameters", true, "crypto/x509", false, function(P_, Q_, G_) {
 69834  		this.$val = this;
 69835  		if (arguments.length === 0) {
 69836  			this.P = ptrType$4.nil;
 69837  			this.Q = ptrType$4.nil;
 69838  			this.G = ptrType$4.nil;
 69839  			return;
 69840  		}
 69841  		this.P = P_;
 69842  		this.Q = Q_;
 69843  		this.G = G_;
 69844  	});
 69845  	dsaSignature = $pkg.dsaSignature = $newType(0, $kindStruct, "x509.dsaSignature", true, "crypto/x509", false, function(R_, S_) {
 69846  		this.$val = this;
 69847  		if (arguments.length === 0) {
 69848  			this.R = ptrType$4.nil;
 69849  			this.S = ptrType$4.nil;
 69850  			return;
 69851  		}
 69852  		this.R = R_;
 69853  		this.S = S_;
 69854  	});
 69855  	ecdsaSignature = $pkg.ecdsaSignature = $newType(0, $kindStruct, "x509.ecdsaSignature", true, "crypto/x509", false, function(R_, S_) {
 69856  		this.$val = this;
 69857  		if (arguments.length === 0) {
 69858  			this.R = ptrType$4.nil;
 69859  			this.S = ptrType$4.nil;
 69860  			return;
 69861  		}
 69862  		this.R = R_;
 69863  		this.S = S_;
 69864  	});
 69865  	validity = $pkg.validity = $newType(0, $kindStruct, "x509.validity", true, "crypto/x509", false, function(NotBefore_, NotAfter_) {
 69866  		this.$val = this;
 69867  		if (arguments.length === 0) {
 69868  			this.NotBefore = new time.Time.ptr(new $Uint64(0, 0), new $Int64(0, 0), ptrType$18.nil);
 69869  			this.NotAfter = new time.Time.ptr(new $Uint64(0, 0), new $Int64(0, 0), ptrType$18.nil);
 69870  			return;
 69871  		}
 69872  		this.NotBefore = NotBefore_;
 69873  		this.NotAfter = NotAfter_;
 69874  	});
 69875  	publicKeyInfo = $pkg.publicKeyInfo = $newType(0, $kindStruct, "x509.publicKeyInfo", true, "crypto/x509", false, function(Raw_, Algorithm_, PublicKey_) {
 69876  		this.$val = this;
 69877  		if (arguments.length === 0) {
 69878  			this.Raw = asn1.RawContent.nil;
 69879  			this.Algorithm = new pkix.AlgorithmIdentifier.ptr(asn1.ObjectIdentifier.nil, new asn1.RawValue.ptr(0, 0, false, sliceType$4.nil, sliceType$4.nil));
 69880  			this.PublicKey = new asn1.BitString.ptr(sliceType$4.nil, 0);
 69881  			return;
 69882  		}
 69883  		this.Raw = Raw_;
 69884  		this.Algorithm = Algorithm_;
 69885  		this.PublicKey = PublicKey_;
 69886  	});
 69887  	authKeyId = $pkg.authKeyId = $newType(0, $kindStruct, "x509.authKeyId", true, "crypto/x509", false, function(Id_) {
 69888  		this.$val = this;
 69889  		if (arguments.length === 0) {
 69890  			this.Id = sliceType$4.nil;
 69891  			return;
 69892  		}
 69893  		this.Id = Id_;
 69894  	});
 69895  	SignatureAlgorithm = $pkg.SignatureAlgorithm = $newType(4, $kindInt, "x509.SignatureAlgorithm", true, "crypto/x509", true, null);
 69896  	PublicKeyAlgorithm = $pkg.PublicKeyAlgorithm = $newType(4, $kindInt, "x509.PublicKeyAlgorithm", true, "crypto/x509", true, null);
 69897  	pssParameters = $pkg.pssParameters = $newType(0, $kindStruct, "x509.pssParameters", true, "crypto/x509", false, function(Hash_, MGF_, SaltLength_, TrailerField_) {
 69898  		this.$val = this;
 69899  		if (arguments.length === 0) {
 69900  			this.Hash = new pkix.AlgorithmIdentifier.ptr(asn1.ObjectIdentifier.nil, new asn1.RawValue.ptr(0, 0, false, sliceType$4.nil, sliceType$4.nil));
 69901  			this.MGF = new pkix.AlgorithmIdentifier.ptr(asn1.ObjectIdentifier.nil, new asn1.RawValue.ptr(0, 0, false, sliceType$4.nil, sliceType$4.nil));
 69902  			this.SaltLength = 0;
 69903  			this.TrailerField = 0;
 69904  			return;
 69905  		}
 69906  		this.Hash = Hash_;
 69907  		this.MGF = MGF_;
 69908  		this.SaltLength = SaltLength_;
 69909  		this.TrailerField = TrailerField_;
 69910  	});
 69911  	KeyUsage = $pkg.KeyUsage = $newType(4, $kindInt, "x509.KeyUsage", true, "crypto/x509", true, null);
 69912  	ExtKeyUsage = $pkg.ExtKeyUsage = $newType(4, $kindInt, "x509.ExtKeyUsage", true, "crypto/x509", true, null);
 69913  	Certificate = $pkg.Certificate = $newType(0, $kindStruct, "x509.Certificate", true, "crypto/x509", true, function(Raw_, RawTBSCertificate_, RawSubjectPublicKeyInfo_, RawSubject_, RawIssuer_, Signature_, SignatureAlgorithm_, PublicKeyAlgorithm_, PublicKey_, Version_, SerialNumber_, Issuer_, Subject_, NotBefore_, NotAfter_, KeyUsage_, Extensions_, ExtraExtensions_, UnhandledCriticalExtensions_, ExtKeyUsage_, UnknownExtKeyUsage_, BasicConstraintsValid_, IsCA_, MaxPathLen_, MaxPathLenZero_, SubjectKeyId_, AuthorityKeyId_, OCSPServer_, IssuingCertificateURL_, DNSNames_, EmailAddresses_, IPAddresses_, URIs_, PermittedDNSDomainsCritical_, PermittedDNSDomains_, ExcludedDNSDomains_, PermittedIPRanges_, ExcludedIPRanges_, PermittedEmailAddresses_, ExcludedEmailAddresses_, PermittedURIDomains_, ExcludedURIDomains_, CRLDistributionPoints_, PolicyIdentifiers_) {
 69914  		this.$val = this;
 69915  		if (arguments.length === 0) {
 69916  			this.Raw = sliceType$4.nil;
 69917  			this.RawTBSCertificate = sliceType$4.nil;
 69918  			this.RawSubjectPublicKeyInfo = sliceType$4.nil;
 69919  			this.RawSubject = sliceType$4.nil;
 69920  			this.RawIssuer = sliceType$4.nil;
 69921  			this.Signature = sliceType$4.nil;
 69922  			this.SignatureAlgorithm = 0;
 69923  			this.PublicKeyAlgorithm = 0;
 69924  			this.PublicKey = $ifaceNil;
 69925  			this.Version = 0;
 69926  			this.SerialNumber = ptrType$4.nil;
 69927  			this.Issuer = new pkix.Name.ptr(sliceType$1.nil, sliceType$1.nil, sliceType$1.nil, sliceType$1.nil, sliceType$1.nil, sliceType$1.nil, sliceType$1.nil, "", "", sliceType$17.nil, sliceType$17.nil);
 69928  			this.Subject = new pkix.Name.ptr(sliceType$1.nil, sliceType$1.nil, sliceType$1.nil, sliceType$1.nil, sliceType$1.nil, sliceType$1.nil, sliceType$1.nil, "", "", sliceType$17.nil, sliceType$17.nil);
 69929  			this.NotBefore = new time.Time.ptr(new $Uint64(0, 0), new $Int64(0, 0), ptrType$18.nil);
 69930  			this.NotAfter = new time.Time.ptr(new $Uint64(0, 0), new $Int64(0, 0), ptrType$18.nil);
 69931  			this.KeyUsage = 0;
 69932  			this.Extensions = sliceType$18.nil;
 69933  			this.ExtraExtensions = sliceType$18.nil;
 69934  			this.UnhandledCriticalExtensions = sliceType$19.nil;
 69935  			this.ExtKeyUsage = sliceType$13.nil;
 69936  			this.UnknownExtKeyUsage = sliceType$19.nil;
 69937  			this.BasicConstraintsValid = false;
 69938  			this.IsCA = false;
 69939  			this.MaxPathLen = 0;
 69940  			this.MaxPathLenZero = false;
 69941  			this.SubjectKeyId = sliceType$4.nil;
 69942  			this.AuthorityKeyId = sliceType$4.nil;
 69943  			this.OCSPServer = sliceType$1.nil;
 69944  			this.IssuingCertificateURL = sliceType$1.nil;
 69945  			this.DNSNames = sliceType$1.nil;
 69946  			this.EmailAddresses = sliceType$1.nil;
 69947  			this.IPAddresses = sliceType$14.nil;
 69948  			this.URIs = sliceType$15.nil;
 69949  			this.PermittedDNSDomainsCritical = false;
 69950  			this.PermittedDNSDomains = sliceType$1.nil;
 69951  			this.ExcludedDNSDomains = sliceType$1.nil;
 69952  			this.PermittedIPRanges = sliceType$16.nil;
 69953  			this.ExcludedIPRanges = sliceType$16.nil;
 69954  			this.PermittedEmailAddresses = sliceType$1.nil;
 69955  			this.ExcludedEmailAddresses = sliceType$1.nil;
 69956  			this.PermittedURIDomains = sliceType$1.nil;
 69957  			this.ExcludedURIDomains = sliceType$1.nil;
 69958  			this.CRLDistributionPoints = sliceType$1.nil;
 69959  			this.PolicyIdentifiers = sliceType$19.nil;
 69960  			return;
 69961  		}
 69962  		this.Raw = Raw_;
 69963  		this.RawTBSCertificate = RawTBSCertificate_;
 69964  		this.RawSubjectPublicKeyInfo = RawSubjectPublicKeyInfo_;
 69965  		this.RawSubject = RawSubject_;
 69966  		this.RawIssuer = RawIssuer_;
 69967  		this.Signature = Signature_;
 69968  		this.SignatureAlgorithm = SignatureAlgorithm_;
 69969  		this.PublicKeyAlgorithm = PublicKeyAlgorithm_;
 69970  		this.PublicKey = PublicKey_;
 69971  		this.Version = Version_;
 69972  		this.SerialNumber = SerialNumber_;
 69973  		this.Issuer = Issuer_;
 69974  		this.Subject = Subject_;
 69975  		this.NotBefore = NotBefore_;
 69976  		this.NotAfter = NotAfter_;
 69977  		this.KeyUsage = KeyUsage_;
 69978  		this.Extensions = Extensions_;
 69979  		this.ExtraExtensions = ExtraExtensions_;
 69980  		this.UnhandledCriticalExtensions = UnhandledCriticalExtensions_;
 69981  		this.ExtKeyUsage = ExtKeyUsage_;
 69982  		this.UnknownExtKeyUsage = UnknownExtKeyUsage_;
 69983  		this.BasicConstraintsValid = BasicConstraintsValid_;
 69984  		this.IsCA = IsCA_;
 69985  		this.MaxPathLen = MaxPathLen_;
 69986  		this.MaxPathLenZero = MaxPathLenZero_;
 69987  		this.SubjectKeyId = SubjectKeyId_;
 69988  		this.AuthorityKeyId = AuthorityKeyId_;
 69989  		this.OCSPServer = OCSPServer_;
 69990  		this.IssuingCertificateURL = IssuingCertificateURL_;
 69991  		this.DNSNames = DNSNames_;
 69992  		this.EmailAddresses = EmailAddresses_;
 69993  		this.IPAddresses = IPAddresses_;
 69994  		this.URIs = URIs_;
 69995  		this.PermittedDNSDomainsCritical = PermittedDNSDomainsCritical_;
 69996  		this.PermittedDNSDomains = PermittedDNSDomains_;
 69997  		this.ExcludedDNSDomains = ExcludedDNSDomains_;
 69998  		this.PermittedIPRanges = PermittedIPRanges_;
 69999  		this.ExcludedIPRanges = ExcludedIPRanges_;
 70000  		this.PermittedEmailAddresses = PermittedEmailAddresses_;
 70001  		this.ExcludedEmailAddresses = ExcludedEmailAddresses_;
 70002  		this.PermittedURIDomains = PermittedURIDomains_;
 70003  		this.ExcludedURIDomains = ExcludedURIDomains_;
 70004  		this.CRLDistributionPoints = CRLDistributionPoints_;
 70005  		this.PolicyIdentifiers = PolicyIdentifiers_;
 70006  	});
 70007  	InsecureAlgorithmError = $pkg.InsecureAlgorithmError = $newType(4, $kindInt, "x509.InsecureAlgorithmError", true, "crypto/x509", true, null);
 70008  	ConstraintViolationError = $pkg.ConstraintViolationError = $newType(0, $kindStruct, "x509.ConstraintViolationError", true, "crypto/x509", true, function() {
 70009  		this.$val = this;
 70010  		if (arguments.length === 0) {
 70011  			return;
 70012  		}
 70013  	});
 70014  	UnhandledCriticalExtension = $pkg.UnhandledCriticalExtension = $newType(0, $kindStruct, "x509.UnhandledCriticalExtension", true, "crypto/x509", true, function() {
 70015  		this.$val = this;
 70016  		if (arguments.length === 0) {
 70017  			return;
 70018  		}
 70019  	});
 70020  	basicConstraints = $pkg.basicConstraints = $newType(0, $kindStruct, "x509.basicConstraints", true, "crypto/x509", false, function(IsCA_, MaxPathLen_) {
 70021  		this.$val = this;
 70022  		if (arguments.length === 0) {
 70023  			this.IsCA = false;
 70024  			this.MaxPathLen = 0;
 70025  			return;
 70026  		}
 70027  		this.IsCA = IsCA_;
 70028  		this.MaxPathLen = MaxPathLen_;
 70029  	});
 70030  	policyInformation = $pkg.policyInformation = $newType(0, $kindStruct, "x509.policyInformation", true, "crypto/x509", false, function(Policy_) {
 70031  		this.$val = this;
 70032  		if (arguments.length === 0) {
 70033  			this.Policy = asn1.ObjectIdentifier.nil;
 70034  			return;
 70035  		}
 70036  		this.Policy = Policy_;
 70037  	});
 70038  	authorityInfoAccess = $pkg.authorityInfoAccess = $newType(0, $kindStruct, "x509.authorityInfoAccess", true, "crypto/x509", false, function(Method_, Location_) {
 70039  		this.$val = this;
 70040  		if (arguments.length === 0) {
 70041  			this.Method = asn1.ObjectIdentifier.nil;
 70042  			this.Location = new asn1.RawValue.ptr(0, 0, false, sliceType$4.nil, sliceType$4.nil);
 70043  			return;
 70044  		}
 70045  		this.Method = Method_;
 70046  		this.Location = Location_;
 70047  	});
 70048  	distributionPoint = $pkg.distributionPoint = $newType(0, $kindStruct, "x509.distributionPoint", true, "crypto/x509", false, function(DistributionPoint_, Reason_, CRLIssuer_) {
 70049  		this.$val = this;
 70050  		if (arguments.length === 0) {
 70051  			this.DistributionPoint = new distributionPointName.ptr(sliceType$24.nil, pkix.RDNSequence.nil);
 70052  			this.Reason = new asn1.BitString.ptr(sliceType$4.nil, 0);
 70053  			this.CRLIssuer = new asn1.RawValue.ptr(0, 0, false, sliceType$4.nil, sliceType$4.nil);
 70054  			return;
 70055  		}
 70056  		this.DistributionPoint = DistributionPoint_;
 70057  		this.Reason = Reason_;
 70058  		this.CRLIssuer = CRLIssuer_;
 70059  	});
 70060  	distributionPointName = $pkg.distributionPointName = $newType(0, $kindStruct, "x509.distributionPointName", true, "crypto/x509", false, function(FullName_, RelativeName_) {
 70061  		this.$val = this;
 70062  		if (arguments.length === 0) {
 70063  			this.FullName = sliceType$24.nil;
 70064  			this.RelativeName = pkix.RDNSequence.nil;
 70065  			return;
 70066  		}
 70067  		this.FullName = FullName_;
 70068  		this.RelativeName = RelativeName_;
 70069  	});
 70070  	ptrType = $ptrType(CertPool);
 70071  	sliceType$1 = $sliceType($String);
 70072  	structType = $structType("crypto/x509", [{prop: "algo", name: "algo", anonymous: false, exported: false, typ: SignatureAlgorithm, tag: ""}, {prop: "name", name: "name", anonymous: false, exported: false, typ: $String, tag: ""}, {prop: "oid", name: "oid", anonymous: false, exported: false, typ: asn1.ObjectIdentifier, tag: ""}, {prop: "pubKeyAlgo", name: "pubKeyAlgo", anonymous: false, exported: false, typ: PublicKeyAlgorithm, tag: ""}, {prop: "hash", name: "hash", anonymous: false, exported: false, typ: crypto.Hash, tag: ""}]);
 70073  	sliceType$2 = $sliceType(structType);
 70074  	structType$1 = $structType("crypto/x509", [{prop: "extKeyUsage", name: "extKeyUsage", anonymous: false, exported: false, typ: ExtKeyUsage, tag: ""}, {prop: "oid", name: "oid", anonymous: false, exported: false, typ: asn1.ObjectIdentifier, tag: ""}]);
 70075  	sliceType$3 = $sliceType(structType$1);
 70076  	sliceType$4 = $sliceType($Uint8);
 70077  	sliceType$5 = $sliceType($Int);
 70078  	ptrType$1 = $ptrType(Certificate);
 70079  	sliceType$6 = $sliceType(ptrType$1);
 70080  	ptrType$2 = $ptrType(pem.Block);
 70081  	sliceType$7 = $sliceType(sliceType$4);
 70082  	ptrType$4 = $ptrType(big.Int);
 70083  	sliceType$8 = $sliceType(pkcs1AdditionalRSAPrime);
 70084  	ptrType$5 = $ptrType(rsa.PrivateKey);
 70085  	sliceType$9 = $sliceType(ptrType$4);
 70086  	sliceType$10 = $sliceType(rsa.CRTValue);
 70087  	ptrType$6 = $ptrType(rsa.PublicKey);
 70088  	ptrType$7 = $ptrType(asn1.ObjectIdentifier);
 70089  	sliceType$11 = $sliceType($emptyInterface);
 70090  	ptrType$8 = $ptrType(ecdsa.PrivateKey);
 70091  	sliceType$12 = $sliceType(sliceType$6);
 70092  	ptrType$9 = $ptrType($Int);
 70093  	ptrType$10 = $ptrType(url.URL);
 70094  	ptrType$11 = $ptrType(net.IPNet);
 70095  	sliceType$13 = $sliceType(ExtKeyUsage);
 70096  	ptrType$12 = $ptrType(ecdsa.PublicKey);
 70097  	ptrType$13 = $ptrType(dsa.PublicKey);
 70098  	ptrType$14 = $ptrType(ptrType$4);
 70099  	sliceType$14 = $sliceType(net.IP);
 70100  	sliceType$15 = $sliceType(ptrType$10);
 70101  	ptrType$15 = $ptrType(cryptobyte.String);
 70102  	ptrType$16 = $ptrType($Bool);
 70103  	sliceType$16 = $sliceType(ptrType$11);
 70104  	ptrType$17 = $ptrType(asn1$1.Tag);
 70105  	sliceType$17 = $sliceType(pkix.AttributeTypeAndValue);
 70106  	ptrType$18 = $ptrType(time.Location);
 70107  	sliceType$18 = $sliceType(pkix.Extension);
 70108  	sliceType$19 = $sliceType(asn1.ObjectIdentifier);
 70109  	ptrType$19 = $ptrType(pkix.RDNSequence);
 70110  	sliceType$20 = $sliceType(distributionPoint);
 70111  	ptrType$20 = $ptrType(sliceType$20);
 70112  	ptrType$21 = $ptrType(sliceType$19);
 70113  	ptrType$22 = $ptrType(sliceType$4);
 70114  	sliceType$21 = $sliceType(policyInformation);
 70115  	ptrType$23 = $ptrType(sliceType$21);
 70116  	sliceType$22 = $sliceType(authorityInfoAccess);
 70117  	ptrType$24 = $ptrType(sliceType$22);
 70118  	sliceType$24 = $sliceType(asn1.RawValue);
 70119  	sliceType$25 = $sliceType(pkix.RevokedCertificate);
 70120  	ptrType$27 = $ptrType(pkix.CertificateList);
 70121  	mapType = $mapType($String, sliceType$5);
 70122  	ptrType$31 = $ptrType(VerifyOptions);
 70123  	funcType$1 = $funcType([$emptyInterface, $emptyInterface], [$Bool, $error], false);
 70124  	mapType$1 = $mapType($Int, sliceType$12);
 70125  	loadSystemRoots = function() {
 70126  		return [ptrType.nil, errors.New("crypto/x509: system root pool is not available in GopherJS")];
 70127  	};
 70128  	NewCertPool = function() {
 70129  		return new CertPool.ptr({}, {}, sliceType$6.nil);
 70130  	};
 70131  	$pkg.NewCertPool = NewCertPool;
 70132  	CertPool.ptr.prototype.findVerifiedParents = function(cert) {
 70133  		var _entry, _entry$1, _i, _r, _ref, c, candidates, cert, err, errCert, parents, s, x, x$1, $s, $r;
 70134  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _entry = $f._entry; _entry$1 = $f._entry$1; _i = $f._i; _r = $f._r; _ref = $f._ref; c = $f.c; candidates = $f.candidates; cert = $f.cert; err = $f.err; errCert = $f.errCert; parents = $f.parents; s = $f.s; x = $f.x; x$1 = $f.x$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 70135  		parents = sliceType$5.nil;
 70136  		errCert = ptrType$1.nil;
 70137  		err = $ifaceNil;
 70138  		s = this;
 70139  		if (s === ptrType.nil) {
 70140  			$s = -1; return [parents, errCert, err];
 70141  		}
 70142  		candidates = sliceType$5.nil;
 70143  		if (cert.AuthorityKeyId.$length > 0) {
 70144  			candidates = (_entry = s.bySubjectKeyId[$String.keyFor(($bytesToString(cert.AuthorityKeyId)))], _entry !== undefined ? _entry.v : sliceType$5.nil);
 70145  		}
 70146  		if (candidates.$length === 0) {
 70147  			candidates = (_entry$1 = s.byName[$String.keyFor(($bytesToString(cert.RawIssuer)))], _entry$1 !== undefined ? _entry$1.v : sliceType$5.nil);
 70148  		}
 70149  		_ref = candidates;
 70150  		_i = 0;
 70151  		/* while (true) { */ case 1:
 70152  			/* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; }
 70153  			c = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
 70154  			_r = cert.CheckSignatureFrom((x = s.certs, ((c < 0 || c >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + c]))); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 70155  			err = _r;
 70156  			if ($interfaceIsEqual(err, $ifaceNil)) {
 70157  				parents = $append(parents, c);
 70158  			} else {
 70159  				errCert = (x$1 = s.certs, ((c < 0 || c >= x$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + c]));
 70160  			}
 70161  			_i++;
 70162  		/* } */ $s = 1; continue; case 2:
 70163  		$s = -1; return [parents, errCert, err];
 70164  		/* */ } return; } if ($f === undefined) { $f = { $blk: CertPool.ptr.prototype.findVerifiedParents }; } $f._entry = _entry; $f._entry$1 = _entry$1; $f._i = _i; $f._r = _r; $f._ref = _ref; $f.c = c; $f.candidates = candidates; $f.cert = cert; $f.err = err; $f.errCert = errCert; $f.parents = parents; $f.s = s; $f.x = x; $f.x$1 = x$1; $f.$s = $s; $f.$r = $r; return $f;
 70165  	};
 70166  	CertPool.prototype.findVerifiedParents = function(cert) { return this.$val.findVerifiedParents(cert); };
 70167  	CertPool.ptr.prototype.contains = function(cert) {
 70168  		var _entry, _i, _ref, c, candidates, cert, s, x;
 70169  		s = this;
 70170  		if (s === ptrType.nil) {
 70171  			return false;
 70172  		}
 70173  		candidates = (_entry = s.byName[$String.keyFor(($bytesToString(cert.RawSubject)))], _entry !== undefined ? _entry.v : sliceType$5.nil);
 70174  		_ref = candidates;
 70175  		_i = 0;
 70176  		while (true) {
 70177  			if (!(_i < _ref.$length)) { break; }
 70178  			c = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
 70179  			if ((x = s.certs, ((c < 0 || c >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + c])).Equal(cert)) {
 70180  				return true;
 70181  			}
 70182  			_i++;
 70183  		}
 70184  		return false;
 70185  	};
 70186  	CertPool.prototype.contains = function(cert) { return this.$val.contains(cert); };
 70187  	CertPool.ptr.prototype.AddCert = function(cert) {
 70188  		var _entry, _entry$1, _key, _key$1, cert, keyId, n, name, s;
 70189  		s = this;
 70190  		if (cert === ptrType$1.nil) {
 70191  			$panic(new $String("adding nil Certificate to CertPool"));
 70192  		}
 70193  		if (s.contains(cert)) {
 70194  			return;
 70195  		}
 70196  		n = s.certs.$length;
 70197  		s.certs = $append(s.certs, cert);
 70198  		if (cert.SubjectKeyId.$length > 0) {
 70199  			keyId = ($bytesToString(cert.SubjectKeyId));
 70200  			_key = keyId; (s.bySubjectKeyId || $throwRuntimeError("assignment to entry in nil map"))[$String.keyFor(_key)] = { k: _key, v: $append((_entry = s.bySubjectKeyId[$String.keyFor(keyId)], _entry !== undefined ? _entry.v : sliceType$5.nil), n) };
 70201  		}
 70202  		name = ($bytesToString(cert.RawSubject));
 70203  		_key$1 = name; (s.byName || $throwRuntimeError("assignment to entry in nil map"))[$String.keyFor(_key$1)] = { k: _key$1, v: $append((_entry$1 = s.byName[$String.keyFor(name)], _entry$1 !== undefined ? _entry$1.v : sliceType$5.nil), n) };
 70204  	};
 70205  	CertPool.prototype.AddCert = function(cert) { return this.$val.AddCert(cert); };
 70206  	CertPool.ptr.prototype.AppendCertsFromPEM = function(pemCerts) {
 70207  		var _r, _r$1, _tuple, _tuple$1, block, cert, err, ok, pemCerts, s, $s, $r;
 70208  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; block = $f.block; cert = $f.cert; err = $f.err; ok = $f.ok; pemCerts = $f.pemCerts; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 70209  		ok = false;
 70210  		s = this;
 70211  		/* while (true) { */ case 1:
 70212  			/* if (!(pemCerts.$length > 0)) { break; } */ if(!(pemCerts.$length > 0)) { $s = 2; continue; }
 70213  			block = ptrType$2.nil;
 70214  			_r = pem.Decode(pemCerts); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 70215  			_tuple = _r;
 70216  			block = _tuple[0];
 70217  			pemCerts = _tuple[1];
 70218  			if (block === ptrType$2.nil) {
 70219  				/* break; */ $s = 2; continue;
 70220  			}
 70221  			/* */ if (!(block.Type === "CERTIFICATE") || !(($keys(block.Headers).length === 0))) { $s = 4; continue; }
 70222  			/* */ $s = 5; continue;
 70223  			/* if (!(block.Type === "CERTIFICATE") || !(($keys(block.Headers).length === 0))) { */ case 4:
 70224  				/* continue; */ $s = 1; continue;
 70225  			/* } */ case 5:
 70226  			_r$1 = ParseCertificate(block.Bytes); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 70227  			_tuple$1 = _r$1;
 70228  			cert = _tuple$1[0];
 70229  			err = _tuple$1[1];
 70230  			if (!($interfaceIsEqual(err, $ifaceNil))) {
 70231  				/* continue; */ $s = 1; continue;
 70232  			}
 70233  			s.AddCert(cert);
 70234  			ok = true;
 70235  		/* } */ $s = 1; continue; case 2:
 70236  		$s = -1; return ok;
 70237  		/* */ } return; } if ($f === undefined) { $f = { $blk: CertPool.ptr.prototype.AppendCertsFromPEM }; } $f._r = _r; $f._r$1 = _r$1; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.block = block; $f.cert = cert; $f.err = err; $f.ok = ok; $f.pemCerts = pemCerts; $f.s = s; $f.$s = $s; $f.$r = $r; return $f;
 70238  	};
 70239  	CertPool.prototype.AppendCertsFromPEM = function(pemCerts) { return this.$val.AppendCertsFromPEM(pemCerts); };
 70240  	CertPool.ptr.prototype.Subjects = function() {
 70241  		var _i, _ref, c, i, res, s;
 70242  		s = this;
 70243  		res = $makeSlice(sliceType$7, s.certs.$length);
 70244  		_ref = s.certs;
 70245  		_i = 0;
 70246  		while (true) {
 70247  			if (!(_i < _ref.$length)) { break; }
 70248  			i = _i;
 70249  			c = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
 70250  			((i < 0 || i >= res.$length) ? ($throwRuntimeError("index out of range"), undefined) : res.$array[res.$offset + i] = c.RawSubject);
 70251  			_i++;
 70252  		}
 70253  		return res;
 70254  	};
 70255  	CertPool.prototype.Subjects = function() { return this.$val.Subjects(); };
 70256  	ParsePKCS1PrivateKey = function(der) {
 70257  		var _i, _r, _r$1, _ref, _tuple, a, der, err, i, key, priv, rest, x, x$1, x$2, x$3, x$4, $s, $r;
 70258  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _i = $f._i; _r = $f._r; _r$1 = $f._r$1; _ref = $f._ref; _tuple = $f._tuple; a = $f.a; der = $f.der; err = $f.err; i = $f.i; key = $f.key; priv = $f.priv; rest = $f.rest; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; x$3 = $f.x$3; x$4 = $f.x$4; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 70259  		priv = [priv];
 70260  		priv[0] = new pkcs1PrivateKey.ptr(0, ptrType$4.nil, 0, ptrType$4.nil, ptrType$4.nil, ptrType$4.nil, ptrType$4.nil, ptrType$4.nil, ptrType$4.nil, sliceType$8.nil);
 70261  		_r = asn1.Unmarshal(der, priv[0]); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 70262  		_tuple = _r;
 70263  		rest = _tuple[0];
 70264  		err = _tuple[1];
 70265  		if (rest.$length > 0) {
 70266  			$s = -1; return [ptrType$5.nil, (x = new asn1.SyntaxError.ptr("trailing data"), new x.constructor.elem(x))];
 70267  		}
 70268  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 70269  			$s = -1; return [ptrType$5.nil, err];
 70270  		}
 70271  		if (priv[0].Version > 1) {
 70272  			$s = -1; return [ptrType$5.nil, errors.New("x509: unsupported private key version")];
 70273  		}
 70274  		if (priv[0].N.Sign() <= 0 || priv[0].D.Sign() <= 0 || priv[0].P.Sign() <= 0 || priv[0].Q.Sign() <= 0) {
 70275  			$s = -1; return [ptrType$5.nil, errors.New("x509: private key contains zero or negative value")];
 70276  		}
 70277  		key = new rsa.PrivateKey.ptr(new rsa.PublicKey.ptr(ptrType$4.nil, 0), ptrType$4.nil, sliceType$9.nil, new rsa.PrecomputedValues.ptr(ptrType$4.nil, ptrType$4.nil, ptrType$4.nil, sliceType$10.nil));
 70278  		rsa.PublicKey.copy(key.PublicKey, new rsa.PublicKey.ptr(priv[0].N, priv[0].E));
 70279  		key.D = priv[0].D;
 70280  		key.Primes = $makeSlice(sliceType$9, (2 + priv[0].AdditionalPrimes.$length >> 0));
 70281  		(x$1 = key.Primes, (0 >= x$1.$length ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + 0] = priv[0].P));
 70282  		(x$2 = key.Primes, (1 >= x$2.$length ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + 1] = priv[0].Q));
 70283  		_ref = priv[0].AdditionalPrimes;
 70284  		_i = 0;
 70285  		while (true) {
 70286  			if (!(_i < _ref.$length)) { break; }
 70287  			i = _i;
 70288  			a = $clone(((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]), pkcs1AdditionalRSAPrime);
 70289  			if (a.Prime.Sign() <= 0) {
 70290  				$s = -1; return [ptrType$5.nil, errors.New("x509: private key contains zero or negative prime")];
 70291  			}
 70292  			(x$3 = key.Primes, x$4 = i + 2 >> 0, ((x$4 < 0 || x$4 >= x$3.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$3.$array[x$3.$offset + x$4] = a.Prime));
 70293  			_i++;
 70294  		}
 70295  		_r$1 = key.Validate(); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 70296  		err = _r$1;
 70297  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 70298  			$s = -1; return [ptrType$5.nil, err];
 70299  		}
 70300  		$r = key.Precompute(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 70301  		$s = -1; return [key, $ifaceNil];
 70302  		/* */ } return; } if ($f === undefined) { $f = { $blk: ParsePKCS1PrivateKey }; } $f._i = _i; $f._r = _r; $f._r$1 = _r$1; $f._ref = _ref; $f._tuple = _tuple; $f.a = a; $f.der = der; $f.err = err; $f.i = i; $f.key = key; $f.priv = priv; $f.rest = rest; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.x$3 = x$3; $f.x$4 = x$4; $f.$s = $s; $f.$r = $r; return $f;
 70303  	};
 70304  	$pkg.ParsePKCS1PrivateKey = ParsePKCS1PrivateKey;
 70305  	ParsePKCS8PrivateKey = function(der) {
 70306  		var _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, _tuple$1, _tuple$2, _tuple$3, bytes$1, der, err, err$1, err$2, key, namedCurveOID, privKey, $s, $r;
 70307  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _r$8 = $f._r$8; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$10 = $f._tmp$10; _tmp$11 = $f._tmp$11; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tmp$4 = $f._tmp$4; _tmp$5 = $f._tmp$5; _tmp$6 = $f._tmp$6; _tmp$7 = $f._tmp$7; _tmp$8 = $f._tmp$8; _tmp$9 = $f._tmp$9; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; bytes$1 = $f.bytes$1; der = $f.der; err = $f.err; err$1 = $f.err$1; err$2 = $f.err$2; key = $f.key; namedCurveOID = $f.namedCurveOID; privKey = $f.privKey; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 70308  		privKey = [privKey];
 70309  		key = $ifaceNil;
 70310  		err = $ifaceNil;
 70311  		privKey[0] = new pkcs8.ptr(0, new pkix.AlgorithmIdentifier.ptr(asn1.ObjectIdentifier.nil, new asn1.RawValue.ptr(0, 0, false, sliceType$4.nil, sliceType$4.nil)), sliceType$4.nil);
 70312  		_r = asn1.Unmarshal(der, privKey[0]); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 70313  		_tuple = _r;
 70314  		err$1 = _tuple[1];
 70315  		if (!($interfaceIsEqual(err$1, $ifaceNil))) {
 70316  			_tmp = $ifaceNil;
 70317  			_tmp$1 = err$1;
 70318  			key = _tmp;
 70319  			err = _tmp$1;
 70320  			$s = -1; return [key, err];
 70321  		}
 70322  			/* */ if (privKey[0].Algo.Algorithm.Equal(oidPublicKeyRSA)) { $s = 3; continue; }
 70323  			/* */ if (privKey[0].Algo.Algorithm.Equal(oidPublicKeyECDSA)) { $s = 4; continue; }
 70324  			/* */ $s = 5; continue;
 70325  			/* if (privKey[0].Algo.Algorithm.Equal(oidPublicKeyRSA)) { */ case 3:
 70326  				_r$1 = ParsePKCS1PrivateKey(privKey[0].PrivateKey); /* */ $s = 7; case 7: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 70327  				_tuple$1 = _r$1;
 70328  				key = _tuple$1[0];
 70329  				err = _tuple$1[1];
 70330  				/* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 8; continue; }
 70331  				/* */ $s = 9; continue;
 70332  				/* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 8:
 70333  					_tmp$2 = $ifaceNil;
 70334  					_r$2 = err.Error(); /* */ $s = 10; case 10: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 70335  					_r$3 = errors.New("x509: failed to parse RSA private key embedded in PKCS#8: " + _r$2); /* */ $s = 11; case 11: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 70336  					_tmp$3 = _r$3;
 70337  					key = _tmp$2;
 70338  					err = _tmp$3;
 70339  					$s = -1; return [key, err];
 70340  				/* } */ case 9:
 70341  				_tmp$4 = key;
 70342  				_tmp$5 = $ifaceNil;
 70343  				key = _tmp$4;
 70344  				err = _tmp$5;
 70345  				$s = -1; return [key, err];
 70346  			/* } else if (privKey[0].Algo.Algorithm.Equal(oidPublicKeyECDSA)) { */ case 4:
 70347  				bytes$1 = privKey[0].Algo.Parameters.FullBytes;
 70348  				namedCurveOID = $newDataPointer(asn1.ObjectIdentifier.nil, ptrType$7);
 70349  				_r$4 = asn1.Unmarshal(bytes$1, namedCurveOID); /* */ $s = 12; case 12: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 70350  				_tuple$2 = _r$4;
 70351  				err$2 = _tuple$2[1];
 70352  				if (!($interfaceIsEqual(err$2, $ifaceNil))) {
 70353  					namedCurveOID = ptrType$7.nil;
 70354  				}
 70355  				_r$5 = parseECPrivateKey(namedCurveOID, privKey[0].PrivateKey); /* */ $s = 13; case 13: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
 70356  				_tuple$3 = _r$5;
 70357  				key = _tuple$3[0];
 70358  				err = _tuple$3[1];
 70359  				/* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 14; continue; }
 70360  				/* */ $s = 15; continue;
 70361  				/* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 14:
 70362  					_tmp$6 = $ifaceNil;
 70363  					_r$6 = err.Error(); /* */ $s = 16; case 16: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
 70364  					_r$7 = errors.New("x509: failed to parse EC private key embedded in PKCS#8: " + _r$6); /* */ $s = 17; case 17: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
 70365  					_tmp$7 = _r$7;
 70366  					key = _tmp$6;
 70367  					err = _tmp$7;
 70368  					$s = -1; return [key, err];
 70369  				/* } */ case 15:
 70370  				_tmp$8 = key;
 70371  				_tmp$9 = $ifaceNil;
 70372  				key = _tmp$8;
 70373  				err = _tmp$9;
 70374  				$s = -1; return [key, err];
 70375  			/* } else { */ case 5:
 70376  				_tmp$10 = $ifaceNil;
 70377  				_r$8 = fmt.Errorf("x509: PKCS#8 wrapping contained private key with unknown algorithm: %v", new sliceType$11([privKey[0].Algo.Algorithm])); /* */ $s = 18; case 18: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
 70378  				_tmp$11 = _r$8;
 70379  				key = _tmp$10;
 70380  				err = _tmp$11;
 70381  				$s = -1; return [key, err];
 70382  			/* } */ case 6:
 70383  		case 2:
 70384  		$s = -1; return [key, err];
 70385  		/* */ } return; } if ($f === undefined) { $f = { $blk: ParsePKCS8PrivateKey }; } $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._r$8 = _r$8; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$10 = _tmp$10; $f._tmp$11 = _tmp$11; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tmp$4 = _tmp$4; $f._tmp$5 = _tmp$5; $f._tmp$6 = _tmp$6; $f._tmp$7 = _tmp$7; $f._tmp$8 = _tmp$8; $f._tmp$9 = _tmp$9; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f.bytes$1 = bytes$1; $f.der = der; $f.err = err; $f.err$1 = err$1; $f.err$2 = err$2; $f.key = key; $f.namedCurveOID = namedCurveOID; $f.privKey = privKey; $f.$s = $s; $f.$r = $r; return $f;
 70386  	};
 70387  	$pkg.ParsePKCS8PrivateKey = ParsePKCS8PrivateKey;
 70388  	systemRootsPool = function() {
 70389  		var $s, $r;
 70390  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 70391  		$r = once.Do(initSystemRoots); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 70392  		$s = -1; return systemRoots;
 70393  		/* */ } return; } if ($f === undefined) { $f = { $blk: systemRootsPool }; } $f.$s = $s; $f.$r = $r; return $f;
 70394  	};
 70395  	initSystemRoots = function() {
 70396  		var _tuple;
 70397  		_tuple = loadSystemRoots();
 70398  		systemRoots = _tuple[0];
 70399  		systemRootsErr = _tuple[1];
 70400  	};
 70401  	Certificate.ptr.prototype.systemVerify = function(opts) {
 70402  		var _tmp, _tmp$1, c, chains, err, opts;
 70403  		chains = sliceType$12.nil;
 70404  		err = $ifaceNil;
 70405  		c = this;
 70406  		_tmp = sliceType$12.nil;
 70407  		_tmp$1 = $ifaceNil;
 70408  		chains = _tmp;
 70409  		err = _tmp$1;
 70410  		return [chains, err];
 70411  	};
 70412  	Certificate.prototype.systemVerify = function(opts) { return this.$val.systemVerify(opts); };
 70413  	ParseECPrivateKey = function(der) {
 70414  		var _r, der, $s, $r;
 70415  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; der = $f.der; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 70416  		_r = parseECPrivateKey(ptrType$7.nil, der); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 70417  		$s = -1; return _r;
 70418  		/* */ } return; } if ($f === undefined) { $f = { $blk: ParseECPrivateKey }; } $f._r = _r; $f.der = der; $f.$s = $s; $f.$r = $r; return $f;
 70419  	};
 70420  	$pkg.ParseECPrivateKey = ParseECPrivateKey;
 70421  	parseECPrivateKey = function(namedCurveOID, der) {
 70422  		var _q, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, _tuple$1, curve, curveOrder, der, err, err$1, k, key, namedCurveOID, priv, privKey, privateKey, x, $s, $r;
 70423  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _q = $f._q; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$10 = $f._tmp$10; _tmp$11 = $f._tmp$11; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tmp$4 = $f._tmp$4; _tmp$5 = $f._tmp$5; _tmp$6 = $f._tmp$6; _tmp$7 = $f._tmp$7; _tmp$8 = $f._tmp$8; _tmp$9 = $f._tmp$9; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; curve = $f.curve; curveOrder = $f.curveOrder; der = $f.der; err = $f.err; err$1 = $f.err$1; k = $f.k; key = $f.key; namedCurveOID = $f.namedCurveOID; priv = $f.priv; privKey = $f.privKey; privateKey = $f.privateKey; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 70424  		privKey = [privKey];
 70425  		key = ptrType$8.nil;
 70426  		err = $ifaceNil;
 70427  		privKey[0] = new ecPrivateKey.ptr(0, sliceType$4.nil, asn1.ObjectIdentifier.nil, new asn1.BitString.ptr(sliceType$4.nil, 0));
 70428  		_r = asn1.Unmarshal(der, privKey[0]); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 70429  		_tuple = _r;
 70430  		err$1 = _tuple[1];
 70431  		/* */ if (!($interfaceIsEqual(err$1, $ifaceNil))) { $s = 2; continue; }
 70432  		/* */ $s = 3; continue;
 70433  		/* if (!($interfaceIsEqual(err$1, $ifaceNil))) { */ case 2:
 70434  			_tmp = ptrType$8.nil;
 70435  			_r$1 = err$1.Error(); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 70436  			_r$2 = errors.New("x509: failed to parse EC private key: " + _r$1); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 70437  			_tmp$1 = _r$2;
 70438  			key = _tmp;
 70439  			err = _tmp$1;
 70440  			$s = -1; return [key, err];
 70441  		/* } */ case 3:
 70442  		/* */ if (!((privKey[0].Version === 1))) { $s = 6; continue; }
 70443  		/* */ $s = 7; continue;
 70444  		/* if (!((privKey[0].Version === 1))) { */ case 6:
 70445  			_tmp$2 = ptrType$8.nil;
 70446  			_r$3 = fmt.Errorf("x509: unknown EC private key version %d", new sliceType$11([new $Int(privKey[0].Version)])); /* */ $s = 8; case 8: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 70447  			_tmp$3 = _r$3;
 70448  			key = _tmp$2;
 70449  			err = _tmp$3;
 70450  			$s = -1; return [key, err];
 70451  		/* } */ case 7:
 70452  		curve = $ifaceNil;
 70453  		/* */ if (!(namedCurveOID === ptrType$7.nil)) { $s = 9; continue; }
 70454  		/* */ $s = 10; continue;
 70455  		/* if (!(namedCurveOID === ptrType$7.nil)) { */ case 9:
 70456  			_r$4 = namedCurveFromOID(namedCurveOID.$get()); /* */ $s = 12; case 12: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 70457  			curve = _r$4;
 70458  			$s = 11; continue;
 70459  		/* } else { */ case 10:
 70460  			_r$5 = namedCurveFromOID(privKey[0].NamedCurveOID); /* */ $s = 13; case 13: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
 70461  			curve = _r$5;
 70462  		/* } */ case 11:
 70463  		if ($interfaceIsEqual(curve, $ifaceNil)) {
 70464  			_tmp$4 = ptrType$8.nil;
 70465  			_tmp$5 = errors.New("x509: unknown elliptic curve");
 70466  			key = _tmp$4;
 70467  			err = _tmp$5;
 70468  			$s = -1; return [key, err];
 70469  		}
 70470  		k = new big.Int.ptr(false, big.nat.nil).SetBytes(privKey[0].PrivateKey);
 70471  		_r$6 = curve.Params(); /* */ $s = 14; case 14: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
 70472  		curveOrder = _r$6.N;
 70473  		if (k.Cmp(curveOrder) >= 0) {
 70474  			_tmp$6 = ptrType$8.nil;
 70475  			_tmp$7 = errors.New("x509: invalid elliptic curve private key value");
 70476  			key = _tmp$6;
 70477  			err = _tmp$7;
 70478  			$s = -1; return [key, err];
 70479  		}
 70480  		priv = new ecdsa.PrivateKey.ptr(new ecdsa.PublicKey.ptr($ifaceNil, ptrType$4.nil, ptrType$4.nil), ptrType$4.nil);
 70481  		priv.PublicKey.Curve = curve;
 70482  		priv.D = k;
 70483  		privateKey = $makeSlice(sliceType$4, (_q = ((curveOrder.BitLen() + 7 >> 0)) / 8, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")));
 70484  		while (true) {
 70485  			if (!(privKey[0].PrivateKey.$length > privateKey.$length)) { break; }
 70486  			if (!(((x = privKey[0].PrivateKey, (0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0])) === 0))) {
 70487  				_tmp$8 = ptrType$8.nil;
 70488  				_tmp$9 = errors.New("x509: invalid private key length");
 70489  				key = _tmp$8;
 70490  				err = _tmp$9;
 70491  				$s = -1; return [key, err];
 70492  			}
 70493  			privKey[0].PrivateKey = $subslice(privKey[0].PrivateKey, 1);
 70494  		}
 70495  		$copySlice($subslice(privateKey, (privateKey.$length - privKey[0].PrivateKey.$length >> 0)), privKey[0].PrivateKey);
 70496  		_r$7 = curve.ScalarBaseMult(privateKey); /* */ $s = 15; case 15: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
 70497  		_tuple$1 = _r$7;
 70498  		priv.PublicKey.X = _tuple$1[0];
 70499  		priv.PublicKey.Y = _tuple$1[1];
 70500  		_tmp$10 = priv;
 70501  		_tmp$11 = $ifaceNil;
 70502  		key = _tmp$10;
 70503  		err = _tmp$11;
 70504  		$s = -1; return [key, err];
 70505  		/* */ } return; } if ($f === undefined) { $f = { $blk: parseECPrivateKey }; } $f._q = _q; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$10 = _tmp$10; $f._tmp$11 = _tmp$11; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tmp$4 = _tmp$4; $f._tmp$5 = _tmp$5; $f._tmp$6 = _tmp$6; $f._tmp$7 = _tmp$7; $f._tmp$8 = _tmp$8; $f._tmp$9 = _tmp$9; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.curve = curve; $f.curveOrder = curveOrder; $f.der = der; $f.err = err; $f.err$1 = err$1; $f.k = k; $f.key = key; $f.namedCurveOID = namedCurveOID; $f.priv = priv; $f.privKey = privKey; $f.privateKey = privateKey; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
 70506  	};
 70507  	CertificateInvalidError.ptr.prototype.Error = function() {
 70508  		var _1, e;
 70509  		e = this;
 70510  		_1 = e.Reason;
 70511  		if (_1 === (0)) {
 70512  			return "x509: certificate is not authorized to sign other certificates";
 70513  		} else if (_1 === (1)) {
 70514  			return "x509: certificate has expired or is not yet valid";
 70515  		} else if (_1 === (2)) {
 70516  			return "x509: a root or intermediate certificate is not authorized to sign for this name: " + e.Detail;
 70517  		} else if (_1 === (9)) {
 70518  			return "x509: a root or intermediate certificate is not authorized for an extended key usage: " + e.Detail;
 70519  		} else if (_1 === (3)) {
 70520  			return "x509: too many intermediates for path length constraint";
 70521  		} else if (_1 === (4)) {
 70522  			return "x509: certificate specifies an incompatible key usage: " + e.Detail;
 70523  		} else if (_1 === (5)) {
 70524  			return "x509: issuer name does not match subject from issuing certificate";
 70525  		} else if (_1 === (6)) {
 70526  			return "x509: issuer has name constraints but leaf doesn't have a SAN extension";
 70527  		} else if (_1 === (7)) {
 70528  			return "x509: issuer has name constraints but leaf contains unknown or unconstrained name: " + e.Detail;
 70529  		}
 70530  		return "x509: unknown error";
 70531  	};
 70532  	CertificateInvalidError.prototype.Error = function() { return this.$val.Error(); };
 70533  	HostnameError.ptr.prototype.Error = function() {
 70534  		var _i, _ref, c, h, ip, san, valid;
 70535  		h = this;
 70536  		c = h.Certificate;
 70537  		valid = "";
 70538  		ip = net.ParseIP(h.Host);
 70539  		if (!(ip === net.IP.nil)) {
 70540  			if (c.IPAddresses.$length === 0) {
 70541  				return "x509: cannot validate certificate for " + h.Host + " because it doesn't contain any IP SANs";
 70542  			}
 70543  			_ref = c.IPAddresses;
 70544  			_i = 0;
 70545  			while (true) {
 70546  				if (!(_i < _ref.$length)) { break; }
 70547  				san = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
 70548  				if (valid.length > 0) {
 70549  					valid = valid + (", ");
 70550  				}
 70551  				valid = valid + (san.String());
 70552  				_i++;
 70553  			}
 70554  		} else {
 70555  			if (c.hasSANExtension()) {
 70556  				valid = strings.Join(c.DNSNames, ", ");
 70557  			} else {
 70558  				valid = c.Subject.CommonName;
 70559  			}
 70560  		}
 70561  		if (valid.length === 0) {
 70562  			return "x509: certificate is not valid for any names, but wanted to match " + h.Host;
 70563  		}
 70564  		return "x509: certificate is valid for " + valid + ", not " + h.Host;
 70565  	};
 70566  	HostnameError.prototype.Error = function() { return this.$val.Error(); };
 70567  	UnknownAuthorityError.ptr.prototype.Error = function() {
 70568  		var _r, _r$1, certName, e, s, x, $s, $r;
 70569  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; certName = $f.certName; e = $f.e; s = $f.s; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 70570  		e = this;
 70571  		s = "x509: certificate signed by unknown authority";
 70572  		/* */ if (!($interfaceIsEqual(e.hintErr, $ifaceNil))) { $s = 1; continue; }
 70573  		/* */ $s = 2; continue;
 70574  		/* if (!($interfaceIsEqual(e.hintErr, $ifaceNil))) { */ case 1:
 70575  			certName = e.hintCert.Subject.CommonName;
 70576  			/* */ if (certName.length === 0) { $s = 3; continue; }
 70577  			/* */ $s = 4; continue;
 70578  			/* if (certName.length === 0) { */ case 3:
 70579  				/* */ if (e.hintCert.Subject.Organization.$length > 0) { $s = 5; continue; }
 70580  				/* */ $s = 6; continue;
 70581  				/* if (e.hintCert.Subject.Organization.$length > 0) { */ case 5:
 70582  					certName = (x = e.hintCert.Subject.Organization, (0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0]));
 70583  					$s = 7; continue;
 70584  				/* } else { */ case 6:
 70585  					_r = e.hintCert.SerialNumber.String(); /* */ $s = 8; case 8: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 70586  					certName = "serial:" + _r;
 70587  				/* } */ case 7:
 70588  			/* } */ case 4:
 70589  			_r$1 = fmt.Sprintf(" (possibly because of %q while trying to verify candidate authority certificate %q)", new sliceType$11([e.hintErr, new $String(certName)])); /* */ $s = 9; case 9: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 70590  			s = s + (_r$1);
 70591  		/* } */ case 2:
 70592  		$s = -1; return s;
 70593  		/* */ } return; } if ($f === undefined) { $f = { $blk: UnknownAuthorityError.ptr.prototype.Error }; } $f._r = _r; $f._r$1 = _r$1; $f.certName = certName; $f.e = e; $f.s = s; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
 70594  	};
 70595  	UnknownAuthorityError.prototype.Error = function() { return this.$val.Error(); };
 70596  	SystemRootsError.ptr.prototype.Error = function() {
 70597  		var _r, msg, se, $s, $r;
 70598  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; msg = $f.msg; se = $f.se; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 70599  		se = this;
 70600  		msg = "x509: failed to load system roots and no roots provided";
 70601  		/* */ if (!($interfaceIsEqual(se.Err, $ifaceNil))) { $s = 1; continue; }
 70602  		/* */ $s = 2; continue;
 70603  		/* if (!($interfaceIsEqual(se.Err, $ifaceNil))) { */ case 1:
 70604  			_r = se.Err.Error(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 70605  			$s = -1; return msg + "; " + _r;
 70606  		/* } */ case 2:
 70607  		$s = -1; return msg;
 70608  		/* */ } return; } if ($f === undefined) { $f = { $blk: SystemRootsError.ptr.prototype.Error }; } $f._r = _r; $f.msg = msg; $f.se = se; $f.$s = $s; $f.$r = $r; return $f;
 70609  	};
 70610  	SystemRootsError.prototype.Error = function() { return this.$val.Error(); };
 70611  	parseRFC2821Mailbox = function(in$1) {
 70612  		var _q, _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$14, _tmp$15, _tmp$16, _tmp$17, _tmp$18, _tmp$19, _tmp$2, _tmp$20, _tmp$21, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, c, c$1, in$1, localPartBytes, mailbox, ok, ok$1, twoDots, x;
 70613  		mailbox = new rfc2821Mailbox.ptr("", "");
 70614  		ok = false;
 70615  		if (in$1.length === 0) {
 70616  			_tmp = $clone(mailbox, rfc2821Mailbox);
 70617  			_tmp$1 = false;
 70618  			rfc2821Mailbox.copy(mailbox, _tmp);
 70619  			ok = _tmp$1;
 70620  			return [mailbox, ok];
 70621  		}
 70622  		localPartBytes = $makeSlice(sliceType$4, 0, (_q = in$1.length / 2, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")));
 70623  		if (in$1.charCodeAt(0) === 34) {
 70624  			in$1 = $substring(in$1, 1);
 70625  			QuotedString:
 70626  			while (true) {
 70627  				if (in$1.length === 0) {
 70628  					_tmp$2 = $clone(mailbox, rfc2821Mailbox);
 70629  					_tmp$3 = false;
 70630  					rfc2821Mailbox.copy(mailbox, _tmp$2);
 70631  					ok = _tmp$3;
 70632  					return [mailbox, ok];
 70633  				}
 70634  				c = in$1.charCodeAt(0);
 70635  				in$1 = $substring(in$1, 1);
 70636  				if ((c === 34)) {
 70637  					break QuotedString;
 70638  				} else if ((c === 92)) {
 70639  					if (in$1.length === 0) {
 70640  						_tmp$4 = $clone(mailbox, rfc2821Mailbox);
 70641  						_tmp$5 = false;
 70642  						rfc2821Mailbox.copy(mailbox, _tmp$4);
 70643  						ok = _tmp$5;
 70644  						return [mailbox, ok];
 70645  					}
 70646  					if ((in$1.charCodeAt(0) === 11) || (in$1.charCodeAt(0) === 12) || (1 <= in$1.charCodeAt(0) && in$1.charCodeAt(0) <= 9) || (14 <= in$1.charCodeAt(0) && in$1.charCodeAt(0) <= 127)) {
 70647  						localPartBytes = $append(localPartBytes, in$1.charCodeAt(0));
 70648  						in$1 = $substring(in$1, 1);
 70649  					} else {
 70650  						_tmp$6 = $clone(mailbox, rfc2821Mailbox);
 70651  						_tmp$7 = false;
 70652  						rfc2821Mailbox.copy(mailbox, _tmp$6);
 70653  						ok = _tmp$7;
 70654  						return [mailbox, ok];
 70655  					}
 70656  				} else if ((c === 11) || (c === 12) || (c === 32) || (c === 33) || (c === 127) || (1 <= c && c <= 8) || (14 <= c && c <= 31) || (35 <= c && c <= 91) || (93 <= c && c <= 126)) {
 70657  					localPartBytes = $append(localPartBytes, c);
 70658  				} else {
 70659  					_tmp$8 = $clone(mailbox, rfc2821Mailbox);
 70660  					_tmp$9 = false;
 70661  					rfc2821Mailbox.copy(mailbox, _tmp$8);
 70662  					ok = _tmp$9;
 70663  					return [mailbox, ok];
 70664  				}
 70665  			}
 70666  		} else {
 70667  			NextChar:
 70668  			while (true) {
 70669  				if (!(in$1.length > 0)) { break; }
 70670  				c$1 = in$1.charCodeAt(0);
 70671  				if ((c$1 === 92)) {
 70672  					in$1 = $substring(in$1, 1);
 70673  					if (in$1.length === 0) {
 70674  						_tmp$10 = $clone(mailbox, rfc2821Mailbox);
 70675  						_tmp$11 = false;
 70676  						rfc2821Mailbox.copy(mailbox, _tmp$10);
 70677  						ok = _tmp$11;
 70678  						return [mailbox, ok];
 70679  					}
 70680  					localPartBytes = $append(localPartBytes, in$1.charCodeAt(0));
 70681  					in$1 = $substring(in$1, 1);
 70682  				} else if ((48 <= c$1 && c$1 <= 57) || (97 <= c$1 && c$1 <= 122) || (65 <= c$1 && c$1 <= 90) || (c$1 === 33) || (c$1 === 35) || (c$1 === 36) || (c$1 === 37) || (c$1 === 38) || (c$1 === 39) || (c$1 === 42) || (c$1 === 43) || (c$1 === 45) || (c$1 === 47) || (c$1 === 61) || (c$1 === 63) || (c$1 === 94) || (c$1 === 95) || (c$1 === 96) || (c$1 === 123) || (c$1 === 124) || (c$1 === 125) || (c$1 === 126) || (c$1 === 46)) {
 70683  					localPartBytes = $append(localPartBytes, in$1.charCodeAt(0));
 70684  					in$1 = $substring(in$1, 1);
 70685  				} else {
 70686  					break NextChar;
 70687  				}
 70688  			}
 70689  			if (localPartBytes.$length === 0) {
 70690  				_tmp$12 = $clone(mailbox, rfc2821Mailbox);
 70691  				_tmp$13 = false;
 70692  				rfc2821Mailbox.copy(mailbox, _tmp$12);
 70693  				ok = _tmp$13;
 70694  				return [mailbox, ok];
 70695  			}
 70696  			twoDots = new sliceType$4([46, 46]);
 70697  			if (((0 >= localPartBytes.$length ? ($throwRuntimeError("index out of range"), undefined) : localPartBytes.$array[localPartBytes.$offset + 0]) === 46) || ((x = localPartBytes.$length - 1 >> 0, ((x < 0 || x >= localPartBytes.$length) ? ($throwRuntimeError("index out of range"), undefined) : localPartBytes.$array[localPartBytes.$offset + x])) === 46) || bytes.Contains(localPartBytes, twoDots)) {
 70698  				_tmp$14 = $clone(mailbox, rfc2821Mailbox);
 70699  				_tmp$15 = false;
 70700  				rfc2821Mailbox.copy(mailbox, _tmp$14);
 70701  				ok = _tmp$15;
 70702  				return [mailbox, ok];
 70703  			}
 70704  		}
 70705  		if ((in$1.length === 0) || !((in$1.charCodeAt(0) === 64))) {
 70706  			_tmp$16 = $clone(mailbox, rfc2821Mailbox);
 70707  			_tmp$17 = false;
 70708  			rfc2821Mailbox.copy(mailbox, _tmp$16);
 70709  			ok = _tmp$17;
 70710  			return [mailbox, ok];
 70711  		}
 70712  		in$1 = $substring(in$1, 1);
 70713  		_tuple = domainToReverseLabels(in$1);
 70714  		ok$1 = _tuple[1];
 70715  		if (!ok$1) {
 70716  			_tmp$18 = $clone(mailbox, rfc2821Mailbox);
 70717  			_tmp$19 = false;
 70718  			rfc2821Mailbox.copy(mailbox, _tmp$18);
 70719  			ok = _tmp$19;
 70720  			return [mailbox, ok];
 70721  		}
 70722  		mailbox.local = ($bytesToString(localPartBytes));
 70723  		mailbox.domain = in$1;
 70724  		_tmp$20 = $clone(mailbox, rfc2821Mailbox);
 70725  		_tmp$21 = true;
 70726  		rfc2821Mailbox.copy(mailbox, _tmp$20);
 70727  		ok = _tmp$21;
 70728  		return [mailbox, ok];
 70729  	};
 70730  	domainToReverseLabels = function(domain) {
 70731  		var _i, _i$1, _ref, _ref$1, _rune, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, c, domain, i, label, ok, reverseLabels;
 70732  		reverseLabels = sliceType$1.nil;
 70733  		ok = false;
 70734  		while (true) {
 70735  			if (!(domain.length > 0)) { break; }
 70736  			i = strings.LastIndexByte(domain, 46);
 70737  			if (i === -1) {
 70738  				reverseLabels = $append(reverseLabels, domain);
 70739  				domain = "";
 70740  			} else {
 70741  				reverseLabels = $append(reverseLabels, $substring(domain, (i + 1 >> 0), domain.length));
 70742  				domain = $substring(domain, 0, i);
 70743  			}
 70744  		}
 70745  		if (reverseLabels.$length > 0 && ((0 >= reverseLabels.$length ? ($throwRuntimeError("index out of range"), undefined) : reverseLabels.$array[reverseLabels.$offset + 0]).length === 0)) {
 70746  			_tmp = sliceType$1.nil;
 70747  			_tmp$1 = false;
 70748  			reverseLabels = _tmp;
 70749  			ok = _tmp$1;
 70750  			return [reverseLabels, ok];
 70751  		}
 70752  		_ref = reverseLabels;
 70753  		_i = 0;
 70754  		while (true) {
 70755  			if (!(_i < _ref.$length)) { break; }
 70756  			label = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
 70757  			if (label.length === 0) {
 70758  				_tmp$2 = sliceType$1.nil;
 70759  				_tmp$3 = false;
 70760  				reverseLabels = _tmp$2;
 70761  				ok = _tmp$3;
 70762  				return [reverseLabels, ok];
 70763  			}
 70764  			_ref$1 = label;
 70765  			_i$1 = 0;
 70766  			while (true) {
 70767  				if (!(_i$1 < _ref$1.length)) { break; }
 70768  				_rune = $decodeRune(_ref$1, _i$1);
 70769  				c = _rune[0];
 70770  				if (c < 33 || c > 126) {
 70771  					_tmp$4 = sliceType$1.nil;
 70772  					_tmp$5 = false;
 70773  					reverseLabels = _tmp$4;
 70774  					ok = _tmp$5;
 70775  					return [reverseLabels, ok];
 70776  				}
 70777  				_i$1 += _rune[1];
 70778  			}
 70779  			_i++;
 70780  		}
 70781  		_tmp$6 = reverseLabels;
 70782  		_tmp$7 = true;
 70783  		reverseLabels = _tmp$6;
 70784  		ok = _tmp$7;
 70785  		return [reverseLabels, ok];
 70786  	};
 70787  	matchEmailConstraint = function(mailbox, constraint) {
 70788  		var _r, _r$1, _tuple, constraint, constraintMailbox, mailbox, ok, $s, $r;
 70789  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _tuple = $f._tuple; constraint = $f.constraint; constraintMailbox = $f.constraintMailbox; mailbox = $f.mailbox; ok = $f.ok; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 70790  		/* */ if (strings.Contains(constraint, "@")) { $s = 1; continue; }
 70791  		/* */ $s = 2; continue;
 70792  		/* if (strings.Contains(constraint, "@")) { */ case 1:
 70793  			_tuple = parseRFC2821Mailbox(constraint);
 70794  			constraintMailbox = $clone(_tuple[0], rfc2821Mailbox);
 70795  			ok = _tuple[1];
 70796  			/* */ if (!ok) { $s = 3; continue; }
 70797  			/* */ $s = 4; continue;
 70798  			/* if (!ok) { */ case 3:
 70799  				_r = fmt.Errorf("x509: internal error: cannot parse constraint %q", new sliceType$11([new $String(constraint)])); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 70800  				$s = -1; return [false, _r];
 70801  			/* } */ case 4:
 70802  			$s = -1; return [mailbox.local === constraintMailbox.local && strings.EqualFold(mailbox.domain, constraintMailbox.domain), $ifaceNil];
 70803  		/* } */ case 2:
 70804  		_r$1 = matchDomainConstraint(mailbox.domain, constraint); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 70805  		$s = -1; return _r$1;
 70806  		/* */ } return; } if ($f === undefined) { $f = { $blk: matchEmailConstraint }; } $f._r = _r; $f._r$1 = _r$1; $f._tuple = _tuple; $f.constraint = constraint; $f.constraintMailbox = constraintMailbox; $f.mailbox = mailbox; $f.ok = ok; $f.$s = $s; $f.$r = $r; return $f;
 70807  	};
 70808  	matchURIConstraint = function(uri, constraint) {
 70809  		var _r, _r$1, _r$2, _r$3, _tuple, constraint, err, host, uri, $s, $r;
 70810  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _tuple = $f._tuple; constraint = $f.constraint; err = $f.err; host = $f.host; uri = $f.uri; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 70811  		host = uri.Host;
 70812  		/* */ if (host.length === 0) { $s = 1; continue; }
 70813  		/* */ $s = 2; continue;
 70814  		/* if (host.length === 0) { */ case 1:
 70815  			_r = fmt.Errorf("URI with empty host (%q) cannot be matched against constraints", new sliceType$11([new $String(uri.String())])); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 70816  			$s = -1; return [false, _r];
 70817  		/* } */ case 2:
 70818  		/* */ if (strings.Contains(host, ":") && !strings.HasSuffix(host, "]")) { $s = 4; continue; }
 70819  		/* */ $s = 5; continue;
 70820  		/* if (strings.Contains(host, ":") && !strings.HasSuffix(host, "]")) { */ case 4:
 70821  			err = $ifaceNil;
 70822  			_r$1 = net.SplitHostPort(uri.Host); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 70823  			_tuple = _r$1;
 70824  			host = _tuple[0];
 70825  			err = _tuple[2];
 70826  			if (!($interfaceIsEqual(err, $ifaceNil))) {
 70827  				$s = -1; return [false, err];
 70828  			}
 70829  		/* } */ case 5:
 70830  		/* */ if (strings.HasPrefix(host, "[") && strings.HasSuffix(host, "]") || !(net.ParseIP(host) === net.IP.nil)) { $s = 7; continue; }
 70831  		/* */ $s = 8; continue;
 70832  		/* if (strings.HasPrefix(host, "[") && strings.HasSuffix(host, "]") || !(net.ParseIP(host) === net.IP.nil)) { */ case 7:
 70833  			_r$2 = fmt.Errorf("URI with IP (%q) cannot be matched against constraints", new sliceType$11([new $String(uri.String())])); /* */ $s = 9; case 9: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 70834  			$s = -1; return [false, _r$2];
 70835  		/* } */ case 8:
 70836  		_r$3 = matchDomainConstraint(host, constraint); /* */ $s = 10; case 10: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 70837  		$s = -1; return _r$3;
 70838  		/* */ } return; } if ($f === undefined) { $f = { $blk: matchURIConstraint }; } $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._tuple = _tuple; $f.constraint = constraint; $f.err = err; $f.host = host; $f.uri = uri; $f.$s = $s; $f.$r = $r; return $f;
 70839  	};
 70840  	matchIPConstraint = function(ip, constraint) {
 70841  		var _i, _ref, constraint, i, ip, mask, x, x$1;
 70842  		if (!((ip.$length === constraint.IP.$length))) {
 70843  			return [false, $ifaceNil];
 70844  		}
 70845  		_ref = ip;
 70846  		_i = 0;
 70847  		while (true) {
 70848  			if (!(_i < _ref.$length)) { break; }
 70849  			i = _i;
 70850  			mask = (x = constraint.Mask, ((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i]));
 70851  			if (!((((((i < 0 || i >= ip.$length) ? ($throwRuntimeError("index out of range"), undefined) : ip.$array[ip.$offset + i]) & mask) >>> 0) === (((x$1 = constraint.IP, ((i < 0 || i >= x$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + i])) & mask) >>> 0)))) {
 70852  				return [false, $ifaceNil];
 70853  			}
 70854  			_i++;
 70855  		}
 70856  		return [true, $ifaceNil];
 70857  	};
 70858  	matchDomainConstraint = function(domain, constraint) {
 70859  		var _i, _r, _r$1, _ref, _tuple, _tuple$1, constraint, constraintLabel, constraintLabels, domain, domainLabels, i, mustHaveSubdomains, ok, $s, $r;
 70860  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _i = $f._i; _r = $f._r; _r$1 = $f._r$1; _ref = $f._ref; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; constraint = $f.constraint; constraintLabel = $f.constraintLabel; constraintLabels = $f.constraintLabels; domain = $f.domain; domainLabels = $f.domainLabels; i = $f.i; mustHaveSubdomains = $f.mustHaveSubdomains; ok = $f.ok; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 70861  		if (constraint.length === 0) {
 70862  			$s = -1; return [true, $ifaceNil];
 70863  		}
 70864  		_tuple = domainToReverseLabels(domain);
 70865  		domainLabels = _tuple[0];
 70866  		ok = _tuple[1];
 70867  		/* */ if (!ok) { $s = 1; continue; }
 70868  		/* */ $s = 2; continue;
 70869  		/* if (!ok) { */ case 1:
 70870  			_r = fmt.Errorf("x509: internal error: cannot parse domain %q", new sliceType$11([new $String(domain)])); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 70871  			$s = -1; return [false, _r];
 70872  		/* } */ case 2:
 70873  		mustHaveSubdomains = false;
 70874  		if (constraint.charCodeAt(0) === 46) {
 70875  			mustHaveSubdomains = true;
 70876  			constraint = $substring(constraint, 1);
 70877  		}
 70878  		_tuple$1 = domainToReverseLabels(constraint);
 70879  		constraintLabels = _tuple$1[0];
 70880  		ok = _tuple$1[1];
 70881  		/* */ if (!ok) { $s = 4; continue; }
 70882  		/* */ $s = 5; continue;
 70883  		/* if (!ok) { */ case 4:
 70884  			_r$1 = fmt.Errorf("x509: internal error: cannot parse domain %q", new sliceType$11([new $String(constraint)])); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 70885  			$s = -1; return [false, _r$1];
 70886  		/* } */ case 5:
 70887  		if (domainLabels.$length < constraintLabels.$length || (mustHaveSubdomains && (domainLabels.$length === constraintLabels.$length))) {
 70888  			$s = -1; return [false, $ifaceNil];
 70889  		}
 70890  		_ref = constraintLabels;
 70891  		_i = 0;
 70892  		while (true) {
 70893  			if (!(_i < _ref.$length)) { break; }
 70894  			i = _i;
 70895  			constraintLabel = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
 70896  			if (!strings.EqualFold(constraintLabel, ((i < 0 || i >= domainLabels.$length) ? ($throwRuntimeError("index out of range"), undefined) : domainLabels.$array[domainLabels.$offset + i]))) {
 70897  				$s = -1; return [false, $ifaceNil];
 70898  			}
 70899  			_i++;
 70900  		}
 70901  		$s = -1; return [true, $ifaceNil];
 70902  		/* */ } return; } if ($f === undefined) { $f = { $blk: matchDomainConstraint }; } $f._i = _i; $f._r = _r; $f._r$1 = _r$1; $f._ref = _ref; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.constraint = constraint; $f.constraintLabel = constraintLabel; $f.constraintLabels = constraintLabels; $f.domain = domain; $f.domainLabels = domainLabels; $f.i = i; $f.mustHaveSubdomains = mustHaveSubdomains; $f.ok = ok; $f.$s = $s; $f.$r = $r; return $f;
 70903  	};
 70904  	Certificate.ptr.prototype.checkNameConstraints = function(count, maxConstraintComparisons, nameType, name, parsedName, match, permitted, excluded) {
 70905  		var _r, _r$1, _r$10, _r$11, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _tuple, _tuple$1, c, constraint, constraint$1, count, err, err$1, excluded, excludedValue, i, i$1, match, match$1, maxConstraintComparisons, name, nameType, ok, parsedName, permitted, permittedValue, x, x$1, x$2, x$3, x$4, x$5, $s, $r;
 70906  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _r$10 = $f._r$10; _r$11 = $f._r$11; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _r$8 = $f._r$8; _r$9 = $f._r$9; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; c = $f.c; constraint = $f.constraint; constraint$1 = $f.constraint$1; count = $f.count; err = $f.err; err$1 = $f.err$1; excluded = $f.excluded; excludedValue = $f.excludedValue; i = $f.i; i$1 = $f.i$1; match = $f.match; match$1 = $f.match$1; maxConstraintComparisons = $f.maxConstraintComparisons; name = $f.name; nameType = $f.nameType; ok = $f.ok; parsedName = $f.parsedName; permitted = $f.permitted; permittedValue = $f.permittedValue; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; x$3 = $f.x$3; x$4 = $f.x$4; x$5 = $f.x$5; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 70907  		c = this;
 70908  		_r = reflect.ValueOf(excluded); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 70909  		excludedValue = _r;
 70910  		count.$set(count.$get() + ($clone(excludedValue, reflect.Value).Len()) >> 0);
 70911  		if (count.$get() > maxConstraintComparisons) {
 70912  			$s = -1; return (x = new CertificateInvalidError.ptr(c, 8, ""), new x.constructor.elem(x));
 70913  		}
 70914  		i = 0;
 70915  		/* while (true) { */ case 2:
 70916  			/* if (!(i < $clone(excludedValue, reflect.Value).Len())) { break; } */ if(!(i < $clone(excludedValue, reflect.Value).Len())) { $s = 3; continue; }
 70917  			_r$1 = $clone(excludedValue, reflect.Value).Index(i); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 70918  			_r$2 = $clone(_r$1, reflect.Value).Interface(); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 70919  			constraint = _r$2;
 70920  			_r$3 = match(parsedName, constraint); /* */ $s = 6; case 6: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 70921  			_tuple = _r$3;
 70922  			match$1 = _tuple[0];
 70923  			err = _tuple[1];
 70924  			/* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 7; continue; }
 70925  			/* */ $s = 8; continue;
 70926  			/* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 7:
 70927  				_r$4 = err.Error(); /* */ $s = 9; case 9: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 70928  				$s = -1; return (x$1 = new CertificateInvalidError.ptr(c, 2, _r$4), new x$1.constructor.elem(x$1));
 70929  			/* } */ case 8:
 70930  			/* */ if (match$1) { $s = 10; continue; }
 70931  			/* */ $s = 11; continue;
 70932  			/* if (match$1) { */ case 10:
 70933  				_r$5 = fmt.Sprintf("%s %q is excluded by constraint %q", new sliceType$11([new $String(nameType), new $String(name), constraint])); /* */ $s = 12; case 12: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
 70934  				$s = -1; return (x$2 = new CertificateInvalidError.ptr(c, 2, _r$5), new x$2.constructor.elem(x$2));
 70935  			/* } */ case 11:
 70936  			i = i + (1) >> 0;
 70937  		/* } */ $s = 2; continue; case 3:
 70938  		_r$6 = reflect.ValueOf(permitted); /* */ $s = 13; case 13: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
 70939  		permittedValue = _r$6;
 70940  		count.$set(count.$get() + ($clone(permittedValue, reflect.Value).Len()) >> 0);
 70941  		if (count.$get() > maxConstraintComparisons) {
 70942  			$s = -1; return (x$3 = new CertificateInvalidError.ptr(c, 8, ""), new x$3.constructor.elem(x$3));
 70943  		}
 70944  		ok = true;
 70945  		i$1 = 0;
 70946  		/* while (true) { */ case 14:
 70947  			/* if (!(i$1 < $clone(permittedValue, reflect.Value).Len())) { break; } */ if(!(i$1 < $clone(permittedValue, reflect.Value).Len())) { $s = 15; continue; }
 70948  			_r$7 = $clone(permittedValue, reflect.Value).Index(i$1); /* */ $s = 16; case 16: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
 70949  			_r$8 = $clone(_r$7, reflect.Value).Interface(); /* */ $s = 17; case 17: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
 70950  			constraint$1 = _r$8;
 70951  			err$1 = $ifaceNil;
 70952  			_r$9 = match(parsedName, constraint$1); /* */ $s = 18; case 18: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 70953  			_tuple$1 = _r$9;
 70954  			ok = _tuple$1[0];
 70955  			err$1 = _tuple$1[1];
 70956  			/* */ if (!($interfaceIsEqual(err$1, $ifaceNil))) { $s = 19; continue; }
 70957  			/* */ $s = 20; continue;
 70958  			/* if (!($interfaceIsEqual(err$1, $ifaceNil))) { */ case 19:
 70959  				_r$10 = err$1.Error(); /* */ $s = 21; case 21: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
 70960  				$s = -1; return (x$4 = new CertificateInvalidError.ptr(c, 2, _r$10), new x$4.constructor.elem(x$4));
 70961  			/* } */ case 20:
 70962  			if (ok) {
 70963  				/* break; */ $s = 15; continue;
 70964  			}
 70965  			i$1 = i$1 + (1) >> 0;
 70966  		/* } */ $s = 14; continue; case 15:
 70967  		/* */ if (!ok) { $s = 22; continue; }
 70968  		/* */ $s = 23; continue;
 70969  		/* if (!ok) { */ case 22:
 70970  			_r$11 = fmt.Sprintf("%s %q is not permitted by any constraint", new sliceType$11([new $String(nameType), new $String(name)])); /* */ $s = 24; case 24: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; }
 70971  			$s = -1; return (x$5 = new CertificateInvalidError.ptr(c, 2, _r$11), new x$5.constructor.elem(x$5));
 70972  		/* } */ case 23:
 70973  		$s = -1; return $ifaceNil;
 70974  		/* */ } return; } if ($f === undefined) { $f = { $blk: Certificate.ptr.prototype.checkNameConstraints }; } $f._r = _r; $f._r$1 = _r$1; $f._r$10 = _r$10; $f._r$11 = _r$11; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._r$8 = _r$8; $f._r$9 = _r$9; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.c = c; $f.constraint = constraint; $f.constraint$1 = constraint$1; $f.count = count; $f.err = err; $f.err$1 = err$1; $f.excluded = excluded; $f.excludedValue = excludedValue; $f.i = i; $f.i$1 = i$1; $f.match = match; $f.match$1 = match$1; $f.maxConstraintComparisons = maxConstraintComparisons; $f.name = name; $f.nameType = nameType; $f.ok = ok; $f.parsedName = parsedName; $f.permitted = permitted; $f.permittedValue = permittedValue; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.x$3 = x$3; $f.x$4 = x$4; $f.x$5 = x$5; $f.$s = $s; $f.$r = $r; return $f;
 70975  	};
 70976  	Certificate.prototype.checkNameConstraints = function(count, maxConstraintComparisons, nameType, name, parsedName, match, permitted, excluded) { return this.$val.checkNameConstraints(count, maxConstraintComparisons, nameType, name, parsedName, match, permitted, excluded); };
 70977  	ekuPermittedBy = function(eku, certEKU) {
 70978  		var _r, _r$1, certEKU, eku, mapServerAuthEKUs, $s, $r;
 70979  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; certEKU = $f.certEKU; eku = $f.eku; mapServerAuthEKUs = $f.mapServerAuthEKUs; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 70980  		if ((certEKU === 0) || (eku === certEKU)) {
 70981  			$s = -1; return true;
 70982  		}
 70983  		mapServerAuthEKUs = (function(eku$1) {
 70984  			var eku$1;
 70985  			if ((eku$1 === 11) || (eku$1 === 10)) {
 70986  				return 1;
 70987  			}
 70988  			return eku$1;
 70989  		});
 70990  		_r = mapServerAuthEKUs(eku); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 70991  		eku = _r;
 70992  		_r$1 = mapServerAuthEKUs(certEKU); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 70993  		certEKU = _r$1;
 70994  		if ((eku === certEKU) || ((eku === 2) && (certEKU === 1)) || (eku === 9) || (((eku === 12) || (eku === 13)) && (certEKU === 3))) {
 70995  			$s = -1; return true;
 70996  		}
 70997  		$s = -1; return false;
 70998  		/* */ } return; } if ($f === undefined) { $f = { $blk: ekuPermittedBy }; } $f._r = _r; $f._r$1 = _r$1; $f.certEKU = certEKU; $f.eku = eku; $f.mapServerAuthEKUs = mapServerAuthEKUs; $f.$s = $s; $f.$r = $r; return $f;
 70999  	};
 71000  	Certificate.ptr.prototype.isValid = function(certType, currentChain, opts) {
 71001  		var _i, _i$1, _i$2, _i$3, _i$4, _r, _r$1, _r$2, _r$3, _ref, _ref$1, _ref$2, _ref$3, _ref$4, _tuple, _tuple$1, c, caEKU, caEKU$1, caEKU$2, certType, checkEKUs, child, comparisonCount, currentChain, eku, eku$1, err, leaf, maxConstraintComparisons, now, numIntermediates, oid, ok, opts, sanExtension, x, x$1, x$10, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9, $s, $r;
 71002  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _i = $f._i; _i$1 = $f._i$1; _i$2 = $f._i$2; _i$3 = $f._i$3; _i$4 = $f._i$4; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _ref = $f._ref; _ref$1 = $f._ref$1; _ref$2 = $f._ref$2; _ref$3 = $f._ref$3; _ref$4 = $f._ref$4; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; c = $f.c; caEKU = $f.caEKU; caEKU$1 = $f.caEKU$1; caEKU$2 = $f.caEKU$2; certType = $f.certType; checkEKUs = $f.checkEKUs; child = $f.child; comparisonCount = $f.comparisonCount; currentChain = $f.currentChain; eku = $f.eku; eku$1 = $f.eku$1; err = $f.err; leaf = $f.leaf; maxConstraintComparisons = $f.maxConstraintComparisons; now = $f.now; numIntermediates = $f.numIntermediates; oid = $f.oid; ok = $f.ok; opts = $f.opts; sanExtension = $f.sanExtension; x = $f.x; x$1 = $f.x$1; x$10 = $f.x$10; x$2 = $f.x$2; x$3 = $f.x$3; x$4 = $f.x$4; x$5 = $f.x$5; x$6 = $f.x$6; x$7 = $f.x$7; x$8 = $f.x$8; x$9 = $f.x$9; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 71003  		c = [c];
 71004  		comparisonCount = [comparisonCount];
 71005  		maxConstraintComparisons = [maxConstraintComparisons];
 71006  		c[0] = this;
 71007  		if (c[0].UnhandledCriticalExtensions.$length > 0) {
 71008  			$s = -1; return (x = new UnhandledCriticalExtension.ptr(), new x.constructor.elem(x));
 71009  		}
 71010  		if (currentChain.$length > 0) {
 71011  			child = (x$1 = currentChain.$length - 1 >> 0, ((x$1 < 0 || x$1 >= currentChain.$length) ? ($throwRuntimeError("index out of range"), undefined) : currentChain.$array[currentChain.$offset + x$1]));
 71012  			if (!bytes.Equal(child.RawIssuer, c[0].RawSubject)) {
 71013  				$s = -1; return (x$2 = new CertificateInvalidError.ptr(c[0], 5, ""), new x$2.constructor.elem(x$2));
 71014  			}
 71015  		}
 71016  		now = $clone(opts.CurrentTime, time.Time);
 71017  		if ($clone(now, time.Time).IsZero()) {
 71018  			time.Time.copy(now, time.Now());
 71019  		}
 71020  		if ($clone(now, time.Time).Before($clone(c[0].NotBefore, time.Time)) || $clone(now, time.Time).After($clone(c[0].NotAfter, time.Time))) {
 71021  			$s = -1; return (x$3 = new CertificateInvalidError.ptr(c[0], 1, ""), new x$3.constructor.elem(x$3));
 71022  		}
 71023  		maxConstraintComparisons[0] = opts.MaxConstraintComparisions;
 71024  		if (maxConstraintComparisons[0] === 0) {
 71025  			maxConstraintComparisons[0] = 250000;
 71026  		}
 71027  		comparisonCount[0] = 0;
 71028  		leaf = ptrType$1.nil;
 71029  		if ((certType === 1) || (certType === 2)) {
 71030  			if (currentChain.$length === 0) {
 71031  				$s = -1; return errors.New("x509: internal error: empty chain when appending CA cert");
 71032  			}
 71033  			leaf = (0 >= currentChain.$length ? ($throwRuntimeError("index out of range"), undefined) : currentChain.$array[currentChain.$offset + 0]);
 71034  		}
 71035  		/* */ if (((certType === 1) || (certType === 2)) && c[0].hasNameConstraints()) { $s = 1; continue; }
 71036  		/* */ $s = 2; continue;
 71037  		/* if (((certType === 1) || (certType === 2)) && c[0].hasNameConstraints()) { */ case 1:
 71038  			_tuple = leaf.getSANExtension();
 71039  			sanExtension = _tuple[0];
 71040  			ok = _tuple[1];
 71041  			if (!ok) {
 71042  				$s = -1; return (x$4 = new CertificateInvalidError.ptr(c[0], 6, ""), new x$4.constructor.elem(x$4));
 71043  			}
 71044  			_r = forEachSAN(sanExtension, (function(c, comparisonCount, maxConstraintComparisons) { return function $b(tag, data) {
 71045  				var _1, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _tuple$1, _tuple$2, data, err, err$1, err$2, err$3, err$4, ip, l, mailbox, name, name$1, name$2, ok$1, tag, uri, $s, $r;
 71046  				/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; data = $f.data; err = $f.err; err$1 = $f.err$1; err$2 = $f.err$2; err$3 = $f.err$3; err$4 = $f.err$4; ip = $f.ip; l = $f.l; mailbox = $f.mailbox; name = $f.name; name$1 = $f.name$1; name$2 = $f.name$2; ok$1 = $f.ok$1; tag = $f.tag; uri = $f.uri; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 71047  					_1 = tag;
 71048  					/* */ if (_1 === (1)) { $s = 2; continue; }
 71049  					/* */ if (_1 === (2)) { $s = 3; continue; }
 71050  					/* */ if (_1 === (6)) { $s = 4; continue; }
 71051  					/* */ if (_1 === (7)) { $s = 5; continue; }
 71052  					/* */ $s = 6; continue;
 71053  					/* if (_1 === (1)) { */ case 2:
 71054  						name = ($bytesToString(data));
 71055  						_tuple$1 = parseRFC2821Mailbox(name);
 71056  						mailbox = $clone(_tuple$1[0], rfc2821Mailbox);
 71057  						ok$1 = _tuple$1[1];
 71058  						if (!ok$1) {
 71059  							$s = -1; return errors.New("x509: internal error: rfc822Name SAN failed to parse");
 71060  						}
 71061  						_r = c[0].checkNameConstraints((comparisonCount.$ptr || (comparisonCount.$ptr = new ptrType$9(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, comparisonCount))), maxConstraintComparisons[0], "email address", name, new mailbox.constructor.elem(mailbox), (function(c, comparisonCount, maxConstraintComparisons) { return function $b(parsedName, constraint) {
 71062  							var _r, constraint, parsedName, $s, $r;
 71063  							/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; constraint = $f.constraint; parsedName = $f.parsedName; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 71064  							_r = matchEmailConstraint($clone($assertType(parsedName, rfc2821Mailbox), rfc2821Mailbox), $assertType(constraint, $String)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 71065  							$s = -1; return _r;
 71066  							/* */ } return; } if ($f === undefined) { $f = { $blk: $b }; } $f._r = _r; $f.constraint = constraint; $f.parsedName = parsedName; $f.$s = $s; $f.$r = $r; return $f;
 71067  						}; })(c, comparisonCount, maxConstraintComparisons), c[0].PermittedEmailAddresses, c[0].ExcludedEmailAddresses); /* */ $s = 7; case 7: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 71068  						err = _r;
 71069  						if (!($interfaceIsEqual(err, $ifaceNil))) {
 71070  							$s = -1; return err;
 71071  						}
 71072  						$s = 6; continue;
 71073  					/* } else if (_1 === (2)) { */ case 3:
 71074  						name$1 = ($bytesToString(data));
 71075  						_r$1 = c[0].checkNameConstraints((comparisonCount.$ptr || (comparisonCount.$ptr = new ptrType$9(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, comparisonCount))), maxConstraintComparisons[0], "DNS name", name$1, new $String(name$1), (function(c, comparisonCount, maxConstraintComparisons) { return function $b(parsedName, constraint) {
 71076  							var _r$1, constraint, parsedName, $s, $r;
 71077  							/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; constraint = $f.constraint; parsedName = $f.parsedName; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 71078  							_r$1 = matchDomainConstraint($assertType(parsedName, $String), $assertType(constraint, $String)); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 71079  							$s = -1; return _r$1;
 71080  							/* */ } return; } if ($f === undefined) { $f = { $blk: $b }; } $f._r$1 = _r$1; $f.constraint = constraint; $f.parsedName = parsedName; $f.$s = $s; $f.$r = $r; return $f;
 71081  						}; })(c, comparisonCount, maxConstraintComparisons), c[0].PermittedDNSDomains, c[0].ExcludedDNSDomains); /* */ $s = 8; case 8: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 71082  						err$1 = _r$1;
 71083  						if (!($interfaceIsEqual(err$1, $ifaceNil))) {
 71084  							$s = -1; return err$1;
 71085  						}
 71086  						$s = 6; continue;
 71087  					/* } else if (_1 === (6)) { */ case 4:
 71088  						name$2 = ($bytesToString(data));
 71089  						_r$2 = url.Parse(name$2); /* */ $s = 9; case 9: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 71090  						_tuple$2 = _r$2;
 71091  						uri = _tuple$2[0];
 71092  						err$2 = _tuple$2[1];
 71093  						/* */ if (!($interfaceIsEqual(err$2, $ifaceNil))) { $s = 10; continue; }
 71094  						/* */ $s = 11; continue;
 71095  						/* if (!($interfaceIsEqual(err$2, $ifaceNil))) { */ case 10:
 71096  							_r$3 = fmt.Errorf("x509: internal error: URI SAN %q failed to parse", new sliceType$11([new $String(name$2)])); /* */ $s = 12; case 12: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 71097  							$s = -1; return _r$3;
 71098  						/* } */ case 11:
 71099  						_r$4 = c[0].checkNameConstraints((comparisonCount.$ptr || (comparisonCount.$ptr = new ptrType$9(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, comparisonCount))), maxConstraintComparisons[0], "URI", name$2, uri, (function(c, comparisonCount, maxConstraintComparisons) { return function $b(parsedName, constraint) {
 71100  							var _r$4, constraint, parsedName, $s, $r;
 71101  							/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$4 = $f._r$4; constraint = $f.constraint; parsedName = $f.parsedName; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 71102  							_r$4 = matchURIConstraint($assertType(parsedName, ptrType$10), $assertType(constraint, $String)); /* */ $s = 1; case 1: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 71103  							$s = -1; return _r$4;
 71104  							/* */ } return; } if ($f === undefined) { $f = { $blk: $b }; } $f._r$4 = _r$4; $f.constraint = constraint; $f.parsedName = parsedName; $f.$s = $s; $f.$r = $r; return $f;
 71105  						}; })(c, comparisonCount, maxConstraintComparisons), c[0].PermittedURIDomains, c[0].ExcludedURIDomains); /* */ $s = 13; case 13: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 71106  						err$3 = _r$4;
 71107  						if (!($interfaceIsEqual(err$3, $ifaceNil))) {
 71108  							$s = -1; return err$3;
 71109  						}
 71110  						$s = 6; continue;
 71111  					/* } else if (_1 === (7)) { */ case 5:
 71112  						ip = ($subslice(new net.IP(data.$array), data.$offset, data.$offset + data.$length));
 71113  						l = ip.$length;
 71114  						/* */ if (!((l === 4)) && !((l === 16))) { $s = 14; continue; }
 71115  						/* */ $s = 15; continue;
 71116  						/* if (!((l === 4)) && !((l === 16))) { */ case 14:
 71117  							_r$5 = fmt.Errorf("x509: internal error: IP SAN %x failed to parse", new sliceType$11([data])); /* */ $s = 16; case 16: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
 71118  							$s = -1; return _r$5;
 71119  						/* } */ case 15:
 71120  						_r$6 = c[0].checkNameConstraints((comparisonCount.$ptr || (comparisonCount.$ptr = new ptrType$9(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, comparisonCount))), maxConstraintComparisons[0], "IP address", ip.String(), ip, (function(c, comparisonCount, maxConstraintComparisons) { return function(parsedName, constraint) {
 71121  							var constraint, parsedName;
 71122  							return matchIPConstraint($assertType(parsedName, net.IP), $assertType(constraint, ptrType$11));
 71123  						}; })(c, comparisonCount, maxConstraintComparisons), c[0].PermittedIPRanges, c[0].ExcludedIPRanges); /* */ $s = 17; case 17: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
 71124  						err$4 = _r$6;
 71125  						if (!($interfaceIsEqual(err$4, $ifaceNil))) {
 71126  							$s = -1; return err$4;
 71127  						}
 71128  					/* } */ case 6:
 71129  				case 1:
 71130  				$s = -1; return $ifaceNil;
 71131  				/* */ } return; } if ($f === undefined) { $f = { $blk: $b }; } $f._1 = _1; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f.data = data; $f.err = err; $f.err$1 = err$1; $f.err$2 = err$2; $f.err$3 = err$3; $f.err$4 = err$4; $f.ip = ip; $f.l = l; $f.mailbox = mailbox; $f.name = name; $f.name$1 = name$1; $f.name$2 = name$2; $f.ok$1 = ok$1; $f.tag = tag; $f.uri = uri; $f.$s = $s; $f.$r = $r; return $f;
 71132  			}; })(c, comparisonCount, maxConstraintComparisons)); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 71133  			err = _r;
 71134  			if (!($interfaceIsEqual(err, $ifaceNil))) {
 71135  				$s = -1; return err;
 71136  			}
 71137  		/* } */ case 2:
 71138  		checkEKUs = certType === 1;
 71139  		if (checkEKUs && ((c[0].ExtKeyUsage.$length === 0) && (c[0].UnknownExtKeyUsage.$length === 0))) {
 71140  			checkEKUs = false;
 71141  		}
 71142  		if (checkEKUs) {
 71143  			_ref = c[0].ExtKeyUsage;
 71144  			_i = 0;
 71145  			while (true) {
 71146  				if (!(_i < _ref.$length)) { break; }
 71147  				caEKU = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
 71148  				comparisonCount[0] = comparisonCount[0] + (1) >> 0;
 71149  				if (caEKU === 0) {
 71150  					checkEKUs = false;
 71151  					break;
 71152  				}
 71153  				_i++;
 71154  			}
 71155  		}
 71156  		/* */ if (checkEKUs) { $s = 4; continue; }
 71157  		/* */ $s = 5; continue;
 71158  		/* if (checkEKUs) { */ case 4:
 71159  			_ref$1 = leaf.ExtKeyUsage;
 71160  			_i$1 = 0;
 71161  			/* while (true) { */ case 6:
 71162  				/* if (!(_i$1 < _ref$1.$length)) { break; } */ if(!(_i$1 < _ref$1.$length)) { $s = 7; continue; }
 71163  				eku = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]);
 71164  				if (comparisonCount[0] > maxConstraintComparisons[0]) {
 71165  					$s = -1; return (x$5 = new CertificateInvalidError.ptr(c[0], 8, ""), new x$5.constructor.elem(x$5));
 71166  				}
 71167  				_ref$2 = c[0].ExtKeyUsage;
 71168  				_i$2 = 0;
 71169  				/* while (true) { */ case 8:
 71170  					/* if (!(_i$2 < _ref$2.$length)) { break; } */ if(!(_i$2 < _ref$2.$length)) { $s = 9; continue; }
 71171  					caEKU$1 = ((_i$2 < 0 || _i$2 >= _ref$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$2.$array[_ref$2.$offset + _i$2]);
 71172  					comparisonCount[0] = comparisonCount[0] + (1) >> 0;
 71173  					_r$1 = ekuPermittedBy(eku, caEKU$1); /* */ $s = 12; case 12: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 71174  					/* */ if (_r$1) { $s = 10; continue; }
 71175  					/* */ $s = 11; continue;
 71176  					/* if (_r$1) { */ case 10:
 71177  						_i$1++;
 71178  						/* continue NextEKU; */ $s = 6; continue s;
 71179  					/* } */ case 11:
 71180  					_i$2++;
 71181  				/* } */ $s = 8; continue; case 9:
 71182  				_tuple$1 = oidFromExtKeyUsage(eku);
 71183  				oid = _tuple$1[0];
 71184  				_r$2 = fmt.Sprintf("EKU not permitted: %#v", new sliceType$11([oid])); /* */ $s = 13; case 13: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 71185  				$s = -1; return (x$6 = new CertificateInvalidError.ptr(c[0], 9, _r$2), new x$6.constructor.elem(x$6));
 71186  			/* } */ $s = 6; continue; case 7:
 71187  			_ref$3 = leaf.UnknownExtKeyUsage;
 71188  			_i$3 = 0;
 71189  			/* while (true) { */ case 14:
 71190  				/* if (!(_i$3 < _ref$3.$length)) { break; } */ if(!(_i$3 < _ref$3.$length)) { $s = 15; continue; }
 71191  				eku$1 = ((_i$3 < 0 || _i$3 >= _ref$3.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$3.$array[_ref$3.$offset + _i$3]);
 71192  				if (comparisonCount[0] > maxConstraintComparisons[0]) {
 71193  					$s = -1; return (x$7 = new CertificateInvalidError.ptr(c[0], 8, ""), new x$7.constructor.elem(x$7));
 71194  				}
 71195  				_ref$4 = c[0].UnknownExtKeyUsage;
 71196  				_i$4 = 0;
 71197  				/* while (true) { */ case 16:
 71198  					/* if (!(_i$4 < _ref$4.$length)) { break; } */ if(!(_i$4 < _ref$4.$length)) { $s = 17; continue; }
 71199  					caEKU$2 = ((_i$4 < 0 || _i$4 >= _ref$4.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$4.$array[_ref$4.$offset + _i$4]);
 71200  					comparisonCount[0] = comparisonCount[0] + (1) >> 0;
 71201  					if (caEKU$2.Equal(eku$1)) {
 71202  						_i$3++;
 71203  						/* continue NextUnknownEKU; */ $s = 14; continue s;
 71204  					}
 71205  					_i$4++;
 71206  				/* } */ $s = 16; continue; case 17:
 71207  				_r$3 = fmt.Sprintf("EKU not permitted: %#v", new sliceType$11([eku$1])); /* */ $s = 18; case 18: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 71208  				$s = -1; return (x$8 = new CertificateInvalidError.ptr(c[0], 9, _r$3), new x$8.constructor.elem(x$8));
 71209  			/* } */ $s = 14; continue; case 15:
 71210  		/* } */ case 5:
 71211  		if ((certType === 1) && (!c[0].BasicConstraintsValid || !c[0].IsCA)) {
 71212  			$s = -1; return (x$9 = new CertificateInvalidError.ptr(c[0], 0, ""), new x$9.constructor.elem(x$9));
 71213  		}
 71214  		if (c[0].BasicConstraintsValid && c[0].MaxPathLen >= 0) {
 71215  			numIntermediates = currentChain.$length - 1 >> 0;
 71216  			if (numIntermediates > c[0].MaxPathLen) {
 71217  				$s = -1; return (x$10 = new CertificateInvalidError.ptr(c[0], 3, ""), new x$10.constructor.elem(x$10));
 71218  			}
 71219  		}
 71220  		$s = -1; return $ifaceNil;
 71221  		/* */ } return; } if ($f === undefined) { $f = { $blk: Certificate.ptr.prototype.isValid }; } $f._i = _i; $f._i$1 = _i$1; $f._i$2 = _i$2; $f._i$3 = _i$3; $f._i$4 = _i$4; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._ref = _ref; $f._ref$1 = _ref$1; $f._ref$2 = _ref$2; $f._ref$3 = _ref$3; $f._ref$4 = _ref$4; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.c = c; $f.caEKU = caEKU; $f.caEKU$1 = caEKU$1; $f.caEKU$2 = caEKU$2; $f.certType = certType; $f.checkEKUs = checkEKUs; $f.child = child; $f.comparisonCount = comparisonCount; $f.currentChain = currentChain; $f.eku = eku; $f.eku$1 = eku$1; $f.err = err; $f.leaf = leaf; $f.maxConstraintComparisons = maxConstraintComparisons; $f.now = now; $f.numIntermediates = numIntermediates; $f.oid = oid; $f.ok = ok; $f.opts = opts; $f.sanExtension = sanExtension; $f.x = x; $f.x$1 = x$1; $f.x$10 = x$10; $f.x$2 = x$2; $f.x$3 = x$3; $f.x$4 = x$4; $f.x$5 = x$5; $f.x$6 = x$6; $f.x$7 = x$7; $f.x$8 = x$8; $f.x$9 = x$9; $f.$s = $s; $f.$r = $r; return $f;
 71222  	};
 71223  	Certificate.prototype.isValid = function(certType, currentChain, opts) { return this.$val.isValid(certType, currentChain, opts); };
 71224  	Certificate.ptr.prototype.Verify = function(opts) {
 71225  		var _i, _i$1, _i$2, _i$3, _r, _r$1, _r$2, _r$3, _r$4, _ref, _ref$1, _ref$2, _ref$3, _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, _tuple$1, _tuple$2, c, candidateChains, chains, checkEKU, eku, eku$1, err, intermediate, leafEKU, oid, opts, requestedKeyUsages, x, x$1, $s, $r;
 71226  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _i = $f._i; _i$1 = $f._i$1; _i$2 = $f._i$2; _i$3 = $f._i$3; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _ref = $f._ref; _ref$1 = $f._ref$1; _ref$2 = $f._ref$2; _ref$3 = $f._ref$3; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$10 = $f._tmp$10; _tmp$11 = $f._tmp$11; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tmp$4 = $f._tmp$4; _tmp$5 = $f._tmp$5; _tmp$6 = $f._tmp$6; _tmp$7 = $f._tmp$7; _tmp$8 = $f._tmp$8; _tmp$9 = $f._tmp$9; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; c = $f.c; candidateChains = $f.candidateChains; chains = $f.chains; checkEKU = $f.checkEKU; eku = $f.eku; eku$1 = $f.eku$1; err = $f.err; intermediate = $f.intermediate; leafEKU = $f.leafEKU; oid = $f.oid; opts = $f.opts; requestedKeyUsages = $f.requestedKeyUsages; x = $f.x; x$1 = $f.x$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 71227  		opts = [opts];
 71228  		chains = sliceType$12.nil;
 71229  		err = $ifaceNil;
 71230  		c = this;
 71231  		if (c.Raw.$length === 0) {
 71232  			_tmp = sliceType$12.nil;
 71233  			_tmp$1 = errNotParsed;
 71234  			chains = _tmp;
 71235  			err = _tmp$1;
 71236  			$s = -1; return [chains, err];
 71237  		}
 71238  		if (!(opts[0].Intermediates === ptrType.nil)) {
 71239  			_ref = opts[0].Intermediates.certs;
 71240  			_i = 0;
 71241  			while (true) {
 71242  				if (!(_i < _ref.$length)) { break; }
 71243  				intermediate = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
 71244  				if (intermediate.Raw.$length === 0) {
 71245  					_tmp$2 = sliceType$12.nil;
 71246  					_tmp$3 = errNotParsed;
 71247  					chains = _tmp$2;
 71248  					err = _tmp$3;
 71249  					$s = -1; return [chains, err];
 71250  				}
 71251  				_i++;
 71252  			}
 71253  		}
 71254  		if (opts[0].Roots === ptrType.nil && false) {
 71255  			_tuple = c.systemVerify(opts[0]);
 71256  			chains = _tuple[0];
 71257  			err = _tuple[1];
 71258  			$s = -1; return [chains, err];
 71259  		}
 71260  		/* */ if (opts[0].Roots === ptrType.nil) { $s = 1; continue; }
 71261  		/* */ $s = 2; continue;
 71262  		/* if (opts[0].Roots === ptrType.nil) { */ case 1:
 71263  			_r = systemRootsPool(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 71264  			opts[0].Roots = _r;
 71265  			if (opts[0].Roots === ptrType.nil) {
 71266  				_tmp$4 = sliceType$12.nil;
 71267  				_tmp$5 = (x = new SystemRootsError.ptr(systemRootsErr), new x.constructor.elem(x));
 71268  				chains = _tmp$4;
 71269  				err = _tmp$5;
 71270  				$s = -1; return [chains, err];
 71271  			}
 71272  		/* } */ case 2:
 71273  		_r$1 = c.isValid(0, sliceType$6.nil, opts[0]); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 71274  		err = _r$1;
 71275  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 71276  			$s = -1; return [chains, err];
 71277  		}
 71278  		if (opts[0].DNSName.length > 0) {
 71279  			err = c.VerifyHostname(opts[0].DNSName);
 71280  			if (!($interfaceIsEqual(err, $ifaceNil))) {
 71281  				$s = -1; return [chains, err];
 71282  			}
 71283  		}
 71284  		requestedKeyUsages = $makeSlice(sliceType$13, opts[0].KeyUsages.$length);
 71285  		$copySlice(requestedKeyUsages, opts[0].KeyUsages);
 71286  		if (requestedKeyUsages.$length === 0) {
 71287  			requestedKeyUsages = $append(requestedKeyUsages, 1);
 71288  		}
 71289  		checkEKU = c.ExtKeyUsage.$length > 0;
 71290  		_ref$1 = requestedKeyUsages;
 71291  		_i$1 = 0;
 71292  		while (true) {
 71293  			if (!(_i$1 < _ref$1.$length)) { break; }
 71294  			eku = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]);
 71295  			if (eku === 0) {
 71296  				checkEKU = false;
 71297  				break;
 71298  			}
 71299  			_i$1++;
 71300  		}
 71301  		/* */ if (checkEKU) { $s = 5; continue; }
 71302  		/* */ $s = 6; continue;
 71303  		/* if (checkEKU) { */ case 5:
 71304  			_ref$2 = requestedKeyUsages;
 71305  			_i$2 = 0;
 71306  			/* while (true) { */ case 7:
 71307  				/* if (!(_i$2 < _ref$2.$length)) { break; } */ if(!(_i$2 < _ref$2.$length)) { $s = 8; continue; }
 71308  				eku$1 = ((_i$2 < 0 || _i$2 >= _ref$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$2.$array[_ref$2.$offset + _i$2]);
 71309  				_ref$3 = c.ExtKeyUsage;
 71310  				_i$3 = 0;
 71311  				/* while (true) { */ case 9:
 71312  					/* if (!(_i$3 < _ref$3.$length)) { break; } */ if(!(_i$3 < _ref$3.$length)) { $s = 10; continue; }
 71313  					leafEKU = ((_i$3 < 0 || _i$3 >= _ref$3.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$3.$array[_ref$3.$offset + _i$3]);
 71314  					_r$2 = ekuPermittedBy(eku$1, leafEKU); /* */ $s = 13; case 13: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 71315  					/* */ if (_r$2) { $s = 11; continue; }
 71316  					/* */ $s = 12; continue;
 71317  					/* if (_r$2) { */ case 11:
 71318  						_i$2++;
 71319  						/* continue NextUsage; */ $s = 7; continue s;
 71320  					/* } */ case 12:
 71321  					_i$3++;
 71322  				/* } */ $s = 9; continue; case 10:
 71323  				_tuple$1 = oidFromExtKeyUsage(eku$1);
 71324  				oid = _tuple$1[0];
 71325  				_tmp$6 = sliceType$12.nil;
 71326  				_r$3 = fmt.Sprintf("%#v", new sliceType$11([oid])); /* */ $s = 14; case 14: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 71327  				_tmp$7 = (x$1 = new CertificateInvalidError.ptr(c, 4, _r$3), new x$1.constructor.elem(x$1));
 71328  				chains = _tmp$6;
 71329  				err = _tmp$7;
 71330  				$s = -1; return [chains, err];
 71331  			/* } */ $s = 7; continue; case 8:
 71332  		/* } */ case 6:
 71333  		candidateChains = sliceType$12.nil;
 71334  		/* */ if (opts[0].Roots.contains(c)) { $s = 15; continue; }
 71335  		/* */ $s = 16; continue;
 71336  		/* if (opts[0].Roots.contains(c)) { */ case 15:
 71337  			candidateChains = $append(candidateChains, new sliceType$6([c]));
 71338  			$s = 17; continue;
 71339  		/* } else { */ case 16:
 71340  			_r$4 = c.buildChains({}, new sliceType$6([c]), opts[0]); /* */ $s = 18; case 18: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 71341  			_tuple$2 = _r$4;
 71342  			candidateChains = _tuple$2[0];
 71343  			err = _tuple$2[1];
 71344  			if (!($interfaceIsEqual(err, $ifaceNil))) {
 71345  				_tmp$8 = sliceType$12.nil;
 71346  				_tmp$9 = err;
 71347  				chains = _tmp$8;
 71348  				err = _tmp$9;
 71349  				$s = -1; return [chains, err];
 71350  			}
 71351  		/* } */ case 17:
 71352  		_tmp$10 = candidateChains;
 71353  		_tmp$11 = $ifaceNil;
 71354  		chains = _tmp$10;
 71355  		err = _tmp$11;
 71356  		$s = -1; return [chains, err];
 71357  		/* */ } return; } if ($f === undefined) { $f = { $blk: Certificate.ptr.prototype.Verify }; } $f._i = _i; $f._i$1 = _i$1; $f._i$2 = _i$2; $f._i$3 = _i$3; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._ref = _ref; $f._ref$1 = _ref$1; $f._ref$2 = _ref$2; $f._ref$3 = _ref$3; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$10 = _tmp$10; $f._tmp$11 = _tmp$11; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tmp$4 = _tmp$4; $f._tmp$5 = _tmp$5; $f._tmp$6 = _tmp$6; $f._tmp$7 = _tmp$7; $f._tmp$8 = _tmp$8; $f._tmp$9 = _tmp$9; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f.c = c; $f.candidateChains = candidateChains; $f.chains = chains; $f.checkEKU = checkEKU; $f.eku = eku; $f.eku$1 = eku$1; $f.err = err; $f.intermediate = intermediate; $f.leafEKU = leafEKU; $f.oid = oid; $f.opts = opts; $f.requestedKeyUsages = requestedKeyUsages; $f.x = x; $f.x$1 = x$1; $f.$s = $s; $f.$r = $r; return $f;
 71358  	};
 71359  	Certificate.prototype.Verify = function(opts) { return this.$val.Verify(opts); };
 71360  	appendToFreshChain = function(chain, cert) {
 71361  		var cert, chain, n, x;
 71362  		n = $makeSlice(sliceType$6, (chain.$length + 1 >> 0));
 71363  		$copySlice(n, chain);
 71364  		(x = chain.$length, ((x < 0 || x >= n.$length) ? ($throwRuntimeError("index out of range"), undefined) : n.$array[n.$offset + x] = cert));
 71365  		return n;
 71366  	};
 71367  	Certificate.ptr.prototype.buildChains = function(cache, currentChain, opts) {
 71368  		var _entry, _i, _i$1, _i$2, _i$3, _key, _r, _r$1, _r$2, _r$3, _r$4, _ref, _ref$1, _ref$2, _ref$3, _tuple, _tuple$1, _tuple$2, _tuple$3, c, cache, cert, cert$1, chains, childChains, currentChain, err, failedIntermediate, failedRoot, hintCert, hintErr, intermediate, intermediateErr, intermediateNum, ok, opts, possibleIntermediates, possibleRoots, root, rootErr, rootNum, x, x$1, x$2, $s, $r;
 71369  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _entry = $f._entry; _i = $f._i; _i$1 = $f._i$1; _i$2 = $f._i$2; _i$3 = $f._i$3; _key = $f._key; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _ref = $f._ref; _ref$1 = $f._ref$1; _ref$2 = $f._ref$2; _ref$3 = $f._ref$3; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; c = $f.c; cache = $f.cache; cert = $f.cert; cert$1 = $f.cert$1; chains = $f.chains; childChains = $f.childChains; currentChain = $f.currentChain; err = $f.err; failedIntermediate = $f.failedIntermediate; failedRoot = $f.failedRoot; hintCert = $f.hintCert; hintErr = $f.hintErr; intermediate = $f.intermediate; intermediateErr = $f.intermediateErr; intermediateNum = $f.intermediateNum; ok = $f.ok; opts = $f.opts; possibleIntermediates = $f.possibleIntermediates; possibleRoots = $f.possibleRoots; root = $f.root; rootErr = $f.rootErr; rootNum = $f.rootNum; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 71370  		chains = sliceType$12.nil;
 71371  		err = $ifaceNil;
 71372  		c = this;
 71373  		_r = opts.Roots.findVerifiedParents(c); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 71374  		_tuple = _r;
 71375  		possibleRoots = _tuple[0];
 71376  		failedRoot = _tuple[1];
 71377  		rootErr = _tuple[2];
 71378  		_ref = possibleRoots;
 71379  		_i = 0;
 71380  		/* while (true) { */ case 2:
 71381  			/* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 3; continue; }
 71382  			rootNum = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
 71383  			root = (x = opts.Roots.certs, ((rootNum < 0 || rootNum >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + rootNum]));
 71384  			_ref$1 = currentChain;
 71385  			_i$1 = 0;
 71386  			/* while (true) { */ case 4:
 71387  				/* if (!(_i$1 < _ref$1.$length)) { break; } */ if(!(_i$1 < _ref$1.$length)) { $s = 5; continue; }
 71388  				cert = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]);
 71389  				if (cert.Equal(root)) {
 71390  					_i++;
 71391  					/* continue nextRoot; */ $s = 2; continue s;
 71392  				}
 71393  				_i$1++;
 71394  			/* } */ $s = 4; continue; case 5:
 71395  			_r$1 = root.isValid(2, currentChain, opts); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 71396  			err = _r$1;
 71397  			if (!($interfaceIsEqual(err, $ifaceNil))) {
 71398  				_i++;
 71399  				/* continue; */ $s = 2; continue;
 71400  			}
 71401  			chains = $append(chains, appendToFreshChain(currentChain, root));
 71402  			_i++;
 71403  		/* } */ $s = 2; continue; case 3:
 71404  		_r$2 = opts.Intermediates.findVerifiedParents(c); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 71405  		_tuple$1 = _r$2;
 71406  		possibleIntermediates = _tuple$1[0];
 71407  		failedIntermediate = _tuple$1[1];
 71408  		intermediateErr = _tuple$1[2];
 71409  		_ref$2 = possibleIntermediates;
 71410  		_i$2 = 0;
 71411  		/* while (true) { */ case 8:
 71412  			/* if (!(_i$2 < _ref$2.$length)) { break; } */ if(!(_i$2 < _ref$2.$length)) { $s = 9; continue; }
 71413  			intermediateNum = ((_i$2 < 0 || _i$2 >= _ref$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$2.$array[_ref$2.$offset + _i$2]);
 71414  			intermediate = (x$1 = opts.Intermediates.certs, ((intermediateNum < 0 || intermediateNum >= x$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + intermediateNum]));
 71415  			_ref$3 = currentChain;
 71416  			_i$3 = 0;
 71417  			/* while (true) { */ case 10:
 71418  				/* if (!(_i$3 < _ref$3.$length)) { break; } */ if(!(_i$3 < _ref$3.$length)) { $s = 11; continue; }
 71419  				cert$1 = ((_i$3 < 0 || _i$3 >= _ref$3.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$3.$array[_ref$3.$offset + _i$3]);
 71420  				if (cert$1.Equal(intermediate)) {
 71421  					_i$2++;
 71422  					/* continue nextIntermediate; */ $s = 8; continue s;
 71423  				}
 71424  				_i$3++;
 71425  			/* } */ $s = 10; continue; case 11:
 71426  			_r$3 = intermediate.isValid(1, currentChain, opts); /* */ $s = 12; case 12: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 71427  			err = _r$3;
 71428  			/* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 13; continue; }
 71429  			/* */ $s = 14; continue;
 71430  			/* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 13:
 71431  				_i$2++;
 71432  				/* continue; */ $s = 8; continue;
 71433  			/* } */ case 14:
 71434  			childChains = sliceType$12.nil;
 71435  			_tuple$2 = (_entry = cache[$Int.keyFor(intermediateNum)], _entry !== undefined ? [_entry.v, true] : [sliceType$12.nil, false]);
 71436  			childChains = _tuple$2[0];
 71437  			ok = _tuple$2[1];
 71438  			/* */ if (!ok) { $s = 15; continue; }
 71439  			/* */ $s = 16; continue;
 71440  			/* if (!ok) { */ case 15:
 71441  				_r$4 = intermediate.buildChains(cache, appendToFreshChain(currentChain, intermediate), opts); /* */ $s = 17; case 17: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 71442  				_tuple$3 = _r$4;
 71443  				childChains = _tuple$3[0];
 71444  				err = _tuple$3[1];
 71445  				_key = intermediateNum; (cache || $throwRuntimeError("assignment to entry in nil map"))[$Int.keyFor(_key)] = { k: _key, v: childChains };
 71446  			/* } */ case 16:
 71447  			chains = $appendSlice(chains, childChains);
 71448  			_i$2++;
 71449  		/* } */ $s = 8; continue; case 9:
 71450  		if (chains.$length > 0) {
 71451  			err = $ifaceNil;
 71452  		}
 71453  		if ((chains.$length === 0) && $interfaceIsEqual(err, $ifaceNil)) {
 71454  			hintErr = rootErr;
 71455  			hintCert = failedRoot;
 71456  			if ($interfaceIsEqual(hintErr, $ifaceNil)) {
 71457  				hintErr = intermediateErr;
 71458  				hintCert = failedIntermediate;
 71459  			}
 71460  			err = (x$2 = new UnknownAuthorityError.ptr(c, hintErr, hintCert), new x$2.constructor.elem(x$2));
 71461  		}
 71462  		$s = -1; return [chains, err];
 71463  		/* */ } return; } if ($f === undefined) { $f = { $blk: Certificate.ptr.prototype.buildChains }; } $f._entry = _entry; $f._i = _i; $f._i$1 = _i$1; $f._i$2 = _i$2; $f._i$3 = _i$3; $f._key = _key; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._ref = _ref; $f._ref$1 = _ref$1; $f._ref$2 = _ref$2; $f._ref$3 = _ref$3; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f.c = c; $f.cache = cache; $f.cert = cert; $f.cert$1 = cert$1; $f.chains = chains; $f.childChains = childChains; $f.currentChain = currentChain; $f.err = err; $f.failedIntermediate = failedIntermediate; $f.failedRoot = failedRoot; $f.hintCert = hintCert; $f.hintErr = hintErr; $f.intermediate = intermediate; $f.intermediateErr = intermediateErr; $f.intermediateNum = intermediateNum; $f.ok = ok; $f.opts = opts; $f.possibleIntermediates = possibleIntermediates; $f.possibleRoots = possibleRoots; $f.root = root; $f.rootErr = rootErr; $f.rootNum = rootNum; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.$s = $s; $f.$r = $r; return $f;
 71464  	};
 71465  	Certificate.prototype.buildChains = function(cache, currentChain, opts) { return this.$val.buildChains(cache, currentChain, opts); };
 71466  	matchHostnames = function(pattern, host) {
 71467  		var _i, _ref, host, hostParts, i, pattern, patternPart, patternParts;
 71468  		host = strings.TrimSuffix(host, ".");
 71469  		pattern = strings.TrimSuffix(pattern, ".");
 71470  		if ((pattern.length === 0) || (host.length === 0)) {
 71471  			return false;
 71472  		}
 71473  		patternParts = strings.Split(pattern, ".");
 71474  		hostParts = strings.Split(host, ".");
 71475  		if (!((patternParts.$length === hostParts.$length))) {
 71476  			return false;
 71477  		}
 71478  		_ref = patternParts;
 71479  		_i = 0;
 71480  		while (true) {
 71481  			if (!(_i < _ref.$length)) { break; }
 71482  			i = _i;
 71483  			patternPart = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
 71484  			if ((i === 0) && patternPart === "*") {
 71485  				_i++;
 71486  				continue;
 71487  			}
 71488  			if (!(patternPart === ((i < 0 || i >= hostParts.$length) ? ($throwRuntimeError("index out of range"), undefined) : hostParts.$array[hostParts.$offset + i]))) {
 71489  				return false;
 71490  			}
 71491  			_i++;
 71492  		}
 71493  		return true;
 71494  	};
 71495  	toLowerCaseASCII = function(in$1) {
 71496  		var _i, _i$1, _ref, _ref$1, _rune, c, c$1, i, in$1, isAlreadyLowerCase, out;
 71497  		isAlreadyLowerCase = true;
 71498  		_ref = in$1;
 71499  		_i = 0;
 71500  		while (true) {
 71501  			if (!(_i < _ref.length)) { break; }
 71502  			_rune = $decodeRune(_ref, _i);
 71503  			c = _rune[0];
 71504  			if (c === 65533) {
 71505  				isAlreadyLowerCase = false;
 71506  				break;
 71507  			}
 71508  			if (65 <= c && c <= 90) {
 71509  				isAlreadyLowerCase = false;
 71510  				break;
 71511  			}
 71512  			_i += _rune[1];
 71513  		}
 71514  		if (isAlreadyLowerCase) {
 71515  			return in$1;
 71516  		}
 71517  		out = (new sliceType$4($stringToBytes(in$1)));
 71518  		_ref$1 = out;
 71519  		_i$1 = 0;
 71520  		while (true) {
 71521  			if (!(_i$1 < _ref$1.$length)) { break; }
 71522  			i = _i$1;
 71523  			c$1 = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]);
 71524  			if (65 <= c$1 && c$1 <= 90) {
 71525  				((i < 0 || i >= out.$length) ? ($throwRuntimeError("index out of range"), undefined) : out.$array[out.$offset + i] = (((i < 0 || i >= out.$length) ? ($throwRuntimeError("index out of range"), undefined) : out.$array[out.$offset + i]) + (32) << 24 >>> 24));
 71526  			}
 71527  			_i$1++;
 71528  		}
 71529  		return ($bytesToString(out));
 71530  	};
 71531  	Certificate.ptr.prototype.VerifyHostname = function(h) {
 71532  		var _i, _i$1, _ref, _ref$1, c, candidate, candidateIP, h, ip, lowered, match, x, x$1;
 71533  		c = this;
 71534  		candidateIP = h;
 71535  		if (h.length >= 3 && (h.charCodeAt(0) === 91) && (h.charCodeAt((h.length - 1 >> 0)) === 93)) {
 71536  			candidateIP = $substring(h, 1, (h.length - 1 >> 0));
 71537  		}
 71538  		ip = net.ParseIP(candidateIP);
 71539  		if (!(ip === net.IP.nil)) {
 71540  			_ref = c.IPAddresses;
 71541  			_i = 0;
 71542  			while (true) {
 71543  				if (!(_i < _ref.$length)) { break; }
 71544  				candidate = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
 71545  				if (ip.Equal(candidate)) {
 71546  					return $ifaceNil;
 71547  				}
 71548  				_i++;
 71549  			}
 71550  			return (x = new HostnameError.ptr(c, candidateIP), new x.constructor.elem(x));
 71551  		}
 71552  		lowered = toLowerCaseASCII(h);
 71553  		if (c.hasSANExtension()) {
 71554  			_ref$1 = c.DNSNames;
 71555  			_i$1 = 0;
 71556  			while (true) {
 71557  				if (!(_i$1 < _ref$1.$length)) { break; }
 71558  				match = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]);
 71559  				if (matchHostnames(toLowerCaseASCII(match), lowered)) {
 71560  					return $ifaceNil;
 71561  				}
 71562  				_i$1++;
 71563  			}
 71564  		} else if (matchHostnames(toLowerCaseASCII(c.Subject.CommonName), lowered)) {
 71565  			return $ifaceNil;
 71566  		}
 71567  		return (x$1 = new HostnameError.ptr(c, h), new x$1.constructor.elem(x$1));
 71568  	};
 71569  	Certificate.prototype.VerifyHostname = function(h) { return this.$val.VerifyHostname(h); };
 71570  	SignatureAlgorithm.prototype.isRSAPSS = function() {
 71571  		var _1, algo;
 71572  		algo = this.$val;
 71573  		_1 = algo;
 71574  		if ((_1 === (13)) || (_1 === (14)) || (_1 === (15))) {
 71575  			return true;
 71576  		} else {
 71577  			return false;
 71578  		}
 71579  	};
 71580  	$ptrType(SignatureAlgorithm).prototype.isRSAPSS = function() { return new SignatureAlgorithm(this.$get()).isRSAPSS(); };
 71581  	SignatureAlgorithm.prototype.String = function() {
 71582  		var _i, _ref, algo, details;
 71583  		algo = this.$val;
 71584  		_ref = signatureAlgorithmDetails;
 71585  		_i = 0;
 71586  		while (true) {
 71587  			if (!(_i < _ref.$length)) { break; }
 71588  			details = $clone(((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]), structType);
 71589  			if (details.algo === algo) {
 71590  				return details.name;
 71591  			}
 71592  			_i++;
 71593  		}
 71594  		return strconv.Itoa(((algo >> 0)));
 71595  	};
 71596  	$ptrType(SignatureAlgorithm).prototype.String = function() { return new SignatureAlgorithm(this.$get()).String(); };
 71597  	PublicKeyAlgorithm.prototype.String = function() {
 71598  		var algo;
 71599  		algo = this.$val;
 71600  		if (0 < algo && ((algo >> 0)) < 4) {
 71601  			return ((algo < 0 || algo >= publicKeyAlgoName.length) ? ($throwRuntimeError("index out of range"), undefined) : publicKeyAlgoName[algo]);
 71602  		}
 71603  		return strconv.Itoa(((algo >> 0)));
 71604  	};
 71605  	$ptrType(PublicKeyAlgorithm).prototype.String = function() { return new PublicKeyAlgorithm(this.$get()).String(); };
 71606  	rsaPSSParameters = function(hashFunc) {
 71607  		var _1, _r, _r$1, _tuple, _tuple$1, err, hashFunc, hashOID, mgf1Params, params, serialized, $s, $r;
 71608  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _r = $f._r; _r$1 = $f._r$1; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; err = $f.err; hashFunc = $f.hashFunc; hashOID = $f.hashOID; mgf1Params = $f.mgf1Params; params = $f.params; serialized = $f.serialized; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 71609  		hashOID = asn1.ObjectIdentifier.nil;
 71610  		_1 = hashFunc;
 71611  		if (_1 === (5)) {
 71612  			hashOID = oidSHA256;
 71613  		} else if (_1 === (6)) {
 71614  			hashOID = oidSHA384;
 71615  		} else if (_1 === (7)) {
 71616  			hashOID = oidSHA512;
 71617  		}
 71618  		params = new pssParameters.ptr(new pkix.AlgorithmIdentifier.ptr(hashOID, $clone(asn1.NullRawValue, asn1.RawValue)), new pkix.AlgorithmIdentifier.ptr(oidMGF1, new asn1.RawValue.ptr(0, 0, false, sliceType$4.nil, sliceType$4.nil)), new crypto.Hash(hashFunc).Size(), 1);
 71619  		mgf1Params = new pkix.AlgorithmIdentifier.ptr(hashOID, $clone(asn1.NullRawValue, asn1.RawValue));
 71620  		err = $ifaceNil;
 71621  		_r = asn1.Marshal(new mgf1Params.constructor.elem(mgf1Params)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 71622  		_tuple = _r;
 71623  		params.MGF.Parameters.FullBytes = _tuple[0];
 71624  		err = _tuple[1];
 71625  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 71626  			$panic(err);
 71627  		}
 71628  		_r$1 = asn1.Marshal(new params.constructor.elem(params)); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 71629  		_tuple$1 = _r$1;
 71630  		serialized = _tuple$1[0];
 71631  		err = _tuple$1[1];
 71632  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 71633  			$panic(err);
 71634  		}
 71635  		$s = -1; return new asn1.RawValue.ptr(0, 0, false, sliceType$4.nil, serialized);
 71636  		/* */ } return; } if ($f === undefined) { $f = { $blk: rsaPSSParameters }; } $f._1 = _1; $f._r = _r; $f._r$1 = _r$1; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.err = err; $f.hashFunc = hashFunc; $f.hashOID = hashOID; $f.mgf1Params = mgf1Params; $f.params = params; $f.serialized = serialized; $f.$s = $s; $f.$r = $r; return $f;
 71637  	};
 71638  	getSignatureAlgorithmFromAI = function(ai) {
 71639  		var _i, _r, _r$1, _ref, _tuple, _tuple$1, ai, details, err, err$1, mgf1HashFunc, params, $s, $r;
 71640  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _i = $f._i; _r = $f._r; _r$1 = $f._r$1; _ref = $f._ref; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; ai = $f.ai; details = $f.details; err = $f.err; err$1 = $f.err$1; mgf1HashFunc = $f.mgf1HashFunc; params = $f.params; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 71641  		mgf1HashFunc = [mgf1HashFunc];
 71642  		params = [params];
 71643  		if (!ai.Algorithm.Equal(oidSignatureRSAPSS)) {
 71644  			_ref = signatureAlgorithmDetails;
 71645  			_i = 0;
 71646  			while (true) {
 71647  				if (!(_i < _ref.$length)) { break; }
 71648  				details = $clone(((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]), structType);
 71649  				if (ai.Algorithm.Equal(details.oid)) {
 71650  					$s = -1; return details.algo;
 71651  				}
 71652  				_i++;
 71653  			}
 71654  			$s = -1; return 0;
 71655  		}
 71656  		params[0] = new pssParameters.ptr(new pkix.AlgorithmIdentifier.ptr(asn1.ObjectIdentifier.nil, new asn1.RawValue.ptr(0, 0, false, sliceType$4.nil, sliceType$4.nil)), new pkix.AlgorithmIdentifier.ptr(asn1.ObjectIdentifier.nil, new asn1.RawValue.ptr(0, 0, false, sliceType$4.nil, sliceType$4.nil)), 0, 0);
 71657  		_r = asn1.Unmarshal(ai.Parameters.FullBytes, params[0]); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 71658  		_tuple = _r;
 71659  		err = _tuple[1];
 71660  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 71661  			$s = -1; return 0;
 71662  		}
 71663  		mgf1HashFunc[0] = new pkix.AlgorithmIdentifier.ptr(asn1.ObjectIdentifier.nil, new asn1.RawValue.ptr(0, 0, false, sliceType$4.nil, sliceType$4.nil));
 71664  		_r$1 = asn1.Unmarshal(params[0].MGF.Parameters.FullBytes, mgf1HashFunc[0]); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 71665  		_tuple$1 = _r$1;
 71666  		err$1 = _tuple$1[1];
 71667  		if (!($interfaceIsEqual(err$1, $ifaceNil))) {
 71668  			$s = -1; return 0;
 71669  		}
 71670  		if (!bytes.Equal(params[0].Hash.Parameters.FullBytes, asn1.NullBytes) || !params[0].MGF.Algorithm.Equal(oidMGF1) || !mgf1HashFunc[0].Algorithm.Equal(params[0].Hash.Algorithm) || !bytes.Equal(mgf1HashFunc[0].Parameters.FullBytes, asn1.NullBytes) || !((params[0].TrailerField === 1))) {
 71671  			$s = -1; return 0;
 71672  		}
 71673  		if (params[0].Hash.Algorithm.Equal(oidSHA256) && (params[0].SaltLength === 32)) {
 71674  			$s = -1; return 13;
 71675  		} else if (params[0].Hash.Algorithm.Equal(oidSHA384) && (params[0].SaltLength === 48)) {
 71676  			$s = -1; return 14;
 71677  		} else if (params[0].Hash.Algorithm.Equal(oidSHA512) && (params[0].SaltLength === 64)) {
 71678  			$s = -1; return 15;
 71679  		}
 71680  		$s = -1; return 0;
 71681  		/* */ } return; } if ($f === undefined) { $f = { $blk: getSignatureAlgorithmFromAI }; } $f._i = _i; $f._r = _r; $f._r$1 = _r$1; $f._ref = _ref; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.ai = ai; $f.details = details; $f.err = err; $f.err$1 = err$1; $f.mgf1HashFunc = mgf1HashFunc; $f.params = params; $f.$s = $s; $f.$r = $r; return $f;
 71682  	};
 71683  	getPublicKeyAlgorithmFromOID = function(oid) {
 71684  		var oid;
 71685  		if (oid.Equal(oidPublicKeyRSA)) {
 71686  			return 1;
 71687  		} else if (oid.Equal(oidPublicKeyDSA)) {
 71688  			return 2;
 71689  		} else if (oid.Equal(oidPublicKeyECDSA)) {
 71690  			return 3;
 71691  		}
 71692  		return 0;
 71693  	};
 71694  	namedCurveFromOID = function(oid) {
 71695  		var _r, _r$1, _r$2, _r$3, oid, $s, $r;
 71696  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; oid = $f.oid; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 71697  			/* */ if (oid.Equal(oidNamedCurveP224)) { $s = 2; continue; }
 71698  			/* */ if (oid.Equal(oidNamedCurveP256)) { $s = 3; continue; }
 71699  			/* */ if (oid.Equal(oidNamedCurveP384)) { $s = 4; continue; }
 71700  			/* */ if (oid.Equal(oidNamedCurveP521)) { $s = 5; continue; }
 71701  			/* */ $s = 6; continue;
 71702  			/* if (oid.Equal(oidNamedCurveP224)) { */ case 2:
 71703  				_r = elliptic.P224(); /* */ $s = 7; case 7: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 71704  				$s = -1; return _r;
 71705  			/* } else if (oid.Equal(oidNamedCurveP256)) { */ case 3:
 71706  				_r$1 = elliptic.P256(); /* */ $s = 8; case 8: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 71707  				$s = -1; return _r$1;
 71708  			/* } else if (oid.Equal(oidNamedCurveP384)) { */ case 4:
 71709  				_r$2 = elliptic.P384(); /* */ $s = 9; case 9: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 71710  				$s = -1; return _r$2;
 71711  			/* } else if (oid.Equal(oidNamedCurveP521)) { */ case 5:
 71712  				_r$3 = elliptic.P521(); /* */ $s = 10; case 10: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 71713  				$s = -1; return _r$3;
 71714  			/* } */ case 6:
 71715  		case 1:
 71716  		$s = -1; return $ifaceNil;
 71717  		/* */ } return; } if ($f === undefined) { $f = { $blk: namedCurveFromOID }; } $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f.oid = oid; $f.$s = $s; $f.$r = $r; return $f;
 71718  	};
 71719  	extKeyUsageFromOID = function(oid) {
 71720  		var _i, _ref, _tmp, _tmp$1, eku, oid, ok, pair;
 71721  		eku = 0;
 71722  		ok = false;
 71723  		_ref = extKeyUsageOIDs;
 71724  		_i = 0;
 71725  		while (true) {
 71726  			if (!(_i < _ref.$length)) { break; }
 71727  			pair = $clone(((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]), structType$1);
 71728  			if (oid.Equal(pair.oid)) {
 71729  				_tmp = pair.extKeyUsage;
 71730  				_tmp$1 = true;
 71731  				eku = _tmp;
 71732  				ok = _tmp$1;
 71733  				return [eku, ok];
 71734  			}
 71735  			_i++;
 71736  		}
 71737  		return [eku, ok];
 71738  	};
 71739  	oidFromExtKeyUsage = function(eku) {
 71740  		var _i, _ref, _tmp, _tmp$1, eku, oid, ok, pair;
 71741  		oid = asn1.ObjectIdentifier.nil;
 71742  		ok = false;
 71743  		_ref = extKeyUsageOIDs;
 71744  		_i = 0;
 71745  		while (true) {
 71746  			if (!(_i < _ref.$length)) { break; }
 71747  			pair = $clone(((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]), structType$1);
 71748  			if (eku === pair.extKeyUsage) {
 71749  				_tmp = pair.oid;
 71750  				_tmp$1 = true;
 71751  				oid = _tmp;
 71752  				ok = _tmp$1;
 71753  				return [oid, ok];
 71754  			}
 71755  			_i++;
 71756  		}
 71757  		return [oid, ok];
 71758  	};
 71759  	InsecureAlgorithmError.prototype.Error = function() {
 71760  		var _r, e, $s, $r;
 71761  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; e = $f.e; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 71762  		e = this.$val;
 71763  		_r = fmt.Sprintf("x509: cannot verify signature: insecure algorithm %v", new sliceType$11([new SignatureAlgorithm(((e >> 0)))])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 71764  		$s = -1; return _r;
 71765  		/* */ } return; } if ($f === undefined) { $f = { $blk: InsecureAlgorithmError.prototype.Error }; } $f._r = _r; $f.e = e; $f.$s = $s; $f.$r = $r; return $f;
 71766  	};
 71767  	$ptrType(InsecureAlgorithmError).prototype.Error = function() { return new InsecureAlgorithmError(this.$get()).Error(); };
 71768  	ConstraintViolationError.ptr.prototype.Error = function() {
 71769  		return "x509: invalid signature: parent certificate cannot sign this kind of certificate";
 71770  	};
 71771  	ConstraintViolationError.prototype.Error = function() { return this.$val.Error(); };
 71772  	Certificate.ptr.prototype.Equal = function(other) {
 71773  		var c, other;
 71774  		c = this;
 71775  		return bytes.Equal(c.Raw, other.Raw);
 71776  	};
 71777  	Certificate.prototype.Equal = function(other) { return this.$val.Equal(other); };
 71778  	Certificate.ptr.prototype.hasSANExtension = function() {
 71779  		var c;
 71780  		c = this;
 71781  		return oidInExtensions($subslice(new asn1.ObjectIdentifier(oidExtensionSubjectAltName.$array), oidExtensionSubjectAltName.$offset, oidExtensionSubjectAltName.$offset + oidExtensionSubjectAltName.$length), c.Extensions);
 71782  	};
 71783  	Certificate.prototype.hasSANExtension = function() { return this.$val.hasSANExtension(); };
 71784  	Certificate.ptr.prototype.CheckSignatureFrom = function(parent) {
 71785  		var _r, c, parent, x, x$1, $s, $r;
 71786  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; c = $f.c; parent = $f.parent; x = $f.x; x$1 = $f.x$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 71787  		c = this;
 71788  		if (((parent.Version === 3) && !parent.BasicConstraintsValid || parent.BasicConstraintsValid && !parent.IsCA) && !bytes.Equal(c.RawSubjectPublicKeyInfo, entrustBrokenSPKI)) {
 71789  			$s = -1; return (x = new ConstraintViolationError.ptr(), new x.constructor.elem(x));
 71790  		}
 71791  		if (!((parent.KeyUsage === 0)) && ((parent.KeyUsage & 32) === 0)) {
 71792  			$s = -1; return (x$1 = new ConstraintViolationError.ptr(), new x$1.constructor.elem(x$1));
 71793  		}
 71794  		if (parent.PublicKeyAlgorithm === 0) {
 71795  			$s = -1; return $pkg.ErrUnsupportedAlgorithm;
 71796  		}
 71797  		_r = parent.CheckSignature(c.SignatureAlgorithm, c.RawTBSCertificate, c.Signature); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 71798  		$s = -1; return _r;
 71799  		/* */ } return; } if ($f === undefined) { $f = { $blk: Certificate.ptr.prototype.CheckSignatureFrom }; } $f._r = _r; $f.c = c; $f.parent = parent; $f.x = x; $f.x$1 = x$1; $f.$s = $s; $f.$r = $r; return $f;
 71800  	};
 71801  	Certificate.prototype.CheckSignatureFrom = function(parent) { return this.$val.CheckSignatureFrom(parent); };
 71802  	Certificate.ptr.prototype.CheckSignature = function(algo, signed, signature) {
 71803  		var _r, algo, c, signature, signed, $s, $r;
 71804  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; algo = $f.algo; c = $f.c; signature = $f.signature; signed = $f.signed; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 71805  		c = this;
 71806  		_r = checkSignature(algo, signed, signature, c.PublicKey); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 71807  		$s = -1; return _r;
 71808  		/* */ } return; } if ($f === undefined) { $f = { $blk: Certificate.ptr.prototype.CheckSignature }; } $f._r = _r; $f.algo = algo; $f.c = c; $f.signature = signature; $f.signed = signed; $f.$s = $s; $f.$r = $r; return $f;
 71809  	};
 71810  	Certificate.prototype.CheckSignature = function(algo, signed, signature) { return this.$val.CheckSignature(algo, signed, signature); };
 71811  	Certificate.ptr.prototype.hasNameConstraints = function() {
 71812  		var _i, _ref, c, e, x, x$1, x$2, x$3;
 71813  		c = this;
 71814  		_ref = c.Extensions;
 71815  		_i = 0;
 71816  		while (true) {
 71817  			if (!(_i < _ref.$length)) { break; }
 71818  			e = $clone(((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]), pkix.Extension);
 71819  			if ((e.Id.$length === 4) && ((x = e.Id, (0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0])) === 2) && ((x$1 = e.Id, (1 >= x$1.$length ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + 1])) === 5) && ((x$2 = e.Id, (2 >= x$2.$length ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + 2])) === 29) && ((x$3 = e.Id, (3 >= x$3.$length ? ($throwRuntimeError("index out of range"), undefined) : x$3.$array[x$3.$offset + 3])) === 30)) {
 71820  				return true;
 71821  			}
 71822  			_i++;
 71823  		}
 71824  		return false;
 71825  	};
 71826  	Certificate.prototype.hasNameConstraints = function() { return this.$val.hasNameConstraints(); };
 71827  	Certificate.ptr.prototype.getSANExtension = function() {
 71828  		var _i, _ref, c, e, x, x$1, x$2, x$3;
 71829  		c = this;
 71830  		_ref = c.Extensions;
 71831  		_i = 0;
 71832  		while (true) {
 71833  			if (!(_i < _ref.$length)) { break; }
 71834  			e = $clone(((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]), pkix.Extension);
 71835  			if ((e.Id.$length === 4) && ((x = e.Id, (0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0])) === 2) && ((x$1 = e.Id, (1 >= x$1.$length ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + 1])) === 5) && ((x$2 = e.Id, (2 >= x$2.$length ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + 2])) === 29) && ((x$3 = e.Id, (3 >= x$3.$length ? ($throwRuntimeError("index out of range"), undefined) : x$3.$array[x$3.$offset + 3])) === 17)) {
 71836  				return [e.Value, true];
 71837  			}
 71838  			_i++;
 71839  		}
 71840  		return [sliceType$4.nil, false];
 71841  	};
 71842  	Certificate.prototype.getSANExtension = function() { return this.$val.getSANExtension(); };
 71843  	signaturePublicKeyAlgoMismatchError = function(expectedPubKeyAlgo, pubKey) {
 71844  		var _r, expectedPubKeyAlgo, pubKey, $s, $r;
 71845  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; expectedPubKeyAlgo = $f.expectedPubKeyAlgo; pubKey = $f.pubKey; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 71846  		_r = fmt.Errorf("x509: signature algorithm specifies an %s public key, but have public key of type %T", new sliceType$11([new $String(new PublicKeyAlgorithm(expectedPubKeyAlgo).String()), pubKey])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 71847  		$s = -1; return _r;
 71848  		/* */ } return; } if ($f === undefined) { $f = { $blk: signaturePublicKeyAlgoMismatchError }; } $f._r = _r; $f.expectedPubKeyAlgo = expectedPubKeyAlgo; $f.pubKey = pubKey; $f.$s = $s; $f.$r = $r; return $f;
 71849  	};
 71850  	checkSignature = function(algo, signed, signature, publicKey) {
 71851  		var _1, _i, _r, _r$1, _r$10, _r$11, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, _ref$1, _tuple, _tuple$1, algo, details, digest, dsaSig, ecdsaSig, err, err$1, err$2, h, hashType, pub, pub$1, pub$2, pubKeyAlgo, publicKey, rest, rest$1, signature, signed, $s, $r;
 71852  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _i = $f._i; _r = $f._r; _r$1 = $f._r$1; _r$10 = $f._r$10; _r$11 = $f._r$11; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _r$8 = $f._r$8; _r$9 = $f._r$9; _ref = $f._ref; _ref$1 = $f._ref$1; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; algo = $f.algo; details = $f.details; digest = $f.digest; dsaSig = $f.dsaSig; ecdsaSig = $f.ecdsaSig; err = $f.err; err$1 = $f.err$1; err$2 = $f.err$2; h = $f.h; hashType = $f.hashType; pub = $f.pub; pub$1 = $f.pub$1; pub$2 = $f.pub$2; pubKeyAlgo = $f.pubKeyAlgo; publicKey = $f.publicKey; rest = $f.rest; rest$1 = $f.rest$1; signature = $f.signature; signed = $f.signed; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 71853  		err = $ifaceNil;
 71854  		hashType = 0;
 71855  		pubKeyAlgo = 0;
 71856  		_ref = signatureAlgorithmDetails;
 71857  		_i = 0;
 71858  		while (true) {
 71859  			if (!(_i < _ref.$length)) { break; }
 71860  			details = $clone(((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]), structType);
 71861  			if (details.algo === algo) {
 71862  				hashType = details.hash;
 71863  				pubKeyAlgo = details.pubKeyAlgo;
 71864  			}
 71865  			_i++;
 71866  		}
 71867  		_1 = hashType;
 71868  		if (_1 === (0)) {
 71869  			err = $pkg.ErrUnsupportedAlgorithm;
 71870  			$s = -1; return err;
 71871  		} else if (_1 === (2)) {
 71872  			err = new InsecureAlgorithmError(((algo >> 0)));
 71873  			$s = -1; return err;
 71874  		}
 71875  		if (!new crypto.Hash(hashType).Available()) {
 71876  			err = $pkg.ErrUnsupportedAlgorithm;
 71877  			$s = -1; return err;
 71878  		}
 71879  		_r = new crypto.Hash(hashType).New(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 71880  		h = _r;
 71881  		_r$1 = h.Write(signed); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 71882  		_r$1;
 71883  		_r$2 = h.Sum(sliceType$4.nil); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 71884  		digest = _r$2;
 71885  		_ref$1 = publicKey;
 71886  		/* */ if ($assertType(_ref$1, ptrType$6, true)[1]) { $s = 4; continue; }
 71887  		/* */ if ($assertType(_ref$1, ptrType$13, true)[1]) { $s = 5; continue; }
 71888  		/* */ if ($assertType(_ref$1, ptrType$12, true)[1]) { $s = 6; continue; }
 71889  		/* */ $s = 7; continue;
 71890  		/* if ($assertType(_ref$1, ptrType$6, true)[1]) { */ case 4:
 71891  			pub = _ref$1.$val;
 71892  			/* */ if (!((pubKeyAlgo === 1))) { $s = 8; continue; }
 71893  			/* */ $s = 9; continue;
 71894  			/* if (!((pubKeyAlgo === 1))) { */ case 8:
 71895  				_r$3 = signaturePublicKeyAlgoMismatchError(pubKeyAlgo, pub); /* */ $s = 10; case 10: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 71896  				err = _r$3;
 71897  				$s = -1; return err;
 71898  			/* } */ case 9:
 71899  			/* */ if (new SignatureAlgorithm(algo).isRSAPSS()) { $s = 11; continue; }
 71900  			/* */ $s = 12; continue;
 71901  			/* if (new SignatureAlgorithm(algo).isRSAPSS()) { */ case 11:
 71902  				_r$4 = rsa.VerifyPSS(pub, hashType, digest, signature, new rsa.PSSOptions.ptr(-1, 0)); /* */ $s = 14; case 14: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 71903  				err = _r$4;
 71904  				$s = -1; return err;
 71905  			/* } else { */ case 12:
 71906  				_r$5 = rsa.VerifyPKCS1v15(pub, hashType, digest, signature); /* */ $s = 15; case 15: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
 71907  				err = _r$5;
 71908  				$s = -1; return err;
 71909  			/* } */ case 13:
 71910  			$s = 7; continue;
 71911  		/* } else if ($assertType(_ref$1, ptrType$13, true)[1]) { */ case 5:
 71912  			pub$1 = _ref$1.$val;
 71913  			/* */ if (!((pubKeyAlgo === 2))) { $s = 16; continue; }
 71914  			/* */ $s = 17; continue;
 71915  			/* if (!((pubKeyAlgo === 2))) { */ case 16:
 71916  				_r$6 = signaturePublicKeyAlgoMismatchError(pubKeyAlgo, pub$1); /* */ $s = 18; case 18: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
 71917  				err = _r$6;
 71918  				$s = -1; return err;
 71919  			/* } */ case 17:
 71920  			dsaSig = new dsaSignature.ptr(ptrType$4.nil, ptrType$4.nil);
 71921  			_r$7 = asn1.Unmarshal(signature, dsaSig); /* */ $s = 19; case 19: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
 71922  			_tuple = _r$7;
 71923  			rest = _tuple[0];
 71924  			err$1 = _tuple[1];
 71925  			if (!($interfaceIsEqual(err$1, $ifaceNil))) {
 71926  				err = err$1;
 71927  				$s = -1; return err;
 71928  			} else if (!((rest.$length === 0))) {
 71929  				err = errors.New("x509: trailing data after DSA signature");
 71930  				$s = -1; return err;
 71931  			}
 71932  			if (dsaSig.R.Sign() <= 0 || dsaSig.S.Sign() <= 0) {
 71933  				err = errors.New("x509: DSA signature contained zero or negative values");
 71934  				$s = -1; return err;
 71935  			}
 71936  			_r$8 = dsa.Verify(pub$1, digest, dsaSig.R, dsaSig.S); /* */ $s = 22; case 22: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
 71937  			/* */ if (!_r$8) { $s = 20; continue; }
 71938  			/* */ $s = 21; continue;
 71939  			/* if (!_r$8) { */ case 20:
 71940  				err = errors.New("x509: DSA verification failure");
 71941  				$s = -1; return err;
 71942  			/* } */ case 21:
 71943  			$s = -1; return err;
 71944  		/* } else if ($assertType(_ref$1, ptrType$12, true)[1]) { */ case 6:
 71945  			pub$2 = _ref$1.$val;
 71946  			/* */ if (!((pubKeyAlgo === 3))) { $s = 23; continue; }
 71947  			/* */ $s = 24; continue;
 71948  			/* if (!((pubKeyAlgo === 3))) { */ case 23:
 71949  				_r$9 = signaturePublicKeyAlgoMismatchError(pubKeyAlgo, pub$2); /* */ $s = 25; case 25: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 71950  				err = _r$9;
 71951  				$s = -1; return err;
 71952  			/* } */ case 24:
 71953  			ecdsaSig = new ecdsaSignature.ptr(ptrType$4.nil, ptrType$4.nil);
 71954  			_r$10 = asn1.Unmarshal(signature, ecdsaSig); /* */ $s = 26; case 26: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
 71955  			_tuple$1 = _r$10;
 71956  			rest$1 = _tuple$1[0];
 71957  			err$2 = _tuple$1[1];
 71958  			if (!($interfaceIsEqual(err$2, $ifaceNil))) {
 71959  				err = err$2;
 71960  				$s = -1; return err;
 71961  			} else if (!((rest$1.$length === 0))) {
 71962  				err = errors.New("x509: trailing data after ECDSA signature");
 71963  				$s = -1; return err;
 71964  			}
 71965  			if (ecdsaSig.R.Sign() <= 0 || ecdsaSig.S.Sign() <= 0) {
 71966  				err = errors.New("x509: ECDSA signature contained zero or negative values");
 71967  				$s = -1; return err;
 71968  			}
 71969  			_r$11 = ecdsa.Verify(pub$2, digest, ecdsaSig.R, ecdsaSig.S); /* */ $s = 29; case 29: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; }
 71970  			/* */ if (!_r$11) { $s = 27; continue; }
 71971  			/* */ $s = 28; continue;
 71972  			/* if (!_r$11) { */ case 27:
 71973  				err = errors.New("x509: ECDSA verification failure");
 71974  				$s = -1; return err;
 71975  			/* } */ case 28:
 71976  			$s = -1; return err;
 71977  		/* } */ case 7:
 71978  		err = $pkg.ErrUnsupportedAlgorithm;
 71979  		$s = -1; return err;
 71980  		/* */ } return; } if ($f === undefined) { $f = { $blk: checkSignature }; } $f._1 = _1; $f._i = _i; $f._r = _r; $f._r$1 = _r$1; $f._r$10 = _r$10; $f._r$11 = _r$11; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._r$8 = _r$8; $f._r$9 = _r$9; $f._ref = _ref; $f._ref$1 = _ref$1; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.algo = algo; $f.details = details; $f.digest = digest; $f.dsaSig = dsaSig; $f.ecdsaSig = ecdsaSig; $f.err = err; $f.err$1 = err$1; $f.err$2 = err$2; $f.h = h; $f.hashType = hashType; $f.pub = pub; $f.pub$1 = pub$1; $f.pub$2 = pub$2; $f.pubKeyAlgo = pubKeyAlgo; $f.publicKey = publicKey; $f.rest = rest; $f.rest$1 = rest$1; $f.signature = signature; $f.signed = signed; $f.$s = $s; $f.$r = $r; return $f;
 71981  	};
 71982  	Certificate.ptr.prototype.CheckCRLSignature = function(crl) {
 71983  		var _r, _r$1, algo, c, crl, x, $s, $r;
 71984  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; algo = $f.algo; c = $f.c; crl = $f.crl; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 71985  		c = this;
 71986  		_r = getSignatureAlgorithmFromAI($clone(crl.SignatureAlgorithm, pkix.AlgorithmIdentifier)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 71987  		algo = _r;
 71988  		_r$1 = c.CheckSignature(algo, (x = crl.TBSCertList.Raw, $subslice(new sliceType$4(x.$array), x.$offset, x.$offset + x.$length)), $clone(crl.SignatureValue, asn1.BitString).RightAlign()); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 71989  		$s = -1; return _r$1;
 71990  		/* */ } return; } if ($f === undefined) { $f = { $blk: Certificate.ptr.prototype.CheckCRLSignature }; } $f._r = _r; $f._r$1 = _r$1; $f.algo = algo; $f.c = c; $f.crl = crl; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
 71991  	};
 71992  	Certificate.prototype.CheckCRLSignature = function(crl) { return this.$val.CheckCRLSignature(crl); };
 71993  	UnhandledCriticalExtension.ptr.prototype.Error = function() {
 71994  		var h;
 71995  		h = this;
 71996  		return "x509: unhandled critical extension";
 71997  	};
 71998  	UnhandledCriticalExtension.prototype.Error = function() { return this.$val.Error(); };
 71999  	parsePublicKey = function(algo, keyData) {
 72000  		var _1, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, algo, asn1Data, err, err$1, err$2, keyData, namedCurve, namedCurveOID, p, p$1, params, paramsData, paramsData$1, pub, pub$1, pub$2, rest, rest$1, rest$2, x, y, $s, $r;
 72001  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; _tuple$4 = $f._tuple$4; algo = $f.algo; asn1Data = $f.asn1Data; err = $f.err; err$1 = $f.err$1; err$2 = $f.err$2; keyData = $f.keyData; namedCurve = $f.namedCurve; namedCurveOID = $f.namedCurveOID; p = $f.p; p$1 = $f.p$1; params = $f.params; paramsData = $f.paramsData; paramsData$1 = $f.paramsData$1; pub = $f.pub; pub$1 = $f.pub$1; pub$2 = $f.pub$2; rest = $f.rest; rest$1 = $f.rest$1; rest$2 = $f.rest$2; x = $f.x; y = $f.y; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 72002  		p = [p];
 72003  		asn1Data = $clone(keyData.PublicKey, asn1.BitString).RightAlign();
 72004  			_1 = algo;
 72005  			/* */ if (_1 === (1)) { $s = 2; continue; }
 72006  			/* */ if (_1 === (2)) { $s = 3; continue; }
 72007  			/* */ if (_1 === (3)) { $s = 4; continue; }
 72008  			/* */ $s = 5; continue;
 72009  			/* if (_1 === (1)) { */ case 2:
 72010  				if (!bytes.Equal(keyData.Algorithm.Parameters.FullBytes, asn1.NullBytes)) {
 72011  					$s = -1; return [$ifaceNil, errors.New("x509: RSA key missing NULL parameters")];
 72012  				}
 72013  				p$1 = new pkcs1PublicKey.ptr(ptrType$4.nil, 0);
 72014  				_r = asn1.Unmarshal(asn1Data, p$1); /* */ $s = 7; case 7: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 72015  				_tuple = _r;
 72016  				rest = _tuple[0];
 72017  				err = _tuple[1];
 72018  				if (!($interfaceIsEqual(err, $ifaceNil))) {
 72019  					$s = -1; return [$ifaceNil, err];
 72020  				}
 72021  				if (!((rest.$length === 0))) {
 72022  					$s = -1; return [$ifaceNil, errors.New("x509: trailing data after RSA public key")];
 72023  				}
 72024  				if (p$1.N.Sign() <= 0) {
 72025  					$s = -1; return [$ifaceNil, errors.New("x509: RSA modulus is not a positive number")];
 72026  				}
 72027  				if (p$1.E <= 0) {
 72028  					$s = -1; return [$ifaceNil, errors.New("x509: RSA public exponent is not a positive number")];
 72029  				}
 72030  				pub = new rsa.PublicKey.ptr(p$1.N, p$1.E);
 72031  				$s = -1; return [pub, $ifaceNil];
 72032  			/* } else if (_1 === (2)) { */ case 3:
 72033  				p[0] = ptrType$4.nil;
 72034  				_r$1 = asn1.Unmarshal(asn1Data, (p.$ptr || (p.$ptr = new ptrType$14(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, p)))); /* */ $s = 8; case 8: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 72035  				_tuple$1 = _r$1;
 72036  				rest$1 = _tuple$1[0];
 72037  				err$1 = _tuple$1[1];
 72038  				if (!($interfaceIsEqual(err$1, $ifaceNil))) {
 72039  					$s = -1; return [$ifaceNil, err$1];
 72040  				}
 72041  				if (!((rest$1.$length === 0))) {
 72042  					$s = -1; return [$ifaceNil, errors.New("x509: trailing data after DSA public key")];
 72043  				}
 72044  				paramsData = keyData.Algorithm.Parameters.FullBytes;
 72045  				params = new dsaAlgorithmParameters.ptr(ptrType$4.nil, ptrType$4.nil, ptrType$4.nil);
 72046  				_r$2 = asn1.Unmarshal(paramsData, params); /* */ $s = 9; case 9: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 72047  				_tuple$2 = _r$2;
 72048  				rest$1 = _tuple$2[0];
 72049  				err$1 = _tuple$2[1];
 72050  				if (!($interfaceIsEqual(err$1, $ifaceNil))) {
 72051  					$s = -1; return [$ifaceNil, err$1];
 72052  				}
 72053  				if (!((rest$1.$length === 0))) {
 72054  					$s = -1; return [$ifaceNil, errors.New("x509: trailing data after DSA parameters")];
 72055  				}
 72056  				if (p[0].Sign() <= 0 || params.P.Sign() <= 0 || params.Q.Sign() <= 0 || params.G.Sign() <= 0) {
 72057  					$s = -1; return [$ifaceNil, errors.New("x509: zero or negative DSA parameter")];
 72058  				}
 72059  				pub$1 = new dsa.PublicKey.ptr(new dsa.Parameters.ptr(params.P, params.Q, params.G), p[0]);
 72060  				$s = -1; return [pub$1, $ifaceNil];
 72061  			/* } else if (_1 === (3)) { */ case 4:
 72062  				paramsData$1 = keyData.Algorithm.Parameters.FullBytes;
 72063  				namedCurveOID = $newDataPointer(asn1.ObjectIdentifier.nil, ptrType$7);
 72064  				_r$3 = asn1.Unmarshal(paramsData$1, namedCurveOID); /* */ $s = 10; case 10: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 72065  				_tuple$3 = _r$3;
 72066  				rest$2 = _tuple$3[0];
 72067  				err$2 = _tuple$3[1];
 72068  				if (!($interfaceIsEqual(err$2, $ifaceNil))) {
 72069  					$s = -1; return [$ifaceNil, err$2];
 72070  				}
 72071  				if (!((rest$2.$length === 0))) {
 72072  					$s = -1; return [$ifaceNil, errors.New("x509: trailing data after ECDSA parameters")];
 72073  				}
 72074  				_r$4 = namedCurveFromOID(namedCurveOID.$get()); /* */ $s = 11; case 11: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 72075  				namedCurve = _r$4;
 72076  				if ($interfaceIsEqual(namedCurve, $ifaceNil)) {
 72077  					$s = -1; return [$ifaceNil, errors.New("x509: unsupported elliptic curve")];
 72078  				}
 72079  				_r$5 = elliptic.Unmarshal(namedCurve, asn1Data); /* */ $s = 12; case 12: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
 72080  				_tuple$4 = _r$5;
 72081  				x = _tuple$4[0];
 72082  				y = _tuple$4[1];
 72083  				if (x === ptrType$4.nil) {
 72084  					$s = -1; return [$ifaceNil, errors.New("x509: failed to unmarshal elliptic curve point")];
 72085  				}
 72086  				pub$2 = new ecdsa.PublicKey.ptr(namedCurve, x, y);
 72087  				$s = -1; return [pub$2, $ifaceNil];
 72088  			/* } else { */ case 5:
 72089  				$s = -1; return [$ifaceNil, $ifaceNil];
 72090  			/* } */ case 6:
 72091  		case 1:
 72092  		$s = -1; return [$ifaceNil, $ifaceNil];
 72093  		/* */ } return; } if ($f === undefined) { $f = { $blk: parsePublicKey }; } $f._1 = _1; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f._tuple$4 = _tuple$4; $f.algo = algo; $f.asn1Data = asn1Data; $f.err = err; $f.err$1 = err$1; $f.err$2 = err$2; $f.keyData = keyData; $f.namedCurve = namedCurve; $f.namedCurveOID = namedCurveOID; $f.p = p; $f.p$1 = p$1; $f.params = params; $f.paramsData = paramsData; $f.paramsData$1 = paramsData$1; $f.pub = pub; $f.pub$1 = pub$1; $f.pub$2 = pub$2; $f.rest = rest; $f.rest$1 = rest$1; $f.rest$2 = rest$2; $f.x = x; $f.y = y; $f.$s = $s; $f.$r = $r; return $f;
 72094  	};
 72095  	forEachSAN = function(extension, callback) {
 72096  		var _r, _r$1, _r$2, _tuple, _tuple$1, callback, err, err$1, extension, rest, seq, v, x, $s, $r;
 72097  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; callback = $f.callback; err = $f.err; err$1 = $f.err$1; extension = $f.extension; rest = $f.rest; seq = $f.seq; v = $f.v; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 72098  		seq = [seq];
 72099  		seq[0] = new asn1.RawValue.ptr(0, 0, false, sliceType$4.nil, sliceType$4.nil);
 72100  		_r = asn1.Unmarshal(extension, seq[0]); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 72101  		_tuple = _r;
 72102  		rest = _tuple[0];
 72103  		err = _tuple[1];
 72104  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 72105  			$s = -1; return err;
 72106  		} else if (!((rest.$length === 0))) {
 72107  			$s = -1; return errors.New("x509: trailing data after X.509 extension");
 72108  		}
 72109  		if (!seq[0].IsCompound || !((seq[0].Tag === 16)) || !((seq[0].Class === 0))) {
 72110  			$s = -1; return (x = new asn1.StructuralError.ptr("bad SAN sequence"), new x.constructor.elem(x));
 72111  		}
 72112  		rest = seq[0].Bytes;
 72113  		/* while (true) { */ case 2:
 72114  			/* if (!(rest.$length > 0)) { break; } */ if(!(rest.$length > 0)) { $s = 3; continue; }
 72115  			v = [v];
 72116  			v[0] = new asn1.RawValue.ptr(0, 0, false, sliceType$4.nil, sliceType$4.nil);
 72117  			_r$1 = asn1.Unmarshal(rest, v[0]); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 72118  			_tuple$1 = _r$1;
 72119  			rest = _tuple$1[0];
 72120  			err = _tuple$1[1];
 72121  			if (!($interfaceIsEqual(err, $ifaceNil))) {
 72122  				$s = -1; return err;
 72123  			}
 72124  			_r$2 = callback(v[0].Tag, v[0].Bytes); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 72125  			err$1 = _r$2;
 72126  			if (!($interfaceIsEqual(err$1, $ifaceNil))) {
 72127  				$s = -1; return err$1;
 72128  			}
 72129  		/* } */ $s = 2; continue; case 3:
 72130  		$s = -1; return $ifaceNil;
 72131  		/* */ } return; } if ($f === undefined) { $f = { $blk: forEachSAN }; } $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.callback = callback; $f.err = err; $f.err$1 = err$1; $f.extension = extension; $f.rest = rest; $f.seq = seq; $f.v = v; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
 72132  	};
 72133  	parseSANExtension = function(value) {
 72134  		var _r, dnsNames, emailAddresses, err, ipAddresses, uris, value, $s, $r;
 72135  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; dnsNames = $f.dnsNames; emailAddresses = $f.emailAddresses; err = $f.err; ipAddresses = $f.ipAddresses; uris = $f.uris; value = $f.value; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 72136  		dnsNames = [dnsNames];
 72137  		emailAddresses = [emailAddresses];
 72138  		ipAddresses = [ipAddresses];
 72139  		uris = [uris];
 72140  		dnsNames[0] = sliceType$1.nil;
 72141  		emailAddresses[0] = sliceType$1.nil;
 72142  		ipAddresses[0] = sliceType$14.nil;
 72143  		uris[0] = sliceType$15.nil;
 72144  		err = $ifaceNil;
 72145  		_r = forEachSAN(value, (function(dnsNames, emailAddresses, ipAddresses, uris) { return function $b(tag, data) {
 72146  			var _1, _2, _r, _r$1, _r$2, _r$3, _r$4, _tuple, _tuple$1, _tuple$2, _tuple$3, data, domain, err$1, mailbox, ok, ok$1, ok$2, tag, uri, $s, $r;
 72147  			/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _2 = $f._2; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; data = $f.data; domain = $f.domain; err$1 = $f.err$1; mailbox = $f.mailbox; ok = $f.ok; ok$1 = $f.ok$1; ok$2 = $f.ok$2; tag = $f.tag; uri = $f.uri; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 72148  				_1 = tag;
 72149  				/* */ if (_1 === (1)) { $s = 2; continue; }
 72150  				/* */ if (_1 === (2)) { $s = 3; continue; }
 72151  				/* */ if (_1 === (6)) { $s = 4; continue; }
 72152  				/* */ if (_1 === (7)) { $s = 5; continue; }
 72153  				/* */ $s = 6; continue;
 72154  				/* if (_1 === (1)) { */ case 2:
 72155  					mailbox = ($bytesToString(data));
 72156  					_tuple = parseRFC2821Mailbox(mailbox);
 72157  					ok = _tuple[1];
 72158  					/* */ if (!ok) { $s = 7; continue; }
 72159  					/* */ $s = 8; continue;
 72160  					/* if (!ok) { */ case 7:
 72161  						_r = fmt.Errorf("x509: cannot parse rfc822Name %q", new sliceType$11([new $String(mailbox)])); /* */ $s = 9; case 9: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 72162  						$s = -1; return _r;
 72163  					/* } */ case 8:
 72164  					emailAddresses[0] = $append(emailAddresses[0], mailbox);
 72165  					$s = 6; continue;
 72166  				/* } else if (_1 === (2)) { */ case 3:
 72167  					domain = ($bytesToString(data));
 72168  					_tuple$1 = domainToReverseLabels(domain);
 72169  					ok$1 = _tuple$1[1];
 72170  					/* */ if (!ok$1) { $s = 10; continue; }
 72171  					/* */ $s = 11; continue;
 72172  					/* if (!ok$1) { */ case 10:
 72173  						_r$1 = fmt.Errorf("x509: cannot parse dnsName %q", new sliceType$11([new $String(($bytesToString(data)))])); /* */ $s = 12; case 12: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 72174  						$s = -1; return _r$1;
 72175  					/* } */ case 11:
 72176  					dnsNames[0] = $append(dnsNames[0], domain);
 72177  					$s = 6; continue;
 72178  				/* } else if (_1 === (6)) { */ case 4:
 72179  					_r$2 = url.Parse(($bytesToString(data))); /* */ $s = 13; case 13: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 72180  					_tuple$2 = _r$2;
 72181  					uri = _tuple$2[0];
 72182  					err$1 = _tuple$2[1];
 72183  					/* */ if (!($interfaceIsEqual(err$1, $ifaceNil))) { $s = 14; continue; }
 72184  					/* */ $s = 15; continue;
 72185  					/* if (!($interfaceIsEqual(err$1, $ifaceNil))) { */ case 14:
 72186  						_r$3 = fmt.Errorf("x509: cannot parse URI %q: %s", new sliceType$11([new $String(($bytesToString(data))), err$1])); /* */ $s = 16; case 16: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 72187  						$s = -1; return _r$3;
 72188  					/* } */ case 15:
 72189  					/* */ if (uri.Host.length > 0) { $s = 17; continue; }
 72190  					/* */ $s = 18; continue;
 72191  					/* if (uri.Host.length > 0) { */ case 17:
 72192  						_tuple$3 = domainToReverseLabels(uri.Host);
 72193  						ok$2 = _tuple$3[1];
 72194  						/* */ if (!ok$2) { $s = 19; continue; }
 72195  						/* */ $s = 20; continue;
 72196  						/* if (!ok$2) { */ case 19:
 72197  							_r$4 = fmt.Errorf("x509: cannot parse URI %q: invalid domain", new sliceType$11([new $String(($bytesToString(data)))])); /* */ $s = 21; case 21: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 72198  							$s = -1; return _r$4;
 72199  						/* } */ case 20:
 72200  					/* } */ case 18:
 72201  					uris[0] = $append(uris[0], uri);
 72202  					$s = 6; continue;
 72203  				/* } else if (_1 === (7)) { */ case 5:
 72204  					_2 = data.$length;
 72205  					if ((_2 === (4)) || (_2 === (16))) {
 72206  						ipAddresses[0] = $append(ipAddresses[0], $subslice(new net.IP(data.$array), data.$offset, data.$offset + data.$length));
 72207  					} else {
 72208  						$s = -1; return errors.New("x509: certificate contained IP address of length " + strconv.Itoa(data.$length));
 72209  					}
 72210  				/* } */ case 6:
 72211  			case 1:
 72212  			$s = -1; return $ifaceNil;
 72213  			/* */ } return; } if ($f === undefined) { $f = { $blk: $b }; } $f._1 = _1; $f._2 = _2; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f.data = data; $f.domain = domain; $f.err$1 = err$1; $f.mailbox = mailbox; $f.ok = ok; $f.ok$1 = ok$1; $f.ok$2 = ok$2; $f.tag = tag; $f.uri = uri; $f.$s = $s; $f.$r = $r; return $f;
 72214  		}; })(dnsNames, emailAddresses, ipAddresses, uris)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 72215  		err = _r;
 72216  		$s = -1; return [dnsNames[0], emailAddresses[0], ipAddresses[0], uris[0], err];
 72217  		/* */ } return; } if ($f === undefined) { $f = { $blk: parseSANExtension }; } $f._r = _r; $f.dnsNames = dnsNames; $f.emailAddresses = emailAddresses; $f.err = err; $f.ipAddresses = ipAddresses; $f.uris = uris; $f.value = value; $f.$s = $s; $f.$r = $r; return $f;
 72218  	};
 72219  	isValidIPMask = function(mask) {
 72220  		var _1, _i, _ref, b, mask, seenZero;
 72221  		seenZero = false;
 72222  		_ref = mask;
 72223  		_i = 0;
 72224  		while (true) {
 72225  			if (!(_i < _ref.$length)) { break; }
 72226  			b = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
 72227  			if (seenZero) {
 72228  				if (!((b === 0))) {
 72229  					return false;
 72230  				}
 72231  				_i++;
 72232  				continue;
 72233  			}
 72234  			_1 = b;
 72235  			if ((_1 === (0)) || (_1 === (128)) || (_1 === (192)) || (_1 === (224)) || (_1 === (240)) || (_1 === (248)) || (_1 === (252)) || (_1 === (254))) {
 72236  				seenZero = true;
 72237  			} else if (_1 === (255)) {
 72238  			} else {
 72239  				return false;
 72240  			}
 72241  			_i++;
 72242  		}
 72243  		return true;
 72244  	};
 72245  	parseNameConstraintsExtension = function(out, e) {
 72246  		var _r, _r$1, _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$14, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, _tuple$1, e, err, excluded, getValues, haveExcluded, havePermitted, out, outer, outer$24ptr, permitted, toplevel, unhandled, x, $s, $r;
 72247  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$10 = $f._tmp$10; _tmp$11 = $f._tmp$11; _tmp$12 = $f._tmp$12; _tmp$13 = $f._tmp$13; _tmp$14 = $f._tmp$14; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tmp$4 = $f._tmp$4; _tmp$5 = $f._tmp$5; _tmp$6 = $f._tmp$6; _tmp$7 = $f._tmp$7; _tmp$8 = $f._tmp$8; _tmp$9 = $f._tmp$9; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; e = $f.e; err = $f.err; excluded = $f.excluded; getValues = $f.getValues; haveExcluded = $f.haveExcluded; havePermitted = $f.havePermitted; out = $f.out; outer = $f.outer; outer$24ptr = $f.outer$24ptr; permitted = $f.permitted; toplevel = $f.toplevel; unhandled = $f.unhandled; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 72248  		excluded = [excluded];
 72249  		haveExcluded = [haveExcluded];
 72250  		havePermitted = [havePermitted];
 72251  		permitted = [permitted];
 72252  		toplevel = [toplevel];
 72253  		unhandled = [unhandled];
 72254  		unhandled[0] = false;
 72255  		err = $ifaceNil;
 72256  		outer = ((x = e.Value, $subslice(new cryptobyte.String(x.$array), x.$offset, x.$offset + x.$length)));
 72257  		_tmp = cryptobyte.String.nil;
 72258  		_tmp$1 = cryptobyte.String.nil;
 72259  		_tmp$2 = cryptobyte.String.nil;
 72260  		toplevel[0] = _tmp;
 72261  		permitted[0] = _tmp$1;
 72262  		excluded[0] = _tmp$2;
 72263  		_tmp$3 = false;
 72264  		_tmp$4 = false;
 72265  		havePermitted[0] = _tmp$3;
 72266  		haveExcluded[0] = _tmp$4;
 72267  		if (!(outer$24ptr || (outer$24ptr = new ptrType$15(function() { return outer; }, function($v) { outer = $subslice(new cryptobyte.String($v.$array), $v.$offset, $v.$offset + $v.$length); }))).ReadASN1((toplevel.$ptr || (toplevel.$ptr = new ptrType$15(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, toplevel))), 48) || !outer.Empty() || !(toplevel.$ptr || (toplevel.$ptr = new ptrType$15(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, toplevel))).ReadOptionalASN1((permitted.$ptr || (permitted.$ptr = new ptrType$15(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, permitted))), (havePermitted.$ptr || (havePermitted.$ptr = new ptrType$16(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, havePermitted))), new asn1$1.Tag(new asn1$1.Tag(0).ContextSpecific()).Constructed()) || !(toplevel.$ptr || (toplevel.$ptr = new ptrType$15(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, toplevel))).ReadOptionalASN1((excluded.$ptr || (excluded.$ptr = new ptrType$15(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, excluded))), (haveExcluded.$ptr || (haveExcluded.$ptr = new ptrType$16(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, haveExcluded))), new asn1$1.Tag(new asn1$1.Tag(1).ContextSpecific()).Constructed()) || !toplevel[0].Empty()) {
 72268  			_tmp$5 = false;
 72269  			_tmp$6 = errors.New("x509: invalid NameConstraints extension");
 72270  			unhandled[0] = _tmp$5;
 72271  			err = _tmp$6;
 72272  			$s = -1; return [unhandled[0], err];
 72273  		}
 72274  		if (!havePermitted[0] && !haveExcluded[0] || (permitted[0].$length === 0) && (excluded[0].$length === 0)) {
 72275  			_tmp$7 = false;
 72276  			_tmp$8 = errors.New("x509: empty name constraints extension");
 72277  			unhandled[0] = _tmp$7;
 72278  			err = _tmp$8;
 72279  			$s = -1; return [unhandled[0], err];
 72280  		}
 72281  		getValues = (function(excluded, haveExcluded, havePermitted, permitted, toplevel, unhandled) { return function $b(subtrees) {
 72282  			var _1, _2, _r, _r$1, _r$10, _r$11, _r$12, _r$13, _r$14, _r$15, _r$16, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$14, _tmp$15, _tmp$16, _tmp$17, _tmp$18, _tmp$19, _tmp$20, _tmp$21, _tmp$22, _tmp$23, _tmp$24, _tmp$25, _tmp$26, _tmp$27, _tmp$28, _tmp$29, _tmp$30, _tmp$31, _tmp$32, _tmp$33, _tmp$34, _tmp$35, _tmp$36, _tmp$37, _tmp$38, _tmp$39, _tmp$40, _tmp$41, _tmp$42, _tmp$43, _tmp$44, _tmp$45, _tmp$46, _tmp$47, _tmp$48, _tmp$49, _tmp$50, _tmp$51, _tmp$52, _tmp$53, _tmp$54, _tmp$55, _tmp$56, _tmp$57, _tmp$58, _tmp$59, _tmp$60, _tmp$61, _tmp$62, _tmp$63, _tmp$64, _tmp$65, _tmp$66, _tmp$67, _tmp$68, _tmp$69, _tmp$70, _tmp$71, _tmp$72, _tmp$9, _tuple, _tuple$1, _tuple$2, _tuple$3, constraint, dnsNames, dnsTag, domain, domain$1, domain$2, emailTag, emails, err$1, err$2, err$3, err$4, ip, ipTag, ips, l, mask, ok, ok$1, ok$2, ok$3, seq, subtrees, subtrees$24ptr, tag, trimmedDomain, trimmedDomain$1, uriDomains, uriTag, value, x$1, x$2, x$3, x$4, $s, $r;
 72283  			/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _2 = $f._2; _r = $f._r; _r$1 = $f._r$1; _r$10 = $f._r$10; _r$11 = $f._r$11; _r$12 = $f._r$12; _r$13 = $f._r$13; _r$14 = $f._r$14; _r$15 = $f._r$15; _r$16 = $f._r$16; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _r$8 = $f._r$8; _r$9 = $f._r$9; _tmp$10 = $f._tmp$10; _tmp$11 = $f._tmp$11; _tmp$12 = $f._tmp$12; _tmp$13 = $f._tmp$13; _tmp$14 = $f._tmp$14; _tmp$15 = $f._tmp$15; _tmp$16 = $f._tmp$16; _tmp$17 = $f._tmp$17; _tmp$18 = $f._tmp$18; _tmp$19 = $f._tmp$19; _tmp$20 = $f._tmp$20; _tmp$21 = $f._tmp$21; _tmp$22 = $f._tmp$22; _tmp$23 = $f._tmp$23; _tmp$24 = $f._tmp$24; _tmp$25 = $f._tmp$25; _tmp$26 = $f._tmp$26; _tmp$27 = $f._tmp$27; _tmp$28 = $f._tmp$28; _tmp$29 = $f._tmp$29; _tmp$30 = $f._tmp$30; _tmp$31 = $f._tmp$31; _tmp$32 = $f._tmp$32; _tmp$33 = $f._tmp$33; _tmp$34 = $f._tmp$34; _tmp$35 = $f._tmp$35; _tmp$36 = $f._tmp$36; _tmp$37 = $f._tmp$37; _tmp$38 = $f._tmp$38; _tmp$39 = $f._tmp$39; _tmp$40 = $f._tmp$40; _tmp$41 = $f._tmp$41; _tmp$42 = $f._tmp$42; _tmp$43 = $f._tmp$43; _tmp$44 = $f._tmp$44; _tmp$45 = $f._tmp$45; _tmp$46 = $f._tmp$46; _tmp$47 = $f._tmp$47; _tmp$48 = $f._tmp$48; _tmp$49 = $f._tmp$49; _tmp$50 = $f._tmp$50; _tmp$51 = $f._tmp$51; _tmp$52 = $f._tmp$52; _tmp$53 = $f._tmp$53; _tmp$54 = $f._tmp$54; _tmp$55 = $f._tmp$55; _tmp$56 = $f._tmp$56; _tmp$57 = $f._tmp$57; _tmp$58 = $f._tmp$58; _tmp$59 = $f._tmp$59; _tmp$60 = $f._tmp$60; _tmp$61 = $f._tmp$61; _tmp$62 = $f._tmp$62; _tmp$63 = $f._tmp$63; _tmp$64 = $f._tmp$64; _tmp$65 = $f._tmp$65; _tmp$66 = $f._tmp$66; _tmp$67 = $f._tmp$67; _tmp$68 = $f._tmp$68; _tmp$69 = $f._tmp$69; _tmp$70 = $f._tmp$70; _tmp$71 = $f._tmp$71; _tmp$72 = $f._tmp$72; _tmp$9 = $f._tmp$9; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; constraint = $f.constraint; dnsNames = $f.dnsNames; dnsTag = $f.dnsTag; domain = $f.domain; domain$1 = $f.domain$1; domain$2 = $f.domain$2; emailTag = $f.emailTag; emails = $f.emails; err$1 = $f.err$1; err$2 = $f.err$2; err$3 = $f.err$3; err$4 = $f.err$4; ip = $f.ip; ipTag = $f.ipTag; ips = $f.ips; l = $f.l; mask = $f.mask; ok = $f.ok; ok$1 = $f.ok$1; ok$2 = $f.ok$2; ok$3 = $f.ok$3; seq = $f.seq; subtrees = $f.subtrees; subtrees$24ptr = $f.subtrees$24ptr; tag = $f.tag; trimmedDomain = $f.trimmedDomain; trimmedDomain$1 = $f.trimmedDomain$1; uriDomains = $f.uriDomains; uriTag = $f.uriTag; value = $f.value; x$1 = $f.x$1; x$2 = $f.x$2; x$3 = $f.x$3; x$4 = $f.x$4; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 72284  			dnsNames = sliceType$1.nil;
 72285  			ips = sliceType$16.nil;
 72286  			emails = sliceType$1.nil;
 72287  			uriDomains = sliceType$1.nil;
 72288  			err$1 = $ifaceNil;
 72289  			/* while (true) { */ case 1:
 72290  				/* if (!(!subtrees.Empty())) { break; } */ if(!(!subtrees.Empty())) { $s = 2; continue; }
 72291  				seq = [seq];
 72292  				tag = [tag];
 72293  				value = [value];
 72294  				_tmp$9 = cryptobyte.String.nil;
 72295  				_tmp$10 = cryptobyte.String.nil;
 72296  				seq[0] = _tmp$9;
 72297  				value[0] = _tmp$10;
 72298  				tag[0] = 0;
 72299  				/* */ if (!(subtrees$24ptr || (subtrees$24ptr = new ptrType$15(function() { return subtrees; }, function($v) { subtrees = $subslice(new cryptobyte.String($v.$array), $v.$offset, $v.$offset + $v.$length); }))).ReadASN1((seq.$ptr || (seq.$ptr = new ptrType$15(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, seq))), 48) || !(seq.$ptr || (seq.$ptr = new ptrType$15(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, seq))).ReadAnyASN1((value.$ptr || (value.$ptr = new ptrType$15(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, value))), (tag.$ptr || (tag.$ptr = new ptrType$17(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, tag))))) { $s = 3; continue; }
 72300  				/* */ $s = 4; continue;
 72301  				/* if (!(subtrees$24ptr || (subtrees$24ptr = new ptrType$15(function() { return subtrees; }, function($v) { subtrees = $subslice(new cryptobyte.String($v.$array), $v.$offset, $v.$offset + $v.$length); }))).ReadASN1((seq.$ptr || (seq.$ptr = new ptrType$15(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, seq))), 48) || !(seq.$ptr || (seq.$ptr = new ptrType$15(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, seq))).ReadAnyASN1((value.$ptr || (value.$ptr = new ptrType$15(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, value))), (tag.$ptr || (tag.$ptr = new ptrType$17(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, tag))))) { */ case 3:
 72302  					_tmp$11 = sliceType$1.nil;
 72303  					_tmp$12 = sliceType$16.nil;
 72304  					_tmp$13 = sliceType$1.nil;
 72305  					_tmp$14 = sliceType$1.nil;
 72306  					_r = fmt.Errorf("x509: invalid NameConstraints extension", new sliceType$11([])); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 72307  					_tmp$15 = _r;
 72308  					dnsNames = _tmp$11;
 72309  					ips = _tmp$12;
 72310  					emails = _tmp$13;
 72311  					uriDomains = _tmp$14;
 72312  					err$1 = _tmp$15;
 72313  					$s = -1; return [dnsNames, ips, emails, uriDomains, err$1];
 72314  				/* } */ case 4:
 72315  				dnsTag = new asn1$1.Tag(2).ContextSpecific();
 72316  				emailTag = new asn1$1.Tag(1).ContextSpecific();
 72317  				ipTag = new asn1$1.Tag(7).ContextSpecific();
 72318  				uriTag = new asn1$1.Tag(6).ContextSpecific();
 72319  					_1 = tag[0];
 72320  					/* */ if (_1 === (dnsTag)) { $s = 7; continue; }
 72321  					/* */ if (_1 === (ipTag)) { $s = 8; continue; }
 72322  					/* */ if (_1 === (emailTag)) { $s = 9; continue; }
 72323  					/* */ if (_1 === (uriTag)) { $s = 10; continue; }
 72324  					/* */ $s = 11; continue;
 72325  					/* if (_1 === (dnsTag)) { */ case 7:
 72326  						domain = ($bytesToString(value[0]));
 72327  						_r$1 = isIA5String(domain); /* */ $s = 13; case 13: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 72328  						err$2 = _r$1;
 72329  						/* */ if (!($interfaceIsEqual(err$2, $ifaceNil))) { $s = 14; continue; }
 72330  						/* */ $s = 15; continue;
 72331  						/* if (!($interfaceIsEqual(err$2, $ifaceNil))) { */ case 14:
 72332  							_tmp$16 = sliceType$1.nil;
 72333  							_tmp$17 = sliceType$16.nil;
 72334  							_tmp$18 = sliceType$1.nil;
 72335  							_tmp$19 = sliceType$1.nil;
 72336  							_r$2 = err$2.Error(); /* */ $s = 16; case 16: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 72337  							_r$3 = errors.New("x509: invalid constraint value: " + _r$2); /* */ $s = 17; case 17: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 72338  							_tmp$20 = _r$3;
 72339  							dnsNames = _tmp$16;
 72340  							ips = _tmp$17;
 72341  							emails = _tmp$18;
 72342  							uriDomains = _tmp$19;
 72343  							err$1 = _tmp$20;
 72344  							$s = -1; return [dnsNames, ips, emails, uriDomains, err$1];
 72345  						/* } */ case 15:
 72346  						trimmedDomain = domain;
 72347  						if (trimmedDomain.length > 0 && (trimmedDomain.charCodeAt(0) === 46)) {
 72348  							trimmedDomain = $substring(trimmedDomain, 1);
 72349  						}
 72350  						_tuple = domainToReverseLabels(trimmedDomain);
 72351  						ok = _tuple[1];
 72352  						/* */ if (!ok) { $s = 18; continue; }
 72353  						/* */ $s = 19; continue;
 72354  						/* if (!ok) { */ case 18:
 72355  							_tmp$21 = sliceType$1.nil;
 72356  							_tmp$22 = sliceType$16.nil;
 72357  							_tmp$23 = sliceType$1.nil;
 72358  							_tmp$24 = sliceType$1.nil;
 72359  							_r$4 = fmt.Errorf("x509: failed to parse dnsName constraint %q", new sliceType$11([new $String(domain)])); /* */ $s = 20; case 20: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 72360  							_tmp$25 = _r$4;
 72361  							dnsNames = _tmp$21;
 72362  							ips = _tmp$22;
 72363  							emails = _tmp$23;
 72364  							uriDomains = _tmp$24;
 72365  							err$1 = _tmp$25;
 72366  							$s = -1; return [dnsNames, ips, emails, uriDomains, err$1];
 72367  						/* } */ case 19:
 72368  						dnsNames = $append(dnsNames, domain);
 72369  						$s = 12; continue;
 72370  					/* } else if (_1 === (ipTag)) { */ case 8:
 72371  						l = value[0].$length;
 72372  						_tmp$26 = sliceType$4.nil;
 72373  						_tmp$27 = sliceType$4.nil;
 72374  						ip = _tmp$26;
 72375  						mask = _tmp$27;
 72376  							_2 = l;
 72377  							/* */ if (_2 === (8)) { $s = 22; continue; }
 72378  							/* */ if (_2 === (32)) { $s = 23; continue; }
 72379  							/* */ $s = 24; continue;
 72380  							/* if (_2 === (8)) { */ case 22:
 72381  								ip = (x$1 = $subslice(value[0], 0, 4), $subslice(new sliceType$4(x$1.$array), x$1.$offset, x$1.$offset + x$1.$length));
 72382  								mask = (x$2 = $subslice(value[0], 4), $subslice(new sliceType$4(x$2.$array), x$2.$offset, x$2.$offset + x$2.$length));
 72383  								$s = 25; continue;
 72384  							/* } else if (_2 === (32)) { */ case 23:
 72385  								ip = (x$3 = $subslice(value[0], 0, 16), $subslice(new sliceType$4(x$3.$array), x$3.$offset, x$3.$offset + x$3.$length));
 72386  								mask = (x$4 = $subslice(value[0], 16), $subslice(new sliceType$4(x$4.$array), x$4.$offset, x$4.$offset + x$4.$length));
 72387  								$s = 25; continue;
 72388  							/* } else { */ case 24:
 72389  								_tmp$28 = sliceType$1.nil;
 72390  								_tmp$29 = sliceType$16.nil;
 72391  								_tmp$30 = sliceType$1.nil;
 72392  								_tmp$31 = sliceType$1.nil;
 72393  								_r$5 = fmt.Errorf("x509: IP constraint contained value of length %d", new sliceType$11([new $Int(l)])); /* */ $s = 26; case 26: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
 72394  								_tmp$32 = _r$5;
 72395  								dnsNames = _tmp$28;
 72396  								ips = _tmp$29;
 72397  								emails = _tmp$30;
 72398  								uriDomains = _tmp$31;
 72399  								err$1 = _tmp$32;
 72400  								$s = -1; return [dnsNames, ips, emails, uriDomains, err$1];
 72401  							/* } */ case 25:
 72402  						case 21:
 72403  						/* */ if (!isValidIPMask(mask)) { $s = 27; continue; }
 72404  						/* */ $s = 28; continue;
 72405  						/* if (!isValidIPMask(mask)) { */ case 27:
 72406  							_tmp$33 = sliceType$1.nil;
 72407  							_tmp$34 = sliceType$16.nil;
 72408  							_tmp$35 = sliceType$1.nil;
 72409  							_tmp$36 = sliceType$1.nil;
 72410  							_r$6 = fmt.Errorf("x509: IP constraint contained invalid mask %x", new sliceType$11([mask])); /* */ $s = 29; case 29: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
 72411  							_tmp$37 = _r$6;
 72412  							dnsNames = _tmp$33;
 72413  							ips = _tmp$34;
 72414  							emails = _tmp$35;
 72415  							uriDomains = _tmp$36;
 72416  							err$1 = _tmp$37;
 72417  							$s = -1; return [dnsNames, ips, emails, uriDomains, err$1];
 72418  						/* } */ case 28:
 72419  						ips = $append(ips, new net.IPNet.ptr(($subslice(new net.IP(ip.$array), ip.$offset, ip.$offset + ip.$length)), ($subslice(new net.IPMask(mask.$array), mask.$offset, mask.$offset + mask.$length))));
 72420  						$s = 12; continue;
 72421  					/* } else if (_1 === (emailTag)) { */ case 9:
 72422  						constraint = ($bytesToString(value[0]));
 72423  						_r$7 = isIA5String(constraint); /* */ $s = 30; case 30: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
 72424  						err$3 = _r$7;
 72425  						/* */ if (!($interfaceIsEqual(err$3, $ifaceNil))) { $s = 31; continue; }
 72426  						/* */ $s = 32; continue;
 72427  						/* if (!($interfaceIsEqual(err$3, $ifaceNil))) { */ case 31:
 72428  							_tmp$38 = sliceType$1.nil;
 72429  							_tmp$39 = sliceType$16.nil;
 72430  							_tmp$40 = sliceType$1.nil;
 72431  							_tmp$41 = sliceType$1.nil;
 72432  							_r$8 = err$3.Error(); /* */ $s = 33; case 33: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
 72433  							_r$9 = errors.New("x509: invalid constraint value: " + _r$8); /* */ $s = 34; case 34: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 72434  							_tmp$42 = _r$9;
 72435  							dnsNames = _tmp$38;
 72436  							ips = _tmp$39;
 72437  							emails = _tmp$40;
 72438  							uriDomains = _tmp$41;
 72439  							err$1 = _tmp$42;
 72440  							$s = -1; return [dnsNames, ips, emails, uriDomains, err$1];
 72441  						/* } */ case 32:
 72442  						/* */ if (strings.Contains(constraint, "@")) { $s = 35; continue; }
 72443  						/* */ $s = 36; continue;
 72444  						/* if (strings.Contains(constraint, "@")) { */ case 35:
 72445  							_tuple$1 = parseRFC2821Mailbox(constraint);
 72446  							ok$1 = _tuple$1[1];
 72447  							/* */ if (!ok$1) { $s = 38; continue; }
 72448  							/* */ $s = 39; continue;
 72449  							/* if (!ok$1) { */ case 38:
 72450  								_tmp$43 = sliceType$1.nil;
 72451  								_tmp$44 = sliceType$16.nil;
 72452  								_tmp$45 = sliceType$1.nil;
 72453  								_tmp$46 = sliceType$1.nil;
 72454  								_r$10 = fmt.Errorf("x509: failed to parse rfc822Name constraint %q", new sliceType$11([new $String(constraint)])); /* */ $s = 40; case 40: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
 72455  								_tmp$47 = _r$10;
 72456  								dnsNames = _tmp$43;
 72457  								ips = _tmp$44;
 72458  								emails = _tmp$45;
 72459  								uriDomains = _tmp$46;
 72460  								err$1 = _tmp$47;
 72461  								$s = -1; return [dnsNames, ips, emails, uriDomains, err$1];
 72462  							/* } */ case 39:
 72463  							$s = 37; continue;
 72464  						/* } else { */ case 36:
 72465  							domain$1 = constraint;
 72466  							if (domain$1.length > 0 && (domain$1.charCodeAt(0) === 46)) {
 72467  								domain$1 = $substring(domain$1, 1);
 72468  							}
 72469  							_tuple$2 = domainToReverseLabels(domain$1);
 72470  							ok$2 = _tuple$2[1];
 72471  							/* */ if (!ok$2) { $s = 41; continue; }
 72472  							/* */ $s = 42; continue;
 72473  							/* if (!ok$2) { */ case 41:
 72474  								_tmp$48 = sliceType$1.nil;
 72475  								_tmp$49 = sliceType$16.nil;
 72476  								_tmp$50 = sliceType$1.nil;
 72477  								_tmp$51 = sliceType$1.nil;
 72478  								_r$11 = fmt.Errorf("x509: failed to parse rfc822Name constraint %q", new sliceType$11([new $String(constraint)])); /* */ $s = 43; case 43: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; }
 72479  								_tmp$52 = _r$11;
 72480  								dnsNames = _tmp$48;
 72481  								ips = _tmp$49;
 72482  								emails = _tmp$50;
 72483  								uriDomains = _tmp$51;
 72484  								err$1 = _tmp$52;
 72485  								$s = -1; return [dnsNames, ips, emails, uriDomains, err$1];
 72486  							/* } */ case 42:
 72487  						/* } */ case 37:
 72488  						emails = $append(emails, constraint);
 72489  						$s = 12; continue;
 72490  					/* } else if (_1 === (uriTag)) { */ case 10:
 72491  						domain$2 = ($bytesToString(value[0]));
 72492  						_r$12 = isIA5String(domain$2); /* */ $s = 44; case 44: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; }
 72493  						err$4 = _r$12;
 72494  						/* */ if (!($interfaceIsEqual(err$4, $ifaceNil))) { $s = 45; continue; }
 72495  						/* */ $s = 46; continue;
 72496  						/* if (!($interfaceIsEqual(err$4, $ifaceNil))) { */ case 45:
 72497  							_tmp$53 = sliceType$1.nil;
 72498  							_tmp$54 = sliceType$16.nil;
 72499  							_tmp$55 = sliceType$1.nil;
 72500  							_tmp$56 = sliceType$1.nil;
 72501  							_r$13 = err$4.Error(); /* */ $s = 47; case 47: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; }
 72502  							_r$14 = errors.New("x509: invalid constraint value: " + _r$13); /* */ $s = 48; case 48: if($c) { $c = false; _r$14 = _r$14.$blk(); } if (_r$14 && _r$14.$blk !== undefined) { break s; }
 72503  							_tmp$57 = _r$14;
 72504  							dnsNames = _tmp$53;
 72505  							ips = _tmp$54;
 72506  							emails = _tmp$55;
 72507  							uriDomains = _tmp$56;
 72508  							err$1 = _tmp$57;
 72509  							$s = -1; return [dnsNames, ips, emails, uriDomains, err$1];
 72510  						/* } */ case 46:
 72511  						/* */ if (!(net.ParseIP(domain$2) === net.IP.nil)) { $s = 49; continue; }
 72512  						/* */ $s = 50; continue;
 72513  						/* if (!(net.ParseIP(domain$2) === net.IP.nil)) { */ case 49:
 72514  							_tmp$58 = sliceType$1.nil;
 72515  							_tmp$59 = sliceType$16.nil;
 72516  							_tmp$60 = sliceType$1.nil;
 72517  							_tmp$61 = sliceType$1.nil;
 72518  							_r$15 = fmt.Errorf("x509: failed to parse URI constraint %q: cannot be IP address", new sliceType$11([new $String(domain$2)])); /* */ $s = 51; case 51: if($c) { $c = false; _r$15 = _r$15.$blk(); } if (_r$15 && _r$15.$blk !== undefined) { break s; }
 72519  							_tmp$62 = _r$15;
 72520  							dnsNames = _tmp$58;
 72521  							ips = _tmp$59;
 72522  							emails = _tmp$60;
 72523  							uriDomains = _tmp$61;
 72524  							err$1 = _tmp$62;
 72525  							$s = -1; return [dnsNames, ips, emails, uriDomains, err$1];
 72526  						/* } */ case 50:
 72527  						trimmedDomain$1 = domain$2;
 72528  						if (trimmedDomain$1.length > 0 && (trimmedDomain$1.charCodeAt(0) === 46)) {
 72529  							trimmedDomain$1 = $substring(trimmedDomain$1, 1);
 72530  						}
 72531  						_tuple$3 = domainToReverseLabels(trimmedDomain$1);
 72532  						ok$3 = _tuple$3[1];
 72533  						/* */ if (!ok$3) { $s = 52; continue; }
 72534  						/* */ $s = 53; continue;
 72535  						/* if (!ok$3) { */ case 52:
 72536  							_tmp$63 = sliceType$1.nil;
 72537  							_tmp$64 = sliceType$16.nil;
 72538  							_tmp$65 = sliceType$1.nil;
 72539  							_tmp$66 = sliceType$1.nil;
 72540  							_r$16 = fmt.Errorf("x509: failed to parse URI constraint %q", new sliceType$11([new $String(domain$2)])); /* */ $s = 54; case 54: if($c) { $c = false; _r$16 = _r$16.$blk(); } if (_r$16 && _r$16.$blk !== undefined) { break s; }
 72541  							_tmp$67 = _r$16;
 72542  							dnsNames = _tmp$63;
 72543  							ips = _tmp$64;
 72544  							emails = _tmp$65;
 72545  							uriDomains = _tmp$66;
 72546  							err$1 = _tmp$67;
 72547  							$s = -1; return [dnsNames, ips, emails, uriDomains, err$1];
 72548  						/* } */ case 53:
 72549  						uriDomains = $append(uriDomains, domain$2);
 72550  						$s = 12; continue;
 72551  					/* } else { */ case 11:
 72552  						unhandled[0] = true;
 72553  					/* } */ case 12:
 72554  				case 6:
 72555  			/* } */ $s = 1; continue; case 2:
 72556  			_tmp$68 = dnsNames;
 72557  			_tmp$69 = ips;
 72558  			_tmp$70 = emails;
 72559  			_tmp$71 = uriDomains;
 72560  			_tmp$72 = $ifaceNil;
 72561  			dnsNames = _tmp$68;
 72562  			ips = _tmp$69;
 72563  			emails = _tmp$70;
 72564  			uriDomains = _tmp$71;
 72565  			err$1 = _tmp$72;
 72566  			$s = -1; return [dnsNames, ips, emails, uriDomains, err$1];
 72567  			/* */ } return; } if ($f === undefined) { $f = { $blk: $b }; } $f._1 = _1; $f._2 = _2; $f._r = _r; $f._r$1 = _r$1; $f._r$10 = _r$10; $f._r$11 = _r$11; $f._r$12 = _r$12; $f._r$13 = _r$13; $f._r$14 = _r$14; $f._r$15 = _r$15; $f._r$16 = _r$16; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._r$8 = _r$8; $f._r$9 = _r$9; $f._tmp$10 = _tmp$10; $f._tmp$11 = _tmp$11; $f._tmp$12 = _tmp$12; $f._tmp$13 = _tmp$13; $f._tmp$14 = _tmp$14; $f._tmp$15 = _tmp$15; $f._tmp$16 = _tmp$16; $f._tmp$17 = _tmp$17; $f._tmp$18 = _tmp$18; $f._tmp$19 = _tmp$19; $f._tmp$20 = _tmp$20; $f._tmp$21 = _tmp$21; $f._tmp$22 = _tmp$22; $f._tmp$23 = _tmp$23; $f._tmp$24 = _tmp$24; $f._tmp$25 = _tmp$25; $f._tmp$26 = _tmp$26; $f._tmp$27 = _tmp$27; $f._tmp$28 = _tmp$28; $f._tmp$29 = _tmp$29; $f._tmp$30 = _tmp$30; $f._tmp$31 = _tmp$31; $f._tmp$32 = _tmp$32; $f._tmp$33 = _tmp$33; $f._tmp$34 = _tmp$34; $f._tmp$35 = _tmp$35; $f._tmp$36 = _tmp$36; $f._tmp$37 = _tmp$37; $f._tmp$38 = _tmp$38; $f._tmp$39 = _tmp$39; $f._tmp$40 = _tmp$40; $f._tmp$41 = _tmp$41; $f._tmp$42 = _tmp$42; $f._tmp$43 = _tmp$43; $f._tmp$44 = _tmp$44; $f._tmp$45 = _tmp$45; $f._tmp$46 = _tmp$46; $f._tmp$47 = _tmp$47; $f._tmp$48 = _tmp$48; $f._tmp$49 = _tmp$49; $f._tmp$50 = _tmp$50; $f._tmp$51 = _tmp$51; $f._tmp$52 = _tmp$52; $f._tmp$53 = _tmp$53; $f._tmp$54 = _tmp$54; $f._tmp$55 = _tmp$55; $f._tmp$56 = _tmp$56; $f._tmp$57 = _tmp$57; $f._tmp$58 = _tmp$58; $f._tmp$59 = _tmp$59; $f._tmp$60 = _tmp$60; $f._tmp$61 = _tmp$61; $f._tmp$62 = _tmp$62; $f._tmp$63 = _tmp$63; $f._tmp$64 = _tmp$64; $f._tmp$65 = _tmp$65; $f._tmp$66 = _tmp$66; $f._tmp$67 = _tmp$67; $f._tmp$68 = _tmp$68; $f._tmp$69 = _tmp$69; $f._tmp$70 = _tmp$70; $f._tmp$71 = _tmp$71; $f._tmp$72 = _tmp$72; $f._tmp$9 = _tmp$9; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f.constraint = constraint; $f.dnsNames = dnsNames; $f.dnsTag = dnsTag; $f.domain = domain; $f.domain$1 = domain$1; $f.domain$2 = domain$2; $f.emailTag = emailTag; $f.emails = emails; $f.err$1 = err$1; $f.err$2 = err$2; $f.err$3 = err$3; $f.err$4 = err$4; $f.ip = ip; $f.ipTag = ipTag; $f.ips = ips; $f.l = l; $f.mask = mask; $f.ok = ok; $f.ok$1 = ok$1; $f.ok$2 = ok$2; $f.ok$3 = ok$3; $f.seq = seq; $f.subtrees = subtrees; $f.subtrees$24ptr = subtrees$24ptr; $f.tag = tag; $f.trimmedDomain = trimmedDomain; $f.trimmedDomain$1 = trimmedDomain$1; $f.uriDomains = uriDomains; $f.uriTag = uriTag; $f.value = value; $f.x$1 = x$1; $f.x$2 = x$2; $f.x$3 = x$3; $f.x$4 = x$4; $f.$s = $s; $f.$r = $r; return $f;
 72568  		}; })(excluded, haveExcluded, havePermitted, permitted, toplevel, unhandled);
 72569  		_r = getValues(permitted[0]); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 72570  		_tuple = _r;
 72571  		out.PermittedDNSDomains = _tuple[0];
 72572  		out.PermittedIPRanges = _tuple[1];
 72573  		out.PermittedEmailAddresses = _tuple[2];
 72574  		out.PermittedURIDomains = _tuple[3];
 72575  		err = _tuple[4];
 72576  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 72577  			_tmp$9 = false;
 72578  			_tmp$10 = err;
 72579  			unhandled[0] = _tmp$9;
 72580  			err = _tmp$10;
 72581  			$s = -1; return [unhandled[0], err];
 72582  		}
 72583  		_r$1 = getValues(excluded[0]); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 72584  		_tuple$1 = _r$1;
 72585  		out.ExcludedDNSDomains = _tuple$1[0];
 72586  		out.ExcludedIPRanges = _tuple$1[1];
 72587  		out.ExcludedEmailAddresses = _tuple$1[2];
 72588  		out.ExcludedURIDomains = _tuple$1[3];
 72589  		err = _tuple$1[4];
 72590  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 72591  			_tmp$11 = false;
 72592  			_tmp$12 = err;
 72593  			unhandled[0] = _tmp$11;
 72594  			err = _tmp$12;
 72595  			$s = -1; return [unhandled[0], err];
 72596  		}
 72597  		out.PermittedDNSDomainsCritical = e.Critical;
 72598  		_tmp$13 = unhandled[0];
 72599  		_tmp$14 = $ifaceNil;
 72600  		unhandled[0] = _tmp$13;
 72601  		err = _tmp$14;
 72602  		$s = -1; return [unhandled[0], err];
 72603  		/* */ } return; } if ($f === undefined) { $f = { $blk: parseNameConstraintsExtension }; } $f._r = _r; $f._r$1 = _r$1; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$10 = _tmp$10; $f._tmp$11 = _tmp$11; $f._tmp$12 = _tmp$12; $f._tmp$13 = _tmp$13; $f._tmp$14 = _tmp$14; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tmp$4 = _tmp$4; $f._tmp$5 = _tmp$5; $f._tmp$6 = _tmp$6; $f._tmp$7 = _tmp$7; $f._tmp$8 = _tmp$8; $f._tmp$9 = _tmp$9; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.e = e; $f.err = err; $f.excluded = excluded; $f.getValues = getValues; $f.haveExcluded = haveExcluded; $f.havePermitted = havePermitted; $f.out = out; $f.outer = outer; $f.outer$24ptr = outer$24ptr; $f.permitted = permitted; $f.toplevel = toplevel; $f.unhandled = unhandled; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
 72604  	};
 72605  	parseCertificate = function(in$1) {
 72606  		var _1, _i, _i$1, _i$2, _i$3, _i$4, _i$5, _r, _r$1, _r$10, _r$11, _r$12, _r$13, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, _ref$1, _ref$2, _ref$3, _ref$4, _ref$5, _tmp, _tmp$1, _tuple, _tuple$1, _tuple$10, _tuple$11, _tuple$12, _tuple$13, _tuple$2, _tuple$3, _tuple$4, _tuple$5, _tuple$6, _tuple$7, _tuple$8, _tuple$9, a, aia, cdp, constraints, dp, e, err, err$1, err$10, err$2, err$3, err$4, err$5, err$6, err$7, err$8, err$9, extKeyUsage, fullName, i, i$1, in$1, issuer, keyUsage, keyid, ok, out, policies, policy, rest, rest$1, rest$2, rest$3, rest$4, rest$5, rest$6, rest$7, rest$8, rest$9, subject, u, unhandled, usage, usageBits, v, x, x$1, x$2, x$3, x$4, x$5, x$6, x$7, y, $s, $r;
 72607  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _i = $f._i; _i$1 = $f._i$1; _i$2 = $f._i$2; _i$3 = $f._i$3; _i$4 = $f._i$4; _i$5 = $f._i$5; _r = $f._r; _r$1 = $f._r$1; _r$10 = $f._r$10; _r$11 = $f._r$11; _r$12 = $f._r$12; _r$13 = $f._r$13; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _r$8 = $f._r$8; _r$9 = $f._r$9; _ref = $f._ref; _ref$1 = $f._ref$1; _ref$2 = $f._ref$2; _ref$3 = $f._ref$3; _ref$4 = $f._ref$4; _ref$5 = $f._ref$5; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$10 = $f._tuple$10; _tuple$11 = $f._tuple$11; _tuple$12 = $f._tuple$12; _tuple$13 = $f._tuple$13; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; _tuple$4 = $f._tuple$4; _tuple$5 = $f._tuple$5; _tuple$6 = $f._tuple$6; _tuple$7 = $f._tuple$7; _tuple$8 = $f._tuple$8; _tuple$9 = $f._tuple$9; a = $f.a; aia = $f.aia; cdp = $f.cdp; constraints = $f.constraints; dp = $f.dp; e = $f.e; err = $f.err; err$1 = $f.err$1; err$10 = $f.err$10; err$2 = $f.err$2; err$3 = $f.err$3; err$4 = $f.err$4; err$5 = $f.err$5; err$6 = $f.err$6; err$7 = $f.err$7; err$8 = $f.err$8; err$9 = $f.err$9; extKeyUsage = $f.extKeyUsage; fullName = $f.fullName; i = $f.i; i$1 = $f.i$1; in$1 = $f.in$1; issuer = $f.issuer; keyUsage = $f.keyUsage; keyid = $f.keyid; ok = $f.ok; out = $f.out; policies = $f.policies; policy = $f.policy; rest = $f.rest; rest$1 = $f.rest$1; rest$2 = $f.rest$2; rest$3 = $f.rest$3; rest$4 = $f.rest$4; rest$5 = $f.rest$5; rest$6 = $f.rest$6; rest$7 = $f.rest$7; rest$8 = $f.rest$8; rest$9 = $f.rest$9; subject = $f.subject; u = $f.u; unhandled = $f.unhandled; usage = $f.usage; usageBits = $f.usageBits; v = $f.v; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; x$3 = $f.x$3; x$4 = $f.x$4; x$5 = $f.x$5; x$6 = $f.x$6; x$7 = $f.x$7; y = $f.y; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 72608  		issuer = [issuer];
 72609  		subject = [subject];
 72610  		out = new Certificate.ptr(sliceType$4.nil, sliceType$4.nil, sliceType$4.nil, sliceType$4.nil, sliceType$4.nil, sliceType$4.nil, 0, 0, $ifaceNil, 0, ptrType$4.nil, new pkix.Name.ptr(sliceType$1.nil, sliceType$1.nil, sliceType$1.nil, sliceType$1.nil, sliceType$1.nil, sliceType$1.nil, sliceType$1.nil, "", "", sliceType$17.nil, sliceType$17.nil), new pkix.Name.ptr(sliceType$1.nil, sliceType$1.nil, sliceType$1.nil, sliceType$1.nil, sliceType$1.nil, sliceType$1.nil, sliceType$1.nil, "", "", sliceType$17.nil, sliceType$17.nil), new time.Time.ptr(new $Uint64(0, 0), new $Int64(0, 0), ptrType$18.nil), new time.Time.ptr(new $Uint64(0, 0), new $Int64(0, 0), ptrType$18.nil), 0, sliceType$18.nil, sliceType$18.nil, sliceType$19.nil, sliceType$13.nil, sliceType$19.nil, false, false, 0, false, sliceType$4.nil, sliceType$4.nil, sliceType$1.nil, sliceType$1.nil, sliceType$1.nil, sliceType$1.nil, sliceType$14.nil, sliceType$15.nil, false, sliceType$1.nil, sliceType$1.nil, sliceType$16.nil, sliceType$16.nil, sliceType$1.nil, sliceType$1.nil, sliceType$1.nil, sliceType$1.nil, sliceType$1.nil, sliceType$19.nil);
 72611  		out.Raw = (x = in$1.Raw, $subslice(new sliceType$4(x.$array), x.$offset, x.$offset + x.$length));
 72612  		out.RawTBSCertificate = (x$1 = in$1.TBSCertificate.Raw, $subslice(new sliceType$4(x$1.$array), x$1.$offset, x$1.$offset + x$1.$length));
 72613  		out.RawSubjectPublicKeyInfo = (x$2 = in$1.TBSCertificate.PublicKey.Raw, $subslice(new sliceType$4(x$2.$array), x$2.$offset, x$2.$offset + x$2.$length));
 72614  		out.RawSubject = in$1.TBSCertificate.Subject.FullBytes;
 72615  		out.RawIssuer = in$1.TBSCertificate.Issuer.FullBytes;
 72616  		out.Signature = $clone(in$1.SignatureValue, asn1.BitString).RightAlign();
 72617  		_r = getSignatureAlgorithmFromAI($clone(in$1.TBSCertificate.SignatureAlgorithm, pkix.AlgorithmIdentifier)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 72618  		out.SignatureAlgorithm = _r;
 72619  		out.PublicKeyAlgorithm = getPublicKeyAlgorithmFromOID(in$1.TBSCertificate.PublicKey.Algorithm.Algorithm);
 72620  		err = $ifaceNil;
 72621  		_r$1 = parsePublicKey(out.PublicKeyAlgorithm, in$1.TBSCertificate.PublicKey); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 72622  		_tuple = _r$1;
 72623  		out.PublicKey = _tuple[0];
 72624  		err = _tuple[1];
 72625  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 72626  			$s = -1; return [ptrType$1.nil, err];
 72627  		}
 72628  		out.Version = in$1.TBSCertificate.Version + 1 >> 0;
 72629  		out.SerialNumber = in$1.TBSCertificate.SerialNumber;
 72630  		_tmp = pkix.RDNSequence.nil;
 72631  		_tmp$1 = pkix.RDNSequence.nil;
 72632  		issuer[0] = _tmp;
 72633  		subject[0] = _tmp$1;
 72634  		_r$2 = asn1.Unmarshal(in$1.TBSCertificate.Subject.FullBytes, (subject.$ptr || (subject.$ptr = new ptrType$19(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, subject)))); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 72635  		_tuple$1 = _r$2;
 72636  		rest = _tuple$1[0];
 72637  		err$1 = _tuple$1[1];
 72638  		if (!($interfaceIsEqual(err$1, $ifaceNil))) {
 72639  			$s = -1; return [ptrType$1.nil, err$1];
 72640  		} else if (!((rest.$length === 0))) {
 72641  			$s = -1; return [ptrType$1.nil, errors.New("x509: trailing data after X.509 subject")];
 72642  		}
 72643  		_r$3 = asn1.Unmarshal(in$1.TBSCertificate.Issuer.FullBytes, (issuer.$ptr || (issuer.$ptr = new ptrType$19(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, issuer)))); /* */ $s = 4; case 4: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 72644  		_tuple$2 = _r$3;
 72645  		rest$1 = _tuple$2[0];
 72646  		err$2 = _tuple$2[1];
 72647  		if (!($interfaceIsEqual(err$2, $ifaceNil))) {
 72648  			$s = -1; return [ptrType$1.nil, err$2];
 72649  		} else if (!((rest$1.$length === 0))) {
 72650  			$s = -1; return [ptrType$1.nil, errors.New("x509: trailing data after X.509 subject")];
 72651  		}
 72652  		out.Issuer.FillFromRDNSequence((issuer.$ptr || (issuer.$ptr = new ptrType$19(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, issuer))));
 72653  		out.Subject.FillFromRDNSequence((subject.$ptr || (subject.$ptr = new ptrType$19(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, subject))));
 72654  		time.Time.copy(out.NotBefore, in$1.TBSCertificate.Validity.NotBefore);
 72655  		time.Time.copy(out.NotAfter, in$1.TBSCertificate.Validity.NotAfter);
 72656  		_ref = in$1.TBSCertificate.Extensions;
 72657  		_i = 0;
 72658  		/* while (true) { */ case 5:
 72659  			/* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 6; continue; }
 72660  			a = [a];
 72661  			aia = [aia];
 72662  			cdp = [cdp];
 72663  			constraints = [constraints];
 72664  			keyUsage = [keyUsage];
 72665  			keyid = [keyid];
 72666  			policies = [policies];
 72667  			usageBits = [usageBits];
 72668  			e = $clone(((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]), pkix.Extension);
 72669  			out.Extensions = $append(out.Extensions, e);
 72670  			unhandled = false;
 72671  			/* */ if ((e.Id.$length === 4) && ((x$3 = e.Id, (0 >= x$3.$length ? ($throwRuntimeError("index out of range"), undefined) : x$3.$array[x$3.$offset + 0])) === 2) && ((x$4 = e.Id, (1 >= x$4.$length ? ($throwRuntimeError("index out of range"), undefined) : x$4.$array[x$4.$offset + 1])) === 5) && ((x$5 = e.Id, (2 >= x$5.$length ? ($throwRuntimeError("index out of range"), undefined) : x$5.$array[x$5.$offset + 2])) === 29)) { $s = 7; continue; }
 72672  			/* */ if (e.Id.Equal($subslice(new asn1.ObjectIdentifier(oidExtensionAuthorityInfoAccess.$array), oidExtensionAuthorityInfoAccess.$offset, oidExtensionAuthorityInfoAccess.$offset + oidExtensionAuthorityInfoAccess.$length))) { $s = 8; continue; }
 72673  			/* */ $s = 9; continue;
 72674  			/* if ((e.Id.$length === 4) && ((x$3 = e.Id, (0 >= x$3.$length ? ($throwRuntimeError("index out of range"), undefined) : x$3.$array[x$3.$offset + 0])) === 2) && ((x$4 = e.Id, (1 >= x$4.$length ? ($throwRuntimeError("index out of range"), undefined) : x$4.$array[x$4.$offset + 1])) === 5) && ((x$5 = e.Id, (2 >= x$5.$length ? ($throwRuntimeError("index out of range"), undefined) : x$5.$array[x$5.$offset + 2])) === 29)) { */ case 7:
 72675  					_1 = (x$6 = e.Id, (3 >= x$6.$length ? ($throwRuntimeError("index out of range"), undefined) : x$6.$array[x$6.$offset + 3]));
 72676  					/* */ if (_1 === (15)) { $s = 12; continue; }
 72677  					/* */ if (_1 === (19)) { $s = 13; continue; }
 72678  					/* */ if (_1 === (17)) { $s = 14; continue; }
 72679  					/* */ if (_1 === (30)) { $s = 15; continue; }
 72680  					/* */ if (_1 === (31)) { $s = 16; continue; }
 72681  					/* */ if (_1 === (35)) { $s = 17; continue; }
 72682  					/* */ if (_1 === (37)) { $s = 18; continue; }
 72683  					/* */ if (_1 === (14)) { $s = 19; continue; }
 72684  					/* */ if (_1 === (32)) { $s = 20; continue; }
 72685  					/* */ $s = 21; continue;
 72686  					/* if (_1 === (15)) { */ case 12:
 72687  						usageBits[0] = new asn1.BitString.ptr(sliceType$4.nil, 0);
 72688  						_r$4 = asn1.Unmarshal(e.Value, usageBits[0]); /* */ $s = 23; case 23: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 72689  						_tuple$3 = _r$4;
 72690  						rest$2 = _tuple$3[0];
 72691  						err$3 = _tuple$3[1];
 72692  						if (!($interfaceIsEqual(err$3, $ifaceNil))) {
 72693  							$s = -1; return [ptrType$1.nil, err$3];
 72694  						} else if (!((rest$2.$length === 0))) {
 72695  							$s = -1; return [ptrType$1.nil, errors.New("x509: trailing data after X.509 KeyUsage")];
 72696  						}
 72697  						usage = 0;
 72698  						i = 0;
 72699  						while (true) {
 72700  							if (!(i < 9)) { break; }
 72701  							if (!(($clone(usageBits[0], asn1.BitString).At(i) === 0))) {
 72702  								usage = usage | (((y = ((i >>> 0)), y < 32 ? (1 << y) : 0) >> 0));
 72703  							}
 72704  							i = i + (1) >> 0;
 72705  						}
 72706  						out.KeyUsage = ((usage >> 0));
 72707  						$s = 22; continue;
 72708  					/* } else if (_1 === (19)) { */ case 13:
 72709  						constraints[0] = new basicConstraints.ptr(false, 0);
 72710  						_r$5 = asn1.Unmarshal(e.Value, constraints[0]); /* */ $s = 24; case 24: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
 72711  						_tuple$4 = _r$5;
 72712  						rest$3 = _tuple$4[0];
 72713  						err$4 = _tuple$4[1];
 72714  						if (!($interfaceIsEqual(err$4, $ifaceNil))) {
 72715  							$s = -1; return [ptrType$1.nil, err$4];
 72716  						} else if (!((rest$3.$length === 0))) {
 72717  							$s = -1; return [ptrType$1.nil, errors.New("x509: trailing data after X.509 BasicConstraints")];
 72718  						}
 72719  						out.BasicConstraintsValid = true;
 72720  						out.IsCA = constraints[0].IsCA;
 72721  						out.MaxPathLen = constraints[0].MaxPathLen;
 72722  						out.MaxPathLenZero = out.MaxPathLen === 0;
 72723  						$s = 22; continue;
 72724  					/* } else if (_1 === (17)) { */ case 14:
 72725  						_r$6 = parseSANExtension(e.Value); /* */ $s = 25; case 25: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
 72726  						_tuple$5 = _r$6;
 72727  						out.DNSNames = _tuple$5[0];
 72728  						out.EmailAddresses = _tuple$5[1];
 72729  						out.IPAddresses = _tuple$5[2];
 72730  						out.URIs = _tuple$5[3];
 72731  						err = _tuple$5[4];
 72732  						if (!($interfaceIsEqual(err, $ifaceNil))) {
 72733  							$s = -1; return [ptrType$1.nil, err];
 72734  						}
 72735  						if ((out.DNSNames.$length === 0) && (out.EmailAddresses.$length === 0) && (out.IPAddresses.$length === 0) && (out.URIs.$length === 0)) {
 72736  							unhandled = true;
 72737  						}
 72738  						$s = 22; continue;
 72739  					/* } else if (_1 === (30)) { */ case 15:
 72740  						_r$7 = parseNameConstraintsExtension(out, $clone(e, pkix.Extension)); /* */ $s = 26; case 26: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
 72741  						_tuple$6 = _r$7;
 72742  						unhandled = _tuple$6[0];
 72743  						err = _tuple$6[1];
 72744  						if (!($interfaceIsEqual(err, $ifaceNil))) {
 72745  							$s = -1; return [ptrType$1.nil, err];
 72746  						}
 72747  						$s = 22; continue;
 72748  					/* } else if (_1 === (31)) { */ case 16:
 72749  						cdp[0] = sliceType$20.nil;
 72750  						_r$8 = asn1.Unmarshal(e.Value, (cdp.$ptr || (cdp.$ptr = new ptrType$20(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, cdp)))); /* */ $s = 27; case 27: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
 72751  						_tuple$7 = _r$8;
 72752  						rest$4 = _tuple$7[0];
 72753  						err$5 = _tuple$7[1];
 72754  						if (!($interfaceIsEqual(err$5, $ifaceNil))) {
 72755  							$s = -1; return [ptrType$1.nil, err$5];
 72756  						} else if (!((rest$4.$length === 0))) {
 72757  							$s = -1; return [ptrType$1.nil, errors.New("x509: trailing data after X.509 CRL distribution point")];
 72758  						}
 72759  						_ref$1 = cdp[0];
 72760  						_i$1 = 0;
 72761  						while (true) {
 72762  							if (!(_i$1 < _ref$1.$length)) { break; }
 72763  							dp = $clone(((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]), distributionPoint);
 72764  							if (dp.DistributionPoint.FullName.$length === 0) {
 72765  								_i$1++;
 72766  								continue;
 72767  							}
 72768  							_ref$2 = dp.DistributionPoint.FullName;
 72769  							_i$2 = 0;
 72770  							while (true) {
 72771  								if (!(_i$2 < _ref$2.$length)) { break; }
 72772  								fullName = $clone(((_i$2 < 0 || _i$2 >= _ref$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$2.$array[_ref$2.$offset + _i$2]), asn1.RawValue);
 72773  								if (fullName.Tag === 6) {
 72774  									out.CRLDistributionPoints = $append(out.CRLDistributionPoints, ($bytesToString(fullName.Bytes)));
 72775  								}
 72776  								_i$2++;
 72777  							}
 72778  							_i$1++;
 72779  						}
 72780  						$s = 22; continue;
 72781  					/* } else if (_1 === (35)) { */ case 17:
 72782  						a[0] = new authKeyId.ptr(sliceType$4.nil);
 72783  						_r$9 = asn1.Unmarshal(e.Value, a[0]); /* */ $s = 28; case 28: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 72784  						_tuple$8 = _r$9;
 72785  						rest$5 = _tuple$8[0];
 72786  						err$6 = _tuple$8[1];
 72787  						if (!($interfaceIsEqual(err$6, $ifaceNil))) {
 72788  							$s = -1; return [ptrType$1.nil, err$6];
 72789  						} else if (!((rest$5.$length === 0))) {
 72790  							$s = -1; return [ptrType$1.nil, errors.New("x509: trailing data after X.509 authority key-id")];
 72791  						}
 72792  						out.AuthorityKeyId = a[0].Id;
 72793  						$s = 22; continue;
 72794  					/* } else if (_1 === (37)) { */ case 18:
 72795  						keyUsage[0] = sliceType$19.nil;
 72796  						_r$10 = asn1.Unmarshal(e.Value, (keyUsage.$ptr || (keyUsage.$ptr = new ptrType$21(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, keyUsage)))); /* */ $s = 29; case 29: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
 72797  						_tuple$9 = _r$10;
 72798  						rest$6 = _tuple$9[0];
 72799  						err$7 = _tuple$9[1];
 72800  						if (!($interfaceIsEqual(err$7, $ifaceNil))) {
 72801  							$s = -1; return [ptrType$1.nil, err$7];
 72802  						} else if (!((rest$6.$length === 0))) {
 72803  							$s = -1; return [ptrType$1.nil, errors.New("x509: trailing data after X.509 ExtendedKeyUsage")];
 72804  						}
 72805  						_ref$3 = keyUsage[0];
 72806  						_i$3 = 0;
 72807  						while (true) {
 72808  							if (!(_i$3 < _ref$3.$length)) { break; }
 72809  							u = ((_i$3 < 0 || _i$3 >= _ref$3.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$3.$array[_ref$3.$offset + _i$3]);
 72810  							_tuple$10 = extKeyUsageFromOID(u);
 72811  							extKeyUsage = _tuple$10[0];
 72812  							ok = _tuple$10[1];
 72813  							if (ok) {
 72814  								out.ExtKeyUsage = $append(out.ExtKeyUsage, extKeyUsage);
 72815  							} else {
 72816  								out.UnknownExtKeyUsage = $append(out.UnknownExtKeyUsage, u);
 72817  							}
 72818  							_i$3++;
 72819  						}
 72820  						$s = 22; continue;
 72821  					/* } else if (_1 === (14)) { */ case 19:
 72822  						keyid[0] = sliceType$4.nil;
 72823  						_r$11 = asn1.Unmarshal(e.Value, (keyid.$ptr || (keyid.$ptr = new ptrType$22(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, keyid)))); /* */ $s = 30; case 30: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; }
 72824  						_tuple$11 = _r$11;
 72825  						rest$7 = _tuple$11[0];
 72826  						err$8 = _tuple$11[1];
 72827  						if (!($interfaceIsEqual(err$8, $ifaceNil))) {
 72828  							$s = -1; return [ptrType$1.nil, err$8];
 72829  						} else if (!((rest$7.$length === 0))) {
 72830  							$s = -1; return [ptrType$1.nil, errors.New("x509: trailing data after X.509 key-id")];
 72831  						}
 72832  						out.SubjectKeyId = keyid[0];
 72833  						$s = 22; continue;
 72834  					/* } else if (_1 === (32)) { */ case 20:
 72835  						policies[0] = sliceType$21.nil;
 72836  						_r$12 = asn1.Unmarshal(e.Value, (policies.$ptr || (policies.$ptr = new ptrType$23(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, policies)))); /* */ $s = 31; case 31: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; }
 72837  						_tuple$12 = _r$12;
 72838  						rest$8 = _tuple$12[0];
 72839  						err$9 = _tuple$12[1];
 72840  						if (!($interfaceIsEqual(err$9, $ifaceNil))) {
 72841  							$s = -1; return [ptrType$1.nil, err$9];
 72842  						} else if (!((rest$8.$length === 0))) {
 72843  							$s = -1; return [ptrType$1.nil, errors.New("x509: trailing data after X.509 certificate policies")];
 72844  						}
 72845  						out.PolicyIdentifiers = $makeSlice(sliceType$19, policies[0].$length);
 72846  						_ref$4 = policies[0];
 72847  						_i$4 = 0;
 72848  						while (true) {
 72849  							if (!(_i$4 < _ref$4.$length)) { break; }
 72850  							i$1 = _i$4;
 72851  							policy = $clone(((_i$4 < 0 || _i$4 >= _ref$4.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$4.$array[_ref$4.$offset + _i$4]), policyInformation);
 72852  							(x$7 = out.PolicyIdentifiers, ((i$1 < 0 || i$1 >= x$7.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$7.$array[x$7.$offset + i$1] = policy.Policy));
 72853  							_i$4++;
 72854  						}
 72855  						$s = 22; continue;
 72856  					/* } else { */ case 21:
 72857  						unhandled = true;
 72858  					/* } */ case 22:
 72859  				case 11:
 72860  				$s = 10; continue;
 72861  			/* } else if (e.Id.Equal($subslice(new asn1.ObjectIdentifier(oidExtensionAuthorityInfoAccess.$array), oidExtensionAuthorityInfoAccess.$offset, oidExtensionAuthorityInfoAccess.$offset + oidExtensionAuthorityInfoAccess.$length))) { */ case 8:
 72862  				aia[0] = sliceType$22.nil;
 72863  				_r$13 = asn1.Unmarshal(e.Value, (aia.$ptr || (aia.$ptr = new ptrType$24(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, aia)))); /* */ $s = 32; case 32: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; }
 72864  				_tuple$13 = _r$13;
 72865  				rest$9 = _tuple$13[0];
 72866  				err$10 = _tuple$13[1];
 72867  				if (!($interfaceIsEqual(err$10, $ifaceNil))) {
 72868  					$s = -1; return [ptrType$1.nil, err$10];
 72869  				} else if (!((rest$9.$length === 0))) {
 72870  					$s = -1; return [ptrType$1.nil, errors.New("x509: trailing data after X.509 authority information")];
 72871  				}
 72872  				_ref$5 = aia[0];
 72873  				_i$5 = 0;
 72874  				while (true) {
 72875  					if (!(_i$5 < _ref$5.$length)) { break; }
 72876  					v = $clone(((_i$5 < 0 || _i$5 >= _ref$5.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$5.$array[_ref$5.$offset + _i$5]), authorityInfoAccess);
 72877  					if (!((v.Location.Tag === 6))) {
 72878  						_i$5++;
 72879  						continue;
 72880  					}
 72881  					if (v.Method.Equal(oidAuthorityInfoAccessOcsp)) {
 72882  						out.OCSPServer = $append(out.OCSPServer, ($bytesToString(v.Location.Bytes)));
 72883  					} else if (v.Method.Equal(oidAuthorityInfoAccessIssuers)) {
 72884  						out.IssuingCertificateURL = $append(out.IssuingCertificateURL, ($bytesToString(v.Location.Bytes)));
 72885  					}
 72886  					_i$5++;
 72887  				}
 72888  				$s = 10; continue;
 72889  			/* } else { */ case 9:
 72890  				unhandled = true;
 72891  			/* } */ case 10:
 72892  			if (e.Critical && unhandled) {
 72893  				out.UnhandledCriticalExtensions = $append(out.UnhandledCriticalExtensions, e.Id);
 72894  			}
 72895  			_i++;
 72896  		/* } */ $s = 5; continue; case 6:
 72897  		$s = -1; return [out, $ifaceNil];
 72898  		/* */ } return; } if ($f === undefined) { $f = { $blk: parseCertificate }; } $f._1 = _1; $f._i = _i; $f._i$1 = _i$1; $f._i$2 = _i$2; $f._i$3 = _i$3; $f._i$4 = _i$4; $f._i$5 = _i$5; $f._r = _r; $f._r$1 = _r$1; $f._r$10 = _r$10; $f._r$11 = _r$11; $f._r$12 = _r$12; $f._r$13 = _r$13; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._r$8 = _r$8; $f._r$9 = _r$9; $f._ref = _ref; $f._ref$1 = _ref$1; $f._ref$2 = _ref$2; $f._ref$3 = _ref$3; $f._ref$4 = _ref$4; $f._ref$5 = _ref$5; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$10 = _tuple$10; $f._tuple$11 = _tuple$11; $f._tuple$12 = _tuple$12; $f._tuple$13 = _tuple$13; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f._tuple$4 = _tuple$4; $f._tuple$5 = _tuple$5; $f._tuple$6 = _tuple$6; $f._tuple$7 = _tuple$7; $f._tuple$8 = _tuple$8; $f._tuple$9 = _tuple$9; $f.a = a; $f.aia = aia; $f.cdp = cdp; $f.constraints = constraints; $f.dp = dp; $f.e = e; $f.err = err; $f.err$1 = err$1; $f.err$10 = err$10; $f.err$2 = err$2; $f.err$3 = err$3; $f.err$4 = err$4; $f.err$5 = err$5; $f.err$6 = err$6; $f.err$7 = err$7; $f.err$8 = err$8; $f.err$9 = err$9; $f.extKeyUsage = extKeyUsage; $f.fullName = fullName; $f.i = i; $f.i$1 = i$1; $f.in$1 = in$1; $f.issuer = issuer; $f.keyUsage = keyUsage; $f.keyid = keyid; $f.ok = ok; $f.out = out; $f.policies = policies; $f.policy = policy; $f.rest = rest; $f.rest$1 = rest$1; $f.rest$2 = rest$2; $f.rest$3 = rest$3; $f.rest$4 = rest$4; $f.rest$5 = rest$5; $f.rest$6 = rest$6; $f.rest$7 = rest$7; $f.rest$8 = rest$8; $f.rest$9 = rest$9; $f.subject = subject; $f.u = u; $f.unhandled = unhandled; $f.usage = usage; $f.usageBits = usageBits; $f.v = v; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.x$3 = x$3; $f.x$4 = x$4; $f.x$5 = x$5; $f.x$6 = x$6; $f.x$7 = x$7; $f.y = y; $f.$s = $s; $f.$r = $r; return $f;
 72899  	};
 72900  	ParseCertificate = function(asn1Data) {
 72901  		var _r, _r$1, _tuple, asn1Data, cert, err, rest, x, $s, $r;
 72902  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _tuple = $f._tuple; asn1Data = $f.asn1Data; cert = $f.cert; err = $f.err; rest = $f.rest; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 72903  		cert = [cert];
 72904  		cert[0] = new certificate.ptr(asn1.RawContent.nil, new tbsCertificate.ptr(asn1.RawContent.nil, 0, ptrType$4.nil, new pkix.AlgorithmIdentifier.ptr(asn1.ObjectIdentifier.nil, new asn1.RawValue.ptr(0, 0, false, sliceType$4.nil, sliceType$4.nil)), new asn1.RawValue.ptr(0, 0, false, sliceType$4.nil, sliceType$4.nil), new validity.ptr(new time.Time.ptr(new $Uint64(0, 0), new $Int64(0, 0), ptrType$18.nil), new time.Time.ptr(new $Uint64(0, 0), new $Int64(0, 0), ptrType$18.nil)), new asn1.RawValue.ptr(0, 0, false, sliceType$4.nil, sliceType$4.nil), new publicKeyInfo.ptr(asn1.RawContent.nil, new pkix.AlgorithmIdentifier.ptr(asn1.ObjectIdentifier.nil, new asn1.RawValue.ptr(0, 0, false, sliceType$4.nil, sliceType$4.nil)), new asn1.BitString.ptr(sliceType$4.nil, 0)), new asn1.BitString.ptr(sliceType$4.nil, 0), new asn1.BitString.ptr(sliceType$4.nil, 0), sliceType$18.nil), new pkix.AlgorithmIdentifier.ptr(asn1.ObjectIdentifier.nil, new asn1.RawValue.ptr(0, 0, false, sliceType$4.nil, sliceType$4.nil)), new asn1.BitString.ptr(sliceType$4.nil, 0));
 72905  		_r = asn1.Unmarshal(asn1Data, cert[0]); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 72906  		_tuple = _r;
 72907  		rest = _tuple[0];
 72908  		err = _tuple[1];
 72909  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 72910  			$s = -1; return [ptrType$1.nil, err];
 72911  		}
 72912  		if (rest.$length > 0) {
 72913  			$s = -1; return [ptrType$1.nil, (x = new asn1.SyntaxError.ptr("trailing data"), new x.constructor.elem(x))];
 72914  		}
 72915  		_r$1 = parseCertificate(cert[0]); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 72916  		$s = -1; return _r$1;
 72917  		/* */ } return; } if ($f === undefined) { $f = { $blk: ParseCertificate }; } $f._r = _r; $f._r$1 = _r$1; $f._tuple = _tuple; $f.asn1Data = asn1Data; $f.cert = cert; $f.err = err; $f.rest = rest; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
 72918  	};
 72919  	$pkg.ParseCertificate = ParseCertificate;
 72920  	oidInExtensions = function(oid, extensions) {
 72921  		var _i, _ref, e, extensions, oid;
 72922  		_ref = extensions;
 72923  		_i = 0;
 72924  		while (true) {
 72925  			if (!(_i < _ref.$length)) { break; }
 72926  			e = $clone(((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]), pkix.Extension);
 72927  			if (e.Id.Equal(oid)) {
 72928  				return true;
 72929  			}
 72930  			_i++;
 72931  		}
 72932  		return false;
 72933  	};
 72934  	isIA5String = function(s) {
 72935  		var _i, _r, _ref, _rune, r, s, $s, $r;
 72936  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _i = $f._i; _r = $f._r; _ref = $f._ref; _rune = $f._rune; r = $f.r; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 72937  		_ref = s;
 72938  		_i = 0;
 72939  		/* while (true) { */ case 1:
 72940  			/* if (!(_i < _ref.length)) { break; } */ if(!(_i < _ref.length)) { $s = 2; continue; }
 72941  			_rune = $decodeRune(_ref, _i);
 72942  			r = _rune[0];
 72943  			/* */ if (r >= 128) { $s = 3; continue; }
 72944  			/* */ $s = 4; continue;
 72945  			/* if (r >= 128) { */ case 3:
 72946  				_r = fmt.Errorf("x509: %q cannot be encoded as an IA5String", new sliceType$11([new $String(s)])); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 72947  				$s = -1; return _r;
 72948  			/* } */ case 4:
 72949  			_i += _rune[1];
 72950  		/* } */ $s = 1; continue; case 2:
 72951  		$s = -1; return $ifaceNil;
 72952  		/* */ } return; } if ($f === undefined) { $f = { $blk: isIA5String }; } $f._i = _i; $f._r = _r; $f._ref = _ref; $f._rune = _rune; $f.r = r; $f.s = s; $f.$s = $s; $f.$r = $r; return $f;
 72953  	};
 72954  	signingParamsForPublicKey = function(pub, requestedSigAlgo) {
 72955  		var _1, _i, _r, _r$1, _r$2, _r$3, _r$4, _ref, _ref$1, _tmp, _tmp$1, _v, details, err, found, hashFunc, pub, pub$1, pub$2, pub$3, pubType, requestedSigAlgo, sigAlgo, $s, $r;
 72956  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _i = $f._i; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _ref = $f._ref; _ref$1 = $f._ref$1; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _v = $f._v; details = $f.details; err = $f.err; found = $f.found; hashFunc = $f.hashFunc; pub = $f.pub; pub$1 = $f.pub$1; pub$2 = $f.pub$2; pub$3 = $f.pub$3; pubType = $f.pubType; requestedSigAlgo = $f.requestedSigAlgo; sigAlgo = $f.sigAlgo; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 72957  		hashFunc = 0;
 72958  		sigAlgo = new pkix.AlgorithmIdentifier.ptr(asn1.ObjectIdentifier.nil, new asn1.RawValue.ptr(0, 0, false, sliceType$4.nil, sliceType$4.nil));
 72959  		err = $ifaceNil;
 72960  		pubType = 0;
 72961  		_ref = pub;
 72962  		/* */ if ($assertType(_ref, ptrType$6, true)[1]) { $s = 1; continue; }
 72963  		/* */ if ($assertType(_ref, ptrType$12, true)[1]) { $s = 2; continue; }
 72964  		/* */ $s = 3; continue;
 72965  		/* if ($assertType(_ref, ptrType$6, true)[1]) { */ case 1:
 72966  			pub$1 = _ref.$val;
 72967  			pubType = 1;
 72968  			hashFunc = 5;
 72969  			sigAlgo.Algorithm = oidSignatureSHA256WithRSA;
 72970  			asn1.RawValue.copy(sigAlgo.Parameters, asn1.NullRawValue);
 72971  			$s = 4; continue;
 72972  		/* } else if ($assertType(_ref, ptrType$12, true)[1]) { */ case 2:
 72973  			pub$2 = _ref.$val;
 72974  			pubType = 3;
 72975  				_1 = pub$2.Curve;
 72976  				_r = elliptic.P224(); /* */ $s = 12; case 12: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 72977  				if ($interfaceIsEqual(_1, (_r))) { _v = true; $s = 11; continue s; }
 72978  				_r$1 = elliptic.P256(); /* */ $s = 13; case 13: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 72979  				_v = $interfaceIsEqual(_1, (_r$1)); case 11:
 72980  				/* */ if (_v) { $s = 6; continue; }
 72981  				_r$2 = elliptic.P384(); /* */ $s = 14; case 14: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 72982  				/* */ if ($interfaceIsEqual(_1, (_r$2))) { $s = 7; continue; }
 72983  				_r$3 = elliptic.P521(); /* */ $s = 15; case 15: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 72984  				/* */ if ($interfaceIsEqual(_1, (_r$3))) { $s = 8; continue; }
 72985  				/* */ $s = 9; continue;
 72986  				/* if (_v) { */ case 6:
 72987  					hashFunc = 5;
 72988  					sigAlgo.Algorithm = oidSignatureECDSAWithSHA256;
 72989  					$s = 10; continue;
 72990  				/* } else if ($interfaceIsEqual(_1, (_r$2))) { */ case 7:
 72991  					hashFunc = 6;
 72992  					sigAlgo.Algorithm = oidSignatureECDSAWithSHA384;
 72993  					$s = 10; continue;
 72994  				/* } else if ($interfaceIsEqual(_1, (_r$3))) { */ case 8:
 72995  					hashFunc = 7;
 72996  					sigAlgo.Algorithm = oidSignatureECDSAWithSHA512;
 72997  					$s = 10; continue;
 72998  				/* } else { */ case 9:
 72999  					err = errors.New("x509: unknown elliptic curve");
 73000  				/* } */ case 10:
 73001  			case 5:
 73002  			$s = 4; continue;
 73003  		/* } else { */ case 3:
 73004  			pub$3 = _ref;
 73005  			err = errors.New("x509: only RSA and ECDSA keys supported");
 73006  		/* } */ case 4:
 73007  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 73008  			$s = -1; return [hashFunc, sigAlgo, err];
 73009  		}
 73010  		if (requestedSigAlgo === 0) {
 73011  			$s = -1; return [hashFunc, sigAlgo, err];
 73012  		}
 73013  		found = false;
 73014  		_ref$1 = signatureAlgorithmDetails;
 73015  		_i = 0;
 73016  		/* while (true) { */ case 16:
 73017  			/* if (!(_i < _ref$1.$length)) { break; } */ if(!(_i < _ref$1.$length)) { $s = 17; continue; }
 73018  			details = $clone(((_i < 0 || _i >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i]), structType);
 73019  			/* */ if (details.algo === requestedSigAlgo) { $s = 18; continue; }
 73020  			/* */ $s = 19; continue;
 73021  			/* if (details.algo === requestedSigAlgo) { */ case 18:
 73022  				if (!((details.pubKeyAlgo === pubType))) {
 73023  					err = errors.New("x509: requested SignatureAlgorithm does not match private key type");
 73024  					$s = -1; return [hashFunc, sigAlgo, err];
 73025  				}
 73026  				_tmp = details.oid;
 73027  				_tmp$1 = details.hash;
 73028  				sigAlgo.Algorithm = _tmp;
 73029  				hashFunc = _tmp$1;
 73030  				if (hashFunc === 0) {
 73031  					err = errors.New("x509: cannot sign with hash function requested");
 73032  					$s = -1; return [hashFunc, sigAlgo, err];
 73033  				}
 73034  				/* */ if (new SignatureAlgorithm(requestedSigAlgo).isRSAPSS()) { $s = 20; continue; }
 73035  				/* */ $s = 21; continue;
 73036  				/* if (new SignatureAlgorithm(requestedSigAlgo).isRSAPSS()) { */ case 20:
 73037  					_r$4 = rsaPSSParameters(hashFunc); /* */ $s = 22; case 22: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 73038  					asn1.RawValue.copy(sigAlgo.Parameters, _r$4);
 73039  				/* } */ case 21:
 73040  				found = true;
 73041  				/* break; */ $s = 17; continue;
 73042  			/* } */ case 19:
 73043  			_i++;
 73044  		/* } */ $s = 16; continue; case 17:
 73045  		if (!found) {
 73046  			err = errors.New("x509: unknown SignatureAlgorithm");
 73047  		}
 73048  		$s = -1; return [hashFunc, sigAlgo, err];
 73049  		/* */ } return; } if ($f === undefined) { $f = { $blk: signingParamsForPublicKey }; } $f._1 = _1; $f._i = _i; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._ref = _ref; $f._ref$1 = _ref$1; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._v = _v; $f.details = details; $f.err = err; $f.found = found; $f.hashFunc = hashFunc; $f.pub = pub; $f.pub$1 = pub$1; $f.pub$2 = pub$2; $f.pub$3 = pub$3; $f.pubType = pubType; $f.requestedSigAlgo = requestedSigAlgo; $f.sigAlgo = sigAlgo; $f.$s = $s; $f.$r = $r; return $f;
 73050  	};
 73051  	Certificate.ptr.prototype.CreateCRL = function(rand, priv, revokedCerts, now, expiry) {
 73052  		var _i, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _ref, _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, _tuple$5, aki, c, crlBytes, digest, err, expiry, h, hashFunc, i, key, now, ok, priv, rand, rc, revokedCerts, revokedCertsUTC, signature, signatureAlgorithm, tbsCertList, tbsCertListContents, x, x$1, $s, $r;
 73053  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _i = $f._i; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _r$8 = $f._r$8; _ref = $f._ref; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; _tuple$4 = $f._tuple$4; _tuple$5 = $f._tuple$5; aki = $f.aki; c = $f.c; crlBytes = $f.crlBytes; digest = $f.digest; err = $f.err; expiry = $f.expiry; h = $f.h; hashFunc = $f.hashFunc; i = $f.i; key = $f.key; now = $f.now; ok = $f.ok; priv = $f.priv; rand = $f.rand; rc = $f.rc; revokedCerts = $f.revokedCerts; revokedCertsUTC = $f.revokedCertsUTC; signature = $f.signature; signatureAlgorithm = $f.signatureAlgorithm; tbsCertList = $f.tbsCertList; tbsCertListContents = $f.tbsCertListContents; x = $f.x; x$1 = $f.x$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 73054  		crlBytes = sliceType$4.nil;
 73055  		err = $ifaceNil;
 73056  		c = this;
 73057  		_tuple = $assertType(priv, crypto.Signer, true);
 73058  		key = _tuple[0];
 73059  		ok = _tuple[1];
 73060  		if (!ok) {
 73061  			_tmp = sliceType$4.nil;
 73062  			_tmp$1 = errors.New("x509: certificate private key does not implement crypto.Signer");
 73063  			crlBytes = _tmp;
 73064  			err = _tmp$1;
 73065  			$s = -1; return [crlBytes, err];
 73066  		}
 73067  		_r = key.Public(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 73068  		_r$1 = signingParamsForPublicKey(_r, 0); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 73069  		_tuple$1 = _r$1;
 73070  		hashFunc = _tuple$1[0];
 73071  		signatureAlgorithm = $clone(_tuple$1[1], pkix.AlgorithmIdentifier);
 73072  		err = _tuple$1[2];
 73073  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 73074  			_tmp$2 = sliceType$4.nil;
 73075  			_tmp$3 = err;
 73076  			crlBytes = _tmp$2;
 73077  			err = _tmp$3;
 73078  			$s = -1; return [crlBytes, err];
 73079  		}
 73080  		revokedCertsUTC = $makeSlice(sliceType$25, revokedCerts.$length);
 73081  		_ref = revokedCerts;
 73082  		_i = 0;
 73083  		while (true) {
 73084  			if (!(_i < _ref.$length)) { break; }
 73085  			i = _i;
 73086  			rc = $clone(((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]), pkix.RevokedCertificate);
 73087  			time.Time.copy(rc.RevocationTime, $clone(rc.RevocationTime, time.Time).UTC());
 73088  			pkix.RevokedCertificate.copy(((i < 0 || i >= revokedCertsUTC.$length) ? ($throwRuntimeError("index out of range"), undefined) : revokedCertsUTC.$array[revokedCertsUTC.$offset + i]), rc);
 73089  			_i++;
 73090  		}
 73091  		tbsCertList = new pkix.TBSCertificateList.ptr(asn1.RawContent.nil, 1, $clone(signatureAlgorithm, pkix.AlgorithmIdentifier), $clone(c.Subject, pkix.Name).ToRDNSequence(), $clone($clone(now, time.Time).UTC(), time.Time), $clone($clone(expiry, time.Time).UTC(), time.Time), revokedCertsUTC, sliceType$18.nil);
 73092  		/* */ if (c.SubjectKeyId.$length > 0) { $s = 3; continue; }
 73093  		/* */ $s = 4; continue;
 73094  		/* if (c.SubjectKeyId.$length > 0) { */ case 3:
 73095  			aki = new pkix.Extension.ptr(asn1.ObjectIdentifier.nil, false, sliceType$4.nil);
 73096  			aki.Id = $subslice(new asn1.ObjectIdentifier(oidExtensionAuthorityKeyId.$array), oidExtensionAuthorityKeyId.$offset, oidExtensionAuthorityKeyId.$offset + oidExtensionAuthorityKeyId.$length);
 73097  			_r$2 = asn1.Marshal((x = new authKeyId.ptr(c.SubjectKeyId), new x.constructor.elem(x))); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 73098  			_tuple$2 = _r$2;
 73099  			aki.Value = _tuple$2[0];
 73100  			err = _tuple$2[1];
 73101  			if (!($interfaceIsEqual(err, $ifaceNil))) {
 73102  				$s = -1; return [crlBytes, err];
 73103  			}
 73104  			tbsCertList.Extensions = $append(tbsCertList.Extensions, aki);
 73105  		/* } */ case 4:
 73106  		_r$3 = asn1.Marshal(new tbsCertList.constructor.elem(tbsCertList)); /* */ $s = 6; case 6: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 73107  		_tuple$3 = _r$3;
 73108  		tbsCertListContents = _tuple$3[0];
 73109  		err = _tuple$3[1];
 73110  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 73111  			$s = -1; return [crlBytes, err];
 73112  		}
 73113  		_r$4 = new crypto.Hash(hashFunc).New(); /* */ $s = 7; case 7: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 73114  		h = _r$4;
 73115  		_r$5 = h.Write(tbsCertListContents); /* */ $s = 8; case 8: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
 73116  		_r$5;
 73117  		_r$6 = h.Sum(sliceType$4.nil); /* */ $s = 9; case 9: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
 73118  		digest = _r$6;
 73119  		signature = sliceType$4.nil;
 73120  		_r$7 = key.Sign(rand, digest, new crypto.Hash(hashFunc)); /* */ $s = 10; case 10: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
 73121  		_tuple$4 = _r$7;
 73122  		signature = _tuple$4[0];
 73123  		err = _tuple$4[1];
 73124  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 73125  			$s = -1; return [crlBytes, err];
 73126  		}
 73127  		_r$8 = asn1.Marshal((x$1 = new pkix.CertificateList.ptr($clone(tbsCertList, pkix.TBSCertificateList), $clone(signatureAlgorithm, pkix.AlgorithmIdentifier), new asn1.BitString.ptr(signature, $imul(signature.$length, 8))), new x$1.constructor.elem(x$1))); /* */ $s = 11; case 11: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
 73128  		_tuple$5 = _r$8;
 73129  		crlBytes = _tuple$5[0];
 73130  		err = _tuple$5[1];
 73131  		$s = -1; return [crlBytes, err];
 73132  		/* */ } return; } if ($f === undefined) { $f = { $blk: Certificate.ptr.prototype.CreateCRL }; } $f._i = _i; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._r$8 = _r$8; $f._ref = _ref; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f._tuple$4 = _tuple$4; $f._tuple$5 = _tuple$5; $f.aki = aki; $f.c = c; $f.crlBytes = crlBytes; $f.digest = digest; $f.err = err; $f.expiry = expiry; $f.h = h; $f.hashFunc = hashFunc; $f.i = i; $f.key = key; $f.now = now; $f.ok = ok; $f.priv = priv; $f.rand = rand; $f.rc = rc; $f.revokedCerts = revokedCerts; $f.revokedCertsUTC = revokedCertsUTC; $f.signature = signature; $f.signatureAlgorithm = signatureAlgorithm; $f.tbsCertList = tbsCertList; $f.tbsCertListContents = tbsCertListContents; $f.x = x; $f.x$1 = x$1; $f.$s = $s; $f.$r = $r; return $f;
 73133  	};
 73134  	Certificate.prototype.CreateCRL = function(rand, priv, revokedCerts, now, expiry) { return this.$val.CreateCRL(rand, priv, revokedCerts, now, expiry); };
 73135  	ptrType.methods = [{prop: "findVerifiedParents", name: "findVerifiedParents", pkg: "crypto/x509", typ: $funcType([ptrType$1], [sliceType$5, ptrType$1, $error], false)}, {prop: "contains", name: "contains", pkg: "crypto/x509", typ: $funcType([ptrType$1], [$Bool], false)}, {prop: "AddCert", name: "AddCert", pkg: "", typ: $funcType([ptrType$1], [], false)}, {prop: "AppendCertsFromPEM", name: "AppendCertsFromPEM", pkg: "", typ: $funcType([sliceType$4], [$Bool], false)}, {prop: "Subjects", name: "Subjects", pkg: "", typ: $funcType([], [sliceType$7], false)}];
 73136  	CertificateInvalidError.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}];
 73137  	HostnameError.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}];
 73138  	UnknownAuthorityError.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}];
 73139  	SystemRootsError.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}];
 73140  	SignatureAlgorithm.methods = [{prop: "isRSAPSS", name: "isRSAPSS", pkg: "crypto/x509", typ: $funcType([], [$Bool], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}];
 73141  	PublicKeyAlgorithm.methods = [{prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}];
 73142  	ptrType$1.methods = [{prop: "systemVerify", name: "systemVerify", pkg: "crypto/x509", typ: $funcType([ptrType$31], [sliceType$12, $error], false)}, {prop: "checkNameConstraints", name: "checkNameConstraints", pkg: "crypto/x509", typ: $funcType([ptrType$9, $Int, $String, $String, $emptyInterface, funcType$1, $emptyInterface, $emptyInterface], [$error], false)}, {prop: "isValid", name: "isValid", pkg: "crypto/x509", typ: $funcType([$Int, sliceType$6, ptrType$31], [$error], false)}, {prop: "Verify", name: "Verify", pkg: "", typ: $funcType([VerifyOptions], [sliceType$12, $error], false)}, {prop: "buildChains", name: "buildChains", pkg: "crypto/x509", typ: $funcType([mapType$1, sliceType$6, ptrType$31], [sliceType$12, $error], false)}, {prop: "VerifyHostname", name: "VerifyHostname", pkg: "", typ: $funcType([$String], [$error], false)}, {prop: "Equal", name: "Equal", pkg: "", typ: $funcType([ptrType$1], [$Bool], false)}, {prop: "hasSANExtension", name: "hasSANExtension", pkg: "crypto/x509", typ: $funcType([], [$Bool], false)}, {prop: "CheckSignatureFrom", name: "CheckSignatureFrom", pkg: "", typ: $funcType([ptrType$1], [$error], false)}, {prop: "CheckSignature", name: "CheckSignature", pkg: "", typ: $funcType([SignatureAlgorithm, sliceType$4, sliceType$4], [$error], false)}, {prop: "hasNameConstraints", name: "hasNameConstraints", pkg: "crypto/x509", typ: $funcType([], [$Bool], false)}, {prop: "getSANExtension", name: "getSANExtension", pkg: "crypto/x509", typ: $funcType([], [sliceType$4, $Bool], false)}, {prop: "CheckCRLSignature", name: "CheckCRLSignature", pkg: "", typ: $funcType([ptrType$27], [$error], false)}, {prop: "CreateCRL", name: "CreateCRL", pkg: "", typ: $funcType([io.Reader, $emptyInterface, sliceType$25, time.Time, time.Time], [sliceType$4, $error], false)}];
 73143  	InsecureAlgorithmError.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}];
 73144  	ConstraintViolationError.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}];
 73145  	UnhandledCriticalExtension.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}];
 73146  	CertPool.init("crypto/x509", [{prop: "bySubjectKeyId", name: "bySubjectKeyId", anonymous: false, exported: false, typ: mapType, tag: ""}, {prop: "byName", name: "byName", anonymous: false, exported: false, typ: mapType, tag: ""}, {prop: "certs", name: "certs", anonymous: false, exported: false, typ: sliceType$6, tag: ""}]);
 73147  	pkcs1PrivateKey.init("", [{prop: "Version", name: "Version", anonymous: false, exported: true, typ: $Int, tag: ""}, {prop: "N", name: "N", anonymous: false, exported: true, typ: ptrType$4, tag: ""}, {prop: "E", name: "E", anonymous: false, exported: true, typ: $Int, tag: ""}, {prop: "D", name: "D", anonymous: false, exported: true, typ: ptrType$4, tag: ""}, {prop: "P", name: "P", anonymous: false, exported: true, typ: ptrType$4, tag: ""}, {prop: "Q", name: "Q", anonymous: false, exported: true, typ: ptrType$4, tag: ""}, {prop: "Dp", name: "Dp", anonymous: false, exported: true, typ: ptrType$4, tag: "asn1:\"optional\""}, {prop: "Dq", name: "Dq", anonymous: false, exported: true, typ: ptrType$4, tag: "asn1:\"optional\""}, {prop: "Qinv", name: "Qinv", anonymous: false, exported: true, typ: ptrType$4, tag: "asn1:\"optional\""}, {prop: "AdditionalPrimes", name: "AdditionalPrimes", anonymous: false, exported: true, typ: sliceType$8, tag: "asn1:\"optional,omitempty\""}]);
 73148  	pkcs1AdditionalRSAPrime.init("", [{prop: "Prime", name: "Prime", anonymous: false, exported: true, typ: ptrType$4, tag: ""}, {prop: "Exp", name: "Exp", anonymous: false, exported: true, typ: ptrType$4, tag: ""}, {prop: "Coeff", name: "Coeff", anonymous: false, exported: true, typ: ptrType$4, tag: ""}]);
 73149  	pkcs1PublicKey.init("", [{prop: "N", name: "N", anonymous: false, exported: true, typ: ptrType$4, tag: ""}, {prop: "E", name: "E", anonymous: false, exported: true, typ: $Int, tag: ""}]);
 73150  	pkcs8.init("", [{prop: "Version", name: "Version", anonymous: false, exported: true, typ: $Int, tag: ""}, {prop: "Algo", name: "Algo", anonymous: false, exported: true, typ: pkix.AlgorithmIdentifier, tag: ""}, {prop: "PrivateKey", name: "PrivateKey", anonymous: false, exported: true, typ: sliceType$4, tag: ""}]);
 73151  	ecPrivateKey.init("", [{prop: "Version", name: "Version", anonymous: false, exported: true, typ: $Int, tag: ""}, {prop: "PrivateKey", name: "PrivateKey", anonymous: false, exported: true, typ: sliceType$4, tag: ""}, {prop: "NamedCurveOID", name: "NamedCurveOID", anonymous: false, exported: true, typ: asn1.ObjectIdentifier, tag: "asn1:\"optional,explicit,tag:0\""}, {prop: "PublicKey", name: "PublicKey", anonymous: false, exported: true, typ: asn1.BitString, tag: "asn1:\"optional,explicit,tag:1\""}]);
 73152  	CertificateInvalidError.init("", [{prop: "Cert", name: "Cert", anonymous: false, exported: true, typ: ptrType$1, tag: ""}, {prop: "Reason", name: "Reason", anonymous: false, exported: true, typ: InvalidReason, tag: ""}, {prop: "Detail", name: "Detail", anonymous: false, exported: true, typ: $String, tag: ""}]);
 73153  	HostnameError.init("", [{prop: "Certificate", name: "Certificate", anonymous: false, exported: true, typ: ptrType$1, tag: ""}, {prop: "Host", name: "Host", anonymous: false, exported: true, typ: $String, tag: ""}]);
 73154  	UnknownAuthorityError.init("crypto/x509", [{prop: "Cert", name: "Cert", anonymous: false, exported: true, typ: ptrType$1, tag: ""}, {prop: "hintErr", name: "hintErr", anonymous: false, exported: false, typ: $error, tag: ""}, {prop: "hintCert", name: "hintCert", anonymous: false, exported: false, typ: ptrType$1, tag: ""}]);
 73155  	SystemRootsError.init("", [{prop: "Err", name: "Err", anonymous: false, exported: true, typ: $error, tag: ""}]);
 73156  	VerifyOptions.init("", [{prop: "DNSName", name: "DNSName", anonymous: false, exported: true, typ: $String, tag: ""}, {prop: "Intermediates", name: "Intermediates", anonymous: false, exported: true, typ: ptrType, tag: ""}, {prop: "Roots", name: "Roots", anonymous: false, exported: true, typ: ptrType, tag: ""}, {prop: "CurrentTime", name: "CurrentTime", anonymous: false, exported: true, typ: time.Time, tag: ""}, {prop: "KeyUsages", name: "KeyUsages", anonymous: false, exported: true, typ: sliceType$13, tag: ""}, {prop: "MaxConstraintComparisions", name: "MaxConstraintComparisions", anonymous: false, exported: true, typ: $Int, tag: ""}]);
 73157  	rfc2821Mailbox.init("crypto/x509", [{prop: "local", name: "local", anonymous: false, exported: false, typ: $String, tag: ""}, {prop: "domain", name: "domain", anonymous: false, exported: false, typ: $String, tag: ""}]);
 73158  	certificate.init("", [{prop: "Raw", name: "Raw", anonymous: false, exported: true, typ: asn1.RawContent, tag: ""}, {prop: "TBSCertificate", name: "TBSCertificate", anonymous: false, exported: true, typ: tbsCertificate, tag: ""}, {prop: "SignatureAlgorithm", name: "SignatureAlgorithm", anonymous: false, exported: true, typ: pkix.AlgorithmIdentifier, tag: ""}, {prop: "SignatureValue", name: "SignatureValue", anonymous: false, exported: true, typ: asn1.BitString, tag: ""}]);
 73159  	tbsCertificate.init("", [{prop: "Raw", name: "Raw", anonymous: false, exported: true, typ: asn1.RawContent, tag: ""}, {prop: "Version", name: "Version", anonymous: false, exported: true, typ: $Int, tag: "asn1:\"optional,explicit,default:0,tag:0\""}, {prop: "SerialNumber", name: "SerialNumber", anonymous: false, exported: true, typ: ptrType$4, tag: ""}, {prop: "SignatureAlgorithm", name: "SignatureAlgorithm", anonymous: false, exported: true, typ: pkix.AlgorithmIdentifier, tag: ""}, {prop: "Issuer", name: "Issuer", anonymous: false, exported: true, typ: asn1.RawValue, tag: ""}, {prop: "Validity", name: "Validity", anonymous: false, exported: true, typ: validity, tag: ""}, {prop: "Subject", name: "Subject", anonymous: false, exported: true, typ: asn1.RawValue, tag: ""}, {prop: "PublicKey", name: "PublicKey", anonymous: false, exported: true, typ: publicKeyInfo, tag: ""}, {prop: "UniqueId", name: "UniqueId", anonymous: false, exported: true, typ: asn1.BitString, tag: "asn1:\"optional,tag:1\""}, {prop: "SubjectUniqueId", name: "SubjectUniqueId", anonymous: false, exported: true, typ: asn1.BitString, tag: "asn1:\"optional,tag:2\""}, {prop: "Extensions", name: "Extensions", anonymous: false, exported: true, typ: sliceType$18, tag: "asn1:\"optional,explicit,tag:3\""}]);
 73160  	dsaAlgorithmParameters.init("", [{prop: "P", name: "P", anonymous: false, exported: true, typ: ptrType$4, tag: ""}, {prop: "Q", name: "Q", anonymous: false, exported: true, typ: ptrType$4, tag: ""}, {prop: "G", name: "G", anonymous: false, exported: true, typ: ptrType$4, tag: ""}]);
 73161  	dsaSignature.init("", [{prop: "R", name: "R", anonymous: false, exported: true, typ: ptrType$4, tag: ""}, {prop: "S", name: "S", anonymous: false, exported: true, typ: ptrType$4, tag: ""}]);
 73162  	ecdsaSignature.init("", [{prop: "R", name: "R", anonymous: false, exported: true, typ: ptrType$4, tag: ""}, {prop: "S", name: "S", anonymous: false, exported: true, typ: ptrType$4, tag: ""}]);
 73163  	validity.init("", [{prop: "NotBefore", name: "NotBefore", anonymous: false, exported: true, typ: time.Time, tag: ""}, {prop: "NotAfter", name: "NotAfter", anonymous: false, exported: true, typ: time.Time, tag: ""}]);
 73164  	publicKeyInfo.init("", [{prop: "Raw", name: "Raw", anonymous: false, exported: true, typ: asn1.RawContent, tag: ""}, {prop: "Algorithm", name: "Algorithm", anonymous: false, exported: true, typ: pkix.AlgorithmIdentifier, tag: ""}, {prop: "PublicKey", name: "PublicKey", anonymous: false, exported: true, typ: asn1.BitString, tag: ""}]);
 73165  	authKeyId.init("", [{prop: "Id", name: "Id", anonymous: false, exported: true, typ: sliceType$4, tag: "asn1:\"optional,tag:0\""}]);
 73166  	pssParameters.init("", [{prop: "Hash", name: "Hash", anonymous: false, exported: true, typ: pkix.AlgorithmIdentifier, tag: "asn1:\"explicit,tag:0\""}, {prop: "MGF", name: "MGF", anonymous: false, exported: true, typ: pkix.AlgorithmIdentifier, tag: "asn1:\"explicit,tag:1\""}, {prop: "SaltLength", name: "SaltLength", anonymous: false, exported: true, typ: $Int, tag: "asn1:\"explicit,tag:2\""}, {prop: "TrailerField", name: "TrailerField", anonymous: false, exported: true, typ: $Int, tag: "asn1:\"optional,explicit,tag:3,default:1\""}]);
 73167  	Certificate.init("", [{prop: "Raw", name: "Raw", anonymous: false, exported: true, typ: sliceType$4, tag: ""}, {prop: "RawTBSCertificate", name: "RawTBSCertificate", anonymous: false, exported: true, typ: sliceType$4, tag: ""}, {prop: "RawSubjectPublicKeyInfo", name: "RawSubjectPublicKeyInfo", anonymous: false, exported: true, typ: sliceType$4, tag: ""}, {prop: "RawSubject", name: "RawSubject", anonymous: false, exported: true, typ: sliceType$4, tag: ""}, {prop: "RawIssuer", name: "RawIssuer", anonymous: false, exported: true, typ: sliceType$4, tag: ""}, {prop: "Signature", name: "Signature", anonymous: false, exported: true, typ: sliceType$4, tag: ""}, {prop: "SignatureAlgorithm", name: "SignatureAlgorithm", anonymous: false, exported: true, typ: SignatureAlgorithm, tag: ""}, {prop: "PublicKeyAlgorithm", name: "PublicKeyAlgorithm", anonymous: false, exported: true, typ: PublicKeyAlgorithm, tag: ""}, {prop: "PublicKey", name: "PublicKey", anonymous: false, exported: true, typ: $emptyInterface, tag: ""}, {prop: "Version", name: "Version", anonymous: false, exported: true, typ: $Int, tag: ""}, {prop: "SerialNumber", name: "SerialNumber", anonymous: false, exported: true, typ: ptrType$4, tag: ""}, {prop: "Issuer", name: "Issuer", anonymous: false, exported: true, typ: pkix.Name, tag: ""}, {prop: "Subject", name: "Subject", anonymous: false, exported: true, typ: pkix.Name, tag: ""}, {prop: "NotBefore", name: "NotBefore", anonymous: false, exported: true, typ: time.Time, tag: ""}, {prop: "NotAfter", name: "NotAfter", anonymous: false, exported: true, typ: time.Time, tag: ""}, {prop: "KeyUsage", name: "KeyUsage", anonymous: false, exported: true, typ: KeyUsage, tag: ""}, {prop: "Extensions", name: "Extensions", anonymous: false, exported: true, typ: sliceType$18, tag: ""}, {prop: "ExtraExtensions", name: "ExtraExtensions", anonymous: false, exported: true, typ: sliceType$18, tag: ""}, {prop: "UnhandledCriticalExtensions", name: "UnhandledCriticalExtensions", anonymous: false, exported: true, typ: sliceType$19, tag: ""}, {prop: "ExtKeyUsage", name: "ExtKeyUsage", anonymous: false, exported: true, typ: sliceType$13, tag: ""}, {prop: "UnknownExtKeyUsage", name: "UnknownExtKeyUsage", anonymous: false, exported: true, typ: sliceType$19, tag: ""}, {prop: "BasicConstraintsValid", name: "BasicConstraintsValid", anonymous: false, exported: true, typ: $Bool, tag: ""}, {prop: "IsCA", name: "IsCA", anonymous: false, exported: true, typ: $Bool, tag: ""}, {prop: "MaxPathLen", name: "MaxPathLen", anonymous: false, exported: true, typ: $Int, tag: ""}, {prop: "MaxPathLenZero", name: "MaxPathLenZero", anonymous: false, exported: true, typ: $Bool, tag: ""}, {prop: "SubjectKeyId", name: "SubjectKeyId", anonymous: false, exported: true, typ: sliceType$4, tag: ""}, {prop: "AuthorityKeyId", name: "AuthorityKeyId", anonymous: false, exported: true, typ: sliceType$4, tag: ""}, {prop: "OCSPServer", name: "OCSPServer", anonymous: false, exported: true, typ: sliceType$1, tag: ""}, {prop: "IssuingCertificateURL", name: "IssuingCertificateURL", anonymous: false, exported: true, typ: sliceType$1, tag: ""}, {prop: "DNSNames", name: "DNSNames", anonymous: false, exported: true, typ: sliceType$1, tag: ""}, {prop: "EmailAddresses", name: "EmailAddresses", anonymous: false, exported: true, typ: sliceType$1, tag: ""}, {prop: "IPAddresses", name: "IPAddresses", anonymous: false, exported: true, typ: sliceType$14, tag: ""}, {prop: "URIs", name: "URIs", anonymous: false, exported: true, typ: sliceType$15, tag: ""}, {prop: "PermittedDNSDomainsCritical", name: "PermittedDNSDomainsCritical", anonymous: false, exported: true, typ: $Bool, tag: ""}, {prop: "PermittedDNSDomains", name: "PermittedDNSDomains", anonymous: false, exported: true, typ: sliceType$1, tag: ""}, {prop: "ExcludedDNSDomains", name: "ExcludedDNSDomains", anonymous: false, exported: true, typ: sliceType$1, tag: ""}, {prop: "PermittedIPRanges", name: "PermittedIPRanges", anonymous: false, exported: true, typ: sliceType$16, tag: ""}, {prop: "ExcludedIPRanges", name: "ExcludedIPRanges", anonymous: false, exported: true, typ: sliceType$16, tag: ""}, {prop: "PermittedEmailAddresses", name: "PermittedEmailAddresses", anonymous: false, exported: true, typ: sliceType$1, tag: ""}, {prop: "ExcludedEmailAddresses", name: "ExcludedEmailAddresses", anonymous: false, exported: true, typ: sliceType$1, tag: ""}, {prop: "PermittedURIDomains", name: "PermittedURIDomains", anonymous: false, exported: true, typ: sliceType$1, tag: ""}, {prop: "ExcludedURIDomains", name: "ExcludedURIDomains", anonymous: false, exported: true, typ: sliceType$1, tag: ""}, {prop: "CRLDistributionPoints", name: "CRLDistributionPoints", anonymous: false, exported: true, typ: sliceType$1, tag: ""}, {prop: "PolicyIdentifiers", name: "PolicyIdentifiers", anonymous: false, exported: true, typ: sliceType$19, tag: ""}]);
 73168  	ConstraintViolationError.init("", []);
 73169  	UnhandledCriticalExtension.init("", []);
 73170  	basicConstraints.init("", [{prop: "IsCA", name: "IsCA", anonymous: false, exported: true, typ: $Bool, tag: "asn1:\"optional\""}, {prop: "MaxPathLen", name: "MaxPathLen", anonymous: false, exported: true, typ: $Int, tag: "asn1:\"optional,default:-1\""}]);
 73171  	policyInformation.init("", [{prop: "Policy", name: "Policy", anonymous: false, exported: true, typ: asn1.ObjectIdentifier, tag: ""}]);
 73172  	authorityInfoAccess.init("", [{prop: "Method", name: "Method", anonymous: false, exported: true, typ: asn1.ObjectIdentifier, tag: ""}, {prop: "Location", name: "Location", anonymous: false, exported: true, typ: asn1.RawValue, tag: ""}]);
 73173  	distributionPoint.init("", [{prop: "DistributionPoint", name: "DistributionPoint", anonymous: false, exported: true, typ: distributionPointName, tag: "asn1:\"optional,tag:0\""}, {prop: "Reason", name: "Reason", anonymous: false, exported: true, typ: asn1.BitString, tag: "asn1:\"optional,tag:1\""}, {prop: "CRLIssuer", name: "CRLIssuer", anonymous: false, exported: true, typ: asn1.RawValue, tag: "asn1:\"optional,tag:2\""}]);
 73174  	distributionPointName.init("", [{prop: "FullName", name: "FullName", anonymous: false, exported: true, typ: sliceType$24, tag: "asn1:\"optional,tag:0\""}, {prop: "RelativeName", name: "RelativeName", anonymous: false, exported: true, typ: pkix.RDNSequence, tag: "asn1:\"optional,tag:1\""}]);
 73175  	$init = function() {
 73176  		$pkg.$init = function() {};
 73177  		/* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 73178  		$r = bytes.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 73179  		$r = crypto.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 73180  		$r = aes.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 73181  		$r = cipher.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 73182  		$r = des.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 73183  		$r = dsa.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 73184  		$r = ecdsa.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 73185  		$r = elliptic.$init(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 73186  		$r = md5.$init(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 73187  		$r = rsa.$init(); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 73188  		$r = sha1.$init(); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 73189  		$r = sha256.$init(); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 73190  		$r = sha512.$init(); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 73191  		$r = pkix.$init(); /* */ $s = 14; case 14: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 73192  		$r = asn1.$init(); /* */ $s = 15; case 15: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 73193  		$r = hex.$init(); /* */ $s = 16; case 16: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 73194  		$r = pem.$init(); /* */ $s = 17; case 17: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 73195  		$r = errors.$init(); /* */ $s = 18; case 18: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 73196  		$r = fmt.$init(); /* */ $s = 19; case 19: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 73197  		$r = io.$init(); /* */ $s = 20; case 20: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 73198  		$r = ioutil.$init(); /* */ $s = 21; case 21: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 73199  		$r = big.$init(); /* */ $s = 22; case 22: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 73200  		$r = net.$init(); /* */ $s = 23; case 23: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 73201  		$r = url.$init(); /* */ $s = 24; case 24: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 73202  		$r = os.$init(); /* */ $s = 25; case 25: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 73203  		$r = reflect.$init(); /* */ $s = 26; case 26: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 73204  		$r = runtime.$init(); /* */ $s = 27; case 27: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 73205  		$r = strconv.$init(); /* */ $s = 28; case 28: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 73206  		$r = strings.$init(); /* */ $s = 29; case 29: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 73207  		$r = sync.$init(); /* */ $s = 30; case 30: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 73208  		$r = time.$init(); /* */ $s = 31; case 31: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 73209  		$r = utf8.$init(); /* */ $s = 32; case 32: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 73210  		$r = cryptobyte.$init(); /* */ $s = 33; case 33: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 73211  		$r = asn1$1.$init(); /* */ $s = 34; case 34: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 73212  		once = new sync.Once.ptr(new sync.Mutex.ptr(0, 0), 0);
 73213  		systemRoots = ptrType.nil;
 73214  		systemRootsErr = $ifaceNil;
 73215  		$pkg.IncorrectPasswordError = errors.New("x509: decryption password incorrect");
 73216  		errNotParsed = errors.New("x509: missing ASN.1 contents; use ParseCertificate");
 73217  		publicKeyAlgoName = $toNativeArray($kindString, ["", "RSA", "DSA", "ECDSA"]);
 73218  		oidSignatureMD2WithRSA = new asn1.ObjectIdentifier([1, 2, 840, 113549, 1, 1, 2]);
 73219  		oidSignatureMD5WithRSA = new asn1.ObjectIdentifier([1, 2, 840, 113549, 1, 1, 4]);
 73220  		oidSignatureSHA1WithRSA = new asn1.ObjectIdentifier([1, 2, 840, 113549, 1, 1, 5]);
 73221  		oidSignatureSHA256WithRSA = new asn1.ObjectIdentifier([1, 2, 840, 113549, 1, 1, 11]);
 73222  		oidSignatureSHA384WithRSA = new asn1.ObjectIdentifier([1, 2, 840, 113549, 1, 1, 12]);
 73223  		oidSignatureSHA512WithRSA = new asn1.ObjectIdentifier([1, 2, 840, 113549, 1, 1, 13]);
 73224  		oidSignatureRSAPSS = new asn1.ObjectIdentifier([1, 2, 840, 113549, 1, 1, 10]);
 73225  		oidSignatureDSAWithSHA1 = new asn1.ObjectIdentifier([1, 2, 840, 10040, 4, 3]);
 73226  		oidSignatureDSAWithSHA256 = new asn1.ObjectIdentifier([2, 16, 840, 1, 101, 3, 4, 3, 2]);
 73227  		oidSignatureECDSAWithSHA1 = new asn1.ObjectIdentifier([1, 2, 840, 10045, 4, 1]);
 73228  		oidSignatureECDSAWithSHA256 = new asn1.ObjectIdentifier([1, 2, 840, 10045, 4, 3, 2]);
 73229  		oidSignatureECDSAWithSHA384 = new asn1.ObjectIdentifier([1, 2, 840, 10045, 4, 3, 3]);
 73230  		oidSignatureECDSAWithSHA512 = new asn1.ObjectIdentifier([1, 2, 840, 10045, 4, 3, 4]);
 73231  		oidSHA256 = new asn1.ObjectIdentifier([2, 16, 840, 1, 101, 3, 4, 2, 1]);
 73232  		oidSHA384 = new asn1.ObjectIdentifier([2, 16, 840, 1, 101, 3, 4, 2, 2]);
 73233  		oidSHA512 = new asn1.ObjectIdentifier([2, 16, 840, 1, 101, 3, 4, 2, 3]);
 73234  		oidMGF1 = new asn1.ObjectIdentifier([1, 2, 840, 113549, 1, 1, 8]);
 73235  		oidISOSignatureSHA1WithRSA = new asn1.ObjectIdentifier([1, 3, 14, 3, 2, 29]);
 73236  		signatureAlgorithmDetails = new sliceType$2([new structType.ptr(1, "MD2-RSA", oidSignatureMD2WithRSA, 1, 0), new structType.ptr(2, "MD5-RSA", oidSignatureMD5WithRSA, 1, 2), new structType.ptr(3, "SHA1-RSA", oidSignatureSHA1WithRSA, 1, 3), new structType.ptr(3, "SHA1-RSA", oidISOSignatureSHA1WithRSA, 1, 3), new structType.ptr(4, "SHA256-RSA", oidSignatureSHA256WithRSA, 1, 5), new structType.ptr(5, "SHA384-RSA", oidSignatureSHA384WithRSA, 1, 6), new structType.ptr(6, "SHA512-RSA", oidSignatureSHA512WithRSA, 1, 7), new structType.ptr(13, "SHA256-RSAPSS", oidSignatureRSAPSS, 1, 5), new structType.ptr(14, "SHA384-RSAPSS", oidSignatureRSAPSS, 1, 6), new structType.ptr(15, "SHA512-RSAPSS", oidSignatureRSAPSS, 1, 7), new structType.ptr(7, "DSA-SHA1", oidSignatureDSAWithSHA1, 2, 3), new structType.ptr(8, "DSA-SHA256", oidSignatureDSAWithSHA256, 2, 5), new structType.ptr(9, "ECDSA-SHA1", oidSignatureECDSAWithSHA1, 3, 3), new structType.ptr(10, "ECDSA-SHA256", oidSignatureECDSAWithSHA256, 3, 5), new structType.ptr(11, "ECDSA-SHA384", oidSignatureECDSAWithSHA384, 3, 6), new structType.ptr(12, "ECDSA-SHA512", oidSignatureECDSAWithSHA512, 3, 7)]);
 73237  		oidPublicKeyRSA = new asn1.ObjectIdentifier([1, 2, 840, 113549, 1, 1, 1]);
 73238  		oidPublicKeyDSA = new asn1.ObjectIdentifier([1, 2, 840, 10040, 4, 1]);
 73239  		oidPublicKeyECDSA = new asn1.ObjectIdentifier([1, 2, 840, 10045, 2, 1]);
 73240  		oidNamedCurveP224 = new asn1.ObjectIdentifier([1, 3, 132, 0, 33]);
 73241  		oidNamedCurveP256 = new asn1.ObjectIdentifier([1, 2, 840, 10045, 3, 1, 7]);
 73242  		oidNamedCurveP384 = new asn1.ObjectIdentifier([1, 3, 132, 0, 34]);
 73243  		oidNamedCurveP521 = new asn1.ObjectIdentifier([1, 3, 132, 0, 35]);
 73244  		oidExtKeyUsageAny = new asn1.ObjectIdentifier([2, 5, 29, 37, 0]);
 73245  		oidExtKeyUsageServerAuth = new asn1.ObjectIdentifier([1, 3, 6, 1, 5, 5, 7, 3, 1]);
 73246  		oidExtKeyUsageClientAuth = new asn1.ObjectIdentifier([1, 3, 6, 1, 5, 5, 7, 3, 2]);
 73247  		oidExtKeyUsageCodeSigning = new asn1.ObjectIdentifier([1, 3, 6, 1, 5, 5, 7, 3, 3]);
 73248  		oidExtKeyUsageEmailProtection = new asn1.ObjectIdentifier([1, 3, 6, 1, 5, 5, 7, 3, 4]);
 73249  		oidExtKeyUsageIPSECEndSystem = new asn1.ObjectIdentifier([1, 3, 6, 1, 5, 5, 7, 3, 5]);
 73250  		oidExtKeyUsageIPSECTunnel = new asn1.ObjectIdentifier([1, 3, 6, 1, 5, 5, 7, 3, 6]);
 73251  		oidExtKeyUsageIPSECUser = new asn1.ObjectIdentifier([1, 3, 6, 1, 5, 5, 7, 3, 7]);
 73252  		oidExtKeyUsageTimeStamping = new asn1.ObjectIdentifier([1, 3, 6, 1, 5, 5, 7, 3, 8]);
 73253  		oidExtKeyUsageOCSPSigning = new asn1.ObjectIdentifier([1, 3, 6, 1, 5, 5, 7, 3, 9]);
 73254  		oidExtKeyUsageMicrosoftServerGatedCrypto = new asn1.ObjectIdentifier([1, 3, 6, 1, 4, 1, 311, 10, 3, 3]);
 73255  		oidExtKeyUsageNetscapeServerGatedCrypto = new asn1.ObjectIdentifier([2, 16, 840, 1, 113730, 4, 1]);
 73256  		oidExtKeyUsageMicrosoftCommercialCodeSigning = new asn1.ObjectIdentifier([1, 3, 6, 1, 4, 1, 311, 2, 1, 22]);
 73257  		oidExtKeyUsageMicrosoftKernelCodeSigning = new asn1.ObjectIdentifier([1, 3, 6, 1, 4, 1, 311, 61, 1, 1]);
 73258  		extKeyUsageOIDs = new sliceType$3([new structType$1.ptr(0, oidExtKeyUsageAny), new structType$1.ptr(1, oidExtKeyUsageServerAuth), new structType$1.ptr(2, oidExtKeyUsageClientAuth), new structType$1.ptr(3, oidExtKeyUsageCodeSigning), new structType$1.ptr(4, oidExtKeyUsageEmailProtection), new structType$1.ptr(5, oidExtKeyUsageIPSECEndSystem), new structType$1.ptr(6, oidExtKeyUsageIPSECTunnel), new structType$1.ptr(7, oidExtKeyUsageIPSECUser), new structType$1.ptr(8, oidExtKeyUsageTimeStamping), new structType$1.ptr(9, oidExtKeyUsageOCSPSigning), new structType$1.ptr(10, oidExtKeyUsageMicrosoftServerGatedCrypto), new structType$1.ptr(11, oidExtKeyUsageNetscapeServerGatedCrypto), new structType$1.ptr(12, oidExtKeyUsageMicrosoftCommercialCodeSigning), new structType$1.ptr(13, oidExtKeyUsageMicrosoftKernelCodeSigning)]);
 73259  		$pkg.ErrUnsupportedAlgorithm = errors.New("x509: cannot verify signature: algorithm unimplemented");
 73260  		entrustBrokenSPKI = new sliceType$4([48, 130, 1, 34, 48, 13, 6, 9, 42, 134, 72, 134, 247, 13, 1, 1, 1, 5, 0, 3, 130, 1, 15, 0, 48, 130, 1, 10, 2, 130, 1, 1, 0, 151, 163, 45, 60, 158, 222, 5, 218, 19, 194, 17, 141, 157, 142, 227, 127, 199, 75, 126, 90, 159, 179, 255, 98, 171, 115, 200, 40, 107, 186, 16, 100, 130, 135, 19, 205, 87, 24, 255, 40, 206, 192, 230, 14, 6, 145, 80, 41, 131, 209, 242, 195, 42, 219, 216, 219, 78, 4, 204, 0, 235, 139, 182, 150, 220, 188, 170, 250, 82, 119, 4, 193, 219, 25, 228, 174, 156, 253, 60, 139, 3, 239, 77, 188, 26, 3, 101, 249, 193, 177, 63, 114, 134, 242, 56, 170, 25, 174, 16, 136, 120, 40, 218, 117, 195, 61, 2, 130, 2, 156, 185, 193, 101, 119, 118, 36, 76, 152, 247, 109, 49, 56, 251, 219, 254, 219, 55, 2, 118, 161, 24, 151, 166, 204, 222, 32, 9, 73, 54, 36, 105, 66, 246, 228, 55, 98, 241, 89, 109, 169, 60, 237, 52, 156, 163, 142, 219, 220, 58, 215, 247, 10, 111, 239, 46, 216, 213, 147, 90, 122, 237, 8, 73, 104, 226, 65, 227, 90, 144, 193, 134, 85, 252, 81, 67, 157, 224, 178, 196, 103, 180, 203, 50, 49, 37, 240, 84, 159, 75, 209, 111, 219, 212, 221, 252, 175, 94, 108, 120, 144, 149, 222, 202, 58, 72, 185, 121, 60, 155, 25, 214, 117, 5, 160, 249, 136, 215, 193, 232, 165, 9, 228, 26, 21, 220, 135, 35, 170, 178, 117, 140, 99, 37, 135, 216, 248, 61, 166, 194, 204, 102, 255, 165, 102, 104, 85, 2, 3, 1, 0, 1]);
 73261  		oidExtensionAuthorityKeyId = new sliceType$5([2, 5, 29, 35]);
 73262  		oidExtensionSubjectAltName = new sliceType$5([2, 5, 29, 17]);
 73263  		oidExtensionAuthorityInfoAccess = new sliceType$5([1, 3, 6, 1, 5, 5, 7, 1, 1]);
 73264  		oidAuthorityInfoAccessOcsp = new asn1.ObjectIdentifier([1, 3, 6, 1, 5, 5, 7, 48, 1]);
 73265  		oidAuthorityInfoAccessIssuers = new asn1.ObjectIdentifier([1, 3, 6, 1, 5, 5, 7, 48, 2]);
 73266  		/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
 73267  	};
 73268  	$pkg.$init = $init;
 73269  	return $pkg;
 73270  })();
 73271  $packages["vendor/golang_org/x/crypto/chacha20poly1305/internal/chacha20"] = (function() {
 73272  	var $pkg = {}, $init, binary, sliceType, arrayType, arrayType$1, core, XORKeyStream;
 73273  	binary = $packages["encoding/binary"];
 73274  	sliceType = $sliceType($Uint8);
 73275  	arrayType = $arrayType($Uint8, 64);
 73276  	arrayType$1 = $arrayType($Uint8, 16);
 73277  	core = function(out, in$1, k) {
 73278  		var _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$14, _tmp$15, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, i, in$1, j0, j1, j10, j11, j12, j13, j14, j15, j2, j3, j4, j5, j6, j7, j8, j9, k, out, x0, x1, x10, x11, x12, x13, x14, x15, x2, x3, x4, x5, x6, x7, x8, x9;
 73279  		j0 = 1634760805;
 73280  		j1 = 857760878;
 73281  		j2 = 2036477234;
 73282  		j3 = 1797285236;
 73283  		j4 = $clone(binary.LittleEndian, binary.littleEndian).Uint32($subslice(new sliceType(k), 0, 4));
 73284  		j5 = $clone(binary.LittleEndian, binary.littleEndian).Uint32($subslice(new sliceType(k), 4, 8));
 73285  		j6 = $clone(binary.LittleEndian, binary.littleEndian).Uint32($subslice(new sliceType(k), 8, 12));
 73286  		j7 = $clone(binary.LittleEndian, binary.littleEndian).Uint32($subslice(new sliceType(k), 12, 16));
 73287  		j8 = $clone(binary.LittleEndian, binary.littleEndian).Uint32($subslice(new sliceType(k), 16, 20));
 73288  		j9 = $clone(binary.LittleEndian, binary.littleEndian).Uint32($subslice(new sliceType(k), 20, 24));
 73289  		j10 = $clone(binary.LittleEndian, binary.littleEndian).Uint32($subslice(new sliceType(k), 24, 28));
 73290  		j11 = $clone(binary.LittleEndian, binary.littleEndian).Uint32($subslice(new sliceType(k), 28, 32));
 73291  		j12 = $clone(binary.LittleEndian, binary.littleEndian).Uint32($subslice(new sliceType(in$1), 0, 4));
 73292  		j13 = $clone(binary.LittleEndian, binary.littleEndian).Uint32($subslice(new sliceType(in$1), 4, 8));
 73293  		j14 = $clone(binary.LittleEndian, binary.littleEndian).Uint32($subslice(new sliceType(in$1), 8, 12));
 73294  		j15 = $clone(binary.LittleEndian, binary.littleEndian).Uint32($subslice(new sliceType(in$1), 12, 16));
 73295  		_tmp = j0;
 73296  		_tmp$1 = j1;
 73297  		_tmp$2 = j2;
 73298  		_tmp$3 = j3;
 73299  		_tmp$4 = j4;
 73300  		_tmp$5 = j5;
 73301  		_tmp$6 = j6;
 73302  		_tmp$7 = j7;
 73303  		x0 = _tmp;
 73304  		x1 = _tmp$1;
 73305  		x2 = _tmp$2;
 73306  		x3 = _tmp$3;
 73307  		x4 = _tmp$4;
 73308  		x5 = _tmp$5;
 73309  		x6 = _tmp$6;
 73310  		x7 = _tmp$7;
 73311  		_tmp$8 = j8;
 73312  		_tmp$9 = j9;
 73313  		_tmp$10 = j10;
 73314  		_tmp$11 = j11;
 73315  		_tmp$12 = j12;
 73316  		_tmp$13 = j13;
 73317  		_tmp$14 = j14;
 73318  		_tmp$15 = j15;
 73319  		x8 = _tmp$8;
 73320  		x9 = _tmp$9;
 73321  		x10 = _tmp$10;
 73322  		x11 = _tmp$11;
 73323  		x12 = _tmp$12;
 73324  		x13 = _tmp$13;
 73325  		x14 = _tmp$14;
 73326  		x15 = _tmp$15;
 73327  		i = 0;
 73328  		while (true) {
 73329  			if (!(i < 20)) { break; }
 73330  			x0 = x0 + (x4) >>> 0;
 73331  			x12 = (x12 ^ (x0)) >>> 0;
 73332  			x12 = (((x12 << 16 >>> 0)) | ((x12 >>> 16 >>> 0))) >>> 0;
 73333  			x8 = x8 + (x12) >>> 0;
 73334  			x4 = (x4 ^ (x8)) >>> 0;
 73335  			x4 = (((x4 << 12 >>> 0)) | ((x4 >>> 20 >>> 0))) >>> 0;
 73336  			x0 = x0 + (x4) >>> 0;
 73337  			x12 = (x12 ^ (x0)) >>> 0;
 73338  			x12 = (((x12 << 8 >>> 0)) | ((x12 >>> 24 >>> 0))) >>> 0;
 73339  			x8 = x8 + (x12) >>> 0;
 73340  			x4 = (x4 ^ (x8)) >>> 0;
 73341  			x4 = (((x4 << 7 >>> 0)) | ((x4 >>> 25 >>> 0))) >>> 0;
 73342  			x1 = x1 + (x5) >>> 0;
 73343  			x13 = (x13 ^ (x1)) >>> 0;
 73344  			x13 = (((x13 << 16 >>> 0)) | ((x13 >>> 16 >>> 0))) >>> 0;
 73345  			x9 = x9 + (x13) >>> 0;
 73346  			x5 = (x5 ^ (x9)) >>> 0;
 73347  			x5 = (((x5 << 12 >>> 0)) | ((x5 >>> 20 >>> 0))) >>> 0;
 73348  			x1 = x1 + (x5) >>> 0;
 73349  			x13 = (x13 ^ (x1)) >>> 0;
 73350  			x13 = (((x13 << 8 >>> 0)) | ((x13 >>> 24 >>> 0))) >>> 0;
 73351  			x9 = x9 + (x13) >>> 0;
 73352  			x5 = (x5 ^ (x9)) >>> 0;
 73353  			x5 = (((x5 << 7 >>> 0)) | ((x5 >>> 25 >>> 0))) >>> 0;
 73354  			x2 = x2 + (x6) >>> 0;
 73355  			x14 = (x14 ^ (x2)) >>> 0;
 73356  			x14 = (((x14 << 16 >>> 0)) | ((x14 >>> 16 >>> 0))) >>> 0;
 73357  			x10 = x10 + (x14) >>> 0;
 73358  			x6 = (x6 ^ (x10)) >>> 0;
 73359  			x6 = (((x6 << 12 >>> 0)) | ((x6 >>> 20 >>> 0))) >>> 0;
 73360  			x2 = x2 + (x6) >>> 0;
 73361  			x14 = (x14 ^ (x2)) >>> 0;
 73362  			x14 = (((x14 << 8 >>> 0)) | ((x14 >>> 24 >>> 0))) >>> 0;
 73363  			x10 = x10 + (x14) >>> 0;
 73364  			x6 = (x6 ^ (x10)) >>> 0;
 73365  			x6 = (((x6 << 7 >>> 0)) | ((x6 >>> 25 >>> 0))) >>> 0;
 73366  			x3 = x3 + (x7) >>> 0;
 73367  			x15 = (x15 ^ (x3)) >>> 0;
 73368  			x15 = (((x15 << 16 >>> 0)) | ((x15 >>> 16 >>> 0))) >>> 0;
 73369  			x11 = x11 + (x15) >>> 0;
 73370  			x7 = (x7 ^ (x11)) >>> 0;
 73371  			x7 = (((x7 << 12 >>> 0)) | ((x7 >>> 20 >>> 0))) >>> 0;
 73372  			x3 = x3 + (x7) >>> 0;
 73373  			x15 = (x15 ^ (x3)) >>> 0;
 73374  			x15 = (((x15 << 8 >>> 0)) | ((x15 >>> 24 >>> 0))) >>> 0;
 73375  			x11 = x11 + (x15) >>> 0;
 73376  			x7 = (x7 ^ (x11)) >>> 0;
 73377  			x7 = (((x7 << 7 >>> 0)) | ((x7 >>> 25 >>> 0))) >>> 0;
 73378  			x0 = x0 + (x5) >>> 0;
 73379  			x15 = (x15 ^ (x0)) >>> 0;
 73380  			x15 = (((x15 << 16 >>> 0)) | ((x15 >>> 16 >>> 0))) >>> 0;
 73381  			x10 = x10 + (x15) >>> 0;
 73382  			x5 = (x5 ^ (x10)) >>> 0;
 73383  			x5 = (((x5 << 12 >>> 0)) | ((x5 >>> 20 >>> 0))) >>> 0;
 73384  			x0 = x0 + (x5) >>> 0;
 73385  			x15 = (x15 ^ (x0)) >>> 0;
 73386  			x15 = (((x15 << 8 >>> 0)) | ((x15 >>> 24 >>> 0))) >>> 0;
 73387  			x10 = x10 + (x15) >>> 0;
 73388  			x5 = (x5 ^ (x10)) >>> 0;
 73389  			x5 = (((x5 << 7 >>> 0)) | ((x5 >>> 25 >>> 0))) >>> 0;
 73390  			x1 = x1 + (x6) >>> 0;
 73391  			x12 = (x12 ^ (x1)) >>> 0;
 73392  			x12 = (((x12 << 16 >>> 0)) | ((x12 >>> 16 >>> 0))) >>> 0;
 73393  			x11 = x11 + (x12) >>> 0;
 73394  			x6 = (x6 ^ (x11)) >>> 0;
 73395  			x6 = (((x6 << 12 >>> 0)) | ((x6 >>> 20 >>> 0))) >>> 0;
 73396  			x1 = x1 + (x6) >>> 0;
 73397  			x12 = (x12 ^ (x1)) >>> 0;
 73398  			x12 = (((x12 << 8 >>> 0)) | ((x12 >>> 24 >>> 0))) >>> 0;
 73399  			x11 = x11 + (x12) >>> 0;
 73400  			x6 = (x6 ^ (x11)) >>> 0;
 73401  			x6 = (((x6 << 7 >>> 0)) | ((x6 >>> 25 >>> 0))) >>> 0;
 73402  			x2 = x2 + (x7) >>> 0;
 73403  			x13 = (x13 ^ (x2)) >>> 0;
 73404  			x13 = (((x13 << 16 >>> 0)) | ((x13 >>> 16 >>> 0))) >>> 0;
 73405  			x8 = x8 + (x13) >>> 0;
 73406  			x7 = (x7 ^ (x8)) >>> 0;
 73407  			x7 = (((x7 << 12 >>> 0)) | ((x7 >>> 20 >>> 0))) >>> 0;
 73408  			x2 = x2 + (x7) >>> 0;
 73409  			x13 = (x13 ^ (x2)) >>> 0;
 73410  			x13 = (((x13 << 8 >>> 0)) | ((x13 >>> 24 >>> 0))) >>> 0;
 73411  			x8 = x8 + (x13) >>> 0;
 73412  			x7 = (x7 ^ (x8)) >>> 0;
 73413  			x7 = (((x7 << 7 >>> 0)) | ((x7 >>> 25 >>> 0))) >>> 0;
 73414  			x3 = x3 + (x4) >>> 0;
 73415  			x14 = (x14 ^ (x3)) >>> 0;
 73416  			x14 = (((x14 << 16 >>> 0)) | ((x14 >>> 16 >>> 0))) >>> 0;
 73417  			x9 = x9 + (x14) >>> 0;
 73418  			x4 = (x4 ^ (x9)) >>> 0;
 73419  			x4 = (((x4 << 12 >>> 0)) | ((x4 >>> 20 >>> 0))) >>> 0;
 73420  			x3 = x3 + (x4) >>> 0;
 73421  			x14 = (x14 ^ (x3)) >>> 0;
 73422  			x14 = (((x14 << 8 >>> 0)) | ((x14 >>> 24 >>> 0))) >>> 0;
 73423  			x9 = x9 + (x14) >>> 0;
 73424  			x4 = (x4 ^ (x9)) >>> 0;
 73425  			x4 = (((x4 << 7 >>> 0)) | ((x4 >>> 25 >>> 0))) >>> 0;
 73426  			i = i + (2) >> 0;
 73427  		}
 73428  		x0 = x0 + (j0) >>> 0;
 73429  		x1 = x1 + (j1) >>> 0;
 73430  		x2 = x2 + (j2) >>> 0;
 73431  		x3 = x3 + (j3) >>> 0;
 73432  		x4 = x4 + (j4) >>> 0;
 73433  		x5 = x5 + (j5) >>> 0;
 73434  		x6 = x6 + (j6) >>> 0;
 73435  		x7 = x7 + (j7) >>> 0;
 73436  		x8 = x8 + (j8) >>> 0;
 73437  		x9 = x9 + (j9) >>> 0;
 73438  		x10 = x10 + (j10) >>> 0;
 73439  		x11 = x11 + (j11) >>> 0;
 73440  		x12 = x12 + (j12) >>> 0;
 73441  		x13 = x13 + (j13) >>> 0;
 73442  		x14 = x14 + (j14) >>> 0;
 73443  		x15 = x15 + (j15) >>> 0;
 73444  		$clone(binary.LittleEndian, binary.littleEndian).PutUint32($subslice(new sliceType(out), 0, 4), x0);
 73445  		$clone(binary.LittleEndian, binary.littleEndian).PutUint32($subslice(new sliceType(out), 4, 8), x1);
 73446  		$clone(binary.LittleEndian, binary.littleEndian).PutUint32($subslice(new sliceType(out), 8, 12), x2);
 73447  		$clone(binary.LittleEndian, binary.littleEndian).PutUint32($subslice(new sliceType(out), 12, 16), x3);
 73448  		$clone(binary.LittleEndian, binary.littleEndian).PutUint32($subslice(new sliceType(out), 16, 20), x4);
 73449  		$clone(binary.LittleEndian, binary.littleEndian).PutUint32($subslice(new sliceType(out), 20, 24), x5);
 73450  		$clone(binary.LittleEndian, binary.littleEndian).PutUint32($subslice(new sliceType(out), 24, 28), x6);
 73451  		$clone(binary.LittleEndian, binary.littleEndian).PutUint32($subslice(new sliceType(out), 28, 32), x7);
 73452  		$clone(binary.LittleEndian, binary.littleEndian).PutUint32($subslice(new sliceType(out), 32, 36), x8);
 73453  		$clone(binary.LittleEndian, binary.littleEndian).PutUint32($subslice(new sliceType(out), 36, 40), x9);
 73454  		$clone(binary.LittleEndian, binary.littleEndian).PutUint32($subslice(new sliceType(out), 40, 44), x10);
 73455  		$clone(binary.LittleEndian, binary.littleEndian).PutUint32($subslice(new sliceType(out), 44, 48), x11);
 73456  		$clone(binary.LittleEndian, binary.littleEndian).PutUint32($subslice(new sliceType(out), 48, 52), x12);
 73457  		$clone(binary.LittleEndian, binary.littleEndian).PutUint32($subslice(new sliceType(out), 52, 56), x13);
 73458  		$clone(binary.LittleEndian, binary.littleEndian).PutUint32($subslice(new sliceType(out), 56, 60), x14);
 73459  		$clone(binary.LittleEndian, binary.littleEndian).PutUint32($subslice(new sliceType(out), 60, 64), x15);
 73460  	};
 73461  	XORKeyStream = function(out, in$1, counter, key) {
 73462  		var _i, _i$1, _ref, _ref$1, block, counter, counterCopy, i, i$1, i$2, in$1, key, out, u, v, x, y;
 73463  		block = arrayType.zero();
 73464  		counterCopy = arrayType$1.zero();
 73465  		$copySlice(new sliceType(counterCopy), new sliceType(counter));
 73466  		while (true) {
 73467  			if (!(in$1.$length >= 64)) { break; }
 73468  			core(block, counterCopy, key);
 73469  			_ref = block;
 73470  			_i = 0;
 73471  			while (true) {
 73472  				if (!(_i < 64)) { break; }
 73473  				i = _i;
 73474  				x = ((_i < 0 || _i >= _ref.length) ? ($throwRuntimeError("index out of range"), undefined) : _ref[_i]);
 73475  				((i < 0 || i >= out.$length) ? ($throwRuntimeError("index out of range"), undefined) : out.$array[out.$offset + i] = ((((i < 0 || i >= in$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : in$1.$array[in$1.$offset + i]) ^ x) << 24 >>> 24));
 73476  				_i++;
 73477  			}
 73478  			u = 1;
 73479  			i$1 = 0;
 73480  			while (true) {
 73481  				if (!(i$1 < 4)) { break; }
 73482  				u = u + (((((i$1 < 0 || i$1 >= counterCopy.length) ? ($throwRuntimeError("index out of range"), undefined) : counterCopy[i$1]) >>> 0))) >>> 0;
 73483  				((i$1 < 0 || i$1 >= counterCopy.length) ? ($throwRuntimeError("index out of range"), undefined) : counterCopy[i$1] = ((u << 24 >>> 24)));
 73484  				u = (y = (8), y < 32 ? (u >>> y) : 0) >>> 0;
 73485  				i$1 = i$1 + (1) >> 0;
 73486  			}
 73487  			in$1 = $subslice(in$1, 64);
 73488  			out = $subslice(out, 64);
 73489  		}
 73490  		if (in$1.$length > 0) {
 73491  			core(block, counterCopy, key);
 73492  			_ref$1 = in$1;
 73493  			_i$1 = 0;
 73494  			while (true) {
 73495  				if (!(_i$1 < _ref$1.$length)) { break; }
 73496  				i$2 = _i$1;
 73497  				v = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]);
 73498  				((i$2 < 0 || i$2 >= out.$length) ? ($throwRuntimeError("index out of range"), undefined) : out.$array[out.$offset + i$2] = ((v ^ ((i$2 < 0 || i$2 >= block.length) ? ($throwRuntimeError("index out of range"), undefined) : block[i$2])) << 24 >>> 24));
 73499  				_i$1++;
 73500  			}
 73501  		}
 73502  	};
 73503  	$pkg.XORKeyStream = XORKeyStream;
 73504  	$init = function() {
 73505  		$pkg.$init = function() {};
 73506  		/* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 73507  		$r = binary.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 73508  		/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
 73509  	};
 73510  	$pkg.$init = $init;
 73511  	return $pkg;
 73512  })();
 73513  $packages["vendor/golang_org/x/crypto/poly1305"] = (function() {
 73514  	var $pkg = {}, $init, subtle, binary, arrayType, sliceType, Verify, Sum;
 73515  	subtle = $packages["crypto/subtle"];
 73516  	binary = $packages["encoding/binary"];
 73517  	arrayType = $arrayType($Uint8, 16);
 73518  	sliceType = $sliceType($Uint8);
 73519  	Verify = function(mac, m, key) {
 73520  		var key, m, mac, tmp;
 73521  		tmp = arrayType.zero();
 73522  		Sum(tmp, m, key);
 73523  		return subtle.ConstantTimeCompare(new sliceType(tmp), new sliceType(mac)) === 1;
 73524  	};
 73525  	$pkg.Verify = Verify;
 73526  	Sum = function(out, msg, key) {
 73527  		var R1, R2, R3, R4, _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, block, d0, d0$1, d1, d1$1, d2, d2$1, d3, d3$1, d4, d4$1, h0, h1, h2, h3, h4, h_mask, key, msg, off, out, r0, r1, r2, r3, r4, t, t0, t1, t2, t3, t4, t_mask, x, x$1, x$10, x$100, x$101, x$102, x$103, x$104, x$105, x$106, x$107, x$108, x$109, x$11, x$12, x$13, x$14, x$15, x$16, x$17, x$18, x$19, x$2, x$20, x$21, x$22, x$23, x$24, x$25, x$26, x$27, x$28, x$29, x$3, x$30, x$31, x$32, x$33, x$34, x$35, x$36, x$37, x$38, x$39, x$4, x$40, x$41, x$42, x$43, x$44, x$45, x$46, x$47, x$48, x$49, x$5, x$50, x$51, x$52, x$53, x$54, x$55, x$56, x$57, x$58, x$59, x$6, x$60, x$61, x$62, x$63, x$64, x$65, x$66, x$67, x$68, x$69, x$7, x$70, x$71, x$72, x$73, x$74, x$75, x$76, x$77, x$78, x$79, x$8, x$80, x$81, x$82, x$83, x$84, x$85, x$86, x$87, x$88, x$89, x$9, x$90, x$91, x$92, x$93, x$94, x$95, x$96, x$97, x$98, x$99;
 73528  		_tmp = 0;
 73529  		_tmp$1 = 0;
 73530  		_tmp$2 = 0;
 73531  		_tmp$3 = 0;
 73532  		_tmp$4 = 0;
 73533  		h0 = _tmp;
 73534  		h1 = _tmp$1;
 73535  		h2 = _tmp$2;
 73536  		h3 = _tmp$3;
 73537  		h4 = _tmp$4;
 73538  		_tmp$5 = new $Uint64(0, 0);
 73539  		_tmp$6 = new $Uint64(0, 0);
 73540  		_tmp$7 = new $Uint64(0, 0);
 73541  		_tmp$8 = new $Uint64(0, 0);
 73542  		_tmp$9 = new $Uint64(0, 0);
 73543  		r0 = _tmp$5;
 73544  		r1 = _tmp$6;
 73545  		r2 = _tmp$7;
 73546  		r3 = _tmp$8;
 73547  		r4 = _tmp$9;
 73548  		r0 = (new $Uint64(0, (($clone(binary.LittleEndian, binary.littleEndian).Uint32($subslice(new sliceType(key), 0)) & 67108863) >>> 0)));
 73549  		r1 = (new $Uint64(0, (((($clone(binary.LittleEndian, binary.littleEndian).Uint32($subslice(new sliceType(key), 3)) >>> 2 >>> 0)) & 67108611) >>> 0)));
 73550  		r2 = (new $Uint64(0, (((($clone(binary.LittleEndian, binary.littleEndian).Uint32($subslice(new sliceType(key), 6)) >>> 4 >>> 0)) & 67092735) >>> 0)));
 73551  		r3 = (new $Uint64(0, (((($clone(binary.LittleEndian, binary.littleEndian).Uint32($subslice(new sliceType(key), 9)) >>> 6 >>> 0)) & 66076671) >>> 0)));
 73552  		r4 = (new $Uint64(0, (((($clone(binary.LittleEndian, binary.littleEndian).Uint32($subslice(new sliceType(key), 12)) >>> 8 >>> 0)) & 1048575) >>> 0)));
 73553  		_tmp$10 = $mul64(r1, new $Uint64(0, 5));
 73554  		_tmp$11 = $mul64(r2, new $Uint64(0, 5));
 73555  		_tmp$12 = $mul64(r3, new $Uint64(0, 5));
 73556  		_tmp$13 = $mul64(r4, new $Uint64(0, 5));
 73557  		R1 = _tmp$10;
 73558  		R2 = _tmp$11;
 73559  		R3 = _tmp$12;
 73560  		R4 = _tmp$13;
 73561  		while (true) {
 73562  			if (!(msg.$length >= 16)) { break; }
 73563  			h0 = h0 + ((($clone(binary.LittleEndian, binary.littleEndian).Uint32($subslice(msg, 0)) & 67108863) >>> 0)) >>> 0;
 73564  			h1 = h1 + ((((($clone(binary.LittleEndian, binary.littleEndian).Uint32($subslice(msg, 3)) >>> 2 >>> 0)) & 67108863) >>> 0)) >>> 0;
 73565  			h2 = h2 + ((((($clone(binary.LittleEndian, binary.littleEndian).Uint32($subslice(msg, 6)) >>> 4 >>> 0)) & 67108863) >>> 0)) >>> 0;
 73566  			h3 = h3 + ((((($clone(binary.LittleEndian, binary.littleEndian).Uint32($subslice(msg, 9)) >>> 6 >>> 0)) & 67108863) >>> 0)) >>> 0;
 73567  			h4 = h4 + ((((($clone(binary.LittleEndian, binary.littleEndian).Uint32($subslice(msg, 12)) >>> 8 >>> 0)) | 16777216) >>> 0)) >>> 0;
 73568  			d0 = (x = (x$1 = (x$2 = (x$3 = $mul64((new $Uint64(0, h0)), r0), x$4 = $mul64((new $Uint64(0, h1)), R4), new $Uint64(x$3.$high + x$4.$high, x$3.$low + x$4.$low)), x$5 = $mul64((new $Uint64(0, h2)), R3), new $Uint64(x$2.$high + x$5.$high, x$2.$low + x$5.$low)), x$6 = $mul64((new $Uint64(0, h3)), R2), new $Uint64(x$1.$high + x$6.$high, x$1.$low + x$6.$low)), x$7 = $mul64((new $Uint64(0, h4)), R1), new $Uint64(x.$high + x$7.$high, x.$low + x$7.$low));
 73569  			d1 = (x$8 = (x$9 = (x$10 = (x$11 = (x$12 = $shiftRightUint64(d0, 26), x$13 = $mul64((new $Uint64(0, h0)), r1), new $Uint64(x$12.$high + x$13.$high, x$12.$low + x$13.$low)), x$14 = $mul64((new $Uint64(0, h1)), r0), new $Uint64(x$11.$high + x$14.$high, x$11.$low + x$14.$low)), x$15 = $mul64((new $Uint64(0, h2)), R4), new $Uint64(x$10.$high + x$15.$high, x$10.$low + x$15.$low)), x$16 = $mul64((new $Uint64(0, h3)), R3), new $Uint64(x$9.$high + x$16.$high, x$9.$low + x$16.$low)), x$17 = $mul64((new $Uint64(0, h4)), R2), new $Uint64(x$8.$high + x$17.$high, x$8.$low + x$17.$low));
 73570  			d2 = (x$18 = (x$19 = (x$20 = (x$21 = (x$22 = $shiftRightUint64(d1, 26), x$23 = $mul64((new $Uint64(0, h0)), r2), new $Uint64(x$22.$high + x$23.$high, x$22.$low + x$23.$low)), x$24 = $mul64((new $Uint64(0, h1)), r1), new $Uint64(x$21.$high + x$24.$high, x$21.$low + x$24.$low)), x$25 = $mul64((new $Uint64(0, h2)), r0), new $Uint64(x$20.$high + x$25.$high, x$20.$low + x$25.$low)), x$26 = $mul64((new $Uint64(0, h3)), R4), new $Uint64(x$19.$high + x$26.$high, x$19.$low + x$26.$low)), x$27 = $mul64((new $Uint64(0, h4)), R3), new $Uint64(x$18.$high + x$27.$high, x$18.$low + x$27.$low));
 73571  			d3 = (x$28 = (x$29 = (x$30 = (x$31 = (x$32 = $shiftRightUint64(d2, 26), x$33 = $mul64((new $Uint64(0, h0)), r3), new $Uint64(x$32.$high + x$33.$high, x$32.$low + x$33.$low)), x$34 = $mul64((new $Uint64(0, h1)), r2), new $Uint64(x$31.$high + x$34.$high, x$31.$low + x$34.$low)), x$35 = $mul64((new $Uint64(0, h2)), r1), new $Uint64(x$30.$high + x$35.$high, x$30.$low + x$35.$low)), x$36 = $mul64((new $Uint64(0, h3)), r0), new $Uint64(x$29.$high + x$36.$high, x$29.$low + x$36.$low)), x$37 = $mul64((new $Uint64(0, h4)), R4), new $Uint64(x$28.$high + x$37.$high, x$28.$low + x$37.$low));
 73572  			d4 = (x$38 = (x$39 = (x$40 = (x$41 = (x$42 = $shiftRightUint64(d3, 26), x$43 = $mul64((new $Uint64(0, h0)), r4), new $Uint64(x$42.$high + x$43.$high, x$42.$low + x$43.$low)), x$44 = $mul64((new $Uint64(0, h1)), r3), new $Uint64(x$41.$high + x$44.$high, x$41.$low + x$44.$low)), x$45 = $mul64((new $Uint64(0, h2)), r2), new $Uint64(x$40.$high + x$45.$high, x$40.$low + x$45.$low)), x$46 = $mul64((new $Uint64(0, h3)), r1), new $Uint64(x$39.$high + x$46.$high, x$39.$low + x$46.$low)), x$47 = $mul64((new $Uint64(0, h4)), r0), new $Uint64(x$38.$high + x$47.$high, x$38.$low + x$47.$low));
 73573  			h0 = (((d0.$low >>> 0)) & 67108863) >>> 0;
 73574  			h1 = (((d1.$low >>> 0)) & 67108863) >>> 0;
 73575  			h2 = (((d2.$low >>> 0)) & 67108863) >>> 0;
 73576  			h3 = (((d3.$low >>> 0)) & 67108863) >>> 0;
 73577  			h4 = (((d4.$low >>> 0)) & 67108863) >>> 0;
 73578  			h0 = h0 + (($imul((($shiftRightUint64(d4, 26).$low >>> 0)), 5) >>> 0)) >>> 0;
 73579  			h1 = h1 + ((h0 >>> 26 >>> 0)) >>> 0;
 73580  			h0 = (h0 & 67108863) >>> 0;
 73581  			msg = $subslice(msg, 16);
 73582  		}
 73583  		if (msg.$length > 0) {
 73584  			block = arrayType.zero();
 73585  			off = $copySlice(new sliceType(block), msg);
 73586  			((off < 0 || off >= block.length) ? ($throwRuntimeError("index out of range"), undefined) : block[off] = 1);
 73587  			h0 = h0 + ((($clone(binary.LittleEndian, binary.littleEndian).Uint32($subslice(new sliceType(block), 0)) & 67108863) >>> 0)) >>> 0;
 73588  			h1 = h1 + ((((($clone(binary.LittleEndian, binary.littleEndian).Uint32($subslice(new sliceType(block), 3)) >>> 2 >>> 0)) & 67108863) >>> 0)) >>> 0;
 73589  			h2 = h2 + ((((($clone(binary.LittleEndian, binary.littleEndian).Uint32($subslice(new sliceType(block), 6)) >>> 4 >>> 0)) & 67108863) >>> 0)) >>> 0;
 73590  			h3 = h3 + ((((($clone(binary.LittleEndian, binary.littleEndian).Uint32($subslice(new sliceType(block), 9)) >>> 6 >>> 0)) & 67108863) >>> 0)) >>> 0;
 73591  			h4 = h4 + ((($clone(binary.LittleEndian, binary.littleEndian).Uint32($subslice(new sliceType(block), 12)) >>> 8 >>> 0))) >>> 0;
 73592  			d0$1 = (x$48 = (x$49 = (x$50 = (x$51 = $mul64((new $Uint64(0, h0)), r0), x$52 = $mul64((new $Uint64(0, h1)), R4), new $Uint64(x$51.$high + x$52.$high, x$51.$low + x$52.$low)), x$53 = $mul64((new $Uint64(0, h2)), R3), new $Uint64(x$50.$high + x$53.$high, x$50.$low + x$53.$low)), x$54 = $mul64((new $Uint64(0, h3)), R2), new $Uint64(x$49.$high + x$54.$high, x$49.$low + x$54.$low)), x$55 = $mul64((new $Uint64(0, h4)), R1), new $Uint64(x$48.$high + x$55.$high, x$48.$low + x$55.$low));
 73593  			d1$1 = (x$56 = (x$57 = (x$58 = (x$59 = (x$60 = $shiftRightUint64(d0$1, 26), x$61 = $mul64((new $Uint64(0, h0)), r1), new $Uint64(x$60.$high + x$61.$high, x$60.$low + x$61.$low)), x$62 = $mul64((new $Uint64(0, h1)), r0), new $Uint64(x$59.$high + x$62.$high, x$59.$low + x$62.$low)), x$63 = $mul64((new $Uint64(0, h2)), R4), new $Uint64(x$58.$high + x$63.$high, x$58.$low + x$63.$low)), x$64 = $mul64((new $Uint64(0, h3)), R3), new $Uint64(x$57.$high + x$64.$high, x$57.$low + x$64.$low)), x$65 = $mul64((new $Uint64(0, h4)), R2), new $Uint64(x$56.$high + x$65.$high, x$56.$low + x$65.$low));
 73594  			d2$1 = (x$66 = (x$67 = (x$68 = (x$69 = (x$70 = $shiftRightUint64(d1$1, 26), x$71 = $mul64((new $Uint64(0, h0)), r2), new $Uint64(x$70.$high + x$71.$high, x$70.$low + x$71.$low)), x$72 = $mul64((new $Uint64(0, h1)), r1), new $Uint64(x$69.$high + x$72.$high, x$69.$low + x$72.$low)), x$73 = $mul64((new $Uint64(0, h2)), r0), new $Uint64(x$68.$high + x$73.$high, x$68.$low + x$73.$low)), x$74 = $mul64((new $Uint64(0, h3)), R4), new $Uint64(x$67.$high + x$74.$high, x$67.$low + x$74.$low)), x$75 = $mul64((new $Uint64(0, h4)), R3), new $Uint64(x$66.$high + x$75.$high, x$66.$low + x$75.$low));
 73595  			d3$1 = (x$76 = (x$77 = (x$78 = (x$79 = (x$80 = $shiftRightUint64(d2$1, 26), x$81 = $mul64((new $Uint64(0, h0)), r3), new $Uint64(x$80.$high + x$81.$high, x$80.$low + x$81.$low)), x$82 = $mul64((new $Uint64(0, h1)), r2), new $Uint64(x$79.$high + x$82.$high, x$79.$low + x$82.$low)), x$83 = $mul64((new $Uint64(0, h2)), r1), new $Uint64(x$78.$high + x$83.$high, x$78.$low + x$83.$low)), x$84 = $mul64((new $Uint64(0, h3)), r0), new $Uint64(x$77.$high + x$84.$high, x$77.$low + x$84.$low)), x$85 = $mul64((new $Uint64(0, h4)), R4), new $Uint64(x$76.$high + x$85.$high, x$76.$low + x$85.$low));
 73596  			d4$1 = (x$86 = (x$87 = (x$88 = (x$89 = (x$90 = $shiftRightUint64(d3$1, 26), x$91 = $mul64((new $Uint64(0, h0)), r4), new $Uint64(x$90.$high + x$91.$high, x$90.$low + x$91.$low)), x$92 = $mul64((new $Uint64(0, h1)), r3), new $Uint64(x$89.$high + x$92.$high, x$89.$low + x$92.$low)), x$93 = $mul64((new $Uint64(0, h2)), r2), new $Uint64(x$88.$high + x$93.$high, x$88.$low + x$93.$low)), x$94 = $mul64((new $Uint64(0, h3)), r1), new $Uint64(x$87.$high + x$94.$high, x$87.$low + x$94.$low)), x$95 = $mul64((new $Uint64(0, h4)), r0), new $Uint64(x$86.$high + x$95.$high, x$86.$low + x$95.$low));
 73597  			h0 = (((d0$1.$low >>> 0)) & 67108863) >>> 0;
 73598  			h1 = (((d1$1.$low >>> 0)) & 67108863) >>> 0;
 73599  			h2 = (((d2$1.$low >>> 0)) & 67108863) >>> 0;
 73600  			h3 = (((d3$1.$low >>> 0)) & 67108863) >>> 0;
 73601  			h4 = (((d4$1.$low >>> 0)) & 67108863) >>> 0;
 73602  			h0 = h0 + (($imul((($shiftRightUint64(d4$1, 26).$low >>> 0)), 5) >>> 0)) >>> 0;
 73603  			h1 = h1 + ((h0 >>> 26 >>> 0)) >>> 0;
 73604  			h0 = (h0 & 67108863) >>> 0;
 73605  		}
 73606  		h2 = h2 + ((h1 >>> 26 >>> 0)) >>> 0;
 73607  		h1 = (h1 & (67108863)) >>> 0;
 73608  		h3 = h3 + ((h2 >>> 26 >>> 0)) >>> 0;
 73609  		h2 = (h2 & (67108863)) >>> 0;
 73610  		h4 = h4 + ((h3 >>> 26 >>> 0)) >>> 0;
 73611  		h3 = (h3 & (67108863)) >>> 0;
 73612  		h0 = h0 + (($imul(5, ((h4 >>> 26 >>> 0))) >>> 0)) >>> 0;
 73613  		h4 = (h4 & (67108863)) >>> 0;
 73614  		h1 = h1 + ((h0 >>> 26 >>> 0)) >>> 0;
 73615  		h0 = (h0 & (67108863)) >>> 0;
 73616  		t0 = h0 + 5 >>> 0;
 73617  		t1 = h1 + ((t0 >>> 26 >>> 0)) >>> 0;
 73618  		t2 = h2 + ((t1 >>> 26 >>> 0)) >>> 0;
 73619  		t3 = h3 + ((t2 >>> 26 >>> 0)) >>> 0;
 73620  		t4 = (h4 + ((t3 >>> 26 >>> 0)) >>> 0) - 67108864 >>> 0;
 73621  		t0 = (t0 & (67108863)) >>> 0;
 73622  		t1 = (t1 & (67108863)) >>> 0;
 73623  		t2 = (t2 & (67108863)) >>> 0;
 73624  		t3 = (t3 & (67108863)) >>> 0;
 73625  		t_mask = ((t4 >>> 31 >>> 0)) - 1 >>> 0;
 73626  		h_mask = ~t_mask >>> 0;
 73627  		h0 = ((((h0 & h_mask) >>> 0)) | (((t0 & t_mask) >>> 0))) >>> 0;
 73628  		h1 = ((((h1 & h_mask) >>> 0)) | (((t1 & t_mask) >>> 0))) >>> 0;
 73629  		h2 = ((((h2 & h_mask) >>> 0)) | (((t2 & t_mask) >>> 0))) >>> 0;
 73630  		h3 = ((((h3 & h_mask) >>> 0)) | (((t3 & t_mask) >>> 0))) >>> 0;
 73631  		h4 = ((((h4 & h_mask) >>> 0)) | (((t4 & t_mask) >>> 0))) >>> 0;
 73632  		h0 = (h0 | ((h1 << 26 >>> 0))) >>> 0;
 73633  		h1 = ((((h1 >>> 6 >>> 0)) | ((h2 << 20 >>> 0))) >>> 0);
 73634  		h2 = ((((h2 >>> 12 >>> 0)) | ((h3 << 14 >>> 0))) >>> 0);
 73635  		h3 = ((((h3 >>> 18 >>> 0)) | ((h4 << 8 >>> 0))) >>> 0);
 73636  		t = (x$96 = (new $Uint64(0, h0)), x$97 = (new $Uint64(0, $clone(binary.LittleEndian, binary.littleEndian).Uint32($subslice(new sliceType(key), 16)))), new $Uint64(x$96.$high + x$97.$high, x$96.$low + x$97.$low));
 73637  		h0 = ((t.$low >>> 0));
 73638  		t = (x$98 = (x$99 = (new $Uint64(0, h1)), x$100 = (new $Uint64(0, $clone(binary.LittleEndian, binary.littleEndian).Uint32($subslice(new sliceType(key), 20)))), new $Uint64(x$99.$high + x$100.$high, x$99.$low + x$100.$low)), x$101 = $shiftRightUint64(t, 32), new $Uint64(x$98.$high + x$101.$high, x$98.$low + x$101.$low));
 73639  		h1 = ((t.$low >>> 0));
 73640  		t = (x$102 = (x$103 = (new $Uint64(0, h2)), x$104 = (new $Uint64(0, $clone(binary.LittleEndian, binary.littleEndian).Uint32($subslice(new sliceType(key), 24)))), new $Uint64(x$103.$high + x$104.$high, x$103.$low + x$104.$low)), x$105 = $shiftRightUint64(t, 32), new $Uint64(x$102.$high + x$105.$high, x$102.$low + x$105.$low));
 73641  		h2 = ((t.$low >>> 0));
 73642  		t = (x$106 = (x$107 = (new $Uint64(0, h3)), x$108 = (new $Uint64(0, $clone(binary.LittleEndian, binary.littleEndian).Uint32($subslice(new sliceType(key), 28)))), new $Uint64(x$107.$high + x$108.$high, x$107.$low + x$108.$low)), x$109 = $shiftRightUint64(t, 32), new $Uint64(x$106.$high + x$109.$high, x$106.$low + x$109.$low));
 73643  		h3 = ((t.$low >>> 0));
 73644  		$clone(binary.LittleEndian, binary.littleEndian).PutUint32($subslice(new sliceType(out), 0), h0);
 73645  		$clone(binary.LittleEndian, binary.littleEndian).PutUint32($subslice(new sliceType(out), 4), h1);
 73646  		$clone(binary.LittleEndian, binary.littleEndian).PutUint32($subslice(new sliceType(out), 8), h2);
 73647  		$clone(binary.LittleEndian, binary.littleEndian).PutUint32($subslice(new sliceType(out), 12), h3);
 73648  	};
 73649  	$pkg.Sum = Sum;
 73650  	$init = function() {
 73651  		$pkg.$init = function() {};
 73652  		/* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 73653  		$r = subtle.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 73654  		$r = binary.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 73655  		/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
 73656  	};
 73657  	$pkg.$init = $init;
 73658  	return $pkg;
 73659  })();
 73660  $packages["vendor/golang_org/x/crypto/chacha20poly1305"] = (function() {
 73661  	var $pkg = {}, $init, cipher, binary, errors, chacha20, poly1305, chacha20poly1305, arrayType, sliceType, arrayType$1, ptrType, errOpen, New, sliceForAppend, roundTo16;
 73662  	cipher = $packages["crypto/cipher"];
 73663  	binary = $packages["encoding/binary"];
 73664  	errors = $packages["errors"];
 73665  	chacha20 = $packages["vendor/golang_org/x/crypto/chacha20poly1305/internal/chacha20"];
 73666  	poly1305 = $packages["vendor/golang_org/x/crypto/poly1305"];
 73667  	chacha20poly1305 = $pkg.chacha20poly1305 = $newType(0, $kindStruct, "chacha20poly1305.chacha20poly1305", true, "vendor/golang_org/x/crypto/chacha20poly1305", false, function(key_) {
 73668  		this.$val = this;
 73669  		if (arguments.length === 0) {
 73670  			this.key = arrayType.zero();
 73671  			return;
 73672  		}
 73673  		this.key = key_;
 73674  	});
 73675  	arrayType = $arrayType($Uint8, 32);
 73676  	sliceType = $sliceType($Uint8);
 73677  	arrayType$1 = $arrayType($Uint8, 16);
 73678  	ptrType = $ptrType(chacha20poly1305);
 73679  	New = function(key) {
 73680  		var key, ret;
 73681  		if (!((key.$length === 32))) {
 73682  			return [$ifaceNil, errors.New("chacha20poly1305: bad key length")];
 73683  		}
 73684  		ret = new chacha20poly1305.ptr(arrayType.zero());
 73685  		$copySlice(new sliceType(ret.key), key);
 73686  		return [ret, $ifaceNil];
 73687  	};
 73688  	$pkg.New = New;
 73689  	chacha20poly1305.ptr.prototype.NonceSize = function() {
 73690  		var c;
 73691  		c = this;
 73692  		return 12;
 73693  	};
 73694  	chacha20poly1305.prototype.NonceSize = function() { return this.$val.NonceSize(); };
 73695  	chacha20poly1305.ptr.prototype.Overhead = function() {
 73696  		var c;
 73697  		c = this;
 73698  		return 16;
 73699  	};
 73700  	chacha20poly1305.prototype.Overhead = function() { return this.$val.Overhead(); };
 73701  	chacha20poly1305.ptr.prototype.Seal = function(dst, nonce, plaintext, additionalData) {
 73702  		var additionalData, c, dst, nonce, plaintext, x;
 73703  		c = this;
 73704  		if (!((nonce.$length === 12))) {
 73705  			$panic(new $String("chacha20poly1305: bad nonce length passed to Seal"));
 73706  		}
 73707  		if ((x = (new $Uint64(0, plaintext.$length)), (x.$high > 63 || (x.$high === 63 && x.$low > 4294967232)))) {
 73708  			$panic(new $String("chacha20poly1305: plaintext too large"));
 73709  		}
 73710  		return c.seal(dst, nonce, plaintext, additionalData);
 73711  	};
 73712  	chacha20poly1305.prototype.Seal = function(dst, nonce, plaintext, additionalData) { return this.$val.Seal(dst, nonce, plaintext, additionalData); };
 73713  	chacha20poly1305.ptr.prototype.Open = function(dst, nonce, ciphertext, additionalData) {
 73714  		var additionalData, c, ciphertext, dst, nonce, x;
 73715  		c = this;
 73716  		if (!((nonce.$length === 12))) {
 73717  			$panic(new $String("chacha20poly1305: bad nonce length passed to Open"));
 73718  		}
 73719  		if (ciphertext.$length < 16) {
 73720  			return [sliceType.nil, errOpen];
 73721  		}
 73722  		if ((x = (new $Uint64(0, ciphertext.$length)), (x.$high > 63 || (x.$high === 63 && x.$low > 4294967248)))) {
 73723  			$panic(new $String("chacha20poly1305: ciphertext too large"));
 73724  		}
 73725  		return c.open(dst, nonce, ciphertext, additionalData);
 73726  	};
 73727  	chacha20poly1305.prototype.Open = function(dst, nonce, ciphertext, additionalData) { return this.$val.Open(dst, nonce, ciphertext, additionalData); };
 73728  	sliceForAppend = function(in$1, n) {
 73729  		var head, in$1, n, tail, total;
 73730  		head = sliceType.nil;
 73731  		tail = sliceType.nil;
 73732  		total = in$1.$length + n >> 0;
 73733  		if (in$1.$capacity >= total) {
 73734  			head = $subslice(in$1, 0, total);
 73735  		} else {
 73736  			head = $makeSlice(sliceType, total);
 73737  			$copySlice(head, in$1);
 73738  		}
 73739  		tail = $subslice(head, in$1.$length);
 73740  		return [head, tail];
 73741  	};
 73742  	roundTo16 = function(n) {
 73743  		var _q, n;
 73744  		return $imul(16, ((_q = ((n + 15 >> 0)) / 16, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero"))));
 73745  	};
 73746  	chacha20poly1305.ptr.prototype.sealGeneric = function(dst, nonce, plaintext, additionalData) {
 73747  		var _tuple, additionalData, c, counter, dst, nonce, out, plaintext, polyInput, polyKey, ret, tag;
 73748  		c = this;
 73749  		counter = arrayType$1.zero();
 73750  		$copySlice($subslice(new sliceType(counter), 4), nonce);
 73751  		polyKey = arrayType.zero();
 73752  		chacha20.XORKeyStream(new sliceType(polyKey), new sliceType(polyKey), counter, c.key);
 73753  		_tuple = sliceForAppend(dst, plaintext.$length + 16 >> 0);
 73754  		ret = _tuple[0];
 73755  		out = _tuple[1];
 73756  		counter[0] = 1;
 73757  		chacha20.XORKeyStream(out, plaintext, counter, c.key);
 73758  		polyInput = $makeSlice(sliceType, (((roundTo16(additionalData.$length) + roundTo16(plaintext.$length) >> 0) + 8 >> 0) + 8 >> 0));
 73759  		$copySlice(polyInput, additionalData);
 73760  		$copySlice($subslice(polyInput, roundTo16(additionalData.$length)), $subslice(out, 0, plaintext.$length));
 73761  		$clone(binary.LittleEndian, binary.littleEndian).PutUint64($subslice(polyInput, (polyInput.$length - 16 >> 0)), (new $Uint64(0, additionalData.$length)));
 73762  		$clone(binary.LittleEndian, binary.littleEndian).PutUint64($subslice(polyInput, (polyInput.$length - 8 >> 0)), (new $Uint64(0, plaintext.$length)));
 73763  		tag = arrayType$1.zero();
 73764  		poly1305.Sum(tag, polyInput, polyKey);
 73765  		$copySlice($subslice(out, plaintext.$length), new sliceType(tag));
 73766  		return ret;
 73767  	};
 73768  	chacha20poly1305.prototype.sealGeneric = function(dst, nonce, plaintext, additionalData) { return this.$val.sealGeneric(dst, nonce, plaintext, additionalData); };
 73769  	chacha20poly1305.ptr.prototype.openGeneric = function(dst, nonce, ciphertext, additionalData) {
 73770  		var _i, _ref, _tuple, additionalData, c, ciphertext, counter, dst, i, nonce, out, polyInput, polyKey, ret, tag;
 73771  		c = this;
 73772  		tag = arrayType$1.zero();
 73773  		$copySlice(new sliceType(tag), $subslice(ciphertext, (ciphertext.$length - 16 >> 0)));
 73774  		ciphertext = $subslice(ciphertext, 0, (ciphertext.$length - 16 >> 0));
 73775  		counter = arrayType$1.zero();
 73776  		$copySlice($subslice(new sliceType(counter), 4), nonce);
 73777  		polyKey = arrayType.zero();
 73778  		chacha20.XORKeyStream(new sliceType(polyKey), new sliceType(polyKey), counter, c.key);
 73779  		polyInput = $makeSlice(sliceType, (((roundTo16(additionalData.$length) + roundTo16(ciphertext.$length) >> 0) + 8 >> 0) + 8 >> 0));
 73780  		$copySlice(polyInput, additionalData);
 73781  		$copySlice($subslice(polyInput, roundTo16(additionalData.$length)), ciphertext);
 73782  		$clone(binary.LittleEndian, binary.littleEndian).PutUint64($subslice(polyInput, (polyInput.$length - 16 >> 0)), (new $Uint64(0, additionalData.$length)));
 73783  		$clone(binary.LittleEndian, binary.littleEndian).PutUint64($subslice(polyInput, (polyInput.$length - 8 >> 0)), (new $Uint64(0, ciphertext.$length)));
 73784  		_tuple = sliceForAppend(dst, ciphertext.$length);
 73785  		ret = _tuple[0];
 73786  		out = _tuple[1];
 73787  		if (!poly1305.Verify(tag, polyInput, polyKey)) {
 73788  			_ref = out;
 73789  			_i = 0;
 73790  			while (true) {
 73791  				if (!(_i < _ref.$length)) { break; }
 73792  				i = _i;
 73793  				((i < 0 || i >= out.$length) ? ($throwRuntimeError("index out of range"), undefined) : out.$array[out.$offset + i] = 0);
 73794  				_i++;
 73795  			}
 73796  			return [sliceType.nil, errOpen];
 73797  		}
 73798  		counter[0] = 1;
 73799  		chacha20.XORKeyStream(out, ciphertext, counter, c.key);
 73800  		return [ret, $ifaceNil];
 73801  	};
 73802  	chacha20poly1305.prototype.openGeneric = function(dst, nonce, ciphertext, additionalData) { return this.$val.openGeneric(dst, nonce, ciphertext, additionalData); };
 73803  	chacha20poly1305.ptr.prototype.seal = function(dst, nonce, plaintext, additionalData) {
 73804  		var additionalData, c, dst, nonce, plaintext;
 73805  		c = this;
 73806  		return c.sealGeneric(dst, nonce, plaintext, additionalData);
 73807  	};
 73808  	chacha20poly1305.prototype.seal = function(dst, nonce, plaintext, additionalData) { return this.$val.seal(dst, nonce, plaintext, additionalData); };
 73809  	chacha20poly1305.ptr.prototype.open = function(dst, nonce, ciphertext, additionalData) {
 73810  		var additionalData, c, ciphertext, dst, nonce;
 73811  		c = this;
 73812  		return c.openGeneric(dst, nonce, ciphertext, additionalData);
 73813  	};
 73814  	chacha20poly1305.prototype.open = function(dst, nonce, ciphertext, additionalData) { return this.$val.open(dst, nonce, ciphertext, additionalData); };
 73815  	ptrType.methods = [{prop: "NonceSize", name: "NonceSize", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Overhead", name: "Overhead", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Seal", name: "Seal", pkg: "", typ: $funcType([sliceType, sliceType, sliceType, sliceType], [sliceType], false)}, {prop: "Open", name: "Open", pkg: "", typ: $funcType([sliceType, sliceType, sliceType, sliceType], [sliceType, $error], false)}, {prop: "sealGeneric", name: "sealGeneric", pkg: "vendor/golang_org/x/crypto/chacha20poly1305", typ: $funcType([sliceType, sliceType, sliceType, sliceType], [sliceType], false)}, {prop: "openGeneric", name: "openGeneric", pkg: "vendor/golang_org/x/crypto/chacha20poly1305", typ: $funcType([sliceType, sliceType, sliceType, sliceType], [sliceType, $error], false)}, {prop: "seal", name: "seal", pkg: "vendor/golang_org/x/crypto/chacha20poly1305", typ: $funcType([sliceType, sliceType, sliceType, sliceType], [sliceType], false)}, {prop: "open", name: "open", pkg: "vendor/golang_org/x/crypto/chacha20poly1305", typ: $funcType([sliceType, sliceType, sliceType, sliceType], [sliceType, $error], false)}];
 73816  	chacha20poly1305.init("vendor/golang_org/x/crypto/chacha20poly1305", [{prop: "key", name: "key", anonymous: false, exported: false, typ: arrayType, tag: ""}]);
 73817  	$init = function() {
 73818  		$pkg.$init = function() {};
 73819  		/* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 73820  		$r = cipher.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 73821  		$r = binary.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 73822  		$r = errors.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 73823  		$r = chacha20.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 73824  		$r = poly1305.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 73825  		errOpen = errors.New("chacha20poly1305: message authentication failed");
 73826  		/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
 73827  	};
 73828  	$pkg.$init = $init;
 73829  	return $pkg;
 73830  })();
 73831  $packages["vendor/golang_org/x/crypto/curve25519"] = (function() {
 73832  	var $pkg = {}, $init, binary, fieldElement, sliceType, arrayType, arrayType$1, arrayType$2, basePoint, basePoint$24ptr, feZero, feOne, feAdd, feSub, feCopy, feCSwap, load3, load4, feFromBytes, feToBytes, feMul, feSquare, feMul121666, feInvert, scalarMult, ScalarMult, ScalarBaseMult;
 73833  	binary = $packages["encoding/binary"];
 73834  	fieldElement = $pkg.fieldElement = $newType(40, $kindArray, "curve25519.fieldElement", true, "vendor/golang_org/x/crypto/curve25519", false, null);
 73835  	sliceType = $sliceType($Uint8);
 73836  	arrayType = $arrayType($Int64, 10);
 73837  	arrayType$1 = $arrayType($Int32, 10);
 73838  	arrayType$2 = $arrayType($Uint8, 32);
 73839  	feZero = function(fe) {
 73840  		var _i, _ref, fe, i;
 73841  		_ref = fe;
 73842  		_i = 0;
 73843  		while (true) {
 73844  			if (!(_i < 10)) { break; }
 73845  			i = _i;
 73846  			fe.nilCheck, ((i < 0 || i >= fe.length) ? ($throwRuntimeError("index out of range"), undefined) : fe[i] = 0);
 73847  			_i++;
 73848  		}
 73849  	};
 73850  	feOne = function(fe) {
 73851  		var fe;
 73852  		feZero(fe);
 73853  		fe.nilCheck, fe[0] = 1;
 73854  	};
 73855  	feAdd = function(dst, a, b) {
 73856  		var _i, _ref, a, b, dst, i;
 73857  		_ref = dst;
 73858  		_i = 0;
 73859  		while (true) {
 73860  			if (!(_i < 10)) { break; }
 73861  			i = _i;
 73862  			dst.nilCheck, ((i < 0 || i >= dst.length) ? ($throwRuntimeError("index out of range"), undefined) : dst[i] = ((a.nilCheck, ((i < 0 || i >= a.length) ? ($throwRuntimeError("index out of range"), undefined) : a[i])) + (b.nilCheck, ((i < 0 || i >= b.length) ? ($throwRuntimeError("index out of range"), undefined) : b[i])) >> 0));
 73863  			_i++;
 73864  		}
 73865  	};
 73866  	feSub = function(dst, a, b) {
 73867  		var _i, _ref, a, b, dst, i;
 73868  		_ref = dst;
 73869  		_i = 0;
 73870  		while (true) {
 73871  			if (!(_i < 10)) { break; }
 73872  			i = _i;
 73873  			dst.nilCheck, ((i < 0 || i >= dst.length) ? ($throwRuntimeError("index out of range"), undefined) : dst[i] = ((a.nilCheck, ((i < 0 || i >= a.length) ? ($throwRuntimeError("index out of range"), undefined) : a[i])) - (b.nilCheck, ((i < 0 || i >= b.length) ? ($throwRuntimeError("index out of range"), undefined) : b[i])) >> 0));
 73874  			_i++;
 73875  		}
 73876  	};
 73877  	feCopy = function(dst, src) {
 73878  		var _i, _ref, dst, i, src;
 73879  		_ref = dst;
 73880  		_i = 0;
 73881  		while (true) {
 73882  			if (!(_i < 10)) { break; }
 73883  			i = _i;
 73884  			dst.nilCheck, ((i < 0 || i >= dst.length) ? ($throwRuntimeError("index out of range"), undefined) : dst[i] = (src.nilCheck, ((i < 0 || i >= src.length) ? ($throwRuntimeError("index out of range"), undefined) : src[i])));
 73885  			_i++;
 73886  		}
 73887  	};
 73888  	feCSwap = function(f, g, b) {
 73889  		var _i, _ref, b, f, g, i, t;
 73890  		b = -b;
 73891  		_ref = f;
 73892  		_i = 0;
 73893  		while (true) {
 73894  			if (!(_i < 10)) { break; }
 73895  			i = _i;
 73896  			t = b & ((((f.nilCheck, ((i < 0 || i >= f.length) ? ($throwRuntimeError("index out of range"), undefined) : f[i])) ^ (g.nilCheck, ((i < 0 || i >= g.length) ? ($throwRuntimeError("index out of range"), undefined) : g[i]))) >> 0));
 73897  			f.nilCheck, ((i < 0 || i >= f.length) ? ($throwRuntimeError("index out of range"), undefined) : f[i] = (((f.nilCheck, ((i < 0 || i >= f.length) ? ($throwRuntimeError("index out of range"), undefined) : f[i])) ^ (t)) >> 0));
 73898  			g.nilCheck, ((i < 0 || i >= g.length) ? ($throwRuntimeError("index out of range"), undefined) : g[i] = (((g.nilCheck, ((i < 0 || i >= g.length) ? ($throwRuntimeError("index out of range"), undefined) : g[i])) ^ (t)) >> 0));
 73899  			_i++;
 73900  		}
 73901  	};
 73902  	load3 = function(in$1) {
 73903  		var in$1, r, x, x$1;
 73904  		r = new $Int64(0, 0);
 73905  		r = (new $Int64(0, (0 >= in$1.$length ? ($throwRuntimeError("index out of range"), undefined) : in$1.$array[in$1.$offset + 0])));
 73906  		r = (x = $shiftLeft64((new $Int64(0, (1 >= in$1.$length ? ($throwRuntimeError("index out of range"), undefined) : in$1.$array[in$1.$offset + 1]))), 8), new $Int64(r.$high | x.$high, (r.$low | x.$low) >>> 0));
 73907  		r = (x$1 = $shiftLeft64((new $Int64(0, (2 >= in$1.$length ? ($throwRuntimeError("index out of range"), undefined) : in$1.$array[in$1.$offset + 2]))), 16), new $Int64(r.$high | x$1.$high, (r.$low | x$1.$low) >>> 0));
 73908  		return r;
 73909  	};
 73910  	load4 = function(in$1) {
 73911  		var in$1;
 73912  		return (new $Int64(0, $clone(binary.LittleEndian, binary.littleEndian).Uint32(in$1)));
 73913  	};
 73914  	feFromBytes = function(dst, src) {
 73915  		var carry, dst, h0, h1, h2, h3, h4, h5, h6, h7, h8, h9, src, x, x$1, x$10, x$11, x$12, x$13, x$14, x$15, x$16, x$17, x$18, x$19, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9;
 73916  		h0 = load4(new sliceType(src));
 73917  		h1 = $shiftLeft64(load3($subslice(new sliceType(src), 4)), 6);
 73918  		h2 = $shiftLeft64(load3($subslice(new sliceType(src), 7)), 5);
 73919  		h3 = $shiftLeft64(load3($subslice(new sliceType(src), 10)), 3);
 73920  		h4 = $shiftLeft64(load3($subslice(new sliceType(src), 13)), 2);
 73921  		h5 = load4($subslice(new sliceType(src), 16));
 73922  		h6 = $shiftLeft64(load3($subslice(new sliceType(src), 20)), 7);
 73923  		h7 = $shiftLeft64(load3($subslice(new sliceType(src), 23)), 5);
 73924  		h8 = $shiftLeft64(load3($subslice(new sliceType(src), 26)), 4);
 73925  		h9 = $shiftLeft64(load3($subslice(new sliceType(src), 29)), 2);
 73926  		carry = arrayType.zero();
 73927  		carry[9] = $shiftRightInt64((new $Int64(h9.$high + 0, h9.$low + 16777216)), 25);
 73928  		h0 = (x = $mul64(carry[9], new $Int64(0, 19)), new $Int64(h0.$high + x.$high, h0.$low + x.$low));
 73929  		h9 = (x$1 = $shiftLeft64(carry[9], 25), new $Int64(h9.$high - x$1.$high, h9.$low - x$1.$low));
 73930  		carry[1] = $shiftRightInt64((new $Int64(h1.$high + 0, h1.$low + 16777216)), 25);
 73931  		h2 = (x$2 = carry[1], new $Int64(h2.$high + x$2.$high, h2.$low + x$2.$low));
 73932  		h1 = (x$3 = $shiftLeft64(carry[1], 25), new $Int64(h1.$high - x$3.$high, h1.$low - x$3.$low));
 73933  		carry[3] = $shiftRightInt64((new $Int64(h3.$high + 0, h3.$low + 16777216)), 25);
 73934  		h4 = (x$4 = carry[3], new $Int64(h4.$high + x$4.$high, h4.$low + x$4.$low));
 73935  		h3 = (x$5 = $shiftLeft64(carry[3], 25), new $Int64(h3.$high - x$5.$high, h3.$low - x$5.$low));
 73936  		carry[5] = $shiftRightInt64((new $Int64(h5.$high + 0, h5.$low + 16777216)), 25);
 73937  		h6 = (x$6 = carry[5], new $Int64(h6.$high + x$6.$high, h6.$low + x$6.$low));
 73938  		h5 = (x$7 = $shiftLeft64(carry[5], 25), new $Int64(h5.$high - x$7.$high, h5.$low - x$7.$low));
 73939  		carry[7] = $shiftRightInt64((new $Int64(h7.$high + 0, h7.$low + 16777216)), 25);
 73940  		h8 = (x$8 = carry[7], new $Int64(h8.$high + x$8.$high, h8.$low + x$8.$low));
 73941  		h7 = (x$9 = $shiftLeft64(carry[7], 25), new $Int64(h7.$high - x$9.$high, h7.$low - x$9.$low));
 73942  		carry[0] = $shiftRightInt64((new $Int64(h0.$high + 0, h0.$low + 33554432)), 26);
 73943  		h1 = (x$10 = carry[0], new $Int64(h1.$high + x$10.$high, h1.$low + x$10.$low));
 73944  		h0 = (x$11 = $shiftLeft64(carry[0], 26), new $Int64(h0.$high - x$11.$high, h0.$low - x$11.$low));
 73945  		carry[2] = $shiftRightInt64((new $Int64(h2.$high + 0, h2.$low + 33554432)), 26);
 73946  		h3 = (x$12 = carry[2], new $Int64(h3.$high + x$12.$high, h3.$low + x$12.$low));
 73947  		h2 = (x$13 = $shiftLeft64(carry[2], 26), new $Int64(h2.$high - x$13.$high, h2.$low - x$13.$low));
 73948  		carry[4] = $shiftRightInt64((new $Int64(h4.$high + 0, h4.$low + 33554432)), 26);
 73949  		h5 = (x$14 = carry[4], new $Int64(h5.$high + x$14.$high, h5.$low + x$14.$low));
 73950  		h4 = (x$15 = $shiftLeft64(carry[4], 26), new $Int64(h4.$high - x$15.$high, h4.$low - x$15.$low));
 73951  		carry[6] = $shiftRightInt64((new $Int64(h6.$high + 0, h6.$low + 33554432)), 26);
 73952  		h7 = (x$16 = carry[6], new $Int64(h7.$high + x$16.$high, h7.$low + x$16.$low));
 73953  		h6 = (x$17 = $shiftLeft64(carry[6], 26), new $Int64(h6.$high - x$17.$high, h6.$low - x$17.$low));
 73954  		carry[8] = $shiftRightInt64((new $Int64(h8.$high + 0, h8.$low + 33554432)), 26);
 73955  		h9 = (x$18 = carry[8], new $Int64(h9.$high + x$18.$high, h9.$low + x$18.$low));
 73956  		h8 = (x$19 = $shiftLeft64(carry[8], 26), new $Int64(h8.$high - x$19.$high, h8.$low - x$19.$low));
 73957  		dst.nilCheck, dst[0] = (((h0.$low + ((h0.$high >> 31) * 4294967296)) >> 0));
 73958  		dst.nilCheck, dst[1] = (((h1.$low + ((h1.$high >> 31) * 4294967296)) >> 0));
 73959  		dst.nilCheck, dst[2] = (((h2.$low + ((h2.$high >> 31) * 4294967296)) >> 0));
 73960  		dst.nilCheck, dst[3] = (((h3.$low + ((h3.$high >> 31) * 4294967296)) >> 0));
 73961  		dst.nilCheck, dst[4] = (((h4.$low + ((h4.$high >> 31) * 4294967296)) >> 0));
 73962  		dst.nilCheck, dst[5] = (((h5.$low + ((h5.$high >> 31) * 4294967296)) >> 0));
 73963  		dst.nilCheck, dst[6] = (((h6.$low + ((h6.$high >> 31) * 4294967296)) >> 0));
 73964  		dst.nilCheck, dst[7] = (((h7.$low + ((h7.$high >> 31) * 4294967296)) >> 0));
 73965  		dst.nilCheck, dst[8] = (((h8.$low + ((h8.$high >> 31) * 4294967296)) >> 0));
 73966  		dst.nilCheck, dst[9] = (((h9.$low + ((h9.$high >> 31) * 4294967296)) >> 0));
 73967  	};
 73968  	feToBytes = function(s, h) {
 73969  		var carry, h, q, s;
 73970  		carry = arrayType$1.zero();
 73971  		q = ((($imul(19, (h.nilCheck, h[9]))) + 16777216 >> 0)) >> 25 >> 0;
 73972  		q = (((h.nilCheck, h[0]) + q >> 0)) >> 26 >> 0;
 73973  		q = (((h.nilCheck, h[1]) + q >> 0)) >> 25 >> 0;
 73974  		q = (((h.nilCheck, h[2]) + q >> 0)) >> 26 >> 0;
 73975  		q = (((h.nilCheck, h[3]) + q >> 0)) >> 25 >> 0;
 73976  		q = (((h.nilCheck, h[4]) + q >> 0)) >> 26 >> 0;
 73977  		q = (((h.nilCheck, h[5]) + q >> 0)) >> 25 >> 0;
 73978  		q = (((h.nilCheck, h[6]) + q >> 0)) >> 26 >> 0;
 73979  		q = (((h.nilCheck, h[7]) + q >> 0)) >> 25 >> 0;
 73980  		q = (((h.nilCheck, h[8]) + q >> 0)) >> 26 >> 0;
 73981  		q = (((h.nilCheck, h[9]) + q >> 0)) >> 25 >> 0;
 73982  		h.nilCheck, h[0] = ((h.nilCheck, h[0]) + (($imul(19, q))) >> 0);
 73983  		carry[0] = ((h.nilCheck, h[0]) >> 26 >> 0);
 73984  		h.nilCheck, h[1] = ((h.nilCheck, h[1]) + (carry[0]) >> 0);
 73985  		h.nilCheck, h[0] = ((h.nilCheck, h[0]) - ((carry[0] << 26 >> 0)) >> 0);
 73986  		carry[1] = ((h.nilCheck, h[1]) >> 25 >> 0);
 73987  		h.nilCheck, h[2] = ((h.nilCheck, h[2]) + (carry[1]) >> 0);
 73988  		h.nilCheck, h[1] = ((h.nilCheck, h[1]) - ((carry[1] << 25 >> 0)) >> 0);
 73989  		carry[2] = ((h.nilCheck, h[2]) >> 26 >> 0);
 73990  		h.nilCheck, h[3] = ((h.nilCheck, h[3]) + (carry[2]) >> 0);
 73991  		h.nilCheck, h[2] = ((h.nilCheck, h[2]) - ((carry[2] << 26 >> 0)) >> 0);
 73992  		carry[3] = ((h.nilCheck, h[3]) >> 25 >> 0);
 73993  		h.nilCheck, h[4] = ((h.nilCheck, h[4]) + (carry[3]) >> 0);
 73994  		h.nilCheck, h[3] = ((h.nilCheck, h[3]) - ((carry[3] << 25 >> 0)) >> 0);
 73995  		carry[4] = ((h.nilCheck, h[4]) >> 26 >> 0);
 73996  		h.nilCheck, h[5] = ((h.nilCheck, h[5]) + (carry[4]) >> 0);
 73997  		h.nilCheck, h[4] = ((h.nilCheck, h[4]) - ((carry[4] << 26 >> 0)) >> 0);
 73998  		carry[5] = ((h.nilCheck, h[5]) >> 25 >> 0);
 73999  		h.nilCheck, h[6] = ((h.nilCheck, h[6]) + (carry[5]) >> 0);
 74000  		h.nilCheck, h[5] = ((h.nilCheck, h[5]) - ((carry[5] << 25 >> 0)) >> 0);
 74001  		carry[6] = ((h.nilCheck, h[6]) >> 26 >> 0);
 74002  		h.nilCheck, h[7] = ((h.nilCheck, h[7]) + (carry[6]) >> 0);
 74003  		h.nilCheck, h[6] = ((h.nilCheck, h[6]) - ((carry[6] << 26 >> 0)) >> 0);
 74004  		carry[7] = ((h.nilCheck, h[7]) >> 25 >> 0);
 74005  		h.nilCheck, h[8] = ((h.nilCheck, h[8]) + (carry[7]) >> 0);
 74006  		h.nilCheck, h[7] = ((h.nilCheck, h[7]) - ((carry[7] << 25 >> 0)) >> 0);
 74007  		carry[8] = ((h.nilCheck, h[8]) >> 26 >> 0);
 74008  		h.nilCheck, h[9] = ((h.nilCheck, h[9]) + (carry[8]) >> 0);
 74009  		h.nilCheck, h[8] = ((h.nilCheck, h[8]) - ((carry[8] << 26 >> 0)) >> 0);
 74010  		carry[9] = ((h.nilCheck, h[9]) >> 25 >> 0);
 74011  		h.nilCheck, h[9] = ((h.nilCheck, h[9]) - ((carry[9] << 25 >> 0)) >> 0);
 74012  		s.nilCheck, s[0] = ((((h.nilCheck, h[0]) >> 0 >> 0) << 24 >>> 24));
 74013  		s.nilCheck, s[1] = ((((h.nilCheck, h[0]) >> 8 >> 0) << 24 >>> 24));
 74014  		s.nilCheck, s[2] = ((((h.nilCheck, h[0]) >> 16 >> 0) << 24 >>> 24));
 74015  		s.nilCheck, s[3] = ((((((h.nilCheck, h[0]) >> 24 >> 0)) | (((h.nilCheck, h[1]) << 2 >> 0))) << 24 >>> 24));
 74016  		s.nilCheck, s[4] = ((((h.nilCheck, h[1]) >> 6 >> 0) << 24 >>> 24));
 74017  		s.nilCheck, s[5] = ((((h.nilCheck, h[1]) >> 14 >> 0) << 24 >>> 24));
 74018  		s.nilCheck, s[6] = ((((((h.nilCheck, h[1]) >> 22 >> 0)) | (((h.nilCheck, h[2]) << 3 >> 0))) << 24 >>> 24));
 74019  		s.nilCheck, s[7] = ((((h.nilCheck, h[2]) >> 5 >> 0) << 24 >>> 24));
 74020  		s.nilCheck, s[8] = ((((h.nilCheck, h[2]) >> 13 >> 0) << 24 >>> 24));
 74021  		s.nilCheck, s[9] = ((((((h.nilCheck, h[2]) >> 21 >> 0)) | (((h.nilCheck, h[3]) << 5 >> 0))) << 24 >>> 24));
 74022  		s.nilCheck, s[10] = ((((h.nilCheck, h[3]) >> 3 >> 0) << 24 >>> 24));
 74023  		s.nilCheck, s[11] = ((((h.nilCheck, h[3]) >> 11 >> 0) << 24 >>> 24));
 74024  		s.nilCheck, s[12] = ((((((h.nilCheck, h[3]) >> 19 >> 0)) | (((h.nilCheck, h[4]) << 6 >> 0))) << 24 >>> 24));
 74025  		s.nilCheck, s[13] = ((((h.nilCheck, h[4]) >> 2 >> 0) << 24 >>> 24));
 74026  		s.nilCheck, s[14] = ((((h.nilCheck, h[4]) >> 10 >> 0) << 24 >>> 24));
 74027  		s.nilCheck, s[15] = ((((h.nilCheck, h[4]) >> 18 >> 0) << 24 >>> 24));
 74028  		s.nilCheck, s[16] = ((((h.nilCheck, h[5]) >> 0 >> 0) << 24 >>> 24));
 74029  		s.nilCheck, s[17] = ((((h.nilCheck, h[5]) >> 8 >> 0) << 24 >>> 24));
 74030  		s.nilCheck, s[18] = ((((h.nilCheck, h[5]) >> 16 >> 0) << 24 >>> 24));
 74031  		s.nilCheck, s[19] = ((((((h.nilCheck, h[5]) >> 24 >> 0)) | (((h.nilCheck, h[6]) << 1 >> 0))) << 24 >>> 24));
 74032  		s.nilCheck, s[20] = ((((h.nilCheck, h[6]) >> 7 >> 0) << 24 >>> 24));
 74033  		s.nilCheck, s[21] = ((((h.nilCheck, h[6]) >> 15 >> 0) << 24 >>> 24));
 74034  		s.nilCheck, s[22] = ((((((h.nilCheck, h[6]) >> 23 >> 0)) | (((h.nilCheck, h[7]) << 3 >> 0))) << 24 >>> 24));
 74035  		s.nilCheck, s[23] = ((((h.nilCheck, h[7]) >> 5 >> 0) << 24 >>> 24));
 74036  		s.nilCheck, s[24] = ((((h.nilCheck, h[7]) >> 13 >> 0) << 24 >>> 24));
 74037  		s.nilCheck, s[25] = ((((((h.nilCheck, h[7]) >> 21 >> 0)) | (((h.nilCheck, h[8]) << 4 >> 0))) << 24 >>> 24));
 74038  		s.nilCheck, s[26] = ((((h.nilCheck, h[8]) >> 4 >> 0) << 24 >>> 24));
 74039  		s.nilCheck, s[27] = ((((h.nilCheck, h[8]) >> 12 >> 0) << 24 >>> 24));
 74040  		s.nilCheck, s[28] = ((((((h.nilCheck, h[8]) >> 20 >> 0)) | (((h.nilCheck, h[9]) << 6 >> 0))) << 24 >>> 24));
 74041  		s.nilCheck, s[29] = ((((h.nilCheck, h[9]) >> 2 >> 0) << 24 >>> 24));
 74042  		s.nilCheck, s[30] = ((((h.nilCheck, h[9]) >> 10 >> 0) << 24 >>> 24));
 74043  		s.nilCheck, s[31] = ((((h.nilCheck, h[9]) >> 18 >> 0) << 24 >>> 24));
 74044  	};
 74045  	feMul = function(h, f, g) {
 74046  		var carry, f, f0, f0g0, f0g1, f0g2, f0g3, f0g4, f0g5, f0g6, f0g7, f0g8, f0g9, f1, f1_2, f1g0, f1g1_2, f1g2, f1g3_2, f1g4, f1g5_2, f1g6, f1g7_2, f1g8, f1g9_38, f2, f2g0, f2g1, f2g2, f2g3, f2g4, f2g5, f2g6, f2g7, f2g8_19, f2g9_19, f3, f3_2, f3g0, f3g1_2, f3g2, f3g3_2, f3g4, f3g5_2, f3g6, f3g7_38, f3g8_19, f3g9_38, f4, f4g0, f4g1, f4g2, f4g3, f4g4, f4g5, f4g6_19, f4g7_19, f4g8_19, f4g9_19, f5, f5_2, f5g0, f5g1_2, f5g2, f5g3_2, f5g4, f5g5_38, f5g6_19, f5g7_38, f5g8_19, f5g9_38, f6, f6g0, f6g1, f6g2, f6g3, f6g4_19, f6g5_19, f6g6_19, f6g7_19, f6g8_19, f6g9_19, f7, f7_2, f7g0, f7g1_2, f7g2, f7g3_38, f7g4_19, f7g5_38, f7g6_19, f7g7_38, f7g8_19, f7g9_38, f8, f8g0, f8g1, f8g2_19, f8g3_19, f8g4_19, f8g5_19, f8g6_19, f8g7_19, f8g8_19, f8g9_19, f9, f9_2, f9g0, f9g1_38, f9g2_19, f9g3_38, f9g4_19, f9g5_38, f9g6_19, f9g7_38, f9g8_19, f9g9_38, g, g0, g1, g1_19, g2, g2_19, g3, g3_19, g4, g4_19, g5, g5_19, g6, g6_19, g7, g7_19, g8, g8_19, g9, g9_19, h, h0, h1, h2, h3, h4, h5, h6, h7, h8, h9, x, x$1, x$10, x$100, x$101, x$102, x$103, x$11, x$12, x$13, x$14, x$15, x$16, x$17, x$18, x$19, x$2, x$20, x$21, x$22, x$23, x$24, x$25, x$26, x$27, x$28, x$29, x$3, x$30, x$31, x$32, x$33, x$34, x$35, x$36, x$37, x$38, x$39, x$4, x$40, x$41, x$42, x$43, x$44, x$45, x$46, x$47, x$48, x$49, x$5, x$50, x$51, x$52, x$53, x$54, x$55, x$56, x$57, x$58, x$59, x$6, x$60, x$61, x$62, x$63, x$64, x$65, x$66, x$67, x$68, x$69, x$7, x$70, x$71, x$72, x$73, x$74, x$75, x$76, x$77, x$78, x$79, x$8, x$80, x$81, x$82, x$83, x$84, x$85, x$86, x$87, x$88, x$89, x$9, x$90, x$91, x$92, x$93, x$94, x$95, x$96, x$97, x$98, x$99;
 74047  		f0 = (f.nilCheck, f[0]);
 74048  		f1 = (f.nilCheck, f[1]);
 74049  		f2 = (f.nilCheck, f[2]);
 74050  		f3 = (f.nilCheck, f[3]);
 74051  		f4 = (f.nilCheck, f[4]);
 74052  		f5 = (f.nilCheck, f[5]);
 74053  		f6 = (f.nilCheck, f[6]);
 74054  		f7 = (f.nilCheck, f[7]);
 74055  		f8 = (f.nilCheck, f[8]);
 74056  		f9 = (f.nilCheck, f[9]);
 74057  		g0 = (g.nilCheck, g[0]);
 74058  		g1 = (g.nilCheck, g[1]);
 74059  		g2 = (g.nilCheck, g[2]);
 74060  		g3 = (g.nilCheck, g[3]);
 74061  		g4 = (g.nilCheck, g[4]);
 74062  		g5 = (g.nilCheck, g[5]);
 74063  		g6 = (g.nilCheck, g[6]);
 74064  		g7 = (g.nilCheck, g[7]);
 74065  		g8 = (g.nilCheck, g[8]);
 74066  		g9 = (g.nilCheck, g[9]);
 74067  		g1_19 = $imul(19, g1);
 74068  		g2_19 = $imul(19, g2);
 74069  		g3_19 = $imul(19, g3);
 74070  		g4_19 = $imul(19, g4);
 74071  		g5_19 = $imul(19, g5);
 74072  		g6_19 = $imul(19, g6);
 74073  		g7_19 = $imul(19, g7);
 74074  		g8_19 = $imul(19, g8);
 74075  		g9_19 = $imul(19, g9);
 74076  		f1_2 = $imul(2, f1);
 74077  		f3_2 = $imul(2, f3);
 74078  		f5_2 = $imul(2, f5);
 74079  		f7_2 = $imul(2, f7);
 74080  		f9_2 = $imul(2, f9);
 74081  		f0g0 = $mul64((new $Int64(0, f0)), (new $Int64(0, g0)));
 74082  		f0g1 = $mul64((new $Int64(0, f0)), (new $Int64(0, g1)));
 74083  		f0g2 = $mul64((new $Int64(0, f0)), (new $Int64(0, g2)));
 74084  		f0g3 = $mul64((new $Int64(0, f0)), (new $Int64(0, g3)));
 74085  		f0g4 = $mul64((new $Int64(0, f0)), (new $Int64(0, g4)));
 74086  		f0g5 = $mul64((new $Int64(0, f0)), (new $Int64(0, g5)));
 74087  		f0g6 = $mul64((new $Int64(0, f0)), (new $Int64(0, g6)));
 74088  		f0g7 = $mul64((new $Int64(0, f0)), (new $Int64(0, g7)));
 74089  		f0g8 = $mul64((new $Int64(0, f0)), (new $Int64(0, g8)));
 74090  		f0g9 = $mul64((new $Int64(0, f0)), (new $Int64(0, g9)));
 74091  		f1g0 = $mul64((new $Int64(0, f1)), (new $Int64(0, g0)));
 74092  		f1g1_2 = $mul64((new $Int64(0, f1_2)), (new $Int64(0, g1)));
 74093  		f1g2 = $mul64((new $Int64(0, f1)), (new $Int64(0, g2)));
 74094  		f1g3_2 = $mul64((new $Int64(0, f1_2)), (new $Int64(0, g3)));
 74095  		f1g4 = $mul64((new $Int64(0, f1)), (new $Int64(0, g4)));
 74096  		f1g5_2 = $mul64((new $Int64(0, f1_2)), (new $Int64(0, g5)));
 74097  		f1g6 = $mul64((new $Int64(0, f1)), (new $Int64(0, g6)));
 74098  		f1g7_2 = $mul64((new $Int64(0, f1_2)), (new $Int64(0, g7)));
 74099  		f1g8 = $mul64((new $Int64(0, f1)), (new $Int64(0, g8)));
 74100  		f1g9_38 = $mul64((new $Int64(0, f1_2)), (new $Int64(0, g9_19)));
 74101  		f2g0 = $mul64((new $Int64(0, f2)), (new $Int64(0, g0)));
 74102  		f2g1 = $mul64((new $Int64(0, f2)), (new $Int64(0, g1)));
 74103  		f2g2 = $mul64((new $Int64(0, f2)), (new $Int64(0, g2)));
 74104  		f2g3 = $mul64((new $Int64(0, f2)), (new $Int64(0, g3)));
 74105  		f2g4 = $mul64((new $Int64(0, f2)), (new $Int64(0, g4)));
 74106  		f2g5 = $mul64((new $Int64(0, f2)), (new $Int64(0, g5)));
 74107  		f2g6 = $mul64((new $Int64(0, f2)), (new $Int64(0, g6)));
 74108  		f2g7 = $mul64((new $Int64(0, f2)), (new $Int64(0, g7)));
 74109  		f2g8_19 = $mul64((new $Int64(0, f2)), (new $Int64(0, g8_19)));
 74110  		f2g9_19 = $mul64((new $Int64(0, f2)), (new $Int64(0, g9_19)));
 74111  		f3g0 = $mul64((new $Int64(0, f3)), (new $Int64(0, g0)));
 74112  		f3g1_2 = $mul64((new $Int64(0, f3_2)), (new $Int64(0, g1)));
 74113  		f3g2 = $mul64((new $Int64(0, f3)), (new $Int64(0, g2)));
 74114  		f3g3_2 = $mul64((new $Int64(0, f3_2)), (new $Int64(0, g3)));
 74115  		f3g4 = $mul64((new $Int64(0, f3)), (new $Int64(0, g4)));
 74116  		f3g5_2 = $mul64((new $Int64(0, f3_2)), (new $Int64(0, g5)));
 74117  		f3g6 = $mul64((new $Int64(0, f3)), (new $Int64(0, g6)));
 74118  		f3g7_38 = $mul64((new $Int64(0, f3_2)), (new $Int64(0, g7_19)));
 74119  		f3g8_19 = $mul64((new $Int64(0, f3)), (new $Int64(0, g8_19)));
 74120  		f3g9_38 = $mul64((new $Int64(0, f3_2)), (new $Int64(0, g9_19)));
 74121  		f4g0 = $mul64((new $Int64(0, f4)), (new $Int64(0, g0)));
 74122  		f4g1 = $mul64((new $Int64(0, f4)), (new $Int64(0, g1)));
 74123  		f4g2 = $mul64((new $Int64(0, f4)), (new $Int64(0, g2)));
 74124  		f4g3 = $mul64((new $Int64(0, f4)), (new $Int64(0, g3)));
 74125  		f4g4 = $mul64((new $Int64(0, f4)), (new $Int64(0, g4)));
 74126  		f4g5 = $mul64((new $Int64(0, f4)), (new $Int64(0, g5)));
 74127  		f4g6_19 = $mul64((new $Int64(0, f4)), (new $Int64(0, g6_19)));
 74128  		f4g7_19 = $mul64((new $Int64(0, f4)), (new $Int64(0, g7_19)));
 74129  		f4g8_19 = $mul64((new $Int64(0, f4)), (new $Int64(0, g8_19)));
 74130  		f4g9_19 = $mul64((new $Int64(0, f4)), (new $Int64(0, g9_19)));
 74131  		f5g0 = $mul64((new $Int64(0, f5)), (new $Int64(0, g0)));
 74132  		f5g1_2 = $mul64((new $Int64(0, f5_2)), (new $Int64(0, g1)));
 74133  		f5g2 = $mul64((new $Int64(0, f5)), (new $Int64(0, g2)));
 74134  		f5g3_2 = $mul64((new $Int64(0, f5_2)), (new $Int64(0, g3)));
 74135  		f5g4 = $mul64((new $Int64(0, f5)), (new $Int64(0, g4)));
 74136  		f5g5_38 = $mul64((new $Int64(0, f5_2)), (new $Int64(0, g5_19)));
 74137  		f5g6_19 = $mul64((new $Int64(0, f5)), (new $Int64(0, g6_19)));
 74138  		f5g7_38 = $mul64((new $Int64(0, f5_2)), (new $Int64(0, g7_19)));
 74139  		f5g8_19 = $mul64((new $Int64(0, f5)), (new $Int64(0, g8_19)));
 74140  		f5g9_38 = $mul64((new $Int64(0, f5_2)), (new $Int64(0, g9_19)));
 74141  		f6g0 = $mul64((new $Int64(0, f6)), (new $Int64(0, g0)));
 74142  		f6g1 = $mul64((new $Int64(0, f6)), (new $Int64(0, g1)));
 74143  		f6g2 = $mul64((new $Int64(0, f6)), (new $Int64(0, g2)));
 74144  		f6g3 = $mul64((new $Int64(0, f6)), (new $Int64(0, g3)));
 74145  		f6g4_19 = $mul64((new $Int64(0, f6)), (new $Int64(0, g4_19)));
 74146  		f6g5_19 = $mul64((new $Int64(0, f6)), (new $Int64(0, g5_19)));
 74147  		f6g6_19 = $mul64((new $Int64(0, f6)), (new $Int64(0, g6_19)));
 74148  		f6g7_19 = $mul64((new $Int64(0, f6)), (new $Int64(0, g7_19)));
 74149  		f6g8_19 = $mul64((new $Int64(0, f6)), (new $Int64(0, g8_19)));
 74150  		f6g9_19 = $mul64((new $Int64(0, f6)), (new $Int64(0, g9_19)));
 74151  		f7g0 = $mul64((new $Int64(0, f7)), (new $Int64(0, g0)));
 74152  		f7g1_2 = $mul64((new $Int64(0, f7_2)), (new $Int64(0, g1)));
 74153  		f7g2 = $mul64((new $Int64(0, f7)), (new $Int64(0, g2)));
 74154  		f7g3_38 = $mul64((new $Int64(0, f7_2)), (new $Int64(0, g3_19)));
 74155  		f7g4_19 = $mul64((new $Int64(0, f7)), (new $Int64(0, g4_19)));
 74156  		f7g5_38 = $mul64((new $Int64(0, f7_2)), (new $Int64(0, g5_19)));
 74157  		f7g6_19 = $mul64((new $Int64(0, f7)), (new $Int64(0, g6_19)));
 74158  		f7g7_38 = $mul64((new $Int64(0, f7_2)), (new $Int64(0, g7_19)));
 74159  		f7g8_19 = $mul64((new $Int64(0, f7)), (new $Int64(0, g8_19)));
 74160  		f7g9_38 = $mul64((new $Int64(0, f7_2)), (new $Int64(0, g9_19)));
 74161  		f8g0 = $mul64((new $Int64(0, f8)), (new $Int64(0, g0)));
 74162  		f8g1 = $mul64((new $Int64(0, f8)), (new $Int64(0, g1)));
 74163  		f8g2_19 = $mul64((new $Int64(0, f8)), (new $Int64(0, g2_19)));
 74164  		f8g3_19 = $mul64((new $Int64(0, f8)), (new $Int64(0, g3_19)));
 74165  		f8g4_19 = $mul64((new $Int64(0, f8)), (new $Int64(0, g4_19)));
 74166  		f8g5_19 = $mul64((new $Int64(0, f8)), (new $Int64(0, g5_19)));
 74167  		f8g6_19 = $mul64((new $Int64(0, f8)), (new $Int64(0, g6_19)));
 74168  		f8g7_19 = $mul64((new $Int64(0, f8)), (new $Int64(0, g7_19)));
 74169  		f8g8_19 = $mul64((new $Int64(0, f8)), (new $Int64(0, g8_19)));
 74170  		f8g9_19 = $mul64((new $Int64(0, f8)), (new $Int64(0, g9_19)));
 74171  		f9g0 = $mul64((new $Int64(0, f9)), (new $Int64(0, g0)));
 74172  		f9g1_38 = $mul64((new $Int64(0, f9_2)), (new $Int64(0, g1_19)));
 74173  		f9g2_19 = $mul64((new $Int64(0, f9)), (new $Int64(0, g2_19)));
 74174  		f9g3_38 = $mul64((new $Int64(0, f9_2)), (new $Int64(0, g3_19)));
 74175  		f9g4_19 = $mul64((new $Int64(0, f9)), (new $Int64(0, g4_19)));
 74176  		f9g5_38 = $mul64((new $Int64(0, f9_2)), (new $Int64(0, g5_19)));
 74177  		f9g6_19 = $mul64((new $Int64(0, f9)), (new $Int64(0, g6_19)));
 74178  		f9g7_38 = $mul64((new $Int64(0, f9_2)), (new $Int64(0, g7_19)));
 74179  		f9g8_19 = $mul64((new $Int64(0, f9)), (new $Int64(0, g8_19)));
 74180  		f9g9_38 = $mul64((new $Int64(0, f9_2)), (new $Int64(0, g9_19)));
 74181  		h0 = (x = (x$1 = (x$2 = (x$3 = (x$4 = (x$5 = (x$6 = (x$7 = new $Int64(f0g0.$high + f1g9_38.$high, f0g0.$low + f1g9_38.$low), new $Int64(x$7.$high + f2g8_19.$high, x$7.$low + f2g8_19.$low)), new $Int64(x$6.$high + f3g7_38.$high, x$6.$low + f3g7_38.$low)), new $Int64(x$5.$high + f4g6_19.$high, x$5.$low + f4g6_19.$low)), new $Int64(x$4.$high + f5g5_38.$high, x$4.$low + f5g5_38.$low)), new $Int64(x$3.$high + f6g4_19.$high, x$3.$low + f6g4_19.$low)), new $Int64(x$2.$high + f7g3_38.$high, x$2.$low + f7g3_38.$low)), new $Int64(x$1.$high + f8g2_19.$high, x$1.$low + f8g2_19.$low)), new $Int64(x.$high + f9g1_38.$high, x.$low + f9g1_38.$low));
 74182  		h1 = (x$8 = (x$9 = (x$10 = (x$11 = (x$12 = (x$13 = (x$14 = (x$15 = new $Int64(f0g1.$high + f1g0.$high, f0g1.$low + f1g0.$low), new $Int64(x$15.$high + f2g9_19.$high, x$15.$low + f2g9_19.$low)), new $Int64(x$14.$high + f3g8_19.$high, x$14.$low + f3g8_19.$low)), new $Int64(x$13.$high + f4g7_19.$high, x$13.$low + f4g7_19.$low)), new $Int64(x$12.$high + f5g6_19.$high, x$12.$low + f5g6_19.$low)), new $Int64(x$11.$high + f6g5_19.$high, x$11.$low + f6g5_19.$low)), new $Int64(x$10.$high + f7g4_19.$high, x$10.$low + f7g4_19.$low)), new $Int64(x$9.$high + f8g3_19.$high, x$9.$low + f8g3_19.$low)), new $Int64(x$8.$high + f9g2_19.$high, x$8.$low + f9g2_19.$low));
 74183  		h2 = (x$16 = (x$17 = (x$18 = (x$19 = (x$20 = (x$21 = (x$22 = (x$23 = new $Int64(f0g2.$high + f1g1_2.$high, f0g2.$low + f1g1_2.$low), new $Int64(x$23.$high + f2g0.$high, x$23.$low + f2g0.$low)), new $Int64(x$22.$high + f3g9_38.$high, x$22.$low + f3g9_38.$low)), new $Int64(x$21.$high + f4g8_19.$high, x$21.$low + f4g8_19.$low)), new $Int64(x$20.$high + f5g7_38.$high, x$20.$low + f5g7_38.$low)), new $Int64(x$19.$high + f6g6_19.$high, x$19.$low + f6g6_19.$low)), new $Int64(x$18.$high + f7g5_38.$high, x$18.$low + f7g5_38.$low)), new $Int64(x$17.$high + f8g4_19.$high, x$17.$low + f8g4_19.$low)), new $Int64(x$16.$high + f9g3_38.$high, x$16.$low + f9g3_38.$low));
 74184  		h3 = (x$24 = (x$25 = (x$26 = (x$27 = (x$28 = (x$29 = (x$30 = (x$31 = new $Int64(f0g3.$high + f1g2.$high, f0g3.$low + f1g2.$low), new $Int64(x$31.$high + f2g1.$high, x$31.$low + f2g1.$low)), new $Int64(x$30.$high + f3g0.$high, x$30.$low + f3g0.$low)), new $Int64(x$29.$high + f4g9_19.$high, x$29.$low + f4g9_19.$low)), new $Int64(x$28.$high + f5g8_19.$high, x$28.$low + f5g8_19.$low)), new $Int64(x$27.$high + f6g7_19.$high, x$27.$low + f6g7_19.$low)), new $Int64(x$26.$high + f7g6_19.$high, x$26.$low + f7g6_19.$low)), new $Int64(x$25.$high + f8g5_19.$high, x$25.$low + f8g5_19.$low)), new $Int64(x$24.$high + f9g4_19.$high, x$24.$low + f9g4_19.$low));
 74185  		h4 = (x$32 = (x$33 = (x$34 = (x$35 = (x$36 = (x$37 = (x$38 = (x$39 = new $Int64(f0g4.$high + f1g3_2.$high, f0g4.$low + f1g3_2.$low), new $Int64(x$39.$high + f2g2.$high, x$39.$low + f2g2.$low)), new $Int64(x$38.$high + f3g1_2.$high, x$38.$low + f3g1_2.$low)), new $Int64(x$37.$high + f4g0.$high, x$37.$low + f4g0.$low)), new $Int64(x$36.$high + f5g9_38.$high, x$36.$low + f5g9_38.$low)), new $Int64(x$35.$high + f6g8_19.$high, x$35.$low + f6g8_19.$low)), new $Int64(x$34.$high + f7g7_38.$high, x$34.$low + f7g7_38.$low)), new $Int64(x$33.$high + f8g6_19.$high, x$33.$low + f8g6_19.$low)), new $Int64(x$32.$high + f9g5_38.$high, x$32.$low + f9g5_38.$low));
 74186  		h5 = (x$40 = (x$41 = (x$42 = (x$43 = (x$44 = (x$45 = (x$46 = (x$47 = new $Int64(f0g5.$high + f1g4.$high, f0g5.$low + f1g4.$low), new $Int64(x$47.$high + f2g3.$high, x$47.$low + f2g3.$low)), new $Int64(x$46.$high + f3g2.$high, x$46.$low + f3g2.$low)), new $Int64(x$45.$high + f4g1.$high, x$45.$low + f4g1.$low)), new $Int64(x$44.$high + f5g0.$high, x$44.$low + f5g0.$low)), new $Int64(x$43.$high + f6g9_19.$high, x$43.$low + f6g9_19.$low)), new $Int64(x$42.$high + f7g8_19.$high, x$42.$low + f7g8_19.$low)), new $Int64(x$41.$high + f8g7_19.$high, x$41.$low + f8g7_19.$low)), new $Int64(x$40.$high + f9g6_19.$high, x$40.$low + f9g6_19.$low));
 74187  		h6 = (x$48 = (x$49 = (x$50 = (x$51 = (x$52 = (x$53 = (x$54 = (x$55 = new $Int64(f0g6.$high + f1g5_2.$high, f0g6.$low + f1g5_2.$low), new $Int64(x$55.$high + f2g4.$high, x$55.$low + f2g4.$low)), new $Int64(x$54.$high + f3g3_2.$high, x$54.$low + f3g3_2.$low)), new $Int64(x$53.$high + f4g2.$high, x$53.$low + f4g2.$low)), new $Int64(x$52.$high + f5g1_2.$high, x$52.$low + f5g1_2.$low)), new $Int64(x$51.$high + f6g0.$high, x$51.$low + f6g0.$low)), new $Int64(x$50.$high + f7g9_38.$high, x$50.$low + f7g9_38.$low)), new $Int64(x$49.$high + f8g8_19.$high, x$49.$low + f8g8_19.$low)), new $Int64(x$48.$high + f9g7_38.$high, x$48.$low + f9g7_38.$low));
 74188  		h7 = (x$56 = (x$57 = (x$58 = (x$59 = (x$60 = (x$61 = (x$62 = (x$63 = new $Int64(f0g7.$high + f1g6.$high, f0g7.$low + f1g6.$low), new $Int64(x$63.$high + f2g5.$high, x$63.$low + f2g5.$low)), new $Int64(x$62.$high + f3g4.$high, x$62.$low + f3g4.$low)), new $Int64(x$61.$high + f4g3.$high, x$61.$low + f4g3.$low)), new $Int64(x$60.$high + f5g2.$high, x$60.$low + f5g2.$low)), new $Int64(x$59.$high + f6g1.$high, x$59.$low + f6g1.$low)), new $Int64(x$58.$high + f7g0.$high, x$58.$low + f7g0.$low)), new $Int64(x$57.$high + f8g9_19.$high, x$57.$low + f8g9_19.$low)), new $Int64(x$56.$high + f9g8_19.$high, x$56.$low + f9g8_19.$low));
 74189  		h8 = (x$64 = (x$65 = (x$66 = (x$67 = (x$68 = (x$69 = (x$70 = (x$71 = new $Int64(f0g8.$high + f1g7_2.$high, f0g8.$low + f1g7_2.$low), new $Int64(x$71.$high + f2g6.$high, x$71.$low + f2g6.$low)), new $Int64(x$70.$high + f3g5_2.$high, x$70.$low + f3g5_2.$low)), new $Int64(x$69.$high + f4g4.$high, x$69.$low + f4g4.$low)), new $Int64(x$68.$high + f5g3_2.$high, x$68.$low + f5g3_2.$low)), new $Int64(x$67.$high + f6g2.$high, x$67.$low + f6g2.$low)), new $Int64(x$66.$high + f7g1_2.$high, x$66.$low + f7g1_2.$low)), new $Int64(x$65.$high + f8g0.$high, x$65.$low + f8g0.$low)), new $Int64(x$64.$high + f9g9_38.$high, x$64.$low + f9g9_38.$low));
 74190  		h9 = (x$72 = (x$73 = (x$74 = (x$75 = (x$76 = (x$77 = (x$78 = (x$79 = new $Int64(f0g9.$high + f1g8.$high, f0g9.$low + f1g8.$low), new $Int64(x$79.$high + f2g7.$high, x$79.$low + f2g7.$low)), new $Int64(x$78.$high + f3g6.$high, x$78.$low + f3g6.$low)), new $Int64(x$77.$high + f4g5.$high, x$77.$low + f4g5.$low)), new $Int64(x$76.$high + f5g4.$high, x$76.$low + f5g4.$low)), new $Int64(x$75.$high + f6g3.$high, x$75.$low + f6g3.$low)), new $Int64(x$74.$high + f7g2.$high, x$74.$low + f7g2.$low)), new $Int64(x$73.$high + f8g1.$high, x$73.$low + f8g1.$low)), new $Int64(x$72.$high + f9g0.$high, x$72.$low + f9g0.$low));
 74191  		carry = arrayType.zero();
 74192  		carry[0] = $shiftRightInt64((new $Int64(h0.$high + 0, h0.$low + 33554432)), 26);
 74193  		h1 = (x$80 = carry[0], new $Int64(h1.$high + x$80.$high, h1.$low + x$80.$low));
 74194  		h0 = (x$81 = $shiftLeft64(carry[0], 26), new $Int64(h0.$high - x$81.$high, h0.$low - x$81.$low));
 74195  		carry[4] = $shiftRightInt64((new $Int64(h4.$high + 0, h4.$low + 33554432)), 26);
 74196  		h5 = (x$82 = carry[4], new $Int64(h5.$high + x$82.$high, h5.$low + x$82.$low));
 74197  		h4 = (x$83 = $shiftLeft64(carry[4], 26), new $Int64(h4.$high - x$83.$high, h4.$low - x$83.$low));
 74198  		carry[1] = $shiftRightInt64((new $Int64(h1.$high + 0, h1.$low + 16777216)), 25);
 74199  		h2 = (x$84 = carry[1], new $Int64(h2.$high + x$84.$high, h2.$low + x$84.$low));
 74200  		h1 = (x$85 = $shiftLeft64(carry[1], 25), new $Int64(h1.$high - x$85.$high, h1.$low - x$85.$low));
 74201  		carry[5] = $shiftRightInt64((new $Int64(h5.$high + 0, h5.$low + 16777216)), 25);
 74202  		h6 = (x$86 = carry[5], new $Int64(h6.$high + x$86.$high, h6.$low + x$86.$low));
 74203  		h5 = (x$87 = $shiftLeft64(carry[5], 25), new $Int64(h5.$high - x$87.$high, h5.$low - x$87.$low));
 74204  		carry[2] = $shiftRightInt64((new $Int64(h2.$high + 0, h2.$low + 33554432)), 26);
 74205  		h3 = (x$88 = carry[2], new $Int64(h3.$high + x$88.$high, h3.$low + x$88.$low));
 74206  		h2 = (x$89 = $shiftLeft64(carry[2], 26), new $Int64(h2.$high - x$89.$high, h2.$low - x$89.$low));
 74207  		carry[6] = $shiftRightInt64((new $Int64(h6.$high + 0, h6.$low + 33554432)), 26);
 74208  		h7 = (x$90 = carry[6], new $Int64(h7.$high + x$90.$high, h7.$low + x$90.$low));
 74209  		h6 = (x$91 = $shiftLeft64(carry[6], 26), new $Int64(h6.$high - x$91.$high, h6.$low - x$91.$low));
 74210  		carry[3] = $shiftRightInt64((new $Int64(h3.$high + 0, h3.$low + 16777216)), 25);
 74211  		h4 = (x$92 = carry[3], new $Int64(h4.$high + x$92.$high, h4.$low + x$92.$low));
 74212  		h3 = (x$93 = $shiftLeft64(carry[3], 25), new $Int64(h3.$high - x$93.$high, h3.$low - x$93.$low));
 74213  		carry[7] = $shiftRightInt64((new $Int64(h7.$high + 0, h7.$low + 16777216)), 25);
 74214  		h8 = (x$94 = carry[7], new $Int64(h8.$high + x$94.$high, h8.$low + x$94.$low));
 74215  		h7 = (x$95 = $shiftLeft64(carry[7], 25), new $Int64(h7.$high - x$95.$high, h7.$low - x$95.$low));
 74216  		carry[4] = $shiftRightInt64((new $Int64(h4.$high + 0, h4.$low + 33554432)), 26);
 74217  		h5 = (x$96 = carry[4], new $Int64(h5.$high + x$96.$high, h5.$low + x$96.$low));
 74218  		h4 = (x$97 = $shiftLeft64(carry[4], 26), new $Int64(h4.$high - x$97.$high, h4.$low - x$97.$low));
 74219  		carry[8] = $shiftRightInt64((new $Int64(h8.$high + 0, h8.$low + 33554432)), 26);
 74220  		h9 = (x$98 = carry[8], new $Int64(h9.$high + x$98.$high, h9.$low + x$98.$low));
 74221  		h8 = (x$99 = $shiftLeft64(carry[8], 26), new $Int64(h8.$high - x$99.$high, h8.$low - x$99.$low));
 74222  		carry[9] = $shiftRightInt64((new $Int64(h9.$high + 0, h9.$low + 16777216)), 25);
 74223  		h0 = (x$100 = $mul64(carry[9], new $Int64(0, 19)), new $Int64(h0.$high + x$100.$high, h0.$low + x$100.$low));
 74224  		h9 = (x$101 = $shiftLeft64(carry[9], 25), new $Int64(h9.$high - x$101.$high, h9.$low - x$101.$low));
 74225  		carry[0] = $shiftRightInt64((new $Int64(h0.$high + 0, h0.$low + 33554432)), 26);
 74226  		h1 = (x$102 = carry[0], new $Int64(h1.$high + x$102.$high, h1.$low + x$102.$low));
 74227  		h0 = (x$103 = $shiftLeft64(carry[0], 26), new $Int64(h0.$high - x$103.$high, h0.$low - x$103.$low));
 74228  		h.nilCheck, h[0] = (((h0.$low + ((h0.$high >> 31) * 4294967296)) >> 0));
 74229  		h.nilCheck, h[1] = (((h1.$low + ((h1.$high >> 31) * 4294967296)) >> 0));
 74230  		h.nilCheck, h[2] = (((h2.$low + ((h2.$high >> 31) * 4294967296)) >> 0));
 74231  		h.nilCheck, h[3] = (((h3.$low + ((h3.$high >> 31) * 4294967296)) >> 0));
 74232  		h.nilCheck, h[4] = (((h4.$low + ((h4.$high >> 31) * 4294967296)) >> 0));
 74233  		h.nilCheck, h[5] = (((h5.$low + ((h5.$high >> 31) * 4294967296)) >> 0));
 74234  		h.nilCheck, h[6] = (((h6.$low + ((h6.$high >> 31) * 4294967296)) >> 0));
 74235  		h.nilCheck, h[7] = (((h7.$low + ((h7.$high >> 31) * 4294967296)) >> 0));
 74236  		h.nilCheck, h[8] = (((h8.$low + ((h8.$high >> 31) * 4294967296)) >> 0));
 74237  		h.nilCheck, h[9] = (((h9.$low + ((h9.$high >> 31) * 4294967296)) >> 0));
 74238  	};
 74239  	feSquare = function(h, f) {
 74240  		var carry, f, f0, f0_2, f0f0, f0f1_2, f0f2_2, f0f3_2, f0f4_2, f0f5_2, f0f6_2, f0f7_2, f0f8_2, f0f9_2, f1, f1_2, f1f1_2, f1f2_2, f1f3_4, f1f4_2, f1f5_4, f1f6_2, f1f7_4, f1f8_2, f1f9_76, f2, f2_2, f2f2, f2f3_2, f2f4_2, f2f5_2, f2f6_2, f2f7_2, f2f8_38, f2f9_38, f3, f3_2, f3f3_2, f3f4_2, f3f5_4, f3f6_2, f3f7_76, f3f8_38, f3f9_76, f4, f4_2, f4f4, f4f5_2, f4f6_38, f4f7_38, f4f8_38, f4f9_38, f5, f5_2, f5_38, f5f5_38, f5f6_38, f5f7_76, f5f8_38, f5f9_76, f6, f6_19, f6_2, f6f6_19, f6f7_38, f6f8_38, f6f9_38, f7, f7_2, f7_38, f7f7_38, f7f8_38, f7f9_76, f8, f8_19, f8f8_19, f8f9_38, f9, f9_38, f9f9_38, h, h0, h1, h2, h3, h4, h5, h6, h7, h8, h9, x, x$1, x$10, x$11, x$12, x$13, x$14, x$15, x$16, x$17, x$18, x$19, x$2, x$20, x$21, x$22, x$23, x$24, x$25, x$26, x$27, x$28, x$29, x$3, x$30, x$31, x$32, x$33, x$34, x$35, x$36, x$37, x$38, x$39, x$4, x$40, x$41, x$42, x$43, x$44, x$45, x$46, x$47, x$48, x$49, x$5, x$50, x$51, x$52, x$53, x$54, x$55, x$56, x$57, x$58, x$6, x$7, x$8, x$9;
 74241  		f0 = (f.nilCheck, f[0]);
 74242  		f1 = (f.nilCheck, f[1]);
 74243  		f2 = (f.nilCheck, f[2]);
 74244  		f3 = (f.nilCheck, f[3]);
 74245  		f4 = (f.nilCheck, f[4]);
 74246  		f5 = (f.nilCheck, f[5]);
 74247  		f6 = (f.nilCheck, f[6]);
 74248  		f7 = (f.nilCheck, f[7]);
 74249  		f8 = (f.nilCheck, f[8]);
 74250  		f9 = (f.nilCheck, f[9]);
 74251  		f0_2 = $imul(2, f0);
 74252  		f1_2 = $imul(2, f1);
 74253  		f2_2 = $imul(2, f2);
 74254  		f3_2 = $imul(2, f3);
 74255  		f4_2 = $imul(2, f4);
 74256  		f5_2 = $imul(2, f5);
 74257  		f6_2 = $imul(2, f6);
 74258  		f7_2 = $imul(2, f7);
 74259  		f5_38 = $imul(38, f5);
 74260  		f6_19 = $imul(19, f6);
 74261  		f7_38 = $imul(38, f7);
 74262  		f8_19 = $imul(19, f8);
 74263  		f9_38 = $imul(38, f9);
 74264  		f0f0 = $mul64((new $Int64(0, f0)), (new $Int64(0, f0)));
 74265  		f0f1_2 = $mul64((new $Int64(0, f0_2)), (new $Int64(0, f1)));
 74266  		f0f2_2 = $mul64((new $Int64(0, f0_2)), (new $Int64(0, f2)));
 74267  		f0f3_2 = $mul64((new $Int64(0, f0_2)), (new $Int64(0, f3)));
 74268  		f0f4_2 = $mul64((new $Int64(0, f0_2)), (new $Int64(0, f4)));
 74269  		f0f5_2 = $mul64((new $Int64(0, f0_2)), (new $Int64(0, f5)));
 74270  		f0f6_2 = $mul64((new $Int64(0, f0_2)), (new $Int64(0, f6)));
 74271  		f0f7_2 = $mul64((new $Int64(0, f0_2)), (new $Int64(0, f7)));
 74272  		f0f8_2 = $mul64((new $Int64(0, f0_2)), (new $Int64(0, f8)));
 74273  		f0f9_2 = $mul64((new $Int64(0, f0_2)), (new $Int64(0, f9)));
 74274  		f1f1_2 = $mul64((new $Int64(0, f1_2)), (new $Int64(0, f1)));
 74275  		f1f2_2 = $mul64((new $Int64(0, f1_2)), (new $Int64(0, f2)));
 74276  		f1f3_4 = $mul64((new $Int64(0, f1_2)), (new $Int64(0, f3_2)));
 74277  		f1f4_2 = $mul64((new $Int64(0, f1_2)), (new $Int64(0, f4)));
 74278  		f1f5_4 = $mul64((new $Int64(0, f1_2)), (new $Int64(0, f5_2)));
 74279  		f1f6_2 = $mul64((new $Int64(0, f1_2)), (new $Int64(0, f6)));
 74280  		f1f7_4 = $mul64((new $Int64(0, f1_2)), (new $Int64(0, f7_2)));
 74281  		f1f8_2 = $mul64((new $Int64(0, f1_2)), (new $Int64(0, f8)));
 74282  		f1f9_76 = $mul64((new $Int64(0, f1_2)), (new $Int64(0, f9_38)));
 74283  		f2f2 = $mul64((new $Int64(0, f2)), (new $Int64(0, f2)));
 74284  		f2f3_2 = $mul64((new $Int64(0, f2_2)), (new $Int64(0, f3)));
 74285  		f2f4_2 = $mul64((new $Int64(0, f2_2)), (new $Int64(0, f4)));
 74286  		f2f5_2 = $mul64((new $Int64(0, f2_2)), (new $Int64(0, f5)));
 74287  		f2f6_2 = $mul64((new $Int64(0, f2_2)), (new $Int64(0, f6)));
 74288  		f2f7_2 = $mul64((new $Int64(0, f2_2)), (new $Int64(0, f7)));
 74289  		f2f8_38 = $mul64((new $Int64(0, f2_2)), (new $Int64(0, f8_19)));
 74290  		f2f9_38 = $mul64((new $Int64(0, f2)), (new $Int64(0, f9_38)));
 74291  		f3f3_2 = $mul64((new $Int64(0, f3_2)), (new $Int64(0, f3)));
 74292  		f3f4_2 = $mul64((new $Int64(0, f3_2)), (new $Int64(0, f4)));
 74293  		f3f5_4 = $mul64((new $Int64(0, f3_2)), (new $Int64(0, f5_2)));
 74294  		f3f6_2 = $mul64((new $Int64(0, f3_2)), (new $Int64(0, f6)));
 74295  		f3f7_76 = $mul64((new $Int64(0, f3_2)), (new $Int64(0, f7_38)));
 74296  		f3f8_38 = $mul64((new $Int64(0, f3_2)), (new $Int64(0, f8_19)));
 74297  		f3f9_76 = $mul64((new $Int64(0, f3_2)), (new $Int64(0, f9_38)));
 74298  		f4f4 = $mul64((new $Int64(0, f4)), (new $Int64(0, f4)));
 74299  		f4f5_2 = $mul64((new $Int64(0, f4_2)), (new $Int64(0, f5)));
 74300  		f4f6_38 = $mul64((new $Int64(0, f4_2)), (new $Int64(0, f6_19)));
 74301  		f4f7_38 = $mul64((new $Int64(0, f4)), (new $Int64(0, f7_38)));
 74302  		f4f8_38 = $mul64((new $Int64(0, f4_2)), (new $Int64(0, f8_19)));
 74303  		f4f9_38 = $mul64((new $Int64(0, f4)), (new $Int64(0, f9_38)));
 74304  		f5f5_38 = $mul64((new $Int64(0, f5)), (new $Int64(0, f5_38)));
 74305  		f5f6_38 = $mul64((new $Int64(0, f5_2)), (new $Int64(0, f6_19)));
 74306  		f5f7_76 = $mul64((new $Int64(0, f5_2)), (new $Int64(0, f7_38)));
 74307  		f5f8_38 = $mul64((new $Int64(0, f5_2)), (new $Int64(0, f8_19)));
 74308  		f5f9_76 = $mul64((new $Int64(0, f5_2)), (new $Int64(0, f9_38)));
 74309  		f6f6_19 = $mul64((new $Int64(0, f6)), (new $Int64(0, f6_19)));
 74310  		f6f7_38 = $mul64((new $Int64(0, f6)), (new $Int64(0, f7_38)));
 74311  		f6f8_38 = $mul64((new $Int64(0, f6_2)), (new $Int64(0, f8_19)));
 74312  		f6f9_38 = $mul64((new $Int64(0, f6)), (new $Int64(0, f9_38)));
 74313  		f7f7_38 = $mul64((new $Int64(0, f7)), (new $Int64(0, f7_38)));
 74314  		f7f8_38 = $mul64((new $Int64(0, f7_2)), (new $Int64(0, f8_19)));
 74315  		f7f9_76 = $mul64((new $Int64(0, f7_2)), (new $Int64(0, f9_38)));
 74316  		f8f8_19 = $mul64((new $Int64(0, f8)), (new $Int64(0, f8_19)));
 74317  		f8f9_38 = $mul64((new $Int64(0, f8)), (new $Int64(0, f9_38)));
 74318  		f9f9_38 = $mul64((new $Int64(0, f9)), (new $Int64(0, f9_38)));
 74319  		h0 = (x = (x$1 = (x$2 = (x$3 = new $Int64(f0f0.$high + f1f9_76.$high, f0f0.$low + f1f9_76.$low), new $Int64(x$3.$high + f2f8_38.$high, x$3.$low + f2f8_38.$low)), new $Int64(x$2.$high + f3f7_76.$high, x$2.$low + f3f7_76.$low)), new $Int64(x$1.$high + f4f6_38.$high, x$1.$low + f4f6_38.$low)), new $Int64(x.$high + f5f5_38.$high, x.$low + f5f5_38.$low));
 74320  		h1 = (x$4 = (x$5 = (x$6 = new $Int64(f0f1_2.$high + f2f9_38.$high, f0f1_2.$low + f2f9_38.$low), new $Int64(x$6.$high + f3f8_38.$high, x$6.$low + f3f8_38.$low)), new $Int64(x$5.$high + f4f7_38.$high, x$5.$low + f4f7_38.$low)), new $Int64(x$4.$high + f5f6_38.$high, x$4.$low + f5f6_38.$low));
 74321  		h2 = (x$7 = (x$8 = (x$9 = (x$10 = new $Int64(f0f2_2.$high + f1f1_2.$high, f0f2_2.$low + f1f1_2.$low), new $Int64(x$10.$high + f3f9_76.$high, x$10.$low + f3f9_76.$low)), new $Int64(x$9.$high + f4f8_38.$high, x$9.$low + f4f8_38.$low)), new $Int64(x$8.$high + f5f7_76.$high, x$8.$low + f5f7_76.$low)), new $Int64(x$7.$high + f6f6_19.$high, x$7.$low + f6f6_19.$low));
 74322  		h3 = (x$11 = (x$12 = (x$13 = new $Int64(f0f3_2.$high + f1f2_2.$high, f0f3_2.$low + f1f2_2.$low), new $Int64(x$13.$high + f4f9_38.$high, x$13.$low + f4f9_38.$low)), new $Int64(x$12.$high + f5f8_38.$high, x$12.$low + f5f8_38.$low)), new $Int64(x$11.$high + f6f7_38.$high, x$11.$low + f6f7_38.$low));
 74323  		h4 = (x$14 = (x$15 = (x$16 = (x$17 = new $Int64(f0f4_2.$high + f1f3_4.$high, f0f4_2.$low + f1f3_4.$low), new $Int64(x$17.$high + f2f2.$high, x$17.$low + f2f2.$low)), new $Int64(x$16.$high + f5f9_76.$high, x$16.$low + f5f9_76.$low)), new $Int64(x$15.$high + f6f8_38.$high, x$15.$low + f6f8_38.$low)), new $Int64(x$14.$high + f7f7_38.$high, x$14.$low + f7f7_38.$low));
 74324  		h5 = (x$18 = (x$19 = (x$20 = new $Int64(f0f5_2.$high + f1f4_2.$high, f0f5_2.$low + f1f4_2.$low), new $Int64(x$20.$high + f2f3_2.$high, x$20.$low + f2f3_2.$low)), new $Int64(x$19.$high + f6f9_38.$high, x$19.$low + f6f9_38.$low)), new $Int64(x$18.$high + f7f8_38.$high, x$18.$low + f7f8_38.$low));
 74325  		h6 = (x$21 = (x$22 = (x$23 = (x$24 = new $Int64(f0f6_2.$high + f1f5_4.$high, f0f6_2.$low + f1f5_4.$low), new $Int64(x$24.$high + f2f4_2.$high, x$24.$low + f2f4_2.$low)), new $Int64(x$23.$high + f3f3_2.$high, x$23.$low + f3f3_2.$low)), new $Int64(x$22.$high + f7f9_76.$high, x$22.$low + f7f9_76.$low)), new $Int64(x$21.$high + f8f8_19.$high, x$21.$low + f8f8_19.$low));
 74326  		h7 = (x$25 = (x$26 = (x$27 = new $Int64(f0f7_2.$high + f1f6_2.$high, f0f7_2.$low + f1f6_2.$low), new $Int64(x$27.$high + f2f5_2.$high, x$27.$low + f2f5_2.$low)), new $Int64(x$26.$high + f3f4_2.$high, x$26.$low + f3f4_2.$low)), new $Int64(x$25.$high + f8f9_38.$high, x$25.$low + f8f9_38.$low));
 74327  		h8 = (x$28 = (x$29 = (x$30 = (x$31 = new $Int64(f0f8_2.$high + f1f7_4.$high, f0f8_2.$low + f1f7_4.$low), new $Int64(x$31.$high + f2f6_2.$high, x$31.$low + f2f6_2.$low)), new $Int64(x$30.$high + f3f5_4.$high, x$30.$low + f3f5_4.$low)), new $Int64(x$29.$high + f4f4.$high, x$29.$low + f4f4.$low)), new $Int64(x$28.$high + f9f9_38.$high, x$28.$low + f9f9_38.$low));
 74328  		h9 = (x$32 = (x$33 = (x$34 = new $Int64(f0f9_2.$high + f1f8_2.$high, f0f9_2.$low + f1f8_2.$low), new $Int64(x$34.$high + f2f7_2.$high, x$34.$low + f2f7_2.$low)), new $Int64(x$33.$high + f3f6_2.$high, x$33.$low + f3f6_2.$low)), new $Int64(x$32.$high + f4f5_2.$high, x$32.$low + f4f5_2.$low));
 74329  		carry = arrayType.zero();
 74330  		carry[0] = $shiftRightInt64((new $Int64(h0.$high + 0, h0.$low + 33554432)), 26);
 74331  		h1 = (x$35 = carry[0], new $Int64(h1.$high + x$35.$high, h1.$low + x$35.$low));
 74332  		h0 = (x$36 = $shiftLeft64(carry[0], 26), new $Int64(h0.$high - x$36.$high, h0.$low - x$36.$low));
 74333  		carry[4] = $shiftRightInt64((new $Int64(h4.$high + 0, h4.$low + 33554432)), 26);
 74334  		h5 = (x$37 = carry[4], new $Int64(h5.$high + x$37.$high, h5.$low + x$37.$low));
 74335  		h4 = (x$38 = $shiftLeft64(carry[4], 26), new $Int64(h4.$high - x$38.$high, h4.$low - x$38.$low));
 74336  		carry[1] = $shiftRightInt64((new $Int64(h1.$high + 0, h1.$low + 16777216)), 25);
 74337  		h2 = (x$39 = carry[1], new $Int64(h2.$high + x$39.$high, h2.$low + x$39.$low));
 74338  		h1 = (x$40 = $shiftLeft64(carry[1], 25), new $Int64(h1.$high - x$40.$high, h1.$low - x$40.$low));
 74339  		carry[5] = $shiftRightInt64((new $Int64(h5.$high + 0, h5.$low + 16777216)), 25);
 74340  		h6 = (x$41 = carry[5], new $Int64(h6.$high + x$41.$high, h6.$low + x$41.$low));
 74341  		h5 = (x$42 = $shiftLeft64(carry[5], 25), new $Int64(h5.$high - x$42.$high, h5.$low - x$42.$low));
 74342  		carry[2] = $shiftRightInt64((new $Int64(h2.$high + 0, h2.$low + 33554432)), 26);
 74343  		h3 = (x$43 = carry[2], new $Int64(h3.$high + x$43.$high, h3.$low + x$43.$low));
 74344  		h2 = (x$44 = $shiftLeft64(carry[2], 26), new $Int64(h2.$high - x$44.$high, h2.$low - x$44.$low));
 74345  		carry[6] = $shiftRightInt64((new $Int64(h6.$high + 0, h6.$low + 33554432)), 26);
 74346  		h7 = (x$45 = carry[6], new $Int64(h7.$high + x$45.$high, h7.$low + x$45.$low));
 74347  		h6 = (x$46 = $shiftLeft64(carry[6], 26), new $Int64(h6.$high - x$46.$high, h6.$low - x$46.$low));
 74348  		carry[3] = $shiftRightInt64((new $Int64(h3.$high + 0, h3.$low + 16777216)), 25);
 74349  		h4 = (x$47 = carry[3], new $Int64(h4.$high + x$47.$high, h4.$low + x$47.$low));
 74350  		h3 = (x$48 = $shiftLeft64(carry[3], 25), new $Int64(h3.$high - x$48.$high, h3.$low - x$48.$low));
 74351  		carry[7] = $shiftRightInt64((new $Int64(h7.$high + 0, h7.$low + 16777216)), 25);
 74352  		h8 = (x$49 = carry[7], new $Int64(h8.$high + x$49.$high, h8.$low + x$49.$low));
 74353  		h7 = (x$50 = $shiftLeft64(carry[7], 25), new $Int64(h7.$high - x$50.$high, h7.$low - x$50.$low));
 74354  		carry[4] = $shiftRightInt64((new $Int64(h4.$high + 0, h4.$low + 33554432)), 26);
 74355  		h5 = (x$51 = carry[4], new $Int64(h5.$high + x$51.$high, h5.$low + x$51.$low));
 74356  		h4 = (x$52 = $shiftLeft64(carry[4], 26), new $Int64(h4.$high - x$52.$high, h4.$low - x$52.$low));
 74357  		carry[8] = $shiftRightInt64((new $Int64(h8.$high + 0, h8.$low + 33554432)), 26);
 74358  		h9 = (x$53 = carry[8], new $Int64(h9.$high + x$53.$high, h9.$low + x$53.$low));
 74359  		h8 = (x$54 = $shiftLeft64(carry[8], 26), new $Int64(h8.$high - x$54.$high, h8.$low - x$54.$low));
 74360  		carry[9] = $shiftRightInt64((new $Int64(h9.$high + 0, h9.$low + 16777216)), 25);
 74361  		h0 = (x$55 = $mul64(carry[9], new $Int64(0, 19)), new $Int64(h0.$high + x$55.$high, h0.$low + x$55.$low));
 74362  		h9 = (x$56 = $shiftLeft64(carry[9], 25), new $Int64(h9.$high - x$56.$high, h9.$low - x$56.$low));
 74363  		carry[0] = $shiftRightInt64((new $Int64(h0.$high + 0, h0.$low + 33554432)), 26);
 74364  		h1 = (x$57 = carry[0], new $Int64(h1.$high + x$57.$high, h1.$low + x$57.$low));
 74365  		h0 = (x$58 = $shiftLeft64(carry[0], 26), new $Int64(h0.$high - x$58.$high, h0.$low - x$58.$low));
 74366  		h.nilCheck, h[0] = (((h0.$low + ((h0.$high >> 31) * 4294967296)) >> 0));
 74367  		h.nilCheck, h[1] = (((h1.$low + ((h1.$high >> 31) * 4294967296)) >> 0));
 74368  		h.nilCheck, h[2] = (((h2.$low + ((h2.$high >> 31) * 4294967296)) >> 0));
 74369  		h.nilCheck, h[3] = (((h3.$low + ((h3.$high >> 31) * 4294967296)) >> 0));
 74370  		h.nilCheck, h[4] = (((h4.$low + ((h4.$high >> 31) * 4294967296)) >> 0));
 74371  		h.nilCheck, h[5] = (((h5.$low + ((h5.$high >> 31) * 4294967296)) >> 0));
 74372  		h.nilCheck, h[6] = (((h6.$low + ((h6.$high >> 31) * 4294967296)) >> 0));
 74373  		h.nilCheck, h[7] = (((h7.$low + ((h7.$high >> 31) * 4294967296)) >> 0));
 74374  		h.nilCheck, h[8] = (((h8.$low + ((h8.$high >> 31) * 4294967296)) >> 0));
 74375  		h.nilCheck, h[9] = (((h9.$low + ((h9.$high >> 31) * 4294967296)) >> 0));
 74376  	};
 74377  	feMul121666 = function(h, f) {
 74378  		var carry, f, h, h0, h1, h2, h3, h4, h5, h6, h7, h8, h9, x, x$1, x$10, x$11, x$12, x$13, x$14, x$15, x$16, x$17, x$18, x$19, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9;
 74379  		h0 = $mul64((new $Int64(0, (f.nilCheck, f[0]))), new $Int64(0, 121666));
 74380  		h1 = $mul64((new $Int64(0, (f.nilCheck, f[1]))), new $Int64(0, 121666));
 74381  		h2 = $mul64((new $Int64(0, (f.nilCheck, f[2]))), new $Int64(0, 121666));
 74382  		h3 = $mul64((new $Int64(0, (f.nilCheck, f[3]))), new $Int64(0, 121666));
 74383  		h4 = $mul64((new $Int64(0, (f.nilCheck, f[4]))), new $Int64(0, 121666));
 74384  		h5 = $mul64((new $Int64(0, (f.nilCheck, f[5]))), new $Int64(0, 121666));
 74385  		h6 = $mul64((new $Int64(0, (f.nilCheck, f[6]))), new $Int64(0, 121666));
 74386  		h7 = $mul64((new $Int64(0, (f.nilCheck, f[7]))), new $Int64(0, 121666));
 74387  		h8 = $mul64((new $Int64(0, (f.nilCheck, f[8]))), new $Int64(0, 121666));
 74388  		h9 = $mul64((new $Int64(0, (f.nilCheck, f[9]))), new $Int64(0, 121666));
 74389  		carry = arrayType.zero();
 74390  		carry[9] = $shiftRightInt64((new $Int64(h9.$high + 0, h9.$low + 16777216)), 25);
 74391  		h0 = (x = $mul64(carry[9], new $Int64(0, 19)), new $Int64(h0.$high + x.$high, h0.$low + x.$low));
 74392  		h9 = (x$1 = $shiftLeft64(carry[9], 25), new $Int64(h9.$high - x$1.$high, h9.$low - x$1.$low));
 74393  		carry[1] = $shiftRightInt64((new $Int64(h1.$high + 0, h1.$low + 16777216)), 25);
 74394  		h2 = (x$2 = carry[1], new $Int64(h2.$high + x$2.$high, h2.$low + x$2.$low));
 74395  		h1 = (x$3 = $shiftLeft64(carry[1], 25), new $Int64(h1.$high - x$3.$high, h1.$low - x$3.$low));
 74396  		carry[3] = $shiftRightInt64((new $Int64(h3.$high + 0, h3.$low + 16777216)), 25);
 74397  		h4 = (x$4 = carry[3], new $Int64(h4.$high + x$4.$high, h4.$low + x$4.$low));
 74398  		h3 = (x$5 = $shiftLeft64(carry[3], 25), new $Int64(h3.$high - x$5.$high, h3.$low - x$5.$low));
 74399  		carry[5] = $shiftRightInt64((new $Int64(h5.$high + 0, h5.$low + 16777216)), 25);
 74400  		h6 = (x$6 = carry[5], new $Int64(h6.$high + x$6.$high, h6.$low + x$6.$low));
 74401  		h5 = (x$7 = $shiftLeft64(carry[5], 25), new $Int64(h5.$high - x$7.$high, h5.$low - x$7.$low));
 74402  		carry[7] = $shiftRightInt64((new $Int64(h7.$high + 0, h7.$low + 16777216)), 25);
 74403  		h8 = (x$8 = carry[7], new $Int64(h8.$high + x$8.$high, h8.$low + x$8.$low));
 74404  		h7 = (x$9 = $shiftLeft64(carry[7], 25), new $Int64(h7.$high - x$9.$high, h7.$low - x$9.$low));
 74405  		carry[0] = $shiftRightInt64((new $Int64(h0.$high + 0, h0.$low + 33554432)), 26);
 74406  		h1 = (x$10 = carry[0], new $Int64(h1.$high + x$10.$high, h1.$low + x$10.$low));
 74407  		h0 = (x$11 = $shiftLeft64(carry[0], 26), new $Int64(h0.$high - x$11.$high, h0.$low - x$11.$low));
 74408  		carry[2] = $shiftRightInt64((new $Int64(h2.$high + 0, h2.$low + 33554432)), 26);
 74409  		h3 = (x$12 = carry[2], new $Int64(h3.$high + x$12.$high, h3.$low + x$12.$low));
 74410  		h2 = (x$13 = $shiftLeft64(carry[2], 26), new $Int64(h2.$high - x$13.$high, h2.$low - x$13.$low));
 74411  		carry[4] = $shiftRightInt64((new $Int64(h4.$high + 0, h4.$low + 33554432)), 26);
 74412  		h5 = (x$14 = carry[4], new $Int64(h5.$high + x$14.$high, h5.$low + x$14.$low));
 74413  		h4 = (x$15 = $shiftLeft64(carry[4], 26), new $Int64(h4.$high - x$15.$high, h4.$low - x$15.$low));
 74414  		carry[6] = $shiftRightInt64((new $Int64(h6.$high + 0, h6.$low + 33554432)), 26);
 74415  		h7 = (x$16 = carry[6], new $Int64(h7.$high + x$16.$high, h7.$low + x$16.$low));
 74416  		h6 = (x$17 = $shiftLeft64(carry[6], 26), new $Int64(h6.$high - x$17.$high, h6.$low - x$17.$low));
 74417  		carry[8] = $shiftRightInt64((new $Int64(h8.$high + 0, h8.$low + 33554432)), 26);
 74418  		h9 = (x$18 = carry[8], new $Int64(h9.$high + x$18.$high, h9.$low + x$18.$low));
 74419  		h8 = (x$19 = $shiftLeft64(carry[8], 26), new $Int64(h8.$high - x$19.$high, h8.$low - x$19.$low));
 74420  		h.nilCheck, h[0] = (((h0.$low + ((h0.$high >> 31) * 4294967296)) >> 0));
 74421  		h.nilCheck, h[1] = (((h1.$low + ((h1.$high >> 31) * 4294967296)) >> 0));
 74422  		h.nilCheck, h[2] = (((h2.$low + ((h2.$high >> 31) * 4294967296)) >> 0));
 74423  		h.nilCheck, h[3] = (((h3.$low + ((h3.$high >> 31) * 4294967296)) >> 0));
 74424  		h.nilCheck, h[4] = (((h4.$low + ((h4.$high >> 31) * 4294967296)) >> 0));
 74425  		h.nilCheck, h[5] = (((h5.$low + ((h5.$high >> 31) * 4294967296)) >> 0));
 74426  		h.nilCheck, h[6] = (((h6.$low + ((h6.$high >> 31) * 4294967296)) >> 0));
 74427  		h.nilCheck, h[7] = (((h7.$low + ((h7.$high >> 31) * 4294967296)) >> 0));
 74428  		h.nilCheck, h[8] = (((h8.$low + ((h8.$high >> 31) * 4294967296)) >> 0));
 74429  		h.nilCheck, h[9] = (((h9.$low + ((h9.$high >> 31) * 4294967296)) >> 0));
 74430  	};
 74431  	feInvert = function(out, z) {
 74432  		var _tmp, _tmp$1, _tmp$2, _tmp$3, i, out, t0, t1, t2, t3, z;
 74433  		_tmp = arrayType$1.zero();
 74434  		_tmp$1 = arrayType$1.zero();
 74435  		_tmp$2 = arrayType$1.zero();
 74436  		_tmp$3 = arrayType$1.zero();
 74437  		t0 = $clone(_tmp, fieldElement);
 74438  		t1 = $clone(_tmp$1, fieldElement);
 74439  		t2 = $clone(_tmp$2, fieldElement);
 74440  		t3 = $clone(_tmp$3, fieldElement);
 74441  		i = 0;
 74442  		feSquare(t0, z);
 74443  		i = 1;
 74444  		while (true) {
 74445  			if (!(i < 1)) { break; }
 74446  			feSquare(t0, t0);
 74447  			i = i + (1) >> 0;
 74448  		}
 74449  		feSquare(t1, t0);
 74450  		i = 1;
 74451  		while (true) {
 74452  			if (!(i < 2)) { break; }
 74453  			feSquare(t1, t1);
 74454  			i = i + (1) >> 0;
 74455  		}
 74456  		feMul(t1, z, t1);
 74457  		feMul(t0, t0, t1);
 74458  		feSquare(t2, t0);
 74459  		i = 1;
 74460  		while (true) {
 74461  			if (!(i < 1)) { break; }
 74462  			feSquare(t2, t2);
 74463  			i = i + (1) >> 0;
 74464  		}
 74465  		feMul(t1, t1, t2);
 74466  		feSquare(t2, t1);
 74467  		i = 1;
 74468  		while (true) {
 74469  			if (!(i < 5)) { break; }
 74470  			feSquare(t2, t2);
 74471  			i = i + (1) >> 0;
 74472  		}
 74473  		feMul(t1, t2, t1);
 74474  		feSquare(t2, t1);
 74475  		i = 1;
 74476  		while (true) {
 74477  			if (!(i < 10)) { break; }
 74478  			feSquare(t2, t2);
 74479  			i = i + (1) >> 0;
 74480  		}
 74481  		feMul(t2, t2, t1);
 74482  		feSquare(t3, t2);
 74483  		i = 1;
 74484  		while (true) {
 74485  			if (!(i < 20)) { break; }
 74486  			feSquare(t3, t3);
 74487  			i = i + (1) >> 0;
 74488  		}
 74489  		feMul(t2, t3, t2);
 74490  		feSquare(t2, t2);
 74491  		i = 1;
 74492  		while (true) {
 74493  			if (!(i < 10)) { break; }
 74494  			feSquare(t2, t2);
 74495  			i = i + (1) >> 0;
 74496  		}
 74497  		feMul(t1, t2, t1);
 74498  		feSquare(t2, t1);
 74499  		i = 1;
 74500  		while (true) {
 74501  			if (!(i < 50)) { break; }
 74502  			feSquare(t2, t2);
 74503  			i = i + (1) >> 0;
 74504  		}
 74505  		feMul(t2, t2, t1);
 74506  		feSquare(t3, t2);
 74507  		i = 1;
 74508  		while (true) {
 74509  			if (!(i < 100)) { break; }
 74510  			feSquare(t3, t3);
 74511  			i = i + (1) >> 0;
 74512  		}
 74513  		feMul(t2, t3, t2);
 74514  		feSquare(t2, t2);
 74515  		i = 1;
 74516  		while (true) {
 74517  			if (!(i < 50)) { break; }
 74518  			feSquare(t2, t2);
 74519  			i = i + (1) >> 0;
 74520  		}
 74521  		feMul(t1, t2, t1);
 74522  		feSquare(t1, t1);
 74523  		i = 1;
 74524  		while (true) {
 74525  			if (!(i < 5)) { break; }
 74526  			feSquare(t1, t1);
 74527  			i = i + (1) >> 0;
 74528  		}
 74529  		feMul(out, t1, t0);
 74530  	};
 74531  	scalarMult = function(out, in$1, base) {
 74532  		var _q, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, b, base, e, in$1, out, pos, swap, tmp0, tmp1, x, x1, x2, x3, y, z2, z3;
 74533  		e = arrayType$2.zero();
 74534  		$copySlice(new sliceType(e), new sliceType(in$1));
 74535  		e[0] = ((e[0] & (248)) >>> 0);
 74536  		e[31] = ((e[31] & (127)) >>> 0);
 74537  		e[31] = ((e[31] | (64)) >>> 0);
 74538  		_tmp = arrayType$1.zero();
 74539  		_tmp$1 = arrayType$1.zero();
 74540  		_tmp$2 = arrayType$1.zero();
 74541  		_tmp$3 = arrayType$1.zero();
 74542  		_tmp$4 = arrayType$1.zero();
 74543  		_tmp$5 = arrayType$1.zero();
 74544  		_tmp$6 = arrayType$1.zero();
 74545  		x1 = $clone(_tmp, fieldElement);
 74546  		x2 = $clone(_tmp$1, fieldElement);
 74547  		z2 = $clone(_tmp$2, fieldElement);
 74548  		x3 = $clone(_tmp$3, fieldElement);
 74549  		z3 = $clone(_tmp$4, fieldElement);
 74550  		tmp0 = $clone(_tmp$5, fieldElement);
 74551  		tmp1 = $clone(_tmp$6, fieldElement);
 74552  		feFromBytes(x1, base);
 74553  		feOne(x2);
 74554  		feCopy(x3, x1);
 74555  		feOne(z3);
 74556  		swap = 0;
 74557  		pos = 254;
 74558  		while (true) {
 74559  			if (!(pos >= 0)) { break; }
 74560  			b = (y = (((pos & 7) >>> 0)), y < 32 ? ((x = (_q = pos / 8, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")), ((x < 0 || x >= e.length) ? ($throwRuntimeError("index out of range"), undefined) : e[x])) >>> y) : 0) << 24 >>> 24;
 74561  			b = (b & (1)) >>> 0;
 74562  			swap = (swap ^ (((b >> 0)))) >> 0;
 74563  			feCSwap(x2, x3, swap);
 74564  			feCSwap(z2, z3, swap);
 74565  			swap = ((b >> 0));
 74566  			feSub(tmp0, x3, z3);
 74567  			feSub(tmp1, x2, z2);
 74568  			feAdd(x2, x2, z2);
 74569  			feAdd(z2, x3, z3);
 74570  			feMul(z3, tmp0, x2);
 74571  			feMul(z2, z2, tmp1);
 74572  			feSquare(tmp0, tmp1);
 74573  			feSquare(tmp1, x2);
 74574  			feAdd(x3, z3, z2);
 74575  			feSub(z2, z3, z2);
 74576  			feMul(x2, tmp1, tmp0);
 74577  			feSub(tmp1, tmp1, tmp0);
 74578  			feSquare(z2, z2);
 74579  			feMul121666(z3, tmp1);
 74580  			feSquare(x3, x3);
 74581  			feAdd(tmp0, tmp0, z3);
 74582  			feMul(z3, x1, z2);
 74583  			feMul(z2, tmp1, tmp0);
 74584  			pos = pos - (1) >> 0;
 74585  		}
 74586  		feCSwap(x2, x3, swap);
 74587  		feCSwap(z2, z3, swap);
 74588  		feInvert(z2, z2);
 74589  		feMul(x2, x2, z2);
 74590  		feToBytes(out, x2);
 74591  	};
 74592  	ScalarMult = function(dst, in$1, base) {
 74593  		var base, dst, in$1;
 74594  		scalarMult(dst, in$1, base);
 74595  	};
 74596  	$pkg.ScalarMult = ScalarMult;
 74597  	ScalarBaseMult = function(dst, in$1) {
 74598  		var dst, in$1;
 74599  		ScalarMult(dst, in$1, basePoint);
 74600  	};
 74601  	$pkg.ScalarBaseMult = ScalarBaseMult;
 74602  	fieldElement.init($Int32, 10);
 74603  	$init = function() {
 74604  		$pkg.$init = function() {};
 74605  		/* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 74606  		$r = binary.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 74607  		basePoint = $toNativeArray($kindUint8, [9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]);
 74608  		/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
 74609  	};
 74610  	$pkg.$init = $init;
 74611  	return $pkg;
 74612  })();
 74613  $packages["crypto/tls"] = (function() {
 74614  	var $pkg = {}, $init, bytes, list, crypto, aes, cipher, des, ecdsa, elliptic, hmac, cipherhw, md5, rand, rc4, rsa, sha1, sha256, sha512, subtle, x509, asn1, pem, errors, fmt, hash, io, ioutil, big, net, strconv, strings, sync, atomic, time, chacha20poly1305, curve25519, alert, keyAgreement, cipherSuite, macFunction, aead, fixedNonceAEAD, xorNonceAEAD, ssl30MAC, constantTimeHash, cthWrapper, tls10MAC, recordType, CurveID, ConnectionState, ClientAuthType, ClientSessionState, ClientSessionCache, SignatureScheme, ClientHelloInfo, CertificateRequestInfo, RenegotiationSupport, Config, ticketKey, Certificate, ecdsaSignature, Conn, halfConn, cbcMode, block, RecordHeaderError, clientHandshakeState, clientHelloMsg, serverHelloMsg, certificateMsg, serverKeyExchangeMsg, certificateStatusMsg, serverHelloDoneMsg, clientKeyExchangeMsg, finishedMsg, nextProtoMsg, certificateRequestMsg, certificateVerifyMsg, newSessionTicketMsg, helloRequestMsg, serverHandshakeState, rsaKeyAgreement, ecdheKeyAgreement, finishedHash, sessionState, listener, timeoutError, sliceType, ptrType, sliceType$1, sliceType$2, arrayType, sliceType$3, sliceType$4, ptrType$1, sliceType$5, sliceType$6, sliceType$7, arrayType$1, ptrType$2, arrayType$2, arrayType$3, ptrType$3, ptrType$4, sliceType$8, ptrType$8, ptrType$9, arrayType$4, sliceType$9, ptrType$10, ptrType$11, ptrType$12, ptrType$13, sliceType$10, sliceType$11, ptrType$14, ptrType$15, ptrType$16, ptrType$17, ptrType$18, sliceType$12, ptrType$19, ptrType$20, ptrType$21, ptrType$22, ptrType$23, ptrType$24, ptrType$25, arrayType$5, ptrType$26, ptrType$27, ptrType$28, ptrType$29, ptrType$30, ptrType$31, arrayType$6, arrayType$7, arrayType$8, ptrType$32, ptrType$33, ptrType$34, ptrType$35, funcType, funcType$1, funcType$2, funcType$3, ptrType$36, ptrType$37, ptrType$38, sliceType$13, funcType$4, mapType, funcType$5, ptrType$39, funcType$6, funcType$7, funcType$8, ptrType$41, ptrType$42, ptrType$43, ptrType$44, ptrType$45, funcType$9, ptrType$46, alertText, cipherSuites, ssl30Pad1, ssl30Pad2, supportedSignatureAlgorithms, defaultCurvePreferences, writerMutex, emptyConfig, emptyConfig$24ptr, once, varDefaultCipherSuites, errClosed, errShutdown, errEarlyCloseWrite, tls11SignatureSchemes, suppVersArray, errClientKeyExchange, errServerKeyExchange, masterSecretLabel, keyExpansionLabel, clientFinishedLabel, serverFinishedLabel, ssl3ClientFinishedMagic, ssl3ServerFinishedMagic, cipherRC4, cipher3DES, cipherAES, macSHA1, macSHA256, aeadAESGCM, aeadChaCha20Poly1305, newConstantTimeHash, rsaKA, ecdheECDSAKA, ecdheRSAKA, mutualCipherSuite, ticketKeyFromBytes, defaultConfig, defaultCipherSuites, initDefaultCipherSuites, unexpectedMessageError, isSupportedSignatureAlgorithm, signatureFromSignatureScheme, extractPadding, extractPaddingSSL30, roundUp, padToBlockSize, makeClientHello, clientSessionCacheKey, mutualProtocol, hostnameInSNI, sha1Hash, md5SHA1Hash, hashForServerKeyExchange, pickTLS12HashForSignature, curveForCurveID, splitPreMasterSecret, pHash, prf10, prf12, prf30, prfAndHashForVersion, prfForVersion, masterFromPreMasterSecret, keysFromMasterSecret, lookupTLSHash, newFinishedHash, finishedSum30, Server, Client, NewListener, DialWithDialer, Dial, LoadX509KeyPair, X509KeyPair, parsePrivateKey;
 74615  	bytes = $packages["bytes"];
 74616  	list = $packages["container/list"];
 74617  	crypto = $packages["crypto"];
 74618  	aes = $packages["crypto/aes"];
 74619  	cipher = $packages["crypto/cipher"];
 74620  	des = $packages["crypto/des"];
 74621  	ecdsa = $packages["crypto/ecdsa"];
 74622  	elliptic = $packages["crypto/elliptic"];
 74623  	hmac = $packages["crypto/hmac"];
 74624  	cipherhw = $packages["crypto/internal/cipherhw"];
 74625  	md5 = $packages["crypto/md5"];
 74626  	rand = $packages["crypto/rand"];
 74627  	rc4 = $packages["crypto/rc4"];
 74628  	rsa = $packages["crypto/rsa"];
 74629  	sha1 = $packages["crypto/sha1"];
 74630  	sha256 = $packages["crypto/sha256"];
 74631  	sha512 = $packages["crypto/sha512"];
 74632  	subtle = $packages["crypto/subtle"];
 74633  	x509 = $packages["crypto/x509"];
 74634  	asn1 = $packages["encoding/asn1"];
 74635  	pem = $packages["encoding/pem"];
 74636  	errors = $packages["errors"];
 74637  	fmt = $packages["fmt"];
 74638  	hash = $packages["hash"];
 74639  	io = $packages["io"];
 74640  	ioutil = $packages["io/ioutil"];
 74641  	big = $packages["math/big"];
 74642  	net = $packages["net"];
 74643  	strconv = $packages["strconv"];
 74644  	strings = $packages["strings"];
 74645  	sync = $packages["sync"];
 74646  	atomic = $packages["sync/atomic"];
 74647  	time = $packages["time"];
 74648  	chacha20poly1305 = $packages["vendor/golang_org/x/crypto/chacha20poly1305"];
 74649  	curve25519 = $packages["vendor/golang_org/x/crypto/curve25519"];
 74650  	alert = $pkg.alert = $newType(1, $kindUint8, "tls.alert", true, "crypto/tls", false, null);
 74651  	keyAgreement = $pkg.keyAgreement = $newType(8, $kindInterface, "tls.keyAgreement", true, "crypto/tls", false, null);
 74652  	cipherSuite = $pkg.cipherSuite = $newType(0, $kindStruct, "tls.cipherSuite", true, "crypto/tls", false, function(id_, keyLen_, macLen_, ivLen_, ka_, flags_, cipher_, mac_, aead_) {
 74653  		this.$val = this;
 74654  		if (arguments.length === 0) {
 74655  			this.id = 0;
 74656  			this.keyLen = 0;
 74657  			this.macLen = 0;
 74658  			this.ivLen = 0;
 74659  			this.ka = $throwNilPointerError;
 74660  			this.flags = 0;
 74661  			this.cipher = $throwNilPointerError;
 74662  			this.mac = $throwNilPointerError;
 74663  			this.aead = $throwNilPointerError;
 74664  			return;
 74665  		}
 74666  		this.id = id_;
 74667  		this.keyLen = keyLen_;
 74668  		this.macLen = macLen_;
 74669  		this.ivLen = ivLen_;
 74670  		this.ka = ka_;
 74671  		this.flags = flags_;
 74672  		this.cipher = cipher_;
 74673  		this.mac = mac_;
 74674  		this.aead = aead_;
 74675  	});
 74676  	macFunction = $pkg.macFunction = $newType(8, $kindInterface, "tls.macFunction", true, "crypto/tls", false, null);
 74677  	aead = $pkg.aead = $newType(8, $kindInterface, "tls.aead", true, "crypto/tls", false, null);
 74678  	fixedNonceAEAD = $pkg.fixedNonceAEAD = $newType(0, $kindStruct, "tls.fixedNonceAEAD", true, "crypto/tls", false, function(nonce_, aead_) {
 74679  		this.$val = this;
 74680  		if (arguments.length === 0) {
 74681  			this.nonce = arrayType$1.zero();
 74682  			this.aead = $ifaceNil;
 74683  			return;
 74684  		}
 74685  		this.nonce = nonce_;
 74686  		this.aead = aead_;
 74687  	});
 74688  	xorNonceAEAD = $pkg.xorNonceAEAD = $newType(0, $kindStruct, "tls.xorNonceAEAD", true, "crypto/tls", false, function(nonceMask_, aead_) {
 74689  		this.$val = this;
 74690  		if (arguments.length === 0) {
 74691  			this.nonceMask = arrayType$1.zero();
 74692  			this.aead = $ifaceNil;
 74693  			return;
 74694  		}
 74695  		this.nonceMask = nonceMask_;
 74696  		this.aead = aead_;
 74697  	});
 74698  	ssl30MAC = $pkg.ssl30MAC = $newType(0, $kindStruct, "tls.ssl30MAC", true, "crypto/tls", false, function(h_, key_) {
 74699  		this.$val = this;
 74700  		if (arguments.length === 0) {
 74701  			this.h = $ifaceNil;
 74702  			this.key = sliceType$7.nil;
 74703  			return;
 74704  		}
 74705  		this.h = h_;
 74706  		this.key = key_;
 74707  	});
 74708  	constantTimeHash = $pkg.constantTimeHash = $newType(8, $kindInterface, "tls.constantTimeHash", true, "crypto/tls", false, null);
 74709  	cthWrapper = $pkg.cthWrapper = $newType(0, $kindStruct, "tls.cthWrapper", true, "crypto/tls", false, function(h_) {
 74710  		this.$val = this;
 74711  		if (arguments.length === 0) {
 74712  			this.h = $ifaceNil;
 74713  			return;
 74714  		}
 74715  		this.h = h_;
 74716  	});
 74717  	tls10MAC = $pkg.tls10MAC = $newType(0, $kindStruct, "tls.tls10MAC", true, "crypto/tls", false, function(h_) {
 74718  		this.$val = this;
 74719  		if (arguments.length === 0) {
 74720  			this.h = $ifaceNil;
 74721  			return;
 74722  		}
 74723  		this.h = h_;
 74724  	});
 74725  	recordType = $pkg.recordType = $newType(1, $kindUint8, "tls.recordType", true, "crypto/tls", false, null);
 74726  	CurveID = $pkg.CurveID = $newType(2, $kindUint16, "tls.CurveID", true, "crypto/tls", true, null);
 74727  	ConnectionState = $pkg.ConnectionState = $newType(0, $kindStruct, "tls.ConnectionState", true, "crypto/tls", true, function(Version_, HandshakeComplete_, DidResume_, CipherSuite_, NegotiatedProtocol_, NegotiatedProtocolIsMutual_, ServerName_, PeerCertificates_, VerifiedChains_, SignedCertificateTimestamps_, OCSPResponse_, TLSUnique_) {
 74728  		this.$val = this;
 74729  		if (arguments.length === 0) {
 74730  			this.Version = 0;
 74731  			this.HandshakeComplete = false;
 74732  			this.DidResume = false;
 74733  			this.CipherSuite = 0;
 74734  			this.NegotiatedProtocol = "";
 74735  			this.NegotiatedProtocolIsMutual = false;
 74736  			this.ServerName = "";
 74737  			this.PeerCertificates = sliceType$10.nil;
 74738  			this.VerifiedChains = sliceType$11.nil;
 74739  			this.SignedCertificateTimestamps = sliceType$9.nil;
 74740  			this.OCSPResponse = sliceType$7.nil;
 74741  			this.TLSUnique = sliceType$7.nil;
 74742  			return;
 74743  		}
 74744  		this.Version = Version_;
 74745  		this.HandshakeComplete = HandshakeComplete_;
 74746  		this.DidResume = DidResume_;
 74747  		this.CipherSuite = CipherSuite_;
 74748  		this.NegotiatedProtocol = NegotiatedProtocol_;
 74749  		this.NegotiatedProtocolIsMutual = NegotiatedProtocolIsMutual_;
 74750  		this.ServerName = ServerName_;
 74751  		this.PeerCertificates = PeerCertificates_;
 74752  		this.VerifiedChains = VerifiedChains_;
 74753  		this.SignedCertificateTimestamps = SignedCertificateTimestamps_;
 74754  		this.OCSPResponse = OCSPResponse_;
 74755  		this.TLSUnique = TLSUnique_;
 74756  	});
 74757  	ClientAuthType = $pkg.ClientAuthType = $newType(4, $kindInt, "tls.ClientAuthType", true, "crypto/tls", true, null);
 74758  	ClientSessionState = $pkg.ClientSessionState = $newType(0, $kindStruct, "tls.ClientSessionState", true, "crypto/tls", true, function(sessionTicket_, vers_, cipherSuite_, masterSecret_, serverCertificates_, verifiedChains_) {
 74759  		this.$val = this;
 74760  		if (arguments.length === 0) {
 74761  			this.sessionTicket = sliceType$7.nil;
 74762  			this.vers = 0;
 74763  			this.cipherSuite = 0;
 74764  			this.masterSecret = sliceType$7.nil;
 74765  			this.serverCertificates = sliceType$10.nil;
 74766  			this.verifiedChains = sliceType$11.nil;
 74767  			return;
 74768  		}
 74769  		this.sessionTicket = sessionTicket_;
 74770  		this.vers = vers_;
 74771  		this.cipherSuite = cipherSuite_;
 74772  		this.masterSecret = masterSecret_;
 74773  		this.serverCertificates = serverCertificates_;
 74774  		this.verifiedChains = verifiedChains_;
 74775  	});
 74776  	ClientSessionCache = $pkg.ClientSessionCache = $newType(8, $kindInterface, "tls.ClientSessionCache", true, "crypto/tls", true, null);
 74777  	SignatureScheme = $pkg.SignatureScheme = $newType(2, $kindUint16, "tls.SignatureScheme", true, "crypto/tls", true, null);
 74778  	ClientHelloInfo = $pkg.ClientHelloInfo = $newType(0, $kindStruct, "tls.ClientHelloInfo", true, "crypto/tls", true, function(CipherSuites_, ServerName_, SupportedCurves_, SupportedPoints_, SignatureSchemes_, SupportedProtos_, SupportedVersions_, Conn_) {
 74779  		this.$val = this;
 74780  		if (arguments.length === 0) {
 74781  			this.CipherSuites = sliceType$2.nil;
 74782  			this.ServerName = "";
 74783  			this.SupportedCurves = sliceType$3.nil;
 74784  			this.SupportedPoints = sliceType$7.nil;
 74785  			this.SignatureSchemes = sliceType$6.nil;
 74786  			this.SupportedProtos = sliceType$1.nil;
 74787  			this.SupportedVersions = sliceType$2.nil;
 74788  			this.Conn = $ifaceNil;
 74789  			return;
 74790  		}
 74791  		this.CipherSuites = CipherSuites_;
 74792  		this.ServerName = ServerName_;
 74793  		this.SupportedCurves = SupportedCurves_;
 74794  		this.SupportedPoints = SupportedPoints_;
 74795  		this.SignatureSchemes = SignatureSchemes_;
 74796  		this.SupportedProtos = SupportedProtos_;
 74797  		this.SupportedVersions = SupportedVersions_;
 74798  		this.Conn = Conn_;
 74799  	});
 74800  	CertificateRequestInfo = $pkg.CertificateRequestInfo = $newType(0, $kindStruct, "tls.CertificateRequestInfo", true, "crypto/tls", true, function(AcceptableCAs_, SignatureSchemes_) {
 74801  		this.$val = this;
 74802  		if (arguments.length === 0) {
 74803  			this.AcceptableCAs = sliceType$9.nil;
 74804  			this.SignatureSchemes = sliceType$6.nil;
 74805  			return;
 74806  		}
 74807  		this.AcceptableCAs = AcceptableCAs_;
 74808  		this.SignatureSchemes = SignatureSchemes_;
 74809  	});
 74810  	RenegotiationSupport = $pkg.RenegotiationSupport = $newType(4, $kindInt, "tls.RenegotiationSupport", true, "crypto/tls", true, null);
 74811  	Config = $pkg.Config = $newType(0, $kindStruct, "tls.Config", true, "crypto/tls", true, function(Rand_, Time_, Certificates_, NameToCertificate_, GetCertificate_, GetClientCertificate_, GetConfigForClient_, VerifyPeerCertificate_, RootCAs_, NextProtos_, ServerName_, ClientAuth_, ClientCAs_, InsecureSkipVerify_, CipherSuites_, PreferServerCipherSuites_, SessionTicketsDisabled_, SessionTicketKey_, ClientSessionCache_, MinVersion_, MaxVersion_, CurvePreferences_, DynamicRecordSizingDisabled_, Renegotiation_, KeyLogWriter_, serverInitOnce_, mutex_, sessionTicketKeys_) {
 74812  		this.$val = this;
 74813  		if (arguments.length === 0) {
 74814  			this.Rand = $ifaceNil;
 74815  			this.Time = $throwNilPointerError;
 74816  			this.Certificates = sliceType.nil;
 74817  			this.NameToCertificate = false;
 74818  			this.GetCertificate = $throwNilPointerError;
 74819  			this.GetClientCertificate = $throwNilPointerError;
 74820  			this.GetConfigForClient = $throwNilPointerError;
 74821  			this.VerifyPeerCertificate = $throwNilPointerError;
 74822  			this.RootCAs = ptrType.nil;
 74823  			this.NextProtos = sliceType$1.nil;
 74824  			this.ServerName = "";
 74825  			this.ClientAuth = 0;
 74826  			this.ClientCAs = ptrType.nil;
 74827  			this.InsecureSkipVerify = false;
 74828  			this.CipherSuites = sliceType$2.nil;
 74829  			this.PreferServerCipherSuites = false;
 74830  			this.SessionTicketsDisabled = false;
 74831  			this.SessionTicketKey = arrayType.zero();
 74832  			this.ClientSessionCache = $ifaceNil;
 74833  			this.MinVersion = 0;
 74834  			this.MaxVersion = 0;
 74835  			this.CurvePreferences = sliceType$3.nil;
 74836  			this.DynamicRecordSizingDisabled = false;
 74837  			this.Renegotiation = 0;
 74838  			this.KeyLogWriter = $ifaceNil;
 74839  			this.serverInitOnce = new sync.Once.ptr(new sync.Mutex.ptr(0, 0), 0);
 74840  			this.mutex = new sync.RWMutex.ptr(new sync.Mutex.ptr(0, 0), 0, 0, 0, 0);
 74841  			this.sessionTicketKeys = sliceType$4.nil;
 74842  			return;
 74843  		}
 74844  		this.Rand = Rand_;
 74845  		this.Time = Time_;
 74846  		this.Certificates = Certificates_;
 74847  		this.NameToCertificate = NameToCertificate_;
 74848  		this.GetCertificate = GetCertificate_;
 74849  		this.GetClientCertificate = GetClientCertificate_;
 74850  		this.GetConfigForClient = GetConfigForClient_;
 74851  		this.VerifyPeerCertificate = VerifyPeerCertificate_;
 74852  		this.RootCAs = RootCAs_;
 74853  		this.NextProtos = NextProtos_;
 74854  		this.ServerName = ServerName_;
 74855  		this.ClientAuth = ClientAuth_;
 74856  		this.ClientCAs = ClientCAs_;
 74857  		this.InsecureSkipVerify = InsecureSkipVerify_;
 74858  		this.CipherSuites = CipherSuites_;
 74859  		this.PreferServerCipherSuites = PreferServerCipherSuites_;
 74860  		this.SessionTicketsDisabled = SessionTicketsDisabled_;
 74861  		this.SessionTicketKey = SessionTicketKey_;
 74862  		this.ClientSessionCache = ClientSessionCache_;
 74863  		this.MinVersion = MinVersion_;
 74864  		this.MaxVersion = MaxVersion_;
 74865  		this.CurvePreferences = CurvePreferences_;
 74866  		this.DynamicRecordSizingDisabled = DynamicRecordSizingDisabled_;
 74867  		this.Renegotiation = Renegotiation_;
 74868  		this.KeyLogWriter = KeyLogWriter_;
 74869  		this.serverInitOnce = serverInitOnce_;
 74870  		this.mutex = mutex_;
 74871  		this.sessionTicketKeys = sessionTicketKeys_;
 74872  	});
 74873  	ticketKey = $pkg.ticketKey = $newType(0, $kindStruct, "tls.ticketKey", true, "crypto/tls", false, function(keyName_, aesKey_, hmacKey_) {
 74874  		this.$val = this;
 74875  		if (arguments.length === 0) {
 74876  			this.keyName = arrayType$2.zero();
 74877  			this.aesKey = arrayType$2.zero();
 74878  			this.hmacKey = arrayType$2.zero();
 74879  			return;
 74880  		}
 74881  		this.keyName = keyName_;
 74882  		this.aesKey = aesKey_;
 74883  		this.hmacKey = hmacKey_;
 74884  	});
 74885  	Certificate = $pkg.Certificate = $newType(0, $kindStruct, "tls.Certificate", true, "crypto/tls", true, function(Certificate_, PrivateKey_, OCSPStaple_, SignedCertificateTimestamps_, Leaf_) {
 74886  		this.$val = this;
 74887  		if (arguments.length === 0) {
 74888  			this.Certificate = sliceType$9.nil;
 74889  			this.PrivateKey = $ifaceNil;
 74890  			this.OCSPStaple = sliceType$7.nil;
 74891  			this.SignedCertificateTimestamps = sliceType$9.nil;
 74892  			this.Leaf = ptrType$13.nil;
 74893  			return;
 74894  		}
 74895  		this.Certificate = Certificate_;
 74896  		this.PrivateKey = PrivateKey_;
 74897  		this.OCSPStaple = OCSPStaple_;
 74898  		this.SignedCertificateTimestamps = SignedCertificateTimestamps_;
 74899  		this.Leaf = Leaf_;
 74900  	});
 74901  	ecdsaSignature = $pkg.ecdsaSignature = $newType(0, $kindStruct, "tls.ecdsaSignature", true, "crypto/tls", false, function(R_, S_) {
 74902  		this.$val = this;
 74903  		if (arguments.length === 0) {
 74904  			this.R = ptrType$2.nil;
 74905  			this.S = ptrType$2.nil;
 74906  			return;
 74907  		}
 74908  		this.R = R_;
 74909  		this.S = S_;
 74910  	});
 74911  	Conn = $pkg.Conn = $newType(0, $kindStruct, "tls.Conn", true, "crypto/tls", true, function(conn_, isClient_, handshakeMutex_, handshakeCond_, handshakeErr_, vers_, haveVers_, config_, handshakeComplete_, handshakes_, didResume_, cipherSuite_, ocspResponse_, scts_, peerCertificates_, verifiedChains_, serverName_, secureRenegotiation_, clientFinishedIsFirst_, closeNotifyErr_, closeNotifySent_, clientFinished_, serverFinished_, clientProtocol_, clientProtocolFallback_, in$25_, out_, rawInput_, input_, hand_, buffering_, sendBuf_, bytesSent_, packetsSent_, warnCount_, activeCall_, tmp_) {
 74912  		this.$val = this;
 74913  		if (arguments.length === 0) {
 74914  			this.conn = $ifaceNil;
 74915  			this.isClient = false;
 74916  			this.handshakeMutex = new sync.Mutex.ptr(0, 0);
 74917  			this.handshakeCond = ptrType$12.nil;
 74918  			this.handshakeErr = $ifaceNil;
 74919  			this.vers = 0;
 74920  			this.haveVers = false;
 74921  			this.config = ptrType$3.nil;
 74922  			this.handshakeComplete = false;
 74923  			this.handshakes = 0;
 74924  			this.didResume = false;
 74925  			this.cipherSuite = 0;
 74926  			this.ocspResponse = sliceType$7.nil;
 74927  			this.scts = sliceType$9.nil;
 74928  			this.peerCertificates = sliceType$10.nil;
 74929  			this.verifiedChains = sliceType$11.nil;
 74930  			this.serverName = "";
 74931  			this.secureRenegotiation = false;
 74932  			this.clientFinishedIsFirst = false;
 74933  			this.closeNotifyErr = $ifaceNil;
 74934  			this.closeNotifySent = false;
 74935  			this.clientFinished = arrayType$1.zero();
 74936  			this.serverFinished = arrayType$1.zero();
 74937  			this.clientProtocol = "";
 74938  			this.clientProtocolFallback = false;
 74939  			this.in$25 = new halfConn.ptr(new sync.Mutex.ptr(0, 0), $ifaceNil, 0, $ifaceNil, $ifaceNil, arrayType$7.zero(), ptrType$9.nil, arrayType$8.zero(), $ifaceNil, $ifaceNil, sliceType$7.nil, sliceType$7.nil);
 74940  			this.out = new halfConn.ptr(new sync.Mutex.ptr(0, 0), $ifaceNil, 0, $ifaceNil, $ifaceNil, arrayType$7.zero(), ptrType$9.nil, arrayType$8.zero(), $ifaceNil, $ifaceNil, sliceType$7.nil, sliceType$7.nil);
 74941  			this.rawInput = ptrType$9.nil;
 74942  			this.input = ptrType$9.nil;
 74943  			this.hand = new bytes.Buffer.ptr(sliceType$7.nil, 0, arrayType$3.zero(), 0);
 74944  			this.buffering = false;
 74945  			this.sendBuf = sliceType$7.nil;
 74946  			this.bytesSent = new $Int64(0, 0);
 74947  			this.packetsSent = new $Int64(0, 0);
 74948  			this.warnCount = 0;
 74949  			this.activeCall = 0;
 74950  			this.tmp = arrayType$2.zero();
 74951  			return;
 74952  		}
 74953  		this.conn = conn_;
 74954  		this.isClient = isClient_;
 74955  		this.handshakeMutex = handshakeMutex_;
 74956  		this.handshakeCond = handshakeCond_;
 74957  		this.handshakeErr = handshakeErr_;
 74958  		this.vers = vers_;
 74959  		this.haveVers = haveVers_;
 74960  		this.config = config_;
 74961  		this.handshakeComplete = handshakeComplete_;
 74962  		this.handshakes = handshakes_;
 74963  		this.didResume = didResume_;
 74964  		this.cipherSuite = cipherSuite_;
 74965  		this.ocspResponse = ocspResponse_;
 74966  		this.scts = scts_;
 74967  		this.peerCertificates = peerCertificates_;
 74968  		this.verifiedChains = verifiedChains_;
 74969  		this.serverName = serverName_;
 74970  		this.secureRenegotiation = secureRenegotiation_;
 74971  		this.clientFinishedIsFirst = clientFinishedIsFirst_;
 74972  		this.closeNotifyErr = closeNotifyErr_;
 74973  		this.closeNotifySent = closeNotifySent_;
 74974  		this.clientFinished = clientFinished_;
 74975  		this.serverFinished = serverFinished_;
 74976  		this.clientProtocol = clientProtocol_;
 74977  		this.clientProtocolFallback = clientProtocolFallback_;
 74978  		this.in$25 = in$25_;
 74979  		this.out = out_;
 74980  		this.rawInput = rawInput_;
 74981  		this.input = input_;
 74982  		this.hand = hand_;
 74983  		this.buffering = buffering_;
 74984  		this.sendBuf = sendBuf_;
 74985  		this.bytesSent = bytesSent_;
 74986  		this.packetsSent = packetsSent_;
 74987  		this.warnCount = warnCount_;
 74988  		this.activeCall = activeCall_;
 74989  		this.tmp = tmp_;
 74990  	});
 74991  	halfConn = $pkg.halfConn = $newType(0, $kindStruct, "tls.halfConn", true, "crypto/tls", false, function(Mutex_, err_, version_, cipher_, mac_, seq_, bfree_, additionalData_, nextCipher_, nextMac_, inDigestBuf_, outDigestBuf_) {
 74992  		this.$val = this;
 74993  		if (arguments.length === 0) {
 74994  			this.Mutex = new sync.Mutex.ptr(0, 0);
 74995  			this.err = $ifaceNil;
 74996  			this.version = 0;
 74997  			this.cipher = $ifaceNil;
 74998  			this.mac = $ifaceNil;
 74999  			this.seq = arrayType$7.zero();
 75000  			this.bfree = ptrType$9.nil;
 75001  			this.additionalData = arrayType$8.zero();
 75002  			this.nextCipher = $ifaceNil;
 75003  			this.nextMac = $ifaceNil;
 75004  			this.inDigestBuf = sliceType$7.nil;
 75005  			this.outDigestBuf = sliceType$7.nil;
 75006  			return;
 75007  		}
 75008  		this.Mutex = Mutex_;
 75009  		this.err = err_;
 75010  		this.version = version_;
 75011  		this.cipher = cipher_;
 75012  		this.mac = mac_;
 75013  		this.seq = seq_;
 75014  		this.bfree = bfree_;
 75015  		this.additionalData = additionalData_;
 75016  		this.nextCipher = nextCipher_;
 75017  		this.nextMac = nextMac_;
 75018  		this.inDigestBuf = inDigestBuf_;
 75019  		this.outDigestBuf = outDigestBuf_;
 75020  	});
 75021  	cbcMode = $pkg.cbcMode = $newType(8, $kindInterface, "tls.cbcMode", true, "crypto/tls", false, null);
 75022  	block = $pkg.block = $newType(0, $kindStruct, "tls.block", true, "crypto/tls", false, function(data_, off_, link_) {
 75023  		this.$val = this;
 75024  		if (arguments.length === 0) {
 75025  			this.data = sliceType$7.nil;
 75026  			this.off = 0;
 75027  			this.link = ptrType$9.nil;
 75028  			return;
 75029  		}
 75030  		this.data = data_;
 75031  		this.off = off_;
 75032  		this.link = link_;
 75033  	});
 75034  	RecordHeaderError = $pkg.RecordHeaderError = $newType(0, $kindStruct, "tls.RecordHeaderError", true, "crypto/tls", true, function(Msg_, RecordHeader_) {
 75035  		this.$val = this;
 75036  		if (arguments.length === 0) {
 75037  			this.Msg = "";
 75038  			this.RecordHeader = arrayType$4.zero();
 75039  			return;
 75040  		}
 75041  		this.Msg = Msg_;
 75042  		this.RecordHeader = RecordHeader_;
 75043  	});
 75044  	clientHandshakeState = $pkg.clientHandshakeState = $newType(0, $kindStruct, "tls.clientHandshakeState", true, "crypto/tls", false, function(c_, serverHello_, hello_, suite_, finishedHash_, masterSecret_, session_) {
 75045  		this.$val = this;
 75046  		if (arguments.length === 0) {
 75047  			this.c = ptrType$15.nil;
 75048  			this.serverHello = ptrType$16.nil;
 75049  			this.hello = ptrType$14.nil;
 75050  			this.suite = ptrType$1.nil;
 75051  			this.finishedHash = new finishedHash.ptr($ifaceNil, $ifaceNil, $ifaceNil, $ifaceNil, sliceType$7.nil, 0, $throwNilPointerError);
 75052  			this.masterSecret = sliceType$7.nil;
 75053  			this.session = ptrType$8.nil;
 75054  			return;
 75055  		}
 75056  		this.c = c_;
 75057  		this.serverHello = serverHello_;
 75058  		this.hello = hello_;
 75059  		this.suite = suite_;
 75060  		this.finishedHash = finishedHash_;
 75061  		this.masterSecret = masterSecret_;
 75062  		this.session = session_;
 75063  	});
 75064  	clientHelloMsg = $pkg.clientHelloMsg = $newType(0, $kindStruct, "tls.clientHelloMsg", true, "crypto/tls", false, function(raw_, vers_, random_, sessionId_, cipherSuites_, compressionMethods_, nextProtoNeg_, serverName_, ocspStapling_, scts_, supportedCurves_, supportedPoints_, ticketSupported_, sessionTicket_, supportedSignatureAlgorithms_, secureRenegotiation_, secureRenegotiationSupported_, alpnProtocols_) {
 75065  		this.$val = this;
 75066  		if (arguments.length === 0) {
 75067  			this.raw = sliceType$7.nil;
 75068  			this.vers = 0;
 75069  			this.random = sliceType$7.nil;
 75070  			this.sessionId = sliceType$7.nil;
 75071  			this.cipherSuites = sliceType$2.nil;
 75072  			this.compressionMethods = sliceType$7.nil;
 75073  			this.nextProtoNeg = false;
 75074  			this.serverName = "";
 75075  			this.ocspStapling = false;
 75076  			this.scts = false;
 75077  			this.supportedCurves = sliceType$3.nil;
 75078  			this.supportedPoints = sliceType$7.nil;
 75079  			this.ticketSupported = false;
 75080  			this.sessionTicket = sliceType$7.nil;
 75081  			this.supportedSignatureAlgorithms = sliceType$6.nil;
 75082  			this.secureRenegotiation = sliceType$7.nil;
 75083  			this.secureRenegotiationSupported = false;
 75084  			this.alpnProtocols = sliceType$1.nil;
 75085  			return;
 75086  		}
 75087  		this.raw = raw_;
 75088  		this.vers = vers_;
 75089  		this.random = random_;
 75090  		this.sessionId = sessionId_;
 75091  		this.cipherSuites = cipherSuites_;
 75092  		this.compressionMethods = compressionMethods_;
 75093  		this.nextProtoNeg = nextProtoNeg_;
 75094  		this.serverName = serverName_;
 75095  		this.ocspStapling = ocspStapling_;
 75096  		this.scts = scts_;
 75097  		this.supportedCurves = supportedCurves_;
 75098  		this.supportedPoints = supportedPoints_;
 75099  		this.ticketSupported = ticketSupported_;
 75100  		this.sessionTicket = sessionTicket_;
 75101  		this.supportedSignatureAlgorithms = supportedSignatureAlgorithms_;
 75102  		this.secureRenegotiation = secureRenegotiation_;
 75103  		this.secureRenegotiationSupported = secureRenegotiationSupported_;
 75104  		this.alpnProtocols = alpnProtocols_;
 75105  	});
 75106  	serverHelloMsg = $pkg.serverHelloMsg = $newType(0, $kindStruct, "tls.serverHelloMsg", true, "crypto/tls", false, function(raw_, vers_, random_, sessionId_, cipherSuite_, compressionMethod_, nextProtoNeg_, nextProtos_, ocspStapling_, scts_, ticketSupported_, secureRenegotiation_, secureRenegotiationSupported_, alpnProtocol_) {
 75107  		this.$val = this;
 75108  		if (arguments.length === 0) {
 75109  			this.raw = sliceType$7.nil;
 75110  			this.vers = 0;
 75111  			this.random = sliceType$7.nil;
 75112  			this.sessionId = sliceType$7.nil;
 75113  			this.cipherSuite = 0;
 75114  			this.compressionMethod = 0;
 75115  			this.nextProtoNeg = false;
 75116  			this.nextProtos = sliceType$1.nil;
 75117  			this.ocspStapling = false;
 75118  			this.scts = sliceType$9.nil;
 75119  			this.ticketSupported = false;
 75120  			this.secureRenegotiation = sliceType$7.nil;
 75121  			this.secureRenegotiationSupported = false;
 75122  			this.alpnProtocol = "";
 75123  			return;
 75124  		}
 75125  		this.raw = raw_;
 75126  		this.vers = vers_;
 75127  		this.random = random_;
 75128  		this.sessionId = sessionId_;
 75129  		this.cipherSuite = cipherSuite_;
 75130  		this.compressionMethod = compressionMethod_;
 75131  		this.nextProtoNeg = nextProtoNeg_;
 75132  		this.nextProtos = nextProtos_;
 75133  		this.ocspStapling = ocspStapling_;
 75134  		this.scts = scts_;
 75135  		this.ticketSupported = ticketSupported_;
 75136  		this.secureRenegotiation = secureRenegotiation_;
 75137  		this.secureRenegotiationSupported = secureRenegotiationSupported_;
 75138  		this.alpnProtocol = alpnProtocol_;
 75139  	});
 75140  	certificateMsg = $pkg.certificateMsg = $newType(0, $kindStruct, "tls.certificateMsg", true, "crypto/tls", false, function(raw_, certificates_) {
 75141  		this.$val = this;
 75142  		if (arguments.length === 0) {
 75143  			this.raw = sliceType$7.nil;
 75144  			this.certificates = sliceType$9.nil;
 75145  			return;
 75146  		}
 75147  		this.raw = raw_;
 75148  		this.certificates = certificates_;
 75149  	});
 75150  	serverKeyExchangeMsg = $pkg.serverKeyExchangeMsg = $newType(0, $kindStruct, "tls.serverKeyExchangeMsg", true, "crypto/tls", false, function(raw_, key_) {
 75151  		this.$val = this;
 75152  		if (arguments.length === 0) {
 75153  			this.raw = sliceType$7.nil;
 75154  			this.key = sliceType$7.nil;
 75155  			return;
 75156  		}
 75157  		this.raw = raw_;
 75158  		this.key = key_;
 75159  	});
 75160  	certificateStatusMsg = $pkg.certificateStatusMsg = $newType(0, $kindStruct, "tls.certificateStatusMsg", true, "crypto/tls", false, function(raw_, statusType_, response_) {
 75161  		this.$val = this;
 75162  		if (arguments.length === 0) {
 75163  			this.raw = sliceType$7.nil;
 75164  			this.statusType = 0;
 75165  			this.response = sliceType$7.nil;
 75166  			return;
 75167  		}
 75168  		this.raw = raw_;
 75169  		this.statusType = statusType_;
 75170  		this.response = response_;
 75171  	});
 75172  	serverHelloDoneMsg = $pkg.serverHelloDoneMsg = $newType(0, $kindStruct, "tls.serverHelloDoneMsg", true, "crypto/tls", false, function() {
 75173  		this.$val = this;
 75174  		if (arguments.length === 0) {
 75175  			return;
 75176  		}
 75177  	});
 75178  	clientKeyExchangeMsg = $pkg.clientKeyExchangeMsg = $newType(0, $kindStruct, "tls.clientKeyExchangeMsg", true, "crypto/tls", false, function(raw_, ciphertext_) {
 75179  		this.$val = this;
 75180  		if (arguments.length === 0) {
 75181  			this.raw = sliceType$7.nil;
 75182  			this.ciphertext = sliceType$7.nil;
 75183  			return;
 75184  		}
 75185  		this.raw = raw_;
 75186  		this.ciphertext = ciphertext_;
 75187  	});
 75188  	finishedMsg = $pkg.finishedMsg = $newType(0, $kindStruct, "tls.finishedMsg", true, "crypto/tls", false, function(raw_, verifyData_) {
 75189  		this.$val = this;
 75190  		if (arguments.length === 0) {
 75191  			this.raw = sliceType$7.nil;
 75192  			this.verifyData = sliceType$7.nil;
 75193  			return;
 75194  		}
 75195  		this.raw = raw_;
 75196  		this.verifyData = verifyData_;
 75197  	});
 75198  	nextProtoMsg = $pkg.nextProtoMsg = $newType(0, $kindStruct, "tls.nextProtoMsg", true, "crypto/tls", false, function(raw_, proto_) {
 75199  		this.$val = this;
 75200  		if (arguments.length === 0) {
 75201  			this.raw = sliceType$7.nil;
 75202  			this.proto = "";
 75203  			return;
 75204  		}
 75205  		this.raw = raw_;
 75206  		this.proto = proto_;
 75207  	});
 75208  	certificateRequestMsg = $pkg.certificateRequestMsg = $newType(0, $kindStruct, "tls.certificateRequestMsg", true, "crypto/tls", false, function(raw_, hasSignatureAndHash_, certificateTypes_, supportedSignatureAlgorithms_, certificateAuthorities_) {
 75209  		this.$val = this;
 75210  		if (arguments.length === 0) {
 75211  			this.raw = sliceType$7.nil;
 75212  			this.hasSignatureAndHash = false;
 75213  			this.certificateTypes = sliceType$7.nil;
 75214  			this.supportedSignatureAlgorithms = sliceType$6.nil;
 75215  			this.certificateAuthorities = sliceType$9.nil;
 75216  			return;
 75217  		}
 75218  		this.raw = raw_;
 75219  		this.hasSignatureAndHash = hasSignatureAndHash_;
 75220  		this.certificateTypes = certificateTypes_;
 75221  		this.supportedSignatureAlgorithms = supportedSignatureAlgorithms_;
 75222  		this.certificateAuthorities = certificateAuthorities_;
 75223  	});
 75224  	certificateVerifyMsg = $pkg.certificateVerifyMsg = $newType(0, $kindStruct, "tls.certificateVerifyMsg", true, "crypto/tls", false, function(raw_, hasSignatureAndHash_, signatureAlgorithm_, signature_) {
 75225  		this.$val = this;
 75226  		if (arguments.length === 0) {
 75227  			this.raw = sliceType$7.nil;
 75228  			this.hasSignatureAndHash = false;
 75229  			this.signatureAlgorithm = 0;
 75230  			this.signature = sliceType$7.nil;
 75231  			return;
 75232  		}
 75233  		this.raw = raw_;
 75234  		this.hasSignatureAndHash = hasSignatureAndHash_;
 75235  		this.signatureAlgorithm = signatureAlgorithm_;
 75236  		this.signature = signature_;
 75237  	});
 75238  	newSessionTicketMsg = $pkg.newSessionTicketMsg = $newType(0, $kindStruct, "tls.newSessionTicketMsg", true, "crypto/tls", false, function(raw_, ticket_) {
 75239  		this.$val = this;
 75240  		if (arguments.length === 0) {
 75241  			this.raw = sliceType$7.nil;
 75242  			this.ticket = sliceType$7.nil;
 75243  			return;
 75244  		}
 75245  		this.raw = raw_;
 75246  		this.ticket = ticket_;
 75247  	});
 75248  	helloRequestMsg = $pkg.helloRequestMsg = $newType(0, $kindStruct, "tls.helloRequestMsg", true, "crypto/tls", false, function() {
 75249  		this.$val = this;
 75250  		if (arguments.length === 0) {
 75251  			return;
 75252  		}
 75253  	});
 75254  	serverHandshakeState = $pkg.serverHandshakeState = $newType(0, $kindStruct, "tls.serverHandshakeState", true, "crypto/tls", false, function(c_, clientHello_, hello_, suite_, ellipticOk_, ecdsaOk_, rsaDecryptOk_, rsaSignOk_, sessionState_, finishedHash_, masterSecret_, certsFromClient_, cert_, cachedClientHelloInfo_) {
 75255  		this.$val = this;
 75256  		if (arguments.length === 0) {
 75257  			this.c = ptrType$15.nil;
 75258  			this.clientHello = ptrType$14.nil;
 75259  			this.hello = ptrType$16.nil;
 75260  			this.suite = ptrType$1.nil;
 75261  			this.ellipticOk = false;
 75262  			this.ecdsaOk = false;
 75263  			this.rsaDecryptOk = false;
 75264  			this.rsaSignOk = false;
 75265  			this.sessionState = ptrType$30.nil;
 75266  			this.finishedHash = new finishedHash.ptr($ifaceNil, $ifaceNil, $ifaceNil, $ifaceNil, sliceType$7.nil, 0, $throwNilPointerError);
 75267  			this.masterSecret = sliceType$7.nil;
 75268  			this.certsFromClient = sliceType$9.nil;
 75269  			this.cert = ptrType$4.nil;
 75270  			this.cachedClientHelloInfo = ptrType$31.nil;
 75271  			return;
 75272  		}
 75273  		this.c = c_;
 75274  		this.clientHello = clientHello_;
 75275  		this.hello = hello_;
 75276  		this.suite = suite_;
 75277  		this.ellipticOk = ellipticOk_;
 75278  		this.ecdsaOk = ecdsaOk_;
 75279  		this.rsaDecryptOk = rsaDecryptOk_;
 75280  		this.rsaSignOk = rsaSignOk_;
 75281  		this.sessionState = sessionState_;
 75282  		this.finishedHash = finishedHash_;
 75283  		this.masterSecret = masterSecret_;
 75284  		this.certsFromClient = certsFromClient_;
 75285  		this.cert = cert_;
 75286  		this.cachedClientHelloInfo = cachedClientHelloInfo_;
 75287  	});
 75288  	rsaKeyAgreement = $pkg.rsaKeyAgreement = $newType(0, $kindStruct, "tls.rsaKeyAgreement", true, "crypto/tls", false, function() {
 75289  		this.$val = this;
 75290  		if (arguments.length === 0) {
 75291  			return;
 75292  		}
 75293  	});
 75294  	ecdheKeyAgreement = $pkg.ecdheKeyAgreement = $newType(0, $kindStruct, "tls.ecdheKeyAgreement", true, "crypto/tls", false, function(version_, sigType_, privateKey_, curveid_, publicKey_, x_, y_) {
 75295  		this.$val = this;
 75296  		if (arguments.length === 0) {
 75297  			this.version = 0;
 75298  			this.sigType = 0;
 75299  			this.privateKey = sliceType$7.nil;
 75300  			this.curveid = 0;
 75301  			this.publicKey = sliceType$7.nil;
 75302  			this.x = ptrType$2.nil;
 75303  			this.y = ptrType$2.nil;
 75304  			return;
 75305  		}
 75306  		this.version = version_;
 75307  		this.sigType = sigType_;
 75308  		this.privateKey = privateKey_;
 75309  		this.curveid = curveid_;
 75310  		this.publicKey = publicKey_;
 75311  		this.x = x_;
 75312  		this.y = y_;
 75313  	});
 75314  	finishedHash = $pkg.finishedHash = $newType(0, $kindStruct, "tls.finishedHash", true, "crypto/tls", false, function(client_, server_, clientMD5_, serverMD5_, buffer_, version_, prf_) {
 75315  		this.$val = this;
 75316  		if (arguments.length === 0) {
 75317  			this.client = $ifaceNil;
 75318  			this.server = $ifaceNil;
 75319  			this.clientMD5 = $ifaceNil;
 75320  			this.serverMD5 = $ifaceNil;
 75321  			this.buffer = sliceType$7.nil;
 75322  			this.version = 0;
 75323  			this.prf = $throwNilPointerError;
 75324  			return;
 75325  		}
 75326  		this.client = client_;
 75327  		this.server = server_;
 75328  		this.clientMD5 = clientMD5_;
 75329  		this.serverMD5 = serverMD5_;
 75330  		this.buffer = buffer_;
 75331  		this.version = version_;
 75332  		this.prf = prf_;
 75333  	});
 75334  	sessionState = $pkg.sessionState = $newType(0, $kindStruct, "tls.sessionState", true, "crypto/tls", false, function(vers_, cipherSuite_, masterSecret_, certificates_, usedOldKey_) {
 75335  		this.$val = this;
 75336  		if (arguments.length === 0) {
 75337  			this.vers = 0;
 75338  			this.cipherSuite = 0;
 75339  			this.masterSecret = sliceType$7.nil;
 75340  			this.certificates = sliceType$9.nil;
 75341  			this.usedOldKey = false;
 75342  			return;
 75343  		}
 75344  		this.vers = vers_;
 75345  		this.cipherSuite = cipherSuite_;
 75346  		this.masterSecret = masterSecret_;
 75347  		this.certificates = certificates_;
 75348  		this.usedOldKey = usedOldKey_;
 75349  	});
 75350  	listener = $pkg.listener = $newType(0, $kindStruct, "tls.listener", true, "crypto/tls", false, function(Listener_, config_) {
 75351  		this.$val = this;
 75352  		if (arguments.length === 0) {
 75353  			this.Listener = $ifaceNil;
 75354  			this.config = ptrType$3.nil;
 75355  			return;
 75356  		}
 75357  		this.Listener = Listener_;
 75358  		this.config = config_;
 75359  	});
 75360  	timeoutError = $pkg.timeoutError = $newType(0, $kindStruct, "tls.timeoutError", true, "crypto/tls", false, function() {
 75361  		this.$val = this;
 75362  		if (arguments.length === 0) {
 75363  			return;
 75364  		}
 75365  	});
 75366  	sliceType = $sliceType(Certificate);
 75367  	ptrType = $ptrType(x509.CertPool);
 75368  	sliceType$1 = $sliceType($String);
 75369  	sliceType$2 = $sliceType($Uint16);
 75370  	arrayType = $arrayType($Uint8, 32);
 75371  	sliceType$3 = $sliceType(CurveID);
 75372  	sliceType$4 = $sliceType(ticketKey);
 75373  	ptrType$1 = $ptrType(cipherSuite);
 75374  	sliceType$5 = $sliceType(ptrType$1);
 75375  	sliceType$6 = $sliceType(SignatureScheme);
 75376  	sliceType$7 = $sliceType($Uint8);
 75377  	arrayType$1 = $arrayType($Uint8, 12);
 75378  	ptrType$2 = $ptrType(big.Int);
 75379  	arrayType$2 = $arrayType($Uint8, 16);
 75380  	arrayType$3 = $arrayType($Uint8, 64);
 75381  	ptrType$3 = $ptrType(Config);
 75382  	ptrType$4 = $ptrType(Certificate);
 75383  	sliceType$8 = $sliceType($emptyInterface);
 75384  	ptrType$8 = $ptrType(ClientSessionState);
 75385  	ptrType$9 = $ptrType(block);
 75386  	arrayType$4 = $arrayType($Uint8, 5);
 75387  	sliceType$9 = $sliceType(sliceType$7);
 75388  	ptrType$10 = $ptrType($Int32);
 75389  	ptrType$11 = $ptrType(helloRequestMsg);
 75390  	ptrType$12 = $ptrType(sync.Cond);
 75391  	ptrType$13 = $ptrType(x509.Certificate);
 75392  	sliceType$10 = $sliceType(ptrType$13);
 75393  	sliceType$11 = $sliceType(sliceType$10);
 75394  	ptrType$14 = $ptrType(clientHelloMsg);
 75395  	ptrType$15 = $ptrType(Conn);
 75396  	ptrType$16 = $ptrType(serverHelloMsg);
 75397  	ptrType$17 = $ptrType(certificateMsg);
 75398  	ptrType$18 = $ptrType(time.Location);
 75399  	sliceType$12 = $sliceType(x509.ExtKeyUsage);
 75400  	ptrType$19 = $ptrType(rsa.PublicKey);
 75401  	ptrType$20 = $ptrType(ecdsa.PublicKey);
 75402  	ptrType$21 = $ptrType(certificateStatusMsg);
 75403  	ptrType$22 = $ptrType(serverKeyExchangeMsg);
 75404  	ptrType$23 = $ptrType(certificateRequestMsg);
 75405  	ptrType$24 = $ptrType(serverHelloDoneMsg);
 75406  	ptrType$25 = $ptrType(clientKeyExchangeMsg);
 75407  	arrayType$5 = $arrayType($Uint8, 24);
 75408  	ptrType$26 = $ptrType(finishedMsg);
 75409  	ptrType$27 = $ptrType(newSessionTicketMsg);
 75410  	ptrType$28 = $ptrType(nextProtoMsg);
 75411  	ptrType$29 = $ptrType(certificateVerifyMsg);
 75412  	ptrType$30 = $ptrType(sessionState);
 75413  	ptrType$31 = $ptrType(ClientHelloInfo);
 75414  	arrayType$6 = $arrayType($Uint8, 11);
 75415  	arrayType$7 = $arrayType($Uint8, 8);
 75416  	arrayType$8 = $arrayType($Uint8, 13);
 75417  	ptrType$32 = $ptrType(net.Resolver);
 75418  	ptrType$33 = $ptrType(pem.Block);
 75419  	ptrType$34 = $ptrType(rsa.PrivateKey);
 75420  	ptrType$35 = $ptrType(ecdsa.PrivateKey);
 75421  	funcType = $funcType([$Uint16], [keyAgreement], false);
 75422  	funcType$1 = $funcType([sliceType$7, sliceType$7, $Bool], [$emptyInterface], false);
 75423  	funcType$2 = $funcType([$Uint16, sliceType$7], [macFunction], false);
 75424  	funcType$3 = $funcType([sliceType$7, sliceType$7], [cipher.AEAD], false);
 75425  	ptrType$36 = $ptrType(fixedNonceAEAD);
 75426  	ptrType$37 = $ptrType(xorNonceAEAD);
 75427  	ptrType$38 = $ptrType(cthWrapper);
 75428  	sliceType$13 = $sliceType(arrayType);
 75429  	funcType$4 = $funcType([], [time.Time], false);
 75430  	mapType = $mapType($String, ptrType$4);
 75431  	funcType$5 = $funcType([ptrType$31], [ptrType$4, $error], false);
 75432  	ptrType$39 = $ptrType(CertificateRequestInfo);
 75433  	funcType$6 = $funcType([ptrType$39], [ptrType$4, $error], false);
 75434  	funcType$7 = $funcType([ptrType$31], [ptrType$3, $error], false);
 75435  	funcType$8 = $funcType([sliceType$9, sliceType$11], [$error], false);
 75436  	ptrType$41 = $ptrType(halfConn);
 75437  	ptrType$42 = $ptrType(clientHandshakeState);
 75438  	ptrType$43 = $ptrType(serverHandshakeState);
 75439  	ptrType$44 = $ptrType(ecdheKeyAgreement);
 75440  	ptrType$45 = $ptrType(finishedHash);
 75441  	funcType$9 = $funcType([sliceType$7, sliceType$7, sliceType$7, sliceType$7], [], false);
 75442  	ptrType$46 = $ptrType(listener);
 75443  	alert.prototype.String = function() {
 75444  		var _entry, _tuple, e, ok, s;
 75445  		e = this.$val;
 75446  		_tuple = (_entry = alertText[alert.keyFor(e)], _entry !== undefined ? [_entry.v, true] : ["", false]);
 75447  		s = _tuple[0];
 75448  		ok = _tuple[1];
 75449  		if (ok) {
 75450  			return "tls: " + s;
 75451  		}
 75452  		return "tls: alert(" + strconv.Itoa(((e >> 0))) + ")";
 75453  	};
 75454  	$ptrType(alert).prototype.String = function() { return new alert(this.$get()).String(); };
 75455  	alert.prototype.Error = function() {
 75456  		var e;
 75457  		e = this.$val;
 75458  		return new alert(e).String();
 75459  	};
 75460  	$ptrType(alert).prototype.Error = function() { return new alert(this.$get()).Error(); };
 75461  	cipherRC4 = function(key, iv, isRead) {
 75462  		var _tuple, cipher$1, isRead, iv, key;
 75463  		_tuple = rc4.NewCipher(key);
 75464  		cipher$1 = _tuple[0];
 75465  		return cipher$1;
 75466  	};
 75467  	cipher3DES = function(key, iv, isRead) {
 75468  		var _r, _r$1, _tuple, block$1, isRead, iv, key, $s, $r;
 75469  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _tuple = $f._tuple; block$1 = $f.block$1; isRead = $f.isRead; iv = $f.iv; key = $f.key; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 75470  		_tuple = des.NewTripleDESCipher(key);
 75471  		block$1 = _tuple[0];
 75472  		/* */ if (isRead) { $s = 1; continue; }
 75473  		/* */ $s = 2; continue;
 75474  		/* if (isRead) { */ case 1:
 75475  			_r = cipher.NewCBCDecrypter(block$1, iv); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 75476  			$s = -1; return _r;
 75477  		/* } */ case 2:
 75478  		_r$1 = cipher.NewCBCEncrypter(block$1, iv); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 75479  		$s = -1; return _r$1;
 75480  		/* */ } return; } if ($f === undefined) { $f = { $blk: cipher3DES }; } $f._r = _r; $f._r$1 = _r$1; $f._tuple = _tuple; $f.block$1 = block$1; $f.isRead = isRead; $f.iv = iv; $f.key = key; $f.$s = $s; $f.$r = $r; return $f;
 75481  	};
 75482  	cipherAES = function(key, iv, isRead) {
 75483  		var _r, _r$1, _tuple, block$1, isRead, iv, key, $s, $r;
 75484  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _tuple = $f._tuple; block$1 = $f.block$1; isRead = $f.isRead; iv = $f.iv; key = $f.key; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 75485  		_tuple = aes.NewCipher(key);
 75486  		block$1 = _tuple[0];
 75487  		/* */ if (isRead) { $s = 1; continue; }
 75488  		/* */ $s = 2; continue;
 75489  		/* if (isRead) { */ case 1:
 75490  			_r = cipher.NewCBCDecrypter(block$1, iv); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 75491  			$s = -1; return _r;
 75492  		/* } */ case 2:
 75493  		_r$1 = cipher.NewCBCEncrypter(block$1, iv); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 75494  		$s = -1; return _r$1;
 75495  		/* */ } return; } if ($f === undefined) { $f = { $blk: cipherAES }; } $f._r = _r; $f._r$1 = _r$1; $f._tuple = _tuple; $f.block$1 = block$1; $f.isRead = isRead; $f.iv = iv; $f.key = key; $f.$s = $s; $f.$r = $r; return $f;
 75496  	};
 75497  	macSHA1 = function(version, key) {
 75498  		var _r, key, mac, version, x, $s, $r;
 75499  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; key = $f.key; mac = $f.mac; version = $f.version; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 75500  		if (version === 768) {
 75501  			mac = new ssl30MAC.ptr(sha1.New(), $makeSlice(sliceType$7, key.$length));
 75502  			$copySlice(mac.key, key);
 75503  			$s = -1; return new mac.constructor.elem(mac);
 75504  		}
 75505  		_r = hmac.New(newConstantTimeHash(sha1.New), key); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 75506  		$s = -1; return (x = new tls10MAC.ptr(_r), new x.constructor.elem(x));
 75507  		/* */ } return; } if ($f === undefined) { $f = { $blk: macSHA1 }; } $f._r = _r; $f.key = key; $f.mac = mac; $f.version = version; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
 75508  	};
 75509  	macSHA256 = function(version, key) {
 75510  		var _r, key, version, x, $s, $r;
 75511  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; key = $f.key; version = $f.version; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 75512  		_r = hmac.New(sha256.New, key); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 75513  		$s = -1; return (x = new tls10MAC.ptr(_r), new x.constructor.elem(x));
 75514  		/* */ } return; } if ($f === undefined) { $f = { $blk: macSHA256 }; } $f._r = _r; $f.key = key; $f.version = version; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
 75515  	};
 75516  	fixedNonceAEAD.ptr.prototype.NonceSize = function() {
 75517  		var f;
 75518  		f = this;
 75519  		return 8;
 75520  	};
 75521  	fixedNonceAEAD.prototype.NonceSize = function() { return this.$val.NonceSize(); };
 75522  	fixedNonceAEAD.ptr.prototype.Overhead = function() {
 75523  		var _r, f, $s, $r;
 75524  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; f = $f.f; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 75525  		f = this;
 75526  		_r = f.aead.Overhead(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 75527  		$s = -1; return _r;
 75528  		/* */ } return; } if ($f === undefined) { $f = { $blk: fixedNonceAEAD.ptr.prototype.Overhead }; } $f._r = _r; $f.f = f; $f.$s = $s; $f.$r = $r; return $f;
 75529  	};
 75530  	fixedNonceAEAD.prototype.Overhead = function() { return this.$val.Overhead(); };
 75531  	fixedNonceAEAD.ptr.prototype.explicitNonceLen = function() {
 75532  		var f;
 75533  		f = this;
 75534  		return 8;
 75535  	};
 75536  	fixedNonceAEAD.prototype.explicitNonceLen = function() { return this.$val.explicitNonceLen(); };
 75537  	fixedNonceAEAD.ptr.prototype.Seal = function(out, nonce, plaintext, additionalData) {
 75538  		var _r, additionalData, f, nonce, out, plaintext, $s, $r;
 75539  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; additionalData = $f.additionalData; f = $f.f; nonce = $f.nonce; out = $f.out; plaintext = $f.plaintext; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 75540  		f = this;
 75541  		$copySlice($subslice(new sliceType$7(f.nonce), 4), nonce);
 75542  		_r = f.aead.Seal(out, new sliceType$7(f.nonce), plaintext, additionalData); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 75543  		$s = -1; return _r;
 75544  		/* */ } return; } if ($f === undefined) { $f = { $blk: fixedNonceAEAD.ptr.prototype.Seal }; } $f._r = _r; $f.additionalData = additionalData; $f.f = f; $f.nonce = nonce; $f.out = out; $f.plaintext = plaintext; $f.$s = $s; $f.$r = $r; return $f;
 75545  	};
 75546  	fixedNonceAEAD.prototype.Seal = function(out, nonce, plaintext, additionalData) { return this.$val.Seal(out, nonce, plaintext, additionalData); };
 75547  	fixedNonceAEAD.ptr.prototype.Open = function(out, nonce, plaintext, additionalData) {
 75548  		var _r, additionalData, f, nonce, out, plaintext, $s, $r;
 75549  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; additionalData = $f.additionalData; f = $f.f; nonce = $f.nonce; out = $f.out; plaintext = $f.plaintext; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 75550  		f = this;
 75551  		$copySlice($subslice(new sliceType$7(f.nonce), 4), nonce);
 75552  		_r = f.aead.Open(out, new sliceType$7(f.nonce), plaintext, additionalData); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 75553  		$s = -1; return _r;
 75554  		/* */ } return; } if ($f === undefined) { $f = { $blk: fixedNonceAEAD.ptr.prototype.Open }; } $f._r = _r; $f.additionalData = additionalData; $f.f = f; $f.nonce = nonce; $f.out = out; $f.plaintext = plaintext; $f.$s = $s; $f.$r = $r; return $f;
 75555  	};
 75556  	fixedNonceAEAD.prototype.Open = function(out, nonce, plaintext, additionalData) { return this.$val.Open(out, nonce, plaintext, additionalData); };
 75557  	xorNonceAEAD.ptr.prototype.NonceSize = function() {
 75558  		var f;
 75559  		f = this;
 75560  		return 8;
 75561  	};
 75562  	xorNonceAEAD.prototype.NonceSize = function() { return this.$val.NonceSize(); };
 75563  	xorNonceAEAD.ptr.prototype.Overhead = function() {
 75564  		var _r, f, $s, $r;
 75565  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; f = $f.f; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 75566  		f = this;
 75567  		_r = f.aead.Overhead(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 75568  		$s = -1; return _r;
 75569  		/* */ } return; } if ($f === undefined) { $f = { $blk: xorNonceAEAD.ptr.prototype.Overhead }; } $f._r = _r; $f.f = f; $f.$s = $s; $f.$r = $r; return $f;
 75570  	};
 75571  	xorNonceAEAD.prototype.Overhead = function() { return this.$val.Overhead(); };
 75572  	xorNonceAEAD.ptr.prototype.explicitNonceLen = function() {
 75573  		var f;
 75574  		f = this;
 75575  		return 0;
 75576  	};
 75577  	xorNonceAEAD.prototype.explicitNonceLen = function() { return this.$val.explicitNonceLen(); };
 75578  	xorNonceAEAD.ptr.prototype.Seal = function(out, nonce, plaintext, additionalData) {
 75579  		var _i, _i$1, _index, _index$1, _r, _ref, _ref$1, additionalData, b, b$1, f, i, i$1, nonce, out, plaintext, result, x, x$1, x$2, x$3, $s, $r;
 75580  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _i = $f._i; _i$1 = $f._i$1; _index = $f._index; _index$1 = $f._index$1; _r = $f._r; _ref = $f._ref; _ref$1 = $f._ref$1; additionalData = $f.additionalData; b = $f.b; b$1 = $f.b$1; f = $f.f; i = $f.i; i$1 = $f.i$1; nonce = $f.nonce; out = $f.out; plaintext = $f.plaintext; result = $f.result; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; x$3 = $f.x$3; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 75581  		f = this;
 75582  		_ref = nonce;
 75583  		_i = 0;
 75584  		while (true) {
 75585  			if (!(_i < _ref.$length)) { break; }
 75586  			i = _i;
 75587  			b = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
 75588  			_index = 4 + i >> 0;
 75589  			(x$1 = f.nonceMask, ((_index < 0 || _index >= x$1.length) ? ($throwRuntimeError("index out of range"), undefined) : x$1[_index] = (((x = f.nonceMask, ((_index < 0 || _index >= x.length) ? ($throwRuntimeError("index out of range"), undefined) : x[_index])) ^ (b)) << 24 >>> 24)));
 75590  			_i++;
 75591  		}
 75592  		_r = f.aead.Seal(out, new sliceType$7(f.nonceMask), plaintext, additionalData); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 75593  		result = _r;
 75594  		_ref$1 = nonce;
 75595  		_i$1 = 0;
 75596  		while (true) {
 75597  			if (!(_i$1 < _ref$1.$length)) { break; }
 75598  			i$1 = _i$1;
 75599  			b$1 = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]);
 75600  			_index$1 = 4 + i$1 >> 0;
 75601  			(x$3 = f.nonceMask, ((_index$1 < 0 || _index$1 >= x$3.length) ? ($throwRuntimeError("index out of range"), undefined) : x$3[_index$1] = (((x$2 = f.nonceMask, ((_index$1 < 0 || _index$1 >= x$2.length) ? ($throwRuntimeError("index out of range"), undefined) : x$2[_index$1])) ^ (b$1)) << 24 >>> 24)));
 75602  			_i$1++;
 75603  		}
 75604  		$s = -1; return result;
 75605  		/* */ } return; } if ($f === undefined) { $f = { $blk: xorNonceAEAD.ptr.prototype.Seal }; } $f._i = _i; $f._i$1 = _i$1; $f._index = _index; $f._index$1 = _index$1; $f._r = _r; $f._ref = _ref; $f._ref$1 = _ref$1; $f.additionalData = additionalData; $f.b = b; $f.b$1 = b$1; $f.f = f; $f.i = i; $f.i$1 = i$1; $f.nonce = nonce; $f.out = out; $f.plaintext = plaintext; $f.result = result; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.x$3 = x$3; $f.$s = $s; $f.$r = $r; return $f;
 75606  	};
 75607  	xorNonceAEAD.prototype.Seal = function(out, nonce, plaintext, additionalData) { return this.$val.Seal(out, nonce, plaintext, additionalData); };
 75608  	xorNonceAEAD.ptr.prototype.Open = function(out, nonce, plaintext, additionalData) {
 75609  		var _i, _i$1, _index, _index$1, _r, _ref, _ref$1, _tuple, additionalData, b, b$1, err, f, i, i$1, nonce, out, plaintext, result, x, x$1, x$2, x$3, $s, $r;
 75610  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _i = $f._i; _i$1 = $f._i$1; _index = $f._index; _index$1 = $f._index$1; _r = $f._r; _ref = $f._ref; _ref$1 = $f._ref$1; _tuple = $f._tuple; additionalData = $f.additionalData; b = $f.b; b$1 = $f.b$1; err = $f.err; f = $f.f; i = $f.i; i$1 = $f.i$1; nonce = $f.nonce; out = $f.out; plaintext = $f.plaintext; result = $f.result; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; x$3 = $f.x$3; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 75611  		f = this;
 75612  		_ref = nonce;
 75613  		_i = 0;
 75614  		while (true) {
 75615  			if (!(_i < _ref.$length)) { break; }
 75616  			i = _i;
 75617  			b = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
 75618  			_index = 4 + i >> 0;
 75619  			(x$1 = f.nonceMask, ((_index < 0 || _index >= x$1.length) ? ($throwRuntimeError("index out of range"), undefined) : x$1[_index] = (((x = f.nonceMask, ((_index < 0 || _index >= x.length) ? ($throwRuntimeError("index out of range"), undefined) : x[_index])) ^ (b)) << 24 >>> 24)));
 75620  			_i++;
 75621  		}
 75622  		_r = f.aead.Open(out, new sliceType$7(f.nonceMask), plaintext, additionalData); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 75623  		_tuple = _r;
 75624  		result = _tuple[0];
 75625  		err = _tuple[1];
 75626  		_ref$1 = nonce;
 75627  		_i$1 = 0;
 75628  		while (true) {
 75629  			if (!(_i$1 < _ref$1.$length)) { break; }
 75630  			i$1 = _i$1;
 75631  			b$1 = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]);
 75632  			_index$1 = 4 + i$1 >> 0;
 75633  			(x$3 = f.nonceMask, ((_index$1 < 0 || _index$1 >= x$3.length) ? ($throwRuntimeError("index out of range"), undefined) : x$3[_index$1] = (((x$2 = f.nonceMask, ((_index$1 < 0 || _index$1 >= x$2.length) ? ($throwRuntimeError("index out of range"), undefined) : x$2[_index$1])) ^ (b$1)) << 24 >>> 24)));
 75634  			_i$1++;
 75635  		}
 75636  		$s = -1; return [result, err];
 75637  		/* */ } return; } if ($f === undefined) { $f = { $blk: xorNonceAEAD.ptr.prototype.Open }; } $f._i = _i; $f._i$1 = _i$1; $f._index = _index; $f._index$1 = _index$1; $f._r = _r; $f._ref = _ref; $f._ref$1 = _ref$1; $f._tuple = _tuple; $f.additionalData = additionalData; $f.b = b; $f.b$1 = b$1; $f.err = err; $f.f = f; $f.i = i; $f.i$1 = i$1; $f.nonce = nonce; $f.out = out; $f.plaintext = plaintext; $f.result = result; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.x$3 = x$3; $f.$s = $s; $f.$r = $r; return $f;
 75638  	};
 75639  	xorNonceAEAD.prototype.Open = function(out, nonce, plaintext, additionalData) { return this.$val.Open(out, nonce, plaintext, additionalData); };
 75640  	aeadAESGCM = function(key, fixedNonce) {
 75641  		var _r, _tuple, _tuple$1, aead$1, aes$1, err, fixedNonce, key, ret, $s, $r;
 75642  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; aead$1 = $f.aead$1; aes$1 = $f.aes$1; err = $f.err; fixedNonce = $f.fixedNonce; key = $f.key; ret = $f.ret; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 75643  		_tuple = aes.NewCipher(key);
 75644  		aes$1 = _tuple[0];
 75645  		err = _tuple[1];
 75646  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 75647  			$panic(err);
 75648  		}
 75649  		_r = cipher.NewGCM(aes$1); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 75650  		_tuple$1 = _r;
 75651  		aead$1 = _tuple$1[0];
 75652  		err = _tuple$1[1];
 75653  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 75654  			$panic(err);
 75655  		}
 75656  		ret = new fixedNonceAEAD.ptr(arrayType$1.zero(), aead$1);
 75657  		$copySlice(new sliceType$7(ret.nonce), fixedNonce);
 75658  		$s = -1; return ret;
 75659  		/* */ } return; } if ($f === undefined) { $f = { $blk: aeadAESGCM }; } $f._r = _r; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.aead$1 = aead$1; $f.aes$1 = aes$1; $f.err = err; $f.fixedNonce = fixedNonce; $f.key = key; $f.ret = ret; $f.$s = $s; $f.$r = $r; return $f;
 75660  	};
 75661  	aeadChaCha20Poly1305 = function(key, fixedNonce) {
 75662  		var _tuple, aead$1, err, fixedNonce, key, ret;
 75663  		_tuple = chacha20poly1305.New(key);
 75664  		aead$1 = _tuple[0];
 75665  		err = _tuple[1];
 75666  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 75667  			$panic(err);
 75668  		}
 75669  		ret = new xorNonceAEAD.ptr(arrayType$1.zero(), aead$1);
 75670  		$copySlice(new sliceType$7(ret.nonceMask), fixedNonce);
 75671  		return ret;
 75672  	};
 75673  	ssl30MAC.ptr.prototype.Size = function() {
 75674  		var _r, s, $s, $r;
 75675  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 75676  		s = this;
 75677  		_r = s.h.Size(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 75678  		$s = -1; return _r;
 75679  		/* */ } return; } if ($f === undefined) { $f = { $blk: ssl30MAC.ptr.prototype.Size }; } $f._r = _r; $f.s = s; $f.$s = $s; $f.$r = $r; return $f;
 75680  	};
 75681  	ssl30MAC.prototype.Size = function() { return this.$val.Size(); };
 75682  	ssl30MAC.ptr.prototype.MAC = function(digestBuf, seq, header, data, extra) {
 75683  		var _r, _r$1, _r$10, _r$11, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, data, digestBuf, extra, header, padLength, s, seq, $s, $r;
 75684  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _r$10 = $f._r$10; _r$11 = $f._r$11; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _r$8 = $f._r$8; _r$9 = $f._r$9; data = $f.data; digestBuf = $f.digestBuf; extra = $f.extra; header = $f.header; padLength = $f.padLength; s = $f.s; seq = $f.seq; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 75685  		s = this;
 75686  		padLength = 48;
 75687  		_r = s.h.Size(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 75688  		/* */ if (_r === 20) { $s = 1; continue; }
 75689  		/* */ $s = 2; continue;
 75690  		/* if (_r === 20) { */ case 1:
 75691  			padLength = 40;
 75692  		/* } */ case 2:
 75693  		$r = s.h.Reset(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 75694  		_r$1 = s.h.Write(s.key); /* */ $s = 5; case 5: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 75695  		_r$1;
 75696  		_r$2 = s.h.Write($subslice(new sliceType$7(ssl30Pad1), 0, padLength)); /* */ $s = 6; case 6: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 75697  		_r$2;
 75698  		_r$3 = s.h.Write(seq); /* */ $s = 7; case 7: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 75699  		_r$3;
 75700  		_r$4 = s.h.Write($subslice(header, 0, 1)); /* */ $s = 8; case 8: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 75701  		_r$4;
 75702  		_r$5 = s.h.Write($subslice(header, 3, 5)); /* */ $s = 9; case 9: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
 75703  		_r$5;
 75704  		_r$6 = s.h.Write(data); /* */ $s = 10; case 10: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
 75705  		_r$6;
 75706  		_r$7 = s.h.Sum($subslice(digestBuf, 0, 0)); /* */ $s = 11; case 11: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
 75707  		digestBuf = _r$7;
 75708  		$r = s.h.Reset(); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 75709  		_r$8 = s.h.Write(s.key); /* */ $s = 13; case 13: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
 75710  		_r$8;
 75711  		_r$9 = s.h.Write($subslice(new sliceType$7(ssl30Pad2), 0, padLength)); /* */ $s = 14; case 14: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 75712  		_r$9;
 75713  		_r$10 = s.h.Write(digestBuf); /* */ $s = 15; case 15: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
 75714  		_r$10;
 75715  		_r$11 = s.h.Sum($subslice(digestBuf, 0, 0)); /* */ $s = 16; case 16: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; }
 75716  		$s = -1; return _r$11;
 75717  		/* */ } return; } if ($f === undefined) { $f = { $blk: ssl30MAC.ptr.prototype.MAC }; } $f._r = _r; $f._r$1 = _r$1; $f._r$10 = _r$10; $f._r$11 = _r$11; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._r$8 = _r$8; $f._r$9 = _r$9; $f.data = data; $f.digestBuf = digestBuf; $f.extra = extra; $f.header = header; $f.padLength = padLength; $f.s = s; $f.seq = seq; $f.$s = $s; $f.$r = $r; return $f;
 75718  	};
 75719  	ssl30MAC.prototype.MAC = function(digestBuf, seq, header, data, extra) { return this.$val.MAC(digestBuf, seq, header, data, extra); };
 75720  	cthWrapper.ptr.prototype.Size = function() {
 75721  		var _r, c, $s, $r;
 75722  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; c = $f.c; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 75723  		c = this;
 75724  		_r = c.h.Size(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 75725  		$s = -1; return _r;
 75726  		/* */ } return; } if ($f === undefined) { $f = { $blk: cthWrapper.ptr.prototype.Size }; } $f._r = _r; $f.c = c; $f.$s = $s; $f.$r = $r; return $f;
 75727  	};
 75728  	cthWrapper.prototype.Size = function() { return this.$val.Size(); };
 75729  	cthWrapper.ptr.prototype.BlockSize = function() {
 75730  		var _r, c, $s, $r;
 75731  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; c = $f.c; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 75732  		c = this;
 75733  		_r = c.h.BlockSize(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 75734  		$s = -1; return _r;
 75735  		/* */ } return; } if ($f === undefined) { $f = { $blk: cthWrapper.ptr.prototype.BlockSize }; } $f._r = _r; $f.c = c; $f.$s = $s; $f.$r = $r; return $f;
 75736  	};
 75737  	cthWrapper.prototype.BlockSize = function() { return this.$val.BlockSize(); };
 75738  	cthWrapper.ptr.prototype.Reset = function() {
 75739  		var c, $s, $r;
 75740  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; c = $f.c; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 75741  		c = this;
 75742  		$r = c.h.Reset(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 75743  		$s = -1; return;
 75744  		/* */ } return; } if ($f === undefined) { $f = { $blk: cthWrapper.ptr.prototype.Reset }; } $f.c = c; $f.$s = $s; $f.$r = $r; return $f;
 75745  	};
 75746  	cthWrapper.prototype.Reset = function() { return this.$val.Reset(); };
 75747  	cthWrapper.ptr.prototype.Write = function(p) {
 75748  		var _r, c, p, $s, $r;
 75749  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; c = $f.c; p = $f.p; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 75750  		c = this;
 75751  		_r = c.h.Write(p); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 75752  		$s = -1; return _r;
 75753  		/* */ } return; } if ($f === undefined) { $f = { $blk: cthWrapper.ptr.prototype.Write }; } $f._r = _r; $f.c = c; $f.p = p; $f.$s = $s; $f.$r = $r; return $f;
 75754  	};
 75755  	cthWrapper.prototype.Write = function(p) { return this.$val.Write(p); };
 75756  	cthWrapper.ptr.prototype.Sum = function(b) {
 75757  		var _r, b, c, $s, $r;
 75758  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; b = $f.b; c = $f.c; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 75759  		c = this;
 75760  		_r = c.h.ConstantTimeSum(b); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 75761  		$s = -1; return _r;
 75762  		/* */ } return; } if ($f === undefined) { $f = { $blk: cthWrapper.ptr.prototype.Sum }; } $f._r = _r; $f.b = b; $f.c = c; $f.$s = $s; $f.$r = $r; return $f;
 75763  	};
 75764  	cthWrapper.prototype.Sum = function(b) { return this.$val.Sum(b); };
 75765  	newConstantTimeHash = function(h) {
 75766  		var h;
 75767  		return (function $b() {
 75768  			var _r, $s, $r;
 75769  			/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 75770  			_r = h(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 75771  			$s = -1; return new cthWrapper.ptr($assertType(_r, constantTimeHash));
 75772  			/* */ } return; } if ($f === undefined) { $f = { $blk: $b }; } $f._r = _r; $f.$s = $s; $f.$r = $r; return $f;
 75773  		});
 75774  	};
 75775  	tls10MAC.ptr.prototype.Size = function() {
 75776  		var _r, s, $s, $r;
 75777  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 75778  		s = this;
 75779  		_r = s.h.Size(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 75780  		$s = -1; return _r;
 75781  		/* */ } return; } if ($f === undefined) { $f = { $blk: tls10MAC.ptr.prototype.Size }; } $f._r = _r; $f.s = s; $f.$s = $s; $f.$r = $r; return $f;
 75782  	};
 75783  	tls10MAC.prototype.Size = function() { return this.$val.Size(); };
 75784  	tls10MAC.ptr.prototype.MAC = function(digestBuf, seq, header, data, extra) {
 75785  		var _r, _r$1, _r$2, _r$3, _r$4, data, digestBuf, extra, header, res, s, seq, $s, $r;
 75786  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; data = $f.data; digestBuf = $f.digestBuf; extra = $f.extra; header = $f.header; res = $f.res; s = $f.s; seq = $f.seq; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 75787  		s = this;
 75788  		$r = s.h.Reset(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 75789  		_r = s.h.Write(seq); /* */ $s = 2; case 2: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 75790  		_r;
 75791  		_r$1 = s.h.Write(header); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 75792  		_r$1;
 75793  		_r$2 = s.h.Write(data); /* */ $s = 4; case 4: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 75794  		_r$2;
 75795  		_r$3 = s.h.Sum($subslice(digestBuf, 0, 0)); /* */ $s = 5; case 5: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 75796  		res = _r$3;
 75797  		/* */ if (!(extra === sliceType$7.nil)) { $s = 6; continue; }
 75798  		/* */ $s = 7; continue;
 75799  		/* if (!(extra === sliceType$7.nil)) { */ case 6:
 75800  			_r$4 = s.h.Write(extra); /* */ $s = 8; case 8: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 75801  			_r$4;
 75802  		/* } */ case 7:
 75803  		$s = -1; return res;
 75804  		/* */ } return; } if ($f === undefined) { $f = { $blk: tls10MAC.ptr.prototype.MAC }; } $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f.data = data; $f.digestBuf = digestBuf; $f.extra = extra; $f.header = header; $f.res = res; $f.s = s; $f.seq = seq; $f.$s = $s; $f.$r = $r; return $f;
 75805  	};
 75806  	tls10MAC.prototype.MAC = function(digestBuf, seq, header, data, extra) { return this.$val.MAC(digestBuf, seq, header, data, extra); };
 75807  	rsaKA = function(version) {
 75808  		var version, x;
 75809  		return (x = new rsaKeyAgreement.ptr(), new x.constructor.elem(x));
 75810  	};
 75811  	ecdheECDSAKA = function(version) {
 75812  		var version;
 75813  		return new ecdheKeyAgreement.ptr(version, 3, sliceType$7.nil, 0, sliceType$7.nil, ptrType$2.nil, ptrType$2.nil);
 75814  	};
 75815  	ecdheRSAKA = function(version) {
 75816  		var version;
 75817  		return new ecdheKeyAgreement.ptr(version, 1, sliceType$7.nil, 0, sliceType$7.nil, ptrType$2.nil, ptrType$2.nil);
 75818  	};
 75819  	mutualCipherSuite = function(have, want) {
 75820  		var _i, _i$1, _ref, _ref$1, have, id, suite, want;
 75821  		_ref = have;
 75822  		_i = 0;
 75823  		while (true) {
 75824  			if (!(_i < _ref.$length)) { break; }
 75825  			id = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
 75826  			if (id === want) {
 75827  				_ref$1 = cipherSuites;
 75828  				_i$1 = 0;
 75829  				while (true) {
 75830  					if (!(_i$1 < _ref$1.$length)) { break; }
 75831  					suite = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]);
 75832  					if (suite.id === want) {
 75833  						return suite;
 75834  					}
 75835  					_i$1++;
 75836  				}
 75837  				return ptrType$1.nil;
 75838  			}
 75839  			_i++;
 75840  		}
 75841  		return ptrType$1.nil;
 75842  	};
 75843  	ticketKeyFromBytes = function(b) {
 75844  		var _r, b, hashed, key, $s, $r;
 75845  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; b = $f.b; hashed = $f.hashed; key = $f.key; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 75846  		key = new ticketKey.ptr(arrayType$2.zero(), arrayType$2.zero(), arrayType$2.zero());
 75847  		_r = sha512.Sum512(new sliceType$7(b)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 75848  		hashed = $clone(_r, arrayType$3);
 75849  		$copySlice(new sliceType$7(key.keyName), $subslice(new sliceType$7(hashed), 0, 16));
 75850  		$copySlice(new sliceType$7(key.aesKey), $subslice(new sliceType$7(hashed), 16, 32));
 75851  		$copySlice(new sliceType$7(key.hmacKey), $subslice(new sliceType$7(hashed), 32, 48));
 75852  		ticketKey.copy(key, key);
 75853  		$s = -1; return key;
 75854  		/* */ } return; } if ($f === undefined) { $f = { $blk: ticketKeyFromBytes }; } $f._r = _r; $f.b = b; $f.hashed = hashed; $f.key = key; $f.$s = $s; $f.$r = $r; return $f;
 75855  	};
 75856  	Config.ptr.prototype.Clone = function() {
 75857  		var c, sessionTicketKeys, $s, $r;
 75858  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; c = $f.c; sessionTicketKeys = $f.sessionTicketKeys; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 75859  		c = [c];
 75860  		c[0] = this;
 75861  		$r = c[0].serverInitOnce.Do((function(c) { return function $b() {
 75862  			var $s, $r;
 75863  			/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 75864  			$r = c[0].serverInit(ptrType$3.nil); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 75865  			$s = -1; return;
 75866  			/* */ } return; } if ($f === undefined) { $f = { $blk: $b }; } $f.$s = $s; $f.$r = $r; return $f;
 75867  		}; })(c)); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 75868  		sessionTicketKeys = sliceType$4.nil;
 75869  		$r = c[0].mutex.RLock(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 75870  		sessionTicketKeys = c[0].sessionTicketKeys;
 75871  		$r = c[0].mutex.RUnlock(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 75872  		$s = -1; return new Config.ptr(c[0].Rand, c[0].Time, c[0].Certificates, c[0].NameToCertificate, c[0].GetCertificate, c[0].GetClientCertificate, c[0].GetConfigForClient, c[0].VerifyPeerCertificate, c[0].RootCAs, c[0].NextProtos, c[0].ServerName, c[0].ClientAuth, c[0].ClientCAs, c[0].InsecureSkipVerify, c[0].CipherSuites, c[0].PreferServerCipherSuites, c[0].SessionTicketsDisabled, $clone(c[0].SessionTicketKey, arrayType), c[0].ClientSessionCache, c[0].MinVersion, c[0].MaxVersion, c[0].CurvePreferences, c[0].DynamicRecordSizingDisabled, c[0].Renegotiation, c[0].KeyLogWriter, new sync.Once.ptr(new sync.Mutex.ptr(0, 0), 0), new sync.RWMutex.ptr(new sync.Mutex.ptr(0, 0), 0, 0, 0, 0), sessionTicketKeys);
 75873  		/* */ } return; } if ($f === undefined) { $f = { $blk: Config.ptr.prototype.Clone }; } $f.c = c; $f.sessionTicketKeys = sessionTicketKeys; $f.$s = $s; $f.$r = $r; return $f;
 75874  	};
 75875  	Config.prototype.Clone = function() { return this.$val.Clone(); };
 75876  	Config.ptr.prototype.serverInit = function(originalConfig) {
 75877  		var _i, _r, _r$1, _r$2, _ref, _tuple, _v, alreadySet, b, c, err, originalConfig, $s, $r;
 75878  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _i = $f._i; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _ref = $f._ref; _tuple = $f._tuple; _v = $f._v; alreadySet = $f.alreadySet; b = $f.b; c = $f.c; err = $f.err; originalConfig = $f.originalConfig; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 75879  		c = this;
 75880  		if (c.SessionTicketsDisabled) { _v = true; $s = 3; continue s; }
 75881  		_r = c.ticketKeys(); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 75882  		_v = !((_r.$length === 0)); case 3:
 75883  		/* */ if (_v) { $s = 1; continue; }
 75884  		/* */ $s = 2; continue;
 75885  		/* if (_v) { */ case 1:
 75886  			$s = -1; return;
 75887  		/* } */ case 2:
 75888  		alreadySet = false;
 75889  		_ref = c.SessionTicketKey;
 75890  		_i = 0;
 75891  		while (true) {
 75892  			if (!(_i < 32)) { break; }
 75893  			b = ((_i < 0 || _i >= _ref.length) ? ($throwRuntimeError("index out of range"), undefined) : _ref[_i]);
 75894  			if (!((b === 0))) {
 75895  				alreadySet = true;
 75896  				break;
 75897  			}
 75898  			_i++;
 75899  		}
 75900  		/* */ if (!alreadySet) { $s = 5; continue; }
 75901  		/* */ $s = 6; continue;
 75902  		/* if (!alreadySet) { */ case 5:
 75903  			/* */ if (!(originalConfig === ptrType$3.nil)) { $s = 7; continue; }
 75904  			/* */ $s = 8; continue;
 75905  			/* if (!(originalConfig === ptrType$3.nil)) { */ case 7:
 75906  				$copySlice(new sliceType$7(c.SessionTicketKey), new sliceType$7(originalConfig.SessionTicketKey));
 75907  				$s = 9; continue;
 75908  			/* } else { */ case 8:
 75909  				_r$1 = io.ReadFull(c.rand(), new sliceType$7(c.SessionTicketKey)); /* */ $s = 10; case 10: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 75910  				_tuple = _r$1;
 75911  				err = _tuple[1];
 75912  				if (!($interfaceIsEqual(err, $ifaceNil))) {
 75913  					c.SessionTicketsDisabled = true;
 75914  					$s = -1; return;
 75915  				}
 75916  			/* } */ case 9:
 75917  		/* } */ case 6:
 75918  		/* */ if (!(originalConfig === ptrType$3.nil)) { $s = 11; continue; }
 75919  		/* */ $s = 12; continue;
 75920  		/* if (!(originalConfig === ptrType$3.nil)) { */ case 11:
 75921  			$r = originalConfig.mutex.RLock(); /* */ $s = 14; case 14: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 75922  			c.sessionTicketKeys = originalConfig.sessionTicketKeys;
 75923  			$r = originalConfig.mutex.RUnlock(); /* */ $s = 15; case 15: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 75924  			$s = 13; continue;
 75925  		/* } else { */ case 12:
 75926  			_r$2 = ticketKeyFromBytes($clone(c.SessionTicketKey, arrayType)); /* */ $s = 16; case 16: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 75927  			c.sessionTicketKeys = new sliceType$4([$clone(_r$2, ticketKey)]);
 75928  		/* } */ case 13:
 75929  		$s = -1; return;
 75930  		/* */ } return; } if ($f === undefined) { $f = { $blk: Config.ptr.prototype.serverInit }; } $f._i = _i; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._ref = _ref; $f._tuple = _tuple; $f._v = _v; $f.alreadySet = alreadySet; $f.b = b; $f.c = c; $f.err = err; $f.originalConfig = originalConfig; $f.$s = $s; $f.$r = $r; return $f;
 75931  	};
 75932  	Config.prototype.serverInit = function(originalConfig) { return this.$val.serverInit(originalConfig); };
 75933  	Config.ptr.prototype.ticketKeys = function() {
 75934  		var c, ret, $s, $r;
 75935  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; c = $f.c; ret = $f.ret; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 75936  		c = this;
 75937  		$r = c.mutex.RLock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 75938  		ret = c.sessionTicketKeys;
 75939  		$r = c.mutex.RUnlock(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 75940  		$s = -1; return ret;
 75941  		/* */ } return; } if ($f === undefined) { $f = { $blk: Config.ptr.prototype.ticketKeys }; } $f.c = c; $f.ret = ret; $f.$s = $s; $f.$r = $r; return $f;
 75942  	};
 75943  	Config.prototype.ticketKeys = function() { return this.$val.ticketKeys(); };
 75944  	Config.ptr.prototype.SetSessionTicketKeys = function(keys) {
 75945  		var _i, _r, _ref, bytes$1, c, i, keys, newKeys, $s, $r;
 75946  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _i = $f._i; _r = $f._r; _ref = $f._ref; bytes$1 = $f.bytes$1; c = $f.c; i = $f.i; keys = $f.keys; newKeys = $f.newKeys; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 75947  		c = this;
 75948  		if (keys.$length === 0) {
 75949  			$panic(new $String("tls: keys must have at least one key"));
 75950  		}
 75951  		newKeys = $makeSlice(sliceType$4, keys.$length);
 75952  		_ref = keys;
 75953  		_i = 0;
 75954  		/* while (true) { */ case 1:
 75955  			/* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; }
 75956  			i = _i;
 75957  			bytes$1 = $clone(((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]), arrayType);
 75958  			_r = ticketKeyFromBytes($clone(bytes$1, arrayType)); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 75959  			ticketKey.copy(((i < 0 || i >= newKeys.$length) ? ($throwRuntimeError("index out of range"), undefined) : newKeys.$array[newKeys.$offset + i]), _r);
 75960  			_i++;
 75961  		/* } */ $s = 1; continue; case 2:
 75962  		$r = c.mutex.Lock(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 75963  		c.sessionTicketKeys = newKeys;
 75964  		$r = c.mutex.Unlock(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 75965  		$s = -1; return;
 75966  		/* */ } return; } if ($f === undefined) { $f = { $blk: Config.ptr.prototype.SetSessionTicketKeys }; } $f._i = _i; $f._r = _r; $f._ref = _ref; $f.bytes$1 = bytes$1; $f.c = c; $f.i = i; $f.keys = keys; $f.newKeys = newKeys; $f.$s = $s; $f.$r = $r; return $f;
 75967  	};
 75968  	Config.prototype.SetSessionTicketKeys = function(keys) { return this.$val.SetSessionTicketKeys(keys); };
 75969  	Config.ptr.prototype.rand = function() {
 75970  		var c, r;
 75971  		c = this;
 75972  		r = c.Rand;
 75973  		if ($interfaceIsEqual(r, $ifaceNil)) {
 75974  			return rand.Reader;
 75975  		}
 75976  		return r;
 75977  	};
 75978  	Config.prototype.rand = function() { return this.$val.rand(); };
 75979  	Config.ptr.prototype.time = function() {
 75980  		var _r, c, t, $s, $r;
 75981  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; c = $f.c; t = $f.t; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 75982  		c = this;
 75983  		t = c.Time;
 75984  		if (t === $throwNilPointerError) {
 75985  			t = time.Now;
 75986  		}
 75987  		_r = t(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 75988  		$s = -1; return _r;
 75989  		/* */ } return; } if ($f === undefined) { $f = { $blk: Config.ptr.prototype.time }; } $f._r = _r; $f.c = c; $f.t = t; $f.$s = $s; $f.$r = $r; return $f;
 75990  	};
 75991  	Config.prototype.time = function() { return this.$val.time(); };
 75992  	Config.ptr.prototype.cipherSuites = function() {
 75993  		var _r, c, s, $s, $r;
 75994  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; c = $f.c; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 75995  		c = this;
 75996  		s = c.CipherSuites;
 75997  		/* */ if (s === sliceType$2.nil) { $s = 1; continue; }
 75998  		/* */ $s = 2; continue;
 75999  		/* if (s === sliceType$2.nil) { */ case 1:
 76000  			_r = defaultCipherSuites(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 76001  			s = _r;
 76002  		/* } */ case 2:
 76003  		$s = -1; return s;
 76004  		/* */ } return; } if ($f === undefined) { $f = { $blk: Config.ptr.prototype.cipherSuites }; } $f._r = _r; $f.c = c; $f.s = s; $f.$s = $s; $f.$r = $r; return $f;
 76005  	};
 76006  	Config.prototype.cipherSuites = function() { return this.$val.cipherSuites(); };
 76007  	Config.ptr.prototype.minVersion = function() {
 76008  		var c;
 76009  		c = this;
 76010  		if (c === ptrType$3.nil || (c.MinVersion === 0)) {
 76011  			return 769;
 76012  		}
 76013  		return c.MinVersion;
 76014  	};
 76015  	Config.prototype.minVersion = function() { return this.$val.minVersion(); };
 76016  	Config.ptr.prototype.maxVersion = function() {
 76017  		var c;
 76018  		c = this;
 76019  		if (c === ptrType$3.nil || (c.MaxVersion === 0)) {
 76020  			return 771;
 76021  		}
 76022  		return c.MaxVersion;
 76023  	};
 76024  	Config.prototype.maxVersion = function() { return this.$val.maxVersion(); };
 76025  	Config.ptr.prototype.curvePreferences = function() {
 76026  		var c;
 76027  		c = this;
 76028  		if (c === ptrType$3.nil || (c.CurvePreferences.$length === 0)) {
 76029  			return defaultCurvePreferences;
 76030  		}
 76031  		return c.CurvePreferences;
 76032  	};
 76033  	Config.prototype.curvePreferences = function() { return this.$val.curvePreferences(); };
 76034  	Config.ptr.prototype.mutualVersion = function(vers) {
 76035  		var c, maxVersion, minVersion, vers;
 76036  		c = this;
 76037  		minVersion = c.minVersion();
 76038  		maxVersion = c.maxVersion();
 76039  		if (vers < minVersion) {
 76040  			return [0, false];
 76041  		}
 76042  		if (vers > maxVersion) {
 76043  			vers = maxVersion;
 76044  		}
 76045  		return [vers, true];
 76046  	};
 76047  	Config.prototype.mutualVersion = function(vers) { return this.$val.mutualVersion(vers); };
 76048  	Config.ptr.prototype.getCertificate = function(clientHello) {
 76049  		var _entry, _entry$1, _i, _r, _r$1, _ref, _tuple, _tuple$1, _tuple$2, c, candidate, cert, cert$1, cert$2, clientHello, err, i, labels, name, ok, ok$1, x, x$1, $s, $r;
 76050  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _entry = $f._entry; _entry$1 = $f._entry$1; _i = $f._i; _r = $f._r; _r$1 = $f._r$1; _ref = $f._ref; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; c = $f.c; candidate = $f.candidate; cert = $f.cert; cert$1 = $f.cert$1; cert$2 = $f.cert$2; clientHello = $f.clientHello; err = $f.err; i = $f.i; labels = $f.labels; name = $f.name; ok = $f.ok; ok$1 = $f.ok$1; x = $f.x; x$1 = $f.x$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 76051  		c = this;
 76052  		/* */ if (!(c.GetCertificate === $throwNilPointerError) && ((c.Certificates.$length === 0) || clientHello.ServerName.length > 0)) { $s = 1; continue; }
 76053  		/* */ $s = 2; continue;
 76054  		/* if (!(c.GetCertificate === $throwNilPointerError) && ((c.Certificates.$length === 0) || clientHello.ServerName.length > 0)) { */ case 1:
 76055  			_r = c.GetCertificate(clientHello); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 76056  			_tuple = _r;
 76057  			cert = _tuple[0];
 76058  			err = _tuple[1];
 76059  			if (!(cert === ptrType$4.nil) || !($interfaceIsEqual(err, $ifaceNil))) {
 76060  				$s = -1; return [cert, err];
 76061  			}
 76062  		/* } */ case 2:
 76063  		if (c.Certificates.$length === 0) {
 76064  			$s = -1; return [ptrType$4.nil, errors.New("tls: no certificates configured")];
 76065  		}
 76066  		if ((c.Certificates.$length === 1) || c.NameToCertificate === false) {
 76067  			$s = -1; return [(x = c.Certificates, (0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0])), $ifaceNil];
 76068  		}
 76069  		_r$1 = strings.ToLower(clientHello.ServerName); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 76070  		name = _r$1;
 76071  		while (true) {
 76072  			if (!(name.length > 0 && (name.charCodeAt((name.length - 1 >> 0)) === 46))) { break; }
 76073  			name = $substring(name, 0, (name.length - 1 >> 0));
 76074  		}
 76075  		_tuple$1 = (_entry = c.NameToCertificate[$String.keyFor(name)], _entry !== undefined ? [_entry.v, true] : [ptrType$4.nil, false]);
 76076  		cert$1 = _tuple$1[0];
 76077  		ok = _tuple$1[1];
 76078  		if (ok) {
 76079  			$s = -1; return [cert$1, $ifaceNil];
 76080  		}
 76081  		labels = strings.Split(name, ".");
 76082  		_ref = labels;
 76083  		_i = 0;
 76084  		while (true) {
 76085  			if (!(_i < _ref.$length)) { break; }
 76086  			i = _i;
 76087  			((i < 0 || i >= labels.$length) ? ($throwRuntimeError("index out of range"), undefined) : labels.$array[labels.$offset + i] = "*");
 76088  			candidate = strings.Join(labels, ".");
 76089  			_tuple$2 = (_entry$1 = c.NameToCertificate[$String.keyFor(candidate)], _entry$1 !== undefined ? [_entry$1.v, true] : [ptrType$4.nil, false]);
 76090  			cert$2 = _tuple$2[0];
 76091  			ok$1 = _tuple$2[1];
 76092  			if (ok$1) {
 76093  				$s = -1; return [cert$2, $ifaceNil];
 76094  			}
 76095  			_i++;
 76096  		}
 76097  		$s = -1; return [(x$1 = c.Certificates, (0 >= x$1.$length ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + 0])), $ifaceNil];
 76098  		/* */ } return; } if ($f === undefined) { $f = { $blk: Config.ptr.prototype.getCertificate }; } $f._entry = _entry; $f._entry$1 = _entry$1; $f._i = _i; $f._r = _r; $f._r$1 = _r$1; $f._ref = _ref; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f.c = c; $f.candidate = candidate; $f.cert = cert; $f.cert$1 = cert$1; $f.cert$2 = cert$2; $f.clientHello = clientHello; $f.err = err; $f.i = i; $f.labels = labels; $f.name = name; $f.ok = ok; $f.ok$1 = ok$1; $f.x = x; $f.x$1 = x$1; $f.$s = $s; $f.$r = $r; return $f;
 76099  	};
 76100  	Config.prototype.getCertificate = function(clientHello) { return this.$val.getCertificate(clientHello); };
 76101  	Config.ptr.prototype.BuildNameToCertificate = function() {
 76102  		var _i, _i$1, _key, _key$1, _r, _ref, _ref$1, _tuple, c, cert, err, i, san, x, x$1, x509Cert, $s, $r;
 76103  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _i = $f._i; _i$1 = $f._i$1; _key = $f._key; _key$1 = $f._key$1; _r = $f._r; _ref = $f._ref; _ref$1 = $f._ref$1; _tuple = $f._tuple; c = $f.c; cert = $f.cert; err = $f.err; i = $f.i; san = $f.san; x = $f.x; x$1 = $f.x$1; x509Cert = $f.x509Cert; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 76104  		c = this;
 76105  		c.NameToCertificate = {};
 76106  		_ref = c.Certificates;
 76107  		_i = 0;
 76108  		/* while (true) { */ case 1:
 76109  			/* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; }
 76110  			i = _i;
 76111  			cert = (x = c.Certificates, ((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i]));
 76112  			_r = x509.ParseCertificate((x$1 = cert.Certificate, (0 >= x$1.$length ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + 0]))); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 76113  			_tuple = _r;
 76114  			x509Cert = _tuple[0];
 76115  			err = _tuple[1];
 76116  			if (!($interfaceIsEqual(err, $ifaceNil))) {
 76117  				_i++;
 76118  				/* continue; */ $s = 1; continue;
 76119  			}
 76120  			if (x509Cert.Subject.CommonName.length > 0) {
 76121  				_key = x509Cert.Subject.CommonName; (c.NameToCertificate || $throwRuntimeError("assignment to entry in nil map"))[$String.keyFor(_key)] = { k: _key, v: cert };
 76122  			}
 76123  			_ref$1 = x509Cert.DNSNames;
 76124  			_i$1 = 0;
 76125  			while (true) {
 76126  				if (!(_i$1 < _ref$1.$length)) { break; }
 76127  				san = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]);
 76128  				_key$1 = san; (c.NameToCertificate || $throwRuntimeError("assignment to entry in nil map"))[$String.keyFor(_key$1)] = { k: _key$1, v: cert };
 76129  				_i$1++;
 76130  			}
 76131  			_i++;
 76132  		/* } */ $s = 1; continue; case 2:
 76133  		$s = -1; return;
 76134  		/* */ } return; } if ($f === undefined) { $f = { $blk: Config.ptr.prototype.BuildNameToCertificate }; } $f._i = _i; $f._i$1 = _i$1; $f._key = _key; $f._key$1 = _key$1; $f._r = _r; $f._ref = _ref; $f._ref$1 = _ref$1; $f._tuple = _tuple; $f.c = c; $f.cert = cert; $f.err = err; $f.i = i; $f.san = san; $f.x = x; $f.x$1 = x$1; $f.x509Cert = x509Cert; $f.$s = $s; $f.$r = $r; return $f;
 76135  	};
 76136  	Config.prototype.BuildNameToCertificate = function() { return this.$val.BuildNameToCertificate(); };
 76137  	Config.ptr.prototype.writeKeyLog = function(clientRandom, masterSecret) {
 76138  		var _r, _r$1, _tuple, c, clientRandom, err, logLine, masterSecret, $s, $r;
 76139  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _tuple = $f._tuple; c = $f.c; clientRandom = $f.clientRandom; err = $f.err; logLine = $f.logLine; masterSecret = $f.masterSecret; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 76140  		c = this;
 76141  		if ($interfaceIsEqual(c.KeyLogWriter, $ifaceNil)) {
 76142  			$s = -1; return $ifaceNil;
 76143  		}
 76144  		_r = fmt.Sprintf("CLIENT_RANDOM %x %x\n", new sliceType$8([clientRandom, masterSecret])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 76145  		logLine = (new sliceType$7($stringToBytes(_r)));
 76146  		$r = writerMutex.Lock(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 76147  		_r$1 = c.KeyLogWriter.Write(logLine); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 76148  		_tuple = _r$1;
 76149  		err = _tuple[1];
 76150  		$r = writerMutex.Unlock(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 76151  		$s = -1; return err;
 76152  		/* */ } return; } if ($f === undefined) { $f = { $blk: Config.ptr.prototype.writeKeyLog }; } $f._r = _r; $f._r$1 = _r$1; $f._tuple = _tuple; $f.c = c; $f.clientRandom = clientRandom; $f.err = err; $f.logLine = logLine; $f.masterSecret = masterSecret; $f.$s = $s; $f.$r = $r; return $f;
 76153  	};
 76154  	Config.prototype.writeKeyLog = function(clientRandom, masterSecret) { return this.$val.writeKeyLog(clientRandom, masterSecret); };
 76155  	defaultConfig = function() {
 76156  		return emptyConfig;
 76157  	};
 76158  	defaultCipherSuites = function() {
 76159  		var $s, $r;
 76160  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 76161  		$r = once.Do(initDefaultCipherSuites); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 76162  		$s = -1; return varDefaultCipherSuites;
 76163  		/* */ } return; } if ($f === undefined) { $f = { $blk: defaultCipherSuites }; } $f.$s = $s; $f.$r = $r; return $f;
 76164  	};
 76165  	initDefaultCipherSuites = function() {
 76166  		var _i, _i$1, _ref, _ref$1, existing, suite, topCipherSuites;
 76167  		topCipherSuites = sliceType$2.nil;
 76168  		if (cipherhw.AESGCMSupport()) {
 76169  			topCipherSuites = new sliceType$2([49199, 49200, 49195, 49196, 52392, 52393]);
 76170  		} else {
 76171  			topCipherSuites = new sliceType$2([52392, 52393, 49199, 49200, 49195, 49196]);
 76172  		}
 76173  		varDefaultCipherSuites = $makeSlice(sliceType$2, 0, cipherSuites.$length);
 76174  		varDefaultCipherSuites = $appendSlice(varDefaultCipherSuites, topCipherSuites);
 76175  		_ref = cipherSuites;
 76176  		_i = 0;
 76177  		NextCipherSuite:
 76178  		while (true) {
 76179  			if (!(_i < _ref.$length)) { break; }
 76180  			suite = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
 76181  			if (!(((suite.flags & 16) === 0))) {
 76182  				_i++;
 76183  				continue;
 76184  			}
 76185  			_ref$1 = varDefaultCipherSuites;
 76186  			_i$1 = 0;
 76187  			while (true) {
 76188  				if (!(_i$1 < _ref$1.$length)) { break; }
 76189  				existing = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]);
 76190  				if (existing === suite.id) {
 76191  					_i++;
 76192  					continue NextCipherSuite;
 76193  				}
 76194  				_i$1++;
 76195  			}
 76196  			varDefaultCipherSuites = $append(varDefaultCipherSuites, suite.id);
 76197  			_i++;
 76198  		}
 76199  	};
 76200  	unexpectedMessageError = function(wanted, got) {
 76201  		var _r, got, wanted, $s, $r;
 76202  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; got = $f.got; wanted = $f.wanted; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 76203  		_r = fmt.Errorf("tls: received unexpected handshake message of type %T when waiting for %T", new sliceType$8([got, wanted])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 76204  		$s = -1; return _r;
 76205  		/* */ } return; } if ($f === undefined) { $f = { $blk: unexpectedMessageError }; } $f._r = _r; $f.got = got; $f.wanted = wanted; $f.$s = $s; $f.$r = $r; return $f;
 76206  	};
 76207  	isSupportedSignatureAlgorithm = function(sigAlg, supportedSignatureAlgorithms$1) {
 76208  		var _i, _ref, s, sigAlg, supportedSignatureAlgorithms$1;
 76209  		_ref = supportedSignatureAlgorithms$1;
 76210  		_i = 0;
 76211  		while (true) {
 76212  			if (!(_i < _ref.$length)) { break; }
 76213  			s = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
 76214  			if (s === sigAlg) {
 76215  				return true;
 76216  			}
 76217  			_i++;
 76218  		}
 76219  		return false;
 76220  	};
 76221  	signatureFromSignatureScheme = function(signatureAlgorithm) {
 76222  		var _1, signatureAlgorithm;
 76223  		_1 = signatureAlgorithm;
 76224  		if ((_1 === (513)) || (_1 === (1025)) || (_1 === (1281)) || (_1 === (1537))) {
 76225  			return 1;
 76226  		} else if ((_1 === (515)) || (_1 === (1027)) || (_1 === (1283)) || (_1 === (1539))) {
 76227  			return 3;
 76228  		} else {
 76229  			return 0;
 76230  		}
 76231  	};
 76232  	Conn.ptr.prototype.LocalAddr = function() {
 76233  		var _r, c, $s, $r;
 76234  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; c = $f.c; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 76235  		c = this;
 76236  		_r = c.conn.LocalAddr(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 76237  		$s = -1; return _r;
 76238  		/* */ } return; } if ($f === undefined) { $f = { $blk: Conn.ptr.prototype.LocalAddr }; } $f._r = _r; $f.c = c; $f.$s = $s; $f.$r = $r; return $f;
 76239  	};
 76240  	Conn.prototype.LocalAddr = function() { return this.$val.LocalAddr(); };
 76241  	Conn.ptr.prototype.RemoteAddr = function() {
 76242  		var _r, c, $s, $r;
 76243  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; c = $f.c; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 76244  		c = this;
 76245  		_r = c.conn.RemoteAddr(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 76246  		$s = -1; return _r;
 76247  		/* */ } return; } if ($f === undefined) { $f = { $blk: Conn.ptr.prototype.RemoteAddr }; } $f._r = _r; $f.c = c; $f.$s = $s; $f.$r = $r; return $f;
 76248  	};
 76249  	Conn.prototype.RemoteAddr = function() { return this.$val.RemoteAddr(); };
 76250  	Conn.ptr.prototype.SetDeadline = function(t) {
 76251  		var _r, c, t, $s, $r;
 76252  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; c = $f.c; t = $f.t; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 76253  		c = this;
 76254  		_r = c.conn.SetDeadline($clone(t, time.Time)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 76255  		$s = -1; return _r;
 76256  		/* */ } return; } if ($f === undefined) { $f = { $blk: Conn.ptr.prototype.SetDeadline }; } $f._r = _r; $f.c = c; $f.t = t; $f.$s = $s; $f.$r = $r; return $f;
 76257  	};
 76258  	Conn.prototype.SetDeadline = function(t) { return this.$val.SetDeadline(t); };
 76259  	Conn.ptr.prototype.SetReadDeadline = function(t) {
 76260  		var _r, c, t, $s, $r;
 76261  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; c = $f.c; t = $f.t; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 76262  		c = this;
 76263  		_r = c.conn.SetReadDeadline($clone(t, time.Time)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 76264  		$s = -1; return _r;
 76265  		/* */ } return; } if ($f === undefined) { $f = { $blk: Conn.ptr.prototype.SetReadDeadline }; } $f._r = _r; $f.c = c; $f.t = t; $f.$s = $s; $f.$r = $r; return $f;
 76266  	};
 76267  	Conn.prototype.SetReadDeadline = function(t) { return this.$val.SetReadDeadline(t); };
 76268  	Conn.ptr.prototype.SetWriteDeadline = function(t) {
 76269  		var _r, c, t, $s, $r;
 76270  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; c = $f.c; t = $f.t; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 76271  		c = this;
 76272  		_r = c.conn.SetWriteDeadline($clone(t, time.Time)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 76273  		$s = -1; return _r;
 76274  		/* */ } return; } if ($f === undefined) { $f = { $blk: Conn.ptr.prototype.SetWriteDeadline }; } $f._r = _r; $f.c = c; $f.t = t; $f.$s = $s; $f.$r = $r; return $f;
 76275  	};
 76276  	Conn.prototype.SetWriteDeadline = function(t) { return this.$val.SetWriteDeadline(t); };
 76277  	halfConn.ptr.prototype.setErrorLocked = function(err) {
 76278  		var err, hc;
 76279  		hc = this;
 76280  		hc.err = err;
 76281  		return err;
 76282  	};
 76283  	halfConn.prototype.setErrorLocked = function(err) { return this.$val.setErrorLocked(err); };
 76284  	halfConn.ptr.prototype.prepareCipherSpec = function(version, cipher$1, mac) {
 76285  		var cipher$1, hc, mac, version;
 76286  		hc = this;
 76287  		hc.version = version;
 76288  		hc.nextCipher = cipher$1;
 76289  		hc.nextMac = mac;
 76290  	};
 76291  	halfConn.prototype.prepareCipherSpec = function(version, cipher$1, mac) { return this.$val.prepareCipherSpec(version, cipher$1, mac); };
 76292  	halfConn.ptr.prototype.changeCipherSpec = function() {
 76293  		var _i, _ref, hc, i, x;
 76294  		hc = this;
 76295  		if ($interfaceIsEqual(hc.nextCipher, $ifaceNil)) {
 76296  			return new alert(80);
 76297  		}
 76298  		hc.cipher = hc.nextCipher;
 76299  		hc.mac = hc.nextMac;
 76300  		hc.nextCipher = $ifaceNil;
 76301  		hc.nextMac = $ifaceNil;
 76302  		_ref = hc.seq;
 76303  		_i = 0;
 76304  		while (true) {
 76305  			if (!(_i < 8)) { break; }
 76306  			i = _i;
 76307  			(x = hc.seq, ((i < 0 || i >= x.length) ? ($throwRuntimeError("index out of range"), undefined) : x[i] = 0));
 76308  			_i++;
 76309  		}
 76310  		return $ifaceNil;
 76311  	};
 76312  	halfConn.prototype.changeCipherSpec = function() { return this.$val.changeCipherSpec(); };
 76313  	halfConn.ptr.prototype.incSeq = function() {
 76314  		var hc, i, x, x$1, x$2;
 76315  		hc = this;
 76316  		i = 7;
 76317  		while (true) {
 76318  			if (!(i >= 0)) { break; }
 76319  			(x$1 = hc.seq, ((i < 0 || i >= x$1.length) ? ($throwRuntimeError("index out of range"), undefined) : x$1[i] = ((x = hc.seq, ((i < 0 || i >= x.length) ? ($throwRuntimeError("index out of range"), undefined) : x[i])) + (1) << 24 >>> 24)));
 76320  			if (!(((x$2 = hc.seq, ((i < 0 || i >= x$2.length) ? ($throwRuntimeError("index out of range"), undefined) : x$2[i])) === 0))) {
 76321  				return;
 76322  			}
 76323  			i = i - (1) >> 0;
 76324  		}
 76325  		$panic(new $String("TLS: sequence number wraparound"));
 76326  	};
 76327  	halfConn.prototype.incSeq = function() { return this.$val.incSeq(); };
 76328  	extractPadding = function(payload) {
 76329  		var _tmp, _tmp$1, b, good, i, mask, paddingLen, payload, t, t$1, toCheck, toRemove, x, x$1;
 76330  		toRemove = 0;
 76331  		good = 0;
 76332  		if (payload.$length < 1) {
 76333  			_tmp = 0;
 76334  			_tmp$1 = 0;
 76335  			toRemove = _tmp;
 76336  			good = _tmp$1;
 76337  			return [toRemove, good];
 76338  		}
 76339  		paddingLen = (x = payload.$length - 1 >> 0, ((x < 0 || x >= payload.$length) ? ($throwRuntimeError("index out of range"), undefined) : payload.$array[payload.$offset + x]));
 76340  		t = (((payload.$length - 1 >> 0) >>> 0)) - ((paddingLen >>> 0)) >>> 0;
 76341  		good = ((((((~t >>> 0) >> 0)) >> 31 >> 0) << 24 >>> 24));
 76342  		toCheck = 256;
 76343  		if (toCheck > payload.$length) {
 76344  			toCheck = payload.$length;
 76345  		}
 76346  		i = 0;
 76347  		while (true) {
 76348  			if (!(i < toCheck)) { break; }
 76349  			t$1 = ((paddingLen >>> 0)) - ((i >>> 0)) >>> 0;
 76350  			mask = ((((((~t$1 >>> 0) >> 0)) >> 31 >> 0) << 24 >>> 24));
 76351  			b = (x$1 = (payload.$length - 1 >> 0) - i >> 0, ((x$1 < 0 || x$1 >= payload.$length) ? ($throwRuntimeError("index out of range"), undefined) : payload.$array[payload.$offset + x$1]));
 76352  			good = (good & ~(((((mask & paddingLen) >>> 0) ^ ((mask & b) >>> 0)) << 24 >>> 24))) << 24 >>> 24;
 76353  			i = i + (1) >> 0;
 76354  		}
 76355  		good = (good & ((good << 4 << 24 >>> 24))) >>> 0;
 76356  		good = (good & ((good << 2 << 24 >>> 24))) >>> 0;
 76357  		good = (good & ((good << 1 << 24 >>> 24))) >>> 0;
 76358  		good = (((((good << 24 >> 24)) >> 7 << 24 >> 24) << 24 >>> 24));
 76359  		toRemove = ((paddingLen >> 0)) + 1 >> 0;
 76360  		return [toRemove, good];
 76361  	};
 76362  	extractPaddingSSL30 = function(payload) {
 76363  		var _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, good, paddingLen, payload, toRemove, x;
 76364  		toRemove = 0;
 76365  		good = 0;
 76366  		if (payload.$length < 1) {
 76367  			_tmp = 0;
 76368  			_tmp$1 = 0;
 76369  			toRemove = _tmp;
 76370  			good = _tmp$1;
 76371  			return [toRemove, good];
 76372  		}
 76373  		paddingLen = (((x = payload.$length - 1 >> 0, ((x < 0 || x >= payload.$length) ? ($throwRuntimeError("index out of range"), undefined) : payload.$array[payload.$offset + x])) >> 0)) + 1 >> 0;
 76374  		if (paddingLen > payload.$length) {
 76375  			_tmp$2 = 0;
 76376  			_tmp$3 = 0;
 76377  			toRemove = _tmp$2;
 76378  			good = _tmp$3;
 76379  			return [toRemove, good];
 76380  		}
 76381  		_tmp$4 = paddingLen;
 76382  		_tmp$5 = 255;
 76383  		toRemove = _tmp$4;
 76384  		good = _tmp$5;
 76385  		return [toRemove, good];
 76386  	};
 76387  	roundUp = function(a, b) {
 76388  		var _r, _r$1, a, b;
 76389  		return a + (_r = ((b - (_r$1 = a % b, _r$1 === _r$1 ? _r$1 : $throwRuntimeError("integer divide by zero")) >> 0)) % b, _r === _r ? _r : $throwRuntimeError("integer divide by zero")) >> 0;
 76390  	};
 76391  	halfConn.ptr.prototype.decrypt = function(b) {
 76392  		var _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _ref, _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$14, _tmp$15, _tmp$16, _tmp$17, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, _tuple$1, _tuple$2, alertValue, b, blockSize, c, c$1, c$2, c$3, err, explicitIVLen, hc, localMAC, macSize, n, n$1, nonce, ok, paddingGood, paddingLen, payload, prefixLen, remoteMAC, x, x$1, $s, $r;
 76393  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _ref = $f._ref; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$10 = $f._tmp$10; _tmp$11 = $f._tmp$11; _tmp$12 = $f._tmp$12; _tmp$13 = $f._tmp$13; _tmp$14 = $f._tmp$14; _tmp$15 = $f._tmp$15; _tmp$16 = $f._tmp$16; _tmp$17 = $f._tmp$17; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tmp$4 = $f._tmp$4; _tmp$5 = $f._tmp$5; _tmp$6 = $f._tmp$6; _tmp$7 = $f._tmp$7; _tmp$8 = $f._tmp$8; _tmp$9 = $f._tmp$9; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; alertValue = $f.alertValue; b = $f.b; blockSize = $f.blockSize; c = $f.c; c$1 = $f.c$1; c$2 = $f.c$2; c$3 = $f.c$3; err = $f.err; explicitIVLen = $f.explicitIVLen; hc = $f.hc; localMAC = $f.localMAC; macSize = $f.macSize; n = $f.n; n$1 = $f.n$1; nonce = $f.nonce; ok = $f.ok; paddingGood = $f.paddingGood; paddingLen = $f.paddingLen; payload = $f.payload; prefixLen = $f.prefixLen; remoteMAC = $f.remoteMAC; x = $f.x; x$1 = $f.x$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 76394  		ok = false;
 76395  		prefixLen = 0;
 76396  		alertValue = 0;
 76397  		hc = this;
 76398  		payload = $subslice(b.data, 5);
 76399  		macSize = 0;
 76400  		/* */ if (!($interfaceIsEqual(hc.mac, $ifaceNil))) { $s = 1; continue; }
 76401  		/* */ $s = 2; continue;
 76402  		/* if (!($interfaceIsEqual(hc.mac, $ifaceNil))) { */ case 1:
 76403  			_r = hc.mac.Size(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 76404  			macSize = _r;
 76405  		/* } */ case 2:
 76406  		paddingGood = 255;
 76407  		paddingLen = 0;
 76408  		explicitIVLen = 0;
 76409  		/* */ if (!($interfaceIsEqual(hc.cipher, $ifaceNil))) { $s = 4; continue; }
 76410  		/* */ $s = 5; continue;
 76411  		/* if (!($interfaceIsEqual(hc.cipher, $ifaceNil))) { */ case 4:
 76412  			_ref = hc.cipher;
 76413  			/* */ if ($assertType(_ref, cipher.Stream, true)[1]) { $s = 6; continue; }
 76414  			/* */ if ($assertType(_ref, aead, true)[1]) { $s = 7; continue; }
 76415  			/* */ if ($assertType(_ref, cbcMode, true)[1]) { $s = 8; continue; }
 76416  			/* */ $s = 9; continue;
 76417  			/* if ($assertType(_ref, cipher.Stream, true)[1]) { */ case 6:
 76418  				c = _ref;
 76419  				$r = c.XORKeyStream(payload, payload); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 76420  				$s = 10; continue;
 76421  			/* } else if ($assertType(_ref, aead, true)[1]) { */ case 7:
 76422  				c$1 = _ref;
 76423  				_r$1 = c$1.explicitNonceLen(); /* */ $s = 12; case 12: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 76424  				explicitIVLen = _r$1;
 76425  				if (payload.$length < explicitIVLen) {
 76426  					_tmp = false;
 76427  					_tmp$1 = 0;
 76428  					_tmp$2 = 20;
 76429  					ok = _tmp;
 76430  					prefixLen = _tmp$1;
 76431  					alertValue = _tmp$2;
 76432  					$s = -1; return [ok, prefixLen, alertValue];
 76433  				}
 76434  				nonce = $subslice(payload, 0, explicitIVLen);
 76435  				payload = $subslice(payload, explicitIVLen);
 76436  				if (nonce.$length === 0) {
 76437  					nonce = new sliceType$7(hc.seq);
 76438  				}
 76439  				$copySlice(new sliceType$7(hc.additionalData), new sliceType$7(hc.seq));
 76440  				$copySlice($subslice(new sliceType$7(hc.additionalData), 8), $subslice(b.data, 0, 3));
 76441  				_r$2 = c$1.Overhead(); /* */ $s = 13; case 13: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 76442  				n = payload.$length - _r$2 >> 0;
 76443  				hc.additionalData[11] = (((n >> 8 >> 0) << 24 >>> 24));
 76444  				hc.additionalData[12] = ((n << 24 >>> 24));
 76445  				err = $ifaceNil;
 76446  				_r$3 = c$1.Open($subslice(payload, 0, 0), nonce, payload, new sliceType$7(hc.additionalData)); /* */ $s = 14; case 14: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 76447  				_tuple = _r$3;
 76448  				payload = _tuple[0];
 76449  				err = _tuple[1];
 76450  				if (!($interfaceIsEqual(err, $ifaceNil))) {
 76451  					_tmp$3 = false;
 76452  					_tmp$4 = 0;
 76453  					_tmp$5 = 20;
 76454  					ok = _tmp$3;
 76455  					prefixLen = _tmp$4;
 76456  					alertValue = _tmp$5;
 76457  					$s = -1; return [ok, prefixLen, alertValue];
 76458  				}
 76459  				b.resize((5 + explicitIVLen >> 0) + payload.$length >> 0);
 76460  				$s = 10; continue;
 76461  			/* } else if ($assertType(_ref, cbcMode, true)[1]) { */ case 8:
 76462  				c$2 = _ref;
 76463  				_r$4 = c$2.BlockSize(); /* */ $s = 15; case 15: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 76464  				blockSize = _r$4;
 76465  				if (hc.version >= 770) {
 76466  					explicitIVLen = blockSize;
 76467  				}
 76468  				if (!(((_r$5 = payload.$length % blockSize, _r$5 === _r$5 ? _r$5 : $throwRuntimeError("integer divide by zero")) === 0)) || payload.$length < roundUp((explicitIVLen + macSize >> 0) + 1 >> 0, blockSize)) {
 76469  					_tmp$6 = false;
 76470  					_tmp$7 = 0;
 76471  					_tmp$8 = 20;
 76472  					ok = _tmp$6;
 76473  					prefixLen = _tmp$7;
 76474  					alertValue = _tmp$8;
 76475  					$s = -1; return [ok, prefixLen, alertValue];
 76476  				}
 76477  				/* */ if (explicitIVLen > 0) { $s = 16; continue; }
 76478  				/* */ $s = 17; continue;
 76479  				/* if (explicitIVLen > 0) { */ case 16:
 76480  					$r = c$2.SetIV($subslice(payload, 0, explicitIVLen)); /* */ $s = 18; case 18: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 76481  					payload = $subslice(payload, explicitIVLen);
 76482  				/* } */ case 17:
 76483  				$r = c$2.CryptBlocks(payload, payload); /* */ $s = 19; case 19: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 76484  				if (hc.version === 768) {
 76485  					_tuple$1 = extractPaddingSSL30(payload);
 76486  					paddingLen = _tuple$1[0];
 76487  					paddingGood = _tuple$1[1];
 76488  				} else {
 76489  					_tuple$2 = extractPadding(payload);
 76490  					paddingLen = _tuple$2[0];
 76491  					paddingGood = _tuple$2[1];
 76492  				}
 76493  				$s = 10; continue;
 76494  			/* } else { */ case 9:
 76495  				c$3 = _ref;
 76496  				$panic(new $String("unknown cipher type"));
 76497  			/* } */ case 10:
 76498  		/* } */ case 5:
 76499  		/* */ if (!($interfaceIsEqual(hc.mac, $ifaceNil))) { $s = 20; continue; }
 76500  		/* */ $s = 21; continue;
 76501  		/* if (!($interfaceIsEqual(hc.mac, $ifaceNil))) { */ case 20:
 76502  			if (payload.$length < macSize) {
 76503  				_tmp$9 = false;
 76504  				_tmp$10 = 0;
 76505  				_tmp$11 = 20;
 76506  				ok = _tmp$9;
 76507  				prefixLen = _tmp$10;
 76508  				alertValue = _tmp$11;
 76509  				$s = -1; return [ok, prefixLen, alertValue];
 76510  			}
 76511  			n$1 = (payload.$length - macSize >> 0) - paddingLen >> 0;
 76512  			n$1 = subtle.ConstantTimeSelect((((((n$1 >>> 0)) >>> 31 >>> 0) >> 0)), 0, n$1);
 76513  			(x = b.data, (3 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 3] = (((n$1 >> 8 >> 0) << 24 >>> 24))));
 76514  			(x$1 = b.data, (4 >= x$1.$length ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + 4] = ((n$1 << 24 >>> 24))));
 76515  			remoteMAC = $subslice(payload, n$1, (n$1 + macSize >> 0));
 76516  			_r$6 = hc.mac.MAC(hc.inDigestBuf, $subslice(new sliceType$7(hc.seq), 0), $subslice(b.data, 0, 5), $subslice(payload, 0, n$1), $subslice(payload, (n$1 + macSize >> 0))); /* */ $s = 22; case 22: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
 76517  			localMAC = _r$6;
 76518  			if (!((subtle.ConstantTimeCompare(localMAC, remoteMAC) === 1)) || !((paddingGood === 255))) {
 76519  				_tmp$12 = false;
 76520  				_tmp$13 = 0;
 76521  				_tmp$14 = 20;
 76522  				ok = _tmp$12;
 76523  				prefixLen = _tmp$13;
 76524  				alertValue = _tmp$14;
 76525  				$s = -1; return [ok, prefixLen, alertValue];
 76526  			}
 76527  			hc.inDigestBuf = localMAC;
 76528  			b.resize((5 + explicitIVLen >> 0) + n$1 >> 0);
 76529  		/* } */ case 21:
 76530  		hc.incSeq();
 76531  		_tmp$15 = true;
 76532  		_tmp$16 = 5 + explicitIVLen >> 0;
 76533  		_tmp$17 = 0;
 76534  		ok = _tmp$15;
 76535  		prefixLen = _tmp$16;
 76536  		alertValue = _tmp$17;
 76537  		$s = -1; return [ok, prefixLen, alertValue];
 76538  		/* */ } return; } if ($f === undefined) { $f = { $blk: halfConn.ptr.prototype.decrypt }; } $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._ref = _ref; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$10 = _tmp$10; $f._tmp$11 = _tmp$11; $f._tmp$12 = _tmp$12; $f._tmp$13 = _tmp$13; $f._tmp$14 = _tmp$14; $f._tmp$15 = _tmp$15; $f._tmp$16 = _tmp$16; $f._tmp$17 = _tmp$17; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tmp$4 = _tmp$4; $f._tmp$5 = _tmp$5; $f._tmp$6 = _tmp$6; $f._tmp$7 = _tmp$7; $f._tmp$8 = _tmp$8; $f._tmp$9 = _tmp$9; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f.alertValue = alertValue; $f.b = b; $f.blockSize = blockSize; $f.c = c; $f.c$1 = c$1; $f.c$2 = c$2; $f.c$3 = c$3; $f.err = err; $f.explicitIVLen = explicitIVLen; $f.hc = hc; $f.localMAC = localMAC; $f.macSize = macSize; $f.n = n; $f.n$1 = n$1; $f.nonce = nonce; $f.ok = ok; $f.paddingGood = paddingGood; $f.paddingLen = paddingLen; $f.payload = payload; $f.prefixLen = prefixLen; $f.remoteMAC = remoteMAC; $f.x = x; $f.x$1 = x$1; $f.$s = $s; $f.$r = $r; return $f;
 76539  	};
 76540  	halfConn.prototype.decrypt = function(b) { return this.$val.decrypt(b); };
 76541  	padToBlockSize = function(payload, blockSize) {
 76542  		var _r, blockSize, finalBlock, i, overrun, paddingLen, payload, prefix;
 76543  		prefix = sliceType$7.nil;
 76544  		finalBlock = sliceType$7.nil;
 76545  		overrun = (_r = payload.$length % blockSize, _r === _r ? _r : $throwRuntimeError("integer divide by zero"));
 76546  		paddingLen = blockSize - overrun >> 0;
 76547  		prefix = $subslice(payload, 0, (payload.$length - overrun >> 0));
 76548  		finalBlock = $makeSlice(sliceType$7, blockSize);
 76549  		$copySlice(finalBlock, $subslice(payload, (payload.$length - overrun >> 0)));
 76550  		i = overrun;
 76551  		while (true) {
 76552  			if (!(i < blockSize)) { break; }
 76553  			((i < 0 || i >= finalBlock.$length) ? ($throwRuntimeError("index out of range"), undefined) : finalBlock.$array[finalBlock.$offset + i] = (((paddingLen - 1 >> 0) << 24 >>> 24)));
 76554  			i = i + (1) >> 0;
 76555  		}
 76556  		return [prefix, finalBlock];
 76557  	};
 76558  	halfConn.ptr.prototype.encrypt = function(b, explicitIVLen) {
 76559  		var _r, _r$1, _r$2, _r$3, _ref, _tuple, b, blockSize, c, c$1, c$2, c$3, explicitIVLen, finalBlock, hc, mac, n, n$1, nonce, payload, payload$1, payloadLen, prefix, x, x$1, $s, $r;
 76560  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _ref = $f._ref; _tuple = $f._tuple; b = $f.b; blockSize = $f.blockSize; c = $f.c; c$1 = $f.c$1; c$2 = $f.c$2; c$3 = $f.c$3; explicitIVLen = $f.explicitIVLen; finalBlock = $f.finalBlock; hc = $f.hc; mac = $f.mac; n = $f.n; n$1 = $f.n$1; nonce = $f.nonce; payload = $f.payload; payload$1 = $f.payload$1; payloadLen = $f.payloadLen; prefix = $f.prefix; x = $f.x; x$1 = $f.x$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 76561  		hc = this;
 76562  		/* */ if (!($interfaceIsEqual(hc.mac, $ifaceNil))) { $s = 1; continue; }
 76563  		/* */ $s = 2; continue;
 76564  		/* if (!($interfaceIsEqual(hc.mac, $ifaceNil))) { */ case 1:
 76565  			_r = hc.mac.MAC(hc.outDigestBuf, $subslice(new sliceType$7(hc.seq), 0), $subslice(b.data, 0, 5), $subslice(b.data, (5 + explicitIVLen >> 0)), sliceType$7.nil); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 76566  			mac = _r;
 76567  			n = b.data.$length;
 76568  			b.resize(n + mac.$length >> 0);
 76569  			$copySlice($subslice(b.data, n), mac);
 76570  			hc.outDigestBuf = mac;
 76571  		/* } */ case 2:
 76572  		payload = $subslice(b.data, 5);
 76573  		/* */ if (!($interfaceIsEqual(hc.cipher, $ifaceNil))) { $s = 4; continue; }
 76574  		/* */ $s = 5; continue;
 76575  		/* if (!($interfaceIsEqual(hc.cipher, $ifaceNil))) { */ case 4:
 76576  			_ref = hc.cipher;
 76577  			/* */ if ($assertType(_ref, cipher.Stream, true)[1]) { $s = 6; continue; }
 76578  			/* */ if ($assertType(_ref, aead, true)[1]) { $s = 7; continue; }
 76579  			/* */ if ($assertType(_ref, cbcMode, true)[1]) { $s = 8; continue; }
 76580  			/* */ $s = 9; continue;
 76581  			/* if ($assertType(_ref, cipher.Stream, true)[1]) { */ case 6:
 76582  				c = _ref;
 76583  				$r = c.XORKeyStream(payload, payload); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 76584  				$s = 10; continue;
 76585  			/* } else if ($assertType(_ref, aead, true)[1]) { */ case 7:
 76586  				c$1 = _ref;
 76587  				payloadLen = (b.data.$length - 5 >> 0) - explicitIVLen >> 0;
 76588  				_r$1 = c$1.Overhead(); /* */ $s = 12; case 12: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 76589  				$r = b.resize(b.data.$length + _r$1 >> 0); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 76590  				nonce = $subslice(b.data, 5, (5 + explicitIVLen >> 0));
 76591  				if (nonce.$length === 0) {
 76592  					nonce = new sliceType$7(hc.seq);
 76593  				}
 76594  				payload$1 = $subslice(b.data, (5 + explicitIVLen >> 0));
 76595  				payload$1 = $subslice(payload$1, 0, payloadLen);
 76596  				$copySlice(new sliceType$7(hc.additionalData), new sliceType$7(hc.seq));
 76597  				$copySlice($subslice(new sliceType$7(hc.additionalData), 8), $subslice(b.data, 0, 3));
 76598  				hc.additionalData[11] = (((payloadLen >> 8 >> 0) << 24 >>> 24));
 76599  				hc.additionalData[12] = ((payloadLen << 24 >>> 24));
 76600  				_r$2 = c$1.Seal($subslice(payload$1, 0, 0), nonce, payload$1, new sliceType$7(hc.additionalData)); /* */ $s = 14; case 14: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 76601  				_r$2;
 76602  				$s = 10; continue;
 76603  			/* } else if ($assertType(_ref, cbcMode, true)[1]) { */ case 8:
 76604  				c$2 = _ref;
 76605  				_r$3 = c$2.BlockSize(); /* */ $s = 15; case 15: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 76606  				blockSize = _r$3;
 76607  				/* */ if (explicitIVLen > 0) { $s = 16; continue; }
 76608  				/* */ $s = 17; continue;
 76609  				/* if (explicitIVLen > 0) { */ case 16:
 76610  					$r = c$2.SetIV($subslice(payload, 0, explicitIVLen)); /* */ $s = 18; case 18: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 76611  					payload = $subslice(payload, explicitIVLen);
 76612  				/* } */ case 17:
 76613  				_tuple = padToBlockSize(payload, blockSize);
 76614  				prefix = _tuple[0];
 76615  				finalBlock = _tuple[1];
 76616  				b.resize(((5 + explicitIVLen >> 0) + prefix.$length >> 0) + finalBlock.$length >> 0);
 76617  				$r = c$2.CryptBlocks($subslice(b.data, (5 + explicitIVLen >> 0)), prefix); /* */ $s = 19; case 19: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 76618  				$r = c$2.CryptBlocks($subslice(b.data, ((5 + explicitIVLen >> 0) + prefix.$length >> 0)), finalBlock); /* */ $s = 20; case 20: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 76619  				$s = 10; continue;
 76620  			/* } else { */ case 9:
 76621  				c$3 = _ref;
 76622  				$panic(new $String("unknown cipher type"));
 76623  			/* } */ case 10:
 76624  		/* } */ case 5:
 76625  		n$1 = b.data.$length - 5 >> 0;
 76626  		(x = b.data, (3 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 3] = (((n$1 >> 8 >> 0) << 24 >>> 24))));
 76627  		(x$1 = b.data, (4 >= x$1.$length ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + 4] = ((n$1 << 24 >>> 24))));
 76628  		hc.incSeq();
 76629  		$s = -1; return [true, 0];
 76630  		/* */ } return; } if ($f === undefined) { $f = { $blk: halfConn.ptr.prototype.encrypt }; } $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._ref = _ref; $f._tuple = _tuple; $f.b = b; $f.blockSize = blockSize; $f.c = c; $f.c$1 = c$1; $f.c$2 = c$2; $f.c$3 = c$3; $f.explicitIVLen = explicitIVLen; $f.finalBlock = finalBlock; $f.hc = hc; $f.mac = mac; $f.n = n; $f.n$1 = n$1; $f.nonce = nonce; $f.payload = payload; $f.payload$1 = payload$1; $f.payloadLen = payloadLen; $f.prefix = prefix; $f.x = x; $f.x$1 = x$1; $f.$s = $s; $f.$r = $r; return $f;
 76631  	};
 76632  	halfConn.prototype.encrypt = function(b, explicitIVLen) { return this.$val.encrypt(b, explicitIVLen); };
 76633  	block.ptr.prototype.resize = function(n) {
 76634  		var b, n;
 76635  		b = this;
 76636  		if (n > b.data.$capacity) {
 76637  			b.reserve(n);
 76638  		}
 76639  		b.data = $subslice(b.data, 0, n);
 76640  	};
 76641  	block.prototype.resize = function(n) { return this.$val.resize(n); };
 76642  	block.ptr.prototype.reserve = function(n) {
 76643  		var b, data, m, n;
 76644  		b = this;
 76645  		if (b.data.$capacity >= n) {
 76646  			return;
 76647  		}
 76648  		m = b.data.$capacity;
 76649  		if (m === 0) {
 76650  			m = 1024;
 76651  		}
 76652  		while (true) {
 76653  			if (!(m < n)) { break; }
 76654  			m = $imul(m, (2));
 76655  		}
 76656  		data = $makeSlice(sliceType$7, b.data.$length, m);
 76657  		$copySlice(data, b.data);
 76658  		b.data = data;
 76659  	};
 76660  	block.prototype.reserve = function(n) { return this.$val.reserve(n); };
 76661  	block.ptr.prototype.readFromUntil = function(r, n) {
 76662  		var _r, _tuple, b, err, m, n, r, $s, $r;
 76663  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; b = $f.b; err = $f.err; m = $f.m; n = $f.n; r = $f.r; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 76664  		b = this;
 76665  		if (b.data.$length >= n) {
 76666  			$s = -1; return $ifaceNil;
 76667  		}
 76668  		b.reserve(n);
 76669  		/* while (true) { */ case 1:
 76670  			_r = r.Read($subslice(b.data, b.data.$length, b.data.$capacity)); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 76671  			_tuple = _r;
 76672  			m = _tuple[0];
 76673  			err = _tuple[1];
 76674  			b.data = $subslice(b.data, 0, (b.data.$length + m >> 0));
 76675  			if (b.data.$length >= n) {
 76676  				/* break; */ $s = 2; continue;
 76677  			}
 76678  			if (!($interfaceIsEqual(err, $ifaceNil))) {
 76679  				$s = -1; return err;
 76680  			}
 76681  		/* } */ $s = 1; continue; case 2:
 76682  		$s = -1; return $ifaceNil;
 76683  		/* */ } return; } if ($f === undefined) { $f = { $blk: block.ptr.prototype.readFromUntil }; } $f._r = _r; $f._tuple = _tuple; $f.b = b; $f.err = err; $f.m = m; $f.n = n; $f.r = r; $f.$s = $s; $f.$r = $r; return $f;
 76684  	};
 76685  	block.prototype.readFromUntil = function(r, n) { return this.$val.readFromUntil(r, n); };
 76686  	block.ptr.prototype.Read = function(p) {
 76687  		var b, err, n, p;
 76688  		n = 0;
 76689  		err = $ifaceNil;
 76690  		b = this;
 76691  		n = $copySlice(p, $subslice(b.data, b.off));
 76692  		b.off = b.off + (n) >> 0;
 76693  		return [n, err];
 76694  	};
 76695  	block.prototype.Read = function(p) { return this.$val.Read(p); };
 76696  	halfConn.ptr.prototype.newBlock = function() {
 76697  		var b, hc;
 76698  		hc = this;
 76699  		b = hc.bfree;
 76700  		if (b === ptrType$9.nil) {
 76701  			return new block.ptr(sliceType$7.nil, 0, ptrType$9.nil);
 76702  		}
 76703  		hc.bfree = b.link;
 76704  		b.link = ptrType$9.nil;
 76705  		b.resize(0);
 76706  		return b;
 76707  	};
 76708  	halfConn.prototype.newBlock = function() { return this.$val.newBlock(); };
 76709  	halfConn.ptr.prototype.freeBlock = function(b) {
 76710  		var b, hc;
 76711  		hc = this;
 76712  		b.link = hc.bfree;
 76713  		hc.bfree = b;
 76714  	};
 76715  	halfConn.prototype.freeBlock = function(b) { return this.$val.freeBlock(b); };
 76716  	halfConn.ptr.prototype.splitBlock = function(b, n) {
 76717  		var b, bb, hc, n;
 76718  		hc = this;
 76719  		if (b.data.$length <= n) {
 76720  			return [b, ptrType$9.nil];
 76721  		}
 76722  		bb = hc.newBlock();
 76723  		bb.resize(b.data.$length - n >> 0);
 76724  		$copySlice(bb.data, $subslice(b.data, n));
 76725  		b.data = $subslice(b.data, 0, n);
 76726  		return [b, bb];
 76727  	};
 76728  	halfConn.prototype.splitBlock = function(b, n) { return this.$val.splitBlock(b, n); };
 76729  	RecordHeaderError.ptr.prototype.Error = function() {
 76730  		var e;
 76731  		e = this;
 76732  		return "tls: " + e.Msg;
 76733  	};
 76734  	RecordHeaderError.prototype.Error = function() { return this.$val.Error(); };
 76735  	Conn.ptr.prototype.newRecordHeaderError = function(msg) {
 76736  		var c, err, msg;
 76737  		err = new RecordHeaderError.ptr("", arrayType$4.zero());
 76738  		c = this;
 76739  		err.Msg = msg;
 76740  		$copySlice(new sliceType$7(err.RecordHeader), c.rawInput.data);
 76741  		RecordHeaderError.copy(err, err);
 76742  		return err;
 76743  	};
 76744  	Conn.prototype.newRecordHeaderError = function(msg) { return this.$val.newRecordHeaderError(msg); };
 76745  	Conn.ptr.prototype.readRecord = function(want) {
 76746  		var _1, _2, _3, _r, _r$1, _r$10, _r$11, _r$12, _r$13, _r$14, _r$15, _r$16, _r$17, _r$18, _r$19, _r$2, _r$20, _r$21, _r$22, _r$23, _r$24, _r$25, _r$26, _r$27, _r$28, _r$29, _r$3, _r$30, _r$31, _r$32, _r$33, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _tuple, _tuple$1, _tuple$2, _tuple$3, _v, _v$1, alertValue, b, c, data, e, e$1, err, err$1, err$2, err$3, msg, msg$1, n, off, ok, ok$1, ok$2, typ, vers, want, x, x$1, x$2, x$3, x$4, x$5, x$6, x$7, x$8, $s, $r;
 76747  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _2 = $f._2; _3 = $f._3; _r = $f._r; _r$1 = $f._r$1; _r$10 = $f._r$10; _r$11 = $f._r$11; _r$12 = $f._r$12; _r$13 = $f._r$13; _r$14 = $f._r$14; _r$15 = $f._r$15; _r$16 = $f._r$16; _r$17 = $f._r$17; _r$18 = $f._r$18; _r$19 = $f._r$19; _r$2 = $f._r$2; _r$20 = $f._r$20; _r$21 = $f._r$21; _r$22 = $f._r$22; _r$23 = $f._r$23; _r$24 = $f._r$24; _r$25 = $f._r$25; _r$26 = $f._r$26; _r$27 = $f._r$27; _r$28 = $f._r$28; _r$29 = $f._r$29; _r$3 = $f._r$3; _r$30 = $f._r$30; _r$31 = $f._r$31; _r$32 = $f._r$32; _r$33 = $f._r$33; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _r$8 = $f._r$8; _r$9 = $f._r$9; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; _v = $f._v; _v$1 = $f._v$1; alertValue = $f.alertValue; b = $f.b; c = $f.c; data = $f.data; e = $f.e; e$1 = $f.e$1; err = $f.err; err$1 = $f.err$1; err$2 = $f.err$2; err$3 = $f.err$3; msg = $f.msg; msg$1 = $f.msg$1; n = $f.n; off = $f.off; ok = $f.ok; ok$1 = $f.ok$1; ok$2 = $f.ok$2; typ = $f.typ; vers = $f.vers; want = $f.want; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; x$3 = $f.x$3; x$4 = $f.x$4; x$5 = $f.x$5; x$6 = $f.x$6; x$7 = $f.x$7; x$8 = $f.x$8; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 76748  		c = this;
 76749  			_1 = want;
 76750  			/* */ if ((_1 === (22)) || (_1 === (20))) { $s = 2; continue; }
 76751  			/* */ if (_1 === (23)) { $s = 3; continue; }
 76752  			/* */ $s = 4; continue;
 76753  			/* if ((_1 === (22)) || (_1 === (20))) { */ case 2:
 76754  				/* */ if (c.handshakeComplete) { $s = 6; continue; }
 76755  				/* */ $s = 7; continue;
 76756  				/* if (c.handshakeComplete) { */ case 6:
 76757  					_r = c.sendAlert(80); /* */ $s = 8; case 8: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 76758  					_r;
 76759  					$s = -1; return c.in$25.setErrorLocked(errors.New("tls: handshake or ChangeCipherSpec requested while not in handshake"));
 76760  				/* } */ case 7:
 76761  				$s = 5; continue;
 76762  			/* } else if (_1 === (23)) { */ case 3:
 76763  				/* */ if (!c.handshakeComplete) { $s = 9; continue; }
 76764  				/* */ $s = 10; continue;
 76765  				/* if (!c.handshakeComplete) { */ case 9:
 76766  					_r$1 = c.sendAlert(80); /* */ $s = 11; case 11: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 76767  					_r$1;
 76768  					$s = -1; return c.in$25.setErrorLocked(errors.New("tls: application data record requested while in handshake"));
 76769  				/* } */ case 10:
 76770  				$s = 5; continue;
 76771  			/* } else { */ case 4:
 76772  				_r$2 = c.sendAlert(80); /* */ $s = 12; case 12: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 76773  				_r$2;
 76774  				$s = -1; return c.in$25.setErrorLocked(errors.New("tls: unknown record type requested"));
 76775  			/* } */ case 5:
 76776  		case 1:
 76777  		/* Again: */ case 13:
 76778  		if (c.rawInput === ptrType$9.nil) {
 76779  			c.rawInput = c.in$25.newBlock();
 76780  		}
 76781  		b = c.rawInput;
 76782  		_r$3 = b.readFromUntil(c.conn, 5); /* */ $s = 14; case 14: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 76783  		err = _r$3;
 76784  		/* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 15; continue; }
 76785  		/* */ $s = 16; continue;
 76786  		/* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 15:
 76787  			_tuple = $assertType(err, net.Error, true);
 76788  			e = _tuple[0];
 76789  			ok = _tuple[1];
 76790  			if (!ok) { _v = true; $s = 19; continue s; }
 76791  			_r$4 = e.Temporary(); /* */ $s = 20; case 20: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 76792  			_v = !_r$4; case 19:
 76793  			/* */ if (_v) { $s = 17; continue; }
 76794  			/* */ $s = 18; continue;
 76795  			/* if (_v) { */ case 17:
 76796  				c.in$25.setErrorLocked(err);
 76797  			/* } */ case 18:
 76798  			$s = -1; return err;
 76799  		/* } */ case 16:
 76800  		typ = (((x = b.data, (0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0])) << 24 >>> 24));
 76801  		/* */ if ((want === 22) && (typ === 128)) { $s = 21; continue; }
 76802  		/* */ $s = 22; continue;
 76803  		/* if ((want === 22) && (typ === 128)) { */ case 21:
 76804  			_r$5 = c.sendAlert(70); /* */ $s = 23; case 23: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
 76805  			_r$5;
 76806  			$s = -1; return c.in$25.setErrorLocked((x$1 = c.newRecordHeaderError("unsupported SSLv2 handshake received"), new x$1.constructor.elem(x$1)));
 76807  		/* } */ case 22:
 76808  		vers = (((((x$2 = b.data, (1 >= x$2.$length ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + 1])) << 16 >>> 16)) << 8 << 16 >>> 16) | (((x$3 = b.data, (2 >= x$3.$length ? ($throwRuntimeError("index out of range"), undefined) : x$3.$array[x$3.$offset + 2])) << 16 >>> 16))) >>> 0;
 76809  		n = ((((x$4 = b.data, (3 >= x$4.$length ? ($throwRuntimeError("index out of range"), undefined) : x$4.$array[x$4.$offset + 3])) >> 0)) << 8 >> 0) | (((x$5 = b.data, (4 >= x$5.$length ? ($throwRuntimeError("index out of range"), undefined) : x$5.$array[x$5.$offset + 4])) >> 0));
 76810  		/* */ if (c.haveVers && !((vers === c.vers))) { $s = 24; continue; }
 76811  		/* */ $s = 25; continue;
 76812  		/* if (c.haveVers && !((vers === c.vers))) { */ case 24:
 76813  			_r$6 = c.sendAlert(70); /* */ $s = 26; case 26: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
 76814  			_r$6;
 76815  			_r$7 = fmt.Sprintf("received record with version %x when expecting version %x", new sliceType$8([new $Uint16(vers), new $Uint16(c.vers)])); /* */ $s = 27; case 27: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
 76816  			msg = _r$7;
 76817  			$s = -1; return c.in$25.setErrorLocked((x$6 = c.newRecordHeaderError(msg), new x$6.constructor.elem(x$6)));
 76818  		/* } */ case 25:
 76819  		/* */ if (n > 18432) { $s = 28; continue; }
 76820  		/* */ $s = 29; continue;
 76821  		/* if (n > 18432) { */ case 28:
 76822  			_r$8 = c.sendAlert(22); /* */ $s = 30; case 30: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
 76823  			_r$8;
 76824  			_r$9 = fmt.Sprintf("oversized record received with length %d", new sliceType$8([new $Int(n)])); /* */ $s = 31; case 31: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 76825  			msg$1 = _r$9;
 76826  			$s = -1; return c.in$25.setErrorLocked((x$7 = c.newRecordHeaderError(msg$1), new x$7.constructor.elem(x$7)));
 76827  		/* } */ case 29:
 76828  		/* */ if (!c.haveVers) { $s = 32; continue; }
 76829  		/* */ $s = 33; continue;
 76830  		/* if (!c.haveVers) { */ case 32:
 76831  			/* */ if ((!((typ === 21)) && !((typ === want))) || vers >= 4096) { $s = 34; continue; }
 76832  			/* */ $s = 35; continue;
 76833  			/* if ((!((typ === 21)) && !((typ === want))) || vers >= 4096) { */ case 34:
 76834  				_r$10 = c.sendAlert(10); /* */ $s = 36; case 36: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
 76835  				_r$10;
 76836  				$s = -1; return c.in$25.setErrorLocked((x$8 = c.newRecordHeaderError("first record does not look like a TLS handshake"), new x$8.constructor.elem(x$8)));
 76837  			/* } */ case 35:
 76838  		/* } */ case 33:
 76839  		_r$11 = b.readFromUntil(c.conn, 5 + n >> 0); /* */ $s = 37; case 37: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; }
 76840  		err$1 = _r$11;
 76841  		/* */ if (!($interfaceIsEqual(err$1, $ifaceNil))) { $s = 38; continue; }
 76842  		/* */ $s = 39; continue;
 76843  		/* if (!($interfaceIsEqual(err$1, $ifaceNil))) { */ case 38:
 76844  			if ($interfaceIsEqual(err$1, io.EOF)) {
 76845  				err$1 = io.ErrUnexpectedEOF;
 76846  			}
 76847  			_tuple$1 = $assertType(err$1, net.Error, true);
 76848  			e$1 = _tuple$1[0];
 76849  			ok$1 = _tuple$1[1];
 76850  			if (!ok$1) { _v$1 = true; $s = 42; continue s; }
 76851  			_r$12 = e$1.Temporary(); /* */ $s = 43; case 43: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; }
 76852  			_v$1 = !_r$12; case 42:
 76853  			/* */ if (_v$1) { $s = 40; continue; }
 76854  			/* */ $s = 41; continue;
 76855  			/* if (_v$1) { */ case 40:
 76856  				c.in$25.setErrorLocked(err$1);
 76857  			/* } */ case 41:
 76858  			$s = -1; return err$1;
 76859  		/* } */ case 39:
 76860  		_tuple$2 = c.in$25.splitBlock(b, 5 + n >> 0);
 76861  		b = _tuple$2[0];
 76862  		c.rawInput = _tuple$2[1];
 76863  		_r$13 = c.in$25.decrypt(b); /* */ $s = 44; case 44: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; }
 76864  		_tuple$3 = _r$13;
 76865  		ok$2 = _tuple$3[0];
 76866  		off = _tuple$3[1];
 76867  		alertValue = _tuple$3[2];
 76868  		/* */ if (!ok$2) { $s = 45; continue; }
 76869  		/* */ $s = 46; continue;
 76870  		/* if (!ok$2) { */ case 45:
 76871  			c.in$25.freeBlock(b);
 76872  			_r$14 = c.sendAlert(alertValue); /* */ $s = 47; case 47: if($c) { $c = false; _r$14 = _r$14.$blk(); } if (_r$14 && _r$14.$blk !== undefined) { break s; }
 76873  			_r$15 = c.in$25.setErrorLocked(_r$14); /* */ $s = 48; case 48: if($c) { $c = false; _r$15 = _r$15.$blk(); } if (_r$15 && _r$15.$blk !== undefined) { break s; }
 76874  			$s = -1; return _r$15;
 76875  		/* } */ case 46:
 76876  		b.off = off;
 76877  		data = $subslice(b.data, b.off);
 76878  		/* */ if (data.$length > 16384) { $s = 49; continue; }
 76879  		/* */ $s = 50; continue;
 76880  		/* if (data.$length > 16384) { */ case 49:
 76881  			_r$16 = c.sendAlert(22); /* */ $s = 51; case 51: if($c) { $c = false; _r$16 = _r$16.$blk(); } if (_r$16 && _r$16.$blk !== undefined) { break s; }
 76882  			err$2 = _r$16;
 76883  			c.in$25.freeBlock(b);
 76884  			$s = -1; return c.in$25.setErrorLocked(err$2);
 76885  		/* } */ case 50:
 76886  		if (!((typ === 21)) && data.$length > 0) {
 76887  			c.warnCount = 0;
 76888  		}
 76889  			_2 = typ;
 76890  			/* */ if (_2 === (21)) { $s = 53; continue; }
 76891  			/* */ if (_2 === (20)) { $s = 54; continue; }
 76892  			/* */ if (_2 === (23)) { $s = 55; continue; }
 76893  			/* */ if (_2 === (22)) { $s = 56; continue; }
 76894  			/* */ $s = 57; continue;
 76895  			/* if (_2 === (21)) { */ case 53:
 76896  				/* */ if (!((data.$length === 2))) { $s = 59; continue; }
 76897  				/* */ $s = 60; continue;
 76898  				/* if (!((data.$length === 2))) { */ case 59:
 76899  					_r$17 = c.sendAlert(10); /* */ $s = 61; case 61: if($c) { $c = false; _r$17 = _r$17.$blk(); } if (_r$17 && _r$17.$blk !== undefined) { break s; }
 76900  					_r$18 = c.in$25.setErrorLocked(_r$17); /* */ $s = 62; case 62: if($c) { $c = false; _r$18 = _r$18.$blk(); } if (_r$18 && _r$18.$blk !== undefined) { break s; }
 76901  					_r$18;
 76902  					/* break; */ $s = 52; continue;
 76903  				/* } */ case 60:
 76904  				if ((((1 >= data.$length ? ($throwRuntimeError("index out of range"), undefined) : data.$array[data.$offset + 1]) << 24 >>> 24)) === 0) {
 76905  					c.in$25.setErrorLocked(io.EOF);
 76906  					/* break; */ $s = 52; continue;
 76907  				}
 76908  					_3 = (0 >= data.$length ? ($throwRuntimeError("index out of range"), undefined) : data.$array[data.$offset + 0]);
 76909  					/* */ if (_3 === (1)) { $s = 64; continue; }
 76910  					/* */ if (_3 === (2)) { $s = 65; continue; }
 76911  					/* */ $s = 66; continue;
 76912  					/* if (_3 === (1)) { */ case 64:
 76913  						c.in$25.freeBlock(b);
 76914  						c.warnCount = c.warnCount + (1) >> 0;
 76915  						/* */ if (c.warnCount > 5) { $s = 68; continue; }
 76916  						/* */ $s = 69; continue;
 76917  						/* if (c.warnCount > 5) { */ case 68:
 76918  							_r$19 = c.sendAlert(10); /* */ $s = 70; case 70: if($c) { $c = false; _r$19 = _r$19.$blk(); } if (_r$19 && _r$19.$blk !== undefined) { break s; }
 76919  							_r$19;
 76920  							$s = -1; return c.in$25.setErrorLocked(errors.New("tls: too many warn alerts"));
 76921  						/* } */ case 69:
 76922  						/* goto Again */ $s = 13; continue;
 76923  						$s = 67; continue;
 76924  					/* } else if (_3 === (2)) { */ case 65:
 76925  						c.in$25.setErrorLocked(new net.OpError.ptr("remote error", "", $ifaceNil, $ifaceNil, new alert((((1 >= data.$length ? ($throwRuntimeError("index out of range"), undefined) : data.$array[data.$offset + 1]) << 24 >>> 24)))));
 76926  						$s = 67; continue;
 76927  					/* } else { */ case 66:
 76928  						_r$20 = c.sendAlert(10); /* */ $s = 71; case 71: if($c) { $c = false; _r$20 = _r$20.$blk(); } if (_r$20 && _r$20.$blk !== undefined) { break s; }
 76929  						_r$21 = c.in$25.setErrorLocked(_r$20); /* */ $s = 72; case 72: if($c) { $c = false; _r$21 = _r$21.$blk(); } if (_r$21 && _r$21.$blk !== undefined) { break s; }
 76930  						_r$21;
 76931  					/* } */ case 67:
 76932  				case 63:
 76933  				$s = 58; continue;
 76934  			/* } else if (_2 === (20)) { */ case 54:
 76935  				/* */ if (!((typ === want)) || !((data.$length === 1)) || !(((0 >= data.$length ? ($throwRuntimeError("index out of range"), undefined) : data.$array[data.$offset + 0]) === 1))) { $s = 73; continue; }
 76936  				/* */ $s = 74; continue;
 76937  				/* if (!((typ === want)) || !((data.$length === 1)) || !(((0 >= data.$length ? ($throwRuntimeError("index out of range"), undefined) : data.$array[data.$offset + 0]) === 1))) { */ case 73:
 76938  					_r$22 = c.sendAlert(10); /* */ $s = 75; case 75: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; }
 76939  					_r$23 = c.in$25.setErrorLocked(_r$22); /* */ $s = 76; case 76: if($c) { $c = false; _r$23 = _r$23.$blk(); } if (_r$23 && _r$23.$blk !== undefined) { break s; }
 76940  					_r$23;
 76941  					/* break; */ $s = 52; continue;
 76942  				/* } */ case 74:
 76943  				/* */ if (c.hand.Len() > 0) { $s = 77; continue; }
 76944  				/* */ $s = 78; continue;
 76945  				/* if (c.hand.Len() > 0) { */ case 77:
 76946  					_r$24 = c.sendAlert(10); /* */ $s = 79; case 79: if($c) { $c = false; _r$24 = _r$24.$blk(); } if (_r$24 && _r$24.$blk !== undefined) { break s; }
 76947  					_r$25 = c.in$25.setErrorLocked(_r$24); /* */ $s = 80; case 80: if($c) { $c = false; _r$25 = _r$25.$blk(); } if (_r$25 && _r$25.$blk !== undefined) { break s; }
 76948  					_r$25;
 76949  					/* break; */ $s = 52; continue;
 76950  				/* } */ case 78:
 76951  				err$3 = c.in$25.changeCipherSpec();
 76952  				/* */ if (!($interfaceIsEqual(err$3, $ifaceNil))) { $s = 81; continue; }
 76953  				/* */ $s = 82; continue;
 76954  				/* if (!($interfaceIsEqual(err$3, $ifaceNil))) { */ case 81:
 76955  					_r$26 = c.sendAlert($assertType(err$3, alert)); /* */ $s = 83; case 83: if($c) { $c = false; _r$26 = _r$26.$blk(); } if (_r$26 && _r$26.$blk !== undefined) { break s; }
 76956  					_r$27 = c.in$25.setErrorLocked(_r$26); /* */ $s = 84; case 84: if($c) { $c = false; _r$27 = _r$27.$blk(); } if (_r$27 && _r$27.$blk !== undefined) { break s; }
 76957  					_r$27;
 76958  				/* } */ case 82:
 76959  				$s = 58; continue;
 76960  			/* } else if (_2 === (23)) { */ case 55:
 76961  				/* */ if (!((typ === want))) { $s = 85; continue; }
 76962  				/* */ $s = 86; continue;
 76963  				/* if (!((typ === want))) { */ case 85:
 76964  					_r$28 = c.sendAlert(10); /* */ $s = 87; case 87: if($c) { $c = false; _r$28 = _r$28.$blk(); } if (_r$28 && _r$28.$blk !== undefined) { break s; }
 76965  					_r$29 = c.in$25.setErrorLocked(_r$28); /* */ $s = 88; case 88: if($c) { $c = false; _r$29 = _r$29.$blk(); } if (_r$29 && _r$29.$blk !== undefined) { break s; }
 76966  					_r$29;
 76967  					/* break; */ $s = 52; continue;
 76968  				/* } */ case 86:
 76969  				c.input = b;
 76970  				b = ptrType$9.nil;
 76971  				$s = 58; continue;
 76972  			/* } else if (_2 === (22)) { */ case 56:
 76973  				/* */ if (!((typ === want)) && !(c.isClient && !((c.config.Renegotiation === 0)))) { $s = 89; continue; }
 76974  				/* */ $s = 90; continue;
 76975  				/* if (!((typ === want)) && !(c.isClient && !((c.config.Renegotiation === 0)))) { */ case 89:
 76976  					_r$30 = c.sendAlert(100); /* */ $s = 91; case 91: if($c) { $c = false; _r$30 = _r$30.$blk(); } if (_r$30 && _r$30.$blk !== undefined) { break s; }
 76977  					_r$31 = c.in$25.setErrorLocked(_r$30); /* */ $s = 92; case 92: if($c) { $c = false; _r$31 = _r$31.$blk(); } if (_r$31 && _r$31.$blk !== undefined) { break s; }
 76978  					$s = -1; return _r$31;
 76979  				/* } */ case 90:
 76980  				c.hand.Write(data);
 76981  				$s = 58; continue;
 76982  			/* } else { */ case 57:
 76983  				_r$32 = c.sendAlert(10); /* */ $s = 93; case 93: if($c) { $c = false; _r$32 = _r$32.$blk(); } if (_r$32 && _r$32.$blk !== undefined) { break s; }
 76984  				_r$33 = c.in$25.setErrorLocked(_r$32); /* */ $s = 94; case 94: if($c) { $c = false; _r$33 = _r$33.$blk(); } if (_r$33 && _r$33.$blk !== undefined) { break s; }
 76985  				_r$33;
 76986  			/* } */ case 58:
 76987  		case 52:
 76988  		if (!(b === ptrType$9.nil)) {
 76989  			c.in$25.freeBlock(b);
 76990  		}
 76991  		$s = -1; return c.in$25.err;
 76992  		/* */ } return; } if ($f === undefined) { $f = { $blk: Conn.ptr.prototype.readRecord }; } $f._1 = _1; $f._2 = _2; $f._3 = _3; $f._r = _r; $f._r$1 = _r$1; $f._r$10 = _r$10; $f._r$11 = _r$11; $f._r$12 = _r$12; $f._r$13 = _r$13; $f._r$14 = _r$14; $f._r$15 = _r$15; $f._r$16 = _r$16; $f._r$17 = _r$17; $f._r$18 = _r$18; $f._r$19 = _r$19; $f._r$2 = _r$2; $f._r$20 = _r$20; $f._r$21 = _r$21; $f._r$22 = _r$22; $f._r$23 = _r$23; $f._r$24 = _r$24; $f._r$25 = _r$25; $f._r$26 = _r$26; $f._r$27 = _r$27; $f._r$28 = _r$28; $f._r$29 = _r$29; $f._r$3 = _r$3; $f._r$30 = _r$30; $f._r$31 = _r$31; $f._r$32 = _r$32; $f._r$33 = _r$33; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._r$8 = _r$8; $f._r$9 = _r$9; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f._v = _v; $f._v$1 = _v$1; $f.alertValue = alertValue; $f.b = b; $f.c = c; $f.data = data; $f.e = e; $f.e$1 = e$1; $f.err = err; $f.err$1 = err$1; $f.err$2 = err$2; $f.err$3 = err$3; $f.msg = msg; $f.msg$1 = msg$1; $f.n = n; $f.off = off; $f.ok = ok; $f.ok$1 = ok$1; $f.ok$2 = ok$2; $f.typ = typ; $f.vers = vers; $f.want = want; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.x$3 = x$3; $f.x$4 = x$4; $f.x$5 = x$5; $f.x$6 = x$6; $f.x$7 = x$7; $f.x$8 = x$8; $f.$s = $s; $f.$r = $r; return $f;
 76993  	};
 76994  	Conn.prototype.readRecord = function(want) { return this.$val.readRecord(want); };
 76995  	Conn.ptr.prototype.sendAlertLocked = function(err) {
 76996  		var _1, _r, _tuple, c, err, writeErr, $s, $r;
 76997  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _r = $f._r; _tuple = $f._tuple; c = $f.c; err = $f.err; writeErr = $f.writeErr; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 76998  		c = this;
 76999  		_1 = err;
 77000  		if ((_1 === (100)) || (_1 === (0))) {
 77001  			c.tmp[0] = 1;
 77002  		} else {
 77003  			c.tmp[0] = 2;
 77004  		}
 77005  		c.tmp[1] = ((err << 24 >>> 24));
 77006  		_r = c.writeRecordLocked(21, $subslice(new sliceType$7(c.tmp), 0, 2)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 77007  		_tuple = _r;
 77008  		writeErr = _tuple[1];
 77009  		if (err === 0) {
 77010  			$s = -1; return writeErr;
 77011  		}
 77012  		$s = -1; return c.out.setErrorLocked(new net.OpError.ptr("local error", "", $ifaceNil, $ifaceNil, new alert(err)));
 77013  		/* */ } return; } if ($f === undefined) { $f = { $blk: Conn.ptr.prototype.sendAlertLocked }; } $f._1 = _1; $f._r = _r; $f._tuple = _tuple; $f.c = c; $f.err = err; $f.writeErr = writeErr; $f.$s = $s; $f.$r = $r; return $f;
 77014  	};
 77015  	Conn.prototype.sendAlertLocked = function(err) { return this.$val.sendAlertLocked(err); };
 77016  	Conn.ptr.prototype.sendAlert = function(err) {
 77017  		var _r, c, err, $s, $deferred, $r;
 77018  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; c = $f.c; err = $f.err; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
 77019  		c = this;
 77020  		$r = c.out.Mutex.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 77021  		$deferred.push([$methodVal(c.out.Mutex, "Unlock"), []]);
 77022  		_r = c.sendAlertLocked(err); /* */ $s = 2; case 2: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 77023  		$s = -1; return _r;
 77024  		/* */ } return; } } catch(err) { $err = err; $s = -1; return $ifaceNil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: Conn.ptr.prototype.sendAlert }; } $f._r = _r; $f.c = c; $f.err = err; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
 77025  	};
 77026  	Conn.prototype.sendAlert = function(err) { return this.$val.sendAlert(err); };
 77027  	Conn.ptr.prototype.maxPayloadSizeForWrite = function(typ, explicitIVLen) {
 77028  		var _r, _r$1, _r$2, _ref, blockSize, c, ciph, ciph$1, ciph$2, ciph$3, explicitIVLen, macSize, n, payloadBytes, pkt, typ, x, x$1, x$2, x$3, $s, $r;
 77029  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _ref = $f._ref; blockSize = $f.blockSize; c = $f.c; ciph = $f.ciph; ciph$1 = $f.ciph$1; ciph$2 = $f.ciph$2; ciph$3 = $f.ciph$3; explicitIVLen = $f.explicitIVLen; macSize = $f.macSize; n = $f.n; payloadBytes = $f.payloadBytes; pkt = $f.pkt; typ = $f.typ; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; x$3 = $f.x$3; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 77030  		c = this;
 77031  		if (c.config.DynamicRecordSizingDisabled || !((typ === 23))) {
 77032  			$s = -1; return 16384;
 77033  		}
 77034  		if ((x = c.bytesSent, (x.$high > 0 || (x.$high === 0 && x.$low >= 131072)))) {
 77035  			$s = -1; return 16384;
 77036  		}
 77037  		macSize = 0;
 77038  		/* */ if (!($interfaceIsEqual(c.out.mac, $ifaceNil))) { $s = 1; continue; }
 77039  		/* */ $s = 2; continue;
 77040  		/* if (!($interfaceIsEqual(c.out.mac, $ifaceNil))) { */ case 1:
 77041  			_r = c.out.mac.Size(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 77042  			macSize = _r;
 77043  		/* } */ case 2:
 77044  		payloadBytes = 1203 - explicitIVLen >> 0;
 77045  		/* */ if (!($interfaceIsEqual(c.out.cipher, $ifaceNil))) { $s = 4; continue; }
 77046  		/* */ $s = 5; continue;
 77047  		/* if (!($interfaceIsEqual(c.out.cipher, $ifaceNil))) { */ case 4:
 77048  			_ref = c.out.cipher;
 77049  			/* */ if ($assertType(_ref, cipher.Stream, true)[1]) { $s = 6; continue; }
 77050  			/* */ if ($assertType(_ref, cipher.AEAD, true)[1]) { $s = 7; continue; }
 77051  			/* */ if ($assertType(_ref, cbcMode, true)[1]) { $s = 8; continue; }
 77052  			/* */ $s = 9; continue;
 77053  			/* if ($assertType(_ref, cipher.Stream, true)[1]) { */ case 6:
 77054  				ciph = _ref;
 77055  				payloadBytes = payloadBytes - (macSize) >> 0;
 77056  				$s = 10; continue;
 77057  			/* } else if ($assertType(_ref, cipher.AEAD, true)[1]) { */ case 7:
 77058  				ciph$1 = _ref;
 77059  				_r$1 = ciph$1.Overhead(); /* */ $s = 11; case 11: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 77060  				payloadBytes = payloadBytes - (_r$1) >> 0;
 77061  				$s = 10; continue;
 77062  			/* } else if ($assertType(_ref, cbcMode, true)[1]) { */ case 8:
 77063  				ciph$2 = _ref;
 77064  				_r$2 = ciph$2.BlockSize(); /* */ $s = 12; case 12: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 77065  				blockSize = _r$2;
 77066  				payloadBytes = ((payloadBytes & (~((blockSize - 1 >> 0)) >> 0))) - 1 >> 0;
 77067  				payloadBytes = payloadBytes - (macSize) >> 0;
 77068  				$s = 10; continue;
 77069  			/* } else { */ case 9:
 77070  				ciph$3 = _ref;
 77071  				$panic(new $String("unknown cipher type"));
 77072  			/* } */ case 10:
 77073  		/* } */ case 5:
 77074  		pkt = c.packetsSent;
 77075  		c.packetsSent = (x$1 = c.packetsSent, x$2 = new $Int64(0, 1), new $Int64(x$1.$high + x$2.$high, x$1.$low + x$2.$low));
 77076  		if ((pkt.$high > 0 || (pkt.$high === 0 && pkt.$low > 1000))) {
 77077  			$s = -1; return 16384;
 77078  		}
 77079  		n = $imul(payloadBytes, (((x$3 = new $Int64(pkt.$high + 0, pkt.$low + 1), x$3.$low + ((x$3.$high >> 31) * 4294967296)) >> 0)));
 77080  		if (n > 16384) {
 77081  			n = 16384;
 77082  		}
 77083  		$s = -1; return n;
 77084  		/* */ } return; } if ($f === undefined) { $f = { $blk: Conn.ptr.prototype.maxPayloadSizeForWrite }; } $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._ref = _ref; $f.blockSize = blockSize; $f.c = c; $f.ciph = ciph; $f.ciph$1 = ciph$1; $f.ciph$2 = ciph$2; $f.ciph$3 = ciph$3; $f.explicitIVLen = explicitIVLen; $f.macSize = macSize; $f.n = n; $f.payloadBytes = payloadBytes; $f.pkt = pkt; $f.typ = typ; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.x$3 = x$3; $f.$s = $s; $f.$r = $r; return $f;
 77085  	};
 77086  	Conn.prototype.maxPayloadSizeForWrite = function(typ, explicitIVLen) { return this.$val.maxPayloadSizeForWrite(typ, explicitIVLen); };
 77087  	Conn.ptr.prototype.write = function(data) {
 77088  		var _r, _tuple, c, data, err, n, x, x$1, $s, $r;
 77089  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; c = $f.c; data = $f.data; err = $f.err; n = $f.n; x = $f.x; x$1 = $f.x$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 77090  		c = this;
 77091  		if (c.buffering) {
 77092  			c.sendBuf = $appendSlice(c.sendBuf, data);
 77093  			$s = -1; return [data.$length, $ifaceNil];
 77094  		}
 77095  		_r = c.conn.Write(data); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 77096  		_tuple = _r;
 77097  		n = _tuple[0];
 77098  		err = _tuple[1];
 77099  		c.bytesSent = (x = c.bytesSent, x$1 = (new $Int64(0, n)), new $Int64(x.$high + x$1.$high, x.$low + x$1.$low));
 77100  		$s = -1; return [n, err];
 77101  		/* */ } return; } if ($f === undefined) { $f = { $blk: Conn.ptr.prototype.write }; } $f._r = _r; $f._tuple = _tuple; $f.c = c; $f.data = data; $f.err = err; $f.n = n; $f.x = x; $f.x$1 = x$1; $f.$s = $s; $f.$r = $r; return $f;
 77102  	};
 77103  	Conn.prototype.write = function(data) { return this.$val.write(data); };
 77104  	Conn.ptr.prototype.flush = function() {
 77105  		var _r, _tuple, c, err, n, x, x$1, $s, $r;
 77106  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; c = $f.c; err = $f.err; n = $f.n; x = $f.x; x$1 = $f.x$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 77107  		c = this;
 77108  		if (c.sendBuf.$length === 0) {
 77109  			$s = -1; return [0, $ifaceNil];
 77110  		}
 77111  		_r = c.conn.Write(c.sendBuf); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 77112  		_tuple = _r;
 77113  		n = _tuple[0];
 77114  		err = _tuple[1];
 77115  		c.bytesSent = (x = c.bytesSent, x$1 = (new $Int64(0, n)), new $Int64(x.$high + x$1.$high, x.$low + x$1.$low));
 77116  		c.sendBuf = sliceType$7.nil;
 77117  		c.buffering = false;
 77118  		$s = -1; return [n, err];
 77119  		/* */ } return; } if ($f === undefined) { $f = { $blk: Conn.ptr.prototype.flush }; } $f._r = _r; $f._tuple = _tuple; $f.c = c; $f.err = err; $f.n = n; $f.x = x; $f.x$1 = x$1; $f.$s = $s; $f.$r = $r; return $f;
 77120  	};
 77121  	Conn.prototype.flush = function() { return this.$val.flush(); };
 77122  	Conn.ptr.prototype.writeRecordLocked = function(typ, data) {
 77123  		var _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _tuple, _tuple$1, _tuple$2, _tuple$3, b, c, c$1, cbc, data, err, err$1, err$2, explicitIV, explicitIVIsSeq, explicitIVLen, m, maxPayload, n, ok, ok$1, typ, vers, x, x$1, x$2, x$3, x$4, $s, $deferred, $r;
 77124  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; b = $f.b; c = $f.c; c$1 = $f.c$1; cbc = $f.cbc; data = $f.data; err = $f.err; err$1 = $f.err$1; err$2 = $f.err$2; explicitIV = $f.explicitIV; explicitIVIsSeq = $f.explicitIVIsSeq; explicitIVLen = $f.explicitIVLen; m = $f.m; maxPayload = $f.maxPayload; n = $f.n; ok = $f.ok; ok$1 = $f.ok$1; typ = $f.typ; vers = $f.vers; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; x$3 = $f.x$3; x$4 = $f.x$4; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
 77125  		c = this;
 77126  		b = c.out.newBlock();
 77127  		$deferred.push([$methodVal(c.out, "freeBlock"), [b]]);
 77128  		n = 0;
 77129  		/* while (true) { */ case 1:
 77130  			/* if (!(data.$length > 0)) { break; } */ if(!(data.$length > 0)) { $s = 2; continue; }
 77131  			explicitIVLen = 0;
 77132  			explicitIVIsSeq = false;
 77133  			cbc = $ifaceNil;
 77134  			/* */ if (c.out.version >= 770) { $s = 3; continue; }
 77135  			/* */ $s = 4; continue;
 77136  			/* if (c.out.version >= 770) { */ case 3:
 77137  				ok = false;
 77138  				_tuple = $assertType(c.out.cipher, cbcMode, true);
 77139  				cbc = _tuple[0];
 77140  				ok = _tuple[1];
 77141  				/* */ if (ok) { $s = 5; continue; }
 77142  				/* */ $s = 6; continue;
 77143  				/* if (ok) { */ case 5:
 77144  					_r = cbc.BlockSize(); /* */ $s = 7; case 7: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 77145  					explicitIVLen = _r;
 77146  				/* } */ case 6:
 77147  			/* } */ case 4:
 77148  			/* */ if (explicitIVLen === 0) { $s = 8; continue; }
 77149  			/* */ $s = 9; continue;
 77150  			/* if (explicitIVLen === 0) { */ case 8:
 77151  				_tuple$1 = $assertType(c.out.cipher, aead, true);
 77152  				c$1 = _tuple$1[0];
 77153  				ok$1 = _tuple$1[1];
 77154  				/* */ if (ok$1) { $s = 10; continue; }
 77155  				/* */ $s = 11; continue;
 77156  				/* if (ok$1) { */ case 10:
 77157  					_r$1 = c$1.explicitNonceLen(); /* */ $s = 12; case 12: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 77158  					explicitIVLen = _r$1;
 77159  					explicitIVIsSeq = explicitIVLen > 0;
 77160  				/* } */ case 11:
 77161  			/* } */ case 9:
 77162  			m = data.$length;
 77163  			_r$2 = c.maxPayloadSizeForWrite(typ, explicitIVLen); /* */ $s = 13; case 13: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 77164  			maxPayload = _r$2;
 77165  			if (m > maxPayload) {
 77166  				m = maxPayload;
 77167  			}
 77168  			b.resize((5 + explicitIVLen >> 0) + m >> 0);
 77169  			(x = b.data, (0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0] = ((typ << 24 >>> 24))));
 77170  			vers = c.vers;
 77171  			if (vers === 0) {
 77172  				vers = 769;
 77173  			}
 77174  			(x$1 = b.data, (1 >= x$1.$length ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + 1] = (((vers >>> 8 << 16 >>> 16) << 24 >>> 24))));
 77175  			(x$2 = b.data, (2 >= x$2.$length ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + 2] = ((vers << 24 >>> 24))));
 77176  			(x$3 = b.data, (3 >= x$3.$length ? ($throwRuntimeError("index out of range"), undefined) : x$3.$array[x$3.$offset + 3] = (((m >> 8 >> 0) << 24 >>> 24))));
 77177  			(x$4 = b.data, (4 >= x$4.$length ? ($throwRuntimeError("index out of range"), undefined) : x$4.$array[x$4.$offset + 4] = ((m << 24 >>> 24))));
 77178  			/* */ if (explicitIVLen > 0) { $s = 14; continue; }
 77179  			/* */ $s = 15; continue;
 77180  			/* if (explicitIVLen > 0) { */ case 14:
 77181  				explicitIV = $subslice(b.data, 5, (5 + explicitIVLen >> 0));
 77182  				/* */ if (explicitIVIsSeq) { $s = 16; continue; }
 77183  				/* */ $s = 17; continue;
 77184  				/* if (explicitIVIsSeq) { */ case 16:
 77185  					$copySlice(explicitIV, new sliceType$7(c.out.seq));
 77186  					$s = 18; continue;
 77187  				/* } else { */ case 17:
 77188  					_r$3 = io.ReadFull(c.config.rand(), explicitIV); /* */ $s = 19; case 19: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 77189  					_tuple$2 = _r$3;
 77190  					err = _tuple$2[1];
 77191  					if (!($interfaceIsEqual(err, $ifaceNil))) {
 77192  						$s = -1; return [n, err];
 77193  					}
 77194  				/* } */ case 18:
 77195  			/* } */ case 15:
 77196  			$copySlice($subslice(b.data, (5 + explicitIVLen >> 0)), data);
 77197  			_r$4 = c.out.encrypt(b, explicitIVLen); /* */ $s = 20; case 20: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 77198  			_r$4;
 77199  			_r$5 = c.write(b.data); /* */ $s = 21; case 21: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
 77200  			_tuple$3 = _r$5;
 77201  			err$1 = _tuple$3[1];
 77202  			if (!($interfaceIsEqual(err$1, $ifaceNil))) {
 77203  				$s = -1; return [n, err$1];
 77204  			}
 77205  			n = n + (m) >> 0;
 77206  			data = $subslice(data, m);
 77207  		/* } */ $s = 1; continue; case 2:
 77208  		/* */ if (typ === 20) { $s = 22; continue; }
 77209  		/* */ $s = 23; continue;
 77210  		/* if (typ === 20) { */ case 22:
 77211  			err$2 = c.out.changeCipherSpec();
 77212  			/* */ if (!($interfaceIsEqual(err$2, $ifaceNil))) { $s = 24; continue; }
 77213  			/* */ $s = 25; continue;
 77214  			/* if (!($interfaceIsEqual(err$2, $ifaceNil))) { */ case 24:
 77215  				_r$6 = c.sendAlertLocked($assertType(err$2, alert)); /* */ $s = 26; case 26: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
 77216  				$s = -1; return [n, _r$6];
 77217  			/* } */ case 25:
 77218  		/* } */ case 23:
 77219  		$s = -1; return [n, $ifaceNil];
 77220  		/* */ } return; } } catch(err) { $err = err; $s = -1; return [0, $ifaceNil]; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: Conn.ptr.prototype.writeRecordLocked }; } $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f.b = b; $f.c = c; $f.c$1 = c$1; $f.cbc = cbc; $f.data = data; $f.err = err; $f.err$1 = err$1; $f.err$2 = err$2; $f.explicitIV = explicitIV; $f.explicitIVIsSeq = explicitIVIsSeq; $f.explicitIVLen = explicitIVLen; $f.m = m; $f.maxPayload = maxPayload; $f.n = n; $f.ok = ok; $f.ok$1 = ok$1; $f.typ = typ; $f.vers = vers; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.x$3 = x$3; $f.x$4 = x$4; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
 77221  	};
 77222  	Conn.prototype.writeRecordLocked = function(typ, data) { return this.$val.writeRecordLocked(typ, data); };
 77223  	Conn.ptr.prototype.writeRecord = function(typ, data) {
 77224  		var _r, c, data, typ, $s, $deferred, $r;
 77225  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; c = $f.c; data = $f.data; typ = $f.typ; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
 77226  		c = this;
 77227  		$r = c.out.Mutex.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 77228  		$deferred.push([$methodVal(c.out.Mutex, "Unlock"), []]);
 77229  		_r = c.writeRecordLocked(typ, data); /* */ $s = 2; case 2: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 77230  		$s = -1; return _r;
 77231  		/* */ } return; } } catch(err) { $err = err; $s = -1; return [0, $ifaceNil]; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: Conn.ptr.prototype.writeRecord }; } $f._r = _r; $f.c = c; $f.data = data; $f.typ = typ; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
 77232  	};
 77233  	Conn.prototype.writeRecord = function(typ, data) { return this.$val.writeRecord(typ, data); };
 77234  	Conn.ptr.prototype.readHandshake = function() {
 77235  		var _1, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, c, data, err, err$1, err$2, err$3, m, n, $s, $r;
 77236  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _r$8 = $f._r$8; _r$9 = $f._r$9; c = $f.c; data = $f.data; err = $f.err; err$1 = $f.err$1; err$2 = $f.err$2; err$3 = $f.err$3; m = $f.m; n = $f.n; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 77237  		c = this;
 77238  		/* while (true) { */ case 1:
 77239  			/* if (!(c.hand.Len() < 4)) { break; } */ if(!(c.hand.Len() < 4)) { $s = 2; continue; }
 77240  			err = c.in$25.err;
 77241  			if (!($interfaceIsEqual(err, $ifaceNil))) {
 77242  				$s = -1; return [$ifaceNil, err];
 77243  			}
 77244  			_r = c.readRecord(22); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 77245  			err$1 = _r;
 77246  			if (!($interfaceIsEqual(err$1, $ifaceNil))) {
 77247  				$s = -1; return [$ifaceNil, err$1];
 77248  			}
 77249  		/* } */ $s = 1; continue; case 2:
 77250  		data = c.hand.Bytes();
 77251  		n = (((((1 >= data.$length ? ($throwRuntimeError("index out of range"), undefined) : data.$array[data.$offset + 1]) >> 0)) << 16 >> 0) | ((((2 >= data.$length ? ($throwRuntimeError("index out of range"), undefined) : data.$array[data.$offset + 2]) >> 0)) << 8 >> 0)) | (((3 >= data.$length ? ($throwRuntimeError("index out of range"), undefined) : data.$array[data.$offset + 3]) >> 0));
 77252  		/* */ if (n > 65536) { $s = 4; continue; }
 77253  		/* */ $s = 5; continue;
 77254  		/* if (n > 65536) { */ case 4:
 77255  			_r$1 = c.sendAlertLocked(80); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 77256  			_r$1;
 77257  			_r$2 = fmt.Errorf("tls: handshake message of length %d bytes exceeds maximum of %d bytes", new sliceType$8([new $Int(n), new $Int(65536)])); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 77258  			_r$3 = c.in$25.setErrorLocked(_r$2); /* */ $s = 8; case 8: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 77259  			$s = -1; return [$ifaceNil, _r$3];
 77260  		/* } */ case 5:
 77261  		/* while (true) { */ case 9:
 77262  			/* if (!(c.hand.Len() < (4 + n >> 0))) { break; } */ if(!(c.hand.Len() < (4 + n >> 0))) { $s = 10; continue; }
 77263  			err$2 = c.in$25.err;
 77264  			if (!($interfaceIsEqual(err$2, $ifaceNil))) {
 77265  				$s = -1; return [$ifaceNil, err$2];
 77266  			}
 77267  			_r$4 = c.readRecord(22); /* */ $s = 11; case 11: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 77268  			err$3 = _r$4;
 77269  			if (!($interfaceIsEqual(err$3, $ifaceNil))) {
 77270  				$s = -1; return [$ifaceNil, err$3];
 77271  			}
 77272  		/* } */ $s = 9; continue; case 10:
 77273  		data = c.hand.Next(4 + n >> 0);
 77274  		m = $ifaceNil;
 77275  			_1 = (0 >= data.$length ? ($throwRuntimeError("index out of range"), undefined) : data.$array[data.$offset + 0]);
 77276  			/* */ if (_1 === (0)) { $s = 13; continue; }
 77277  			/* */ if (_1 === (1)) { $s = 14; continue; }
 77278  			/* */ if (_1 === (2)) { $s = 15; continue; }
 77279  			/* */ if (_1 === (4)) { $s = 16; continue; }
 77280  			/* */ if (_1 === (11)) { $s = 17; continue; }
 77281  			/* */ if (_1 === (13)) { $s = 18; continue; }
 77282  			/* */ if (_1 === (22)) { $s = 19; continue; }
 77283  			/* */ if (_1 === (12)) { $s = 20; continue; }
 77284  			/* */ if (_1 === (14)) { $s = 21; continue; }
 77285  			/* */ if (_1 === (16)) { $s = 22; continue; }
 77286  			/* */ if (_1 === (15)) { $s = 23; continue; }
 77287  			/* */ if (_1 === (67)) { $s = 24; continue; }
 77288  			/* */ if (_1 === (20)) { $s = 25; continue; }
 77289  			/* */ $s = 26; continue;
 77290  			/* if (_1 === (0)) { */ case 13:
 77291  				m = new helloRequestMsg.ptr();
 77292  				$s = 27; continue;
 77293  			/* } else if (_1 === (1)) { */ case 14:
 77294  				m = new clientHelloMsg.ptr(sliceType$7.nil, 0, sliceType$7.nil, sliceType$7.nil, sliceType$2.nil, sliceType$7.nil, false, "", false, false, sliceType$3.nil, sliceType$7.nil, false, sliceType$7.nil, sliceType$6.nil, sliceType$7.nil, false, sliceType$1.nil);
 77295  				$s = 27; continue;
 77296  			/* } else if (_1 === (2)) { */ case 15:
 77297  				m = new serverHelloMsg.ptr(sliceType$7.nil, 0, sliceType$7.nil, sliceType$7.nil, 0, 0, false, sliceType$1.nil, false, sliceType$9.nil, false, sliceType$7.nil, false, "");
 77298  				$s = 27; continue;
 77299  			/* } else if (_1 === (4)) { */ case 16:
 77300  				m = new newSessionTicketMsg.ptr(sliceType$7.nil, sliceType$7.nil);
 77301  				$s = 27; continue;
 77302  			/* } else if (_1 === (11)) { */ case 17:
 77303  				m = new certificateMsg.ptr(sliceType$7.nil, sliceType$9.nil);
 77304  				$s = 27; continue;
 77305  			/* } else if (_1 === (13)) { */ case 18:
 77306  				m = new certificateRequestMsg.ptr(sliceType$7.nil, c.vers >= 771, sliceType$7.nil, sliceType$6.nil, sliceType$9.nil);
 77307  				$s = 27; continue;
 77308  			/* } else if (_1 === (22)) { */ case 19:
 77309  				m = new certificateStatusMsg.ptr(sliceType$7.nil, 0, sliceType$7.nil);
 77310  				$s = 27; continue;
 77311  			/* } else if (_1 === (12)) { */ case 20:
 77312  				m = new serverKeyExchangeMsg.ptr(sliceType$7.nil, sliceType$7.nil);
 77313  				$s = 27; continue;
 77314  			/* } else if (_1 === (14)) { */ case 21:
 77315  				m = new serverHelloDoneMsg.ptr();
 77316  				$s = 27; continue;
 77317  			/* } else if (_1 === (16)) { */ case 22:
 77318  				m = new clientKeyExchangeMsg.ptr(sliceType$7.nil, sliceType$7.nil);
 77319  				$s = 27; continue;
 77320  			/* } else if (_1 === (15)) { */ case 23:
 77321  				m = new certificateVerifyMsg.ptr(sliceType$7.nil, c.vers >= 771, 0, sliceType$7.nil);
 77322  				$s = 27; continue;
 77323  			/* } else if (_1 === (67)) { */ case 24:
 77324  				m = new nextProtoMsg.ptr(sliceType$7.nil, "");
 77325  				$s = 27; continue;
 77326  			/* } else if (_1 === (20)) { */ case 25:
 77327  				m = new finishedMsg.ptr(sliceType$7.nil, sliceType$7.nil);
 77328  				$s = 27; continue;
 77329  			/* } else { */ case 26:
 77330  				_r$5 = c.sendAlert(10); /* */ $s = 28; case 28: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
 77331  				_r$6 = c.in$25.setErrorLocked(_r$5); /* */ $s = 29; case 29: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
 77332  				$s = -1; return [$ifaceNil, _r$6];
 77333  			/* } */ case 27:
 77334  		case 12:
 77335  		data = $appendSlice((sliceType$7.nil), data);
 77336  		_r$7 = m.unmarshal(data); /* */ $s = 32; case 32: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
 77337  		/* */ if (!_r$7) { $s = 30; continue; }
 77338  		/* */ $s = 31; continue;
 77339  		/* if (!_r$7) { */ case 30:
 77340  			_r$8 = c.sendAlert(10); /* */ $s = 33; case 33: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
 77341  			_r$9 = c.in$25.setErrorLocked(_r$8); /* */ $s = 34; case 34: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 77342  			$s = -1; return [$ifaceNil, _r$9];
 77343  		/* } */ case 31:
 77344  		$s = -1; return [m, $ifaceNil];
 77345  		/* */ } return; } if ($f === undefined) { $f = { $blk: Conn.ptr.prototype.readHandshake }; } $f._1 = _1; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._r$8 = _r$8; $f._r$9 = _r$9; $f.c = c; $f.data = data; $f.err = err; $f.err$1 = err$1; $f.err$2 = err$2; $f.err$3 = err$3; $f.m = m; $f.n = n; $f.$s = $s; $f.$r = $r; return $f;
 77346  	};
 77347  	Conn.prototype.readHandshake = function() { return this.$val.readHandshake(); };
 77348  	Conn.ptr.prototype.Write = function(b) {
 77349  		var _r, _r$1, _r$2, _tmp, _tmp$1, _tuple, _tuple$1, _tuple$2, b, c, err, err$1, err$2, err$3, m, n, n$1, ok, x, $s, $deferred, $r;
 77350  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; b = $f.b; c = $f.c; err = $f.err; err$1 = $f.err$1; err$2 = $f.err$2; err$3 = $f.err$3; m = $f.m; n = $f.n; n$1 = $f.n$1; ok = $f.ok; x = $f.x; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
 77351  		c = this;
 77352  		while (true) {
 77353  			x = atomic.LoadInt32((c.$ptr_activeCall || (c.$ptr_activeCall = new ptrType$10(function() { return this.$target.activeCall; }, function($v) { this.$target.activeCall = $v; }, c))));
 77354  			if (!(((x & 1) === 0))) {
 77355  				$s = -1; return [0, errClosed];
 77356  			}
 77357  			if (atomic.CompareAndSwapInt32((c.$ptr_activeCall || (c.$ptr_activeCall = new ptrType$10(function() { return this.$target.activeCall; }, function($v) { this.$target.activeCall = $v; }, c))), x, x + 2 >> 0)) {
 77358  				$deferred.push([atomic.AddInt32, [(c.$ptr_activeCall || (c.$ptr_activeCall = new ptrType$10(function() { return this.$target.activeCall; }, function($v) { this.$target.activeCall = $v; }, c))), -2]]);
 77359  				break;
 77360  			}
 77361  		}
 77362  		_r = c.Handshake(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 77363  		err = _r;
 77364  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 77365  			$s = -1; return [0, err];
 77366  		}
 77367  		$r = c.out.Mutex.Lock(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 77368  		$deferred.push([$methodVal(c.out.Mutex, "Unlock"), []]);
 77369  		err$1 = c.out.err;
 77370  		if (!($interfaceIsEqual(err$1, $ifaceNil))) {
 77371  			$s = -1; return [0, err$1];
 77372  		}
 77373  		if (!c.handshakeComplete) {
 77374  			$s = -1; return [0, new alert(80)];
 77375  		}
 77376  		if (c.closeNotifySent) {
 77377  			$s = -1; return [0, errShutdown];
 77378  		}
 77379  		m = 0;
 77380  		/* */ if (b.$length > 1 && c.vers <= 769) { $s = 3; continue; }
 77381  		/* */ $s = 4; continue;
 77382  		/* if (b.$length > 1 && c.vers <= 769) { */ case 3:
 77383  			_tuple = $assertType(c.out.cipher, cipher.BlockMode, true);
 77384  			ok = _tuple[1];
 77385  			/* */ if (ok) { $s = 5; continue; }
 77386  			/* */ $s = 6; continue;
 77387  			/* if (ok) { */ case 5:
 77388  				_r$1 = c.writeRecordLocked(23, $subslice(b, 0, 1)); /* */ $s = 7; case 7: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 77389  				_tuple$1 = _r$1;
 77390  				n = _tuple$1[0];
 77391  				err$2 = _tuple$1[1];
 77392  				if (!($interfaceIsEqual(err$2, $ifaceNil))) {
 77393  					$s = -1; return [n, c.out.setErrorLocked(err$2)];
 77394  				}
 77395  				_tmp = 1;
 77396  				_tmp$1 = $subslice(b, 1);
 77397  				m = _tmp;
 77398  				b = _tmp$1;
 77399  			/* } */ case 6:
 77400  		/* } */ case 4:
 77401  		_r$2 = c.writeRecordLocked(23, b); /* */ $s = 8; case 8: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 77402  		_tuple$2 = _r$2;
 77403  		n$1 = _tuple$2[0];
 77404  		err$3 = _tuple$2[1];
 77405  		$s = -1; return [n$1 + m >> 0, c.out.setErrorLocked(err$3)];
 77406  		/* */ } return; } } catch(err) { $err = err; $s = -1; return [0, $ifaceNil]; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: Conn.ptr.prototype.Write }; } $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f.b = b; $f.c = c; $f.err = err; $f.err$1 = err$1; $f.err$2 = err$2; $f.err$3 = err$3; $f.m = m; $f.n = n; $f.n$1 = n$1; $f.ok = ok; $f.x = x; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
 77407  	};
 77408  	Conn.prototype.Write = function(b) { return this.$val.Write(b); };
 77409  	Conn.ptr.prototype.handleRenegotiation = function() {
 77410  		var _1, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _tuple, _tuple$1, c, err, msg, ok, $s, $deferred, $r;
 77411  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; c = $f.c; err = $f.err; msg = $f.msg; ok = $f.ok; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
 77412  		c = this;
 77413  		_r = c.readHandshake(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 77414  		_tuple = _r;
 77415  		msg = _tuple[0];
 77416  		err = _tuple[1];
 77417  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 77418  			$s = -1; return err;
 77419  		}
 77420  		_tuple$1 = $assertType(msg, ptrType$11, true);
 77421  		ok = _tuple$1[1];
 77422  		/* */ if (!ok) { $s = 2; continue; }
 77423  		/* */ $s = 3; continue;
 77424  		/* if (!ok) { */ case 2:
 77425  			_r$1 = c.sendAlert(10); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 77426  			_r$1;
 77427  			$s = -1; return new alert(10);
 77428  		/* } */ case 3:
 77429  		/* */ if (!c.isClient) { $s = 5; continue; }
 77430  		/* */ $s = 6; continue;
 77431  		/* if (!c.isClient) { */ case 5:
 77432  			_r$2 = c.sendAlert(100); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 77433  			$s = -1; return _r$2;
 77434  		/* } */ case 6:
 77435  			_1 = c.config.Renegotiation;
 77436  			/* */ if (_1 === (0)) { $s = 9; continue; }
 77437  			/* */ if (_1 === (1)) { $s = 10; continue; }
 77438  			/* */ if (_1 === (2)) { $s = 11; continue; }
 77439  			/* */ $s = 12; continue;
 77440  			/* if (_1 === (0)) { */ case 9:
 77441  				_r$3 = c.sendAlert(100); /* */ $s = 14; case 14: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 77442  				$s = -1; return _r$3;
 77443  			/* } else if (_1 === (1)) { */ case 10:
 77444  				/* */ if (c.handshakes > 1) { $s = 15; continue; }
 77445  				/* */ $s = 16; continue;
 77446  				/* if (c.handshakes > 1) { */ case 15:
 77447  					_r$4 = c.sendAlert(100); /* */ $s = 17; case 17: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 77448  					$s = -1; return _r$4;
 77449  				/* } */ case 16:
 77450  				$s = 13; continue;
 77451  			/* } else if (_1 === (2)) { */ case 11:
 77452  				$s = 13; continue;
 77453  			/* } else { */ case 12:
 77454  				_r$5 = c.sendAlert(80); /* */ $s = 18; case 18: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
 77455  				_r$5;
 77456  				$s = -1; return errors.New("tls: unknown Renegotiation value");
 77457  			/* } */ case 13:
 77458  		case 8:
 77459  		$r = c.handshakeMutex.Lock(); /* */ $s = 19; case 19: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 77460  		$deferred.push([$methodVal(c.handshakeMutex, "Unlock"), []]);
 77461  		c.handshakeComplete = false;
 77462  		_r$6 = c.clientHandshake(); /* */ $s = 20; case 20: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
 77463  		c.handshakeErr = _r$6;
 77464  		if ($interfaceIsEqual(c.handshakeErr, $ifaceNil)) {
 77465  			c.handshakes = c.handshakes + (1) >> 0;
 77466  		}
 77467  		$s = -1; return c.handshakeErr;
 77468  		/* */ } return; } } catch(err) { $err = err; $s = -1; return $ifaceNil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: Conn.ptr.prototype.handleRenegotiation }; } $f._1 = _1; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.c = c; $f.err = err; $f.msg = msg; $f.ok = ok; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
 77469  	};
 77470  	Conn.prototype.handleRenegotiation = function() { return this.$val.handleRenegotiation(); };
 77471  	Conn.ptr.prototype.Read = function(b) {
 77472  		var _r, _r$1, _r$2, _r$3, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, b, c, emptyRecordCount, err, err$1, err$2, err$3, n, recErr, ri, x, $s, $deferred, $r;
 77473  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tmp$4 = $f._tmp$4; _tmp$5 = $f._tmp$5; _tmp$6 = $f._tmp$6; _tmp$7 = $f._tmp$7; _tmp$8 = $f._tmp$8; _tmp$9 = $f._tmp$9; _tuple = $f._tuple; b = $f.b; c = $f.c; emptyRecordCount = $f.emptyRecordCount; err = $f.err; err$1 = $f.err$1; err$2 = $f.err$2; err$3 = $f.err$3; n = $f.n; recErr = $f.recErr; ri = $f.ri; x = $f.x; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
 77474  		n = 0;
 77475  		err = $ifaceNil;
 77476  		c = this;
 77477  		_r = c.Handshake(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 77478  		err = _r;
 77479  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 77480  			$s = -1; return [n, err];
 77481  		}
 77482  		if (b.$length === 0) {
 77483  			$s = -1; return [n, err];
 77484  		}
 77485  		$r = c.in$25.Mutex.Lock(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 77486  		$deferred.push([$methodVal(c.in$25.Mutex, "Unlock"), []]);
 77487  		emptyRecordCount = 0;
 77488  		/* while (true) { */ case 3:
 77489  			/* if (!(emptyRecordCount <= 100)) { break; } */ if(!(emptyRecordCount <= 100)) { $s = 4; continue; }
 77490  			/* while (true) { */ case 5:
 77491  				/* if (!(c.input === ptrType$9.nil && $interfaceIsEqual(c.in$25.err, $ifaceNil))) { break; } */ if(!(c.input === ptrType$9.nil && $interfaceIsEqual(c.in$25.err, $ifaceNil))) { $s = 6; continue; }
 77492  				_r$1 = c.readRecord(23); /* */ $s = 7; case 7: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 77493  				err$1 = _r$1;
 77494  				if (!($interfaceIsEqual(err$1, $ifaceNil))) {
 77495  					_tmp = 0;
 77496  					_tmp$1 = err$1;
 77497  					n = _tmp;
 77498  					err = _tmp$1;
 77499  					$s = -1; return [n, err];
 77500  				}
 77501  				/* */ if (c.hand.Len() > 0) { $s = 8; continue; }
 77502  				/* */ $s = 9; continue;
 77503  				/* if (c.hand.Len() > 0) { */ case 8:
 77504  					_r$2 = c.handleRenegotiation(); /* */ $s = 10; case 10: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 77505  					err$2 = _r$2;
 77506  					if (!($interfaceIsEqual(err$2, $ifaceNil))) {
 77507  						_tmp$2 = 0;
 77508  						_tmp$3 = err$2;
 77509  						n = _tmp$2;
 77510  						err = _tmp$3;
 77511  						$s = -1; return [n, err];
 77512  					}
 77513  				/* } */ case 9:
 77514  			/* } */ $s = 5; continue; case 6:
 77515  			err$3 = c.in$25.err;
 77516  			if (!($interfaceIsEqual(err$3, $ifaceNil))) {
 77517  				_tmp$4 = 0;
 77518  				_tmp$5 = err$3;
 77519  				n = _tmp$4;
 77520  				err = _tmp$5;
 77521  				$s = -1; return [n, err];
 77522  			}
 77523  			_tuple = c.input.Read(b);
 77524  			n = _tuple[0];
 77525  			err = _tuple[1];
 77526  			if (c.input.off >= c.input.data.$length) {
 77527  				c.in$25.freeBlock(c.input);
 77528  				c.input = ptrType$9.nil;
 77529  			}
 77530  			ri = c.rawInput;
 77531  			/* */ if (!(ri === ptrType$9.nil) && !((n === 0)) && $interfaceIsEqual(err, $ifaceNil) && c.input === ptrType$9.nil && ri.data.$length > 0 && ((((x = ri.data, (0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0])) << 24 >>> 24)) === 21)) { $s = 11; continue; }
 77532  			/* */ $s = 12; continue;
 77533  			/* if (!(ri === ptrType$9.nil) && !((n === 0)) && $interfaceIsEqual(err, $ifaceNil) && c.input === ptrType$9.nil && ri.data.$length > 0 && ((((x = ri.data, (0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0])) << 24 >>> 24)) === 21)) { */ case 11:
 77534  				_r$3 = c.readRecord(23); /* */ $s = 13; case 13: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 77535  				recErr = _r$3;
 77536  				if (!($interfaceIsEqual(recErr, $ifaceNil))) {
 77537  					err = recErr;
 77538  				}
 77539  			/* } */ case 12:
 77540  			if (!((n === 0)) || !($interfaceIsEqual(err, $ifaceNil))) {
 77541  				_tmp$6 = n;
 77542  				_tmp$7 = err;
 77543  				n = _tmp$6;
 77544  				err = _tmp$7;
 77545  				$s = -1; return [n, err];
 77546  			}
 77547  			emptyRecordCount = emptyRecordCount + (1) >> 0;
 77548  		/* } */ $s = 3; continue; case 4:
 77549  		_tmp$8 = 0;
 77550  		_tmp$9 = io.ErrNoProgress;
 77551  		n = _tmp$8;
 77552  		err = _tmp$9;
 77553  		$s = -1; return [n, err];
 77554  		/* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if (!$curGoroutine.asleep) { return  [n, err]; } if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: Conn.ptr.prototype.Read }; } $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tmp$4 = _tmp$4; $f._tmp$5 = _tmp$5; $f._tmp$6 = _tmp$6; $f._tmp$7 = _tmp$7; $f._tmp$8 = _tmp$8; $f._tmp$9 = _tmp$9; $f._tuple = _tuple; $f.b = b; $f.c = c; $f.emptyRecordCount = emptyRecordCount; $f.err = err; $f.err$1 = err$1; $f.err$2 = err$2; $f.err$3 = err$3; $f.n = n; $f.recErr = recErr; $f.ri = ri; $f.x = x; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
 77555  	};
 77556  	Conn.prototype.Read = function(b) { return this.$val.Read(b); };
 77557  	Conn.ptr.prototype.Close = function() {
 77558  		var _r, _r$1, _r$2, alertErr, c, err, x, $s, $r;
 77559  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; alertErr = $f.alertErr; c = $f.c; err = $f.err; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 77560  		c = this;
 77561  		x = 0;
 77562  		while (true) {
 77563  			x = atomic.LoadInt32((c.$ptr_activeCall || (c.$ptr_activeCall = new ptrType$10(function() { return this.$target.activeCall; }, function($v) { this.$target.activeCall = $v; }, c))));
 77564  			if (!(((x & 1) === 0))) {
 77565  				$s = -1; return errClosed;
 77566  			}
 77567  			if (atomic.CompareAndSwapInt32((c.$ptr_activeCall || (c.$ptr_activeCall = new ptrType$10(function() { return this.$target.activeCall; }, function($v) { this.$target.activeCall = $v; }, c))), x, x | 1)) {
 77568  				break;
 77569  			}
 77570  		}
 77571  		/* */ if (!((x === 0))) { $s = 1; continue; }
 77572  		/* */ $s = 2; continue;
 77573  		/* if (!((x === 0))) { */ case 1:
 77574  			_r = c.conn.Close(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 77575  			$s = -1; return _r;
 77576  		/* } */ case 2:
 77577  		alertErr = $ifaceNil;
 77578  		$r = c.handshakeMutex.Lock(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 77579  		/* */ if (c.handshakeComplete) { $s = 5; continue; }
 77580  		/* */ $s = 6; continue;
 77581  		/* if (c.handshakeComplete) { */ case 5:
 77582  			_r$1 = c.closeNotify(); /* */ $s = 7; case 7: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 77583  			alertErr = _r$1;
 77584  		/* } */ case 6:
 77585  		$r = c.handshakeMutex.Unlock(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 77586  		_r$2 = c.conn.Close(); /* */ $s = 9; case 9: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 77587  		err = _r$2;
 77588  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 77589  			$s = -1; return err;
 77590  		}
 77591  		$s = -1; return alertErr;
 77592  		/* */ } return; } if ($f === undefined) { $f = { $blk: Conn.ptr.prototype.Close }; } $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f.alertErr = alertErr; $f.c = c; $f.err = err; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
 77593  	};
 77594  	Conn.prototype.Close = function() { return this.$val.Close(); };
 77595  	Conn.ptr.prototype.CloseWrite = function() {
 77596  		var _r, c, $s, $deferred, $r;
 77597  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; c = $f.c; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
 77598  		c = this;
 77599  		$r = c.handshakeMutex.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 77600  		$deferred.push([$methodVal(c.handshakeMutex, "Unlock"), []]);
 77601  		if (!c.handshakeComplete) {
 77602  			$s = -1; return errEarlyCloseWrite;
 77603  		}
 77604  		_r = c.closeNotify(); /* */ $s = 2; case 2: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 77605  		$s = -1; return _r;
 77606  		/* */ } return; } } catch(err) { $err = err; $s = -1; return $ifaceNil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: Conn.ptr.prototype.CloseWrite }; } $f._r = _r; $f.c = c; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
 77607  	};
 77608  	Conn.prototype.CloseWrite = function() { return this.$val.CloseWrite(); };
 77609  	Conn.ptr.prototype.closeNotify = function() {
 77610  		var _r, c, $s, $deferred, $r;
 77611  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; c = $f.c; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
 77612  		c = this;
 77613  		$r = c.out.Mutex.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 77614  		$deferred.push([$methodVal(c.out.Mutex, "Unlock"), []]);
 77615  		/* */ if (!c.closeNotifySent) { $s = 2; continue; }
 77616  		/* */ $s = 3; continue;
 77617  		/* if (!c.closeNotifySent) { */ case 2:
 77618  			_r = c.sendAlertLocked(0); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 77619  			c.closeNotifyErr = _r;
 77620  			c.closeNotifySent = true;
 77621  		/* } */ case 3:
 77622  		$s = -1; return c.closeNotifyErr;
 77623  		/* */ } return; } } catch(err) { $err = err; $s = -1; return $ifaceNil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: Conn.ptr.prototype.closeNotify }; } $f._r = _r; $f.c = c; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
 77624  	};
 77625  	Conn.prototype.closeNotify = function() { return this.$val.closeNotify(); };
 77626  	Conn.ptr.prototype.Handshake = function() {
 77627  		var _r, _r$1, _r$2, c, err, $s, $deferred, $r;
 77628  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; c = $f.c; err = $f.err; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
 77629  		c = this;
 77630  		$r = c.handshakeMutex.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 77631  		$deferred.push([$methodVal(c.handshakeMutex, "Unlock"), []]);
 77632  		/* while (true) { */ case 2:
 77633  			err = c.handshakeErr;
 77634  			if (!($interfaceIsEqual(err, $ifaceNil))) {
 77635  				$s = -1; return err;
 77636  			}
 77637  			if (c.handshakeComplete) {
 77638  				$s = -1; return $ifaceNil;
 77639  			}
 77640  			if (c.handshakeCond === ptrType$12.nil) {
 77641  				/* break; */ $s = 3; continue;
 77642  			}
 77643  			$r = c.handshakeCond.Wait(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 77644  		/* } */ $s = 2; continue; case 3:
 77645  		c.handshakeCond = sync.NewCond(c.handshakeMutex);
 77646  		$r = c.handshakeMutex.Unlock(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 77647  		$r = c.in$25.Mutex.Lock(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 77648  		$deferred.push([$methodVal(c.in$25.Mutex, "Unlock"), []]);
 77649  		$r = c.handshakeMutex.Lock(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 77650  		if (!($interfaceIsEqual(c.handshakeErr, $ifaceNil)) || c.handshakeComplete) {
 77651  			$panic(new $String("handshake should not have been able to complete after handshakeCond was set"));
 77652  		}
 77653  		/* */ if (c.isClient) { $s = 8; continue; }
 77654  		/* */ $s = 9; continue;
 77655  		/* if (c.isClient) { */ case 8:
 77656  			_r = c.clientHandshake(); /* */ $s = 11; case 11: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 77657  			c.handshakeErr = _r;
 77658  			$s = 10; continue;
 77659  		/* } else { */ case 9:
 77660  			_r$1 = c.serverHandshake(); /* */ $s = 12; case 12: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 77661  			c.handshakeErr = _r$1;
 77662  		/* } */ case 10:
 77663  		/* */ if ($interfaceIsEqual(c.handshakeErr, $ifaceNil)) { $s = 13; continue; }
 77664  		/* */ $s = 14; continue;
 77665  		/* if ($interfaceIsEqual(c.handshakeErr, $ifaceNil)) { */ case 13:
 77666  			c.handshakes = c.handshakes + (1) >> 0;
 77667  			$s = 15; continue;
 77668  		/* } else { */ case 14:
 77669  			_r$2 = c.flush(); /* */ $s = 16; case 16: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 77670  			_r$2;
 77671  		/* } */ case 15:
 77672  		if ($interfaceIsEqual(c.handshakeErr, $ifaceNil) && !c.handshakeComplete) {
 77673  			$panic(new $String("handshake should have had a result."));
 77674  		}
 77675  		$r = c.handshakeCond.Broadcast(); /* */ $s = 17; case 17: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 77676  		c.handshakeCond = ptrType$12.nil;
 77677  		$s = -1; return c.handshakeErr;
 77678  		/* */ } return; } } catch(err) { $err = err; $s = -1; return $ifaceNil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: Conn.ptr.prototype.Handshake }; } $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f.c = c; $f.err = err; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
 77679  	};
 77680  	Conn.prototype.Handshake = function() { return this.$val.Handshake(); };
 77681  	Conn.ptr.prototype.ConnectionState = function() {
 77682  		var c, state, $s, $deferred, $r;
 77683  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; c = $f.c; state = $f.state; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
 77684  		c = this;
 77685  		$r = c.handshakeMutex.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 77686  		$deferred.push([$methodVal(c.handshakeMutex, "Unlock"), []]);
 77687  		state = new ConnectionState.ptr(0, false, false, 0, "", false, "", sliceType$10.nil, sliceType$11.nil, sliceType$9.nil, sliceType$7.nil, sliceType$7.nil);
 77688  		state.HandshakeComplete = c.handshakeComplete;
 77689  		state.ServerName = c.serverName;
 77690  		if (c.handshakeComplete) {
 77691  			state.Version = c.vers;
 77692  			state.NegotiatedProtocol = c.clientProtocol;
 77693  			state.DidResume = c.didResume;
 77694  			state.NegotiatedProtocolIsMutual = !c.clientProtocolFallback;
 77695  			state.CipherSuite = c.cipherSuite;
 77696  			state.PeerCertificates = c.peerCertificates;
 77697  			state.VerifiedChains = c.verifiedChains;
 77698  			state.SignedCertificateTimestamps = c.scts;
 77699  			state.OCSPResponse = c.ocspResponse;
 77700  			if (!c.didResume) {
 77701  				if (c.clientFinishedIsFirst) {
 77702  					state.TLSUnique = new sliceType$7(c.clientFinished);
 77703  				} else {
 77704  					state.TLSUnique = new sliceType$7(c.serverFinished);
 77705  				}
 77706  			}
 77707  		}
 77708  		$s = -1; return state;
 77709  		/* */ } return; } } catch(err) { $err = err; $s = -1; return new ConnectionState.ptr(0, false, false, 0, "", false, "", sliceType$10.nil, sliceType$11.nil, sliceType$9.nil, sliceType$7.nil, sliceType$7.nil); } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: Conn.ptr.prototype.ConnectionState }; } $f.c = c; $f.state = state; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
 77710  	};
 77711  	Conn.prototype.ConnectionState = function() { return this.$val.ConnectionState(); };
 77712  	Conn.ptr.prototype.OCSPResponse = function() {
 77713  		var c, $s, $deferred, $r;
 77714  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; c = $f.c; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
 77715  		c = this;
 77716  		$r = c.handshakeMutex.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 77717  		$deferred.push([$methodVal(c.handshakeMutex, "Unlock"), []]);
 77718  		$s = -1; return c.ocspResponse;
 77719  		/* */ } return; } } catch(err) { $err = err; $s = -1; return sliceType$7.nil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: Conn.ptr.prototype.OCSPResponse }; } $f.c = c; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
 77720  	};
 77721  	Conn.prototype.OCSPResponse = function() { return this.$val.OCSPResponse(); };
 77722  	Conn.ptr.prototype.VerifyHostname = function(host) {
 77723  		var c, host, x, $s, $deferred, $r;
 77724  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; c = $f.c; host = $f.host; x = $f.x; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
 77725  		c = this;
 77726  		$r = c.handshakeMutex.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 77727  		$deferred.push([$methodVal(c.handshakeMutex, "Unlock"), []]);
 77728  		if (!c.isClient) {
 77729  			$s = -1; return errors.New("tls: VerifyHostname called on TLS server connection");
 77730  		}
 77731  		if (!c.handshakeComplete) {
 77732  			$s = -1; return errors.New("tls: handshake has not yet been performed");
 77733  		}
 77734  		if (c.verifiedChains.$length === 0) {
 77735  			$s = -1; return errors.New("tls: handshake did not verify certificate chain");
 77736  		}
 77737  		$s = -1; return (x = c.peerCertificates, (0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0])).VerifyHostname(host);
 77738  		/* */ } return; } } catch(err) { $err = err; $s = -1; return $ifaceNil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: Conn.ptr.prototype.VerifyHostname }; } $f.c = c; $f.host = host; $f.x = x; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
 77739  	};
 77740  	Conn.prototype.VerifyHostname = function(host) { return this.$val.VerifyHostname(host); };
 77741  	makeClientHello = function(config) {
 77742  		var _i, _i$1, _i$2, _r, _r$1, _r$2, _r$3, _ref, _ref$1, _ref$2, _tuple, config, err, hello, l, nextProtosLength, possibleCipherSuites, proto, suite, suiteId, $s, $r;
 77743  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _i = $f._i; _i$1 = $f._i$1; _i$2 = $f._i$2; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _ref = $f._ref; _ref$1 = $f._ref$1; _ref$2 = $f._ref$2; _tuple = $f._tuple; config = $f.config; err = $f.err; hello = $f.hello; l = $f.l; nextProtosLength = $f.nextProtosLength; possibleCipherSuites = $f.possibleCipherSuites; proto = $f.proto; suite = $f.suite; suiteId = $f.suiteId; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 77744  		if ((config.ServerName.length === 0) && !config.InsecureSkipVerify) {
 77745  			$s = -1; return [ptrType$14.nil, errors.New("tls: either ServerName or InsecureSkipVerify must be specified in the tls.Config")];
 77746  		}
 77747  		nextProtosLength = 0;
 77748  		_ref = config.NextProtos;
 77749  		_i = 0;
 77750  		while (true) {
 77751  			if (!(_i < _ref.$length)) { break; }
 77752  			proto = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
 77753  			l = proto.length;
 77754  			if ((l === 0) || l > 255) {
 77755  				$s = -1; return [ptrType$14.nil, errors.New("tls: invalid NextProtos value")];
 77756  			} else {
 77757  				nextProtosLength = nextProtosLength + ((1 + l >> 0)) >> 0;
 77758  			}
 77759  			_i++;
 77760  		}
 77761  		if (nextProtosLength > 65535) {
 77762  			$s = -1; return [ptrType$14.nil, errors.New("tls: NextProtos values too large")];
 77763  		}
 77764  		hello = new clientHelloMsg.ptr(sliceType$7.nil, config.maxVersion(), $makeSlice(sliceType$7, 32), sliceType$7.nil, sliceType$2.nil, new sliceType$7([0]), config.NextProtos.$length > 0, hostnameInSNI(config.ServerName), true, true, config.curvePreferences(), new sliceType$7([0]), false, sliceType$7.nil, sliceType$6.nil, sliceType$7.nil, true, config.NextProtos);
 77765  		_r = config.cipherSuites(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 77766  		possibleCipherSuites = _r;
 77767  		hello.cipherSuites = $makeSlice(sliceType$2, 0, possibleCipherSuites.$length);
 77768  		_ref$1 = possibleCipherSuites;
 77769  		_i$1 = 0;
 77770  		/* while (true) { */ case 2:
 77771  			/* if (!(_i$1 < _ref$1.$length)) { break; } */ if(!(_i$1 < _ref$1.$length)) { $s = 3; continue; }
 77772  			suiteId = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]);
 77773  			_ref$2 = cipherSuites;
 77774  			_i$2 = 0;
 77775  			while (true) {
 77776  				if (!(_i$2 < _ref$2.$length)) { break; }
 77777  				suite = ((_i$2 < 0 || _i$2 >= _ref$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$2.$array[_ref$2.$offset + _i$2]);
 77778  				if (!((suite.id === suiteId))) {
 77779  					_i$2++;
 77780  					continue;
 77781  				}
 77782  				if (hello.vers < 771 && !(((suite.flags & 4) === 0))) {
 77783  					_i$2++;
 77784  					continue;
 77785  				}
 77786  				hello.cipherSuites = $append(hello.cipherSuites, suiteId);
 77787  				_i$1++;
 77788  				/* continue NextCipherSuite; */ $s = 2; continue s;
 77789  			}
 77790  			_i$1++;
 77791  		/* } */ $s = 2; continue; case 3:
 77792  		_r$1 = io.ReadFull(config.rand(), hello.random); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 77793  		_tuple = _r$1;
 77794  		err = _tuple[1];
 77795  		/* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 5; continue; }
 77796  		/* */ $s = 6; continue;
 77797  		/* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 5:
 77798  			_r$2 = err.Error(); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 77799  			_r$3 = errors.New("tls: short read from Rand: " + _r$2); /* */ $s = 8; case 8: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 77800  			$s = -1; return [ptrType$14.nil, _r$3];
 77801  		/* } */ case 6:
 77802  		if (hello.vers >= 771) {
 77803  			hello.supportedSignatureAlgorithms = supportedSignatureAlgorithms;
 77804  		}
 77805  		$s = -1; return [hello, $ifaceNil];
 77806  		/* */ } return; } if ($f === undefined) { $f = { $blk: makeClientHello }; } $f._i = _i; $f._i$1 = _i$1; $f._i$2 = _i$2; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._ref = _ref; $f._ref$1 = _ref$1; $f._ref$2 = _ref$2; $f._tuple = _tuple; $f.config = config; $f.err = err; $f.hello = hello; $f.l = l; $f.nextProtosLength = nextProtosLength; $f.possibleCipherSuites = possibleCipherSuites; $f.proto = proto; $f.suite = suite; $f.suiteId = suiteId; $f.$s = $s; $f.$r = $r; return $f;
 77807  	};
 77808  	Conn.ptr.prototype.clientHandshake = function() {
 77809  		var _i, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _ref, _tuple, _tuple$1, _tuple$2, c, cacheKey, candidateSession, cipherSuiteOk, err, err$1, hello, hs, id, ok, session, sessionCache, versOk, $s, $r;
 77810  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _i = $f._i; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _ref = $f._ref; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; c = $f.c; cacheKey = $f.cacheKey; candidateSession = $f.candidateSession; cipherSuiteOk = $f.cipherSuiteOk; err = $f.err; err$1 = $f.err$1; hello = $f.hello; hs = $f.hs; id = $f.id; ok = $f.ok; session = $f.session; sessionCache = $f.sessionCache; versOk = $f.versOk; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 77811  		c = this;
 77812  		if (c.config === ptrType$3.nil) {
 77813  			c.config = defaultConfig();
 77814  		}
 77815  		c.didResume = false;
 77816  		_r = makeClientHello(c.config); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 77817  		_tuple = _r;
 77818  		hello = _tuple[0];
 77819  		err = _tuple[1];
 77820  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 77821  			$s = -1; return err;
 77822  		}
 77823  		if (c.handshakes > 0) {
 77824  			hello.secureRenegotiation = new sliceType$7(c.clientFinished);
 77825  		}
 77826  		session = ptrType$8.nil;
 77827  		cacheKey = "";
 77828  		sessionCache = c.config.ClientSessionCache;
 77829  		if (c.config.SessionTicketsDisabled) {
 77830  			sessionCache = $ifaceNil;
 77831  		}
 77832  		if (!($interfaceIsEqual(sessionCache, $ifaceNil))) {
 77833  			hello.ticketSupported = true;
 77834  		}
 77835  		/* */ if (!($interfaceIsEqual(sessionCache, $ifaceNil)) && (c.handshakes === 0)) { $s = 2; continue; }
 77836  		/* */ $s = 3; continue;
 77837  		/* if (!($interfaceIsEqual(sessionCache, $ifaceNil)) && (c.handshakes === 0)) { */ case 2:
 77838  			_r$1 = c.conn.RemoteAddr(); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 77839  			_r$2 = clientSessionCacheKey(_r$1, c.config); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 77840  			cacheKey = _r$2;
 77841  			_r$3 = sessionCache.Get(cacheKey); /* */ $s = 6; case 6: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 77842  			_tuple$1 = _r$3;
 77843  			candidateSession = _tuple$1[0];
 77844  			ok = _tuple$1[1];
 77845  			if (ok) {
 77846  				cipherSuiteOk = false;
 77847  				_ref = hello.cipherSuites;
 77848  				_i = 0;
 77849  				while (true) {
 77850  					if (!(_i < _ref.$length)) { break; }
 77851  					id = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
 77852  					if (id === candidateSession.cipherSuite) {
 77853  						cipherSuiteOk = true;
 77854  						break;
 77855  					}
 77856  					_i++;
 77857  				}
 77858  				versOk = candidateSession.vers >= c.config.minVersion() && candidateSession.vers <= c.config.maxVersion();
 77859  				if (versOk && cipherSuiteOk) {
 77860  					session = candidateSession;
 77861  				}
 77862  			}
 77863  		/* } */ case 3:
 77864  		/* */ if (!(session === ptrType$8.nil)) { $s = 7; continue; }
 77865  		/* */ $s = 8; continue;
 77866  		/* if (!(session === ptrType$8.nil)) { */ case 7:
 77867  			hello.sessionTicket = session.sessionTicket;
 77868  			hello.sessionId = $makeSlice(sliceType$7, 16);
 77869  			_r$4 = io.ReadFull(c.config.rand(), hello.sessionId); /* */ $s = 9; case 9: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 77870  			_tuple$2 = _r$4;
 77871  			err$1 = _tuple$2[1];
 77872  			/* */ if (!($interfaceIsEqual(err$1, $ifaceNil))) { $s = 10; continue; }
 77873  			/* */ $s = 11; continue;
 77874  			/* if (!($interfaceIsEqual(err$1, $ifaceNil))) { */ case 10:
 77875  				_r$5 = err$1.Error(); /* */ $s = 12; case 12: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
 77876  				_r$6 = errors.New("tls: short read from Rand: " + _r$5); /* */ $s = 13; case 13: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
 77877  				$s = -1; return _r$6;
 77878  			/* } */ case 11:
 77879  		/* } */ case 8:
 77880  		hs = new clientHandshakeState.ptr(c, ptrType$16.nil, hello, ptrType$1.nil, new finishedHash.ptr($ifaceNil, $ifaceNil, $ifaceNil, $ifaceNil, sliceType$7.nil, 0, $throwNilPointerError), sliceType$7.nil, session);
 77881  		_r$7 = hs.handshake(); /* */ $s = 14; case 14: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
 77882  		err = _r$7;
 77883  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 77884  			$s = -1; return err;
 77885  		}
 77886  		/* */ if (!($interfaceIsEqual(sessionCache, $ifaceNil)) && !(hs.session === ptrType$8.nil) && !(session === hs.session)) { $s = 15; continue; }
 77887  		/* */ $s = 16; continue;
 77888  		/* if (!($interfaceIsEqual(sessionCache, $ifaceNil)) && !(hs.session === ptrType$8.nil) && !(session === hs.session)) { */ case 15:
 77889  			$r = sessionCache.Put(cacheKey, hs.session); /* */ $s = 17; case 17: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 77890  		/* } */ case 16:
 77891  		$s = -1; return $ifaceNil;
 77892  		/* */ } return; } if ($f === undefined) { $f = { $blk: Conn.ptr.prototype.clientHandshake }; } $f._i = _i; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._ref = _ref; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f.c = c; $f.cacheKey = cacheKey; $f.candidateSession = candidateSession; $f.cipherSuiteOk = cipherSuiteOk; $f.err = err; $f.err$1 = err$1; $f.hello = hello; $f.hs = hs; $f.id = id; $f.ok = ok; $f.session = session; $f.sessionCache = sessionCache; $f.versOk = versOk; $f.$s = $s; $f.$r = $r; return $f;
 77893  	};
 77894  	Conn.prototype.clientHandshake = function() { return this.$val.clientHandshake(); };
 77895  	clientHandshakeState.ptr.prototype.handshake = function() {
 77896  		var _r, _r$1, _r$10, _r$11, _r$12, _r$13, _r$14, _r$15, _r$16, _r$17, _r$18, _r$19, _r$2, _r$20, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, _tuple$5, c, err, err$1, err$10, err$11, err$12, err$2, err$3, err$4, err$5, err$6, err$7, err$8, err$9, hs, isResume, msg, ok, $s, $r;
 77897  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _r$10 = $f._r$10; _r$11 = $f._r$11; _r$12 = $f._r$12; _r$13 = $f._r$13; _r$14 = $f._r$14; _r$15 = $f._r$15; _r$16 = $f._r$16; _r$17 = $f._r$17; _r$18 = $f._r$18; _r$19 = $f._r$19; _r$2 = $f._r$2; _r$20 = $f._r$20; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _r$8 = $f._r$8; _r$9 = $f._r$9; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; _tuple$4 = $f._tuple$4; _tuple$5 = $f._tuple$5; c = $f.c; err = $f.err; err$1 = $f.err$1; err$10 = $f.err$10; err$11 = $f.err$11; err$12 = $f.err$12; err$2 = $f.err$2; err$3 = $f.err$3; err$4 = $f.err$4; err$5 = $f.err$5; err$6 = $f.err$6; err$7 = $f.err$7; err$8 = $f.err$8; err$9 = $f.err$9; hs = $f.hs; isResume = $f.isResume; msg = $f.msg; ok = $f.ok; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 77898  		hs = this;
 77899  		c = hs.c;
 77900  		_r = c.writeRecord(22, hs.hello.marshal()); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 77901  		_tuple = _r;
 77902  		err = _tuple[1];
 77903  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 77904  			$s = -1; return err;
 77905  		}
 77906  		_r$1 = c.readHandshake(); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 77907  		_tuple$1 = _r$1;
 77908  		msg = _tuple$1[0];
 77909  		err$1 = _tuple$1[1];
 77910  		if (!($interfaceIsEqual(err$1, $ifaceNil))) {
 77911  			$s = -1; return err$1;
 77912  		}
 77913  		ok = false;
 77914  		_tuple$2 = $assertType(msg, ptrType$16, true);
 77915  		hs.serverHello = _tuple$2[0];
 77916  		ok = _tuple$2[1];
 77917  		/* */ if (!ok) { $s = 3; continue; }
 77918  		/* */ $s = 4; continue;
 77919  		/* if (!ok) { */ case 3:
 77920  			_r$2 = c.sendAlert(10); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 77921  			_r$2;
 77922  			_r$3 = unexpectedMessageError(hs.serverHello, msg); /* */ $s = 6; case 6: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 77923  			$s = -1; return _r$3;
 77924  		/* } */ case 4:
 77925  		_r$4 = hs.pickTLSVersion(); /* */ $s = 7; case 7: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 77926  		err$1 = _r$4;
 77927  		if (!($interfaceIsEqual(err$1, $ifaceNil))) {
 77928  			$s = -1; return err$1;
 77929  		}
 77930  		_r$5 = hs.pickCipherSuite(); /* */ $s = 8; case 8: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
 77931  		err$1 = _r$5;
 77932  		if (!($interfaceIsEqual(err$1, $ifaceNil))) {
 77933  			$s = -1; return err$1;
 77934  		}
 77935  		_r$6 = hs.processServerHello(); /* */ $s = 9; case 9: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
 77936  		_tuple$3 = _r$6;
 77937  		isResume = _tuple$3[0];
 77938  		err$1 = _tuple$3[1];
 77939  		if (!($interfaceIsEqual(err$1, $ifaceNil))) {
 77940  			$s = -1; return err$1;
 77941  		}
 77942  		_r$7 = newFinishedHash(c.vers, hs.suite); /* */ $s = 10; case 10: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
 77943  		finishedHash.copy(hs.finishedHash, _r$7);
 77944  		if (isResume || ((c.config.Certificates.$length === 0) && c.config.GetClientCertificate === $throwNilPointerError)) {
 77945  			hs.finishedHash.discardHandshakeBuffer();
 77946  		}
 77947  		_r$8 = hs.finishedHash.Write(hs.hello.marshal()); /* */ $s = 11; case 11: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
 77948  		_r$8;
 77949  		_r$9 = hs.finishedHash.Write(hs.serverHello.marshal()); /* */ $s = 12; case 12: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 77950  		_r$9;
 77951  		c.buffering = true;
 77952  		/* */ if (isResume) { $s = 13; continue; }
 77953  		/* */ $s = 14; continue;
 77954  		/* if (isResume) { */ case 13:
 77955  			_r$10 = hs.establishKeys(); /* */ $s = 16; case 16: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
 77956  			err$2 = _r$10;
 77957  			if (!($interfaceIsEqual(err$2, $ifaceNil))) {
 77958  				$s = -1; return err$2;
 77959  			}
 77960  			_r$11 = hs.readSessionTicket(); /* */ $s = 17; case 17: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; }
 77961  			err$3 = _r$11;
 77962  			if (!($interfaceIsEqual(err$3, $ifaceNil))) {
 77963  				$s = -1; return err$3;
 77964  			}
 77965  			_r$12 = hs.readFinished(new sliceType$7(c.serverFinished)); /* */ $s = 18; case 18: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; }
 77966  			err$4 = _r$12;
 77967  			if (!($interfaceIsEqual(err$4, $ifaceNil))) {
 77968  				$s = -1; return err$4;
 77969  			}
 77970  			c.clientFinishedIsFirst = false;
 77971  			_r$13 = hs.sendFinished(new sliceType$7(c.clientFinished)); /* */ $s = 19; case 19: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; }
 77972  			err$5 = _r$13;
 77973  			if (!($interfaceIsEqual(err$5, $ifaceNil))) {
 77974  				$s = -1; return err$5;
 77975  			}
 77976  			_r$14 = c.flush(); /* */ $s = 20; case 20: if($c) { $c = false; _r$14 = _r$14.$blk(); } if (_r$14 && _r$14.$blk !== undefined) { break s; }
 77977  			_tuple$4 = _r$14;
 77978  			err$6 = _tuple$4[1];
 77979  			if (!($interfaceIsEqual(err$6, $ifaceNil))) {
 77980  				$s = -1; return err$6;
 77981  			}
 77982  			$s = 15; continue;
 77983  		/* } else { */ case 14:
 77984  			_r$15 = hs.doFullHandshake(); /* */ $s = 21; case 21: if($c) { $c = false; _r$15 = _r$15.$blk(); } if (_r$15 && _r$15.$blk !== undefined) { break s; }
 77985  			err$7 = _r$15;
 77986  			if (!($interfaceIsEqual(err$7, $ifaceNil))) {
 77987  				$s = -1; return err$7;
 77988  			}
 77989  			_r$16 = hs.establishKeys(); /* */ $s = 22; case 22: if($c) { $c = false; _r$16 = _r$16.$blk(); } if (_r$16 && _r$16.$blk !== undefined) { break s; }
 77990  			err$8 = _r$16;
 77991  			if (!($interfaceIsEqual(err$8, $ifaceNil))) {
 77992  				$s = -1; return err$8;
 77993  			}
 77994  			_r$17 = hs.sendFinished(new sliceType$7(c.clientFinished)); /* */ $s = 23; case 23: if($c) { $c = false; _r$17 = _r$17.$blk(); } if (_r$17 && _r$17.$blk !== undefined) { break s; }
 77995  			err$9 = _r$17;
 77996  			if (!($interfaceIsEqual(err$9, $ifaceNil))) {
 77997  				$s = -1; return err$9;
 77998  			}
 77999  			_r$18 = c.flush(); /* */ $s = 24; case 24: if($c) { $c = false; _r$18 = _r$18.$blk(); } if (_r$18 && _r$18.$blk !== undefined) { break s; }
 78000  			_tuple$5 = _r$18;
 78001  			err$10 = _tuple$5[1];
 78002  			if (!($interfaceIsEqual(err$10, $ifaceNil))) {
 78003  				$s = -1; return err$10;
 78004  			}
 78005  			c.clientFinishedIsFirst = true;
 78006  			_r$19 = hs.readSessionTicket(); /* */ $s = 25; case 25: if($c) { $c = false; _r$19 = _r$19.$blk(); } if (_r$19 && _r$19.$blk !== undefined) { break s; }
 78007  			err$11 = _r$19;
 78008  			if (!($interfaceIsEqual(err$11, $ifaceNil))) {
 78009  				$s = -1; return err$11;
 78010  			}
 78011  			_r$20 = hs.readFinished(new sliceType$7(c.serverFinished)); /* */ $s = 26; case 26: if($c) { $c = false; _r$20 = _r$20.$blk(); } if (_r$20 && _r$20.$blk !== undefined) { break s; }
 78012  			err$12 = _r$20;
 78013  			if (!($interfaceIsEqual(err$12, $ifaceNil))) {
 78014  				$s = -1; return err$12;
 78015  			}
 78016  		/* } */ case 15:
 78017  		c.didResume = isResume;
 78018  		c.handshakeComplete = true;
 78019  		$s = -1; return $ifaceNil;
 78020  		/* */ } return; } if ($f === undefined) { $f = { $blk: clientHandshakeState.ptr.prototype.handshake }; } $f._r = _r; $f._r$1 = _r$1; $f._r$10 = _r$10; $f._r$11 = _r$11; $f._r$12 = _r$12; $f._r$13 = _r$13; $f._r$14 = _r$14; $f._r$15 = _r$15; $f._r$16 = _r$16; $f._r$17 = _r$17; $f._r$18 = _r$18; $f._r$19 = _r$19; $f._r$2 = _r$2; $f._r$20 = _r$20; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._r$8 = _r$8; $f._r$9 = _r$9; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f._tuple$4 = _tuple$4; $f._tuple$5 = _tuple$5; $f.c = c; $f.err = err; $f.err$1 = err$1; $f.err$10 = err$10; $f.err$11 = err$11; $f.err$12 = err$12; $f.err$2 = err$2; $f.err$3 = err$3; $f.err$4 = err$4; $f.err$5 = err$5; $f.err$6 = err$6; $f.err$7 = err$7; $f.err$8 = err$8; $f.err$9 = err$9; $f.hs = hs; $f.isResume = isResume; $f.msg = msg; $f.ok = ok; $f.$s = $s; $f.$r = $r; return $f;
 78021  	};
 78022  	clientHandshakeState.prototype.handshake = function() { return this.$val.handshake(); };
 78023  	clientHandshakeState.ptr.prototype.pickTLSVersion = function() {
 78024  		var _r, _r$1, _tuple, hs, ok, vers, $s, $r;
 78025  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _tuple = $f._tuple; hs = $f.hs; ok = $f.ok; vers = $f.vers; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 78026  		hs = this;
 78027  		_tuple = hs.c.config.mutualVersion(hs.serverHello.vers);
 78028  		vers = _tuple[0];
 78029  		ok = _tuple[1];
 78030  		/* */ if (!ok || vers < 769) { $s = 1; continue; }
 78031  		/* */ $s = 2; continue;
 78032  		/* if (!ok || vers < 769) { */ case 1:
 78033  			_r = hs.c.sendAlert(70); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 78034  			_r;
 78035  			_r$1 = fmt.Errorf("tls: server selected unsupported protocol version %x", new sliceType$8([new $Uint16(hs.serverHello.vers)])); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 78036  			$s = -1; return _r$1;
 78037  		/* } */ case 2:
 78038  		hs.c.vers = vers;
 78039  		hs.c.haveVers = true;
 78040  		$s = -1; return $ifaceNil;
 78041  		/* */ } return; } if ($f === undefined) { $f = { $blk: clientHandshakeState.ptr.prototype.pickTLSVersion }; } $f._r = _r; $f._r$1 = _r$1; $f._tuple = _tuple; $f.hs = hs; $f.ok = ok; $f.vers = vers; $f.$s = $s; $f.$r = $r; return $f;
 78042  	};
 78043  	clientHandshakeState.prototype.pickTLSVersion = function() { return this.$val.pickTLSVersion(); };
 78044  	clientHandshakeState.ptr.prototype.pickCipherSuite = function() {
 78045  		var _r, hs, $s, $r;
 78046  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; hs = $f.hs; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 78047  		hs = this;
 78048  		hs.suite = mutualCipherSuite(hs.hello.cipherSuites, hs.serverHello.cipherSuite);
 78049  		/* */ if (hs.suite === ptrType$1.nil) { $s = 1; continue; }
 78050  		/* */ $s = 2; continue;
 78051  		/* if (hs.suite === ptrType$1.nil) { */ case 1:
 78052  			_r = hs.c.sendAlert(40); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 78053  			_r;
 78054  			$s = -1; return errors.New("tls: server chose an unconfigured cipher suite");
 78055  		/* } */ case 2:
 78056  		hs.c.cipherSuite = hs.suite.id;
 78057  		$s = -1; return $ifaceNil;
 78058  		/* */ } return; } if ($f === undefined) { $f = { $blk: clientHandshakeState.ptr.prototype.pickCipherSuite }; } $f._r = _r; $f.hs = hs; $f.$s = $s; $f.$r = $r; return $f;
 78059  	};
 78060  	clientHandshakeState.prototype.pickCipherSuite = function() { return this.$val.pickCipherSuite(); };
 78061  	clientHandshakeState.ptr.prototype.doFullHandshake = function() {
 78062  		var _i, _i$1, _r, _r$1, _r$10, _r$11, _r$12, _r$13, _r$14, _r$15, _r$16, _r$17, _r$18, _r$19, _r$2, _r$20, _r$21, _r$22, _r$23, _r$24, _r$25, _r$26, _r$27, _r$28, _r$29, _r$3, _r$30, _r$31, _r$32, _r$33, _r$34, _r$35, _r$36, _r$37, _r$38, _r$39, _r$4, _r$40, _r$41, _r$42, _r$43, _r$44, _r$45, _r$46, _r$47, _r$48, _r$49, _r$5, _r$50, _r$51, _r$52, _r$53, _r$54, _r$6, _r$7, _r$8, _r$9, _ref, _ref$1, _ref$2, _ref$3, _tuple, _tuple$1, _tuple$10, _tuple$11, _tuple$12, _tuple$13, _tuple$14, _tuple$15, _tuple$16, _tuple$17, _tuple$18, _tuple$19, _tuple$2, _tuple$20, _tuple$3, _tuple$4, _tuple$5, _tuple$6, _tuple$7, _tuple$8, _tuple$9, asn1Data, c, cert, cert$1, certMsg, certReq, certRequested, certVerify, certs, chainToSend, ckx, cs, digest, err, err$1, err$2, err$3, err$4, err$5, err$6, err$7, hashFunc, hs, i, i$1, key, keyAgreement$1, msg, ok, ok$1, opts, preMasterSecret, shd, signatureType, skx, x, x$1, x$2, x$3, $s, $r;
 78063  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _i = $f._i; _i$1 = $f._i$1; _r = $f._r; _r$1 = $f._r$1; _r$10 = $f._r$10; _r$11 = $f._r$11; _r$12 = $f._r$12; _r$13 = $f._r$13; _r$14 = $f._r$14; _r$15 = $f._r$15; _r$16 = $f._r$16; _r$17 = $f._r$17; _r$18 = $f._r$18; _r$19 = $f._r$19; _r$2 = $f._r$2; _r$20 = $f._r$20; _r$21 = $f._r$21; _r$22 = $f._r$22; _r$23 = $f._r$23; _r$24 = $f._r$24; _r$25 = $f._r$25; _r$26 = $f._r$26; _r$27 = $f._r$27; _r$28 = $f._r$28; _r$29 = $f._r$29; _r$3 = $f._r$3; _r$30 = $f._r$30; _r$31 = $f._r$31; _r$32 = $f._r$32; _r$33 = $f._r$33; _r$34 = $f._r$34; _r$35 = $f._r$35; _r$36 = $f._r$36; _r$37 = $f._r$37; _r$38 = $f._r$38; _r$39 = $f._r$39; _r$4 = $f._r$4; _r$40 = $f._r$40; _r$41 = $f._r$41; _r$42 = $f._r$42; _r$43 = $f._r$43; _r$44 = $f._r$44; _r$45 = $f._r$45; _r$46 = $f._r$46; _r$47 = $f._r$47; _r$48 = $f._r$48; _r$49 = $f._r$49; _r$5 = $f._r$5; _r$50 = $f._r$50; _r$51 = $f._r$51; _r$52 = $f._r$52; _r$53 = $f._r$53; _r$54 = $f._r$54; _r$6 = $f._r$6; _r$7 = $f._r$7; _r$8 = $f._r$8; _r$9 = $f._r$9; _ref = $f._ref; _ref$1 = $f._ref$1; _ref$2 = $f._ref$2; _ref$3 = $f._ref$3; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$10 = $f._tuple$10; _tuple$11 = $f._tuple$11; _tuple$12 = $f._tuple$12; _tuple$13 = $f._tuple$13; _tuple$14 = $f._tuple$14; _tuple$15 = $f._tuple$15; _tuple$16 = $f._tuple$16; _tuple$17 = $f._tuple$17; _tuple$18 = $f._tuple$18; _tuple$19 = $f._tuple$19; _tuple$2 = $f._tuple$2; _tuple$20 = $f._tuple$20; _tuple$3 = $f._tuple$3; _tuple$4 = $f._tuple$4; _tuple$5 = $f._tuple$5; _tuple$6 = $f._tuple$6; _tuple$7 = $f._tuple$7; _tuple$8 = $f._tuple$8; _tuple$9 = $f._tuple$9; asn1Data = $f.asn1Data; c = $f.c; cert = $f.cert; cert$1 = $f.cert$1; certMsg = $f.certMsg; certReq = $f.certReq; certRequested = $f.certRequested; certVerify = $f.certVerify; certs = $f.certs; chainToSend = $f.chainToSend; ckx = $f.ckx; cs = $f.cs; digest = $f.digest; err = $f.err; err$1 = $f.err$1; err$2 = $f.err$2; err$3 = $f.err$3; err$4 = $f.err$4; err$5 = $f.err$5; err$6 = $f.err$6; err$7 = $f.err$7; hashFunc = $f.hashFunc; hs = $f.hs; i = $f.i; i$1 = $f.i$1; key = $f.key; keyAgreement$1 = $f.keyAgreement$1; msg = $f.msg; ok = $f.ok; ok$1 = $f.ok$1; opts = $f.opts; preMasterSecret = $f.preMasterSecret; shd = $f.shd; signatureType = $f.signatureType; skx = $f.skx; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; x$3 = $f.x$3; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 78064  		hs = this;
 78065  		c = hs.c;
 78066  		_r = c.readHandshake(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 78067  		_tuple = _r;
 78068  		msg = _tuple[0];
 78069  		err = _tuple[1];
 78070  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 78071  			$s = -1; return err;
 78072  		}
 78073  		_tuple$1 = $assertType(msg, ptrType$17, true);
 78074  		certMsg = _tuple$1[0];
 78075  		ok = _tuple$1[1];
 78076  		/* */ if (!ok || (certMsg.certificates.$length === 0)) { $s = 2; continue; }
 78077  		/* */ $s = 3; continue;
 78078  		/* if (!ok || (certMsg.certificates.$length === 0)) { */ case 2:
 78079  			_r$1 = c.sendAlert(10); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 78080  			_r$1;
 78081  			_r$2 = unexpectedMessageError(certMsg, msg); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 78082  			$s = -1; return _r$2;
 78083  		/* } */ case 3:
 78084  		_r$3 = hs.finishedHash.Write(certMsg.marshal()); /* */ $s = 6; case 6: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 78085  		_r$3;
 78086  		/* */ if (c.handshakes === 0) { $s = 7; continue; }
 78087  		/* */ $s = 8; continue;
 78088  		/* if (c.handshakes === 0) { */ case 7:
 78089  			certs = $makeSlice(sliceType$10, certMsg.certificates.$length);
 78090  			_ref = certMsg.certificates;
 78091  			_i = 0;
 78092  			/* while (true) { */ case 10:
 78093  				/* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 11; continue; }
 78094  				i = _i;
 78095  				asn1Data = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
 78096  				_r$4 = x509.ParseCertificate(asn1Data); /* */ $s = 12; case 12: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 78097  				_tuple$2 = _r$4;
 78098  				cert = _tuple$2[0];
 78099  				err$1 = _tuple$2[1];
 78100  				/* */ if (!($interfaceIsEqual(err$1, $ifaceNil))) { $s = 13; continue; }
 78101  				/* */ $s = 14; continue;
 78102  				/* if (!($interfaceIsEqual(err$1, $ifaceNil))) { */ case 13:
 78103  					_r$5 = c.sendAlert(42); /* */ $s = 15; case 15: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
 78104  					_r$5;
 78105  					_r$6 = err$1.Error(); /* */ $s = 16; case 16: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
 78106  					_r$7 = errors.New("tls: failed to parse certificate from server: " + _r$6); /* */ $s = 17; case 17: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
 78107  					$s = -1; return _r$7;
 78108  				/* } */ case 14:
 78109  				((i < 0 || i >= certs.$length) ? ($throwRuntimeError("index out of range"), undefined) : certs.$array[certs.$offset + i] = cert);
 78110  				_i++;
 78111  			/* } */ $s = 10; continue; case 11:
 78112  			/* */ if (!c.config.InsecureSkipVerify) { $s = 18; continue; }
 78113  			/* */ $s = 19; continue;
 78114  			/* if (!c.config.InsecureSkipVerify) { */ case 18:
 78115  				_r$8 = c.config.time(); /* */ $s = 20; case 20: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
 78116  				opts = new x509.VerifyOptions.ptr(c.config.ServerName, x509.NewCertPool(), c.config.RootCAs, $clone(_r$8, time.Time), sliceType$12.nil, 0);
 78117  				_ref$1 = certs;
 78118  				_i$1 = 0;
 78119  				/* while (true) { */ case 21:
 78120  					/* if (!(_i$1 < _ref$1.$length)) { break; } */ if(!(_i$1 < _ref$1.$length)) { $s = 22; continue; }
 78121  					i$1 = _i$1;
 78122  					cert$1 = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]);
 78123  					if (i$1 === 0) {
 78124  						_i$1++;
 78125  						/* continue; */ $s = 21; continue;
 78126  					}
 78127  					opts.Intermediates.AddCert(cert$1);
 78128  					_i$1++;
 78129  				/* } */ $s = 21; continue; case 22:
 78130  				_r$9 = (0 >= certs.$length ? ($throwRuntimeError("index out of range"), undefined) : certs.$array[certs.$offset + 0]).Verify($clone(opts, x509.VerifyOptions)); /* */ $s = 23; case 23: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 78131  				_tuple$3 = _r$9;
 78132  				c.verifiedChains = _tuple$3[0];
 78133  				err = _tuple$3[1];
 78134  				/* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 24; continue; }
 78135  				/* */ $s = 25; continue;
 78136  				/* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 24:
 78137  					_r$10 = c.sendAlert(42); /* */ $s = 26; case 26: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
 78138  					_r$10;
 78139  					$s = -1; return err;
 78140  				/* } */ case 25:
 78141  			/* } */ case 19:
 78142  			/* */ if (!(c.config.VerifyPeerCertificate === $throwNilPointerError)) { $s = 27; continue; }
 78143  			/* */ $s = 28; continue;
 78144  			/* if (!(c.config.VerifyPeerCertificate === $throwNilPointerError)) { */ case 27:
 78145  				_r$11 = c.config.VerifyPeerCertificate(certMsg.certificates, c.verifiedChains); /* */ $s = 29; case 29: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; }
 78146  				err$2 = _r$11;
 78147  				/* */ if (!($interfaceIsEqual(err$2, $ifaceNil))) { $s = 30; continue; }
 78148  				/* */ $s = 31; continue;
 78149  				/* if (!($interfaceIsEqual(err$2, $ifaceNil))) { */ case 30:
 78150  					_r$12 = c.sendAlert(42); /* */ $s = 32; case 32: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; }
 78151  					_r$12;
 78152  					$s = -1; return err$2;
 78153  				/* } */ case 31:
 78154  			/* } */ case 28:
 78155  			_ref$2 = (0 >= certs.$length ? ($throwRuntimeError("index out of range"), undefined) : certs.$array[certs.$offset + 0]).PublicKey;
 78156  			/* */ if ($assertType(_ref$2, ptrType$19, true)[1] || $assertType(_ref$2, ptrType$20, true)[1]) { $s = 33; continue; }
 78157  			/* */ $s = 34; continue;
 78158  			/* switch (0) { default: if ($assertType(_ref$2, ptrType$19, true)[1] || $assertType(_ref$2, ptrType$20, true)[1]) { */ case 33:
 78159  				/* break; */ $s = 35; continue;
 78160  				$s = 35; continue;
 78161  			/* } else { */ case 34:
 78162  				_r$13 = c.sendAlert(43); /* */ $s = 36; case 36: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; }
 78163  				_r$13;
 78164  				_r$14 = fmt.Errorf("tls: server's certificate contains an unsupported type of public key: %T", new sliceType$8([(0 >= certs.$length ? ($throwRuntimeError("index out of range"), undefined) : certs.$array[certs.$offset + 0]).PublicKey])); /* */ $s = 37; case 37: if($c) { $c = false; _r$14 = _r$14.$blk(); } if (_r$14 && _r$14.$blk !== undefined) { break s; }
 78165  				$s = -1; return _r$14;
 78166  			/* } } */ case 35:
 78167  			c.peerCertificates = certs;
 78168  			$s = 9; continue;
 78169  		/* } else { */ case 8:
 78170  			/* */ if (!bytes.Equal((x = c.peerCertificates, (0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0])).Raw, (x$1 = certMsg.certificates, (0 >= x$1.$length ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + 0])))) { $s = 38; continue; }
 78171  			/* */ $s = 39; continue;
 78172  			/* if (!bytes.Equal((x = c.peerCertificates, (0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0])).Raw, (x$1 = certMsg.certificates, (0 >= x$1.$length ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + 0])))) { */ case 38:
 78173  				_r$15 = c.sendAlert(42); /* */ $s = 40; case 40: if($c) { $c = false; _r$15 = _r$15.$blk(); } if (_r$15 && _r$15.$blk !== undefined) { break s; }
 78174  				_r$15;
 78175  				$s = -1; return errors.New("tls: server's identity changed during renegotiation");
 78176  			/* } */ case 39:
 78177  		/* } */ case 9:
 78178  		_r$16 = c.readHandshake(); /* */ $s = 41; case 41: if($c) { $c = false; _r$16 = _r$16.$blk(); } if (_r$16 && _r$16.$blk !== undefined) { break s; }
 78179  		_tuple$4 = _r$16;
 78180  		msg = _tuple$4[0];
 78181  		err = _tuple$4[1];
 78182  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 78183  			$s = -1; return err;
 78184  		}
 78185  		_tuple$5 = $assertType(msg, ptrType$21, true);
 78186  		cs = _tuple$5[0];
 78187  		ok = _tuple$5[1];
 78188  		/* */ if (ok) { $s = 42; continue; }
 78189  		/* */ $s = 43; continue;
 78190  		/* if (ok) { */ case 42:
 78191  			/* */ if (!hs.serverHello.ocspStapling) { $s = 44; continue; }
 78192  			/* */ $s = 45; continue;
 78193  			/* if (!hs.serverHello.ocspStapling) { */ case 44:
 78194  				_r$17 = c.sendAlert(10); /* */ $s = 46; case 46: if($c) { $c = false; _r$17 = _r$17.$blk(); } if (_r$17 && _r$17.$blk !== undefined) { break s; }
 78195  				_r$17;
 78196  				$s = -1; return errors.New("tls: received unexpected CertificateStatus message");
 78197  			/* } */ case 45:
 78198  			_r$18 = hs.finishedHash.Write(cs.marshal()); /* */ $s = 47; case 47: if($c) { $c = false; _r$18 = _r$18.$blk(); } if (_r$18 && _r$18.$blk !== undefined) { break s; }
 78199  			_r$18;
 78200  			if (cs.statusType === 1) {
 78201  				c.ocspResponse = cs.response;
 78202  			}
 78203  			_r$19 = c.readHandshake(); /* */ $s = 48; case 48: if($c) { $c = false; _r$19 = _r$19.$blk(); } if (_r$19 && _r$19.$blk !== undefined) { break s; }
 78204  			_tuple$6 = _r$19;
 78205  			msg = _tuple$6[0];
 78206  			err = _tuple$6[1];
 78207  			if (!($interfaceIsEqual(err, $ifaceNil))) {
 78208  				$s = -1; return err;
 78209  			}
 78210  		/* } */ case 43:
 78211  		_r$20 = hs.suite.ka(c.vers); /* */ $s = 49; case 49: if($c) { $c = false; _r$20 = _r$20.$blk(); } if (_r$20 && _r$20.$blk !== undefined) { break s; }
 78212  		keyAgreement$1 = _r$20;
 78213  		_tuple$7 = $assertType(msg, ptrType$22, true);
 78214  		skx = _tuple$7[0];
 78215  		ok = _tuple$7[1];
 78216  		/* */ if (ok) { $s = 50; continue; }
 78217  		/* */ $s = 51; continue;
 78218  		/* if (ok) { */ case 50:
 78219  			_r$21 = hs.finishedHash.Write(skx.marshal()); /* */ $s = 52; case 52: if($c) { $c = false; _r$21 = _r$21.$blk(); } if (_r$21 && _r$21.$blk !== undefined) { break s; }
 78220  			_r$21;
 78221  			_r$22 = keyAgreement$1.processServerKeyExchange(c.config, hs.hello, hs.serverHello, (x$2 = c.peerCertificates, (0 >= x$2.$length ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + 0])), skx); /* */ $s = 53; case 53: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; }
 78222  			err = _r$22;
 78223  			/* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 54; continue; }
 78224  			/* */ $s = 55; continue;
 78225  			/* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 54:
 78226  				_r$23 = c.sendAlert(10); /* */ $s = 56; case 56: if($c) { $c = false; _r$23 = _r$23.$blk(); } if (_r$23 && _r$23.$blk !== undefined) { break s; }
 78227  				_r$23;
 78228  				$s = -1; return err;
 78229  			/* } */ case 55:
 78230  			_r$24 = c.readHandshake(); /* */ $s = 57; case 57: if($c) { $c = false; _r$24 = _r$24.$blk(); } if (_r$24 && _r$24.$blk !== undefined) { break s; }
 78231  			_tuple$8 = _r$24;
 78232  			msg = _tuple$8[0];
 78233  			err = _tuple$8[1];
 78234  			if (!($interfaceIsEqual(err, $ifaceNil))) {
 78235  				$s = -1; return err;
 78236  			}
 78237  		/* } */ case 51:
 78238  		chainToSend = ptrType$4.nil;
 78239  		certRequested = false;
 78240  		_tuple$9 = $assertType(msg, ptrType$23, true);
 78241  		certReq = _tuple$9[0];
 78242  		ok = _tuple$9[1];
 78243  		/* */ if (ok) { $s = 58; continue; }
 78244  		/* */ $s = 59; continue;
 78245  		/* if (ok) { */ case 58:
 78246  			certRequested = true;
 78247  			_r$25 = hs.finishedHash.Write(certReq.marshal()); /* */ $s = 60; case 60: if($c) { $c = false; _r$25 = _r$25.$blk(); } if (_r$25 && _r$25.$blk !== undefined) { break s; }
 78248  			_r$25;
 78249  			_r$26 = hs.getCertificate(certReq); /* */ $s = 61; case 61: if($c) { $c = false; _r$26 = _r$26.$blk(); } if (_r$26 && _r$26.$blk !== undefined) { break s; }
 78250  			_tuple$10 = _r$26;
 78251  			chainToSend = _tuple$10[0];
 78252  			err = _tuple$10[1];
 78253  			/* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 62; continue; }
 78254  			/* */ $s = 63; continue;
 78255  			/* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 62:
 78256  				_r$27 = c.sendAlert(80); /* */ $s = 64; case 64: if($c) { $c = false; _r$27 = _r$27.$blk(); } if (_r$27 && _r$27.$blk !== undefined) { break s; }
 78257  				_r$27;
 78258  				$s = -1; return err;
 78259  			/* } */ case 63:
 78260  			_r$28 = c.readHandshake(); /* */ $s = 65; case 65: if($c) { $c = false; _r$28 = _r$28.$blk(); } if (_r$28 && _r$28.$blk !== undefined) { break s; }
 78261  			_tuple$11 = _r$28;
 78262  			msg = _tuple$11[0];
 78263  			err = _tuple$11[1];
 78264  			if (!($interfaceIsEqual(err, $ifaceNil))) {
 78265  				$s = -1; return err;
 78266  			}
 78267  		/* } */ case 59:
 78268  		_tuple$12 = $assertType(msg, ptrType$24, true);
 78269  		shd = _tuple$12[0];
 78270  		ok = _tuple$12[1];
 78271  		/* */ if (!ok) { $s = 66; continue; }
 78272  		/* */ $s = 67; continue;
 78273  		/* if (!ok) { */ case 66:
 78274  			_r$29 = c.sendAlert(10); /* */ $s = 68; case 68: if($c) { $c = false; _r$29 = _r$29.$blk(); } if (_r$29 && _r$29.$blk !== undefined) { break s; }
 78275  			_r$29;
 78276  			_r$30 = unexpectedMessageError(shd, msg); /* */ $s = 69; case 69: if($c) { $c = false; _r$30 = _r$30.$blk(); } if (_r$30 && _r$30.$blk !== undefined) { break s; }
 78277  			$s = -1; return _r$30;
 78278  		/* } */ case 67:
 78279  		_r$31 = hs.finishedHash.Write(shd.marshal()); /* */ $s = 70; case 70: if($c) { $c = false; _r$31 = _r$31.$blk(); } if (_r$31 && _r$31.$blk !== undefined) { break s; }
 78280  		_r$31;
 78281  		/* */ if (certRequested) { $s = 71; continue; }
 78282  		/* */ $s = 72; continue;
 78283  		/* if (certRequested) { */ case 71:
 78284  			certMsg = new certificateMsg.ptr(sliceType$7.nil, sliceType$9.nil);
 78285  			certMsg.certificates = chainToSend.Certificate;
 78286  			_r$32 = hs.finishedHash.Write(certMsg.marshal()); /* */ $s = 73; case 73: if($c) { $c = false; _r$32 = _r$32.$blk(); } if (_r$32 && _r$32.$blk !== undefined) { break s; }
 78287  			_r$32;
 78288  			_r$33 = c.writeRecord(22, certMsg.marshal()); /* */ $s = 74; case 74: if($c) { $c = false; _r$33 = _r$33.$blk(); } if (_r$33 && _r$33.$blk !== undefined) { break s; }
 78289  			_tuple$13 = _r$33;
 78290  			err$3 = _tuple$13[1];
 78291  			if (!($interfaceIsEqual(err$3, $ifaceNil))) {
 78292  				$s = -1; return err$3;
 78293  			}
 78294  		/* } */ case 72:
 78295  		_r$34 = keyAgreement$1.generateClientKeyExchange(c.config, hs.hello, (x$3 = c.peerCertificates, (0 >= x$3.$length ? ($throwRuntimeError("index out of range"), undefined) : x$3.$array[x$3.$offset + 0]))); /* */ $s = 75; case 75: if($c) { $c = false; _r$34 = _r$34.$blk(); } if (_r$34 && _r$34.$blk !== undefined) { break s; }
 78296  		_tuple$14 = _r$34;
 78297  		preMasterSecret = _tuple$14[0];
 78298  		ckx = _tuple$14[1];
 78299  		err = _tuple$14[2];
 78300  		/* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 76; continue; }
 78301  		/* */ $s = 77; continue;
 78302  		/* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 76:
 78303  			_r$35 = c.sendAlert(80); /* */ $s = 78; case 78: if($c) { $c = false; _r$35 = _r$35.$blk(); } if (_r$35 && _r$35.$blk !== undefined) { break s; }
 78304  			_r$35;
 78305  			$s = -1; return err;
 78306  		/* } */ case 77:
 78307  		/* */ if (!(ckx === ptrType$25.nil)) { $s = 79; continue; }
 78308  		/* */ $s = 80; continue;
 78309  		/* if (!(ckx === ptrType$25.nil)) { */ case 79:
 78310  			_r$36 = hs.finishedHash.Write(ckx.marshal()); /* */ $s = 81; case 81: if($c) { $c = false; _r$36 = _r$36.$blk(); } if (_r$36 && _r$36.$blk !== undefined) { break s; }
 78311  			_r$36;
 78312  			_r$37 = c.writeRecord(22, ckx.marshal()); /* */ $s = 82; case 82: if($c) { $c = false; _r$37 = _r$37.$blk(); } if (_r$37 && _r$37.$blk !== undefined) { break s; }
 78313  			_tuple$15 = _r$37;
 78314  			err$4 = _tuple$15[1];
 78315  			if (!($interfaceIsEqual(err$4, $ifaceNil))) {
 78316  				$s = -1; return err$4;
 78317  			}
 78318  		/* } */ case 80:
 78319  		/* */ if (!(chainToSend === ptrType$4.nil) && chainToSend.Certificate.$length > 0) { $s = 83; continue; }
 78320  		/* */ $s = 84; continue;
 78321  		/* if (!(chainToSend === ptrType$4.nil) && chainToSend.Certificate.$length > 0) { */ case 83:
 78322  			certVerify = new certificateVerifyMsg.ptr(sliceType$7.nil, c.vers >= 771, 0, sliceType$7.nil);
 78323  			_tuple$16 = $assertType(chainToSend.PrivateKey, crypto.Signer, true);
 78324  			key = _tuple$16[0];
 78325  			ok$1 = _tuple$16[1];
 78326  			/* */ if (!ok$1) { $s = 85; continue; }
 78327  			/* */ $s = 86; continue;
 78328  			/* if (!ok$1) { */ case 85:
 78329  				_r$38 = c.sendAlert(80); /* */ $s = 87; case 87: if($c) { $c = false; _r$38 = _r$38.$blk(); } if (_r$38 && _r$38.$blk !== undefined) { break s; }
 78330  				_r$38;
 78331  				_r$39 = fmt.Errorf("tls: client certificate private key of type %T does not implement crypto.Signer", new sliceType$8([chainToSend.PrivateKey])); /* */ $s = 88; case 88: if($c) { $c = false; _r$39 = _r$39.$blk(); } if (_r$39 && _r$39.$blk !== undefined) { break s; }
 78332  				$s = -1; return _r$39;
 78333  			/* } */ case 86:
 78334  			signatureType = 0;
 78335  			_r$40 = key.Public(); /* */ $s = 89; case 89: if($c) { $c = false; _r$40 = _r$40.$blk(); } if (_r$40 && _r$40.$blk !== undefined) { break s; }
 78336  			_ref$3 = _r$40;
 78337  			/* */ if ($assertType(_ref$3, ptrType$20, true)[1]) { $s = 90; continue; }
 78338  			/* */ if ($assertType(_ref$3, ptrType$19, true)[1]) { $s = 91; continue; }
 78339  			/* */ $s = 92; continue;
 78340  			/* if ($assertType(_ref$3, ptrType$20, true)[1]) { */ case 90:
 78341  				signatureType = 3;
 78342  				$s = 93; continue;
 78343  			/* } else if ($assertType(_ref$3, ptrType$19, true)[1]) { */ case 91:
 78344  				signatureType = 1;
 78345  				$s = 93; continue;
 78346  			/* } else { */ case 92:
 78347  				_r$41 = c.sendAlert(80); /* */ $s = 94; case 94: if($c) { $c = false; _r$41 = _r$41.$blk(); } if (_r$41 && _r$41.$blk !== undefined) { break s; }
 78348  				_r$41;
 78349  				_r$42 = fmt.Errorf("tls: failed to sign handshake with client certificate: unknown client certificate key type: %T", new sliceType$8([key])); /* */ $s = 95; case 95: if($c) { $c = false; _r$42 = _r$42.$blk(); } if (_r$42 && _r$42.$blk !== undefined) { break s; }
 78350  				$s = -1; return _r$42;
 78351  			/* } */ case 93:
 78352  			/* */ if (certVerify.hasSignatureAndHash) { $s = 96; continue; }
 78353  			/* */ $s = 97; continue;
 78354  			/* if (certVerify.hasSignatureAndHash) { */ case 96:
 78355  				_tuple$17 = $clone(hs.finishedHash, finishedHash).selectClientCertSignatureAlgorithm(certReq.supportedSignatureAlgorithms, signatureType);
 78356  				certVerify.signatureAlgorithm = _tuple$17[0];
 78357  				err = _tuple$17[1];
 78358  				/* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 98; continue; }
 78359  				/* */ $s = 99; continue;
 78360  				/* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 98:
 78361  					_r$43 = c.sendAlert(80); /* */ $s = 100; case 100: if($c) { $c = false; _r$43 = _r$43.$blk(); } if (_r$43 && _r$43.$blk !== undefined) { break s; }
 78362  					_r$43;
 78363  					$s = -1; return err;
 78364  				/* } */ case 99:
 78365  			/* } */ case 97:
 78366  			_r$44 = $clone(hs.finishedHash, finishedHash).hashForClientCertificate(signatureType, certVerify.signatureAlgorithm, hs.masterSecret); /* */ $s = 101; case 101: if($c) { $c = false; _r$44 = _r$44.$blk(); } if (_r$44 && _r$44.$blk !== undefined) { break s; }
 78367  			_tuple$18 = _r$44;
 78368  			digest = _tuple$18[0];
 78369  			hashFunc = _tuple$18[1];
 78370  			err$5 = _tuple$18[2];
 78371  			/* */ if (!($interfaceIsEqual(err$5, $ifaceNil))) { $s = 102; continue; }
 78372  			/* */ $s = 103; continue;
 78373  			/* if (!($interfaceIsEqual(err$5, $ifaceNil))) { */ case 102:
 78374  				_r$45 = c.sendAlert(80); /* */ $s = 104; case 104: if($c) { $c = false; _r$45 = _r$45.$blk(); } if (_r$45 && _r$45.$blk !== undefined) { break s; }
 78375  				_r$45;
 78376  				$s = -1; return err$5;
 78377  			/* } */ case 103:
 78378  			_r$46 = key.Sign(c.config.rand(), digest, new crypto.Hash(hashFunc)); /* */ $s = 105; case 105: if($c) { $c = false; _r$46 = _r$46.$blk(); } if (_r$46 && _r$46.$blk !== undefined) { break s; }
 78379  			_tuple$19 = _r$46;
 78380  			certVerify.signature = _tuple$19[0];
 78381  			err$5 = _tuple$19[1];
 78382  			/* */ if (!($interfaceIsEqual(err$5, $ifaceNil))) { $s = 106; continue; }
 78383  			/* */ $s = 107; continue;
 78384  			/* if (!($interfaceIsEqual(err$5, $ifaceNil))) { */ case 106:
 78385  				_r$47 = c.sendAlert(80); /* */ $s = 108; case 108: if($c) { $c = false; _r$47 = _r$47.$blk(); } if (_r$47 && _r$47.$blk !== undefined) { break s; }
 78386  				_r$47;
 78387  				$s = -1; return err$5;
 78388  			/* } */ case 107:
 78389  			_r$48 = hs.finishedHash.Write(certVerify.marshal()); /* */ $s = 109; case 109: if($c) { $c = false; _r$48 = _r$48.$blk(); } if (_r$48 && _r$48.$blk !== undefined) { break s; }
 78390  			_r$48;
 78391  			_r$49 = c.writeRecord(22, certVerify.marshal()); /* */ $s = 110; case 110: if($c) { $c = false; _r$49 = _r$49.$blk(); } if (_r$49 && _r$49.$blk !== undefined) { break s; }
 78392  			_tuple$20 = _r$49;
 78393  			err$6 = _tuple$20[1];
 78394  			if (!($interfaceIsEqual(err$6, $ifaceNil))) {
 78395  				$s = -1; return err$6;
 78396  			}
 78397  		/* } */ case 84:
 78398  		_r$50 = masterFromPreMasterSecret(c.vers, hs.suite, preMasterSecret, hs.hello.random, hs.serverHello.random); /* */ $s = 111; case 111: if($c) { $c = false; _r$50 = _r$50.$blk(); } if (_r$50 && _r$50.$blk !== undefined) { break s; }
 78399  		hs.masterSecret = _r$50;
 78400  		_r$51 = c.config.writeKeyLog(hs.hello.random, hs.masterSecret); /* */ $s = 112; case 112: if($c) { $c = false; _r$51 = _r$51.$blk(); } if (_r$51 && _r$51.$blk !== undefined) { break s; }
 78401  		err$7 = _r$51;
 78402  		/* */ if (!($interfaceIsEqual(err$7, $ifaceNil))) { $s = 113; continue; }
 78403  		/* */ $s = 114; continue;
 78404  		/* if (!($interfaceIsEqual(err$7, $ifaceNil))) { */ case 113:
 78405  			_r$52 = c.sendAlert(80); /* */ $s = 115; case 115: if($c) { $c = false; _r$52 = _r$52.$blk(); } if (_r$52 && _r$52.$blk !== undefined) { break s; }
 78406  			_r$52;
 78407  			_r$53 = err$7.Error(); /* */ $s = 116; case 116: if($c) { $c = false; _r$53 = _r$53.$blk(); } if (_r$53 && _r$53.$blk !== undefined) { break s; }
 78408  			_r$54 = errors.New("tls: failed to write to key log: " + _r$53); /* */ $s = 117; case 117: if($c) { $c = false; _r$54 = _r$54.$blk(); } if (_r$54 && _r$54.$blk !== undefined) { break s; }
 78409  			$s = -1; return _r$54;
 78410  		/* } */ case 114:
 78411  		hs.finishedHash.discardHandshakeBuffer();
 78412  		$s = -1; return $ifaceNil;
 78413  		/* */ } return; } if ($f === undefined) { $f = { $blk: clientHandshakeState.ptr.prototype.doFullHandshake }; } $f._i = _i; $f._i$1 = _i$1; $f._r = _r; $f._r$1 = _r$1; $f._r$10 = _r$10; $f._r$11 = _r$11; $f._r$12 = _r$12; $f._r$13 = _r$13; $f._r$14 = _r$14; $f._r$15 = _r$15; $f._r$16 = _r$16; $f._r$17 = _r$17; $f._r$18 = _r$18; $f._r$19 = _r$19; $f._r$2 = _r$2; $f._r$20 = _r$20; $f._r$21 = _r$21; $f._r$22 = _r$22; $f._r$23 = _r$23; $f._r$24 = _r$24; $f._r$25 = _r$25; $f._r$26 = _r$26; $f._r$27 = _r$27; $f._r$28 = _r$28; $f._r$29 = _r$29; $f._r$3 = _r$3; $f._r$30 = _r$30; $f._r$31 = _r$31; $f._r$32 = _r$32; $f._r$33 = _r$33; $f._r$34 = _r$34; $f._r$35 = _r$35; $f._r$36 = _r$36; $f._r$37 = _r$37; $f._r$38 = _r$38; $f._r$39 = _r$39; $f._r$4 = _r$4; $f._r$40 = _r$40; $f._r$41 = _r$41; $f._r$42 = _r$42; $f._r$43 = _r$43; $f._r$44 = _r$44; $f._r$45 = _r$45; $f._r$46 = _r$46; $f._r$47 = _r$47; $f._r$48 = _r$48; $f._r$49 = _r$49; $f._r$5 = _r$5; $f._r$50 = _r$50; $f._r$51 = _r$51; $f._r$52 = _r$52; $f._r$53 = _r$53; $f._r$54 = _r$54; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._r$8 = _r$8; $f._r$9 = _r$9; $f._ref = _ref; $f._ref$1 = _ref$1; $f._ref$2 = _ref$2; $f._ref$3 = _ref$3; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$10 = _tuple$10; $f._tuple$11 = _tuple$11; $f._tuple$12 = _tuple$12; $f._tuple$13 = _tuple$13; $f._tuple$14 = _tuple$14; $f._tuple$15 = _tuple$15; $f._tuple$16 = _tuple$16; $f._tuple$17 = _tuple$17; $f._tuple$18 = _tuple$18; $f._tuple$19 = _tuple$19; $f._tuple$2 = _tuple$2; $f._tuple$20 = _tuple$20; $f._tuple$3 = _tuple$3; $f._tuple$4 = _tuple$4; $f._tuple$5 = _tuple$5; $f._tuple$6 = _tuple$6; $f._tuple$7 = _tuple$7; $f._tuple$8 = _tuple$8; $f._tuple$9 = _tuple$9; $f.asn1Data = asn1Data; $f.c = c; $f.cert = cert; $f.cert$1 = cert$1; $f.certMsg = certMsg; $f.certReq = certReq; $f.certRequested = certRequested; $f.certVerify = certVerify; $f.certs = certs; $f.chainToSend = chainToSend; $f.ckx = ckx; $f.cs = cs; $f.digest = digest; $f.err = err; $f.err$1 = err$1; $f.err$2 = err$2; $f.err$3 = err$3; $f.err$4 = err$4; $f.err$5 = err$5; $f.err$6 = err$6; $f.err$7 = err$7; $f.hashFunc = hashFunc; $f.hs = hs; $f.i = i; $f.i$1 = i$1; $f.key = key; $f.keyAgreement$1 = keyAgreement$1; $f.msg = msg; $f.ok = ok; $f.ok$1 = ok$1; $f.opts = opts; $f.preMasterSecret = preMasterSecret; $f.shd = shd; $f.signatureType = signatureType; $f.skx = skx; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.x$3 = x$3; $f.$s = $s; $f.$r = $r; return $f;
 78414  	};
 78415  	clientHandshakeState.prototype.doFullHandshake = function() { return this.$val.doFullHandshake(); };
 78416  	clientHandshakeState.ptr.prototype.establishKeys = function() {
 78417  		var _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, c, clientCipher, clientHash, clientIV, clientKey, clientMAC, hs, serverCipher, serverHash, serverIV, serverKey, serverMAC, $s, $r;
 78418  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tuple = $f._tuple; c = $f.c; clientCipher = $f.clientCipher; clientHash = $f.clientHash; clientIV = $f.clientIV; clientKey = $f.clientKey; clientMAC = $f.clientMAC; hs = $f.hs; serverCipher = $f.serverCipher; serverHash = $f.serverHash; serverIV = $f.serverIV; serverKey = $f.serverKey; serverMAC = $f.serverMAC; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 78419  		hs = this;
 78420  		c = hs.c;
 78421  		_r = keysFromMasterSecret(c.vers, hs.suite, hs.masterSecret, hs.hello.random, hs.serverHello.random, hs.suite.macLen, hs.suite.keyLen, hs.suite.ivLen); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 78422  		_tuple = _r;
 78423  		clientMAC = _tuple[0];
 78424  		serverMAC = _tuple[1];
 78425  		clientKey = _tuple[2];
 78426  		serverKey = _tuple[3];
 78427  		clientIV = _tuple[4];
 78428  		serverIV = _tuple[5];
 78429  		_tmp = $ifaceNil;
 78430  		_tmp$1 = $ifaceNil;
 78431  		clientCipher = _tmp;
 78432  		serverCipher = _tmp$1;
 78433  		_tmp$2 = $ifaceNil;
 78434  		_tmp$3 = $ifaceNil;
 78435  		clientHash = _tmp$2;
 78436  		serverHash = _tmp$3;
 78437  		/* */ if (!(hs.suite.cipher === $throwNilPointerError)) { $s = 2; continue; }
 78438  		/* */ $s = 3; continue;
 78439  		/* if (!(hs.suite.cipher === $throwNilPointerError)) { */ case 2:
 78440  			_r$1 = hs.suite.cipher(clientKey, clientIV, false); /* */ $s = 5; case 5: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 78441  			clientCipher = _r$1;
 78442  			_r$2 = hs.suite.mac(c.vers, clientMAC); /* */ $s = 6; case 6: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 78443  			clientHash = _r$2;
 78444  			_r$3 = hs.suite.cipher(serverKey, serverIV, true); /* */ $s = 7; case 7: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 78445  			serverCipher = _r$3;
 78446  			_r$4 = hs.suite.mac(c.vers, serverMAC); /* */ $s = 8; case 8: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 78447  			serverHash = _r$4;
 78448  			$s = 4; continue;
 78449  		/* } else { */ case 3:
 78450  			_r$5 = hs.suite.aead(clientKey, clientIV); /* */ $s = 9; case 9: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
 78451  			clientCipher = _r$5;
 78452  			_r$6 = hs.suite.aead(serverKey, serverIV); /* */ $s = 10; case 10: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
 78453  			serverCipher = _r$6;
 78454  		/* } */ case 4:
 78455  		c.in$25.prepareCipherSpec(c.vers, serverCipher, serverHash);
 78456  		c.out.prepareCipherSpec(c.vers, clientCipher, clientHash);
 78457  		$s = -1; return $ifaceNil;
 78458  		/* */ } return; } if ($f === undefined) { $f = { $blk: clientHandshakeState.ptr.prototype.establishKeys }; } $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tuple = _tuple; $f.c = c; $f.clientCipher = clientCipher; $f.clientHash = clientHash; $f.clientIV = clientIV; $f.clientKey = clientKey; $f.clientMAC = clientMAC; $f.hs = hs; $f.serverCipher = serverCipher; $f.serverHash = serverHash; $f.serverIV = serverIV; $f.serverKey = serverKey; $f.serverMAC = serverMAC; $f.$s = $s; $f.$r = $r; return $f;
 78459  	};
 78460  	clientHandshakeState.prototype.establishKeys = function() { return this.$val.establishKeys(); };
 78461  	clientHandshakeState.ptr.prototype.serverResumedSession = function() {
 78462  		var hs;
 78463  		hs = this;
 78464  		return !(hs.session === ptrType$8.nil) && !(hs.hello.sessionId === sliceType$7.nil) && bytes.Equal(hs.serverHello.sessionId, hs.hello.sessionId);
 78465  	};
 78466  	clientHandshakeState.prototype.serverResumedSession = function() { return this.$val.serverResumedSession(); };
 78467  	clientHandshakeState.ptr.prototype.processServerHello = function() {
 78468  		var _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, c, clientDidALPN, clientDidNPN, expectedSecureRenegotiation, hs, serverHasALPN, serverHasNPN, $s, $r;
 78469  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; c = $f.c; clientDidALPN = $f.clientDidALPN; clientDidNPN = $f.clientDidNPN; expectedSecureRenegotiation = $f.expectedSecureRenegotiation; hs = $f.hs; serverHasALPN = $f.serverHasALPN; serverHasNPN = $f.serverHasNPN; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 78470  		hs = this;
 78471  		c = hs.c;
 78472  		/* */ if (!((hs.serverHello.compressionMethod === 0))) { $s = 1; continue; }
 78473  		/* */ $s = 2; continue;
 78474  		/* if (!((hs.serverHello.compressionMethod === 0))) { */ case 1:
 78475  			_r = c.sendAlert(10); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 78476  			_r;
 78477  			$s = -1; return [false, errors.New("tls: server selected unsupported compression format")];
 78478  		/* } */ case 2:
 78479  		/* */ if ((c.handshakes === 0) && hs.serverHello.secureRenegotiationSupported) { $s = 4; continue; }
 78480  		/* */ $s = 5; continue;
 78481  		/* if ((c.handshakes === 0) && hs.serverHello.secureRenegotiationSupported) { */ case 4:
 78482  			c.secureRenegotiation = true;
 78483  			/* */ if (!((hs.serverHello.secureRenegotiation.$length === 0))) { $s = 6; continue; }
 78484  			/* */ $s = 7; continue;
 78485  			/* if (!((hs.serverHello.secureRenegotiation.$length === 0))) { */ case 6:
 78486  				_r$1 = c.sendAlert(40); /* */ $s = 8; case 8: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 78487  				_r$1;
 78488  				$s = -1; return [false, errors.New("tls: initial handshake had non-empty renegotiation extension")];
 78489  			/* } */ case 7:
 78490  		/* } */ case 5:
 78491  		/* */ if (c.handshakes > 0 && c.secureRenegotiation) { $s = 9; continue; }
 78492  		/* */ $s = 10; continue;
 78493  		/* if (c.handshakes > 0 && c.secureRenegotiation) { */ case 9:
 78494  			expectedSecureRenegotiation = arrayType$5.zero();
 78495  			$copySlice(new sliceType$7(expectedSecureRenegotiation), new sliceType$7(c.clientFinished));
 78496  			$copySlice($subslice(new sliceType$7(expectedSecureRenegotiation), 12), new sliceType$7(c.serverFinished));
 78497  			/* */ if (!bytes.Equal(hs.serverHello.secureRenegotiation, new sliceType$7(expectedSecureRenegotiation))) { $s = 11; continue; }
 78498  			/* */ $s = 12; continue;
 78499  			/* if (!bytes.Equal(hs.serverHello.secureRenegotiation, new sliceType$7(expectedSecureRenegotiation))) { */ case 11:
 78500  				_r$2 = c.sendAlert(40); /* */ $s = 13; case 13: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 78501  				_r$2;
 78502  				$s = -1; return [false, errors.New("tls: incorrect renegotiation extension contents")];
 78503  			/* } */ case 12:
 78504  		/* } */ case 10:
 78505  		clientDidNPN = hs.hello.nextProtoNeg;
 78506  		clientDidALPN = hs.hello.alpnProtocols.$length > 0;
 78507  		serverHasNPN = hs.serverHello.nextProtoNeg;
 78508  		serverHasALPN = hs.serverHello.alpnProtocol.length > 0;
 78509  		/* */ if (!clientDidNPN && serverHasNPN) { $s = 14; continue; }
 78510  		/* */ $s = 15; continue;
 78511  		/* if (!clientDidNPN && serverHasNPN) { */ case 14:
 78512  			_r$3 = c.sendAlert(40); /* */ $s = 16; case 16: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 78513  			_r$3;
 78514  			$s = -1; return [false, errors.New("tls: server advertised unrequested NPN extension")];
 78515  		/* } */ case 15:
 78516  		/* */ if (!clientDidALPN && serverHasALPN) { $s = 17; continue; }
 78517  		/* */ $s = 18; continue;
 78518  		/* if (!clientDidALPN && serverHasALPN) { */ case 17:
 78519  			_r$4 = c.sendAlert(40); /* */ $s = 19; case 19: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 78520  			_r$4;
 78521  			$s = -1; return [false, errors.New("tls: server advertised unrequested ALPN extension")];
 78522  		/* } */ case 18:
 78523  		/* */ if (serverHasNPN && serverHasALPN) { $s = 20; continue; }
 78524  		/* */ $s = 21; continue;
 78525  		/* if (serverHasNPN && serverHasALPN) { */ case 20:
 78526  			_r$5 = c.sendAlert(40); /* */ $s = 22; case 22: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
 78527  			_r$5;
 78528  			$s = -1; return [false, errors.New("tls: server advertised both NPN and ALPN extensions")];
 78529  		/* } */ case 21:
 78530  		if (serverHasALPN) {
 78531  			c.clientProtocol = hs.serverHello.alpnProtocol;
 78532  			c.clientProtocolFallback = false;
 78533  		}
 78534  		c.scts = hs.serverHello.scts;
 78535  		if (!hs.serverResumedSession()) {
 78536  			$s = -1; return [false, $ifaceNil];
 78537  		}
 78538  		/* */ if (!((hs.session.vers === c.vers))) { $s = 23; continue; }
 78539  		/* */ $s = 24; continue;
 78540  		/* if (!((hs.session.vers === c.vers))) { */ case 23:
 78541  			_r$6 = c.sendAlert(40); /* */ $s = 25; case 25: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
 78542  			_r$6;
 78543  			$s = -1; return [false, errors.New("tls: server resumed a session with a different version")];
 78544  		/* } */ case 24:
 78545  		/* */ if (!((hs.session.cipherSuite === hs.suite.id))) { $s = 26; continue; }
 78546  		/* */ $s = 27; continue;
 78547  		/* if (!((hs.session.cipherSuite === hs.suite.id))) { */ case 26:
 78548  			_r$7 = c.sendAlert(40); /* */ $s = 28; case 28: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
 78549  			_r$7;
 78550  			$s = -1; return [false, errors.New("tls: server resumed a session with a different cipher suite")];
 78551  		/* } */ case 27:
 78552  		hs.masterSecret = hs.session.masterSecret;
 78553  		c.peerCertificates = hs.session.serverCertificates;
 78554  		c.verifiedChains = hs.session.verifiedChains;
 78555  		$s = -1; return [true, $ifaceNil];
 78556  		/* */ } return; } if ($f === undefined) { $f = { $blk: clientHandshakeState.ptr.prototype.processServerHello }; } $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f.c = c; $f.clientDidALPN = clientDidALPN; $f.clientDidNPN = clientDidNPN; $f.expectedSecureRenegotiation = expectedSecureRenegotiation; $f.hs = hs; $f.serverHasALPN = serverHasALPN; $f.serverHasNPN = serverHasNPN; $f.$s = $s; $f.$r = $r; return $f;
 78557  	};
 78558  	clientHandshakeState.prototype.processServerHello = function() { return this.$val.processServerHello(); };
 78559  	clientHandshakeState.ptr.prototype.readFinished = function(out) {
 78560  		var _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _tuple, _tuple$1, c, err, hs, msg, ok, out, serverFinished, verify, $s, $r;
 78561  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; c = $f.c; err = $f.err; hs = $f.hs; msg = $f.msg; ok = $f.ok; out = $f.out; serverFinished = $f.serverFinished; verify = $f.verify; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 78562  		hs = this;
 78563  		c = hs.c;
 78564  		_r = c.readRecord(20); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 78565  		_r;
 78566  		if (!($interfaceIsEqual(c.in$25.err, $ifaceNil))) {
 78567  			$s = -1; return c.in$25.err;
 78568  		}
 78569  		_r$1 = c.readHandshake(); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 78570  		_tuple = _r$1;
 78571  		msg = _tuple[0];
 78572  		err = _tuple[1];
 78573  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 78574  			$s = -1; return err;
 78575  		}
 78576  		_tuple$1 = $assertType(msg, ptrType$26, true);
 78577  		serverFinished = _tuple$1[0];
 78578  		ok = _tuple$1[1];
 78579  		/* */ if (!ok) { $s = 3; continue; }
 78580  		/* */ $s = 4; continue;
 78581  		/* if (!ok) { */ case 3:
 78582  			_r$2 = c.sendAlert(10); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 78583  			_r$2;
 78584  			_r$3 = unexpectedMessageError(serverFinished, msg); /* */ $s = 6; case 6: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 78585  			$s = -1; return _r$3;
 78586  		/* } */ case 4:
 78587  		_r$4 = $clone(hs.finishedHash, finishedHash).serverSum(hs.masterSecret); /* */ $s = 7; case 7: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 78588  		verify = _r$4;
 78589  		/* */ if (!((verify.$length === serverFinished.verifyData.$length)) || !((subtle.ConstantTimeCompare(verify, serverFinished.verifyData) === 1))) { $s = 8; continue; }
 78590  		/* */ $s = 9; continue;
 78591  		/* if (!((verify.$length === serverFinished.verifyData.$length)) || !((subtle.ConstantTimeCompare(verify, serverFinished.verifyData) === 1))) { */ case 8:
 78592  			_r$5 = c.sendAlert(40); /* */ $s = 10; case 10: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
 78593  			_r$5;
 78594  			$s = -1; return errors.New("tls: server's Finished message was incorrect");
 78595  		/* } */ case 9:
 78596  		_r$6 = hs.finishedHash.Write(serverFinished.marshal()); /* */ $s = 11; case 11: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
 78597  		_r$6;
 78598  		$copySlice(out, verify);
 78599  		$s = -1; return $ifaceNil;
 78600  		/* */ } return; } if ($f === undefined) { $f = { $blk: clientHandshakeState.ptr.prototype.readFinished }; } $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.c = c; $f.err = err; $f.hs = hs; $f.msg = msg; $f.ok = ok; $f.out = out; $f.serverFinished = serverFinished; $f.verify = verify; $f.$s = $s; $f.$r = $r; return $f;
 78601  	};
 78602  	clientHandshakeState.prototype.readFinished = function(out) { return this.$val.readFinished(out); };
 78603  	clientHandshakeState.ptr.prototype.readSessionTicket = function() {
 78604  		var _r, _r$1, _r$2, _r$3, _tuple, _tuple$1, c, err, hs, msg, ok, sessionTicketMsg, $s, $r;
 78605  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; c = $f.c; err = $f.err; hs = $f.hs; msg = $f.msg; ok = $f.ok; sessionTicketMsg = $f.sessionTicketMsg; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 78606  		hs = this;
 78607  		if (!hs.serverHello.ticketSupported) {
 78608  			$s = -1; return $ifaceNil;
 78609  		}
 78610  		c = hs.c;
 78611  		_r = c.readHandshake(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 78612  		_tuple = _r;
 78613  		msg = _tuple[0];
 78614  		err = _tuple[1];
 78615  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 78616  			$s = -1; return err;
 78617  		}
 78618  		_tuple$1 = $assertType(msg, ptrType$27, true);
 78619  		sessionTicketMsg = _tuple$1[0];
 78620  		ok = _tuple$1[1];
 78621  		/* */ if (!ok) { $s = 2; continue; }
 78622  		/* */ $s = 3; continue;
 78623  		/* if (!ok) { */ case 2:
 78624  			_r$1 = c.sendAlert(10); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 78625  			_r$1;
 78626  			_r$2 = unexpectedMessageError(sessionTicketMsg, msg); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 78627  			$s = -1; return _r$2;
 78628  		/* } */ case 3:
 78629  		_r$3 = hs.finishedHash.Write(sessionTicketMsg.marshal()); /* */ $s = 6; case 6: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 78630  		_r$3;
 78631  		hs.session = new ClientSessionState.ptr(sessionTicketMsg.ticket, c.vers, hs.suite.id, hs.masterSecret, c.peerCertificates, c.verifiedChains);
 78632  		$s = -1; return $ifaceNil;
 78633  		/* */ } return; } if ($f === undefined) { $f = { $blk: clientHandshakeState.ptr.prototype.readSessionTicket }; } $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.c = c; $f.err = err; $f.hs = hs; $f.msg = msg; $f.ok = ok; $f.sessionTicketMsg = sessionTicketMsg; $f.$s = $s; $f.$r = $r; return $f;
 78634  	};
 78635  	clientHandshakeState.prototype.readSessionTicket = function() { return this.$val.readSessionTicket(); };
 78636  	clientHandshakeState.ptr.prototype.sendFinished = function(out) {
 78637  		var _r, _r$1, _r$2, _r$3, _r$4, _r$5, _tuple, _tuple$1, _tuple$2, _tuple$3, c, err, err$1, err$2, fallback, finished, hs, nextProto, out, proto, $s, $r;
 78638  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; c = $f.c; err = $f.err; err$1 = $f.err$1; err$2 = $f.err$2; fallback = $f.fallback; finished = $f.finished; hs = $f.hs; nextProto = $f.nextProto; out = $f.out; proto = $f.proto; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 78639  		hs = this;
 78640  		c = hs.c;
 78641  		_r = c.writeRecord(20, new sliceType$7([1])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 78642  		_tuple = _r;
 78643  		err = _tuple[1];
 78644  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 78645  			$s = -1; return err;
 78646  		}
 78647  		/* */ if (hs.serverHello.nextProtoNeg) { $s = 2; continue; }
 78648  		/* */ $s = 3; continue;
 78649  		/* if (hs.serverHello.nextProtoNeg) { */ case 2:
 78650  			nextProto = new nextProtoMsg.ptr(sliceType$7.nil, "");
 78651  			_tuple$1 = mutualProtocol(c.config.NextProtos, hs.serverHello.nextProtos);
 78652  			proto = _tuple$1[0];
 78653  			fallback = _tuple$1[1];
 78654  			nextProto.proto = proto;
 78655  			c.clientProtocol = proto;
 78656  			c.clientProtocolFallback = fallback;
 78657  			_r$1 = hs.finishedHash.Write(nextProto.marshal()); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 78658  			_r$1;
 78659  			_r$2 = c.writeRecord(22, nextProto.marshal()); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 78660  			_tuple$2 = _r$2;
 78661  			err$1 = _tuple$2[1];
 78662  			if (!($interfaceIsEqual(err$1, $ifaceNil))) {
 78663  				$s = -1; return err$1;
 78664  			}
 78665  		/* } */ case 3:
 78666  		finished = new finishedMsg.ptr(sliceType$7.nil, sliceType$7.nil);
 78667  		_r$3 = $clone(hs.finishedHash, finishedHash).clientSum(hs.masterSecret); /* */ $s = 6; case 6: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 78668  		finished.verifyData = _r$3;
 78669  		_r$4 = hs.finishedHash.Write(finished.marshal()); /* */ $s = 7; case 7: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 78670  		_r$4;
 78671  		_r$5 = c.writeRecord(22, finished.marshal()); /* */ $s = 8; case 8: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
 78672  		_tuple$3 = _r$5;
 78673  		err$2 = _tuple$3[1];
 78674  		if (!($interfaceIsEqual(err$2, $ifaceNil))) {
 78675  			$s = -1; return err$2;
 78676  		}
 78677  		$copySlice(out, finished.verifyData);
 78678  		$s = -1; return $ifaceNil;
 78679  		/* */ } return; } if ($f === undefined) { $f = { $blk: clientHandshakeState.ptr.prototype.sendFinished }; } $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f.c = c; $f.err = err; $f.err$1 = err$1; $f.err$2 = err$2; $f.fallback = fallback; $f.finished = finished; $f.hs = hs; $f.nextProto = nextProto; $f.out = out; $f.proto = proto; $f.$s = $s; $f.$r = $r; return $f;
 78680  	};
 78681  	clientHandshakeState.prototype.sendFinished = function(out) { return this.$val.sendFinished(out); };
 78682  	clientHandshakeState.ptr.prototype.getCertificate = function(certReq) {
 78683  		var _1, _i, _i$1, _i$2, _i$3, _r, _r$1, _r$2, _r$3, _r$4, _ref, _ref$1, _ref$2, _ref$3, _tmp, _tmp$1, _tuple, c, ca, cert, certReq, certType, chain, ecdsaAvail, err, hs, i, j, rsaAvail, signatureSchemes, x509Cert, $s, $r;
 78684  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _i = $f._i; _i$1 = $f._i$1; _i$2 = $f._i$2; _i$3 = $f._i$3; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _ref = $f._ref; _ref$1 = $f._ref$1; _ref$2 = $f._ref$2; _ref$3 = $f._ref$3; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tuple = $f._tuple; c = $f.c; ca = $f.ca; cert = $f.cert; certReq = $f.certReq; certType = $f.certType; chain = $f.chain; ecdsaAvail = $f.ecdsaAvail; err = $f.err; hs = $f.hs; i = $f.i; j = $f.j; rsaAvail = $f.rsaAvail; signatureSchemes = $f.signatureSchemes; x509Cert = $f.x509Cert; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 78685  		chain = [chain];
 78686  		hs = this;
 78687  		c = hs.c;
 78688  		_tmp = false;
 78689  		_tmp$1 = false;
 78690  		rsaAvail = _tmp;
 78691  		ecdsaAvail = _tmp$1;
 78692  		_ref = certReq.certificateTypes;
 78693  		_i = 0;
 78694  		while (true) {
 78695  			if (!(_i < _ref.$length)) { break; }
 78696  			certType = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
 78697  			_1 = certType;
 78698  			if (_1 === (1)) {
 78699  				rsaAvail = true;
 78700  			} else if (_1 === (64)) {
 78701  				ecdsaAvail = true;
 78702  			}
 78703  			_i++;
 78704  		}
 78705  		/* */ if (!(c.config.GetClientCertificate === $throwNilPointerError)) { $s = 1; continue; }
 78706  		/* */ $s = 2; continue;
 78707  		/* if (!(c.config.GetClientCertificate === $throwNilPointerError)) { */ case 1:
 78708  			signatureSchemes = sliceType$6.nil;
 78709  			if (!certReq.hasSignatureAndHash) {
 78710  				signatureSchemes = tls11SignatureSchemes;
 78711  				if (!ecdsaAvail) {
 78712  					signatureSchemes = $subslice(signatureSchemes, 3);
 78713  				}
 78714  				if (!rsaAvail) {
 78715  					signatureSchemes = $subslice(signatureSchemes, 0, (signatureSchemes.$length - 4 >> 0));
 78716  				}
 78717  			} else {
 78718  				signatureSchemes = certReq.supportedSignatureAlgorithms;
 78719  			}
 78720  			_r = c.config.GetClientCertificate(new CertificateRequestInfo.ptr(certReq.certificateAuthorities, signatureSchemes)); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 78721  			$s = -1; return _r;
 78722  		/* } */ case 2:
 78723  		_ref$1 = c.config.Certificates;
 78724  		_i$1 = 0;
 78725  		/* while (true) { */ case 4:
 78726  			/* if (!(_i$1 < _ref$1.$length)) { break; } */ if(!(_i$1 < _ref$1.$length)) { $s = 5; continue; }
 78727  			i = _i$1;
 78728  			chain[0] = $clone(((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]), Certificate);
 78729  			/* */ if (!rsaAvail && !ecdsaAvail) { $s = 6; continue; }
 78730  			/* */ $s = 7; continue;
 78731  			/* if (!rsaAvail && !ecdsaAvail) { */ case 6:
 78732  				_i$1++;
 78733  				/* continue; */ $s = 4; continue;
 78734  			/* } */ case 7:
 78735  			_ref$2 = chain[0].Certificate;
 78736  			_i$2 = 0;
 78737  			/* while (true) { */ case 8:
 78738  				/* if (!(_i$2 < _ref$2.$length)) { break; } */ if(!(_i$2 < _ref$2.$length)) { $s = 9; continue; }
 78739  				j = _i$2;
 78740  				cert = ((_i$2 < 0 || _i$2 >= _ref$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$2.$array[_ref$2.$offset + _i$2]);
 78741  				x509Cert = chain[0].Leaf;
 78742  				/* */ if (!((j === 0)) || x509Cert === ptrType$13.nil) { $s = 10; continue; }
 78743  				/* */ $s = 11; continue;
 78744  				/* if (!((j === 0)) || x509Cert === ptrType$13.nil) { */ case 10:
 78745  					err = $ifaceNil;
 78746  					_r$1 = x509.ParseCertificate(cert); /* */ $s = 12; case 12: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 78747  					_tuple = _r$1;
 78748  					x509Cert = _tuple[0];
 78749  					err = _tuple[1];
 78750  					/* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 13; continue; }
 78751  					/* */ $s = 14; continue;
 78752  					/* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 13:
 78753  						_r$2 = c.sendAlert(80); /* */ $s = 15; case 15: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 78754  						_r$2;
 78755  						_r$3 = err.Error(); /* */ $s = 16; case 16: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 78756  						_r$4 = errors.New("tls: failed to parse client certificate #" + strconv.Itoa(i) + ": " + _r$3); /* */ $s = 17; case 17: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 78757  						$s = -1; return [ptrType$4.nil, _r$4];
 78758  					/* } */ case 14:
 78759  				/* } */ case 11:
 78760  				if (rsaAvail && (x509Cert.PublicKeyAlgorithm === 1)) {
 78761  				} else if (ecdsaAvail && (x509Cert.PublicKeyAlgorithm === 3)) {
 78762  				} else {
 78763  					_i$1++;
 78764  					/* continue findCert; */ $s = 4; continue s;
 78765  				}
 78766  				if (certReq.certificateAuthorities.$length === 0) {
 78767  					$s = -1; return [chain[0], $ifaceNil];
 78768  				}
 78769  				_ref$3 = certReq.certificateAuthorities;
 78770  				_i$3 = 0;
 78771  				while (true) {
 78772  					if (!(_i$3 < _ref$3.$length)) { break; }
 78773  					ca = ((_i$3 < 0 || _i$3 >= _ref$3.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$3.$array[_ref$3.$offset + _i$3]);
 78774  					if (bytes.Equal(x509Cert.RawIssuer, ca)) {
 78775  						$s = -1; return [chain[0], $ifaceNil];
 78776  					}
 78777  					_i$3++;
 78778  				}
 78779  				_i$2++;
 78780  			/* } */ $s = 8; continue; case 9:
 78781  			_i$1++;
 78782  		/* } */ $s = 4; continue; case 5:
 78783  		$s = -1; return [new Certificate.ptr(sliceType$9.nil, $ifaceNil, sliceType$7.nil, sliceType$9.nil, ptrType$13.nil), $ifaceNil];
 78784  		/* */ } return; } if ($f === undefined) { $f = { $blk: clientHandshakeState.ptr.prototype.getCertificate }; } $f._1 = _1; $f._i = _i; $f._i$1 = _i$1; $f._i$2 = _i$2; $f._i$3 = _i$3; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._ref = _ref; $f._ref$1 = _ref$1; $f._ref$2 = _ref$2; $f._ref$3 = _ref$3; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tuple = _tuple; $f.c = c; $f.ca = ca; $f.cert = cert; $f.certReq = certReq; $f.certType = certType; $f.chain = chain; $f.ecdsaAvail = ecdsaAvail; $f.err = err; $f.hs = hs; $f.i = i; $f.j = j; $f.rsaAvail = rsaAvail; $f.signatureSchemes = signatureSchemes; $f.x509Cert = x509Cert; $f.$s = $s; $f.$r = $r; return $f;
 78785  	};
 78786  	clientHandshakeState.prototype.getCertificate = function(certReq) { return this.$val.getCertificate(certReq); };
 78787  	clientSessionCacheKey = function(serverAddr, config) {
 78788  		var _r, config, serverAddr, $s, $r;
 78789  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; config = $f.config; serverAddr = $f.serverAddr; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 78790  		if (config.ServerName.length > 0) {
 78791  			$s = -1; return config.ServerName;
 78792  		}
 78793  		_r = serverAddr.String(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 78794  		$s = -1; return _r;
 78795  		/* */ } return; } if ($f === undefined) { $f = { $blk: clientSessionCacheKey }; } $f._r = _r; $f.config = config; $f.serverAddr = serverAddr; $f.$s = $s; $f.$r = $r; return $f;
 78796  	};
 78797  	mutualProtocol = function(protos, preferenceProtos) {
 78798  		var _i, _i$1, _ref, _ref$1, c, preferenceProtos, protos, s;
 78799  		_ref = preferenceProtos;
 78800  		_i = 0;
 78801  		while (true) {
 78802  			if (!(_i < _ref.$length)) { break; }
 78803  			s = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
 78804  			_ref$1 = protos;
 78805  			_i$1 = 0;
 78806  			while (true) {
 78807  				if (!(_i$1 < _ref$1.$length)) { break; }
 78808  				c = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]);
 78809  				if (s === c) {
 78810  					return [s, false];
 78811  				}
 78812  				_i$1++;
 78813  			}
 78814  			_i++;
 78815  		}
 78816  		return [(0 >= protos.$length ? ($throwRuntimeError("index out of range"), undefined) : protos.$array[protos.$offset + 0]), true];
 78817  	};
 78818  	hostnameInSNI = function(name) {
 78819  		var host, i, name;
 78820  		host = name;
 78821  		if (host.length > 0 && (host.charCodeAt(0) === 91) && (host.charCodeAt((host.length - 1 >> 0)) === 93)) {
 78822  			host = $substring(host, 1, (host.length - 1 >> 0));
 78823  		}
 78824  		i = strings.LastIndex(host, "%");
 78825  		if (i > 0) {
 78826  			host = $substring(host, 0, i);
 78827  		}
 78828  		if (!(net.ParseIP(host) === net.IP.nil)) {
 78829  			return "";
 78830  		}
 78831  		while (true) {
 78832  			if (!(name.length > 0 && (name.charCodeAt((name.length - 1 >> 0)) === 46))) { break; }
 78833  			name = $substring(name, 0, (name.length - 1 >> 0));
 78834  		}
 78835  		return name;
 78836  	};
 78837  	clientHelloMsg.ptr.prototype.marshal = function() {
 78838  		var _i, _i$1, _i$2, _i$3, _i$4, _i$5, _ref, _ref$1, _ref$2, _ref$3, _ref$4, _ref$5, curve, extensionsLength, i, l, l$1, l$2, l$3, l$4, l$5, l$6, length, lengths, m, numExtensions, pointFormat, s, s$1, sigAlgo, stringsLength, suite, x, x$1, x$2, y, z;
 78839  		m = this;
 78840  		if (!(m.raw === sliceType$7.nil)) {
 78841  			return m.raw;
 78842  		}
 78843  		length = ((((35 + m.sessionId.$length >> 0) + 2 >> 0) + ($imul(m.cipherSuites.$length, 2)) >> 0) + 1 >> 0) + m.compressionMethods.$length >> 0;
 78844  		numExtensions = 0;
 78845  		extensionsLength = 0;
 78846  		if (m.nextProtoNeg) {
 78847  			numExtensions = numExtensions + (1) >> 0;
 78848  		}
 78849  		if (m.ocspStapling) {
 78850  			extensionsLength = extensionsLength + (5) >> 0;
 78851  			numExtensions = numExtensions + (1) >> 0;
 78852  		}
 78853  		if (m.serverName.length > 0) {
 78854  			extensionsLength = extensionsLength + ((5 + m.serverName.length >> 0)) >> 0;
 78855  			numExtensions = numExtensions + (1) >> 0;
 78856  		}
 78857  		if (m.supportedCurves.$length > 0) {
 78858  			extensionsLength = extensionsLength + ((2 + ($imul(2, m.supportedCurves.$length)) >> 0)) >> 0;
 78859  			numExtensions = numExtensions + (1) >> 0;
 78860  		}
 78861  		if (m.supportedPoints.$length > 0) {
 78862  			extensionsLength = extensionsLength + ((1 + m.supportedPoints.$length >> 0)) >> 0;
 78863  			numExtensions = numExtensions + (1) >> 0;
 78864  		}
 78865  		if (m.ticketSupported) {
 78866  			extensionsLength = extensionsLength + (m.sessionTicket.$length) >> 0;
 78867  			numExtensions = numExtensions + (1) >> 0;
 78868  		}
 78869  		if (m.supportedSignatureAlgorithms.$length > 0) {
 78870  			extensionsLength = extensionsLength + ((2 + ($imul(2, m.supportedSignatureAlgorithms.$length)) >> 0)) >> 0;
 78871  			numExtensions = numExtensions + (1) >> 0;
 78872  		}
 78873  		if (m.secureRenegotiationSupported) {
 78874  			extensionsLength = extensionsLength + ((1 + m.secureRenegotiation.$length >> 0)) >> 0;
 78875  			numExtensions = numExtensions + (1) >> 0;
 78876  		}
 78877  		if (m.alpnProtocols.$length > 0) {
 78878  			extensionsLength = extensionsLength + (2) >> 0;
 78879  			_ref = m.alpnProtocols;
 78880  			_i = 0;
 78881  			while (true) {
 78882  				if (!(_i < _ref.$length)) { break; }
 78883  				s = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
 78884  				l = s.length;
 78885  				if ((l === 0) || l > 255) {
 78886  					$panic(new $String("invalid ALPN protocol"));
 78887  				}
 78888  				extensionsLength = extensionsLength + (1) >> 0;
 78889  				extensionsLength = extensionsLength + (s.length) >> 0;
 78890  				_i++;
 78891  			}
 78892  			numExtensions = numExtensions + (1) >> 0;
 78893  		}
 78894  		if (m.scts) {
 78895  			numExtensions = numExtensions + (1) >> 0;
 78896  		}
 78897  		if (numExtensions > 0) {
 78898  			extensionsLength = extensionsLength + (($imul(4, numExtensions))) >> 0;
 78899  			length = length + ((2 + extensionsLength >> 0)) >> 0;
 78900  		}
 78901  		x = $makeSlice(sliceType$7, (4 + length >> 0));
 78902  		(0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0] = 1);
 78903  		(1 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 1] = (((length >> 16 >> 0) << 24 >>> 24)));
 78904  		(2 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 2] = (((length >> 8 >> 0) << 24 >>> 24)));
 78905  		(3 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 3] = ((length << 24 >>> 24)));
 78906  		(4 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 4] = (((m.vers >>> 8 << 16 >>> 16) << 24 >>> 24)));
 78907  		(5 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 5] = ((m.vers << 24 >>> 24)));
 78908  		$copySlice($subslice(x, 6, 38), m.random);
 78909  		(38 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 38] = ((m.sessionId.$length << 24 >>> 24)));
 78910  		$copySlice($subslice(x, 39, (39 + m.sessionId.$length >> 0)), m.sessionId);
 78911  		y = $subslice(x, (39 + m.sessionId.$length >> 0));
 78912  		(0 >= y.$length ? ($throwRuntimeError("index out of range"), undefined) : y.$array[y.$offset + 0] = (((m.cipherSuites.$length >> 7 >> 0) << 24 >>> 24)));
 78913  		(1 >= y.$length ? ($throwRuntimeError("index out of range"), undefined) : y.$array[y.$offset + 1] = (((m.cipherSuites.$length << 1 >> 0) << 24 >>> 24)));
 78914  		_ref$1 = m.cipherSuites;
 78915  		_i$1 = 0;
 78916  		while (true) {
 78917  			if (!(_i$1 < _ref$1.$length)) { break; }
 78918  			i = _i$1;
 78919  			suite = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]);
 78920  			(x$1 = 2 + ($imul(i, 2)) >> 0, ((x$1 < 0 || x$1 >= y.$length) ? ($throwRuntimeError("index out of range"), undefined) : y.$array[y.$offset + x$1] = (((suite >>> 8 << 16 >>> 16) << 24 >>> 24))));
 78921  			(x$2 = 3 + ($imul(i, 2)) >> 0, ((x$2 < 0 || x$2 >= y.$length) ? ($throwRuntimeError("index out of range"), undefined) : y.$array[y.$offset + x$2] = ((suite << 24 >>> 24))));
 78922  			_i$1++;
 78923  		}
 78924  		z = $subslice(y, (2 + ($imul(m.cipherSuites.$length, 2)) >> 0));
 78925  		(0 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 0] = ((m.compressionMethods.$length << 24 >>> 24)));
 78926  		$copySlice($subslice(z, 1), m.compressionMethods);
 78927  		z = $subslice(z, (1 + m.compressionMethods.$length >> 0));
 78928  		if (numExtensions > 0) {
 78929  			(0 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 0] = (((extensionsLength >> 8 >> 0) << 24 >>> 24)));
 78930  			(1 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 1] = ((extensionsLength << 24 >>> 24)));
 78931  			z = $subslice(z, 2);
 78932  		}
 78933  		if (m.nextProtoNeg) {
 78934  			(0 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 0] = 51);
 78935  			(1 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 1] = 116);
 78936  			z = $subslice(z, 4);
 78937  		}
 78938  		if (m.serverName.length > 0) {
 78939  			(0 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 0] = 0);
 78940  			(1 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 1] = 0);
 78941  			l$1 = m.serverName.length + 5 >> 0;
 78942  			(2 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 2] = (((l$1 >> 8 >> 0) << 24 >>> 24)));
 78943  			(3 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 3] = ((l$1 << 24 >>> 24)));
 78944  			z = $subslice(z, 4);
 78945  			(0 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 0] = (((((m.serverName.length + 3 >> 0)) >> 8 >> 0) << 24 >>> 24)));
 78946  			(1 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 1] = (((m.serverName.length + 3 >> 0) << 24 >>> 24)));
 78947  			(3 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 3] = (((m.serverName.length >> 8 >> 0) << 24 >>> 24)));
 78948  			(4 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 4] = ((m.serverName.length << 24 >>> 24)));
 78949  			$copySlice($subslice(z, 5), (new sliceType$7($stringToBytes(m.serverName))));
 78950  			z = $subslice(z, l$1);
 78951  		}
 78952  		if (m.ocspStapling) {
 78953  			(0 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 0] = 0);
 78954  			(1 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 1] = 5);
 78955  			(2 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 2] = 0);
 78956  			(3 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 3] = 5);
 78957  			(4 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 4] = 1);
 78958  			z = $subslice(z, 9);
 78959  		}
 78960  		if (m.supportedCurves.$length > 0) {
 78961  			(0 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 0] = 0);
 78962  			(1 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 1] = 10);
 78963  			l$2 = 2 + ($imul(2, m.supportedCurves.$length)) >> 0;
 78964  			(2 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 2] = (((l$2 >> 8 >> 0) << 24 >>> 24)));
 78965  			(3 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 3] = ((l$2 << 24 >>> 24)));
 78966  			l$2 = l$2 - (2) >> 0;
 78967  			(4 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 4] = (((l$2 >> 8 >> 0) << 24 >>> 24)));
 78968  			(5 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 5] = ((l$2 << 24 >>> 24)));
 78969  			z = $subslice(z, 6);
 78970  			_ref$2 = m.supportedCurves;
 78971  			_i$2 = 0;
 78972  			while (true) {
 78973  				if (!(_i$2 < _ref$2.$length)) { break; }
 78974  				curve = ((_i$2 < 0 || _i$2 >= _ref$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$2.$array[_ref$2.$offset + _i$2]);
 78975  				(0 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 0] = (((curve >>> 8 << 16 >>> 16) << 24 >>> 24)));
 78976  				(1 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 1] = ((curve << 24 >>> 24)));
 78977  				z = $subslice(z, 2);
 78978  				_i$2++;
 78979  			}
 78980  		}
 78981  		if (m.supportedPoints.$length > 0) {
 78982  			(0 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 0] = 0);
 78983  			(1 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 1] = 11);
 78984  			l$3 = 1 + m.supportedPoints.$length >> 0;
 78985  			(2 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 2] = (((l$3 >> 8 >> 0) << 24 >>> 24)));
 78986  			(3 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 3] = ((l$3 << 24 >>> 24)));
 78987  			l$3 = l$3 - (1) >> 0;
 78988  			(4 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 4] = ((l$3 << 24 >>> 24)));
 78989  			z = $subslice(z, 5);
 78990  			_ref$3 = m.supportedPoints;
 78991  			_i$3 = 0;
 78992  			while (true) {
 78993  				if (!(_i$3 < _ref$3.$length)) { break; }
 78994  				pointFormat = ((_i$3 < 0 || _i$3 >= _ref$3.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$3.$array[_ref$3.$offset + _i$3]);
 78995  				(0 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 0] = pointFormat);
 78996  				z = $subslice(z, 1);
 78997  				_i$3++;
 78998  			}
 78999  		}
 79000  		if (m.ticketSupported) {
 79001  			(0 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 0] = 0);
 79002  			(1 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 1] = 35);
 79003  			l$4 = m.sessionTicket.$length;
 79004  			(2 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 2] = (((l$4 >> 8 >> 0) << 24 >>> 24)));
 79005  			(3 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 3] = ((l$4 << 24 >>> 24)));
 79006  			z = $subslice(z, 4);
 79007  			$copySlice(z, m.sessionTicket);
 79008  			z = $subslice(z, m.sessionTicket.$length);
 79009  		}
 79010  		if (m.supportedSignatureAlgorithms.$length > 0) {
 79011  			(0 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 0] = 0);
 79012  			(1 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 1] = 13);
 79013  			l$5 = 2 + ($imul(2, m.supportedSignatureAlgorithms.$length)) >> 0;
 79014  			(2 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 2] = (((l$5 >> 8 >> 0) << 24 >>> 24)));
 79015  			(3 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 3] = ((l$5 << 24 >>> 24)));
 79016  			z = $subslice(z, 4);
 79017  			l$5 = l$5 - (2) >> 0;
 79018  			(0 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 0] = (((l$5 >> 8 >> 0) << 24 >>> 24)));
 79019  			(1 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 1] = ((l$5 << 24 >>> 24)));
 79020  			z = $subslice(z, 2);
 79021  			_ref$4 = m.supportedSignatureAlgorithms;
 79022  			_i$4 = 0;
 79023  			while (true) {
 79024  				if (!(_i$4 < _ref$4.$length)) { break; }
 79025  				sigAlgo = ((_i$4 < 0 || _i$4 >= _ref$4.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$4.$array[_ref$4.$offset + _i$4]);
 79026  				(0 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 0] = (((sigAlgo >>> 8 << 16 >>> 16) << 24 >>> 24)));
 79027  				(1 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 1] = ((sigAlgo << 24 >>> 24)));
 79028  				z = $subslice(z, 2);
 79029  				_i$4++;
 79030  			}
 79031  		}
 79032  		if (m.secureRenegotiationSupported) {
 79033  			(0 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 0] = 255);
 79034  			(1 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 1] = 1);
 79035  			(2 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 2] = 0);
 79036  			(3 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 3] = (((m.secureRenegotiation.$length + 1 >> 0) << 24 >>> 24)));
 79037  			(4 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 4] = ((m.secureRenegotiation.$length << 24 >>> 24)));
 79038  			z = $subslice(z, 5);
 79039  			$copySlice(z, m.secureRenegotiation);
 79040  			z = $subslice(z, m.secureRenegotiation.$length);
 79041  		}
 79042  		if (m.alpnProtocols.$length > 0) {
 79043  			(0 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 0] = 0);
 79044  			(1 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 1] = 16);
 79045  			lengths = $subslice(z, 2);
 79046  			z = $subslice(z, 6);
 79047  			stringsLength = 0;
 79048  			_ref$5 = m.alpnProtocols;
 79049  			_i$5 = 0;
 79050  			while (true) {
 79051  				if (!(_i$5 < _ref$5.$length)) { break; }
 79052  				s$1 = ((_i$5 < 0 || _i$5 >= _ref$5.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$5.$array[_ref$5.$offset + _i$5]);
 79053  				l$6 = s$1.length;
 79054  				(0 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 0] = ((l$6 << 24 >>> 24)));
 79055  				$copyString($subslice(z, 1), s$1);
 79056  				z = $subslice(z, (1 + l$6 >> 0));
 79057  				stringsLength = stringsLength + ((1 + l$6 >> 0)) >> 0;
 79058  				_i$5++;
 79059  			}
 79060  			(2 >= lengths.$length ? ($throwRuntimeError("index out of range"), undefined) : lengths.$array[lengths.$offset + 2] = (((stringsLength >> 8 >> 0) << 24 >>> 24)));
 79061  			(3 >= lengths.$length ? ($throwRuntimeError("index out of range"), undefined) : lengths.$array[lengths.$offset + 3] = ((stringsLength << 24 >>> 24)));
 79062  			stringsLength = stringsLength + (2) >> 0;
 79063  			(0 >= lengths.$length ? ($throwRuntimeError("index out of range"), undefined) : lengths.$array[lengths.$offset + 0] = (((stringsLength >> 8 >> 0) << 24 >>> 24)));
 79064  			(1 >= lengths.$length ? ($throwRuntimeError("index out of range"), undefined) : lengths.$array[lengths.$offset + 1] = ((stringsLength << 24 >>> 24)));
 79065  		}
 79066  		if (m.scts) {
 79067  			(0 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 0] = 0);
 79068  			(1 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 1] = 18);
 79069  			z = $subslice(z, 4);
 79070  		}
 79071  		m.raw = x;
 79072  		return x;
 79073  	};
 79074  	clientHelloMsg.prototype.marshal = function() { return this.$val.marshal(); };
 79075  	clientHelloMsg.ptr.prototype.unmarshal = function(data) {
 79076  		var _1, _i, _q, _q$1, _q$2, _r, _r$1, _ref, cipherSuiteLen, compressionMethodsLen, d, d$1, d$2, d$3, d$4, data, extension, extensionsLength, i, i$1, i$2, l, l$1, l$2, l$3, l$4, length, m, n, nameLen, nameType, namesLen, numCipherSuites, numCurves, sessionIdLen, stringLen, x, x$1, x$2, x$3, x$4, x$5;
 79077  		m = this;
 79078  		if (data.$length < 42) {
 79079  			return false;
 79080  		}
 79081  		m.raw = data;
 79082  		m.vers = (((((4 >= data.$length ? ($throwRuntimeError("index out of range"), undefined) : data.$array[data.$offset + 4]) << 16 >>> 16)) << 8 << 16 >>> 16) | (((5 >= data.$length ? ($throwRuntimeError("index out of range"), undefined) : data.$array[data.$offset + 5]) << 16 >>> 16))) >>> 0;
 79083  		m.random = $subslice(data, 6, 38);
 79084  		sessionIdLen = (((38 >= data.$length ? ($throwRuntimeError("index out of range"), undefined) : data.$array[data.$offset + 38]) >> 0));
 79085  		if (sessionIdLen > 32 || data.$length < (39 + sessionIdLen >> 0)) {
 79086  			return false;
 79087  		}
 79088  		m.sessionId = $subslice(data, 39, (39 + sessionIdLen >> 0));
 79089  		data = $subslice(data, (39 + sessionIdLen >> 0));
 79090  		if (data.$length < 2) {
 79091  			return false;
 79092  		}
 79093  		cipherSuiteLen = ((((0 >= data.$length ? ($throwRuntimeError("index out of range"), undefined) : data.$array[data.$offset + 0]) >> 0)) << 8 >> 0) | (((1 >= data.$length ? ($throwRuntimeError("index out of range"), undefined) : data.$array[data.$offset + 1]) >> 0));
 79094  		if (((_r = cipherSuiteLen % 2, _r === _r ? _r : $throwRuntimeError("integer divide by zero")) === 1) || data.$length < (2 + cipherSuiteLen >> 0)) {
 79095  			return false;
 79096  		}
 79097  		numCipherSuites = (_q = cipherSuiteLen / 2, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero"));
 79098  		m.cipherSuites = $makeSlice(sliceType$2, numCipherSuites);
 79099  		i = 0;
 79100  		while (true) {
 79101  			if (!(i < numCipherSuites)) { break; }
 79102  			(x$2 = m.cipherSuites, ((i < 0 || i >= x$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + i] = ((((((x = 2 + ($imul(2, i)) >> 0, ((x < 0 || x >= data.$length) ? ($throwRuntimeError("index out of range"), undefined) : data.$array[data.$offset + x])) << 16 >>> 16)) << 8 << 16 >>> 16) | (((x$1 = 3 + ($imul(2, i)) >> 0, ((x$1 < 0 || x$1 >= data.$length) ? ($throwRuntimeError("index out of range"), undefined) : data.$array[data.$offset + x$1])) << 16 >>> 16))) >>> 0)));
 79103  			if ((x$3 = m.cipherSuites, ((i < 0 || i >= x$3.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$3.$array[x$3.$offset + i])) === 255) {
 79104  				m.secureRenegotiationSupported = true;
 79105  			}
 79106  			i = i + (1) >> 0;
 79107  		}
 79108  		data = $subslice(data, (2 + cipherSuiteLen >> 0));
 79109  		if (data.$length < 1) {
 79110  			return false;
 79111  		}
 79112  		compressionMethodsLen = (((0 >= data.$length ? ($throwRuntimeError("index out of range"), undefined) : data.$array[data.$offset + 0]) >> 0));
 79113  		if (data.$length < (1 + compressionMethodsLen >> 0)) {
 79114  			return false;
 79115  		}
 79116  		m.compressionMethods = $subslice(data, 1, (1 + compressionMethodsLen >> 0));
 79117  		data = $subslice(data, (1 + compressionMethodsLen >> 0));
 79118  		m.nextProtoNeg = false;
 79119  		m.serverName = "";
 79120  		m.ocspStapling = false;
 79121  		m.ticketSupported = false;
 79122  		m.sessionTicket = sliceType$7.nil;
 79123  		m.supportedSignatureAlgorithms = sliceType$6.nil;
 79124  		m.alpnProtocols = sliceType$1.nil;
 79125  		m.scts = false;
 79126  		if (data.$length === 0) {
 79127  			return true;
 79128  		}
 79129  		if (data.$length < 2) {
 79130  			return false;
 79131  		}
 79132  		extensionsLength = ((((0 >= data.$length ? ($throwRuntimeError("index out of range"), undefined) : data.$array[data.$offset + 0]) >> 0)) << 8 >> 0) | (((1 >= data.$length ? ($throwRuntimeError("index out of range"), undefined) : data.$array[data.$offset + 1]) >> 0));
 79133  		data = $subslice(data, 2);
 79134  		if (!((extensionsLength === data.$length))) {
 79135  			return false;
 79136  		}
 79137  		while (true) {
 79138  			if (!(!((data.$length === 0)))) { break; }
 79139  			if (data.$length < 4) {
 79140  				return false;
 79141  			}
 79142  			extension = (((((0 >= data.$length ? ($throwRuntimeError("index out of range"), undefined) : data.$array[data.$offset + 0]) << 16 >>> 16)) << 8 << 16 >>> 16) | (((1 >= data.$length ? ($throwRuntimeError("index out of range"), undefined) : data.$array[data.$offset + 1]) << 16 >>> 16))) >>> 0;
 79143  			length = ((((2 >= data.$length ? ($throwRuntimeError("index out of range"), undefined) : data.$array[data.$offset + 2]) >> 0)) << 8 >> 0) | (((3 >= data.$length ? ($throwRuntimeError("index out of range"), undefined) : data.$array[data.$offset + 3]) >> 0));
 79144  			data = $subslice(data, 4);
 79145  			if (data.$length < length) {
 79146  				return false;
 79147  			}
 79148  			_1 = extension;
 79149  			if (_1 === (0)) {
 79150  				d = $subslice(data, 0, length);
 79151  				if (d.$length < 2) {
 79152  					return false;
 79153  				}
 79154  				namesLen = ((((0 >= d.$length ? ($throwRuntimeError("index out of range"), undefined) : d.$array[d.$offset + 0]) >> 0)) << 8 >> 0) | (((1 >= d.$length ? ($throwRuntimeError("index out of range"), undefined) : d.$array[d.$offset + 1]) >> 0));
 79155  				d = $subslice(d, 2);
 79156  				if (!((d.$length === namesLen))) {
 79157  					return false;
 79158  				}
 79159  				while (true) {
 79160  					if (!(d.$length > 0)) { break; }
 79161  					if (d.$length < 3) {
 79162  						return false;
 79163  					}
 79164  					nameType = (0 >= d.$length ? ($throwRuntimeError("index out of range"), undefined) : d.$array[d.$offset + 0]);
 79165  					nameLen = ((((1 >= d.$length ? ($throwRuntimeError("index out of range"), undefined) : d.$array[d.$offset + 1]) >> 0)) << 8 >> 0) | (((2 >= d.$length ? ($throwRuntimeError("index out of range"), undefined) : d.$array[d.$offset + 2]) >> 0));
 79166  					d = $subslice(d, 3);
 79167  					if (d.$length < nameLen) {
 79168  						return false;
 79169  					}
 79170  					if (nameType === 0) {
 79171  						m.serverName = ($bytesToString($subslice(d, 0, nameLen)));
 79172  						if (strings.HasSuffix(m.serverName, ".")) {
 79173  							return false;
 79174  						}
 79175  						break;
 79176  					}
 79177  					d = $subslice(d, nameLen);
 79178  				}
 79179  			} else if (_1 === (13172)) {
 79180  				if (length > 0) {
 79181  					return false;
 79182  				}
 79183  				m.nextProtoNeg = true;
 79184  			} else if (_1 === (5)) {
 79185  				m.ocspStapling = length > 0 && ((0 >= data.$length ? ($throwRuntimeError("index out of range"), undefined) : data.$array[data.$offset + 0]) === 1);
 79186  			} else if (_1 === (10)) {
 79187  				if (length < 2) {
 79188  					return false;
 79189  				}
 79190  				l = ((((0 >= data.$length ? ($throwRuntimeError("index out of range"), undefined) : data.$array[data.$offset + 0]) >> 0)) << 8 >> 0) | (((1 >= data.$length ? ($throwRuntimeError("index out of range"), undefined) : data.$array[data.$offset + 1]) >> 0));
 79191  				if (((_r$1 = l % 2, _r$1 === _r$1 ? _r$1 : $throwRuntimeError("integer divide by zero")) === 1) || !((length === (l + 2 >> 0)))) {
 79192  					return false;
 79193  				}
 79194  				numCurves = (_q$1 = l / 2, (_q$1 === _q$1 && _q$1 !== 1/0 && _q$1 !== -1/0) ? _q$1 >> 0 : $throwRuntimeError("integer divide by zero"));
 79195  				m.supportedCurves = $makeSlice(sliceType$3, numCurves);
 79196  				d$1 = $subslice(data, 2);
 79197  				i$1 = 0;
 79198  				while (true) {
 79199  					if (!(i$1 < numCurves)) { break; }
 79200  					(x$4 = m.supportedCurves, ((i$1 < 0 || i$1 >= x$4.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$4.$array[x$4.$offset + i$1] = ((((((0 >= d$1.$length ? ($throwRuntimeError("index out of range"), undefined) : d$1.$array[d$1.$offset + 0]) << 16 >>> 16)) << 8 << 16 >>> 16) | (((1 >= d$1.$length ? ($throwRuntimeError("index out of range"), undefined) : d$1.$array[d$1.$offset + 1]) << 16 >>> 16))) >>> 0)));
 79201  					d$1 = $subslice(d$1, 2);
 79202  					i$1 = i$1 + (1) >> 0;
 79203  				}
 79204  			} else if (_1 === (11)) {
 79205  				if (length < 1) {
 79206  					return false;
 79207  				}
 79208  				l$1 = (((0 >= data.$length ? ($throwRuntimeError("index out of range"), undefined) : data.$array[data.$offset + 0]) >> 0));
 79209  				if (!((length === (l$1 + 1 >> 0)))) {
 79210  					return false;
 79211  				}
 79212  				m.supportedPoints = $makeSlice(sliceType$7, l$1);
 79213  				$copySlice(m.supportedPoints, $subslice(data, 1));
 79214  			} else if (_1 === (35)) {
 79215  				m.ticketSupported = true;
 79216  				m.sessionTicket = $subslice(data, 0, length);
 79217  			} else if (_1 === (13)) {
 79218  				if (length < 2 || !(((length & 1) === 0))) {
 79219  					return false;
 79220  				}
 79221  				l$2 = ((((0 >= data.$length ? ($throwRuntimeError("index out of range"), undefined) : data.$array[data.$offset + 0]) >> 0)) << 8 >> 0) | (((1 >= data.$length ? ($throwRuntimeError("index out of range"), undefined) : data.$array[data.$offset + 1]) >> 0));
 79222  				if (!((l$2 === (length - 2 >> 0)))) {
 79223  					return false;
 79224  				}
 79225  				n = (_q$2 = l$2 / 2, (_q$2 === _q$2 && _q$2 !== 1/0 && _q$2 !== -1/0) ? _q$2 >> 0 : $throwRuntimeError("integer divide by zero"));
 79226  				d$2 = $subslice(data, 2);
 79227  				m.supportedSignatureAlgorithms = $makeSlice(sliceType$6, n);
 79228  				_ref = m.supportedSignatureAlgorithms;
 79229  				_i = 0;
 79230  				while (true) {
 79231  					if (!(_i < _ref.$length)) { break; }
 79232  					i$2 = _i;
 79233  					(x$5 = m.supportedSignatureAlgorithms, ((i$2 < 0 || i$2 >= x$5.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$5.$array[x$5.$offset + i$2] = ((((((0 >= d$2.$length ? ($throwRuntimeError("index out of range"), undefined) : d$2.$array[d$2.$offset + 0]) << 16 >>> 16)) << 8 << 16 >>> 16) | (((1 >= d$2.$length ? ($throwRuntimeError("index out of range"), undefined) : d$2.$array[d$2.$offset + 1]) << 16 >>> 16))) >>> 0)));
 79234  					d$2 = $subslice(d$2, 2);
 79235  					_i++;
 79236  				}
 79237  			} else if (_1 === (65281)) {
 79238  				if (length === 0) {
 79239  					return false;
 79240  				}
 79241  				d$3 = $subslice(data, 0, length);
 79242  				l$3 = (((0 >= d$3.$length ? ($throwRuntimeError("index out of range"), undefined) : d$3.$array[d$3.$offset + 0]) >> 0));
 79243  				d$3 = $subslice(d$3, 1);
 79244  				if (!((l$3 === d$3.$length))) {
 79245  					return false;
 79246  				}
 79247  				m.secureRenegotiation = d$3;
 79248  				m.secureRenegotiationSupported = true;
 79249  			} else if (_1 === (16)) {
 79250  				if (length < 2) {
 79251  					return false;
 79252  				}
 79253  				l$4 = ((((0 >= data.$length ? ($throwRuntimeError("index out of range"), undefined) : data.$array[data.$offset + 0]) >> 0)) << 8 >> 0) | (((1 >= data.$length ? ($throwRuntimeError("index out of range"), undefined) : data.$array[data.$offset + 1]) >> 0));
 79254  				if (!((l$4 === (length - 2 >> 0)))) {
 79255  					return false;
 79256  				}
 79257  				d$4 = $subslice(data, 2, length);
 79258  				while (true) {
 79259  					if (!(!((d$4.$length === 0)))) { break; }
 79260  					stringLen = (((0 >= d$4.$length ? ($throwRuntimeError("index out of range"), undefined) : d$4.$array[d$4.$offset + 0]) >> 0));
 79261  					d$4 = $subslice(d$4, 1);
 79262  					if ((stringLen === 0) || stringLen > d$4.$length) {
 79263  						return false;
 79264  					}
 79265  					m.alpnProtocols = $append(m.alpnProtocols, ($bytesToString($subslice(d$4, 0, stringLen))));
 79266  					d$4 = $subslice(d$4, stringLen);
 79267  				}
 79268  			} else if (_1 === (18)) {
 79269  				m.scts = true;
 79270  				if (!((length === 0))) {
 79271  					return false;
 79272  				}
 79273  			}
 79274  			data = $subslice(data, length);
 79275  		}
 79276  		return true;
 79277  	};
 79278  	clientHelloMsg.prototype.unmarshal = function(data) { return this.$val.unmarshal(data); };
 79279  	serverHelloMsg.ptr.prototype.marshal = function() {
 79280  		var _i, _i$1, _i$2, _i$3, _ref, _ref$1, _ref$2, _ref$3, alpnLen, alpnLen$1, extensionsLength, l, l$1, l$2, length, m, nextProtoLen, numExtensions, sct, sct$1, sctLen, v, v$1, x, z;
 79281  		m = this;
 79282  		if (!(m.raw === sliceType$7.nil)) {
 79283  			return m.raw;
 79284  		}
 79285  		length = 38 + m.sessionId.$length >> 0;
 79286  		numExtensions = 0;
 79287  		extensionsLength = 0;
 79288  		nextProtoLen = 0;
 79289  		if (m.nextProtoNeg) {
 79290  			numExtensions = numExtensions + (1) >> 0;
 79291  			_ref = m.nextProtos;
 79292  			_i = 0;
 79293  			while (true) {
 79294  				if (!(_i < _ref.$length)) { break; }
 79295  				v = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
 79296  				nextProtoLen = nextProtoLen + (v.length) >> 0;
 79297  				_i++;
 79298  			}
 79299  			nextProtoLen = nextProtoLen + (m.nextProtos.$length) >> 0;
 79300  			extensionsLength = extensionsLength + (nextProtoLen) >> 0;
 79301  		}
 79302  		if (m.ocspStapling) {
 79303  			numExtensions = numExtensions + (1) >> 0;
 79304  		}
 79305  		if (m.ticketSupported) {
 79306  			numExtensions = numExtensions + (1) >> 0;
 79307  		}
 79308  		if (m.secureRenegotiationSupported) {
 79309  			extensionsLength = extensionsLength + ((1 + m.secureRenegotiation.$length >> 0)) >> 0;
 79310  			numExtensions = numExtensions + (1) >> 0;
 79311  		}
 79312  		alpnLen = m.alpnProtocol.length;
 79313  		if (alpnLen > 0) {
 79314  			if (alpnLen >= 256) {
 79315  				$panic(new $String("invalid ALPN protocol"));
 79316  			}
 79317  			extensionsLength = extensionsLength + ((3 + alpnLen >> 0)) >> 0;
 79318  			numExtensions = numExtensions + (1) >> 0;
 79319  		}
 79320  		sctLen = 0;
 79321  		if (m.scts.$length > 0) {
 79322  			_ref$1 = m.scts;
 79323  			_i$1 = 0;
 79324  			while (true) {
 79325  				if (!(_i$1 < _ref$1.$length)) { break; }
 79326  				sct = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]);
 79327  				sctLen = sctLen + ((sct.$length + 2 >> 0)) >> 0;
 79328  				_i$1++;
 79329  			}
 79330  			extensionsLength = extensionsLength + ((2 + sctLen >> 0)) >> 0;
 79331  			numExtensions = numExtensions + (1) >> 0;
 79332  		}
 79333  		if (numExtensions > 0) {
 79334  			extensionsLength = extensionsLength + (($imul(4, numExtensions))) >> 0;
 79335  			length = length + ((2 + extensionsLength >> 0)) >> 0;
 79336  		}
 79337  		x = $makeSlice(sliceType$7, (4 + length >> 0));
 79338  		(0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0] = 2);
 79339  		(1 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 1] = (((length >> 16 >> 0) << 24 >>> 24)));
 79340  		(2 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 2] = (((length >> 8 >> 0) << 24 >>> 24)));
 79341  		(3 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 3] = ((length << 24 >>> 24)));
 79342  		(4 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 4] = (((m.vers >>> 8 << 16 >>> 16) << 24 >>> 24)));
 79343  		(5 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 5] = ((m.vers << 24 >>> 24)));
 79344  		$copySlice($subslice(x, 6, 38), m.random);
 79345  		(38 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 38] = ((m.sessionId.$length << 24 >>> 24)));
 79346  		$copySlice($subslice(x, 39, (39 + m.sessionId.$length >> 0)), m.sessionId);
 79347  		z = $subslice(x, (39 + m.sessionId.$length >> 0));
 79348  		(0 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 0] = (((m.cipherSuite >>> 8 << 16 >>> 16) << 24 >>> 24)));
 79349  		(1 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 1] = ((m.cipherSuite << 24 >>> 24)));
 79350  		(2 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 2] = m.compressionMethod);
 79351  		z = $subslice(z, 3);
 79352  		if (numExtensions > 0) {
 79353  			(0 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 0] = (((extensionsLength >> 8 >> 0) << 24 >>> 24)));
 79354  			(1 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 1] = ((extensionsLength << 24 >>> 24)));
 79355  			z = $subslice(z, 2);
 79356  		}
 79357  		if (m.nextProtoNeg) {
 79358  			(0 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 0] = 51);
 79359  			(1 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 1] = 116);
 79360  			(2 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 2] = (((nextProtoLen >> 8 >> 0) << 24 >>> 24)));
 79361  			(3 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 3] = ((nextProtoLen << 24 >>> 24)));
 79362  			z = $subslice(z, 4);
 79363  			_ref$2 = m.nextProtos;
 79364  			_i$2 = 0;
 79365  			while (true) {
 79366  				if (!(_i$2 < _ref$2.$length)) { break; }
 79367  				v$1 = ((_i$2 < 0 || _i$2 >= _ref$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$2.$array[_ref$2.$offset + _i$2]);
 79368  				l = v$1.length;
 79369  				if (l > 255) {
 79370  					l = 255;
 79371  				}
 79372  				(0 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 0] = ((l << 24 >>> 24)));
 79373  				$copySlice($subslice(z, 1), (new sliceType$7($stringToBytes($substring(v$1, 0, l)))));
 79374  				z = $subslice(z, (1 + l >> 0));
 79375  				_i$2++;
 79376  			}
 79377  		}
 79378  		if (m.ocspStapling) {
 79379  			(0 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 0] = 0);
 79380  			(1 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 1] = 5);
 79381  			z = $subslice(z, 4);
 79382  		}
 79383  		if (m.ticketSupported) {
 79384  			(0 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 0] = 0);
 79385  			(1 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 1] = 35);
 79386  			z = $subslice(z, 4);
 79387  		}
 79388  		if (m.secureRenegotiationSupported) {
 79389  			(0 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 0] = 255);
 79390  			(1 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 1] = 1);
 79391  			(2 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 2] = 0);
 79392  			(3 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 3] = (((m.secureRenegotiation.$length + 1 >> 0) << 24 >>> 24)));
 79393  			(4 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 4] = ((m.secureRenegotiation.$length << 24 >>> 24)));
 79394  			z = $subslice(z, 5);
 79395  			$copySlice(z, m.secureRenegotiation);
 79396  			z = $subslice(z, m.secureRenegotiation.$length);
 79397  		}
 79398  		alpnLen$1 = m.alpnProtocol.length;
 79399  		if (alpnLen$1 > 0) {
 79400  			(0 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 0] = 0);
 79401  			(1 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 1] = 16);
 79402  			l$1 = 3 + alpnLen$1 >> 0;
 79403  			(2 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 2] = (((l$1 >> 8 >> 0) << 24 >>> 24)));
 79404  			(3 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 3] = ((l$1 << 24 >>> 24)));
 79405  			l$1 = l$1 - (2) >> 0;
 79406  			(4 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 4] = (((l$1 >> 8 >> 0) << 24 >>> 24)));
 79407  			(5 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 5] = ((l$1 << 24 >>> 24)));
 79408  			l$1 = l$1 - (1) >> 0;
 79409  			(6 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 6] = ((l$1 << 24 >>> 24)));
 79410  			$copySlice($subslice(z, 7), (new sliceType$7($stringToBytes(m.alpnProtocol))));
 79411  			z = $subslice(z, (7 + alpnLen$1 >> 0));
 79412  		}
 79413  		if (sctLen > 0) {
 79414  			(0 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 0] = 0);
 79415  			(1 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 1] = 18);
 79416  			l$2 = sctLen + 2 >> 0;
 79417  			(2 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 2] = (((l$2 >> 8 >> 0) << 24 >>> 24)));
 79418  			(3 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 3] = ((l$2 << 24 >>> 24)));
 79419  			(4 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 4] = (((sctLen >> 8 >> 0) << 24 >>> 24)));
 79420  			(5 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 5] = ((sctLen << 24 >>> 24)));
 79421  			z = $subslice(z, 6);
 79422  			_ref$3 = m.scts;
 79423  			_i$3 = 0;
 79424  			while (true) {
 79425  				if (!(_i$3 < _ref$3.$length)) { break; }
 79426  				sct$1 = ((_i$3 < 0 || _i$3 >= _ref$3.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$3.$array[_ref$3.$offset + _i$3]);
 79427  				(0 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 0] = (((sct$1.$length >> 8 >> 0) << 24 >>> 24)));
 79428  				(1 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 1] = ((sct$1.$length << 24 >>> 24)));
 79429  				$copySlice($subslice(z, 2), sct$1);
 79430  				z = $subslice(z, (sct$1.$length + 2 >> 0));
 79431  				_i$3++;
 79432  			}
 79433  		}
 79434  		m.raw = x;
 79435  		return x;
 79436  	};
 79437  	serverHelloMsg.prototype.marshal = function() { return this.$val.marshal(); };
 79438  	serverHelloMsg.ptr.prototype.unmarshal = function(data) {
 79439  		var _1, d, d$1, d$2, d$3, data, extension, extensionsLength, l, l$1, l$2, l$3, length, m, sctLen, sessionIdLen;
 79440  		m = this;
 79441  		if (data.$length < 42) {
 79442  			return false;
 79443  		}
 79444  		m.raw = data;
 79445  		m.vers = (((((4 >= data.$length ? ($throwRuntimeError("index out of range"), undefined) : data.$array[data.$offset + 4]) << 16 >>> 16)) << 8 << 16 >>> 16) | (((5 >= data.$length ? ($throwRuntimeError("index out of range"), undefined) : data.$array[data.$offset + 5]) << 16 >>> 16))) >>> 0;
 79446  		m.random = $subslice(data, 6, 38);
 79447  		sessionIdLen = (((38 >= data.$length ? ($throwRuntimeError("index out of range"), undefined) : data.$array[data.$offset + 38]) >> 0));
 79448  		if (sessionIdLen > 32 || data.$length < (39 + sessionIdLen >> 0)) {
 79449  			return false;
 79450  		}
 79451  		m.sessionId = $subslice(data, 39, (39 + sessionIdLen >> 0));
 79452  		data = $subslice(data, (39 + sessionIdLen >> 0));
 79453  		if (data.$length < 3) {
 79454  			return false;
 79455  		}
 79456  		m.cipherSuite = (((((0 >= data.$length ? ($throwRuntimeError("index out of range"), undefined) : data.$array[data.$offset + 0]) << 16 >>> 16)) << 8 << 16 >>> 16) | (((1 >= data.$length ? ($throwRuntimeError("index out of range"), undefined) : data.$array[data.$offset + 1]) << 16 >>> 16))) >>> 0;
 79457  		m.compressionMethod = (2 >= data.$length ? ($throwRuntimeError("index out of range"), undefined) : data.$array[data.$offset + 2]);
 79458  		data = $subslice(data, 3);
 79459  		m.nextProtoNeg = false;
 79460  		m.nextProtos = sliceType$1.nil;
 79461  		m.ocspStapling = false;
 79462  		m.scts = sliceType$9.nil;
 79463  		m.ticketSupported = false;
 79464  		m.alpnProtocol = "";
 79465  		if (data.$length === 0) {
 79466  			return true;
 79467  		}
 79468  		if (data.$length < 2) {
 79469  			return false;
 79470  		}
 79471  		extensionsLength = ((((0 >= data.$length ? ($throwRuntimeError("index out of range"), undefined) : data.$array[data.$offset + 0]) >> 0)) << 8 >> 0) | (((1 >= data.$length ? ($throwRuntimeError("index out of range"), undefined) : data.$array[data.$offset + 1]) >> 0));
 79472  		data = $subslice(data, 2);
 79473  		if (!((data.$length === extensionsLength))) {
 79474  			return false;
 79475  		}
 79476  		while (true) {
 79477  			if (!(!((data.$length === 0)))) { break; }
 79478  			if (data.$length < 4) {
 79479  				return false;
 79480  			}
 79481  			extension = (((((0 >= data.$length ? ($throwRuntimeError("index out of range"), undefined) : data.$array[data.$offset + 0]) << 16 >>> 16)) << 8 << 16 >>> 16) | (((1 >= data.$length ? ($throwRuntimeError("index out of range"), undefined) : data.$array[data.$offset + 1]) << 16 >>> 16))) >>> 0;
 79482  			length = ((((2 >= data.$length ? ($throwRuntimeError("index out of range"), undefined) : data.$array[data.$offset + 2]) >> 0)) << 8 >> 0) | (((3 >= data.$length ? ($throwRuntimeError("index out of range"), undefined) : data.$array[data.$offset + 3]) >> 0));
 79483  			data = $subslice(data, 4);
 79484  			if (data.$length < length) {
 79485  				return false;
 79486  			}
 79487  			_1 = extension;
 79488  			if (_1 === (13172)) {
 79489  				m.nextProtoNeg = true;
 79490  				d = $subslice(data, 0, length);
 79491  				while (true) {
 79492  					if (!(d.$length > 0)) { break; }
 79493  					l = (((0 >= d.$length ? ($throwRuntimeError("index out of range"), undefined) : d.$array[d.$offset + 0]) >> 0));
 79494  					d = $subslice(d, 1);
 79495  					if ((l === 0) || l > d.$length) {
 79496  						return false;
 79497  					}
 79498  					m.nextProtos = $append(m.nextProtos, ($bytesToString($subslice(d, 0, l))));
 79499  					d = $subslice(d, l);
 79500  				}
 79501  			} else if (_1 === (5)) {
 79502  				if (length > 0) {
 79503  					return false;
 79504  				}
 79505  				m.ocspStapling = true;
 79506  			} else if (_1 === (35)) {
 79507  				if (length > 0) {
 79508  					return false;
 79509  				}
 79510  				m.ticketSupported = true;
 79511  			} else if (_1 === (65281)) {
 79512  				if (length === 0) {
 79513  					return false;
 79514  				}
 79515  				d$1 = $subslice(data, 0, length);
 79516  				l$1 = (((0 >= d$1.$length ? ($throwRuntimeError("index out of range"), undefined) : d$1.$array[d$1.$offset + 0]) >> 0));
 79517  				d$1 = $subslice(d$1, 1);
 79518  				if (!((l$1 === d$1.$length))) {
 79519  					return false;
 79520  				}
 79521  				m.secureRenegotiation = d$1;
 79522  				m.secureRenegotiationSupported = true;
 79523  			} else if (_1 === (16)) {
 79524  				d$2 = $subslice(data, 0, length);
 79525  				if (d$2.$length < 3) {
 79526  					return false;
 79527  				}
 79528  				l$2 = ((((0 >= d$2.$length ? ($throwRuntimeError("index out of range"), undefined) : d$2.$array[d$2.$offset + 0]) >> 0)) << 8 >> 0) | (((1 >= d$2.$length ? ($throwRuntimeError("index out of range"), undefined) : d$2.$array[d$2.$offset + 1]) >> 0));
 79529  				if (!((l$2 === (d$2.$length - 2 >> 0)))) {
 79530  					return false;
 79531  				}
 79532  				d$2 = $subslice(d$2, 2);
 79533  				l$2 = (((0 >= d$2.$length ? ($throwRuntimeError("index out of range"), undefined) : d$2.$array[d$2.$offset + 0]) >> 0));
 79534  				if (!((l$2 === (d$2.$length - 1 >> 0)))) {
 79535  					return false;
 79536  				}
 79537  				d$2 = $subslice(d$2, 1);
 79538  				if (d$2.$length === 0) {
 79539  					return false;
 79540  				}
 79541  				m.alpnProtocol = ($bytesToString(d$2));
 79542  			} else if (_1 === (18)) {
 79543  				d$3 = $subslice(data, 0, length);
 79544  				if (d$3.$length < 2) {
 79545  					return false;
 79546  				}
 79547  				l$3 = ((((0 >= d$3.$length ? ($throwRuntimeError("index out of range"), undefined) : d$3.$array[d$3.$offset + 0]) >> 0)) << 8 >> 0) | (((1 >= d$3.$length ? ($throwRuntimeError("index out of range"), undefined) : d$3.$array[d$3.$offset + 1]) >> 0));
 79548  				d$3 = $subslice(d$3, 2);
 79549  				if (!((d$3.$length === l$3)) || (l$3 === 0)) {
 79550  					return false;
 79551  				}
 79552  				m.scts = $makeSlice(sliceType$9, 0, 3);
 79553  				while (true) {
 79554  					if (!(!((d$3.$length === 0)))) { break; }
 79555  					if (d$3.$length < 2) {
 79556  						return false;
 79557  					}
 79558  					sctLen = ((((0 >= d$3.$length ? ($throwRuntimeError("index out of range"), undefined) : d$3.$array[d$3.$offset + 0]) >> 0)) << 8 >> 0) | (((1 >= d$3.$length ? ($throwRuntimeError("index out of range"), undefined) : d$3.$array[d$3.$offset + 1]) >> 0));
 79559  					d$3 = $subslice(d$3, 2);
 79560  					if ((sctLen === 0) || d$3.$length < sctLen) {
 79561  						return false;
 79562  					}
 79563  					m.scts = $append(m.scts, $subslice(d$3, 0, sctLen));
 79564  					d$3 = $subslice(d$3, sctLen);
 79565  				}
 79566  			}
 79567  			data = $subslice(data, length);
 79568  		}
 79569  		return true;
 79570  	};
 79571  	serverHelloMsg.prototype.unmarshal = function(data) { return this.$val.unmarshal(data); };
 79572  	certificateMsg.ptr.prototype.marshal = function() {
 79573  		var _i, _i$1, _ref, _ref$1, certificateOctets, i, length, m, slice, slice$1, x, y;
 79574  		x = sliceType$7.nil;
 79575  		m = this;
 79576  		if (!(m.raw === sliceType$7.nil)) {
 79577  			x = m.raw;
 79578  			return x;
 79579  		}
 79580  		i = 0;
 79581  		_ref = m.certificates;
 79582  		_i = 0;
 79583  		while (true) {
 79584  			if (!(_i < _ref.$length)) { break; }
 79585  			slice = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
 79586  			i = i + (slice.$length) >> 0;
 79587  			_i++;
 79588  		}
 79589  		length = (3 + ($imul(3, m.certificates.$length)) >> 0) + i >> 0;
 79590  		x = $makeSlice(sliceType$7, (4 + length >> 0));
 79591  		(0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0] = 11);
 79592  		(1 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 1] = (((length >> 16 >> 0) << 24 >>> 24)));
 79593  		(2 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 2] = (((length >> 8 >> 0) << 24 >>> 24)));
 79594  		(3 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 3] = ((length << 24 >>> 24)));
 79595  		certificateOctets = length - 3 >> 0;
 79596  		(4 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 4] = (((certificateOctets >> 16 >> 0) << 24 >>> 24)));
 79597  		(5 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 5] = (((certificateOctets >> 8 >> 0) << 24 >>> 24)));
 79598  		(6 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 6] = ((certificateOctets << 24 >>> 24)));
 79599  		y = $subslice(x, 7);
 79600  		_ref$1 = m.certificates;
 79601  		_i$1 = 0;
 79602  		while (true) {
 79603  			if (!(_i$1 < _ref$1.$length)) { break; }
 79604  			slice$1 = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]);
 79605  			(0 >= y.$length ? ($throwRuntimeError("index out of range"), undefined) : y.$array[y.$offset + 0] = (((slice$1.$length >> 16 >> 0) << 24 >>> 24)));
 79606  			(1 >= y.$length ? ($throwRuntimeError("index out of range"), undefined) : y.$array[y.$offset + 1] = (((slice$1.$length >> 8 >> 0) << 24 >>> 24)));
 79607  			(2 >= y.$length ? ($throwRuntimeError("index out of range"), undefined) : y.$array[y.$offset + 2] = ((slice$1.$length << 24 >>> 24)));
 79608  			$copySlice($subslice(y, 3), slice$1);
 79609  			y = $subslice(y, (3 + slice$1.$length >> 0));
 79610  			_i$1++;
 79611  		}
 79612  		m.raw = x;
 79613  		return x;
 79614  	};
 79615  	certificateMsg.prototype.marshal = function() { return this.$val.marshal(); };
 79616  	certificateMsg.ptr.prototype.unmarshal = function(data) {
 79617  		var certLen, certLen$1, certsLen, d, data, i, m, numCerts, x;
 79618  		m = this;
 79619  		if (data.$length < 7) {
 79620  			return false;
 79621  		}
 79622  		m.raw = data;
 79623  		certsLen = (((((((4 >= data.$length ? ($throwRuntimeError("index out of range"), undefined) : data.$array[data.$offset + 4]) >>> 0)) << 16 >>> 0) | ((((5 >= data.$length ? ($throwRuntimeError("index out of range"), undefined) : data.$array[data.$offset + 5]) >>> 0)) << 8 >>> 0)) >>> 0) | (((6 >= data.$length ? ($throwRuntimeError("index out of range"), undefined) : data.$array[data.$offset + 6]) >>> 0))) >>> 0;
 79624  		if (!((((data.$length >>> 0)) === (certsLen + 7 >>> 0)))) {
 79625  			return false;
 79626  		}
 79627  		numCerts = 0;
 79628  		d = $subslice(data, 7);
 79629  		while (true) {
 79630  			if (!(certsLen > 0)) { break; }
 79631  			if (d.$length < 4) {
 79632  				return false;
 79633  			}
 79634  			certLen = (((((((0 >= d.$length ? ($throwRuntimeError("index out of range"), undefined) : d.$array[d.$offset + 0]) >>> 0)) << 16 >>> 0) | ((((1 >= d.$length ? ($throwRuntimeError("index out of range"), undefined) : d.$array[d.$offset + 1]) >>> 0)) << 8 >>> 0)) >>> 0) | (((2 >= d.$length ? ($throwRuntimeError("index out of range"), undefined) : d.$array[d.$offset + 2]) >>> 0))) >>> 0;
 79635  			if (((d.$length >>> 0)) < (3 + certLen >>> 0)) {
 79636  				return false;
 79637  			}
 79638  			d = $subslice(d, (3 + certLen >>> 0));
 79639  			certsLen = certsLen - ((3 + certLen >>> 0)) >>> 0;
 79640  			numCerts = numCerts + (1) >> 0;
 79641  		}
 79642  		m.certificates = $makeSlice(sliceType$9, numCerts);
 79643  		d = $subslice(data, 7);
 79644  		i = 0;
 79645  		while (true) {
 79646  			if (!(i < numCerts)) { break; }
 79647  			certLen$1 = (((((((0 >= d.$length ? ($throwRuntimeError("index out of range"), undefined) : d.$array[d.$offset + 0]) >>> 0)) << 16 >>> 0) | ((((1 >= d.$length ? ($throwRuntimeError("index out of range"), undefined) : d.$array[d.$offset + 1]) >>> 0)) << 8 >>> 0)) >>> 0) | (((2 >= d.$length ? ($throwRuntimeError("index out of range"), undefined) : d.$array[d.$offset + 2]) >>> 0))) >>> 0;
 79648  			(x = m.certificates, ((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i] = $subslice(d, 3, (3 + certLen$1 >>> 0))));
 79649  			d = $subslice(d, (3 + certLen$1 >>> 0));
 79650  			i = i + (1) >> 0;
 79651  		}
 79652  		return true;
 79653  	};
 79654  	certificateMsg.prototype.unmarshal = function(data) { return this.$val.unmarshal(data); };
 79655  	serverKeyExchangeMsg.ptr.prototype.marshal = function() {
 79656  		var length, m, x;
 79657  		m = this;
 79658  		if (!(m.raw === sliceType$7.nil)) {
 79659  			return m.raw;
 79660  		}
 79661  		length = m.key.$length;
 79662  		x = $makeSlice(sliceType$7, (length + 4 >> 0));
 79663  		(0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0] = 12);
 79664  		(1 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 1] = (((length >> 16 >> 0) << 24 >>> 24)));
 79665  		(2 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 2] = (((length >> 8 >> 0) << 24 >>> 24)));
 79666  		(3 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 3] = ((length << 24 >>> 24)));
 79667  		$copySlice($subslice(x, 4), m.key);
 79668  		m.raw = x;
 79669  		return x;
 79670  	};
 79671  	serverKeyExchangeMsg.prototype.marshal = function() { return this.$val.marshal(); };
 79672  	serverKeyExchangeMsg.ptr.prototype.unmarshal = function(data) {
 79673  		var data, m;
 79674  		m = this;
 79675  		m.raw = data;
 79676  		if (data.$length < 4) {
 79677  			return false;
 79678  		}
 79679  		m.key = $subslice(data, 4);
 79680  		return true;
 79681  	};
 79682  	serverKeyExchangeMsg.prototype.unmarshal = function(data) { return this.$val.unmarshal(data); };
 79683  	certificateStatusMsg.ptr.prototype.marshal = function() {
 79684  		var l, m, x;
 79685  		m = this;
 79686  		if (!(m.raw === sliceType$7.nil)) {
 79687  			return m.raw;
 79688  		}
 79689  		x = sliceType$7.nil;
 79690  		if (m.statusType === 1) {
 79691  			x = $makeSlice(sliceType$7, (8 + m.response.$length >> 0));
 79692  			(0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0] = 22);
 79693  			l = m.response.$length + 4 >> 0;
 79694  			(1 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 1] = (((l >> 16 >> 0) << 24 >>> 24)));
 79695  			(2 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 2] = (((l >> 8 >> 0) << 24 >>> 24)));
 79696  			(3 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 3] = ((l << 24 >>> 24)));
 79697  			(4 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 4] = 1);
 79698  			l = l - (4) >> 0;
 79699  			(5 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 5] = (((l >> 16 >> 0) << 24 >>> 24)));
 79700  			(6 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 6] = (((l >> 8 >> 0) << 24 >>> 24)));
 79701  			(7 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 7] = ((l << 24 >>> 24)));
 79702  			$copySlice($subslice(x, 8), m.response);
 79703  		} else {
 79704  			x = new sliceType$7([22, 0, 0, 1, m.statusType]);
 79705  		}
 79706  		m.raw = x;
 79707  		return x;
 79708  	};
 79709  	certificateStatusMsg.prototype.marshal = function() { return this.$val.marshal(); };
 79710  	certificateStatusMsg.ptr.prototype.unmarshal = function(data) {
 79711  		var data, m, respLen;
 79712  		m = this;
 79713  		m.raw = data;
 79714  		if (data.$length < 5) {
 79715  			return false;
 79716  		}
 79717  		m.statusType = (4 >= data.$length ? ($throwRuntimeError("index out of range"), undefined) : data.$array[data.$offset + 4]);
 79718  		m.response = sliceType$7.nil;
 79719  		if (m.statusType === 1) {
 79720  			if (data.$length < 8) {
 79721  				return false;
 79722  			}
 79723  			respLen = (((((((5 >= data.$length ? ($throwRuntimeError("index out of range"), undefined) : data.$array[data.$offset + 5]) >>> 0)) << 16 >>> 0) | ((((6 >= data.$length ? ($throwRuntimeError("index out of range"), undefined) : data.$array[data.$offset + 6]) >>> 0)) << 8 >>> 0)) >>> 0) | (((7 >= data.$length ? ($throwRuntimeError("index out of range"), undefined) : data.$array[data.$offset + 7]) >>> 0))) >>> 0;
 79724  			if (!((((data.$length >>> 0)) === (8 + respLen >>> 0)))) {
 79725  				return false;
 79726  			}
 79727  			m.response = $subslice(data, 8);
 79728  		}
 79729  		return true;
 79730  	};
 79731  	certificateStatusMsg.prototype.unmarshal = function(data) { return this.$val.unmarshal(data); };
 79732  	serverHelloDoneMsg.ptr.prototype.marshal = function() {
 79733  		var m, x;
 79734  		m = this;
 79735  		x = $makeSlice(sliceType$7, 4);
 79736  		(0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0] = 14);
 79737  		return x;
 79738  	};
 79739  	serverHelloDoneMsg.prototype.marshal = function() { return this.$val.marshal(); };
 79740  	serverHelloDoneMsg.ptr.prototype.unmarshal = function(data) {
 79741  		var data, m;
 79742  		m = this;
 79743  		return data.$length === 4;
 79744  	};
 79745  	serverHelloDoneMsg.prototype.unmarshal = function(data) { return this.$val.unmarshal(data); };
 79746  	clientKeyExchangeMsg.ptr.prototype.marshal = function() {
 79747  		var length, m, x;
 79748  		m = this;
 79749  		if (!(m.raw === sliceType$7.nil)) {
 79750  			return m.raw;
 79751  		}
 79752  		length = m.ciphertext.$length;
 79753  		x = $makeSlice(sliceType$7, (length + 4 >> 0));
 79754  		(0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0] = 16);
 79755  		(1 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 1] = (((length >> 16 >> 0) << 24 >>> 24)));
 79756  		(2 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 2] = (((length >> 8 >> 0) << 24 >>> 24)));
 79757  		(3 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 3] = ((length << 24 >>> 24)));
 79758  		$copySlice($subslice(x, 4), m.ciphertext);
 79759  		m.raw = x;
 79760  		return x;
 79761  	};
 79762  	clientKeyExchangeMsg.prototype.marshal = function() { return this.$val.marshal(); };
 79763  	clientKeyExchangeMsg.ptr.prototype.unmarshal = function(data) {
 79764  		var data, l, m;
 79765  		m = this;
 79766  		m.raw = data;
 79767  		if (data.$length < 4) {
 79768  			return false;
 79769  		}
 79770  		l = (((((1 >= data.$length ? ($throwRuntimeError("index out of range"), undefined) : data.$array[data.$offset + 1]) >> 0)) << 16 >> 0) | ((((2 >= data.$length ? ($throwRuntimeError("index out of range"), undefined) : data.$array[data.$offset + 2]) >> 0)) << 8 >> 0)) | (((3 >= data.$length ? ($throwRuntimeError("index out of range"), undefined) : data.$array[data.$offset + 3]) >> 0));
 79771  		if (!((l === (data.$length - 4 >> 0)))) {
 79772  			return false;
 79773  		}
 79774  		m.ciphertext = $subslice(data, 4);
 79775  		return true;
 79776  	};
 79777  	clientKeyExchangeMsg.prototype.unmarshal = function(data) { return this.$val.unmarshal(data); };
 79778  	finishedMsg.ptr.prototype.marshal = function() {
 79779  		var m, x;
 79780  		x = sliceType$7.nil;
 79781  		m = this;
 79782  		if (!(m.raw === sliceType$7.nil)) {
 79783  			x = m.raw;
 79784  			return x;
 79785  		}
 79786  		x = $makeSlice(sliceType$7, (4 + m.verifyData.$length >> 0));
 79787  		(0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0] = 20);
 79788  		(3 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 3] = ((m.verifyData.$length << 24 >>> 24)));
 79789  		$copySlice($subslice(x, 4), m.verifyData);
 79790  		m.raw = x;
 79791  		return x;
 79792  	};
 79793  	finishedMsg.prototype.marshal = function() { return this.$val.marshal(); };
 79794  	finishedMsg.ptr.prototype.unmarshal = function(data) {
 79795  		var data, m;
 79796  		m = this;
 79797  		m.raw = data;
 79798  		if (data.$length < 4) {
 79799  			return false;
 79800  		}
 79801  		m.verifyData = $subslice(data, 4);
 79802  		return true;
 79803  	};
 79804  	finishedMsg.prototype.unmarshal = function(data) { return this.$val.unmarshal(data); };
 79805  	nextProtoMsg.ptr.prototype.marshal = function() {
 79806  		var _r, l, length, m, padding, x, y;
 79807  		m = this;
 79808  		if (!(m.raw === sliceType$7.nil)) {
 79809  			return m.raw;
 79810  		}
 79811  		l = m.proto.length;
 79812  		if (l > 255) {
 79813  			l = 255;
 79814  		}
 79815  		padding = 32 - (_r = ((l + 2 >> 0)) % 32, _r === _r ? _r : $throwRuntimeError("integer divide by zero")) >> 0;
 79816  		length = (l + padding >> 0) + 2 >> 0;
 79817  		x = $makeSlice(sliceType$7, (length + 4 >> 0));
 79818  		(0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0] = 67);
 79819  		(1 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 1] = (((length >> 16 >> 0) << 24 >>> 24)));
 79820  		(2 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 2] = (((length >> 8 >> 0) << 24 >>> 24)));
 79821  		(3 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 3] = ((length << 24 >>> 24)));
 79822  		y = $subslice(x, 4);
 79823  		(0 >= y.$length ? ($throwRuntimeError("index out of range"), undefined) : y.$array[y.$offset + 0] = ((l << 24 >>> 24)));
 79824  		$copySlice($subslice(y, 1), (new sliceType$7($stringToBytes($substring(m.proto, 0, l)))));
 79825  		y = $subslice(y, (1 + l >> 0));
 79826  		(0 >= y.$length ? ($throwRuntimeError("index out of range"), undefined) : y.$array[y.$offset + 0] = ((padding << 24 >>> 24)));
 79827  		m.raw = x;
 79828  		return x;
 79829  	};
 79830  	nextProtoMsg.prototype.marshal = function() { return this.$val.marshal(); };
 79831  	nextProtoMsg.ptr.prototype.unmarshal = function(data) {
 79832  		var data, m, paddingLen, protoLen;
 79833  		m = this;
 79834  		m.raw = data;
 79835  		if (data.$length < 5) {
 79836  			return false;
 79837  		}
 79838  		data = $subslice(data, 4);
 79839  		protoLen = (((0 >= data.$length ? ($throwRuntimeError("index out of range"), undefined) : data.$array[data.$offset + 0]) >> 0));
 79840  		data = $subslice(data, 1);
 79841  		if (data.$length < protoLen) {
 79842  			return false;
 79843  		}
 79844  		m.proto = ($bytesToString($subslice(data, 0, protoLen)));
 79845  		data = $subslice(data, protoLen);
 79846  		if (data.$length < 1) {
 79847  			return false;
 79848  		}
 79849  		paddingLen = (((0 >= data.$length ? ($throwRuntimeError("index out of range"), undefined) : data.$array[data.$offset + 0]) >> 0));
 79850  		data = $subslice(data, 1);
 79851  		if (!((data.$length === paddingLen))) {
 79852  			return false;
 79853  		}
 79854  		return true;
 79855  	};
 79856  	nextProtoMsg.prototype.unmarshal = function(data) { return this.$val.unmarshal(data); };
 79857  	certificateRequestMsg.ptr.prototype.marshal = function() {
 79858  		var _i, _i$1, _i$2, _ref, _ref$1, _ref$2, ca, ca$1, casLength, length, m, n, sigAlgo, x, y;
 79859  		x = sliceType$7.nil;
 79860  		m = this;
 79861  		if (!(m.raw === sliceType$7.nil)) {
 79862  			x = m.raw;
 79863  			return x;
 79864  		}
 79865  		length = (1 + m.certificateTypes.$length >> 0) + 2 >> 0;
 79866  		casLength = 0;
 79867  		_ref = m.certificateAuthorities;
 79868  		_i = 0;
 79869  		while (true) {
 79870  			if (!(_i < _ref.$length)) { break; }
 79871  			ca = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
 79872  			casLength = casLength + ((2 + ca.$length >> 0)) >> 0;
 79873  			_i++;
 79874  		}
 79875  		length = length + (casLength) >> 0;
 79876  		if (m.hasSignatureAndHash) {
 79877  			length = length + ((2 + ($imul(2, m.supportedSignatureAlgorithms.$length)) >> 0)) >> 0;
 79878  		}
 79879  		x = $makeSlice(sliceType$7, (4 + length >> 0));
 79880  		(0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0] = 13);
 79881  		(1 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 1] = (((length >> 16 >> 0) << 24 >>> 24)));
 79882  		(2 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 2] = (((length >> 8 >> 0) << 24 >>> 24)));
 79883  		(3 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 3] = ((length << 24 >>> 24)));
 79884  		(4 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 4] = ((m.certificateTypes.$length << 24 >>> 24)));
 79885  		$copySlice($subslice(x, 5), m.certificateTypes);
 79886  		y = $subslice(x, (5 + m.certificateTypes.$length >> 0));
 79887  		if (m.hasSignatureAndHash) {
 79888  			n = $imul(m.supportedSignatureAlgorithms.$length, 2);
 79889  			(0 >= y.$length ? ($throwRuntimeError("index out of range"), undefined) : y.$array[y.$offset + 0] = (((n >> 8 >> 0) << 24 >>> 24)));
 79890  			(1 >= y.$length ? ($throwRuntimeError("index out of range"), undefined) : y.$array[y.$offset + 1] = ((n << 24 >>> 24)));
 79891  			y = $subslice(y, 2);
 79892  			_ref$1 = m.supportedSignatureAlgorithms;
 79893  			_i$1 = 0;
 79894  			while (true) {
 79895  				if (!(_i$1 < _ref$1.$length)) { break; }
 79896  				sigAlgo = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]);
 79897  				(0 >= y.$length ? ($throwRuntimeError("index out of range"), undefined) : y.$array[y.$offset + 0] = (((sigAlgo >>> 8 << 16 >>> 16) << 24 >>> 24)));
 79898  				(1 >= y.$length ? ($throwRuntimeError("index out of range"), undefined) : y.$array[y.$offset + 1] = ((sigAlgo << 24 >>> 24)));
 79899  				y = $subslice(y, 2);
 79900  				_i$1++;
 79901  			}
 79902  		}
 79903  		(0 >= y.$length ? ($throwRuntimeError("index out of range"), undefined) : y.$array[y.$offset + 0] = (((casLength >> 8 >> 0) << 24 >>> 24)));
 79904  		(1 >= y.$length ? ($throwRuntimeError("index out of range"), undefined) : y.$array[y.$offset + 1] = ((casLength << 24 >>> 24)));
 79905  		y = $subslice(y, 2);
 79906  		_ref$2 = m.certificateAuthorities;
 79907  		_i$2 = 0;
 79908  		while (true) {
 79909  			if (!(_i$2 < _ref$2.$length)) { break; }
 79910  			ca$1 = ((_i$2 < 0 || _i$2 >= _ref$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$2.$array[_ref$2.$offset + _i$2]);
 79911  			(0 >= y.$length ? ($throwRuntimeError("index out of range"), undefined) : y.$array[y.$offset + 0] = (((ca$1.$length >> 8 >> 0) << 24 >>> 24)));
 79912  			(1 >= y.$length ? ($throwRuntimeError("index out of range"), undefined) : y.$array[y.$offset + 1] = ((ca$1.$length << 24 >>> 24)));
 79913  			y = $subslice(y, 2);
 79914  			$copySlice(y, ca$1);
 79915  			y = $subslice(y, ca$1.$length);
 79916  			_i$2++;
 79917  		}
 79918  		m.raw = x;
 79919  		return x;
 79920  	};
 79921  	certificateRequestMsg.prototype.marshal = function() { return this.$val.marshal(); };
 79922  	certificateRequestMsg.ptr.prototype.unmarshal = function(data) {
 79923  		var _i, _q, _ref, caLen, cas, casLength, data, i, length, m, numCertTypes, numSigAlgos, sigAndHashLen, x;
 79924  		m = this;
 79925  		m.raw = data;
 79926  		if (data.$length < 5) {
 79927  			return false;
 79928  		}
 79929  		length = (((((((1 >= data.$length ? ($throwRuntimeError("index out of range"), undefined) : data.$array[data.$offset + 1]) >>> 0)) << 16 >>> 0) | ((((2 >= data.$length ? ($throwRuntimeError("index out of range"), undefined) : data.$array[data.$offset + 2]) >>> 0)) << 8 >>> 0)) >>> 0) | (((3 >= data.$length ? ($throwRuntimeError("index out of range"), undefined) : data.$array[data.$offset + 3]) >>> 0))) >>> 0;
 79930  		if (!(((((data.$length >>> 0)) - 4 >>> 0) === length))) {
 79931  			return false;
 79932  		}
 79933  		numCertTypes = (((4 >= data.$length ? ($throwRuntimeError("index out of range"), undefined) : data.$array[data.$offset + 4]) >> 0));
 79934  		data = $subslice(data, 5);
 79935  		if ((numCertTypes === 0) || data.$length <= numCertTypes) {
 79936  			return false;
 79937  		}
 79938  		m.certificateTypes = $makeSlice(sliceType$7, numCertTypes);
 79939  		if (!(($copySlice(m.certificateTypes, data) === numCertTypes))) {
 79940  			return false;
 79941  		}
 79942  		data = $subslice(data, numCertTypes);
 79943  		if (m.hasSignatureAndHash) {
 79944  			if (data.$length < 2) {
 79945  				return false;
 79946  			}
 79947  			sigAndHashLen = (((((0 >= data.$length ? ($throwRuntimeError("index out of range"), undefined) : data.$array[data.$offset + 0]) << 16 >>> 16)) << 8 << 16 >>> 16) | (((1 >= data.$length ? ($throwRuntimeError("index out of range"), undefined) : data.$array[data.$offset + 1]) << 16 >>> 16))) >>> 0;
 79948  			data = $subslice(data, 2);
 79949  			if (!((((sigAndHashLen & 1) >>> 0) === 0))) {
 79950  				return false;
 79951  			}
 79952  			if (data.$length < ((sigAndHashLen >> 0))) {
 79953  				return false;
 79954  			}
 79955  			numSigAlgos = (_q = sigAndHashLen / 2, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >>> 0 : $throwRuntimeError("integer divide by zero"));
 79956  			m.supportedSignatureAlgorithms = $makeSlice(sliceType$6, numSigAlgos);
 79957  			_ref = m.supportedSignatureAlgorithms;
 79958  			_i = 0;
 79959  			while (true) {
 79960  				if (!(_i < _ref.$length)) { break; }
 79961  				i = _i;
 79962  				(x = m.supportedSignatureAlgorithms, ((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i] = ((((((0 >= data.$length ? ($throwRuntimeError("index out of range"), undefined) : data.$array[data.$offset + 0]) << 16 >>> 16)) << 8 << 16 >>> 16) | (((1 >= data.$length ? ($throwRuntimeError("index out of range"), undefined) : data.$array[data.$offset + 1]) << 16 >>> 16))) >>> 0)));
 79963  				data = $subslice(data, 2);
 79964  				_i++;
 79965  			}
 79966  		}
 79967  		if (data.$length < 2) {
 79968  			return false;
 79969  		}
 79970  		casLength = (((((0 >= data.$length ? ($throwRuntimeError("index out of range"), undefined) : data.$array[data.$offset + 0]) << 16 >>> 16)) << 8 << 16 >>> 16) | (((1 >= data.$length ? ($throwRuntimeError("index out of range"), undefined) : data.$array[data.$offset + 1]) << 16 >>> 16))) >>> 0;
 79971  		data = $subslice(data, 2);
 79972  		if (data.$length < ((casLength >> 0))) {
 79973  			return false;
 79974  		}
 79975  		cas = $makeSlice(sliceType$7, casLength);
 79976  		$copySlice(cas, data);
 79977  		data = $subslice(data, casLength);
 79978  		m.certificateAuthorities = sliceType$9.nil;
 79979  		while (true) {
 79980  			if (!(cas.$length > 0)) { break; }
 79981  			if (cas.$length < 2) {
 79982  				return false;
 79983  			}
 79984  			caLen = (((((0 >= cas.$length ? ($throwRuntimeError("index out of range"), undefined) : cas.$array[cas.$offset + 0]) << 16 >>> 16)) << 8 << 16 >>> 16) | (((1 >= cas.$length ? ($throwRuntimeError("index out of range"), undefined) : cas.$array[cas.$offset + 1]) << 16 >>> 16))) >>> 0;
 79985  			cas = $subslice(cas, 2);
 79986  			if (cas.$length < ((caLen >> 0))) {
 79987  				return false;
 79988  			}
 79989  			m.certificateAuthorities = $append(m.certificateAuthorities, $subslice(cas, 0, caLen));
 79990  			cas = $subslice(cas, caLen);
 79991  		}
 79992  		return data.$length === 0;
 79993  	};
 79994  	certificateRequestMsg.prototype.unmarshal = function(data) { return this.$val.unmarshal(data); };
 79995  	certificateVerifyMsg.ptr.prototype.marshal = function() {
 79996  		var length, m, siglength, x, y;
 79997  		x = sliceType$7.nil;
 79998  		m = this;
 79999  		if (!(m.raw === sliceType$7.nil)) {
 80000  			x = m.raw;
 80001  			return x;
 80002  		}
 80003  		siglength = m.signature.$length;
 80004  		length = 2 + siglength >> 0;
 80005  		if (m.hasSignatureAndHash) {
 80006  			length = length + (2) >> 0;
 80007  		}
 80008  		x = $makeSlice(sliceType$7, (4 + length >> 0));
 80009  		(0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0] = 15);
 80010  		(1 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 1] = (((length >> 16 >> 0) << 24 >>> 24)));
 80011  		(2 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 2] = (((length >> 8 >> 0) << 24 >>> 24)));
 80012  		(3 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 3] = ((length << 24 >>> 24)));
 80013  		y = $subslice(x, 4);
 80014  		if (m.hasSignatureAndHash) {
 80015  			(0 >= y.$length ? ($throwRuntimeError("index out of range"), undefined) : y.$array[y.$offset + 0] = (((m.signatureAlgorithm >>> 8 << 16 >>> 16) << 24 >>> 24)));
 80016  			(1 >= y.$length ? ($throwRuntimeError("index out of range"), undefined) : y.$array[y.$offset + 1] = ((m.signatureAlgorithm << 24 >>> 24)));
 80017  			y = $subslice(y, 2);
 80018  		}
 80019  		(0 >= y.$length ? ($throwRuntimeError("index out of range"), undefined) : y.$array[y.$offset + 0] = (((siglength >> 8 >> 0) << 24 >>> 24)));
 80020  		(1 >= y.$length ? ($throwRuntimeError("index out of range"), undefined) : y.$array[y.$offset + 1] = ((siglength << 24 >>> 24)));
 80021  		$copySlice($subslice(y, 2), m.signature);
 80022  		m.raw = x;
 80023  		return x;
 80024  	};
 80025  	certificateVerifyMsg.prototype.marshal = function() { return this.$val.marshal(); };
 80026  	certificateVerifyMsg.ptr.prototype.unmarshal = function(data) {
 80027  		var data, length, m, siglength;
 80028  		m = this;
 80029  		m.raw = data;
 80030  		if (data.$length < 6) {
 80031  			return false;
 80032  		}
 80033  		length = (((((((1 >= data.$length ? ($throwRuntimeError("index out of range"), undefined) : data.$array[data.$offset + 1]) >>> 0)) << 16 >>> 0) | ((((2 >= data.$length ? ($throwRuntimeError("index out of range"), undefined) : data.$array[data.$offset + 2]) >>> 0)) << 8 >>> 0)) >>> 0) | (((3 >= data.$length ? ($throwRuntimeError("index out of range"), undefined) : data.$array[data.$offset + 3]) >>> 0))) >>> 0;
 80034  		if (!(((((data.$length >>> 0)) - 4 >>> 0) === length))) {
 80035  			return false;
 80036  		}
 80037  		data = $subslice(data, 4);
 80038  		if (m.hasSignatureAndHash) {
 80039  			m.signatureAlgorithm = (((((0 >= data.$length ? ($throwRuntimeError("index out of range"), undefined) : data.$array[data.$offset + 0]) << 16 >>> 16)) << 8 << 16 >>> 16) | (((1 >= data.$length ? ($throwRuntimeError("index out of range"), undefined) : data.$array[data.$offset + 1]) << 16 >>> 16))) >>> 0;
 80040  			data = $subslice(data, 2);
 80041  		}
 80042  		if (data.$length < 2) {
 80043  			return false;
 80044  		}
 80045  		siglength = ((((0 >= data.$length ? ($throwRuntimeError("index out of range"), undefined) : data.$array[data.$offset + 0]) >> 0)) << 8 >> 0) + (((1 >= data.$length ? ($throwRuntimeError("index out of range"), undefined) : data.$array[data.$offset + 1]) >> 0)) >> 0;
 80046  		data = $subslice(data, 2);
 80047  		if (!((data.$length === siglength))) {
 80048  			return false;
 80049  		}
 80050  		m.signature = data;
 80051  		return true;
 80052  	};
 80053  	certificateVerifyMsg.prototype.unmarshal = function(data) { return this.$val.unmarshal(data); };
 80054  	newSessionTicketMsg.ptr.prototype.marshal = function() {
 80055  		var length, m, ticketLen, x;
 80056  		x = sliceType$7.nil;
 80057  		m = this;
 80058  		if (!(m.raw === sliceType$7.nil)) {
 80059  			x = m.raw;
 80060  			return x;
 80061  		}
 80062  		ticketLen = m.ticket.$length;
 80063  		length = 6 + ticketLen >> 0;
 80064  		x = $makeSlice(sliceType$7, (4 + length >> 0));
 80065  		(0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0] = 4);
 80066  		(1 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 1] = (((length >> 16 >> 0) << 24 >>> 24)));
 80067  		(2 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 2] = (((length >> 8 >> 0) << 24 >>> 24)));
 80068  		(3 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 3] = ((length << 24 >>> 24)));
 80069  		(8 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 8] = (((ticketLen >> 8 >> 0) << 24 >>> 24)));
 80070  		(9 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 9] = ((ticketLen << 24 >>> 24)));
 80071  		$copySlice($subslice(x, 10), m.ticket);
 80072  		m.raw = x;
 80073  		return x;
 80074  	};
 80075  	newSessionTicketMsg.prototype.marshal = function() { return this.$val.marshal(); };
 80076  	newSessionTicketMsg.ptr.prototype.unmarshal = function(data) {
 80077  		var data, length, m, ticketLen;
 80078  		m = this;
 80079  		m.raw = data;
 80080  		if (data.$length < 10) {
 80081  			return false;
 80082  		}
 80083  		length = (((((((1 >= data.$length ? ($throwRuntimeError("index out of range"), undefined) : data.$array[data.$offset + 1]) >>> 0)) << 16 >>> 0) | ((((2 >= data.$length ? ($throwRuntimeError("index out of range"), undefined) : data.$array[data.$offset + 2]) >>> 0)) << 8 >>> 0)) >>> 0) | (((3 >= data.$length ? ($throwRuntimeError("index out of range"), undefined) : data.$array[data.$offset + 3]) >>> 0))) >>> 0;
 80084  		if (!(((((data.$length >>> 0)) - 4 >>> 0) === length))) {
 80085  			return false;
 80086  		}
 80087  		ticketLen = ((((8 >= data.$length ? ($throwRuntimeError("index out of range"), undefined) : data.$array[data.$offset + 8]) >> 0)) << 8 >> 0) + (((9 >= data.$length ? ($throwRuntimeError("index out of range"), undefined) : data.$array[data.$offset + 9]) >> 0)) >> 0;
 80088  		if (!(((data.$length - 10 >> 0) === ticketLen))) {
 80089  			return false;
 80090  		}
 80091  		m.ticket = $subslice(data, 10);
 80092  		return true;
 80093  	};
 80094  	newSessionTicketMsg.prototype.unmarshal = function(data) { return this.$val.unmarshal(data); };
 80095  	helloRequestMsg.ptr.prototype.marshal = function() {
 80096  		return new sliceType$7([0, 0, 0, 0]);
 80097  	};
 80098  	helloRequestMsg.prototype.marshal = function() { return this.$val.marshal(); };
 80099  	helloRequestMsg.ptr.prototype.unmarshal = function(data) {
 80100  		var data;
 80101  		return data.$length === 4;
 80102  	};
 80103  	helloRequestMsg.prototype.unmarshal = function(data) { return this.$val.unmarshal(data); };
 80104  	Conn.ptr.prototype.serverHandshake = function() {
 80105  		var _r, _r$1, _r$10, _r$11, _r$12, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _tuple, _tuple$1, _tuple$2, c, err, err$1, err$10, err$11, err$12, err$2, err$3, err$4, err$5, err$6, err$7, err$8, err$9, hs, isResume, $s, $r;
 80106  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _r$10 = $f._r$10; _r$11 = $f._r$11; _r$12 = $f._r$12; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _r$8 = $f._r$8; _r$9 = $f._r$9; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; c = $f.c; err = $f.err; err$1 = $f.err$1; err$10 = $f.err$10; err$11 = $f.err$11; err$12 = $f.err$12; err$2 = $f.err$2; err$3 = $f.err$3; err$4 = $f.err$4; err$5 = $f.err$5; err$6 = $f.err$6; err$7 = $f.err$7; err$8 = $f.err$8; err$9 = $f.err$9; hs = $f.hs; isResume = $f.isResume; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 80107  		c = [c];
 80108  		c[0] = this;
 80109  		$r = c[0].config.serverInitOnce.Do((function(c) { return function $b() {
 80110  			var $s, $r;
 80111  			/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 80112  			$r = c[0].config.serverInit(ptrType$3.nil); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 80113  			$s = -1; return;
 80114  			/* */ } return; } if ($f === undefined) { $f = { $blk: $b }; } $f.$s = $s; $f.$r = $r; return $f;
 80115  		}; })(c)); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 80116  		hs = new serverHandshakeState.ptr(c[0], ptrType$14.nil, ptrType$16.nil, ptrType$1.nil, false, false, false, false, ptrType$30.nil, new finishedHash.ptr($ifaceNil, $ifaceNil, $ifaceNil, $ifaceNil, sliceType$7.nil, 0, $throwNilPointerError), sliceType$7.nil, sliceType$9.nil, ptrType$4.nil, ptrType$31.nil);
 80117  		_r = hs.readClientHello(); /* */ $s = 2; case 2: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 80118  		_tuple = _r;
 80119  		isResume = _tuple[0];
 80120  		err = _tuple[1];
 80121  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 80122  			$s = -1; return err;
 80123  		}
 80124  		c[0].buffering = true;
 80125  		/* */ if (isResume) { $s = 3; continue; }
 80126  		/* */ $s = 4; continue;
 80127  		/* if (isResume) { */ case 3:
 80128  			_r$1 = hs.doResumeHandshake(); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 80129  			err$1 = _r$1;
 80130  			if (!($interfaceIsEqual(err$1, $ifaceNil))) {
 80131  				$s = -1; return err$1;
 80132  			}
 80133  			_r$2 = hs.establishKeys(); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 80134  			err$2 = _r$2;
 80135  			if (!($interfaceIsEqual(err$2, $ifaceNil))) {
 80136  				$s = -1; return err$2;
 80137  			}
 80138  			/* */ if (hs.hello.ticketSupported) { $s = 8; continue; }
 80139  			/* */ $s = 9; continue;
 80140  			/* if (hs.hello.ticketSupported) { */ case 8:
 80141  				_r$3 = hs.sendSessionTicket(); /* */ $s = 10; case 10: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 80142  				err$3 = _r$3;
 80143  				if (!($interfaceIsEqual(err$3, $ifaceNil))) {
 80144  					$s = -1; return err$3;
 80145  				}
 80146  			/* } */ case 9:
 80147  			_r$4 = hs.sendFinished(new sliceType$7(c[0].serverFinished)); /* */ $s = 11; case 11: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 80148  			err$4 = _r$4;
 80149  			if (!($interfaceIsEqual(err$4, $ifaceNil))) {
 80150  				$s = -1; return err$4;
 80151  			}
 80152  			_r$5 = c[0].flush(); /* */ $s = 12; case 12: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
 80153  			_tuple$1 = _r$5;
 80154  			err$5 = _tuple$1[1];
 80155  			if (!($interfaceIsEqual(err$5, $ifaceNil))) {
 80156  				$s = -1; return err$5;
 80157  			}
 80158  			c[0].clientFinishedIsFirst = false;
 80159  			_r$6 = hs.readFinished(sliceType$7.nil); /* */ $s = 13; case 13: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
 80160  			err$6 = _r$6;
 80161  			if (!($interfaceIsEqual(err$6, $ifaceNil))) {
 80162  				$s = -1; return err$6;
 80163  			}
 80164  			c[0].didResume = true;
 80165  			$s = 5; continue;
 80166  		/* } else { */ case 4:
 80167  			_r$7 = hs.doFullHandshake(); /* */ $s = 14; case 14: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
 80168  			err$7 = _r$7;
 80169  			if (!($interfaceIsEqual(err$7, $ifaceNil))) {
 80170  				$s = -1; return err$7;
 80171  			}
 80172  			_r$8 = hs.establishKeys(); /* */ $s = 15; case 15: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
 80173  			err$8 = _r$8;
 80174  			if (!($interfaceIsEqual(err$8, $ifaceNil))) {
 80175  				$s = -1; return err$8;
 80176  			}
 80177  			_r$9 = hs.readFinished(new sliceType$7(c[0].clientFinished)); /* */ $s = 16; case 16: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 80178  			err$9 = _r$9;
 80179  			if (!($interfaceIsEqual(err$9, $ifaceNil))) {
 80180  				$s = -1; return err$9;
 80181  			}
 80182  			c[0].clientFinishedIsFirst = true;
 80183  			c[0].buffering = true;
 80184  			_r$10 = hs.sendSessionTicket(); /* */ $s = 17; case 17: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
 80185  			err$10 = _r$10;
 80186  			if (!($interfaceIsEqual(err$10, $ifaceNil))) {
 80187  				$s = -1; return err$10;
 80188  			}
 80189  			_r$11 = hs.sendFinished(sliceType$7.nil); /* */ $s = 18; case 18: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; }
 80190  			err$11 = _r$11;
 80191  			if (!($interfaceIsEqual(err$11, $ifaceNil))) {
 80192  				$s = -1; return err$11;
 80193  			}
 80194  			_r$12 = c[0].flush(); /* */ $s = 19; case 19: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; }
 80195  			_tuple$2 = _r$12;
 80196  			err$12 = _tuple$2[1];
 80197  			if (!($interfaceIsEqual(err$12, $ifaceNil))) {
 80198  				$s = -1; return err$12;
 80199  			}
 80200  		/* } */ case 5:
 80201  		c[0].handshakeComplete = true;
 80202  		$s = -1; return $ifaceNil;
 80203  		/* */ } return; } if ($f === undefined) { $f = { $blk: Conn.ptr.prototype.serverHandshake }; } $f._r = _r; $f._r$1 = _r$1; $f._r$10 = _r$10; $f._r$11 = _r$11; $f._r$12 = _r$12; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._r$8 = _r$8; $f._r$9 = _r$9; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f.c = c; $f.err = err; $f.err$1 = err$1; $f.err$10 = err$10; $f.err$11 = err$11; $f.err$12 = err$12; $f.err$2 = err$2; $f.err$3 = err$3; $f.err$4 = err$4; $f.err$5 = err$5; $f.err$6 = err$6; $f.err$7 = err$7; $f.err$8 = err$8; $f.err$9 = err$9; $f.hs = hs; $f.isResume = isResume; $f.$s = $s; $f.$r = $r; return $f;
 80204  	};
 80205  	Conn.prototype.serverHandshake = function() { return this.$val.serverHandshake(); };
 80206  	serverHandshakeState.ptr.prototype.readClientHello = function() {
 80207  		var _arg, _arg$1, _i, _i$1, _i$2, _i$3, _i$4, _i$5, _r, _r$1, _r$10, _r$11, _r$12, _r$13, _r$14, _r$15, _r$16, _r$17, _r$18, _r$19, _r$2, _r$20, _r$21, _r$22, _r$23, _r$24, _r$25, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, _ref$1, _ref$2, _ref$3, _ref$4, _ref$5, _ref$6, _ref$7, _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$14, _tmp$15, _tmp$16, _tmp$17, _tmp$18, _tmp$19, _tmp$2, _tmp$20, _tmp$21, _tmp$22, _tmp$23, _tmp$24, _tmp$25, _tmp$26, _tmp$27, _tmp$28, _tmp$29, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, _tuple$5, _tuple$6, _tuple$7, _tuple$8, c, compression, curve, err, err$1, fallback, foundCompression, hs, id, id$1, isResume, msg, newConfig, ok, ok$1, ok$2, pointFormat, preferenceList, preferredCurves, priv, priv$1, selectedProto, supported, supportedCurve, supportedList, supportedPointFormat, $s, $r;
 80208  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _arg = $f._arg; _arg$1 = $f._arg$1; _i = $f._i; _i$1 = $f._i$1; _i$2 = $f._i$2; _i$3 = $f._i$3; _i$4 = $f._i$4; _i$5 = $f._i$5; _r = $f._r; _r$1 = $f._r$1; _r$10 = $f._r$10; _r$11 = $f._r$11; _r$12 = $f._r$12; _r$13 = $f._r$13; _r$14 = $f._r$14; _r$15 = $f._r$15; _r$16 = $f._r$16; _r$17 = $f._r$17; _r$18 = $f._r$18; _r$19 = $f._r$19; _r$2 = $f._r$2; _r$20 = $f._r$20; _r$21 = $f._r$21; _r$22 = $f._r$22; _r$23 = $f._r$23; _r$24 = $f._r$24; _r$25 = $f._r$25; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _r$8 = $f._r$8; _r$9 = $f._r$9; _ref = $f._ref; _ref$1 = $f._ref$1; _ref$2 = $f._ref$2; _ref$3 = $f._ref$3; _ref$4 = $f._ref$4; _ref$5 = $f._ref$5; _ref$6 = $f._ref$6; _ref$7 = $f._ref$7; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$10 = $f._tmp$10; _tmp$11 = $f._tmp$11; _tmp$12 = $f._tmp$12; _tmp$13 = $f._tmp$13; _tmp$14 = $f._tmp$14; _tmp$15 = $f._tmp$15; _tmp$16 = $f._tmp$16; _tmp$17 = $f._tmp$17; _tmp$18 = $f._tmp$18; _tmp$19 = $f._tmp$19; _tmp$2 = $f._tmp$2; _tmp$20 = $f._tmp$20; _tmp$21 = $f._tmp$21; _tmp$22 = $f._tmp$22; _tmp$23 = $f._tmp$23; _tmp$24 = $f._tmp$24; _tmp$25 = $f._tmp$25; _tmp$26 = $f._tmp$26; _tmp$27 = $f._tmp$27; _tmp$28 = $f._tmp$28; _tmp$29 = $f._tmp$29; _tmp$3 = $f._tmp$3; _tmp$4 = $f._tmp$4; _tmp$5 = $f._tmp$5; _tmp$6 = $f._tmp$6; _tmp$7 = $f._tmp$7; _tmp$8 = $f._tmp$8; _tmp$9 = $f._tmp$9; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; _tuple$4 = $f._tuple$4; _tuple$5 = $f._tuple$5; _tuple$6 = $f._tuple$6; _tuple$7 = $f._tuple$7; _tuple$8 = $f._tuple$8; c = $f.c; compression = $f.compression; curve = $f.curve; err = $f.err; err$1 = $f.err$1; fallback = $f.fallback; foundCompression = $f.foundCompression; hs = $f.hs; id = $f.id; id$1 = $f.id$1; isResume = $f.isResume; msg = $f.msg; newConfig = $f.newConfig; ok = $f.ok; ok$1 = $f.ok$1; ok$2 = $f.ok$2; pointFormat = $f.pointFormat; preferenceList = $f.preferenceList; preferredCurves = $f.preferredCurves; priv = $f.priv; priv$1 = $f.priv$1; selectedProto = $f.selectedProto; supported = $f.supported; supportedCurve = $f.supportedCurve; supportedList = $f.supportedList; supportedPointFormat = $f.supportedPointFormat; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 80209  		c = [c];
 80210  		newConfig = [newConfig];
 80211  		isResume = false;
 80212  		err = $ifaceNil;
 80213  		hs = this;
 80214  		c[0] = hs.c;
 80215  		_r = c[0].readHandshake(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 80216  		_tuple = _r;
 80217  		msg = _tuple[0];
 80218  		err = _tuple[1];
 80219  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 80220  			_tmp = false;
 80221  			_tmp$1 = err;
 80222  			isResume = _tmp;
 80223  			err = _tmp$1;
 80224  			$s = -1; return [isResume, err];
 80225  		}
 80226  		ok = false;
 80227  		_tuple$1 = $assertType(msg, ptrType$14, true);
 80228  		hs.clientHello = _tuple$1[0];
 80229  		ok = _tuple$1[1];
 80230  		/* */ if (!ok) { $s = 2; continue; }
 80231  		/* */ $s = 3; continue;
 80232  		/* if (!ok) { */ case 2:
 80233  			_r$1 = c[0].sendAlert(10); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 80234  			_r$1;
 80235  			_tmp$2 = false;
 80236  			_r$2 = unexpectedMessageError(hs.clientHello, msg); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 80237  			_tmp$3 = _r$2;
 80238  			isResume = _tmp$2;
 80239  			err = _tmp$3;
 80240  			$s = -1; return [isResume, err];
 80241  		/* } */ case 3:
 80242  		/* */ if (!(c[0].config.GetConfigForClient === $throwNilPointerError)) { $s = 6; continue; }
 80243  		/* */ $s = 7; continue;
 80244  		/* if (!(c[0].config.GetConfigForClient === $throwNilPointerError)) { */ case 6:
 80245  			_r$3 = c[0].config.GetConfigForClient(hs.clientHelloInfo()); /* */ $s = 8; case 8: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 80246  			_tuple$2 = _r$3;
 80247  			newConfig[0] = _tuple$2[0];
 80248  			err$1 = _tuple$2[1];
 80249  			/* */ if (!($interfaceIsEqual(err$1, $ifaceNil))) { $s = 9; continue; }
 80250  			/* */ if (!(newConfig[0] === ptrType$3.nil)) { $s = 10; continue; }
 80251  			/* */ $s = 11; continue;
 80252  			/* if (!($interfaceIsEqual(err$1, $ifaceNil))) { */ case 9:
 80253  				_r$4 = c[0].sendAlert(80); /* */ $s = 12; case 12: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 80254  				_r$4;
 80255  				_tmp$4 = false;
 80256  				_tmp$5 = err$1;
 80257  				isResume = _tmp$4;
 80258  				err = _tmp$5;
 80259  				$s = -1; return [isResume, err];
 80260  			/* } else if (!(newConfig[0] === ptrType$3.nil)) { */ case 10:
 80261  				$r = newConfig[0].serverInitOnce.Do((function(c, newConfig) { return function $b() {
 80262  					var $s, $r;
 80263  					/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 80264  					$r = newConfig[0].serverInit(c[0].config); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 80265  					$s = -1; return;
 80266  					/* */ } return; } if ($f === undefined) { $f = { $blk: $b }; } $f.$s = $s; $f.$r = $r; return $f;
 80267  				}; })(c, newConfig)); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 80268  				c[0].config = newConfig[0];
 80269  			/* } */ case 11:
 80270  		/* } */ case 7:
 80271  		_tuple$3 = c[0].config.mutualVersion(hs.clientHello.vers);
 80272  		c[0].vers = _tuple$3[0];
 80273  		ok = _tuple$3[1];
 80274  		/* */ if (!ok) { $s = 14; continue; }
 80275  		/* */ $s = 15; continue;
 80276  		/* if (!ok) { */ case 14:
 80277  			_r$5 = c[0].sendAlert(70); /* */ $s = 16; case 16: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
 80278  			_r$5;
 80279  			_tmp$6 = false;
 80280  			_r$6 = fmt.Errorf("tls: client offered an unsupported, maximum protocol version of %x", new sliceType$8([new $Uint16(hs.clientHello.vers)])); /* */ $s = 17; case 17: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
 80281  			_tmp$7 = _r$6;
 80282  			isResume = _tmp$6;
 80283  			err = _tmp$7;
 80284  			$s = -1; return [isResume, err];
 80285  		/* } */ case 15:
 80286  		c[0].haveVers = true;
 80287  		hs.hello = new serverHelloMsg.ptr(sliceType$7.nil, 0, sliceType$7.nil, sliceType$7.nil, 0, 0, false, sliceType$1.nil, false, sliceType$9.nil, false, sliceType$7.nil, false, "");
 80288  		supportedCurve = false;
 80289  		preferredCurves = c[0].config.curvePreferences();
 80290  		_ref = hs.clientHello.supportedCurves;
 80291  		_i = 0;
 80292  		Curves:
 80293  		while (true) {
 80294  			if (!(_i < _ref.$length)) { break; }
 80295  			curve = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
 80296  			_ref$1 = preferredCurves;
 80297  			_i$1 = 0;
 80298  			while (true) {
 80299  				if (!(_i$1 < _ref$1.$length)) { break; }
 80300  				supported = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]);
 80301  				if (supported === curve) {
 80302  					supportedCurve = true;
 80303  					break Curves;
 80304  				}
 80305  				_i$1++;
 80306  			}
 80307  			_i++;
 80308  		}
 80309  		supportedPointFormat = false;
 80310  		_ref$2 = hs.clientHello.supportedPoints;
 80311  		_i$2 = 0;
 80312  		while (true) {
 80313  			if (!(_i$2 < _ref$2.$length)) { break; }
 80314  			pointFormat = ((_i$2 < 0 || _i$2 >= _ref$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$2.$array[_ref$2.$offset + _i$2]);
 80315  			if (pointFormat === 0) {
 80316  				supportedPointFormat = true;
 80317  				break;
 80318  			}
 80319  			_i$2++;
 80320  		}
 80321  		hs.ellipticOk = supportedCurve && supportedPointFormat;
 80322  		foundCompression = false;
 80323  		_ref$3 = hs.clientHello.compressionMethods;
 80324  		_i$3 = 0;
 80325  		while (true) {
 80326  			if (!(_i$3 < _ref$3.$length)) { break; }
 80327  			compression = ((_i$3 < 0 || _i$3 >= _ref$3.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$3.$array[_ref$3.$offset + _i$3]);
 80328  			if (compression === 0) {
 80329  				foundCompression = true;
 80330  				break;
 80331  			}
 80332  			_i$3++;
 80333  		}
 80334  		/* */ if (!foundCompression) { $s = 18; continue; }
 80335  		/* */ $s = 19; continue;
 80336  		/* if (!foundCompression) { */ case 18:
 80337  			_r$7 = c[0].sendAlert(40); /* */ $s = 20; case 20: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
 80338  			_r$7;
 80339  			_tmp$8 = false;
 80340  			_tmp$9 = errors.New("tls: client does not support uncompressed connections");
 80341  			isResume = _tmp$8;
 80342  			err = _tmp$9;
 80343  			$s = -1; return [isResume, err];
 80344  		/* } */ case 19:
 80345  		hs.hello.vers = c[0].vers;
 80346  		hs.hello.random = $makeSlice(sliceType$7, 32);
 80347  		_r$8 = io.ReadFull(c[0].config.rand(), hs.hello.random); /* */ $s = 21; case 21: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
 80348  		_tuple$4 = _r$8;
 80349  		err = _tuple$4[1];
 80350  		/* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 22; continue; }
 80351  		/* */ $s = 23; continue;
 80352  		/* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 22:
 80353  			_r$9 = c[0].sendAlert(80); /* */ $s = 24; case 24: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 80354  			_r$9;
 80355  			_tmp$10 = false;
 80356  			_tmp$11 = err;
 80357  			isResume = _tmp$10;
 80358  			err = _tmp$11;
 80359  			$s = -1; return [isResume, err];
 80360  		/* } */ case 23:
 80361  		/* */ if (!((hs.clientHello.secureRenegotiation.$length === 0))) { $s = 25; continue; }
 80362  		/* */ $s = 26; continue;
 80363  		/* if (!((hs.clientHello.secureRenegotiation.$length === 0))) { */ case 25:
 80364  			_r$10 = c[0].sendAlert(40); /* */ $s = 27; case 27: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
 80365  			_r$10;
 80366  			_tmp$12 = false;
 80367  			_tmp$13 = errors.New("tls: initial handshake had non-empty renegotiation extension");
 80368  			isResume = _tmp$12;
 80369  			err = _tmp$13;
 80370  			$s = -1; return [isResume, err];
 80371  		/* } */ case 26:
 80372  		hs.hello.secureRenegotiationSupported = hs.clientHello.secureRenegotiationSupported;
 80373  		hs.hello.compressionMethod = 0;
 80374  		if (hs.clientHello.serverName.length > 0) {
 80375  			c[0].serverName = hs.clientHello.serverName;
 80376  		}
 80377  		if (hs.clientHello.alpnProtocols.$length > 0) {
 80378  			_tuple$5 = mutualProtocol(hs.clientHello.alpnProtocols, c[0].config.NextProtos);
 80379  			selectedProto = _tuple$5[0];
 80380  			fallback = _tuple$5[1];
 80381  			if (!fallback) {
 80382  				hs.hello.alpnProtocol = selectedProto;
 80383  				c[0].clientProtocol = selectedProto;
 80384  			}
 80385  		} else {
 80386  			if (hs.clientHello.nextProtoNeg && c[0].config.NextProtos.$length > 0) {
 80387  				hs.hello.nextProtoNeg = true;
 80388  				hs.hello.nextProtos = c[0].config.NextProtos;
 80389  			}
 80390  		}
 80391  		_r$11 = c[0].config.getCertificate(hs.clientHelloInfo()); /* */ $s = 28; case 28: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; }
 80392  		_tuple$6 = _r$11;
 80393  		hs.cert = _tuple$6[0];
 80394  		err = _tuple$6[1];
 80395  		/* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 29; continue; }
 80396  		/* */ $s = 30; continue;
 80397  		/* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 29:
 80398  			_r$12 = c[0].sendAlert(80); /* */ $s = 31; case 31: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; }
 80399  			_r$12;
 80400  			_tmp$14 = false;
 80401  			_tmp$15 = err;
 80402  			isResume = _tmp$14;
 80403  			err = _tmp$15;
 80404  			$s = -1; return [isResume, err];
 80405  		/* } */ case 30:
 80406  		if (hs.clientHello.scts) {
 80407  			hs.hello.scts = hs.cert.SignedCertificateTimestamps;
 80408  		}
 80409  		_tuple$7 = $assertType(hs.cert.PrivateKey, crypto.Signer, true);
 80410  		priv = _tuple$7[0];
 80411  		ok$1 = _tuple$7[1];
 80412  		/* */ if (ok$1) { $s = 32; continue; }
 80413  		/* */ $s = 33; continue;
 80414  		/* if (ok$1) { */ case 32:
 80415  			_r$13 = priv.Public(); /* */ $s = 34; case 34: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; }
 80416  			_ref$4 = _r$13;
 80417  			/* */ if ($assertType(_ref$4, ptrType$20, true)[1]) { $s = 35; continue; }
 80418  			/* */ if ($assertType(_ref$4, ptrType$19, true)[1]) { $s = 36; continue; }
 80419  			/* */ $s = 37; continue;
 80420  			/* if ($assertType(_ref$4, ptrType$20, true)[1]) { */ case 35:
 80421  				hs.ecdsaOk = true;
 80422  				$s = 38; continue;
 80423  			/* } else if ($assertType(_ref$4, ptrType$19, true)[1]) { */ case 36:
 80424  				hs.rsaSignOk = true;
 80425  				$s = 38; continue;
 80426  			/* } else { */ case 37:
 80427  				_r$14 = c[0].sendAlert(80); /* */ $s = 39; case 39: if($c) { $c = false; _r$14 = _r$14.$blk(); } if (_r$14 && _r$14.$blk !== undefined) { break s; }
 80428  				_r$14;
 80429  				_tmp$16 = false;
 80430  				_r$15 = priv.Public(); /* */ $s = 40; case 40: if($c) { $c = false; _r$15 = _r$15.$blk(); } if (_r$15 && _r$15.$blk !== undefined) { break s; }
 80431  				_arg = _r$15;
 80432  				_r$16 = fmt.Errorf("tls: unsupported signing key type (%T)", new sliceType$8([_arg])); /* */ $s = 41; case 41: if($c) { $c = false; _r$16 = _r$16.$blk(); } if (_r$16 && _r$16.$blk !== undefined) { break s; }
 80433  				_tmp$17 = _r$16;
 80434  				isResume = _tmp$16;
 80435  				err = _tmp$17;
 80436  				$s = -1; return [isResume, err];
 80437  			/* } */ case 38:
 80438  		/* } */ case 33:
 80439  		_tuple$8 = $assertType(hs.cert.PrivateKey, crypto.Decrypter, true);
 80440  		priv$1 = _tuple$8[0];
 80441  		ok$2 = _tuple$8[1];
 80442  		/* */ if (ok$2) { $s = 42; continue; }
 80443  		/* */ $s = 43; continue;
 80444  		/* if (ok$2) { */ case 42:
 80445  			_r$17 = priv$1.Public(); /* */ $s = 44; case 44: if($c) { $c = false; _r$17 = _r$17.$blk(); } if (_r$17 && _r$17.$blk !== undefined) { break s; }
 80446  			_ref$5 = _r$17;
 80447  			/* */ if ($assertType(_ref$5, ptrType$19, true)[1]) { $s = 45; continue; }
 80448  			/* */ $s = 46; continue;
 80449  			/* if ($assertType(_ref$5, ptrType$19, true)[1]) { */ case 45:
 80450  				hs.rsaDecryptOk = true;
 80451  				$s = 47; continue;
 80452  			/* } else { */ case 46:
 80453  				_r$18 = c[0].sendAlert(80); /* */ $s = 48; case 48: if($c) { $c = false; _r$18 = _r$18.$blk(); } if (_r$18 && _r$18.$blk !== undefined) { break s; }
 80454  				_r$18;
 80455  				_tmp$18 = false;
 80456  				_r$19 = priv$1.Public(); /* */ $s = 49; case 49: if($c) { $c = false; _r$19 = _r$19.$blk(); } if (_r$19 && _r$19.$blk !== undefined) { break s; }
 80457  				_arg$1 = _r$19;
 80458  				_r$20 = fmt.Errorf("tls: unsupported decryption key type (%T)", new sliceType$8([_arg$1])); /* */ $s = 50; case 50: if($c) { $c = false; _r$20 = _r$20.$blk(); } if (_r$20 && _r$20.$blk !== undefined) { break s; }
 80459  				_tmp$19 = _r$20;
 80460  				isResume = _tmp$18;
 80461  				err = _tmp$19;
 80462  				$s = -1; return [isResume, err];
 80463  			/* } */ case 47:
 80464  		/* } */ case 43:
 80465  		_r$21 = hs.checkForResumption(); /* */ $s = 53; case 53: if($c) { $c = false; _r$21 = _r$21.$blk(); } if (_r$21 && _r$21.$blk !== undefined) { break s; }
 80466  		/* */ if (_r$21) { $s = 51; continue; }
 80467  		/* */ $s = 52; continue;
 80468  		/* if (_r$21) { */ case 51:
 80469  			_tmp$20 = true;
 80470  			_tmp$21 = $ifaceNil;
 80471  			isResume = _tmp$20;
 80472  			err = _tmp$21;
 80473  			$s = -1; return [isResume, err];
 80474  		/* } */ case 52:
 80475  		_tmp$22 = sliceType$2.nil;
 80476  		_tmp$23 = sliceType$2.nil;
 80477  		preferenceList = _tmp$22;
 80478  		supportedList = _tmp$23;
 80479  		/* */ if (c[0].config.PreferServerCipherSuites) { $s = 54; continue; }
 80480  		/* */ $s = 55; continue;
 80481  		/* if (c[0].config.PreferServerCipherSuites) { */ case 54:
 80482  			_r$22 = c[0].config.cipherSuites(); /* */ $s = 57; case 57: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; }
 80483  			preferenceList = _r$22;
 80484  			supportedList = hs.clientHello.cipherSuites;
 80485  			$s = 56; continue;
 80486  		/* } else { */ case 55:
 80487  			preferenceList = hs.clientHello.cipherSuites;
 80488  			_r$23 = c[0].config.cipherSuites(); /* */ $s = 58; case 58: if($c) { $c = false; _r$23 = _r$23.$blk(); } if (_r$23 && _r$23.$blk !== undefined) { break s; }
 80489  			supportedList = _r$23;
 80490  		/* } */ case 56:
 80491  		_ref$6 = preferenceList;
 80492  		_i$4 = 0;
 80493  		while (true) {
 80494  			if (!(_i$4 < _ref$6.$length)) { break; }
 80495  			id = ((_i$4 < 0 || _i$4 >= _ref$6.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$6.$array[_ref$6.$offset + _i$4]);
 80496  			if (hs.setCipherSuite(id, supportedList, c[0].vers)) {
 80497  				break;
 80498  			}
 80499  			_i$4++;
 80500  		}
 80501  		/* */ if (hs.suite === ptrType$1.nil) { $s = 59; continue; }
 80502  		/* */ $s = 60; continue;
 80503  		/* if (hs.suite === ptrType$1.nil) { */ case 59:
 80504  			_r$24 = c[0].sendAlert(40); /* */ $s = 61; case 61: if($c) { $c = false; _r$24 = _r$24.$blk(); } if (_r$24 && _r$24.$blk !== undefined) { break s; }
 80505  			_r$24;
 80506  			_tmp$24 = false;
 80507  			_tmp$25 = errors.New("tls: no cipher suite supported by both client and server");
 80508  			isResume = _tmp$24;
 80509  			err = _tmp$25;
 80510  			$s = -1; return [isResume, err];
 80511  		/* } */ case 60:
 80512  		_ref$7 = hs.clientHello.cipherSuites;
 80513  		_i$5 = 0;
 80514  		/* while (true) { */ case 62:
 80515  			/* if (!(_i$5 < _ref$7.$length)) { break; } */ if(!(_i$5 < _ref$7.$length)) { $s = 63; continue; }
 80516  			id$1 = ((_i$5 < 0 || _i$5 >= _ref$7.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$7.$array[_ref$7.$offset + _i$5]);
 80517  			/* */ if (id$1 === 22016) { $s = 64; continue; }
 80518  			/* */ $s = 65; continue;
 80519  			/* if (id$1 === 22016) { */ case 64:
 80520  				/* */ if (hs.clientHello.vers < c[0].config.maxVersion()) { $s = 66; continue; }
 80521  				/* */ $s = 67; continue;
 80522  				/* if (hs.clientHello.vers < c[0].config.maxVersion()) { */ case 66:
 80523  					_r$25 = c[0].sendAlert(86); /* */ $s = 68; case 68: if($c) { $c = false; _r$25 = _r$25.$blk(); } if (_r$25 && _r$25.$blk !== undefined) { break s; }
 80524  					_r$25;
 80525  					_tmp$26 = false;
 80526  					_tmp$27 = errors.New("tls: client using inappropriate protocol fallback");
 80527  					isResume = _tmp$26;
 80528  					err = _tmp$27;
 80529  					$s = -1; return [isResume, err];
 80530  				/* } */ case 67:
 80531  				/* break; */ $s = 63; continue;
 80532  			/* } */ case 65:
 80533  			_i$5++;
 80534  		/* } */ $s = 62; continue; case 63:
 80535  		_tmp$28 = false;
 80536  		_tmp$29 = $ifaceNil;
 80537  		isResume = _tmp$28;
 80538  		err = _tmp$29;
 80539  		$s = -1; return [isResume, err];
 80540  		/* */ } return; } if ($f === undefined) { $f = { $blk: serverHandshakeState.ptr.prototype.readClientHello }; } $f._arg = _arg; $f._arg$1 = _arg$1; $f._i = _i; $f._i$1 = _i$1; $f._i$2 = _i$2; $f._i$3 = _i$3; $f._i$4 = _i$4; $f._i$5 = _i$5; $f._r = _r; $f._r$1 = _r$1; $f._r$10 = _r$10; $f._r$11 = _r$11; $f._r$12 = _r$12; $f._r$13 = _r$13; $f._r$14 = _r$14; $f._r$15 = _r$15; $f._r$16 = _r$16; $f._r$17 = _r$17; $f._r$18 = _r$18; $f._r$19 = _r$19; $f._r$2 = _r$2; $f._r$20 = _r$20; $f._r$21 = _r$21; $f._r$22 = _r$22; $f._r$23 = _r$23; $f._r$24 = _r$24; $f._r$25 = _r$25; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._r$8 = _r$8; $f._r$9 = _r$9; $f._ref = _ref; $f._ref$1 = _ref$1; $f._ref$2 = _ref$2; $f._ref$3 = _ref$3; $f._ref$4 = _ref$4; $f._ref$5 = _ref$5; $f._ref$6 = _ref$6; $f._ref$7 = _ref$7; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$10 = _tmp$10; $f._tmp$11 = _tmp$11; $f._tmp$12 = _tmp$12; $f._tmp$13 = _tmp$13; $f._tmp$14 = _tmp$14; $f._tmp$15 = _tmp$15; $f._tmp$16 = _tmp$16; $f._tmp$17 = _tmp$17; $f._tmp$18 = _tmp$18; $f._tmp$19 = _tmp$19; $f._tmp$2 = _tmp$2; $f._tmp$20 = _tmp$20; $f._tmp$21 = _tmp$21; $f._tmp$22 = _tmp$22; $f._tmp$23 = _tmp$23; $f._tmp$24 = _tmp$24; $f._tmp$25 = _tmp$25; $f._tmp$26 = _tmp$26; $f._tmp$27 = _tmp$27; $f._tmp$28 = _tmp$28; $f._tmp$29 = _tmp$29; $f._tmp$3 = _tmp$3; $f._tmp$4 = _tmp$4; $f._tmp$5 = _tmp$5; $f._tmp$6 = _tmp$6; $f._tmp$7 = _tmp$7; $f._tmp$8 = _tmp$8; $f._tmp$9 = _tmp$9; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f._tuple$4 = _tuple$4; $f._tuple$5 = _tuple$5; $f._tuple$6 = _tuple$6; $f._tuple$7 = _tuple$7; $f._tuple$8 = _tuple$8; $f.c = c; $f.compression = compression; $f.curve = curve; $f.err = err; $f.err$1 = err$1; $f.fallback = fallback; $f.foundCompression = foundCompression; $f.hs = hs; $f.id = id; $f.id$1 = id$1; $f.isResume = isResume; $f.msg = msg; $f.newConfig = newConfig; $f.ok = ok; $f.ok$1 = ok$1; $f.ok$2 = ok$2; $f.pointFormat = pointFormat; $f.preferenceList = preferenceList; $f.preferredCurves = preferredCurves; $f.priv = priv; $f.priv$1 = priv$1; $f.selectedProto = selectedProto; $f.supported = supported; $f.supportedCurve = supportedCurve; $f.supportedList = supportedList; $f.supportedPointFormat = supportedPointFormat; $f.$s = $s; $f.$r = $r; return $f;
 80541  	};
 80542  	serverHandshakeState.prototype.readClientHello = function() { return this.$val.readClientHello(); };
 80543  	serverHandshakeState.ptr.prototype.checkForResumption = function() {
 80544  		var _arg, _arg$1, _arg$2, _i, _r, _r$1, _r$2, _ref, _tuple, c, cipherSuiteOk, hs, id, needClientCerts, ok, sessionHasClientCerts, sessionTicket, $s, $r;
 80545  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _arg = $f._arg; _arg$1 = $f._arg$1; _arg$2 = $f._arg$2; _i = $f._i; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _ref = $f._ref; _tuple = $f._tuple; c = $f.c; cipherSuiteOk = $f.cipherSuiteOk; hs = $f.hs; id = $f.id; needClientCerts = $f.needClientCerts; ok = $f.ok; sessionHasClientCerts = $f.sessionHasClientCerts; sessionTicket = $f.sessionTicket; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 80546  		hs = this;
 80547  		c = hs.c;
 80548  		if (c.config.SessionTicketsDisabled) {
 80549  			$s = -1; return false;
 80550  		}
 80551  		ok = false;
 80552  		sessionTicket = $appendSlice(new sliceType$7([]), hs.clientHello.sessionTicket);
 80553  		_r = c.decryptTicket(sessionTicket); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 80554  		_tuple = _r;
 80555  		hs.sessionState = _tuple[0];
 80556  		ok = _tuple[1];
 80557  		if (!ok) {
 80558  			$s = -1; return false;
 80559  		}
 80560  		if (!((c.vers === hs.sessionState.vers))) {
 80561  			$s = -1; return false;
 80562  		}
 80563  		cipherSuiteOk = false;
 80564  		_ref = hs.clientHello.cipherSuites;
 80565  		_i = 0;
 80566  		while (true) {
 80567  			if (!(_i < _ref.$length)) { break; }
 80568  			id = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
 80569  			if (id === hs.sessionState.cipherSuite) {
 80570  				cipherSuiteOk = true;
 80571  				break;
 80572  			}
 80573  			_i++;
 80574  		}
 80575  		if (!cipherSuiteOk) {
 80576  			$s = -1; return false;
 80577  		}
 80578  		_arg = hs.sessionState.cipherSuite;
 80579  		_r$1 = c.config.cipherSuites(); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 80580  		_arg$1 = _r$1;
 80581  		_arg$2 = hs.sessionState.vers;
 80582  		_r$2 = hs.setCipherSuite(_arg, _arg$1, _arg$2); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 80583  		/* */ if (!_r$2) { $s = 2; continue; }
 80584  		/* */ $s = 3; continue;
 80585  		/* if (!_r$2) { */ case 2:
 80586  			$s = -1; return false;
 80587  		/* } */ case 3:
 80588  		sessionHasClientCerts = !((hs.sessionState.certificates.$length === 0));
 80589  		needClientCerts = (c.config.ClientAuth === 2) || (c.config.ClientAuth === 4);
 80590  		if (needClientCerts && !sessionHasClientCerts) {
 80591  			$s = -1; return false;
 80592  		}
 80593  		if (sessionHasClientCerts && (c.config.ClientAuth === 0)) {
 80594  			$s = -1; return false;
 80595  		}
 80596  		$s = -1; return true;
 80597  		/* */ } return; } if ($f === undefined) { $f = { $blk: serverHandshakeState.ptr.prototype.checkForResumption }; } $f._arg = _arg; $f._arg$1 = _arg$1; $f._arg$2 = _arg$2; $f._i = _i; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._ref = _ref; $f._tuple = _tuple; $f.c = c; $f.cipherSuiteOk = cipherSuiteOk; $f.hs = hs; $f.id = id; $f.needClientCerts = needClientCerts; $f.ok = ok; $f.sessionHasClientCerts = sessionHasClientCerts; $f.sessionTicket = sessionTicket; $f.$s = $s; $f.$r = $r; return $f;
 80598  	};
 80599  	serverHandshakeState.prototype.checkForResumption = function() { return this.$val.checkForResumption(); };
 80600  	serverHandshakeState.ptr.prototype.doResumeHandshake = function() {
 80601  		var _r, _r$1, _r$2, _r$3, _r$4, _tuple, _tuple$1, c, err, err$1, hs, $s, $r;
 80602  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; c = $f.c; err = $f.err; err$1 = $f.err$1; hs = $f.hs; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 80603  		hs = this;
 80604  		c = hs.c;
 80605  		hs.hello.cipherSuite = hs.suite.id;
 80606  		hs.hello.sessionId = hs.clientHello.sessionId;
 80607  		hs.hello.ticketSupported = hs.sessionState.usedOldKey;
 80608  		_r = newFinishedHash(c.vers, hs.suite); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 80609  		finishedHash.copy(hs.finishedHash, _r);
 80610  		hs.finishedHash.discardHandshakeBuffer();
 80611  		_r$1 = hs.finishedHash.Write(hs.clientHello.marshal()); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 80612  		_r$1;
 80613  		_r$2 = hs.finishedHash.Write(hs.hello.marshal()); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 80614  		_r$2;
 80615  		_r$3 = c.writeRecord(22, hs.hello.marshal()); /* */ $s = 4; case 4: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 80616  		_tuple = _r$3;
 80617  		err = _tuple[1];
 80618  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 80619  			$s = -1; return err;
 80620  		}
 80621  		/* */ if (hs.sessionState.certificates.$length > 0) { $s = 5; continue; }
 80622  		/* */ $s = 6; continue;
 80623  		/* if (hs.sessionState.certificates.$length > 0) { */ case 5:
 80624  			_r$4 = hs.processCertsFromClient(hs.sessionState.certificates); /* */ $s = 7; case 7: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 80625  			_tuple$1 = _r$4;
 80626  			err$1 = _tuple$1[1];
 80627  			if (!($interfaceIsEqual(err$1, $ifaceNil))) {
 80628  				$s = -1; return err$1;
 80629  			}
 80630  		/* } */ case 6:
 80631  		hs.masterSecret = hs.sessionState.masterSecret;
 80632  		$s = -1; return $ifaceNil;
 80633  		/* */ } return; } if ($f === undefined) { $f = { $blk: serverHandshakeState.ptr.prototype.doResumeHandshake }; } $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.c = c; $f.err = err; $f.err$1 = err$1; $f.hs = hs; $f.$s = $s; $f.$r = $r; return $f;
 80634  	};
 80635  	serverHandshakeState.prototype.doResumeHandshake = function() { return this.$val.doResumeHandshake(); };
 80636  	serverHandshakeState.ptr.prototype.doFullHandshake = function() {
 80637  		var _1, _r, _r$1, _r$10, _r$11, _r$12, _r$13, _r$14, _r$15, _r$16, _r$17, _r$18, _r$19, _r$2, _r$20, _r$21, _r$22, _r$23, _r$24, _r$25, _r$26, _r$27, _r$28, _r$29, _r$3, _r$30, _r$31, _r$32, _r$33, _r$34, _r$35, _r$36, _r$37, _r$38, _r$39, _r$4, _r$40, _r$41, _r$42, _r$43, _r$44, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, _ref$1, _tuple, _tuple$1, _tuple$10, _tuple$11, _tuple$12, _tuple$13, _tuple$14, _tuple$15, _tuple$16, _tuple$17, _tuple$18, _tuple$2, _tuple$3, _tuple$4, _tuple$5, _tuple$6, _tuple$7, _tuple$8, _tuple$9, c, certMsg, certReq, certStatus, certVerify, ckx, digest, digest$1, ecdsaSig, err, err$1, err$2, err$3, err$4, err$5, err$6, err$7, err$8, hashFunc, helloDone, hs, key, key$1, keyAgreement$1, msg, ok, ok$1, preMasterSecret, pub, sigType, signatureAlgorithm, skx, $s, $r;
 80638  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _r = $f._r; _r$1 = $f._r$1; _r$10 = $f._r$10; _r$11 = $f._r$11; _r$12 = $f._r$12; _r$13 = $f._r$13; _r$14 = $f._r$14; _r$15 = $f._r$15; _r$16 = $f._r$16; _r$17 = $f._r$17; _r$18 = $f._r$18; _r$19 = $f._r$19; _r$2 = $f._r$2; _r$20 = $f._r$20; _r$21 = $f._r$21; _r$22 = $f._r$22; _r$23 = $f._r$23; _r$24 = $f._r$24; _r$25 = $f._r$25; _r$26 = $f._r$26; _r$27 = $f._r$27; _r$28 = $f._r$28; _r$29 = $f._r$29; _r$3 = $f._r$3; _r$30 = $f._r$30; _r$31 = $f._r$31; _r$32 = $f._r$32; _r$33 = $f._r$33; _r$34 = $f._r$34; _r$35 = $f._r$35; _r$36 = $f._r$36; _r$37 = $f._r$37; _r$38 = $f._r$38; _r$39 = $f._r$39; _r$4 = $f._r$4; _r$40 = $f._r$40; _r$41 = $f._r$41; _r$42 = $f._r$42; _r$43 = $f._r$43; _r$44 = $f._r$44; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _r$8 = $f._r$8; _r$9 = $f._r$9; _ref = $f._ref; _ref$1 = $f._ref$1; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$10 = $f._tuple$10; _tuple$11 = $f._tuple$11; _tuple$12 = $f._tuple$12; _tuple$13 = $f._tuple$13; _tuple$14 = $f._tuple$14; _tuple$15 = $f._tuple$15; _tuple$16 = $f._tuple$16; _tuple$17 = $f._tuple$17; _tuple$18 = $f._tuple$18; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; _tuple$4 = $f._tuple$4; _tuple$5 = $f._tuple$5; _tuple$6 = $f._tuple$6; _tuple$7 = $f._tuple$7; _tuple$8 = $f._tuple$8; _tuple$9 = $f._tuple$9; c = $f.c; certMsg = $f.certMsg; certReq = $f.certReq; certStatus = $f.certStatus; certVerify = $f.certVerify; ckx = $f.ckx; digest = $f.digest; digest$1 = $f.digest$1; ecdsaSig = $f.ecdsaSig; err = $f.err; err$1 = $f.err$1; err$2 = $f.err$2; err$3 = $f.err$3; err$4 = $f.err$4; err$5 = $f.err$5; err$6 = $f.err$6; err$7 = $f.err$7; err$8 = $f.err$8; hashFunc = $f.hashFunc; helloDone = $f.helloDone; hs = $f.hs; key = $f.key; key$1 = $f.key$1; keyAgreement$1 = $f.keyAgreement$1; msg = $f.msg; ok = $f.ok; ok$1 = $f.ok$1; preMasterSecret = $f.preMasterSecret; pub = $f.pub; sigType = $f.sigType; signatureAlgorithm = $f.signatureAlgorithm; skx = $f.skx; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 80639  		hs = this;
 80640  		c = hs.c;
 80641  		if (hs.clientHello.ocspStapling && hs.cert.OCSPStaple.$length > 0) {
 80642  			hs.hello.ocspStapling = true;
 80643  		}
 80644  		hs.hello.ticketSupported = hs.clientHello.ticketSupported && !c.config.SessionTicketsDisabled;
 80645  		hs.hello.cipherSuite = hs.suite.id;
 80646  		_r = newFinishedHash(hs.c.vers, hs.suite); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 80647  		finishedHash.copy(hs.finishedHash, _r);
 80648  		if (c.config.ClientAuth === 0) {
 80649  			hs.finishedHash.discardHandshakeBuffer();
 80650  		}
 80651  		_r$1 = hs.finishedHash.Write(hs.clientHello.marshal()); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 80652  		_r$1;
 80653  		_r$2 = hs.finishedHash.Write(hs.hello.marshal()); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 80654  		_r$2;
 80655  		_r$3 = c.writeRecord(22, hs.hello.marshal()); /* */ $s = 4; case 4: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 80656  		_tuple = _r$3;
 80657  		err = _tuple[1];
 80658  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 80659  			$s = -1; return err;
 80660  		}
 80661  		certMsg = new certificateMsg.ptr(sliceType$7.nil, sliceType$9.nil);
 80662  		certMsg.certificates = hs.cert.Certificate;
 80663  		_r$4 = hs.finishedHash.Write(certMsg.marshal()); /* */ $s = 5; case 5: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 80664  		_r$4;
 80665  		_r$5 = c.writeRecord(22, certMsg.marshal()); /* */ $s = 6; case 6: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
 80666  		_tuple$1 = _r$5;
 80667  		err$1 = _tuple$1[1];
 80668  		if (!($interfaceIsEqual(err$1, $ifaceNil))) {
 80669  			$s = -1; return err$1;
 80670  		}
 80671  		/* */ if (hs.hello.ocspStapling) { $s = 7; continue; }
 80672  		/* */ $s = 8; continue;
 80673  		/* if (hs.hello.ocspStapling) { */ case 7:
 80674  			certStatus = new certificateStatusMsg.ptr(sliceType$7.nil, 0, sliceType$7.nil);
 80675  			certStatus.statusType = 1;
 80676  			certStatus.response = hs.cert.OCSPStaple;
 80677  			_r$6 = hs.finishedHash.Write(certStatus.marshal()); /* */ $s = 9; case 9: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
 80678  			_r$6;
 80679  			_r$7 = c.writeRecord(22, certStatus.marshal()); /* */ $s = 10; case 10: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
 80680  			_tuple$2 = _r$7;
 80681  			err$2 = _tuple$2[1];
 80682  			if (!($interfaceIsEqual(err$2, $ifaceNil))) {
 80683  				$s = -1; return err$2;
 80684  			}
 80685  		/* } */ case 8:
 80686  		_r$8 = hs.suite.ka(c.vers); /* */ $s = 11; case 11: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
 80687  		keyAgreement$1 = _r$8;
 80688  		_r$9 = keyAgreement$1.generateServerKeyExchange(c.config, hs.cert, hs.clientHello, hs.hello); /* */ $s = 12; case 12: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 80689  		_tuple$3 = _r$9;
 80690  		skx = _tuple$3[0];
 80691  		err$3 = _tuple$3[1];
 80692  		/* */ if (!($interfaceIsEqual(err$3, $ifaceNil))) { $s = 13; continue; }
 80693  		/* */ $s = 14; continue;
 80694  		/* if (!($interfaceIsEqual(err$3, $ifaceNil))) { */ case 13:
 80695  			_r$10 = c.sendAlert(40); /* */ $s = 15; case 15: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
 80696  			_r$10;
 80697  			$s = -1; return err$3;
 80698  		/* } */ case 14:
 80699  		/* */ if (!(skx === ptrType$22.nil)) { $s = 16; continue; }
 80700  		/* */ $s = 17; continue;
 80701  		/* if (!(skx === ptrType$22.nil)) { */ case 16:
 80702  			_r$11 = hs.finishedHash.Write(skx.marshal()); /* */ $s = 18; case 18: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; }
 80703  			_r$11;
 80704  			_r$12 = c.writeRecord(22, skx.marshal()); /* */ $s = 19; case 19: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; }
 80705  			_tuple$4 = _r$12;
 80706  			err$4 = _tuple$4[1];
 80707  			if (!($interfaceIsEqual(err$4, $ifaceNil))) {
 80708  				$s = -1; return err$4;
 80709  			}
 80710  		/* } */ case 17:
 80711  		/* */ if (c.config.ClientAuth >= 1) { $s = 20; continue; }
 80712  		/* */ $s = 21; continue;
 80713  		/* if (c.config.ClientAuth >= 1) { */ case 20:
 80714  			certReq = new certificateRequestMsg.ptr(sliceType$7.nil, false, sliceType$7.nil, sliceType$6.nil, sliceType$9.nil);
 80715  			certReq.certificateTypes = new sliceType$7([1, 64]);
 80716  			if (c.vers >= 771) {
 80717  				certReq.hasSignatureAndHash = true;
 80718  				certReq.supportedSignatureAlgorithms = supportedSignatureAlgorithms;
 80719  			}
 80720  			if (!(c.config.ClientCAs === ptrType.nil)) {
 80721  				certReq.certificateAuthorities = c.config.ClientCAs.Subjects();
 80722  			}
 80723  			_r$13 = hs.finishedHash.Write(certReq.marshal()); /* */ $s = 22; case 22: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; }
 80724  			_r$13;
 80725  			_r$14 = c.writeRecord(22, certReq.marshal()); /* */ $s = 23; case 23: if($c) { $c = false; _r$14 = _r$14.$blk(); } if (_r$14 && _r$14.$blk !== undefined) { break s; }
 80726  			_tuple$5 = _r$14;
 80727  			err$5 = _tuple$5[1];
 80728  			if (!($interfaceIsEqual(err$5, $ifaceNil))) {
 80729  				$s = -1; return err$5;
 80730  			}
 80731  		/* } */ case 21:
 80732  		helloDone = new serverHelloDoneMsg.ptr();
 80733  		_r$15 = hs.finishedHash.Write(helloDone.marshal()); /* */ $s = 24; case 24: if($c) { $c = false; _r$15 = _r$15.$blk(); } if (_r$15 && _r$15.$blk !== undefined) { break s; }
 80734  		_r$15;
 80735  		_r$16 = c.writeRecord(22, helloDone.marshal()); /* */ $s = 25; case 25: if($c) { $c = false; _r$16 = _r$16.$blk(); } if (_r$16 && _r$16.$blk !== undefined) { break s; }
 80736  		_tuple$6 = _r$16;
 80737  		err$6 = _tuple$6[1];
 80738  		if (!($interfaceIsEqual(err$6, $ifaceNil))) {
 80739  			$s = -1; return err$6;
 80740  		}
 80741  		_r$17 = c.flush(); /* */ $s = 26; case 26: if($c) { $c = false; _r$17 = _r$17.$blk(); } if (_r$17 && _r$17.$blk !== undefined) { break s; }
 80742  		_tuple$7 = _r$17;
 80743  		err$7 = _tuple$7[1];
 80744  		if (!($interfaceIsEqual(err$7, $ifaceNil))) {
 80745  			$s = -1; return err$7;
 80746  		}
 80747  		pub = $ifaceNil;
 80748  		_r$18 = c.readHandshake(); /* */ $s = 27; case 27: if($c) { $c = false; _r$18 = _r$18.$blk(); } if (_r$18 && _r$18.$blk !== undefined) { break s; }
 80749  		_tuple$8 = _r$18;
 80750  		msg = _tuple$8[0];
 80751  		err$3 = _tuple$8[1];
 80752  		if (!($interfaceIsEqual(err$3, $ifaceNil))) {
 80753  			$s = -1; return err$3;
 80754  		}
 80755  		ok = false;
 80756  		/* */ if (c.config.ClientAuth >= 1) { $s = 28; continue; }
 80757  		/* */ $s = 29; continue;
 80758  		/* if (c.config.ClientAuth >= 1) { */ case 28:
 80759  			_tuple$9 = $assertType(msg, ptrType$17, true);
 80760  			certMsg = _tuple$9[0];
 80761  			ok = _tuple$9[1];
 80762  			/* */ if (!ok) { $s = 30; continue; }
 80763  			/* */ $s = 31; continue;
 80764  			/* if (!ok) { */ case 30:
 80765  				_r$19 = c.sendAlert(10); /* */ $s = 32; case 32: if($c) { $c = false; _r$19 = _r$19.$blk(); } if (_r$19 && _r$19.$blk !== undefined) { break s; }
 80766  				_r$19;
 80767  				_r$20 = unexpectedMessageError(certMsg, msg); /* */ $s = 33; case 33: if($c) { $c = false; _r$20 = _r$20.$blk(); } if (_r$20 && _r$20.$blk !== undefined) { break s; }
 80768  				$s = -1; return _r$20;
 80769  			/* } */ case 31:
 80770  			_r$21 = hs.finishedHash.Write(certMsg.marshal()); /* */ $s = 34; case 34: if($c) { $c = false; _r$21 = _r$21.$blk(); } if (_r$21 && _r$21.$blk !== undefined) { break s; }
 80771  			_r$21;
 80772  			/* */ if (certMsg.certificates.$length === 0) { $s = 35; continue; }
 80773  			/* */ $s = 36; continue;
 80774  			/* if (certMsg.certificates.$length === 0) { */ case 35:
 80775  					_1 = c.config.ClientAuth;
 80776  					/* */ if ((_1 === (2)) || (_1 === (4))) { $s = 38; continue; }
 80777  					/* */ $s = 39; continue;
 80778  					/* if ((_1 === (2)) || (_1 === (4))) { */ case 38:
 80779  						_r$22 = c.sendAlert(42); /* */ $s = 40; case 40: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; }
 80780  						_r$22;
 80781  						$s = -1; return errors.New("tls: client didn't provide a certificate");
 80782  					/* } */ case 39:
 80783  				case 37:
 80784  			/* } */ case 36:
 80785  			_r$23 = hs.processCertsFromClient(certMsg.certificates); /* */ $s = 41; case 41: if($c) { $c = false; _r$23 = _r$23.$blk(); } if (_r$23 && _r$23.$blk !== undefined) { break s; }
 80786  			_tuple$10 = _r$23;
 80787  			pub = _tuple$10[0];
 80788  			err$3 = _tuple$10[1];
 80789  			if (!($interfaceIsEqual(err$3, $ifaceNil))) {
 80790  				$s = -1; return err$3;
 80791  			}
 80792  			_r$24 = c.readHandshake(); /* */ $s = 42; case 42: if($c) { $c = false; _r$24 = _r$24.$blk(); } if (_r$24 && _r$24.$blk !== undefined) { break s; }
 80793  			_tuple$11 = _r$24;
 80794  			msg = _tuple$11[0];
 80795  			err$3 = _tuple$11[1];
 80796  			if (!($interfaceIsEqual(err$3, $ifaceNil))) {
 80797  				$s = -1; return err$3;
 80798  			}
 80799  		/* } */ case 29:
 80800  		_tuple$12 = $assertType(msg, ptrType$25, true);
 80801  		ckx = _tuple$12[0];
 80802  		ok = _tuple$12[1];
 80803  		/* */ if (!ok) { $s = 43; continue; }
 80804  		/* */ $s = 44; continue;
 80805  		/* if (!ok) { */ case 43:
 80806  			_r$25 = c.sendAlert(10); /* */ $s = 45; case 45: if($c) { $c = false; _r$25 = _r$25.$blk(); } if (_r$25 && _r$25.$blk !== undefined) { break s; }
 80807  			_r$25;
 80808  			_r$26 = unexpectedMessageError(ckx, msg); /* */ $s = 46; case 46: if($c) { $c = false; _r$26 = _r$26.$blk(); } if (_r$26 && _r$26.$blk !== undefined) { break s; }
 80809  			$s = -1; return _r$26;
 80810  		/* } */ case 44:
 80811  		_r$27 = hs.finishedHash.Write(ckx.marshal()); /* */ $s = 47; case 47: if($c) { $c = false; _r$27 = _r$27.$blk(); } if (_r$27 && _r$27.$blk !== undefined) { break s; }
 80812  		_r$27;
 80813  		_r$28 = keyAgreement$1.processClientKeyExchange(c.config, hs.cert, ckx, c.vers); /* */ $s = 48; case 48: if($c) { $c = false; _r$28 = _r$28.$blk(); } if (_r$28 && _r$28.$blk !== undefined) { break s; }
 80814  		_tuple$13 = _r$28;
 80815  		preMasterSecret = _tuple$13[0];
 80816  		err$3 = _tuple$13[1];
 80817  		/* */ if (!($interfaceIsEqual(err$3, $ifaceNil))) { $s = 49; continue; }
 80818  		/* */ $s = 50; continue;
 80819  		/* if (!($interfaceIsEqual(err$3, $ifaceNil))) { */ case 49:
 80820  			_r$29 = c.sendAlert(40); /* */ $s = 51; case 51: if($c) { $c = false; _r$29 = _r$29.$blk(); } if (_r$29 && _r$29.$blk !== undefined) { break s; }
 80821  			_r$29;
 80822  			$s = -1; return err$3;
 80823  		/* } */ case 50:
 80824  		_r$30 = masterFromPreMasterSecret(c.vers, hs.suite, preMasterSecret, hs.clientHello.random, hs.hello.random); /* */ $s = 52; case 52: if($c) { $c = false; _r$30 = _r$30.$blk(); } if (_r$30 && _r$30.$blk !== undefined) { break s; }
 80825  		hs.masterSecret = _r$30;
 80826  		_r$31 = c.config.writeKeyLog(hs.clientHello.random, hs.masterSecret); /* */ $s = 53; case 53: if($c) { $c = false; _r$31 = _r$31.$blk(); } if (_r$31 && _r$31.$blk !== undefined) { break s; }
 80827  		err$8 = _r$31;
 80828  		/* */ if (!($interfaceIsEqual(err$8, $ifaceNil))) { $s = 54; continue; }
 80829  		/* */ $s = 55; continue;
 80830  		/* if (!($interfaceIsEqual(err$8, $ifaceNil))) { */ case 54:
 80831  			_r$32 = c.sendAlert(80); /* */ $s = 56; case 56: if($c) { $c = false; _r$32 = _r$32.$blk(); } if (_r$32 && _r$32.$blk !== undefined) { break s; }
 80832  			_r$32;
 80833  			$s = -1; return err$8;
 80834  		/* } */ case 55:
 80835  		/* */ if (c.peerCertificates.$length > 0) { $s = 57; continue; }
 80836  		/* */ $s = 58; continue;
 80837  		/* if (c.peerCertificates.$length > 0) { */ case 57:
 80838  			_r$33 = c.readHandshake(); /* */ $s = 59; case 59: if($c) { $c = false; _r$33 = _r$33.$blk(); } if (_r$33 && _r$33.$blk !== undefined) { break s; }
 80839  			_tuple$14 = _r$33;
 80840  			msg = _tuple$14[0];
 80841  			err$3 = _tuple$14[1];
 80842  			if (!($interfaceIsEqual(err$3, $ifaceNil))) {
 80843  				$s = -1; return err$3;
 80844  			}
 80845  			_tuple$15 = $assertType(msg, ptrType$29, true);
 80846  			certVerify = _tuple$15[0];
 80847  			ok$1 = _tuple$15[1];
 80848  			/* */ if (!ok$1) { $s = 60; continue; }
 80849  			/* */ $s = 61; continue;
 80850  			/* if (!ok$1) { */ case 60:
 80851  				_r$34 = c.sendAlert(10); /* */ $s = 62; case 62: if($c) { $c = false; _r$34 = _r$34.$blk(); } if (_r$34 && _r$34.$blk !== undefined) { break s; }
 80852  				_r$34;
 80853  				_r$35 = unexpectedMessageError(certVerify, msg); /* */ $s = 63; case 63: if($c) { $c = false; _r$35 = _r$35.$blk(); } if (_r$35 && _r$35.$blk !== undefined) { break s; }
 80854  				$s = -1; return _r$35;
 80855  			/* } */ case 61:
 80856  			signatureAlgorithm = 0;
 80857  			sigType = 0;
 80858  			if (certVerify.hasSignatureAndHash) {
 80859  				signatureAlgorithm = certVerify.signatureAlgorithm;
 80860  				if (!isSupportedSignatureAlgorithm(signatureAlgorithm, supportedSignatureAlgorithms)) {
 80861  					$s = -1; return errors.New("tls: unsupported hash function for client certificate");
 80862  				}
 80863  				sigType = signatureFromSignatureScheme(signatureAlgorithm);
 80864  			} else {
 80865  				_ref = pub;
 80866  				if ($assertType(_ref, ptrType$20, true)[1]) {
 80867  					sigType = 3;
 80868  				} else if ($assertType(_ref, ptrType$19, true)[1]) {
 80869  					sigType = 1;
 80870  				}
 80871  			}
 80872  			_ref$1 = pub;
 80873  			/* */ if ($assertType(_ref$1, ptrType$20, true)[1]) { $s = 64; continue; }
 80874  			/* */ if ($assertType(_ref$1, ptrType$19, true)[1]) { $s = 65; continue; }
 80875  			/* */ $s = 66; continue;
 80876  			/* switch (0) { default: if ($assertType(_ref$1, ptrType$20, true)[1]) { */ case 64:
 80877  				key = _ref$1.$val;
 80878  				if (!((sigType === 3))) {
 80879  					err$3 = errors.New("tls: bad signature type for client's ECDSA certificate");
 80880  					/* break; */ $s = 66; continue;
 80881  				}
 80882  				ecdsaSig = new ecdsaSignature.ptr(ptrType$2.nil, ptrType$2.nil);
 80883  				_r$36 = asn1.Unmarshal(certVerify.signature, ecdsaSig); /* */ $s = 67; case 67: if($c) { $c = false; _r$36 = _r$36.$blk(); } if (_r$36 && _r$36.$blk !== undefined) { break s; }
 80884  				_tuple$16 = _r$36;
 80885  				err$3 = _tuple$16[1];
 80886  				if (!($interfaceIsEqual(err$3, $ifaceNil))) {
 80887  					/* break; */ $s = 66; continue;
 80888  				}
 80889  				if (ecdsaSig.R.Sign() <= 0 || ecdsaSig.S.Sign() <= 0) {
 80890  					err$3 = errors.New("tls: ECDSA signature contained zero or negative values");
 80891  					/* break; */ $s = 66; continue;
 80892  				}
 80893  				digest = sliceType$7.nil;
 80894  				_r$37 = $clone(hs.finishedHash, finishedHash).hashForClientCertificate(sigType, signatureAlgorithm, hs.masterSecret); /* */ $s = 68; case 68: if($c) { $c = false; _r$37 = _r$37.$blk(); } if (_r$37 && _r$37.$blk !== undefined) { break s; }
 80895  				_tuple$17 = _r$37;
 80896  				digest = _tuple$17[0];
 80897  				err$3 = _tuple$17[2];
 80898  				if (!($interfaceIsEqual(err$3, $ifaceNil))) {
 80899  					/* break; */ $s = 66; continue;
 80900  				}
 80901  				_r$38 = ecdsa.Verify(key, digest, ecdsaSig.R, ecdsaSig.S); /* */ $s = 71; case 71: if($c) { $c = false; _r$38 = _r$38.$blk(); } if (_r$38 && _r$38.$blk !== undefined) { break s; }
 80902  				/* */ if (!_r$38) { $s = 69; continue; }
 80903  				/* */ $s = 70; continue;
 80904  				/* if (!_r$38) { */ case 69:
 80905  					err$3 = errors.New("tls: ECDSA verification failure");
 80906  				/* } */ case 70:
 80907  				$s = 66; continue;
 80908  			/* } else if ($assertType(_ref$1, ptrType$19, true)[1]) { */ case 65:
 80909  				key$1 = _ref$1.$val;
 80910  				if (!((sigType === 1))) {
 80911  					err$3 = errors.New("tls: bad signature type for client's RSA certificate");
 80912  					/* break; */ $s = 66; continue;
 80913  				}
 80914  				digest$1 = sliceType$7.nil;
 80915  				hashFunc = 0;
 80916  				_r$39 = $clone(hs.finishedHash, finishedHash).hashForClientCertificate(sigType, signatureAlgorithm, hs.masterSecret); /* */ $s = 72; case 72: if($c) { $c = false; _r$39 = _r$39.$blk(); } if (_r$39 && _r$39.$blk !== undefined) { break s; }
 80917  				_tuple$18 = _r$39;
 80918  				digest$1 = _tuple$18[0];
 80919  				hashFunc = _tuple$18[1];
 80920  				err$3 = _tuple$18[2];
 80921  				if (!($interfaceIsEqual(err$3, $ifaceNil))) {
 80922  					/* break; */ $s = 66; continue;
 80923  				}
 80924  				_r$40 = rsa.VerifyPKCS1v15(key$1, hashFunc, digest$1, certVerify.signature); /* */ $s = 73; case 73: if($c) { $c = false; _r$40 = _r$40.$blk(); } if (_r$40 && _r$40.$blk !== undefined) { break s; }
 80925  				err$3 = _r$40;
 80926  			/* } } */ case 66:
 80927  			/* */ if (!($interfaceIsEqual(err$3, $ifaceNil))) { $s = 74; continue; }
 80928  			/* */ $s = 75; continue;
 80929  			/* if (!($interfaceIsEqual(err$3, $ifaceNil))) { */ case 74:
 80930  				_r$41 = c.sendAlert(42); /* */ $s = 76; case 76: if($c) { $c = false; _r$41 = _r$41.$blk(); } if (_r$41 && _r$41.$blk !== undefined) { break s; }
 80931  				_r$41;
 80932  				_r$42 = err$3.Error(); /* */ $s = 77; case 77: if($c) { $c = false; _r$42 = _r$42.$blk(); } if (_r$42 && _r$42.$blk !== undefined) { break s; }
 80933  				_r$43 = errors.New("tls: could not validate signature of connection nonces: " + _r$42); /* */ $s = 78; case 78: if($c) { $c = false; _r$43 = _r$43.$blk(); } if (_r$43 && _r$43.$blk !== undefined) { break s; }
 80934  				$s = -1; return _r$43;
 80935  			/* } */ case 75:
 80936  			_r$44 = hs.finishedHash.Write(certVerify.marshal()); /* */ $s = 79; case 79: if($c) { $c = false; _r$44 = _r$44.$blk(); } if (_r$44 && _r$44.$blk !== undefined) { break s; }
 80937  			_r$44;
 80938  		/* } */ case 58:
 80939  		hs.finishedHash.discardHandshakeBuffer();
 80940  		$s = -1; return $ifaceNil;
 80941  		/* */ } return; } if ($f === undefined) { $f = { $blk: serverHandshakeState.ptr.prototype.doFullHandshake }; } $f._1 = _1; $f._r = _r; $f._r$1 = _r$1; $f._r$10 = _r$10; $f._r$11 = _r$11; $f._r$12 = _r$12; $f._r$13 = _r$13; $f._r$14 = _r$14; $f._r$15 = _r$15; $f._r$16 = _r$16; $f._r$17 = _r$17; $f._r$18 = _r$18; $f._r$19 = _r$19; $f._r$2 = _r$2; $f._r$20 = _r$20; $f._r$21 = _r$21; $f._r$22 = _r$22; $f._r$23 = _r$23; $f._r$24 = _r$24; $f._r$25 = _r$25; $f._r$26 = _r$26; $f._r$27 = _r$27; $f._r$28 = _r$28; $f._r$29 = _r$29; $f._r$3 = _r$3; $f._r$30 = _r$30; $f._r$31 = _r$31; $f._r$32 = _r$32; $f._r$33 = _r$33; $f._r$34 = _r$34; $f._r$35 = _r$35; $f._r$36 = _r$36; $f._r$37 = _r$37; $f._r$38 = _r$38; $f._r$39 = _r$39; $f._r$4 = _r$4; $f._r$40 = _r$40; $f._r$41 = _r$41; $f._r$42 = _r$42; $f._r$43 = _r$43; $f._r$44 = _r$44; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._r$8 = _r$8; $f._r$9 = _r$9; $f._ref = _ref; $f._ref$1 = _ref$1; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$10 = _tuple$10; $f._tuple$11 = _tuple$11; $f._tuple$12 = _tuple$12; $f._tuple$13 = _tuple$13; $f._tuple$14 = _tuple$14; $f._tuple$15 = _tuple$15; $f._tuple$16 = _tuple$16; $f._tuple$17 = _tuple$17; $f._tuple$18 = _tuple$18; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f._tuple$4 = _tuple$4; $f._tuple$5 = _tuple$5; $f._tuple$6 = _tuple$6; $f._tuple$7 = _tuple$7; $f._tuple$8 = _tuple$8; $f._tuple$9 = _tuple$9; $f.c = c; $f.certMsg = certMsg; $f.certReq = certReq; $f.certStatus = certStatus; $f.certVerify = certVerify; $f.ckx = ckx; $f.digest = digest; $f.digest$1 = digest$1; $f.ecdsaSig = ecdsaSig; $f.err = err; $f.err$1 = err$1; $f.err$2 = err$2; $f.err$3 = err$3; $f.err$4 = err$4; $f.err$5 = err$5; $f.err$6 = err$6; $f.err$7 = err$7; $f.err$8 = err$8; $f.hashFunc = hashFunc; $f.helloDone = helloDone; $f.hs = hs; $f.key = key; $f.key$1 = key$1; $f.keyAgreement$1 = keyAgreement$1; $f.msg = msg; $f.ok = ok; $f.ok$1 = ok$1; $f.preMasterSecret = preMasterSecret; $f.pub = pub; $f.sigType = sigType; $f.signatureAlgorithm = signatureAlgorithm; $f.skx = skx; $f.$s = $s; $f.$r = $r; return $f;
 80942  	};
 80943  	serverHandshakeState.prototype.doFullHandshake = function() { return this.$val.doFullHandshake(); };
 80944  	serverHandshakeState.ptr.prototype.establishKeys = function() {
 80945  		var _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, c, clientCipher, clientHash, clientIV, clientKey, clientMAC, hs, serverCipher, serverHash, serverIV, serverKey, serverMAC, $s, $r;
 80946  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tuple = $f._tuple; c = $f.c; clientCipher = $f.clientCipher; clientHash = $f.clientHash; clientIV = $f.clientIV; clientKey = $f.clientKey; clientMAC = $f.clientMAC; hs = $f.hs; serverCipher = $f.serverCipher; serverHash = $f.serverHash; serverIV = $f.serverIV; serverKey = $f.serverKey; serverMAC = $f.serverMAC; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 80947  		hs = this;
 80948  		c = hs.c;
 80949  		_r = keysFromMasterSecret(c.vers, hs.suite, hs.masterSecret, hs.clientHello.random, hs.hello.random, hs.suite.macLen, hs.suite.keyLen, hs.suite.ivLen); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 80950  		_tuple = _r;
 80951  		clientMAC = _tuple[0];
 80952  		serverMAC = _tuple[1];
 80953  		clientKey = _tuple[2];
 80954  		serverKey = _tuple[3];
 80955  		clientIV = _tuple[4];
 80956  		serverIV = _tuple[5];
 80957  		_tmp = $ifaceNil;
 80958  		_tmp$1 = $ifaceNil;
 80959  		clientCipher = _tmp;
 80960  		serverCipher = _tmp$1;
 80961  		_tmp$2 = $ifaceNil;
 80962  		_tmp$3 = $ifaceNil;
 80963  		clientHash = _tmp$2;
 80964  		serverHash = _tmp$3;
 80965  		/* */ if (hs.suite.aead === $throwNilPointerError) { $s = 2; continue; }
 80966  		/* */ $s = 3; continue;
 80967  		/* if (hs.suite.aead === $throwNilPointerError) { */ case 2:
 80968  			_r$1 = hs.suite.cipher(clientKey, clientIV, true); /* */ $s = 5; case 5: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 80969  			clientCipher = _r$1;
 80970  			_r$2 = hs.suite.mac(c.vers, clientMAC); /* */ $s = 6; case 6: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 80971  			clientHash = _r$2;
 80972  			_r$3 = hs.suite.cipher(serverKey, serverIV, false); /* */ $s = 7; case 7: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 80973  			serverCipher = _r$3;
 80974  			_r$4 = hs.suite.mac(c.vers, serverMAC); /* */ $s = 8; case 8: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 80975  			serverHash = _r$4;
 80976  			$s = 4; continue;
 80977  		/* } else { */ case 3:
 80978  			_r$5 = hs.suite.aead(clientKey, clientIV); /* */ $s = 9; case 9: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
 80979  			clientCipher = _r$5;
 80980  			_r$6 = hs.suite.aead(serverKey, serverIV); /* */ $s = 10; case 10: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
 80981  			serverCipher = _r$6;
 80982  		/* } */ case 4:
 80983  		c.in$25.prepareCipherSpec(c.vers, clientCipher, clientHash);
 80984  		c.out.prepareCipherSpec(c.vers, serverCipher, serverHash);
 80985  		$s = -1; return $ifaceNil;
 80986  		/* */ } return; } if ($f === undefined) { $f = { $blk: serverHandshakeState.ptr.prototype.establishKeys }; } $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tuple = _tuple; $f.c = c; $f.clientCipher = clientCipher; $f.clientHash = clientHash; $f.clientIV = clientIV; $f.clientKey = clientKey; $f.clientMAC = clientMAC; $f.hs = hs; $f.serverCipher = serverCipher; $f.serverHash = serverHash; $f.serverIV = serverIV; $f.serverKey = serverKey; $f.serverMAC = serverMAC; $f.$s = $s; $f.$r = $r; return $f;
 80987  	};
 80988  	serverHandshakeState.prototype.establishKeys = function() { return this.$val.establishKeys(); };
 80989  	serverHandshakeState.ptr.prototype.readFinished = function(out) {
 80990  		var _r, _r$1, _r$10, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _tuple, _tuple$1, _tuple$2, _tuple$3, c, clientFinished, err, err$1, hs, msg, msg$1, nextProto, ok, ok$1, out, verify, $s, $r;
 80991  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _r$10 = $f._r$10; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _r$8 = $f._r$8; _r$9 = $f._r$9; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; c = $f.c; clientFinished = $f.clientFinished; err = $f.err; err$1 = $f.err$1; hs = $f.hs; msg = $f.msg; msg$1 = $f.msg$1; nextProto = $f.nextProto; ok = $f.ok; ok$1 = $f.ok$1; out = $f.out; verify = $f.verify; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 80992  		hs = this;
 80993  		c = hs.c;
 80994  		_r = c.readRecord(20); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 80995  		_r;
 80996  		if (!($interfaceIsEqual(c.in$25.err, $ifaceNil))) {
 80997  			$s = -1; return c.in$25.err;
 80998  		}
 80999  		/* */ if (hs.hello.nextProtoNeg) { $s = 2; continue; }
 81000  		/* */ $s = 3; continue;
 81001  		/* if (hs.hello.nextProtoNeg) { */ case 2:
 81002  			_r$1 = c.readHandshake(); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 81003  			_tuple = _r$1;
 81004  			msg = _tuple[0];
 81005  			err = _tuple[1];
 81006  			if (!($interfaceIsEqual(err, $ifaceNil))) {
 81007  				$s = -1; return err;
 81008  			}
 81009  			_tuple$1 = $assertType(msg, ptrType$28, true);
 81010  			nextProto = _tuple$1[0];
 81011  			ok = _tuple$1[1];
 81012  			/* */ if (!ok) { $s = 5; continue; }
 81013  			/* */ $s = 6; continue;
 81014  			/* if (!ok) { */ case 5:
 81015  				_r$2 = c.sendAlert(10); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 81016  				_r$2;
 81017  				_r$3 = unexpectedMessageError(nextProto, msg); /* */ $s = 8; case 8: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 81018  				$s = -1; return _r$3;
 81019  			/* } */ case 6:
 81020  			_r$4 = hs.finishedHash.Write(nextProto.marshal()); /* */ $s = 9; case 9: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 81021  			_r$4;
 81022  			c.clientProtocol = nextProto.proto;
 81023  		/* } */ case 3:
 81024  		_r$5 = c.readHandshake(); /* */ $s = 10; case 10: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
 81025  		_tuple$2 = _r$5;
 81026  		msg$1 = _tuple$2[0];
 81027  		err$1 = _tuple$2[1];
 81028  		if (!($interfaceIsEqual(err$1, $ifaceNil))) {
 81029  			$s = -1; return err$1;
 81030  		}
 81031  		_tuple$3 = $assertType(msg$1, ptrType$26, true);
 81032  		clientFinished = _tuple$3[0];
 81033  		ok$1 = _tuple$3[1];
 81034  		/* */ if (!ok$1) { $s = 11; continue; }
 81035  		/* */ $s = 12; continue;
 81036  		/* if (!ok$1) { */ case 11:
 81037  			_r$6 = c.sendAlert(10); /* */ $s = 13; case 13: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
 81038  			_r$6;
 81039  			_r$7 = unexpectedMessageError(clientFinished, msg$1); /* */ $s = 14; case 14: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
 81040  			$s = -1; return _r$7;
 81041  		/* } */ case 12:
 81042  		_r$8 = $clone(hs.finishedHash, finishedHash).clientSum(hs.masterSecret); /* */ $s = 15; case 15: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
 81043  		verify = _r$8;
 81044  		/* */ if (!((verify.$length === clientFinished.verifyData.$length)) || !((subtle.ConstantTimeCompare(verify, clientFinished.verifyData) === 1))) { $s = 16; continue; }
 81045  		/* */ $s = 17; continue;
 81046  		/* if (!((verify.$length === clientFinished.verifyData.$length)) || !((subtle.ConstantTimeCompare(verify, clientFinished.verifyData) === 1))) { */ case 16:
 81047  			_r$9 = c.sendAlert(40); /* */ $s = 18; case 18: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 81048  			_r$9;
 81049  			$s = -1; return errors.New("tls: client's Finished message is incorrect");
 81050  		/* } */ case 17:
 81051  		_r$10 = hs.finishedHash.Write(clientFinished.marshal()); /* */ $s = 19; case 19: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
 81052  		_r$10;
 81053  		$copySlice(out, verify);
 81054  		$s = -1; return $ifaceNil;
 81055  		/* */ } return; } if ($f === undefined) { $f = { $blk: serverHandshakeState.ptr.prototype.readFinished }; } $f._r = _r; $f._r$1 = _r$1; $f._r$10 = _r$10; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._r$8 = _r$8; $f._r$9 = _r$9; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f.c = c; $f.clientFinished = clientFinished; $f.err = err; $f.err$1 = err$1; $f.hs = hs; $f.msg = msg; $f.msg$1 = msg$1; $f.nextProto = nextProto; $f.ok = ok; $f.ok$1 = ok$1; $f.out = out; $f.verify = verify; $f.$s = $s; $f.$r = $r; return $f;
 81056  	};
 81057  	serverHandshakeState.prototype.readFinished = function(out) { return this.$val.readFinished(out); };
 81058  	serverHandshakeState.ptr.prototype.sendSessionTicket = function() {
 81059  		var _r, _r$1, _r$2, _tuple, _tuple$1, c, err, err$1, hs, m, state, $s, $r;
 81060  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; c = $f.c; err = $f.err; err$1 = $f.err$1; hs = $f.hs; m = $f.m; state = $f.state; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 81061  		state = [state];
 81062  		hs = this;
 81063  		if (!hs.hello.ticketSupported) {
 81064  			$s = -1; return $ifaceNil;
 81065  		}
 81066  		c = hs.c;
 81067  		m = new newSessionTicketMsg.ptr(sliceType$7.nil, sliceType$7.nil);
 81068  		err = $ifaceNil;
 81069  		state[0] = new sessionState.ptr(c.vers, hs.suite.id, hs.masterSecret, hs.certsFromClient, false);
 81070  		_r = c.encryptTicket(state[0]); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 81071  		_tuple = _r;
 81072  		m.ticket = _tuple[0];
 81073  		err = _tuple[1];
 81074  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 81075  			$s = -1; return err;
 81076  		}
 81077  		_r$1 = hs.finishedHash.Write(m.marshal()); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 81078  		_r$1;
 81079  		_r$2 = c.writeRecord(22, m.marshal()); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 81080  		_tuple$1 = _r$2;
 81081  		err$1 = _tuple$1[1];
 81082  		if (!($interfaceIsEqual(err$1, $ifaceNil))) {
 81083  			$s = -1; return err$1;
 81084  		}
 81085  		$s = -1; return $ifaceNil;
 81086  		/* */ } return; } if ($f === undefined) { $f = { $blk: serverHandshakeState.ptr.prototype.sendSessionTicket }; } $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.c = c; $f.err = err; $f.err$1 = err$1; $f.hs = hs; $f.m = m; $f.state = state; $f.$s = $s; $f.$r = $r; return $f;
 81087  	};
 81088  	serverHandshakeState.prototype.sendSessionTicket = function() { return this.$val.sendSessionTicket(); };
 81089  	serverHandshakeState.ptr.prototype.sendFinished = function(out) {
 81090  		var _r, _r$1, _r$2, _r$3, _tuple, _tuple$1, c, err, err$1, finished, hs, out, $s, $r;
 81091  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; c = $f.c; err = $f.err; err$1 = $f.err$1; finished = $f.finished; hs = $f.hs; out = $f.out; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 81092  		hs = this;
 81093  		c = hs.c;
 81094  		_r = c.writeRecord(20, new sliceType$7([1])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 81095  		_tuple = _r;
 81096  		err = _tuple[1];
 81097  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 81098  			$s = -1; return err;
 81099  		}
 81100  		finished = new finishedMsg.ptr(sliceType$7.nil, sliceType$7.nil);
 81101  		_r$1 = $clone(hs.finishedHash, finishedHash).serverSum(hs.masterSecret); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 81102  		finished.verifyData = _r$1;
 81103  		_r$2 = hs.finishedHash.Write(finished.marshal()); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 81104  		_r$2;
 81105  		_r$3 = c.writeRecord(22, finished.marshal()); /* */ $s = 4; case 4: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 81106  		_tuple$1 = _r$3;
 81107  		err$1 = _tuple$1[1];
 81108  		if (!($interfaceIsEqual(err$1, $ifaceNil))) {
 81109  			$s = -1; return err$1;
 81110  		}
 81111  		c.cipherSuite = hs.suite.id;
 81112  		$copySlice(out, finished.verifyData);
 81113  		$s = -1; return $ifaceNil;
 81114  		/* */ } return; } if ($f === undefined) { $f = { $blk: serverHandshakeState.ptr.prototype.sendFinished }; } $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.c = c; $f.err = err; $f.err$1 = err$1; $f.finished = finished; $f.hs = hs; $f.out = out; $f.$s = $s; $f.$r = $r; return $f;
 81115  	};
 81116  	serverHandshakeState.prototype.sendFinished = function(out) { return this.$val.sendFinished(out); };
 81117  	serverHandshakeState.ptr.prototype.processCertsFromClient = function(certificates) {
 81118  		var _i, _i$1, _r, _r$1, _r$10, _r$11, _r$12, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, _ref$1, _ref$2, _tuple, _tuple$1, asn1Data, c, cert, certificates, certs, chains, err, err$1, err$2, hs, i, key, key$1, opts, pub, $s, $r;
 81119  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _i = $f._i; _i$1 = $f._i$1; _r = $f._r; _r$1 = $f._r$1; _r$10 = $f._r$10; _r$11 = $f._r$11; _r$12 = $f._r$12; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _r$8 = $f._r$8; _r$9 = $f._r$9; _ref = $f._ref; _ref$1 = $f._ref$1; _ref$2 = $f._ref$2; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; asn1Data = $f.asn1Data; c = $f.c; cert = $f.cert; certificates = $f.certificates; certs = $f.certs; chains = $f.chains; err = $f.err; err$1 = $f.err$1; err$2 = $f.err$2; hs = $f.hs; i = $f.i; key = $f.key; key$1 = $f.key$1; opts = $f.opts; pub = $f.pub; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 81120  		hs = this;
 81121  		c = hs.c;
 81122  		hs.certsFromClient = certificates;
 81123  		certs = $makeSlice(sliceType$10, certificates.$length);
 81124  		err = $ifaceNil;
 81125  		_ref = certificates;
 81126  		_i = 0;
 81127  		/* while (true) { */ case 1:
 81128  			/* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; }
 81129  			i = _i;
 81130  			asn1Data = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
 81131  			_r = x509.ParseCertificate(asn1Data); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 81132  			_tuple = _r;
 81133  			((i < 0 || i >= certs.$length) ? ($throwRuntimeError("index out of range"), undefined) : certs.$array[certs.$offset + i] = _tuple[0]);
 81134  			err = _tuple[1];
 81135  			/* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 4; continue; }
 81136  			/* */ $s = 5; continue;
 81137  			/* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 4:
 81138  				_r$1 = c.sendAlert(42); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 81139  				_r$1;
 81140  				_r$2 = err.Error(); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 81141  				_r$3 = errors.New("tls: failed to parse client certificate: " + _r$2); /* */ $s = 8; case 8: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 81142  				$s = -1; return [$ifaceNil, _r$3];
 81143  			/* } */ case 5:
 81144  			_i++;
 81145  		/* } */ $s = 1; continue; case 2:
 81146  		/* */ if (c.config.ClientAuth >= 3 && certs.$length > 0) { $s = 9; continue; }
 81147  		/* */ $s = 10; continue;
 81148  		/* if (c.config.ClientAuth >= 3 && certs.$length > 0) { */ case 9:
 81149  			_r$4 = c.config.time(); /* */ $s = 11; case 11: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 81150  			opts = new x509.VerifyOptions.ptr("", x509.NewCertPool(), c.config.ClientCAs, $clone(_r$4, time.Time), new sliceType$12([2]), 0);
 81151  			_ref$1 = $subslice(certs, 1);
 81152  			_i$1 = 0;
 81153  			while (true) {
 81154  				if (!(_i$1 < _ref$1.$length)) { break; }
 81155  				cert = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]);
 81156  				opts.Intermediates.AddCert(cert);
 81157  				_i$1++;
 81158  			}
 81159  			_r$5 = (0 >= certs.$length ? ($throwRuntimeError("index out of range"), undefined) : certs.$array[certs.$offset + 0]).Verify($clone(opts, x509.VerifyOptions)); /* */ $s = 12; case 12: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
 81160  			_tuple$1 = _r$5;
 81161  			chains = _tuple$1[0];
 81162  			err$1 = _tuple$1[1];
 81163  			/* */ if (!($interfaceIsEqual(err$1, $ifaceNil))) { $s = 13; continue; }
 81164  			/* */ $s = 14; continue;
 81165  			/* if (!($interfaceIsEqual(err$1, $ifaceNil))) { */ case 13:
 81166  				_r$6 = c.sendAlert(42); /* */ $s = 15; case 15: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
 81167  				_r$6;
 81168  				_r$7 = err$1.Error(); /* */ $s = 16; case 16: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
 81169  				_r$8 = errors.New("tls: failed to verify client's certificate: " + _r$7); /* */ $s = 17; case 17: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
 81170  				$s = -1; return [$ifaceNil, _r$8];
 81171  			/* } */ case 14:
 81172  			c.verifiedChains = chains;
 81173  		/* } */ case 10:
 81174  		/* */ if (!(c.config.VerifyPeerCertificate === $throwNilPointerError)) { $s = 18; continue; }
 81175  		/* */ $s = 19; continue;
 81176  		/* if (!(c.config.VerifyPeerCertificate === $throwNilPointerError)) { */ case 18:
 81177  			_r$9 = c.config.VerifyPeerCertificate(certificates, c.verifiedChains); /* */ $s = 20; case 20: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 81178  			err$2 = _r$9;
 81179  			/* */ if (!($interfaceIsEqual(err$2, $ifaceNil))) { $s = 21; continue; }
 81180  			/* */ $s = 22; continue;
 81181  			/* if (!($interfaceIsEqual(err$2, $ifaceNil))) { */ case 21:
 81182  				_r$10 = c.sendAlert(42); /* */ $s = 23; case 23: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
 81183  				_r$10;
 81184  				$s = -1; return [$ifaceNil, err$2];
 81185  			/* } */ case 22:
 81186  		/* } */ case 19:
 81187  		if (certs.$length === 0) {
 81188  			$s = -1; return [$ifaceNil, $ifaceNil];
 81189  		}
 81190  		pub = $ifaceNil;
 81191  		_ref$2 = (0 >= certs.$length ? ($throwRuntimeError("index out of range"), undefined) : certs.$array[certs.$offset + 0]).PublicKey;
 81192  		/* */ if ($assertType(_ref$2, ptrType$20, true)[1] || $assertType(_ref$2, ptrType$19, true)[1]) { $s = 24; continue; }
 81193  		/* */ $s = 25; continue;
 81194  		/* if ($assertType(_ref$2, ptrType$20, true)[1] || $assertType(_ref$2, ptrType$19, true)[1]) { */ case 24:
 81195  			key = _ref$2;
 81196  			pub = key;
 81197  			$s = 26; continue;
 81198  		/* } else { */ case 25:
 81199  			key$1 = _ref$2;
 81200  			_r$11 = c.sendAlert(43); /* */ $s = 27; case 27: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; }
 81201  			_r$11;
 81202  			_r$12 = fmt.Errorf("tls: client's certificate contains an unsupported public key of type %T", new sliceType$8([(0 >= certs.$length ? ($throwRuntimeError("index out of range"), undefined) : certs.$array[certs.$offset + 0]).PublicKey])); /* */ $s = 28; case 28: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; }
 81203  			$s = -1; return [$ifaceNil, _r$12];
 81204  		/* } */ case 26:
 81205  		c.peerCertificates = certs;
 81206  		$s = -1; return [pub, $ifaceNil];
 81207  		/* */ } return; } if ($f === undefined) { $f = { $blk: serverHandshakeState.ptr.prototype.processCertsFromClient }; } $f._i = _i; $f._i$1 = _i$1; $f._r = _r; $f._r$1 = _r$1; $f._r$10 = _r$10; $f._r$11 = _r$11; $f._r$12 = _r$12; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._r$8 = _r$8; $f._r$9 = _r$9; $f._ref = _ref; $f._ref$1 = _ref$1; $f._ref$2 = _ref$2; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.asn1Data = asn1Data; $f.c = c; $f.cert = cert; $f.certificates = certificates; $f.certs = certs; $f.chains = chains; $f.err = err; $f.err$1 = err$1; $f.err$2 = err$2; $f.hs = hs; $f.i = i; $f.key = key; $f.key$1 = key$1; $f.opts = opts; $f.pub = pub; $f.$s = $s; $f.$r = $r; return $f;
 81208  	};
 81209  	serverHandshakeState.prototype.processCertsFromClient = function(certificates) { return this.$val.processCertsFromClient(certificates); };
 81210  	serverHandshakeState.ptr.prototype.setCipherSuite = function(id, supportedCipherSuites, version) {
 81211  		var _i, _i$1, _ref, _ref$1, candidate, hs, id, s, supported, supportedCipherSuites, version;
 81212  		hs = this;
 81213  		_ref = supportedCipherSuites;
 81214  		_i = 0;
 81215  		while (true) {
 81216  			if (!(_i < _ref.$length)) { break; }
 81217  			supported = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
 81218  			if (id === supported) {
 81219  				candidate = ptrType$1.nil;
 81220  				_ref$1 = cipherSuites;
 81221  				_i$1 = 0;
 81222  				while (true) {
 81223  					if (!(_i$1 < _ref$1.$length)) { break; }
 81224  					s = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]);
 81225  					if (s.id === id) {
 81226  						candidate = s;
 81227  						break;
 81228  					}
 81229  					_i$1++;
 81230  				}
 81231  				if (candidate === ptrType$1.nil) {
 81232  					_i++;
 81233  					continue;
 81234  				}
 81235  				if (!(((candidate.flags & 1) === 0))) {
 81236  					if (!hs.ellipticOk) {
 81237  						_i++;
 81238  						continue;
 81239  					}
 81240  					if (!(((candidate.flags & 2) === 0))) {
 81241  						if (!hs.ecdsaOk) {
 81242  							_i++;
 81243  							continue;
 81244  						}
 81245  					} else if (!hs.rsaSignOk) {
 81246  						_i++;
 81247  						continue;
 81248  					}
 81249  				} else if (!hs.rsaDecryptOk) {
 81250  					_i++;
 81251  					continue;
 81252  				}
 81253  				if (version < 771 && !(((candidate.flags & 4) === 0))) {
 81254  					_i++;
 81255  					continue;
 81256  				}
 81257  				hs.suite = candidate;
 81258  				return true;
 81259  			}
 81260  			_i++;
 81261  		}
 81262  		return false;
 81263  	};
 81264  	serverHandshakeState.prototype.setCipherSuite = function(id, supportedCipherSuites, version) { return this.$val.setCipherSuite(id, supportedCipherSuites, version); };
 81265  	serverHandshakeState.ptr.prototype.clientHelloInfo = function() {
 81266  		var hs, supportedVersions;
 81267  		hs = this;
 81268  		if (!(hs.cachedClientHelloInfo === ptrType$31.nil)) {
 81269  			return hs.cachedClientHelloInfo;
 81270  		}
 81271  		supportedVersions = sliceType$2.nil;
 81272  		if (hs.clientHello.vers > 771) {
 81273  			supportedVersions = new sliceType$2(suppVersArray);
 81274  		} else if (hs.clientHello.vers >= 768) {
 81275  			supportedVersions = $subslice(new sliceType$2(suppVersArray), (771 - hs.clientHello.vers << 16 >>> 16));
 81276  		}
 81277  		hs.cachedClientHelloInfo = new ClientHelloInfo.ptr(hs.clientHello.cipherSuites, hs.clientHello.serverName, hs.clientHello.supportedCurves, hs.clientHello.supportedPoints, hs.clientHello.supportedSignatureAlgorithms, hs.clientHello.alpnProtocols, supportedVersions, hs.c.conn);
 81278  		return hs.cachedClientHelloInfo;
 81279  	};
 81280  	serverHandshakeState.prototype.clientHelloInfo = function() { return this.$val.clientHelloInfo(); };
 81281  	rsaKeyAgreement.ptr.prototype.generateServerKeyExchange = function(config, cert, clientHello, hello) {
 81282  		var cert, clientHello, config, hello, ka;
 81283  		ka = this;
 81284  		return [ptrType$22.nil, $ifaceNil];
 81285  	};
 81286  	rsaKeyAgreement.prototype.generateServerKeyExchange = function(config, cert, clientHello, hello) { return this.$val.generateServerKeyExchange(config, cert, clientHello, hello); };
 81287  	rsaKeyAgreement.ptr.prototype.processClientKeyExchange = function(config, cert, ckx, version) {
 81288  		var _r, _tuple, _tuple$1, cert, ciphertext, ciphertextLen, ckx, config, err, ka, ok, preMasterSecret, priv, version, x, x$1, $s, $r;
 81289  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; cert = $f.cert; ciphertext = $f.ciphertext; ciphertextLen = $f.ciphertextLen; ckx = $f.ckx; config = $f.config; err = $f.err; ka = $f.ka; ok = $f.ok; preMasterSecret = $f.preMasterSecret; priv = $f.priv; version = $f.version; x = $f.x; x$1 = $f.x$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 81290  		ka = this;
 81291  		if (ckx.ciphertext.$length < 2) {
 81292  			$s = -1; return [sliceType$7.nil, errClientKeyExchange];
 81293  		}
 81294  		ciphertext = ckx.ciphertext;
 81295  		if (!((version === 768))) {
 81296  			ciphertextLen = ((((x = ckx.ciphertext, (0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0])) >> 0)) << 8 >> 0) | (((x$1 = ckx.ciphertext, (1 >= x$1.$length ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + 1])) >> 0));
 81297  			if (!((ciphertextLen === (ckx.ciphertext.$length - 2 >> 0)))) {
 81298  				$s = -1; return [sliceType$7.nil, errClientKeyExchange];
 81299  			}
 81300  			ciphertext = $subslice(ckx.ciphertext, 2);
 81301  		}
 81302  		_tuple = $assertType(cert.PrivateKey, crypto.Decrypter, true);
 81303  		priv = _tuple[0];
 81304  		ok = _tuple[1];
 81305  		if (!ok) {
 81306  			$s = -1; return [sliceType$7.nil, errors.New("tls: certificate private key does not implement crypto.Decrypter")];
 81307  		}
 81308  		_r = priv.Decrypt(config.rand(), ciphertext, new rsa.PKCS1v15DecryptOptions.ptr(48)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 81309  		_tuple$1 = _r;
 81310  		preMasterSecret = _tuple$1[0];
 81311  		err = _tuple$1[1];
 81312  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 81313  			$s = -1; return [sliceType$7.nil, err];
 81314  		}
 81315  		$s = -1; return [preMasterSecret, $ifaceNil];
 81316  		/* */ } return; } if ($f === undefined) { $f = { $blk: rsaKeyAgreement.ptr.prototype.processClientKeyExchange }; } $f._r = _r; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.cert = cert; $f.ciphertext = ciphertext; $f.ciphertextLen = ciphertextLen; $f.ckx = ckx; $f.config = config; $f.err = err; $f.ka = ka; $f.ok = ok; $f.preMasterSecret = preMasterSecret; $f.priv = priv; $f.version = version; $f.x = x; $f.x$1 = x$1; $f.$s = $s; $f.$r = $r; return $f;
 81317  	};
 81318  	rsaKeyAgreement.prototype.processClientKeyExchange = function(config, cert, ckx, version) { return this.$val.processClientKeyExchange(config, cert, ckx, version); };
 81319  	rsaKeyAgreement.ptr.prototype.processServerKeyExchange = function(config, clientHello, serverHello, cert, skx) {
 81320  		var cert, clientHello, config, ka, serverHello, skx;
 81321  		ka = this;
 81322  		return errors.New("tls: unexpected ServerKeyExchange");
 81323  	};
 81324  	rsaKeyAgreement.prototype.processServerKeyExchange = function(config, clientHello, serverHello, cert, skx) { return this.$val.processServerKeyExchange(config, clientHello, serverHello, cert, skx); };
 81325  	rsaKeyAgreement.ptr.prototype.generateClientKeyExchange = function(config, clientHello, cert) {
 81326  		var _r, _r$1, _tuple, _tuple$1, cert, ckx, clientHello, config, encrypted, err, ka, preMasterSecret, x, x$1, $s, $r;
 81327  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; cert = $f.cert; ckx = $f.ckx; clientHello = $f.clientHello; config = $f.config; encrypted = $f.encrypted; err = $f.err; ka = $f.ka; preMasterSecret = $f.preMasterSecret; x = $f.x; x$1 = $f.x$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 81328  		ka = this;
 81329  		preMasterSecret = $makeSlice(sliceType$7, 48);
 81330  		(0 >= preMasterSecret.$length ? ($throwRuntimeError("index out of range"), undefined) : preMasterSecret.$array[preMasterSecret.$offset + 0] = (((clientHello.vers >>> 8 << 16 >>> 16) << 24 >>> 24)));
 81331  		(1 >= preMasterSecret.$length ? ($throwRuntimeError("index out of range"), undefined) : preMasterSecret.$array[preMasterSecret.$offset + 1] = ((clientHello.vers << 24 >>> 24)));
 81332  		_r = io.ReadFull(config.rand(), $subslice(preMasterSecret, 2)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 81333  		_tuple = _r;
 81334  		err = _tuple[1];
 81335  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 81336  			$s = -1; return [sliceType$7.nil, ptrType$25.nil, err];
 81337  		}
 81338  		_r$1 = rsa.EncryptPKCS1v15(config.rand(), $assertType(cert.PublicKey, ptrType$19), preMasterSecret); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 81339  		_tuple$1 = _r$1;
 81340  		encrypted = _tuple$1[0];
 81341  		err = _tuple$1[1];
 81342  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 81343  			$s = -1; return [sliceType$7.nil, ptrType$25.nil, err];
 81344  		}
 81345  		ckx = new clientKeyExchangeMsg.ptr(sliceType$7.nil, sliceType$7.nil);
 81346  		ckx.ciphertext = $makeSlice(sliceType$7, (encrypted.$length + 2 >> 0));
 81347  		(x = ckx.ciphertext, (0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0] = (((encrypted.$length >> 8 >> 0) << 24 >>> 24))));
 81348  		(x$1 = ckx.ciphertext, (1 >= x$1.$length ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + 1] = ((encrypted.$length << 24 >>> 24))));
 81349  		$copySlice($subslice(ckx.ciphertext, 2), encrypted);
 81350  		$s = -1; return [preMasterSecret, ckx, $ifaceNil];
 81351  		/* */ } return; } if ($f === undefined) { $f = { $blk: rsaKeyAgreement.ptr.prototype.generateClientKeyExchange }; } $f._r = _r; $f._r$1 = _r$1; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.cert = cert; $f.ckx = ckx; $f.clientHello = clientHello; $f.config = config; $f.encrypted = encrypted; $f.err = err; $f.ka = ka; $f.preMasterSecret = preMasterSecret; $f.x = x; $f.x$1 = x$1; $f.$s = $s; $f.$r = $r; return $f;
 81352  	};
 81353  	rsaKeyAgreement.prototype.generateClientKeyExchange = function(config, clientHello, cert) { return this.$val.generateClientKeyExchange(config, clientHello, cert); };
 81354  	sha1Hash = function(slices) {
 81355  		var _i, _r, _r$1, _ref, hsha1, slice, slices, $s, $r;
 81356  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _i = $f._i; _r = $f._r; _r$1 = $f._r$1; _ref = $f._ref; hsha1 = $f.hsha1; slice = $f.slice; slices = $f.slices; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 81357  		hsha1 = sha1.New();
 81358  		_ref = slices;
 81359  		_i = 0;
 81360  		/* while (true) { */ case 1:
 81361  			/* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; }
 81362  			slice = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
 81363  			_r = hsha1.Write(slice); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 81364  			_r;
 81365  			_i++;
 81366  		/* } */ $s = 1; continue; case 2:
 81367  		_r$1 = hsha1.Sum(sliceType$7.nil); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 81368  		$s = -1; return _r$1;
 81369  		/* */ } return; } if ($f === undefined) { $f = { $blk: sha1Hash }; } $f._i = _i; $f._r = _r; $f._r$1 = _r$1; $f._ref = _ref; $f.hsha1 = hsha1; $f.slice = slice; $f.slices = slices; $f.$s = $s; $f.$r = $r; return $f;
 81370  	};
 81371  	md5SHA1Hash = function(slices) {
 81372  		var _i, _r, _r$1, _r$2, _ref, hmd5, md5sha1, slice, slices, $s, $r;
 81373  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _i = $f._i; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _ref = $f._ref; hmd5 = $f.hmd5; md5sha1 = $f.md5sha1; slice = $f.slice; slices = $f.slices; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 81374  		md5sha1 = $makeSlice(sliceType$7, 36);
 81375  		hmd5 = md5.New();
 81376  		_ref = slices;
 81377  		_i = 0;
 81378  		/* while (true) { */ case 1:
 81379  			/* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; }
 81380  			slice = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
 81381  			_r = hmd5.Write(slice); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 81382  			_r;
 81383  			_i++;
 81384  		/* } */ $s = 1; continue; case 2:
 81385  		_r$1 = hmd5.Sum(sliceType$7.nil); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 81386  		$copySlice(md5sha1, _r$1);
 81387  		_r$2 = sha1Hash(slices); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 81388  		$copySlice($subslice(md5sha1, 16), _r$2);
 81389  		$s = -1; return md5sha1;
 81390  		/* */ } return; } if ($f === undefined) { $f = { $blk: md5SHA1Hash }; } $f._i = _i; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._ref = _ref; $f.hmd5 = hmd5; $f.md5sha1 = md5sha1; $f.slice = slice; $f.slices = slices; $f.$s = $s; $f.$r = $r; return $f;
 81391  	};
 81392  	hashForServerKeyExchange = function(sigType, signatureAlgorithm, version, slices) {
 81393  		var _i, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _ref, _tuple, digest, err, h, hashFunc, sigType, signatureAlgorithm, slice, slices, version, $s, $r;
 81394  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _i = $f._i; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _ref = $f._ref; _tuple = $f._tuple; digest = $f.digest; err = $f.err; h = $f.h; hashFunc = $f.hashFunc; sigType = $f.sigType; signatureAlgorithm = $f.signatureAlgorithm; slice = $f.slice; slices = $f.slices; version = $f.version; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 81395  		/* */ if (version >= 771) { $s = 1; continue; }
 81396  		/* */ $s = 2; continue;
 81397  		/* if (version >= 771) { */ case 1:
 81398  			if (!isSupportedSignatureAlgorithm(signatureAlgorithm, supportedSignatureAlgorithms)) {
 81399  				$s = -1; return [sliceType$7.nil, 0, errors.New("tls: unsupported hash function used by peer")];
 81400  			}
 81401  			_r = lookupTLSHash(signatureAlgorithm); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 81402  			_tuple = _r;
 81403  			hashFunc = _tuple[0];
 81404  			err = _tuple[1];
 81405  			if (!($interfaceIsEqual(err, $ifaceNil))) {
 81406  				$s = -1; return [sliceType$7.nil, 0, err];
 81407  			}
 81408  			_r$1 = new crypto.Hash(hashFunc).New(); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 81409  			h = _r$1;
 81410  			_ref = slices;
 81411  			_i = 0;
 81412  			/* while (true) { */ case 5:
 81413  				/* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 6; continue; }
 81414  				slice = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
 81415  				_r$2 = h.Write(slice); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 81416  				_r$2;
 81417  				_i++;
 81418  			/* } */ $s = 5; continue; case 6:
 81419  			_r$3 = h.Sum(sliceType$7.nil); /* */ $s = 8; case 8: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 81420  			digest = _r$3;
 81421  			$s = -1; return [digest, hashFunc, $ifaceNil];
 81422  		/* } */ case 2:
 81423  		/* */ if (sigType === 3) { $s = 9; continue; }
 81424  		/* */ $s = 10; continue;
 81425  		/* if (sigType === 3) { */ case 9:
 81426  			_r$4 = sha1Hash(slices); /* */ $s = 11; case 11: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 81427  			$s = -1; return [_r$4, 3, $ifaceNil];
 81428  		/* } */ case 10:
 81429  		_r$5 = md5SHA1Hash(slices); /* */ $s = 12; case 12: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
 81430  		$s = -1; return [_r$5, 8, $ifaceNil];
 81431  		/* */ } return; } if ($f === undefined) { $f = { $blk: hashForServerKeyExchange }; } $f._i = _i; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._ref = _ref; $f._tuple = _tuple; $f.digest = digest; $f.err = err; $f.h = h; $f.hashFunc = hashFunc; $f.sigType = sigType; $f.signatureAlgorithm = signatureAlgorithm; $f.slice = slice; $f.slices = slices; $f.version = version; $f.$s = $s; $f.$r = $r; return $f;
 81432  	};
 81433  	pickTLS12HashForSignature = function(sigType, clientList) {
 81434  		var _1, _i, _ref, clientList, sigAlg, sigType;
 81435  		if (clientList.$length === 0) {
 81436  			_1 = sigType;
 81437  			if (_1 === (1)) {
 81438  				return [513, $ifaceNil];
 81439  			} else if (_1 === (3)) {
 81440  				return [515, $ifaceNil];
 81441  			} else {
 81442  				return [0, errors.New("tls: unknown signature algorithm")];
 81443  			}
 81444  		}
 81445  		_ref = clientList;
 81446  		_i = 0;
 81447  		while (true) {
 81448  			if (!(_i < _ref.$length)) { break; }
 81449  			sigAlg = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
 81450  			if (!((signatureFromSignatureScheme(sigAlg) === sigType))) {
 81451  				_i++;
 81452  				continue;
 81453  			}
 81454  			if (isSupportedSignatureAlgorithm(sigAlg, supportedSignatureAlgorithms)) {
 81455  				return [sigAlg, $ifaceNil];
 81456  			}
 81457  			_i++;
 81458  		}
 81459  		return [0, errors.New("tls: client doesn't support any common hash functions")];
 81460  	};
 81461  	curveForCurveID = function(id) {
 81462  		var _1, _r, _r$1, _r$2, id, $s, $r;
 81463  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; id = $f.id; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 81464  			_1 = id;
 81465  			/* */ if (_1 === (23)) { $s = 2; continue; }
 81466  			/* */ if (_1 === (24)) { $s = 3; continue; }
 81467  			/* */ if (_1 === (25)) { $s = 4; continue; }
 81468  			/* */ $s = 5; continue;
 81469  			/* if (_1 === (23)) { */ case 2:
 81470  				_r = elliptic.P256(); /* */ $s = 7; case 7: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 81471  				$s = -1; return [_r, true];
 81472  			/* } else if (_1 === (24)) { */ case 3:
 81473  				_r$1 = elliptic.P384(); /* */ $s = 8; case 8: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 81474  				$s = -1; return [_r$1, true];
 81475  			/* } else if (_1 === (25)) { */ case 4:
 81476  				_r$2 = elliptic.P521(); /* */ $s = 9; case 9: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 81477  				$s = -1; return [_r$2, true];
 81478  			/* } else { */ case 5:
 81479  				$s = -1; return [$ifaceNil, false];
 81480  			/* } */ case 6:
 81481  		case 1:
 81482  		$s = -1; return [$ifaceNil, false];
 81483  		/* */ } return; } if ($f === undefined) { $f = { $blk: curveForCurveID }; } $f._1 = _1; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f.id = id; $f.$s = $s; $f.$r = $r; return $f;
 81484  	};
 81485  	ecdheKeyAgreement.ptr.prototype.generateServerKeyExchange = function(config, cert, clientHello, hello) {
 81486  		var _1, _i, _i$1, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, _ref$1, _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, _tuple$5, _tuple$6, _tuple$7, _tuple$8, c, candidate, cert, clientHello, config, curve, digest, ecdhePublic, err, err$1, err$2, err$3, hashFunc, hello, k, ka, ok, ok$1, ok$2, ok$3, preferredCurves, priv, public$1, scalar, serverECDHParams, sig, sigAndHashLen, signatureAlgorithm, skx, x, y, $s, $r;
 81487  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _i = $f._i; _i$1 = $f._i$1; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _r$8 = $f._r$8; _r$9 = $f._r$9; _ref = $f._ref; _ref$1 = $f._ref$1; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; _tuple$4 = $f._tuple$4; _tuple$5 = $f._tuple$5; _tuple$6 = $f._tuple$6; _tuple$7 = $f._tuple$7; _tuple$8 = $f._tuple$8; c = $f.c; candidate = $f.candidate; cert = $f.cert; clientHello = $f.clientHello; config = $f.config; curve = $f.curve; digest = $f.digest; ecdhePublic = $f.ecdhePublic; err = $f.err; err$1 = $f.err$1; err$2 = $f.err$2; err$3 = $f.err$3; hashFunc = $f.hashFunc; hello = $f.hello; k = $f.k; ka = $f.ka; ok = $f.ok; ok$1 = $f.ok$1; ok$2 = $f.ok$2; ok$3 = $f.ok$3; preferredCurves = $f.preferredCurves; priv = $f.priv; public$1 = $f.public$1; scalar = $f.scalar; serverECDHParams = $f.serverECDHParams; sig = $f.sig; sigAndHashLen = $f.sigAndHashLen; signatureAlgorithm = $f.signatureAlgorithm; skx = $f.skx; x = $f.x; y = $f.y; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 81488  		public$1 = [public$1];
 81489  		scalar = [scalar];
 81490  		ka = this;
 81491  		preferredCurves = config.curvePreferences();
 81492  		_ref = preferredCurves;
 81493  		_i = 0;
 81494  		NextCandidate:
 81495  		while (true) {
 81496  			if (!(_i < _ref.$length)) { break; }
 81497  			candidate = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
 81498  			_ref$1 = clientHello.supportedCurves;
 81499  			_i$1 = 0;
 81500  			while (true) {
 81501  				if (!(_i$1 < _ref$1.$length)) { break; }
 81502  				c = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]);
 81503  				if (candidate === c) {
 81504  					ka.curveid = c;
 81505  					break NextCandidate;
 81506  				}
 81507  				_i$1++;
 81508  			}
 81509  			_i++;
 81510  		}
 81511  		if (ka.curveid === 0) {
 81512  			$s = -1; return [ptrType$22.nil, errors.New("tls: no supported elliptic curves offered")];
 81513  		}
 81514  		ecdhePublic = sliceType$7.nil;
 81515  		/* */ if (ka.curveid === 29) { $s = 1; continue; }
 81516  		/* */ $s = 2; continue;
 81517  		/* if (ka.curveid === 29) { */ case 1:
 81518  			_tmp = arrayType.zero();
 81519  			_tmp$1 = arrayType.zero();
 81520  			scalar[0] = $clone(_tmp, arrayType);
 81521  			public$1[0] = $clone(_tmp$1, arrayType);
 81522  			_r = io.ReadFull(config.rand(), new sliceType$7(scalar[0])); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 81523  			_tuple = _r;
 81524  			err = _tuple[1];
 81525  			if (!($interfaceIsEqual(err, $ifaceNil))) {
 81526  				$s = -1; return [ptrType$22.nil, err];
 81527  			}
 81528  			curve25519.ScalarBaseMult(public$1[0], scalar[0]);
 81529  			ka.privateKey = new sliceType$7(scalar[0]);
 81530  			ecdhePublic = new sliceType$7(public$1[0]);
 81531  			$s = 3; continue;
 81532  		/* } else { */ case 2:
 81533  			_r$1 = curveForCurveID(ka.curveid); /* */ $s = 5; case 5: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 81534  			_tuple$1 = _r$1;
 81535  			curve = _tuple$1[0];
 81536  			ok = _tuple$1[1];
 81537  			if (!ok) {
 81538  				$s = -1; return [ptrType$22.nil, errors.New("tls: preferredCurves includes unsupported curve")];
 81539  			}
 81540  			_tmp$2 = ptrType$2.nil;
 81541  			_tmp$3 = ptrType$2.nil;
 81542  			x = _tmp$2;
 81543  			y = _tmp$3;
 81544  			err$1 = $ifaceNil;
 81545  			_r$2 = elliptic.GenerateKey(curve, config.rand()); /* */ $s = 6; case 6: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 81546  			_tuple$2 = _r$2;
 81547  			ka.privateKey = _tuple$2[0];
 81548  			x = _tuple$2[1];
 81549  			y = _tuple$2[2];
 81550  			err$1 = _tuple$2[3];
 81551  			if (!($interfaceIsEqual(err$1, $ifaceNil))) {
 81552  				$s = -1; return [ptrType$22.nil, err$1];
 81553  			}
 81554  			_r$3 = elliptic.Marshal(curve, x, y); /* */ $s = 7; case 7: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 81555  			ecdhePublic = _r$3;
 81556  		/* } */ case 3:
 81557  		serverECDHParams = $makeSlice(sliceType$7, (4 + ecdhePublic.$length >> 0));
 81558  		(0 >= serverECDHParams.$length ? ($throwRuntimeError("index out of range"), undefined) : serverECDHParams.$array[serverECDHParams.$offset + 0] = 3);
 81559  		(1 >= serverECDHParams.$length ? ($throwRuntimeError("index out of range"), undefined) : serverECDHParams.$array[serverECDHParams.$offset + 1] = (((ka.curveid >>> 8 << 16 >>> 16) << 24 >>> 24)));
 81560  		(2 >= serverECDHParams.$length ? ($throwRuntimeError("index out of range"), undefined) : serverECDHParams.$array[serverECDHParams.$offset + 2] = ((ka.curveid << 24 >>> 24)));
 81561  		(3 >= serverECDHParams.$length ? ($throwRuntimeError("index out of range"), undefined) : serverECDHParams.$array[serverECDHParams.$offset + 3] = ((ecdhePublic.$length << 24 >>> 24)));
 81562  		$copySlice($subslice(serverECDHParams, 4), ecdhePublic);
 81563  		signatureAlgorithm = 0;
 81564  		if (ka.version >= 771) {
 81565  			err$2 = $ifaceNil;
 81566  			_tuple$3 = pickTLS12HashForSignature(ka.sigType, clientHello.supportedSignatureAlgorithms);
 81567  			signatureAlgorithm = _tuple$3[0];
 81568  			err$2 = _tuple$3[1];
 81569  			if (!($interfaceIsEqual(err$2, $ifaceNil))) {
 81570  				$s = -1; return [ptrType$22.nil, err$2];
 81571  			}
 81572  		}
 81573  		_r$4 = hashForServerKeyExchange(ka.sigType, signatureAlgorithm, ka.version, new sliceType$9([clientHello.random, hello.random, serverECDHParams])); /* */ $s = 8; case 8: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 81574  		_tuple$4 = _r$4;
 81575  		digest = _tuple$4[0];
 81576  		hashFunc = _tuple$4[1];
 81577  		err$3 = _tuple$4[2];
 81578  		if (!($interfaceIsEqual(err$3, $ifaceNil))) {
 81579  			$s = -1; return [ptrType$22.nil, err$3];
 81580  		}
 81581  		_tuple$5 = $assertType(cert.PrivateKey, crypto.Signer, true);
 81582  		priv = _tuple$5[0];
 81583  		ok$1 = _tuple$5[1];
 81584  		if (!ok$1) {
 81585  			$s = -1; return [ptrType$22.nil, errors.New("tls: certificate private key does not implement crypto.Signer")];
 81586  		}
 81587  		sig = sliceType$7.nil;
 81588  			_1 = ka.sigType;
 81589  			/* */ if (_1 === (3)) { $s = 10; continue; }
 81590  			/* */ if (_1 === (1)) { $s = 11; continue; }
 81591  			/* */ $s = 12; continue;
 81592  			/* if (_1 === (3)) { */ case 10:
 81593  				_r$5 = priv.Public(); /* */ $s = 14; case 14: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
 81594  				_tuple$6 = $assertType(_r$5, ptrType$20, true);
 81595  				ok$2 = _tuple$6[1];
 81596  				if (!ok$2) {
 81597  					$s = -1; return [ptrType$22.nil, errors.New("tls: ECDHE ECDSA requires an ECDSA server key")];
 81598  				}
 81599  				$s = 13; continue;
 81600  			/* } else if (_1 === (1)) { */ case 11:
 81601  				_r$6 = priv.Public(); /* */ $s = 15; case 15: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
 81602  				_tuple$7 = $assertType(_r$6, ptrType$19, true);
 81603  				ok$3 = _tuple$7[1];
 81604  				if (!ok$3) {
 81605  					$s = -1; return [ptrType$22.nil, errors.New("tls: ECDHE RSA requires a RSA server key")];
 81606  				}
 81607  				$s = 13; continue;
 81608  			/* } else { */ case 12:
 81609  				$s = -1; return [ptrType$22.nil, errors.New("tls: unknown ECDHE signature algorithm")];
 81610  			/* } */ case 13:
 81611  		case 9:
 81612  		_r$7 = priv.Sign(config.rand(), digest, new crypto.Hash(hashFunc)); /* */ $s = 16; case 16: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
 81613  		_tuple$8 = _r$7;
 81614  		sig = _tuple$8[0];
 81615  		err$3 = _tuple$8[1];
 81616  		/* */ if (!($interfaceIsEqual(err$3, $ifaceNil))) { $s = 17; continue; }
 81617  		/* */ $s = 18; continue;
 81618  		/* if (!($interfaceIsEqual(err$3, $ifaceNil))) { */ case 17:
 81619  			_r$8 = err$3.Error(); /* */ $s = 19; case 19: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
 81620  			_r$9 = errors.New("tls: failed to sign ECDHE parameters: " + _r$8); /* */ $s = 20; case 20: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 81621  			$s = -1; return [ptrType$22.nil, _r$9];
 81622  		/* } */ case 18:
 81623  		skx = new serverKeyExchangeMsg.ptr(sliceType$7.nil, sliceType$7.nil);
 81624  		sigAndHashLen = 0;
 81625  		if (ka.version >= 771) {
 81626  			sigAndHashLen = 2;
 81627  		}
 81628  		skx.key = $makeSlice(sliceType$7, (((serverECDHParams.$length + sigAndHashLen >> 0) + 2 >> 0) + sig.$length >> 0));
 81629  		$copySlice(skx.key, serverECDHParams);
 81630  		k = $subslice(skx.key, serverECDHParams.$length);
 81631  		if (ka.version >= 771) {
 81632  			(0 >= k.$length ? ($throwRuntimeError("index out of range"), undefined) : k.$array[k.$offset + 0] = (((signatureAlgorithm >>> 8 << 16 >>> 16) << 24 >>> 24)));
 81633  			(1 >= k.$length ? ($throwRuntimeError("index out of range"), undefined) : k.$array[k.$offset + 1] = ((signatureAlgorithm << 24 >>> 24)));
 81634  			k = $subslice(k, 2);
 81635  		}
 81636  		(0 >= k.$length ? ($throwRuntimeError("index out of range"), undefined) : k.$array[k.$offset + 0] = (((sig.$length >> 8 >> 0) << 24 >>> 24)));
 81637  		(1 >= k.$length ? ($throwRuntimeError("index out of range"), undefined) : k.$array[k.$offset + 1] = ((sig.$length << 24 >>> 24)));
 81638  		$copySlice($subslice(k, 2), sig);
 81639  		$s = -1; return [skx, $ifaceNil];
 81640  		/* */ } return; } if ($f === undefined) { $f = { $blk: ecdheKeyAgreement.ptr.prototype.generateServerKeyExchange }; } $f._1 = _1; $f._i = _i; $f._i$1 = _i$1; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._r$8 = _r$8; $f._r$9 = _r$9; $f._ref = _ref; $f._ref$1 = _ref$1; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f._tuple$4 = _tuple$4; $f._tuple$5 = _tuple$5; $f._tuple$6 = _tuple$6; $f._tuple$7 = _tuple$7; $f._tuple$8 = _tuple$8; $f.c = c; $f.candidate = candidate; $f.cert = cert; $f.clientHello = clientHello; $f.config = config; $f.curve = curve; $f.digest = digest; $f.ecdhePublic = ecdhePublic; $f.err = err; $f.err$1 = err$1; $f.err$2 = err$2; $f.err$3 = err$3; $f.hashFunc = hashFunc; $f.hello = hello; $f.k = k; $f.ka = ka; $f.ok = ok; $f.ok$1 = ok$1; $f.ok$2 = ok$2; $f.ok$3 = ok$3; $f.preferredCurves = preferredCurves; $f.priv = priv; $f.public$1 = public$1; $f.scalar = scalar; $f.serverECDHParams = serverECDHParams; $f.sig = sig; $f.sigAndHashLen = sigAndHashLen; $f.signatureAlgorithm = signatureAlgorithm; $f.skx = skx; $f.x = x; $f.y = y; $f.$s = $s; $f.$r = $r; return $f;
 81641  	};
 81642  	ecdheKeyAgreement.prototype.generateServerKeyExchange = function(config, cert, clientHello, hello) { return this.$val.generateServerKeyExchange(config, cert, clientHello, hello); };
 81643  	ecdheKeyAgreement.ptr.prototype.processClientKeyExchange = function(config, cert, ckx, version) {
 81644  		var _r, _r$1, _r$2, _r$3, _tmp, _tmp$1, _tmp$2, _tuple, _tuple$1, _tuple$2, cert, ckx, config, curve, ka, ok, preMasterSecret, scalar, sharedKey, theirPublic, version, x, x$1, xBytes, y, $s, $r;
 81645  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; cert = $f.cert; ckx = $f.ckx; config = $f.config; curve = $f.curve; ka = $f.ka; ok = $f.ok; preMasterSecret = $f.preMasterSecret; scalar = $f.scalar; sharedKey = $f.sharedKey; theirPublic = $f.theirPublic; version = $f.version; x = $f.x; x$1 = $f.x$1; xBytes = $f.xBytes; y = $f.y; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 81646  		scalar = [scalar];
 81647  		sharedKey = [sharedKey];
 81648  		theirPublic = [theirPublic];
 81649  		ka = this;
 81650  		if ((ckx.ciphertext.$length === 0) || !(((((x = ckx.ciphertext, (0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0])) >> 0)) === (ckx.ciphertext.$length - 1 >> 0)))) {
 81651  			$s = -1; return [sliceType$7.nil, errClientKeyExchange];
 81652  		}
 81653  		if (ka.curveid === 29) {
 81654  			if (!((ckx.ciphertext.$length === 33))) {
 81655  				$s = -1; return [sliceType$7.nil, errClientKeyExchange];
 81656  			}
 81657  			_tmp = arrayType.zero();
 81658  			_tmp$1 = arrayType.zero();
 81659  			_tmp$2 = arrayType.zero();
 81660  			theirPublic[0] = $clone(_tmp, arrayType);
 81661  			sharedKey[0] = $clone(_tmp$1, arrayType);
 81662  			scalar[0] = $clone(_tmp$2, arrayType);
 81663  			$copySlice(new sliceType$7(theirPublic[0]), $subslice(ckx.ciphertext, 1));
 81664  			$copySlice(new sliceType$7(scalar[0]), ka.privateKey);
 81665  			curve25519.ScalarMult(sharedKey[0], scalar[0], theirPublic[0]);
 81666  			$s = -1; return [new sliceType$7(sharedKey[0]), $ifaceNil];
 81667  		}
 81668  		_r = curveForCurveID(ka.curveid); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 81669  		_tuple = _r;
 81670  		curve = _tuple[0];
 81671  		ok = _tuple[1];
 81672  		if (!ok) {
 81673  			$panic(new $String("internal error"));
 81674  		}
 81675  		_r$1 = elliptic.Unmarshal(curve, $subslice(ckx.ciphertext, 1)); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 81676  		_tuple$1 = _r$1;
 81677  		x$1 = _tuple$1[0];
 81678  		y = _tuple$1[1];
 81679  		if (x$1 === ptrType$2.nil) {
 81680  			$s = -1; return [sliceType$7.nil, errClientKeyExchange];
 81681  		}
 81682  		_r$2 = curve.ScalarMult(x$1, y, ka.privateKey); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 81683  		_tuple$2 = _r$2;
 81684  		x$1 = _tuple$2[0];
 81685  		_r$3 = curve.Params(); /* */ $s = 4; case 4: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 81686  		preMasterSecret = $makeSlice(sliceType$7, (((_r$3.BitSize + 7 >> 0)) >> 3 >> 0));
 81687  		xBytes = x$1.Bytes();
 81688  		$copySlice($subslice(preMasterSecret, (preMasterSecret.$length - xBytes.$length >> 0)), xBytes);
 81689  		$s = -1; return [preMasterSecret, $ifaceNil];
 81690  		/* */ } return; } if ($f === undefined) { $f = { $blk: ecdheKeyAgreement.ptr.prototype.processClientKeyExchange }; } $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f.cert = cert; $f.ckx = ckx; $f.config = config; $f.curve = curve; $f.ka = ka; $f.ok = ok; $f.preMasterSecret = preMasterSecret; $f.scalar = scalar; $f.sharedKey = sharedKey; $f.theirPublic = theirPublic; $f.version = version; $f.x = x; $f.x$1 = x$1; $f.xBytes = xBytes; $f.y = y; $f.$s = $s; $f.$r = $r; return $f;
 81691  	};
 81692  	ecdheKeyAgreement.prototype.processClientKeyExchange = function(config, cert, ckx, version) { return this.$val.processClientKeyExchange(config, cert, ckx, version); };
 81693  	ecdheKeyAgreement.ptr.prototype.processServerKeyExchange = function(config, clientHello, serverHello, cert, skx) {
 81694  		var _1, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, _tuple$5, cert, clientHello, config, curve, digest, ecdsaSig, err, err$1, err$2, hashFunc, ka, ok, ok$1, ok$2, pubKey, pubKey$1, publicKey, publicLen, serverECDHParams, serverHello, sig, sigLen, signatureAlgorithm, skx, x, x$1, x$2, x$3, $s, $r;
 81695  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; _tuple$4 = $f._tuple$4; _tuple$5 = $f._tuple$5; cert = $f.cert; clientHello = $f.clientHello; config = $f.config; curve = $f.curve; digest = $f.digest; ecdsaSig = $f.ecdsaSig; err = $f.err; err$1 = $f.err$1; err$2 = $f.err$2; hashFunc = $f.hashFunc; ka = $f.ka; ok = $f.ok; ok$1 = $f.ok$1; ok$2 = $f.ok$2; pubKey = $f.pubKey; pubKey$1 = $f.pubKey$1; publicKey = $f.publicKey; publicLen = $f.publicLen; serverECDHParams = $f.serverECDHParams; serverHello = $f.serverHello; sig = $f.sig; sigLen = $f.sigLen; signatureAlgorithm = $f.signatureAlgorithm; skx = $f.skx; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; x$3 = $f.x$3; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 81696  		ka = this;
 81697  		if (skx.key.$length < 4) {
 81698  			$s = -1; return errServerKeyExchange;
 81699  		}
 81700  		if (!(((x = skx.key, (0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0])) === 3))) {
 81701  			$s = -1; return errors.New("tls: server selected unsupported curve");
 81702  		}
 81703  		ka.curveid = (((((x$1 = skx.key, (1 >= x$1.$length ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + 1])) << 16 >>> 16)) << 8 << 16 >>> 16) | (((x$2 = skx.key, (2 >= x$2.$length ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + 2])) << 16 >>> 16))) >>> 0;
 81704  		publicLen = (((x$3 = skx.key, (3 >= x$3.$length ? ($throwRuntimeError("index out of range"), undefined) : x$3.$array[x$3.$offset + 3])) >> 0));
 81705  		if ((publicLen + 4 >> 0) > skx.key.$length) {
 81706  			$s = -1; return errServerKeyExchange;
 81707  		}
 81708  		serverECDHParams = $subslice(skx.key, 0, (4 + publicLen >> 0));
 81709  		publicKey = $subslice(serverECDHParams, 4);
 81710  		sig = $subslice(skx.key, (4 + publicLen >> 0));
 81711  		if (sig.$length < 2) {
 81712  			$s = -1; return errServerKeyExchange;
 81713  		}
 81714  		/* */ if (ka.curveid === 29) { $s = 1; continue; }
 81715  		/* */ $s = 2; continue;
 81716  		/* if (ka.curveid === 29) { */ case 1:
 81717  			if (!((publicKey.$length === 32))) {
 81718  				$s = -1; return errors.New("tls: bad X25519 public value");
 81719  			}
 81720  			ka.publicKey = publicKey;
 81721  			$s = 3; continue;
 81722  		/* } else { */ case 2:
 81723  			_r = curveForCurveID(ka.curveid); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 81724  			_tuple = _r;
 81725  			curve = _tuple[0];
 81726  			ok = _tuple[1];
 81727  			if (!ok) {
 81728  				$s = -1; return errors.New("tls: server selected unsupported curve");
 81729  			}
 81730  			_r$1 = elliptic.Unmarshal(curve, publicKey); /* */ $s = 5; case 5: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 81731  			_tuple$1 = _r$1;
 81732  			ka.x = _tuple$1[0];
 81733  			ka.y = _tuple$1[1];
 81734  			if (ka.x === ptrType$2.nil) {
 81735  				$s = -1; return errServerKeyExchange;
 81736  			}
 81737  		/* } */ case 3:
 81738  		signatureAlgorithm = 0;
 81739  		if (ka.version >= 771) {
 81740  			signatureAlgorithm = (((((0 >= sig.$length ? ($throwRuntimeError("index out of range"), undefined) : sig.$array[sig.$offset + 0]) << 16 >>> 16)) << 8 << 16 >>> 16) | (((1 >= sig.$length ? ($throwRuntimeError("index out of range"), undefined) : sig.$array[sig.$offset + 1]) << 16 >>> 16))) >>> 0;
 81741  			if (!((signatureFromSignatureScheme(signatureAlgorithm) === ka.sigType))) {
 81742  				$s = -1; return errServerKeyExchange;
 81743  			}
 81744  			sig = $subslice(sig, 2);
 81745  			if (sig.$length < 2) {
 81746  				$s = -1; return errServerKeyExchange;
 81747  			}
 81748  		}
 81749  		sigLen = ((((0 >= sig.$length ? ($throwRuntimeError("index out of range"), undefined) : sig.$array[sig.$offset + 0]) >> 0)) << 8 >> 0) | (((1 >= sig.$length ? ($throwRuntimeError("index out of range"), undefined) : sig.$array[sig.$offset + 1]) >> 0));
 81750  		if (!(((sigLen + 2 >> 0) === sig.$length))) {
 81751  			$s = -1; return errServerKeyExchange;
 81752  		}
 81753  		sig = $subslice(sig, 2);
 81754  		_r$2 = hashForServerKeyExchange(ka.sigType, signatureAlgorithm, ka.version, new sliceType$9([clientHello.random, serverHello.random, serverECDHParams])); /* */ $s = 6; case 6: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 81755  		_tuple$2 = _r$2;
 81756  		digest = _tuple$2[0];
 81757  		hashFunc = _tuple$2[1];
 81758  		err = _tuple$2[2];
 81759  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 81760  			$s = -1; return err;
 81761  		}
 81762  			_1 = ka.sigType;
 81763  			/* */ if (_1 === (3)) { $s = 8; continue; }
 81764  			/* */ if (_1 === (1)) { $s = 9; continue; }
 81765  			/* */ $s = 10; continue;
 81766  			/* if (_1 === (3)) { */ case 8:
 81767  				_tuple$3 = $assertType(cert.PublicKey, ptrType$20, true);
 81768  				pubKey = _tuple$3[0];
 81769  				ok$1 = _tuple$3[1];
 81770  				if (!ok$1) {
 81771  					$s = -1; return errors.New("tls: ECDHE ECDSA requires a ECDSA server public key");
 81772  				}
 81773  				ecdsaSig = new ecdsaSignature.ptr(ptrType$2.nil, ptrType$2.nil);
 81774  				_r$3 = asn1.Unmarshal(sig, ecdsaSig); /* */ $s = 12; case 12: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 81775  				_tuple$4 = _r$3;
 81776  				err$1 = _tuple$4[1];
 81777  				if (!($interfaceIsEqual(err$1, $ifaceNil))) {
 81778  					$s = -1; return err$1;
 81779  				}
 81780  				if (ecdsaSig.R.Sign() <= 0 || ecdsaSig.S.Sign() <= 0) {
 81781  					$s = -1; return errors.New("tls: ECDSA signature contained zero or negative values");
 81782  				}
 81783  				_r$4 = ecdsa.Verify(pubKey, digest, ecdsaSig.R, ecdsaSig.S); /* */ $s = 15; case 15: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 81784  				/* */ if (!_r$4) { $s = 13; continue; }
 81785  				/* */ $s = 14; continue;
 81786  				/* if (!_r$4) { */ case 13:
 81787  					$s = -1; return errors.New("tls: ECDSA verification failure");
 81788  				/* } */ case 14:
 81789  				$s = 11; continue;
 81790  			/* } else if (_1 === (1)) { */ case 9:
 81791  				_tuple$5 = $assertType(cert.PublicKey, ptrType$19, true);
 81792  				pubKey$1 = _tuple$5[0];
 81793  				ok$2 = _tuple$5[1];
 81794  				if (!ok$2) {
 81795  					$s = -1; return errors.New("tls: ECDHE RSA requires a RSA server public key");
 81796  				}
 81797  				_r$5 = rsa.VerifyPKCS1v15(pubKey$1, hashFunc, digest, sig); /* */ $s = 16; case 16: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
 81798  				err$2 = _r$5;
 81799  				if (!($interfaceIsEqual(err$2, $ifaceNil))) {
 81800  					$s = -1; return err$2;
 81801  				}
 81802  				$s = 11; continue;
 81803  			/* } else { */ case 10:
 81804  				$s = -1; return errors.New("tls: unknown ECDHE signature algorithm");
 81805  			/* } */ case 11:
 81806  		case 7:
 81807  		$s = -1; return $ifaceNil;
 81808  		/* */ } return; } if ($f === undefined) { $f = { $blk: ecdheKeyAgreement.ptr.prototype.processServerKeyExchange }; } $f._1 = _1; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f._tuple$4 = _tuple$4; $f._tuple$5 = _tuple$5; $f.cert = cert; $f.clientHello = clientHello; $f.config = config; $f.curve = curve; $f.digest = digest; $f.ecdsaSig = ecdsaSig; $f.err = err; $f.err$1 = err$1; $f.err$2 = err$2; $f.hashFunc = hashFunc; $f.ka = ka; $f.ok = ok; $f.ok$1 = ok$1; $f.ok$2 = ok$2; $f.pubKey = pubKey; $f.pubKey$1 = pubKey$1; $f.publicKey = publicKey; $f.publicLen = publicLen; $f.serverECDHParams = serverECDHParams; $f.serverHello = serverHello; $f.sig = sig; $f.sigLen = sigLen; $f.signatureAlgorithm = signatureAlgorithm; $f.skx = skx; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.x$3 = x$3; $f.$s = $s; $f.$r = $r; return $f;
 81809  	};
 81810  	ecdheKeyAgreement.prototype.processServerKeyExchange = function(config, clientHello, serverHello, cert, skx) { return this.$val.processServerKeyExchange(config, clientHello, serverHello, cert, skx); };
 81811  	ecdheKeyAgreement.ptr.prototype.generateClientKeyExchange = function(config, clientHello, cert) {
 81812  		var _r, _r$1, _r$2, _r$3, _r$4, _r$5, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tuple, _tuple$1, _tuple$2, _tuple$3, cert, ckx, clientHello, config, curve, err, err$1, ka, mx, my, ok, ourPublic, preMasterSecret, priv, scalar, serialized, sharedKey, theirPublic, x, x$1, xBytes, $s, $r;
 81813  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tmp$4 = $f._tmp$4; _tmp$5 = $f._tmp$5; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; cert = $f.cert; ckx = $f.ckx; clientHello = $f.clientHello; config = $f.config; curve = $f.curve; err = $f.err; err$1 = $f.err$1; ka = $f.ka; mx = $f.mx; my = $f.my; ok = $f.ok; ourPublic = $f.ourPublic; preMasterSecret = $f.preMasterSecret; priv = $f.priv; scalar = $f.scalar; serialized = $f.serialized; sharedKey = $f.sharedKey; theirPublic = $f.theirPublic; x = $f.x; x$1 = $f.x$1; xBytes = $f.xBytes; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 81814  		ourPublic = [ourPublic];
 81815  		scalar = [scalar];
 81816  		sharedKey = [sharedKey];
 81817  		theirPublic = [theirPublic];
 81818  		ka = this;
 81819  		if (ka.curveid === 0) {
 81820  			$s = -1; return [sliceType$7.nil, ptrType$25.nil, errors.New("tls: missing ServerKeyExchange message")];
 81821  		}
 81822  		_tmp = sliceType$7.nil;
 81823  		_tmp$1 = sliceType$7.nil;
 81824  		serialized = _tmp;
 81825  		preMasterSecret = _tmp$1;
 81826  		/* */ if (ka.curveid === 29) { $s = 1; continue; }
 81827  		/* */ $s = 2; continue;
 81828  		/* if (ka.curveid === 29) { */ case 1:
 81829  			_tmp$2 = arrayType.zero();
 81830  			_tmp$3 = arrayType.zero();
 81831  			_tmp$4 = arrayType.zero();
 81832  			_tmp$5 = arrayType.zero();
 81833  			ourPublic[0] = $clone(_tmp$2, arrayType);
 81834  			theirPublic[0] = $clone(_tmp$3, arrayType);
 81835  			sharedKey[0] = $clone(_tmp$4, arrayType);
 81836  			scalar[0] = $clone(_tmp$5, arrayType);
 81837  			_r = io.ReadFull(config.rand(), new sliceType$7(scalar[0])); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 81838  			_tuple = _r;
 81839  			err = _tuple[1];
 81840  			if (!($interfaceIsEqual(err, $ifaceNil))) {
 81841  				$s = -1; return [sliceType$7.nil, ptrType$25.nil, err];
 81842  			}
 81843  			$copySlice(new sliceType$7(theirPublic[0]), ka.publicKey);
 81844  			curve25519.ScalarBaseMult(ourPublic[0], scalar[0]);
 81845  			curve25519.ScalarMult(sharedKey[0], scalar[0], theirPublic[0]);
 81846  			serialized = new sliceType$7(ourPublic[0]);
 81847  			preMasterSecret = new sliceType$7(sharedKey[0]);
 81848  			$s = 3; continue;
 81849  		/* } else { */ case 2:
 81850  			_r$1 = curveForCurveID(ka.curveid); /* */ $s = 5; case 5: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 81851  			_tuple$1 = _r$1;
 81852  			curve = _tuple$1[0];
 81853  			ok = _tuple$1[1];
 81854  			if (!ok) {
 81855  				$panic(new $String("internal error"));
 81856  			}
 81857  			_r$2 = elliptic.GenerateKey(curve, config.rand()); /* */ $s = 6; case 6: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 81858  			_tuple$2 = _r$2;
 81859  			priv = _tuple$2[0];
 81860  			mx = _tuple$2[1];
 81861  			my = _tuple$2[2];
 81862  			err$1 = _tuple$2[3];
 81863  			if (!($interfaceIsEqual(err$1, $ifaceNil))) {
 81864  				$s = -1; return [sliceType$7.nil, ptrType$25.nil, err$1];
 81865  			}
 81866  			_r$3 = curve.ScalarMult(ka.x, ka.y, priv); /* */ $s = 7; case 7: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 81867  			_tuple$3 = _r$3;
 81868  			x = _tuple$3[0];
 81869  			_r$4 = curve.Params(); /* */ $s = 8; case 8: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 81870  			preMasterSecret = $makeSlice(sliceType$7, (((_r$4.BitSize + 7 >> 0)) >> 3 >> 0));
 81871  			xBytes = x.Bytes();
 81872  			$copySlice($subslice(preMasterSecret, (preMasterSecret.$length - xBytes.$length >> 0)), xBytes);
 81873  			_r$5 = elliptic.Marshal(curve, mx, my); /* */ $s = 9; case 9: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
 81874  			serialized = _r$5;
 81875  		/* } */ case 3:
 81876  		ckx = new clientKeyExchangeMsg.ptr(sliceType$7.nil, sliceType$7.nil);
 81877  		ckx.ciphertext = $makeSlice(sliceType$7, (1 + serialized.$length >> 0));
 81878  		(x$1 = ckx.ciphertext, (0 >= x$1.$length ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + 0] = ((serialized.$length << 24 >>> 24))));
 81879  		$copySlice($subslice(ckx.ciphertext, 1), serialized);
 81880  		$s = -1; return [preMasterSecret, ckx, $ifaceNil];
 81881  		/* */ } return; } if ($f === undefined) { $f = { $blk: ecdheKeyAgreement.ptr.prototype.generateClientKeyExchange }; } $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tmp$4 = _tmp$4; $f._tmp$5 = _tmp$5; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f.cert = cert; $f.ckx = ckx; $f.clientHello = clientHello; $f.config = config; $f.curve = curve; $f.err = err; $f.err$1 = err$1; $f.ka = ka; $f.mx = mx; $f.my = my; $f.ok = ok; $f.ourPublic = ourPublic; $f.preMasterSecret = preMasterSecret; $f.priv = priv; $f.scalar = scalar; $f.serialized = serialized; $f.sharedKey = sharedKey; $f.theirPublic = theirPublic; $f.x = x; $f.x$1 = x$1; $f.xBytes = xBytes; $f.$s = $s; $f.$r = $r; return $f;
 81882  	};
 81883  	ecdheKeyAgreement.prototype.generateClientKeyExchange = function(config, clientHello, cert) { return this.$val.generateClientKeyExchange(config, clientHello, cert); };
 81884  	splitPreMasterSecret = function(secret) {
 81885  		var _q, _q$1, s1, s2, secret;
 81886  		s1 = sliceType$7.nil;
 81887  		s2 = sliceType$7.nil;
 81888  		s1 = $subslice(secret, 0, (_q = ((secret.$length + 1 >> 0)) / 2, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")));
 81889  		s2 = $subslice(secret, (_q$1 = secret.$length / 2, (_q$1 === _q$1 && _q$1 !== 1/0 && _q$1 !== -1/0) ? _q$1 >> 0 : $throwRuntimeError("integer divide by zero")));
 81890  		return [s1, s2];
 81891  	};
 81892  	pHash = function(result, secret, seed, hash$1) {
 81893  		var _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, a, b, h, hash$1, j, result, secret, seed, $s, $r;
 81894  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; a = $f.a; b = $f.b; h = $f.h; hash$1 = $f.hash$1; j = $f.j; result = $f.result; secret = $f.secret; seed = $f.seed; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 81895  		_r = hmac.New(hash$1, secret); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 81896  		h = _r;
 81897  		_r$1 = h.Write(seed); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 81898  		_r$1;
 81899  		_r$2 = h.Sum(sliceType$7.nil); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 81900  		a = _r$2;
 81901  		j = 0;
 81902  		/* while (true) { */ case 4:
 81903  			/* if (!(j < result.$length)) { break; } */ if(!(j < result.$length)) { $s = 5; continue; }
 81904  			$r = h.Reset(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 81905  			_r$3 = h.Write(a); /* */ $s = 7; case 7: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 81906  			_r$3;
 81907  			_r$4 = h.Write(seed); /* */ $s = 8; case 8: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 81908  			_r$4;
 81909  			_r$5 = h.Sum(sliceType$7.nil); /* */ $s = 9; case 9: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
 81910  			b = _r$5;
 81911  			$copySlice($subslice(result, j), b);
 81912  			j = j + (b.$length) >> 0;
 81913  			$r = h.Reset(); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 81914  			_r$6 = h.Write(a); /* */ $s = 11; case 11: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
 81915  			_r$6;
 81916  			_r$7 = h.Sum(sliceType$7.nil); /* */ $s = 12; case 12: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
 81917  			a = _r$7;
 81918  		/* } */ $s = 4; continue; case 5:
 81919  		$s = -1; return;
 81920  		/* */ } return; } if ($f === undefined) { $f = { $blk: pHash }; } $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f.a = a; $f.b = b; $f.h = h; $f.hash$1 = hash$1; $f.j = j; $f.result = result; $f.secret = secret; $f.seed = seed; $f.$s = $s; $f.$r = $r; return $f;
 81921  	};
 81922  	prf10 = function(result, secret, label, seed) {
 81923  		var _i, _ref, _tuple, b, hashMD5, hashSHA1, i, label, labelAndSeed, result, result2, s1, s2, secret, seed, $s, $r;
 81924  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _i = $f._i; _ref = $f._ref; _tuple = $f._tuple; b = $f.b; hashMD5 = $f.hashMD5; hashSHA1 = $f.hashSHA1; i = $f.i; label = $f.label; labelAndSeed = $f.labelAndSeed; result = $f.result; result2 = $f.result2; s1 = $f.s1; s2 = $f.s2; secret = $f.secret; seed = $f.seed; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 81925  		hashSHA1 = sha1.New;
 81926  		hashMD5 = md5.New;
 81927  		labelAndSeed = $makeSlice(sliceType$7, (label.$length + seed.$length >> 0));
 81928  		$copySlice(labelAndSeed, label);
 81929  		$copySlice($subslice(labelAndSeed, label.$length), seed);
 81930  		_tuple = splitPreMasterSecret(secret);
 81931  		s1 = _tuple[0];
 81932  		s2 = _tuple[1];
 81933  		$r = pHash(result, s1, labelAndSeed, hashMD5); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 81934  		result2 = $makeSlice(sliceType$7, result.$length);
 81935  		$r = pHash(result2, s2, labelAndSeed, hashSHA1); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 81936  		_ref = result2;
 81937  		_i = 0;
 81938  		while (true) {
 81939  			if (!(_i < _ref.$length)) { break; }
 81940  			i = _i;
 81941  			b = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
 81942  			((i < 0 || i >= result.$length) ? ($throwRuntimeError("index out of range"), undefined) : result.$array[result.$offset + i] = ((((i < 0 || i >= result.$length) ? ($throwRuntimeError("index out of range"), undefined) : result.$array[result.$offset + i]) ^ (b)) << 24 >>> 24));
 81943  			_i++;
 81944  		}
 81945  		$s = -1; return;
 81946  		/* */ } return; } if ($f === undefined) { $f = { $blk: prf10 }; } $f._i = _i; $f._ref = _ref; $f._tuple = _tuple; $f.b = b; $f.hashMD5 = hashMD5; $f.hashSHA1 = hashSHA1; $f.i = i; $f.label = label; $f.labelAndSeed = labelAndSeed; $f.result = result; $f.result2 = result2; $f.s1 = s1; $f.s2 = s2; $f.secret = secret; $f.seed = seed; $f.$s = $s; $f.$r = $r; return $f;
 81947  	};
 81948  	prf12 = function(hashFunc) {
 81949  		var hashFunc;
 81950  		return (function $b(result, secret, label, seed) {
 81951  			var label, labelAndSeed, result, secret, seed, $s, $r;
 81952  			/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; label = $f.label; labelAndSeed = $f.labelAndSeed; result = $f.result; secret = $f.secret; seed = $f.seed; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 81953  			labelAndSeed = $makeSlice(sliceType$7, (label.$length + seed.$length >> 0));
 81954  			$copySlice(labelAndSeed, label);
 81955  			$copySlice($subslice(labelAndSeed, label.$length), seed);
 81956  			$r = pHash(result, secret, labelAndSeed, hashFunc); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 81957  			$s = -1; return;
 81958  			/* */ } return; } if ($f === undefined) { $f = { $blk: $b }; } $f.label = label; $f.labelAndSeed = labelAndSeed; $f.result = result; $f.secret = secret; $f.seed = seed; $f.$s = $s; $f.$r = $r; return $f;
 81959  		});
 81960  	};
 81961  	prf30 = function(result, secret, label, seed) {
 81962  		var _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, b, digest, done, hashMD5, hashSHA1, i, j, label, result, secret, seed, $s, $r;
 81963  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; b = $f.b; digest = $f.digest; done = $f.done; hashMD5 = $f.hashMD5; hashSHA1 = $f.hashSHA1; i = $f.i; j = $f.j; label = $f.label; result = $f.result; secret = $f.secret; seed = $f.seed; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 81964  		hashSHA1 = sha1.New();
 81965  		hashMD5 = md5.New();
 81966  		done = 0;
 81967  		i = 0;
 81968  		b = arrayType$6.zero();
 81969  		/* while (true) { */ case 1:
 81970  			/* if (!(done < result.$length)) { break; } */ if(!(done < result.$length)) { $s = 2; continue; }
 81971  			j = 0;
 81972  			while (true) {
 81973  				if (!(j <= i)) { break; }
 81974  				((j < 0 || j >= b.length) ? ($throwRuntimeError("index out of range"), undefined) : b[j] = (65 + ((i << 24 >>> 24)) << 24 >>> 24));
 81975  				j = j + (1) >> 0;
 81976  			}
 81977  			$r = hashSHA1.Reset(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 81978  			_r = hashSHA1.Write($subslice(new sliceType$7(b), 0, (i + 1 >> 0))); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 81979  			_r;
 81980  			_r$1 = hashSHA1.Write(secret); /* */ $s = 5; case 5: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 81981  			_r$1;
 81982  			_r$2 = hashSHA1.Write(seed); /* */ $s = 6; case 6: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 81983  			_r$2;
 81984  			_r$3 = hashSHA1.Sum(sliceType$7.nil); /* */ $s = 7; case 7: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 81985  			digest = _r$3;
 81986  			$r = hashMD5.Reset(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 81987  			_r$4 = hashMD5.Write(secret); /* */ $s = 9; case 9: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 81988  			_r$4;
 81989  			_r$5 = hashMD5.Write(digest); /* */ $s = 10; case 10: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
 81990  			_r$5;
 81991  			_r$6 = hashMD5.Sum(sliceType$7.nil); /* */ $s = 11; case 11: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
 81992  			done = done + ($copySlice($subslice(result, done), _r$6)) >> 0;
 81993  			i = i + (1) >> 0;
 81994  		/* } */ $s = 1; continue; case 2:
 81995  		$s = -1; return;
 81996  		/* */ } return; } if ($f === undefined) { $f = { $blk: prf30 }; } $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f.b = b; $f.digest = digest; $f.done = done; $f.hashMD5 = hashMD5; $f.hashSHA1 = hashSHA1; $f.i = i; $f.j = j; $f.label = label; $f.result = result; $f.secret = secret; $f.seed = seed; $f.$s = $s; $f.$r = $r; return $f;
 81997  	};
 81998  	prfAndHashForVersion = function(version, suite) {
 81999  		var _1, suite, version;
 82000  		_1 = version;
 82001  		if (_1 === (768)) {
 82002  			return [prf30, 0];
 82003  		} else if ((_1 === (769)) || (_1 === (770))) {
 82004  			return [prf10, 0];
 82005  		} else if (_1 === (771)) {
 82006  			if (!(((suite.flags & 8) === 0))) {
 82007  				return [prf12(sha512.New384), 6];
 82008  			}
 82009  			return [prf12(sha256.New), 5];
 82010  		} else {
 82011  			$panic(new $String("unknown version"));
 82012  		}
 82013  	};
 82014  	prfForVersion = function(version, suite) {
 82015  		var _tuple, prf, suite, version;
 82016  		_tuple = prfAndHashForVersion(version, suite);
 82017  		prf = _tuple[0];
 82018  		return prf;
 82019  	};
 82020  	masterFromPreMasterSecret = function(version, suite, preMasterSecret, clientRandom, serverRandom) {
 82021  		var clientRandom, masterSecret, preMasterSecret, seed, serverRandom, suite, version, $s, $r;
 82022  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; clientRandom = $f.clientRandom; masterSecret = $f.masterSecret; preMasterSecret = $f.preMasterSecret; seed = $f.seed; serverRandom = $f.serverRandom; suite = $f.suite; version = $f.version; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 82023  		seed = $makeSlice(sliceType$7, 0, (clientRandom.$length + serverRandom.$length >> 0));
 82024  		seed = $appendSlice(seed, clientRandom);
 82025  		seed = $appendSlice(seed, serverRandom);
 82026  		masterSecret = $makeSlice(sliceType$7, 48);
 82027  		$r = prfForVersion(version, suite)(masterSecret, preMasterSecret, masterSecretLabel, seed); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 82028  		$s = -1; return masterSecret;
 82029  		/* */ } return; } if ($f === undefined) { $f = { $blk: masterFromPreMasterSecret }; } $f.clientRandom = clientRandom; $f.masterSecret = masterSecret; $f.preMasterSecret = preMasterSecret; $f.seed = seed; $f.serverRandom = serverRandom; $f.suite = suite; $f.version = version; $f.$s = $s; $f.$r = $r; return $f;
 82030  	};
 82031  	keysFromMasterSecret = function(version, suite, masterSecret, clientRandom, serverRandom, macLen, keyLen, ivLen) {
 82032  		var clientIV, clientKey, clientMAC, clientRandom, ivLen, keyLen, keyMaterial, macLen, masterSecret, n, seed, serverIV, serverKey, serverMAC, serverRandom, suite, version, $s, $r;
 82033  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; clientIV = $f.clientIV; clientKey = $f.clientKey; clientMAC = $f.clientMAC; clientRandom = $f.clientRandom; ivLen = $f.ivLen; keyLen = $f.keyLen; keyMaterial = $f.keyMaterial; macLen = $f.macLen; masterSecret = $f.masterSecret; n = $f.n; seed = $f.seed; serverIV = $f.serverIV; serverKey = $f.serverKey; serverMAC = $f.serverMAC; serverRandom = $f.serverRandom; suite = $f.suite; version = $f.version; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 82034  		clientMAC = sliceType$7.nil;
 82035  		serverMAC = sliceType$7.nil;
 82036  		clientKey = sliceType$7.nil;
 82037  		serverKey = sliceType$7.nil;
 82038  		clientIV = sliceType$7.nil;
 82039  		serverIV = sliceType$7.nil;
 82040  		seed = $makeSlice(sliceType$7, 0, (serverRandom.$length + clientRandom.$length >> 0));
 82041  		seed = $appendSlice(seed, serverRandom);
 82042  		seed = $appendSlice(seed, clientRandom);
 82043  		n = (($imul(2, macLen)) + ($imul(2, keyLen)) >> 0) + ($imul(2, ivLen)) >> 0;
 82044  		keyMaterial = $makeSlice(sliceType$7, n);
 82045  		$r = prfForVersion(version, suite)(keyMaterial, masterSecret, keyExpansionLabel, seed); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 82046  		clientMAC = $subslice(keyMaterial, 0, macLen);
 82047  		keyMaterial = $subslice(keyMaterial, macLen);
 82048  		serverMAC = $subslice(keyMaterial, 0, macLen);
 82049  		keyMaterial = $subslice(keyMaterial, macLen);
 82050  		clientKey = $subslice(keyMaterial, 0, keyLen);
 82051  		keyMaterial = $subslice(keyMaterial, keyLen);
 82052  		serverKey = $subslice(keyMaterial, 0, keyLen);
 82053  		keyMaterial = $subslice(keyMaterial, keyLen);
 82054  		clientIV = $subslice(keyMaterial, 0, ivLen);
 82055  		keyMaterial = $subslice(keyMaterial, ivLen);
 82056  		serverIV = $subslice(keyMaterial, 0, ivLen);
 82057  		$s = -1; return [clientMAC, serverMAC, clientKey, serverKey, clientIV, serverIV];
 82058  		/* */ } return; } if ($f === undefined) { $f = { $blk: keysFromMasterSecret }; } $f.clientIV = clientIV; $f.clientKey = clientKey; $f.clientMAC = clientMAC; $f.clientRandom = clientRandom; $f.ivLen = ivLen; $f.keyLen = keyLen; $f.keyMaterial = keyMaterial; $f.macLen = macLen; $f.masterSecret = masterSecret; $f.n = n; $f.seed = seed; $f.serverIV = serverIV; $f.serverKey = serverKey; $f.serverMAC = serverMAC; $f.serverRandom = serverRandom; $f.suite = suite; $f.version = version; $f.$s = $s; $f.$r = $r; return $f;
 82059  	};
 82060  	lookupTLSHash = function(signatureAlgorithm) {
 82061  		var _1, _r, signatureAlgorithm, $s, $r;
 82062  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _r = $f._r; signatureAlgorithm = $f.signatureAlgorithm; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 82063  			_1 = signatureAlgorithm;
 82064  			/* */ if ((_1 === (513)) || (_1 === (515))) { $s = 2; continue; }
 82065  			/* */ if ((_1 === (1025)) || (_1 === (2052)) || (_1 === (1027))) { $s = 3; continue; }
 82066  			/* */ if ((_1 === (1281)) || (_1 === (2053)) || (_1 === (1283))) { $s = 4; continue; }
 82067  			/* */ if ((_1 === (1537)) || (_1 === (2054)) || (_1 === (1539))) { $s = 5; continue; }
 82068  			/* */ $s = 6; continue;
 82069  			/* if ((_1 === (513)) || (_1 === (515))) { */ case 2:
 82070  				$s = -1; return [3, $ifaceNil];
 82071  			/* } else if ((_1 === (1025)) || (_1 === (2052)) || (_1 === (1027))) { */ case 3:
 82072  				$s = -1; return [5, $ifaceNil];
 82073  			/* } else if ((_1 === (1281)) || (_1 === (2053)) || (_1 === (1283))) { */ case 4:
 82074  				$s = -1; return [6, $ifaceNil];
 82075  			/* } else if ((_1 === (1537)) || (_1 === (2054)) || (_1 === (1539))) { */ case 5:
 82076  				$s = -1; return [7, $ifaceNil];
 82077  			/* } else { */ case 6:
 82078  				_r = fmt.Errorf("tls: unsupported signature algorithm: %#04x", new sliceType$8([new SignatureScheme(signatureAlgorithm)])); /* */ $s = 8; case 8: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 82079  				$s = -1; return [0, _r];
 82080  			/* } */ case 7:
 82081  		case 1:
 82082  		$s = -1; return [0, $ifaceNil];
 82083  		/* */ } return; } if ($f === undefined) { $f = { $blk: lookupTLSHash }; } $f._1 = _1; $f._r = _r; $f.signatureAlgorithm = signatureAlgorithm; $f.$s = $s; $f.$r = $r; return $f;
 82084  	};
 82085  	newFinishedHash = function(version, cipherSuite$1) {
 82086  		var _r, _r$1, _tuple, buffer, cipherSuite$1, hash$1, prf, version, $s, $r;
 82087  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _tuple = $f._tuple; buffer = $f.buffer; cipherSuite$1 = $f.cipherSuite$1; hash$1 = $f.hash$1; prf = $f.prf; version = $f.version; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 82088  		buffer = sliceType$7.nil;
 82089  		if ((version === 768) || version >= 771) {
 82090  			buffer = new sliceType$7([]);
 82091  		}
 82092  		_tuple = prfAndHashForVersion(version, cipherSuite$1);
 82093  		prf = _tuple[0];
 82094  		hash$1 = _tuple[1];
 82095  		/* */ if (!((hash$1 === 0))) { $s = 1; continue; }
 82096  		/* */ $s = 2; continue;
 82097  		/* if (!((hash$1 === 0))) { */ case 1:
 82098  			_r = new crypto.Hash(hash$1).New(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 82099  			_r$1 = new crypto.Hash(hash$1).New(); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 82100  			$s = -1; return new finishedHash.ptr(_r, _r$1, $ifaceNil, $ifaceNil, buffer, version, prf);
 82101  		/* } */ case 2:
 82102  		$s = -1; return new finishedHash.ptr(sha1.New(), sha1.New(), md5.New(), md5.New(), buffer, version, prf);
 82103  		/* */ } return; } if ($f === undefined) { $f = { $blk: newFinishedHash }; } $f._r = _r; $f._r$1 = _r$1; $f._tuple = _tuple; $f.buffer = buffer; $f.cipherSuite$1 = cipherSuite$1; $f.hash$1 = hash$1; $f.prf = prf; $f.version = version; $f.$s = $s; $f.$r = $r; return $f;
 82104  	};
 82105  	finishedHash.ptr.prototype.Write = function(msg) {
 82106  		var _r, _r$1, _r$2, _r$3, _tmp, _tmp$1, err, h, msg, n, $s, $r;
 82107  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; err = $f.err; h = $f.h; msg = $f.msg; n = $f.n; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 82108  		n = 0;
 82109  		err = $ifaceNil;
 82110  		h = this;
 82111  		_r = h.client.Write(msg); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 82112  		_r;
 82113  		_r$1 = h.server.Write(msg); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 82114  		_r$1;
 82115  		/* */ if (h.version < 771) { $s = 3; continue; }
 82116  		/* */ $s = 4; continue;
 82117  		/* if (h.version < 771) { */ case 3:
 82118  			_r$2 = h.clientMD5.Write(msg); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 82119  			_r$2;
 82120  			_r$3 = h.serverMD5.Write(msg); /* */ $s = 6; case 6: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 82121  			_r$3;
 82122  		/* } */ case 4:
 82123  		if (!(h.buffer === sliceType$7.nil)) {
 82124  			h.buffer = $appendSlice(h.buffer, msg);
 82125  		}
 82126  		_tmp = msg.$length;
 82127  		_tmp$1 = $ifaceNil;
 82128  		n = _tmp;
 82129  		err = _tmp$1;
 82130  		$s = -1; return [n, err];
 82131  		/* */ } return; } if ($f === undefined) { $f = { $blk: finishedHash.ptr.prototype.Write }; } $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f.err = err; $f.h = h; $f.msg = msg; $f.n = n; $f.$s = $s; $f.$r = $r; return $f;
 82132  	};
 82133  	finishedHash.prototype.Write = function(msg) { return this.$val.Write(msg); };
 82134  	finishedHash.ptr.prototype.Sum = function() {
 82135  		var _r, _r$1, _r$2, h, out, $s, $r;
 82136  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; h = $f.h; out = $f.out; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 82137  		h = this;
 82138  		/* */ if (h.version >= 771) { $s = 1; continue; }
 82139  		/* */ $s = 2; continue;
 82140  		/* if (h.version >= 771) { */ case 1:
 82141  			_r = h.client.Sum(sliceType$7.nil); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 82142  			$s = -1; return _r;
 82143  		/* } */ case 2:
 82144  		out = $makeSlice(sliceType$7, 0, 36);
 82145  		_r$1 = h.clientMD5.Sum(out); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 82146  		out = _r$1;
 82147  		_r$2 = h.client.Sum(out); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 82148  		$s = -1; return _r$2;
 82149  		/* */ } return; } if ($f === undefined) { $f = { $blk: finishedHash.ptr.prototype.Sum }; } $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f.h = h; $f.out = out; $f.$s = $s; $f.$r = $r; return $f;
 82150  	};
 82151  	finishedHash.prototype.Sum = function() { return this.$val.Sum(); };
 82152  	finishedSum30 = function(md5$1, sha1$1, masterSecret, magic) {
 82153  		var _r, _r$1, _r$10, _r$11, _r$12, _r$13, _r$14, _r$15, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, magic, masterSecret, md5$1, md5Digest, ret, sha1$1, sha1Digest, $s, $r;
 82154  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _r$10 = $f._r$10; _r$11 = $f._r$11; _r$12 = $f._r$12; _r$13 = $f._r$13; _r$14 = $f._r$14; _r$15 = $f._r$15; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _r$8 = $f._r$8; _r$9 = $f._r$9; magic = $f.magic; masterSecret = $f.masterSecret; md5$1 = $f.md5$1; md5Digest = $f.md5Digest; ret = $f.ret; sha1$1 = $f.sha1$1; sha1Digest = $f.sha1Digest; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 82155  		_r = md5$1.Write(magic); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 82156  		_r;
 82157  		_r$1 = md5$1.Write(masterSecret); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 82158  		_r$1;
 82159  		_r$2 = md5$1.Write(new sliceType$7(ssl30Pad1)); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 82160  		_r$2;
 82161  		_r$3 = md5$1.Sum(sliceType$7.nil); /* */ $s = 4; case 4: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 82162  		md5Digest = _r$3;
 82163  		$r = md5$1.Reset(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 82164  		_r$4 = md5$1.Write(masterSecret); /* */ $s = 6; case 6: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 82165  		_r$4;
 82166  		_r$5 = md5$1.Write(new sliceType$7(ssl30Pad2)); /* */ $s = 7; case 7: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
 82167  		_r$5;
 82168  		_r$6 = md5$1.Write(md5Digest); /* */ $s = 8; case 8: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
 82169  		_r$6;
 82170  		_r$7 = md5$1.Sum(sliceType$7.nil); /* */ $s = 9; case 9: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
 82171  		md5Digest = _r$7;
 82172  		_r$8 = sha1$1.Write(magic); /* */ $s = 10; case 10: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
 82173  		_r$8;
 82174  		_r$9 = sha1$1.Write(masterSecret); /* */ $s = 11; case 11: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 82175  		_r$9;
 82176  		_r$10 = sha1$1.Write($subslice(new sliceType$7(ssl30Pad1), 0, 40)); /* */ $s = 12; case 12: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
 82177  		_r$10;
 82178  		_r$11 = sha1$1.Sum(sliceType$7.nil); /* */ $s = 13; case 13: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; }
 82179  		sha1Digest = _r$11;
 82180  		$r = sha1$1.Reset(); /* */ $s = 14; case 14: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 82181  		_r$12 = sha1$1.Write(masterSecret); /* */ $s = 15; case 15: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; }
 82182  		_r$12;
 82183  		_r$13 = sha1$1.Write($subslice(new sliceType$7(ssl30Pad2), 0, 40)); /* */ $s = 16; case 16: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; }
 82184  		_r$13;
 82185  		_r$14 = sha1$1.Write(sha1Digest); /* */ $s = 17; case 17: if($c) { $c = false; _r$14 = _r$14.$blk(); } if (_r$14 && _r$14.$blk !== undefined) { break s; }
 82186  		_r$14;
 82187  		_r$15 = sha1$1.Sum(sliceType$7.nil); /* */ $s = 18; case 18: if($c) { $c = false; _r$15 = _r$15.$blk(); } if (_r$15 && _r$15.$blk !== undefined) { break s; }
 82188  		sha1Digest = _r$15;
 82189  		ret = $makeSlice(sliceType$7, (md5Digest.$length + sha1Digest.$length >> 0));
 82190  		$copySlice(ret, md5Digest);
 82191  		$copySlice($subslice(ret, md5Digest.$length), sha1Digest);
 82192  		$s = -1; return ret;
 82193  		/* */ } return; } if ($f === undefined) { $f = { $blk: finishedSum30 }; } $f._r = _r; $f._r$1 = _r$1; $f._r$10 = _r$10; $f._r$11 = _r$11; $f._r$12 = _r$12; $f._r$13 = _r$13; $f._r$14 = _r$14; $f._r$15 = _r$15; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._r$8 = _r$8; $f._r$9 = _r$9; $f.magic = magic; $f.masterSecret = masterSecret; $f.md5$1 = md5$1; $f.md5Digest = md5Digest; $f.ret = ret; $f.sha1$1 = sha1$1; $f.sha1Digest = sha1Digest; $f.$s = $s; $f.$r = $r; return $f;
 82194  	};
 82195  	finishedHash.ptr.prototype.clientSum = function(masterSecret) {
 82196  		var _arg, _arg$1, _arg$2, _arg$3, _r, _r$1, h, masterSecret, out, $s, $r;
 82197  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _arg = $f._arg; _arg$1 = $f._arg$1; _arg$2 = $f._arg$2; _arg$3 = $f._arg$3; _r = $f._r; _r$1 = $f._r$1; h = $f.h; masterSecret = $f.masterSecret; out = $f.out; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 82198  		h = this;
 82199  		/* */ if (h.version === 768) { $s = 1; continue; }
 82200  		/* */ $s = 2; continue;
 82201  		/* if (h.version === 768) { */ case 1:
 82202  			_r = finishedSum30(h.clientMD5, h.client, masterSecret, new sliceType$7(ssl3ClientFinishedMagic)); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 82203  			$s = -1; return _r;
 82204  		/* } */ case 2:
 82205  		out = $makeSlice(sliceType$7, 12);
 82206  		_arg = out;
 82207  		_arg$1 = masterSecret;
 82208  		_arg$2 = clientFinishedLabel;
 82209  		_r$1 = $clone(h, finishedHash).Sum(); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 82210  		_arg$3 = _r$1;
 82211  		$r = h.prf(_arg, _arg$1, _arg$2, _arg$3); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 82212  		$s = -1; return out;
 82213  		/* */ } return; } if ($f === undefined) { $f = { $blk: finishedHash.ptr.prototype.clientSum }; } $f._arg = _arg; $f._arg$1 = _arg$1; $f._arg$2 = _arg$2; $f._arg$3 = _arg$3; $f._r = _r; $f._r$1 = _r$1; $f.h = h; $f.masterSecret = masterSecret; $f.out = out; $f.$s = $s; $f.$r = $r; return $f;
 82214  	};
 82215  	finishedHash.prototype.clientSum = function(masterSecret) { return this.$val.clientSum(masterSecret); };
 82216  	finishedHash.ptr.prototype.serverSum = function(masterSecret) {
 82217  		var _arg, _arg$1, _arg$2, _arg$3, _r, _r$1, h, masterSecret, out, $s, $r;
 82218  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _arg = $f._arg; _arg$1 = $f._arg$1; _arg$2 = $f._arg$2; _arg$3 = $f._arg$3; _r = $f._r; _r$1 = $f._r$1; h = $f.h; masterSecret = $f.masterSecret; out = $f.out; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 82219  		h = this;
 82220  		/* */ if (h.version === 768) { $s = 1; continue; }
 82221  		/* */ $s = 2; continue;
 82222  		/* if (h.version === 768) { */ case 1:
 82223  			_r = finishedSum30(h.serverMD5, h.server, masterSecret, new sliceType$7(ssl3ServerFinishedMagic)); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 82224  			$s = -1; return _r;
 82225  		/* } */ case 2:
 82226  		out = $makeSlice(sliceType$7, 12);
 82227  		_arg = out;
 82228  		_arg$1 = masterSecret;
 82229  		_arg$2 = serverFinishedLabel;
 82230  		_r$1 = $clone(h, finishedHash).Sum(); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 82231  		_arg$3 = _r$1;
 82232  		$r = h.prf(_arg, _arg$1, _arg$2, _arg$3); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 82233  		$s = -1; return out;
 82234  		/* */ } return; } if ($f === undefined) { $f = { $blk: finishedHash.ptr.prototype.serverSum }; } $f._arg = _arg; $f._arg$1 = _arg$1; $f._arg$2 = _arg$2; $f._arg$3 = _arg$3; $f._r = _r; $f._r$1 = _r$1; $f.h = h; $f.masterSecret = masterSecret; $f.out = out; $f.$s = $s; $f.$r = $r; return $f;
 82235  	};
 82236  	finishedHash.prototype.serverSum = function(masterSecret) { return this.$val.serverSum(masterSecret); };
 82237  	finishedHash.ptr.prototype.selectClientCertSignatureAlgorithm = function(serverList, sigType) {
 82238  		var _i, _ref, h, serverList, sigType, v;
 82239  		h = this;
 82240  		_ref = serverList;
 82241  		_i = 0;
 82242  		while (true) {
 82243  			if (!(_i < _ref.$length)) { break; }
 82244  			v = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
 82245  			if ((signatureFromSignatureScheme(v) === sigType) && isSupportedSignatureAlgorithm(v, supportedSignatureAlgorithms)) {
 82246  				return [v, $ifaceNil];
 82247  			}
 82248  			_i++;
 82249  		}
 82250  		return [0, errors.New("tls: no supported signature algorithm found for signing client certificate")];
 82251  	};
 82252  	finishedHash.prototype.selectClientCertSignatureAlgorithm = function(serverList, sigType) { return this.$val.selectClientCertSignatureAlgorithm(serverList, sigType); };
 82253  	finishedHash.ptr.prototype.hashForClientCertificate = function(sigType, signatureAlgorithm, masterSecret) {
 82254  		var _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _tuple, err, h, hash$1, hashAlg, masterSecret, md5Hash, sha1Hash$1, sigType, signatureAlgorithm, $s, $r;
 82255  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _r$8 = $f._r$8; _tuple = $f._tuple; err = $f.err; h = $f.h; hash$1 = $f.hash$1; hashAlg = $f.hashAlg; masterSecret = $f.masterSecret; md5Hash = $f.md5Hash; sha1Hash$1 = $f.sha1Hash$1; sigType = $f.sigType; signatureAlgorithm = $f.signatureAlgorithm; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 82256  		h = this;
 82257  		if (((h.version === 768) || h.version >= 771) && h.buffer === sliceType$7.nil) {
 82258  			$panic(new $String("a handshake hash for a client-certificate was requested after discarding the handshake buffer"));
 82259  		}
 82260  		/* */ if (h.version === 768) { $s = 1; continue; }
 82261  		/* */ $s = 2; continue;
 82262  		/* if (h.version === 768) { */ case 1:
 82263  			if (!((sigType === 1))) {
 82264  				$s = -1; return [sliceType$7.nil, 0, errors.New("tls: unsupported signature type for client certificate")];
 82265  			}
 82266  			md5Hash = md5.New();
 82267  			_r = md5Hash.Write(h.buffer); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 82268  			_r;
 82269  			sha1Hash$1 = sha1.New();
 82270  			_r$1 = sha1Hash$1.Write(h.buffer); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 82271  			_r$1;
 82272  			_r$2 = finishedSum30(md5Hash, sha1Hash$1, masterSecret, sliceType$7.nil); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 82273  			$s = -1; return [_r$2, 8, $ifaceNil];
 82274  		/* } */ case 2:
 82275  		/* */ if (h.version >= 771) { $s = 6; continue; }
 82276  		/* */ $s = 7; continue;
 82277  		/* if (h.version >= 771) { */ case 6:
 82278  			_r$3 = lookupTLSHash(signatureAlgorithm); /* */ $s = 8; case 8: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 82279  			_tuple = _r$3;
 82280  			hashAlg = _tuple[0];
 82281  			err = _tuple[1];
 82282  			if (!($interfaceIsEqual(err, $ifaceNil))) {
 82283  				$s = -1; return [sliceType$7.nil, 0, err];
 82284  			}
 82285  			_r$4 = new crypto.Hash(hashAlg).New(); /* */ $s = 9; case 9: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 82286  			hash$1 = _r$4;
 82287  			_r$5 = hash$1.Write(h.buffer); /* */ $s = 10; case 10: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
 82288  			_r$5;
 82289  			_r$6 = hash$1.Sum(sliceType$7.nil); /* */ $s = 11; case 11: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
 82290  			$s = -1; return [_r$6, hashAlg, $ifaceNil];
 82291  		/* } */ case 7:
 82292  		/* */ if (sigType === 3) { $s = 12; continue; }
 82293  		/* */ $s = 13; continue;
 82294  		/* if (sigType === 3) { */ case 12:
 82295  			_r$7 = h.server.Sum(sliceType$7.nil); /* */ $s = 14; case 14: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
 82296  			$s = -1; return [_r$7, 3, $ifaceNil];
 82297  		/* } */ case 13:
 82298  		_r$8 = $clone(h, finishedHash).Sum(); /* */ $s = 15; case 15: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
 82299  		$s = -1; return [_r$8, 8, $ifaceNil];
 82300  		/* */ } return; } if ($f === undefined) { $f = { $blk: finishedHash.ptr.prototype.hashForClientCertificate }; } $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._r$8 = _r$8; $f._tuple = _tuple; $f.err = err; $f.h = h; $f.hash$1 = hash$1; $f.hashAlg = hashAlg; $f.masterSecret = masterSecret; $f.md5Hash = md5Hash; $f.sha1Hash$1 = sha1Hash$1; $f.sigType = sigType; $f.signatureAlgorithm = signatureAlgorithm; $f.$s = $s; $f.$r = $r; return $f;
 82301  	};
 82302  	finishedHash.prototype.hashForClientCertificate = function(sigType, signatureAlgorithm, masterSecret) { return this.$val.hashForClientCertificate(sigType, signatureAlgorithm, masterSecret); };
 82303  	finishedHash.ptr.prototype.discardHandshakeBuffer = function() {
 82304  		var h;
 82305  		h = this;
 82306  		h.buffer = sliceType$7.nil;
 82307  	};
 82308  	finishedHash.prototype.discardHandshakeBuffer = function() { return this.$val.discardHandshakeBuffer(); };
 82309  	sessionState.ptr.prototype.marshal = function() {
 82310  		var _i, _i$1, _ref, _ref$1, cert, cert$1, length, ret, s, x;
 82311  		s = this;
 82312  		length = (6 + s.masterSecret.$length >> 0) + 2 >> 0;
 82313  		_ref = s.certificates;
 82314  		_i = 0;
 82315  		while (true) {
 82316  			if (!(_i < _ref.$length)) { break; }
 82317  			cert = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
 82318  			length = length + ((4 + cert.$length >> 0)) >> 0;
 82319  			_i++;
 82320  		}
 82321  		ret = $makeSlice(sliceType$7, length);
 82322  		x = ret;
 82323  		(0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0] = (((s.vers >>> 8 << 16 >>> 16) << 24 >>> 24)));
 82324  		(1 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 1] = ((s.vers << 24 >>> 24)));
 82325  		(2 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 2] = (((s.cipherSuite >>> 8 << 16 >>> 16) << 24 >>> 24)));
 82326  		(3 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 3] = ((s.cipherSuite << 24 >>> 24)));
 82327  		(4 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 4] = (((s.masterSecret.$length >> 8 >> 0) << 24 >>> 24)));
 82328  		(5 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 5] = ((s.masterSecret.$length << 24 >>> 24)));
 82329  		x = $subslice(x, 6);
 82330  		$copySlice(x, s.masterSecret);
 82331  		x = $subslice(x, s.masterSecret.$length);
 82332  		(0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0] = (((s.certificates.$length >> 8 >> 0) << 24 >>> 24)));
 82333  		(1 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 1] = ((s.certificates.$length << 24 >>> 24)));
 82334  		x = $subslice(x, 2);
 82335  		_ref$1 = s.certificates;
 82336  		_i$1 = 0;
 82337  		while (true) {
 82338  			if (!(_i$1 < _ref$1.$length)) { break; }
 82339  			cert$1 = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]);
 82340  			(0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0] = (((cert$1.$length >> 24 >> 0) << 24 >>> 24)));
 82341  			(1 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 1] = (((cert$1.$length >> 16 >> 0) << 24 >>> 24)));
 82342  			(2 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 2] = (((cert$1.$length >> 8 >> 0) << 24 >>> 24)));
 82343  			(3 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 3] = ((cert$1.$length << 24 >>> 24)));
 82344  			$copySlice($subslice(x, 4), cert$1);
 82345  			x = $subslice(x, (4 + cert$1.$length >> 0));
 82346  			_i$1++;
 82347  		}
 82348  		return ret;
 82349  	};
 82350  	sessionState.prototype.marshal = function() { return this.$val.marshal(); };
 82351  	sessionState.ptr.prototype.unmarshal = function(data) {
 82352  		var _i, _ref, certLen, data, i, masterSecretLen, numCerts, s, x;
 82353  		s = this;
 82354  		if (data.$length < 8) {
 82355  			return false;
 82356  		}
 82357  		s.vers = (((((0 >= data.$length ? ($throwRuntimeError("index out of range"), undefined) : data.$array[data.$offset + 0]) << 16 >>> 16)) << 8 << 16 >>> 16) | (((1 >= data.$length ? ($throwRuntimeError("index out of range"), undefined) : data.$array[data.$offset + 1]) << 16 >>> 16))) >>> 0;
 82358  		s.cipherSuite = (((((2 >= data.$length ? ($throwRuntimeError("index out of range"), undefined) : data.$array[data.$offset + 2]) << 16 >>> 16)) << 8 << 16 >>> 16) | (((3 >= data.$length ? ($throwRuntimeError("index out of range"), undefined) : data.$array[data.$offset + 3]) << 16 >>> 16))) >>> 0;
 82359  		masterSecretLen = ((((4 >= data.$length ? ($throwRuntimeError("index out of range"), undefined) : data.$array[data.$offset + 4]) >> 0)) << 8 >> 0) | (((5 >= data.$length ? ($throwRuntimeError("index out of range"), undefined) : data.$array[data.$offset + 5]) >> 0));
 82360  		data = $subslice(data, 6);
 82361  		if (data.$length < masterSecretLen) {
 82362  			return false;
 82363  		}
 82364  		s.masterSecret = $subslice(data, 0, masterSecretLen);
 82365  		data = $subslice(data, masterSecretLen);
 82366  		if (data.$length < 2) {
 82367  			return false;
 82368  		}
 82369  		numCerts = ((((0 >= data.$length ? ($throwRuntimeError("index out of range"), undefined) : data.$array[data.$offset + 0]) >> 0)) << 8 >> 0) | (((1 >= data.$length ? ($throwRuntimeError("index out of range"), undefined) : data.$array[data.$offset + 1]) >> 0));
 82370  		data = $subslice(data, 2);
 82371  		s.certificates = $makeSlice(sliceType$9, numCerts);
 82372  		_ref = s.certificates;
 82373  		_i = 0;
 82374  		while (true) {
 82375  			if (!(_i < _ref.$length)) { break; }
 82376  			i = _i;
 82377  			if (data.$length < 4) {
 82378  				return false;
 82379  			}
 82380  			certLen = ((((((0 >= data.$length ? ($throwRuntimeError("index out of range"), undefined) : data.$array[data.$offset + 0]) >> 0)) << 24 >> 0) | ((((1 >= data.$length ? ($throwRuntimeError("index out of range"), undefined) : data.$array[data.$offset + 1]) >> 0)) << 16 >> 0)) | ((((2 >= data.$length ? ($throwRuntimeError("index out of range"), undefined) : data.$array[data.$offset + 2]) >> 0)) << 8 >> 0)) | (((3 >= data.$length ? ($throwRuntimeError("index out of range"), undefined) : data.$array[data.$offset + 3]) >> 0));
 82381  			data = $subslice(data, 4);
 82382  			if (certLen < 0) {
 82383  				return false;
 82384  			}
 82385  			if (data.$length < certLen) {
 82386  				return false;
 82387  			}
 82388  			(x = s.certificates, ((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i] = $subslice(data, 0, certLen)));
 82389  			data = $subslice(data, certLen);
 82390  			_i++;
 82391  		}
 82392  		return data.$length === 0;
 82393  	};
 82394  	sessionState.prototype.unmarshal = function(data) { return this.$val.unmarshal(data); };
 82395  	Conn.ptr.prototype.encryptTicket = function(state) {
 82396  		var _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _tuple, _tuple$1, block$1, c, encrypted, err, err$1, iv, key, keyName, mac, macBytes, serialized, state, x, $s, $r;
 82397  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; block$1 = $f.block$1; c = $f.c; encrypted = $f.encrypted; err = $f.err; err$1 = $f.err$1; iv = $f.iv; key = $f.key; keyName = $f.keyName; mac = $f.mac; macBytes = $f.macBytes; serialized = $f.serialized; state = $f.state; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 82398  		c = this;
 82399  		serialized = state.marshal();
 82400  		encrypted = $makeSlice(sliceType$7, ((32 + serialized.$length >> 0) + 32 >> 0));
 82401  		keyName = $subslice(encrypted, 0, 16);
 82402  		iv = $subslice(encrypted, 16, 32);
 82403  		macBytes = $subslice(encrypted, (encrypted.$length - 32 >> 0));
 82404  		_r = io.ReadFull(c.config.rand(), iv); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 82405  		_tuple = _r;
 82406  		err = _tuple[1];
 82407  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 82408  			$s = -1; return [sliceType$7.nil, err];
 82409  		}
 82410  		_r$1 = c.config.ticketKeys(); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 82411  		key = $clone((x = _r$1, (0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0])), ticketKey);
 82412  		$copySlice(keyName, new sliceType$7(key.keyName));
 82413  		_tuple$1 = aes.NewCipher(new sliceType$7(key.aesKey));
 82414  		block$1 = _tuple$1[0];
 82415  		err$1 = _tuple$1[1];
 82416  		/* */ if (!($interfaceIsEqual(err$1, $ifaceNil))) { $s = 3; continue; }
 82417  		/* */ $s = 4; continue;
 82418  		/* if (!($interfaceIsEqual(err$1, $ifaceNil))) { */ case 3:
 82419  			_r$2 = err$1.Error(); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 82420  			_r$3 = errors.New("tls: failed to create cipher while encrypting ticket: " + _r$2); /* */ $s = 6; case 6: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 82421  			$s = -1; return [sliceType$7.nil, _r$3];
 82422  		/* } */ case 4:
 82423  		_r$4 = cipher.NewCTR(block$1, iv); /* */ $s = 7; case 7: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 82424  		$r = _r$4.XORKeyStream($subslice(encrypted, 32), serialized); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 82425  		_r$5 = hmac.New(sha256.New, new sliceType$7(key.hmacKey)); /* */ $s = 9; case 9: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
 82426  		mac = _r$5;
 82427  		_r$6 = mac.Write($subslice(encrypted, 0, (encrypted.$length - 32 >> 0))); /* */ $s = 10; case 10: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
 82428  		_r$6;
 82429  		_r$7 = mac.Sum($subslice(macBytes, 0, 0)); /* */ $s = 11; case 11: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
 82430  		_r$7;
 82431  		$s = -1; return [encrypted, $ifaceNil];
 82432  		/* */ } return; } if ($f === undefined) { $f = { $blk: Conn.ptr.prototype.encryptTicket }; } $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.block$1 = block$1; $f.c = c; $f.encrypted = encrypted; $f.err = err; $f.err$1 = err$1; $f.iv = iv; $f.key = key; $f.keyName = keyName; $f.mac = mac; $f.macBytes = macBytes; $f.serialized = serialized; $f.state = state; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
 82433  	};
 82434  	Conn.prototype.encryptTicket = function(state) { return this.$val.encryptTicket(state); };
 82435  	Conn.ptr.prototype.decryptTicket = function(encrypted) {
 82436  		var _i, _r, _r$1, _r$2, _r$3, _r$4, _ref, _tuple, block$1, c, candidateKey, ciphertext, encrypted, err, expected, i, iv, key, keyIndex, keyName, keys, mac, macBytes, ok, plaintext, state, $s, $r;
 82437  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _i = $f._i; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _ref = $f._ref; _tuple = $f._tuple; block$1 = $f.block$1; c = $f.c; candidateKey = $f.candidateKey; ciphertext = $f.ciphertext; encrypted = $f.encrypted; err = $f.err; expected = $f.expected; i = $f.i; iv = $f.iv; key = $f.key; keyIndex = $f.keyIndex; keyName = $f.keyName; keys = $f.keys; mac = $f.mac; macBytes = $f.macBytes; ok = $f.ok; plaintext = $f.plaintext; state = $f.state; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 82438  		c = this;
 82439  		if (c.config.SessionTicketsDisabled || encrypted.$length < 64) {
 82440  			$s = -1; return [ptrType$30.nil, false];
 82441  		}
 82442  		keyName = $subslice(encrypted, 0, 16);
 82443  		iv = $subslice(encrypted, 16, 32);
 82444  		macBytes = $subslice(encrypted, (encrypted.$length - 32 >> 0));
 82445  		_r = c.config.ticketKeys(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 82446  		keys = _r;
 82447  		keyIndex = -1;
 82448  		_ref = keys;
 82449  		_i = 0;
 82450  		while (true) {
 82451  			if (!(_i < _ref.$length)) { break; }
 82452  			i = _i;
 82453  			candidateKey = $clone(((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]), ticketKey);
 82454  			if (bytes.Equal(keyName, new sliceType$7(candidateKey.keyName))) {
 82455  				keyIndex = i;
 82456  				break;
 82457  			}
 82458  			_i++;
 82459  		}
 82460  		if (keyIndex === -1) {
 82461  			$s = -1; return [ptrType$30.nil, false];
 82462  		}
 82463  		key = ((keyIndex < 0 || keyIndex >= keys.$length) ? ($throwRuntimeError("index out of range"), undefined) : keys.$array[keys.$offset + keyIndex]);
 82464  		_r$1 = hmac.New(sha256.New, new sliceType$7(key.hmacKey)); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 82465  		mac = _r$1;
 82466  		_r$2 = mac.Write($subslice(encrypted, 0, (encrypted.$length - 32 >> 0))); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 82467  		_r$2;
 82468  		_r$3 = mac.Sum(sliceType$7.nil); /* */ $s = 4; case 4: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 82469  		expected = _r$3;
 82470  		if (!((subtle.ConstantTimeCompare(macBytes, expected) === 1))) {
 82471  			$s = -1; return [ptrType$30.nil, false];
 82472  		}
 82473  		_tuple = aes.NewCipher(new sliceType$7(key.aesKey));
 82474  		block$1 = _tuple[0];
 82475  		err = _tuple[1];
 82476  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 82477  			$s = -1; return [ptrType$30.nil, false];
 82478  		}
 82479  		ciphertext = $subslice(encrypted, 32, (encrypted.$length - 32 >> 0));
 82480  		plaintext = ciphertext;
 82481  		_r$4 = cipher.NewCTR(block$1, iv); /* */ $s = 5; case 5: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 82482  		$r = _r$4.XORKeyStream(plaintext, ciphertext); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 82483  		state = new sessionState.ptr(0, 0, sliceType$7.nil, sliceType$9.nil, keyIndex > 0);
 82484  		ok = state.unmarshal(plaintext);
 82485  		$s = -1; return [state, ok];
 82486  		/* */ } return; } if ($f === undefined) { $f = { $blk: Conn.ptr.prototype.decryptTicket }; } $f._i = _i; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._ref = _ref; $f._tuple = _tuple; $f.block$1 = block$1; $f.c = c; $f.candidateKey = candidateKey; $f.ciphertext = ciphertext; $f.encrypted = encrypted; $f.err = err; $f.expected = expected; $f.i = i; $f.iv = iv; $f.key = key; $f.keyIndex = keyIndex; $f.keyName = keyName; $f.keys = keys; $f.mac = mac; $f.macBytes = macBytes; $f.ok = ok; $f.plaintext = plaintext; $f.state = state; $f.$s = $s; $f.$r = $r; return $f;
 82487  	};
 82488  	Conn.prototype.decryptTicket = function(encrypted) { return this.$val.decryptTicket(encrypted); };
 82489  	Server = function(conn, config) {
 82490  		var config, conn;
 82491  		return new Conn.ptr(conn, false, new sync.Mutex.ptr(0, 0), ptrType$12.nil, $ifaceNil, 0, false, config, false, 0, false, 0, sliceType$7.nil, sliceType$9.nil, sliceType$10.nil, sliceType$11.nil, "", false, false, $ifaceNil, false, arrayType$1.zero(), arrayType$1.zero(), "", false, new halfConn.ptr(new sync.Mutex.ptr(0, 0), $ifaceNil, 0, $ifaceNil, $ifaceNil, arrayType$7.zero(), ptrType$9.nil, arrayType$8.zero(), $ifaceNil, $ifaceNil, sliceType$7.nil, sliceType$7.nil), new halfConn.ptr(new sync.Mutex.ptr(0, 0), $ifaceNil, 0, $ifaceNil, $ifaceNil, arrayType$7.zero(), ptrType$9.nil, arrayType$8.zero(), $ifaceNil, $ifaceNil, sliceType$7.nil, sliceType$7.nil), ptrType$9.nil, ptrType$9.nil, new bytes.Buffer.ptr(sliceType$7.nil, 0, arrayType$3.zero(), 0), false, sliceType$7.nil, new $Int64(0, 0), new $Int64(0, 0), 0, 0, arrayType$2.zero());
 82492  	};
 82493  	$pkg.Server = Server;
 82494  	Client = function(conn, config) {
 82495  		var config, conn;
 82496  		return new Conn.ptr(conn, true, new sync.Mutex.ptr(0, 0), ptrType$12.nil, $ifaceNil, 0, false, config, false, 0, false, 0, sliceType$7.nil, sliceType$9.nil, sliceType$10.nil, sliceType$11.nil, "", false, false, $ifaceNil, false, arrayType$1.zero(), arrayType$1.zero(), "", false, new halfConn.ptr(new sync.Mutex.ptr(0, 0), $ifaceNil, 0, $ifaceNil, $ifaceNil, arrayType$7.zero(), ptrType$9.nil, arrayType$8.zero(), $ifaceNil, $ifaceNil, sliceType$7.nil, sliceType$7.nil), new halfConn.ptr(new sync.Mutex.ptr(0, 0), $ifaceNil, 0, $ifaceNil, $ifaceNil, arrayType$7.zero(), ptrType$9.nil, arrayType$8.zero(), $ifaceNil, $ifaceNil, sliceType$7.nil, sliceType$7.nil), ptrType$9.nil, ptrType$9.nil, new bytes.Buffer.ptr(sliceType$7.nil, 0, arrayType$3.zero(), 0), false, sliceType$7.nil, new $Int64(0, 0), new $Int64(0, 0), 0, 0, arrayType$2.zero());
 82497  	};
 82498  	$pkg.Client = Client;
 82499  	listener.ptr.prototype.Accept = function() {
 82500  		var _r, _tuple, c, err, l, $s, $r;
 82501  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; c = $f.c; err = $f.err; l = $f.l; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 82502  		l = this;
 82503  		_r = l.Listener.Accept(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 82504  		_tuple = _r;
 82505  		c = _tuple[0];
 82506  		err = _tuple[1];
 82507  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 82508  			$s = -1; return [$ifaceNil, err];
 82509  		}
 82510  		$s = -1; return [Server(c, l.config), $ifaceNil];
 82511  		/* */ } return; } if ($f === undefined) { $f = { $blk: listener.ptr.prototype.Accept }; } $f._r = _r; $f._tuple = _tuple; $f.c = c; $f.err = err; $f.l = l; $f.$s = $s; $f.$r = $r; return $f;
 82512  	};
 82513  	listener.prototype.Accept = function() { return this.$val.Accept(); };
 82514  	NewListener = function(inner, config) {
 82515  		var config, inner, l;
 82516  		l = new listener.ptr($ifaceNil, ptrType$3.nil);
 82517  		l.Listener = inner;
 82518  		l.config = config;
 82519  		return l;
 82520  	};
 82521  	$pkg.NewListener = NewListener;
 82522  	timeoutError.ptr.prototype.Error = function() {
 82523  		return "tls: DialWithDialer timed out";
 82524  	};
 82525  	timeoutError.prototype.Error = function() { return this.$val.Error(); };
 82526  	timeoutError.ptr.prototype.Timeout = function() {
 82527  		return true;
 82528  	};
 82529  	timeoutError.prototype.Timeout = function() { return this.$val.Timeout(); };
 82530  	timeoutError.ptr.prototype.Temporary = function() {
 82531  		return true;
 82532  	};
 82533  	timeoutError.prototype.Temporary = function() { return this.$val.Temporary(); };
 82534  	DialWithDialer = function(dialer, network, addr, config) {
 82535  		var _r, _r$1, _r$2, _r$3, _tuple, addr, c, colonPos, config, conn, deadlineTimeout, dialer, err, errChannel, hostname, network, rawConn, timeout, $s, $r;
 82536  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _tuple = $f._tuple; addr = $f.addr; c = $f.c; colonPos = $f.colonPos; config = $f.config; conn = $f.conn; deadlineTimeout = $f.deadlineTimeout; dialer = $f.dialer; err = $f.err; errChannel = $f.errChannel; hostname = $f.hostname; network = $f.network; rawConn = $f.rawConn; timeout = $f.timeout; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 82537  		conn = [conn];
 82538  		errChannel = [errChannel];
 82539  		timeout = dialer.Timeout;
 82540  		if (!$clone(dialer.Deadline, time.Time).IsZero()) {
 82541  			deadlineTimeout = time.Until($clone(dialer.Deadline, time.Time));
 82542  			if ((timeout.$high === 0 && timeout.$low === 0) || (deadlineTimeout.$high < timeout.$high || (deadlineTimeout.$high === timeout.$high && deadlineTimeout.$low < timeout.$low))) {
 82543  				timeout = deadlineTimeout;
 82544  			}
 82545  		}
 82546  		errChannel[0] = $chanNil;
 82547  		/* */ if (!((timeout.$high === 0 && timeout.$low === 0))) { $s = 1; continue; }
 82548  		/* */ $s = 2; continue;
 82549  		/* if (!((timeout.$high === 0 && timeout.$low === 0))) { */ case 1:
 82550  			errChannel[0] = new $Chan($error, 2);
 82551  			time.AfterFunc(timeout, (function(conn, errChannel) { return function $b() {
 82552  				var x, $s, $r;
 82553  				/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 82554  				$r = $send(errChannel[0], (x = new timeoutError.ptr(), new x.constructor.elem(x))); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 82555  				$s = -1; return;
 82556  				/* */ } return; } if ($f === undefined) { $f = { $blk: $b }; } $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
 82557  			}; })(conn, errChannel));
 82558  		/* } */ case 2:
 82559  		_tuple = dialer.Dial(network, addr);
 82560  		rawConn = _tuple[0];
 82561  		err = _tuple[1];
 82562  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 82563  			$s = -1; return [ptrType$15.nil, err];
 82564  		}
 82565  		colonPos = strings.LastIndex(addr, ":");
 82566  		if (colonPos === -1) {
 82567  			colonPos = addr.length;
 82568  		}
 82569  		hostname = $substring(addr, 0, colonPos);
 82570  		if (config === ptrType$3.nil) {
 82571  			config = defaultConfig();
 82572  		}
 82573  		/* */ if (config.ServerName === "") { $s = 3; continue; }
 82574  		/* */ $s = 4; continue;
 82575  		/* if (config.ServerName === "") { */ case 3:
 82576  			_r = config.Clone(); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 82577  			c = _r;
 82578  			c.ServerName = hostname;
 82579  			config = c;
 82580  		/* } */ case 4:
 82581  		conn[0] = Client(rawConn, config);
 82582  		/* */ if ((timeout.$high === 0 && timeout.$low === 0)) { $s = 6; continue; }
 82583  		/* */ $s = 7; continue;
 82584  		/* if ((timeout.$high === 0 && timeout.$low === 0)) { */ case 6:
 82585  			_r$1 = conn[0].Handshake(); /* */ $s = 9; case 9: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 82586  			err = _r$1;
 82587  			$s = 8; continue;
 82588  		/* } else { */ case 7:
 82589  			$go((function(conn, errChannel) { return function $b() {
 82590  				var _r$2, $s, $r;
 82591  				/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$2 = $f._r$2; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 82592  				_r$2 = conn[0].Handshake(); /* */ $s = 1; case 1: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 82593  				$r = $send(errChannel[0], _r$2); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 82594  				$s = -1; return;
 82595  				/* */ } return; } if ($f === undefined) { $f = { $blk: $b }; } $f._r$2 = _r$2; $f.$s = $s; $f.$r = $r; return $f;
 82596  			}; })(conn, errChannel), []);
 82597  			_r$2 = $recv(errChannel[0]); /* */ $s = 10; case 10: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 82598  			err = _r$2[0];
 82599  		/* } */ case 8:
 82600  		/* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 11; continue; }
 82601  		/* */ $s = 12; continue;
 82602  		/* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 11:
 82603  			_r$3 = rawConn.Close(); /* */ $s = 13; case 13: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 82604  			_r$3;
 82605  			$s = -1; return [ptrType$15.nil, err];
 82606  		/* } */ case 12:
 82607  		$s = -1; return [conn[0], $ifaceNil];
 82608  		/* */ } return; } if ($f === undefined) { $f = { $blk: DialWithDialer }; } $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._tuple = _tuple; $f.addr = addr; $f.c = c; $f.colonPos = colonPos; $f.config = config; $f.conn = conn; $f.deadlineTimeout = deadlineTimeout; $f.dialer = dialer; $f.err = err; $f.errChannel = errChannel; $f.hostname = hostname; $f.network = network; $f.rawConn = rawConn; $f.timeout = timeout; $f.$s = $s; $f.$r = $r; return $f;
 82609  	};
 82610  	$pkg.DialWithDialer = DialWithDialer;
 82611  	Dial = function(network, addr, config) {
 82612  		var _r, addr, config, network, $s, $r;
 82613  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; addr = $f.addr; config = $f.config; network = $f.network; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 82614  		_r = DialWithDialer(new net.Dialer.ptr(new time.Duration(0, 0), new time.Time.ptr(new $Uint64(0, 0), new $Int64(0, 0), ptrType$18.nil), $ifaceNil, false, new time.Duration(0, 0), new time.Duration(0, 0), ptrType$32.nil, $chanNil), network, addr, config); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 82615  		$s = -1; return _r;
 82616  		/* */ } return; } if ($f === undefined) { $f = { $blk: Dial }; } $f._r = _r; $f.addr = addr; $f.config = config; $f.network = network; $f.$s = $s; $f.$r = $r; return $f;
 82617  	};
 82618  	$pkg.Dial = Dial;
 82619  	LoadX509KeyPair = function(certFile, keyFile) {
 82620  		var _r, _r$1, _r$2, _tuple, _tuple$1, certFile, certPEMBlock, err, keyFile, keyPEMBlock, $s, $r;
 82621  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; certFile = $f.certFile; certPEMBlock = $f.certPEMBlock; err = $f.err; keyFile = $f.keyFile; keyPEMBlock = $f.keyPEMBlock; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 82622  		_r = ioutil.ReadFile(certFile); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 82623  		_tuple = _r;
 82624  		certPEMBlock = _tuple[0];
 82625  		err = _tuple[1];
 82626  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 82627  			$s = -1; return [new Certificate.ptr(sliceType$9.nil, $ifaceNil, sliceType$7.nil, sliceType$9.nil, ptrType$13.nil), err];
 82628  		}
 82629  		_r$1 = ioutil.ReadFile(keyFile); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 82630  		_tuple$1 = _r$1;
 82631  		keyPEMBlock = _tuple$1[0];
 82632  		err = _tuple$1[1];
 82633  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 82634  			$s = -1; return [new Certificate.ptr(sliceType$9.nil, $ifaceNil, sliceType$7.nil, sliceType$9.nil, ptrType$13.nil), err];
 82635  		}
 82636  		_r$2 = X509KeyPair(certPEMBlock, keyPEMBlock); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 82637  		$s = -1; return _r$2;
 82638  		/* */ } return; } if ($f === undefined) { $f = { $blk: LoadX509KeyPair }; } $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.certFile = certFile; $f.certPEMBlock = certPEMBlock; $f.err = err; $f.keyFile = keyFile; $f.keyPEMBlock = keyPEMBlock; $f.$s = $s; $f.$r = $r; return $f;
 82639  	};
 82640  	$pkg.LoadX509KeyPair = LoadX509KeyPair;
 82641  	X509KeyPair = function(certPEMBlock, keyPEMBlock) {
 82642  		var _r, _r$1, _r$10, _r$11, _r$12, _r$13, _r$14, _r$15, _r$16, _r$17, _r$18, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, _tuple$5, cert, certDERBlock, certPEMBlock, err, fail, keyDERBlock, keyPEMBlock, ok, ok$1, priv, priv$1, pub, pub$1, pub$2, skippedBlockTypes, x, x509Cert, $s, $r;
 82643  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _r$10 = $f._r$10; _r$11 = $f._r$11; _r$12 = $f._r$12; _r$13 = $f._r$13; _r$14 = $f._r$14; _r$15 = $f._r$15; _r$16 = $f._r$16; _r$17 = $f._r$17; _r$18 = $f._r$18; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _r$8 = $f._r$8; _r$9 = $f._r$9; _ref = $f._ref; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; _tuple$4 = $f._tuple$4; _tuple$5 = $f._tuple$5; cert = $f.cert; certDERBlock = $f.certDERBlock; certPEMBlock = $f.certPEMBlock; err = $f.err; fail = $f.fail; keyDERBlock = $f.keyDERBlock; keyPEMBlock = $f.keyPEMBlock; ok = $f.ok; ok$1 = $f.ok$1; priv = $f.priv; priv$1 = $f.priv$1; pub = $f.pub; pub$1 = $f.pub$1; pub$2 = $f.pub$2; skippedBlockTypes = $f.skippedBlockTypes; x = $f.x; x509Cert = $f.x509Cert; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 82644  		fail = (function(err) {
 82645  			var err;
 82646  			return [new Certificate.ptr(sliceType$9.nil, $ifaceNil, sliceType$7.nil, sliceType$9.nil, ptrType$13.nil), err];
 82647  		});
 82648  		cert = new Certificate.ptr(sliceType$9.nil, $ifaceNil, sliceType$7.nil, sliceType$9.nil, ptrType$13.nil);
 82649  		skippedBlockTypes = sliceType$1.nil;
 82650  		/* while (true) { */ case 1:
 82651  			certDERBlock = ptrType$33.nil;
 82652  			_r = pem.Decode(certPEMBlock); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 82653  			_tuple = _r;
 82654  			certDERBlock = _tuple[0];
 82655  			certPEMBlock = _tuple[1];
 82656  			if (certDERBlock === ptrType$33.nil) {
 82657  				/* break; */ $s = 2; continue;
 82658  			}
 82659  			if (certDERBlock.Type === "CERTIFICATE") {
 82660  				cert.Certificate = $append(cert.Certificate, certDERBlock.Bytes);
 82661  			} else {
 82662  				skippedBlockTypes = $append(skippedBlockTypes, certDERBlock.Type);
 82663  			}
 82664  		/* } */ $s = 1; continue; case 2:
 82665  		/* */ if (cert.Certificate.$length === 0) { $s = 4; continue; }
 82666  		/* */ $s = 5; continue;
 82667  		/* if (cert.Certificate.$length === 0) { */ case 4:
 82668  			/* */ if (skippedBlockTypes.$length === 0) { $s = 6; continue; }
 82669  			/* */ $s = 7; continue;
 82670  			/* if (skippedBlockTypes.$length === 0) { */ case 6:
 82671  				_r$1 = fail(errors.New("tls: failed to find any PEM data in certificate input")); /* */ $s = 8; case 8: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 82672  				$s = -1; return _r$1;
 82673  			/* } */ case 7:
 82674  			/* */ if ((skippedBlockTypes.$length === 1) && strings.HasSuffix((0 >= skippedBlockTypes.$length ? ($throwRuntimeError("index out of range"), undefined) : skippedBlockTypes.$array[skippedBlockTypes.$offset + 0]), "PRIVATE KEY")) { $s = 9; continue; }
 82675  			/* */ $s = 10; continue;
 82676  			/* if ((skippedBlockTypes.$length === 1) && strings.HasSuffix((0 >= skippedBlockTypes.$length ? ($throwRuntimeError("index out of range"), undefined) : skippedBlockTypes.$array[skippedBlockTypes.$offset + 0]), "PRIVATE KEY")) { */ case 9:
 82677  				_r$2 = fail(errors.New("tls: failed to find certificate PEM data in certificate input, but did find a private key; PEM inputs may have been switched")); /* */ $s = 11; case 11: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 82678  				$s = -1; return _r$2;
 82679  			/* } */ case 10:
 82680  			_r$3 = fmt.Errorf("tls: failed to find \"CERTIFICATE\" PEM block in certificate input after skipping PEM blocks of the following types: %v", new sliceType$8([skippedBlockTypes])); /* */ $s = 12; case 12: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 82681  			_r$4 = fail(_r$3); /* */ $s = 13; case 13: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 82682  			$s = -1; return _r$4;
 82683  		/* } */ case 5:
 82684  		skippedBlockTypes = $subslice(skippedBlockTypes, 0, 0);
 82685  		keyDERBlock = ptrType$33.nil;
 82686  		/* while (true) { */ case 14:
 82687  			_r$5 = pem.Decode(keyPEMBlock); /* */ $s = 16; case 16: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
 82688  			_tuple$1 = _r$5;
 82689  			keyDERBlock = _tuple$1[0];
 82690  			keyPEMBlock = _tuple$1[1];
 82691  			/* */ if (keyDERBlock === ptrType$33.nil) { $s = 17; continue; }
 82692  			/* */ $s = 18; continue;
 82693  			/* if (keyDERBlock === ptrType$33.nil) { */ case 17:
 82694  				/* */ if (skippedBlockTypes.$length === 0) { $s = 19; continue; }
 82695  				/* */ $s = 20; continue;
 82696  				/* if (skippedBlockTypes.$length === 0) { */ case 19:
 82697  					_r$6 = fail(errors.New("tls: failed to find any PEM data in key input")); /* */ $s = 21; case 21: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
 82698  					$s = -1; return _r$6;
 82699  				/* } */ case 20:
 82700  				/* */ if ((skippedBlockTypes.$length === 1) && (0 >= skippedBlockTypes.$length ? ($throwRuntimeError("index out of range"), undefined) : skippedBlockTypes.$array[skippedBlockTypes.$offset + 0]) === "CERTIFICATE") { $s = 22; continue; }
 82701  				/* */ $s = 23; continue;
 82702  				/* if ((skippedBlockTypes.$length === 1) && (0 >= skippedBlockTypes.$length ? ($throwRuntimeError("index out of range"), undefined) : skippedBlockTypes.$array[skippedBlockTypes.$offset + 0]) === "CERTIFICATE") { */ case 22:
 82703  					_r$7 = fail(errors.New("tls: found a certificate rather than a key in the PEM for the private key")); /* */ $s = 24; case 24: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
 82704  					$s = -1; return _r$7;
 82705  				/* } */ case 23:
 82706  				_r$8 = fmt.Errorf("tls: failed to find PEM block with type ending in \"PRIVATE KEY\" in key input after skipping PEM blocks of the following types: %v", new sliceType$8([skippedBlockTypes])); /* */ $s = 25; case 25: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
 82707  				_r$9 = fail(_r$8); /* */ $s = 26; case 26: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 82708  				$s = -1; return _r$9;
 82709  			/* } */ case 18:
 82710  			if (keyDERBlock.Type === "PRIVATE KEY" || strings.HasSuffix(keyDERBlock.Type, " PRIVATE KEY")) {
 82711  				/* break; */ $s = 15; continue;
 82712  			}
 82713  			skippedBlockTypes = $append(skippedBlockTypes, keyDERBlock.Type);
 82714  		/* } */ $s = 14; continue; case 15:
 82715  		err = $ifaceNil;
 82716  		_r$10 = parsePrivateKey(keyDERBlock.Bytes); /* */ $s = 27; case 27: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
 82717  		_tuple$2 = _r$10;
 82718  		cert.PrivateKey = _tuple$2[0];
 82719  		err = _tuple$2[1];
 82720  		/* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 28; continue; }
 82721  		/* */ $s = 29; continue;
 82722  		/* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 28:
 82723  			_r$11 = fail(err); /* */ $s = 30; case 30: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; }
 82724  			$s = -1; return _r$11;
 82725  		/* } */ case 29:
 82726  		_r$12 = x509.ParseCertificate((x = cert.Certificate, (0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0]))); /* */ $s = 31; case 31: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; }
 82727  		_tuple$3 = _r$12;
 82728  		x509Cert = _tuple$3[0];
 82729  		err = _tuple$3[1];
 82730  		/* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 32; continue; }
 82731  		/* */ $s = 33; continue;
 82732  		/* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 32:
 82733  			_r$13 = fail(err); /* */ $s = 34; case 34: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; }
 82734  			$s = -1; return _r$13;
 82735  		/* } */ case 33:
 82736  		_ref = x509Cert.PublicKey;
 82737  		/* */ if ($assertType(_ref, ptrType$19, true)[1]) { $s = 35; continue; }
 82738  		/* */ if ($assertType(_ref, ptrType$20, true)[1]) { $s = 36; continue; }
 82739  		/* */ $s = 37; continue;
 82740  		/* if ($assertType(_ref, ptrType$19, true)[1]) { */ case 35:
 82741  			pub = _ref.$val;
 82742  			_tuple$4 = $assertType(cert.PrivateKey, ptrType$34, true);
 82743  			priv = _tuple$4[0];
 82744  			ok = _tuple$4[1];
 82745  			/* */ if (!ok) { $s = 39; continue; }
 82746  			/* */ $s = 40; continue;
 82747  			/* if (!ok) { */ case 39:
 82748  				_r$14 = fail(errors.New("tls: private key type does not match public key type")); /* */ $s = 41; case 41: if($c) { $c = false; _r$14 = _r$14.$blk(); } if (_r$14 && _r$14.$blk !== undefined) { break s; }
 82749  				$s = -1; return _r$14;
 82750  			/* } */ case 40:
 82751  			/* */ if (!((pub.N.Cmp(priv.PublicKey.N) === 0))) { $s = 42; continue; }
 82752  			/* */ $s = 43; continue;
 82753  			/* if (!((pub.N.Cmp(priv.PublicKey.N) === 0))) { */ case 42:
 82754  				_r$15 = fail(errors.New("tls: private key does not match public key")); /* */ $s = 44; case 44: if($c) { $c = false; _r$15 = _r$15.$blk(); } if (_r$15 && _r$15.$blk !== undefined) { break s; }
 82755  				$s = -1; return _r$15;
 82756  			/* } */ case 43:
 82757  			$s = 38; continue;
 82758  		/* } else if ($assertType(_ref, ptrType$20, true)[1]) { */ case 36:
 82759  			pub$1 = _ref.$val;
 82760  			_tuple$5 = $assertType(cert.PrivateKey, ptrType$35, true);
 82761  			priv$1 = _tuple$5[0];
 82762  			ok$1 = _tuple$5[1];
 82763  			/* */ if (!ok$1) { $s = 45; continue; }
 82764  			/* */ $s = 46; continue;
 82765  			/* if (!ok$1) { */ case 45:
 82766  				_r$16 = fail(errors.New("tls: private key type does not match public key type")); /* */ $s = 47; case 47: if($c) { $c = false; _r$16 = _r$16.$blk(); } if (_r$16 && _r$16.$blk !== undefined) { break s; }
 82767  				$s = -1; return _r$16;
 82768  			/* } */ case 46:
 82769  			/* */ if (!((pub$1.X.Cmp(priv$1.PublicKey.X) === 0)) || !((pub$1.Y.Cmp(priv$1.PublicKey.Y) === 0))) { $s = 48; continue; }
 82770  			/* */ $s = 49; continue;
 82771  			/* if (!((pub$1.X.Cmp(priv$1.PublicKey.X) === 0)) || !((pub$1.Y.Cmp(priv$1.PublicKey.Y) === 0))) { */ case 48:
 82772  				_r$17 = fail(errors.New("tls: private key does not match public key")); /* */ $s = 50; case 50: if($c) { $c = false; _r$17 = _r$17.$blk(); } if (_r$17 && _r$17.$blk !== undefined) { break s; }
 82773  				$s = -1; return _r$17;
 82774  			/* } */ case 49:
 82775  			$s = 38; continue;
 82776  		/* } else { */ case 37:
 82777  			pub$2 = _ref;
 82778  			_r$18 = fail(errors.New("tls: unknown public key algorithm")); /* */ $s = 51; case 51: if($c) { $c = false; _r$18 = _r$18.$blk(); } if (_r$18 && _r$18.$blk !== undefined) { break s; }
 82779  			$s = -1; return _r$18;
 82780  		/* } */ case 38:
 82781  		$s = -1; return [cert, $ifaceNil];
 82782  		/* */ } return; } if ($f === undefined) { $f = { $blk: X509KeyPair }; } $f._r = _r; $f._r$1 = _r$1; $f._r$10 = _r$10; $f._r$11 = _r$11; $f._r$12 = _r$12; $f._r$13 = _r$13; $f._r$14 = _r$14; $f._r$15 = _r$15; $f._r$16 = _r$16; $f._r$17 = _r$17; $f._r$18 = _r$18; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._r$8 = _r$8; $f._r$9 = _r$9; $f._ref = _ref; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f._tuple$4 = _tuple$4; $f._tuple$5 = _tuple$5; $f.cert = cert; $f.certDERBlock = certDERBlock; $f.certPEMBlock = certPEMBlock; $f.err = err; $f.fail = fail; $f.keyDERBlock = keyDERBlock; $f.keyPEMBlock = keyPEMBlock; $f.ok = ok; $f.ok$1 = ok$1; $f.priv = priv; $f.priv$1 = priv$1; $f.pub = pub; $f.pub$1 = pub$1; $f.pub$2 = pub$2; $f.skippedBlockTypes = skippedBlockTypes; $f.x = x; $f.x509Cert = x509Cert; $f.$s = $s; $f.$r = $r; return $f;
 82783  	};
 82784  	$pkg.X509KeyPair = X509KeyPair;
 82785  	parsePrivateKey = function(der) {
 82786  		var _r, _r$1, _r$2, _ref, _tuple, _tuple$1, _tuple$2, der, err, err$1, err$2, key, key$1, key$2, key$3, key$4, $s, $r;
 82787  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _ref = $f._ref; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; der = $f.der; err = $f.err; err$1 = $f.err$1; err$2 = $f.err$2; key = $f.key; key$1 = $f.key$1; key$2 = $f.key$2; key$3 = $f.key$3; key$4 = $f.key$4; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 82788  		_r = x509.ParsePKCS1PrivateKey(der); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 82789  		_tuple = _r;
 82790  		key = _tuple[0];
 82791  		err = _tuple[1];
 82792  		if ($interfaceIsEqual(err, $ifaceNil)) {
 82793  			$s = -1; return [key, $ifaceNil];
 82794  		}
 82795  		_r$1 = x509.ParsePKCS8PrivateKey(der); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 82796  		_tuple$1 = _r$1;
 82797  		key$1 = _tuple$1[0];
 82798  		err$1 = _tuple$1[1];
 82799  		if ($interfaceIsEqual(err$1, $ifaceNil)) {
 82800  			_ref = key$1;
 82801  			if ($assertType(_ref, ptrType$34, true)[1] || $assertType(_ref, ptrType$35, true)[1]) {
 82802  				key$2 = _ref;
 82803  				$s = -1; return [key$2, $ifaceNil];
 82804  			} else {
 82805  				key$3 = _ref;
 82806  				$s = -1; return [$ifaceNil, errors.New("tls: found unknown private key type in PKCS#8 wrapping")];
 82807  			}
 82808  		}
 82809  		_r$2 = x509.ParseECPrivateKey(der); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 82810  		_tuple$2 = _r$2;
 82811  		key$4 = _tuple$2[0];
 82812  		err$2 = _tuple$2[1];
 82813  		if ($interfaceIsEqual(err$2, $ifaceNil)) {
 82814  			$s = -1; return [key$4, $ifaceNil];
 82815  		}
 82816  		$s = -1; return [$ifaceNil, errors.New("tls: failed to parse private key")];
 82817  		/* */ } return; } if ($f === undefined) { $f = { $blk: parsePrivateKey }; } $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._ref = _ref; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f.der = der; $f.err = err; $f.err$1 = err$1; $f.err$2 = err$2; $f.key = key; $f.key$1 = key$1; $f.key$2 = key$2; $f.key$3 = key$3; $f.key$4 = key$4; $f.$s = $s; $f.$r = $r; return $f;
 82818  	};
 82819  	alert.methods = [{prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}];
 82820  	ptrType$36.methods = [{prop: "NonceSize", name: "NonceSize", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Overhead", name: "Overhead", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "explicitNonceLen", name: "explicitNonceLen", pkg: "crypto/tls", typ: $funcType([], [$Int], false)}, {prop: "Seal", name: "Seal", pkg: "", typ: $funcType([sliceType$7, sliceType$7, sliceType$7, sliceType$7], [sliceType$7], false)}, {prop: "Open", name: "Open", pkg: "", typ: $funcType([sliceType$7, sliceType$7, sliceType$7, sliceType$7], [sliceType$7, $error], false)}];
 82821  	ptrType$37.methods = [{prop: "NonceSize", name: "NonceSize", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Overhead", name: "Overhead", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "explicitNonceLen", name: "explicitNonceLen", pkg: "crypto/tls", typ: $funcType([], [$Int], false)}, {prop: "Seal", name: "Seal", pkg: "", typ: $funcType([sliceType$7, sliceType$7, sliceType$7, sliceType$7], [sliceType$7], false)}, {prop: "Open", name: "Open", pkg: "", typ: $funcType([sliceType$7, sliceType$7, sliceType$7, sliceType$7], [sliceType$7, $error], false)}];
 82822  	ssl30MAC.methods = [{prop: "Size", name: "Size", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "MAC", name: "MAC", pkg: "", typ: $funcType([sliceType$7, sliceType$7, sliceType$7, sliceType$7, sliceType$7], [sliceType$7], false)}];
 82823  	ptrType$38.methods = [{prop: "Size", name: "Size", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "BlockSize", name: "BlockSize", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Reset", name: "Reset", pkg: "", typ: $funcType([], [], false)}, {prop: "Write", name: "Write", pkg: "", typ: $funcType([sliceType$7], [$Int, $error], false)}, {prop: "Sum", name: "Sum", pkg: "", typ: $funcType([sliceType$7], [sliceType$7], false)}];
 82824  	tls10MAC.methods = [{prop: "Size", name: "Size", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "MAC", name: "MAC", pkg: "", typ: $funcType([sliceType$7, sliceType$7, sliceType$7, sliceType$7, sliceType$7], [sliceType$7], false)}];
 82825  	ptrType$3.methods = [{prop: "Clone", name: "Clone", pkg: "", typ: $funcType([], [ptrType$3], false)}, {prop: "serverInit", name: "serverInit", pkg: "crypto/tls", typ: $funcType([ptrType$3], [], false)}, {prop: "ticketKeys", name: "ticketKeys", pkg: "crypto/tls", typ: $funcType([], [sliceType$4], false)}, {prop: "SetSessionTicketKeys", name: "SetSessionTicketKeys", pkg: "", typ: $funcType([sliceType$13], [], false)}, {prop: "rand", name: "rand", pkg: "crypto/tls", typ: $funcType([], [io.Reader], false)}, {prop: "time", name: "time", pkg: "crypto/tls", typ: $funcType([], [time.Time], false)}, {prop: "cipherSuites", name: "cipherSuites", pkg: "crypto/tls", typ: $funcType([], [sliceType$2], false)}, {prop: "minVersion", name: "minVersion", pkg: "crypto/tls", typ: $funcType([], [$Uint16], false)}, {prop: "maxVersion", name: "maxVersion", pkg: "crypto/tls", typ: $funcType([], [$Uint16], false)}, {prop: "curvePreferences", name: "curvePreferences", pkg: "crypto/tls", typ: $funcType([], [sliceType$3], false)}, {prop: "mutualVersion", name: "mutualVersion", pkg: "crypto/tls", typ: $funcType([$Uint16], [$Uint16, $Bool], false)}, {prop: "getCertificate", name: "getCertificate", pkg: "crypto/tls", typ: $funcType([ptrType$31], [ptrType$4, $error], false)}, {prop: "BuildNameToCertificate", name: "BuildNameToCertificate", pkg: "", typ: $funcType([], [], false)}, {prop: "writeKeyLog", name: "writeKeyLog", pkg: "crypto/tls", typ: $funcType([sliceType$7, sliceType$7], [$error], false)}];
 82826  	ptrType$15.methods = [{prop: "LocalAddr", name: "LocalAddr", pkg: "", typ: $funcType([], [net.Addr], false)}, {prop: "RemoteAddr", name: "RemoteAddr", pkg: "", typ: $funcType([], [net.Addr], false)}, {prop: "SetDeadline", name: "SetDeadline", pkg: "", typ: $funcType([time.Time], [$error], false)}, {prop: "SetReadDeadline", name: "SetReadDeadline", pkg: "", typ: $funcType([time.Time], [$error], false)}, {prop: "SetWriteDeadline", name: "SetWriteDeadline", pkg: "", typ: $funcType([time.Time], [$error], false)}, {prop: "newRecordHeaderError", name: "newRecordHeaderError", pkg: "crypto/tls", typ: $funcType([$String], [RecordHeaderError], false)}, {prop: "readRecord", name: "readRecord", pkg: "crypto/tls", typ: $funcType([recordType], [$error], false)}, {prop: "sendAlertLocked", name: "sendAlertLocked", pkg: "crypto/tls", typ: $funcType([alert], [$error], false)}, {prop: "sendAlert", name: "sendAlert", pkg: "crypto/tls", typ: $funcType([alert], [$error], false)}, {prop: "maxPayloadSizeForWrite", name: "maxPayloadSizeForWrite", pkg: "crypto/tls", typ: $funcType([recordType, $Int], [$Int], false)}, {prop: "write", name: "write", pkg: "crypto/tls", typ: $funcType([sliceType$7], [$Int, $error], false)}, {prop: "flush", name: "flush", pkg: "crypto/tls", typ: $funcType([], [$Int, $error], false)}, {prop: "writeRecordLocked", name: "writeRecordLocked", pkg: "crypto/tls", typ: $funcType([recordType, sliceType$7], [$Int, $error], false)}, {prop: "writeRecord", name: "writeRecord", pkg: "crypto/tls", typ: $funcType([recordType, sliceType$7], [$Int, $error], false)}, {prop: "readHandshake", name: "readHandshake", pkg: "crypto/tls", typ: $funcType([], [$emptyInterface, $error], false)}, {prop: "Write", name: "Write", pkg: "", typ: $funcType([sliceType$7], [$Int, $error], false)}, {prop: "handleRenegotiation", name: "handleRenegotiation", pkg: "crypto/tls", typ: $funcType([], [$error], false)}, {prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType$7], [$Int, $error], false)}, {prop: "Close", name: "Close", pkg: "", typ: $funcType([], [$error], false)}, {prop: "CloseWrite", name: "CloseWrite", pkg: "", typ: $funcType([], [$error], false)}, {prop: "closeNotify", name: "closeNotify", pkg: "crypto/tls", typ: $funcType([], [$error], false)}, {prop: "Handshake", name: "Handshake", pkg: "", typ: $funcType([], [$error], false)}, {prop: "ConnectionState", name: "ConnectionState", pkg: "", typ: $funcType([], [ConnectionState], false)}, {prop: "OCSPResponse", name: "OCSPResponse", pkg: "", typ: $funcType([], [sliceType$7], false)}, {prop: "VerifyHostname", name: "VerifyHostname", pkg: "", typ: $funcType([$String], [$error], false)}, {prop: "clientHandshake", name: "clientHandshake", pkg: "crypto/tls", typ: $funcType([], [$error], false)}, {prop: "serverHandshake", name: "serverHandshake", pkg: "crypto/tls", typ: $funcType([], [$error], false)}, {prop: "encryptTicket", name: "encryptTicket", pkg: "crypto/tls", typ: $funcType([ptrType$30], [sliceType$7, $error], false)}, {prop: "decryptTicket", name: "decryptTicket", pkg: "crypto/tls", typ: $funcType([sliceType$7], [ptrType$30, $Bool], false)}];
 82827  	ptrType$41.methods = [{prop: "setErrorLocked", name: "setErrorLocked", pkg: "crypto/tls", typ: $funcType([$error], [$error], false)}, {prop: "prepareCipherSpec", name: "prepareCipherSpec", pkg: "crypto/tls", typ: $funcType([$Uint16, $emptyInterface, macFunction], [], false)}, {prop: "changeCipherSpec", name: "changeCipherSpec", pkg: "crypto/tls", typ: $funcType([], [$error], false)}, {prop: "incSeq", name: "incSeq", pkg: "crypto/tls", typ: $funcType([], [], false)}, {prop: "decrypt", name: "decrypt", pkg: "crypto/tls", typ: $funcType([ptrType$9], [$Bool, $Int, alert], false)}, {prop: "encrypt", name: "encrypt", pkg: "crypto/tls", typ: $funcType([ptrType$9, $Int], [$Bool, alert], false)}, {prop: "newBlock", name: "newBlock", pkg: "crypto/tls", typ: $funcType([], [ptrType$9], false)}, {prop: "freeBlock", name: "freeBlock", pkg: "crypto/tls", typ: $funcType([ptrType$9], [], false)}, {prop: "splitBlock", name: "splitBlock", pkg: "crypto/tls", typ: $funcType([ptrType$9, $Int], [ptrType$9, ptrType$9], false)}];
 82828  	ptrType$9.methods = [{prop: "resize", name: "resize", pkg: "crypto/tls", typ: $funcType([$Int], [], false)}, {prop: "reserve", name: "reserve", pkg: "crypto/tls", typ: $funcType([$Int], [], false)}, {prop: "readFromUntil", name: "readFromUntil", pkg: "crypto/tls", typ: $funcType([io.Reader, $Int], [$error], false)}, {prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType$7], [$Int, $error], false)}];
 82829  	RecordHeaderError.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}];
 82830  	ptrType$42.methods = [{prop: "handshake", name: "handshake", pkg: "crypto/tls", typ: $funcType([], [$error], false)}, {prop: "pickTLSVersion", name: "pickTLSVersion", pkg: "crypto/tls", typ: $funcType([], [$error], false)}, {prop: "pickCipherSuite", name: "pickCipherSuite", pkg: "crypto/tls", typ: $funcType([], [$error], false)}, {prop: "doFullHandshake", name: "doFullHandshake", pkg: "crypto/tls", typ: $funcType([], [$error], false)}, {prop: "establishKeys", name: "establishKeys", pkg: "crypto/tls", typ: $funcType([], [$error], false)}, {prop: "serverResumedSession", name: "serverResumedSession", pkg: "crypto/tls", typ: $funcType([], [$Bool], false)}, {prop: "processServerHello", name: "processServerHello", pkg: "crypto/tls", typ: $funcType([], [$Bool, $error], false)}, {prop: "readFinished", name: "readFinished", pkg: "crypto/tls", typ: $funcType([sliceType$7], [$error], false)}, {prop: "readSessionTicket", name: "readSessionTicket", pkg: "crypto/tls", typ: $funcType([], [$error], false)}, {prop: "sendFinished", name: "sendFinished", pkg: "crypto/tls", typ: $funcType([sliceType$7], [$error], false)}, {prop: "getCertificate", name: "getCertificate", pkg: "crypto/tls", typ: $funcType([ptrType$23], [ptrType$4, $error], false)}];
 82831  	ptrType$14.methods = [{prop: "equal", name: "equal", pkg: "crypto/tls", typ: $funcType([$emptyInterface], [$Bool], false)}, {prop: "marshal", name: "marshal", pkg: "crypto/tls", typ: $funcType([], [sliceType$7], false)}, {prop: "unmarshal", name: "unmarshal", pkg: "crypto/tls", typ: $funcType([sliceType$7], [$Bool], false)}];
 82832  	ptrType$16.methods = [{prop: "equal", name: "equal", pkg: "crypto/tls", typ: $funcType([$emptyInterface], [$Bool], false)}, {prop: "marshal", name: "marshal", pkg: "crypto/tls", typ: $funcType([], [sliceType$7], false)}, {prop: "unmarshal", name: "unmarshal", pkg: "crypto/tls", typ: $funcType([sliceType$7], [$Bool], false)}];
 82833  	ptrType$17.methods = [{prop: "equal", name: "equal", pkg: "crypto/tls", typ: $funcType([$emptyInterface], [$Bool], false)}, {prop: "marshal", name: "marshal", pkg: "crypto/tls", typ: $funcType([], [sliceType$7], false)}, {prop: "unmarshal", name: "unmarshal", pkg: "crypto/tls", typ: $funcType([sliceType$7], [$Bool], false)}];
 82834  	ptrType$22.methods = [{prop: "equal", name: "equal", pkg: "crypto/tls", typ: $funcType([$emptyInterface], [$Bool], false)}, {prop: "marshal", name: "marshal", pkg: "crypto/tls", typ: $funcType([], [sliceType$7], false)}, {prop: "unmarshal", name: "unmarshal", pkg: "crypto/tls", typ: $funcType([sliceType$7], [$Bool], false)}];
 82835  	ptrType$21.methods = [{prop: "equal", name: "equal", pkg: "crypto/tls", typ: $funcType([$emptyInterface], [$Bool], false)}, {prop: "marshal", name: "marshal", pkg: "crypto/tls", typ: $funcType([], [sliceType$7], false)}, {prop: "unmarshal", name: "unmarshal", pkg: "crypto/tls", typ: $funcType([sliceType$7], [$Bool], false)}];
 82836  	ptrType$24.methods = [{prop: "equal", name: "equal", pkg: "crypto/tls", typ: $funcType([$emptyInterface], [$Bool], false)}, {prop: "marshal", name: "marshal", pkg: "crypto/tls", typ: $funcType([], [sliceType$7], false)}, {prop: "unmarshal", name: "unmarshal", pkg: "crypto/tls", typ: $funcType([sliceType$7], [$Bool], false)}];
 82837  	ptrType$25.methods = [{prop: "equal", name: "equal", pkg: "crypto/tls", typ: $funcType([$emptyInterface], [$Bool], false)}, {prop: "marshal", name: "marshal", pkg: "crypto/tls", typ: $funcType([], [sliceType$7], false)}, {prop: "unmarshal", name: "unmarshal", pkg: "crypto/tls", typ: $funcType([sliceType$7], [$Bool], false)}];
 82838  	ptrType$26.methods = [{prop: "equal", name: "equal", pkg: "crypto/tls", typ: $funcType([$emptyInterface], [$Bool], false)}, {prop: "marshal", name: "marshal", pkg: "crypto/tls", typ: $funcType([], [sliceType$7], false)}, {prop: "unmarshal", name: "unmarshal", pkg: "crypto/tls", typ: $funcType([sliceType$7], [$Bool], false)}];
 82839  	ptrType$28.methods = [{prop: "equal", name: "equal", pkg: "crypto/tls", typ: $funcType([$emptyInterface], [$Bool], false)}, {prop: "marshal", name: "marshal", pkg: "crypto/tls", typ: $funcType([], [sliceType$7], false)}, {prop: "unmarshal", name: "unmarshal", pkg: "crypto/tls", typ: $funcType([sliceType$7], [$Bool], false)}];
 82840  	ptrType$23.methods = [{prop: "equal", name: "equal", pkg: "crypto/tls", typ: $funcType([$emptyInterface], [$Bool], false)}, {prop: "marshal", name: "marshal", pkg: "crypto/tls", typ: $funcType([], [sliceType$7], false)}, {prop: "unmarshal", name: "unmarshal", pkg: "crypto/tls", typ: $funcType([sliceType$7], [$Bool], false)}];
 82841  	ptrType$29.methods = [{prop: "equal", name: "equal", pkg: "crypto/tls", typ: $funcType([$emptyInterface], [$Bool], false)}, {prop: "marshal", name: "marshal", pkg: "crypto/tls", typ: $funcType([], [sliceType$7], false)}, {prop: "unmarshal", name: "unmarshal", pkg: "crypto/tls", typ: $funcType([sliceType$7], [$Bool], false)}];
 82842  	ptrType$27.methods = [{prop: "equal", name: "equal", pkg: "crypto/tls", typ: $funcType([$emptyInterface], [$Bool], false)}, {prop: "marshal", name: "marshal", pkg: "crypto/tls", typ: $funcType([], [sliceType$7], false)}, {prop: "unmarshal", name: "unmarshal", pkg: "crypto/tls", typ: $funcType([sliceType$7], [$Bool], false)}];
 82843  	ptrType$11.methods = [{prop: "marshal", name: "marshal", pkg: "crypto/tls", typ: $funcType([], [sliceType$7], false)}, {prop: "unmarshal", name: "unmarshal", pkg: "crypto/tls", typ: $funcType([sliceType$7], [$Bool], false)}];
 82844  	ptrType$43.methods = [{prop: "readClientHello", name: "readClientHello", pkg: "crypto/tls", typ: $funcType([], [$Bool, $error], false)}, {prop: "checkForResumption", name: "checkForResumption", pkg: "crypto/tls", typ: $funcType([], [$Bool], false)}, {prop: "doResumeHandshake", name: "doResumeHandshake", pkg: "crypto/tls", typ: $funcType([], [$error], false)}, {prop: "doFullHandshake", name: "doFullHandshake", pkg: "crypto/tls", typ: $funcType([], [$error], false)}, {prop: "establishKeys", name: "establishKeys", pkg: "crypto/tls", typ: $funcType([], [$error], false)}, {prop: "readFinished", name: "readFinished", pkg: "crypto/tls", typ: $funcType([sliceType$7], [$error], false)}, {prop: "sendSessionTicket", name: "sendSessionTicket", pkg: "crypto/tls", typ: $funcType([], [$error], false)}, {prop: "sendFinished", name: "sendFinished", pkg: "crypto/tls", typ: $funcType([sliceType$7], [$error], false)}, {prop: "processCertsFromClient", name: "processCertsFromClient", pkg: "crypto/tls", typ: $funcType([sliceType$9], [crypto.PublicKey, $error], false)}, {prop: "setCipherSuite", name: "setCipherSuite", pkg: "crypto/tls", typ: $funcType([$Uint16, sliceType$2, $Uint16], [$Bool], false)}, {prop: "clientHelloInfo", name: "clientHelloInfo", pkg: "crypto/tls", typ: $funcType([], [ptrType$31], false)}];
 82845  	rsaKeyAgreement.methods = [{prop: "generateServerKeyExchange", name: "generateServerKeyExchange", pkg: "crypto/tls", typ: $funcType([ptrType$3, ptrType$4, ptrType$14, ptrType$16], [ptrType$22, $error], false)}, {prop: "processClientKeyExchange", name: "processClientKeyExchange", pkg: "crypto/tls", typ: $funcType([ptrType$3, ptrType$4, ptrType$25, $Uint16], [sliceType$7, $error], false)}, {prop: "processServerKeyExchange", name: "processServerKeyExchange", pkg: "crypto/tls", typ: $funcType([ptrType$3, ptrType$14, ptrType$16, ptrType$13, ptrType$22], [$error], false)}, {prop: "generateClientKeyExchange", name: "generateClientKeyExchange", pkg: "crypto/tls", typ: $funcType([ptrType$3, ptrType$14, ptrType$13], [sliceType$7, ptrType$25, $error], false)}];
 82846  	ptrType$44.methods = [{prop: "generateServerKeyExchange", name: "generateServerKeyExchange", pkg: "crypto/tls", typ: $funcType([ptrType$3, ptrType$4, ptrType$14, ptrType$16], [ptrType$22, $error], false)}, {prop: "processClientKeyExchange", name: "processClientKeyExchange", pkg: "crypto/tls", typ: $funcType([ptrType$3, ptrType$4, ptrType$25, $Uint16], [sliceType$7, $error], false)}, {prop: "processServerKeyExchange", name: "processServerKeyExchange", pkg: "crypto/tls", typ: $funcType([ptrType$3, ptrType$14, ptrType$16, ptrType$13, ptrType$22], [$error], false)}, {prop: "generateClientKeyExchange", name: "generateClientKeyExchange", pkg: "crypto/tls", typ: $funcType([ptrType$3, ptrType$14, ptrType$13], [sliceType$7, ptrType$25, $error], false)}];
 82847  	finishedHash.methods = [{prop: "Sum", name: "Sum", pkg: "", typ: $funcType([], [sliceType$7], false)}, {prop: "clientSum", name: "clientSum", pkg: "crypto/tls", typ: $funcType([sliceType$7], [sliceType$7], false)}, {prop: "serverSum", name: "serverSum", pkg: "crypto/tls", typ: $funcType([sliceType$7], [sliceType$7], false)}, {prop: "selectClientCertSignatureAlgorithm", name: "selectClientCertSignatureAlgorithm", pkg: "crypto/tls", typ: $funcType([sliceType$6, $Uint8], [SignatureScheme, $error], false)}, {prop: "hashForClientCertificate", name: "hashForClientCertificate", pkg: "crypto/tls", typ: $funcType([$Uint8, SignatureScheme, sliceType$7], [sliceType$7, crypto.Hash, $error], false)}];
 82848  	ptrType$45.methods = [{prop: "Write", name: "Write", pkg: "", typ: $funcType([sliceType$7], [$Int, $error], false)}, {prop: "discardHandshakeBuffer", name: "discardHandshakeBuffer", pkg: "crypto/tls", typ: $funcType([], [], false)}];
 82849  	ptrType$30.methods = [{prop: "equal", name: "equal", pkg: "crypto/tls", typ: $funcType([$emptyInterface], [$Bool], false)}, {prop: "marshal", name: "marshal", pkg: "crypto/tls", typ: $funcType([], [sliceType$7], false)}, {prop: "unmarshal", name: "unmarshal", pkg: "crypto/tls", typ: $funcType([sliceType$7], [$Bool], false)}];
 82850  	ptrType$46.methods = [{prop: "Accept", name: "Accept", pkg: "", typ: $funcType([], [net.Conn, $error], false)}];
 82851  	timeoutError.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Timeout", name: "Timeout", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "Temporary", name: "Temporary", pkg: "", typ: $funcType([], [$Bool], false)}];
 82852  	keyAgreement.init([{prop: "generateClientKeyExchange", name: "generateClientKeyExchange", pkg: "crypto/tls", typ: $funcType([ptrType$3, ptrType$14, ptrType$13], [sliceType$7, ptrType$25, $error], false)}, {prop: "generateServerKeyExchange", name: "generateServerKeyExchange", pkg: "crypto/tls", typ: $funcType([ptrType$3, ptrType$4, ptrType$14, ptrType$16], [ptrType$22, $error], false)}, {prop: "processClientKeyExchange", name: "processClientKeyExchange", pkg: "crypto/tls", typ: $funcType([ptrType$3, ptrType$4, ptrType$25, $Uint16], [sliceType$7, $error], false)}, {prop: "processServerKeyExchange", name: "processServerKeyExchange", pkg: "crypto/tls", typ: $funcType([ptrType$3, ptrType$14, ptrType$16, ptrType$13, ptrType$22], [$error], false)}]);
 82853  	cipherSuite.init("crypto/tls", [{prop: "id", name: "id", anonymous: false, exported: false, typ: $Uint16, tag: ""}, {prop: "keyLen", name: "keyLen", anonymous: false, exported: false, typ: $Int, tag: ""}, {prop: "macLen", name: "macLen", anonymous: false, exported: false, typ: $Int, tag: ""}, {prop: "ivLen", name: "ivLen", anonymous: false, exported: false, typ: $Int, tag: ""}, {prop: "ka", name: "ka", anonymous: false, exported: false, typ: funcType, tag: ""}, {prop: "flags", name: "flags", anonymous: false, exported: false, typ: $Int, tag: ""}, {prop: "cipher", name: "cipher", anonymous: false, exported: false, typ: funcType$1, tag: ""}, {prop: "mac", name: "mac", anonymous: false, exported: false, typ: funcType$2, tag: ""}, {prop: "aead", name: "aead", anonymous: false, exported: false, typ: funcType$3, tag: ""}]);
 82854  	macFunction.init([{prop: "MAC", name: "MAC", pkg: "", typ: $funcType([sliceType$7, sliceType$7, sliceType$7, sliceType$7, sliceType$7], [sliceType$7], false)}, {prop: "Size", name: "Size", pkg: "", typ: $funcType([], [$Int], false)}]);
 82855  	aead.init([{prop: "NonceSize", name: "NonceSize", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Open", name: "Open", pkg: "", typ: $funcType([sliceType$7, sliceType$7, sliceType$7, sliceType$7], [sliceType$7, $error], false)}, {prop: "Overhead", name: "Overhead", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Seal", name: "Seal", pkg: "", typ: $funcType([sliceType$7, sliceType$7, sliceType$7, sliceType$7], [sliceType$7], false)}, {prop: "explicitNonceLen", name: "explicitNonceLen", pkg: "crypto/tls", typ: $funcType([], [$Int], false)}]);
 82856  	fixedNonceAEAD.init("crypto/tls", [{prop: "nonce", name: "nonce", anonymous: false, exported: false, typ: arrayType$1, tag: ""}, {prop: "aead", name: "aead", anonymous: false, exported: false, typ: cipher.AEAD, tag: ""}]);
 82857  	xorNonceAEAD.init("crypto/tls", [{prop: "nonceMask", name: "nonceMask", anonymous: false, exported: false, typ: arrayType$1, tag: ""}, {prop: "aead", name: "aead", anonymous: false, exported: false, typ: cipher.AEAD, tag: ""}]);
 82858  	ssl30MAC.init("crypto/tls", [{prop: "h", name: "h", anonymous: false, exported: false, typ: hash.Hash, tag: ""}, {prop: "key", name: "key", anonymous: false, exported: false, typ: sliceType$7, tag: ""}]);
 82859  	constantTimeHash.init([{prop: "BlockSize", name: "BlockSize", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "ConstantTimeSum", name: "ConstantTimeSum", pkg: "", typ: $funcType([sliceType$7], [sliceType$7], false)}, {prop: "Reset", name: "Reset", pkg: "", typ: $funcType([], [], false)}, {prop: "Size", name: "Size", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Sum", name: "Sum", pkg: "", typ: $funcType([sliceType$7], [sliceType$7], false)}, {prop: "Write", name: "Write", pkg: "", typ: $funcType([sliceType$7], [$Int, $error], false)}]);
 82860  	cthWrapper.init("crypto/tls", [{prop: "h", name: "h", anonymous: false, exported: false, typ: constantTimeHash, tag: ""}]);
 82861  	tls10MAC.init("crypto/tls", [{prop: "h", name: "h", anonymous: false, exported: false, typ: hash.Hash, tag: ""}]);
 82862  	ConnectionState.init("", [{prop: "Version", name: "Version", anonymous: false, exported: true, typ: $Uint16, tag: ""}, {prop: "HandshakeComplete", name: "HandshakeComplete", anonymous: false, exported: true, typ: $Bool, tag: ""}, {prop: "DidResume", name: "DidResume", anonymous: false, exported: true, typ: $Bool, tag: ""}, {prop: "CipherSuite", name: "CipherSuite", anonymous: false, exported: true, typ: $Uint16, tag: ""}, {prop: "NegotiatedProtocol", name: "NegotiatedProtocol", anonymous: false, exported: true, typ: $String, tag: ""}, {prop: "NegotiatedProtocolIsMutual", name: "NegotiatedProtocolIsMutual", anonymous: false, exported: true, typ: $Bool, tag: ""}, {prop: "ServerName", name: "ServerName", anonymous: false, exported: true, typ: $String, tag: ""}, {prop: "PeerCertificates", name: "PeerCertificates", anonymous: false, exported: true, typ: sliceType$10, tag: ""}, {prop: "VerifiedChains", name: "VerifiedChains", anonymous: false, exported: true, typ: sliceType$11, tag: ""}, {prop: "SignedCertificateTimestamps", name: "SignedCertificateTimestamps", anonymous: false, exported: true, typ: sliceType$9, tag: ""}, {prop: "OCSPResponse", name: "OCSPResponse", anonymous: false, exported: true, typ: sliceType$7, tag: ""}, {prop: "TLSUnique", name: "TLSUnique", anonymous: false, exported: true, typ: sliceType$7, tag: ""}]);
 82863  	ClientSessionState.init("crypto/tls", [{prop: "sessionTicket", name: "sessionTicket", anonymous: false, exported: false, typ: sliceType$7, tag: ""}, {prop: "vers", name: "vers", anonymous: false, exported: false, typ: $Uint16, tag: ""}, {prop: "cipherSuite", name: "cipherSuite", anonymous: false, exported: false, typ: $Uint16, tag: ""}, {prop: "masterSecret", name: "masterSecret", anonymous: false, exported: false, typ: sliceType$7, tag: ""}, {prop: "serverCertificates", name: "serverCertificates", anonymous: false, exported: false, typ: sliceType$10, tag: ""}, {prop: "verifiedChains", name: "verifiedChains", anonymous: false, exported: false, typ: sliceType$11, tag: ""}]);
 82864  	ClientSessionCache.init([{prop: "Get", name: "Get", pkg: "", typ: $funcType([$String], [ptrType$8, $Bool], false)}, {prop: "Put", name: "Put", pkg: "", typ: $funcType([$String, ptrType$8], [], false)}]);
 82865  	ClientHelloInfo.init("", [{prop: "CipherSuites", name: "CipherSuites", anonymous: false, exported: true, typ: sliceType$2, tag: ""}, {prop: "ServerName", name: "ServerName", anonymous: false, exported: true, typ: $String, tag: ""}, {prop: "SupportedCurves", name: "SupportedCurves", anonymous: false, exported: true, typ: sliceType$3, tag: ""}, {prop: "SupportedPoints", name: "SupportedPoints", anonymous: false, exported: true, typ: sliceType$7, tag: ""}, {prop: "SignatureSchemes", name: "SignatureSchemes", anonymous: false, exported: true, typ: sliceType$6, tag: ""}, {prop: "SupportedProtos", name: "SupportedProtos", anonymous: false, exported: true, typ: sliceType$1, tag: ""}, {prop: "SupportedVersions", name: "SupportedVersions", anonymous: false, exported: true, typ: sliceType$2, tag: ""}, {prop: "Conn", name: "Conn", anonymous: false, exported: true, typ: net.Conn, tag: ""}]);
 82866  	CertificateRequestInfo.init("", [{prop: "AcceptableCAs", name: "AcceptableCAs", anonymous: false, exported: true, typ: sliceType$9, tag: ""}, {prop: "SignatureSchemes", name: "SignatureSchemes", anonymous: false, exported: true, typ: sliceType$6, tag: ""}]);
 82867  	Config.init("crypto/tls", [{prop: "Rand", name: "Rand", anonymous: false, exported: true, typ: io.Reader, tag: ""}, {prop: "Time", name: "Time", anonymous: false, exported: true, typ: funcType$4, tag: ""}, {prop: "Certificates", name: "Certificates", anonymous: false, exported: true, typ: sliceType, tag: ""}, {prop: "NameToCertificate", name: "NameToCertificate", anonymous: false, exported: true, typ: mapType, tag: ""}, {prop: "GetCertificate", name: "GetCertificate", anonymous: false, exported: true, typ: funcType$5, tag: ""}, {prop: "GetClientCertificate", name: "GetClientCertificate", anonymous: false, exported: true, typ: funcType$6, tag: ""}, {prop: "GetConfigForClient", name: "GetConfigForClient", anonymous: false, exported: true, typ: funcType$7, tag: ""}, {prop: "VerifyPeerCertificate", name: "VerifyPeerCertificate", anonymous: false, exported: true, typ: funcType$8, tag: ""}, {prop: "RootCAs", name: "RootCAs", anonymous: false, exported: true, typ: ptrType, tag: ""}, {prop: "NextProtos", name: "NextProtos", anonymous: false, exported: true, typ: sliceType$1, tag: ""}, {prop: "ServerName", name: "ServerName", anonymous: false, exported: true, typ: $String, tag: ""}, {prop: "ClientAuth", name: "ClientAuth", anonymous: false, exported: true, typ: ClientAuthType, tag: ""}, {prop: "ClientCAs", name: "ClientCAs", anonymous: false, exported: true, typ: ptrType, tag: ""}, {prop: "InsecureSkipVerify", name: "InsecureSkipVerify", anonymous: false, exported: true, typ: $Bool, tag: ""}, {prop: "CipherSuites", name: "CipherSuites", anonymous: false, exported: true, typ: sliceType$2, tag: ""}, {prop: "PreferServerCipherSuites", name: "PreferServerCipherSuites", anonymous: false, exported: true, typ: $Bool, tag: ""}, {prop: "SessionTicketsDisabled", name: "SessionTicketsDisabled", anonymous: false, exported: true, typ: $Bool, tag: ""}, {prop: "SessionTicketKey", name: "SessionTicketKey", anonymous: false, exported: true, typ: arrayType, tag: ""}, {prop: "ClientSessionCache", name: "ClientSessionCache", anonymous: false, exported: true, typ: ClientSessionCache, tag: ""}, {prop: "MinVersion", name: "MinVersion", anonymous: false, exported: true, typ: $Uint16, tag: ""}, {prop: "MaxVersion", name: "MaxVersion", anonymous: false, exported: true, typ: $Uint16, tag: ""}, {prop: "CurvePreferences", name: "CurvePreferences", anonymous: false, exported: true, typ: sliceType$3, tag: ""}, {prop: "DynamicRecordSizingDisabled", name: "DynamicRecordSizingDisabled", anonymous: false, exported: true, typ: $Bool, tag: ""}, {prop: "Renegotiation", name: "Renegotiation", anonymous: false, exported: true, typ: RenegotiationSupport, tag: ""}, {prop: "KeyLogWriter", name: "KeyLogWriter", anonymous: false, exported: true, typ: io.Writer, tag: ""}, {prop: "serverInitOnce", name: "serverInitOnce", anonymous: false, exported: false, typ: sync.Once, tag: ""}, {prop: "mutex", name: "mutex", anonymous: false, exported: false, typ: sync.RWMutex, tag: ""}, {prop: "sessionTicketKeys", name: "sessionTicketKeys", anonymous: false, exported: false, typ: sliceType$4, tag: ""}]);
 82868  	ticketKey.init("crypto/tls", [{prop: "keyName", name: "keyName", anonymous: false, exported: false, typ: arrayType$2, tag: ""}, {prop: "aesKey", name: "aesKey", anonymous: false, exported: false, typ: arrayType$2, tag: ""}, {prop: "hmacKey", name: "hmacKey", anonymous: false, exported: false, typ: arrayType$2, tag: ""}]);
 82869  	Certificate.init("", [{prop: "Certificate", name: "Certificate", anonymous: false, exported: true, typ: sliceType$9, tag: ""}, {prop: "PrivateKey", name: "PrivateKey", anonymous: false, exported: true, typ: crypto.PrivateKey, tag: ""}, {prop: "OCSPStaple", name: "OCSPStaple", anonymous: false, exported: true, typ: sliceType$7, tag: ""}, {prop: "SignedCertificateTimestamps", name: "SignedCertificateTimestamps", anonymous: false, exported: true, typ: sliceType$9, tag: ""}, {prop: "Leaf", name: "Leaf", anonymous: false, exported: true, typ: ptrType$13, tag: ""}]);
 82870  	ecdsaSignature.init("", [{prop: "R", name: "R", anonymous: false, exported: true, typ: ptrType$2, tag: ""}, {prop: "S", name: "S", anonymous: false, exported: true, typ: ptrType$2, tag: ""}]);
 82871  	Conn.init("crypto/tls", [{prop: "conn", name: "conn", anonymous: false, exported: false, typ: net.Conn, tag: ""}, {prop: "isClient", name: "isClient", anonymous: false, exported: false, typ: $Bool, tag: ""}, {prop: "handshakeMutex", name: "handshakeMutex", anonymous: false, exported: false, typ: sync.Mutex, tag: ""}, {prop: "handshakeCond", name: "handshakeCond", anonymous: false, exported: false, typ: ptrType$12, tag: ""}, {prop: "handshakeErr", name: "handshakeErr", anonymous: false, exported: false, typ: $error, tag: ""}, {prop: "vers", name: "vers", anonymous: false, exported: false, typ: $Uint16, tag: ""}, {prop: "haveVers", name: "haveVers", anonymous: false, exported: false, typ: $Bool, tag: ""}, {prop: "config", name: "config", anonymous: false, exported: false, typ: ptrType$3, tag: ""}, {prop: "handshakeComplete", name: "handshakeComplete", anonymous: false, exported: false, typ: $Bool, tag: ""}, {prop: "handshakes", name: "handshakes", anonymous: false, exported: false, typ: $Int, tag: ""}, {prop: "didResume", name: "didResume", anonymous: false, exported: false, typ: $Bool, tag: ""}, {prop: "cipherSuite", name: "cipherSuite", anonymous: false, exported: false, typ: $Uint16, tag: ""}, {prop: "ocspResponse", name: "ocspResponse", anonymous: false, exported: false, typ: sliceType$7, tag: ""}, {prop: "scts", name: "scts", anonymous: false, exported: false, typ: sliceType$9, tag: ""}, {prop: "peerCertificates", name: "peerCertificates", anonymous: false, exported: false, typ: sliceType$10, tag: ""}, {prop: "verifiedChains", name: "verifiedChains", anonymous: false, exported: false, typ: sliceType$11, tag: ""}, {prop: "serverName", name: "serverName", anonymous: false, exported: false, typ: $String, tag: ""}, {prop: "secureRenegotiation", name: "secureRenegotiation", anonymous: false, exported: false, typ: $Bool, tag: ""}, {prop: "clientFinishedIsFirst", name: "clientFinishedIsFirst", anonymous: false, exported: false, typ: $Bool, tag: ""}, {prop: "closeNotifyErr", name: "closeNotifyErr", anonymous: false, exported: false, typ: $error, tag: ""}, {prop: "closeNotifySent", name: "closeNotifySent", anonymous: false, exported: false, typ: $Bool, tag: ""}, {prop: "clientFinished", name: "clientFinished", anonymous: false, exported: false, typ: arrayType$1, tag: ""}, {prop: "serverFinished", name: "serverFinished", anonymous: false, exported: false, typ: arrayType$1, tag: ""}, {prop: "clientProtocol", name: "clientProtocol", anonymous: false, exported: false, typ: $String, tag: ""}, {prop: "clientProtocolFallback", name: "clientProtocolFallback", anonymous: false, exported: false, typ: $Bool, tag: ""}, {prop: "in$25", name: "in", anonymous: false, exported: false, typ: halfConn, tag: ""}, {prop: "out", name: "out", anonymous: false, exported: false, typ: halfConn, tag: ""}, {prop: "rawInput", name: "rawInput", anonymous: false, exported: false, typ: ptrType$9, tag: ""}, {prop: "input", name: "input", anonymous: false, exported: false, typ: ptrType$9, tag: ""}, {prop: "hand", name: "hand", anonymous: false, exported: false, typ: bytes.Buffer, tag: ""}, {prop: "buffering", name: "buffering", anonymous: false, exported: false, typ: $Bool, tag: ""}, {prop: "sendBuf", name: "sendBuf", anonymous: false, exported: false, typ: sliceType$7, tag: ""}, {prop: "bytesSent", name: "bytesSent", anonymous: false, exported: false, typ: $Int64, tag: ""}, {prop: "packetsSent", name: "packetsSent", anonymous: false, exported: false, typ: $Int64, tag: ""}, {prop: "warnCount", name: "warnCount", anonymous: false, exported: false, typ: $Int, tag: ""}, {prop: "activeCall", name: "activeCall", anonymous: false, exported: false, typ: $Int32, tag: ""}, {prop: "tmp", name: "tmp", anonymous: false, exported: false, typ: arrayType$2, tag: ""}]);
 82872  	halfConn.init("crypto/tls", [{prop: "Mutex", name: "Mutex", anonymous: true, exported: true, typ: sync.Mutex, tag: ""}, {prop: "err", name: "err", anonymous: false, exported: false, typ: $error, tag: ""}, {prop: "version", name: "version", anonymous: false, exported: false, typ: $Uint16, tag: ""}, {prop: "cipher", name: "cipher", anonymous: false, exported: false, typ: $emptyInterface, tag: ""}, {prop: "mac", name: "mac", anonymous: false, exported: false, typ: macFunction, tag: ""}, {prop: "seq", name: "seq", anonymous: false, exported: false, typ: arrayType$7, tag: ""}, {prop: "bfree", name: "bfree", anonymous: false, exported: false, typ: ptrType$9, tag: ""}, {prop: "additionalData", name: "additionalData", anonymous: false, exported: false, typ: arrayType$8, tag: ""}, {prop: "nextCipher", name: "nextCipher", anonymous: false, exported: false, typ: $emptyInterface, tag: ""}, {prop: "nextMac", name: "nextMac", anonymous: false, exported: false, typ: macFunction, tag: ""}, {prop: "inDigestBuf", name: "inDigestBuf", anonymous: false, exported: false, typ: sliceType$7, tag: ""}, {prop: "outDigestBuf", name: "outDigestBuf", anonymous: false, exported: false, typ: sliceType$7, tag: ""}]);
 82873  	cbcMode.init([{prop: "BlockSize", name: "BlockSize", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "CryptBlocks", name: "CryptBlocks", pkg: "", typ: $funcType([sliceType$7, sliceType$7], [], false)}, {prop: "SetIV", name: "SetIV", pkg: "", typ: $funcType([sliceType$7], [], false)}]);
 82874  	block.init("crypto/tls", [{prop: "data", name: "data", anonymous: false, exported: false, typ: sliceType$7, tag: ""}, {prop: "off", name: "off", anonymous: false, exported: false, typ: $Int, tag: ""}, {prop: "link", name: "link", anonymous: false, exported: false, typ: ptrType$9, tag: ""}]);
 82875  	RecordHeaderError.init("", [{prop: "Msg", name: "Msg", anonymous: false, exported: true, typ: $String, tag: ""}, {prop: "RecordHeader", name: "RecordHeader", anonymous: false, exported: true, typ: arrayType$4, tag: ""}]);
 82876  	clientHandshakeState.init("crypto/tls", [{prop: "c", name: "c", anonymous: false, exported: false, typ: ptrType$15, tag: ""}, {prop: "serverHello", name: "serverHello", anonymous: false, exported: false, typ: ptrType$16, tag: ""}, {prop: "hello", name: "hello", anonymous: false, exported: false, typ: ptrType$14, tag: ""}, {prop: "suite", name: "suite", anonymous: false, exported: false, typ: ptrType$1, tag: ""}, {prop: "finishedHash", name: "finishedHash", anonymous: false, exported: false, typ: finishedHash, tag: ""}, {prop: "masterSecret", name: "masterSecret", anonymous: false, exported: false, typ: sliceType$7, tag: ""}, {prop: "session", name: "session", anonymous: false, exported: false, typ: ptrType$8, tag: ""}]);
 82877  	clientHelloMsg.init("crypto/tls", [{prop: "raw", name: "raw", anonymous: false, exported: false, typ: sliceType$7, tag: ""}, {prop: "vers", name: "vers", anonymous: false, exported: false, typ: $Uint16, tag: ""}, {prop: "random", name: "random", anonymous: false, exported: false, typ: sliceType$7, tag: ""}, {prop: "sessionId", name: "sessionId", anonymous: false, exported: false, typ: sliceType$7, tag: ""}, {prop: "cipherSuites", name: "cipherSuites", anonymous: false, exported: false, typ: sliceType$2, tag: ""}, {prop: "compressionMethods", name: "compressionMethods", anonymous: false, exported: false, typ: sliceType$7, tag: ""}, {prop: "nextProtoNeg", name: "nextProtoNeg", anonymous: false, exported: false, typ: $Bool, tag: ""}, {prop: "serverName", name: "serverName", anonymous: false, exported: false, typ: $String, tag: ""}, {prop: "ocspStapling", name: "ocspStapling", anonymous: false, exported: false, typ: $Bool, tag: ""}, {prop: "scts", name: "scts", anonymous: false, exported: false, typ: $Bool, tag: ""}, {prop: "supportedCurves", name: "supportedCurves", anonymous: false, exported: false, typ: sliceType$3, tag: ""}, {prop: "supportedPoints", name: "supportedPoints", anonymous: false, exported: false, typ: sliceType$7, tag: ""}, {prop: "ticketSupported", name: "ticketSupported", anonymous: false, exported: false, typ: $Bool, tag: ""}, {prop: "sessionTicket", name: "sessionTicket", anonymous: false, exported: false, typ: sliceType$7, tag: ""}, {prop: "supportedSignatureAlgorithms", name: "supportedSignatureAlgorithms", anonymous: false, exported: false, typ: sliceType$6, tag: ""}, {prop: "secureRenegotiation", name: "secureRenegotiation", anonymous: false, exported: false, typ: sliceType$7, tag: ""}, {prop: "secureRenegotiationSupported", name: "secureRenegotiationSupported", anonymous: false, exported: false, typ: $Bool, tag: ""}, {prop: "alpnProtocols", name: "alpnProtocols", anonymous: false, exported: false, typ: sliceType$1, tag: ""}]);
 82878  	serverHelloMsg.init("crypto/tls", [{prop: "raw", name: "raw", anonymous: false, exported: false, typ: sliceType$7, tag: ""}, {prop: "vers", name: "vers", anonymous: false, exported: false, typ: $Uint16, tag: ""}, {prop: "random", name: "random", anonymous: false, exported: false, typ: sliceType$7, tag: ""}, {prop: "sessionId", name: "sessionId", anonymous: false, exported: false, typ: sliceType$7, tag: ""}, {prop: "cipherSuite", name: "cipherSuite", anonymous: false, exported: false, typ: $Uint16, tag: ""}, {prop: "compressionMethod", name: "compressionMethod", anonymous: false, exported: false, typ: $Uint8, tag: ""}, {prop: "nextProtoNeg", name: "nextProtoNeg", anonymous: false, exported: false, typ: $Bool, tag: ""}, {prop: "nextProtos", name: "nextProtos", anonymous: false, exported: false, typ: sliceType$1, tag: ""}, {prop: "ocspStapling", name: "ocspStapling", anonymous: false, exported: false, typ: $Bool, tag: ""}, {prop: "scts", name: "scts", anonymous: false, exported: false, typ: sliceType$9, tag: ""}, {prop: "ticketSupported", name: "ticketSupported", anonymous: false, exported: false, typ: $Bool, tag: ""}, {prop: "secureRenegotiation", name: "secureRenegotiation", anonymous: false, exported: false, typ: sliceType$7, tag: ""}, {prop: "secureRenegotiationSupported", name: "secureRenegotiationSupported", anonymous: false, exported: false, typ: $Bool, tag: ""}, {prop: "alpnProtocol", name: "alpnProtocol", anonymous: false, exported: false, typ: $String, tag: ""}]);
 82879  	certificateMsg.init("crypto/tls", [{prop: "raw", name: "raw", anonymous: false, exported: false, typ: sliceType$7, tag: ""}, {prop: "certificates", name: "certificates", anonymous: false, exported: false, typ: sliceType$9, tag: ""}]);
 82880  	serverKeyExchangeMsg.init("crypto/tls", [{prop: "raw", name: "raw", anonymous: false, exported: false, typ: sliceType$7, tag: ""}, {prop: "key", name: "key", anonymous: false, exported: false, typ: sliceType$7, tag: ""}]);
 82881  	certificateStatusMsg.init("crypto/tls", [{prop: "raw", name: "raw", anonymous: false, exported: false, typ: sliceType$7, tag: ""}, {prop: "statusType", name: "statusType", anonymous: false, exported: false, typ: $Uint8, tag: ""}, {prop: "response", name: "response", anonymous: false, exported: false, typ: sliceType$7, tag: ""}]);
 82882  	serverHelloDoneMsg.init("", []);
 82883  	clientKeyExchangeMsg.init("crypto/tls", [{prop: "raw", name: "raw", anonymous: false, exported: false, typ: sliceType$7, tag: ""}, {prop: "ciphertext", name: "ciphertext", anonymous: false, exported: false, typ: sliceType$7, tag: ""}]);
 82884  	finishedMsg.init("crypto/tls", [{prop: "raw", name: "raw", anonymous: false, exported: false, typ: sliceType$7, tag: ""}, {prop: "verifyData", name: "verifyData", anonymous: false, exported: false, typ: sliceType$7, tag: ""}]);
 82885  	nextProtoMsg.init("crypto/tls", [{prop: "raw", name: "raw", anonymous: false, exported: false, typ: sliceType$7, tag: ""}, {prop: "proto", name: "proto", anonymous: false, exported: false, typ: $String, tag: ""}]);
 82886  	certificateRequestMsg.init("crypto/tls", [{prop: "raw", name: "raw", anonymous: false, exported: false, typ: sliceType$7, tag: ""}, {prop: "hasSignatureAndHash", name: "hasSignatureAndHash", anonymous: false, exported: false, typ: $Bool, tag: ""}, {prop: "certificateTypes", name: "certificateTypes", anonymous: false, exported: false, typ: sliceType$7, tag: ""}, {prop: "supportedSignatureAlgorithms", name: "supportedSignatureAlgorithms", anonymous: false, exported: false, typ: sliceType$6, tag: ""}, {prop: "certificateAuthorities", name: "certificateAuthorities", anonymous: false, exported: false, typ: sliceType$9, tag: ""}]);
 82887  	certificateVerifyMsg.init("crypto/tls", [{prop: "raw", name: "raw", anonymous: false, exported: false, typ: sliceType$7, tag: ""}, {prop: "hasSignatureAndHash", name: "hasSignatureAndHash", anonymous: false, exported: false, typ: $Bool, tag: ""}, {prop: "signatureAlgorithm", name: "signatureAlgorithm", anonymous: false, exported: false, typ: SignatureScheme, tag: ""}, {prop: "signature", name: "signature", anonymous: false, exported: false, typ: sliceType$7, tag: ""}]);
 82888  	newSessionTicketMsg.init("crypto/tls", [{prop: "raw", name: "raw", anonymous: false, exported: false, typ: sliceType$7, tag: ""}, {prop: "ticket", name: "ticket", anonymous: false, exported: false, typ: sliceType$7, tag: ""}]);
 82889  	helloRequestMsg.init("", []);
 82890  	serverHandshakeState.init("crypto/tls", [{prop: "c", name: "c", anonymous: false, exported: false, typ: ptrType$15, tag: ""}, {prop: "clientHello", name: "clientHello", anonymous: false, exported: false, typ: ptrType$14, tag: ""}, {prop: "hello", name: "hello", anonymous: false, exported: false, typ: ptrType$16, tag: ""}, {prop: "suite", name: "suite", anonymous: false, exported: false, typ: ptrType$1, tag: ""}, {prop: "ellipticOk", name: "ellipticOk", anonymous: false, exported: false, typ: $Bool, tag: ""}, {prop: "ecdsaOk", name: "ecdsaOk", anonymous: false, exported: false, typ: $Bool, tag: ""}, {prop: "rsaDecryptOk", name: "rsaDecryptOk", anonymous: false, exported: false, typ: $Bool, tag: ""}, {prop: "rsaSignOk", name: "rsaSignOk", anonymous: false, exported: false, typ: $Bool, tag: ""}, {prop: "sessionState", name: "sessionState", anonymous: false, exported: false, typ: ptrType$30, tag: ""}, {prop: "finishedHash", name: "finishedHash", anonymous: false, exported: false, typ: finishedHash, tag: ""}, {prop: "masterSecret", name: "masterSecret", anonymous: false, exported: false, typ: sliceType$7, tag: ""}, {prop: "certsFromClient", name: "certsFromClient", anonymous: false, exported: false, typ: sliceType$9, tag: ""}, {prop: "cert", name: "cert", anonymous: false, exported: false, typ: ptrType$4, tag: ""}, {prop: "cachedClientHelloInfo", name: "cachedClientHelloInfo", anonymous: false, exported: false, typ: ptrType$31, tag: ""}]);
 82891  	rsaKeyAgreement.init("", []);
 82892  	ecdheKeyAgreement.init("crypto/tls", [{prop: "version", name: "version", anonymous: false, exported: false, typ: $Uint16, tag: ""}, {prop: "sigType", name: "sigType", anonymous: false, exported: false, typ: $Uint8, tag: ""}, {prop: "privateKey", name: "privateKey", anonymous: false, exported: false, typ: sliceType$7, tag: ""}, {prop: "curveid", name: "curveid", anonymous: false, exported: false, typ: CurveID, tag: ""}, {prop: "publicKey", name: "publicKey", anonymous: false, exported: false, typ: sliceType$7, tag: ""}, {prop: "x", name: "x", anonymous: false, exported: false, typ: ptrType$2, tag: ""}, {prop: "y", name: "y", anonymous: false, exported: false, typ: ptrType$2, tag: ""}]);
 82893  	finishedHash.init("crypto/tls", [{prop: "client", name: "client", anonymous: false, exported: false, typ: hash.Hash, tag: ""}, {prop: "server", name: "server", anonymous: false, exported: false, typ: hash.Hash, tag: ""}, {prop: "clientMD5", name: "clientMD5", anonymous: false, exported: false, typ: hash.Hash, tag: ""}, {prop: "serverMD5", name: "serverMD5", anonymous: false, exported: false, typ: hash.Hash, tag: ""}, {prop: "buffer", name: "buffer", anonymous: false, exported: false, typ: sliceType$7, tag: ""}, {prop: "version", name: "version", anonymous: false, exported: false, typ: $Uint16, tag: ""}, {prop: "prf", name: "prf", anonymous: false, exported: false, typ: funcType$9, tag: ""}]);
 82894  	sessionState.init("crypto/tls", [{prop: "vers", name: "vers", anonymous: false, exported: false, typ: $Uint16, tag: ""}, {prop: "cipherSuite", name: "cipherSuite", anonymous: false, exported: false, typ: $Uint16, tag: ""}, {prop: "masterSecret", name: "masterSecret", anonymous: false, exported: false, typ: sliceType$7, tag: ""}, {prop: "certificates", name: "certificates", anonymous: false, exported: false, typ: sliceType$9, tag: ""}, {prop: "usedOldKey", name: "usedOldKey", anonymous: false, exported: false, typ: $Bool, tag: ""}]);
 82895  	listener.init("crypto/tls", [{prop: "Listener", name: "Listener", anonymous: true, exported: true, typ: net.Listener, tag: ""}, {prop: "config", name: "config", anonymous: false, exported: false, typ: ptrType$3, tag: ""}]);
 82896  	timeoutError.init("", []);
 82897  	$init = function() {
 82898  		$pkg.$init = function() {};
 82899  		/* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 82900  		$r = bytes.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 82901  		$r = list.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 82902  		$r = crypto.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 82903  		$r = aes.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 82904  		$r = cipher.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 82905  		$r = des.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 82906  		$r = ecdsa.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 82907  		$r = elliptic.$init(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 82908  		$r = hmac.$init(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 82909  		$r = cipherhw.$init(); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 82910  		$r = md5.$init(); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 82911  		$r = rand.$init(); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 82912  		$r = rc4.$init(); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 82913  		$r = rsa.$init(); /* */ $s = 14; case 14: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 82914  		$r = sha1.$init(); /* */ $s = 15; case 15: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 82915  		$r = sha256.$init(); /* */ $s = 16; case 16: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 82916  		$r = sha512.$init(); /* */ $s = 17; case 17: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 82917  		$r = subtle.$init(); /* */ $s = 18; case 18: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 82918  		$r = x509.$init(); /* */ $s = 19; case 19: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 82919  		$r = asn1.$init(); /* */ $s = 20; case 20: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 82920  		$r = pem.$init(); /* */ $s = 21; case 21: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 82921  		$r = errors.$init(); /* */ $s = 22; case 22: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 82922  		$r = fmt.$init(); /* */ $s = 23; case 23: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 82923  		$r = hash.$init(); /* */ $s = 24; case 24: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 82924  		$r = io.$init(); /* */ $s = 25; case 25: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 82925  		$r = ioutil.$init(); /* */ $s = 26; case 26: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 82926  		$r = big.$init(); /* */ $s = 27; case 27: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 82927  		$r = net.$init(); /* */ $s = 28; case 28: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 82928  		$r = strconv.$init(); /* */ $s = 29; case 29: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 82929  		$r = strings.$init(); /* */ $s = 30; case 30: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 82930  		$r = sync.$init(); /* */ $s = 31; case 31: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 82931  		$r = atomic.$init(); /* */ $s = 32; case 32: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 82932  		$r = time.$init(); /* */ $s = 33; case 33: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 82933  		$r = chacha20poly1305.$init(); /* */ $s = 34; case 34: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 82934  		$r = curve25519.$init(); /* */ $s = 35; case 35: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 82935  		writerMutex = new sync.Mutex.ptr(0, 0);
 82936  		emptyConfig = new Config.ptr($ifaceNil, $throwNilPointerError, sliceType.nil, false, $throwNilPointerError, $throwNilPointerError, $throwNilPointerError, $throwNilPointerError, ptrType.nil, sliceType$1.nil, "", 0, ptrType.nil, false, sliceType$2.nil, false, false, arrayType.zero(), $ifaceNil, 0, 0, sliceType$3.nil, false, 0, $ifaceNil, new sync.Once.ptr(new sync.Mutex.ptr(0, 0), 0), new sync.RWMutex.ptr(new sync.Mutex.ptr(0, 0), 0, 0, 0, 0), sliceType$4.nil);
 82937  		once = new sync.Once.ptr(new sync.Mutex.ptr(0, 0), 0);
 82938  		varDefaultCipherSuites = sliceType$2.nil;
 82939  		alertText = $makeMap(alert.keyFor, [{ k: 0, v: "close notify" }, { k: 10, v: "unexpected message" }, { k: 20, v: "bad record MAC" }, { k: 21, v: "decryption failed" }, { k: 22, v: "record overflow" }, { k: 30, v: "decompression failure" }, { k: 40, v: "handshake failure" }, { k: 42, v: "bad certificate" }, { k: 43, v: "unsupported certificate" }, { k: 44, v: "revoked certificate" }, { k: 45, v: "expired certificate" }, { k: 46, v: "unknown certificate" }, { k: 47, v: "illegal parameter" }, { k: 48, v: "unknown certificate authority" }, { k: 49, v: "access denied" }, { k: 50, v: "error decoding message" }, { k: 51, v: "error decrypting message" }, { k: 70, v: "protocol version not supported" }, { k: 71, v: "insufficient security level" }, { k: 80, v: "internal error" }, { k: 86, v: "inappropriate fallback" }, { k: 90, v: "user canceled" }, { k: 100, v: "no renegotiation" }, { k: 120, v: "no application protocol" }]);
 82940  		ssl30Pad1 = $toNativeArray($kindUint8, [54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54]);
 82941  		ssl30Pad2 = $toNativeArray($kindUint8, [92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92]);
 82942  		cipherSuites = new sliceType$5([new cipherSuite.ptr(52392, 32, 0, 12, ecdheRSAKA, 5, $throwNilPointerError, $throwNilPointerError, aeadChaCha20Poly1305), new cipherSuite.ptr(52393, 32, 0, 12, ecdheECDSAKA, 7, $throwNilPointerError, $throwNilPointerError, aeadChaCha20Poly1305), new cipherSuite.ptr(49199, 16, 0, 4, ecdheRSAKA, 5, $throwNilPointerError, $throwNilPointerError, aeadAESGCM), new cipherSuite.ptr(49195, 16, 0, 4, ecdheECDSAKA, 7, $throwNilPointerError, $throwNilPointerError, aeadAESGCM), new cipherSuite.ptr(49200, 32, 0, 4, ecdheRSAKA, 13, $throwNilPointerError, $throwNilPointerError, aeadAESGCM), new cipherSuite.ptr(49196, 32, 0, 4, ecdheECDSAKA, 15, $throwNilPointerError, $throwNilPointerError, aeadAESGCM), new cipherSuite.ptr(49191, 16, 32, 16, ecdheRSAKA, 21, cipherAES, macSHA256, $throwNilPointerError), new cipherSuite.ptr(49171, 16, 20, 16, ecdheRSAKA, 1, cipherAES, macSHA1, $throwNilPointerError), new cipherSuite.ptr(49187, 16, 32, 16, ecdheECDSAKA, 23, cipherAES, macSHA256, $throwNilPointerError), new cipherSuite.ptr(49161, 16, 20, 16, ecdheECDSAKA, 3, cipherAES, macSHA1, $throwNilPointerError), new cipherSuite.ptr(49172, 32, 20, 16, ecdheRSAKA, 1, cipherAES, macSHA1, $throwNilPointerError), new cipherSuite.ptr(49162, 32, 20, 16, ecdheECDSAKA, 3, cipherAES, macSHA1, $throwNilPointerError), new cipherSuite.ptr(156, 16, 0, 4, rsaKA, 4, $throwNilPointerError, $throwNilPointerError, aeadAESGCM), new cipherSuite.ptr(157, 32, 0, 4, rsaKA, 12, $throwNilPointerError, $throwNilPointerError, aeadAESGCM), new cipherSuite.ptr(60, 16, 32, 16, rsaKA, 20, cipherAES, macSHA256, $throwNilPointerError), new cipherSuite.ptr(47, 16, 20, 16, rsaKA, 0, cipherAES, macSHA1, $throwNilPointerError), new cipherSuite.ptr(53, 32, 20, 16, rsaKA, 0, cipherAES, macSHA1, $throwNilPointerError), new cipherSuite.ptr(49170, 24, 20, 8, ecdheRSAKA, 1, cipher3DES, macSHA1, $throwNilPointerError), new cipherSuite.ptr(10, 24, 20, 8, rsaKA, 0, cipher3DES, macSHA1, $throwNilPointerError), new cipherSuite.ptr(5, 16, 20, 0, rsaKA, 16, cipherRC4, macSHA1, $throwNilPointerError), new cipherSuite.ptr(49169, 16, 20, 0, ecdheRSAKA, 17, cipherRC4, macSHA1, $throwNilPointerError), new cipherSuite.ptr(49159, 16, 20, 0, ecdheECDSAKA, 19, cipherRC4, macSHA1, $throwNilPointerError)]);
 82943  		supportedSignatureAlgorithms = new sliceType$6([1025, 1027, 1281, 1283, 1537, 1539, 513, 515]);
 82944  		defaultCurvePreferences = new sliceType$3([29, 23, 24, 25]);
 82945  		errClosed = errors.New("tls: use of closed connection");
 82946  		errShutdown = errors.New("tls: protocol is shutdown");
 82947  		errEarlyCloseWrite = errors.New("tls: CloseWrite called before handshake complete");
 82948  		tls11SignatureSchemes = new sliceType$6([1027, 1283, 1539, 1025, 1281, 1537, 513]);
 82949  		suppVersArray = $toNativeArray($kindUint16, [771, 770, 769, 768]);
 82950  		errClientKeyExchange = errors.New("tls: invalid ClientKeyExchange message");
 82951  		errServerKeyExchange = errors.New("tls: invalid ServerKeyExchange message");
 82952  		masterSecretLabel = (new sliceType$7($stringToBytes("master secret")));
 82953  		keyExpansionLabel = (new sliceType$7($stringToBytes("key expansion")));
 82954  		clientFinishedLabel = (new sliceType$7($stringToBytes("client finished")));
 82955  		serverFinishedLabel = (new sliceType$7($stringToBytes("server finished")));
 82956  		ssl3ClientFinishedMagic = $toNativeArray($kindUint8, [67, 76, 78, 84]);
 82957  		ssl3ServerFinishedMagic = $toNativeArray($kindUint8, [83, 82, 86, 82]);
 82958  		/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
 82959  	};
 82960  	$pkg.$init = $init;
 82961  	return $pkg;
 82962  })();
 82963  $packages["log"] = (function() {
 82964  	var $pkg = {}, $init, fmt, nosync, io, os, runtime, time, Logger, sliceType, arrayType, ptrType, sliceType$1, ptrType$1, std, New, itoa, Printf, Fatalf;
 82965  	fmt = $packages["fmt"];
 82966  	nosync = $packages["github.com/gopherjs/gopherjs/nosync"];
 82967  	io = $packages["io"];
 82968  	os = $packages["os"];
 82969  	runtime = $packages["runtime"];
 82970  	time = $packages["time"];
 82971  	Logger = $pkg.Logger = $newType(0, $kindStruct, "log.Logger", true, "log", true, function(mu_, prefix_, flag_, out_, buf_) {
 82972  		this.$val = this;
 82973  		if (arguments.length === 0) {
 82974  			this.mu = new nosync.Mutex.ptr(false);
 82975  			this.prefix = "";
 82976  			this.flag = 0;
 82977  			this.out = $ifaceNil;
 82978  			this.buf = sliceType.nil;
 82979  			return;
 82980  		}
 82981  		this.mu = mu_;
 82982  		this.prefix = prefix_;
 82983  		this.flag = flag_;
 82984  		this.out = out_;
 82985  		this.buf = buf_;
 82986  	});
 82987  	sliceType = $sliceType($Uint8);
 82988  	arrayType = $arrayType($Uint8, 20);
 82989  	ptrType = $ptrType(sliceType);
 82990  	sliceType$1 = $sliceType($emptyInterface);
 82991  	ptrType$1 = $ptrType(Logger);
 82992  	New = function(out, prefix, flag) {
 82993  		var flag, out, prefix;
 82994  		return new Logger.ptr(new nosync.Mutex.ptr(false), prefix, flag, out, sliceType.nil);
 82995  	};
 82996  	$pkg.New = New;
 82997  	Logger.ptr.prototype.SetOutput = function(w) {
 82998  		var l, w, $deferred;
 82999  		/* */ var $err = null; try { $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
 83000  		l = this;
 83001  		l.mu.Lock();
 83002  		$deferred.push([$methodVal(l.mu, "Unlock"), []]);
 83003  		l.out = w;
 83004  		/* */ } catch(err) { $err = err; } finally { $callDeferred($deferred, $err); }
 83005  	};
 83006  	Logger.prototype.SetOutput = function(w) { return this.$val.SetOutput(w); };
 83007  	itoa = function(buf, i, wid) {
 83008  		var _q, b, bp, buf, i, q, wid;
 83009  		b = arrayType.zero();
 83010  		bp = 19;
 83011  		while (true) {
 83012  			if (!(i >= 10 || wid > 1)) { break; }
 83013  			wid = wid - (1) >> 0;
 83014  			q = (_q = i / 10, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero"));
 83015  			((bp < 0 || bp >= b.length) ? ($throwRuntimeError("index out of range"), undefined) : b[bp] = ((((48 + i >> 0) - ($imul(q, 10)) >> 0) << 24 >>> 24)));
 83016  			bp = bp - (1) >> 0;
 83017  			i = q;
 83018  		}
 83019  		((bp < 0 || bp >= b.length) ? ($throwRuntimeError("index out of range"), undefined) : b[bp] = (((48 + i >> 0) << 24 >>> 24)));
 83020  		buf.$set($appendSlice(buf.$get(), $subslice(new sliceType(b), bp)));
 83021  	};
 83022  	Logger.ptr.prototype.formatHeader = function(buf, t, file, line) {
 83023  		var _q, _r, _r$1, _tuple, _tuple$1, buf, day, file, hour, i, l, line, min, month, sec, short$1, t, year, $s, $r;
 83024  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _q = $f._q; _r = $f._r; _r$1 = $f._r$1; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; buf = $f.buf; day = $f.day; file = $f.file; hour = $f.hour; i = $f.i; l = $f.l; line = $f.line; min = $f.min; month = $f.month; sec = $f.sec; short$1 = $f.short$1; t = $f.t; year = $f.year; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 83025  		l = this;
 83026  		buf.$set($appendSlice(buf.$get(), l.prefix));
 83027  		/* */ if (!(((l.flag & 7) === 0))) { $s = 1; continue; }
 83028  		/* */ $s = 2; continue;
 83029  		/* if (!(((l.flag & 7) === 0))) { */ case 1:
 83030  			if (!(((l.flag & 32) === 0))) {
 83031  				time.Time.copy(t, $clone(t, time.Time).UTC());
 83032  			}
 83033  			/* */ if (!(((l.flag & 1) === 0))) { $s = 3; continue; }
 83034  			/* */ $s = 4; continue;
 83035  			/* if (!(((l.flag & 1) === 0))) { */ case 3:
 83036  				_r = $clone(t, time.Time).Date(); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 83037  				_tuple = _r;
 83038  				year = _tuple[0];
 83039  				month = _tuple[1];
 83040  				day = _tuple[2];
 83041  				itoa(buf, year, 4);
 83042  				buf.$set($append(buf.$get(), 47));
 83043  				itoa(buf, ((month >> 0)), 2);
 83044  				buf.$set($append(buf.$get(), 47));
 83045  				itoa(buf, day, 2);
 83046  				buf.$set($append(buf.$get(), 32));
 83047  			/* } */ case 4:
 83048  			/* */ if (!(((l.flag & 6) === 0))) { $s = 6; continue; }
 83049  			/* */ $s = 7; continue;
 83050  			/* if (!(((l.flag & 6) === 0))) { */ case 6:
 83051  				_r$1 = $clone(t, time.Time).Clock(); /* */ $s = 8; case 8: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 83052  				_tuple$1 = _r$1;
 83053  				hour = _tuple$1[0];
 83054  				min = _tuple$1[1];
 83055  				sec = _tuple$1[2];
 83056  				itoa(buf, hour, 2);
 83057  				buf.$set($append(buf.$get(), 58));
 83058  				itoa(buf, min, 2);
 83059  				buf.$set($append(buf.$get(), 58));
 83060  				itoa(buf, sec, 2);
 83061  				if (!(((l.flag & 4) === 0))) {
 83062  					buf.$set($append(buf.$get(), 46));
 83063  					itoa(buf, (_q = $clone(t, time.Time).Nanosecond() / 1000, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")), 6);
 83064  				}
 83065  				buf.$set($append(buf.$get(), 32));
 83066  			/* } */ case 7:
 83067  		/* } */ case 2:
 83068  		if (!(((l.flag & 24) === 0))) {
 83069  			if (!(((l.flag & 16) === 0))) {
 83070  				short$1 = file;
 83071  				i = file.length - 1 >> 0;
 83072  				while (true) {
 83073  					if (!(i > 0)) { break; }
 83074  					if (file.charCodeAt(i) === 47) {
 83075  						short$1 = $substring(file, (i + 1 >> 0));
 83076  						break;
 83077  					}
 83078  					i = i - (1) >> 0;
 83079  				}
 83080  				file = short$1;
 83081  			}
 83082  			buf.$set($appendSlice(buf.$get(), file));
 83083  			buf.$set($append(buf.$get(), 58));
 83084  			itoa(buf, line, -1);
 83085  			buf.$set($appendSlice(buf.$get(), ": "));
 83086  		}
 83087  		$s = -1; return;
 83088  		/* */ } return; } if ($f === undefined) { $f = { $blk: Logger.ptr.prototype.formatHeader }; } $f._q = _q; $f._r = _r; $f._r$1 = _r$1; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.buf = buf; $f.day = day; $f.file = file; $f.hour = hour; $f.i = i; $f.l = l; $f.line = line; $f.min = min; $f.month = month; $f.sec = sec; $f.short$1 = short$1; $f.t = t; $f.year = year; $f.$s = $s; $f.$r = $r; return $f;
 83089  	};
 83090  	Logger.prototype.formatHeader = function(buf, t, file, line) { return this.$val.formatHeader(buf, t, file, line); };
 83091  	Logger.ptr.prototype.Output = function(calldepth, s) {
 83092  		var _r, _tuple, _tuple$1, calldepth, err, file, l, line, now, ok, s, $s, $deferred, $r;
 83093  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; calldepth = $f.calldepth; err = $f.err; file = $f.file; l = $f.l; line = $f.line; now = $f.now; ok = $f.ok; s = $f.s; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
 83094  		l = this;
 83095  		now = $clone(time.Now(), time.Time);
 83096  		file = "";
 83097  		line = 0;
 83098  		l.mu.Lock();
 83099  		$deferred.push([$methodVal(l.mu, "Unlock"), []]);
 83100  		if (!(((l.flag & 24) === 0))) {
 83101  			l.mu.Unlock();
 83102  			ok = false;
 83103  			_tuple = runtime.Caller(calldepth);
 83104  			file = _tuple[1];
 83105  			line = _tuple[2];
 83106  			ok = _tuple[3];
 83107  			if (!ok) {
 83108  				file = "???";
 83109  				line = 0;
 83110  			}
 83111  			l.mu.Lock();
 83112  		}
 83113  		l.buf = $subslice(l.buf, 0, 0);
 83114  		$r = l.formatHeader((l.$ptr_buf || (l.$ptr_buf = new ptrType(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, l))), $clone(now, time.Time), file, line); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 83115  		l.buf = $appendSlice(l.buf, s);
 83116  		if ((s.length === 0) || !((s.charCodeAt((s.length - 1 >> 0)) === 10))) {
 83117  			l.buf = $append(l.buf, 10);
 83118  		}
 83119  		_r = l.out.Write(l.buf); /* */ $s = 2; case 2: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 83120  		_tuple$1 = _r;
 83121  		err = _tuple$1[1];
 83122  		$s = -1; return err;
 83123  		/* */ } return; } } catch(err) { $err = err; $s = -1; return $ifaceNil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: Logger.ptr.prototype.Output }; } $f._r = _r; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.calldepth = calldepth; $f.err = err; $f.file = file; $f.l = l; $f.line = line; $f.now = now; $f.ok = ok; $f.s = s; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
 83124  	};
 83125  	Logger.prototype.Output = function(calldepth, s) { return this.$val.Output(calldepth, s); };
 83126  	Logger.ptr.prototype.Printf = function(format, v) {
 83127  		var _arg, _r, _r$1, format, l, v, $s, $r;
 83128  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _arg = $f._arg; _r = $f._r; _r$1 = $f._r$1; format = $f.format; l = $f.l; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 83129  		l = this;
 83130  		_r = fmt.Sprintf(format, v); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 83131  		_arg = _r;
 83132  		_r$1 = l.Output(2, _arg); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 83133  		_r$1;
 83134  		$s = -1; return;
 83135  		/* */ } return; } if ($f === undefined) { $f = { $blk: Logger.ptr.prototype.Printf }; } $f._arg = _arg; $f._r = _r; $f._r$1 = _r$1; $f.format = format; $f.l = l; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
 83136  	};
 83137  	Logger.prototype.Printf = function(format, v) { return this.$val.Printf(format, v); };
 83138  	Logger.ptr.prototype.Print = function(v) {
 83139  		var _arg, _r, _r$1, l, v, $s, $r;
 83140  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _arg = $f._arg; _r = $f._r; _r$1 = $f._r$1; l = $f.l; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 83141  		l = this;
 83142  		_r = fmt.Sprint(v); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 83143  		_arg = _r;
 83144  		_r$1 = l.Output(2, _arg); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 83145  		_r$1;
 83146  		$s = -1; return;
 83147  		/* */ } return; } if ($f === undefined) { $f = { $blk: Logger.ptr.prototype.Print }; } $f._arg = _arg; $f._r = _r; $f._r$1 = _r$1; $f.l = l; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
 83148  	};
 83149  	Logger.prototype.Print = function(v) { return this.$val.Print(v); };
 83150  	Logger.ptr.prototype.Println = function(v) {
 83151  		var _arg, _r, _r$1, l, v, $s, $r;
 83152  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _arg = $f._arg; _r = $f._r; _r$1 = $f._r$1; l = $f.l; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 83153  		l = this;
 83154  		_r = fmt.Sprintln(v); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 83155  		_arg = _r;
 83156  		_r$1 = l.Output(2, _arg); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 83157  		_r$1;
 83158  		$s = -1; return;
 83159  		/* */ } return; } if ($f === undefined) { $f = { $blk: Logger.ptr.prototype.Println }; } $f._arg = _arg; $f._r = _r; $f._r$1 = _r$1; $f.l = l; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
 83160  	};
 83161  	Logger.prototype.Println = function(v) { return this.$val.Println(v); };
 83162  	Logger.ptr.prototype.Fatal = function(v) {
 83163  		var _arg, _r, _r$1, l, v, $s, $r;
 83164  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _arg = $f._arg; _r = $f._r; _r$1 = $f._r$1; l = $f.l; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 83165  		l = this;
 83166  		_r = fmt.Sprint(v); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 83167  		_arg = _r;
 83168  		_r$1 = l.Output(2, _arg); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 83169  		_r$1;
 83170  		os.Exit(1);
 83171  		$s = -1; return;
 83172  		/* */ } return; } if ($f === undefined) { $f = { $blk: Logger.ptr.prototype.Fatal }; } $f._arg = _arg; $f._r = _r; $f._r$1 = _r$1; $f.l = l; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
 83173  	};
 83174  	Logger.prototype.Fatal = function(v) { return this.$val.Fatal(v); };
 83175  	Logger.ptr.prototype.Fatalf = function(format, v) {
 83176  		var _arg, _r, _r$1, format, l, v, $s, $r;
 83177  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _arg = $f._arg; _r = $f._r; _r$1 = $f._r$1; format = $f.format; l = $f.l; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 83178  		l = this;
 83179  		_r = fmt.Sprintf(format, v); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 83180  		_arg = _r;
 83181  		_r$1 = l.Output(2, _arg); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 83182  		_r$1;
 83183  		os.Exit(1);
 83184  		$s = -1; return;
 83185  		/* */ } return; } if ($f === undefined) { $f = { $blk: Logger.ptr.prototype.Fatalf }; } $f._arg = _arg; $f._r = _r; $f._r$1 = _r$1; $f.format = format; $f.l = l; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
 83186  	};
 83187  	Logger.prototype.Fatalf = function(format, v) { return this.$val.Fatalf(format, v); };
 83188  	Logger.ptr.prototype.Fatalln = function(v) {
 83189  		var _arg, _r, _r$1, l, v, $s, $r;
 83190  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _arg = $f._arg; _r = $f._r; _r$1 = $f._r$1; l = $f.l; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 83191  		l = this;
 83192  		_r = fmt.Sprintln(v); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 83193  		_arg = _r;
 83194  		_r$1 = l.Output(2, _arg); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 83195  		_r$1;
 83196  		os.Exit(1);
 83197  		$s = -1; return;
 83198  		/* */ } return; } if ($f === undefined) { $f = { $blk: Logger.ptr.prototype.Fatalln }; } $f._arg = _arg; $f._r = _r; $f._r$1 = _r$1; $f.l = l; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
 83199  	};
 83200  	Logger.prototype.Fatalln = function(v) { return this.$val.Fatalln(v); };
 83201  	Logger.ptr.prototype.Panic = function(v) {
 83202  		var _r, _r$1, l, s, v, $s, $r;
 83203  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; l = $f.l; s = $f.s; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 83204  		l = this;
 83205  		_r = fmt.Sprint(v); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 83206  		s = _r;
 83207  		_r$1 = l.Output(2, s); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 83208  		_r$1;
 83209  		$panic(new $String(s));
 83210  		$s = -1; return;
 83211  		/* */ } return; } if ($f === undefined) { $f = { $blk: Logger.ptr.prototype.Panic }; } $f._r = _r; $f._r$1 = _r$1; $f.l = l; $f.s = s; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
 83212  	};
 83213  	Logger.prototype.Panic = function(v) { return this.$val.Panic(v); };
 83214  	Logger.ptr.prototype.Panicf = function(format, v) {
 83215  		var _r, _r$1, format, l, s, v, $s, $r;
 83216  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; format = $f.format; l = $f.l; s = $f.s; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 83217  		l = this;
 83218  		_r = fmt.Sprintf(format, v); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 83219  		s = _r;
 83220  		_r$1 = l.Output(2, s); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 83221  		_r$1;
 83222  		$panic(new $String(s));
 83223  		$s = -1; return;
 83224  		/* */ } return; } if ($f === undefined) { $f = { $blk: Logger.ptr.prototype.Panicf }; } $f._r = _r; $f._r$1 = _r$1; $f.format = format; $f.l = l; $f.s = s; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
 83225  	};
 83226  	Logger.prototype.Panicf = function(format, v) { return this.$val.Panicf(format, v); };
 83227  	Logger.ptr.prototype.Panicln = function(v) {
 83228  		var _r, _r$1, l, s, v, $s, $r;
 83229  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; l = $f.l; s = $f.s; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 83230  		l = this;
 83231  		_r = fmt.Sprintln(v); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 83232  		s = _r;
 83233  		_r$1 = l.Output(2, s); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 83234  		_r$1;
 83235  		$panic(new $String(s));
 83236  		$s = -1; return;
 83237  		/* */ } return; } if ($f === undefined) { $f = { $blk: Logger.ptr.prototype.Panicln }; } $f._r = _r; $f._r$1 = _r$1; $f.l = l; $f.s = s; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
 83238  	};
 83239  	Logger.prototype.Panicln = function(v) { return this.$val.Panicln(v); };
 83240  	Logger.ptr.prototype.Flags = function() {
 83241  		var l, $deferred;
 83242  		/* */ var $err = null; try { $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
 83243  		l = this;
 83244  		l.mu.Lock();
 83245  		$deferred.push([$methodVal(l.mu, "Unlock"), []]);
 83246  		return l.flag;
 83247  		/* */ } catch(err) { $err = err; return 0; } finally { $callDeferred($deferred, $err); }
 83248  	};
 83249  	Logger.prototype.Flags = function() { return this.$val.Flags(); };
 83250  	Logger.ptr.prototype.SetFlags = function(flag) {
 83251  		var flag, l, $deferred;
 83252  		/* */ var $err = null; try { $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
 83253  		l = this;
 83254  		l.mu.Lock();
 83255  		$deferred.push([$methodVal(l.mu, "Unlock"), []]);
 83256  		l.flag = flag;
 83257  		/* */ } catch(err) { $err = err; } finally { $callDeferred($deferred, $err); }
 83258  	};
 83259  	Logger.prototype.SetFlags = function(flag) { return this.$val.SetFlags(flag); };
 83260  	Logger.ptr.prototype.Prefix = function() {
 83261  		var l, $deferred;
 83262  		/* */ var $err = null; try { $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
 83263  		l = this;
 83264  		l.mu.Lock();
 83265  		$deferred.push([$methodVal(l.mu, "Unlock"), []]);
 83266  		return l.prefix;
 83267  		/* */ } catch(err) { $err = err; return ""; } finally { $callDeferred($deferred, $err); }
 83268  	};
 83269  	Logger.prototype.Prefix = function() { return this.$val.Prefix(); };
 83270  	Logger.ptr.prototype.SetPrefix = function(prefix) {
 83271  		var l, prefix, $deferred;
 83272  		/* */ var $err = null; try { $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
 83273  		l = this;
 83274  		l.mu.Lock();
 83275  		$deferred.push([$methodVal(l.mu, "Unlock"), []]);
 83276  		l.prefix = prefix;
 83277  		/* */ } catch(err) { $err = err; } finally { $callDeferred($deferred, $err); }
 83278  	};
 83279  	Logger.prototype.SetPrefix = function(prefix) { return this.$val.SetPrefix(prefix); };
 83280  	Printf = function(format, v) {
 83281  		var _arg, _r, _r$1, format, v, $s, $r;
 83282  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _arg = $f._arg; _r = $f._r; _r$1 = $f._r$1; format = $f.format; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 83283  		_r = fmt.Sprintf(format, v); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 83284  		_arg = _r;
 83285  		_r$1 = std.Output(2, _arg); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 83286  		_r$1;
 83287  		$s = -1; return;
 83288  		/* */ } return; } if ($f === undefined) { $f = { $blk: Printf }; } $f._arg = _arg; $f._r = _r; $f._r$1 = _r$1; $f.format = format; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
 83289  	};
 83290  	$pkg.Printf = Printf;
 83291  	Fatalf = function(format, v) {
 83292  		var _arg, _r, _r$1, format, v, $s, $r;
 83293  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _arg = $f._arg; _r = $f._r; _r$1 = $f._r$1; format = $f.format; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 83294  		_r = fmt.Sprintf(format, v); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 83295  		_arg = _r;
 83296  		_r$1 = std.Output(2, _arg); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 83297  		_r$1;
 83298  		os.Exit(1);
 83299  		$s = -1; return;
 83300  		/* */ } return; } if ($f === undefined) { $f = { $blk: Fatalf }; } $f._arg = _arg; $f._r = _r; $f._r$1 = _r$1; $f.format = format; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
 83301  	};
 83302  	$pkg.Fatalf = Fatalf;
 83303  	ptrType$1.methods = [{prop: "SetOutput", name: "SetOutput", pkg: "", typ: $funcType([io.Writer], [], false)}, {prop: "formatHeader", name: "formatHeader", pkg: "log", typ: $funcType([ptrType, time.Time, $String, $Int], [], false)}, {prop: "Output", name: "Output", pkg: "", typ: $funcType([$Int, $String], [$error], false)}, {prop: "Printf", name: "Printf", pkg: "", typ: $funcType([$String, sliceType$1], [], true)}, {prop: "Print", name: "Print", pkg: "", typ: $funcType([sliceType$1], [], true)}, {prop: "Println", name: "Println", pkg: "", typ: $funcType([sliceType$1], [], true)}, {prop: "Fatal", name: "Fatal", pkg: "", typ: $funcType([sliceType$1], [], true)}, {prop: "Fatalf", name: "Fatalf", pkg: "", typ: $funcType([$String, sliceType$1], [], true)}, {prop: "Fatalln", name: "Fatalln", pkg: "", typ: $funcType([sliceType$1], [], true)}, {prop: "Panic", name: "Panic", pkg: "", typ: $funcType([sliceType$1], [], true)}, {prop: "Panicf", name: "Panicf", pkg: "", typ: $funcType([$String, sliceType$1], [], true)}, {prop: "Panicln", name: "Panicln", pkg: "", typ: $funcType([sliceType$1], [], true)}, {prop: "Flags", name: "Flags", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "SetFlags", name: "SetFlags", pkg: "", typ: $funcType([$Int], [], false)}, {prop: "Prefix", name: "Prefix", pkg: "", typ: $funcType([], [$String], false)}, {prop: "SetPrefix", name: "SetPrefix", pkg: "", typ: $funcType([$String], [], false)}];
 83304  	Logger.init("log", [{prop: "mu", name: "mu", anonymous: false, exported: false, typ: nosync.Mutex, tag: ""}, {prop: "prefix", name: "prefix", anonymous: false, exported: false, typ: $String, tag: ""}, {prop: "flag", name: "flag", anonymous: false, exported: false, typ: $Int, tag: ""}, {prop: "out", name: "out", anonymous: false, exported: false, typ: io.Writer, tag: ""}, {prop: "buf", name: "buf", anonymous: false, exported: false, typ: sliceType, tag: ""}]);
 83305  	$init = function() {
 83306  		$pkg.$init = function() {};
 83307  		/* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 83308  		$r = fmt.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 83309  		$r = nosync.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 83310  		$r = io.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 83311  		$r = os.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 83312  		$r = runtime.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 83313  		$r = time.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 83314  		std = New(os.Stderr, "", 3);
 83315  		/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
 83316  	};
 83317  	$pkg.$init = $init;
 83318  	return $pkg;
 83319  })();
 83320  $packages["mime"] = (function() {
 83321  	var $pkg = {}, $init, bufio, bytes, base64, errors, fmt, io, os, sort, strings, sync, unicode, utf8, sliceType, sliceType$1, arrayType, sliceType$2, errInvalidWord, maxBase64Len, bufPool, mimeTypes, mimeTypes$24ptr, mimeTypesLower, mimeTypesLower$24ptr, extensionsMu, extensions, extensions$24ptr, osInitMime, typeFiles, isTSpecial, isTokenChar, isToken, FormatMediaType, checkMediaTypeDisposition, ParseMediaType, decode2231Enc, isNotTokenChar, consumeToken, consumeValue, consumeMediaParam, percentHexUnescape, ishex, unhex, setExtensionType, init, loadMimeFile, initMimeUnix;
 83322  	bufio = $packages["bufio"];
 83323  	bytes = $packages["bytes"];
 83324  	base64 = $packages["encoding/base64"];
 83325  	errors = $packages["errors"];
 83326  	fmt = $packages["fmt"];
 83327  	io = $packages["io"];
 83328  	os = $packages["os"];
 83329  	sort = $packages["sort"];
 83330  	strings = $packages["strings"];
 83331  	sync = $packages["sync"];
 83332  	unicode = $packages["unicode"];
 83333  	utf8 = $packages["unicode/utf8"];
 83334  	sliceType = $sliceType($emptyInterface);
 83335  	sliceType$1 = $sliceType($Uint8);
 83336  	arrayType = $arrayType($Uint8, 64);
 83337  	sliceType$2 = $sliceType($String);
 83338  	isTSpecial = function(r) {
 83339  		var r;
 83340  		return strings.ContainsRune("()<>@,;:\\\"/[]?=", r);
 83341  	};
 83342  	isTokenChar = function(r) {
 83343  		var r;
 83344  		return r > 32 && r < 127 && !isTSpecial(r);
 83345  	};
 83346  	isToken = function(s) {
 83347  		var _r, s, $s, $r;
 83348  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 83349  		if (s === "") {
 83350  			$s = -1; return false;
 83351  		}
 83352  		_r = strings.IndexFunc(s, isNotTokenChar); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 83353  		$s = -1; return _r < 0;
 83354  		/* */ } return; } if ($f === undefined) { $f = { $blk: isToken }; } $f._r = _r; $f.s = s; $f.$s = $s; $f.$r = $r; return $f;
 83355  	};
 83356  	FormatMediaType = function(t, param) {
 83357  		var _entry, _entry$1, _i, _i$1, _i$2, _keys, _r, _r$1, _r$10, _r$11, _r$12, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, _ref$1, _ref$2, _rune, _tmp, _tmp$1, _v, a, attribute, attrs, b, character, index, major, offset, param, slash, sub, t, value, $s, $r;
 83358  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _entry = $f._entry; _entry$1 = $f._entry$1; _i = $f._i; _i$1 = $f._i$1; _i$2 = $f._i$2; _keys = $f._keys; _r = $f._r; _r$1 = $f._r$1; _r$10 = $f._r$10; _r$11 = $f._r$11; _r$12 = $f._r$12; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _r$8 = $f._r$8; _r$9 = $f._r$9; _ref = $f._ref; _ref$1 = $f._ref$1; _ref$2 = $f._ref$2; _rune = $f._rune; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _v = $f._v; a = $f.a; attribute = $f.attribute; attrs = $f.attrs; b = $f.b; character = $f.character; index = $f.index; major = $f.major; offset = $f.offset; param = $f.param; slash = $f.slash; sub = $f.sub; t = $f.t; value = $f.value; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 83359  		b = new bytes.Buffer.ptr(sliceType$1.nil, 0, arrayType.zero(), 0);
 83360  		slash = strings.Index(t, "/");
 83361  		/* */ if (slash === -1) { $s = 1; continue; }
 83362  		/* */ $s = 2; continue;
 83363  		/* if (slash === -1) { */ case 1:
 83364  			_r = isToken(t); /* */ $s = 6; case 6: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 83365  			/* */ if (!_r) { $s = 4; continue; }
 83366  			/* */ $s = 5; continue;
 83367  			/* if (!_r) { */ case 4:
 83368  				$s = -1; return "";
 83369  			/* } */ case 5:
 83370  			_r$1 = strings.ToLower(t); /* */ $s = 7; case 7: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 83371  			_r$2 = b.WriteString(_r$1); /* */ $s = 8; case 8: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 83372  			_r$2;
 83373  			$s = 3; continue;
 83374  		/* } else { */ case 2:
 83375  			_tmp = $substring(t, 0, slash);
 83376  			_tmp$1 = $substring(t, (slash + 1 >> 0));
 83377  			major = _tmp;
 83378  			sub = _tmp$1;
 83379  			_r$3 = isToken(major); /* */ $s = 12; case 12: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 83380  			if (!_r$3) { _v = true; $s = 11; continue s; }
 83381  			_r$4 = isToken(sub); /* */ $s = 13; case 13: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 83382  			_v = !_r$4; case 11:
 83383  			/* */ if (_v) { $s = 9; continue; }
 83384  			/* */ $s = 10; continue;
 83385  			/* if (_v) { */ case 9:
 83386  				$s = -1; return "";
 83387  			/* } */ case 10:
 83388  			_r$5 = strings.ToLower(major); /* */ $s = 14; case 14: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
 83389  			_r$6 = b.WriteString(_r$5); /* */ $s = 15; case 15: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
 83390  			_r$6;
 83391  			b.WriteByte(47);
 83392  			_r$7 = strings.ToLower(sub); /* */ $s = 16; case 16: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
 83393  			_r$8 = b.WriteString(_r$7); /* */ $s = 17; case 17: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
 83394  			_r$8;
 83395  		/* } */ case 3:
 83396  		attrs = $makeSlice(sliceType$2, 0, $keys(param).length);
 83397  		_ref = param;
 83398  		_i = 0;
 83399  		_keys = $keys(_ref);
 83400  		while (true) {
 83401  			if (!(_i < _keys.length)) { break; }
 83402  			_entry = _ref[_keys[_i]];
 83403  			if (_entry === undefined) {
 83404  				_i++;
 83405  				continue;
 83406  			}
 83407  			a = _entry.k;
 83408  			attrs = $append(attrs, a);
 83409  			_i++;
 83410  		}
 83411  		$r = sort.Strings(attrs); /* */ $s = 18; case 18: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 83412  		_ref$1 = attrs;
 83413  		_i$1 = 0;
 83414  		/* while (true) { */ case 19:
 83415  			/* if (!(_i$1 < _ref$1.$length)) { break; } */ if(!(_i$1 < _ref$1.$length)) { $s = 20; continue; }
 83416  			attribute = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]);
 83417  			value = (_entry$1 = param[$String.keyFor(attribute)], _entry$1 !== undefined ? _entry$1.v : "");
 83418  			b.WriteByte(59);
 83419  			b.WriteByte(32);
 83420  			_r$9 = isToken(attribute); /* */ $s = 23; case 23: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 83421  			/* */ if (!_r$9) { $s = 21; continue; }
 83422  			/* */ $s = 22; continue;
 83423  			/* if (!_r$9) { */ case 21:
 83424  				$s = -1; return "";
 83425  			/* } */ case 22:
 83426  			_r$10 = strings.ToLower(attribute); /* */ $s = 24; case 24: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
 83427  			_r$11 = b.WriteString(_r$10); /* */ $s = 25; case 25: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; }
 83428  			_r$11;
 83429  			b.WriteByte(61);
 83430  			_r$12 = isToken(value); /* */ $s = 28; case 28: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; }
 83431  			/* */ if (_r$12) { $s = 26; continue; }
 83432  			/* */ $s = 27; continue;
 83433  			/* if (_r$12) { */ case 26:
 83434  				b.WriteString(value);
 83435  				_i$1++;
 83436  				/* continue; */ $s = 19; continue;
 83437  			/* } */ case 27:
 83438  			b.WriteByte(34);
 83439  			offset = 0;
 83440  			_ref$2 = value;
 83441  			_i$2 = 0;
 83442  			while (true) {
 83443  				if (!(_i$2 < _ref$2.length)) { break; }
 83444  				_rune = $decodeRune(_ref$2, _i$2);
 83445  				index = _i$2;
 83446  				character = _rune[0];
 83447  				if ((character === 34) || (character === 92)) {
 83448  					b.WriteString($substring(value, offset, index));
 83449  					offset = index;
 83450  					b.WriteByte(92);
 83451  				}
 83452  				if (!(((character & 128) === 0))) {
 83453  					$s = -1; return "";
 83454  				}
 83455  				_i$2 += _rune[1];
 83456  			}
 83457  			b.WriteString($substring(value, offset));
 83458  			b.WriteByte(34);
 83459  			_i$1++;
 83460  		/* } */ $s = 19; continue; case 20:
 83461  		$s = -1; return b.String();
 83462  		/* */ } return; } if ($f === undefined) { $f = { $blk: FormatMediaType }; } $f._entry = _entry; $f._entry$1 = _entry$1; $f._i = _i; $f._i$1 = _i$1; $f._i$2 = _i$2; $f._keys = _keys; $f._r = _r; $f._r$1 = _r$1; $f._r$10 = _r$10; $f._r$11 = _r$11; $f._r$12 = _r$12; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._r$8 = _r$8; $f._r$9 = _r$9; $f._ref = _ref; $f._ref$1 = _ref$1; $f._ref$2 = _ref$2; $f._rune = _rune; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._v = _v; $f.a = a; $f.attribute = attribute; $f.attrs = attrs; $f.b = b; $f.character = character; $f.index = index; $f.major = major; $f.offset = offset; $f.param = param; $f.slash = slash; $f.sub = sub; $f.t = t; $f.value = value; $f.$s = $s; $f.$r = $r; return $f;
 83463  	};
 83464  	$pkg.FormatMediaType = FormatMediaType;
 83465  	checkMediaTypeDisposition = function(s) {
 83466  		var _r, _r$1, _tuple, _tuple$1, rest, s, subtype, typ, $s, $r;
 83467  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; rest = $f.rest; s = $f.s; subtype = $f.subtype; typ = $f.typ; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 83468  		_r = consumeToken(s); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 83469  		_tuple = _r;
 83470  		typ = _tuple[0];
 83471  		rest = _tuple[1];
 83472  		if (typ === "") {
 83473  			$s = -1; return errors.New("mime: no media type");
 83474  		}
 83475  		if (rest === "") {
 83476  			$s = -1; return $ifaceNil;
 83477  		}
 83478  		if (!strings.HasPrefix(rest, "/")) {
 83479  			$s = -1; return errors.New("mime: expected slash after first token");
 83480  		}
 83481  		_r$1 = consumeToken($substring(rest, 1)); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 83482  		_tuple$1 = _r$1;
 83483  		subtype = _tuple$1[0];
 83484  		rest = _tuple$1[1];
 83485  		if (subtype === "") {
 83486  			$s = -1; return errors.New("mime: expected token after slash");
 83487  		}
 83488  		if (!(rest === "")) {
 83489  			$s = -1; return errors.New("mime: unexpected content after media subtype");
 83490  		}
 83491  		$s = -1; return $ifaceNil;
 83492  		/* */ } return; } if ($f === undefined) { $f = { $blk: checkMediaTypeDisposition }; } $f._r = _r; $f._r$1 = _r$1; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.rest = rest; $f.s = s; $f.subtype = subtype; $f.typ = typ; $f.$s = $s; $f.$r = $r; return $f;
 83493  	};
 83494  	ParseMediaType = function(v) {
 83495  		var _entry, _entry$1, _entry$2, _entry$3, _entry$4, _entry$5, _entry$6, _i, _key, _key$1, _key$2, _key$3, _keys, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, _tuple$5, _tuple$6, _tuple$7, _tuple$8, baseName, buf, continuation, decv, decv$1, decv$2, encodedPart, err, exists, i, idx, key, key$1, mediatype, n, ok, ok$1, ok$2, ok$3, ok$4, ok$5, params, pieceMap, pmap, rest, simplePart, singlePartKey, v, v$1, v$2, v$3, valid, value, $s, $r;
 83496  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _entry = $f._entry; _entry$1 = $f._entry$1; _entry$2 = $f._entry$2; _entry$3 = $f._entry$3; _entry$4 = $f._entry$4; _entry$5 = $f._entry$5; _entry$6 = $f._entry$6; _i = $f._i; _key = $f._key; _key$1 = $f._key$1; _key$2 = $f._key$2; _key$3 = $f._key$3; _keys = $f._keys; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _r$8 = $f._r$8; _r$9 = $f._r$9; _ref = $f._ref; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tmp$4 = $f._tmp$4; _tmp$5 = $f._tmp$5; _tmp$6 = $f._tmp$6; _tmp$7 = $f._tmp$7; _tmp$8 = $f._tmp$8; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; _tuple$4 = $f._tuple$4; _tuple$5 = $f._tuple$5; _tuple$6 = $f._tuple$6; _tuple$7 = $f._tuple$7; _tuple$8 = $f._tuple$8; baseName = $f.baseName; buf = $f.buf; continuation = $f.continuation; decv = $f.decv; decv$1 = $f.decv$1; decv$2 = $f.decv$2; encodedPart = $f.encodedPart; err = $f.err; exists = $f.exists; i = $f.i; idx = $f.idx; key = $f.key; key$1 = $f.key$1; mediatype = $f.mediatype; n = $f.n; ok = $f.ok; ok$1 = $f.ok$1; ok$2 = $f.ok$2; ok$3 = $f.ok$3; ok$4 = $f.ok$4; ok$5 = $f.ok$5; params = $f.params; pieceMap = $f.pieceMap; pmap = $f.pmap; rest = $f.rest; simplePart = $f.simplePart; singlePartKey = $f.singlePartKey; v = $f.v; v$1 = $f.v$1; v$2 = $f.v$2; v$3 = $f.v$3; valid = $f.valid; value = $f.value; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 83497  		mediatype = "";
 83498  		params = false;
 83499  		err = $ifaceNil;
 83500  		i = strings.Index(v, ";");
 83501  		if (i === -1) {
 83502  			i = v.length;
 83503  		}
 83504  		_r = strings.ToLower($substring(v, 0, i)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 83505  		_r$1 = strings.TrimSpace(_r); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 83506  		mediatype = _r$1;
 83507  		_r$2 = checkMediaTypeDisposition(mediatype); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 83508  		err = _r$2;
 83509  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 83510  			_tmp = "";
 83511  			_tmp$1 = false;
 83512  			_tmp$2 = err;
 83513  			mediatype = _tmp;
 83514  			params = _tmp$1;
 83515  			err = _tmp$2;
 83516  			$s = -1; return [mediatype, params, err];
 83517  		}
 83518  		params = {};
 83519  		continuation = false;
 83520  		v = $substring(v, i);
 83521  		/* while (true) { */ case 4:
 83522  			/* if (!(v.length > 0)) { break; } */ if(!(v.length > 0)) { $s = 5; continue; }
 83523  			_r$3 = strings.TrimLeftFunc(v, unicode.IsSpace); /* */ $s = 6; case 6: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 83524  			v = _r$3;
 83525  			if (v.length === 0) {
 83526  				/* break; */ $s = 5; continue;
 83527  			}
 83528  			_r$4 = consumeMediaParam(v); /* */ $s = 7; case 7: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 83529  			_tuple = _r$4;
 83530  			key = _tuple[0];
 83531  			value = _tuple[1];
 83532  			rest = _tuple[2];
 83533  			/* */ if (key === "") { $s = 8; continue; }
 83534  			/* */ $s = 9; continue;
 83535  			/* if (key === "") { */ case 8:
 83536  				_r$5 = strings.TrimSpace(rest); /* */ $s = 12; case 12: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
 83537  				/* */ if (_r$5 === ";") { $s = 10; continue; }
 83538  				/* */ $s = 11; continue;
 83539  				/* if (_r$5 === ";") { */ case 10:
 83540  					$s = -1; return [mediatype, params, err];
 83541  				/* } */ case 11:
 83542  				_tmp$3 = mediatype;
 83543  				_tmp$4 = false;
 83544  				_tmp$5 = $pkg.ErrInvalidMediaParameter;
 83545  				mediatype = _tmp$3;
 83546  				params = _tmp$4;
 83547  				err = _tmp$5;
 83548  				$s = -1; return [mediatype, params, err];
 83549  			/* } */ case 9:
 83550  			pmap = params;
 83551  			idx = strings.Index(key, "*");
 83552  			if (!((idx === -1))) {
 83553  				baseName = $substring(key, 0, idx);
 83554  				if (continuation === false) {
 83555  					continuation = {};
 83556  				}
 83557  				ok = false;
 83558  				_tuple$1 = (_entry = continuation[$String.keyFor(baseName)], _entry !== undefined ? [_entry.v, true] : [false, false]);
 83559  				pmap = _tuple$1[0];
 83560  				ok = _tuple$1[1];
 83561  				if (!ok) {
 83562  					_key = baseName; (continuation || $throwRuntimeError("assignment to entry in nil map"))[$String.keyFor(_key)] = { k: _key, v: {} };
 83563  					pmap = (_entry$1 = continuation[$String.keyFor(baseName)], _entry$1 !== undefined ? _entry$1.v : false);
 83564  				}
 83565  			}
 83566  			_tuple$2 = (_entry$2 = pmap[$String.keyFor(key)], _entry$2 !== undefined ? [_entry$2.v, true] : ["", false]);
 83567  			exists = _tuple$2[1];
 83568  			if (exists) {
 83569  				_tmp$6 = "";
 83570  				_tmp$7 = false;
 83571  				_tmp$8 = errors.New("mime: duplicate parameter name");
 83572  				mediatype = _tmp$6;
 83573  				params = _tmp$7;
 83574  				err = _tmp$8;
 83575  				$s = -1; return [mediatype, params, err];
 83576  			}
 83577  			_key$1 = key; (pmap || $throwRuntimeError("assignment to entry in nil map"))[$String.keyFor(_key$1)] = { k: _key$1, v: value };
 83578  			v = rest;
 83579  		/* } */ $s = 4; continue; case 5:
 83580  		buf = new bytes.Buffer.ptr(sliceType$1.nil, 0, arrayType.zero(), 0);
 83581  		_ref = continuation;
 83582  		_i = 0;
 83583  		_keys = $keys(_ref);
 83584  		/* while (true) { */ case 13:
 83585  			/* if (!(_i < _keys.length)) { break; } */ if(!(_i < _keys.length)) { $s = 14; continue; }
 83586  			_entry$3 = _ref[_keys[_i]];
 83587  			if (_entry$3 === undefined) {
 83588  				_i++;
 83589  				/* continue; */ $s = 13; continue;
 83590  			}
 83591  			key$1 = _entry$3.k;
 83592  			pieceMap = _entry$3.v;
 83593  			singlePartKey = key$1 + "*";
 83594  			_tuple$3 = (_entry$4 = pieceMap[$String.keyFor(singlePartKey)], _entry$4 !== undefined ? [_entry$4.v, true] : ["", false]);
 83595  			v$1 = _tuple$3[0];
 83596  			ok$1 = _tuple$3[1];
 83597  			/* */ if (ok$1) { $s = 15; continue; }
 83598  			/* */ $s = 16; continue;
 83599  			/* if (ok$1) { */ case 15:
 83600  				_r$6 = decode2231Enc(v$1); /* */ $s = 17; case 17: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
 83601  				_tuple$4 = _r$6;
 83602  				decv = _tuple$4[0];
 83603  				ok$2 = _tuple$4[1];
 83604  				if (ok$2) {
 83605  					_key$2 = key$1; (params || $throwRuntimeError("assignment to entry in nil map"))[$String.keyFor(_key$2)] = { k: _key$2, v: decv };
 83606  				}
 83607  				_i++;
 83608  				/* continue; */ $s = 13; continue;
 83609  			/* } */ case 16:
 83610  			buf.Reset();
 83611  			valid = false;
 83612  			n = 0;
 83613  			/* while (true) { */ case 18:
 83614  				_r$7 = fmt.Sprintf("%s*%d", new sliceType([new $String(key$1), new $Int(n)])); /* */ $s = 20; case 20: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
 83615  				simplePart = _r$7;
 83616  				_tuple$5 = (_entry$5 = pieceMap[$String.keyFor(simplePart)], _entry$5 !== undefined ? [_entry$5.v, true] : ["", false]);
 83617  				v$2 = _tuple$5[0];
 83618  				ok$3 = _tuple$5[1];
 83619  				if (ok$3) {
 83620  					valid = true;
 83621  					buf.WriteString(v$2);
 83622  					n = n + (1) >> 0;
 83623  					/* continue; */ $s = 18; continue;
 83624  				}
 83625  				encodedPart = simplePart + "*";
 83626  				_tuple$6 = (_entry$6 = pieceMap[$String.keyFor(encodedPart)], _entry$6 !== undefined ? [_entry$6.v, true] : ["", false]);
 83627  				v$3 = _tuple$6[0];
 83628  				ok$4 = _tuple$6[1];
 83629  				if (!ok$4) {
 83630  					/* break; */ $s = 19; continue;
 83631  				}
 83632  				valid = true;
 83633  				/* */ if (n === 0) { $s = 21; continue; }
 83634  				/* */ $s = 22; continue;
 83635  				/* if (n === 0) { */ case 21:
 83636  					_r$8 = decode2231Enc(v$3); /* */ $s = 24; case 24: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
 83637  					_tuple$7 = _r$8;
 83638  					decv$1 = _tuple$7[0];
 83639  					ok$5 = _tuple$7[1];
 83640  					if (ok$5) {
 83641  						buf.WriteString(decv$1);
 83642  					}
 83643  					$s = 23; continue;
 83644  				/* } else { */ case 22:
 83645  					_r$9 = percentHexUnescape(v$3); /* */ $s = 25; case 25: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 83646  					_tuple$8 = _r$9;
 83647  					decv$2 = _tuple$8[0];
 83648  					buf.WriteString(decv$2);
 83649  				/* } */ case 23:
 83650  				n = n + (1) >> 0;
 83651  			/* } */ $s = 18; continue; case 19:
 83652  			if (valid) {
 83653  				_key$3 = key$1; (params || $throwRuntimeError("assignment to entry in nil map"))[$String.keyFor(_key$3)] = { k: _key$3, v: buf.String() };
 83654  			}
 83655  			_i++;
 83656  		/* } */ $s = 13; continue; case 14:
 83657  		$s = -1; return [mediatype, params, err];
 83658  		/* */ } return; } if ($f === undefined) { $f = { $blk: ParseMediaType }; } $f._entry = _entry; $f._entry$1 = _entry$1; $f._entry$2 = _entry$2; $f._entry$3 = _entry$3; $f._entry$4 = _entry$4; $f._entry$5 = _entry$5; $f._entry$6 = _entry$6; $f._i = _i; $f._key = _key; $f._key$1 = _key$1; $f._key$2 = _key$2; $f._key$3 = _key$3; $f._keys = _keys; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._r$8 = _r$8; $f._r$9 = _r$9; $f._ref = _ref; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tmp$4 = _tmp$4; $f._tmp$5 = _tmp$5; $f._tmp$6 = _tmp$6; $f._tmp$7 = _tmp$7; $f._tmp$8 = _tmp$8; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f._tuple$4 = _tuple$4; $f._tuple$5 = _tuple$5; $f._tuple$6 = _tuple$6; $f._tuple$7 = _tuple$7; $f._tuple$8 = _tuple$8; $f.baseName = baseName; $f.buf = buf; $f.continuation = continuation; $f.decv = decv; $f.decv$1 = decv$1; $f.decv$2 = decv$2; $f.encodedPart = encodedPart; $f.err = err; $f.exists = exists; $f.i = i; $f.idx = idx; $f.key = key; $f.key$1 = key$1; $f.mediatype = mediatype; $f.n = n; $f.ok = ok; $f.ok$1 = ok$1; $f.ok$2 = ok$2; $f.ok$3 = ok$3; $f.ok$4 = ok$4; $f.ok$5 = ok$5; $f.params = params; $f.pieceMap = pieceMap; $f.pmap = pmap; $f.rest = rest; $f.simplePart = simplePart; $f.singlePartKey = singlePartKey; $f.v = v; $f.v$1 = v$1; $f.v$2 = v$2; $f.v$3 = v$3; $f.valid = valid; $f.value = value; $f.$s = $s; $f.$r = $r; return $f;
 83659  	};
 83660  	$pkg.ParseMediaType = ParseMediaType;
 83661  	decode2231Enc = function(v) {
 83662  		var _r, _r$1, _tuple, charset, encv, err, sv, v, $s, $r;
 83663  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _tuple = $f._tuple; charset = $f.charset; encv = $f.encv; err = $f.err; sv = $f.sv; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 83664  		sv = strings.SplitN(v, "'", 3);
 83665  		if (!((sv.$length === 3))) {
 83666  			$s = -1; return ["", false];
 83667  		}
 83668  		_r = strings.ToLower((0 >= sv.$length ? ($throwRuntimeError("index out of range"), undefined) : sv.$array[sv.$offset + 0])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 83669  		charset = _r;
 83670  		if (charset.length === 0) {
 83671  			$s = -1; return ["", false];
 83672  		}
 83673  		if (!(charset === "us-ascii") && !(charset === "utf-8")) {
 83674  			$s = -1; return ["", false];
 83675  		}
 83676  		_r$1 = percentHexUnescape((2 >= sv.$length ? ($throwRuntimeError("index out of range"), undefined) : sv.$array[sv.$offset + 2])); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 83677  		_tuple = _r$1;
 83678  		encv = _tuple[0];
 83679  		err = _tuple[1];
 83680  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 83681  			$s = -1; return ["", false];
 83682  		}
 83683  		$s = -1; return [encv, true];
 83684  		/* */ } return; } if ($f === undefined) { $f = { $blk: decode2231Enc }; } $f._r = _r; $f._r$1 = _r$1; $f._tuple = _tuple; $f.charset = charset; $f.encv = encv; $f.err = err; $f.sv = sv; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
 83685  	};
 83686  	isNotTokenChar = function(r) {
 83687  		var r;
 83688  		return !isTokenChar(r);
 83689  	};
 83690  	consumeToken = function(v) {
 83691  		var _r, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, notPos, rest, token, v, $s, $r;
 83692  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tmp$4 = $f._tmp$4; _tmp$5 = $f._tmp$5; notPos = $f.notPos; rest = $f.rest; token = $f.token; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 83693  		token = "";
 83694  		rest = "";
 83695  		_r = strings.IndexFunc(v, isNotTokenChar); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 83696  		notPos = _r;
 83697  		if (notPos === -1) {
 83698  			_tmp = v;
 83699  			_tmp$1 = "";
 83700  			token = _tmp;
 83701  			rest = _tmp$1;
 83702  			$s = -1; return [token, rest];
 83703  		}
 83704  		if (notPos === 0) {
 83705  			_tmp$2 = "";
 83706  			_tmp$3 = v;
 83707  			token = _tmp$2;
 83708  			rest = _tmp$3;
 83709  			$s = -1; return [token, rest];
 83710  		}
 83711  		_tmp$4 = $substring(v, 0, notPos);
 83712  		_tmp$5 = $substring(v, notPos);
 83713  		token = _tmp$4;
 83714  		rest = _tmp$5;
 83715  		$s = -1; return [token, rest];
 83716  		/* */ } return; } if ($f === undefined) { $f = { $blk: consumeToken }; } $f._r = _r; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tmp$4 = _tmp$4; $f._tmp$5 = _tmp$5; $f.notPos = notPos; $f.rest = rest; $f.token = token; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
 83717  	};
 83718  	consumeValue = function(v) {
 83719  		var _r, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tuple, buffer, i, r, rest, v, value, $s, $r;
 83720  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tmp$4 = $f._tmp$4; _tmp$5 = $f._tmp$5; _tuple = $f._tuple; buffer = $f.buffer; i = $f.i; r = $f.r; rest = $f.rest; v = $f.v; value = $f.value; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 83721  		value = "";
 83722  		rest = "";
 83723  		if (v === "") {
 83724  			$s = -1; return [value, rest];
 83725  		}
 83726  		/* */ if (!((v.charCodeAt(0) === 34))) { $s = 1; continue; }
 83727  		/* */ $s = 2; continue;
 83728  		/* if (!((v.charCodeAt(0) === 34))) { */ case 1:
 83729  			_r = consumeToken(v); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 83730  			_tuple = _r;
 83731  			value = _tuple[0];
 83732  			rest = _tuple[1];
 83733  			$s = -1; return [value, rest];
 83734  		/* } */ case 2:
 83735  		buffer = new bytes.Buffer.ptr(sliceType$1.nil, 0, arrayType.zero(), 0);
 83736  		i = 1;
 83737  		while (true) {
 83738  			if (!(i < v.length)) { break; }
 83739  			r = v.charCodeAt(i);
 83740  			if (r === 34) {
 83741  				_tmp = buffer.String();
 83742  				_tmp$1 = $substring(v, (i + 1 >> 0));
 83743  				value = _tmp;
 83744  				rest = _tmp$1;
 83745  				$s = -1; return [value, rest];
 83746  			}
 83747  			if ((r === 92) && (i + 1 >> 0) < v.length && !isTokenChar(((v.charCodeAt((i + 1 >> 0)) >> 0)))) {
 83748  				buffer.WriteByte(v.charCodeAt((i + 1 >> 0)));
 83749  				i = i + (1) >> 0;
 83750  				i = i + (1) >> 0;
 83751  				continue;
 83752  			}
 83753  			if ((r === 13) || (r === 10)) {
 83754  				_tmp$2 = "";
 83755  				_tmp$3 = v;
 83756  				value = _tmp$2;
 83757  				rest = _tmp$3;
 83758  				$s = -1; return [value, rest];
 83759  			}
 83760  			buffer.WriteByte(v.charCodeAt(i));
 83761  			i = i + (1) >> 0;
 83762  		}
 83763  		_tmp$4 = "";
 83764  		_tmp$5 = v;
 83765  		value = _tmp$4;
 83766  		rest = _tmp$5;
 83767  		$s = -1; return [value, rest];
 83768  		/* */ } return; } if ($f === undefined) { $f = { $blk: consumeValue }; } $f._r = _r; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tmp$4 = _tmp$4; $f._tmp$5 = _tmp$5; $f._tuple = _tuple; $f.buffer = buffer; $f.i = i; $f.r = r; $f.rest = rest; $f.v = v; $f.value = value; $f.$s = $s; $f.$r = $r; return $f;
 83769  	};
 83770  	consumeMediaParam = function(v) {
 83771  		var _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$14, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, _tuple$1, param, rest, rest2, v, value, $s, $r;
 83772  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$10 = $f._tmp$10; _tmp$11 = $f._tmp$11; _tmp$12 = $f._tmp$12; _tmp$13 = $f._tmp$13; _tmp$14 = $f._tmp$14; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tmp$4 = $f._tmp$4; _tmp$5 = $f._tmp$5; _tmp$6 = $f._tmp$6; _tmp$7 = $f._tmp$7; _tmp$8 = $f._tmp$8; _tmp$9 = $f._tmp$9; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; param = $f.param; rest = $f.rest; rest2 = $f.rest2; v = $f.v; value = $f.value; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 83773  		param = "";
 83774  		value = "";
 83775  		rest = "";
 83776  		_r = strings.TrimLeftFunc(v, unicode.IsSpace); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 83777  		rest = _r;
 83778  		if (!strings.HasPrefix(rest, ";")) {
 83779  			_tmp = "";
 83780  			_tmp$1 = "";
 83781  			_tmp$2 = v;
 83782  			param = _tmp;
 83783  			value = _tmp$1;
 83784  			rest = _tmp$2;
 83785  			$s = -1; return [param, value, rest];
 83786  		}
 83787  		rest = $substring(rest, 1);
 83788  		_r$1 = strings.TrimLeftFunc(rest, unicode.IsSpace); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 83789  		rest = _r$1;
 83790  		_r$2 = consumeToken(rest); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 83791  		_tuple = _r$2;
 83792  		param = _tuple[0];
 83793  		rest = _tuple[1];
 83794  		_r$3 = strings.ToLower(param); /* */ $s = 4; case 4: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 83795  		param = _r$3;
 83796  		if (param === "") {
 83797  			_tmp$3 = "";
 83798  			_tmp$4 = "";
 83799  			_tmp$5 = v;
 83800  			param = _tmp$3;
 83801  			value = _tmp$4;
 83802  			rest = _tmp$5;
 83803  			$s = -1; return [param, value, rest];
 83804  		}
 83805  		_r$4 = strings.TrimLeftFunc(rest, unicode.IsSpace); /* */ $s = 5; case 5: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 83806  		rest = _r$4;
 83807  		if (!strings.HasPrefix(rest, "=")) {
 83808  			_tmp$6 = "";
 83809  			_tmp$7 = "";
 83810  			_tmp$8 = v;
 83811  			param = _tmp$6;
 83812  			value = _tmp$7;
 83813  			rest = _tmp$8;
 83814  			$s = -1; return [param, value, rest];
 83815  		}
 83816  		rest = $substring(rest, 1);
 83817  		_r$5 = strings.TrimLeftFunc(rest, unicode.IsSpace); /* */ $s = 6; case 6: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
 83818  		rest = _r$5;
 83819  		_r$6 = consumeValue(rest); /* */ $s = 7; case 7: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
 83820  		_tuple$1 = _r$6;
 83821  		value = _tuple$1[0];
 83822  		rest2 = _tuple$1[1];
 83823  		if (value === "" && rest2 === rest) {
 83824  			_tmp$9 = "";
 83825  			_tmp$10 = "";
 83826  			_tmp$11 = v;
 83827  			param = _tmp$9;
 83828  			value = _tmp$10;
 83829  			rest = _tmp$11;
 83830  			$s = -1; return [param, value, rest];
 83831  		}
 83832  		rest = rest2;
 83833  		_tmp$12 = param;
 83834  		_tmp$13 = value;
 83835  		_tmp$14 = rest;
 83836  		param = _tmp$12;
 83837  		value = _tmp$13;
 83838  		rest = _tmp$14;
 83839  		$s = -1; return [param, value, rest];
 83840  		/* */ } return; } if ($f === undefined) { $f = { $blk: consumeMediaParam }; } $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$10 = _tmp$10; $f._tmp$11 = _tmp$11; $f._tmp$12 = _tmp$12; $f._tmp$13 = _tmp$13; $f._tmp$14 = _tmp$14; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tmp$4 = _tmp$4; $f._tmp$5 = _tmp$5; $f._tmp$6 = _tmp$6; $f._tmp$7 = _tmp$7; $f._tmp$8 = _tmp$8; $f._tmp$9 = _tmp$9; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.param = param; $f.rest = rest; $f.rest2 = rest2; $f.v = v; $f.value = value; $f.$s = $s; $f.$r = $r; return $f;
 83841  	};
 83842  	percentHexUnescape = function(s) {
 83843  		var _1, _r, i, i$1, j, percents, s, t, $s, $r;
 83844  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _r = $f._r; i = $f.i; i$1 = $f.i$1; j = $f.j; percents = $f.percents; s = $f.s; t = $f.t; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 83845  		percents = 0;
 83846  		i = 0;
 83847  		/* while (true) { */ case 1:
 83848  			/* if (!(i < s.length)) { break; } */ if(!(i < s.length)) { $s = 2; continue; }
 83849  			/* */ if (!((s.charCodeAt(i) === 37))) { $s = 3; continue; }
 83850  			/* */ $s = 4; continue;
 83851  			/* if (!((s.charCodeAt(i) === 37))) { */ case 3:
 83852  				i = i + (1) >> 0;
 83853  				/* continue; */ $s = 1; continue;
 83854  			/* } */ case 4:
 83855  			percents = percents + (1) >> 0;
 83856  			/* */ if ((i + 2 >> 0) >= s.length || !ishex(s.charCodeAt((i + 1 >> 0))) || !ishex(s.charCodeAt((i + 2 >> 0)))) { $s = 5; continue; }
 83857  			/* */ $s = 6; continue;
 83858  			/* if ((i + 2 >> 0) >= s.length || !ishex(s.charCodeAt((i + 1 >> 0))) || !ishex(s.charCodeAt((i + 2 >> 0)))) { */ case 5:
 83859  				s = $substring(s, i);
 83860  				if (s.length > 3) {
 83861  					s = $substring(s, 0, 3);
 83862  				}
 83863  				_r = fmt.Errorf("mime: bogus characters after %%: %q", new sliceType([new $String(s)])); /* */ $s = 7; case 7: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 83864  				$s = -1; return ["", _r];
 83865  			/* } */ case 6:
 83866  			i = i + (3) >> 0;
 83867  		/* } */ $s = 1; continue; case 2:
 83868  		if (percents === 0) {
 83869  			$s = -1; return [s, $ifaceNil];
 83870  		}
 83871  		t = $makeSlice(sliceType$1, (s.length - ($imul(2, percents)) >> 0));
 83872  		j = 0;
 83873  		i$1 = 0;
 83874  		while (true) {
 83875  			if (!(i$1 < s.length)) { break; }
 83876  			_1 = s.charCodeAt(i$1);
 83877  			if (_1 === (37)) {
 83878  				((j < 0 || j >= t.$length) ? ($throwRuntimeError("index out of range"), undefined) : t.$array[t.$offset + j] = (((unhex(s.charCodeAt((i$1 + 1 >> 0))) << 4 << 24 >>> 24) | unhex(s.charCodeAt((i$1 + 2 >> 0)))) >>> 0));
 83879  				j = j + (1) >> 0;
 83880  				i$1 = i$1 + (3) >> 0;
 83881  			} else {
 83882  				((j < 0 || j >= t.$length) ? ($throwRuntimeError("index out of range"), undefined) : t.$array[t.$offset + j] = s.charCodeAt(i$1));
 83883  				j = j + (1) >> 0;
 83884  				i$1 = i$1 + (1) >> 0;
 83885  			}
 83886  		}
 83887  		$s = -1; return [($bytesToString(t)), $ifaceNil];
 83888  		/* */ } return; } if ($f === undefined) { $f = { $blk: percentHexUnescape }; } $f._1 = _1; $f._r = _r; $f.i = i; $f.i$1 = i$1; $f.j = j; $f.percents = percents; $f.s = s; $f.t = t; $f.$s = $s; $f.$r = $r; return $f;
 83889  	};
 83890  	ishex = function(c) {
 83891  		var c;
 83892  		if (48 <= c && c <= 57) {
 83893  			return true;
 83894  		} else if (97 <= c && c <= 102) {
 83895  			return true;
 83896  		} else if (65 <= c && c <= 70) {
 83897  			return true;
 83898  		}
 83899  		return false;
 83900  	};
 83901  	unhex = function(c) {
 83902  		var c;
 83903  		if (48 <= c && c <= 57) {
 83904  			return c - 48 << 24 >>> 24;
 83905  		} else if (97 <= c && c <= 102) {
 83906  			return (c - 97 << 24 >>> 24) + 10 << 24 >>> 24;
 83907  		} else if (65 <= c && c <= 70) {
 83908  			return (c - 65 << 24 >>> 24) + 10 << 24 >>> 24;
 83909  		}
 83910  		return 0;
 83911  	};
 83912  	setExtensionType = function(extension, mimeType) {
 83913  		var _entry, _i, _key, _r, _r$1, _r$2, _r$3, _ref, _tuple, _tuple$1, ei, err, extLower, extension, exts, justType, mimeType, ok, param, v, $s, $deferred, $r;
 83914  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _entry = $f._entry; _i = $f._i; _key = $f._key; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _ref = $f._ref; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; ei = $f.ei; err = $f.err; extLower = $f.extLower; extension = $f.extension; exts = $f.exts; justType = $f.justType; mimeType = $f.mimeType; ok = $f.ok; param = $f.param; v = $f.v; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
 83915  		_r = ParseMediaType(mimeType); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 83916  		_tuple = _r;
 83917  		justType = _tuple[0];
 83918  		param = _tuple[1];
 83919  		err = _tuple[2];
 83920  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 83921  			$s = -1; return err;
 83922  		}
 83923  		/* */ if (strings.HasPrefix(mimeType, "text/") && (_entry = param[$String.keyFor("charset")], _entry !== undefined ? _entry.v : "") === "") { $s = 2; continue; }
 83924  		/* */ $s = 3; continue;
 83925  		/* if (strings.HasPrefix(mimeType, "text/") && (_entry = param[$String.keyFor("charset")], _entry !== undefined ? _entry.v : "") === "") { */ case 2:
 83926  			_key = "charset"; (param || $throwRuntimeError("assignment to entry in nil map"))[$String.keyFor(_key)] = { k: _key, v: "utf-8" };
 83927  			_r$1 = FormatMediaType(mimeType, param); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 83928  			mimeType = _r$1;
 83929  		/* } */ case 3:
 83930  		_r$2 = strings.ToLower(extension); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 83931  		extLower = _r$2;
 83932  		$r = mimeTypes.Store(new $String(extension), new $String(mimeType)); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 83933  		$r = mimeTypesLower.Store(new $String(extLower), new $String(mimeType)); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 83934  		$r = extensionsMu.Lock(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 83935  		$deferred.push([$methodVal(extensionsMu, "Unlock"), []]);
 83936  		exts = sliceType$2.nil;
 83937  		_r$3 = extensions.Load(new $String(justType)); /* */ $s = 9; case 9: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 83938  		_tuple$1 = _r$3;
 83939  		ei = _tuple$1[0];
 83940  		ok = _tuple$1[1];
 83941  		if (ok) {
 83942  			exts = $assertType(ei, sliceType$2);
 83943  		}
 83944  		_ref = exts;
 83945  		_i = 0;
 83946  		while (true) {
 83947  			if (!(_i < _ref.$length)) { break; }
 83948  			v = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
 83949  			if (v === extLower) {
 83950  				$s = -1; return $ifaceNil;
 83951  			}
 83952  			_i++;
 83953  		}
 83954  		$r = extensions.Store(new $String(justType), $append(exts, extLower)); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 83955  		$s = -1; return $ifaceNil;
 83956  		/* */ } return; } } catch(err) { $err = err; $s = -1; return $ifaceNil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: setExtensionType }; } $f._entry = _entry; $f._i = _i; $f._key = _key; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._ref = _ref; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.ei = ei; $f.err = err; $f.extLower = extLower; $f.extension = extension; $f.exts = exts; $f.justType = justType; $f.mimeType = mimeType; $f.ok = ok; $f.param = param; $f.v = v; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
 83957  	};
 83958  	init = function() {
 83959  		osInitMime = initMimeUnix;
 83960  	};
 83961  	loadMimeFile = function(filename) {
 83962  		var _i, _r, _r$1, _r$2, _r$3, _ref, _tuple, err, err$1, ext, f, fields, filename, mimeType, scanner, $s, $deferred, $r;
 83963  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _i = $f._i; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _ref = $f._ref; _tuple = $f._tuple; err = $f.err; err$1 = $f.err$1; ext = $f.ext; f = $f.f; fields = $f.fields; filename = $f.filename; mimeType = $f.mimeType; scanner = $f.scanner; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
 83964  		_r = os.Open(filename); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 83965  		_tuple = _r;
 83966  		f = _tuple[0];
 83967  		err = _tuple[1];
 83968  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 83969  			$s = -1; return;
 83970  		}
 83971  		$deferred.push([$methodVal(f, "Close"), []]);
 83972  		scanner = bufio.NewScanner(f);
 83973  		/* while (true) { */ case 2:
 83974  			_r$1 = scanner.Scan(); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 83975  			/* if (!(_r$1)) { break; } */ if(!(_r$1)) { $s = 3; continue; }
 83976  			_r$2 = strings.Fields(scanner.Text()); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 83977  			fields = _r$2;
 83978  			/* */ if (fields.$length <= 1 || ((0 >= fields.$length ? ($throwRuntimeError("index out of range"), undefined) : fields.$array[fields.$offset + 0]).charCodeAt(0) === 35)) { $s = 6; continue; }
 83979  			/* */ $s = 7; continue;
 83980  			/* if (fields.$length <= 1 || ((0 >= fields.$length ? ($throwRuntimeError("index out of range"), undefined) : fields.$array[fields.$offset + 0]).charCodeAt(0) === 35)) { */ case 6:
 83981  				/* continue; */ $s = 2; continue;
 83982  			/* } */ case 7:
 83983  			mimeType = (0 >= fields.$length ? ($throwRuntimeError("index out of range"), undefined) : fields.$array[fields.$offset + 0]);
 83984  			_ref = $subslice(fields, 1);
 83985  			_i = 0;
 83986  			/* while (true) { */ case 8:
 83987  				/* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 9; continue; }
 83988  				ext = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
 83989  				if (ext.charCodeAt(0) === 35) {
 83990  					/* break; */ $s = 9; continue;
 83991  				}
 83992  				_r$3 = setExtensionType("." + ext, mimeType); /* */ $s = 10; case 10: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 83993  				_r$3;
 83994  				_i++;
 83995  			/* } */ $s = 8; continue; case 9:
 83996  		/* } */ $s = 2; continue; case 3:
 83997  		err$1 = scanner.Err();
 83998  		if (!($interfaceIsEqual(err$1, $ifaceNil))) {
 83999  			$panic(err$1);
 84000  		}
 84001  		$s = -1; return;
 84002  		/* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: loadMimeFile }; } $f._i = _i; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._ref = _ref; $f._tuple = _tuple; $f.err = err; $f.err$1 = err$1; $f.ext = ext; $f.f = f; $f.fields = fields; $f.filename = filename; $f.mimeType = mimeType; $f.scanner = scanner; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
 84003  	};
 84004  	initMimeUnix = function() {
 84005  		var _i, _ref, filename, $s, $r;
 84006  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _i = $f._i; _ref = $f._ref; filename = $f.filename; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 84007  		_ref = typeFiles;
 84008  		_i = 0;
 84009  		/* while (true) { */ case 1:
 84010  			/* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; }
 84011  			filename = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
 84012  			$r = loadMimeFile(filename); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 84013  			_i++;
 84014  		/* } */ $s = 1; continue; case 2:
 84015  		$s = -1; return;
 84016  		/* */ } return; } if ($f === undefined) { $f = { $blk: initMimeUnix }; } $f._i = _i; $f._ref = _ref; $f.filename = filename; $f.$s = $s; $f.$r = $r; return $f;
 84017  	};
 84018  	$init = function() {
 84019  		$pkg.$init = function() {};
 84020  		/* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 84021  		$r = bufio.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 84022  		$r = bytes.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 84023  		$r = base64.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 84024  		$r = errors.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 84025  		$r = fmt.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 84026  		$r = io.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 84027  		$r = os.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 84028  		$r = sort.$init(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 84029  		$r = strings.$init(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 84030  		$r = sync.$init(); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 84031  		$r = unicode.$init(); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 84032  		$r = utf8.$init(); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 84033  		mimeTypes = new sync.Map.ptr(new sync.Mutex.ptr(0, 0), new $packages["sync/atomic"].Value.ptr($ifaceNil), false, 0);
 84034  		mimeTypesLower = new sync.Map.ptr(new sync.Mutex.ptr(0, 0), new $packages["sync/atomic"].Value.ptr($ifaceNil), false, 0);
 84035  		extensionsMu = new sync.Mutex.ptr(0, 0);
 84036  		extensions = new sync.Map.ptr(new sync.Mutex.ptr(0, 0), new $packages["sync/atomic"].Value.ptr($ifaceNil), false, 0);
 84037  		osInitMime = $throwNilPointerError;
 84038  		errInvalidWord = errors.New("mime: invalid RFC 2047 encoded-word");
 84039  		maxBase64Len = base64.StdEncoding.DecodedLen(63);
 84040  		bufPool = new sync.Pool.ptr(0, 0, sliceType.nil, (function() {
 84041  			return new bytes.Buffer.ptr(sliceType$1.nil, 0, arrayType.zero(), 0);
 84042  		}));
 84043  		$pkg.ErrInvalidMediaParameter = errors.New("mime: invalid media parameter");
 84044  		typeFiles = new sliceType$2(["/etc/mime.types", "/etc/apache2/mime.types", "/etc/apache/mime.types"]);
 84045  		init();
 84046  		/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
 84047  	};
 84048  	$pkg.$init = $init;
 84049  	return $pkg;
 84050  })();
 84051  $packages["mime/quotedprintable"] = (function() {
 84052  	var $pkg = {}, $init, bufio, bytes, fmt, io, Reader, sliceType, ptrType, sliceType$1, ptrType$1, crlf, lf, softSuffix, NewReader, fromHex, readHexByte, isQPDiscardWhitespace;
 84053  	bufio = $packages["bufio"];
 84054  	bytes = $packages["bytes"];
 84055  	fmt = $packages["fmt"];
 84056  	io = $packages["io"];
 84057  	Reader = $pkg.Reader = $newType(0, $kindStruct, "quotedprintable.Reader", true, "mime/quotedprintable", true, function(br_, rerr_, line_) {
 84058  		this.$val = this;
 84059  		if (arguments.length === 0) {
 84060  			this.br = ptrType.nil;
 84061  			this.rerr = $ifaceNil;
 84062  			this.line = sliceType.nil;
 84063  			return;
 84064  		}
 84065  		this.br = br_;
 84066  		this.rerr = rerr_;
 84067  		this.line = line_;
 84068  	});
 84069  	sliceType = $sliceType($Uint8);
 84070  	ptrType = $ptrType(bufio.Reader);
 84071  	sliceType$1 = $sliceType($emptyInterface);
 84072  	ptrType$1 = $ptrType(Reader);
 84073  	NewReader = function(r) {
 84074  		var r;
 84075  		return new Reader.ptr(bufio.NewReader(r), $ifaceNil, sliceType.nil);
 84076  	};
 84077  	$pkg.NewReader = NewReader;
 84078  	fromHex = function(b) {
 84079  		var _r, b, $s, $r;
 84080  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; b = $f.b; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 84081  		if (b >= 48 && b <= 57) {
 84082  			$s = -1; return [b - 48 << 24 >>> 24, $ifaceNil];
 84083  		} else if (b >= 65 && b <= 70) {
 84084  			$s = -1; return [(b - 65 << 24 >>> 24) + 10 << 24 >>> 24, $ifaceNil];
 84085  		} else if (b >= 97 && b <= 102) {
 84086  			$s = -1; return [(b - 97 << 24 >>> 24) + 10 << 24 >>> 24, $ifaceNil];
 84087  		}
 84088  		_r = fmt.Errorf("quotedprintable: invalid hex byte 0x%02x", new sliceType$1([new $Uint8(b)])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 84089  		$s = -1; return [0, _r];
 84090  		/* */ } return; } if ($f === undefined) { $f = { $blk: fromHex }; } $f._r = _r; $f.b = b; $f.$s = $s; $f.$r = $r; return $f;
 84091  	};
 84092  	readHexByte = function(v) {
 84093  		var _r, _r$1, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, _tuple$1, b, err, hb, lb, v, $s, $r;
 84094  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tmp$4 = $f._tmp$4; _tmp$5 = $f._tmp$5; _tmp$6 = $f._tmp$6; _tmp$7 = $f._tmp$7; _tmp$8 = $f._tmp$8; _tmp$9 = $f._tmp$9; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; b = $f.b; err = $f.err; hb = $f.hb; lb = $f.lb; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 84095  		b = 0;
 84096  		err = $ifaceNil;
 84097  		if (v.$length < 2) {
 84098  			_tmp = 0;
 84099  			_tmp$1 = io.ErrUnexpectedEOF;
 84100  			b = _tmp;
 84101  			err = _tmp$1;
 84102  			$s = -1; return [b, err];
 84103  		}
 84104  		_tmp$2 = 0;
 84105  		_tmp$3 = 0;
 84106  		hb = _tmp$2;
 84107  		lb = _tmp$3;
 84108  		_r = fromHex((0 >= v.$length ? ($throwRuntimeError("index out of range"), undefined) : v.$array[v.$offset + 0])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 84109  		_tuple = _r;
 84110  		hb = _tuple[0];
 84111  		err = _tuple[1];
 84112  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 84113  			_tmp$4 = 0;
 84114  			_tmp$5 = err;
 84115  			b = _tmp$4;
 84116  			err = _tmp$5;
 84117  			$s = -1; return [b, err];
 84118  		}
 84119  		_r$1 = fromHex((1 >= v.$length ? ($throwRuntimeError("index out of range"), undefined) : v.$array[v.$offset + 1])); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 84120  		_tuple$1 = _r$1;
 84121  		lb = _tuple$1[0];
 84122  		err = _tuple$1[1];
 84123  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 84124  			_tmp$6 = 0;
 84125  			_tmp$7 = err;
 84126  			b = _tmp$6;
 84127  			err = _tmp$7;
 84128  			$s = -1; return [b, err];
 84129  		}
 84130  		_tmp$8 = ((hb << 4 << 24 >>> 24) | lb) >>> 0;
 84131  		_tmp$9 = $ifaceNil;
 84132  		b = _tmp$8;
 84133  		err = _tmp$9;
 84134  		$s = -1; return [b, err];
 84135  		/* */ } return; } if ($f === undefined) { $f = { $blk: readHexByte }; } $f._r = _r; $f._r$1 = _r$1; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tmp$4 = _tmp$4; $f._tmp$5 = _tmp$5; $f._tmp$6 = _tmp$6; $f._tmp$7 = _tmp$7; $f._tmp$8 = _tmp$8; $f._tmp$9 = _tmp$9; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.b = b; $f.err = err; $f.hb = hb; $f.lb = lb; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
 84136  	};
 84137  	isQPDiscardWhitespace = function(r) {
 84138  		var _1, r;
 84139  		_1 = r;
 84140  		if ((_1 === (10)) || (_1 === (13)) || (_1 === (32)) || (_1 === (9))) {
 84141  			return true;
 84142  		}
 84143  		return false;
 84144  	};
 84145  	Reader.ptr.prototype.Read = function(p) {
 84146  		var _r, _r$1, _r$2, _r$3, _r$4, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tuple, _tuple$1, b, err, hasCR, hasLF, n, p, r, rightStripped, wholeLine, x, x$1, x$2, $s, $r;
 84147  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tmp$4 = $f._tmp$4; _tmp$5 = $f._tmp$5; _tmp$6 = $f._tmp$6; _tmp$7 = $f._tmp$7; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; b = $f.b; err = $f.err; hasCR = $f.hasCR; hasLF = $f.hasLF; n = $f.n; p = $f.p; r = $f.r; rightStripped = $f.rightStripped; wholeLine = $f.wholeLine; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 84148  		n = 0;
 84149  		err = $ifaceNil;
 84150  		r = this;
 84151  		/* while (true) { */ case 1:
 84152  			/* if (!(p.$length > 0)) { break; } */ if(!(p.$length > 0)) { $s = 2; continue; }
 84153  			/* */ if (r.line.$length === 0) { $s = 3; continue; }
 84154  			/* */ $s = 4; continue;
 84155  			/* if (r.line.$length === 0) { */ case 3:
 84156  				if (!($interfaceIsEqual(r.rerr, $ifaceNil))) {
 84157  					_tmp = n;
 84158  					_tmp$1 = r.rerr;
 84159  					n = _tmp;
 84160  					err = _tmp$1;
 84161  					$s = -1; return [n, err];
 84162  				}
 84163  				_r = r.br.ReadSlice(10); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 84164  				_tuple = _r;
 84165  				r.line = _tuple[0];
 84166  				r.rerr = _tuple[1];
 84167  				hasLF = bytes.HasSuffix(r.line, lf);
 84168  				hasCR = bytes.HasSuffix(r.line, crlf);
 84169  				wholeLine = r.line;
 84170  				_r$1 = bytes.TrimRightFunc(wholeLine, isQPDiscardWhitespace); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 84171  				r.line = _r$1;
 84172  				/* */ if (bytes.HasSuffix(r.line, softSuffix)) { $s = 7; continue; }
 84173  				/* */ if (hasLF) { $s = 8; continue; }
 84174  				/* */ $s = 9; continue;
 84175  				/* if (bytes.HasSuffix(r.line, softSuffix)) { */ case 7:
 84176  					rightStripped = $subslice(wholeLine, r.line.$length);
 84177  					r.line = $subslice(r.line, 0, (r.line.$length - 1 >> 0));
 84178  					/* */ if (!bytes.HasPrefix(rightStripped, lf) && !bytes.HasPrefix(rightStripped, crlf) && !((rightStripped.$length === 0) && r.line.$length > 0 && $interfaceIsEqual(r.rerr, io.EOF))) { $s = 10; continue; }
 84179  					/* */ $s = 11; continue;
 84180  					/* if (!bytes.HasPrefix(rightStripped, lf) && !bytes.HasPrefix(rightStripped, crlf) && !((rightStripped.$length === 0) && r.line.$length > 0 && $interfaceIsEqual(r.rerr, io.EOF))) { */ case 10:
 84181  						_r$2 = fmt.Errorf("quotedprintable: invalid bytes after =: %q", new sliceType$1([rightStripped])); /* */ $s = 12; case 12: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 84182  						r.rerr = _r$2;
 84183  					/* } */ case 11:
 84184  					$s = 9; continue;
 84185  				/* } else if (hasLF) { */ case 8:
 84186  					if (hasCR) {
 84187  						r.line = $append(r.line, 13, 10);
 84188  					} else {
 84189  						r.line = $append(r.line, 10);
 84190  					}
 84191  				/* } */ case 9:
 84192  				/* continue; */ $s = 1; continue;
 84193  			/* } */ case 4:
 84194  			b = (x = r.line, (0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0]));
 84195  				/* */ if ((b === 61)) { $s = 14; continue; }
 84196  				/* */ if ((b === 9) || (b === 13) || (b === 10)) { $s = 15; continue; }
 84197  				/* */ if (b < 32 || b > 126) { $s = 16; continue; }
 84198  				/* */ $s = 17; continue;
 84199  				/* if ((b === 61)) { */ case 14:
 84200  					_r$3 = readHexByte($subslice(r.line, 1)); /* */ $s = 18; case 18: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 84201  					_tuple$1 = _r$3;
 84202  					b = _tuple$1[0];
 84203  					err = _tuple$1[1];
 84204  					if (!($interfaceIsEqual(err, $ifaceNil))) {
 84205  						if (r.line.$length >= 2 && !(((x$1 = r.line, (1 >= x$1.$length ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + 1])) === 13)) && !(((x$2 = r.line, (1 >= x$2.$length ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + 1])) === 10))) {
 84206  							b = 61;
 84207  							/* break; */ $s = 13; continue;
 84208  						}
 84209  						_tmp$2 = n;
 84210  						_tmp$3 = err;
 84211  						n = _tmp$2;
 84212  						err = _tmp$3;
 84213  						$s = -1; return [n, err];
 84214  					}
 84215  					r.line = $subslice(r.line, 2);
 84216  					$s = 17; continue;
 84217  				/* } else if ((b === 9) || (b === 13) || (b === 10)) { */ case 15:
 84218  					/* break; */ $s = 13; continue;
 84219  					$s = 17; continue;
 84220  				/* } else if (b < 32 || b > 126) { */ case 16:
 84221  					_tmp$4 = n;
 84222  					_r$4 = fmt.Errorf("quotedprintable: invalid unescaped byte 0x%02x in body", new sliceType$1([new $Uint8(b)])); /* */ $s = 19; case 19: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 84223  					_tmp$5 = _r$4;
 84224  					n = _tmp$4;
 84225  					err = _tmp$5;
 84226  					$s = -1; return [n, err];
 84227  				/* } */ case 17:
 84228  			case 13:
 84229  			(0 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 0] = b);
 84230  			p = $subslice(p, 1);
 84231  			r.line = $subslice(r.line, 1);
 84232  			n = n + (1) >> 0;
 84233  		/* } */ $s = 1; continue; case 2:
 84234  		_tmp$6 = n;
 84235  		_tmp$7 = $ifaceNil;
 84236  		n = _tmp$6;
 84237  		err = _tmp$7;
 84238  		$s = -1; return [n, err];
 84239  		/* */ } return; } if ($f === undefined) { $f = { $blk: Reader.ptr.prototype.Read }; } $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tmp$4 = _tmp$4; $f._tmp$5 = _tmp$5; $f._tmp$6 = _tmp$6; $f._tmp$7 = _tmp$7; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.b = b; $f.err = err; $f.hasCR = hasCR; $f.hasLF = hasLF; $f.n = n; $f.p = p; $f.r = r; $f.rightStripped = rightStripped; $f.wholeLine = wholeLine; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.$s = $s; $f.$r = $r; return $f;
 84240  	};
 84241  	Reader.prototype.Read = function(p) { return this.$val.Read(p); };
 84242  	ptrType$1.methods = [{prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType], [$Int, $error], false)}];
 84243  	Reader.init("mime/quotedprintable", [{prop: "br", name: "br", anonymous: false, exported: false, typ: ptrType, tag: ""}, {prop: "rerr", name: "rerr", anonymous: false, exported: false, typ: $error, tag: ""}, {prop: "line", name: "line", anonymous: false, exported: false, typ: sliceType, tag: ""}]);
 84244  	$init = function() {
 84245  		$pkg.$init = function() {};
 84246  		/* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 84247  		$r = bufio.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 84248  		$r = bytes.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 84249  		$r = fmt.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 84250  		$r = io.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 84251  		crlf = (new sliceType($stringToBytes("\r\n")));
 84252  		lf = (new sliceType($stringToBytes("\n")));
 84253  		softSuffix = (new sliceType($stringToBytes("=")));
 84254  		/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
 84255  	};
 84256  	$pkg.$init = $init;
 84257  	return $pkg;
 84258  })();
 84259  $packages["net/textproto"] = (function() {
 84260  	var $pkg = {}, $init, bufio, bytes, fmt, io, ioutil, net, strconv, strings, sync, MIMEHeader, Reader, dotReader, Error, ProtocolError, sliceType, sliceType$1, ptrType, ptrType$1, ptrType$2, sliceType$2, ptrType$9, commonHeader, isTokenTable, NewReader, trim, parseCodeLine, CanonicalMIMEHeaderKey, validHeaderFieldByte, canonicalMIMEHeaderKey, init, TrimString, isASCIISpace, isASCIILetter;
 84261  	bufio = $packages["bufio"];
 84262  	bytes = $packages["bytes"];
 84263  	fmt = $packages["fmt"];
 84264  	io = $packages["io"];
 84265  	ioutil = $packages["io/ioutil"];
 84266  	net = $packages["net"];
 84267  	strconv = $packages["strconv"];
 84268  	strings = $packages["strings"];
 84269  	sync = $packages["sync"];
 84270  	MIMEHeader = $pkg.MIMEHeader = $newType(4, $kindMap, "textproto.MIMEHeader", true, "net/textproto", true, null);
 84271  	Reader = $pkg.Reader = $newType(0, $kindStruct, "textproto.Reader", true, "net/textproto", true, function(R_, dot_, buf_) {
 84272  		this.$val = this;
 84273  		if (arguments.length === 0) {
 84274  			this.R = ptrType.nil;
 84275  			this.dot = ptrType$1.nil;
 84276  			this.buf = sliceType.nil;
 84277  			return;
 84278  		}
 84279  		this.R = R_;
 84280  		this.dot = dot_;
 84281  		this.buf = buf_;
 84282  	});
 84283  	dotReader = $pkg.dotReader = $newType(0, $kindStruct, "textproto.dotReader", true, "net/textproto", false, function(r_, state_) {
 84284  		this.$val = this;
 84285  		if (arguments.length === 0) {
 84286  			this.r = ptrType$2.nil;
 84287  			this.state = 0;
 84288  			return;
 84289  		}
 84290  		this.r = r_;
 84291  		this.state = state_;
 84292  	});
 84293  	Error = $pkg.Error = $newType(0, $kindStruct, "textproto.Error", true, "net/textproto", true, function(Code_, Msg_) {
 84294  		this.$val = this;
 84295  		if (arguments.length === 0) {
 84296  			this.Code = 0;
 84297  			this.Msg = "";
 84298  			return;
 84299  		}
 84300  		this.Code = Code_;
 84301  		this.Msg = Msg_;
 84302  	});
 84303  	ProtocolError = $pkg.ProtocolError = $newType(8, $kindString, "textproto.ProtocolError", true, "net/textproto", true, null);
 84304  	sliceType = $sliceType($Uint8);
 84305  	sliceType$1 = $sliceType($String);
 84306  	ptrType = $ptrType(bufio.Reader);
 84307  	ptrType$1 = $ptrType(dotReader);
 84308  	ptrType$2 = $ptrType(Reader);
 84309  	sliceType$2 = $sliceType($emptyInterface);
 84310  	ptrType$9 = $ptrType(Error);
 84311  	MIMEHeader.prototype.Add = function(key, value) {
 84312  		var _entry, _key, h, key, value;
 84313  		h = this.$val;
 84314  		key = CanonicalMIMEHeaderKey(key);
 84315  		_key = key; (h || $throwRuntimeError("assignment to entry in nil map"))[$String.keyFor(_key)] = { k: _key, v: $append((_entry = h[$String.keyFor(key)], _entry !== undefined ? _entry.v : sliceType$1.nil), value) };
 84316  	};
 84317  	$ptrType(MIMEHeader).prototype.Add = function(key, value) { return new MIMEHeader(this.$get()).Add(key, value); };
 84318  	MIMEHeader.prototype.Set = function(key, value) {
 84319  		var _key, h, key, value;
 84320  		h = this.$val;
 84321  		_key = CanonicalMIMEHeaderKey(key); (h || $throwRuntimeError("assignment to entry in nil map"))[$String.keyFor(_key)] = { k: _key, v: new sliceType$1([value]) };
 84322  	};
 84323  	$ptrType(MIMEHeader).prototype.Set = function(key, value) { return new MIMEHeader(this.$get()).Set(key, value); };
 84324  	MIMEHeader.prototype.Get = function(key) {
 84325  		var _entry, h, key, v;
 84326  		h = this.$val;
 84327  		if (h === false) {
 84328  			return "";
 84329  		}
 84330  		v = (_entry = h[$String.keyFor(CanonicalMIMEHeaderKey(key))], _entry !== undefined ? _entry.v : sliceType$1.nil);
 84331  		if (v.$length === 0) {
 84332  			return "";
 84333  		}
 84334  		return (0 >= v.$length ? ($throwRuntimeError("index out of range"), undefined) : v.$array[v.$offset + 0]);
 84335  	};
 84336  	$ptrType(MIMEHeader).prototype.Get = function(key) { return new MIMEHeader(this.$get()).Get(key); };
 84337  	MIMEHeader.prototype.Del = function(key) {
 84338  		var h, key;
 84339  		h = this.$val;
 84340  		delete h[$String.keyFor(CanonicalMIMEHeaderKey(key))];
 84341  	};
 84342  	$ptrType(MIMEHeader).prototype.Del = function(key) { return new MIMEHeader(this.$get()).Del(key); };
 84343  	NewReader = function(r) {
 84344  		var r;
 84345  		return new Reader.ptr(r, ptrType$1.nil, sliceType.nil);
 84346  	};
 84347  	$pkg.NewReader = NewReader;
 84348  	Reader.ptr.prototype.ReadLine = function() {
 84349  		var _r, _tuple, err, line, r, $s, $r;
 84350  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; err = $f.err; line = $f.line; r = $f.r; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 84351  		r = this;
 84352  		_r = r.readLineSlice(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 84353  		_tuple = _r;
 84354  		line = _tuple[0];
 84355  		err = _tuple[1];
 84356  		$s = -1; return [($bytesToString(line)), err];
 84357  		/* */ } return; } if ($f === undefined) { $f = { $blk: Reader.ptr.prototype.ReadLine }; } $f._r = _r; $f._tuple = _tuple; $f.err = err; $f.line = line; $f.r = r; $f.$s = $s; $f.$r = $r; return $f;
 84358  	};
 84359  	Reader.prototype.ReadLine = function() { return this.$val.ReadLine(); };
 84360  	Reader.ptr.prototype.ReadLineBytes = function() {
 84361  		var _r, _tuple, buf, err, line, r, $s, $r;
 84362  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; buf = $f.buf; err = $f.err; line = $f.line; r = $f.r; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 84363  		r = this;
 84364  		_r = r.readLineSlice(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 84365  		_tuple = _r;
 84366  		line = _tuple[0];
 84367  		err = _tuple[1];
 84368  		if (!(line === sliceType.nil)) {
 84369  			buf = $makeSlice(sliceType, line.$length);
 84370  			$copySlice(buf, line);
 84371  			line = buf;
 84372  		}
 84373  		$s = -1; return [line, err];
 84374  		/* */ } return; } if ($f === undefined) { $f = { $blk: Reader.ptr.prototype.ReadLineBytes }; } $f._r = _r; $f._tuple = _tuple; $f.buf = buf; $f.err = err; $f.line = line; $f.r = r; $f.$s = $s; $f.$r = $r; return $f;
 84375  	};
 84376  	Reader.prototype.ReadLineBytes = function() { return this.$val.ReadLineBytes(); };
 84377  	Reader.ptr.prototype.readLineSlice = function() {
 84378  		var _r, _tuple, err, l, line, more, r, $s, $r;
 84379  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; err = $f.err; l = $f.l; line = $f.line; more = $f.more; r = $f.r; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 84380  		r = this;
 84381  		$r = r.closeDot(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 84382  		line = sliceType.nil;
 84383  		/* while (true) { */ case 2:
 84384  			_r = r.R.ReadLine(); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 84385  			_tuple = _r;
 84386  			l = _tuple[0];
 84387  			more = _tuple[1];
 84388  			err = _tuple[2];
 84389  			if (!($interfaceIsEqual(err, $ifaceNil))) {
 84390  				$s = -1; return [sliceType.nil, err];
 84391  			}
 84392  			if (line === sliceType.nil && !more) {
 84393  				$s = -1; return [l, $ifaceNil];
 84394  			}
 84395  			line = $appendSlice(line, l);
 84396  			if (!more) {
 84397  				/* break; */ $s = 3; continue;
 84398  			}
 84399  		/* } */ $s = 2; continue; case 3:
 84400  		$s = -1; return [line, $ifaceNil];
 84401  		/* */ } return; } if ($f === undefined) { $f = { $blk: Reader.ptr.prototype.readLineSlice }; } $f._r = _r; $f._tuple = _tuple; $f.err = err; $f.l = l; $f.line = line; $f.more = more; $f.r = r; $f.$s = $s; $f.$r = $r; return $f;
 84402  	};
 84403  	Reader.prototype.readLineSlice = function() { return this.$val.readLineSlice(); };
 84404  	Reader.ptr.prototype.ReadContinuedLine = function() {
 84405  		var _r, _tuple, err, line, r, $s, $r;
 84406  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; err = $f.err; line = $f.line; r = $f.r; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 84407  		r = this;
 84408  		_r = r.readContinuedLineSlice(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 84409  		_tuple = _r;
 84410  		line = _tuple[0];
 84411  		err = _tuple[1];
 84412  		$s = -1; return [($bytesToString(line)), err];
 84413  		/* */ } return; } if ($f === undefined) { $f = { $blk: Reader.ptr.prototype.ReadContinuedLine }; } $f._r = _r; $f._tuple = _tuple; $f.err = err; $f.line = line; $f.r = r; $f.$s = $s; $f.$r = $r; return $f;
 84414  	};
 84415  	Reader.prototype.ReadContinuedLine = function() { return this.$val.ReadContinuedLine(); };
 84416  	trim = function(s) {
 84417  		var i, n, s, x, x$1;
 84418  		i = 0;
 84419  		while (true) {
 84420  			if (!(i < s.$length && ((((i < 0 || i >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + i]) === 32) || (((i < 0 || i >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + i]) === 9)))) { break; }
 84421  			i = i + (1) >> 0;
 84422  		}
 84423  		n = s.$length;
 84424  		while (true) {
 84425  			if (!(n > i && (((x = n - 1 >> 0, ((x < 0 || x >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + x])) === 32) || ((x$1 = n - 1 >> 0, ((x$1 < 0 || x$1 >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + x$1])) === 9)))) { break; }
 84426  			n = n - (1) >> 0;
 84427  		}
 84428  		return $subslice(s, i, n);
 84429  	};
 84430  	Reader.ptr.prototype.ReadContinuedLineBytes = function() {
 84431  		var _r, _tuple, buf, err, line, r, $s, $r;
 84432  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; buf = $f.buf; err = $f.err; line = $f.line; r = $f.r; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 84433  		r = this;
 84434  		_r = r.readContinuedLineSlice(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 84435  		_tuple = _r;
 84436  		line = _tuple[0];
 84437  		err = _tuple[1];
 84438  		if (!(line === sliceType.nil)) {
 84439  			buf = $makeSlice(sliceType, line.$length);
 84440  			$copySlice(buf, line);
 84441  			line = buf;
 84442  		}
 84443  		$s = -1; return [line, err];
 84444  		/* */ } return; } if ($f === undefined) { $f = { $blk: Reader.ptr.prototype.ReadContinuedLineBytes }; } $f._r = _r; $f._tuple = _tuple; $f.buf = buf; $f.err = err; $f.line = line; $f.r = r; $f.$s = $s; $f.$r = $r; return $f;
 84445  	};
 84446  	Reader.prototype.ReadContinuedLineBytes = function() { return this.$val.ReadContinuedLineBytes(); };
 84447  	Reader.ptr.prototype.readContinuedLineSlice = function() {
 84448  		var _r, _r$1, _r$2, _r$3, _tuple, _tuple$1, _tuple$2, err, err$1, err$2, line, line$1, peek, r, $s, $r;
 84449  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; err = $f.err; err$1 = $f.err$1; err$2 = $f.err$2; line = $f.line; line$1 = $f.line$1; peek = $f.peek; r = $f.r; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 84450  		r = this;
 84451  		_r = r.readLineSlice(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 84452  		_tuple = _r;
 84453  		line = _tuple[0];
 84454  		err = _tuple[1];
 84455  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 84456  			$s = -1; return [sliceType.nil, err];
 84457  		}
 84458  		if (line.$length === 0) {
 84459  			$s = -1; return [line, $ifaceNil];
 84460  		}
 84461  		/* */ if (r.R.Buffered() > 1) { $s = 2; continue; }
 84462  		/* */ $s = 3; continue;
 84463  		/* if (r.R.Buffered() > 1) { */ case 2:
 84464  			_r$1 = r.R.Peek(1); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 84465  			_tuple$1 = _r$1;
 84466  			peek = _tuple$1[0];
 84467  			err$1 = _tuple$1[1];
 84468  			if ($interfaceIsEqual(err$1, $ifaceNil) && isASCIILetter((0 >= peek.$length ? ($throwRuntimeError("index out of range"), undefined) : peek.$array[peek.$offset + 0]))) {
 84469  				$s = -1; return [trim(line), $ifaceNil];
 84470  			}
 84471  		/* } */ case 3:
 84472  		r.buf = $appendSlice($subslice(r.buf, 0, 0), trim(line));
 84473  		/* while (true) { */ case 5:
 84474  			_r$2 = r.skipSpace(); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 84475  			/* if (!(_r$2 > 0)) { break; } */ if(!(_r$2 > 0)) { $s = 6; continue; }
 84476  			_r$3 = r.readLineSlice(); /* */ $s = 8; case 8: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 84477  			_tuple$2 = _r$3;
 84478  			line$1 = _tuple$2[0];
 84479  			err$2 = _tuple$2[1];
 84480  			if (!($interfaceIsEqual(err$2, $ifaceNil))) {
 84481  				/* break; */ $s = 6; continue;
 84482  			}
 84483  			r.buf = $append(r.buf, 32);
 84484  			r.buf = $appendSlice(r.buf, trim(line$1));
 84485  		/* } */ $s = 5; continue; case 6:
 84486  		$s = -1; return [r.buf, $ifaceNil];
 84487  		/* */ } return; } if ($f === undefined) { $f = { $blk: Reader.ptr.prototype.readContinuedLineSlice }; } $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f.err = err; $f.err$1 = err$1; $f.err$2 = err$2; $f.line = line; $f.line$1 = line$1; $f.peek = peek; $f.r = r; $f.$s = $s; $f.$r = $r; return $f;
 84488  	};
 84489  	Reader.prototype.readContinuedLineSlice = function() { return this.$val.readContinuedLineSlice(); };
 84490  	Reader.ptr.prototype.skipSpace = function() {
 84491  		var _r, _tuple, c, err, n, r, $s, $r;
 84492  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; c = $f.c; err = $f.err; n = $f.n; r = $f.r; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 84493  		r = this;
 84494  		n = 0;
 84495  		/* while (true) { */ case 1:
 84496  			_r = r.R.ReadByte(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 84497  			_tuple = _r;
 84498  			c = _tuple[0];
 84499  			err = _tuple[1];
 84500  			if (!($interfaceIsEqual(err, $ifaceNil))) {
 84501  				/* break; */ $s = 2; continue;
 84502  			}
 84503  			if (!((c === 32)) && !((c === 9))) {
 84504  				r.R.UnreadByte();
 84505  				/* break; */ $s = 2; continue;
 84506  			}
 84507  			n = n + (1) >> 0;
 84508  		/* } */ $s = 1; continue; case 2:
 84509  		$s = -1; return n;
 84510  		/* */ } return; } if ($f === undefined) { $f = { $blk: Reader.ptr.prototype.skipSpace }; } $f._r = _r; $f._tuple = _tuple; $f.c = c; $f.err = err; $f.n = n; $f.r = r; $f.$s = $s; $f.$r = $r; return $f;
 84511  	};
 84512  	Reader.prototype.skipSpace = function() { return this.$val.skipSpace(); };
 84513  	Reader.ptr.prototype.readCodeLine = function(expectCode) {
 84514  		var _r, _tuple, _tuple$1, code, continued, err, expectCode, line, message, r, $s, $r;
 84515  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; code = $f.code; continued = $f.continued; err = $f.err; expectCode = $f.expectCode; line = $f.line; message = $f.message; r = $f.r; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 84516  		code = 0;
 84517  		continued = false;
 84518  		message = "";
 84519  		err = $ifaceNil;
 84520  		r = this;
 84521  		_r = r.ReadLine(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 84522  		_tuple = _r;
 84523  		line = _tuple[0];
 84524  		err = _tuple[1];
 84525  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 84526  			$s = -1; return [code, continued, message, err];
 84527  		}
 84528  		_tuple$1 = parseCodeLine(line, expectCode);
 84529  		code = _tuple$1[0];
 84530  		continued = _tuple$1[1];
 84531  		message = _tuple$1[2];
 84532  		err = _tuple$1[3];
 84533  		$s = -1; return [code, continued, message, err];
 84534  		/* */ } return; } if ($f === undefined) { $f = { $blk: Reader.ptr.prototype.readCodeLine }; } $f._r = _r; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.code = code; $f.continued = continued; $f.err = err; $f.expectCode = expectCode; $f.line = line; $f.message = message; $f.r = r; $f.$s = $s; $f.$r = $r; return $f;
 84535  	};
 84536  	Reader.prototype.readCodeLine = function(expectCode) { return this.$val.readCodeLine(expectCode); };
 84537  	parseCodeLine = function(line, expectCode) {
 84538  		var _q, _q$1, _tuple, code, continued, err, expectCode, line, message;
 84539  		code = 0;
 84540  		continued = false;
 84541  		message = "";
 84542  		err = $ifaceNil;
 84543  		if (line.length < 4 || !((line.charCodeAt(3) === 32)) && !((line.charCodeAt(3) === 45))) {
 84544  			err = new ProtocolError(("short response: " + line));
 84545  			return [code, continued, message, err];
 84546  		}
 84547  		continued = line.charCodeAt(3) === 45;
 84548  		_tuple = strconv.Atoi($substring(line, 0, 3));
 84549  		code = _tuple[0];
 84550  		err = _tuple[1];
 84551  		if (!($interfaceIsEqual(err, $ifaceNil)) || code < 100) {
 84552  			err = new ProtocolError(("invalid response code: " + line));
 84553  			return [code, continued, message, err];
 84554  		}
 84555  		message = $substring(line, 4);
 84556  		if (1 <= expectCode && expectCode < 10 && !(((_q = code / 100, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")) === expectCode)) || 10 <= expectCode && expectCode < 100 && !(((_q$1 = code / 10, (_q$1 === _q$1 && _q$1 !== 1/0 && _q$1 !== -1/0) ? _q$1 >> 0 : $throwRuntimeError("integer divide by zero")) === expectCode)) || 100 <= expectCode && expectCode < 1000 && !((code === expectCode))) {
 84557  			err = new Error.ptr(code, message);
 84558  		}
 84559  		return [code, continued, message, err];
 84560  	};
 84561  	Reader.ptr.prototype.ReadCodeLine = function(expectCode) {
 84562  		var _r, _tuple, code, continued, err, expectCode, message, r, $s, $r;
 84563  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; code = $f.code; continued = $f.continued; err = $f.err; expectCode = $f.expectCode; message = $f.message; r = $f.r; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 84564  		code = 0;
 84565  		message = "";
 84566  		err = $ifaceNil;
 84567  		r = this;
 84568  		_r = r.readCodeLine(expectCode); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 84569  		_tuple = _r;
 84570  		code = _tuple[0];
 84571  		continued = _tuple[1];
 84572  		message = _tuple[2];
 84573  		err = _tuple[3];
 84574  		if ($interfaceIsEqual(err, $ifaceNil) && continued) {
 84575  			err = new ProtocolError(("unexpected multi-line response: " + message));
 84576  		}
 84577  		$s = -1; return [code, message, err];
 84578  		/* */ } return; } if ($f === undefined) { $f = { $blk: Reader.ptr.prototype.ReadCodeLine }; } $f._r = _r; $f._tuple = _tuple; $f.code = code; $f.continued = continued; $f.err = err; $f.expectCode = expectCode; $f.message = message; $f.r = r; $f.$s = $s; $f.$r = $r; return $f;
 84579  	};
 84580  	Reader.prototype.ReadCodeLine = function(expectCode) { return this.$val.ReadCodeLine(expectCode); };
 84581  	Reader.ptr.prototype.ReadResponse = function(expectCode) {
 84582  		var _r, _r$1, _r$2, _tmp, _tmp$1, _tmp$2, _tuple, _tuple$1, _tuple$2, code, code2, continued, err, err$1, expectCode, line, message, moreMessage, multi, r, $s, $r;
 84583  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; code = $f.code; code2 = $f.code2; continued = $f.continued; err = $f.err; err$1 = $f.err$1; expectCode = $f.expectCode; line = $f.line; message = $f.message; moreMessage = $f.moreMessage; multi = $f.multi; r = $f.r; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 84584  		code = 0;
 84585  		message = "";
 84586  		err = $ifaceNil;
 84587  		r = this;
 84588  		_r = r.readCodeLine(expectCode); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 84589  		_tuple = _r;
 84590  		code = _tuple[0];
 84591  		continued = _tuple[1];
 84592  		message = _tuple[2];
 84593  		err = _tuple[3];
 84594  		multi = continued;
 84595  		/* while (true) { */ case 2:
 84596  			/* if (!(continued)) { break; } */ if(!(continued)) { $s = 3; continue; }
 84597  			_r$1 = r.ReadLine(); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 84598  			_tuple$1 = _r$1;
 84599  			line = _tuple$1[0];
 84600  			err$1 = _tuple$1[1];
 84601  			if (!($interfaceIsEqual(err$1, $ifaceNil))) {
 84602  				_tmp = 0;
 84603  				_tmp$1 = "";
 84604  				_tmp$2 = err$1;
 84605  				code = _tmp;
 84606  				message = _tmp$1;
 84607  				err = _tmp$2;
 84608  				$s = -1; return [code, message, err];
 84609  			}
 84610  			code2 = 0;
 84611  			moreMessage = "";
 84612  			_tuple$2 = parseCodeLine(line, 0);
 84613  			code2 = _tuple$2[0];
 84614  			continued = _tuple$2[1];
 84615  			moreMessage = _tuple$2[2];
 84616  			err$1 = _tuple$2[3];
 84617  			/* */ if (!($interfaceIsEqual(err$1, $ifaceNil)) || !((code2 === code))) { $s = 5; continue; }
 84618  			/* */ $s = 6; continue;
 84619  			/* if (!($interfaceIsEqual(err$1, $ifaceNil)) || !((code2 === code))) { */ case 5:
 84620  				_r$2 = strings.TrimRight(line, "\r\n"); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 84621  				message = message + ("\n" + _r$2);
 84622  				continued = true;
 84623  				/* continue; */ $s = 2; continue;
 84624  			/* } */ case 6:
 84625  			message = message + ("\n" + moreMessage);
 84626  		/* } */ $s = 2; continue; case 3:
 84627  		if (!($interfaceIsEqual(err, $ifaceNil)) && multi && !(message === "")) {
 84628  			err = new Error.ptr(code, message);
 84629  		}
 84630  		$s = -1; return [code, message, err];
 84631  		/* */ } return; } if ($f === undefined) { $f = { $blk: Reader.ptr.prototype.ReadResponse }; } $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f.code = code; $f.code2 = code2; $f.continued = continued; $f.err = err; $f.err$1 = err$1; $f.expectCode = expectCode; $f.line = line; $f.message = message; $f.moreMessage = moreMessage; $f.multi = multi; $f.r = r; $f.$s = $s; $f.$r = $r; return $f;
 84632  	};
 84633  	Reader.prototype.ReadResponse = function(expectCode) { return this.$val.ReadResponse(expectCode); };
 84634  	Reader.ptr.prototype.DotReader = function() {
 84635  		var r, $s, $r;
 84636  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; r = $f.r; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 84637  		r = this;
 84638  		$r = r.closeDot(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 84639  		r.dot = new dotReader.ptr(r, 0);
 84640  		$s = -1; return r.dot;
 84641  		/* */ } return; } if ($f === undefined) { $f = { $blk: Reader.ptr.prototype.DotReader }; } $f.r = r; $f.$s = $s; $f.$r = $r; return $f;
 84642  	};
 84643  	Reader.prototype.DotReader = function() { return this.$val.DotReader(); };
 84644  	dotReader.ptr.prototype.Read = function(b) {
 84645  		var _1, _r, _tuple, b, br, c, d, err, n, $s, $r;
 84646  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _r = $f._r; _tuple = $f._tuple; b = $f.b; br = $f.br; c = $f.c; d = $f.d; err = $f.err; n = $f.n; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 84647  		n = 0;
 84648  		err = $ifaceNil;
 84649  		d = this;
 84650  		br = d.r.R;
 84651  		/* while (true) { */ case 1:
 84652  			/* if (!(n < b.$length && !((d.state === 5)))) { break; } */ if(!(n < b.$length && !((d.state === 5)))) { $s = 2; continue; }
 84653  			c = 0;
 84654  			_r = br.ReadByte(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 84655  			_tuple = _r;
 84656  			c = _tuple[0];
 84657  			err = _tuple[1];
 84658  			if (!($interfaceIsEqual(err, $ifaceNil))) {
 84659  				if ($interfaceIsEqual(err, io.EOF)) {
 84660  					err = io.ErrUnexpectedEOF;
 84661  				}
 84662  				/* break; */ $s = 2; continue;
 84663  			}
 84664  			switch (0) { default:
 84665  				_1 = d.state;
 84666  				if (_1 === (0)) {
 84667  					if (c === 46) {
 84668  						d.state = 1;
 84669  						/* continue; */ $s = 1; continue;
 84670  					}
 84671  					if (c === 13) {
 84672  						d.state = 3;
 84673  						/* continue; */ $s = 1; continue;
 84674  					}
 84675  					d.state = 4;
 84676  				} else if (_1 === (1)) {
 84677  					if (c === 13) {
 84678  						d.state = 2;
 84679  						/* continue; */ $s = 1; continue;
 84680  					}
 84681  					if (c === 10) {
 84682  						d.state = 5;
 84683  						/* continue; */ $s = 1; continue;
 84684  					}
 84685  					d.state = 4;
 84686  				} else if (_1 === (2)) {
 84687  					if (c === 10) {
 84688  						d.state = 5;
 84689  						/* continue; */ $s = 1; continue;
 84690  					}
 84691  					br.UnreadByte();
 84692  					c = 13;
 84693  					d.state = 4;
 84694  				} else if (_1 === (3)) {
 84695  					if (c === 10) {
 84696  						d.state = 0;
 84697  						break;
 84698  					}
 84699  					br.UnreadByte();
 84700  					c = 13;
 84701  					d.state = 4;
 84702  				} else if (_1 === (4)) {
 84703  					if (c === 13) {
 84704  						d.state = 3;
 84705  						/* continue; */ $s = 1; continue;
 84706  					}
 84707  					if (c === 10) {
 84708  						d.state = 0;
 84709  					}
 84710  				}
 84711  			}
 84712  			((n < 0 || n >= b.$length) ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + n] = c);
 84713  			n = n + (1) >> 0;
 84714  		/* } */ $s = 1; continue; case 2:
 84715  		if ($interfaceIsEqual(err, $ifaceNil) && (d.state === 5)) {
 84716  			err = io.EOF;
 84717  		}
 84718  		if (!($interfaceIsEqual(err, $ifaceNil)) && d.r.dot === d) {
 84719  			d.r.dot = ptrType$1.nil;
 84720  		}
 84721  		$s = -1; return [n, err];
 84722  		/* */ } return; } if ($f === undefined) { $f = { $blk: dotReader.ptr.prototype.Read }; } $f._1 = _1; $f._r = _r; $f._tuple = _tuple; $f.b = b; $f.br = br; $f.c = c; $f.d = d; $f.err = err; $f.n = n; $f.$s = $s; $f.$r = $r; return $f;
 84723  	};
 84724  	dotReader.prototype.Read = function(b) { return this.$val.Read(b); };
 84725  	Reader.ptr.prototype.closeDot = function() {
 84726  		var _r, buf, r, $s, $r;
 84727  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; buf = $f.buf; r = $f.r; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 84728  		r = this;
 84729  		if (r.dot === ptrType$1.nil) {
 84730  			$s = -1; return;
 84731  		}
 84732  		buf = $makeSlice(sliceType, 128);
 84733  		/* while (true) { */ case 1:
 84734  			/* if (!(!(r.dot === ptrType$1.nil))) { break; } */ if(!(!(r.dot === ptrType$1.nil))) { $s = 2; continue; }
 84735  			_r = r.dot.Read(buf); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 84736  			_r;
 84737  		/* } */ $s = 1; continue; case 2:
 84738  		$s = -1; return;
 84739  		/* */ } return; } if ($f === undefined) { $f = { $blk: Reader.ptr.prototype.closeDot }; } $f._r = _r; $f.buf = buf; $f.r = r; $f.$s = $s; $f.$r = $r; return $f;
 84740  	};
 84741  	Reader.prototype.closeDot = function() { return this.$val.closeDot(); };
 84742  	Reader.ptr.prototype.ReadDotBytes = function() {
 84743  		var _r, _r$1, r, $s, $r;
 84744  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; r = $f.r; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 84745  		r = this;
 84746  		_r = r.DotReader(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 84747  		_r$1 = ioutil.ReadAll(_r); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 84748  		$s = -1; return _r$1;
 84749  		/* */ } return; } if ($f === undefined) { $f = { $blk: Reader.ptr.prototype.ReadDotBytes }; } $f._r = _r; $f._r$1 = _r$1; $f.r = r; $f.$s = $s; $f.$r = $r; return $f;
 84750  	};
 84751  	Reader.prototype.ReadDotBytes = function() { return this.$val.ReadDotBytes(); };
 84752  	Reader.ptr.prototype.ReadDotLines = function() {
 84753  		var _r, _tuple, err, line, r, v, $s, $r;
 84754  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; err = $f.err; line = $f.line; r = $f.r; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 84755  		r = this;
 84756  		v = sliceType$1.nil;
 84757  		err = $ifaceNil;
 84758  		/* while (true) { */ case 1:
 84759  			line = "";
 84760  			_r = r.ReadLine(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 84761  			_tuple = _r;
 84762  			line = _tuple[0];
 84763  			err = _tuple[1];
 84764  			if (!($interfaceIsEqual(err, $ifaceNil))) {
 84765  				if ($interfaceIsEqual(err, io.EOF)) {
 84766  					err = io.ErrUnexpectedEOF;
 84767  				}
 84768  				/* break; */ $s = 2; continue;
 84769  			}
 84770  			if (line.length > 0 && (line.charCodeAt(0) === 46)) {
 84771  				if (line.length === 1) {
 84772  					/* break; */ $s = 2; continue;
 84773  				}
 84774  				line = $substring(line, 1);
 84775  			}
 84776  			v = $append(v, line);
 84777  		/* } */ $s = 1; continue; case 2:
 84778  		$s = -1; return [v, err];
 84779  		/* */ } return; } if ($f === undefined) { $f = { $blk: Reader.ptr.prototype.ReadDotLines }; } $f._r = _r; $f._tuple = _tuple; $f.err = err; $f.line = line; $f.r = r; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
 84780  	};
 84781  	Reader.prototype.ReadDotLines = function() { return this.$val.ReadDotLines(); };
 84782  	Reader.ptr.prototype.ReadMIMEHeader = function() {
 84783  		var _entry, _key, _key$1, _r, _r$1, _r$2, _r$3, _tmp, _tmp$1, _tuple, _tuple$1, _tuple$2, buf, endKey, err, err$1, err$2, hint, i, key, kv, line, m, r, strs, value, vv, x, $s, $r;
 84784  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _entry = $f._entry; _key = $f._key; _key$1 = $f._key$1; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; buf = $f.buf; endKey = $f.endKey; err = $f.err; err$1 = $f.err$1; err$2 = $f.err$2; hint = $f.hint; i = $f.i; key = $f.key; kv = $f.kv; line = $f.line; m = $f.m; r = $f.r; strs = $f.strs; value = $f.value; vv = $f.vv; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 84785  		r = this;
 84786  		strs = sliceType$1.nil;
 84787  		_r = r.upcomingHeaderNewlines(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 84788  		hint = _r;
 84789  		if (hint > 0) {
 84790  			strs = $makeSlice(sliceType$1, hint);
 84791  		}
 84792  		m = ((hint < 0 || hint > 2147483647) ? $throwRuntimeError("makemap: size out of range") : {});
 84793  		_r$1 = r.R.Peek(1); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 84794  		_tuple = _r$1;
 84795  		buf = _tuple[0];
 84796  		err = _tuple[1];
 84797  		/* */ if ($interfaceIsEqual(err, $ifaceNil) && (((0 >= buf.$length ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + 0]) === 32) || ((0 >= buf.$length ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + 0]) === 9))) { $s = 3; continue; }
 84798  		/* */ $s = 4; continue;
 84799  		/* if ($interfaceIsEqual(err, $ifaceNil) && (((0 >= buf.$length ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + 0]) === 32) || ((0 >= buf.$length ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + 0]) === 9))) { */ case 3:
 84800  			_r$2 = r.readLineSlice(); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 84801  			_tuple$1 = _r$2;
 84802  			line = _tuple$1[0];
 84803  			err$1 = _tuple$1[1];
 84804  			if (!($interfaceIsEqual(err$1, $ifaceNil))) {
 84805  				$s = -1; return [m, err$1];
 84806  			}
 84807  			$s = -1; return [m, new ProtocolError(("malformed MIME header initial line: " + ($bytesToString(line))))];
 84808  		/* } */ case 4:
 84809  		/* while (true) { */ case 6:
 84810  			_r$3 = r.readContinuedLineSlice(); /* */ $s = 8; case 8: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 84811  			_tuple$2 = _r$3;
 84812  			kv = _tuple$2[0];
 84813  			err$2 = _tuple$2[1];
 84814  			if (kv.$length === 0) {
 84815  				$s = -1; return [m, err$2];
 84816  			}
 84817  			i = bytes.IndexByte(kv, 58);
 84818  			if (i < 0) {
 84819  				$s = -1; return [m, new ProtocolError(("malformed MIME header line: " + ($bytesToString(kv))))];
 84820  			}
 84821  			endKey = i;
 84822  			while (true) {
 84823  				if (!(endKey > 0 && ((x = endKey - 1 >> 0, ((x < 0 || x >= kv.$length) ? ($throwRuntimeError("index out of range"), undefined) : kv.$array[kv.$offset + x])) === 32))) { break; }
 84824  				endKey = endKey - (1) >> 0;
 84825  			}
 84826  			key = canonicalMIMEHeaderKey($subslice(kv, 0, endKey));
 84827  			if (key === "") {
 84828  				/* continue; */ $s = 6; continue;
 84829  			}
 84830  			i = i + (1) >> 0;
 84831  			while (true) {
 84832  				if (!(i < kv.$length && ((((i < 0 || i >= kv.$length) ? ($throwRuntimeError("index out of range"), undefined) : kv.$array[kv.$offset + i]) === 32) || (((i < 0 || i >= kv.$length) ? ($throwRuntimeError("index out of range"), undefined) : kv.$array[kv.$offset + i]) === 9)))) { break; }
 84833  				i = i + (1) >> 0;
 84834  			}
 84835  			value = ($bytesToString($subslice(kv, i)));
 84836  			vv = (_entry = m[$String.keyFor(key)], _entry !== undefined ? _entry.v : sliceType$1.nil);
 84837  			if (vv === sliceType$1.nil && strs.$length > 0) {
 84838  				_tmp = $subslice(strs, 0, 1, 1);
 84839  				_tmp$1 = $subslice(strs, 1);
 84840  				vv = _tmp;
 84841  				strs = _tmp$1;
 84842  				(0 >= vv.$length ? ($throwRuntimeError("index out of range"), undefined) : vv.$array[vv.$offset + 0] = value);
 84843  				_key = key; (m || $throwRuntimeError("assignment to entry in nil map"))[$String.keyFor(_key)] = { k: _key, v: vv };
 84844  			} else {
 84845  				_key$1 = key; (m || $throwRuntimeError("assignment to entry in nil map"))[$String.keyFor(_key$1)] = { k: _key$1, v: $append(vv, value) };
 84846  			}
 84847  			if (!($interfaceIsEqual(err$2, $ifaceNil))) {
 84848  				$s = -1; return [m, err$2];
 84849  			}
 84850  		/* } */ $s = 6; continue; case 7:
 84851  		$s = -1; return [false, $ifaceNil];
 84852  		/* */ } return; } if ($f === undefined) { $f = { $blk: Reader.ptr.prototype.ReadMIMEHeader }; } $f._entry = _entry; $f._key = _key; $f._key$1 = _key$1; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f.buf = buf; $f.endKey = endKey; $f.err = err; $f.err$1 = err$1; $f.err$2 = err$2; $f.hint = hint; $f.i = i; $f.key = key; $f.kv = kv; $f.line = line; $f.m = m; $f.r = r; $f.strs = strs; $f.value = value; $f.vv = vv; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
 84853  	};
 84854  	Reader.prototype.ReadMIMEHeader = function() { return this.$val.ReadMIMEHeader(); };
 84855  	Reader.ptr.prototype.upcomingHeaderNewlines = function() {
 84856  		var _r, _r$1, _tuple, i, n, peek, r, s, $s, $r;
 84857  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _tuple = $f._tuple; i = $f.i; n = $f.n; peek = $f.peek; r = $f.r; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 84858  		n = 0;
 84859  		r = this;
 84860  		_r = r.R.Peek(1); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 84861  		_r;
 84862  		s = r.R.Buffered();
 84863  		if (s === 0) {
 84864  			$s = -1; return n;
 84865  		}
 84866  		_r$1 = r.R.Peek(s); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 84867  		_tuple = _r$1;
 84868  		peek = _tuple[0];
 84869  		while (true) {
 84870  			if (!(peek.$length > 0)) { break; }
 84871  			i = bytes.IndexByte(peek, 10);
 84872  			if (i < 3) {
 84873  				$s = -1; return n;
 84874  			}
 84875  			n = n + (1) >> 0;
 84876  			peek = $subslice(peek, (i + 1 >> 0));
 84877  		}
 84878  		$s = -1; return n;
 84879  		/* */ } return; } if ($f === undefined) { $f = { $blk: Reader.ptr.prototype.upcomingHeaderNewlines }; } $f._r = _r; $f._r$1 = _r$1; $f._tuple = _tuple; $f.i = i; $f.n = n; $f.peek = peek; $f.r = r; $f.s = s; $f.$s = $s; $f.$r = $r; return $f;
 84880  	};
 84881  	Reader.prototype.upcomingHeaderNewlines = function() { return this.$val.upcomingHeaderNewlines(); };
 84882  	CanonicalMIMEHeaderKey = function(s) {
 84883  		var c, i, s, upper;
 84884  		upper = true;
 84885  		i = 0;
 84886  		while (true) {
 84887  			if (!(i < s.length)) { break; }
 84888  			c = s.charCodeAt(i);
 84889  			if (!validHeaderFieldByte(c)) {
 84890  				return s;
 84891  			}
 84892  			if (upper && 97 <= c && c <= 122) {
 84893  				return canonicalMIMEHeaderKey((new sliceType($stringToBytes(s))));
 84894  			}
 84895  			if (!upper && 65 <= c && c <= 90) {
 84896  				return canonicalMIMEHeaderKey((new sliceType($stringToBytes(s))));
 84897  			}
 84898  			upper = c === 45;
 84899  			i = i + (1) >> 0;
 84900  		}
 84901  		return s;
 84902  	};
 84903  	$pkg.CanonicalMIMEHeaderKey = CanonicalMIMEHeaderKey;
 84904  	validHeaderFieldByte = function(b) {
 84905  		var b;
 84906  		return ((b >> 0)) < 127 && ((b < 0 || b >= isTokenTable.length) ? ($throwRuntimeError("index out of range"), undefined) : isTokenTable[b]);
 84907  	};
 84908  	canonicalMIMEHeaderKey = function(a) {
 84909  		var _entry, _i, _i$1, _ref, _ref$1, a, c, c$1, i, upper, v;
 84910  		_ref = a;
 84911  		_i = 0;
 84912  		while (true) {
 84913  			if (!(_i < _ref.$length)) { break; }
 84914  			c = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
 84915  			if (validHeaderFieldByte(c)) {
 84916  				_i++;
 84917  				continue;
 84918  			}
 84919  			return ($bytesToString(a));
 84920  		}
 84921  		upper = true;
 84922  		_ref$1 = a;
 84923  		_i$1 = 0;
 84924  		while (true) {
 84925  			if (!(_i$1 < _ref$1.$length)) { break; }
 84926  			i = _i$1;
 84927  			c$1 = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]);
 84928  			if (upper && 97 <= c$1 && c$1 <= 122) {
 84929  				c$1 = c$1 - (32) << 24 >>> 24;
 84930  			} else if (!upper && 65 <= c$1 && c$1 <= 90) {
 84931  				c$1 = c$1 + (32) << 24 >>> 24;
 84932  			}
 84933  			((i < 0 || i >= a.$length) ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + i] = c$1);
 84934  			upper = c$1 === 45;
 84935  			_i$1++;
 84936  		}
 84937  		v = (_entry = commonHeader[$String.keyFor(($bytesToString(a)))], _entry !== undefined ? _entry.v : "");
 84938  		if (!(v === "")) {
 84939  			return v;
 84940  		}
 84941  		return ($bytesToString(a));
 84942  	};
 84943  	init = function() {
 84944  		var _i, _key, _ref, v;
 84945  		_ref = new sliceType$1(["Accept", "Accept-Charset", "Accept-Encoding", "Accept-Language", "Accept-Ranges", "Cache-Control", "Cc", "Connection", "Content-Id", "Content-Language", "Content-Length", "Content-Transfer-Encoding", "Content-Type", "Cookie", "Date", "Dkim-Signature", "Etag", "Expires", "From", "Host", "If-Modified-Since", "If-None-Match", "In-Reply-To", "Last-Modified", "Location", "Message-Id", "Mime-Version", "Pragma", "Received", "Return-Path", "Server", "Set-Cookie", "Subject", "To", "User-Agent", "Via", "X-Forwarded-For", "X-Imforwards", "X-Powered-By"]);
 84946  		_i = 0;
 84947  		while (true) {
 84948  			if (!(_i < _ref.$length)) { break; }
 84949  			v = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
 84950  			_key = v; (commonHeader || $throwRuntimeError("assignment to entry in nil map"))[$String.keyFor(_key)] = { k: _key, v: v };
 84951  			_i++;
 84952  		}
 84953  	};
 84954  	Error.ptr.prototype.Error = function() {
 84955  		var _r, e, $s, $r;
 84956  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; e = $f.e; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 84957  		e = this;
 84958  		_r = fmt.Sprintf("%03d %s", new sliceType$2([new $Int(e.Code), new $String(e.Msg)])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 84959  		$s = -1; return _r;
 84960  		/* */ } return; } if ($f === undefined) { $f = { $blk: Error.ptr.prototype.Error }; } $f._r = _r; $f.e = e; $f.$s = $s; $f.$r = $r; return $f;
 84961  	};
 84962  	Error.prototype.Error = function() { return this.$val.Error(); };
 84963  	ProtocolError.prototype.Error = function() {
 84964  		var p;
 84965  		p = this.$val;
 84966  		return (p);
 84967  	};
 84968  	$ptrType(ProtocolError).prototype.Error = function() { return new ProtocolError(this.$get()).Error(); };
 84969  	TrimString = function(s) {
 84970  		var s;
 84971  		while (true) {
 84972  			if (!(s.length > 0 && isASCIISpace(s.charCodeAt(0)))) { break; }
 84973  			s = $substring(s, 1);
 84974  		}
 84975  		while (true) {
 84976  			if (!(s.length > 0 && isASCIISpace(s.charCodeAt((s.length - 1 >> 0))))) { break; }
 84977  			s = $substring(s, 0, (s.length - 1 >> 0));
 84978  		}
 84979  		return s;
 84980  	};
 84981  	$pkg.TrimString = TrimString;
 84982  	isASCIISpace = function(b) {
 84983  		var b;
 84984  		return (b === 32) || (b === 9) || (b === 10) || (b === 13);
 84985  	};
 84986  	isASCIILetter = function(b) {
 84987  		var b;
 84988  		b = (b | (32)) >>> 0;
 84989  		return 97 <= b && b <= 122;
 84990  	};
 84991  	MIMEHeader.methods = [{prop: "Add", name: "Add", pkg: "", typ: $funcType([$String, $String], [], false)}, {prop: "Set", name: "Set", pkg: "", typ: $funcType([$String, $String], [], false)}, {prop: "Get", name: "Get", pkg: "", typ: $funcType([$String], [$String], false)}, {prop: "Del", name: "Del", pkg: "", typ: $funcType([$String], [], false)}];
 84992  	ptrType$2.methods = [{prop: "ReadLine", name: "ReadLine", pkg: "", typ: $funcType([], [$String, $error], false)}, {prop: "ReadLineBytes", name: "ReadLineBytes", pkg: "", typ: $funcType([], [sliceType, $error], false)}, {prop: "readLineSlice", name: "readLineSlice", pkg: "net/textproto", typ: $funcType([], [sliceType, $error], false)}, {prop: "ReadContinuedLine", name: "ReadContinuedLine", pkg: "", typ: $funcType([], [$String, $error], false)}, {prop: "ReadContinuedLineBytes", name: "ReadContinuedLineBytes", pkg: "", typ: $funcType([], [sliceType, $error], false)}, {prop: "readContinuedLineSlice", name: "readContinuedLineSlice", pkg: "net/textproto", typ: $funcType([], [sliceType, $error], false)}, {prop: "skipSpace", name: "skipSpace", pkg: "net/textproto", typ: $funcType([], [$Int], false)}, {prop: "readCodeLine", name: "readCodeLine", pkg: "net/textproto", typ: $funcType([$Int], [$Int, $Bool, $String, $error], false)}, {prop: "ReadCodeLine", name: "ReadCodeLine", pkg: "", typ: $funcType([$Int], [$Int, $String, $error], false)}, {prop: "ReadResponse", name: "ReadResponse", pkg: "", typ: $funcType([$Int], [$Int, $String, $error], false)}, {prop: "DotReader", name: "DotReader", pkg: "", typ: $funcType([], [io.Reader], false)}, {prop: "closeDot", name: "closeDot", pkg: "net/textproto", typ: $funcType([], [], false)}, {prop: "ReadDotBytes", name: "ReadDotBytes", pkg: "", typ: $funcType([], [sliceType, $error], false)}, {prop: "ReadDotLines", name: "ReadDotLines", pkg: "", typ: $funcType([], [sliceType$1, $error], false)}, {prop: "ReadMIMEHeader", name: "ReadMIMEHeader", pkg: "", typ: $funcType([], [MIMEHeader, $error], false)}, {prop: "upcomingHeaderNewlines", name: "upcomingHeaderNewlines", pkg: "net/textproto", typ: $funcType([], [$Int], false)}];
 84993  	ptrType$1.methods = [{prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType], [$Int, $error], false)}];
 84994  	ptrType$9.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}];
 84995  	ProtocolError.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}];
 84996  	MIMEHeader.init($String, sliceType$1);
 84997  	Reader.init("net/textproto", [{prop: "R", name: "R", anonymous: false, exported: true, typ: ptrType, tag: ""}, {prop: "dot", name: "dot", anonymous: false, exported: false, typ: ptrType$1, tag: ""}, {prop: "buf", name: "buf", anonymous: false, exported: false, typ: sliceType, tag: ""}]);
 84998  	dotReader.init("net/textproto", [{prop: "r", name: "r", anonymous: false, exported: false, typ: ptrType$2, tag: ""}, {prop: "state", name: "state", anonymous: false, exported: false, typ: $Int, tag: ""}]);
 84999  	Error.init("", [{prop: "Code", name: "Code", anonymous: false, exported: true, typ: $Int, tag: ""}, {prop: "Msg", name: "Msg", anonymous: false, exported: true, typ: $String, tag: ""}]);
 85000  	$init = function() {
 85001  		$pkg.$init = function() {};
 85002  		/* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 85003  		$r = bufio.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 85004  		$r = bytes.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 85005  		$r = fmt.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 85006  		$r = io.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 85007  		$r = ioutil.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 85008  		$r = net.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 85009  		$r = strconv.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 85010  		$r = strings.$init(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 85011  		$r = sync.$init(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 85012  		commonHeader = {};
 85013  		isTokenTable = $toNativeArray($kindBool, [false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, true, false, true, true, true, true, true, false, false, true, true, false, true, true, false, true, true, true, true, true, true, true, true, true, true, false, false, false, false, false, false, false, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, false, false, false, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, false, true, false, true]);
 85014  		init();
 85015  		/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
 85016  	};
 85017  	$pkg.$init = $init;
 85018  	return $pkg;
 85019  })();
 85020  $packages["mime/multipart"] = (function() {
 85021  	var $pkg = {}, $init, bufio, bytes, rand, errors, fmt, io, ioutil, mime, quotedprintable, textproto, os, sort, strings, Form, FileHeader, File, sectionReadCloser, Part, stickyErrorReader, partReader, Reader, sliceType, ptrType, sliceType$1, arrayType, sliceType$2, ptrType$1, sliceType$3, ptrType$2, ptrType$3, ptrType$4, sliceType$4, mapType, mapType$1, ptrType$7, mapType$2, ptrType$8, emptyParams, quoteEscaper, NewReader, newPart, scanUntilBoundary, matchAfterPrefix, skipLWSPChar;
 85022  	bufio = $packages["bufio"];
 85023  	bytes = $packages["bytes"];
 85024  	rand = $packages["crypto/rand"];
 85025  	errors = $packages["errors"];
 85026  	fmt = $packages["fmt"];
 85027  	io = $packages["io"];
 85028  	ioutil = $packages["io/ioutil"];
 85029  	mime = $packages["mime"];
 85030  	quotedprintable = $packages["mime/quotedprintable"];
 85031  	textproto = $packages["net/textproto"];
 85032  	os = $packages["os"];
 85033  	sort = $packages["sort"];
 85034  	strings = $packages["strings"];
 85035  	Form = $pkg.Form = $newType(0, $kindStruct, "multipart.Form", true, "mime/multipart", true, function(Value_, File_) {
 85036  		this.$val = this;
 85037  		if (arguments.length === 0) {
 85038  			this.Value = false;
 85039  			this.File = false;
 85040  			return;
 85041  		}
 85042  		this.Value = Value_;
 85043  		this.File = File_;
 85044  	});
 85045  	FileHeader = $pkg.FileHeader = $newType(0, $kindStruct, "multipart.FileHeader", true, "mime/multipart", true, function(Filename_, Header_, Size_, content_, tmpfile_) {
 85046  		this.$val = this;
 85047  		if (arguments.length === 0) {
 85048  			this.Filename = "";
 85049  			this.Header = false;
 85050  			this.Size = new $Int64(0, 0);
 85051  			this.content = sliceType$1.nil;
 85052  			this.tmpfile = "";
 85053  			return;
 85054  		}
 85055  		this.Filename = Filename_;
 85056  		this.Header = Header_;
 85057  		this.Size = Size_;
 85058  		this.content = content_;
 85059  		this.tmpfile = tmpfile_;
 85060  	});
 85061  	File = $pkg.File = $newType(8, $kindInterface, "multipart.File", true, "mime/multipart", true, null);
 85062  	sectionReadCloser = $pkg.sectionReadCloser = $newType(0, $kindStruct, "multipart.sectionReadCloser", true, "mime/multipart", false, function(SectionReader_) {
 85063  		this.$val = this;
 85064  		if (arguments.length === 0) {
 85065  			this.SectionReader = ptrType$7.nil;
 85066  			return;
 85067  		}
 85068  		this.SectionReader = SectionReader_;
 85069  	});
 85070  	Part = $pkg.Part = $newType(0, $kindStruct, "multipart.Part", true, "mime/multipart", true, function(Header_, mr_, disposition_, dispositionParams_, r_, n_, total_, err_, readErr_) {
 85071  		this.$val = this;
 85072  		if (arguments.length === 0) {
 85073  			this.Header = false;
 85074  			this.mr = ptrType$4.nil;
 85075  			this.disposition = "";
 85076  			this.dispositionParams = false;
 85077  			this.r = $ifaceNil;
 85078  			this.n = 0;
 85079  			this.total = new $Int64(0, 0);
 85080  			this.err = $ifaceNil;
 85081  			this.readErr = $ifaceNil;
 85082  			return;
 85083  		}
 85084  		this.Header = Header_;
 85085  		this.mr = mr_;
 85086  		this.disposition = disposition_;
 85087  		this.dispositionParams = dispositionParams_;
 85088  		this.r = r_;
 85089  		this.n = n_;
 85090  		this.total = total_;
 85091  		this.err = err_;
 85092  		this.readErr = readErr_;
 85093  	});
 85094  	stickyErrorReader = $pkg.stickyErrorReader = $newType(0, $kindStruct, "multipart.stickyErrorReader", true, "mime/multipart", false, function(r_, err_) {
 85095  		this.$val = this;
 85096  		if (arguments.length === 0) {
 85097  			this.r = $ifaceNil;
 85098  			this.err = $ifaceNil;
 85099  			return;
 85100  		}
 85101  		this.r = r_;
 85102  		this.err = err_;
 85103  	});
 85104  	partReader = $pkg.partReader = $newType(0, $kindStruct, "multipart.partReader", true, "mime/multipart", false, function(p_) {
 85105  		this.$val = this;
 85106  		if (arguments.length === 0) {
 85107  			this.p = ptrType$3.nil;
 85108  			return;
 85109  		}
 85110  		this.p = p_;
 85111  	});
 85112  	Reader = $pkg.Reader = $newType(0, $kindStruct, "multipart.Reader", true, "mime/multipart", true, function(bufReader_, currentPart_, partsRead_, nl_, nlDashBoundary_, dashBoundaryDash_, dashBoundary_) {
 85113  		this.$val = this;
 85114  		if (arguments.length === 0) {
 85115  			this.bufReader = ptrType$2.nil;
 85116  			this.currentPart = ptrType$3.nil;
 85117  			this.partsRead = 0;
 85118  			this.nl = sliceType$1.nil;
 85119  			this.nlDashBoundary = sliceType$1.nil;
 85120  			this.dashBoundaryDash = sliceType$1.nil;
 85121  			this.dashBoundary = sliceType$1.nil;
 85122  			return;
 85123  		}
 85124  		this.bufReader = bufReader_;
 85125  		this.currentPart = currentPart_;
 85126  		this.partsRead = partsRead_;
 85127  		this.nl = nl_;
 85128  		this.nlDashBoundary = nlDashBoundary_;
 85129  		this.dashBoundaryDash = dashBoundaryDash_;
 85130  		this.dashBoundary = dashBoundary_;
 85131  	});
 85132  	sliceType = $sliceType($String);
 85133  	ptrType = $ptrType(Form);
 85134  	sliceType$1 = $sliceType($Uint8);
 85135  	arrayType = $arrayType($Uint8, 64);
 85136  	sliceType$2 = $sliceType(io.Reader);
 85137  	ptrType$1 = $ptrType(FileHeader);
 85138  	sliceType$3 = $sliceType(ptrType$1);
 85139  	ptrType$2 = $ptrType(bufio.Reader);
 85140  	ptrType$3 = $ptrType(Part);
 85141  	ptrType$4 = $ptrType(Reader);
 85142  	sliceType$4 = $sliceType($emptyInterface);
 85143  	mapType = $mapType($String, sliceType);
 85144  	mapType$1 = $mapType($String, sliceType$3);
 85145  	ptrType$7 = $ptrType(io.SectionReader);
 85146  	mapType$2 = $mapType($String, $String);
 85147  	ptrType$8 = $ptrType(stickyErrorReader);
 85148  	Reader.ptr.prototype.ReadForm = function(maxMemory) {
 85149  		var _r, maxMemory, r, $s, $r;
 85150  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; maxMemory = $f.maxMemory; r = $f.r; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 85151  		r = this;
 85152  		_r = r.readForm(maxMemory); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 85153  		$s = -1; return _r;
 85154  		/* */ } return; } if ($f === undefined) { $f = { $blk: Reader.ptr.prototype.ReadForm }; } $f._r = _r; $f.maxMemory = maxMemory; $f.r = r; $f.$s = $s; $f.$r = $r; return $f;
 85155  	};
 85156  	Reader.prototype.ReadForm = function(maxMemory) { return this.$val.ReadForm(maxMemory); };
 85157  	Reader.ptr.prototype.readForm = function(maxMemory) {
 85158  		var _, _entry, _entry$1, _entry$2, _key, _key$1, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, _tuple$5, b, cerr, err, err$1, err$2, err$3, fh, file, filename, form, hasContentTypeHeader, maxMemory, maxValueBytes, n, n$1, name, p, r, size, x, x$1, x$2, $s, $deferred, $r;
 85159  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _ = $f._; _entry = $f._entry; _entry$1 = $f._entry$1; _entry$2 = $f._entry$2; _key = $f._key; _key$1 = $f._key$1; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$10 = $f._tmp$10; _tmp$11 = $f._tmp$11; _tmp$12 = $f._tmp$12; _tmp$13 = $f._tmp$13; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tmp$4 = $f._tmp$4; _tmp$5 = $f._tmp$5; _tmp$6 = $f._tmp$6; _tmp$7 = $f._tmp$7; _tmp$8 = $f._tmp$8; _tmp$9 = $f._tmp$9; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; _tuple$4 = $f._tuple$4; _tuple$5 = $f._tuple$5; b = $f.b; cerr = $f.cerr; err = $f.err; err$1 = $f.err$1; err$2 = $f.err$2; err$3 = $f.err$3; fh = $f.fh; file = $f.file; filename = $f.filename; form = $f.form; hasContentTypeHeader = $f.hasContentTypeHeader; maxMemory = $f.maxMemory; maxValueBytes = $f.maxValueBytes; n = $f.n; n$1 = $f.n$1; name = $f.name; p = $f.p; r = $f.r; size = $f.size; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
 85160  		err = [err];
 85161  		form = [form];
 85162  		_ = ptrType.nil;
 85163  		err[0] = $ifaceNil;
 85164  		r = this;
 85165  		form[0] = new Form.ptr({}, {});
 85166  		$deferred.push([(function(err, form) { return function() {
 85167  			if (!($interfaceIsEqual(err[0], $ifaceNil))) {
 85168  				form[0].RemoveAll();
 85169  			}
 85170  		}; })(err, form), []]);
 85171  		maxValueBytes = new $Int64(maxMemory.$high + 0, maxMemory.$low + 10485760);
 85172  		/* while (true) { */ case 1:
 85173  			b = [b];
 85174  			_r = r.NextPart(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 85175  			_tuple = _r;
 85176  			p = _tuple[0];
 85177  			err$1 = _tuple[1];
 85178  			if ($interfaceIsEqual(err$1, io.EOF)) {
 85179  				/* break; */ $s = 2; continue;
 85180  			}
 85181  			if (!($interfaceIsEqual(err$1, $ifaceNil))) {
 85182  				_tmp = ptrType.nil;
 85183  				_tmp$1 = err$1;
 85184  				_ = _tmp;
 85185  				err[0] = _tmp$1;
 85186  				$s = -1; return [_, err[0]];
 85187  			}
 85188  			_r$1 = p.FormName(); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 85189  			name = _r$1;
 85190  			/* */ if (name === "") { $s = 5; continue; }
 85191  			/* */ $s = 6; continue;
 85192  			/* if (name === "") { */ case 5:
 85193  				/* continue; */ $s = 1; continue;
 85194  			/* } */ case 6:
 85195  			_r$2 = p.FileName(); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 85196  			filename = _r$2;
 85197  			b[0] = new bytes.Buffer.ptr(sliceType$1.nil, 0, arrayType.zero(), 0);
 85198  			_tuple$1 = (_entry = p.Header[$String.keyFor("Content-Type")], _entry !== undefined ? [_entry.v, true] : [sliceType.nil, false]);
 85199  			hasContentTypeHeader = _tuple$1[1];
 85200  			/* */ if (!hasContentTypeHeader && filename === "") { $s = 8; continue; }
 85201  			/* */ $s = 9; continue;
 85202  			/* if (!hasContentTypeHeader && filename === "") { */ case 8:
 85203  				_r$3 = io.CopyN(b[0], p, new $Int64(maxValueBytes.$high + 0, maxValueBytes.$low + 1)); /* */ $s = 10; case 10: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 85204  				_tuple$2 = _r$3;
 85205  				n = _tuple$2[0];
 85206  				err$2 = _tuple$2[1];
 85207  				if (!($interfaceIsEqual(err$2, $ifaceNil)) && !($interfaceIsEqual(err$2, io.EOF))) {
 85208  					_tmp$2 = ptrType.nil;
 85209  					_tmp$3 = err$2;
 85210  					_ = _tmp$2;
 85211  					err[0] = _tmp$3;
 85212  					$s = -1; return [_, err[0]];
 85213  				}
 85214  				maxValueBytes = (x = n, new $Int64(maxValueBytes.$high - x.$high, maxValueBytes.$low - x.$low));
 85215  				if ((maxValueBytes.$high < 0 || (maxValueBytes.$high === 0 && maxValueBytes.$low < 0))) {
 85216  					_tmp$4 = ptrType.nil;
 85217  					_tmp$5 = $pkg.ErrMessageTooLarge;
 85218  					_ = _tmp$4;
 85219  					err[0] = _tmp$5;
 85220  					$s = -1; return [_, err[0]];
 85221  				}
 85222  				_key = name; (form[0].Value || $throwRuntimeError("assignment to entry in nil map"))[$String.keyFor(_key)] = { k: _key, v: $append((_entry$1 = form[0].Value[$String.keyFor(name)], _entry$1 !== undefined ? _entry$1.v : sliceType.nil), b[0].String()) };
 85223  				/* continue; */ $s = 1; continue;
 85224  			/* } */ case 9:
 85225  			fh = new FileHeader.ptr(filename, p.Header, new $Int64(0, 0), sliceType$1.nil, "");
 85226  			_r$4 = io.CopyN(b[0], p, new $Int64(maxMemory.$high + 0, maxMemory.$low + 1)); /* */ $s = 11; case 11: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 85227  			_tuple$3 = _r$4;
 85228  			n$1 = _tuple$3[0];
 85229  			err$1 = _tuple$3[1];
 85230  			if (!($interfaceIsEqual(err$1, $ifaceNil)) && !($interfaceIsEqual(err$1, io.EOF))) {
 85231  				_tmp$6 = ptrType.nil;
 85232  				_tmp$7 = err$1;
 85233  				_ = _tmp$6;
 85234  				err[0] = _tmp$7;
 85235  				$s = -1; return [_, err[0]];
 85236  			}
 85237  			/* */ if ((n$1.$high > maxMemory.$high || (n$1.$high === maxMemory.$high && n$1.$low > maxMemory.$low))) { $s = 12; continue; }
 85238  			/* */ $s = 13; continue;
 85239  			/* if ((n$1.$high > maxMemory.$high || (n$1.$high === maxMemory.$high && n$1.$low > maxMemory.$low))) { */ case 12:
 85240  				_r$5 = ioutil.TempFile("", "multipart-"); /* */ $s = 15; case 15: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
 85241  				_tuple$4 = _r$5;
 85242  				file = _tuple$4[0];
 85243  				err$3 = _tuple$4[1];
 85244  				if (!($interfaceIsEqual(err$3, $ifaceNil))) {
 85245  					_tmp$8 = ptrType.nil;
 85246  					_tmp$9 = err$3;
 85247  					_ = _tmp$8;
 85248  					err[0] = _tmp$9;
 85249  					$s = -1; return [_, err[0]];
 85250  				}
 85251  				_r$6 = io.Copy(file, io.MultiReader(new sliceType$2([b[0], p]))); /* */ $s = 16; case 16: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
 85252  				_tuple$5 = _r$6;
 85253  				size = _tuple$5[0];
 85254  				err$3 = _tuple$5[1];
 85255  				_r$7 = file.Close(); /* */ $s = 17; case 17: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
 85256  				cerr = _r$7;
 85257  				if ($interfaceIsEqual(err$3, $ifaceNil)) {
 85258  					err$3 = cerr;
 85259  				}
 85260  				if (!($interfaceIsEqual(err$3, $ifaceNil))) {
 85261  					os.Remove(file.Name());
 85262  					_tmp$10 = ptrType.nil;
 85263  					_tmp$11 = err$3;
 85264  					_ = _tmp$10;
 85265  					err[0] = _tmp$11;
 85266  					$s = -1; return [_, err[0]];
 85267  				}
 85268  				fh.tmpfile = file.Name();
 85269  				fh.Size = size;
 85270  				$s = 14; continue;
 85271  			/* } else { */ case 13:
 85272  				fh.content = b[0].Bytes();
 85273  				fh.Size = (new $Int64(0, fh.content.$length));
 85274  				maxMemory = (x$1 = n$1, new $Int64(maxMemory.$high - x$1.$high, maxMemory.$low - x$1.$low));
 85275  				maxValueBytes = (x$2 = n$1, new $Int64(maxValueBytes.$high - x$2.$high, maxValueBytes.$low - x$2.$low));
 85276  			/* } */ case 14:
 85277  			_key$1 = name; (form[0].File || $throwRuntimeError("assignment to entry in nil map"))[$String.keyFor(_key$1)] = { k: _key$1, v: $append((_entry$2 = form[0].File[$String.keyFor(name)], _entry$2 !== undefined ? _entry$2.v : sliceType$3.nil), fh) };
 85278  		/* } */ $s = 1; continue; case 2:
 85279  		_tmp$12 = form[0];
 85280  		_tmp$13 = $ifaceNil;
 85281  		_ = _tmp$12;
 85282  		err[0] = _tmp$13;
 85283  		$s = -1; return [_, err[0]];
 85284  		/* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if (!$curGoroutine.asleep) { return  [_, err[0]]; } if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: Reader.ptr.prototype.readForm }; } $f._ = _; $f._entry = _entry; $f._entry$1 = _entry$1; $f._entry$2 = _entry$2; $f._key = _key; $f._key$1 = _key$1; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$10 = _tmp$10; $f._tmp$11 = _tmp$11; $f._tmp$12 = _tmp$12; $f._tmp$13 = _tmp$13; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tmp$4 = _tmp$4; $f._tmp$5 = _tmp$5; $f._tmp$6 = _tmp$6; $f._tmp$7 = _tmp$7; $f._tmp$8 = _tmp$8; $f._tmp$9 = _tmp$9; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f._tuple$4 = _tuple$4; $f._tuple$5 = _tuple$5; $f.b = b; $f.cerr = cerr; $f.err = err; $f.err$1 = err$1; $f.err$2 = err$2; $f.err$3 = err$3; $f.fh = fh; $f.file = file; $f.filename = filename; $f.form = form; $f.hasContentTypeHeader = hasContentTypeHeader; $f.maxMemory = maxMemory; $f.maxValueBytes = maxValueBytes; $f.n = n; $f.n$1 = n$1; $f.name = name; $f.p = p; $f.r = r; $f.size = size; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
 85285  	};
 85286  	Reader.prototype.readForm = function(maxMemory) { return this.$val.readForm(maxMemory); };
 85287  	Form.ptr.prototype.RemoveAll = function() {
 85288  		var _entry, _i, _i$1, _keys, _ref, _ref$1, e, err, f, fh, fhs;
 85289  		f = this;
 85290  		err = $ifaceNil;
 85291  		_ref = f.File;
 85292  		_i = 0;
 85293  		_keys = $keys(_ref);
 85294  		while (true) {
 85295  			if (!(_i < _keys.length)) { break; }
 85296  			_entry = _ref[_keys[_i]];
 85297  			if (_entry === undefined) {
 85298  				_i++;
 85299  				continue;
 85300  			}
 85301  			fhs = _entry.v;
 85302  			_ref$1 = fhs;
 85303  			_i$1 = 0;
 85304  			while (true) {
 85305  				if (!(_i$1 < _ref$1.$length)) { break; }
 85306  				fh = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]);
 85307  				if (!(fh.tmpfile === "")) {
 85308  					e = os.Remove(fh.tmpfile);
 85309  					if (!($interfaceIsEqual(e, $ifaceNil)) && $interfaceIsEqual(err, $ifaceNil)) {
 85310  						err = e;
 85311  					}
 85312  				}
 85313  				_i$1++;
 85314  			}
 85315  			_i++;
 85316  		}
 85317  		return err;
 85318  	};
 85319  	Form.prototype.RemoveAll = function() { return this.$val.RemoveAll(); };
 85320  	FileHeader.ptr.prototype.Open = function() {
 85321  		var _r, _returncast, b, fh, r, x, $s, $r;
 85322  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _returncast = $f._returncast; b = $f.b; fh = $f.fh; r = $f.r; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 85323  		fh = this;
 85324  		b = fh.content;
 85325  		if (!(b === sliceType$1.nil)) {
 85326  			r = io.NewSectionReader(bytes.NewReader(b), new $Int64(0, 0), (new $Int64(0, b.$length)));
 85327  			$s = -1; return [(x = new sectionReadCloser.ptr(r), new x.constructor.elem(x)), $ifaceNil];
 85328  		}
 85329  		_r = os.Open(fh.tmpfile); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 85330  		_returncast = _r;
 85331  		$s = -1; return [_returncast[0], _returncast[1]];
 85332  		/* */ } return; } if ($f === undefined) { $f = { $blk: FileHeader.ptr.prototype.Open }; } $f._r = _r; $f._returncast = _returncast; $f.b = b; $f.fh = fh; $f.r = r; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
 85333  	};
 85334  	FileHeader.prototype.Open = function() { return this.$val.Open(); };
 85335  	sectionReadCloser.ptr.prototype.Close = function() {
 85336  		var rc;
 85337  		rc = this;
 85338  		return $ifaceNil;
 85339  	};
 85340  	sectionReadCloser.prototype.Close = function() { return this.$val.Close(); };
 85341  	Part.ptr.prototype.FormName = function() {
 85342  		var _entry, p, $s, $r;
 85343  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _entry = $f._entry; p = $f.p; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 85344  		p = this;
 85345  		/* */ if (p.dispositionParams === false) { $s = 1; continue; }
 85346  		/* */ $s = 2; continue;
 85347  		/* if (p.dispositionParams === false) { */ case 1:
 85348  			$r = p.parseContentDisposition(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 85349  		/* } */ case 2:
 85350  		if (!(p.disposition === "form-data")) {
 85351  			$s = -1; return "";
 85352  		}
 85353  		$s = -1; return (_entry = p.dispositionParams[$String.keyFor("name")], _entry !== undefined ? _entry.v : "");
 85354  		/* */ } return; } if ($f === undefined) { $f = { $blk: Part.ptr.prototype.FormName }; } $f._entry = _entry; $f.p = p; $f.$s = $s; $f.$r = $r; return $f;
 85355  	};
 85356  	Part.prototype.FormName = function() { return this.$val.FormName(); };
 85357  	Part.ptr.prototype.FileName = function() {
 85358  		var _entry, p, $s, $r;
 85359  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _entry = $f._entry; p = $f.p; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 85360  		p = this;
 85361  		/* */ if (p.dispositionParams === false) { $s = 1; continue; }
 85362  		/* */ $s = 2; continue;
 85363  		/* if (p.dispositionParams === false) { */ case 1:
 85364  			$r = p.parseContentDisposition(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 85365  		/* } */ case 2:
 85366  		$s = -1; return (_entry = p.dispositionParams[$String.keyFor("filename")], _entry !== undefined ? _entry.v : "");
 85367  		/* */ } return; } if ($f === undefined) { $f = { $blk: Part.ptr.prototype.FileName }; } $f._entry = _entry; $f.p = p; $f.$s = $s; $f.$r = $r; return $f;
 85368  	};
 85369  	Part.prototype.FileName = function() { return this.$val.FileName(); };
 85370  	Part.ptr.prototype.parseContentDisposition = function() {
 85371  		var _r, _tuple, err, p, v, $s, $r;
 85372  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; err = $f.err; p = $f.p; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 85373  		p = this;
 85374  		v = new textproto.MIMEHeader(p.Header).Get("Content-Disposition");
 85375  		err = $ifaceNil;
 85376  		_r = mime.ParseMediaType(v); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 85377  		_tuple = _r;
 85378  		p.disposition = _tuple[0];
 85379  		p.dispositionParams = _tuple[1];
 85380  		err = _tuple[2];
 85381  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 85382  			p.dispositionParams = emptyParams;
 85383  		}
 85384  		$s = -1; return;
 85385  		/* */ } return; } if ($f === undefined) { $f = { $blk: Part.ptr.prototype.parseContentDisposition }; } $f._r = _r; $f._tuple = _tuple; $f.err = err; $f.p = p; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
 85386  	};
 85387  	Part.prototype.parseContentDisposition = function() { return this.$val.parseContentDisposition(); };
 85388  	NewReader = function(r, boundary) {
 85389  		var b, boundary, r;
 85390  		b = (new sliceType$1($stringToBytes("\r\n--" + boundary + "--")));
 85391  		return new Reader.ptr(bufio.NewReaderSize(new stickyErrorReader.ptr(r, $ifaceNil), 4096), ptrType$3.nil, 0, $subslice(b, 0, 2), $subslice(b, 0, (b.$length - 2 >> 0)), $subslice(b, 2), $subslice(b, 2, (b.$length - 2 >> 0)));
 85392  	};
 85393  	$pkg.NewReader = NewReader;
 85394  	stickyErrorReader.ptr.prototype.Read = function(p) {
 85395  		var _, _r, _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, n, p, r, $s, $r;
 85396  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _ = $f._; _r = $f._r; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tuple = $f._tuple; n = $f.n; p = $f.p; r = $f.r; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 85397  		n = 0;
 85398  		_ = $ifaceNil;
 85399  		r = this;
 85400  		if (!($interfaceIsEqual(r.err, $ifaceNil))) {
 85401  			_tmp = 0;
 85402  			_tmp$1 = r.err;
 85403  			n = _tmp;
 85404  			_ = _tmp$1;
 85405  			$s = -1; return [n, _];
 85406  		}
 85407  		_r = r.r.Read(p); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 85408  		_tuple = _r;
 85409  		n = _tuple[0];
 85410  		r.err = _tuple[1];
 85411  		_tmp$2 = n;
 85412  		_tmp$3 = r.err;
 85413  		n = _tmp$2;
 85414  		_ = _tmp$3;
 85415  		$s = -1; return [n, _];
 85416  		/* */ } return; } if ($f === undefined) { $f = { $blk: stickyErrorReader.ptr.prototype.Read }; } $f._ = _; $f._r = _r; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tuple = _tuple; $f.n = n; $f.p = p; $f.r = r; $f.$s = $s; $f.$r = $r; return $f;
 85417  	};
 85418  	stickyErrorReader.prototype.Read = function(p) { return this.$val.Read(p); };
 85419  	newPart = function(mr) {
 85420  		var _r, bp, err, mr, x, $s, $r;
 85421  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; bp = $f.bp; err = $f.err; mr = $f.mr; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 85422  		bp = new Part.ptr({}, mr, "", false, $ifaceNil, 0, new $Int64(0, 0), $ifaceNil, $ifaceNil);
 85423  		_r = bp.populateHeaders(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 85424  		err = _r;
 85425  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 85426  			$s = -1; return [ptrType$3.nil, err];
 85427  		}
 85428  		bp.r = (x = new partReader.ptr(bp), new x.constructor.elem(x));
 85429  		if (new textproto.MIMEHeader(bp.Header).Get("Content-Transfer-Encoding") === "quoted-printable") {
 85430  			new textproto.MIMEHeader(bp.Header).Del("Content-Transfer-Encoding");
 85431  			bp.r = quotedprintable.NewReader(bp.r);
 85432  		}
 85433  		$s = -1; return [bp, $ifaceNil];
 85434  		/* */ } return; } if ($f === undefined) { $f = { $blk: newPart }; } $f._r = _r; $f.bp = bp; $f.err = err; $f.mr = mr; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
 85435  	};
 85436  	Part.ptr.prototype.populateHeaders = function() {
 85437  		var _r, _tuple, bp, err, header, r, $s, $r;
 85438  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; bp = $f.bp; err = $f.err; header = $f.header; r = $f.r; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 85439  		bp = this;
 85440  		r = textproto.NewReader(bp.mr.bufReader);
 85441  		_r = r.ReadMIMEHeader(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 85442  		_tuple = _r;
 85443  		header = _tuple[0];
 85444  		err = _tuple[1];
 85445  		if ($interfaceIsEqual(err, $ifaceNil)) {
 85446  			bp.Header = header;
 85447  		}
 85448  		$s = -1; return err;
 85449  		/* */ } return; } if ($f === undefined) { $f = { $blk: Part.ptr.prototype.populateHeaders }; } $f._r = _r; $f._tuple = _tuple; $f.bp = bp; $f.err = err; $f.header = header; $f.r = r; $f.$s = $s; $f.$r = $r; return $f;
 85450  	};
 85451  	Part.prototype.populateHeaders = function() { return this.$val.populateHeaders(); };
 85452  	Part.ptr.prototype.Read = function(d) {
 85453  		var _r, _tuple, d, err, n, p, $s, $r;
 85454  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; d = $f.d; err = $f.err; n = $f.n; p = $f.p; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 85455  		n = 0;
 85456  		err = $ifaceNil;
 85457  		p = this;
 85458  		_r = p.r.Read(d); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 85459  		_tuple = _r;
 85460  		n = _tuple[0];
 85461  		err = _tuple[1];
 85462  		$s = -1; return [n, err];
 85463  		/* */ } return; } if ($f === undefined) { $f = { $blk: Part.ptr.prototype.Read }; } $f._r = _r; $f._tuple = _tuple; $f.d = d; $f.err = err; $f.n = n; $f.p = p; $f.$s = $s; $f.$r = $r; return $f;
 85464  	};
 85465  	Part.prototype.Read = function(d) { return this.$val.Read(d); };
 85466  	partReader.ptr.prototype.Read = function(d) {
 85467  		var _r, _r$1, _r$2, _tuple, _tuple$1, _tuple$2, _tuple$3, br, d, n, p, peek, pr, x, x$1, $s, $r;
 85468  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; br = $f.br; d = $f.d; n = $f.n; p = $f.p; peek = $f.peek; pr = $f.pr; x = $f.x; x$1 = $f.x$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 85469  		pr = this;
 85470  		p = pr.p;
 85471  		br = p.mr.bufReader;
 85472  		/* while (true) { */ case 1:
 85473  			/* if (!((p.n === 0) && $interfaceIsEqual(p.err, $ifaceNil))) { break; } */ if(!((p.n === 0) && $interfaceIsEqual(p.err, $ifaceNil))) { $s = 2; continue; }
 85474  			_r = br.Peek(br.Buffered()); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 85475  			_tuple = _r;
 85476  			peek = _tuple[0];
 85477  			_tuple$1 = scanUntilBoundary(peek, p.mr.dashBoundary, p.mr.nlDashBoundary, p.total, p.readErr);
 85478  			p.n = _tuple$1[0];
 85479  			p.err = _tuple$1[1];
 85480  			/* */ if ((p.n === 0) && $interfaceIsEqual(p.err, $ifaceNil)) { $s = 4; continue; }
 85481  			/* */ $s = 5; continue;
 85482  			/* if ((p.n === 0) && $interfaceIsEqual(p.err, $ifaceNil)) { */ case 4:
 85483  				_r$1 = br.Peek(peek.$length + 1 >> 0); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 85484  				_tuple$2 = _r$1;
 85485  				p.readErr = _tuple$2[1];
 85486  				if ($interfaceIsEqual(p.readErr, io.EOF)) {
 85487  					p.readErr = io.ErrUnexpectedEOF;
 85488  				}
 85489  			/* } */ case 5:
 85490  		/* } */ $s = 1; continue; case 2:
 85491  		if (p.n === 0) {
 85492  			$s = -1; return [0, p.err];
 85493  		}
 85494  		n = d.$length;
 85495  		if (n > p.n) {
 85496  			n = p.n;
 85497  		}
 85498  		_r$2 = br.Read($subslice(d, 0, n)); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 85499  		_tuple$3 = _r$2;
 85500  		n = _tuple$3[0];
 85501  		p.total = (x = p.total, x$1 = (new $Int64(0, n)), new $Int64(x.$high + x$1.$high, x.$low + x$1.$low));
 85502  		p.n = p.n - (n) >> 0;
 85503  		if (p.n === 0) {
 85504  			$s = -1; return [n, p.err];
 85505  		}
 85506  		$s = -1; return [n, $ifaceNil];
 85507  		/* */ } return; } if ($f === undefined) { $f = { $blk: partReader.ptr.prototype.Read }; } $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f.br = br; $f.d = d; $f.n = n; $f.p = p; $f.peek = peek; $f.pr = pr; $f.x = x; $f.x$1 = x$1; $f.$s = $s; $f.$r = $r; return $f;
 85508  	};
 85509  	partReader.prototype.Read = function(d) { return this.$val.Read(d); };
 85510  	scanUntilBoundary = function(buf, dashBoundary, nlDashBoundary, total, readErr) {
 85511  		var _1, _2, buf, dashBoundary, i, i$1, nlDashBoundary, readErr, total;
 85512  		if ((total.$high === 0 && total.$low === 0)) {
 85513  			if (bytes.HasPrefix(buf, dashBoundary)) {
 85514  				_1 = matchAfterPrefix(buf, dashBoundary, readErr);
 85515  				if (_1 === (-1)) {
 85516  					return [dashBoundary.$length, $ifaceNil];
 85517  				} else if (_1 === (0)) {
 85518  					return [0, $ifaceNil];
 85519  				} else if (_1 === (1)) {
 85520  					return [0, io.EOF];
 85521  				}
 85522  			}
 85523  			if (bytes.HasPrefix(dashBoundary, buf)) {
 85524  				return [0, readErr];
 85525  			}
 85526  		}
 85527  		i = bytes.Index(buf, nlDashBoundary);
 85528  		if (i >= 0) {
 85529  			_2 = matchAfterPrefix($subslice(buf, i), nlDashBoundary, readErr);
 85530  			if (_2 === (-1)) {
 85531  				return [i + nlDashBoundary.$length >> 0, $ifaceNil];
 85532  			} else if (_2 === (0)) {
 85533  				return [i, $ifaceNil];
 85534  			} else if (_2 === (1)) {
 85535  				return [i, io.EOF];
 85536  			}
 85537  		}
 85538  		if (bytes.HasPrefix(nlDashBoundary, buf)) {
 85539  			return [0, readErr];
 85540  		}
 85541  		i$1 = bytes.LastIndexByte(buf, (0 >= nlDashBoundary.$length ? ($throwRuntimeError("index out of range"), undefined) : nlDashBoundary.$array[nlDashBoundary.$offset + 0]));
 85542  		if (i$1 >= 0 && bytes.HasPrefix(nlDashBoundary, $subslice(buf, i$1))) {
 85543  			return [i$1, $ifaceNil];
 85544  		}
 85545  		return [buf.$length, readErr];
 85546  	};
 85547  	matchAfterPrefix = function(buf, prefix, readErr) {
 85548  		var buf, c, prefix, readErr, x;
 85549  		if (buf.$length === prefix.$length) {
 85550  			if (!($interfaceIsEqual(readErr, $ifaceNil))) {
 85551  				return 1;
 85552  			}
 85553  			return 0;
 85554  		}
 85555  		c = (x = prefix.$length, ((x < 0 || x >= buf.$length) ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + x]));
 85556  		if ((c === 32) || (c === 9) || (c === 13) || (c === 10) || (c === 45)) {
 85557  			return 1;
 85558  		}
 85559  		return -1;
 85560  	};
 85561  	Part.ptr.prototype.Close = function() {
 85562  		var _r, p, $s, $r;
 85563  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; p = $f.p; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 85564  		p = this;
 85565  		_r = io.Copy(ioutil.Discard, p); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 85566  		_r;
 85567  		$s = -1; return $ifaceNil;
 85568  		/* */ } return; } if ($f === undefined) { $f = { $blk: Part.ptr.prototype.Close }; } $f._r = _r; $f.p = p; $f.$s = $s; $f.$r = $r; return $f;
 85569  	};
 85570  	Part.prototype.Close = function() { return this.$val.Close(); };
 85571  	Reader.ptr.prototype.NextPart = function() {
 85572  		var _r, _r$1, _r$2, _r$3, _r$4, _r$5, _tuple, _tuple$1, bp, err, err$1, expectNewPart, line, r, $s, $r;
 85573  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; bp = $f.bp; err = $f.err; err$1 = $f.err$1; expectNewPart = $f.expectNewPart; line = $f.line; r = $f.r; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 85574  		r = this;
 85575  		/* */ if (!(r.currentPart === ptrType$3.nil)) { $s = 1; continue; }
 85576  		/* */ $s = 2; continue;
 85577  		/* if (!(r.currentPart === ptrType$3.nil)) { */ case 1:
 85578  			_r = r.currentPart.Close(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 85579  			_r;
 85580  		/* } */ case 2:
 85581  		expectNewPart = false;
 85582  		/* while (true) { */ case 4:
 85583  			_r$1 = r.bufReader.ReadSlice(10); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 85584  			_tuple = _r$1;
 85585  			line = _tuple[0];
 85586  			err = _tuple[1];
 85587  			if ($interfaceIsEqual(err, io.EOF) && r.isFinalBoundary(line)) {
 85588  				$s = -1; return [ptrType$3.nil, io.EOF];
 85589  			}
 85590  			/* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 7; continue; }
 85591  			/* */ $s = 8; continue;
 85592  			/* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 7:
 85593  				_r$2 = fmt.Errorf("multipart: NextPart: %v", new sliceType$4([err])); /* */ $s = 9; case 9: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 85594  				$s = -1; return [ptrType$3.nil, _r$2];
 85595  			/* } */ case 8:
 85596  			/* */ if (r.isBoundaryDelimiterLine(line)) { $s = 10; continue; }
 85597  			/* */ $s = 11; continue;
 85598  			/* if (r.isBoundaryDelimiterLine(line)) { */ case 10:
 85599  				r.partsRead = r.partsRead + (1) >> 0;
 85600  				_r$3 = newPart(r); /* */ $s = 12; case 12: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 85601  				_tuple$1 = _r$3;
 85602  				bp = _tuple$1[0];
 85603  				err$1 = _tuple$1[1];
 85604  				if (!($interfaceIsEqual(err$1, $ifaceNil))) {
 85605  					$s = -1; return [ptrType$3.nil, err$1];
 85606  				}
 85607  				r.currentPart = bp;
 85608  				$s = -1; return [bp, $ifaceNil];
 85609  			/* } */ case 11:
 85610  			if (r.isFinalBoundary(line)) {
 85611  				$s = -1; return [ptrType$3.nil, io.EOF];
 85612  			}
 85613  			/* */ if (expectNewPart) { $s = 13; continue; }
 85614  			/* */ $s = 14; continue;
 85615  			/* if (expectNewPart) { */ case 13:
 85616  				_r$4 = fmt.Errorf("multipart: expecting a new Part; got line %q", new sliceType$4([new $String(($bytesToString(line)))])); /* */ $s = 15; case 15: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 85617  				$s = -1; return [ptrType$3.nil, _r$4];
 85618  			/* } */ case 14:
 85619  			/* */ if (r.partsRead === 0) { $s = 16; continue; }
 85620  			/* */ $s = 17; continue;
 85621  			/* if (r.partsRead === 0) { */ case 16:
 85622  				/* continue; */ $s = 4; continue;
 85623  			/* } */ case 17:
 85624  			/* */ if (bytes.Equal(line, r.nl)) { $s = 18; continue; }
 85625  			/* */ $s = 19; continue;
 85626  			/* if (bytes.Equal(line, r.nl)) { */ case 18:
 85627  				expectNewPart = true;
 85628  				/* continue; */ $s = 4; continue;
 85629  			/* } */ case 19:
 85630  			_r$5 = fmt.Errorf("multipart: unexpected line in Next(): %q", new sliceType$4([line])); /* */ $s = 20; case 20: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
 85631  			$s = -1; return [ptrType$3.nil, _r$5];
 85632  		/* } */ $s = 4; continue; case 5:
 85633  		$s = -1; return [ptrType$3.nil, $ifaceNil];
 85634  		/* */ } return; } if ($f === undefined) { $f = { $blk: Reader.ptr.prototype.NextPart }; } $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.bp = bp; $f.err = err; $f.err$1 = err$1; $f.expectNewPart = expectNewPart; $f.line = line; $f.r = r; $f.$s = $s; $f.$r = $r; return $f;
 85635  	};
 85636  	Reader.prototype.NextPart = function() { return this.$val.NextPart(); };
 85637  	Reader.ptr.prototype.isFinalBoundary = function(line) {
 85638  		var line, mr, rest;
 85639  		mr = this;
 85640  		if (!bytes.HasPrefix(line, mr.dashBoundaryDash)) {
 85641  			return false;
 85642  		}
 85643  		rest = $subslice(line, mr.dashBoundaryDash.$length);
 85644  		rest = skipLWSPChar(rest);
 85645  		return (rest.$length === 0) || bytes.Equal(rest, mr.nl);
 85646  	};
 85647  	Reader.prototype.isFinalBoundary = function(line) { return this.$val.isFinalBoundary(line); };
 85648  	Reader.ptr.prototype.isBoundaryDelimiterLine = function(line) {
 85649  		var line, mr, rest, ret;
 85650  		ret = false;
 85651  		mr = this;
 85652  		if (!bytes.HasPrefix(line, mr.dashBoundary)) {
 85653  			ret = false;
 85654  			return ret;
 85655  		}
 85656  		rest = $subslice(line, mr.dashBoundary.$length);
 85657  		rest = skipLWSPChar(rest);
 85658  		if ((mr.partsRead === 0) && (rest.$length === 1) && ((0 >= rest.$length ? ($throwRuntimeError("index out of range"), undefined) : rest.$array[rest.$offset + 0]) === 10)) {
 85659  			mr.nl = $subslice(mr.nl, 1);
 85660  			mr.nlDashBoundary = $subslice(mr.nlDashBoundary, 1);
 85661  		}
 85662  		ret = bytes.Equal(rest, mr.nl);
 85663  		return ret;
 85664  	};
 85665  	Reader.prototype.isBoundaryDelimiterLine = function(line) { return this.$val.isBoundaryDelimiterLine(line); };
 85666  	skipLWSPChar = function(b) {
 85667  		var b;
 85668  		while (true) {
 85669  			if (!(b.$length > 0 && (((0 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 0]) === 32) || ((0 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 0]) === 9)))) { break; }
 85670  			b = $subslice(b, 1);
 85671  		}
 85672  		return b;
 85673  	};
 85674  	ptrType.methods = [{prop: "RemoveAll", name: "RemoveAll", pkg: "", typ: $funcType([], [$error], false)}];
 85675  	ptrType$1.methods = [{prop: "Open", name: "Open", pkg: "", typ: $funcType([], [File, $error], false)}];
 85676  	sectionReadCloser.methods = [{prop: "Close", name: "Close", pkg: "", typ: $funcType([], [$error], false)}];
 85677  	ptrType$3.methods = [{prop: "FormName", name: "FormName", pkg: "", typ: $funcType([], [$String], false)}, {prop: "FileName", name: "FileName", pkg: "", typ: $funcType([], [$String], false)}, {prop: "parseContentDisposition", name: "parseContentDisposition", pkg: "mime/multipart", typ: $funcType([], [], false)}, {prop: "populateHeaders", name: "populateHeaders", pkg: "mime/multipart", typ: $funcType([], [$error], false)}, {prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType$1], [$Int, $error], false)}, {prop: "Close", name: "Close", pkg: "", typ: $funcType([], [$error], false)}];
 85678  	ptrType$8.methods = [{prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType$1], [$Int, $error], false)}];
 85679  	partReader.methods = [{prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType$1], [$Int, $error], false)}];
 85680  	ptrType$4.methods = [{prop: "ReadForm", name: "ReadForm", pkg: "", typ: $funcType([$Int64], [ptrType, $error], false)}, {prop: "readForm", name: "readForm", pkg: "mime/multipart", typ: $funcType([$Int64], [ptrType, $error], false)}, {prop: "NextPart", name: "NextPart", pkg: "", typ: $funcType([], [ptrType$3, $error], false)}, {prop: "isFinalBoundary", name: "isFinalBoundary", pkg: "mime/multipart", typ: $funcType([sliceType$1], [$Bool], false)}, {prop: "isBoundaryDelimiterLine", name: "isBoundaryDelimiterLine", pkg: "mime/multipart", typ: $funcType([sliceType$1], [$Bool], false)}];
 85681  	Form.init("", [{prop: "Value", name: "Value", anonymous: false, exported: true, typ: mapType, tag: ""}, {prop: "File", name: "File", anonymous: false, exported: true, typ: mapType$1, tag: ""}]);
 85682  	FileHeader.init("mime/multipart", [{prop: "Filename", name: "Filename", anonymous: false, exported: true, typ: $String, tag: ""}, {prop: "Header", name: "Header", anonymous: false, exported: true, typ: textproto.MIMEHeader, tag: ""}, {prop: "Size", name: "Size", anonymous: false, exported: true, typ: $Int64, tag: ""}, {prop: "content", name: "content", anonymous: false, exported: false, typ: sliceType$1, tag: ""}, {prop: "tmpfile", name: "tmpfile", anonymous: false, exported: false, typ: $String, tag: ""}]);
 85683  	File.init([{prop: "Close", name: "Close", pkg: "", typ: $funcType([], [$error], false)}, {prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType$1], [$Int, $error], false)}, {prop: "ReadAt", name: "ReadAt", pkg: "", typ: $funcType([sliceType$1, $Int64], [$Int, $error], false)}, {prop: "Seek", name: "Seek", pkg: "", typ: $funcType([$Int64, $Int], [$Int64, $error], false)}]);
 85684  	sectionReadCloser.init("", [{prop: "SectionReader", name: "SectionReader", anonymous: true, exported: true, typ: ptrType$7, tag: ""}]);
 85685  	Part.init("mime/multipart", [{prop: "Header", name: "Header", anonymous: false, exported: true, typ: textproto.MIMEHeader, tag: ""}, {prop: "mr", name: "mr", anonymous: false, exported: false, typ: ptrType$4, tag: ""}, {prop: "disposition", name: "disposition", anonymous: false, exported: false, typ: $String, tag: ""}, {prop: "dispositionParams", name: "dispositionParams", anonymous: false, exported: false, typ: mapType$2, tag: ""}, {prop: "r", name: "r", anonymous: false, exported: false, typ: io.Reader, tag: ""}, {prop: "n", name: "n", anonymous: false, exported: false, typ: $Int, tag: ""}, {prop: "total", name: "total", anonymous: false, exported: false, typ: $Int64, tag: ""}, {prop: "err", name: "err", anonymous: false, exported: false, typ: $error, tag: ""}, {prop: "readErr", name: "readErr", anonymous: false, exported: false, typ: $error, tag: ""}]);
 85686  	stickyErrorReader.init("mime/multipart", [{prop: "r", name: "r", anonymous: false, exported: false, typ: io.Reader, tag: ""}, {prop: "err", name: "err", anonymous: false, exported: false, typ: $error, tag: ""}]);
 85687  	partReader.init("mime/multipart", [{prop: "p", name: "p", anonymous: false, exported: false, typ: ptrType$3, tag: ""}]);
 85688  	Reader.init("mime/multipart", [{prop: "bufReader", name: "bufReader", anonymous: false, exported: false, typ: ptrType$2, tag: ""}, {prop: "currentPart", name: "currentPart", anonymous: false, exported: false, typ: ptrType$3, tag: ""}, {prop: "partsRead", name: "partsRead", anonymous: false, exported: false, typ: $Int, tag: ""}, {prop: "nl", name: "nl", anonymous: false, exported: false, typ: sliceType$1, tag: ""}, {prop: "nlDashBoundary", name: "nlDashBoundary", anonymous: false, exported: false, typ: sliceType$1, tag: ""}, {prop: "dashBoundaryDash", name: "dashBoundaryDash", anonymous: false, exported: false, typ: sliceType$1, tag: ""}, {prop: "dashBoundary", name: "dashBoundary", anonymous: false, exported: false, typ: sliceType$1, tag: ""}]);
 85689  	$init = function() {
 85690  		$pkg.$init = function() {};
 85691  		/* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 85692  		$r = bufio.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 85693  		$r = bytes.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 85694  		$r = rand.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 85695  		$r = errors.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 85696  		$r = fmt.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 85697  		$r = io.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 85698  		$r = ioutil.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 85699  		$r = mime.$init(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 85700  		$r = quotedprintable.$init(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 85701  		$r = textproto.$init(); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 85702  		$r = os.$init(); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 85703  		$r = sort.$init(); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 85704  		$r = strings.$init(); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 85705  		$pkg.ErrMessageTooLarge = errors.New("multipart: message too large");
 85706  		emptyParams = {};
 85707  		quoteEscaper = strings.NewReplacer(new sliceType(["\\", "\\\\", "\"", "\\\""]));
 85708  		/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
 85709  	};
 85710  	$pkg.$init = $init;
 85711  	return $pkg;
 85712  })();
 85713  $packages["net/http/httptrace"] = (function() {
 85714  	var $pkg = {}, $init, context, tls, nettrace, net, reflect, time, clientEventContextKey, ClientTrace, WroteRequestInfo, DNSStartInfo, DNSDoneInfo, GotConnInfo, ptrType, sliceType, funcType, funcType$1, funcType$2, funcType$3, funcType$4, funcType$5, funcType$6, funcType$7, funcType$8, funcType$9, ContextClientTrace;
 85715  	context = $packages["context"];
 85716  	tls = $packages["crypto/tls"];
 85717  	nettrace = $packages["internal/nettrace"];
 85718  	net = $packages["net"];
 85719  	reflect = $packages["reflect"];
 85720  	time = $packages["time"];
 85721  	clientEventContextKey = $pkg.clientEventContextKey = $newType(0, $kindStruct, "httptrace.clientEventContextKey", true, "net/http/httptrace", false, function() {
 85722  		this.$val = this;
 85723  		if (arguments.length === 0) {
 85724  			return;
 85725  		}
 85726  	});
 85727  	ClientTrace = $pkg.ClientTrace = $newType(0, $kindStruct, "httptrace.ClientTrace", true, "net/http/httptrace", true, function(GetConn_, GotConn_, PutIdleConn_, GotFirstResponseByte_, Got100Continue_, DNSStart_, DNSDone_, ConnectStart_, ConnectDone_, TLSHandshakeStart_, TLSHandshakeDone_, WroteHeaders_, Wait100Continue_, WroteRequest_) {
 85728  		this.$val = this;
 85729  		if (arguments.length === 0) {
 85730  			this.GetConn = $throwNilPointerError;
 85731  			this.GotConn = $throwNilPointerError;
 85732  			this.PutIdleConn = $throwNilPointerError;
 85733  			this.GotFirstResponseByte = $throwNilPointerError;
 85734  			this.Got100Continue = $throwNilPointerError;
 85735  			this.DNSStart = $throwNilPointerError;
 85736  			this.DNSDone = $throwNilPointerError;
 85737  			this.ConnectStart = $throwNilPointerError;
 85738  			this.ConnectDone = $throwNilPointerError;
 85739  			this.TLSHandshakeStart = $throwNilPointerError;
 85740  			this.TLSHandshakeDone = $throwNilPointerError;
 85741  			this.WroteHeaders = $throwNilPointerError;
 85742  			this.Wait100Continue = $throwNilPointerError;
 85743  			this.WroteRequest = $throwNilPointerError;
 85744  			return;
 85745  		}
 85746  		this.GetConn = GetConn_;
 85747  		this.GotConn = GotConn_;
 85748  		this.PutIdleConn = PutIdleConn_;
 85749  		this.GotFirstResponseByte = GotFirstResponseByte_;
 85750  		this.Got100Continue = Got100Continue_;
 85751  		this.DNSStart = DNSStart_;
 85752  		this.DNSDone = DNSDone_;
 85753  		this.ConnectStart = ConnectStart_;
 85754  		this.ConnectDone = ConnectDone_;
 85755  		this.TLSHandshakeStart = TLSHandshakeStart_;
 85756  		this.TLSHandshakeDone = TLSHandshakeDone_;
 85757  		this.WroteHeaders = WroteHeaders_;
 85758  		this.Wait100Continue = Wait100Continue_;
 85759  		this.WroteRequest = WroteRequest_;
 85760  	});
 85761  	WroteRequestInfo = $pkg.WroteRequestInfo = $newType(0, $kindStruct, "httptrace.WroteRequestInfo", true, "net/http/httptrace", true, function(Err_) {
 85762  		this.$val = this;
 85763  		if (arguments.length === 0) {
 85764  			this.Err = $ifaceNil;
 85765  			return;
 85766  		}
 85767  		this.Err = Err_;
 85768  	});
 85769  	DNSStartInfo = $pkg.DNSStartInfo = $newType(0, $kindStruct, "httptrace.DNSStartInfo", true, "net/http/httptrace", true, function(Host_) {
 85770  		this.$val = this;
 85771  		if (arguments.length === 0) {
 85772  			this.Host = "";
 85773  			return;
 85774  		}
 85775  		this.Host = Host_;
 85776  	});
 85777  	DNSDoneInfo = $pkg.DNSDoneInfo = $newType(0, $kindStruct, "httptrace.DNSDoneInfo", true, "net/http/httptrace", true, function(Addrs_, Err_, Coalesced_) {
 85778  		this.$val = this;
 85779  		if (arguments.length === 0) {
 85780  			this.Addrs = sliceType.nil;
 85781  			this.Err = $ifaceNil;
 85782  			this.Coalesced = false;
 85783  			return;
 85784  		}
 85785  		this.Addrs = Addrs_;
 85786  		this.Err = Err_;
 85787  		this.Coalesced = Coalesced_;
 85788  	});
 85789  	GotConnInfo = $pkg.GotConnInfo = $newType(0, $kindStruct, "httptrace.GotConnInfo", true, "net/http/httptrace", true, function(Conn_, Reused_, WasIdle_, IdleTime_) {
 85790  		this.$val = this;
 85791  		if (arguments.length === 0) {
 85792  			this.Conn = $ifaceNil;
 85793  			this.Reused = false;
 85794  			this.WasIdle = false;
 85795  			this.IdleTime = new time.Duration(0, 0);
 85796  			return;
 85797  		}
 85798  		this.Conn = Conn_;
 85799  		this.Reused = Reused_;
 85800  		this.WasIdle = WasIdle_;
 85801  		this.IdleTime = IdleTime_;
 85802  	});
 85803  	ptrType = $ptrType(ClientTrace);
 85804  	sliceType = $sliceType(net.IPAddr);
 85805  	funcType = $funcType([$String], [], false);
 85806  	funcType$1 = $funcType([GotConnInfo], [], false);
 85807  	funcType$2 = $funcType([$error], [], false);
 85808  	funcType$3 = $funcType([], [], false);
 85809  	funcType$4 = $funcType([DNSStartInfo], [], false);
 85810  	funcType$5 = $funcType([DNSDoneInfo], [], false);
 85811  	funcType$6 = $funcType([$String, $String], [], false);
 85812  	funcType$7 = $funcType([$String, $String, $error], [], false);
 85813  	funcType$8 = $funcType([tls.ConnectionState, $error], [], false);
 85814  	funcType$9 = $funcType([WroteRequestInfo], [], false);
 85815  	ContextClientTrace = function(ctx) {
 85816  		var _r, _tuple, ctx, trace, x, $s, $r;
 85817  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; ctx = $f.ctx; trace = $f.trace; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 85818  		_r = ctx.Value((x = new clientEventContextKey.ptr(), new x.constructor.elem(x))); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 85819  		_tuple = $assertType(_r, ptrType, true);
 85820  		trace = _tuple[0];
 85821  		$s = -1; return trace;
 85822  		/* */ } return; } if ($f === undefined) { $f = { $blk: ContextClientTrace }; } $f._r = _r; $f._tuple = _tuple; $f.ctx = ctx; $f.trace = trace; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
 85823  	};
 85824  	$pkg.ContextClientTrace = ContextClientTrace;
 85825  	ptrType.methods = [{prop: "compose", name: "compose", pkg: "net/http/httptrace", typ: $funcType([ptrType], [], false)}, {prop: "hasNetHooks", name: "hasNetHooks", pkg: "net/http/httptrace", typ: $funcType([], [$Bool], false)}];
 85826  	clientEventContextKey.init("", []);
 85827  	ClientTrace.init("", [{prop: "GetConn", name: "GetConn", anonymous: false, exported: true, typ: funcType, tag: ""}, {prop: "GotConn", name: "GotConn", anonymous: false, exported: true, typ: funcType$1, tag: ""}, {prop: "PutIdleConn", name: "PutIdleConn", anonymous: false, exported: true, typ: funcType$2, tag: ""}, {prop: "GotFirstResponseByte", name: "GotFirstResponseByte", anonymous: false, exported: true, typ: funcType$3, tag: ""}, {prop: "Got100Continue", name: "Got100Continue", anonymous: false, exported: true, typ: funcType$3, tag: ""}, {prop: "DNSStart", name: "DNSStart", anonymous: false, exported: true, typ: funcType$4, tag: ""}, {prop: "DNSDone", name: "DNSDone", anonymous: false, exported: true, typ: funcType$5, tag: ""}, {prop: "ConnectStart", name: "ConnectStart", anonymous: false, exported: true, typ: funcType$6, tag: ""}, {prop: "ConnectDone", name: "ConnectDone", anonymous: false, exported: true, typ: funcType$7, tag: ""}, {prop: "TLSHandshakeStart", name: "TLSHandshakeStart", anonymous: false, exported: true, typ: funcType$3, tag: ""}, {prop: "TLSHandshakeDone", name: "TLSHandshakeDone", anonymous: false, exported: true, typ: funcType$8, tag: ""}, {prop: "WroteHeaders", name: "WroteHeaders", anonymous: false, exported: true, typ: funcType$3, tag: ""}, {prop: "Wait100Continue", name: "Wait100Continue", anonymous: false, exported: true, typ: funcType$3, tag: ""}, {prop: "WroteRequest", name: "WroteRequest", anonymous: false, exported: true, typ: funcType$9, tag: ""}]);
 85828  	WroteRequestInfo.init("", [{prop: "Err", name: "Err", anonymous: false, exported: true, typ: $error, tag: ""}]);
 85829  	DNSStartInfo.init("", [{prop: "Host", name: "Host", anonymous: false, exported: true, typ: $String, tag: ""}]);
 85830  	DNSDoneInfo.init("", [{prop: "Addrs", name: "Addrs", anonymous: false, exported: true, typ: sliceType, tag: ""}, {prop: "Err", name: "Err", anonymous: false, exported: true, typ: $error, tag: ""}, {prop: "Coalesced", name: "Coalesced", anonymous: false, exported: true, typ: $Bool, tag: ""}]);
 85831  	GotConnInfo.init("", [{prop: "Conn", name: "Conn", anonymous: false, exported: true, typ: net.Conn, tag: ""}, {prop: "Reused", name: "Reused", anonymous: false, exported: true, typ: $Bool, tag: ""}, {prop: "WasIdle", name: "WasIdle", anonymous: false, exported: true, typ: $Bool, tag: ""}, {prop: "IdleTime", name: "IdleTime", anonymous: false, exported: true, typ: time.Duration, tag: ""}]);
 85832  	$init = function() {
 85833  		$pkg.$init = function() {};
 85834  		/* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 85835  		$r = context.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 85836  		$r = tls.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 85837  		$r = nettrace.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 85838  		$r = net.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 85839  		$r = reflect.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 85840  		$r = time.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 85841  		/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
 85842  	};
 85843  	$pkg.$init = $init;
 85844  	return $pkg;
 85845  })();
 85846  $packages["net/http/internal"] = (function() {
 85847  	var $pkg = {}, $init, bufio, bytes, errors, fmt, io, chunkedReader, chunkedWriter, FlushAfterChunkWriter, sliceType, ptrType, arrayType, sliceType$1, ptrType$1, ptrType$2, ptrType$3, ptrType$4, NewChunkedReader, readChunkLine, trimTrailingWhitespace, isASCIISpace, removeChunkExtension, NewChunkedWriter, parseHexUint;
 85848  	bufio = $packages["bufio"];
 85849  	bytes = $packages["bytes"];
 85850  	errors = $packages["errors"];
 85851  	fmt = $packages["fmt"];
 85852  	io = $packages["io"];
 85853  	chunkedReader = $pkg.chunkedReader = $newType(0, $kindStruct, "internal.chunkedReader", true, "net/http/internal", false, function(r_, n_, err_, buf_, checkEnd_) {
 85854  		this.$val = this;
 85855  		if (arguments.length === 0) {
 85856  			this.r = ptrType.nil;
 85857  			this.n = new $Uint64(0, 0);
 85858  			this.err = $ifaceNil;
 85859  			this.buf = arrayType.zero();
 85860  			this.checkEnd = false;
 85861  			return;
 85862  		}
 85863  		this.r = r_;
 85864  		this.n = n_;
 85865  		this.err = err_;
 85866  		this.buf = buf_;
 85867  		this.checkEnd = checkEnd_;
 85868  	});
 85869  	chunkedWriter = $pkg.chunkedWriter = $newType(0, $kindStruct, "internal.chunkedWriter", true, "net/http/internal", false, function(Wire_) {
 85870  		this.$val = this;
 85871  		if (arguments.length === 0) {
 85872  			this.Wire = $ifaceNil;
 85873  			return;
 85874  		}
 85875  		this.Wire = Wire_;
 85876  	});
 85877  	FlushAfterChunkWriter = $pkg.FlushAfterChunkWriter = $newType(0, $kindStruct, "internal.FlushAfterChunkWriter", true, "net/http/internal", true, function(Writer_) {
 85878  		this.$val = this;
 85879  		if (arguments.length === 0) {
 85880  			this.Writer = ptrType$4.nil;
 85881  			return;
 85882  		}
 85883  		this.Writer = Writer_;
 85884  	});
 85885  	sliceType = $sliceType($Uint8);
 85886  	ptrType = $ptrType(bufio.Reader);
 85887  	arrayType = $arrayType($Uint8, 2);
 85888  	sliceType$1 = $sliceType($emptyInterface);
 85889  	ptrType$1 = $ptrType(FlushAfterChunkWriter);
 85890  	ptrType$2 = $ptrType(chunkedReader);
 85891  	ptrType$3 = $ptrType(chunkedWriter);
 85892  	ptrType$4 = $ptrType(bufio.Writer);
 85893  	NewChunkedReader = function(r) {
 85894  		var _tuple, br, ok, r;
 85895  		_tuple = $assertType(r, ptrType, true);
 85896  		br = _tuple[0];
 85897  		ok = _tuple[1];
 85898  		if (!ok) {
 85899  			br = bufio.NewReader(r);
 85900  		}
 85901  		return new chunkedReader.ptr(br, new $Uint64(0, 0), $ifaceNil, arrayType.zero(), false);
 85902  	};
 85903  	$pkg.NewChunkedReader = NewChunkedReader;
 85904  	chunkedReader.ptr.prototype.beginChunk = function() {
 85905  		var _r, _tuple, _tuple$1, cr, line, x, $s, $r;
 85906  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; cr = $f.cr; line = $f.line; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 85907  		cr = this;
 85908  		line = sliceType.nil;
 85909  		_r = readChunkLine(cr.r); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 85910  		_tuple = _r;
 85911  		line = _tuple[0];
 85912  		cr.err = _tuple[1];
 85913  		if (!($interfaceIsEqual(cr.err, $ifaceNil))) {
 85914  			$s = -1; return;
 85915  		}
 85916  		_tuple$1 = parseHexUint(line);
 85917  		cr.n = _tuple$1[0];
 85918  		cr.err = _tuple$1[1];
 85919  		if (!($interfaceIsEqual(cr.err, $ifaceNil))) {
 85920  			$s = -1; return;
 85921  		}
 85922  		if ((x = cr.n, (x.$high === 0 && x.$low === 0))) {
 85923  			cr.err = io.EOF;
 85924  		}
 85925  		$s = -1; return;
 85926  		/* */ } return; } if ($f === undefined) { $f = { $blk: chunkedReader.ptr.prototype.beginChunk }; } $f._r = _r; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.cr = cr; $f.line = line; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
 85927  	};
 85928  	chunkedReader.prototype.beginChunk = function() { return this.$val.beginChunk(); };
 85929  	chunkedReader.ptr.prototype.chunkHeaderAvailable = function() {
 85930  		var _r, _tuple, cr, n, peek, $s, $r;
 85931  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; cr = $f.cr; n = $f.n; peek = $f.peek; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 85932  		cr = this;
 85933  		n = cr.r.Buffered();
 85934  		/* */ if (n > 0) { $s = 1; continue; }
 85935  		/* */ $s = 2; continue;
 85936  		/* if (n > 0) { */ case 1:
 85937  			_r = cr.r.Peek(n); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 85938  			_tuple = _r;
 85939  			peek = _tuple[0];
 85940  			$s = -1; return bytes.IndexByte(peek, 10) >= 0;
 85941  		/* } */ case 2:
 85942  		$s = -1; return false;
 85943  		/* */ } return; } if ($f === undefined) { $f = { $blk: chunkedReader.ptr.prototype.chunkHeaderAvailable }; } $f._r = _r; $f._tuple = _tuple; $f.cr = cr; $f.n = n; $f.peek = peek; $f.$s = $s; $f.$r = $r; return $f;
 85944  	};
 85945  	chunkedReader.prototype.chunkHeaderAvailable = function() { return this.$val.chunkHeaderAvailable(); };
 85946  	chunkedReader.ptr.prototype.Read = function(b) {
 85947  		var _r, _r$1, _r$2, _tmp, _tmp$1, _tuple, _tuple$1, _v, b, cr, err, n, n0, rbuf, x, x$1, x$2, x$3, x$4, x$5, $s, $r;
 85948  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _v = $f._v; b = $f.b; cr = $f.cr; err = $f.err; n = $f.n; n0 = $f.n0; rbuf = $f.rbuf; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; x$3 = $f.x$3; x$4 = $f.x$4; x$5 = $f.x$5; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 85949  		n = 0;
 85950  		err = $ifaceNil;
 85951  		cr = this;
 85952  		/* while (true) { */ case 1:
 85953  			/* if (!($interfaceIsEqual(cr.err, $ifaceNil))) { break; } */ if(!($interfaceIsEqual(cr.err, $ifaceNil))) { $s = 2; continue; }
 85954  			/* */ if (cr.checkEnd) { $s = 3; continue; }
 85955  			/* */ $s = 4; continue;
 85956  			/* if (cr.checkEnd) { */ case 3:
 85957  				if (n > 0 && cr.r.Buffered() < 2) {
 85958  					/* break; */ $s = 2; continue;
 85959  				}
 85960  				_r = io.ReadFull(cr.r, $subslice(new sliceType(cr.buf), 0, 2)); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 85961  				_tuple = _r;
 85962  				cr.err = _tuple[1];
 85963  				if ($interfaceIsEqual(cr.err, $ifaceNil)) {
 85964  					if (!(($bytesToString(new sliceType(cr.buf))) === "\r\n")) {
 85965  						cr.err = errors.New("malformed chunked encoding");
 85966  						/* break; */ $s = 2; continue;
 85967  					}
 85968  				}
 85969  				cr.checkEnd = false;
 85970  			/* } */ case 4:
 85971  			/* */ if ((x = cr.n, (x.$high === 0 && x.$low === 0))) { $s = 6; continue; }
 85972  			/* */ $s = 7; continue;
 85973  			/* if ((x = cr.n, (x.$high === 0 && x.$low === 0))) { */ case 6:
 85974  				if (!(n > 0)) { _v = false; $s = 10; continue s; }
 85975  				_r$1 = cr.chunkHeaderAvailable(); /* */ $s = 11; case 11: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 85976  				_v = !_r$1; case 10:
 85977  				/* */ if (_v) { $s = 8; continue; }
 85978  				/* */ $s = 9; continue;
 85979  				/* if (_v) { */ case 8:
 85980  					/* break; */ $s = 2; continue;
 85981  				/* } */ case 9:
 85982  				$r = cr.beginChunk(); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 85983  				/* continue; */ $s = 1; continue;
 85984  			/* } */ case 7:
 85985  			if (b.$length === 0) {
 85986  				/* break; */ $s = 2; continue;
 85987  			}
 85988  			rbuf = b;
 85989  			if ((x$1 = (new $Uint64(0, rbuf.$length)), x$2 = cr.n, (x$1.$high > x$2.$high || (x$1.$high === x$2.$high && x$1.$low > x$2.$low)))) {
 85990  				rbuf = $subslice(rbuf, 0, $flatten64(cr.n));
 85991  			}
 85992  			n0 = 0;
 85993  			_r$2 = cr.r.Read(rbuf); /* */ $s = 13; case 13: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 85994  			_tuple$1 = _r$2;
 85995  			n0 = _tuple$1[0];
 85996  			cr.err = _tuple$1[1];
 85997  			n = n + (n0) >> 0;
 85998  			b = $subslice(b, n0);
 85999  			cr.n = (x$3 = cr.n, x$4 = (new $Uint64(0, n0)), new $Uint64(x$3.$high - x$4.$high, x$3.$low - x$4.$low));
 86000  			if ((x$5 = cr.n, (x$5.$high === 0 && x$5.$low === 0)) && $interfaceIsEqual(cr.err, $ifaceNil)) {
 86001  				cr.checkEnd = true;
 86002  			}
 86003  		/* } */ $s = 1; continue; case 2:
 86004  		_tmp = n;
 86005  		_tmp$1 = cr.err;
 86006  		n = _tmp;
 86007  		err = _tmp$1;
 86008  		$s = -1; return [n, err];
 86009  		/* */ } return; } if ($f === undefined) { $f = { $blk: chunkedReader.ptr.prototype.Read }; } $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._v = _v; $f.b = b; $f.cr = cr; $f.err = err; $f.n = n; $f.n0 = n0; $f.rbuf = rbuf; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.x$3 = x$3; $f.x$4 = x$4; $f.x$5 = x$5; $f.$s = $s; $f.$r = $r; return $f;
 86010  	};
 86011  	chunkedReader.prototype.Read = function(b) { return this.$val.Read(b); };
 86012  	readChunkLine = function(b) {
 86013  		var _r, _tuple, _tuple$1, b, err, p, $s, $r;
 86014  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; b = $f.b; err = $f.err; p = $f.p; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 86015  		_r = b.ReadSlice(10); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 86016  		_tuple = _r;
 86017  		p = _tuple[0];
 86018  		err = _tuple[1];
 86019  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 86020  			if ($interfaceIsEqual(err, io.EOF)) {
 86021  				err = io.ErrUnexpectedEOF;
 86022  			} else if ($interfaceIsEqual(err, bufio.ErrBufferFull)) {
 86023  				err = $pkg.ErrLineTooLong;
 86024  			}
 86025  			$s = -1; return [sliceType.nil, err];
 86026  		}
 86027  		if (p.$length >= 4096) {
 86028  			$s = -1; return [sliceType.nil, $pkg.ErrLineTooLong];
 86029  		}
 86030  		p = trimTrailingWhitespace(p);
 86031  		_tuple$1 = removeChunkExtension(p);
 86032  		p = _tuple$1[0];
 86033  		err = _tuple$1[1];
 86034  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 86035  			$s = -1; return [sliceType.nil, err];
 86036  		}
 86037  		$s = -1; return [p, $ifaceNil];
 86038  		/* */ } return; } if ($f === undefined) { $f = { $blk: readChunkLine }; } $f._r = _r; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.b = b; $f.err = err; $f.p = p; $f.$s = $s; $f.$r = $r; return $f;
 86039  	};
 86040  	trimTrailingWhitespace = function(b) {
 86041  		var b, x;
 86042  		while (true) {
 86043  			if (!(b.$length > 0 && isASCIISpace((x = b.$length - 1 >> 0, ((x < 0 || x >= b.$length) ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + x]))))) { break; }
 86044  			b = $subslice(b, 0, (b.$length - 1 >> 0));
 86045  		}
 86046  		return b;
 86047  	};
 86048  	isASCIISpace = function(b) {
 86049  		var b;
 86050  		return (b === 32) || (b === 9) || (b === 10) || (b === 13);
 86051  	};
 86052  	removeChunkExtension = function(p) {
 86053  		var p, semi;
 86054  		semi = bytes.IndexByte(p, 59);
 86055  		if (semi === -1) {
 86056  			return [p, $ifaceNil];
 86057  		}
 86058  		return [$subslice(p, 0, semi), $ifaceNil];
 86059  	};
 86060  	NewChunkedWriter = function(w) {
 86061  		var w;
 86062  		return new chunkedWriter.ptr(w);
 86063  	};
 86064  	$pkg.NewChunkedWriter = NewChunkedWriter;
 86065  	chunkedWriter.ptr.prototype.Write = function(data) {
 86066  		var _r, _r$1, _r$2, _r$3, _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, _tuple$1, _tuple$2, _tuple$3, bw, cw, data, err, n, ok, $s, $r;
 86067  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; bw = $f.bw; cw = $f.cw; data = $f.data; err = $f.err; n = $f.n; ok = $f.ok; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 86068  		n = 0;
 86069  		err = $ifaceNil;
 86070  		cw = this;
 86071  		if (data.$length === 0) {
 86072  			_tmp = 0;
 86073  			_tmp$1 = $ifaceNil;
 86074  			n = _tmp;
 86075  			err = _tmp$1;
 86076  			$s = -1; return [n, err];
 86077  		}
 86078  		_r = fmt.Fprintf(cw.Wire, "%x\r\n", new sliceType$1([new $Int(data.$length)])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 86079  		_tuple = _r;
 86080  		err = _tuple[1];
 86081  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 86082  			_tmp$2 = 0;
 86083  			_tmp$3 = err;
 86084  			n = _tmp$2;
 86085  			err = _tmp$3;
 86086  			$s = -1; return [n, err];
 86087  		}
 86088  		_r$1 = cw.Wire.Write(data); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 86089  		_tuple$1 = _r$1;
 86090  		n = _tuple$1[0];
 86091  		err = _tuple$1[1];
 86092  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 86093  			$s = -1; return [n, err];
 86094  		}
 86095  		if (!((n === data.$length))) {
 86096  			err = io.ErrShortWrite;
 86097  			$s = -1; return [n, err];
 86098  		}
 86099  		_r$2 = io.WriteString(cw.Wire, "\r\n"); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 86100  		_tuple$2 = _r$2;
 86101  		err = _tuple$2[1];
 86102  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 86103  			$s = -1; return [n, err];
 86104  		}
 86105  		_tuple$3 = $assertType(cw.Wire, ptrType$1, true);
 86106  		bw = _tuple$3[0];
 86107  		ok = _tuple$3[1];
 86108  		/* */ if (ok) { $s = 4; continue; }
 86109  		/* */ $s = 5; continue;
 86110  		/* if (ok) { */ case 4:
 86111  			_r$3 = bw.Writer.Flush(); /* */ $s = 6; case 6: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 86112  			err = _r$3;
 86113  		/* } */ case 5:
 86114  		$s = -1; return [n, err];
 86115  		/* */ } return; } if ($f === undefined) { $f = { $blk: chunkedWriter.ptr.prototype.Write }; } $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f.bw = bw; $f.cw = cw; $f.data = data; $f.err = err; $f.n = n; $f.ok = ok; $f.$s = $s; $f.$r = $r; return $f;
 86116  	};
 86117  	chunkedWriter.prototype.Write = function(data) { return this.$val.Write(data); };
 86118  	chunkedWriter.ptr.prototype.Close = function() {
 86119  		var _r, _tuple, cw, err, $s, $r;
 86120  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; cw = $f.cw; err = $f.err; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 86121  		cw = this;
 86122  		_r = io.WriteString(cw.Wire, "0\r\n"); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 86123  		_tuple = _r;
 86124  		err = _tuple[1];
 86125  		$s = -1; return err;
 86126  		/* */ } return; } if ($f === undefined) { $f = { $blk: chunkedWriter.ptr.prototype.Close }; } $f._r = _r; $f._tuple = _tuple; $f.cw = cw; $f.err = err; $f.$s = $s; $f.$r = $r; return $f;
 86127  	};
 86128  	chunkedWriter.prototype.Close = function() { return this.$val.Close(); };
 86129  	parseHexUint = function(v) {
 86130  		var _i, _ref, _tmp, _tmp$1, _tmp$2, _tmp$3, b, err, i, n, v, x;
 86131  		n = new $Uint64(0, 0);
 86132  		err = $ifaceNil;
 86133  		_ref = v;
 86134  		_i = 0;
 86135  		while (true) {
 86136  			if (!(_i < _ref.$length)) { break; }
 86137  			i = _i;
 86138  			b = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
 86139  			if (48 <= b && b <= 57) {
 86140  				b = b - 48 << 24 >>> 24;
 86141  			} else if (97 <= b && b <= 102) {
 86142  				b = (b - 97 << 24 >>> 24) + 10 << 24 >>> 24;
 86143  			} else if (65 <= b && b <= 70) {
 86144  				b = (b - 65 << 24 >>> 24) + 10 << 24 >>> 24;
 86145  			} else {
 86146  				_tmp = new $Uint64(0, 0);
 86147  				_tmp$1 = errors.New("invalid byte in chunk length");
 86148  				n = _tmp;
 86149  				err = _tmp$1;
 86150  				return [n, err];
 86151  			}
 86152  			if (i === 16) {
 86153  				_tmp$2 = new $Uint64(0, 0);
 86154  				_tmp$3 = errors.New("http chunk length too large");
 86155  				n = _tmp$2;
 86156  				err = _tmp$3;
 86157  				return [n, err];
 86158  			}
 86159  			n = $shiftLeft64(n, (4));
 86160  			n = (x = (new $Uint64(0, b)), new $Uint64(n.$high | x.$high, (n.$low | x.$low) >>> 0));
 86161  			_i++;
 86162  		}
 86163  		return [n, err];
 86164  	};
 86165  	ptrType$2.methods = [{prop: "beginChunk", name: "beginChunk", pkg: "net/http/internal", typ: $funcType([], [], false)}, {prop: "chunkHeaderAvailable", name: "chunkHeaderAvailable", pkg: "net/http/internal", typ: $funcType([], [$Bool], false)}, {prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType], [$Int, $error], false)}];
 86166  	ptrType$3.methods = [{prop: "Write", name: "Write", pkg: "", typ: $funcType([sliceType], [$Int, $error], false)}, {prop: "Close", name: "Close", pkg: "", typ: $funcType([], [$error], false)}];
 86167  	chunkedReader.init("net/http/internal", [{prop: "r", name: "r", anonymous: false, exported: false, typ: ptrType, tag: ""}, {prop: "n", name: "n", anonymous: false, exported: false, typ: $Uint64, tag: ""}, {prop: "err", name: "err", anonymous: false, exported: false, typ: $error, tag: ""}, {prop: "buf", name: "buf", anonymous: false, exported: false, typ: arrayType, tag: ""}, {prop: "checkEnd", name: "checkEnd", anonymous: false, exported: false, typ: $Bool, tag: ""}]);
 86168  	chunkedWriter.init("", [{prop: "Wire", name: "Wire", anonymous: false, exported: true, typ: io.Writer, tag: ""}]);
 86169  	FlushAfterChunkWriter.init("", [{prop: "Writer", name: "Writer", anonymous: true, exported: true, typ: ptrType$4, tag: ""}]);
 86170  	$init = function() {
 86171  		$pkg.$init = function() {};
 86172  		/* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 86173  		$r = bufio.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 86174  		$r = bytes.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 86175  		$r = errors.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 86176  		$r = fmt.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 86177  		$r = io.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 86178  		$pkg.ErrLineTooLong = errors.New("header line too long");
 86179  		/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
 86180  	};
 86181  	$pkg.$init = $init;
 86182  	return $pkg;
 86183  })();
 86184  $packages["vendor/golang_org/x/net/http2/hpack"] = (function() {
 86185  	var $pkg = {}, $init, bytes, errors, fmt, io, sync, Encoder, DecodingError, InvalidIndexError, HeaderField, Decoder, dynamicTable, indexType, node, headerFieldTable, pairNameValue, sliceType, sliceType$1, arrayType, sliceType$2, ptrType, ptrType$1, sliceType$3, ptrType$2, funcType, ptrType$3, ptrType$4, ptrType$5, mapType, mapType$1, errNeedMore, errVarintOverflow, bufPool, rootHuffmanNode, staticTable, staticTableEntries, huffmanCodes, huffmanCodeLen, NewEncoder, appendIndexed, appendNewName, appendIndexedName, appendTableSize, appendVarInt, appendHpackString, encodeTypeByte, NewDecoder, readVarInt, huffmanDecode, newInternalNode, init, addDecoderNode, AppendHuffmanString, HuffmanEncodeLength, appendByteToHuffmanCode, newStaticTable;
 86186  	bytes = $packages["bytes"];
 86187  	errors = $packages["errors"];
 86188  	fmt = $packages["fmt"];
 86189  	io = $packages["io"];
 86190  	sync = $packages["sync"];
 86191  	Encoder = $pkg.Encoder = $newType(0, $kindStruct, "hpack.Encoder", true, "vendor/golang_org/x/net/http2/hpack", true, function(dynTab_, minSize_, maxSizeLimit_, tableSizeUpdate_, w_, buf_) {
 86192  		this.$val = this;
 86193  		if (arguments.length === 0) {
 86194  			this.dynTab = new dynamicTable.ptr(new headerFieldTable.ptr(sliceType$2.nil, new $Uint64(0, 0), false, false), 0, 0, 0);
 86195  			this.minSize = 0;
 86196  			this.maxSizeLimit = 0;
 86197  			this.tableSizeUpdate = false;
 86198  			this.w = $ifaceNil;
 86199  			this.buf = sliceType$1.nil;
 86200  			return;
 86201  		}
 86202  		this.dynTab = dynTab_;
 86203  		this.minSize = minSize_;
 86204  		this.maxSizeLimit = maxSizeLimit_;
 86205  		this.tableSizeUpdate = tableSizeUpdate_;
 86206  		this.w = w_;
 86207  		this.buf = buf_;
 86208  	});
 86209  	DecodingError = $pkg.DecodingError = $newType(0, $kindStruct, "hpack.DecodingError", true, "vendor/golang_org/x/net/http2/hpack", true, function(Err_) {
 86210  		this.$val = this;
 86211  		if (arguments.length === 0) {
 86212  			this.Err = $ifaceNil;
 86213  			return;
 86214  		}
 86215  		this.Err = Err_;
 86216  	});
 86217  	InvalidIndexError = $pkg.InvalidIndexError = $newType(4, $kindInt, "hpack.InvalidIndexError", true, "vendor/golang_org/x/net/http2/hpack", true, null);
 86218  	HeaderField = $pkg.HeaderField = $newType(0, $kindStruct, "hpack.HeaderField", true, "vendor/golang_org/x/net/http2/hpack", true, function(Name_, Value_, Sensitive_) {
 86219  		this.$val = this;
 86220  		if (arguments.length === 0) {
 86221  			this.Name = "";
 86222  			this.Value = "";
 86223  			this.Sensitive = false;
 86224  			return;
 86225  		}
 86226  		this.Name = Name_;
 86227  		this.Value = Value_;
 86228  		this.Sensitive = Sensitive_;
 86229  	});
 86230  	Decoder = $pkg.Decoder = $newType(0, $kindStruct, "hpack.Decoder", true, "vendor/golang_org/x/net/http2/hpack", true, function(dynTab_, emit_, emitEnabled_, maxStrLen_, buf_, saveBuf_) {
 86231  		this.$val = this;
 86232  		if (arguments.length === 0) {
 86233  			this.dynTab = new dynamicTable.ptr(new headerFieldTable.ptr(sliceType$2.nil, new $Uint64(0, 0), false, false), 0, 0, 0);
 86234  			this.emit = $throwNilPointerError;
 86235  			this.emitEnabled = false;
 86236  			this.maxStrLen = 0;
 86237  			this.buf = sliceType$1.nil;
 86238  			this.saveBuf = new bytes.Buffer.ptr(sliceType$1.nil, 0, arrayType.zero(), 0);
 86239  			return;
 86240  		}
 86241  		this.dynTab = dynTab_;
 86242  		this.emit = emit_;
 86243  		this.emitEnabled = emitEnabled_;
 86244  		this.maxStrLen = maxStrLen_;
 86245  		this.buf = buf_;
 86246  		this.saveBuf = saveBuf_;
 86247  	});
 86248  	dynamicTable = $pkg.dynamicTable = $newType(0, $kindStruct, "hpack.dynamicTable", true, "vendor/golang_org/x/net/http2/hpack", false, function(table_, size_, maxSize_, allowedMaxSize_) {
 86249  		this.$val = this;
 86250  		if (arguments.length === 0) {
 86251  			this.table = new headerFieldTable.ptr(sliceType$2.nil, new $Uint64(0, 0), false, false);
 86252  			this.size = 0;
 86253  			this.maxSize = 0;
 86254  			this.allowedMaxSize = 0;
 86255  			return;
 86256  		}
 86257  		this.table = table_;
 86258  		this.size = size_;
 86259  		this.maxSize = maxSize_;
 86260  		this.allowedMaxSize = allowedMaxSize_;
 86261  	});
 86262  	indexType = $pkg.indexType = $newType(4, $kindInt, "hpack.indexType", true, "vendor/golang_org/x/net/http2/hpack", false, null);
 86263  	node = $pkg.node = $newType(0, $kindStruct, "hpack.node", true, "vendor/golang_org/x/net/http2/hpack", false, function(children_, codeLen_, sym_) {
 86264  		this.$val = this;
 86265  		if (arguments.length === 0) {
 86266  			this.children = sliceType$3.nil;
 86267  			this.codeLen = 0;
 86268  			this.sym = 0;
 86269  			return;
 86270  		}
 86271  		this.children = children_;
 86272  		this.codeLen = codeLen_;
 86273  		this.sym = sym_;
 86274  	});
 86275  	headerFieldTable = $pkg.headerFieldTable = $newType(0, $kindStruct, "hpack.headerFieldTable", true, "vendor/golang_org/x/net/http2/hpack", false, function(ents_, evictCount_, byName_, byNameValue_) {
 86276  		this.$val = this;
 86277  		if (arguments.length === 0) {
 86278  			this.ents = sliceType$2.nil;
 86279  			this.evictCount = new $Uint64(0, 0);
 86280  			this.byName = false;
 86281  			this.byNameValue = false;
 86282  			return;
 86283  		}
 86284  		this.ents = ents_;
 86285  		this.evictCount = evictCount_;
 86286  		this.byName = byName_;
 86287  		this.byNameValue = byNameValue_;
 86288  	});
 86289  	pairNameValue = $pkg.pairNameValue = $newType(0, $kindStruct, "hpack.pairNameValue", true, "vendor/golang_org/x/net/http2/hpack", false, function(name_, value_) {
 86290  		this.$val = this;
 86291  		if (arguments.length === 0) {
 86292  			this.name = "";
 86293  			this.value = "";
 86294  			return;
 86295  		}
 86296  		this.name = name_;
 86297  		this.value = value_;
 86298  	});
 86299  	sliceType = $sliceType($emptyInterface);
 86300  	sliceType$1 = $sliceType($Uint8);
 86301  	arrayType = $arrayType($Uint8, 64);
 86302  	sliceType$2 = $sliceType(HeaderField);
 86303  	ptrType = $ptrType(bytes.Buffer);
 86304  	ptrType$1 = $ptrType(node);
 86305  	sliceType$3 = $sliceType(ptrType$1);
 86306  	ptrType$2 = $ptrType(Encoder);
 86307  	funcType = $funcType([HeaderField], [], false);
 86308  	ptrType$3 = $ptrType(Decoder);
 86309  	ptrType$4 = $ptrType(dynamicTable);
 86310  	ptrType$5 = $ptrType(headerFieldTable);
 86311  	mapType = $mapType($String, $Uint64);
 86312  	mapType$1 = $mapType(pairNameValue, $Uint64);
 86313  	NewEncoder = function(w) {
 86314  		var e, w, $s, $r;
 86315  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; e = $f.e; w = $f.w; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 86316  		e = new Encoder.ptr(new dynamicTable.ptr(new headerFieldTable.ptr(sliceType$2.nil, new $Uint64(0, 0), false, false), 0, 0, 0), 4294967295, 4096, false, w, sliceType$1.nil);
 86317  		e.dynTab.table.init();
 86318  		$r = e.dynTab.setMaxSize(4096); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 86319  		$s = -1; return e;
 86320  		/* */ } return; } if ($f === undefined) { $f = { $blk: NewEncoder }; } $f.e = e; $f.w = w; $f.$s = $s; $f.$r = $r; return $f;
 86321  	};
 86322  	$pkg.NewEncoder = NewEncoder;
 86323  	Encoder.ptr.prototype.WriteField = function(f) {
 86324  		var _r, _r$1, _tuple, _tuple$1, e, err, f, idx, indexing, n, nameValueMatch, $s, $r;
 86325  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; e = $f.e; err = $f.err; f = $f.f; idx = $f.idx; indexing = $f.indexing; n = $f.n; nameValueMatch = $f.nameValueMatch; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 86326  		e = this;
 86327  		e.buf = $subslice(e.buf, 0, 0);
 86328  		if (e.tableSizeUpdate) {
 86329  			e.tableSizeUpdate = false;
 86330  			if (e.minSize < e.dynTab.maxSize) {
 86331  				e.buf = appendTableSize(e.buf, e.minSize);
 86332  			}
 86333  			e.minSize = 4294967295;
 86334  			e.buf = appendTableSize(e.buf, e.dynTab.maxSize);
 86335  		}
 86336  		_r = e.searchTable($clone(f, HeaderField)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 86337  		_tuple = _r;
 86338  		idx = _tuple[0];
 86339  		nameValueMatch = _tuple[1];
 86340  		/* */ if (nameValueMatch) { $s = 2; continue; }
 86341  		/* */ $s = 3; continue;
 86342  		/* if (nameValueMatch) { */ case 2:
 86343  			e.buf = appendIndexed(e.buf, idx);
 86344  			$s = 4; continue;
 86345  		/* } else { */ case 3:
 86346  			indexing = e.shouldIndex($clone(f, HeaderField));
 86347  			/* */ if (indexing) { $s = 5; continue; }
 86348  			/* */ $s = 6; continue;
 86349  			/* if (indexing) { */ case 5:
 86350  				$r = e.dynTab.add($clone(f, HeaderField)); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 86351  			/* } */ case 6:
 86352  			if ((idx.$high === 0 && idx.$low === 0)) {
 86353  				e.buf = appendNewName(e.buf, $clone(f, HeaderField), indexing);
 86354  			} else {
 86355  				e.buf = appendIndexedName(e.buf, $clone(f, HeaderField), idx, indexing);
 86356  			}
 86357  		/* } */ case 4:
 86358  		_r$1 = e.w.Write(e.buf); /* */ $s = 8; case 8: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 86359  		_tuple$1 = _r$1;
 86360  		n = _tuple$1[0];
 86361  		err = _tuple$1[1];
 86362  		if ($interfaceIsEqual(err, $ifaceNil) && !((n === e.buf.$length))) {
 86363  			err = io.ErrShortWrite;
 86364  		}
 86365  		$s = -1; return err;
 86366  		/* */ } return; } if ($f === undefined) { $f = { $blk: Encoder.ptr.prototype.WriteField }; } $f._r = _r; $f._r$1 = _r$1; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.e = e; $f.err = err; $f.f = f; $f.idx = idx; $f.indexing = indexing; $f.n = n; $f.nameValueMatch = nameValueMatch; $f.$s = $s; $f.$r = $r; return $f;
 86367  	};
 86368  	Encoder.prototype.WriteField = function(f) { return this.$val.WriteField(f); };
 86369  	Encoder.ptr.prototype.searchTable = function(f) {
 86370  		var _r, _r$1, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tuple, _tuple$1, e, f, i, j, nameValueMatch, x, $s, $r;
 86371  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tmp$4 = $f._tmp$4; _tmp$5 = $f._tmp$5; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; e = $f.e; f = $f.f; i = $f.i; j = $f.j; nameValueMatch = $f.nameValueMatch; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 86372  		i = new $Uint64(0, 0);
 86373  		nameValueMatch = false;
 86374  		e = this;
 86375  		_r = staticTable.search($clone(f, HeaderField)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 86376  		_tuple = _r;
 86377  		i = _tuple[0];
 86378  		nameValueMatch = _tuple[1];
 86379  		if (nameValueMatch) {
 86380  			_tmp = i;
 86381  			_tmp$1 = true;
 86382  			i = _tmp;
 86383  			nameValueMatch = _tmp$1;
 86384  			$s = -1; return [i, nameValueMatch];
 86385  		}
 86386  		_r$1 = e.dynTab.table.search($clone(f, HeaderField)); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 86387  		_tuple$1 = _r$1;
 86388  		j = _tuple$1[0];
 86389  		nameValueMatch = _tuple$1[1];
 86390  		if (nameValueMatch || ((i.$high === 0 && i.$low === 0) && !((j.$high === 0 && j.$low === 0)))) {
 86391  			_tmp$2 = (x = (new $Uint64(0, staticTable.len())), new $Uint64(j.$high + x.$high, j.$low + x.$low));
 86392  			_tmp$3 = nameValueMatch;
 86393  			i = _tmp$2;
 86394  			nameValueMatch = _tmp$3;
 86395  			$s = -1; return [i, nameValueMatch];
 86396  		}
 86397  		_tmp$4 = i;
 86398  		_tmp$5 = false;
 86399  		i = _tmp$4;
 86400  		nameValueMatch = _tmp$5;
 86401  		$s = -1; return [i, nameValueMatch];
 86402  		/* */ } return; } if ($f === undefined) { $f = { $blk: Encoder.ptr.prototype.searchTable }; } $f._r = _r; $f._r$1 = _r$1; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tmp$4 = _tmp$4; $f._tmp$5 = _tmp$5; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.e = e; $f.f = f; $f.i = i; $f.j = j; $f.nameValueMatch = nameValueMatch; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
 86403  	};
 86404  	Encoder.prototype.searchTable = function(f) { return this.$val.searchTable(f); };
 86405  	Encoder.ptr.prototype.SetMaxDynamicTableSize = function(v) {
 86406  		var e, v, $s, $r;
 86407  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; e = $f.e; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 86408  		e = this;
 86409  		if (v > e.maxSizeLimit) {
 86410  			v = e.maxSizeLimit;
 86411  		}
 86412  		if (v < e.minSize) {
 86413  			e.minSize = v;
 86414  		}
 86415  		e.tableSizeUpdate = true;
 86416  		$r = e.dynTab.setMaxSize(v); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 86417  		$s = -1; return;
 86418  		/* */ } return; } if ($f === undefined) { $f = { $blk: Encoder.ptr.prototype.SetMaxDynamicTableSize }; } $f.e = e; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
 86419  	};
 86420  	Encoder.prototype.SetMaxDynamicTableSize = function(v) { return this.$val.SetMaxDynamicTableSize(v); };
 86421  	Encoder.ptr.prototype.SetMaxDynamicTableSizeLimit = function(v) {
 86422  		var e, v, $s, $r;
 86423  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; e = $f.e; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 86424  		e = this;
 86425  		e.maxSizeLimit = v;
 86426  		/* */ if (e.dynTab.maxSize > v) { $s = 1; continue; }
 86427  		/* */ $s = 2; continue;
 86428  		/* if (e.dynTab.maxSize > v) { */ case 1:
 86429  			e.tableSizeUpdate = true;
 86430  			$r = e.dynTab.setMaxSize(v); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 86431  		/* } */ case 2:
 86432  		$s = -1; return;
 86433  		/* */ } return; } if ($f === undefined) { $f = { $blk: Encoder.ptr.prototype.SetMaxDynamicTableSizeLimit }; } $f.e = e; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
 86434  	};
 86435  	Encoder.prototype.SetMaxDynamicTableSizeLimit = function(v) { return this.$val.SetMaxDynamicTableSizeLimit(v); };
 86436  	Encoder.ptr.prototype.shouldIndex = function(f) {
 86437  		var e, f;
 86438  		e = this;
 86439  		return !f.Sensitive && $clone(f, HeaderField).Size() <= e.dynTab.maxSize;
 86440  	};
 86441  	Encoder.prototype.shouldIndex = function(f) { return this.$val.shouldIndex(f); };
 86442  	appendIndexed = function(dst, i) {
 86443  		var dst, first, i;
 86444  		first = dst.$length;
 86445  		dst = appendVarInt(dst, 7, i);
 86446  		((first < 0 || first >= dst.$length) ? ($throwRuntimeError("index out of range"), undefined) : dst.$array[dst.$offset + first] = ((((first < 0 || first >= dst.$length) ? ($throwRuntimeError("index out of range"), undefined) : dst.$array[dst.$offset + first]) | (128)) >>> 0));
 86447  		return dst;
 86448  	};
 86449  	appendNewName = function(dst, f, indexing) {
 86450  		var dst, f, indexing;
 86451  		dst = $append(dst, encodeTypeByte(indexing, f.Sensitive));
 86452  		dst = appendHpackString(dst, f.Name);
 86453  		return appendHpackString(dst, f.Value);
 86454  	};
 86455  	appendIndexedName = function(dst, f, i, indexing) {
 86456  		var dst, f, first, i, indexing, n;
 86457  		first = dst.$length;
 86458  		n = 0;
 86459  		if (indexing) {
 86460  			n = 6;
 86461  		} else {
 86462  			n = 4;
 86463  		}
 86464  		dst = appendVarInt(dst, n, i);
 86465  		((first < 0 || first >= dst.$length) ? ($throwRuntimeError("index out of range"), undefined) : dst.$array[dst.$offset + first] = ((((first < 0 || first >= dst.$length) ? ($throwRuntimeError("index out of range"), undefined) : dst.$array[dst.$offset + first]) | (encodeTypeByte(indexing, f.Sensitive))) >>> 0));
 86466  		return appendHpackString(dst, f.Value);
 86467  	};
 86468  	appendTableSize = function(dst, v) {
 86469  		var dst, first, v;
 86470  		first = dst.$length;
 86471  		dst = appendVarInt(dst, 5, (new $Uint64(0, v)));
 86472  		((first < 0 || first >= dst.$length) ? ($throwRuntimeError("index out of range"), undefined) : dst.$array[dst.$offset + first] = ((((first < 0 || first >= dst.$length) ? ($throwRuntimeError("index out of range"), undefined) : dst.$array[dst.$offset + first]) | (32)) >>> 0));
 86473  		return dst;
 86474  	};
 86475  	appendVarInt = function(dst, n, i) {
 86476  		var dst, i, k, n, x, x$1, x$2;
 86477  		k = ((x = $shiftLeft64(new $Uint64(0, 1), n), new $Uint64(x.$high - 0, x.$low - 1)));
 86478  		if ((i.$high < k.$high || (i.$high === k.$high && i.$low < k.$low))) {
 86479  			return $append(dst, ((i.$low << 24 >>> 24)));
 86480  		}
 86481  		dst = $append(dst, ((k.$low << 24 >>> 24)));
 86482  		i = (x$1 = k, new $Uint64(i.$high - x$1.$high, i.$low - x$1.$low));
 86483  		while (true) {
 86484  			if (!((i.$high > 0 || (i.$high === 0 && i.$low >= 128)))) { break; }
 86485  			dst = $append(dst, (((x$2 = new $Uint64(i.$high & 0, (i.$low & 127) >>> 0), new $Uint64(0 | x$2.$high, (128 | x$2.$low) >>> 0)).$low << 24 >>> 24)));
 86486  			i = $shiftRightUint64(i, (7));
 86487  		}
 86488  		return $append(dst, ((i.$low << 24 >>> 24)));
 86489  	};
 86490  	appendHpackString = function(dst, s) {
 86491  		var dst, first, huffmanLength, s, x;
 86492  		huffmanLength = HuffmanEncodeLength(s);
 86493  		if ((x = (new $Uint64(0, s.length)), (huffmanLength.$high < x.$high || (huffmanLength.$high === x.$high && huffmanLength.$low < x.$low)))) {
 86494  			first = dst.$length;
 86495  			dst = appendVarInt(dst, 7, huffmanLength);
 86496  			dst = AppendHuffmanString(dst, s);
 86497  			((first < 0 || first >= dst.$length) ? ($throwRuntimeError("index out of range"), undefined) : dst.$array[dst.$offset + first] = ((((first < 0 || first >= dst.$length) ? ($throwRuntimeError("index out of range"), undefined) : dst.$array[dst.$offset + first]) | (128)) >>> 0));
 86498  		} else {
 86499  			dst = appendVarInt(dst, 7, (new $Uint64(0, s.length)));
 86500  			dst = $appendSlice(dst, s);
 86501  		}
 86502  		return dst;
 86503  	};
 86504  	encodeTypeByte = function(indexing, sensitive) {
 86505  		var indexing, sensitive;
 86506  		if (sensitive) {
 86507  			return 16;
 86508  		}
 86509  		if (indexing) {
 86510  			return 64;
 86511  		}
 86512  		return 0;
 86513  	};
 86514  	DecodingError.ptr.prototype.Error = function() {
 86515  		var _r, de, $s, $r;
 86516  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; de = $f.de; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 86517  		de = this;
 86518  		_r = fmt.Sprintf("decoding error: %v", new sliceType([de.Err])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 86519  		$s = -1; return _r;
 86520  		/* */ } return; } if ($f === undefined) { $f = { $blk: DecodingError.ptr.prototype.Error }; } $f._r = _r; $f.de = de; $f.$s = $s; $f.$r = $r; return $f;
 86521  	};
 86522  	DecodingError.prototype.Error = function() { return this.$val.Error(); };
 86523  	InvalidIndexError.prototype.Error = function() {
 86524  		var _r, e, $s, $r;
 86525  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; e = $f.e; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 86526  		e = this.$val;
 86527  		_r = fmt.Sprintf("invalid indexed representation index %d", new sliceType([new $Int(((e >> 0)))])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 86528  		$s = -1; return _r;
 86529  		/* */ } return; } if ($f === undefined) { $f = { $blk: InvalidIndexError.prototype.Error }; } $f._r = _r; $f.e = e; $f.$s = $s; $f.$r = $r; return $f;
 86530  	};
 86531  	$ptrType(InvalidIndexError).prototype.Error = function() { return new InvalidIndexError(this.$get()).Error(); };
 86532  	HeaderField.ptr.prototype.IsPseudo = function() {
 86533  		var hf;
 86534  		hf = this;
 86535  		return !((hf.Name.length === 0)) && (hf.Name.charCodeAt(0) === 58);
 86536  	};
 86537  	HeaderField.prototype.IsPseudo = function() { return this.$val.IsPseudo(); };
 86538  	HeaderField.ptr.prototype.String = function() {
 86539  		var _r, hf, suffix, $s, $r;
 86540  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; hf = $f.hf; suffix = $f.suffix; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 86541  		hf = this;
 86542  		suffix = "";
 86543  		if (hf.Sensitive) {
 86544  			suffix = " (sensitive)";
 86545  		}
 86546  		_r = fmt.Sprintf("header field %q = %q%s", new sliceType([new $String(hf.Name), new $String(hf.Value), new $String(suffix)])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 86547  		$s = -1; return _r;
 86548  		/* */ } return; } if ($f === undefined) { $f = { $blk: HeaderField.ptr.prototype.String }; } $f._r = _r; $f.hf = hf; $f.suffix = suffix; $f.$s = $s; $f.$r = $r; return $f;
 86549  	};
 86550  	HeaderField.prototype.String = function() { return this.$val.String(); };
 86551  	HeaderField.ptr.prototype.Size = function() {
 86552  		var hf;
 86553  		hf = this;
 86554  		return ((((hf.Name.length + hf.Value.length >> 0) + 32 >> 0) >>> 0));
 86555  	};
 86556  	HeaderField.prototype.Size = function() { return this.$val.Size(); };
 86557  	NewDecoder = function(maxDynamicTableSize, emitFunc) {
 86558  		var d, emitFunc, maxDynamicTableSize, $s, $r;
 86559  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; d = $f.d; emitFunc = $f.emitFunc; maxDynamicTableSize = $f.maxDynamicTableSize; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 86560  		d = new Decoder.ptr(new dynamicTable.ptr(new headerFieldTable.ptr(sliceType$2.nil, new $Uint64(0, 0), false, false), 0, 0, 0), emitFunc, true, 0, sliceType$1.nil, new bytes.Buffer.ptr(sliceType$1.nil, 0, arrayType.zero(), 0));
 86561  		d.dynTab.table.init();
 86562  		d.dynTab.allowedMaxSize = maxDynamicTableSize;
 86563  		$r = d.dynTab.setMaxSize(maxDynamicTableSize); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 86564  		$s = -1; return d;
 86565  		/* */ } return; } if ($f === undefined) { $f = { $blk: NewDecoder }; } $f.d = d; $f.emitFunc = emitFunc; $f.maxDynamicTableSize = maxDynamicTableSize; $f.$s = $s; $f.$r = $r; return $f;
 86566  	};
 86567  	$pkg.NewDecoder = NewDecoder;
 86568  	Decoder.ptr.prototype.SetMaxStringLength = function(n) {
 86569  		var d, n;
 86570  		d = this;
 86571  		d.maxStrLen = n;
 86572  	};
 86573  	Decoder.prototype.SetMaxStringLength = function(n) { return this.$val.SetMaxStringLength(n); };
 86574  	Decoder.ptr.prototype.SetEmitFunc = function(emitFunc) {
 86575  		var d, emitFunc;
 86576  		d = this;
 86577  		d.emit = emitFunc;
 86578  	};
 86579  	Decoder.prototype.SetEmitFunc = function(emitFunc) { return this.$val.SetEmitFunc(emitFunc); };
 86580  	Decoder.ptr.prototype.SetEmitEnabled = function(v) {
 86581  		var d, v;
 86582  		d = this;
 86583  		d.emitEnabled = v;
 86584  	};
 86585  	Decoder.prototype.SetEmitEnabled = function(v) { return this.$val.SetEmitEnabled(v); };
 86586  	Decoder.ptr.prototype.EmitEnabled = function() {
 86587  		var d;
 86588  		d = this;
 86589  		return d.emitEnabled;
 86590  	};
 86591  	Decoder.prototype.EmitEnabled = function() { return this.$val.EmitEnabled(); };
 86592  	Decoder.ptr.prototype.SetMaxDynamicTableSize = function(v) {
 86593  		var d, v, $s, $r;
 86594  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; d = $f.d; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 86595  		d = this;
 86596  		$r = d.dynTab.setMaxSize(v); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 86597  		$s = -1; return;
 86598  		/* */ } return; } if ($f === undefined) { $f = { $blk: Decoder.ptr.prototype.SetMaxDynamicTableSize }; } $f.d = d; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
 86599  	};
 86600  	Decoder.prototype.SetMaxDynamicTableSize = function(v) { return this.$val.SetMaxDynamicTableSize(v); };
 86601  	Decoder.ptr.prototype.SetAllowedMaxDynamicTableSize = function(v) {
 86602  		var d, v;
 86603  		d = this;
 86604  		d.dynTab.allowedMaxSize = v;
 86605  	};
 86606  	Decoder.prototype.SetAllowedMaxDynamicTableSize = function(v) { return this.$val.SetAllowedMaxDynamicTableSize(v); };
 86607  	dynamicTable.ptr.prototype.setMaxSize = function(v) {
 86608  		var dt, v, $s, $r;
 86609  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; dt = $f.dt; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 86610  		dt = this;
 86611  		dt.maxSize = v;
 86612  		$r = dt.evict(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 86613  		$s = -1; return;
 86614  		/* */ } return; } if ($f === undefined) { $f = { $blk: dynamicTable.ptr.prototype.setMaxSize }; } $f.dt = dt; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
 86615  	};
 86616  	dynamicTable.prototype.setMaxSize = function(v) { return this.$val.setMaxSize(v); };
 86617  	dynamicTable.ptr.prototype.add = function(f) {
 86618  		var dt, f, $s, $r;
 86619  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; dt = $f.dt; f = $f.f; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 86620  		dt = this;
 86621  		dt.table.addEntry($clone(f, HeaderField));
 86622  		dt.size = dt.size + ($clone(f, HeaderField).Size()) >>> 0;
 86623  		$r = dt.evict(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 86624  		$s = -1; return;
 86625  		/* */ } return; } if ($f === undefined) { $f = { $blk: dynamicTable.ptr.prototype.add }; } $f.dt = dt; $f.f = f; $f.$s = $s; $f.$r = $r; return $f;
 86626  	};
 86627  	dynamicTable.prototype.add = function(f) { return this.$val.add(f); };
 86628  	dynamicTable.ptr.prototype.evict = function() {
 86629  		var dt, n, x, $s, $r;
 86630  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; dt = $f.dt; n = $f.n; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 86631  		dt = this;
 86632  		n = 0;
 86633  		while (true) {
 86634  			if (!(dt.size > dt.maxSize && n < dt.table.len())) { break; }
 86635  			dt.size = dt.size - ($clone((x = dt.table.ents, ((n < 0 || n >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + n])), HeaderField).Size()) >>> 0;
 86636  			n = n + (1) >> 0;
 86637  		}
 86638  		$r = dt.table.evictOldest(n); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 86639  		$s = -1; return;
 86640  		/* */ } return; } if ($f === undefined) { $f = { $blk: dynamicTable.ptr.prototype.evict }; } $f.dt = dt; $f.n = n; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
 86641  	};
 86642  	dynamicTable.prototype.evict = function() { return this.$val.evict(); };
 86643  	Decoder.ptr.prototype.maxTableIndex = function() {
 86644  		var d;
 86645  		d = this;
 86646  		return d.dynTab.table.len() + staticTable.len() >> 0;
 86647  	};
 86648  	Decoder.prototype.maxTableIndex = function() { return this.$val.maxTableIndex(); };
 86649  	Decoder.ptr.prototype.at = function(i) {
 86650  		var _tmp, _tmp$1, _tmp$2, _tmp$3, d, dt, hf, i, ok, x, x$1, x$2, x$3, x$4, x$5;
 86651  		hf = new HeaderField.ptr("", "", false);
 86652  		ok = false;
 86653  		d = this;
 86654  		if ((i.$high === 0 && i.$low === 0)) {
 86655  			return [hf, ok];
 86656  		}
 86657  		if ((x = (new $Uint64(0, staticTable.len())), (i.$high < x.$high || (i.$high === x.$high && i.$low <= x.$low)))) {
 86658  			_tmp = $clone((x$1 = staticTable.ents, x$2 = new $Uint64(i.$high - 0, i.$low - 1), (($flatten64(x$2) < 0 || $flatten64(x$2) >= x$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + $flatten64(x$2)])), HeaderField);
 86659  			_tmp$1 = true;
 86660  			HeaderField.copy(hf, _tmp);
 86661  			ok = _tmp$1;
 86662  			return [hf, ok];
 86663  		}
 86664  		if ((x$3 = (new $Uint64(0, d.maxTableIndex())), (i.$high > x$3.$high || (i.$high === x$3.$high && i.$low > x$3.$low)))) {
 86665  			return [hf, ok];
 86666  		}
 86667  		dt = $clone(d.dynTab.table, headerFieldTable);
 86668  		_tmp$2 = $clone((x$4 = dt.ents, x$5 = dt.len() - ((((i.$low >> 0)) - staticTable.len() >> 0)) >> 0, ((x$5 < 0 || x$5 >= x$4.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$4.$array[x$4.$offset + x$5])), HeaderField);
 86669  		_tmp$3 = true;
 86670  		HeaderField.copy(hf, _tmp$2);
 86671  		ok = _tmp$3;
 86672  		return [hf, ok];
 86673  	};
 86674  	Decoder.prototype.at = function(i) { return this.$val.at(i); };
 86675  	Decoder.ptr.prototype.DecodeFull = function(p) {
 86676  		var _r, _tuple, d, err, err$1, hf, p, saveFunc, $s, $deferred, $r;
 86677  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; d = $f.d; err = $f.err; err$1 = $f.err$1; hf = $f.hf; p = $f.p; saveFunc = $f.saveFunc; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
 86678  		d = [d];
 86679  		hf = [hf];
 86680  		saveFunc = [saveFunc];
 86681  		d[0] = this;
 86682  		hf[0] = sliceType$2.nil;
 86683  		saveFunc[0] = d[0].emit;
 86684  		$deferred.push([(function(d, hf, saveFunc) { return function() {
 86685  			d[0].emit = saveFunc[0];
 86686  		}; })(d, hf, saveFunc), []]);
 86687  		d[0].emit = (function(d, hf, saveFunc) { return function(f) {
 86688  			var f;
 86689  			hf[0] = $append(hf[0], f);
 86690  		}; })(d, hf, saveFunc);
 86691  		_r = d[0].Write(p); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 86692  		_tuple = _r;
 86693  		err = _tuple[1];
 86694  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 86695  			$s = -1; return [sliceType$2.nil, err];
 86696  		}
 86697  		err$1 = d[0].Close();
 86698  		if (!($interfaceIsEqual(err$1, $ifaceNil))) {
 86699  			$s = -1; return [sliceType$2.nil, err$1];
 86700  		}
 86701  		$s = -1; return [hf[0], $ifaceNil];
 86702  		/* */ } return; } } catch(err) { $err = err; $s = -1; return [sliceType$2.nil, $ifaceNil]; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: Decoder.ptr.prototype.DecodeFull }; } $f._r = _r; $f._tuple = _tuple; $f.d = d; $f.err = err; $f.err$1 = err$1; $f.hf = hf; $f.p = p; $f.saveFunc = saveFunc; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
 86703  	};
 86704  	Decoder.prototype.DecodeFull = function(p) { return this.$val.DecodeFull(p); };
 86705  	Decoder.ptr.prototype.Close = function() {
 86706  		var d, x;
 86707  		d = this;
 86708  		if (d.saveBuf.Len() > 0) {
 86709  			d.saveBuf.Reset();
 86710  			return (x = new DecodingError.ptr(errors.New("truncated headers")), new x.constructor.elem(x));
 86711  		}
 86712  		return $ifaceNil;
 86713  	};
 86714  	Decoder.prototype.Close = function() { return this.$val.Close(); };
 86715  	Decoder.ptr.prototype.Write = function(p) {
 86716  		var _r, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, d, err, n, p, x, x$1, x$2, $s, $r;
 86717  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tmp$4 = $f._tmp$4; _tmp$5 = $f._tmp$5; d = $f.d; err = $f.err; n = $f.n; p = $f.p; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 86718  		n = 0;
 86719  		err = $ifaceNil;
 86720  		d = this;
 86721  		if (p.$length === 0) {
 86722  			$s = -1; return [n, err];
 86723  		}
 86724  		if (d.saveBuf.Len() === 0) {
 86725  			d.buf = p;
 86726  		} else {
 86727  			d.saveBuf.Write(p);
 86728  			d.buf = d.saveBuf.Bytes();
 86729  			d.saveBuf.Reset();
 86730  		}
 86731  		/* while (true) { */ case 1:
 86732  			/* if (!(d.buf.$length > 0)) { break; } */ if(!(d.buf.$length > 0)) { $s = 2; continue; }
 86733  			_r = d.parseHeaderFieldRepr(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 86734  			err = _r;
 86735  			if ($interfaceIsEqual(err, errNeedMore)) {
 86736  				if (!((d.maxStrLen === 0)) && (x = (new $Int64(0, d.buf.$length)), x$1 = $mul64(new $Int64(0, 2), ((x$2 = (new $Int64(0, d.maxStrLen)), new $Int64(x$2.$high + 0, x$2.$low + 8)))), (x.$high > x$1.$high || (x.$high === x$1.$high && x.$low > x$1.$low)))) {
 86737  					_tmp = 0;
 86738  					_tmp$1 = $pkg.ErrStringLength;
 86739  					n = _tmp;
 86740  					err = _tmp$1;
 86741  					$s = -1; return [n, err];
 86742  				}
 86743  				d.saveBuf.Write(d.buf);
 86744  				_tmp$2 = p.$length;
 86745  				_tmp$3 = $ifaceNil;
 86746  				n = _tmp$2;
 86747  				err = _tmp$3;
 86748  				$s = -1; return [n, err];
 86749  			}
 86750  			if (!($interfaceIsEqual(err, $ifaceNil))) {
 86751  				/* break; */ $s = 2; continue;
 86752  			}
 86753  		/* } */ $s = 1; continue; case 2:
 86754  		_tmp$4 = p.$length;
 86755  		_tmp$5 = err;
 86756  		n = _tmp$4;
 86757  		err = _tmp$5;
 86758  		$s = -1; return [n, err];
 86759  		/* */ } return; } if ($f === undefined) { $f = { $blk: Decoder.ptr.prototype.Write }; } $f._r = _r; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tmp$4 = _tmp$4; $f._tmp$5 = _tmp$5; $f.d = d; $f.err = err; $f.n = n; $f.p = p; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.$s = $s; $f.$r = $r; return $f;
 86760  	};
 86761  	Decoder.prototype.Write = function(p) { return this.$val.Write(p); };
 86762  	indexType.prototype.indexed = function() {
 86763  		var v;
 86764  		v = this.$val;
 86765  		return v === 0;
 86766  	};
 86767  	$ptrType(indexType).prototype.indexed = function() { return new indexType(this.$get()).indexed(); };
 86768  	indexType.prototype.sensitive = function() {
 86769  		var v;
 86770  		v = this.$val;
 86771  		return v === 2;
 86772  	};
 86773  	$ptrType(indexType).prototype.sensitive = function() { return new indexType(this.$get()).sensitive(); };
 86774  	Decoder.ptr.prototype.parseHeaderFieldRepr = function() {
 86775  		var _r, _r$1, _r$2, _r$3, _r$4, b, d, x, x$1, $s, $r;
 86776  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; b = $f.b; d = $f.d; x = $f.x; x$1 = $f.x$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 86777  		d = this;
 86778  		b = (x = d.buf, (0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0]));
 86779  			/* */ if (!((((b & 128) >>> 0) === 0))) { $s = 2; continue; }
 86780  			/* */ if ((((b & 192) >>> 0) === 64)) { $s = 3; continue; }
 86781  			/* */ if ((((b & 240) >>> 0) === 0)) { $s = 4; continue; }
 86782  			/* */ if ((((b & 240) >>> 0) === 16)) { $s = 5; continue; }
 86783  			/* */ if ((((b & 224) >>> 0) === 32)) { $s = 6; continue; }
 86784  			/* */ $s = 7; continue;
 86785  			/* if (!((((b & 128) >>> 0) === 0))) { */ case 2:
 86786  				_r = d.parseFieldIndexed(); /* */ $s = 8; case 8: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 86787  				$s = -1; return _r;
 86788  			/* } else if ((((b & 192) >>> 0) === 64)) { */ case 3:
 86789  				_r$1 = d.parseFieldLiteral(6, 0); /* */ $s = 9; case 9: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 86790  				$s = -1; return _r$1;
 86791  			/* } else if ((((b & 240) >>> 0) === 0)) { */ case 4:
 86792  				_r$2 = d.parseFieldLiteral(4, 1); /* */ $s = 10; case 10: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 86793  				$s = -1; return _r$2;
 86794  			/* } else if ((((b & 240) >>> 0) === 16)) { */ case 5:
 86795  				_r$3 = d.parseFieldLiteral(4, 2); /* */ $s = 11; case 11: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 86796  				$s = -1; return _r$3;
 86797  			/* } else if ((((b & 224) >>> 0) === 32)) { */ case 6:
 86798  				_r$4 = d.parseDynamicTableSizeUpdate(); /* */ $s = 12; case 12: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 86799  				$s = -1; return _r$4;
 86800  			/* } */ case 7:
 86801  		case 1:
 86802  		$s = -1; return (x$1 = new DecodingError.ptr(errors.New("invalid encoding")), new x$1.constructor.elem(x$1));
 86803  		/* */ } return; } if ($f === undefined) { $f = { $blk: Decoder.ptr.prototype.parseHeaderFieldRepr }; } $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f.b = b; $f.d = d; $f.x = x; $f.x$1 = x$1; $f.$s = $s; $f.$r = $r; return $f;
 86804  	};
 86805  	Decoder.prototype.parseHeaderFieldRepr = function() { return this.$val.parseHeaderFieldRepr(); };
 86806  	Decoder.ptr.prototype.parseFieldIndexed = function() {
 86807  		var _r, _tuple, _tuple$1, buf, d, err, hf, idx, ok, x, $s, $r;
 86808  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; buf = $f.buf; d = $f.d; err = $f.err; hf = $f.hf; idx = $f.idx; ok = $f.ok; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 86809  		d = this;
 86810  		buf = d.buf;
 86811  		_tuple = readVarInt(7, buf);
 86812  		idx = _tuple[0];
 86813  		buf = _tuple[1];
 86814  		err = _tuple[2];
 86815  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 86816  			$s = -1; return err;
 86817  		}
 86818  		_tuple$1 = d.at(idx);
 86819  		hf = $clone(_tuple$1[0], HeaderField);
 86820  		ok = _tuple$1[1];
 86821  		if (!ok) {
 86822  			$s = -1; return (x = new DecodingError.ptr(new InvalidIndexError(((idx.$low >> 0)))), new x.constructor.elem(x));
 86823  		}
 86824  		d.buf = buf;
 86825  		_r = d.callEmit(new HeaderField.ptr(hf.Name, hf.Value, false)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 86826  		$s = -1; return _r;
 86827  		/* */ } return; } if ($f === undefined) { $f = { $blk: Decoder.ptr.prototype.parseFieldIndexed }; } $f._r = _r; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.buf = buf; $f.d = d; $f.err = err; $f.hf = hf; $f.idx = idx; $f.ok = ok; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
 86828  	};
 86829  	Decoder.prototype.parseFieldIndexed = function() { return this.$val.parseFieldIndexed(); };
 86830  	Decoder.ptr.prototype.parseFieldLiteral = function(n, it) {
 86831  		var _r, _r$1, _r$2, _tuple, _tuple$1, _tuple$2, _tuple$3, buf, d, err, hf, ihf, it, n, nameIdx, ok, wantStr, x, $s, $r;
 86832  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; buf = $f.buf; d = $f.d; err = $f.err; hf = $f.hf; ihf = $f.ihf; it = $f.it; n = $f.n; nameIdx = $f.nameIdx; ok = $f.ok; wantStr = $f.wantStr; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 86833  		d = this;
 86834  		buf = d.buf;
 86835  		_tuple = readVarInt(n, buf);
 86836  		nameIdx = _tuple[0];
 86837  		buf = _tuple[1];
 86838  		err = _tuple[2];
 86839  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 86840  			$s = -1; return err;
 86841  		}
 86842  		hf = new HeaderField.ptr("", "", false);
 86843  		wantStr = d.emitEnabled || new indexType(it).indexed();
 86844  		/* */ if ((nameIdx.$high > 0 || (nameIdx.$high === 0 && nameIdx.$low > 0))) { $s = 1; continue; }
 86845  		/* */ $s = 2; continue;
 86846  		/* if ((nameIdx.$high > 0 || (nameIdx.$high === 0 && nameIdx.$low > 0))) { */ case 1:
 86847  			_tuple$1 = d.at(nameIdx);
 86848  			ihf = $clone(_tuple$1[0], HeaderField);
 86849  			ok = _tuple$1[1];
 86850  			if (!ok) {
 86851  				$s = -1; return (x = new DecodingError.ptr(new InvalidIndexError(((nameIdx.$low >> 0)))), new x.constructor.elem(x));
 86852  			}
 86853  			hf.Name = ihf.Name;
 86854  			$s = 3; continue;
 86855  		/* } else { */ case 2:
 86856  			_r = d.readString(buf, wantStr); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 86857  			_tuple$2 = _r;
 86858  			hf.Name = _tuple$2[0];
 86859  			buf = _tuple$2[1];
 86860  			err = _tuple$2[2];
 86861  			if (!($interfaceIsEqual(err, $ifaceNil))) {
 86862  				$s = -1; return err;
 86863  			}
 86864  		/* } */ case 3:
 86865  		_r$1 = d.readString(buf, wantStr); /* */ $s = 5; case 5: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 86866  		_tuple$3 = _r$1;
 86867  		hf.Value = _tuple$3[0];
 86868  		buf = _tuple$3[1];
 86869  		err = _tuple$3[2];
 86870  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 86871  			$s = -1; return err;
 86872  		}
 86873  		d.buf = buf;
 86874  		/* */ if (new indexType(it).indexed()) { $s = 6; continue; }
 86875  		/* */ $s = 7; continue;
 86876  		/* if (new indexType(it).indexed()) { */ case 6:
 86877  			$r = d.dynTab.add($clone(hf, HeaderField)); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 86878  		/* } */ case 7:
 86879  		hf.Sensitive = new indexType(it).sensitive();
 86880  		_r$2 = d.callEmit($clone(hf, HeaderField)); /* */ $s = 9; case 9: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 86881  		$s = -1; return _r$2;
 86882  		/* */ } return; } if ($f === undefined) { $f = { $blk: Decoder.ptr.prototype.parseFieldLiteral }; } $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f.buf = buf; $f.d = d; $f.err = err; $f.hf = hf; $f.ihf = ihf; $f.it = it; $f.n = n; $f.nameIdx = nameIdx; $f.ok = ok; $f.wantStr = wantStr; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
 86883  	};
 86884  	Decoder.prototype.parseFieldLiteral = function(n, it) { return this.$val.parseFieldLiteral(n, it); };
 86885  	Decoder.ptr.prototype.callEmit = function(hf) {
 86886  		var d, hf, $s, $r;
 86887  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; d = $f.d; hf = $f.hf; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 86888  		d = this;
 86889  		if (!((d.maxStrLen === 0))) {
 86890  			if (hf.Name.length > d.maxStrLen || hf.Value.length > d.maxStrLen) {
 86891  				$s = -1; return $pkg.ErrStringLength;
 86892  			}
 86893  		}
 86894  		/* */ if (d.emitEnabled) { $s = 1; continue; }
 86895  		/* */ $s = 2; continue;
 86896  		/* if (d.emitEnabled) { */ case 1:
 86897  			$r = d.emit($clone(hf, HeaderField)); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 86898  		/* } */ case 2:
 86899  		$s = -1; return $ifaceNil;
 86900  		/* */ } return; } if ($f === undefined) { $f = { $blk: Decoder.ptr.prototype.callEmit }; } $f.d = d; $f.hf = hf; $f.$s = $s; $f.$r = $r; return $f;
 86901  	};
 86902  	Decoder.prototype.callEmit = function(hf) { return this.$val.callEmit(hf); };
 86903  	Decoder.ptr.prototype.parseDynamicTableSizeUpdate = function() {
 86904  		var _tuple, buf, d, err, size, x, x$1, $s, $r;
 86905  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _tuple = $f._tuple; buf = $f.buf; d = $f.d; err = $f.err; size = $f.size; x = $f.x; x$1 = $f.x$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 86906  		d = this;
 86907  		buf = d.buf;
 86908  		_tuple = readVarInt(5, buf);
 86909  		size = _tuple[0];
 86910  		buf = _tuple[1];
 86911  		err = _tuple[2];
 86912  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 86913  			$s = -1; return err;
 86914  		}
 86915  		if ((x = (new $Uint64(0, d.dynTab.allowedMaxSize)), (size.$high > x.$high || (size.$high === x.$high && size.$low > x.$low)))) {
 86916  			$s = -1; return (x$1 = new DecodingError.ptr(errors.New("dynamic table size update too large")), new x$1.constructor.elem(x$1));
 86917  		}
 86918  		$r = d.dynTab.setMaxSize(((size.$low >>> 0))); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 86919  		d.buf = buf;
 86920  		$s = -1; return $ifaceNil;
 86921  		/* */ } return; } if ($f === undefined) { $f = { $blk: Decoder.ptr.prototype.parseDynamicTableSizeUpdate }; } $f._tuple = _tuple; $f.buf = buf; $f.d = d; $f.err = err; $f.size = size; $f.x = x; $f.x$1 = x$1; $f.$s = $s; $f.$r = $r; return $f;
 86922  	};
 86923  	Decoder.prototype.parseDynamicTableSizeUpdate = function() { return this.$val.parseDynamicTableSizeUpdate(); };
 86924  	readVarInt = function(n, p) {
 86925  		var _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$14, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, b, err, i, m, n, origP, p, remain, x, x$1, x$2, x$3, x$4, x$5;
 86926  		i = new $Uint64(0, 0);
 86927  		remain = sliceType$1.nil;
 86928  		err = $ifaceNil;
 86929  		if (n < 1 || n > 8) {
 86930  			$panic(new $String("bad n"));
 86931  		}
 86932  		if (p.$length === 0) {
 86933  			_tmp = new $Uint64(0, 0);
 86934  			_tmp$1 = p;
 86935  			_tmp$2 = errNeedMore;
 86936  			i = _tmp;
 86937  			remain = _tmp$1;
 86938  			err = _tmp$2;
 86939  			return [i, remain, err];
 86940  		}
 86941  		i = (new $Uint64(0, (0 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 0])));
 86942  		if (n < 8) {
 86943  			i = (x = (x$1 = $shiftLeft64(new $Uint64(0, 1), $flatten64((new $Uint64(0, n)))), new $Uint64(x$1.$high - 0, x$1.$low - 1)), new $Uint64(i.$high & x.$high, (i.$low & x.$low) >>> 0));
 86944  		}
 86945  		if ((x$2 = (x$3 = $shiftLeft64(new $Uint64(0, 1), $flatten64((new $Uint64(0, n)))), new $Uint64(x$3.$high - 0, x$3.$low - 1)), (i.$high < x$2.$high || (i.$high === x$2.$high && i.$low < x$2.$low)))) {
 86946  			_tmp$3 = i;
 86947  			_tmp$4 = $subslice(p, 1);
 86948  			_tmp$5 = $ifaceNil;
 86949  			i = _tmp$3;
 86950  			remain = _tmp$4;
 86951  			err = _tmp$5;
 86952  			return [i, remain, err];
 86953  		}
 86954  		origP = p;
 86955  		p = $subslice(p, 1);
 86956  		m = new $Uint64(0, 0);
 86957  		while (true) {
 86958  			if (!(p.$length > 0)) { break; }
 86959  			b = (0 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 0]);
 86960  			p = $subslice(p, 1);
 86961  			i = (x$4 = $shiftLeft64((new $Uint64(0, ((b & 127) >>> 0))), $flatten64(m)), new $Uint64(i.$high + x$4.$high, i.$low + x$4.$low));
 86962  			if (((b & 128) >>> 0) === 0) {
 86963  				_tmp$6 = i;
 86964  				_tmp$7 = p;
 86965  				_tmp$8 = $ifaceNil;
 86966  				i = _tmp$6;
 86967  				remain = _tmp$7;
 86968  				err = _tmp$8;
 86969  				return [i, remain, err];
 86970  			}
 86971  			m = (x$5 = new $Uint64(0, 7), new $Uint64(m.$high + x$5.$high, m.$low + x$5.$low));
 86972  			if ((m.$high > 0 || (m.$high === 0 && m.$low >= 63))) {
 86973  				_tmp$9 = new $Uint64(0, 0);
 86974  				_tmp$10 = origP;
 86975  				_tmp$11 = new errVarintOverflow.constructor.elem(errVarintOverflow);
 86976  				i = _tmp$9;
 86977  				remain = _tmp$10;
 86978  				err = _tmp$11;
 86979  				return [i, remain, err];
 86980  			}
 86981  		}
 86982  		_tmp$12 = new $Uint64(0, 0);
 86983  		_tmp$13 = origP;
 86984  		_tmp$14 = errNeedMore;
 86985  		i = _tmp$12;
 86986  		remain = _tmp$13;
 86987  		err = _tmp$14;
 86988  		return [i, remain, err];
 86989  	};
 86990  	Decoder.ptr.prototype.readString = function(p, wantStr) {
 86991  		var _r, _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$14, _tmp$15, _tmp$16, _tmp$17, _tmp$18, _tmp$19, _tmp$2, _tmp$20, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, buf, d, err, err$1, isHuff, p, remain, s, strLen, wantStr, x, x$1, $s, $deferred, $r;
 86992  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$10 = $f._tmp$10; _tmp$11 = $f._tmp$11; _tmp$12 = $f._tmp$12; _tmp$13 = $f._tmp$13; _tmp$14 = $f._tmp$14; _tmp$15 = $f._tmp$15; _tmp$16 = $f._tmp$16; _tmp$17 = $f._tmp$17; _tmp$18 = $f._tmp$18; _tmp$19 = $f._tmp$19; _tmp$2 = $f._tmp$2; _tmp$20 = $f._tmp$20; _tmp$3 = $f._tmp$3; _tmp$4 = $f._tmp$4; _tmp$5 = $f._tmp$5; _tmp$6 = $f._tmp$6; _tmp$7 = $f._tmp$7; _tmp$8 = $f._tmp$8; _tmp$9 = $f._tmp$9; _tuple = $f._tuple; buf = $f.buf; d = $f.d; err = $f.err; err$1 = $f.err$1; isHuff = $f.isHuff; p = $f.p; remain = $f.remain; s = $f.s; strLen = $f.strLen; wantStr = $f.wantStr; x = $f.x; x$1 = $f.x$1; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
 86993  		s = "";
 86994  		remain = sliceType$1.nil;
 86995  		err = $ifaceNil;
 86996  		d = this;
 86997  		if (p.$length === 0) {
 86998  			_tmp = "";
 86999  			_tmp$1 = p;
 87000  			_tmp$2 = errNeedMore;
 87001  			s = _tmp;
 87002  			remain = _tmp$1;
 87003  			err = _tmp$2;
 87004  			$s = -1; return [s, remain, err];
 87005  		}
 87006  		isHuff = !(((((0 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 0]) & 128) >>> 0) === 0));
 87007  		_tuple = readVarInt(7, p);
 87008  		strLen = _tuple[0];
 87009  		p = _tuple[1];
 87010  		err = _tuple[2];
 87011  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 87012  			_tmp$3 = "";
 87013  			_tmp$4 = p;
 87014  			_tmp$5 = err;
 87015  			s = _tmp$3;
 87016  			remain = _tmp$4;
 87017  			err = _tmp$5;
 87018  			$s = -1; return [s, remain, err];
 87019  		}
 87020  		if (!((d.maxStrLen === 0)) && (x = (new $Uint64(0, d.maxStrLen)), (strLen.$high > x.$high || (strLen.$high === x.$high && strLen.$low > x.$low)))) {
 87021  			_tmp$6 = "";
 87022  			_tmp$7 = sliceType$1.nil;
 87023  			_tmp$8 = $pkg.ErrStringLength;
 87024  			s = _tmp$6;
 87025  			remain = _tmp$7;
 87026  			err = _tmp$8;
 87027  			$s = -1; return [s, remain, err];
 87028  		}
 87029  		if ((x$1 = (new $Uint64(0, p.$length)), (x$1.$high < strLen.$high || (x$1.$high === strLen.$high && x$1.$low < strLen.$low)))) {
 87030  			_tmp$9 = "";
 87031  			_tmp$10 = p;
 87032  			_tmp$11 = errNeedMore;
 87033  			s = _tmp$9;
 87034  			remain = _tmp$10;
 87035  			err = _tmp$11;
 87036  			$s = -1; return [s, remain, err];
 87037  		}
 87038  		if (!isHuff) {
 87039  			if (wantStr) {
 87040  				s = ($bytesToString($subslice(p, 0, $flatten64(strLen))));
 87041  			}
 87042  			_tmp$12 = s;
 87043  			_tmp$13 = $subslice(p, $flatten64(strLen));
 87044  			_tmp$14 = $ifaceNil;
 87045  			s = _tmp$12;
 87046  			remain = _tmp$13;
 87047  			err = _tmp$14;
 87048  			$s = -1; return [s, remain, err];
 87049  		}
 87050  		/* */ if (wantStr) { $s = 1; continue; }
 87051  		/* */ $s = 2; continue;
 87052  		/* if (wantStr) { */ case 1:
 87053  			_r = bufPool.Get(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 87054  			buf = $assertType(_r, ptrType);
 87055  			buf.Reset();
 87056  			$deferred.push([$methodVal(bufPool, "Put"), [buf]]);
 87057  			err$1 = huffmanDecode(buf, d.maxStrLen, $subslice(p, 0, $flatten64(strLen)));
 87058  			if (!($interfaceIsEqual(err$1, $ifaceNil))) {
 87059  				buf.Reset();
 87060  				_tmp$15 = "";
 87061  				_tmp$16 = sliceType$1.nil;
 87062  				_tmp$17 = err$1;
 87063  				s = _tmp$15;
 87064  				remain = _tmp$16;
 87065  				err = _tmp$17;
 87066  				$s = -1; return [s, remain, err];
 87067  			}
 87068  			s = buf.String();
 87069  			buf.Reset();
 87070  		/* } */ case 2:
 87071  		_tmp$18 = s;
 87072  		_tmp$19 = $subslice(p, $flatten64(strLen));
 87073  		_tmp$20 = $ifaceNil;
 87074  		s = _tmp$18;
 87075  		remain = _tmp$19;
 87076  		err = _tmp$20;
 87077  		$s = -1; return [s, remain, err];
 87078  		/* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if (!$curGoroutine.asleep) { return  [s, remain, err]; } if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: Decoder.ptr.prototype.readString }; } $f._r = _r; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$10 = _tmp$10; $f._tmp$11 = _tmp$11; $f._tmp$12 = _tmp$12; $f._tmp$13 = _tmp$13; $f._tmp$14 = _tmp$14; $f._tmp$15 = _tmp$15; $f._tmp$16 = _tmp$16; $f._tmp$17 = _tmp$17; $f._tmp$18 = _tmp$18; $f._tmp$19 = _tmp$19; $f._tmp$2 = _tmp$2; $f._tmp$20 = _tmp$20; $f._tmp$3 = _tmp$3; $f._tmp$4 = _tmp$4; $f._tmp$5 = _tmp$5; $f._tmp$6 = _tmp$6; $f._tmp$7 = _tmp$7; $f._tmp$8 = _tmp$8; $f._tmp$9 = _tmp$9; $f._tuple = _tuple; $f.buf = buf; $f.d = d; $f.err = err; $f.err$1 = err$1; $f.isHuff = isHuff; $f.p = p; $f.remain = remain; $f.s = s; $f.strLen = strLen; $f.wantStr = wantStr; $f.x = x; $f.x$1 = x$1; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
 87079  	};
 87080  	Decoder.prototype.readString = function(p, wantStr) { return this.$val.readString(p, wantStr); };
 87081  	huffmanDecode = function(buf, maxLen, v) {
 87082  		var _i, _ref, _tmp, _tmp$1, _tmp$2, b, buf, cbits, cur, idx, mask, maxLen, n, sbits, v, x, x$1, x$2, y, y$1, y$2;
 87083  		n = rootHuffmanNode;
 87084  		_tmp = 0;
 87085  		_tmp$1 = 0;
 87086  		_tmp$2 = 0;
 87087  		cur = _tmp;
 87088  		cbits = _tmp$1;
 87089  		sbits = _tmp$2;
 87090  		_ref = v;
 87091  		_i = 0;
 87092  		while (true) {
 87093  			if (!(_i < _ref.$length)) { break; }
 87094  			b = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
 87095  			cur = ((cur << 8 >>> 0) | ((b >>> 0))) >>> 0;
 87096  			cbits = cbits + (8) << 24 >>> 24;
 87097  			sbits = sbits + (8) << 24 >>> 24;
 87098  			while (true) {
 87099  				if (!(cbits >= 8)) { break; }
 87100  				idx = ((((y = ((cbits - 8 << 24 >>> 24)), y < 32 ? (cur >>> y) : 0) >>> 0) << 24 >>> 24));
 87101  				n = (x = n.children, ((idx < 0 || idx >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + idx]));
 87102  				if (n === ptrType$1.nil) {
 87103  					return $pkg.ErrInvalidHuffman;
 87104  				}
 87105  				if (n.children === sliceType$3.nil) {
 87106  					if (!((maxLen === 0)) && (buf.Len() === maxLen)) {
 87107  						return $pkg.ErrStringLength;
 87108  					}
 87109  					buf.WriteByte(n.sym);
 87110  					cbits = cbits - (n.codeLen) << 24 >>> 24;
 87111  					n = rootHuffmanNode;
 87112  					sbits = cbits;
 87113  				} else {
 87114  					cbits = cbits - (8) << 24 >>> 24;
 87115  				}
 87116  			}
 87117  			_i++;
 87118  		}
 87119  		while (true) {
 87120  			if (!(cbits > 0)) { break; }
 87121  			n = (x$1 = n.children, x$2 = ((((y$1 = ((8 - cbits << 24 >>> 24)), y$1 < 32 ? (cur << y$1) : 0) >>> 0) << 24 >>> 24)), ((x$2 < 0 || x$2 >= x$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + x$2]));
 87122  			if (n === ptrType$1.nil) {
 87123  				return $pkg.ErrInvalidHuffman;
 87124  			}
 87125  			if (!(n.children === sliceType$3.nil) || n.codeLen > cbits) {
 87126  				break;
 87127  			}
 87128  			if (!((maxLen === 0)) && (buf.Len() === maxLen)) {
 87129  				return $pkg.ErrStringLength;
 87130  			}
 87131  			buf.WriteByte(n.sym);
 87132  			cbits = cbits - (n.codeLen) << 24 >>> 24;
 87133  			n = rootHuffmanNode;
 87134  			sbits = cbits;
 87135  		}
 87136  		if (sbits > 7) {
 87137  			return $pkg.ErrInvalidHuffman;
 87138  		}
 87139  		mask = ((((y$2 = cbits, y$2 < 32 ? (1 << y$2) : 0) >>> 0) - 1 >>> 0));
 87140  		if (!((((cur & mask) >>> 0) === mask))) {
 87141  			return $pkg.ErrInvalidHuffman;
 87142  		}
 87143  		return $ifaceNil;
 87144  	};
 87145  	newInternalNode = function() {
 87146  		return new node.ptr($makeSlice(sliceType$3, 256), 0, 0);
 87147  	};
 87148  	init = function() {
 87149  		var _i, _ref, code, i;
 87150  		if (false) {
 87151  			$panic(new $String("unexpected size"));
 87152  		}
 87153  		_ref = huffmanCodes;
 87154  		_i = 0;
 87155  		while (true) {
 87156  			if (!(_i < 256)) { break; }
 87157  			i = _i;
 87158  			code = ((_i < 0 || _i >= _ref.length) ? ($throwRuntimeError("index out of range"), undefined) : _ref[_i]);
 87159  			addDecoderNode(((i << 24 >>> 24)), code, ((i < 0 || i >= huffmanCodeLen.length) ? ($throwRuntimeError("index out of range"), undefined) : huffmanCodeLen[i]));
 87160  			_i++;
 87161  		}
 87162  	};
 87163  	addDecoderNode = function(sym, code, codeLen) {
 87164  		var _tmp, _tmp$1, code, codeLen, cur, end, i, i$1, shift, start, sym, x, x$1, x$2, x$3, y, y$1, y$2;
 87165  		cur = rootHuffmanNode;
 87166  		while (true) {
 87167  			if (!(codeLen > 8)) { break; }
 87168  			codeLen = codeLen - (8) << 24 >>> 24;
 87169  			i = ((((y = codeLen, y < 32 ? (code >>> y) : 0) >>> 0) << 24 >>> 24));
 87170  			if ((x = cur.children, ((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i])) === ptrType$1.nil) {
 87171  				(x$1 = cur.children, ((i < 0 || i >= x$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + i] = newInternalNode()));
 87172  			}
 87173  			cur = (x$2 = cur.children, ((i < 0 || i >= x$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + i]));
 87174  		}
 87175  		shift = 8 - codeLen << 24 >>> 24;
 87176  		_tmp = ((((((y$1 = shift, y$1 < 32 ? (code << y$1) : 0) >>> 0) << 24 >>> 24)) >> 0));
 87177  		_tmp$1 = (((y$2 = shift, y$2 < 32 ? (1 << y$2) : 0) >> 0));
 87178  		start = _tmp;
 87179  		end = _tmp$1;
 87180  		i$1 = start;
 87181  		while (true) {
 87182  			if (!(i$1 < (start + end >> 0))) { break; }
 87183  			(x$3 = cur.children, ((i$1 < 0 || i$1 >= x$3.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$3.$array[x$3.$offset + i$1] = new node.ptr(sliceType$3.nil, codeLen, sym)));
 87184  			i$1 = i$1 + (1) >> 0;
 87185  		}
 87186  	};
 87187  	AppendHuffmanString = function(dst, s) {
 87188  		var _index, _tuple, code, dst, i, nbits, rembits, s, t, y;
 87189  		rembits = 8;
 87190  		i = 0;
 87191  		while (true) {
 87192  			if (!(i < s.length)) { break; }
 87193  			if (rembits === 8) {
 87194  				dst = $append(dst, 0);
 87195  			}
 87196  			_tuple = appendByteToHuffmanCode(dst, rembits, s.charCodeAt(i));
 87197  			dst = _tuple[0];
 87198  			rembits = _tuple[1];
 87199  			i = i + (1) >> 0;
 87200  		}
 87201  		if (rembits < 8) {
 87202  			code = 1073741823;
 87203  			nbits = 30;
 87204  			t = ((((y = ((nbits - rembits << 24 >>> 24)), y < 32 ? (code >>> y) : 0) >>> 0) << 24 >>> 24));
 87205  			_index = dst.$length - 1 >> 0;
 87206  			((_index < 0 || _index >= dst.$length) ? ($throwRuntimeError("index out of range"), undefined) : dst.$array[dst.$offset + _index] = ((((_index < 0 || _index >= dst.$length) ? ($throwRuntimeError("index out of range"), undefined) : dst.$array[dst.$offset + _index]) | (t)) >>> 0));
 87207  		}
 87208  		return dst;
 87209  	};
 87210  	$pkg.AppendHuffmanString = AppendHuffmanString;
 87211  	HuffmanEncodeLength = function(s) {
 87212  		var i, n, s, x, x$1;
 87213  		n = new $Uint64(0, 0);
 87214  		i = 0;
 87215  		while (true) {
 87216  			if (!(i < s.length)) { break; }
 87217  			n = (x = (new $Uint64(0, (x$1 = s.charCodeAt(i), ((x$1 < 0 || x$1 >= huffmanCodeLen.length) ? ($throwRuntimeError("index out of range"), undefined) : huffmanCodeLen[x$1])))), new $Uint64(n.$high + x.$high, n.$low + x.$low));
 87218  			i = i + (1) >> 0;
 87219  		}
 87220  		return $div64((new $Uint64(n.$high + 0, n.$low + 7)), new $Uint64(0, 8), false);
 87221  	};
 87222  	$pkg.HuffmanEncodeLength = HuffmanEncodeLength;
 87223  	appendByteToHuffmanCode = function(dst, rembits, c) {
 87224  		var _index, _index$1, c, code, dst, nbits, rembits, t, t$1, y, y$1;
 87225  		code = ((c < 0 || c >= huffmanCodes.length) ? ($throwRuntimeError("index out of range"), undefined) : huffmanCodes[c]);
 87226  		nbits = ((c < 0 || c >= huffmanCodeLen.length) ? ($throwRuntimeError("index out of range"), undefined) : huffmanCodeLen[c]);
 87227  		while (true) {
 87228  			if (rembits > nbits) {
 87229  				t = ((((y = ((rembits - nbits << 24 >>> 24)), y < 32 ? (code << y) : 0) >>> 0) << 24 >>> 24));
 87230  				_index = dst.$length - 1 >> 0;
 87231  				((_index < 0 || _index >= dst.$length) ? ($throwRuntimeError("index out of range"), undefined) : dst.$array[dst.$offset + _index] = ((((_index < 0 || _index >= dst.$length) ? ($throwRuntimeError("index out of range"), undefined) : dst.$array[dst.$offset + _index]) | (t)) >>> 0));
 87232  				rembits = rembits - (nbits) << 24 >>> 24;
 87233  				break;
 87234  			}
 87235  			t$1 = ((((y$1 = ((nbits - rembits << 24 >>> 24)), y$1 < 32 ? (code >>> y$1) : 0) >>> 0) << 24 >>> 24));
 87236  			_index$1 = dst.$length - 1 >> 0;
 87237  			((_index$1 < 0 || _index$1 >= dst.$length) ? ($throwRuntimeError("index out of range"), undefined) : dst.$array[dst.$offset + _index$1] = ((((_index$1 < 0 || _index$1 >= dst.$length) ? ($throwRuntimeError("index out of range"), undefined) : dst.$array[dst.$offset + _index$1]) | (t$1)) >>> 0));
 87238  			nbits = nbits - (rembits) << 24 >>> 24;
 87239  			rembits = 8;
 87240  			if (nbits === 0) {
 87241  				break;
 87242  			}
 87243  			dst = $append(dst, 0);
 87244  		}
 87245  		return [dst, rembits];
 87246  	};
 87247  	headerFieldTable.ptr.prototype.init = function() {
 87248  		var t;
 87249  		t = this;
 87250  		t.byName = {};
 87251  		t.byNameValue = {};
 87252  	};
 87253  	headerFieldTable.prototype.init = function() { return this.$val.init(); };
 87254  	headerFieldTable.ptr.prototype.len = function() {
 87255  		var t;
 87256  		t = this;
 87257  		return t.ents.$length;
 87258  	};
 87259  	headerFieldTable.prototype.len = function() { return this.$val.len(); };
 87260  	headerFieldTable.ptr.prototype.addEntry = function(f) {
 87261  		var _key, _key$1, f, id, t, x, x$1, x$2;
 87262  		t = this;
 87263  		id = (x = (x$1 = (new $Uint64(0, t.len())), x$2 = t.evictCount, new $Uint64(x$1.$high + x$2.$high, x$1.$low + x$2.$low)), new $Uint64(x.$high + 0, x.$low + 1));
 87264  		_key = f.Name; (t.byName || $throwRuntimeError("assignment to entry in nil map"))[$String.keyFor(_key)] = { k: _key, v: id };
 87265  		_key$1 = new pairNameValue.ptr(f.Name, f.Value); (t.byNameValue || $throwRuntimeError("assignment to entry in nil map"))[pairNameValue.keyFor(_key$1)] = { k: _key$1, v: id };
 87266  		t.ents = $append(t.ents, f);
 87267  	};
 87268  	headerFieldTable.prototype.addEntry = function(f) { return this.$val.addEntry(f); };
 87269  	headerFieldTable.ptr.prototype.evictOldest = function(n) {
 87270  		var _entry, _entry$1, _r, f, id, k, k$1, n, p, t, x, x$1, x$10, x$11, x$12, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9, $s, $r;
 87271  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _entry = $f._entry; _entry$1 = $f._entry$1; _r = $f._r; f = $f.f; id = $f.id; k = $f.k; k$1 = $f.k$1; n = $f.n; p = $f.p; t = $f.t; x = $f.x; x$1 = $f.x$1; x$10 = $f.x$10; x$11 = $f.x$11; x$12 = $f.x$12; x$2 = $f.x$2; x$3 = $f.x$3; x$4 = $f.x$4; x$5 = $f.x$5; x$6 = $f.x$6; x$7 = $f.x$7; x$8 = $f.x$8; x$9 = $f.x$9; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 87272  		t = this;
 87273  		/* */ if (n > t.len()) { $s = 1; continue; }
 87274  		/* */ $s = 2; continue;
 87275  		/* if (n > t.len()) { */ case 1:
 87276  			_r = fmt.Sprintf("evictOldest(%v) on table with %v entries", new sliceType([new $Int(n), new $Int(t.len())])); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 87277  			$panic(new $String(_r));
 87278  		/* } */ case 2:
 87279  		k = 0;
 87280  		while (true) {
 87281  			if (!(k < n)) { break; }
 87282  			f = $clone((x = t.ents, ((k < 0 || k >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + k])), HeaderField);
 87283  			id = (x$1 = (x$2 = t.evictCount, x$3 = (new $Uint64(0, k)), new $Uint64(x$2.$high + x$3.$high, x$2.$low + x$3.$low)), new $Uint64(x$1.$high + 0, x$1.$low + 1));
 87284  			if ((x$4 = (_entry = t.byName[$String.keyFor(f.Name)], _entry !== undefined ? _entry.v : new $Uint64(0, 0)), (x$4.$high === id.$high && x$4.$low === id.$low))) {
 87285  				delete t.byName[$String.keyFor(f.Name)];
 87286  			}
 87287  			p = $clone(new pairNameValue.ptr(f.Name, f.Value), pairNameValue);
 87288  			if ((x$5 = (_entry$1 = t.byNameValue[pairNameValue.keyFor(p)], _entry$1 !== undefined ? _entry$1.v : new $Uint64(0, 0)), (x$5.$high === id.$high && x$5.$low === id.$low))) {
 87289  				delete t.byNameValue[pairNameValue.keyFor(p)];
 87290  			}
 87291  			k = k + (1) >> 0;
 87292  		}
 87293  		$copySlice(t.ents, $subslice(t.ents, n));
 87294  		k$1 = t.len() - n >> 0;
 87295  		while (true) {
 87296  			if (!(k$1 < t.len())) { break; }
 87297  			HeaderField.copy((x$6 = t.ents, ((k$1 < 0 || k$1 >= x$6.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$6.$array[x$6.$offset + k$1])), new HeaderField.ptr("", "", false));
 87298  			k$1 = k$1 + (1) >> 0;
 87299  		}
 87300  		t.ents = $subslice(t.ents, 0, (t.len() - n >> 0));
 87301  		if ((x$7 = (x$8 = t.evictCount, x$9 = (new $Uint64(0, n)), new $Uint64(x$8.$high + x$9.$high, x$8.$low + x$9.$low)), x$10 = t.evictCount, (x$7.$high < x$10.$high || (x$7.$high === x$10.$high && x$7.$low < x$10.$low)))) {
 87302  			$panic(new $String("evictCount overflow"));
 87303  		}
 87304  		t.evictCount = (x$11 = t.evictCount, x$12 = (new $Uint64(0, n)), new $Uint64(x$11.$high + x$12.$high, x$11.$low + x$12.$low));
 87305  		$s = -1; return;
 87306  		/* */ } return; } if ($f === undefined) { $f = { $blk: headerFieldTable.ptr.prototype.evictOldest }; } $f._entry = _entry; $f._entry$1 = _entry$1; $f._r = _r; $f.f = f; $f.id = id; $f.k = k; $f.k$1 = k$1; $f.n = n; $f.p = p; $f.t = t; $f.x = x; $f.x$1 = x$1; $f.x$10 = x$10; $f.x$11 = x$11; $f.x$12 = x$12; $f.x$2 = x$2; $f.x$3 = x$3; $f.x$4 = x$4; $f.x$5 = x$5; $f.x$6 = x$6; $f.x$7 = x$7; $f.x$8 = x$8; $f.x$9 = x$9; $f.$s = $s; $f.$r = $r; return $f;
 87307  	};
 87308  	headerFieldTable.prototype.evictOldest = function(n) { return this.$val.evictOldest(n); };
 87309  	headerFieldTable.ptr.prototype.search = function(f) {
 87310  		var _entry, _entry$1, _r, _r$1, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, f, i, id, id$1, nameValueMatch, t, $s, $r;
 87311  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _entry = $f._entry; _entry$1 = $f._entry$1; _r = $f._r; _r$1 = $f._r$1; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tmp$4 = $f._tmp$4; _tmp$5 = $f._tmp$5; f = $f.f; i = $f.i; id = $f.id; id$1 = $f.id$1; nameValueMatch = $f.nameValueMatch; t = $f.t; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 87312  		i = new $Uint64(0, 0);
 87313  		nameValueMatch = false;
 87314  		t = this;
 87315  		/* */ if (!f.Sensitive) { $s = 1; continue; }
 87316  		/* */ $s = 2; continue;
 87317  		/* if (!f.Sensitive) { */ case 1:
 87318  			id = (_entry = t.byNameValue[pairNameValue.keyFor(new pairNameValue.ptr(f.Name, f.Value))], _entry !== undefined ? _entry.v : new $Uint64(0, 0));
 87319  			/* */ if (!((id.$high === 0 && id.$low === 0))) { $s = 3; continue; }
 87320  			/* */ $s = 4; continue;
 87321  			/* if (!((id.$high === 0 && id.$low === 0))) { */ case 3:
 87322  				_r = t.idToIndex(id); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 87323  				_tmp = _r;
 87324  				_tmp$1 = true;
 87325  				i = _tmp;
 87326  				nameValueMatch = _tmp$1;
 87327  				$s = -1; return [i, nameValueMatch];
 87328  			/* } */ case 4:
 87329  		/* } */ case 2:
 87330  		id$1 = (_entry$1 = t.byName[$String.keyFor(f.Name)], _entry$1 !== undefined ? _entry$1.v : new $Uint64(0, 0));
 87331  		/* */ if (!((id$1.$high === 0 && id$1.$low === 0))) { $s = 6; continue; }
 87332  		/* */ $s = 7; continue;
 87333  		/* if (!((id$1.$high === 0 && id$1.$low === 0))) { */ case 6:
 87334  			_r$1 = t.idToIndex(id$1); /* */ $s = 8; case 8: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 87335  			_tmp$2 = _r$1;
 87336  			_tmp$3 = false;
 87337  			i = _tmp$2;
 87338  			nameValueMatch = _tmp$3;
 87339  			$s = -1; return [i, nameValueMatch];
 87340  		/* } */ case 7:
 87341  		_tmp$4 = new $Uint64(0, 0);
 87342  		_tmp$5 = false;
 87343  		i = _tmp$4;
 87344  		nameValueMatch = _tmp$5;
 87345  		$s = -1; return [i, nameValueMatch];
 87346  		/* */ } return; } if ($f === undefined) { $f = { $blk: headerFieldTable.ptr.prototype.search }; } $f._entry = _entry; $f._entry$1 = _entry$1; $f._r = _r; $f._r$1 = _r$1; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tmp$4 = _tmp$4; $f._tmp$5 = _tmp$5; $f.f = f; $f.i = i; $f.id = id; $f.id$1 = id$1; $f.nameValueMatch = nameValueMatch; $f.t = t; $f.$s = $s; $f.$r = $r; return $f;
 87347  	};
 87348  	headerFieldTable.prototype.search = function(f) { return this.$val.search(f); };
 87349  	headerFieldTable.ptr.prototype.idToIndex = function(id) {
 87350  		var _r, id, k, t, x, x$1, x$2, x$3, $s, $r;
 87351  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; id = $f.id; k = $f.k; t = $f.t; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; x$3 = $f.x$3; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 87352  		t = this;
 87353  		/* */ if ((x = t.evictCount, (id.$high < x.$high || (id.$high === x.$high && id.$low <= x.$low)))) { $s = 1; continue; }
 87354  		/* */ $s = 2; continue;
 87355  		/* if ((x = t.evictCount, (id.$high < x.$high || (id.$high === x.$high && id.$low <= x.$low)))) { */ case 1:
 87356  			_r = fmt.Sprintf("id (%v) <= evictCount (%v)", new sliceType([id, t.evictCount])); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 87357  			$panic(new $String(_r));
 87358  		/* } */ case 2:
 87359  		k = (x$1 = (x$2 = t.evictCount, new $Uint64(id.$high - x$2.$high, id.$low - x$2.$low)), new $Uint64(x$1.$high - 0, x$1.$low - 1));
 87360  		if (!(t === staticTable)) {
 87361  			$s = -1; return (x$3 = (new $Uint64(0, t.len())), new $Uint64(x$3.$high - k.$high, x$3.$low - k.$low));
 87362  		}
 87363  		$s = -1; return new $Uint64(k.$high + 0, k.$low + 1);
 87364  		/* */ } return; } if ($f === undefined) { $f = { $blk: headerFieldTable.ptr.prototype.idToIndex }; } $f._r = _r; $f.id = id; $f.k = k; $f.t = t; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.x$3 = x$3; $f.$s = $s; $f.$r = $r; return $f;
 87365  	};
 87366  	headerFieldTable.prototype.idToIndex = function(id) { return this.$val.idToIndex(id); };
 87367  	newStaticTable = function() {
 87368  		var _i, _ref, e, t;
 87369  		t = new headerFieldTable.ptr(sliceType$2.nil, new $Uint64(0, 0), false, false);
 87370  		t.init();
 87371  		_ref = new sliceType$2(staticTableEntries);
 87372  		_i = 0;
 87373  		while (true) {
 87374  			if (!(_i < _ref.$length)) { break; }
 87375  			e = $clone(((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]), HeaderField);
 87376  			t.addEntry($clone(e, HeaderField));
 87377  			_i++;
 87378  		}
 87379  		return t;
 87380  	};
 87381  	ptrType$2.methods = [{prop: "WriteField", name: "WriteField", pkg: "", typ: $funcType([HeaderField], [$error], false)}, {prop: "searchTable", name: "searchTable", pkg: "vendor/golang_org/x/net/http2/hpack", typ: $funcType([HeaderField], [$Uint64, $Bool], false)}, {prop: "SetMaxDynamicTableSize", name: "SetMaxDynamicTableSize", pkg: "", typ: $funcType([$Uint32], [], false)}, {prop: "SetMaxDynamicTableSizeLimit", name: "SetMaxDynamicTableSizeLimit", pkg: "", typ: $funcType([$Uint32], [], false)}, {prop: "shouldIndex", name: "shouldIndex", pkg: "vendor/golang_org/x/net/http2/hpack", typ: $funcType([HeaderField], [$Bool], false)}];
 87382  	DecodingError.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}];
 87383  	InvalidIndexError.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}];
 87384  	HeaderField.methods = [{prop: "IsPseudo", name: "IsPseudo", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Size", name: "Size", pkg: "", typ: $funcType([], [$Uint32], false)}];
 87385  	ptrType$3.methods = [{prop: "SetMaxStringLength", name: "SetMaxStringLength", pkg: "", typ: $funcType([$Int], [], false)}, {prop: "SetEmitFunc", name: "SetEmitFunc", pkg: "", typ: $funcType([funcType], [], false)}, {prop: "SetEmitEnabled", name: "SetEmitEnabled", pkg: "", typ: $funcType([$Bool], [], false)}, {prop: "EmitEnabled", name: "EmitEnabled", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "SetMaxDynamicTableSize", name: "SetMaxDynamicTableSize", pkg: "", typ: $funcType([$Uint32], [], false)}, {prop: "SetAllowedMaxDynamicTableSize", name: "SetAllowedMaxDynamicTableSize", pkg: "", typ: $funcType([$Uint32], [], false)}, {prop: "maxTableIndex", name: "maxTableIndex", pkg: "vendor/golang_org/x/net/http2/hpack", typ: $funcType([], [$Int], false)}, {prop: "at", name: "at", pkg: "vendor/golang_org/x/net/http2/hpack", typ: $funcType([$Uint64], [HeaderField, $Bool], false)}, {prop: "DecodeFull", name: "DecodeFull", pkg: "", typ: $funcType([sliceType$1], [sliceType$2, $error], false)}, {prop: "Close", name: "Close", pkg: "", typ: $funcType([], [$error], false)}, {prop: "Write", name: "Write", pkg: "", typ: $funcType([sliceType$1], [$Int, $error], false)}, {prop: "parseHeaderFieldRepr", name: "parseHeaderFieldRepr", pkg: "vendor/golang_org/x/net/http2/hpack", typ: $funcType([], [$error], false)}, {prop: "parseFieldIndexed", name: "parseFieldIndexed", pkg: "vendor/golang_org/x/net/http2/hpack", typ: $funcType([], [$error], false)}, {prop: "parseFieldLiteral", name: "parseFieldLiteral", pkg: "vendor/golang_org/x/net/http2/hpack", typ: $funcType([$Uint8, indexType], [$error], false)}, {prop: "callEmit", name: "callEmit", pkg: "vendor/golang_org/x/net/http2/hpack", typ: $funcType([HeaderField], [$error], false)}, {prop: "parseDynamicTableSizeUpdate", name: "parseDynamicTableSizeUpdate", pkg: "vendor/golang_org/x/net/http2/hpack", typ: $funcType([], [$error], false)}, {prop: "readString", name: "readString", pkg: "vendor/golang_org/x/net/http2/hpack", typ: $funcType([sliceType$1, $Bool], [$String, sliceType$1, $error], false)}];
 87386  	ptrType$4.methods = [{prop: "setMaxSize", name: "setMaxSize", pkg: "vendor/golang_org/x/net/http2/hpack", typ: $funcType([$Uint32], [], false)}, {prop: "add", name: "add", pkg: "vendor/golang_org/x/net/http2/hpack", typ: $funcType([HeaderField], [], false)}, {prop: "evict", name: "evict", pkg: "vendor/golang_org/x/net/http2/hpack", typ: $funcType([], [], false)}];
 87387  	indexType.methods = [{prop: "indexed", name: "indexed", pkg: "vendor/golang_org/x/net/http2/hpack", typ: $funcType([], [$Bool], false)}, {prop: "sensitive", name: "sensitive", pkg: "vendor/golang_org/x/net/http2/hpack", typ: $funcType([], [$Bool], false)}];
 87388  	ptrType$5.methods = [{prop: "init", name: "init", pkg: "vendor/golang_org/x/net/http2/hpack", typ: $funcType([], [], false)}, {prop: "len", name: "len", pkg: "vendor/golang_org/x/net/http2/hpack", typ: $funcType([], [$Int], false)}, {prop: "addEntry", name: "addEntry", pkg: "vendor/golang_org/x/net/http2/hpack", typ: $funcType([HeaderField], [], false)}, {prop: "evictOldest", name: "evictOldest", pkg: "vendor/golang_org/x/net/http2/hpack", typ: $funcType([$Int], [], false)}, {prop: "search", name: "search", pkg: "vendor/golang_org/x/net/http2/hpack", typ: $funcType([HeaderField], [$Uint64, $Bool], false)}, {prop: "idToIndex", name: "idToIndex", pkg: "vendor/golang_org/x/net/http2/hpack", typ: $funcType([$Uint64], [$Uint64], false)}];
 87389  	Encoder.init("vendor/golang_org/x/net/http2/hpack", [{prop: "dynTab", name: "dynTab", anonymous: false, exported: false, typ: dynamicTable, tag: ""}, {prop: "minSize", name: "minSize", anonymous: false, exported: false, typ: $Uint32, tag: ""}, {prop: "maxSizeLimit", name: "maxSizeLimit", anonymous: false, exported: false, typ: $Uint32, tag: ""}, {prop: "tableSizeUpdate", name: "tableSizeUpdate", anonymous: false, exported: false, typ: $Bool, tag: ""}, {prop: "w", name: "w", anonymous: false, exported: false, typ: io.Writer, tag: ""}, {prop: "buf", name: "buf", anonymous: false, exported: false, typ: sliceType$1, tag: ""}]);
 87390  	DecodingError.init("", [{prop: "Err", name: "Err", anonymous: false, exported: true, typ: $error, tag: ""}]);
 87391  	HeaderField.init("", [{prop: "Name", name: "Name", anonymous: false, exported: true, typ: $String, tag: ""}, {prop: "Value", name: "Value", anonymous: false, exported: true, typ: $String, tag: ""}, {prop: "Sensitive", name: "Sensitive", anonymous: false, exported: true, typ: $Bool, tag: ""}]);
 87392  	Decoder.init("vendor/golang_org/x/net/http2/hpack", [{prop: "dynTab", name: "dynTab", anonymous: false, exported: false, typ: dynamicTable, tag: ""}, {prop: "emit", name: "emit", anonymous: false, exported: false, typ: funcType, tag: ""}, {prop: "emitEnabled", name: "emitEnabled", anonymous: false, exported: false, typ: $Bool, tag: ""}, {prop: "maxStrLen", name: "maxStrLen", anonymous: false, exported: false, typ: $Int, tag: ""}, {prop: "buf", name: "buf", anonymous: false, exported: false, typ: sliceType$1, tag: ""}, {prop: "saveBuf", name: "saveBuf", anonymous: false, exported: false, typ: bytes.Buffer, tag: ""}]);
 87393  	dynamicTable.init("vendor/golang_org/x/net/http2/hpack", [{prop: "table", name: "table", anonymous: false, exported: false, typ: headerFieldTable, tag: ""}, {prop: "size", name: "size", anonymous: false, exported: false, typ: $Uint32, tag: ""}, {prop: "maxSize", name: "maxSize", anonymous: false, exported: false, typ: $Uint32, tag: ""}, {prop: "allowedMaxSize", name: "allowedMaxSize", anonymous: false, exported: false, typ: $Uint32, tag: ""}]);
 87394  	node.init("vendor/golang_org/x/net/http2/hpack", [{prop: "children", name: "children", anonymous: false, exported: false, typ: sliceType$3, tag: ""}, {prop: "codeLen", name: "codeLen", anonymous: false, exported: false, typ: $Uint8, tag: ""}, {prop: "sym", name: "sym", anonymous: false, exported: false, typ: $Uint8, tag: ""}]);
 87395  	headerFieldTable.init("vendor/golang_org/x/net/http2/hpack", [{prop: "ents", name: "ents", anonymous: false, exported: false, typ: sliceType$2, tag: ""}, {prop: "evictCount", name: "evictCount", anonymous: false, exported: false, typ: $Uint64, tag: ""}, {prop: "byName", name: "byName", anonymous: false, exported: false, typ: mapType, tag: ""}, {prop: "byNameValue", name: "byNameValue", anonymous: false, exported: false, typ: mapType$1, tag: ""}]);
 87396  	pairNameValue.init("vendor/golang_org/x/net/http2/hpack", [{prop: "name", name: "name", anonymous: false, exported: false, typ: $String, tag: ""}, {prop: "value", name: "value", anonymous: false, exported: false, typ: $String, tag: ""}]);
 87397  	$init = function() {
 87398  		$pkg.$init = function() {};
 87399  		/* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 87400  		$r = bytes.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 87401  		$r = errors.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 87402  		$r = fmt.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 87403  		$r = io.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 87404  		$r = sync.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 87405  		$pkg.ErrStringLength = errors.New("hpack: string too long");
 87406  		errNeedMore = errors.New("need more data");
 87407  		errVarintOverflow = new DecodingError.ptr(errors.New("varint integer overflow"));
 87408  		bufPool = new sync.Pool.ptr(0, 0, sliceType.nil, (function() {
 87409  			return new bytes.Buffer.ptr(sliceType$1.nil, 0, arrayType.zero(), 0);
 87410  		}));
 87411  		$pkg.ErrInvalidHuffman = errors.New("hpack: invalid Huffman-encoded data");
 87412  		rootHuffmanNode = newInternalNode();
 87413  		staticTableEntries = $toNativeArray($kindStruct, [new HeaderField.ptr(":authority", "", false), new HeaderField.ptr(":method", "GET", false), new HeaderField.ptr(":method", "POST", false), new HeaderField.ptr(":path", "/", false), new HeaderField.ptr(":path", "/index.html", false), new HeaderField.ptr(":scheme", "http", false), new HeaderField.ptr(":scheme", "https", false), new HeaderField.ptr(":status", "200", false), new HeaderField.ptr(":status", "204", false), new HeaderField.ptr(":status", "206", false), new HeaderField.ptr(":status", "304", false), new HeaderField.ptr(":status", "400", false), new HeaderField.ptr(":status", "404", false), new HeaderField.ptr(":status", "500", false), new HeaderField.ptr("accept-charset", "", false), new HeaderField.ptr("accept-encoding", "gzip, deflate", false), new HeaderField.ptr("accept-language", "", false), new HeaderField.ptr("accept-ranges", "", false), new HeaderField.ptr("accept", "", false), new HeaderField.ptr("access-control-allow-origin", "", false), new HeaderField.ptr("age", "", false), new HeaderField.ptr("allow", "", false), new HeaderField.ptr("authorization", "", false), new HeaderField.ptr("cache-control", "", false), new HeaderField.ptr("content-disposition", "", false), new HeaderField.ptr("content-encoding", "", false), new HeaderField.ptr("content-language", "", false), new HeaderField.ptr("content-length", "", false), new HeaderField.ptr("content-location", "", false), new HeaderField.ptr("content-range", "", false), new HeaderField.ptr("content-type", "", false), new HeaderField.ptr("cookie", "", false), new HeaderField.ptr("date", "", false), new HeaderField.ptr("etag", "", false), new HeaderField.ptr("expect", "", false), new HeaderField.ptr("expires", "", false), new HeaderField.ptr("from", "", false), new HeaderField.ptr("host", "", false), new HeaderField.ptr("if-match", "", false), new HeaderField.ptr("if-modified-since", "", false), new HeaderField.ptr("if-none-match", "", false), new HeaderField.ptr("if-range", "", false), new HeaderField.ptr("if-unmodified-since", "", false), new HeaderField.ptr("last-modified", "", false), new HeaderField.ptr("link", "", false), new HeaderField.ptr("location", "", false), new HeaderField.ptr("max-forwards", "", false), new HeaderField.ptr("proxy-authenticate", "", false), new HeaderField.ptr("proxy-authorization", "", false), new HeaderField.ptr("range", "", false), new HeaderField.ptr("referer", "", false), new HeaderField.ptr("refresh", "", false), new HeaderField.ptr("retry-after", "", false), new HeaderField.ptr("server", "", false), new HeaderField.ptr("set-cookie", "", false), new HeaderField.ptr("strict-transport-security", "", false), new HeaderField.ptr("transfer-encoding", "", false), new HeaderField.ptr("user-agent", "", false), new HeaderField.ptr("vary", "", false), new HeaderField.ptr("via", "", false), new HeaderField.ptr("www-authenticate", "", false)]);
 87414  		staticTable = newStaticTable();
 87415  		huffmanCodes = $toNativeArray($kindUint32, [8184, 8388568, 268435426, 268435427, 268435428, 268435429, 268435430, 268435431, 268435432, 16777194, 1073741820, 268435433, 268435434, 1073741821, 268435435, 268435436, 268435437, 268435438, 268435439, 268435440, 268435441, 268435442, 1073741822, 268435443, 268435444, 268435445, 268435446, 268435447, 268435448, 268435449, 268435450, 268435451, 20, 1016, 1017, 4090, 8185, 21, 248, 2042, 1018, 1019, 249, 2043, 250, 22, 23, 24, 0, 1, 2, 25, 26, 27, 28, 29, 30, 31, 92, 251, 32764, 32, 4091, 1020, 8186, 33, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 252, 115, 253, 8187, 524272, 8188, 16380, 34, 32765, 3, 35, 4, 36, 5, 37, 38, 39, 6, 116, 117, 40, 41, 42, 7, 43, 118, 44, 8, 9, 45, 119, 120, 121, 122, 123, 32766, 2044, 16381, 8189, 268435452, 1048550, 4194258, 1048551, 1048552, 4194259, 4194260, 4194261, 8388569, 4194262, 8388570, 8388571, 8388572, 8388573, 8388574, 16777195, 8388575, 16777196, 16777197, 4194263, 8388576, 16777198, 8388577, 8388578, 8388579, 8388580, 2097116, 4194264, 8388581, 4194265, 8388582, 8388583, 16777199, 4194266, 2097117, 1048553, 4194267, 4194268, 8388584, 8388585, 2097118, 8388586, 4194269, 4194270, 16777200, 2097119, 4194271, 8388587, 8388588, 2097120, 2097121, 4194272, 2097122, 8388589, 4194273, 8388590, 8388591, 1048554, 4194274, 4194275, 4194276, 8388592, 4194277, 4194278, 8388593, 67108832, 67108833, 1048555, 524273, 4194279, 8388594, 4194280, 33554412, 67108834, 67108835, 67108836, 134217694, 134217695, 67108837, 16777201, 33554413, 524274, 2097123, 67108838, 134217696, 134217697, 67108839, 134217698, 16777202, 2097124, 2097125, 67108840, 67108841, 268435453, 134217699, 134217700, 134217701, 1048556, 16777203, 1048557, 2097126, 4194281, 2097127, 2097128, 8388595, 4194282, 4194283, 33554414, 33554415, 16777204, 16777205, 67108842, 8388596, 67108843, 134217702, 67108844, 67108845, 134217703, 134217704, 134217705, 134217706, 134217707, 268435454, 134217708, 134217709, 134217710, 134217711, 134217712, 67108846]);
 87416  		huffmanCodeLen = $toNativeArray($kindUint8, [13, 23, 28, 28, 28, 28, 28, 28, 28, 24, 30, 28, 28, 30, 28, 28, 28, 28, 28, 28, 28, 28, 30, 28, 28, 28, 28, 28, 28, 28, 28, 28, 6, 10, 10, 12, 13, 6, 8, 11, 10, 10, 8, 11, 8, 6, 6, 6, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 7, 8, 15, 6, 12, 10, 13, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 8, 7, 8, 13, 19, 13, 14, 6, 15, 5, 6, 5, 6, 5, 6, 6, 6, 5, 7, 7, 6, 6, 6, 5, 6, 7, 6, 5, 5, 6, 7, 7, 7, 7, 7, 15, 11, 14, 13, 28, 20, 22, 20, 20, 22, 22, 22, 23, 22, 23, 23, 23, 23, 23, 24, 23, 24, 24, 22, 23, 24, 23, 23, 23, 23, 21, 22, 23, 22, 23, 23, 24, 22, 21, 20, 22, 22, 23, 23, 21, 23, 22, 22, 24, 21, 22, 23, 23, 21, 21, 22, 21, 23, 22, 23, 23, 20, 22, 22, 22, 23, 22, 22, 23, 26, 26, 20, 19, 22, 23, 22, 25, 26, 26, 26, 27, 27, 26, 24, 25, 19, 21, 26, 27, 27, 26, 27, 24, 21, 21, 26, 26, 28, 27, 27, 27, 20, 24, 20, 21, 22, 21, 21, 23, 22, 22, 25, 25, 24, 24, 26, 23, 26, 27, 26, 26, 27, 27, 27, 27, 27, 28, 27, 27, 27, 27, 27, 26]);
 87417  		init();
 87418  		/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
 87419  	};
 87420  	$pkg.$init = $init;
 87421  	return $pkg;
 87422  })();
 87423  $packages["vendor/golang_org/x/text/transform"] = (function() {
 87424  	var $pkg = {}, $init, bytes, errors, io, utf8, errInconsistentByteCount, errShortInternal;
 87425  	bytes = $packages["bytes"];
 87426  	errors = $packages["errors"];
 87427  	io = $packages["io"];
 87428  	utf8 = $packages["unicode/utf8"];
 87429  	$init = function() {
 87430  		$pkg.$init = function() {};
 87431  		/* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 87432  		$r = bytes.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 87433  		$r = errors.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 87434  		$r = io.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 87435  		$r = utf8.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 87436  		$pkg.ErrShortDst = errors.New("transform: short destination buffer");
 87437  		$pkg.ErrShortSrc = errors.New("transform: short source buffer");
 87438  		$pkg.ErrEndOfSpan = errors.New("transform: input and output are not identical");
 87439  		errInconsistentByteCount = errors.New("transform: inconsistent byte count returned");
 87440  		errShortInternal = errors.New("transform: short internal buffer");
 87441  		/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
 87442  	};
 87443  	$pkg.$init = $init;
 87444  	return $pkg;
 87445  })();
 87446  $packages["vendor/golang_org/x/text/unicode/bidi"] = (function() {
 87447  	var $pkg = {}, $init, list, fmt, log, sort, utf8, Properties, bidiTrie, Class, sliceType$2, arrayType$3, sliceType$8, ptrType$11, trie, controlByteToClass, bidiValues, bidiIndex, LookupRune, Lookup, LookupString, newBidiTrie;
 87448  	list = $packages["container/list"];
 87449  	fmt = $packages["fmt"];
 87450  	log = $packages["log"];
 87451  	sort = $packages["sort"];
 87452  	utf8 = $packages["unicode/utf8"];
 87453  	Properties = $pkg.Properties = $newType(0, $kindStruct, "bidi.Properties", true, "vendor/golang_org/x/text/unicode/bidi", true, function(entry_, last_) {
 87454  		this.$val = this;
 87455  		if (arguments.length === 0) {
 87456  			this.entry = 0;
 87457  			this.last = 0;
 87458  			return;
 87459  		}
 87460  		this.entry = entry_;
 87461  		this.last = last_;
 87462  	});
 87463  	bidiTrie = $pkg.bidiTrie = $newType(0, $kindStruct, "bidi.bidiTrie", true, "vendor/golang_org/x/text/unicode/bidi", false, function() {
 87464  		this.$val = this;
 87465  		if (arguments.length === 0) {
 87466  			return;
 87467  		}
 87468  	});
 87469  	Class = $pkg.Class = $newType(4, $kindUint, "bidi.Class", true, "vendor/golang_org/x/text/unicode/bidi", true, null);
 87470  	sliceType$2 = $sliceType(Class);
 87471  	arrayType$3 = $arrayType($Uint8, 4);
 87472  	sliceType$8 = $sliceType($Uint8);
 87473  	ptrType$11 = $ptrType(bidiTrie);
 87474  	Properties.ptr.prototype.Class = function() {
 87475  		var c, p, x;
 87476  		p = this;
 87477  		c = ((((p.entry & 15) >>> 0) >>> 0));
 87478  		if (c === 14) {
 87479  			c = (x = (p.last & 15) >>> 0, ((x < 0 || x >= controlByteToClass.length) ? ($throwRuntimeError("index out of range"), undefined) : controlByteToClass[x]));
 87480  		}
 87481  		return c;
 87482  	};
 87483  	Properties.prototype.Class = function() { return this.$val.Class(); };
 87484  	Properties.ptr.prototype.IsBracket = function() {
 87485  		var p;
 87486  		p = this;
 87487  		return !((((p.entry & 240) >>> 0) === 0));
 87488  	};
 87489  	Properties.prototype.IsBracket = function() { return this.$val.IsBracket(); };
 87490  	Properties.ptr.prototype.IsOpeningBracket = function() {
 87491  		var p;
 87492  		p = this;
 87493  		return !((((p.entry & 16) >>> 0) === 0));
 87494  	};
 87495  	Properties.prototype.IsOpeningBracket = function() { return this.$val.IsOpeningBracket(); };
 87496  	LookupRune = function(r) {
 87497  		var _tuple, buf, n, p, r, size;
 87498  		p = new Properties.ptr(0, 0);
 87499  		size = 0;
 87500  		buf = arrayType$3.zero();
 87501  		n = utf8.EncodeRune(new sliceType$8(buf), r);
 87502  		_tuple = Lookup($subslice(new sliceType$8(buf), 0, n));
 87503  		Properties.copy(p, _tuple[0]);
 87504  		size = _tuple[1];
 87505  		return [p, size];
 87506  	};
 87507  	$pkg.LookupRune = LookupRune;
 87508  	Lookup = function(s) {
 87509  		var _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$14, _tmp$15, _tmp$16, _tmp$17, _tmp$18, _tmp$19, _tmp$2, _tmp$20, _tmp$21, _tmp$22, _tmp$23, _tmp$24, _tmp$25, _tmp$26, _tmp$27, _tmp$28, _tmp$29, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, c0, c1, c1$1, c1$2, c2, c2$1, c3, i, i$1, i$2, o, o$1, p, s, sz;
 87510  		p = new Properties.ptr(0, 0);
 87511  		sz = 0;
 87512  		c0 = (0 >= s.$length ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + 0]);
 87513  		if (c0 < 128) {
 87514  			_tmp = new Properties.ptr(((c0 < 0 || c0 >= bidiValues.length) ? ($throwRuntimeError("index out of range"), undefined) : bidiValues[c0]), 0);
 87515  			_tmp$1 = 1;
 87516  			Properties.copy(p, _tmp);
 87517  			sz = _tmp$1;
 87518  			return [p, sz];
 87519  		} else if (c0 < 194) {
 87520  			_tmp$2 = new Properties.ptr(0, 0);
 87521  			_tmp$3 = 1;
 87522  			Properties.copy(p, _tmp$2);
 87523  			sz = _tmp$3;
 87524  			return [p, sz];
 87525  		} else if (c0 < 224) {
 87526  			if (s.$length < 2) {
 87527  				_tmp$4 = new Properties.ptr(0, 0);
 87528  				_tmp$5 = 0;
 87529  				Properties.copy(p, _tmp$4);
 87530  				sz = _tmp$5;
 87531  				return [p, sz];
 87532  			}
 87533  			i = ((c0 < 0 || c0 >= bidiIndex.length) ? ($throwRuntimeError("index out of range"), undefined) : bidiIndex[c0]);
 87534  			c1 = (1 >= s.$length ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + 1]);
 87535  			if (c1 < 128 || 192 <= c1) {
 87536  				_tmp$6 = new Properties.ptr(0, 0);
 87537  				_tmp$7 = 1;
 87538  				Properties.copy(p, _tmp$6);
 87539  				sz = _tmp$7;
 87540  				return [p, sz];
 87541  			}
 87542  			_tmp$8 = new Properties.ptr(trie.lookupValue(((i >>> 0)), c1), 0);
 87543  			_tmp$9 = 2;
 87544  			Properties.copy(p, _tmp$8);
 87545  			sz = _tmp$9;
 87546  			return [p, sz];
 87547  		} else if (c0 < 240) {
 87548  			if (s.$length < 3) {
 87549  				_tmp$10 = new Properties.ptr(0, 0);
 87550  				_tmp$11 = 0;
 87551  				Properties.copy(p, _tmp$10);
 87552  				sz = _tmp$11;
 87553  				return [p, sz];
 87554  			}
 87555  			i$1 = ((c0 < 0 || c0 >= bidiIndex.length) ? ($throwRuntimeError("index out of range"), undefined) : bidiIndex[c0]);
 87556  			c1$1 = (1 >= s.$length ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + 1]);
 87557  			if (c1$1 < 128 || 192 <= c1$1) {
 87558  				_tmp$12 = new Properties.ptr(0, 0);
 87559  				_tmp$13 = 1;
 87560  				Properties.copy(p, _tmp$12);
 87561  				sz = _tmp$13;
 87562  				return [p, sz];
 87563  			}
 87564  			o = (((i$1 >>> 0)) << 6 >>> 0) + ((c1$1 >>> 0)) >>> 0;
 87565  			i$1 = ((o < 0 || o >= bidiIndex.length) ? ($throwRuntimeError("index out of range"), undefined) : bidiIndex[o]);
 87566  			c2 = (2 >= s.$length ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + 2]);
 87567  			if (c2 < 128 || 192 <= c2) {
 87568  				_tmp$14 = new Properties.ptr(0, 0);
 87569  				_tmp$15 = 1;
 87570  				Properties.copy(p, _tmp$14);
 87571  				sz = _tmp$15;
 87572  				return [p, sz];
 87573  			}
 87574  			_tmp$16 = new Properties.ptr(trie.lookupValue(((i$1 >>> 0)), c2), c2);
 87575  			_tmp$17 = 3;
 87576  			Properties.copy(p, _tmp$16);
 87577  			sz = _tmp$17;
 87578  			return [p, sz];
 87579  		} else if (c0 < 248) {
 87580  			if (s.$length < 4) {
 87581  				_tmp$18 = new Properties.ptr(0, 0);
 87582  				_tmp$19 = 0;
 87583  				Properties.copy(p, _tmp$18);
 87584  				sz = _tmp$19;
 87585  				return [p, sz];
 87586  			}
 87587  			i$2 = ((c0 < 0 || c0 >= bidiIndex.length) ? ($throwRuntimeError("index out of range"), undefined) : bidiIndex[c0]);
 87588  			c1$2 = (1 >= s.$length ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + 1]);
 87589  			if (c1$2 < 128 || 192 <= c1$2) {
 87590  				_tmp$20 = new Properties.ptr(0, 0);
 87591  				_tmp$21 = 1;
 87592  				Properties.copy(p, _tmp$20);
 87593  				sz = _tmp$21;
 87594  				return [p, sz];
 87595  			}
 87596  			o$1 = (((i$2 >>> 0)) << 6 >>> 0) + ((c1$2 >>> 0)) >>> 0;
 87597  			i$2 = ((o$1 < 0 || o$1 >= bidiIndex.length) ? ($throwRuntimeError("index out of range"), undefined) : bidiIndex[o$1]);
 87598  			c2$1 = (2 >= s.$length ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + 2]);
 87599  			if (c2$1 < 128 || 192 <= c2$1) {
 87600  				_tmp$22 = new Properties.ptr(0, 0);
 87601  				_tmp$23 = 1;
 87602  				Properties.copy(p, _tmp$22);
 87603  				sz = _tmp$23;
 87604  				return [p, sz];
 87605  			}
 87606  			o$1 = (((i$2 >>> 0)) << 6 >>> 0) + ((c2$1 >>> 0)) >>> 0;
 87607  			i$2 = ((o$1 < 0 || o$1 >= bidiIndex.length) ? ($throwRuntimeError("index out of range"), undefined) : bidiIndex[o$1]);
 87608  			c3 = (3 >= s.$length ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + 3]);
 87609  			if (c3 < 128 || 192 <= c3) {
 87610  				_tmp$24 = new Properties.ptr(0, 0);
 87611  				_tmp$25 = 1;
 87612  				Properties.copy(p, _tmp$24);
 87613  				sz = _tmp$25;
 87614  				return [p, sz];
 87615  			}
 87616  			_tmp$26 = new Properties.ptr(trie.lookupValue(((i$2 >>> 0)), c3), 0);
 87617  			_tmp$27 = 4;
 87618  			Properties.copy(p, _tmp$26);
 87619  			sz = _tmp$27;
 87620  			return [p, sz];
 87621  		}
 87622  		_tmp$28 = new Properties.ptr(0, 0);
 87623  		_tmp$29 = 1;
 87624  		Properties.copy(p, _tmp$28);
 87625  		sz = _tmp$29;
 87626  		return [p, sz];
 87627  	};
 87628  	$pkg.Lookup = Lookup;
 87629  	LookupString = function(s) {
 87630  		var _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$14, _tmp$15, _tmp$16, _tmp$17, _tmp$18, _tmp$19, _tmp$2, _tmp$20, _tmp$21, _tmp$22, _tmp$23, _tmp$24, _tmp$25, _tmp$26, _tmp$27, _tmp$28, _tmp$29, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, c0, c1, c1$1, c1$2, c2, c2$1, c3, i, i$1, i$2, o, o$1, p, s, sz;
 87631  		p = new Properties.ptr(0, 0);
 87632  		sz = 0;
 87633  		c0 = s.charCodeAt(0);
 87634  		if (c0 < 128) {
 87635  			_tmp = new Properties.ptr(((c0 < 0 || c0 >= bidiValues.length) ? ($throwRuntimeError("index out of range"), undefined) : bidiValues[c0]), 0);
 87636  			_tmp$1 = 1;
 87637  			Properties.copy(p, _tmp);
 87638  			sz = _tmp$1;
 87639  			return [p, sz];
 87640  		} else if (c0 < 194) {
 87641  			_tmp$2 = new Properties.ptr(0, 0);
 87642  			_tmp$3 = 1;
 87643  			Properties.copy(p, _tmp$2);
 87644  			sz = _tmp$3;
 87645  			return [p, sz];
 87646  		} else if (c0 < 224) {
 87647  			if (s.length < 2) {
 87648  				_tmp$4 = new Properties.ptr(0, 0);
 87649  				_tmp$5 = 0;
 87650  				Properties.copy(p, _tmp$4);
 87651  				sz = _tmp$5;
 87652  				return [p, sz];
 87653  			}
 87654  			i = ((c0 < 0 || c0 >= bidiIndex.length) ? ($throwRuntimeError("index out of range"), undefined) : bidiIndex[c0]);
 87655  			c1 = s.charCodeAt(1);
 87656  			if (c1 < 128 || 192 <= c1) {
 87657  				_tmp$6 = new Properties.ptr(0, 0);
 87658  				_tmp$7 = 1;
 87659  				Properties.copy(p, _tmp$6);
 87660  				sz = _tmp$7;
 87661  				return [p, sz];
 87662  			}
 87663  			_tmp$8 = new Properties.ptr(trie.lookupValue(((i >>> 0)), c1), 0);
 87664  			_tmp$9 = 2;
 87665  			Properties.copy(p, _tmp$8);
 87666  			sz = _tmp$9;
 87667  			return [p, sz];
 87668  		} else if (c0 < 240) {
 87669  			if (s.length < 3) {
 87670  				_tmp$10 = new Properties.ptr(0, 0);
 87671  				_tmp$11 = 0;
 87672  				Properties.copy(p, _tmp$10);
 87673  				sz = _tmp$11;
 87674  				return [p, sz];
 87675  			}
 87676  			i$1 = ((c0 < 0 || c0 >= bidiIndex.length) ? ($throwRuntimeError("index out of range"), undefined) : bidiIndex[c0]);
 87677  			c1$1 = s.charCodeAt(1);
 87678  			if (c1$1 < 128 || 192 <= c1$1) {
 87679  				_tmp$12 = new Properties.ptr(0, 0);
 87680  				_tmp$13 = 1;
 87681  				Properties.copy(p, _tmp$12);
 87682  				sz = _tmp$13;
 87683  				return [p, sz];
 87684  			}
 87685  			o = (((i$1 >>> 0)) << 6 >>> 0) + ((c1$1 >>> 0)) >>> 0;
 87686  			i$1 = ((o < 0 || o >= bidiIndex.length) ? ($throwRuntimeError("index out of range"), undefined) : bidiIndex[o]);
 87687  			c2 = s.charCodeAt(2);
 87688  			if (c2 < 128 || 192 <= c2) {
 87689  				_tmp$14 = new Properties.ptr(0, 0);
 87690  				_tmp$15 = 1;
 87691  				Properties.copy(p, _tmp$14);
 87692  				sz = _tmp$15;
 87693  				return [p, sz];
 87694  			}
 87695  			_tmp$16 = new Properties.ptr(trie.lookupValue(((i$1 >>> 0)), c2), c2);
 87696  			_tmp$17 = 3;
 87697  			Properties.copy(p, _tmp$16);
 87698  			sz = _tmp$17;
 87699  			return [p, sz];
 87700  		} else if (c0 < 248) {
 87701  			if (s.length < 4) {
 87702  				_tmp$18 = new Properties.ptr(0, 0);
 87703  				_tmp$19 = 0;
 87704  				Properties.copy(p, _tmp$18);
 87705  				sz = _tmp$19;
 87706  				return [p, sz];
 87707  			}
 87708  			i$2 = ((c0 < 0 || c0 >= bidiIndex.length) ? ($throwRuntimeError("index out of range"), undefined) : bidiIndex[c0]);
 87709  			c1$2 = s.charCodeAt(1);
 87710  			if (c1$2 < 128 || 192 <= c1$2) {
 87711  				_tmp$20 = new Properties.ptr(0, 0);
 87712  				_tmp$21 = 1;
 87713  				Properties.copy(p, _tmp$20);
 87714  				sz = _tmp$21;
 87715  				return [p, sz];
 87716  			}
 87717  			o$1 = (((i$2 >>> 0)) << 6 >>> 0) + ((c1$2 >>> 0)) >>> 0;
 87718  			i$2 = ((o$1 < 0 || o$1 >= bidiIndex.length) ? ($throwRuntimeError("index out of range"), undefined) : bidiIndex[o$1]);
 87719  			c2$1 = s.charCodeAt(2);
 87720  			if (c2$1 < 128 || 192 <= c2$1) {
 87721  				_tmp$22 = new Properties.ptr(0, 0);
 87722  				_tmp$23 = 1;
 87723  				Properties.copy(p, _tmp$22);
 87724  				sz = _tmp$23;
 87725  				return [p, sz];
 87726  			}
 87727  			o$1 = (((i$2 >>> 0)) << 6 >>> 0) + ((c2$1 >>> 0)) >>> 0;
 87728  			i$2 = ((o$1 < 0 || o$1 >= bidiIndex.length) ? ($throwRuntimeError("index out of range"), undefined) : bidiIndex[o$1]);
 87729  			c3 = s.charCodeAt(3);
 87730  			if (c3 < 128 || 192 <= c3) {
 87731  				_tmp$24 = new Properties.ptr(0, 0);
 87732  				_tmp$25 = 1;
 87733  				Properties.copy(p, _tmp$24);
 87734  				sz = _tmp$25;
 87735  				return [p, sz];
 87736  			}
 87737  			_tmp$26 = new Properties.ptr(trie.lookupValue(((i$2 >>> 0)), c3), 0);
 87738  			_tmp$27 = 4;
 87739  			Properties.copy(p, _tmp$26);
 87740  			sz = _tmp$27;
 87741  			return [p, sz];
 87742  		}
 87743  		_tmp$28 = new Properties.ptr(0, 0);
 87744  		_tmp$29 = 1;
 87745  		Properties.copy(p, _tmp$28);
 87746  		sz = _tmp$29;
 87747  		return [p, sz];
 87748  	};
 87749  	$pkg.LookupString = LookupString;
 87750  	newBidiTrie = function(i) {
 87751  		var i;
 87752  		return new bidiTrie.ptr();
 87753  	};
 87754  	bidiTrie.ptr.prototype.lookupValue = function(n, b) {
 87755  		var b, n, t, x;
 87756  		t = this;
 87757  		return ((x = (n << 6 >>> 0) + ((b >>> 0)) >>> 0, ((x < 0 || x >= bidiValues.length) ? ($throwRuntimeError("index out of range"), undefined) : bidiValues[x])));
 87758  	};
 87759  	bidiTrie.prototype.lookupValue = function(n, b) { return this.$val.lookupValue(n, b); };
 87760  	Properties.methods = [{prop: "Class", name: "Class", pkg: "", typ: $funcType([], [Class], false)}, {prop: "IsBracket", name: "IsBracket", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "IsOpeningBracket", name: "IsOpeningBracket", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "reverseBracket", name: "reverseBracket", pkg: "vendor/golang_org/x/text/unicode/bidi", typ: $funcType([$Int32], [$Int32], false)}];
 87761  	ptrType$11.methods = [{prop: "lookup", name: "lookup", pkg: "vendor/golang_org/x/text/unicode/bidi", typ: $funcType([sliceType$8], [$Uint8, $Int], false)}, {prop: "lookupUnsafe", name: "lookupUnsafe", pkg: "vendor/golang_org/x/text/unicode/bidi", typ: $funcType([sliceType$8], [$Uint8], false)}, {prop: "lookupString", name: "lookupString", pkg: "vendor/golang_org/x/text/unicode/bidi", typ: $funcType([$String], [$Uint8, $Int], false)}, {prop: "lookupStringUnsafe", name: "lookupStringUnsafe", pkg: "vendor/golang_org/x/text/unicode/bidi", typ: $funcType([$String], [$Uint8], false)}, {prop: "lookupValue", name: "lookupValue", pkg: "vendor/golang_org/x/text/unicode/bidi", typ: $funcType([$Uint32, $Uint8], [$Uint8], false)}];
 87762  	Class.methods = [{prop: "in$", name: "in", pkg: "vendor/golang_org/x/text/unicode/bidi", typ: $funcType([sliceType$2], [$Bool], true)}];
 87763  	Properties.init("vendor/golang_org/x/text/unicode/bidi", [{prop: "entry", name: "entry", anonymous: false, exported: false, typ: $Uint8, tag: ""}, {prop: "last", name: "last", anonymous: false, exported: false, typ: $Uint8, tag: ""}]);
 87764  	bidiTrie.init("", []);
 87765  	$init = function() {
 87766  		$pkg.$init = function() {};
 87767  		/* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 87768  		$r = list.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 87769  		$r = fmt.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 87770  		$r = log.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 87771  		$r = sort.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 87772  		$r = utf8.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 87773  		trie = newBidiTrie(0);
 87774  		bidiValues = $toNativeArray($kindUint8, [11, 11, 11, 11, 11, 11, 11, 11, 11, 8, 7, 8, 9, 7, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 7, 7, 7, 8, 9, 10, 10, 4, 4, 4, 10, 10, 58, 42, 10, 3, 6, 3, 6, 6, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 6, 10, 10, 10, 10, 10, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 90, 10, 74, 10, 10, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 90, 10, 74, 10, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 11, 11, 11, 11, 7, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 6, 10, 4, 4, 4, 4, 10, 10, 10, 10, 0, 10, 10, 11, 10, 10, 4, 4, 2, 2, 10, 0, 10, 10, 10, 2, 0, 10, 10, 10, 10, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 10, 0, 0, 0, 0, 0, 0, 0, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 0, 0, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 0, 0, 0, 0, 0, 10, 10, 10, 10, 10, 10, 10, 10, 10, 0, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 0, 0, 0, 0, 10, 10, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 10, 10, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 12, 12, 12, 12, 12, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 10, 10, 4, 1, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 1, 12, 1, 12, 12, 1, 12, 12, 1, 12, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 5, 5, 5, 5, 5, 5, 10, 10, 13, 4, 4, 13, 6, 13, 10, 10, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 4, 5, 5, 13, 13, 13, 12, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 12, 12, 12, 12, 12, 12, 12, 5, 10, 12, 12, 12, 12, 12, 12, 13, 13, 12, 12, 10, 12, 12, 12, 12, 13, 13, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 12, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 12, 12, 12, 12, 12, 12, 12, 12, 12, 1, 1, 10, 10, 10, 10, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 12, 12, 12, 12, 1, 12, 12, 12, 12, 12, 12, 12, 12, 12, 1, 12, 12, 12, 1, 12, 12, 12, 12, 12, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 12, 12, 12, 1, 1, 1, 1, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 5, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 12, 0, 0, 0, 0, 12, 12, 12, 12, 12, 12, 12, 12, 0, 0, 0, 0, 12, 0, 0, 0, 12, 12, 12, 12, 12, 12, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 12, 12, 12, 12, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 12, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 12, 12, 0, 0, 0, 0, 12, 12, 0, 0, 12, 12, 12, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 12, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 12, 12, 12, 12, 0, 12, 12, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 12, 12, 12, 12, 12, 12, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 12, 0, 12, 12, 12, 12, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 10, 10, 10, 10, 10, 4, 10, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 12, 12, 0, 0, 0, 0, 0, 12, 12, 12, 0, 12, 12, 12, 12, 0, 0, 0, 0, 0, 0, 0, 12, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 10, 10, 10, 10, 10, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 12, 0, 0, 0, 0, 12, 12, 12, 12, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 12, 12, 12, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 12, 12, 12, 12, 12, 12, 12, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 12, 12, 12, 12, 12, 12, 12, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 12, 12, 12, 12, 12, 12, 0, 12, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 12, 12, 12, 12, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 12, 0, 12, 58, 42, 58, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 0, 12, 12, 12, 12, 12, 0, 12, 12, 0, 0, 0, 0, 0, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 0, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 12, 12, 12, 0, 12, 12, 12, 12, 12, 12, 0, 12, 12, 0, 0, 12, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 12, 0, 0, 0, 0, 12, 12, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 12, 12, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 12, 12, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 12, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 122, 106, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 12, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 12, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 12, 0, 12, 12, 12, 12, 12, 12, 12, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 0, 0, 0, 0, 0, 0, 0, 4, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 0, 0, 0, 0, 0, 0, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 12, 12, 12, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 12, 12, 0, 0, 0, 0, 12, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 12, 12, 12, 0, 0, 0, 0, 10, 0, 0, 0, 10, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 12, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 12, 12, 12, 12, 12, 12, 12, 0, 12, 0, 12, 0, 0, 12, 12, 12, 12, 12, 12, 12, 12, 0, 0, 0, 0, 0, 0, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 0, 12, 12, 12, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 12, 12, 12, 12, 12, 0, 12, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 12, 12, 12, 12, 12, 12, 12, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 12, 12, 12, 0, 0, 12, 12, 0, 12, 12, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 12, 12, 0, 0, 0, 12, 0, 12, 12, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 12, 12, 12, 12, 12, 12, 12, 0, 0, 12, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 12, 12, 0, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 0, 12, 12, 12, 12, 12, 12, 12, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 12, 12, 0, 0, 0, 0, 0, 0, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 0, 12, 12, 12, 12, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 10, 10, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 10, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 10, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 10, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 10, 0, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 11, 11, 11, 0, 1, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 9, 7, 14, 14, 14, 14, 14, 6, 4, 4, 4, 4, 4, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 6, 154, 138, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 9, 11, 11, 11, 11, 11, 11, 14, 14, 14, 14, 11, 11, 11, 11, 11, 11, 2, 0, 0, 0, 2, 2, 2, 2, 2, 2, 3, 3, 10, 154, 138, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 10, 154, 138, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 10, 0, 10, 10, 10, 10, 0, 10, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 10, 10, 10, 0, 0, 0, 0, 0, 10, 10, 10, 10, 10, 10, 0, 10, 0, 10, 0, 10, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 10, 0, 0, 0, 0, 10, 10, 10, 10, 10, 0, 0, 0, 0, 0, 10, 10, 10, 10, 0, 0, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 10, 10, 0, 0, 0, 0, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 3, 4, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 58, 42, 58, 42, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 154, 138, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 0, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 0, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 58, 42, 58, 42, 58, 42, 58, 42, 58, 42, 58, 42, 58, 42, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 154, 138, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 58, 42, 58, 42, 58, 42, 58, 42, 58, 42, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 122, 106, 154, 138, 186, 170, 154, 138, 122, 106, 218, 42, 58, 202, 154, 138, 122, 106, 154, 138, 186, 170, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 58, 42, 58, 42, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 58, 42, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 0, 0, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 0, 0, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 0, 0, 0, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 0, 10, 10, 10, 10, 10, 10, 10, 10, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 10, 10, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 10, 10, 10, 10, 10, 0, 0, 0, 0, 12, 12, 12, 0, 0, 0, 0, 0, 0, 0, 10, 10, 10, 10, 10, 10, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 58, 42, 58, 42, 58, 42, 58, 42, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 0, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 0, 0, 0, 0, 9, 10, 10, 10, 10, 0, 0, 0, 58, 42, 58, 42, 58, 42, 58, 42, 58, 42, 10, 10, 58, 42, 58, 42, 58, 42, 58, 42, 10, 10, 10, 10, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 12, 12, 12, 0, 0, 10, 0, 0, 0, 0, 0, 10, 10, 0, 0, 0, 0, 0, 10, 10, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 12, 10, 10, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 10, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 10, 10, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 10, 10, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 10, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 12, 12, 12, 10, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 10, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 12, 0, 10, 10, 10, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 10, 10, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 12, 12, 12, 12, 12, 12, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 12, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 12, 12, 12, 12, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 12, 12, 12, 12, 12, 0, 0, 12, 12, 0, 0, 12, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 12, 12, 12, 0, 0, 12, 12, 0, 0, 0, 0, 0, 12, 12, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 12, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 12, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 12, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 10, 10, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 10, 13, 13, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 0, 0, 0, 0, 0, 0, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 6, 10, 6, 0, 10, 6, 10, 10, 10, 154, 138, 122, 106, 154, 138, 4, 10, 10, 3, 3, 10, 10, 10, 0, 10, 4, 4, 10, 0, 0, 0, 0, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 11, 0, 10, 10, 4, 4, 4, 10, 10, 58, 42, 10, 3, 6, 3, 6, 6, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 6, 10, 10, 10, 10, 10, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 90, 10, 74, 10, 10, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 90, 10, 74, 10, 250, 234, 10, 58, 42, 10, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 10, 10, 10, 4, 4, 0, 10, 10, 10, 10, 10, 10, 10, 0, 11, 11, 11, 11, 11, 11, 11, 11, 11, 10, 10, 10, 10, 10, 11, 11, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 0, 0, 0, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 12, 12, 12, 12, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 10, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 12, 12, 12, 1, 12, 12, 1, 1, 1, 1, 1, 12, 12, 12, 12, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 12, 12, 12, 1, 1, 1, 1, 12, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 12, 12, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 10, 10, 10, 10, 10, 10, 10, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 1, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 12, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 12, 12, 12, 0, 0, 12, 12, 0, 0, 0, 0, 0, 12, 12, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 12, 12, 12, 12, 0, 12, 12, 12, 12, 12, 12, 12, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 12, 12, 12, 12, 12, 12, 12, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 12, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 12, 12, 0, 0, 12, 0, 12, 12, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 12, 12, 12, 12, 12, 12, 12, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 12, 12, 12, 12, 12, 12, 0, 0, 0, 12, 12, 12, 12, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 12, 12, 12, 12, 12, 12, 12, 0, 0, 12, 12, 12, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 12, 12, 12, 12, 12, 0, 12, 0, 0, 0, 0, 12, 12, 0, 12, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 12, 12, 12, 0, 0, 0, 0, 0, 0, 12, 12, 0, 12, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 12, 12, 12, 12, 12, 12, 12, 0, 0, 12, 0, 12, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 12, 0, 0, 12, 12, 12, 12, 12, 12, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 12, 12, 0, 0, 12, 12, 12, 12, 0, 12, 12, 12, 12, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 12, 12, 12, 12, 12, 0, 0, 12, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 12, 12, 12, 12, 12, 0, 0, 12, 12, 12, 12, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 12, 12, 12, 12, 12, 0, 0, 12, 12, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 0, 12, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 12, 12, 12, 12, 12, 12, 0, 12, 12, 12, 12, 12, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 0, 0, 12, 12, 12, 12, 12, 12, 12, 0, 12, 12, 0, 12, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 12, 12, 12, 12, 12, 0, 0, 0, 12, 0, 12, 12, 0, 12, 12, 12, 12, 12, 12, 12, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 12, 12, 12, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 12, 12, 12, 12, 12, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 12, 12, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 12, 0, 11, 11, 11, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 12, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 11, 11, 11, 11, 11, 11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 0, 0, 12, 12, 12, 12, 12, 12, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 12, 12, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 10, 12, 12, 12, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 0, 0, 0, 0, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 12, 12, 12, 12, 0, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 12, 12, 12, 12, 12, 12, 0, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 0, 0, 12, 12, 12, 12, 12, 12, 12, 0, 12, 12, 0, 12, 12, 12, 12, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 12, 12, 12, 12, 12, 12, 12, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 12, 12, 12, 12, 12, 12, 12, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 10, 10, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 0, 0, 0, 0, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 0, 0, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 0, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 0, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 10, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 10, 10, 10, 10, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 0, 0, 0, 10, 10, 10, 10, 10, 10, 10, 10, 10, 0, 0, 0, 0, 0, 0, 0, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 0, 0, 0, 0, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 0, 0, 0, 0, 0, 0, 0, 0, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 0, 0, 0, 0, 0, 0, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 0, 0, 0, 0, 0, 0, 0, 0, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 0, 0, 0, 0, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 0, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 0, 0, 0, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11]);
 87775  		bidiIndex = $toNativeArray($kindUint8, [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 0, 0, 0, 0, 3, 4, 5, 6, 7, 8, 0, 0, 9, 0, 0, 0, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 2, 3, 4, 5, 6, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 8, 17, 18, 18, 20, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 28, 30, 31, 32, 33, 34, 35, 36, 26, 37, 38, 39, 0, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 53, 0, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 55, 0, 56, 57, 58, 59, 60, 0, 61, 0, 62, 63, 0, 64, 65, 66, 67, 0, 68, 69, 70, 71, 72, 0, 0, 73, 0, 0, 0, 74, 0, 0, 0, 0, 0, 0, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 84, 84, 84, 86, 87, 88, 84, 89, 90, 91, 92, 84, 84, 84, 84, 84, 84, 93, 84, 84, 94, 84, 95, 0, 0, 0, 0, 84, 84, 96, 97, 84, 84, 84, 84, 84, 98, 99, 100, 0, 0, 0, 101, 0, 102, 0, 103, 104, 105, 106, 107, 84, 84, 84, 108, 109, 0, 110, 111, 0, 0, 0, 112, 113, 114, 115, 116, 0, 117, 0, 118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 119, 120, 0, 0, 0, 0, 121, 122, 123, 124, 125, 0, 126, 0, 127, 128, 0, 129, 130, 131, 132, 133, 134, 135, 136, 137, 0, 0, 0, 138, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 139, 140, 14, 14, 14, 14, 14, 14, 141, 14, 14, 142, 143, 144, 14, 145, 146, 147, 0, 148, 0, 0, 0, 0, 149, 84, 150, 151, 0, 0, 0, 152, 0, 153, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 154, 154, 154, 154, 155, 154, 154, 154, 156, 154, 154, 157, 158, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 159, 154, 154, 154, 154, 154, 154, 160, 161, 162, 0, 163, 164, 165, 166, 167, 0, 0, 168, 169, 170, 0, 0, 171, 172, 173, 174, 0, 0, 175, 176, 177, 178, 179, 0, 180, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 181, 182, 183, 0, 0, 0, 0, 0, 184, 0, 185, 0, 186, 187, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 188, 189, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 190, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 192, 193, 0, 84, 194, 0, 0, 84, 195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 196, 197, 198, 199, 200, 0, 0, 0, 0, 0, 0, 0, 0, 201, 202, 203, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 154, 154, 154, 205, 154, 206, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 14, 14, 14, 207, 154, 154, 154, 154, 208, 84, 209, 210, 211, 212, 0, 0, 0, 213, 0, 0, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 214, 84, 107, 84, 215, 216, 217, 218, 0, 219, 220, 221, 222, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 223, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 223, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 10, 0, 0, 0, 0, 11, 0, 0, 0, 0, 12, 0, 13, 14, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 224, 224, 224, 224, 5, 5, 5, 225, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]);
 87776  		controlByteToClass = $toNativeArray($kindUint, [0, 0, 0, 0, 0, 0, 21, 22, 23, 24, 18, 19, 20, 16, 17, 0]);
 87777  		/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
 87778  	};
 87779  	$pkg.$init = $init;
 87780  	return $pkg;
 87781  })();
 87782  $packages["vendor/golang_org/x/text/secure/bidirule"] = (function() {
 87783  	var $pkg = {}, $init, errors, utf8, transform, bidi, ruleState, ruleTransition, Transformer, arrayType, arrayType$1, sliceType, ptrType, transitions, asciiTable, DirectionString, ValidString, init;
 87784  	errors = $packages["errors"];
 87785  	utf8 = $packages["unicode/utf8"];
 87786  	transform = $packages["vendor/golang_org/x/text/transform"];
 87787  	bidi = $packages["vendor/golang_org/x/text/unicode/bidi"];
 87788  	ruleState = $pkg.ruleState = $newType(1, $kindUint8, "bidirule.ruleState", true, "vendor/golang_org/x/text/secure/bidirule", false, null);
 87789  	ruleTransition = $pkg.ruleTransition = $newType(0, $kindStruct, "bidirule.ruleTransition", true, "vendor/golang_org/x/text/secure/bidirule", false, function(next_, mask_) {
 87790  		this.$val = this;
 87791  		if (arguments.length === 0) {
 87792  			this.next = 0;
 87793  			this.mask = 0;
 87794  			return;
 87795  		}
 87796  		this.next = next_;
 87797  		this.mask = mask_;
 87798  	});
 87799  	Transformer = $pkg.Transformer = $newType(0, $kindStruct, "bidirule.Transformer", true, "vendor/golang_org/x/text/secure/bidirule", true, function(state_, hasRTL_, seen_) {
 87800  		this.$val = this;
 87801  		if (arguments.length === 0) {
 87802  			this.state = 0;
 87803  			this.hasRTL = false;
 87804  			this.seen = 0;
 87805  			return;
 87806  		}
 87807  		this.state = state_;
 87808  		this.hasRTL = hasRTL_;
 87809  		this.seen = seen_;
 87810  	});
 87811  	arrayType = $arrayType(bidi.Properties, 128);
 87812  	arrayType$1 = $arrayType(ruleTransition, 2);
 87813  	sliceType = $sliceType($Uint8);
 87814  	ptrType = $ptrType(Transformer);
 87815  	DirectionString = function(s) {
 87816  		var _tuple, c, e, i, s, sz;
 87817  		i = 0;
 87818  		while (true) {
 87819  			if (!(i < s.length)) { break; }
 87820  			_tuple = bidi.LookupString($substring(s, i));
 87821  			e = $clone(_tuple[0], bidi.Properties);
 87822  			sz = _tuple[1];
 87823  			if (sz === 0) {
 87824  				i = i + (1) >> 0;
 87825  				continue;
 87826  			}
 87827  			c = $clone(e, bidi.Properties).Class();
 87828  			if ((c === 1) || (c === 13) || (c === 5)) {
 87829  				return 1;
 87830  			}
 87831  			i = i + (sz) >> 0;
 87832  		}
 87833  		return 0;
 87834  	};
 87835  	$pkg.DirectionString = DirectionString;
 87836  	ValidString = function(s) {
 87837  		var _tuple, n, ok, s, t;
 87838  		t = new Transformer.ptr(0, false, 0);
 87839  		_tuple = t.advanceString(s);
 87840  		n = _tuple[0];
 87841  		ok = _tuple[1];
 87842  		if (!ok || n < s.length) {
 87843  			return false;
 87844  		}
 87845  		return t.isFinal();
 87846  	};
 87847  	$pkg.ValidString = ValidString;
 87848  	Transformer.ptr.prototype.isRTL = function() {
 87849  		var t;
 87850  		t = this;
 87851  		return !((((t.seen & 8226) >>> 0) === 0));
 87852  	};
 87853  	Transformer.prototype.isRTL = function() { return this.$val.isRTL(); };
 87854  	Transformer.ptr.prototype.isFinal = function() {
 87855  		var t;
 87856  		t = this;
 87857  		return (t.state === 2) || (t.state === 4) || (t.state === 0);
 87858  	};
 87859  	Transformer.prototype.isFinal = function() { return this.$val.isFinal(); };
 87860  	Transformer.ptr.prototype.Reset = function() {
 87861  		var t;
 87862  		t = this;
 87863  		Transformer.copy(t, new Transformer.ptr(0, false, 0));
 87864  	};
 87865  	Transformer.prototype.Reset = function() { return this.$val.Reset(); };
 87866  	Transformer.ptr.prototype.Transform = function(dst, src, atEOF) {
 87867  		var _tmp, _tmp$1, _tmp$2, _tuple, atEOF, dst, err, err1, n, nDst, nSrc, src, t;
 87868  		nDst = 0;
 87869  		nSrc = 0;
 87870  		err = $ifaceNil;
 87871  		t = this;
 87872  		if (dst.$length < src.$length) {
 87873  			src = $subslice(src, 0, dst.$length);
 87874  			atEOF = false;
 87875  			err = transform.ErrShortDst;
 87876  		}
 87877  		_tuple = t.Span(src, atEOF);
 87878  		n = _tuple[0];
 87879  		err1 = _tuple[1];
 87880  		$copySlice(dst, $subslice(src, 0, n));
 87881  		if ($interfaceIsEqual(err, $ifaceNil) || !($interfaceIsEqual(err1, $ifaceNil)) && !($interfaceIsEqual(err1, transform.ErrShortSrc))) {
 87882  			err = err1;
 87883  		}
 87884  		_tmp = n;
 87885  		_tmp$1 = n;
 87886  		_tmp$2 = err;
 87887  		nDst = _tmp;
 87888  		nSrc = _tmp$1;
 87889  		err = _tmp$2;
 87890  		return [nDst, nSrc, err];
 87891  	};
 87892  	Transformer.prototype.Transform = function(dst, src, atEOF) { return this.$val.Transform(dst, src, atEOF); };
 87893  	Transformer.ptr.prototype.Span = function(src, atEOF) {
 87894  		var _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, atEOF, err, n, ok, src, t;
 87895  		n = 0;
 87896  		err = $ifaceNil;
 87897  		t = this;
 87898  		if ((t.state === 5) && t.isRTL()) {
 87899  			_tmp = 0;
 87900  			_tmp$1 = $pkg.ErrInvalid;
 87901  			n = _tmp;
 87902  			err = _tmp$1;
 87903  			return [n, err];
 87904  		}
 87905  		_tuple = t.advance(src);
 87906  		n = _tuple[0];
 87907  		ok = _tuple[1];
 87908  		switch (0) { default:
 87909  			if (!ok) {
 87910  				err = $pkg.ErrInvalid;
 87911  			} else if (n < src.$length) {
 87912  				if (!atEOF) {
 87913  					err = transform.ErrShortSrc;
 87914  					break;
 87915  				}
 87916  				err = $pkg.ErrInvalid;
 87917  			} else if (!t.isFinal()) {
 87918  				err = $pkg.ErrInvalid;
 87919  			}
 87920  		}
 87921  		_tmp$2 = n;
 87922  		_tmp$3 = err;
 87923  		n = _tmp$2;
 87924  		err = _tmp$3;
 87925  		return [n, err];
 87926  	};
 87927  	Transformer.prototype.Span = function(src, atEOF) { return this.$val.Span(src, atEOF); };
 87928  	init = function() {
 87929  		var _i, _ref, _tuple, i, p;
 87930  		_ref = asciiTable;
 87931  		_i = 0;
 87932  		while (true) {
 87933  			if (!(_i < 128)) { break; }
 87934  			i = _i;
 87935  			_tuple = bidi.LookupRune(((i >> 0)));
 87936  			p = $clone(_tuple[0], bidi.Properties);
 87937  			bidi.Properties.copy(((i < 0 || i >= asciiTable.length) ? ($throwRuntimeError("index out of range"), undefined) : asciiTable[i]), p);
 87938  			_i++;
 87939  		}
 87940  	};
 87941  	Transformer.ptr.prototype.advance = function(s) {
 87942  		var _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, c, e, n, ok, s, sz, t, tr, x, x$1, y;
 87943  		n = 0;
 87944  		ok = false;
 87945  		t = this;
 87946  		e = new bidi.Properties.ptr(0, 0);
 87947  		sz = 0;
 87948  		while (true) {
 87949  			if (!(n < s.$length)) { break; }
 87950  			if (((n < 0 || n >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + n]) < 128) {
 87951  				_tmp = $clone((x = ((n < 0 || n >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + n]), ((x < 0 || x >= asciiTable.length) ? ($throwRuntimeError("index out of range"), undefined) : asciiTable[x])), bidi.Properties);
 87952  				_tmp$1 = 1;
 87953  				bidi.Properties.copy(e, _tmp);
 87954  				sz = _tmp$1;
 87955  			} else {
 87956  				_tuple = bidi.Lookup($subslice(s, n));
 87957  				bidi.Properties.copy(e, _tuple[0]);
 87958  				sz = _tuple[1];
 87959  				if (sz <= 1) {
 87960  					if (sz === 1) {
 87961  						_tmp$2 = n;
 87962  						_tmp$3 = false;
 87963  						n = _tmp$2;
 87964  						ok = _tmp$3;
 87965  						return [n, ok];
 87966  					}
 87967  					_tmp$4 = n;
 87968  					_tmp$5 = true;
 87969  					n = _tmp$4;
 87970  					ok = _tmp$5;
 87971  					return [n, ok];
 87972  				}
 87973  			}
 87974  			c = (((y = $clone(e, bidi.Properties).Class(), y < 32 ? (1 << y) : 0) << 16 >>> 16));
 87975  			t.seen = (t.seen | (c)) >>> 0;
 87976  			if (((t.seen & 36) >>> 0) === 36) {
 87977  				t.state = 5;
 87978  				_tmp$6 = n;
 87979  				_tmp$7 = false;
 87980  				n = _tmp$6;
 87981  				ok = _tmp$7;
 87982  				return [n, ok];
 87983  			}
 87984  			tr = $clone((x$1 = t.state, ((x$1 < 0 || x$1 >= transitions.length) ? ($throwRuntimeError("index out of range"), undefined) : transitions[x$1])), arrayType$1);
 87985  			if (!((((tr[0].mask & c) >>> 0) === 0))) {
 87986  				t.state = tr[0].next;
 87987  			} else if (!((((tr[1].mask & c) >>> 0) === 0))) {
 87988  				t.state = tr[1].next;
 87989  			} else {
 87990  				t.state = 5;
 87991  				if (t.isRTL()) {
 87992  					_tmp$8 = n;
 87993  					_tmp$9 = false;
 87994  					n = _tmp$8;
 87995  					ok = _tmp$9;
 87996  					return [n, ok];
 87997  				}
 87998  			}
 87999  			n = n + (sz) >> 0;
 88000  		}
 88001  		_tmp$10 = n;
 88002  		_tmp$11 = true;
 88003  		n = _tmp$10;
 88004  		ok = _tmp$11;
 88005  		return [n, ok];
 88006  	};
 88007  	Transformer.prototype.advance = function(s) { return this.$val.advance(s); };
 88008  	Transformer.ptr.prototype.advanceString = function(s) {
 88009  		var _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, c, e, n, ok, s, sz, t, tr, x, x$1, y;
 88010  		n = 0;
 88011  		ok = false;
 88012  		t = this;
 88013  		e = new bidi.Properties.ptr(0, 0);
 88014  		sz = 0;
 88015  		while (true) {
 88016  			if (!(n < s.length)) { break; }
 88017  			if (s.charCodeAt(n) < 128) {
 88018  				_tmp = $clone((x = s.charCodeAt(n), ((x < 0 || x >= asciiTable.length) ? ($throwRuntimeError("index out of range"), undefined) : asciiTable[x])), bidi.Properties);
 88019  				_tmp$1 = 1;
 88020  				bidi.Properties.copy(e, _tmp);
 88021  				sz = _tmp$1;
 88022  			} else {
 88023  				_tuple = bidi.LookupString($substring(s, n));
 88024  				bidi.Properties.copy(e, _tuple[0]);
 88025  				sz = _tuple[1];
 88026  				if (sz <= 1) {
 88027  					if (sz === 1) {
 88028  						_tmp$2 = n;
 88029  						_tmp$3 = false;
 88030  						n = _tmp$2;
 88031  						ok = _tmp$3;
 88032  						return [n, ok];
 88033  					}
 88034  					_tmp$4 = n;
 88035  					_tmp$5 = true;
 88036  					n = _tmp$4;
 88037  					ok = _tmp$5;
 88038  					return [n, ok];
 88039  				}
 88040  			}
 88041  			c = (((y = $clone(e, bidi.Properties).Class(), y < 32 ? (1 << y) : 0) << 16 >>> 16));
 88042  			t.seen = (t.seen | (c)) >>> 0;
 88043  			if (((t.seen & 36) >>> 0) === 36) {
 88044  				t.state = 5;
 88045  				_tmp$6 = n;
 88046  				_tmp$7 = false;
 88047  				n = _tmp$6;
 88048  				ok = _tmp$7;
 88049  				return [n, ok];
 88050  			}
 88051  			tr = $clone((x$1 = t.state, ((x$1 < 0 || x$1 >= transitions.length) ? ($throwRuntimeError("index out of range"), undefined) : transitions[x$1])), arrayType$1);
 88052  			if (!((((tr[0].mask & c) >>> 0) === 0))) {
 88053  				t.state = tr[0].next;
 88054  			} else if (!((((tr[1].mask & c) >>> 0) === 0))) {
 88055  				t.state = tr[1].next;
 88056  			} else {
 88057  				t.state = 5;
 88058  				if (t.isRTL()) {
 88059  					_tmp$8 = n;
 88060  					_tmp$9 = false;
 88061  					n = _tmp$8;
 88062  					ok = _tmp$9;
 88063  					return [n, ok];
 88064  				}
 88065  			}
 88066  			n = n + (sz) >> 0;
 88067  		}
 88068  		_tmp$10 = n;
 88069  		_tmp$11 = true;
 88070  		n = _tmp$10;
 88071  		ok = _tmp$11;
 88072  		return [n, ok];
 88073  	};
 88074  	Transformer.prototype.advanceString = function(s) { return this.$val.advanceString(s); };
 88075  	ptrType.methods = [{prop: "isRTL", name: "isRTL", pkg: "vendor/golang_org/x/text/secure/bidirule", typ: $funcType([], [$Bool], false)}, {prop: "isFinal", name: "isFinal", pkg: "vendor/golang_org/x/text/secure/bidirule", typ: $funcType([], [$Bool], false)}, {prop: "Reset", name: "Reset", pkg: "", typ: $funcType([], [], false)}, {prop: "Transform", name: "Transform", pkg: "", typ: $funcType([sliceType, sliceType, $Bool], [$Int, $Int, $error], false)}, {prop: "Span", name: "Span", pkg: "", typ: $funcType([sliceType, $Bool], [$Int, $error], false)}, {prop: "advance", name: "advance", pkg: "vendor/golang_org/x/text/secure/bidirule", typ: $funcType([sliceType], [$Int, $Bool], false)}, {prop: "advanceString", name: "advanceString", pkg: "vendor/golang_org/x/text/secure/bidirule", typ: $funcType([$String], [$Int, $Bool], false)}];
 88076  	ruleTransition.init("vendor/golang_org/x/text/secure/bidirule", [{prop: "next", name: "next", anonymous: false, exported: false, typ: ruleState, tag: ""}, {prop: "mask", name: "mask", anonymous: false, exported: false, typ: $Uint16, tag: ""}]);
 88077  	Transformer.init("vendor/golang_org/x/text/secure/bidirule", [{prop: "state", name: "state", anonymous: false, exported: false, typ: ruleState, tag: ""}, {prop: "hasRTL", name: "hasRTL", anonymous: false, exported: false, typ: $Bool, tag: ""}, {prop: "seen", name: "seen", anonymous: false, exported: false, typ: $Uint16, tag: ""}]);
 88078  	$init = function() {
 88079  		$pkg.$init = function() {};
 88080  		/* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 88081  		$r = errors.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 88082  		$r = utf8.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 88083  		$r = transform.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 88084  		$r = bidi.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 88085  		asciiTable = arrayType.zero();
 88086  		$pkg.ErrInvalid = errors.New("bidirule: failed Bidi Rule");
 88087  		transitions = $toNativeArray($kindArray, [$toNativeArray($kindStruct, [new ruleTransition.ptr(2, 1), new ruleTransition.ptr(4, 8194)]), $toNativeArray($kindStruct, [new ruleTransition.ptr(2, 5), new ruleTransition.ptr(1, 7256)]), $toNativeArray($kindStruct, [new ruleTransition.ptr(2, 4101), new ruleTransition.ptr(1, 3160)]), $toNativeArray($kindStruct, [new ruleTransition.ptr(4, 8230), new ruleTransition.ptr(3, 7256)]), $toNativeArray($kindStruct, [new ruleTransition.ptr(4, 12326), new ruleTransition.ptr(3, 3160)]), $toNativeArray($kindStruct, [new ruleTransition.ptr(5, 0), new ruleTransition.ptr(5, 0)])]);
 88088  		init();
 88089  		/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
 88090  	};
 88091  	$pkg.$init = $init;
 88092  	return $pkg;
 88093  })();
 88094  $packages["vendor/golang_org/x/text/unicode/norm"] = (function() {
 88095  	var $pkg = {}, $init, fmt, io, utf8, transform, ssState, streamSafe, reorderBuffer, insertErr, Properties, lookupFunc, formInfo, qcInfo, input, Iter, iterFunc, Form, normWriter, normReader, nfcTrie, nfkcTrie, valueRange, sparseBlocks, sliceType, sliceType$1, sliceType$2, ptrType, sliceType$3, sliceType$4, sliceType$5, ptrType$1, sliceType$6, arrayType, arrayType$1, arrayType$2, ptrType$2, funcType, ptrType$3, ptrType$4, ptrType$5, ptrType$6, ptrType$7, ptrType$8, ptrType$9, formTable, ccc, decomps, nfcValues, nfcIndex, nfcSparseOffset, nfcSparseValues, nfkcValues, nfkcIndex, nfkcSparseOffset, nfkcSparseValues, recompMap, errs, nfcSparse, nfkcSparse, nfcData, nfkcData, appendFlush, isHangul, isHangulString, isJamoVT, decomposeHangul, combine, lookupInfoNFC, lookupInfoNFKC, compInfo, inputBytes, inputString, nextASCIIBytes, nextASCIIString, nextHangul, nextDone, nextMulti, nextMultiNorm, nextDecomposed, doNormDecomposed, nextCGJDecompose, nextComposed, doNormComposed, nextCGJCompose, cmpNormalBytes, patchTail, appendQuick, doAppend, doAppendInner, lastBoundary, decomposeSegment, lastRuneStart, decomposeToLastBoundary, newNfcTrie, newNfkcTrie, flushTransform;
 88096  	fmt = $packages["fmt"];
 88097  	io = $packages["io"];
 88098  	utf8 = $packages["unicode/utf8"];
 88099  	transform = $packages["vendor/golang_org/x/text/transform"];
 88100  	ssState = $pkg.ssState = $newType(4, $kindInt, "norm.ssState", true, "vendor/golang_org/x/text/unicode/norm", false, null);
 88101  	streamSafe = $pkg.streamSafe = $newType(1, $kindUint8, "norm.streamSafe", true, "vendor/golang_org/x/text/unicode/norm", false, null);
 88102  	reorderBuffer = $pkg.reorderBuffer = $newType(0, $kindStruct, "norm.reorderBuffer", true, "vendor/golang_org/x/text/unicode/norm", false, function(rune_, byte$1_, nbyte_, ss_, nrune_, f_, src_, nsrc_, tmpBytes_, out_, flushF_) {
 88103  		this.$val = this;
 88104  		if (arguments.length === 0) {
 88105  			this.rune = arrayType.zero();
 88106  			this.byte$1 = arrayType$1.zero();
 88107  			this.nbyte = 0;
 88108  			this.ss = 0;
 88109  			this.nrune = 0;
 88110  			this.f = new formInfo.ptr(0, false, false, $throwNilPointerError, $throwNilPointerError);
 88111  			this.src = new input.ptr("", sliceType$4.nil);
 88112  			this.nsrc = 0;
 88113  			this.tmpBytes = new input.ptr("", sliceType$4.nil);
 88114  			this.out = sliceType$4.nil;
 88115  			this.flushF = $throwNilPointerError;
 88116  			return;
 88117  		}
 88118  		this.rune = rune_;
 88119  		this.byte$1 = byte$1_;
 88120  		this.nbyte = nbyte_;
 88121  		this.ss = ss_;
 88122  		this.nrune = nrune_;
 88123  		this.f = f_;
 88124  		this.src = src_;
 88125  		this.nsrc = nsrc_;
 88126  		this.tmpBytes = tmpBytes_;
 88127  		this.out = out_;
 88128  		this.flushF = flushF_;
 88129  	});
 88130  	insertErr = $pkg.insertErr = $newType(4, $kindInt, "norm.insertErr", true, "vendor/golang_org/x/text/unicode/norm", false, null);
 88131  	Properties = $pkg.Properties = $newType(0, $kindStruct, "norm.Properties", true, "vendor/golang_org/x/text/unicode/norm", true, function(pos_, size_, ccc_, tccc_, nLead_, flags_, index_) {
 88132  		this.$val = this;
 88133  		if (arguments.length === 0) {
 88134  			this.pos = 0;
 88135  			this.size = 0;
 88136  			this.ccc = 0;
 88137  			this.tccc = 0;
 88138  			this.nLead = 0;
 88139  			this.flags = 0;
 88140  			this.index = 0;
 88141  			return;
 88142  		}
 88143  		this.pos = pos_;
 88144  		this.size = size_;
 88145  		this.ccc = ccc_;
 88146  		this.tccc = tccc_;
 88147  		this.nLead = nLead_;
 88148  		this.flags = flags_;
 88149  		this.index = index_;
 88150  	});
 88151  	lookupFunc = $pkg.lookupFunc = $newType(4, $kindFunc, "norm.lookupFunc", true, "vendor/golang_org/x/text/unicode/norm", false, null);
 88152  	formInfo = $pkg.formInfo = $newType(0, $kindStruct, "norm.formInfo", true, "vendor/golang_org/x/text/unicode/norm", false, function(form_, composing_, compatibility_, info_, nextMain_) {
 88153  		this.$val = this;
 88154  		if (arguments.length === 0) {
 88155  			this.form = 0;
 88156  			this.composing = false;
 88157  			this.compatibility = false;
 88158  			this.info = $throwNilPointerError;
 88159  			this.nextMain = $throwNilPointerError;
 88160  			return;
 88161  		}
 88162  		this.form = form_;
 88163  		this.composing = composing_;
 88164  		this.compatibility = compatibility_;
 88165  		this.info = info_;
 88166  		this.nextMain = nextMain_;
 88167  	});
 88168  	qcInfo = $pkg.qcInfo = $newType(1, $kindUint8, "norm.qcInfo", true, "vendor/golang_org/x/text/unicode/norm", false, null);
 88169  	input = $pkg.input = $newType(0, $kindStruct, "norm.input", true, "vendor/golang_org/x/text/unicode/norm", false, function(str_, bytes_) {
 88170  		this.$val = this;
 88171  		if (arguments.length === 0) {
 88172  			this.str = "";
 88173  			this.bytes = sliceType$4.nil;
 88174  			return;
 88175  		}
 88176  		this.str = str_;
 88177  		this.bytes = bytes_;
 88178  	});
 88179  	Iter = $pkg.Iter = $newType(0, $kindStruct, "norm.Iter", true, "vendor/golang_org/x/text/unicode/norm", true, function(rb_, buf_, info_, next_, asciiF_, p_, multiSeg_) {
 88180  		this.$val = this;
 88181  		if (arguments.length === 0) {
 88182  			this.rb = new reorderBuffer.ptr(arrayType.zero(), arrayType$1.zero(), 0, 0, 0, new formInfo.ptr(0, false, false, $throwNilPointerError, $throwNilPointerError), new input.ptr("", sliceType$4.nil), 0, new input.ptr("", sliceType$4.nil), sliceType$4.nil, $throwNilPointerError);
 88183  			this.buf = arrayType$1.zero();
 88184  			this.info = new Properties.ptr(0, 0, 0, 0, 0, 0, 0);
 88185  			this.next = $throwNilPointerError;
 88186  			this.asciiF = $throwNilPointerError;
 88187  			this.p = 0;
 88188  			this.multiSeg = sliceType$4.nil;
 88189  			return;
 88190  		}
 88191  		this.rb = rb_;
 88192  		this.buf = buf_;
 88193  		this.info = info_;
 88194  		this.next = next_;
 88195  		this.asciiF = asciiF_;
 88196  		this.p = p_;
 88197  		this.multiSeg = multiSeg_;
 88198  	});
 88199  	iterFunc = $pkg.iterFunc = $newType(4, $kindFunc, "norm.iterFunc", true, "vendor/golang_org/x/text/unicode/norm", false, null);
 88200  	Form = $pkg.Form = $newType(4, $kindInt, "norm.Form", true, "vendor/golang_org/x/text/unicode/norm", true, null);
 88201  	normWriter = $pkg.normWriter = $newType(0, $kindStruct, "norm.normWriter", true, "vendor/golang_org/x/text/unicode/norm", false, function(rb_, w_, buf_) {
 88202  		this.$val = this;
 88203  		if (arguments.length === 0) {
 88204  			this.rb = new reorderBuffer.ptr(arrayType.zero(), arrayType$1.zero(), 0, 0, 0, new formInfo.ptr(0, false, false, $throwNilPointerError, $throwNilPointerError), new input.ptr("", sliceType$4.nil), 0, new input.ptr("", sliceType$4.nil), sliceType$4.nil, $throwNilPointerError);
 88205  			this.w = $ifaceNil;
 88206  			this.buf = sliceType$4.nil;
 88207  			return;
 88208  		}
 88209  		this.rb = rb_;
 88210  		this.w = w_;
 88211  		this.buf = buf_;
 88212  	});
 88213  	normReader = $pkg.normReader = $newType(0, $kindStruct, "norm.normReader", true, "vendor/golang_org/x/text/unicode/norm", false, function(rb_, r_, inbuf_, outbuf_, bufStart_, lastBoundary_, err_) {
 88214  		this.$val = this;
 88215  		if (arguments.length === 0) {
 88216  			this.rb = new reorderBuffer.ptr(arrayType.zero(), arrayType$1.zero(), 0, 0, 0, new formInfo.ptr(0, false, false, $throwNilPointerError, $throwNilPointerError), new input.ptr("", sliceType$4.nil), 0, new input.ptr("", sliceType$4.nil), sliceType$4.nil, $throwNilPointerError);
 88217  			this.r = $ifaceNil;
 88218  			this.inbuf = sliceType$4.nil;
 88219  			this.outbuf = sliceType$4.nil;
 88220  			this.bufStart = 0;
 88221  			this.lastBoundary = 0;
 88222  			this.err = $ifaceNil;
 88223  			return;
 88224  		}
 88225  		this.rb = rb_;
 88226  		this.r = r_;
 88227  		this.inbuf = inbuf_;
 88228  		this.outbuf = outbuf_;
 88229  		this.bufStart = bufStart_;
 88230  		this.lastBoundary = lastBoundary_;
 88231  		this.err = err_;
 88232  	});
 88233  	nfcTrie = $pkg.nfcTrie = $newType(0, $kindStruct, "norm.nfcTrie", true, "vendor/golang_org/x/text/unicode/norm", false, function() {
 88234  		this.$val = this;
 88235  		if (arguments.length === 0) {
 88236  			return;
 88237  		}
 88238  	});
 88239  	nfkcTrie = $pkg.nfkcTrie = $newType(0, $kindStruct, "norm.nfkcTrie", true, "vendor/golang_org/x/text/unicode/norm", false, function() {
 88240  		this.$val = this;
 88241  		if (arguments.length === 0) {
 88242  			return;
 88243  		}
 88244  	});
 88245  	valueRange = $pkg.valueRange = $newType(0, $kindStruct, "norm.valueRange", true, "vendor/golang_org/x/text/unicode/norm", false, function(value_, lo_, hi_) {
 88246  		this.$val = this;
 88247  		if (arguments.length === 0) {
 88248  			this.value = 0;
 88249  			this.lo = 0;
 88250  			this.hi = 0;
 88251  			return;
 88252  		}
 88253  		this.value = value_;
 88254  		this.lo = lo_;
 88255  		this.hi = hi_;
 88256  	});
 88257  	sparseBlocks = $pkg.sparseBlocks = $newType(0, $kindStruct, "norm.sparseBlocks", true, "vendor/golang_org/x/text/unicode/norm", false, function(values_, offset_) {
 88258  		this.$val = this;
 88259  		if (arguments.length === 0) {
 88260  			this.values = sliceType$2.nil;
 88261  			this.offset = sliceType.nil;
 88262  			return;
 88263  		}
 88264  		this.values = values_;
 88265  		this.offset = offset_;
 88266  	});
 88267  	sliceType = $sliceType($Uint16);
 88268  	sliceType$1 = $sliceType($error);
 88269  	sliceType$2 = $sliceType(valueRange);
 88270  	ptrType = $ptrType(formInfo);
 88271  	sliceType$3 = $sliceType(ptrType);
 88272  	sliceType$4 = $sliceType($Uint8);
 88273  	sliceType$5 = $sliceType(Properties);
 88274  	ptrType$1 = $ptrType(streamSafe);
 88275  	sliceType$6 = $sliceType($emptyInterface);
 88276  	arrayType = $arrayType(Properties, 32);
 88277  	arrayType$1 = $arrayType($Uint8, 128);
 88278  	arrayType$2 = $arrayType(Properties, 31);
 88279  	ptrType$2 = $ptrType(reorderBuffer);
 88280  	funcType = $funcType([ptrType$2], [$Bool], false);
 88281  	ptrType$3 = $ptrType(input);
 88282  	ptrType$4 = $ptrType(Iter);
 88283  	ptrType$5 = $ptrType(normWriter);
 88284  	ptrType$6 = $ptrType(normReader);
 88285  	ptrType$7 = $ptrType(nfcTrie);
 88286  	ptrType$8 = $ptrType(nfkcTrie);
 88287  	ptrType$9 = $ptrType(sparseBlocks);
 88288  	$ptrType(streamSafe).prototype.first = function(p) {
 88289  		var p, ss;
 88290  		ss = this;
 88291  		ss.$set((($clone(p, Properties).nTrailingNonStarters() << 24 >>> 24)));
 88292  	};
 88293  	$ptrType(streamSafe).prototype.next = function(p) {
 88294  		var n, p, ss;
 88295  		ss = this;
 88296  		if (ss.$get() > 30) {
 88297  			$panic(new $String("streamSafe was not reset"));
 88298  		}
 88299  		n = $clone(p, Properties).nLeadingNonStarters();
 88300  		ss.$set(ss.$get() + (((n << 24 >>> 24))) << 24 >>> 24);
 88301  		if (ss.$get() > 30) {
 88302  			ss.$set(0);
 88303  			return 2;
 88304  		}
 88305  		if (n === 0) {
 88306  			ss.$set((($clone(p, Properties).nTrailingNonStarters() << 24 >>> 24)));
 88307  			return 1;
 88308  		}
 88309  		return 0;
 88310  	};
 88311  	$ptrType(streamSafe).prototype.backwards = function(p) {
 88312  		var c, p, ss;
 88313  		ss = this;
 88314  		if (ss.$get() > 30) {
 88315  			$panic(new $String("streamSafe was not reset"));
 88316  		}
 88317  		c = ss.$get() + (($clone(p, Properties).nTrailingNonStarters() << 24 >>> 24)) << 24 >>> 24;
 88318  		if (c > 30) {
 88319  			return 2;
 88320  		}
 88321  		ss.$set(c);
 88322  		if ($clone(p, Properties).nLeadingNonStarters() === 0) {
 88323  			return 1;
 88324  		}
 88325  		return 0;
 88326  	};
 88327  	streamSafe.prototype.isMax = function() {
 88328  		var ss;
 88329  		ss = this.$val;
 88330  		return ss === 30;
 88331  	};
 88332  	$ptrType(streamSafe).prototype.isMax = function() { return new streamSafe(this.$get()).isMax(); };
 88333  	reorderBuffer.ptr.prototype.init = function(f, src) {
 88334  		var f, rb, src;
 88335  		rb = this;
 88336  		formInfo.copy(rb.f, ((f < 0 || f >= formTable.$length) ? ($throwRuntimeError("index out of range"), undefined) : formTable.$array[formTable.$offset + f]));
 88337  		rb.src.setBytes(src);
 88338  		rb.nsrc = src.$length;
 88339  		rb.ss = 0;
 88340  	};
 88341  	reorderBuffer.prototype.init = function(f, src) { return this.$val.init(f, src); };
 88342  	reorderBuffer.ptr.prototype.initString = function(f, src) {
 88343  		var f, rb, src;
 88344  		rb = this;
 88345  		formInfo.copy(rb.f, ((f < 0 || f >= formTable.$length) ? ($throwRuntimeError("index out of range"), undefined) : formTable.$array[formTable.$offset + f]));
 88346  		rb.src.setString(src);
 88347  		rb.nsrc = src.length;
 88348  		rb.ss = 0;
 88349  	};
 88350  	reorderBuffer.prototype.initString = function(f, src) { return this.$val.initString(f, src); };
 88351  	reorderBuffer.ptr.prototype.setFlusher = function(out, f) {
 88352  		var f, out, rb;
 88353  		rb = this;
 88354  		rb.out = out;
 88355  		rb.flushF = f;
 88356  	};
 88357  	reorderBuffer.prototype.setFlusher = function(out, f) { return this.$val.setFlusher(out, f); };
 88358  	reorderBuffer.ptr.prototype.reset = function() {
 88359  		var rb;
 88360  		rb = this;
 88361  		rb.nrune = 0;
 88362  		rb.nbyte = 0;
 88363  	};
 88364  	reorderBuffer.prototype.reset = function() { return this.$val.reset(); };
 88365  	reorderBuffer.ptr.prototype.doFlush = function() {
 88366  		var _r, rb, res, $s, $r;
 88367  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; rb = $f.rb; res = $f.res; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 88368  		rb = this;
 88369  		if (rb.f.composing) {
 88370  			rb.compose();
 88371  		}
 88372  		_r = rb.flushF(rb); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 88373  		res = _r;
 88374  		rb.reset();
 88375  		$s = -1; return res;
 88376  		/* */ } return; } if ($f === undefined) { $f = { $blk: reorderBuffer.ptr.prototype.doFlush }; } $f._r = _r; $f.rb = rb; $f.res = res; $f.$s = $s; $f.$r = $r; return $f;
 88377  	};
 88378  	reorderBuffer.prototype.doFlush = function() { return this.$val.doFlush(); };
 88379  	appendFlush = function(rb) {
 88380  		var end, i, rb, start, x, x$1;
 88381  		i = 0;
 88382  		while (true) {
 88383  			if (!(i < rb.nrune)) { break; }
 88384  			start = (x = rb.rune, ((i < 0 || i >= x.length) ? ($throwRuntimeError("index out of range"), undefined) : x[i])).pos;
 88385  			end = start + (x$1 = rb.rune, ((i < 0 || i >= x$1.length) ? ($throwRuntimeError("index out of range"), undefined) : x$1[i])).size << 24 >>> 24;
 88386  			rb.out = $appendSlice(rb.out, $subslice(new sliceType$4(rb.byte$1), start, end));
 88387  			i = i + (1) >> 0;
 88388  		}
 88389  		return true;
 88390  	};
 88391  	reorderBuffer.ptr.prototype.flushCopy = function(buf) {
 88392  		var buf, i, p, rb, runep, x;
 88393  		rb = this;
 88394  		p = 0;
 88395  		i = 0;
 88396  		while (true) {
 88397  			if (!(i < rb.nrune)) { break; }
 88398  			runep = $clone((x = rb.rune, ((i < 0 || i >= x.length) ? ($throwRuntimeError("index out of range"), undefined) : x[i])), Properties);
 88399  			p = p + ($copySlice($subslice(buf, p), $subslice(new sliceType$4(rb.byte$1), runep.pos, (runep.pos + runep.size << 24 >>> 24)))) >> 0;
 88400  			i = i + (1) >> 0;
 88401  		}
 88402  		rb.reset();
 88403  		return p;
 88404  	};
 88405  	reorderBuffer.prototype.flushCopy = function(buf) { return this.$val.flushCopy(buf); };
 88406  	reorderBuffer.ptr.prototype.insertOrdered = function(info) {
 88407  		var b, cc, info, n, pos, rb, x, x$1;
 88408  		rb = this;
 88409  		n = rb.nrune;
 88410  		b = new sliceType$5(rb.rune);
 88411  		cc = info.ccc;
 88412  		if (cc > 0) {
 88413  			while (true) {
 88414  				if (!(n > 0)) { break; }
 88415  				if ((x = n - 1 >> 0, ((x < 0 || x >= b.$length) ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + x])).ccc <= cc) {
 88416  					break;
 88417  				}
 88418  				Properties.copy(((n < 0 || n >= b.$length) ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + n]), (x$1 = n - 1 >> 0, ((x$1 < 0 || x$1 >= b.$length) ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + x$1])));
 88419  				n = n - (1) >> 0;
 88420  			}
 88421  		}
 88422  		rb.nrune = rb.nrune + (1) >> 0;
 88423  		pos = (rb.nbyte);
 88424  		rb.nbyte = rb.nbyte + (4) << 24 >>> 24;
 88425  		info.pos = pos;
 88426  		Properties.copy(((n < 0 || n >= b.$length) ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + n]), info);
 88427  	};
 88428  	reorderBuffer.prototype.insertOrdered = function(info) { return this.$val.insertOrdered(info); };
 88429  	reorderBuffer.ptr.prototype.insertFlush = function(src, i, info) {
 88430  		var _r, i, info, rb, rune, src, $s, $r;
 88431  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; i = $f.i; info = $f.info; rb = $f.rb; rune = $f.rune; src = $f.src; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 88432  		rb = this;
 88433  		rune = src.hangul(i);
 88434  		if (!((rune === 0))) {
 88435  			rb.decomposeHangul(rune);
 88436  			$s = -1; return 0;
 88437  		}
 88438  		/* */ if ($clone(info, Properties).hasDecomposition()) { $s = 1; continue; }
 88439  		/* */ $s = 2; continue;
 88440  		/* if ($clone(info, Properties).hasDecomposition()) { */ case 1:
 88441  			_r = rb.insertDecomposed($clone(info, Properties).Decomposition()); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 88442  			$s = -1; return _r;
 88443  		/* } */ case 2:
 88444  		rb.insertSingle($clone(src, input), i, $clone(info, Properties));
 88445  		$s = -1; return 0;
 88446  		/* */ } return; } if ($f === undefined) { $f = { $blk: reorderBuffer.ptr.prototype.insertFlush }; } $f._r = _r; $f.i = i; $f.info = info; $f.rb = rb; $f.rune = rune; $f.src = src; $f.$s = $s; $f.$r = $r; return $f;
 88447  	};
 88448  	reorderBuffer.prototype.insertFlush = function(src, i, info) { return this.$val.insertFlush(src, i, info); };
 88449  	reorderBuffer.ptr.prototype.insertUnsafe = function(src, i, info) {
 88450  		var _r, i, info, rb, rune, src, $s, $r;
 88451  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; i = $f.i; info = $f.info; rb = $f.rb; rune = $f.rune; src = $f.src; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 88452  		rb = this;
 88453  		rune = src.hangul(i);
 88454  		if (!((rune === 0))) {
 88455  			rb.decomposeHangul(rune);
 88456  		}
 88457  		/* */ if ($clone(info, Properties).hasDecomposition()) { $s = 1; continue; }
 88458  		/* */ $s = 2; continue;
 88459  		/* if ($clone(info, Properties).hasDecomposition()) { */ case 1:
 88460  			_r = rb.insertDecomposed($clone(info, Properties).Decomposition()); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 88461  			_r;
 88462  			$s = 3; continue;
 88463  		/* } else { */ case 2:
 88464  			rb.insertSingle($clone(src, input), i, $clone(info, Properties));
 88465  		/* } */ case 3:
 88466  		$s = -1; return;
 88467  		/* */ } return; } if ($f === undefined) { $f = { $blk: reorderBuffer.ptr.prototype.insertUnsafe }; } $f._r = _r; $f.i = i; $f.info = info; $f.rb = rb; $f.rune = rune; $f.src = src; $f.$s = $s; $f.$r = $r; return $f;
 88468  	};
 88469  	reorderBuffer.prototype.insertUnsafe = function(src, i, info) { return this.$val.insertUnsafe(src, i, info); };
 88470  	reorderBuffer.ptr.prototype.insertDecomposed = function(dcomp) {
 88471  		var _r, _r$1, _v, dcomp, i, info, rb, $s, $r;
 88472  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _v = $f._v; dcomp = $f.dcomp; i = $f.i; info = $f.info; rb = $f.rb; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 88473  		rb = this;
 88474  		rb.tmpBytes.setBytes(dcomp);
 88475  		i = 0;
 88476  		/* while (true) { */ case 1:
 88477  			/* if (!(i < dcomp.$length)) { break; } */ if(!(i < dcomp.$length)) { $s = 2; continue; }
 88478  			_r = rb.f.info($clone(rb.tmpBytes, input), i); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 88479  			info = $clone(_r, Properties);
 88480  			if (!($clone(info, Properties).BoundaryBefore() && rb.nrune > 0)) { _v = false; $s = 6; continue s; }
 88481  			_r$1 = rb.doFlush(); /* */ $s = 7; case 7: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 88482  			_v = !_r$1; case 6:
 88483  			/* */ if (_v) { $s = 4; continue; }
 88484  			/* */ $s = 5; continue;
 88485  			/* if (_v) { */ case 4:
 88486  				$s = -1; return -1;
 88487  			/* } */ case 5:
 88488  			i = i + ($copySlice($subslice(new sliceType$4(rb.byte$1), rb.nbyte), $subslice(dcomp, i, (i + ((info.size >> 0)) >> 0)))) >> 0;
 88489  			rb.insertOrdered($clone(info, Properties));
 88490  		/* } */ $s = 1; continue; case 2:
 88491  		$s = -1; return 0;
 88492  		/* */ } return; } if ($f === undefined) { $f = { $blk: reorderBuffer.ptr.prototype.insertDecomposed }; } $f._r = _r; $f._r$1 = _r$1; $f._v = _v; $f.dcomp = dcomp; $f.i = i; $f.info = info; $f.rb = rb; $f.$s = $s; $f.$r = $r; return $f;
 88493  	};
 88494  	reorderBuffer.prototype.insertDecomposed = function(dcomp) { return this.$val.insertDecomposed(dcomp); };
 88495  	reorderBuffer.ptr.prototype.insertSingle = function(src, i, info) {
 88496  		var i, info, rb, src;
 88497  		rb = this;
 88498  		src.copySlice($subslice(new sliceType$4(rb.byte$1), rb.nbyte), i, i + ((info.size >> 0)) >> 0);
 88499  		rb.insertOrdered($clone(info, Properties));
 88500  	};
 88501  	reorderBuffer.prototype.insertSingle = function(src, i, info) { return this.$val.insertSingle(src, i, info); };
 88502  	reorderBuffer.ptr.prototype.insertCGJ = function() {
 88503  		var rb;
 88504  		rb = this;
 88505  		rb.insertSingle(new input.ptr("\xCD\x8F", sliceType$4.nil), 0, new Properties.ptr(0, 2, 0, 0, 0, 0, 0));
 88506  	};
 88507  	reorderBuffer.prototype.insertCGJ = function() { return this.$val.insertCGJ(); };
 88508  	reorderBuffer.ptr.prototype.appendRune = function(r) {
 88509  		var bn, r, rb, sz, x, x$1;
 88510  		rb = this;
 88511  		bn = rb.nbyte;
 88512  		sz = utf8.EncodeRune($subslice(new sliceType$4(rb.byte$1), bn), (r));
 88513  		rb.nbyte = rb.nbyte + (4) << 24 >>> 24;
 88514  		Properties.copy((x = rb.rune, x$1 = rb.nrune, ((x$1 < 0 || x$1 >= x.length) ? ($throwRuntimeError("index out of range"), undefined) : x[x$1])), new Properties.ptr(bn, ((sz << 24 >>> 24)), 0, 0, 0, 0, 0));
 88515  		rb.nrune = rb.nrune + (1) >> 0;
 88516  	};
 88517  	reorderBuffer.prototype.appendRune = function(r) { return this.$val.appendRune(r); };
 88518  	reorderBuffer.ptr.prototype.assignRune = function(pos, r) {
 88519  		var bn, pos, r, rb, sz, x, x$1;
 88520  		rb = this;
 88521  		bn = (x = rb.rune, ((pos < 0 || pos >= x.length) ? ($throwRuntimeError("index out of range"), undefined) : x[pos])).pos;
 88522  		sz = utf8.EncodeRune($subslice(new sliceType$4(rb.byte$1), bn), (r));
 88523  		Properties.copy((x$1 = rb.rune, ((pos < 0 || pos >= x$1.length) ? ($throwRuntimeError("index out of range"), undefined) : x$1[pos])), new Properties.ptr(bn, ((sz << 24 >>> 24)), 0, 0, 0, 0, 0));
 88524  	};
 88525  	reorderBuffer.prototype.assignRune = function(pos, r) { return this.$val.assignRune(pos, r); };
 88526  	reorderBuffer.ptr.prototype.runeAt = function(n) {
 88527  		var _tuple, inf, n, r, rb, x;
 88528  		rb = this;
 88529  		inf = $clone((x = rb.rune, ((n < 0 || n >= x.length) ? ($throwRuntimeError("index out of range"), undefined) : x[n])), Properties);
 88530  		_tuple = utf8.DecodeRune($subslice(new sliceType$4(rb.byte$1), inf.pos, (inf.pos + inf.size << 24 >>> 24)));
 88531  		r = _tuple[0];
 88532  		return r;
 88533  	};
 88534  	reorderBuffer.prototype.runeAt = function(n) { return this.$val.runeAt(n); };
 88535  	reorderBuffer.ptr.prototype.bytesAt = function(n) {
 88536  		var inf, n, rb, x;
 88537  		rb = this;
 88538  		inf = $clone((x = rb.rune, ((n < 0 || n >= x.length) ? ($throwRuntimeError("index out of range"), undefined) : x[n])), Properties);
 88539  		return $subslice(new sliceType$4(rb.byte$1), inf.pos, (((inf.pos >> 0)) + ((inf.size >> 0)) >> 0));
 88540  	};
 88541  	reorderBuffer.prototype.bytesAt = function(n) { return this.$val.bytesAt(n); };
 88542  	isHangul = function(b) {
 88543  		var b, b0, b1;
 88544  		if (b.$length < 3) {
 88545  			return false;
 88546  		}
 88547  		b0 = (0 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 0]);
 88548  		if (b0 < 234) {
 88549  			return false;
 88550  		}
 88551  		b1 = (1 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 1]);
 88552  		if ((b0 === 234)) {
 88553  			return b1 >= 176;
 88554  		} else if (b0 < 237) {
 88555  			return true;
 88556  		} else if (b0 > 237) {
 88557  			return false;
 88558  		} else if (b1 < 158) {
 88559  			return true;
 88560  		}
 88561  		return (b1 === 158) && (2 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 2]) < 164;
 88562  	};
 88563  	isHangulString = function(b) {
 88564  		var b, b0, b1;
 88565  		if (b.length < 3) {
 88566  			return false;
 88567  		}
 88568  		b0 = b.charCodeAt(0);
 88569  		if (b0 < 234) {
 88570  			return false;
 88571  		}
 88572  		b1 = b.charCodeAt(1);
 88573  		if ((b0 === 234)) {
 88574  			return b1 >= 176;
 88575  		} else if (b0 < 237) {
 88576  			return true;
 88577  		} else if (b0 > 237) {
 88578  			return false;
 88579  		} else if (b1 < 158) {
 88580  			return true;
 88581  		}
 88582  		return (b1 === 158) && b.charCodeAt(2) < 164;
 88583  	};
 88584  	isJamoVT = function(b) {
 88585  		var b;
 88586  		return ((0 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 0]) === 225) && (((((1 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 1]) & 252) >>> 0)) === 132);
 88587  	};
 88588  	decomposeHangul = function(buf, r) {
 88589  		var _q, _q$1, _r, _r$1, buf, r, x;
 88590  		r = r - (44032) >> 0;
 88591  		x = (_r = r % 28, _r === _r ? _r : $throwRuntimeError("integer divide by zero"));
 88592  		r = (_q = r / (28), (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero"));
 88593  		utf8.EncodeRune(buf, 4352 + (_q$1 = r / 21, (_q$1 === _q$1 && _q$1 !== 1/0 && _q$1 !== -1/0) ? _q$1 >> 0 : $throwRuntimeError("integer divide by zero")) >> 0);
 88594  		utf8.EncodeRune($subslice(buf, 3), 4449 + (_r$1 = r % 21, _r$1 === _r$1 ? _r$1 : $throwRuntimeError("integer divide by zero")) >> 0);
 88595  		if (!((x === 0))) {
 88596  			utf8.EncodeRune($subslice(buf, 6), 4519 + x >> 0);
 88597  			return 9;
 88598  		}
 88599  		return 6;
 88600  	};
 88601  	reorderBuffer.ptr.prototype.decomposeHangul = function(r) {
 88602  		var _q, _q$1, _r, _r$1, r, rb, x;
 88603  		rb = this;
 88604  		r = r - (44032) >> 0;
 88605  		x = (_r = r % 28, _r === _r ? _r : $throwRuntimeError("integer divide by zero"));
 88606  		r = (_q = r / (28), (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero"));
 88607  		rb.appendRune(4352 + (_q$1 = r / 21, (_q$1 === _q$1 && _q$1 !== 1/0 && _q$1 !== -1/0) ? _q$1 >> 0 : $throwRuntimeError("integer divide by zero")) >> 0);
 88608  		rb.appendRune(4449 + (_r$1 = r % 21, _r$1 === _r$1 ? _r$1 : $throwRuntimeError("integer divide by zero")) >> 0);
 88609  		if (!((x === 0))) {
 88610  			rb.appendRune(4519 + x >> 0);
 88611  		}
 88612  	};
 88613  	reorderBuffer.prototype.decomposeHangul = function(r) { return this.$val.decomposeHangul(r); };
 88614  	reorderBuffer.ptr.prototype.combineHangul = function(s, i, k) {
 88615  		var _r, b, bn, cccB, cccC, i, k, l, rb, s, v, x;
 88616  		rb = this;
 88617  		b = new sliceType$5(rb.rune);
 88618  		bn = rb.nrune;
 88619  		while (true) {
 88620  			if (!(i < bn)) { break; }
 88621  			cccB = (x = k - 1 >> 0, ((x < 0 || x >= b.$length) ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + x])).ccc;
 88622  			cccC = ((i < 0 || i >= b.$length) ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + i]).ccc;
 88623  			if (cccB === 0) {
 88624  				s = k - 1 >> 0;
 88625  			}
 88626  			if (!((s === (k - 1 >> 0))) && cccB >= cccC) {
 88627  				Properties.copy(((k < 0 || k >= b.$length) ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + k]), ((i < 0 || i >= b.$length) ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + i]));
 88628  				k = k + (1) >> 0;
 88629  			} else {
 88630  				l = rb.runeAt(s);
 88631  				v = rb.runeAt(i);
 88632  				if (4352 <= l && l < 4371 && 4449 <= v && v < 4470) {
 88633  					rb.assignRune(s, (44032 + ($imul(((l - 4352 >> 0)), 588)) >> 0) + ($imul(((v - 4449 >> 0)), 28)) >> 0);
 88634  				} else if (44032 <= l && l < 55204 && 4519 < v && v < 4547 && (((_r = ((l - 44032 >> 0)) % 28, _r === _r ? _r : $throwRuntimeError("integer divide by zero"))) === 0)) {
 88635  					rb.assignRune(s, (l + v >> 0) - 4519 >> 0);
 88636  				} else {
 88637  					Properties.copy(((k < 0 || k >= b.$length) ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + k]), ((i < 0 || i >= b.$length) ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + i]));
 88638  					k = k + (1) >> 0;
 88639  				}
 88640  			}
 88641  			i = i + (1) >> 0;
 88642  		}
 88643  		rb.nrune = k;
 88644  	};
 88645  	reorderBuffer.prototype.combineHangul = function(s, i, k) { return this.$val.combineHangul(s, i, k); };
 88646  	reorderBuffer.ptr.prototype.compose = function() {
 88647  		var _tmp, _tmp$1, b, blocked, bn, cccB, cccC, combined, i, ii, k, rb, s, x;
 88648  		rb = this;
 88649  		bn = rb.nrune;
 88650  		if (bn === 0) {
 88651  			return;
 88652  		}
 88653  		k = 1;
 88654  		b = new sliceType$5(rb.rune);
 88655  		_tmp = 0;
 88656  		_tmp$1 = 1;
 88657  		s = _tmp;
 88658  		i = _tmp$1;
 88659  		while (true) {
 88660  			if (!(i < bn)) { break; }
 88661  			if (isJamoVT(rb.bytesAt(i))) {
 88662  				rb.combineHangul(s, i, k);
 88663  				return;
 88664  			}
 88665  			ii = $clone(((i < 0 || i >= b.$length) ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + i]), Properties);
 88666  			if ($clone(ii, Properties).combinesBackward()) {
 88667  				cccB = (x = k - 1 >> 0, ((x < 0 || x >= b.$length) ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + x])).ccc;
 88668  				cccC = ii.ccc;
 88669  				blocked = false;
 88670  				if (cccB === 0) {
 88671  					s = k - 1 >> 0;
 88672  				} else {
 88673  					blocked = !((s === (k - 1 >> 0))) && cccB >= cccC;
 88674  				}
 88675  				if (!blocked) {
 88676  					combined = combine(rb.runeAt(s), rb.runeAt(i));
 88677  					if (!((combined === 0))) {
 88678  						rb.assignRune(s, combined);
 88679  						i = i + (1) >> 0;
 88680  						continue;
 88681  					}
 88682  				}
 88683  			}
 88684  			Properties.copy(((k < 0 || k >= b.$length) ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + k]), ((i < 0 || i >= b.$length) ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + i]));
 88685  			k = k + (1) >> 0;
 88686  			i = i + (1) >> 0;
 88687  		}
 88688  		rb.nrune = k;
 88689  	};
 88690  	reorderBuffer.prototype.compose = function() { return this.$val.compose(); };
 88691  	Properties.ptr.prototype.BoundaryBefore = function() {
 88692  		var p;
 88693  		p = this;
 88694  		if ((p.ccc === 0) && !$clone(p, Properties).combinesBackward()) {
 88695  			return true;
 88696  		}
 88697  		return false;
 88698  	};
 88699  	Properties.prototype.BoundaryBefore = function() { return this.$val.BoundaryBefore(); };
 88700  	Properties.ptr.prototype.BoundaryAfter = function() {
 88701  		var p;
 88702  		p = this;
 88703  		return $clone(p, Properties).isInert();
 88704  	};
 88705  	Properties.prototype.BoundaryAfter = function() { return this.$val.BoundaryAfter(); };
 88706  	Properties.ptr.prototype.isYesC = function() {
 88707  		var p;
 88708  		p = this;
 88709  		return ((p.flags & 16) >>> 0) === 0;
 88710  	};
 88711  	Properties.prototype.isYesC = function() { return this.$val.isYesC(); };
 88712  	Properties.ptr.prototype.isYesD = function() {
 88713  		var p;
 88714  		p = this;
 88715  		return ((p.flags & 4) >>> 0) === 0;
 88716  	};
 88717  	Properties.prototype.isYesD = function() { return this.$val.isYesD(); };
 88718  	Properties.ptr.prototype.combinesBackward = function() {
 88719  		var p;
 88720  		p = this;
 88721  		return !((((p.flags & 8) >>> 0) === 0));
 88722  	};
 88723  	Properties.prototype.combinesBackward = function() { return this.$val.combinesBackward(); };
 88724  	Properties.ptr.prototype.hasDecomposition = function() {
 88725  		var p;
 88726  		p = this;
 88727  		return !((((p.flags & 4) >>> 0) === 0));
 88728  	};
 88729  	Properties.prototype.hasDecomposition = function() { return this.$val.hasDecomposition(); };
 88730  	Properties.ptr.prototype.isInert = function() {
 88731  		var p;
 88732  		p = this;
 88733  		return (((p.flags & 63) >>> 0) === 0) && (p.ccc === 0);
 88734  	};
 88735  	Properties.prototype.isInert = function() { return this.$val.isInert(); };
 88736  	Properties.ptr.prototype.multiSegment = function() {
 88737  		var p;
 88738  		p = this;
 88739  		return p.index >= 6253 && p.index < 12128;
 88740  	};
 88741  	Properties.prototype.multiSegment = function() { return this.$val.multiSegment(); };
 88742  	Properties.ptr.prototype.nLeadingNonStarters = function() {
 88743  		var p;
 88744  		p = this;
 88745  		return p.nLead;
 88746  	};
 88747  	Properties.prototype.nLeadingNonStarters = function() { return this.$val.nLeadingNonStarters(); };
 88748  	Properties.ptr.prototype.nTrailingNonStarters = function() {
 88749  		var p;
 88750  		p = this;
 88751  		return ((((p.flags & 3) >>> 0) << 24 >>> 24));
 88752  	};
 88753  	Properties.prototype.nTrailingNonStarters = function() { return this.$val.nTrailingNonStarters(); };
 88754  	Properties.ptr.prototype.Decomposition = function() {
 88755  		var i, n, p;
 88756  		p = this;
 88757  		if (p.index === 0) {
 88758  			return sliceType$4.nil;
 88759  		}
 88760  		i = p.index;
 88761  		n = (((i < 0 || i >= decomps.length) ? ($throwRuntimeError("index out of range"), undefined) : decomps[i]) & 63) >>> 0;
 88762  		i = i + (1) << 16 >>> 16;
 88763  		return $subslice(new sliceType$4(decomps), i, (i + ((n << 16 >>> 16)) << 16 >>> 16));
 88764  	};
 88765  	Properties.prototype.Decomposition = function() { return this.$val.Decomposition(); };
 88766  	Properties.ptr.prototype.Size = function() {
 88767  		var p;
 88768  		p = this;
 88769  		return ((p.size >> 0));
 88770  	};
 88771  	Properties.prototype.Size = function() { return this.$val.Size(); };
 88772  	Properties.ptr.prototype.CCC = function() {
 88773  		var p, x;
 88774  		p = this;
 88775  		if (p.index >= 19064) {
 88776  			return 0;
 88777  		}
 88778  		return (x = p.ccc, ((x < 0 || x >= ccc.length) ? ($throwRuntimeError("index out of range"), undefined) : ccc[x]));
 88779  	};
 88780  	Properties.prototype.CCC = function() { return this.$val.CCC(); };
 88781  	Properties.ptr.prototype.LeadCCC = function() {
 88782  		var p, x;
 88783  		p = this;
 88784  		return (x = p.ccc, ((x < 0 || x >= ccc.length) ? ($throwRuntimeError("index out of range"), undefined) : ccc[x]));
 88785  	};
 88786  	Properties.prototype.LeadCCC = function() { return this.$val.LeadCCC(); };
 88787  	Properties.ptr.prototype.TrailCCC = function() {
 88788  		var p, x;
 88789  		p = this;
 88790  		return (x = p.tccc, ((x < 0 || x >= ccc.length) ? ($throwRuntimeError("index out of range"), undefined) : ccc[x]));
 88791  	};
 88792  	Properties.prototype.TrailCCC = function() { return this.$val.TrailCCC(); };
 88793  	combine = function(a, b) {
 88794  		var _entry, a, b, key;
 88795  		key = (((((a << 16 >>> 16)) >>> 0)) << 16 >>> 0) + ((((b << 16 >>> 16)) >>> 0)) >>> 0;
 88796  		return (_entry = recompMap[$Uint32.keyFor(key)], _entry !== undefined ? _entry.v : 0);
 88797  	};
 88798  	lookupInfoNFC = function(b, i) {
 88799  		var _tuple, b, i, sz, v;
 88800  		_tuple = b.charinfoNFC(i);
 88801  		v = _tuple[0];
 88802  		sz = _tuple[1];
 88803  		return compInfo(v, sz);
 88804  	};
 88805  	lookupInfoNFKC = function(b, i) {
 88806  		var _tuple, b, i, sz, v;
 88807  		_tuple = b.charinfoNFKC(i);
 88808  		v = _tuple[0];
 88809  		sz = _tuple[1];
 88810  		return compInfo(v, sz);
 88811  	};
 88812  	Form.prototype.Properties = function(s) {
 88813  		var _tuple, _tuple$1, f, s;
 88814  		f = this.$val;
 88815  		if ((f === 0) || (f === 1)) {
 88816  			_tuple = nfcData.lookup(s);
 88817  			return compInfo(_tuple[0], _tuple[1]);
 88818  		}
 88819  		_tuple$1 = nfkcData.lookup(s);
 88820  		return compInfo(_tuple$1[0], _tuple$1[1]);
 88821  	};
 88822  	$ptrType(Form).prototype.Properties = function(s) { return new Form(this.$get()).Properties(s); };
 88823  	Form.prototype.PropertiesString = function(s) {
 88824  		var _tuple, _tuple$1, f, s;
 88825  		f = this.$val;
 88826  		if ((f === 0) || (f === 1)) {
 88827  			_tuple = nfcData.lookupString(s);
 88828  			return compInfo(_tuple[0], _tuple[1]);
 88829  		}
 88830  		_tuple$1 = nfkcData.lookupString(s);
 88831  		return compInfo(_tuple$1[0], _tuple$1[1]);
 88832  	};
 88833  	$ptrType(Form).prototype.PropertiesString = function(s) { return new Form(this.$get()).PropertiesString(s); };
 88834  	compInfo = function(v, sz) {
 88835  		var c, f, h, p, p$1, sz, v, x;
 88836  		if (v === 0) {
 88837  			return new Properties.ptr(0, ((sz << 24 >>> 24)), 0, 0, 0, 0, 0);
 88838  		} else if (v >= 32768) {
 88839  			p = new Properties.ptr(0, ((sz << 24 >>> 24)), ((v << 24 >>> 24)), ((v << 24 >>> 24)), 0, (((v >>> 8 << 16 >>> 16) << 24 >>> 24)), 0);
 88840  			if (p.ccc > 0 || $clone(p, Properties).combinesBackward()) {
 88841  				p.nLead = ((((p.flags & 3) >>> 0) << 24 >>> 24));
 88842  			}
 88843  			return p;
 88844  		}
 88845  		h = ((v < 0 || v >= decomps.length) ? ($throwRuntimeError("index out of range"), undefined) : decomps[v]);
 88846  		f = (((((((h & 192) >>> 0) << 24 >>> 24)) >>> 2 << 24 >>> 24)) | 4) >>> 0;
 88847  		p$1 = new Properties.ptr(0, ((sz << 24 >>> 24)), 0, 0, 0, f, v);
 88848  		if (v >= 11422) {
 88849  			v = v + ((((((h & 63) >>> 0) << 16 >>> 16)) + 1 << 16 >>> 16)) << 16 >>> 16;
 88850  			c = ((v < 0 || v >= decomps.length) ? ($throwRuntimeError("index out of range"), undefined) : decomps[v]);
 88851  			p$1.tccc = c >>> 2 << 24 >>> 24;
 88852  			p$1.flags = (p$1.flags | (((((c & 3) >>> 0) << 24 >>> 24)))) >>> 0;
 88853  			if (v >= 18862) {
 88854  				p$1.nLead = (c & 3) >>> 0;
 88855  				if (v >= 19103) {
 88856  					p$1.flags = (p$1.flags & (3)) >>> 0;
 88857  					p$1.index = 0;
 88858  					return p$1;
 88859  				}
 88860  				p$1.ccc = (x = v + 1 << 16 >>> 16, ((x < 0 || x >= decomps.length) ? ($throwRuntimeError("index out of range"), undefined) : decomps[x]));
 88861  			}
 88862  		}
 88863  		return p$1;
 88864  	};
 88865  	inputBytes = function(str) {
 88866  		var str;
 88867  		return new input.ptr("", str);
 88868  	};
 88869  	inputString = function(str) {
 88870  		var str;
 88871  		return new input.ptr(str, sliceType$4.nil);
 88872  	};
 88873  	input.ptr.prototype.setBytes = function(str) {
 88874  		var in$1, str;
 88875  		in$1 = this;
 88876  		in$1.str = "";
 88877  		in$1.bytes = str;
 88878  	};
 88879  	input.prototype.setBytes = function(str) { return this.$val.setBytes(str); };
 88880  	input.ptr.prototype.setString = function(str) {
 88881  		var in$1, str;
 88882  		in$1 = this;
 88883  		in$1.str = str;
 88884  		in$1.bytes = sliceType$4.nil;
 88885  	};
 88886  	input.prototype.setString = function(str) { return this.$val.setString(str); };
 88887  	input.ptr.prototype._byte = function(p) {
 88888  		var in$1, p, x;
 88889  		in$1 = this;
 88890  		if (in$1.bytes === sliceType$4.nil) {
 88891  			return in$1.str.charCodeAt(p);
 88892  		}
 88893  		return (x = in$1.bytes, ((p < 0 || p >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + p]));
 88894  	};
 88895  	input.prototype._byte = function(p) { return this.$val._byte(p); };
 88896  	input.ptr.prototype.skipASCII = function(p, max) {
 88897  		var in$1, max, p, x;
 88898  		in$1 = this;
 88899  		if (in$1.bytes === sliceType$4.nil) {
 88900  			while (true) {
 88901  				if (!(p < max && in$1.str.charCodeAt(p) < 128)) { break; }
 88902  				p = p + (1) >> 0;
 88903  			}
 88904  		} else {
 88905  			while (true) {
 88906  				if (!(p < max && (x = in$1.bytes, ((p < 0 || p >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + p])) < 128)) { break; }
 88907  				p = p + (1) >> 0;
 88908  			}
 88909  		}
 88910  		return p;
 88911  	};
 88912  	input.prototype.skipASCII = function(p, max) { return this.$val.skipASCII(p, max); };
 88913  	input.ptr.prototype.skipContinuationBytes = function(p) {
 88914  		var in$1, p, x;
 88915  		in$1 = this;
 88916  		if (in$1.bytes === sliceType$4.nil) {
 88917  			while (true) {
 88918  				if (!(p < in$1.str.length && !utf8.RuneStart(in$1.str.charCodeAt(p)))) { break; }
 88919  				p = p + (1) >> 0;
 88920  			}
 88921  		} else {
 88922  			while (true) {
 88923  				if (!(p < in$1.bytes.$length && !utf8.RuneStart((x = in$1.bytes, ((p < 0 || p >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + p]))))) { break; }
 88924  				p = p + (1) >> 0;
 88925  			}
 88926  		}
 88927  		return p;
 88928  	};
 88929  	input.prototype.skipContinuationBytes = function(p) { return this.$val.skipContinuationBytes(p); };
 88930  	input.ptr.prototype.appendSlice = function(buf, b, e) {
 88931  		var b, buf, e, i, in$1;
 88932  		in$1 = this;
 88933  		if (!(in$1.bytes === sliceType$4.nil)) {
 88934  			return $appendSlice(buf, $subslice(in$1.bytes, b, e));
 88935  		}
 88936  		i = b;
 88937  		while (true) {
 88938  			if (!(i < e)) { break; }
 88939  			buf = $append(buf, in$1.str.charCodeAt(i));
 88940  			i = i + (1) >> 0;
 88941  		}
 88942  		return buf;
 88943  	};
 88944  	input.prototype.appendSlice = function(buf, b, e) { return this.$val.appendSlice(buf, b, e); };
 88945  	input.ptr.prototype.copySlice = function(buf, b, e) {
 88946  		var b, buf, e, in$1;
 88947  		in$1 = this;
 88948  		if (in$1.bytes === sliceType$4.nil) {
 88949  			return $copyString(buf, $substring(in$1.str, b, e));
 88950  		}
 88951  		return $copySlice(buf, $subslice(in$1.bytes, b, e));
 88952  	};
 88953  	input.prototype.copySlice = function(buf, b, e) { return this.$val.copySlice(buf, b, e); };
 88954  	input.ptr.prototype.charinfoNFC = function(p) {
 88955  		var in$1, p;
 88956  		in$1 = this;
 88957  		if (in$1.bytes === sliceType$4.nil) {
 88958  			return nfcData.lookupString($substring(in$1.str, p));
 88959  		}
 88960  		return nfcData.lookup($subslice(in$1.bytes, p));
 88961  	};
 88962  	input.prototype.charinfoNFC = function(p) { return this.$val.charinfoNFC(p); };
 88963  	input.ptr.prototype.charinfoNFKC = function(p) {
 88964  		var in$1, p;
 88965  		in$1 = this;
 88966  		if (in$1.bytes === sliceType$4.nil) {
 88967  			return nfkcData.lookupString($substring(in$1.str, p));
 88968  		}
 88969  		return nfkcData.lookup($subslice(in$1.bytes, p));
 88970  	};
 88971  	input.prototype.charinfoNFKC = function(p) { return this.$val.charinfoNFKC(p); };
 88972  	input.ptr.prototype.hangul = function(p) {
 88973  		var _tuple, _tuple$1, in$1, p, r, size;
 88974  		r = 0;
 88975  		in$1 = this;
 88976  		size = 0;
 88977  		if (in$1.bytes === sliceType$4.nil) {
 88978  			if (!isHangulString($substring(in$1.str, p))) {
 88979  				r = 0;
 88980  				return r;
 88981  			}
 88982  			_tuple = utf8.DecodeRuneInString($substring(in$1.str, p));
 88983  			r = _tuple[0];
 88984  			size = _tuple[1];
 88985  		} else {
 88986  			if (!isHangul($subslice(in$1.bytes, p))) {
 88987  				r = 0;
 88988  				return r;
 88989  			}
 88990  			_tuple$1 = utf8.DecodeRune($subslice(in$1.bytes, p));
 88991  			r = _tuple$1[0];
 88992  			size = _tuple$1[1];
 88993  		}
 88994  		if (!((size === 3))) {
 88995  			r = 0;
 88996  			return r;
 88997  		}
 88998  		r = r;
 88999  		return r;
 89000  	};
 89001  	input.prototype.hangul = function(p) { return this.$val.hangul(p); };
 89002  	Iter.ptr.prototype.Init = function(f, src) {
 89003  		var _r, f, i, src, x, $s, $r;
 89004  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; f = $f.f; i = $f.i; src = $f.src; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 89005  		i = this;
 89006  		i.p = 0;
 89007  		if (src.$length === 0) {
 89008  			i.setDone();
 89009  			i.rb.nsrc = 0;
 89010  			$s = -1; return;
 89011  		}
 89012  		i.multiSeg = sliceType$4.nil;
 89013  		i.rb.init(f, src);
 89014  		i.next = i.rb.f.nextMain;
 89015  		i.asciiF = nextASCIIBytes;
 89016  		_r = i.rb.f.info($clone(i.rb.src, input), i.p); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 89017  		Properties.copy(i.info, _r);
 89018  		(x = i.rb, (x.$ptr_ss || (x.$ptr_ss = new ptrType$1(function() { return this.$target.ss; }, function($v) { this.$target.ss = $v; }, x)))).first($clone(i.info, Properties));
 89019  		$s = -1; return;
 89020  		/* */ } return; } if ($f === undefined) { $f = { $blk: Iter.ptr.prototype.Init }; } $f._r = _r; $f.f = f; $f.i = i; $f.src = src; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
 89021  	};
 89022  	Iter.prototype.Init = function(f, src) { return this.$val.Init(f, src); };
 89023  	Iter.ptr.prototype.InitString = function(f, src) {
 89024  		var _r, f, i, src, x, $s, $r;
 89025  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; f = $f.f; i = $f.i; src = $f.src; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 89026  		i = this;
 89027  		i.p = 0;
 89028  		if (src.length === 0) {
 89029  			i.setDone();
 89030  			i.rb.nsrc = 0;
 89031  			$s = -1; return;
 89032  		}
 89033  		i.multiSeg = sliceType$4.nil;
 89034  		i.rb.initString(f, src);
 89035  		i.next = i.rb.f.nextMain;
 89036  		i.asciiF = nextASCIIString;
 89037  		_r = i.rb.f.info($clone(i.rb.src, input), i.p); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 89038  		Properties.copy(i.info, _r);
 89039  		(x = i.rb, (x.$ptr_ss || (x.$ptr_ss = new ptrType$1(function() { return this.$target.ss; }, function($v) { this.$target.ss = $v; }, x)))).first($clone(i.info, Properties));
 89040  		$s = -1; return;
 89041  		/* */ } return; } if ($f === undefined) { $f = { $blk: Iter.ptr.prototype.InitString }; } $f._r = _r; $f.f = f; $f.i = i; $f.src = src; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
 89042  	};
 89043  	Iter.prototype.InitString = function(f, src) { return this.$val.InitString(f, src); };
 89044  	Iter.ptr.prototype.Seek = function(offset, whence) {
 89045  		var _1, _r, _r$1, _r$2, abs, i, offset, whence, x, x$1, x$2, $s, $r;
 89046  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; abs = $f.abs; i = $f.i; offset = $f.offset; whence = $f.whence; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 89047  		i = this;
 89048  		abs = new $Int64(0, 0);
 89049  			_1 = whence;
 89050  			/* */ if (_1 === (0)) { $s = 2; continue; }
 89051  			/* */ if (_1 === (1)) { $s = 3; continue; }
 89052  			/* */ if (_1 === (2)) { $s = 4; continue; }
 89053  			/* */ $s = 5; continue;
 89054  			/* if (_1 === (0)) { */ case 2:
 89055  				abs = offset;
 89056  				$s = 6; continue;
 89057  			/* } else if (_1 === (1)) { */ case 3:
 89058  				abs = (x = (new $Int64(0, i.p)), new $Int64(x.$high + offset.$high, x.$low + offset.$low));
 89059  				$s = 6; continue;
 89060  			/* } else if (_1 === (2)) { */ case 4:
 89061  				abs = (x$1 = (new $Int64(0, i.rb.nsrc)), new $Int64(x$1.$high + offset.$high, x$1.$low + offset.$low));
 89062  				$s = 6; continue;
 89063  			/* } else { */ case 5:
 89064  				_r = fmt.Errorf("norm: invalid whence", new sliceType$6([])); /* */ $s = 7; case 7: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 89065  				$s = -1; return [new $Int64(0, 0), _r];
 89066  			/* } */ case 6:
 89067  		case 1:
 89068  		/* */ if ((abs.$high < 0 || (abs.$high === 0 && abs.$low < 0))) { $s = 8; continue; }
 89069  		/* */ $s = 9; continue;
 89070  		/* if ((abs.$high < 0 || (abs.$high === 0 && abs.$low < 0))) { */ case 8:
 89071  			_r$1 = fmt.Errorf("norm: negative position", new sliceType$6([])); /* */ $s = 10; case 10: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 89072  			$s = -1; return [new $Int64(0, 0), _r$1];
 89073  		/* } */ case 9:
 89074  		if ((((abs.$low + ((abs.$high >> 31) * 4294967296)) >> 0)) >= i.rb.nsrc) {
 89075  			i.setDone();
 89076  			$s = -1; return [(new $Int64(0, i.p)), $ifaceNil];
 89077  		}
 89078  		i.p = (((abs.$low + ((abs.$high >> 31) * 4294967296)) >> 0));
 89079  		i.multiSeg = sliceType$4.nil;
 89080  		i.next = i.rb.f.nextMain;
 89081  		_r$2 = i.rb.f.info($clone(i.rb.src, input), i.p); /* */ $s = 11; case 11: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 89082  		Properties.copy(i.info, _r$2);
 89083  		(x$2 = i.rb, (x$2.$ptr_ss || (x$2.$ptr_ss = new ptrType$1(function() { return this.$target.ss; }, function($v) { this.$target.ss = $v; }, x$2)))).first($clone(i.info, Properties));
 89084  		$s = -1; return [abs, $ifaceNil];
 89085  		/* */ } return; } if ($f === undefined) { $f = { $blk: Iter.ptr.prototype.Seek }; } $f._1 = _1; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f.abs = abs; $f.i = i; $f.offset = offset; $f.whence = whence; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.$s = $s; $f.$r = $r; return $f;
 89086  	};
 89087  	Iter.prototype.Seek = function(offset, whence) { return this.$val.Seek(offset, whence); };
 89088  	Iter.ptr.prototype.returnSlice = function(a, b) {
 89089  		var a, b, i;
 89090  		i = this;
 89091  		if (i.rb.src.bytes === sliceType$4.nil) {
 89092  			return $subslice(new sliceType$4(i.buf), 0, $copyString(new sliceType$4(i.buf), $substring(i.rb.src.str, a, b)));
 89093  		}
 89094  		return $subslice(i.rb.src.bytes, a, b);
 89095  	};
 89096  	Iter.prototype.returnSlice = function(a, b) { return this.$val.returnSlice(a, b); };
 89097  	Iter.ptr.prototype.Pos = function() {
 89098  		var i;
 89099  		i = this;
 89100  		return i.p;
 89101  	};
 89102  	Iter.prototype.Pos = function() { return this.$val.Pos(); };
 89103  	Iter.ptr.prototype.setDone = function() {
 89104  		var i;
 89105  		i = this;
 89106  		i.next = nextDone;
 89107  		i.p = i.rb.nsrc;
 89108  	};
 89109  	Iter.prototype.setDone = function() { return this.$val.setDone(); };
 89110  	Iter.ptr.prototype.Done = function() {
 89111  		var i;
 89112  		i = this;
 89113  		return i.p >= i.rb.nsrc;
 89114  	};
 89115  	Iter.prototype.Done = function() { return this.$val.Done(); };
 89116  	Iter.ptr.prototype.Next = function() {
 89117  		var _r, i, $s, $r;
 89118  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; i = $f.i; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 89119  		i = this;
 89120  		_r = i.next(i); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 89121  		$s = -1; return _r;
 89122  		/* */ } return; } if ($f === undefined) { $f = { $blk: Iter.ptr.prototype.Next }; } $f._r = _r; $f.i = i; $f.$s = $s; $f.$r = $r; return $f;
 89123  	};
 89124  	Iter.prototype.Next = function() { return this.$val.Next(); };
 89125  	nextASCIIBytes = function(i) {
 89126  		var _r, _r$1, i, p, p0, x, $s, $r;
 89127  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; i = $f.i; p = $f.p; p0 = $f.p0; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 89128  		p = i.p + 1 >> 0;
 89129  		if (p >= i.rb.nsrc) {
 89130  			i.setDone();
 89131  			$s = -1; return $subslice(i.rb.src.bytes, i.p, p);
 89132  		}
 89133  		if ((x = i.rb.src.bytes, ((p < 0 || p >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + p])) < 128) {
 89134  			p0 = i.p;
 89135  			i.p = p;
 89136  			$s = -1; return $subslice(i.rb.src.bytes, p0, p);
 89137  		}
 89138  		_r = i.rb.f.info($clone(i.rb.src, input), i.p); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 89139  		Properties.copy(i.info, _r);
 89140  		i.next = i.rb.f.nextMain;
 89141  		_r$1 = i.next(i); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 89142  		$s = -1; return _r$1;
 89143  		/* */ } return; } if ($f === undefined) { $f = { $blk: nextASCIIBytes }; } $f._r = _r; $f._r$1 = _r$1; $f.i = i; $f.p = p; $f.p0 = p0; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
 89144  	};
 89145  	nextASCIIString = function(i) {
 89146  		var _r, _r$1, i, p, $s, $r;
 89147  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; i = $f.i; p = $f.p; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 89148  		p = i.p + 1 >> 0;
 89149  		if (p >= i.rb.nsrc) {
 89150  			i.buf[0] = i.rb.src.str.charCodeAt(i.p);
 89151  			i.setDone();
 89152  			$s = -1; return $subslice(new sliceType$4(i.buf), 0, 1);
 89153  		}
 89154  		if (i.rb.src.str.charCodeAt(p) < 128) {
 89155  			i.buf[0] = i.rb.src.str.charCodeAt(i.p);
 89156  			i.p = p;
 89157  			$s = -1; return $subslice(new sliceType$4(i.buf), 0, 1);
 89158  		}
 89159  		_r = i.rb.f.info($clone(i.rb.src, input), i.p); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 89160  		Properties.copy(i.info, _r);
 89161  		i.next = i.rb.f.nextMain;
 89162  		_r$1 = i.next(i); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 89163  		$s = -1; return _r$1;
 89164  		/* */ } return; } if ($f === undefined) { $f = { $blk: nextASCIIString }; } $f._r = _r; $f._r$1 = _r$1; $f.i = i; $f.p = p; $f.$s = $s; $f.$r = $r; return $f;
 89165  	};
 89166  	nextHangul = function(i) {
 89167  		var _r, _r$1, i, next, p, x, $s, $r;
 89168  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; i = $f.i; next = $f.next; p = $f.p; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 89169  		p = i.p;
 89170  		next = p + 3 >> 0;
 89171  		/* */ if (next >= i.rb.nsrc) { $s = 1; continue; }
 89172  		/* */ if (i.rb.src.hangul(next) === 0) { $s = 2; continue; }
 89173  		/* */ $s = 3; continue;
 89174  		/* if (next >= i.rb.nsrc) { */ case 1:
 89175  			i.setDone();
 89176  			$s = 3; continue;
 89177  		/* } else if (i.rb.src.hangul(next) === 0) { */ case 2:
 89178  			(x = i.rb, (x.$ptr_ss || (x.$ptr_ss = new ptrType$1(function() { return this.$target.ss; }, function($v) { this.$target.ss = $v; }, x)))).next($clone(i.info, Properties));
 89179  			_r = i.rb.f.info($clone(i.rb.src, input), i.p); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 89180  			Properties.copy(i.info, _r);
 89181  			i.next = i.rb.f.nextMain;
 89182  			_r$1 = i.next(i); /* */ $s = 5; case 5: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 89183  			$s = -1; return _r$1;
 89184  		/* } */ case 3:
 89185  		i.p = next;
 89186  		$s = -1; return $subslice(new sliceType$4(i.buf), 0, decomposeHangul(new sliceType$4(i.buf), i.rb.src.hangul(p)));
 89187  		/* */ } return; } if ($f === undefined) { $f = { $blk: nextHangul }; } $f._r = _r; $f._r$1 = _r$1; $f.i = i; $f.next = next; $f.p = p; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
 89188  	};
 89189  	nextDone = function(i) {
 89190  		var i;
 89191  		return sliceType$4.nil;
 89192  	};
 89193  	nextMulti = function(i) {
 89194  		var _r, _r$1, d, i, info, j, $s, $r;
 89195  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; d = $f.d; i = $f.i; info = $f.info; j = $f.j; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 89196  		j = 0;
 89197  		d = i.multiSeg;
 89198  		j = 1;
 89199  		while (true) {
 89200  			if (!(j < d.$length && !utf8.RuneStart(((j < 0 || j >= d.$length) ? ($throwRuntimeError("index out of range"), undefined) : d.$array[d.$offset + j])))) { break; }
 89201  			j = j + (1) >> 0;
 89202  		}
 89203  		/* while (true) { */ case 1:
 89204  			/* if (!(j < d.$length)) { break; } */ if(!(j < d.$length)) { $s = 2; continue; }
 89205  			_r = i.rb.f.info(new input.ptr("", d), j); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 89206  			info = $clone(_r, Properties);
 89207  			if ($clone(info, Properties).BoundaryBefore()) {
 89208  				i.multiSeg = $subslice(d, j);
 89209  				$s = -1; return $subslice(d, 0, j);
 89210  			}
 89211  			j = j + (((info.size >> 0))) >> 0;
 89212  		/* } */ $s = 1; continue; case 2:
 89213  		i.next = i.rb.f.nextMain;
 89214  		_r$1 = i.next(i); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 89215  		$s = -1; return _r$1;
 89216  		/* */ } return; } if ($f === undefined) { $f = { $blk: nextMulti }; } $f._r = _r; $f._r$1 = _r$1; $f.d = d; $f.i = i; $f.info = info; $f.j = j; $f.$s = $s; $f.$r = $r; return $f;
 89217  	};
 89218  	nextMultiNorm = function(i) {
 89219  		var _r, _r$1, d, i, info, j, seg, $s, $r;
 89220  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; d = $f.d; i = $f.i; info = $f.info; j = $f.j; seg = $f.seg; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 89221  		j = 0;
 89222  		d = i.multiSeg;
 89223  		/* while (true) { */ case 1:
 89224  			/* if (!(j < d.$length)) { break; } */ if(!(j < d.$length)) { $s = 2; continue; }
 89225  			_r = i.rb.f.info(new input.ptr("", d), j); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 89226  			info = $clone(_r, Properties);
 89227  			/* */ if ($clone(info, Properties).BoundaryBefore()) { $s = 4; continue; }
 89228  			/* */ $s = 5; continue;
 89229  			/* if ($clone(info, Properties).BoundaryBefore()) { */ case 4:
 89230  				i.rb.compose();
 89231  				seg = $subslice(new sliceType$4(i.buf), 0, i.rb.flushCopy(new sliceType$4(i.buf)));
 89232  				$r = i.rb.insertUnsafe(new input.ptr("", d), j, $clone(info, Properties)); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 89233  				i.multiSeg = $subslice(d, (j + ((info.size >> 0)) >> 0));
 89234  				$s = -1; return seg;
 89235  			/* } */ case 5:
 89236  			$r = i.rb.insertUnsafe(new input.ptr("", d), j, $clone(info, Properties)); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 89237  			j = j + (((info.size >> 0))) >> 0;
 89238  		/* } */ $s = 1; continue; case 2:
 89239  		i.multiSeg = sliceType$4.nil;
 89240  		i.next = nextComposed;
 89241  		_r$1 = doNormComposed(i); /* */ $s = 8; case 8: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 89242  		$s = -1; return _r$1;
 89243  		/* */ } return; } if ($f === undefined) { $f = { $blk: nextMultiNorm }; } $f._r = _r; $f._r$1 = _r$1; $f.d = d; $f.i = i; $f.info = info; $f.j = j; $f.seg = seg; $f.$s = $s; $f.$r = $r; return $f;
 89244  	};
 89245  	nextDecomposed = function(i) {
 89246  		var _1, _r, _r$1, _r$2, _r$3, _r$4, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, d, i, inCopyStart, next, outCopyStart, outp, p, p$1, p$2, prevCC, prevCC$1, r, sz, v, x, x$1, $s, $r;
 89247  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tmp$4 = $f._tmp$4; _tmp$5 = $f._tmp$5; d = $f.d; i = $f.i; inCopyStart = $f.inCopyStart; next = $f.next; outCopyStart = $f.outCopyStart; outp = $f.outp; p = $f.p; p$1 = $f.p$1; p$2 = $f.p$2; prevCC = $f.prevCC; prevCC$1 = $f.prevCC$1; r = $f.r; sz = $f.sz; v = $f.v; x = $f.x; x$1 = $f.x$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 89248  		next = sliceType$4.nil;
 89249  		outp = 0;
 89250  		_tmp = i.p;
 89251  		_tmp$1 = 0;
 89252  		inCopyStart = _tmp;
 89253  		outCopyStart = _tmp$1;
 89254  		/* while (true) { */ case 1:
 89255  			sz = ((i.info.size >> 0));
 89256  			/* */ if (sz <= 1) { $s = 3; continue; }
 89257  			/* */ $s = 4; continue;
 89258  			/* if (sz <= 1) { */ case 3:
 89259  				i.rb.ss = 0;
 89260  				p = i.p;
 89261  				i.p = i.p + (1) >> 0;
 89262  				if (i.p >= i.rb.nsrc) {
 89263  					i.setDone();
 89264  					next = i.returnSlice(p, i.p);
 89265  					$s = -1; return next;
 89266  				} else if (i.rb.src._byte(i.p) < 128) {
 89267  					i.next = i.asciiF;
 89268  					next = i.returnSlice(p, i.p);
 89269  					$s = -1; return next;
 89270  				}
 89271  				outp = outp + (1) >> 0;
 89272  				$s = 5; continue;
 89273  			/* } else { */ case 4:
 89274  				d = $clone(i.info, Properties).Decomposition();
 89275  				/* */ if (!(d === sliceType$4.nil)) { $s = 6; continue; }
 89276  				/* */ $s = 7; continue;
 89277  				/* if (!(d === sliceType$4.nil)) { */ case 6:
 89278  					p$1 = outp + d.$length >> 0;
 89279  					/* */ if (outp > 0) { $s = 9; continue; }
 89280  					/* */ if ($clone(i.info, Properties).multiSegment()) { $s = 10; continue; }
 89281  					/* */ $s = 11; continue;
 89282  					/* if (outp > 0) { */ case 9:
 89283  						i.rb.src.copySlice($subslice(new sliceType$4(i.buf), outCopyStart), inCopyStart, i.p);
 89284  						if (p$1 > 128) {
 89285  							next = $subslice(new sliceType$4(i.buf), 0, outp);
 89286  							$s = -1; return next;
 89287  						}
 89288  						$s = 11; continue;
 89289  					/* } else if ($clone(i.info, Properties).multiSegment()) { */ case 10:
 89290  						/* */ if (i.multiSeg === sliceType$4.nil) { $s = 12; continue; }
 89291  						/* */ $s = 13; continue;
 89292  						/* if (i.multiSeg === sliceType$4.nil) { */ case 12:
 89293  							i.multiSeg = d;
 89294  							i.next = nextMulti;
 89295  							_r = nextMulti(i); /* */ $s = 14; case 14: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 89296  							next = _r;
 89297  							$s = -1; return next;
 89298  						/* } */ case 13:
 89299  						d = i.multiSeg;
 89300  						i.multiSeg = sliceType$4.nil;
 89301  						p$1 = d.$length;
 89302  					/* } */ case 11:
 89303  					prevCC = i.info.tccc;
 89304  					i.p = i.p + (sz) >> 0;
 89305  					/* */ if (i.p >= i.rb.nsrc) { $s = 15; continue; }
 89306  					/* */ $s = 16; continue;
 89307  					/* if (i.p >= i.rb.nsrc) { */ case 15:
 89308  						i.setDone();
 89309  						Properties.copy(i.info, new Properties.ptr(0, 0, 0, 0, 0, 0, 0));
 89310  						$s = 17; continue;
 89311  					/* } else { */ case 16:
 89312  						_r$1 = i.rb.f.info($clone(i.rb.src, input), i.p); /* */ $s = 18; case 18: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 89313  						Properties.copy(i.info, _r$1);
 89314  					/* } */ case 17:
 89315  					_1 = (x = i.rb, (x.$ptr_ss || (x.$ptr_ss = new ptrType$1(function() { return this.$target.ss; }, function($v) { this.$target.ss = $v; }, x)))).next($clone(i.info, Properties));
 89316  					if (_1 === (2)) {
 89317  						i.next = nextCGJDecompose;
 89318  						if (outp > 0) {
 89319  							$copySlice($subslice(new sliceType$4(i.buf), outp), d);
 89320  							next = $subslice(new sliceType$4(i.buf), 0, p$1);
 89321  							$s = -1; return next;
 89322  						}
 89323  						next = d;
 89324  						$s = -1; return next;
 89325  					} else if (_1 === (1)) {
 89326  						if (outp > 0) {
 89327  							$copySlice($subslice(new sliceType$4(i.buf), outp), d);
 89328  							next = $subslice(new sliceType$4(i.buf), 0, p$1);
 89329  							$s = -1; return next;
 89330  						}
 89331  						next = d;
 89332  						$s = -1; return next;
 89333  					}
 89334  					$copySlice($subslice(new sliceType$4(i.buf), outp), d);
 89335  					outp = p$1;
 89336  					_tmp$2 = i.p;
 89337  					_tmp$3 = outp;
 89338  					inCopyStart = _tmp$2;
 89339  					outCopyStart = _tmp$3;
 89340  					/* */ if (i.info.ccc < prevCC) { $s = 19; continue; }
 89341  					/* */ $s = 20; continue;
 89342  					/* if (i.info.ccc < prevCC) { */ case 19:
 89343  						/* goto doNorm */ $s = 21; continue;
 89344  					/* } */ case 20:
 89345  					/* continue; */ $s = 1; continue;
 89346  					$s = 8; continue;
 89347  				/* } else { */ case 7:
 89348  					r = i.rb.src.hangul(i.p);
 89349  					if (!((r === 0))) {
 89350  						outp = decomposeHangul(new sliceType$4(i.buf), r);
 89351  						i.p = i.p + (3) >> 0;
 89352  						_tmp$4 = i.p;
 89353  						_tmp$5 = outp;
 89354  						inCopyStart = _tmp$4;
 89355  						outCopyStart = _tmp$5;
 89356  						if (i.p >= i.rb.nsrc) {
 89357  							i.setDone();
 89358  							/* break; */ $s = 2; continue;
 89359  						} else if (!((i.rb.src.hangul(i.p) === 0))) {
 89360  							i.next = nextHangul;
 89361  							next = $subslice(new sliceType$4(i.buf), 0, outp);
 89362  							$s = -1; return next;
 89363  						}
 89364  					} else {
 89365  						p$2 = outp + sz >> 0;
 89366  						if (p$2 > 128) {
 89367  							/* break; */ $s = 2; continue;
 89368  						}
 89369  						outp = p$2;
 89370  						i.p = i.p + (sz) >> 0;
 89371  					}
 89372  				/* } */ case 8:
 89373  			/* } */ case 5:
 89374  			if (i.p >= i.rb.nsrc) {
 89375  				i.setDone();
 89376  				/* break; */ $s = 2; continue;
 89377  			}
 89378  			prevCC$1 = i.info.tccc;
 89379  			_r$2 = i.rb.f.info($clone(i.rb.src, input), i.p); /* */ $s = 22; case 22: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 89380  			Properties.copy(i.info, _r$2);
 89381  			v = (x$1 = i.rb, (x$1.$ptr_ss || (x$1.$ptr_ss = new ptrType$1(function() { return this.$target.ss; }, function($v) { this.$target.ss = $v; }, x$1)))).next($clone(i.info, Properties));
 89382  			if (v === 1) {
 89383  				/* break; */ $s = 2; continue;
 89384  			} else if (v === 2) {
 89385  				i.next = nextCGJDecompose;
 89386  				/* break; */ $s = 2; continue;
 89387  			}
 89388  			/* */ if (i.info.ccc < prevCC$1) { $s = 23; continue; }
 89389  			/* */ $s = 24; continue;
 89390  			/* if (i.info.ccc < prevCC$1) { */ case 23:
 89391  				/* goto doNorm */ $s = 21; continue;
 89392  			/* } */ case 24:
 89393  		/* } */ $s = 1; continue; case 2:
 89394  		if (outCopyStart === 0) {
 89395  			next = i.returnSlice(inCopyStart, i.p);
 89396  			$s = -1; return next;
 89397  		} else if (inCopyStart < i.p) {
 89398  			i.rb.src.copySlice($subslice(new sliceType$4(i.buf), outCopyStart), inCopyStart, i.p);
 89399  		}
 89400  		next = $subslice(new sliceType$4(i.buf), 0, outp);
 89401  		$s = -1; return next;
 89402  		/* doNorm: */ case 21:
 89403  		i.rb.src.copySlice($subslice(new sliceType$4(i.buf), outCopyStart), inCopyStart, i.p);
 89404  		_r$3 = i.rb.insertDecomposed($subslice(new sliceType$4(i.buf), 0, outp)); /* */ $s = 25; case 25: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 89405  		_r$3;
 89406  		_r$4 = doNormDecomposed(i); /* */ $s = 26; case 26: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 89407  		next = _r$4;
 89408  		$s = -1; return next;
 89409  		/* */ } return; } if ($f === undefined) { $f = { $blk: nextDecomposed }; } $f._1 = _1; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tmp$4 = _tmp$4; $f._tmp$5 = _tmp$5; $f.d = d; $f.i = i; $f.inCopyStart = inCopyStart; $f.next = next; $f.outCopyStart = outCopyStart; $f.outp = outp; $f.p = p; $f.p$1 = p$1; $f.p$2 = p$2; $f.prevCC = prevCC; $f.prevCC$1 = prevCC$1; $f.r = r; $f.sz = sz; $f.v = v; $f.x = x; $f.x$1 = x$1; $f.$s = $s; $f.$r = $r; return $f;
 89410  	};
 89411  	doNormDecomposed = function(i) {
 89412  		var _r, i, s, x, $s, $r;
 89413  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; i = $f.i; s = $f.s; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 89414  		/* while (true) { */ case 1:
 89415  			$r = i.rb.insertUnsafe($clone(i.rb.src, input), i.p, $clone(i.info, Properties)); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 89416  			i.p = i.p + (((i.info.size >> 0))) >> 0;
 89417  			if (i.p >= i.rb.nsrc) {
 89418  				i.setDone();
 89419  				/* break; */ $s = 2; continue;
 89420  			}
 89421  			_r = i.rb.f.info($clone(i.rb.src, input), i.p); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 89422  			Properties.copy(i.info, _r);
 89423  			if (i.info.ccc === 0) {
 89424  				/* break; */ $s = 2; continue;
 89425  			}
 89426  			s = (x = i.rb, (x.$ptr_ss || (x.$ptr_ss = new ptrType$1(function() { return this.$target.ss; }, function($v) { this.$target.ss = $v; }, x)))).next($clone(i.info, Properties));
 89427  			if (s === 2) {
 89428  				i.next = nextCGJDecompose;
 89429  				/* break; */ $s = 2; continue;
 89430  			}
 89431  		/* } */ $s = 1; continue; case 2:
 89432  		$s = -1; return $subslice(new sliceType$4(i.buf), 0, i.rb.flushCopy(new sliceType$4(i.buf)));
 89433  		/* */ } return; } if ($f === undefined) { $f = { $blk: doNormDecomposed }; } $f._r = _r; $f.i = i; $f.s = s; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
 89434  	};
 89435  	nextCGJDecompose = function(i) {
 89436  		var _r, buf, i, x, $s, $r;
 89437  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; buf = $f.buf; i = $f.i; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 89438  		i.rb.ss = 0;
 89439  		i.rb.insertCGJ();
 89440  		i.next = nextDecomposed;
 89441  		(x = i.rb, (x.$ptr_ss || (x.$ptr_ss = new ptrType$1(function() { return this.$target.ss; }, function($v) { this.$target.ss = $v; }, x)))).first($clone(i.info, Properties));
 89442  		_r = doNormDecomposed(i); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 89443  		buf = _r;
 89444  		$s = -1; return buf;
 89445  		/* */ } return; } if ($f === undefined) { $f = { $blk: nextCGJDecompose }; } $f._r = _r; $f.buf = buf; $f.i = i; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
 89446  	};
 89447  	nextComposed = function(i) {
 89448  		var _r, _r$1, _r$2, _r$3, _r$4, _tmp, _tmp$1, d, i, info, outp, p, prevCC, startp, sz, v, x, x$1, x$2, $s, $r;
 89449  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; d = $f.d; i = $f.i; info = $f.info; outp = $f.outp; p = $f.p; prevCC = $f.prevCC; startp = $f.startp; sz = $f.sz; v = $f.v; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 89450  		_tmp = 0;
 89451  		_tmp$1 = i.p;
 89452  		outp = _tmp;
 89453  		startp = _tmp$1;
 89454  		prevCC = 0;
 89455  		/* while (true) { */ case 1:
 89456  			/* */ if (!$clone(i.info, Properties).isYesC()) { $s = 3; continue; }
 89457  			/* */ $s = 4; continue;
 89458  			/* if (!$clone(i.info, Properties).isYesC()) { */ case 3:
 89459  				/* goto doNorm */ $s = 5; continue;
 89460  			/* } */ case 4:
 89461  			prevCC = i.info.tccc;
 89462  			sz = ((i.info.size >> 0));
 89463  			if (sz === 0) {
 89464  				sz = 1;
 89465  			}
 89466  			p = outp + sz >> 0;
 89467  			if (p > 128) {
 89468  				/* break; */ $s = 2; continue;
 89469  			}
 89470  			outp = p;
 89471  			i.p = i.p + (sz) >> 0;
 89472  			if (i.p >= i.rb.nsrc) {
 89473  				i.setDone();
 89474  				/* break; */ $s = 2; continue;
 89475  			} else if (i.rb.src._byte(i.p) < 128) {
 89476  				i.rb.ss = 0;
 89477  				i.next = i.asciiF;
 89478  				/* break; */ $s = 2; continue;
 89479  			}
 89480  			_r = i.rb.f.info($clone(i.rb.src, input), i.p); /* */ $s = 6; case 6: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 89481  			Properties.copy(i.info, _r);
 89482  			v = (x = i.rb, (x.$ptr_ss || (x.$ptr_ss = new ptrType$1(function() { return this.$target.ss; }, function($v) { this.$target.ss = $v; }, x)))).next($clone(i.info, Properties));
 89483  			if (v === 1) {
 89484  				/* break; */ $s = 2; continue;
 89485  			} else if (v === 2) {
 89486  				i.next = nextCGJCompose;
 89487  				/* break; */ $s = 2; continue;
 89488  			}
 89489  			/* */ if (i.info.ccc < prevCC) { $s = 7; continue; }
 89490  			/* */ $s = 8; continue;
 89491  			/* if (i.info.ccc < prevCC) { */ case 7:
 89492  				/* goto doNorm */ $s = 5; continue;
 89493  			/* } */ case 8:
 89494  		/* } */ $s = 1; continue; case 2:
 89495  		$s = -1; return i.returnSlice(startp, i.p);
 89496  		/* doNorm: */ case 5:
 89497  		i.p = startp;
 89498  		_r$1 = i.rb.f.info($clone(i.rb.src, input), i.p); /* */ $s = 9; case 9: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 89499  		Properties.copy(i.info, _r$1);
 89500  		(x$1 = i.rb, (x$1.$ptr_ss || (x$1.$ptr_ss = new ptrType$1(function() { return this.$target.ss; }, function($v) { this.$target.ss = $v; }, x$1)))).first($clone(i.info, Properties));
 89501  		/* */ if ($clone(i.info, Properties).multiSegment()) { $s = 10; continue; }
 89502  		/* */ $s = 11; continue;
 89503  		/* if ($clone(i.info, Properties).multiSegment()) { */ case 10:
 89504  			d = $clone(i.info, Properties).Decomposition();
 89505  			_r$2 = i.rb.f.info(new input.ptr("", d), 0); /* */ $s = 12; case 12: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 89506  			info = $clone(_r$2, Properties);
 89507  			$r = i.rb.insertUnsafe(new input.ptr("", d), 0, $clone(info, Properties)); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 89508  			i.multiSeg = $subslice(d, ((info.size >> 0)));
 89509  			i.next = nextMultiNorm;
 89510  			_r$3 = nextMultiNorm(i); /* */ $s = 14; case 14: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 89511  			$s = -1; return _r$3;
 89512  		/* } */ case 11:
 89513  		(x$2 = i.rb, (x$2.$ptr_ss || (x$2.$ptr_ss = new ptrType$1(function() { return this.$target.ss; }, function($v) { this.$target.ss = $v; }, x$2)))).first($clone(i.info, Properties));
 89514  		$r = i.rb.insertUnsafe($clone(i.rb.src, input), i.p, $clone(i.info, Properties)); /* */ $s = 15; case 15: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 89515  		_r$4 = doNormComposed(i); /* */ $s = 16; case 16: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 89516  		$s = -1; return _r$4;
 89517  		/* */ } return; } if ($f === undefined) { $f = { $blk: nextComposed }; } $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f.d = d; $f.i = i; $f.info = info; $f.outp = outp; $f.p = p; $f.prevCC = prevCC; $f.startp = startp; $f.sz = sz; $f.v = v; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.$s = $s; $f.$r = $r; return $f;
 89518  	};
 89519  	doNormComposed = function(i) {
 89520  		var _r, i, s, seg, x, $s, $r;
 89521  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; i = $f.i; s = $f.s; seg = $f.seg; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 89522  		/* while (true) { */ case 1:
 89523  			i.p = i.p + (((i.info.size >> 0))) >> 0;
 89524  			if (i.p >= i.rb.nsrc) {
 89525  				i.setDone();
 89526  				/* break; */ $s = 2; continue;
 89527  			}
 89528  			_r = i.rb.f.info($clone(i.rb.src, input), i.p); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 89529  			Properties.copy(i.info, _r);
 89530  			s = (x = i.rb, (x.$ptr_ss || (x.$ptr_ss = new ptrType$1(function() { return this.$target.ss; }, function($v) { this.$target.ss = $v; }, x)))).next($clone(i.info, Properties));
 89531  			if (s === 1) {
 89532  				/* break; */ $s = 2; continue;
 89533  			} else if (s === 2) {
 89534  				i.next = nextCGJCompose;
 89535  				/* break; */ $s = 2; continue;
 89536  			}
 89537  			$r = i.rb.insertUnsafe($clone(i.rb.src, input), i.p, $clone(i.info, Properties)); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 89538  		/* } */ $s = 1; continue; case 2:
 89539  		i.rb.compose();
 89540  		seg = $subslice(new sliceType$4(i.buf), 0, i.rb.flushCopy(new sliceType$4(i.buf)));
 89541  		$s = -1; return seg;
 89542  		/* */ } return; } if ($f === undefined) { $f = { $blk: doNormComposed }; } $f._r = _r; $f.i = i; $f.s = s; $f.seg = seg; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
 89543  	};
 89544  	nextCGJCompose = function(i) {
 89545  		var _r, i, x, $s, $r;
 89546  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; i = $f.i; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 89547  		i.rb.ss = 0;
 89548  		i.rb.insertCGJ();
 89549  		i.next = nextComposed;
 89550  		(x = i.rb, (x.$ptr_ss || (x.$ptr_ss = new ptrType$1(function() { return this.$target.ss; }, function($v) { this.$target.ss = $v; }, x)))).first($clone(i.info, Properties));
 89551  		$r = i.rb.insertUnsafe($clone(i.rb.src, input), i.p, $clone(i.info, Properties)); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 89552  		_r = doNormComposed(i); /* */ $s = 2; case 2: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 89553  		$s = -1; return _r;
 89554  		/* */ } return; } if ($f === undefined) { $f = { $blk: nextCGJCompose }; } $f._r = _r; $f.i = i; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
 89555  	};
 89556  	Form.prototype.Bytes = function(b) {
 89557  		var _r, _r$1, _tuple, b, f, ft, n, ok, out, rb, src, $s, $r;
 89558  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _tuple = $f._tuple; b = $f.b; f = $f.f; ft = $f.ft; n = $f.n; ok = $f.ok; out = $f.out; rb = $f.rb; src = $f.src; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 89559  		rb = [rb];
 89560  		f = this.$val;
 89561  		src = $clone(inputBytes(b), input);
 89562  		ft = ((f < 0 || f >= formTable.$length) ? ($throwRuntimeError("index out of range"), undefined) : formTable.$array[formTable.$offset + f]);
 89563  		_r = ft.quickSpan($clone(src, input), 0, b.$length, true); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 89564  		_tuple = _r;
 89565  		n = _tuple[0];
 89566  		ok = _tuple[1];
 89567  		if (ok) {
 89568  			$s = -1; return b;
 89569  		}
 89570  		out = $makeSlice(sliceType$4, n, b.$length);
 89571  		$copySlice(out, $subslice(b, 0, n));
 89572  		rb[0] = new reorderBuffer.ptr(arrayType.zero(), arrayType$1.zero(), 0, 0, 0, $clone(ft, formInfo), $clone(src, input), b.$length, new input.ptr("", sliceType$4.nil), out, appendFlush);
 89573  		_r$1 = doAppendInner(rb[0], n); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 89574  		$s = -1; return _r$1;
 89575  		/* */ } return; } if ($f === undefined) { $f = { $blk: Form.prototype.Bytes }; } $f._r = _r; $f._r$1 = _r$1; $f._tuple = _tuple; $f.b = b; $f.f = f; $f.ft = ft; $f.n = n; $f.ok = ok; $f.out = out; $f.rb = rb; $f.src = src; $f.$s = $s; $f.$r = $r; return $f;
 89576  	};
 89577  	$ptrType(Form).prototype.Bytes = function(b) { return new Form(this.$get()).Bytes(b); };
 89578  	Form.prototype.String = function(s) {
 89579  		var _r, _r$1, _tuple, f, ft, n, ok, out, rb, s, src, $s, $r;
 89580  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _tuple = $f._tuple; f = $f.f; ft = $f.ft; n = $f.n; ok = $f.ok; out = $f.out; rb = $f.rb; s = $f.s; src = $f.src; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 89581  		rb = [rb];
 89582  		f = this.$val;
 89583  		src = $clone(inputString(s), input);
 89584  		ft = ((f < 0 || f >= formTable.$length) ? ($throwRuntimeError("index out of range"), undefined) : formTable.$array[formTable.$offset + f]);
 89585  		_r = ft.quickSpan($clone(src, input), 0, s.length, true); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 89586  		_tuple = _r;
 89587  		n = _tuple[0];
 89588  		ok = _tuple[1];
 89589  		if (ok) {
 89590  			$s = -1; return s;
 89591  		}
 89592  		out = $makeSlice(sliceType$4, n, s.length);
 89593  		$copyString(out, $substring(s, 0, n));
 89594  		rb[0] = new reorderBuffer.ptr(arrayType.zero(), arrayType$1.zero(), 0, 0, 0, $clone(ft, formInfo), $clone(src, input), s.length, new input.ptr("", sliceType$4.nil), out, appendFlush);
 89595  		_r$1 = doAppendInner(rb[0], n); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 89596  		$s = -1; return ($bytesToString(_r$1));
 89597  		/* */ } return; } if ($f === undefined) { $f = { $blk: Form.prototype.String }; } $f._r = _r; $f._r$1 = _r$1; $f._tuple = _tuple; $f.f = f; $f.ft = ft; $f.n = n; $f.ok = ok; $f.out = out; $f.rb = rb; $f.s = s; $f.src = src; $f.$s = $s; $f.$r = $r; return $f;
 89598  	};
 89599  	$ptrType(Form).prototype.String = function(s) { return new Form(this.$get()).String(s); };
 89600  	Form.prototype.IsNormal = function(b) {
 89601  		var _r, _r$1, _r$2, _tuple, _tuple$1, b, bp, f, ft, ok, rb, src, $s, $r;
 89602  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; b = $f.b; bp = $f.bp; f = $f.f; ft = $f.ft; ok = $f.ok; rb = $f.rb; src = $f.src; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 89603  		rb = [rb];
 89604  		f = this.$val;
 89605  		src = $clone(inputBytes(b), input);
 89606  		ft = ((f < 0 || f >= formTable.$length) ? ($throwRuntimeError("index out of range"), undefined) : formTable.$array[formTable.$offset + f]);
 89607  		_r = ft.quickSpan($clone(src, input), 0, b.$length, true); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 89608  		_tuple = _r;
 89609  		bp = _tuple[0];
 89610  		ok = _tuple[1];
 89611  		if (ok) {
 89612  			$s = -1; return true;
 89613  		}
 89614  		rb[0] = new reorderBuffer.ptr(arrayType.zero(), arrayType$1.zero(), 0, 0, 0, $clone(ft, formInfo), $clone(src, input), b.$length, new input.ptr("", sliceType$4.nil), sliceType$4.nil, $throwNilPointerError);
 89615  		rb[0].setFlusher(sliceType$4.nil, cmpNormalBytes);
 89616  		/* while (true) { */ case 2:
 89617  			/* if (!(bp < b.$length)) { break; } */ if(!(bp < b.$length)) { $s = 3; continue; }
 89618  			rb[0].out = $subslice(b, bp);
 89619  			_r$1 = decomposeSegment(rb[0], bp, true); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 89620  			bp = _r$1;
 89621  			if (bp < 0) {
 89622  				$s = -1; return false;
 89623  			}
 89624  			_r$2 = rb[0].f.quickSpan($clone(rb[0].src, input), bp, b.$length, true); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 89625  			_tuple$1 = _r$2;
 89626  			bp = _tuple$1[0];
 89627  		/* } */ $s = 2; continue; case 3:
 89628  		$s = -1; return true;
 89629  		/* */ } return; } if ($f === undefined) { $f = { $blk: Form.prototype.IsNormal }; } $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.b = b; $f.bp = bp; $f.f = f; $f.ft = ft; $f.ok = ok; $f.rb = rb; $f.src = src; $f.$s = $s; $f.$r = $r; return $f;
 89630  	};
 89631  	$ptrType(Form).prototype.IsNormal = function(b) { return new Form(this.$get()).IsNormal(b); };
 89632  	cmpNormalBytes = function(rb) {
 89633  		var b, i, info, p, pe, rb, x, x$1;
 89634  		b = rb.out;
 89635  		i = 0;
 89636  		while (true) {
 89637  			if (!(i < rb.nrune)) { break; }
 89638  			info = $clone((x = rb.rune, ((i < 0 || i >= x.length) ? ($throwRuntimeError("index out of range"), undefined) : x[i])), Properties);
 89639  			if (((info.size >> 0)) > b.$length) {
 89640  				return false;
 89641  			}
 89642  			p = info.pos;
 89643  			pe = p + info.size << 24 >>> 24;
 89644  			while (true) {
 89645  				if (!(p < pe)) { break; }
 89646  				if (!(((0 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 0]) === (x$1 = rb.byte$1, ((p < 0 || p >= x$1.length) ? ($throwRuntimeError("index out of range"), undefined) : x$1[p]))))) {
 89647  					return false;
 89648  				}
 89649  				b = $subslice(b, 1);
 89650  				p = p + (1) << 24 >>> 24;
 89651  			}
 89652  			i = i + (1) >> 0;
 89653  		}
 89654  		return true;
 89655  	};
 89656  	Form.prototype.IsNormalString = function(s) {
 89657  		var _r, _r$1, _r$2, _tuple, _tuple$1, bp, f, ft, ok, rb, s, src, $s, $r;
 89658  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; bp = $f.bp; f = $f.f; ft = $f.ft; ok = $f.ok; rb = $f.rb; s = $f.s; src = $f.src; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 89659  		bp = [bp];
 89660  		rb = [rb];
 89661  		s = [s];
 89662  		f = this.$val;
 89663  		src = $clone(inputString(s[0]), input);
 89664  		ft = ((f < 0 || f >= formTable.$length) ? ($throwRuntimeError("index out of range"), undefined) : formTable.$array[formTable.$offset + f]);
 89665  		_r = ft.quickSpan($clone(src, input), 0, s[0].length, true); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 89666  		_tuple = _r;
 89667  		bp[0] = _tuple[0];
 89668  		ok = _tuple[1];
 89669  		if (ok) {
 89670  			$s = -1; return true;
 89671  		}
 89672  		rb[0] = new reorderBuffer.ptr(arrayType.zero(), arrayType$1.zero(), 0, 0, 0, $clone(ft, formInfo), $clone(src, input), s[0].length, new input.ptr("", sliceType$4.nil), sliceType$4.nil, $throwNilPointerError);
 89673  		rb[0].setFlusher(sliceType$4.nil, (function(bp, rb, s) { return function(rb$1) {
 89674  			var i, info, p, pe, rb$1, x, x$1;
 89675  			i = 0;
 89676  			while (true) {
 89677  				if (!(i < rb$1.nrune)) { break; }
 89678  				info = $clone((x = rb$1.rune, ((i < 0 || i >= x.length) ? ($throwRuntimeError("index out of range"), undefined) : x[i])), Properties);
 89679  				if ((bp[0] + ((info.size >> 0)) >> 0) > s[0].length) {
 89680  					return false;
 89681  				}
 89682  				p = info.pos;
 89683  				pe = p + info.size << 24 >>> 24;
 89684  				while (true) {
 89685  					if (!(p < pe)) { break; }
 89686  					if (!((s[0].charCodeAt(bp[0]) === (x$1 = rb$1.byte$1, ((p < 0 || p >= x$1.length) ? ($throwRuntimeError("index out of range"), undefined) : x$1[p]))))) {
 89687  						return false;
 89688  					}
 89689  					bp[0] = bp[0] + (1) >> 0;
 89690  					p = p + (1) << 24 >>> 24;
 89691  				}
 89692  				i = i + (1) >> 0;
 89693  			}
 89694  			return true;
 89695  		}; })(bp, rb, s));
 89696  		/* while (true) { */ case 2:
 89697  			/* if (!(bp[0] < s[0].length)) { break; } */ if(!(bp[0] < s[0].length)) { $s = 3; continue; }
 89698  			_r$1 = decomposeSegment(rb[0], bp[0], true); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 89699  			bp[0] = _r$1;
 89700  			if (bp[0] < 0) {
 89701  				$s = -1; return false;
 89702  			}
 89703  			_r$2 = rb[0].f.quickSpan($clone(rb[0].src, input), bp[0], s[0].length, true); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 89704  			_tuple$1 = _r$2;
 89705  			bp[0] = _tuple$1[0];
 89706  		/* } */ $s = 2; continue; case 3:
 89707  		$s = -1; return true;
 89708  		/* */ } return; } if ($f === undefined) { $f = { $blk: Form.prototype.IsNormalString }; } $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.bp = bp; $f.f = f; $f.ft = ft; $f.ok = ok; $f.rb = rb; $f.s = s; $f.src = src; $f.$s = $s; $f.$r = $r; return $f;
 89709  	};
 89710  	$ptrType(Form).prototype.IsNormalString = function(s) { return new Form(this.$get()).IsNormalString(s); };
 89711  	patchTail = function(rb) {
 89712  		var _r, _r$1, _r$2, _r$3, _tuple, buf, end, extra, info, p, rb, s, x, $s, $r;
 89713  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _tuple = $f._tuple; buf = $f.buf; end = $f.end; extra = $f.extra; info = $f.info; p = $f.p; rb = $f.rb; s = $f.s; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 89714  		_r = lastRuneStart(rb.f, rb.out); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 89715  		_tuple = _r;
 89716  		info = $clone(_tuple[0], Properties);
 89717  		p = _tuple[1];
 89718  		if ((p === -1) || (info.size === 0)) {
 89719  			$s = -1; return true;
 89720  		}
 89721  		end = p + ((info.size >> 0)) >> 0;
 89722  		extra = rb.out.$length - end >> 0;
 89723  		/* */ if (extra > 0) { $s = 2; continue; }
 89724  		/* */ $s = 3; continue;
 89725  		/* if (extra > 0) { */ case 2:
 89726  			x = $makeSlice(sliceType$4, 0);
 89727  			x = $appendSlice(x, $subslice(rb.out, (rb.out.$length - extra >> 0)));
 89728  			rb.out = $subslice(rb.out, 0, end);
 89729  			$r = decomposeToLastBoundary(rb); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 89730  			_r$1 = rb.doFlush(); /* */ $s = 5; case 5: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 89731  			_r$1;
 89732  			rb.out = $appendSlice(rb.out, x);
 89733  			$s = -1; return false;
 89734  		/* } */ case 3:
 89735  		buf = $subslice(rb.out, p);
 89736  		rb.out = $subslice(rb.out, 0, p);
 89737  		$r = decomposeToLastBoundary(rb); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 89738  		s = (rb.$ptr_ss || (rb.$ptr_ss = new ptrType$1(function() { return this.$target.ss; }, function($v) { this.$target.ss = $v; }, rb))).next($clone(info, Properties));
 89739  		/* */ if (s === 1) { $s = 7; continue; }
 89740  		/* */ if (s === 2) { $s = 8; continue; }
 89741  		/* */ $s = 9; continue;
 89742  		/* if (s === 1) { */ case 7:
 89743  			_r$2 = rb.doFlush(); /* */ $s = 10; case 10: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 89744  			_r$2;
 89745  			(rb.$ptr_ss || (rb.$ptr_ss = new ptrType$1(function() { return this.$target.ss; }, function($v) { this.$target.ss = $v; }, rb))).first($clone(info, Properties));
 89746  			$s = 9; continue;
 89747  		/* } else if (s === 2) { */ case 8:
 89748  			_r$3 = rb.doFlush(); /* */ $s = 11; case 11: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 89749  			_r$3;
 89750  			rb.insertCGJ();
 89751  			rb.ss = 0;
 89752  		/* } */ case 9:
 89753  		$r = rb.insertUnsafe($clone(inputBytes(buf), input), 0, $clone(info, Properties)); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 89754  		$s = -1; return true;
 89755  		/* */ } return; } if ($f === undefined) { $f = { $blk: patchTail }; } $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._tuple = _tuple; $f.buf = buf; $f.end = end; $f.extra = extra; $f.info = info; $f.p = p; $f.rb = rb; $f.s = s; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
 89756  	};
 89757  	appendQuick = function(rb, i) {
 89758  		var _r, _tuple, end, i, rb, $s, $r;
 89759  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; end = $f.end; i = $f.i; rb = $f.rb; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 89760  		if (rb.nsrc === i) {
 89761  			$s = -1; return i;
 89762  		}
 89763  		_r = rb.f.quickSpan($clone(rb.src, input), i, rb.nsrc, true); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 89764  		_tuple = _r;
 89765  		end = _tuple[0];
 89766  		rb.out = rb.src.appendSlice(rb.out, i, end);
 89767  		$s = -1; return end;
 89768  		/* */ } return; } if ($f === undefined) { $f = { $blk: appendQuick }; } $f._r = _r; $f._tuple = _tuple; $f.end = end; $f.i = i; $f.rb = rb; $f.$s = $s; $f.$r = $r; return $f;
 89769  	};
 89770  	Form.prototype.Append = function(out, src) {
 89771  		var _r, f, out, src, $s, $r;
 89772  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; f = $f.f; out = $f.out; src = $f.src; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 89773  		f = this.$val;
 89774  		_r = new Form(f).doAppend(out, $clone(inputBytes(src), input), src.$length); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 89775  		$s = -1; return _r;
 89776  		/* */ } return; } if ($f === undefined) { $f = { $blk: Form.prototype.Append }; } $f._r = _r; $f.f = f; $f.out = out; $f.src = src; $f.$s = $s; $f.$r = $r; return $f;
 89777  	};
 89778  	$ptrType(Form).prototype.Append = function(out, src) { return new Form(this.$get()).Append(out, src); };
 89779  	Form.prototype.doAppend = function(out, src, n) {
 89780  		var _r, _r$1, _r$2, _tuple, f, ft, n, out, p, rb, rb$1, src, $s, $r;
 89781  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _tuple = $f._tuple; f = $f.f; ft = $f.ft; n = $f.n; out = $f.out; p = $f.p; rb = $f.rb; rb$1 = $f.rb$1; src = $f.src; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 89782  		rb = [rb];
 89783  		rb$1 = [rb$1];
 89784  		f = this.$val;
 89785  		if (n === 0) {
 89786  			$s = -1; return out;
 89787  		}
 89788  		ft = ((f < 0 || f >= formTable.$length) ? ($throwRuntimeError("index out of range"), undefined) : formTable.$array[formTable.$offset + f]);
 89789  		/* */ if (out.$length === 0) { $s = 1; continue; }
 89790  		/* */ $s = 2; continue;
 89791  		/* if (out.$length === 0) { */ case 1:
 89792  			_r = ft.quickSpan($clone(src, input), 0, n, true); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 89793  			_tuple = _r;
 89794  			p = _tuple[0];
 89795  			out = src.appendSlice(out, 0, p);
 89796  			if (p === n) {
 89797  				$s = -1; return out;
 89798  			}
 89799  			rb[0] = new reorderBuffer.ptr(arrayType.zero(), arrayType$1.zero(), 0, 0, 0, $clone(ft, formInfo), $clone(src, input), n, new input.ptr("", sliceType$4.nil), out, appendFlush);
 89800  			_r$1 = doAppendInner(rb[0], p); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 89801  			$s = -1; return _r$1;
 89802  		/* } */ case 2:
 89803  		rb$1[0] = new reorderBuffer.ptr(arrayType.zero(), arrayType$1.zero(), 0, 0, 0, $clone(ft, formInfo), $clone(src, input), n, new input.ptr("", sliceType$4.nil), sliceType$4.nil, $throwNilPointerError);
 89804  		_r$2 = doAppend(rb$1[0], out, 0); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 89805  		$s = -1; return _r$2;
 89806  		/* */ } return; } if ($f === undefined) { $f = { $blk: Form.prototype.doAppend }; } $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._tuple = _tuple; $f.f = f; $f.ft = ft; $f.n = n; $f.out = out; $f.p = p; $f.rb = rb; $f.rb$1 = rb$1; $f.src = src; $f.$s = $s; $f.$r = $r; return $f;
 89807  	};
 89808  	$ptrType(Form).prototype.doAppend = function(out, src, n) { return new Form(this.$get()).doAppend(out, src, n); };
 89809  	doAppend = function(rb, out, p) {
 89810  		var _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _tmp, _tmp$1, doMerge, fd, info, n, out, p, q, rb, src, $s, $r;
 89811  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; doMerge = $f.doMerge; fd = $f.fd; info = $f.info; n = $f.n; out = $f.out; p = $f.p; q = $f.q; rb = $f.rb; src = $f.src; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 89812  		rb.setFlusher(out, appendFlush);
 89813  		_tmp = $clone(rb.src, input);
 89814  		_tmp$1 = rb.nsrc;
 89815  		src = $clone(_tmp, input);
 89816  		n = _tmp$1;
 89817  		doMerge = out.$length > 0;
 89818  		q = src.skipContinuationBytes(p);
 89819  		/* */ if (q > p) { $s = 1; continue; }
 89820  		/* */ $s = 2; continue;
 89821  		/* if (q > p) { */ case 1:
 89822  			rb.out = src.appendSlice(rb.out, p, q);
 89823  			p = q;
 89824  			_r = patchTail(rb); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 89825  			doMerge = _r;
 89826  		/* } */ case 2:
 89827  		fd = rb.f;
 89828  		/* */ if (doMerge) { $s = 4; continue; }
 89829  		/* */ $s = 5; continue;
 89830  		/* if (doMerge) { */ case 4:
 89831  			info = new Properties.ptr(0, 0, 0, 0, 0, 0, 0);
 89832  			/* */ if (p < n) { $s = 6; continue; }
 89833  			/* */ $s = 7; continue;
 89834  			/* if (p < n) { */ case 6:
 89835  				_r$1 = fd.info($clone(src, input), p); /* */ $s = 8; case 8: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 89836  				Properties.copy(info, _r$1);
 89837  				/* */ if (!$clone(info, Properties).BoundaryBefore() || $clone(info, Properties).nLeadingNonStarters() > 0) { $s = 9; continue; }
 89838  				/* */ $s = 10; continue;
 89839  				/* if (!$clone(info, Properties).BoundaryBefore() || $clone(info, Properties).nLeadingNonStarters() > 0) { */ case 9:
 89840  					/* */ if (p === 0) { $s = 11; continue; }
 89841  					/* */ $s = 12; continue;
 89842  					/* if (p === 0) { */ case 11:
 89843  						$r = decomposeToLastBoundary(rb); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 89844  					/* } */ case 12:
 89845  					_r$2 = decomposeSegment(rb, p, true); /* */ $s = 14; case 14: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 89846  					p = _r$2;
 89847  				/* } */ case 10:
 89848  			/* } */ case 7:
 89849  			/* */ if (info.size === 0) { $s = 15; continue; }
 89850  			/* */ $s = 16; continue;
 89851  			/* if (info.size === 0) { */ case 15:
 89852  				_r$3 = rb.doFlush(); /* */ $s = 17; case 17: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 89853  				_r$3;
 89854  				$s = -1; return src.appendSlice(rb.out, p, n);
 89855  			/* } */ case 16:
 89856  			/* */ if (rb.nrune > 0) { $s = 18; continue; }
 89857  			/* */ $s = 19; continue;
 89858  			/* if (rb.nrune > 0) { */ case 18:
 89859  				_r$4 = doAppendInner(rb, p); /* */ $s = 20; case 20: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 89860  				$s = -1; return _r$4;
 89861  			/* } */ case 19:
 89862  		/* } */ case 5:
 89863  		_r$5 = appendQuick(rb, p); /* */ $s = 21; case 21: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
 89864  		p = _r$5;
 89865  		_r$6 = doAppendInner(rb, p); /* */ $s = 22; case 22: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
 89866  		$s = -1; return _r$6;
 89867  		/* */ } return; } if ($f === undefined) { $f = { $blk: doAppend }; } $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f.doMerge = doMerge; $f.fd = fd; $f.info = info; $f.n = n; $f.out = out; $f.p = p; $f.q = q; $f.rb = rb; $f.src = src; $f.$s = $s; $f.$r = $r; return $f;
 89868  	};
 89869  	doAppendInner = function(rb, p) {
 89870  		var _r, _r$1, n, p, rb, $s, $r;
 89871  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; n = $f.n; p = $f.p; rb = $f.rb; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 89872  		n = rb.nsrc;
 89873  		/* while (true) { */ case 1:
 89874  			/* if (!(p < n)) { break; } */ if(!(p < n)) { $s = 2; continue; }
 89875  			_r = decomposeSegment(rb, p, true); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 89876  			p = _r;
 89877  			_r$1 = appendQuick(rb, p); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 89878  			p = _r$1;
 89879  		/* } */ $s = 1; continue; case 2:
 89880  		$s = -1; return rb.out;
 89881  		/* */ } return; } if ($f === undefined) { $f = { $blk: doAppendInner }; } $f._r = _r; $f._r$1 = _r$1; $f.n = n; $f.p = p; $f.rb = rb; $f.$s = $s; $f.$r = $r; return $f;
 89882  	};
 89883  	Form.prototype.AppendString = function(out, src) {
 89884  		var _r, f, out, src, $s, $r;
 89885  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; f = $f.f; out = $f.out; src = $f.src; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 89886  		f = this.$val;
 89887  		_r = new Form(f).doAppend(out, $clone(inputString(src), input), src.length); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 89888  		$s = -1; return _r;
 89889  		/* */ } return; } if ($f === undefined) { $f = { $blk: Form.prototype.AppendString }; } $f._r = _r; $f.f = f; $f.out = out; $f.src = src; $f.$s = $s; $f.$r = $r; return $f;
 89890  	};
 89891  	$ptrType(Form).prototype.AppendString = function(out, src) { return new Form(this.$get()).AppendString(out, src); };
 89892  	Form.prototype.QuickSpan = function(b) {
 89893  		var _r, _tuple, b, f, n, $s, $r;
 89894  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; b = $f.b; f = $f.f; n = $f.n; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 89895  		f = this.$val;
 89896  		_r = ((f < 0 || f >= formTable.$length) ? ($throwRuntimeError("index out of range"), undefined) : formTable.$array[formTable.$offset + f]).quickSpan($clone(inputBytes(b), input), 0, b.$length, true); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 89897  		_tuple = _r;
 89898  		n = _tuple[0];
 89899  		$s = -1; return n;
 89900  		/* */ } return; } if ($f === undefined) { $f = { $blk: Form.prototype.QuickSpan }; } $f._r = _r; $f._tuple = _tuple; $f.b = b; $f.f = f; $f.n = n; $f.$s = $s; $f.$r = $r; return $f;
 89901  	};
 89902  	$ptrType(Form).prototype.QuickSpan = function(b) { return new Form(this.$get()).QuickSpan(b); };
 89903  	Form.prototype.Span = function(b, atEOF) {
 89904  		var _r, _tmp, _tmp$1, _tuple, atEOF, b, err, f, n, ok, $s, $r;
 89905  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tuple = $f._tuple; atEOF = $f.atEOF; b = $f.b; err = $f.err; f = $f.f; n = $f.n; ok = $f.ok; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 89906  		n = 0;
 89907  		err = $ifaceNil;
 89908  		f = this.$val;
 89909  		_r = ((f < 0 || f >= formTable.$length) ? ($throwRuntimeError("index out of range"), undefined) : formTable.$array[formTable.$offset + f]).quickSpan($clone(inputBytes(b), input), 0, b.$length, atEOF); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 89910  		_tuple = _r;
 89911  		n = _tuple[0];
 89912  		ok = _tuple[1];
 89913  		if (n < b.$length) {
 89914  			if (!ok) {
 89915  				err = transform.ErrEndOfSpan;
 89916  			} else {
 89917  				err = transform.ErrShortSrc;
 89918  			}
 89919  		}
 89920  		_tmp = n;
 89921  		_tmp$1 = err;
 89922  		n = _tmp;
 89923  		err = _tmp$1;
 89924  		$s = -1; return [n, err];
 89925  		/* */ } return; } if ($f === undefined) { $f = { $blk: Form.prototype.Span }; } $f._r = _r; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tuple = _tuple; $f.atEOF = atEOF; $f.b = b; $f.err = err; $f.f = f; $f.n = n; $f.ok = ok; $f.$s = $s; $f.$r = $r; return $f;
 89926  	};
 89927  	$ptrType(Form).prototype.Span = function(b, atEOF) { return new Form(this.$get()).Span(b, atEOF); };
 89928  	Form.prototype.SpanString = function(s, atEOF) {
 89929  		var _r, _tmp, _tmp$1, _tuple, atEOF, err, f, n, ok, s, $s, $r;
 89930  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tuple = $f._tuple; atEOF = $f.atEOF; err = $f.err; f = $f.f; n = $f.n; ok = $f.ok; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 89931  		n = 0;
 89932  		err = $ifaceNil;
 89933  		f = this.$val;
 89934  		_r = ((f < 0 || f >= formTable.$length) ? ($throwRuntimeError("index out of range"), undefined) : formTable.$array[formTable.$offset + f]).quickSpan($clone(inputString(s), input), 0, s.length, atEOF); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 89935  		_tuple = _r;
 89936  		n = _tuple[0];
 89937  		ok = _tuple[1];
 89938  		if (n < s.length) {
 89939  			if (!ok) {
 89940  				err = transform.ErrEndOfSpan;
 89941  			} else {
 89942  				err = transform.ErrShortSrc;
 89943  			}
 89944  		}
 89945  		_tmp = n;
 89946  		_tmp$1 = err;
 89947  		n = _tmp;
 89948  		err = _tmp$1;
 89949  		$s = -1; return [n, err];
 89950  		/* */ } return; } if ($f === undefined) { $f = { $blk: Form.prototype.SpanString }; } $f._r = _r; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tuple = _tuple; $f.atEOF = atEOF; $f.err = err; $f.f = f; $f.n = n; $f.ok = ok; $f.s = s; $f.$s = $s; $f.$r = $r; return $f;
 89951  	};
 89952  	$ptrType(Form).prototype.SpanString = function(s, atEOF) { return new Form(this.$get()).SpanString(s, atEOF); };
 89953  	formInfo.ptr.prototype.quickSpan = function(src, i, end, atEOF) {
 89954  		var _1, _r, _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, atEOF, end, f, i, info, j, lastCC, lastSegStart, n, ok, src, ss, ss$24ptr, $s, $r;
 89955  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _r = $f._r; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$10 = $f._tmp$10; _tmp$11 = $f._tmp$11; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tmp$4 = $f._tmp$4; _tmp$5 = $f._tmp$5; _tmp$6 = $f._tmp$6; _tmp$7 = $f._tmp$7; _tmp$8 = $f._tmp$8; _tmp$9 = $f._tmp$9; atEOF = $f.atEOF; end = $f.end; f = $f.f; i = $f.i; info = $f.info; j = $f.j; lastCC = $f.lastCC; lastSegStart = $f.lastSegStart; n = $f.n; ok = $f.ok; src = $f.src; ss = $f.ss; ss$24ptr = $f.ss$24ptr; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 89956  		n = 0;
 89957  		ok = false;
 89958  		f = this;
 89959  		lastCC = 0;
 89960  		ss = 0;
 89961  		lastSegStart = i;
 89962  		n = end;
 89963  		/* while (true) { */ case 1:
 89964  			/* if (!(i < n)) { break; } */ if(!(i < n)) { $s = 2; continue; }
 89965  			j = src.skipASCII(i, n);
 89966  			if (!((i === j))) {
 89967  				i = j;
 89968  				lastSegStart = i - 1 >> 0;
 89969  				lastCC = 0;
 89970  				ss = 0;
 89971  				/* continue; */ $s = 1; continue;
 89972  			}
 89973  			_r = f.info($clone(src, input), i); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 89974  			info = $clone(_r, Properties);
 89975  			if (info.size === 0) {
 89976  				if (atEOF) {
 89977  					_tmp = n;
 89978  					_tmp$1 = true;
 89979  					n = _tmp;
 89980  					ok = _tmp$1;
 89981  					$s = -1; return [n, ok];
 89982  				}
 89983  				_tmp$2 = lastSegStart;
 89984  				_tmp$3 = true;
 89985  				n = _tmp$2;
 89986  				ok = _tmp$3;
 89987  				$s = -1; return [n, ok];
 89988  			}
 89989  			_1 = (ss$24ptr || (ss$24ptr = new ptrType$1(function() { return ss; }, function($v) { ss = $v; }))).next($clone(info, Properties));
 89990  			if (_1 === (1)) {
 89991  				lastSegStart = i;
 89992  			} else if (_1 === (2)) {
 89993  				_tmp$4 = lastSegStart;
 89994  				_tmp$5 = false;
 89995  				n = _tmp$4;
 89996  				ok = _tmp$5;
 89997  				$s = -1; return [n, ok];
 89998  			} else if (_1 === (0)) {
 89999  				if (lastCC > info.ccc) {
 90000  					_tmp$6 = lastSegStart;
 90001  					_tmp$7 = false;
 90002  					n = _tmp$6;
 90003  					ok = _tmp$7;
 90004  					$s = -1; return [n, ok];
 90005  				}
 90006  			}
 90007  			if (f.composing) {
 90008  				if (!$clone(info, Properties).isYesC()) {
 90009  					/* break; */ $s = 2; continue;
 90010  				}
 90011  			} else {
 90012  				if (!$clone(info, Properties).isYesD()) {
 90013  					/* break; */ $s = 2; continue;
 90014  				}
 90015  			}
 90016  			lastCC = info.ccc;
 90017  			i = i + (((info.size >> 0))) >> 0;
 90018  		/* } */ $s = 1; continue; case 2:
 90019  		if (i === n) {
 90020  			if (!atEOF) {
 90021  				n = lastSegStart;
 90022  			}
 90023  			_tmp$8 = n;
 90024  			_tmp$9 = true;
 90025  			n = _tmp$8;
 90026  			ok = _tmp$9;
 90027  			$s = -1; return [n, ok];
 90028  		}
 90029  		_tmp$10 = lastSegStart;
 90030  		_tmp$11 = false;
 90031  		n = _tmp$10;
 90032  		ok = _tmp$11;
 90033  		$s = -1; return [n, ok];
 90034  		/* */ } return; } if ($f === undefined) { $f = { $blk: formInfo.ptr.prototype.quickSpan }; } $f._1 = _1; $f._r = _r; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$10 = _tmp$10; $f._tmp$11 = _tmp$11; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tmp$4 = _tmp$4; $f._tmp$5 = _tmp$5; $f._tmp$6 = _tmp$6; $f._tmp$7 = _tmp$7; $f._tmp$8 = _tmp$8; $f._tmp$9 = _tmp$9; $f.atEOF = atEOF; $f.end = end; $f.f = f; $f.i = i; $f.info = info; $f.j = j; $f.lastCC = lastCC; $f.lastSegStart = lastSegStart; $f.n = n; $f.ok = ok; $f.src = src; $f.ss = ss; $f.ss$24ptr = ss$24ptr; $f.$s = $s; $f.$r = $r; return $f;
 90035  	};
 90036  	formInfo.prototype.quickSpan = function(src, i, end, atEOF) { return this.$val.quickSpan(src, i, end, atEOF); };
 90037  	Form.prototype.QuickSpanString = function(s) {
 90038  		var _r, _tuple, f, n, s, $s, $r;
 90039  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; f = $f.f; n = $f.n; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 90040  		f = this.$val;
 90041  		_r = ((f < 0 || f >= formTable.$length) ? ($throwRuntimeError("index out of range"), undefined) : formTable.$array[formTable.$offset + f]).quickSpan($clone(inputString(s), input), 0, s.length, true); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 90042  		_tuple = _r;
 90043  		n = _tuple[0];
 90044  		$s = -1; return n;
 90045  		/* */ } return; } if ($f === undefined) { $f = { $blk: Form.prototype.QuickSpanString }; } $f._r = _r; $f._tuple = _tuple; $f.f = f; $f.n = n; $f.s = s; $f.$s = $s; $f.$r = $r; return $f;
 90046  	};
 90047  	$ptrType(Form).prototype.QuickSpanString = function(s) { return new Form(this.$get()).QuickSpanString(s); };
 90048  	Form.prototype.FirstBoundary = function(b) {
 90049  		var _r, b, f, $s, $r;
 90050  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; b = $f.b; f = $f.f; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 90051  		f = this.$val;
 90052  		_r = new Form(f).firstBoundary($clone(inputBytes(b), input), b.$length); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 90053  		$s = -1; return _r;
 90054  		/* */ } return; } if ($f === undefined) { $f = { $blk: Form.prototype.FirstBoundary }; } $f._r = _r; $f.b = b; $f.f = f; $f.$s = $s; $f.$r = $r; return $f;
 90055  	};
 90056  	$ptrType(Form).prototype.FirstBoundary = function(b) { return new Form(this.$get()).FirstBoundary(b); };
 90057  	Form.prototype.firstBoundary = function(src, nsrc) {
 90058  		var _r, f, fd, i, info, nsrc, s, src, ss, ss$24ptr, $s, $r;
 90059  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; f = $f.f; fd = $f.fd; i = $f.i; info = $f.info; nsrc = $f.nsrc; s = $f.s; src = $f.src; ss = $f.ss; ss$24ptr = $f.ss$24ptr; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 90060  		f = this.$val;
 90061  		i = src.skipContinuationBytes(0);
 90062  		if (i >= nsrc) {
 90063  			$s = -1; return -1;
 90064  		}
 90065  		fd = ((f < 0 || f >= formTable.$length) ? ($throwRuntimeError("index out of range"), undefined) : formTable.$array[formTable.$offset + f]);
 90066  		ss = 0;
 90067  		/* while (true) { */ case 1:
 90068  			_r = fd.info($clone(src, input), i); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 90069  			info = $clone(_r, Properties);
 90070  			if (info.size === 0) {
 90071  				$s = -1; return -1;
 90072  			}
 90073  			s = (ss$24ptr || (ss$24ptr = new ptrType$1(function() { return ss; }, function($v) { ss = $v; }))).next($clone(info, Properties));
 90074  			if (!((s === 0))) {
 90075  				$s = -1; return i;
 90076  			}
 90077  			i = i + (((info.size >> 0))) >> 0;
 90078  			if (i >= nsrc) {
 90079  				if (!$clone(info, Properties).BoundaryAfter() && !new streamSafe(ss).isMax()) {
 90080  					$s = -1; return -1;
 90081  				}
 90082  				$s = -1; return nsrc;
 90083  			}
 90084  		/* } */ $s = 1; continue; case 2:
 90085  		$s = -1; return 0;
 90086  		/* */ } return; } if ($f === undefined) { $f = { $blk: Form.prototype.firstBoundary }; } $f._r = _r; $f.f = f; $f.fd = fd; $f.i = i; $f.info = info; $f.nsrc = nsrc; $f.s = s; $f.src = src; $f.ss = ss; $f.ss$24ptr = ss$24ptr; $f.$s = $s; $f.$r = $r; return $f;
 90087  	};
 90088  	$ptrType(Form).prototype.firstBoundary = function(src, nsrc) { return new Form(this.$get()).firstBoundary(src, nsrc); };
 90089  	Form.prototype.FirstBoundaryInString = function(s) {
 90090  		var _r, f, s, $s, $r;
 90091  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; f = $f.f; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 90092  		f = this.$val;
 90093  		_r = new Form(f).firstBoundary($clone(inputString(s), input), s.length); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 90094  		$s = -1; return _r;
 90095  		/* */ } return; } if ($f === undefined) { $f = { $blk: Form.prototype.FirstBoundaryInString }; } $f._r = _r; $f.f = f; $f.s = s; $f.$s = $s; $f.$r = $r; return $f;
 90096  	};
 90097  	$ptrType(Form).prototype.FirstBoundaryInString = function(s) { return new Form(this.$get()).FirstBoundaryInString(s); };
 90098  	Form.prototype.NextBoundary = function(b, atEOF) {
 90099  		var _r, atEOF, b, f, $s, $r;
 90100  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; atEOF = $f.atEOF; b = $f.b; f = $f.f; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 90101  		f = this.$val;
 90102  		_r = new Form(f).nextBoundary($clone(inputBytes(b), input), b.$length, atEOF); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 90103  		$s = -1; return _r;
 90104  		/* */ } return; } if ($f === undefined) { $f = { $blk: Form.prototype.NextBoundary }; } $f._r = _r; $f.atEOF = atEOF; $f.b = b; $f.f = f; $f.$s = $s; $f.$r = $r; return $f;
 90105  	};
 90106  	$ptrType(Form).prototype.NextBoundary = function(b, atEOF) { return new Form(this.$get()).NextBoundary(b, atEOF); };
 90107  	Form.prototype.NextBoundaryInString = function(s, atEOF) {
 90108  		var _r, atEOF, f, s, $s, $r;
 90109  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; atEOF = $f.atEOF; f = $f.f; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 90110  		f = this.$val;
 90111  		_r = new Form(f).nextBoundary($clone(inputString(s), input), s.length, atEOF); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 90112  		$s = -1; return _r;
 90113  		/* */ } return; } if ($f === undefined) { $f = { $blk: Form.prototype.NextBoundaryInString }; } $f._r = _r; $f.atEOF = atEOF; $f.f = f; $f.s = s; $f.$s = $s; $f.$r = $r; return $f;
 90114  	};
 90115  	$ptrType(Form).prototype.NextBoundaryInString = function(s, atEOF) { return new Form(this.$get()).NextBoundaryInString(s, atEOF); };
 90116  	Form.prototype.nextBoundary = function(src, nsrc, atEOF) {
 90117  		var _r, _r$1, atEOF, f, fd, i, info, nsrc, s, src, ss, ss$24ptr, $s, $r;
 90118  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; atEOF = $f.atEOF; f = $f.f; fd = $f.fd; i = $f.i; info = $f.info; nsrc = $f.nsrc; s = $f.s; src = $f.src; ss = $f.ss; ss$24ptr = $f.ss$24ptr; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 90119  		f = this.$val;
 90120  		if (nsrc === 0) {
 90121  			if (atEOF) {
 90122  				$s = -1; return 0;
 90123  			}
 90124  			$s = -1; return -1;
 90125  		}
 90126  		fd = ((f < 0 || f >= formTable.$length) ? ($throwRuntimeError("index out of range"), undefined) : formTable.$array[formTable.$offset + f]);
 90127  		_r = fd.info($clone(src, input), 0); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 90128  		info = $clone(_r, Properties);
 90129  		if (info.size === 0) {
 90130  			if (atEOF) {
 90131  				$s = -1; return 1;
 90132  			}
 90133  			$s = -1; return -1;
 90134  		}
 90135  		ss = 0;
 90136  		(ss$24ptr || (ss$24ptr = new ptrType$1(function() { return ss; }, function($v) { ss = $v; }))).first($clone(info, Properties));
 90137  		i = ((info.size >> 0));
 90138  		/* while (true) { */ case 2:
 90139  			/* if (!(i < nsrc)) { break; } */ if(!(i < nsrc)) { $s = 3; continue; }
 90140  			_r$1 = fd.info($clone(src, input), i); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 90141  			Properties.copy(info, _r$1);
 90142  			if (info.size === 0) {
 90143  				if (atEOF) {
 90144  					$s = -1; return i;
 90145  				}
 90146  				$s = -1; return -1;
 90147  			}
 90148  			s = (ss$24ptr || (ss$24ptr = new ptrType$1(function() { return ss; }, function($v) { ss = $v; }))).next($clone(info, Properties));
 90149  			if (!((s === 0))) {
 90150  				$s = -1; return i;
 90151  			}
 90152  			i = i + (((info.size >> 0))) >> 0;
 90153  		/* } */ $s = 2; continue; case 3:
 90154  		if (!atEOF && !$clone(info, Properties).BoundaryAfter() && !new streamSafe(ss).isMax()) {
 90155  			$s = -1; return -1;
 90156  		}
 90157  		$s = -1; return nsrc;
 90158  		/* */ } return; } if ($f === undefined) { $f = { $blk: Form.prototype.nextBoundary }; } $f._r = _r; $f._r$1 = _r$1; $f.atEOF = atEOF; $f.f = f; $f.fd = fd; $f.i = i; $f.info = info; $f.nsrc = nsrc; $f.s = s; $f.src = src; $f.ss = ss; $f.ss$24ptr = ss$24ptr; $f.$s = $s; $f.$r = $r; return $f;
 90159  	};
 90160  	$ptrType(Form).prototype.nextBoundary = function(src, nsrc, atEOF) { return new Form(this.$get()).nextBoundary(src, nsrc, atEOF); };
 90161  	Form.prototype.LastBoundary = function(b) {
 90162  		var _r, b, f, $s, $r;
 90163  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; b = $f.b; f = $f.f; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 90164  		f = this.$val;
 90165  		_r = lastBoundary(((f < 0 || f >= formTable.$length) ? ($throwRuntimeError("index out of range"), undefined) : formTable.$array[formTable.$offset + f]), b); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 90166  		$s = -1; return _r;
 90167  		/* */ } return; } if ($f === undefined) { $f = { $blk: Form.prototype.LastBoundary }; } $f._r = _r; $f.b = b; $f.f = f; $f.$s = $s; $f.$r = $r; return $f;
 90168  	};
 90169  	$ptrType(Form).prototype.LastBoundary = function(b) { return new Form(this.$get()).LastBoundary(b); };
 90170  	lastBoundary = function(fd, b) {
 90171  		var _r, _r$1, _r$2, _tuple, _tuple$1, _tuple$2, b, fd, i, info, p, ss, ss$24ptr, v, $s, $r;
 90172  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; b = $f.b; fd = $f.fd; i = $f.i; info = $f.info; p = $f.p; ss = $f.ss; ss$24ptr = $f.ss$24ptr; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 90173  		i = b.$length;
 90174  		_r = lastRuneStart(fd, b); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 90175  		_tuple = _r;
 90176  		info = $clone(_tuple[0], Properties);
 90177  		p = _tuple[1];
 90178  		if (p === -1) {
 90179  			$s = -1; return -1;
 90180  		}
 90181  		/* */ if (info.size === 0) { $s = 2; continue; }
 90182  		/* */ $s = 3; continue;
 90183  		/* if (info.size === 0) { */ case 2:
 90184  			if (p === 0) {
 90185  				$s = -1; return -1;
 90186  			}
 90187  			i = p;
 90188  			_r$1 = lastRuneStart(fd, $subslice(b, 0, i)); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 90189  			_tuple$1 = _r$1;
 90190  			Properties.copy(info, _tuple$1[0]);
 90191  			p = _tuple$1[1];
 90192  			if (p === -1) {
 90193  				$s = -1; return i;
 90194  			}
 90195  		/* } */ case 3:
 90196  		if (!(((p + ((info.size >> 0)) >> 0) === i))) {
 90197  			$s = -1; return i;
 90198  		}
 90199  		if ($clone(info, Properties).BoundaryAfter()) {
 90200  			$s = -1; return i;
 90201  		}
 90202  		ss = 0;
 90203  		v = (ss$24ptr || (ss$24ptr = new ptrType$1(function() { return ss; }, function($v) { ss = $v; }))).backwards($clone(info, Properties));
 90204  		i = p;
 90205  		/* while (true) { */ case 5:
 90206  			/* if (!(i >= 0 && !((v === 1)))) { break; } */ if(!(i >= 0 && !((v === 1)))) { $s = 6; continue; }
 90207  			_r$2 = lastRuneStart(fd, $subslice(b, 0, i)); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 90208  			_tuple$2 = _r$2;
 90209  			Properties.copy(info, _tuple$2[0]);
 90210  			p = _tuple$2[1];
 90211  			v = (ss$24ptr || (ss$24ptr = new ptrType$1(function() { return ss; }, function($v) { ss = $v; }))).backwards($clone(info, Properties));
 90212  			if (v === 2) {
 90213  				/* break; */ $s = 6; continue;
 90214  			}
 90215  			if (!(((p + ((info.size >> 0)) >> 0) === i))) {
 90216  				if (p === -1) {
 90217  					$s = -1; return -1;
 90218  				}
 90219  				$s = -1; return i;
 90220  			}
 90221  			i = p;
 90222  		/* } */ $s = 5; continue; case 6:
 90223  		$s = -1; return i;
 90224  		/* */ } return; } if ($f === undefined) { $f = { $blk: lastBoundary }; } $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f.b = b; $f.fd = fd; $f.i = i; $f.info = info; $f.p = p; $f.ss = ss; $f.ss$24ptr = ss$24ptr; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
 90225  	};
 90226  	decomposeSegment = function(rb, sp, atEOF) {
 90227  		var _r, _r$1, _r$2, _r$3, _r$4, atEOF, err, err$1, info, rb, s, s$1, sp, $s, $r;
 90228  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; atEOF = $f.atEOF; err = $f.err; err$1 = $f.err$1; info = $f.info; rb = $f.rb; s = $f.s; s$1 = $f.s$1; sp = $f.sp; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 90229  		_r = rb.f.info($clone(rb.src, input), sp); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 90230  		info = $clone(_r, Properties);
 90231  		if (info.size === 0) {
 90232  			$s = -1; return 0;
 90233  		}
 90234  		s = (rb.$ptr_ss || (rb.$ptr_ss = new ptrType$1(function() { return this.$target.ss; }, function($v) { this.$target.ss = $v; }, rb))).next($clone(info, Properties));
 90235  		/* */ if (s === 1) { $s = 2; continue; }
 90236  		/* */ if (s === 2) { $s = 3; continue; }
 90237  		/* */ $s = 4; continue;
 90238  		/* if (s === 1) { */ case 2:
 90239  			/* */ if (rb.nrune > 0) { $s = 5; continue; }
 90240  			/* */ $s = 6; continue;
 90241  			/* if (rb.nrune > 0) { */ case 5:
 90242  				/* goto end */ $s = 7; continue;
 90243  			/* } */ case 6:
 90244  			$s = 4; continue;
 90245  		/* } else if (s === 2) { */ case 3:
 90246  			rb.insertCGJ();
 90247  			/* goto end */ $s = 7; continue;
 90248  		/* } */ case 4:
 90249  		_r$1 = rb.insertFlush($clone(rb.src, input), sp, $clone(info, Properties)); /* */ $s = 8; case 8: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 90250  		err = _r$1;
 90251  		if (!((err === 0))) {
 90252  			$s = -1; return ((err >> 0));
 90253  		}
 90254  		/* while (true) { */ case 9:
 90255  			sp = sp + (((info.size >> 0))) >> 0;
 90256  			if (sp >= rb.nsrc) {
 90257  				if (!atEOF && !$clone(info, Properties).BoundaryAfter()) {
 90258  					$s = -1; return -2;
 90259  				}
 90260  				/* break; */ $s = 10; continue;
 90261  			}
 90262  			_r$2 = rb.f.info($clone(rb.src, input), sp); /* */ $s = 11; case 11: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 90263  			Properties.copy(info, _r$2);
 90264  			if (info.size === 0) {
 90265  				if (!atEOF) {
 90266  					$s = -1; return -2;
 90267  				}
 90268  				/* break; */ $s = 10; continue;
 90269  			}
 90270  			s$1 = (rb.$ptr_ss || (rb.$ptr_ss = new ptrType$1(function() { return this.$target.ss; }, function($v) { this.$target.ss = $v; }, rb))).next($clone(info, Properties));
 90271  			if (s$1 === 1) {
 90272  				/* break; */ $s = 10; continue;
 90273  			} else if (s$1 === 2) {
 90274  				rb.insertCGJ();
 90275  				/* break; */ $s = 10; continue;
 90276  			}
 90277  			_r$3 = rb.insertFlush($clone(rb.src, input), sp, $clone(info, Properties)); /* */ $s = 12; case 12: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 90278  			err$1 = _r$3;
 90279  			if (!((err$1 === 0))) {
 90280  				$s = -1; return ((err$1 >> 0));
 90281  			}
 90282  		/* } */ $s = 9; continue; case 10:
 90283  		/* end: */ case 7:
 90284  		_r$4 = rb.doFlush(); /* */ $s = 15; case 15: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 90285  		/* */ if (!_r$4) { $s = 13; continue; }
 90286  		/* */ $s = 14; continue;
 90287  		/* if (!_r$4) { */ case 13:
 90288  			$s = -1; return -1;
 90289  		/* } */ case 14:
 90290  		$s = -1; return sp;
 90291  		/* */ } return; } if ($f === undefined) { $f = { $blk: decomposeSegment }; } $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f.atEOF = atEOF; $f.err = err; $f.err$1 = err$1; $f.info = info; $f.rb = rb; $f.s = s; $f.s$1 = s$1; $f.sp = sp; $f.$s = $s; $f.$r = $r; return $f;
 90292  	};
 90293  	lastRuneStart = function(fd, buf) {
 90294  		var _r, buf, fd, p, $s, $r;
 90295  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; buf = $f.buf; fd = $f.fd; p = $f.p; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 90296  		p = buf.$length - 1 >> 0;
 90297  		while (true) {
 90298  			if (!(p >= 0 && !utf8.RuneStart(((p < 0 || p >= buf.$length) ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + p])))) { break; }
 90299  			p = p - (1) >> 0;
 90300  		}
 90301  		if (p < 0) {
 90302  			$s = -1; return [new Properties.ptr(0, 0, 0, 0, 0, 0, 0), -1];
 90303  		}
 90304  		_r = fd.info($clone(inputBytes(buf), input), p); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 90305  		$s = -1; return [_r, p];
 90306  		/* */ } return; } if ($f === undefined) { $f = { $blk: lastRuneStart }; } $f._r = _r; $f.buf = buf; $f.fd = fd; $f.p = p; $f.$s = $s; $f.$r = $r; return $f;
 90307  	};
 90308  	decomposeToLastBoundary = function(rb) {
 90309  		var _r, _r$1, _tuple, _tuple$1, add, buf, cp, fd, i, info, p, padd, rb, ss, ss$24ptr, v, $s, $r;
 90310  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; add = $f.add; buf = $f.buf; cp = $f.cp; fd = $f.fd; i = $f.i; info = $f.info; p = $f.p; padd = $f.padd; rb = $f.rb; ss = $f.ss; ss$24ptr = $f.ss$24ptr; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 90311  		fd = rb.f;
 90312  		_r = lastRuneStart(fd, rb.out); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 90313  		_tuple = _r;
 90314  		info = $clone(_tuple[0], Properties);
 90315  		i = _tuple[1];
 90316  		if (!((((info.size >> 0)) === (rb.out.$length - i >> 0)))) {
 90317  			$s = -1; return;
 90318  		}
 90319  		if ($clone(info, Properties).BoundaryAfter()) {
 90320  			$s = -1; return;
 90321  		}
 90322  		add = arrayType$2.zero();
 90323  		padd = 0;
 90324  		ss = 0;
 90325  		p = rb.out.$length;
 90326  		/* while (true) { */ case 2:
 90327  			Properties.copy(((padd < 0 || padd >= add.length) ? ($throwRuntimeError("index out of range"), undefined) : add[padd]), info);
 90328  			v = (ss$24ptr || (ss$24ptr = new ptrType$1(function() { return ss; }, function($v) { ss = $v; }))).backwards($clone(info, Properties));
 90329  			if (v === 2) {
 90330  				/* break; */ $s = 3; continue;
 90331  			}
 90332  			padd = padd + (1) >> 0;
 90333  			p = p - (((info.size >> 0))) >> 0;
 90334  			if ((v === 1) || p < 0) {
 90335  				/* break; */ $s = 3; continue;
 90336  			}
 90337  			_r$1 = lastRuneStart(fd, $subslice(rb.out, 0, p)); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 90338  			_tuple$1 = _r$1;
 90339  			Properties.copy(info, _tuple$1[0]);
 90340  			i = _tuple$1[1];
 90341  			if (!((((info.size >> 0)) === (p - i >> 0)))) {
 90342  				/* break; */ $s = 3; continue;
 90343  			}
 90344  		/* } */ $s = 2; continue; case 3:
 90345  		rb.ss = ss;
 90346  		buf = arrayType$1.zero();
 90347  		cp = $subslice(new sliceType$4(buf), 0, $copySlice(new sliceType$4(buf), $subslice(rb.out, p)));
 90348  		rb.out = $subslice(rb.out, 0, p);
 90349  		padd = padd - (1) >> 0;
 90350  		/* while (true) { */ case 5:
 90351  			/* if (!(padd >= 0)) { break; } */ if(!(padd >= 0)) { $s = 6; continue; }
 90352  			Properties.copy(info, ((padd < 0 || padd >= add.length) ? ($throwRuntimeError("index out of range"), undefined) : add[padd]));
 90353  			$r = rb.insertUnsafe($clone(inputBytes(cp), input), 0, $clone(info, Properties)); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 90354  			cp = $subslice(cp, info.size);
 90355  			padd = padd - (1) >> 0;
 90356  		/* } */ $s = 5; continue; case 6:
 90357  		$s = -1; return;
 90358  		/* */ } return; } if ($f === undefined) { $f = { $blk: decomposeToLastBoundary }; } $f._r = _r; $f._r$1 = _r$1; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.add = add; $f.buf = buf; $f.cp = cp; $f.fd = fd; $f.i = i; $f.info = info; $f.p = p; $f.padd = padd; $f.rb = rb; $f.ss = ss; $f.ss$24ptr = ss$24ptr; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
 90359  	};
 90360  	normWriter.ptr.prototype.Write = function(data) {
 90361  		var _r, _r$1, _r$2, _tmp, _tmp$1, _tuple, bn, data, err, i, m, n, w, $s, $r;
 90362  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tuple = $f._tuple; bn = $f.bn; data = $f.data; err = $f.err; i = $f.i; m = $f.m; n = $f.n; w = $f.w; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 90363  		n = 0;
 90364  		err = $ifaceNil;
 90365  		w = this;
 90366  		/* while (true) { */ case 1:
 90367  			/* if (!(data.$length > 0)) { break; } */ if(!(data.$length > 0)) { $s = 2; continue; }
 90368  			m = data.$length;
 90369  			if (m > 4000) {
 90370  				m = 4000;
 90371  			}
 90372  			input.copy(w.rb.src, inputBytes($subslice(data, 0, m)));
 90373  			w.rb.nsrc = m;
 90374  			_r = doAppend(w.rb, w.buf, 0); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 90375  			w.buf = _r;
 90376  			data = $subslice(data, m);
 90377  			n = n + (m) >> 0;
 90378  			_r$1 = lastBoundary(w.rb.f, w.buf); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 90379  			i = _r$1;
 90380  			if (i === -1) {
 90381  				i = 0;
 90382  			}
 90383  			/* */ if (i > 0) { $s = 5; continue; }
 90384  			/* */ $s = 6; continue;
 90385  			/* if (i > 0) { */ case 5:
 90386  				_r$2 = w.w.Write($subslice(w.buf, 0, i)); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 90387  				_tuple = _r$2;
 90388  				err = _tuple[1];
 90389  				if (!($interfaceIsEqual(err, $ifaceNil))) {
 90390  					/* break; */ $s = 2; continue;
 90391  				}
 90392  				bn = $copySlice(w.buf, $subslice(w.buf, i));
 90393  				w.buf = $subslice(w.buf, 0, bn);
 90394  			/* } */ case 6:
 90395  		/* } */ $s = 1; continue; case 2:
 90396  		_tmp = n;
 90397  		_tmp$1 = err;
 90398  		n = _tmp;
 90399  		err = _tmp$1;
 90400  		$s = -1; return [n, err];
 90401  		/* */ } return; } if ($f === undefined) { $f = { $blk: normWriter.ptr.prototype.Write }; } $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tuple = _tuple; $f.bn = bn; $f.data = data; $f.err = err; $f.i = i; $f.m = m; $f.n = n; $f.w = w; $f.$s = $s; $f.$r = $r; return $f;
 90402  	};
 90403  	normWriter.prototype.Write = function(data) { return this.$val.Write(data); };
 90404  	normWriter.ptr.prototype.Close = function() {
 90405  		var _r, _tuple, err, w, $s, $r;
 90406  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; err = $f.err; w = $f.w; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 90407  		w = this;
 90408  		/* */ if (w.buf.$length > 0) { $s = 1; continue; }
 90409  		/* */ $s = 2; continue;
 90410  		/* if (w.buf.$length > 0) { */ case 1:
 90411  			_r = w.w.Write(w.buf); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 90412  			_tuple = _r;
 90413  			err = _tuple[1];
 90414  			if (!($interfaceIsEqual(err, $ifaceNil))) {
 90415  				$s = -1; return err;
 90416  			}
 90417  		/* } */ case 2:
 90418  		$s = -1; return $ifaceNil;
 90419  		/* */ } return; } if ($f === undefined) { $f = { $blk: normWriter.ptr.prototype.Close }; } $f._r = _r; $f._tuple = _tuple; $f.err = err; $f.w = w; $f.$s = $s; $f.$r = $r; return $f;
 90420  	};
 90421  	normWriter.prototype.Close = function() { return this.$val.Close(); };
 90422  	Form.prototype.Writer = function(w) {
 90423  		var f, w, wr;
 90424  		f = this.$val;
 90425  		wr = new normWriter.ptr(new reorderBuffer.ptr(arrayType.zero(), arrayType$1.zero(), 0, 0, 0, new formInfo.ptr(0, false, false, $throwNilPointerError, $throwNilPointerError), new input.ptr("", sliceType$4.nil), 0, new input.ptr("", sliceType$4.nil), sliceType$4.nil, $throwNilPointerError), w, sliceType$4.nil);
 90426  		wr.rb.init(f, sliceType$4.nil);
 90427  		return wr;
 90428  	};
 90429  	$ptrType(Form).prototype.Writer = function(w) { return new Form(this.$get()).Writer(w); };
 90430  	normReader.ptr.prototype.Read = function(p) {
 90431  		var _r, _r$1, _r$2, _tmp, _tmp$1, _tuple, err, n, n$1, outn, p, r, $s, $r;
 90432  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tuple = $f._tuple; err = $f.err; n = $f.n; n$1 = $f.n$1; outn = $f.outn; p = $f.p; r = $f.r; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 90433  		r = this;
 90434  		/* while (true) { */ case 1:
 90435  			if ((r.lastBoundary - r.bufStart >> 0) > 0) {
 90436  				n = $copySlice(p, $subslice(r.outbuf, r.bufStart, r.lastBoundary));
 90437  				r.bufStart = r.bufStart + (n) >> 0;
 90438  				if ((r.lastBoundary - r.bufStart >> 0) > 0) {
 90439  					$s = -1; return [n, $ifaceNil];
 90440  				}
 90441  				$s = -1; return [n, r.err];
 90442  			}
 90443  			if (!($interfaceIsEqual(r.err, $ifaceNil))) {
 90444  				$s = -1; return [0, r.err];
 90445  			}
 90446  			outn = $copySlice(r.outbuf, $subslice(r.outbuf, r.lastBoundary));
 90447  			r.outbuf = $subslice(r.outbuf, 0, outn);
 90448  			r.bufStart = 0;
 90449  			_r = r.r.Read(r.inbuf); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 90450  			_tuple = _r;
 90451  			n$1 = _tuple[0];
 90452  			err = _tuple[1];
 90453  			input.copy(r.rb.src, inputBytes($subslice(r.inbuf, 0, n$1)));
 90454  			_tmp = n$1;
 90455  			_tmp$1 = err;
 90456  			r.rb.nsrc = _tmp;
 90457  			r.err = _tmp$1;
 90458  			/* */ if (n$1 > 0) { $s = 4; continue; }
 90459  			/* */ $s = 5; continue;
 90460  			/* if (n$1 > 0) { */ case 4:
 90461  				_r$1 = doAppend(r.rb, r.outbuf, 0); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 90462  				r.outbuf = _r$1;
 90463  			/* } */ case 5:
 90464  			/* */ if ($interfaceIsEqual(err, io.EOF)) { $s = 7; continue; }
 90465  			/* */ $s = 8; continue;
 90466  			/* if ($interfaceIsEqual(err, io.EOF)) { */ case 7:
 90467  				r.lastBoundary = r.outbuf.$length;
 90468  				$s = 9; continue;
 90469  			/* } else { */ case 8:
 90470  				_r$2 = lastBoundary(r.rb.f, r.outbuf); /* */ $s = 10; case 10: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 90471  				r.lastBoundary = _r$2;
 90472  				if (r.lastBoundary === -1) {
 90473  					r.lastBoundary = 0;
 90474  				}
 90475  			/* } */ case 9:
 90476  		/* } */ $s = 1; continue; case 2:
 90477  		$s = -1; return [0, $ifaceNil];
 90478  		/* */ } return; } if ($f === undefined) { $f = { $blk: normReader.ptr.prototype.Read }; } $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tuple = _tuple; $f.err = err; $f.n = n; $f.n$1 = n$1; $f.outn = outn; $f.p = p; $f.r = r; $f.$s = $s; $f.$r = $r; return $f;
 90479  	};
 90480  	normReader.prototype.Read = function(p) { return this.$val.Read(p); };
 90481  	Form.prototype.Reader = function(r) {
 90482  		var buf, f, r, rr;
 90483  		f = this.$val;
 90484  		buf = $makeSlice(sliceType$4, 4000);
 90485  		rr = new normReader.ptr(new reorderBuffer.ptr(arrayType.zero(), arrayType$1.zero(), 0, 0, 0, new formInfo.ptr(0, false, false, $throwNilPointerError, $throwNilPointerError), new input.ptr("", sliceType$4.nil), 0, new input.ptr("", sliceType$4.nil), sliceType$4.nil, $throwNilPointerError), r, buf, sliceType$4.nil, 0, 0, $ifaceNil);
 90486  		rr.rb.init(f, buf);
 90487  		return rr;
 90488  	};
 90489  	$ptrType(Form).prototype.Reader = function(r) { return new Form(this.$get()).Reader(r); };
 90490  	nfcTrie.ptr.prototype.lookup = function(s) {
 90491  		var _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$14, _tmp$15, _tmp$16, _tmp$17, _tmp$18, _tmp$19, _tmp$2, _tmp$20, _tmp$21, _tmp$22, _tmp$23, _tmp$24, _tmp$25, _tmp$26, _tmp$27, _tmp$28, _tmp$29, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, c0, c1, c1$1, c1$2, c2, c2$1, c3, i, i$1, i$2, o, o$1, s, sz, t, v;
 90492  		v = 0;
 90493  		sz = 0;
 90494  		t = this;
 90495  		c0 = (0 >= s.$length ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + 0]);
 90496  		if (c0 < 128) {
 90497  			_tmp = ((c0 < 0 || c0 >= nfcValues.length) ? ($throwRuntimeError("index out of range"), undefined) : nfcValues[c0]);
 90498  			_tmp$1 = 1;
 90499  			v = _tmp;
 90500  			sz = _tmp$1;
 90501  			return [v, sz];
 90502  		} else if (c0 < 194) {
 90503  			_tmp$2 = 0;
 90504  			_tmp$3 = 1;
 90505  			v = _tmp$2;
 90506  			sz = _tmp$3;
 90507  			return [v, sz];
 90508  		} else if (c0 < 224) {
 90509  			if (s.$length < 2) {
 90510  				_tmp$4 = 0;
 90511  				_tmp$5 = 0;
 90512  				v = _tmp$4;
 90513  				sz = _tmp$5;
 90514  				return [v, sz];
 90515  			}
 90516  			i = ((c0 < 0 || c0 >= nfcIndex.length) ? ($throwRuntimeError("index out of range"), undefined) : nfcIndex[c0]);
 90517  			c1 = (1 >= s.$length ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + 1]);
 90518  			if (c1 < 128 || 192 <= c1) {
 90519  				_tmp$6 = 0;
 90520  				_tmp$7 = 1;
 90521  				v = _tmp$6;
 90522  				sz = _tmp$7;
 90523  				return [v, sz];
 90524  			}
 90525  			_tmp$8 = t.lookupValue(((i >>> 0)), c1);
 90526  			_tmp$9 = 2;
 90527  			v = _tmp$8;
 90528  			sz = _tmp$9;
 90529  			return [v, sz];
 90530  		} else if (c0 < 240) {
 90531  			if (s.$length < 3) {
 90532  				_tmp$10 = 0;
 90533  				_tmp$11 = 0;
 90534  				v = _tmp$10;
 90535  				sz = _tmp$11;
 90536  				return [v, sz];
 90537  			}
 90538  			i$1 = ((c0 < 0 || c0 >= nfcIndex.length) ? ($throwRuntimeError("index out of range"), undefined) : nfcIndex[c0]);
 90539  			c1$1 = (1 >= s.$length ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + 1]);
 90540  			if (c1$1 < 128 || 192 <= c1$1) {
 90541  				_tmp$12 = 0;
 90542  				_tmp$13 = 1;
 90543  				v = _tmp$12;
 90544  				sz = _tmp$13;
 90545  				return [v, sz];
 90546  			}
 90547  			o = (((i$1 >>> 0)) << 6 >>> 0) + ((c1$1 >>> 0)) >>> 0;
 90548  			i$1 = ((o < 0 || o >= nfcIndex.length) ? ($throwRuntimeError("index out of range"), undefined) : nfcIndex[o]);
 90549  			c2 = (2 >= s.$length ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + 2]);
 90550  			if (c2 < 128 || 192 <= c2) {
 90551  				_tmp$14 = 0;
 90552  				_tmp$15 = 2;
 90553  				v = _tmp$14;
 90554  				sz = _tmp$15;
 90555  				return [v, sz];
 90556  			}
 90557  			_tmp$16 = t.lookupValue(((i$1 >>> 0)), c2);
 90558  			_tmp$17 = 3;
 90559  			v = _tmp$16;
 90560  			sz = _tmp$17;
 90561  			return [v, sz];
 90562  		} else if (c0 < 248) {
 90563  			if (s.$length < 4) {
 90564  				_tmp$18 = 0;
 90565  				_tmp$19 = 0;
 90566  				v = _tmp$18;
 90567  				sz = _tmp$19;
 90568  				return [v, sz];
 90569  			}
 90570  			i$2 = ((c0 < 0 || c0 >= nfcIndex.length) ? ($throwRuntimeError("index out of range"), undefined) : nfcIndex[c0]);
 90571  			c1$2 = (1 >= s.$length ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + 1]);
 90572  			if (c1$2 < 128 || 192 <= c1$2) {
 90573  				_tmp$20 = 0;
 90574  				_tmp$21 = 1;
 90575  				v = _tmp$20;
 90576  				sz = _tmp$21;
 90577  				return [v, sz];
 90578  			}
 90579  			o$1 = (((i$2 >>> 0)) << 6 >>> 0) + ((c1$2 >>> 0)) >>> 0;
 90580  			i$2 = ((o$1 < 0 || o$1 >= nfcIndex.length) ? ($throwRuntimeError("index out of range"), undefined) : nfcIndex[o$1]);
 90581  			c2$1 = (2 >= s.$length ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + 2]);
 90582  			if (c2$1 < 128 || 192 <= c2$1) {
 90583  				_tmp$22 = 0;
 90584  				_tmp$23 = 2;
 90585  				v = _tmp$22;
 90586  				sz = _tmp$23;
 90587  				return [v, sz];
 90588  			}
 90589  			o$1 = (((i$2 >>> 0)) << 6 >>> 0) + ((c2$1 >>> 0)) >>> 0;
 90590  			i$2 = ((o$1 < 0 || o$1 >= nfcIndex.length) ? ($throwRuntimeError("index out of range"), undefined) : nfcIndex[o$1]);
 90591  			c3 = (3 >= s.$length ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + 3]);
 90592  			if (c3 < 128 || 192 <= c3) {
 90593  				_tmp$24 = 0;
 90594  				_tmp$25 = 3;
 90595  				v = _tmp$24;
 90596  				sz = _tmp$25;
 90597  				return [v, sz];
 90598  			}
 90599  			_tmp$26 = t.lookupValue(((i$2 >>> 0)), c3);
 90600  			_tmp$27 = 4;
 90601  			v = _tmp$26;
 90602  			sz = _tmp$27;
 90603  			return [v, sz];
 90604  		}
 90605  		_tmp$28 = 0;
 90606  		_tmp$29 = 1;
 90607  		v = _tmp$28;
 90608  		sz = _tmp$29;
 90609  		return [v, sz];
 90610  	};
 90611  	nfcTrie.prototype.lookup = function(s) { return this.$val.lookup(s); };
 90612  	nfcTrie.ptr.prototype.lookupString = function(s) {
 90613  		var _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$14, _tmp$15, _tmp$16, _tmp$17, _tmp$18, _tmp$19, _tmp$2, _tmp$20, _tmp$21, _tmp$22, _tmp$23, _tmp$24, _tmp$25, _tmp$26, _tmp$27, _tmp$28, _tmp$29, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, c0, c1, c1$1, c1$2, c2, c2$1, c3, i, i$1, i$2, o, o$1, s, sz, t, v;
 90614  		v = 0;
 90615  		sz = 0;
 90616  		t = this;
 90617  		c0 = s.charCodeAt(0);
 90618  		if (c0 < 128) {
 90619  			_tmp = ((c0 < 0 || c0 >= nfcValues.length) ? ($throwRuntimeError("index out of range"), undefined) : nfcValues[c0]);
 90620  			_tmp$1 = 1;
 90621  			v = _tmp;
 90622  			sz = _tmp$1;
 90623  			return [v, sz];
 90624  		} else if (c0 < 194) {
 90625  			_tmp$2 = 0;
 90626  			_tmp$3 = 1;
 90627  			v = _tmp$2;
 90628  			sz = _tmp$3;
 90629  			return [v, sz];
 90630  		} else if (c0 < 224) {
 90631  			if (s.length < 2) {
 90632  				_tmp$4 = 0;
 90633  				_tmp$5 = 0;
 90634  				v = _tmp$4;
 90635  				sz = _tmp$5;
 90636  				return [v, sz];
 90637  			}
 90638  			i = ((c0 < 0 || c0 >= nfcIndex.length) ? ($throwRuntimeError("index out of range"), undefined) : nfcIndex[c0]);
 90639  			c1 = s.charCodeAt(1);
 90640  			if (c1 < 128 || 192 <= c1) {
 90641  				_tmp$6 = 0;
 90642  				_tmp$7 = 1;
 90643  				v = _tmp$6;
 90644  				sz = _tmp$7;
 90645  				return [v, sz];
 90646  			}
 90647  			_tmp$8 = t.lookupValue(((i >>> 0)), c1);
 90648  			_tmp$9 = 2;
 90649  			v = _tmp$8;
 90650  			sz = _tmp$9;
 90651  			return [v, sz];
 90652  		} else if (c0 < 240) {
 90653  			if (s.length < 3) {
 90654  				_tmp$10 = 0;
 90655  				_tmp$11 = 0;
 90656  				v = _tmp$10;
 90657  				sz = _tmp$11;
 90658  				return [v, sz];
 90659  			}
 90660  			i$1 = ((c0 < 0 || c0 >= nfcIndex.length) ? ($throwRuntimeError("index out of range"), undefined) : nfcIndex[c0]);
 90661  			c1$1 = s.charCodeAt(1);
 90662  			if (c1$1 < 128 || 192 <= c1$1) {
 90663  				_tmp$12 = 0;
 90664  				_tmp$13 = 1;
 90665  				v = _tmp$12;
 90666  				sz = _tmp$13;
 90667  				return [v, sz];
 90668  			}
 90669  			o = (((i$1 >>> 0)) << 6 >>> 0) + ((c1$1 >>> 0)) >>> 0;
 90670  			i$1 = ((o < 0 || o >= nfcIndex.length) ? ($throwRuntimeError("index out of range"), undefined) : nfcIndex[o]);
 90671  			c2 = s.charCodeAt(2);
 90672  			if (c2 < 128 || 192 <= c2) {
 90673  				_tmp$14 = 0;
 90674  				_tmp$15 = 2;
 90675  				v = _tmp$14;
 90676  				sz = _tmp$15;
 90677  				return [v, sz];
 90678  			}
 90679  			_tmp$16 = t.lookupValue(((i$1 >>> 0)), c2);
 90680  			_tmp$17 = 3;
 90681  			v = _tmp$16;
 90682  			sz = _tmp$17;
 90683  			return [v, sz];
 90684  		} else if (c0 < 248) {
 90685  			if (s.length < 4) {
 90686  				_tmp$18 = 0;
 90687  				_tmp$19 = 0;
 90688  				v = _tmp$18;
 90689  				sz = _tmp$19;
 90690  				return [v, sz];
 90691  			}
 90692  			i$2 = ((c0 < 0 || c0 >= nfcIndex.length) ? ($throwRuntimeError("index out of range"), undefined) : nfcIndex[c0]);
 90693  			c1$2 = s.charCodeAt(1);
 90694  			if (c1$2 < 128 || 192 <= c1$2) {
 90695  				_tmp$20 = 0;
 90696  				_tmp$21 = 1;
 90697  				v = _tmp$20;
 90698  				sz = _tmp$21;
 90699  				return [v, sz];
 90700  			}
 90701  			o$1 = (((i$2 >>> 0)) << 6 >>> 0) + ((c1$2 >>> 0)) >>> 0;
 90702  			i$2 = ((o$1 < 0 || o$1 >= nfcIndex.length) ? ($throwRuntimeError("index out of range"), undefined) : nfcIndex[o$1]);
 90703  			c2$1 = s.charCodeAt(2);
 90704  			if (c2$1 < 128 || 192 <= c2$1) {
 90705  				_tmp$22 = 0;
 90706  				_tmp$23 = 2;
 90707  				v = _tmp$22;
 90708  				sz = _tmp$23;
 90709  				return [v, sz];
 90710  			}
 90711  			o$1 = (((i$2 >>> 0)) << 6 >>> 0) + ((c2$1 >>> 0)) >>> 0;
 90712  			i$2 = ((o$1 < 0 || o$1 >= nfcIndex.length) ? ($throwRuntimeError("index out of range"), undefined) : nfcIndex[o$1]);
 90713  			c3 = s.charCodeAt(3);
 90714  			if (c3 < 128 || 192 <= c3) {
 90715  				_tmp$24 = 0;
 90716  				_tmp$25 = 3;
 90717  				v = _tmp$24;
 90718  				sz = _tmp$25;
 90719  				return [v, sz];
 90720  			}
 90721  			_tmp$26 = t.lookupValue(((i$2 >>> 0)), c3);
 90722  			_tmp$27 = 4;
 90723  			v = _tmp$26;
 90724  			sz = _tmp$27;
 90725  			return [v, sz];
 90726  		}
 90727  		_tmp$28 = 0;
 90728  		_tmp$29 = 1;
 90729  		v = _tmp$28;
 90730  		sz = _tmp$29;
 90731  		return [v, sz];
 90732  	};
 90733  	nfcTrie.prototype.lookupString = function(s) { return this.$val.lookupString(s); };
 90734  	newNfcTrie = function(i) {
 90735  		var i;
 90736  		return new nfcTrie.ptr();
 90737  	};
 90738  	nfcTrie.ptr.prototype.lookupValue = function(n, b) {
 90739  		var b, n, t, x;
 90740  		t = this;
 90741  		if (n < 45) {
 90742  			return ((x = (n << 6 >>> 0) + ((b >>> 0)) >>> 0, ((x < 0 || x >= nfcValues.length) ? ($throwRuntimeError("index out of range"), undefined) : nfcValues[x])));
 90743  		} else {
 90744  			n = n - (45) >>> 0;
 90745  			return (nfcSparse.lookup(n, b));
 90746  		}
 90747  	};
 90748  	nfcTrie.prototype.lookupValue = function(n, b) { return this.$val.lookupValue(n, b); };
 90749  	nfkcTrie.ptr.prototype.lookup = function(s) {
 90750  		var _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$14, _tmp$15, _tmp$16, _tmp$17, _tmp$18, _tmp$19, _tmp$2, _tmp$20, _tmp$21, _tmp$22, _tmp$23, _tmp$24, _tmp$25, _tmp$26, _tmp$27, _tmp$28, _tmp$29, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, c0, c1, c1$1, c1$2, c2, c2$1, c3, i, i$1, i$2, o, o$1, s, sz, t, v;
 90751  		v = 0;
 90752  		sz = 0;
 90753  		t = this;
 90754  		c0 = (0 >= s.$length ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + 0]);
 90755  		if (c0 < 128) {
 90756  			_tmp = ((c0 < 0 || c0 >= nfkcValues.length) ? ($throwRuntimeError("index out of range"), undefined) : nfkcValues[c0]);
 90757  			_tmp$1 = 1;
 90758  			v = _tmp;
 90759  			sz = _tmp$1;
 90760  			return [v, sz];
 90761  		} else if (c0 < 194) {
 90762  			_tmp$2 = 0;
 90763  			_tmp$3 = 1;
 90764  			v = _tmp$2;
 90765  			sz = _tmp$3;
 90766  			return [v, sz];
 90767  		} else if (c0 < 224) {
 90768  			if (s.$length < 2) {
 90769  				_tmp$4 = 0;
 90770  				_tmp$5 = 0;
 90771  				v = _tmp$4;
 90772  				sz = _tmp$5;
 90773  				return [v, sz];
 90774  			}
 90775  			i = ((c0 < 0 || c0 >= nfkcIndex.length) ? ($throwRuntimeError("index out of range"), undefined) : nfkcIndex[c0]);
 90776  			c1 = (1 >= s.$length ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + 1]);
 90777  			if (c1 < 128 || 192 <= c1) {
 90778  				_tmp$6 = 0;
 90779  				_tmp$7 = 1;
 90780  				v = _tmp$6;
 90781  				sz = _tmp$7;
 90782  				return [v, sz];
 90783  			}
 90784  			_tmp$8 = t.lookupValue(((i >>> 0)), c1);
 90785  			_tmp$9 = 2;
 90786  			v = _tmp$8;
 90787  			sz = _tmp$9;
 90788  			return [v, sz];
 90789  		} else if (c0 < 240) {
 90790  			if (s.$length < 3) {
 90791  				_tmp$10 = 0;
 90792  				_tmp$11 = 0;
 90793  				v = _tmp$10;
 90794  				sz = _tmp$11;
 90795  				return [v, sz];
 90796  			}
 90797  			i$1 = ((c0 < 0 || c0 >= nfkcIndex.length) ? ($throwRuntimeError("index out of range"), undefined) : nfkcIndex[c0]);
 90798  			c1$1 = (1 >= s.$length ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + 1]);
 90799  			if (c1$1 < 128 || 192 <= c1$1) {
 90800  				_tmp$12 = 0;
 90801  				_tmp$13 = 1;
 90802  				v = _tmp$12;
 90803  				sz = _tmp$13;
 90804  				return [v, sz];
 90805  			}
 90806  			o = (((i$1 >>> 0)) << 6 >>> 0) + ((c1$1 >>> 0)) >>> 0;
 90807  			i$1 = ((o < 0 || o >= nfkcIndex.length) ? ($throwRuntimeError("index out of range"), undefined) : nfkcIndex[o]);
 90808  			c2 = (2 >= s.$length ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + 2]);
 90809  			if (c2 < 128 || 192 <= c2) {
 90810  				_tmp$14 = 0;
 90811  				_tmp$15 = 2;
 90812  				v = _tmp$14;
 90813  				sz = _tmp$15;
 90814  				return [v, sz];
 90815  			}
 90816  			_tmp$16 = t.lookupValue(((i$1 >>> 0)), c2);
 90817  			_tmp$17 = 3;
 90818  			v = _tmp$16;
 90819  			sz = _tmp$17;
 90820  			return [v, sz];
 90821  		} else if (c0 < 248) {
 90822  			if (s.$length < 4) {
 90823  				_tmp$18 = 0;
 90824  				_tmp$19 = 0;
 90825  				v = _tmp$18;
 90826  				sz = _tmp$19;
 90827  				return [v, sz];
 90828  			}
 90829  			i$2 = ((c0 < 0 || c0 >= nfkcIndex.length) ? ($throwRuntimeError("index out of range"), undefined) : nfkcIndex[c0]);
 90830  			c1$2 = (1 >= s.$length ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + 1]);
 90831  			if (c1$2 < 128 || 192 <= c1$2) {
 90832  				_tmp$20 = 0;
 90833  				_tmp$21 = 1;
 90834  				v = _tmp$20;
 90835  				sz = _tmp$21;
 90836  				return [v, sz];
 90837  			}
 90838  			o$1 = (((i$2 >>> 0)) << 6 >>> 0) + ((c1$2 >>> 0)) >>> 0;
 90839  			i$2 = ((o$1 < 0 || o$1 >= nfkcIndex.length) ? ($throwRuntimeError("index out of range"), undefined) : nfkcIndex[o$1]);
 90840  			c2$1 = (2 >= s.$length ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + 2]);
 90841  			if (c2$1 < 128 || 192 <= c2$1) {
 90842  				_tmp$22 = 0;
 90843  				_tmp$23 = 2;
 90844  				v = _tmp$22;
 90845  				sz = _tmp$23;
 90846  				return [v, sz];
 90847  			}
 90848  			o$1 = (((i$2 >>> 0)) << 6 >>> 0) + ((c2$1 >>> 0)) >>> 0;
 90849  			i$2 = ((o$1 < 0 || o$1 >= nfkcIndex.length) ? ($throwRuntimeError("index out of range"), undefined) : nfkcIndex[o$1]);
 90850  			c3 = (3 >= s.$length ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + 3]);
 90851  			if (c3 < 128 || 192 <= c3) {
 90852  				_tmp$24 = 0;
 90853  				_tmp$25 = 3;
 90854  				v = _tmp$24;
 90855  				sz = _tmp$25;
 90856  				return [v, sz];
 90857  			}
 90858  			_tmp$26 = t.lookupValue(((i$2 >>> 0)), c3);
 90859  			_tmp$27 = 4;
 90860  			v = _tmp$26;
 90861  			sz = _tmp$27;
 90862  			return [v, sz];
 90863  		}
 90864  		_tmp$28 = 0;
 90865  		_tmp$29 = 1;
 90866  		v = _tmp$28;
 90867  		sz = _tmp$29;
 90868  		return [v, sz];
 90869  	};
 90870  	nfkcTrie.prototype.lookup = function(s) { return this.$val.lookup(s); };
 90871  	nfkcTrie.ptr.prototype.lookupString = function(s) {
 90872  		var _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$14, _tmp$15, _tmp$16, _tmp$17, _tmp$18, _tmp$19, _tmp$2, _tmp$20, _tmp$21, _tmp$22, _tmp$23, _tmp$24, _tmp$25, _tmp$26, _tmp$27, _tmp$28, _tmp$29, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, c0, c1, c1$1, c1$2, c2, c2$1, c3, i, i$1, i$2, o, o$1, s, sz, t, v;
 90873  		v = 0;
 90874  		sz = 0;
 90875  		t = this;
 90876  		c0 = s.charCodeAt(0);
 90877  		if (c0 < 128) {
 90878  			_tmp = ((c0 < 0 || c0 >= nfkcValues.length) ? ($throwRuntimeError("index out of range"), undefined) : nfkcValues[c0]);
 90879  			_tmp$1 = 1;
 90880  			v = _tmp;
 90881  			sz = _tmp$1;
 90882  			return [v, sz];
 90883  		} else if (c0 < 194) {
 90884  			_tmp$2 = 0;
 90885  			_tmp$3 = 1;
 90886  			v = _tmp$2;
 90887  			sz = _tmp$3;
 90888  			return [v, sz];
 90889  		} else if (c0 < 224) {
 90890  			if (s.length < 2) {
 90891  				_tmp$4 = 0;
 90892  				_tmp$5 = 0;
 90893  				v = _tmp$4;
 90894  				sz = _tmp$5;
 90895  				return [v, sz];
 90896  			}
 90897  			i = ((c0 < 0 || c0 >= nfkcIndex.length) ? ($throwRuntimeError("index out of range"), undefined) : nfkcIndex[c0]);
 90898  			c1 = s.charCodeAt(1);
 90899  			if (c1 < 128 || 192 <= c1) {
 90900  				_tmp$6 = 0;
 90901  				_tmp$7 = 1;
 90902  				v = _tmp$6;
 90903  				sz = _tmp$7;
 90904  				return [v, sz];
 90905  			}
 90906  			_tmp$8 = t.lookupValue(((i >>> 0)), c1);
 90907  			_tmp$9 = 2;
 90908  			v = _tmp$8;
 90909  			sz = _tmp$9;
 90910  			return [v, sz];
 90911  		} else if (c0 < 240) {
 90912  			if (s.length < 3) {
 90913  				_tmp$10 = 0;
 90914  				_tmp$11 = 0;
 90915  				v = _tmp$10;
 90916  				sz = _tmp$11;
 90917  				return [v, sz];
 90918  			}
 90919  			i$1 = ((c0 < 0 || c0 >= nfkcIndex.length) ? ($throwRuntimeError("index out of range"), undefined) : nfkcIndex[c0]);
 90920  			c1$1 = s.charCodeAt(1);
 90921  			if (c1$1 < 128 || 192 <= c1$1) {
 90922  				_tmp$12 = 0;
 90923  				_tmp$13 = 1;
 90924  				v = _tmp$12;
 90925  				sz = _tmp$13;
 90926  				return [v, sz];
 90927  			}
 90928  			o = (((i$1 >>> 0)) << 6 >>> 0) + ((c1$1 >>> 0)) >>> 0;
 90929  			i$1 = ((o < 0 || o >= nfkcIndex.length) ? ($throwRuntimeError("index out of range"), undefined) : nfkcIndex[o]);
 90930  			c2 = s.charCodeAt(2);
 90931  			if (c2 < 128 || 192 <= c2) {
 90932  				_tmp$14 = 0;
 90933  				_tmp$15 = 2;
 90934  				v = _tmp$14;
 90935  				sz = _tmp$15;
 90936  				return [v, sz];
 90937  			}
 90938  			_tmp$16 = t.lookupValue(((i$1 >>> 0)), c2);
 90939  			_tmp$17 = 3;
 90940  			v = _tmp$16;
 90941  			sz = _tmp$17;
 90942  			return [v, sz];
 90943  		} else if (c0 < 248) {
 90944  			if (s.length < 4) {
 90945  				_tmp$18 = 0;
 90946  				_tmp$19 = 0;
 90947  				v = _tmp$18;
 90948  				sz = _tmp$19;
 90949  				return [v, sz];
 90950  			}
 90951  			i$2 = ((c0 < 0 || c0 >= nfkcIndex.length) ? ($throwRuntimeError("index out of range"), undefined) : nfkcIndex[c0]);
 90952  			c1$2 = s.charCodeAt(1);
 90953  			if (c1$2 < 128 || 192 <= c1$2) {
 90954  				_tmp$20 = 0;
 90955  				_tmp$21 = 1;
 90956  				v = _tmp$20;
 90957  				sz = _tmp$21;
 90958  				return [v, sz];
 90959  			}
 90960  			o$1 = (((i$2 >>> 0)) << 6 >>> 0) + ((c1$2 >>> 0)) >>> 0;
 90961  			i$2 = ((o$1 < 0 || o$1 >= nfkcIndex.length) ? ($throwRuntimeError("index out of range"), undefined) : nfkcIndex[o$1]);
 90962  			c2$1 = s.charCodeAt(2);
 90963  			if (c2$1 < 128 || 192 <= c2$1) {
 90964  				_tmp$22 = 0;
 90965  				_tmp$23 = 2;
 90966  				v = _tmp$22;
 90967  				sz = _tmp$23;
 90968  				return [v, sz];
 90969  			}
 90970  			o$1 = (((i$2 >>> 0)) << 6 >>> 0) + ((c2$1 >>> 0)) >>> 0;
 90971  			i$2 = ((o$1 < 0 || o$1 >= nfkcIndex.length) ? ($throwRuntimeError("index out of range"), undefined) : nfkcIndex[o$1]);
 90972  			c3 = s.charCodeAt(3);
 90973  			if (c3 < 128 || 192 <= c3) {
 90974  				_tmp$24 = 0;
 90975  				_tmp$25 = 3;
 90976  				v = _tmp$24;
 90977  				sz = _tmp$25;
 90978  				return [v, sz];
 90979  			}
 90980  			_tmp$26 = t.lookupValue(((i$2 >>> 0)), c3);
 90981  			_tmp$27 = 4;
 90982  			v = _tmp$26;
 90983  			sz = _tmp$27;
 90984  			return [v, sz];
 90985  		}
 90986  		_tmp$28 = 0;
 90987  		_tmp$29 = 1;
 90988  		v = _tmp$28;
 90989  		sz = _tmp$29;
 90990  		return [v, sz];
 90991  	};
 90992  	nfkcTrie.prototype.lookupString = function(s) { return this.$val.lookupString(s); };
 90993  	newNfkcTrie = function(i) {
 90994  		var i;
 90995  		return new nfkcTrie.ptr();
 90996  	};
 90997  	nfkcTrie.ptr.prototype.lookupValue = function(n, b) {
 90998  		var b, n, t, x;
 90999  		t = this;
 91000  		if (n < 91) {
 91001  			return ((x = (n << 6 >>> 0) + ((b >>> 0)) >>> 0, ((x < 0 || x >= nfkcValues.length) ? ($throwRuntimeError("index out of range"), undefined) : nfkcValues[x])));
 91002  		} else {
 91003  			n = n - (91) >>> 0;
 91004  			return (nfkcSparse.lookup(n, b));
 91005  		}
 91006  	};
 91007  	nfkcTrie.prototype.lookupValue = function(n, b) { return this.$val.lookupValue(n, b); };
 91008  	Form.prototype.Reset = function() {
 91009  	};
 91010  	$ptrType(Form).prototype.Reset = function() { return new Form(this.$get()).Reset(); };
 91011  	Form.prototype.Transform = function(dst, src, atEOF) {
 91012  		var _r, _r$1, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tuple, _tuple$1, atEOF, b, dst, eof, err, f, i, n, nDst, nSrc, ns, ok, src, $s, $r;
 91013  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tmp$4 = $f._tmp$4; _tmp$5 = $f._tmp$5; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; atEOF = $f.atEOF; b = $f.b; dst = $f.dst; eof = $f.eof; err = $f.err; f = $f.f; i = $f.i; n = $f.n; nDst = $f.nDst; nSrc = $f.nSrc; ns = $f.ns; ok = $f.ok; src = $f.src; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 91014  		nDst = 0;
 91015  		nSrc = 0;
 91016  		err = $ifaceNil;
 91017  		f = this.$val;
 91018  		n = 0;
 91019  		b = src;
 91020  		eof = atEOF;
 91021  		ns = dst.$length;
 91022  		if (ns < b.$length) {
 91023  			err = transform.ErrShortDst;
 91024  			eof = false;
 91025  			b = $subslice(b, 0, ns);
 91026  		}
 91027  		_r = ((f < 0 || f >= formTable.$length) ? ($throwRuntimeError("index out of range"), undefined) : formTable.$array[formTable.$offset + f]).quickSpan($clone(inputBytes(b), input), n, b.$length, eof); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 91028  		_tuple = _r;
 91029  		i = _tuple[0];
 91030  		ok = _tuple[1];
 91031  		n = n + ($copySlice($subslice(dst, n), $subslice(b, n, i))) >> 0;
 91032  		/* */ if (!ok) { $s = 2; continue; }
 91033  		/* */ $s = 3; continue;
 91034  		/* if (!ok) { */ case 2:
 91035  			_r$1 = new Form(f).transform($subslice(dst, n), $subslice(src, n), atEOF); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 91036  			_tuple$1 = _r$1;
 91037  			nDst = _tuple$1[0];
 91038  			nSrc = _tuple$1[1];
 91039  			err = _tuple$1[2];
 91040  			_tmp = nDst + n >> 0;
 91041  			_tmp$1 = nSrc + n >> 0;
 91042  			_tmp$2 = err;
 91043  			nDst = _tmp;
 91044  			nSrc = _tmp$1;
 91045  			err = _tmp$2;
 91046  			$s = -1; return [nDst, nSrc, err];
 91047  		/* } */ case 3:
 91048  		if (n < src.$length && !atEOF) {
 91049  			err = transform.ErrShortSrc;
 91050  		}
 91051  		_tmp$3 = n;
 91052  		_tmp$4 = n;
 91053  		_tmp$5 = err;
 91054  		nDst = _tmp$3;
 91055  		nSrc = _tmp$4;
 91056  		err = _tmp$5;
 91057  		$s = -1; return [nDst, nSrc, err];
 91058  		/* */ } return; } if ($f === undefined) { $f = { $blk: Form.prototype.Transform }; } $f._r = _r; $f._r$1 = _r$1; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tmp$4 = _tmp$4; $f._tmp$5 = _tmp$5; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.atEOF = atEOF; $f.b = b; $f.dst = dst; $f.eof = eof; $f.err = err; $f.f = f; $f.i = i; $f.n = n; $f.nDst = nDst; $f.nSrc = nSrc; $f.ns = ns; $f.ok = ok; $f.src = src; $f.$s = $s; $f.$r = $r; return $f;
 91059  	};
 91060  	$ptrType(Form).prototype.Transform = function(dst, src, atEOF) { return new Form(this.$get()).Transform(dst, src, atEOF); };
 91061  	flushTransform = function(rb) {
 91062  		var rb;
 91063  		if (rb.out.$length < ($imul(rb.nrune, 4))) {
 91064  			return false;
 91065  		}
 91066  		rb.out = $subslice(rb.out, rb.flushCopy(rb.out));
 91067  		return true;
 91068  	};
 91069  	Form.prototype.transform = function(dst, src, atEOF) {
 91070  		var _r, _r$1, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tuple, atEOF, dst, end, eof, err, f, n, n$1, nDst, nSrc, ok, rb, src, x, $s, $r;
 91071  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tmp$4 = $f._tmp$4; _tmp$5 = $f._tmp$5; _tuple = $f._tuple; atEOF = $f.atEOF; dst = $f.dst; end = $f.end; eof = $f.eof; err = $f.err; f = $f.f; n = $f.n; n$1 = $f.n$1; nDst = $f.nDst; nSrc = $f.nSrc; ok = $f.ok; rb = $f.rb; src = $f.src; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 91072  		rb = [rb];
 91073  		nDst = 0;
 91074  		nSrc = 0;
 91075  		err = $ifaceNil;
 91076  		f = this.$val;
 91077  		rb[0] = new reorderBuffer.ptr(arrayType.zero(), arrayType$1.zero(), 0, 0, 0, new formInfo.ptr(0, false, false, $throwNilPointerError, $throwNilPointerError), new input.ptr("", sliceType$4.nil), 0, new input.ptr("", sliceType$4.nil), sliceType$4.nil, $throwNilPointerError);
 91078  		rb[0].init(f, src);
 91079  		/* while (true) { */ case 1:
 91080  			rb[0].setFlusher($subslice(dst, nDst), flushTransform);
 91081  			_r = decomposeSegment(rb[0], nSrc, atEOF); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 91082  			end = _r;
 91083  			if (end < 0) {
 91084  				_tmp = nDst;
 91085  				_tmp$1 = nSrc;
 91086  				_tmp$2 = (x = -end, ((x < 0 || x >= errs.$length) ? ($throwRuntimeError("index out of range"), undefined) : errs.$array[errs.$offset + x]));
 91087  				nDst = _tmp;
 91088  				nSrc = _tmp$1;
 91089  				err = _tmp$2;
 91090  				$s = -1; return [nDst, nSrc, err];
 91091  			}
 91092  			nDst = dst.$length - rb[0].out.$length >> 0;
 91093  			nSrc = end;
 91094  			end = rb[0].nsrc;
 91095  			eof = atEOF;
 91096  			n = (nSrc + dst.$length >> 0) - nDst >> 0;
 91097  			if (n < end) {
 91098  				err = transform.ErrShortDst;
 91099  				end = n;
 91100  				eof = false;
 91101  			}
 91102  			_r$1 = rb[0].f.quickSpan($clone(rb[0].src, input), nSrc, end, eof); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 91103  			_tuple = _r$1;
 91104  			end = _tuple[0];
 91105  			ok = _tuple[1];
 91106  			n$1 = $copySlice($subslice(dst, nDst), $subslice(rb[0].src.bytes, nSrc, end));
 91107  			nSrc = nSrc + (n$1) >> 0;
 91108  			nDst = nDst + (n$1) >> 0;
 91109  			if (ok) {
 91110  				if (n$1 < rb[0].nsrc && !atEOF) {
 91111  					err = transform.ErrShortSrc;
 91112  				}
 91113  				_tmp$3 = nDst;
 91114  				_tmp$4 = nSrc;
 91115  				_tmp$5 = err;
 91116  				nDst = _tmp$3;
 91117  				nSrc = _tmp$4;
 91118  				err = _tmp$5;
 91119  				$s = -1; return [nDst, nSrc, err];
 91120  			}
 91121  		/* } */ $s = 1; continue; case 2:
 91122  		$s = -1; return [nDst, nSrc, err];
 91123  		/* */ } return; } if ($f === undefined) { $f = { $blk: Form.prototype.transform }; } $f._r = _r; $f._r$1 = _r$1; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tmp$4 = _tmp$4; $f._tmp$5 = _tmp$5; $f._tuple = _tuple; $f.atEOF = atEOF; $f.dst = dst; $f.end = end; $f.eof = eof; $f.err = err; $f.f = f; $f.n = n; $f.n$1 = n$1; $f.nDst = nDst; $f.nSrc = nSrc; $f.ok = ok; $f.rb = rb; $f.src = src; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
 91124  	};
 91125  	$ptrType(Form).prototype.transform = function(dst, src, atEOF) { return new Form(this.$get()).transform(dst, src, atEOF); };
 91126  	sparseBlocks.ptr.prototype.lookup = function(n, b) {
 91127  		var _q, b, header, hi, lo, m, n, offset, r, t, x, x$1, x$2;
 91128  		t = this;
 91129  		offset = (x = t.offset, ((n < 0 || n >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + n]));
 91130  		header = $clone((x$1 = t.values, ((offset < 0 || offset >= x$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + offset])), valueRange);
 91131  		lo = offset + 1 << 16 >>> 16;
 91132  		hi = lo + ((header.lo << 16 >>> 16)) << 16 >>> 16;
 91133  		while (true) {
 91134  			if (!(lo < hi)) { break; }
 91135  			m = lo + (_q = ((hi - lo << 16 >>> 16)) / 2, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >>> 0 : $throwRuntimeError("integer divide by zero")) << 16 >>> 16;
 91136  			r = $clone((x$2 = t.values, ((m < 0 || m >= x$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + m])), valueRange);
 91137  			if (r.lo <= b && b <= r.hi) {
 91138  				return r.value + ((((b - r.lo << 24 >>> 24) << 16 >>> 16)) * header.value << 16 >>> 16) << 16 >>> 16;
 91139  			}
 91140  			if (b < r.lo) {
 91141  				hi = m;
 91142  			} else {
 91143  				lo = m + 1 << 16 >>> 16;
 91144  			}
 91145  		}
 91146  		return 0;
 91147  	};
 91148  	sparseBlocks.prototype.lookup = function(n, b) { return this.$val.lookup(n, b); };
 91149  	streamSafe.methods = [{prop: "isMax", name: "isMax", pkg: "vendor/golang_org/x/text/unicode/norm", typ: $funcType([], [$Bool], false)}];
 91150  	ptrType$1.methods = [{prop: "first", name: "first", pkg: "vendor/golang_org/x/text/unicode/norm", typ: $funcType([Properties], [], false)}, {prop: "next", name: "next", pkg: "vendor/golang_org/x/text/unicode/norm", typ: $funcType([Properties], [ssState], false)}, {prop: "backwards", name: "backwards", pkg: "vendor/golang_org/x/text/unicode/norm", typ: $funcType([Properties], [ssState], false)}];
 91151  	ptrType$2.methods = [{prop: "init", name: "init", pkg: "vendor/golang_org/x/text/unicode/norm", typ: $funcType([Form, sliceType$4], [], false)}, {prop: "initString", name: "initString", pkg: "vendor/golang_org/x/text/unicode/norm", typ: $funcType([Form, $String], [], false)}, {prop: "setFlusher", name: "setFlusher", pkg: "vendor/golang_org/x/text/unicode/norm", typ: $funcType([sliceType$4, funcType], [], false)}, {prop: "reset", name: "reset", pkg: "vendor/golang_org/x/text/unicode/norm", typ: $funcType([], [], false)}, {prop: "doFlush", name: "doFlush", pkg: "vendor/golang_org/x/text/unicode/norm", typ: $funcType([], [$Bool], false)}, {prop: "flush", name: "flush", pkg: "vendor/golang_org/x/text/unicode/norm", typ: $funcType([sliceType$4], [sliceType$4], false)}, {prop: "flushCopy", name: "flushCopy", pkg: "vendor/golang_org/x/text/unicode/norm", typ: $funcType([sliceType$4], [$Int], false)}, {prop: "insertOrdered", name: "insertOrdered", pkg: "vendor/golang_org/x/text/unicode/norm", typ: $funcType([Properties], [], false)}, {prop: "insertFlush", name: "insertFlush", pkg: "vendor/golang_org/x/text/unicode/norm", typ: $funcType([input, $Int, Properties], [insertErr], false)}, {prop: "insertUnsafe", name: "insertUnsafe", pkg: "vendor/golang_org/x/text/unicode/norm", typ: $funcType([input, $Int, Properties], [], false)}, {prop: "insertDecomposed", name: "insertDecomposed", pkg: "vendor/golang_org/x/text/unicode/norm", typ: $funcType([sliceType$4], [insertErr], false)}, {prop: "insertSingle", name: "insertSingle", pkg: "vendor/golang_org/x/text/unicode/norm", typ: $funcType([input, $Int, Properties], [], false)}, {prop: "insertCGJ", name: "insertCGJ", pkg: "vendor/golang_org/x/text/unicode/norm", typ: $funcType([], [], false)}, {prop: "appendRune", name: "appendRune", pkg: "vendor/golang_org/x/text/unicode/norm", typ: $funcType([$Int32], [], false)}, {prop: "assignRune", name: "assignRune", pkg: "vendor/golang_org/x/text/unicode/norm", typ: $funcType([$Int, $Int32], [], false)}, {prop: "runeAt", name: "runeAt", pkg: "vendor/golang_org/x/text/unicode/norm", typ: $funcType([$Int], [$Int32], false)}, {prop: "bytesAt", name: "bytesAt", pkg: "vendor/golang_org/x/text/unicode/norm", typ: $funcType([$Int], [sliceType$4], false)}, {prop: "decomposeHangul", name: "decomposeHangul", pkg: "vendor/golang_org/x/text/unicode/norm", typ: $funcType([$Int32], [], false)}, {prop: "combineHangul", name: "combineHangul", pkg: "vendor/golang_org/x/text/unicode/norm", typ: $funcType([$Int, $Int, $Int], [], false)}, {prop: "compose", name: "compose", pkg: "vendor/golang_org/x/text/unicode/norm", typ: $funcType([], [], false)}];
 91152  	Properties.methods = [{prop: "BoundaryBefore", name: "BoundaryBefore", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "BoundaryAfter", name: "BoundaryAfter", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "isYesC", name: "isYesC", pkg: "vendor/golang_org/x/text/unicode/norm", typ: $funcType([], [$Bool], false)}, {prop: "isYesD", name: "isYesD", pkg: "vendor/golang_org/x/text/unicode/norm", typ: $funcType([], [$Bool], false)}, {prop: "combinesForward", name: "combinesForward", pkg: "vendor/golang_org/x/text/unicode/norm", typ: $funcType([], [$Bool], false)}, {prop: "combinesBackward", name: "combinesBackward", pkg: "vendor/golang_org/x/text/unicode/norm", typ: $funcType([], [$Bool], false)}, {prop: "hasDecomposition", name: "hasDecomposition", pkg: "vendor/golang_org/x/text/unicode/norm", typ: $funcType([], [$Bool], false)}, {prop: "isInert", name: "isInert", pkg: "vendor/golang_org/x/text/unicode/norm", typ: $funcType([], [$Bool], false)}, {prop: "multiSegment", name: "multiSegment", pkg: "vendor/golang_org/x/text/unicode/norm", typ: $funcType([], [$Bool], false)}, {prop: "nLeadingNonStarters", name: "nLeadingNonStarters", pkg: "vendor/golang_org/x/text/unicode/norm", typ: $funcType([], [$Uint8], false)}, {prop: "nTrailingNonStarters", name: "nTrailingNonStarters", pkg: "vendor/golang_org/x/text/unicode/norm", typ: $funcType([], [$Uint8], false)}, {prop: "Decomposition", name: "Decomposition", pkg: "", typ: $funcType([], [sliceType$4], false)}, {prop: "Size", name: "Size", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "CCC", name: "CCC", pkg: "", typ: $funcType([], [$Uint8], false)}, {prop: "LeadCCC", name: "LeadCCC", pkg: "", typ: $funcType([], [$Uint8], false)}, {prop: "TrailCCC", name: "TrailCCC", pkg: "", typ: $funcType([], [$Uint8], false)}];
 91153  	ptrType.methods = [{prop: "quickSpan", name: "quickSpan", pkg: "vendor/golang_org/x/text/unicode/norm", typ: $funcType([input, $Int, $Int, $Bool], [$Int, $Bool], false)}];
 91154  	ptrType$3.methods = [{prop: "setBytes", name: "setBytes", pkg: "vendor/golang_org/x/text/unicode/norm", typ: $funcType([sliceType$4], [], false)}, {prop: "setString", name: "setString", pkg: "vendor/golang_org/x/text/unicode/norm", typ: $funcType([$String], [], false)}, {prop: "_byte", name: "_byte", pkg: "vendor/golang_org/x/text/unicode/norm", typ: $funcType([$Int], [$Uint8], false)}, {prop: "skipASCII", name: "skipASCII", pkg: "vendor/golang_org/x/text/unicode/norm", typ: $funcType([$Int, $Int], [$Int], false)}, {prop: "skipContinuationBytes", name: "skipContinuationBytes", pkg: "vendor/golang_org/x/text/unicode/norm", typ: $funcType([$Int], [$Int], false)}, {prop: "appendSlice", name: "appendSlice", pkg: "vendor/golang_org/x/text/unicode/norm", typ: $funcType([sliceType$4, $Int, $Int], [sliceType$4], false)}, {prop: "copySlice", name: "copySlice", pkg: "vendor/golang_org/x/text/unicode/norm", typ: $funcType([sliceType$4, $Int, $Int], [$Int], false)}, {prop: "charinfoNFC", name: "charinfoNFC", pkg: "vendor/golang_org/x/text/unicode/norm", typ: $funcType([$Int], [$Uint16, $Int], false)}, {prop: "charinfoNFKC", name: "charinfoNFKC", pkg: "vendor/golang_org/x/text/unicode/norm", typ: $funcType([$Int], [$Uint16, $Int], false)}, {prop: "hangul", name: "hangul", pkg: "vendor/golang_org/x/text/unicode/norm", typ: $funcType([$Int], [$Int32], false)}];
 91155  	ptrType$4.methods = [{prop: "Init", name: "Init", pkg: "", typ: $funcType([Form, sliceType$4], [], false)}, {prop: "InitString", name: "InitString", pkg: "", typ: $funcType([Form, $String], [], false)}, {prop: "Seek", name: "Seek", pkg: "", typ: $funcType([$Int64, $Int], [$Int64, $error], false)}, {prop: "returnSlice", name: "returnSlice", pkg: "vendor/golang_org/x/text/unicode/norm", typ: $funcType([$Int, $Int], [sliceType$4], false)}, {prop: "Pos", name: "Pos", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "setDone", name: "setDone", pkg: "vendor/golang_org/x/text/unicode/norm", typ: $funcType([], [], false)}, {prop: "Done", name: "Done", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "Next", name: "Next", pkg: "", typ: $funcType([], [sliceType$4], false)}];
 91156  	Form.methods = [{prop: "Properties", name: "Properties", pkg: "", typ: $funcType([sliceType$4], [Properties], false)}, {prop: "PropertiesString", name: "PropertiesString", pkg: "", typ: $funcType([$String], [Properties], false)}, {prop: "Bytes", name: "Bytes", pkg: "", typ: $funcType([sliceType$4], [sliceType$4], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([$String], [$String], false)}, {prop: "IsNormal", name: "IsNormal", pkg: "", typ: $funcType([sliceType$4], [$Bool], false)}, {prop: "IsNormalString", name: "IsNormalString", pkg: "", typ: $funcType([$String], [$Bool], false)}, {prop: "Append", name: "Append", pkg: "", typ: $funcType([sliceType$4, sliceType$4], [sliceType$4], true)}, {prop: "doAppend", name: "doAppend", pkg: "vendor/golang_org/x/text/unicode/norm", typ: $funcType([sliceType$4, input, $Int], [sliceType$4], false)}, {prop: "AppendString", name: "AppendString", pkg: "", typ: $funcType([sliceType$4, $String], [sliceType$4], false)}, {prop: "QuickSpan", name: "QuickSpan", pkg: "", typ: $funcType([sliceType$4], [$Int], false)}, {prop: "Span", name: "Span", pkg: "", typ: $funcType([sliceType$4, $Bool], [$Int, $error], false)}, {prop: "SpanString", name: "SpanString", pkg: "", typ: $funcType([$String, $Bool], [$Int, $error], false)}, {prop: "QuickSpanString", name: "QuickSpanString", pkg: "", typ: $funcType([$String], [$Int], false)}, {prop: "FirstBoundary", name: "FirstBoundary", pkg: "", typ: $funcType([sliceType$4], [$Int], false)}, {prop: "firstBoundary", name: "firstBoundary", pkg: "vendor/golang_org/x/text/unicode/norm", typ: $funcType([input, $Int], [$Int], false)}, {prop: "FirstBoundaryInString", name: "FirstBoundaryInString", pkg: "", typ: $funcType([$String], [$Int], false)}, {prop: "NextBoundary", name: "NextBoundary", pkg: "", typ: $funcType([sliceType$4, $Bool], [$Int], false)}, {prop: "NextBoundaryInString", name: "NextBoundaryInString", pkg: "", typ: $funcType([$String, $Bool], [$Int], false)}, {prop: "nextBoundary", name: "nextBoundary", pkg: "vendor/golang_org/x/text/unicode/norm", typ: $funcType([input, $Int, $Bool], [$Int], false)}, {prop: "LastBoundary", name: "LastBoundary", pkg: "", typ: $funcType([sliceType$4], [$Int], false)}, {prop: "Writer", name: "Writer", pkg: "", typ: $funcType([io.Writer], [io.WriteCloser], false)}, {prop: "Reader", name: "Reader", pkg: "", typ: $funcType([io.Reader], [io.Reader], false)}, {prop: "Reset", name: "Reset", pkg: "", typ: $funcType([], [], false)}, {prop: "Transform", name: "Transform", pkg: "", typ: $funcType([sliceType$4, sliceType$4, $Bool], [$Int, $Int, $error], false)}, {prop: "transform", name: "transform", pkg: "vendor/golang_org/x/text/unicode/norm", typ: $funcType([sliceType$4, sliceType$4, $Bool], [$Int, $Int, $error], false)}];
 91157  	ptrType$5.methods = [{prop: "Write", name: "Write", pkg: "", typ: $funcType([sliceType$4], [$Int, $error], false)}, {prop: "Close", name: "Close", pkg: "", typ: $funcType([], [$error], false)}];
 91158  	ptrType$6.methods = [{prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType$4], [$Int, $error], false)}];
 91159  	ptrType$7.methods = [{prop: "lookup", name: "lookup", pkg: "vendor/golang_org/x/text/unicode/norm", typ: $funcType([sliceType$4], [$Uint16, $Int], false)}, {prop: "lookupUnsafe", name: "lookupUnsafe", pkg: "vendor/golang_org/x/text/unicode/norm", typ: $funcType([sliceType$4], [$Uint16], false)}, {prop: "lookupString", name: "lookupString", pkg: "vendor/golang_org/x/text/unicode/norm", typ: $funcType([$String], [$Uint16, $Int], false)}, {prop: "lookupStringUnsafe", name: "lookupStringUnsafe", pkg: "vendor/golang_org/x/text/unicode/norm", typ: $funcType([$String], [$Uint16], false)}, {prop: "lookupValue", name: "lookupValue", pkg: "vendor/golang_org/x/text/unicode/norm", typ: $funcType([$Uint32, $Uint8], [$Uint16], false)}];
 91160  	ptrType$8.methods = [{prop: "lookup", name: "lookup", pkg: "vendor/golang_org/x/text/unicode/norm", typ: $funcType([sliceType$4], [$Uint16, $Int], false)}, {prop: "lookupUnsafe", name: "lookupUnsafe", pkg: "vendor/golang_org/x/text/unicode/norm", typ: $funcType([sliceType$4], [$Uint16], false)}, {prop: "lookupString", name: "lookupString", pkg: "vendor/golang_org/x/text/unicode/norm", typ: $funcType([$String], [$Uint16, $Int], false)}, {prop: "lookupStringUnsafe", name: "lookupStringUnsafe", pkg: "vendor/golang_org/x/text/unicode/norm", typ: $funcType([$String], [$Uint16], false)}, {prop: "lookupValue", name: "lookupValue", pkg: "vendor/golang_org/x/text/unicode/norm", typ: $funcType([$Uint32, $Uint8], [$Uint16], false)}];
 91161  	ptrType$9.methods = [{prop: "lookup", name: "lookup", pkg: "vendor/golang_org/x/text/unicode/norm", typ: $funcType([$Uint32, $Uint8], [$Uint16], false)}];
 91162  	reorderBuffer.init("vendor/golang_org/x/text/unicode/norm", [{prop: "rune", name: "rune", anonymous: false, exported: false, typ: arrayType, tag: ""}, {prop: "byte$1", name: "byte", anonymous: false, exported: false, typ: arrayType$1, tag: ""}, {prop: "nbyte", name: "nbyte", anonymous: false, exported: false, typ: $Uint8, tag: ""}, {prop: "ss", name: "ss", anonymous: false, exported: false, typ: streamSafe, tag: ""}, {prop: "nrune", name: "nrune", anonymous: false, exported: false, typ: $Int, tag: ""}, {prop: "f", name: "f", anonymous: false, exported: false, typ: formInfo, tag: ""}, {prop: "src", name: "src", anonymous: false, exported: false, typ: input, tag: ""}, {prop: "nsrc", name: "nsrc", anonymous: false, exported: false, typ: $Int, tag: ""}, {prop: "tmpBytes", name: "tmpBytes", anonymous: false, exported: false, typ: input, tag: ""}, {prop: "out", name: "out", anonymous: false, exported: false, typ: sliceType$4, tag: ""}, {prop: "flushF", name: "flushF", anonymous: false, exported: false, typ: funcType, tag: ""}]);
 91163  	Properties.init("vendor/golang_org/x/text/unicode/norm", [{prop: "pos", name: "pos", anonymous: false, exported: false, typ: $Uint8, tag: ""}, {prop: "size", name: "size", anonymous: false, exported: false, typ: $Uint8, tag: ""}, {prop: "ccc", name: "ccc", anonymous: false, exported: false, typ: $Uint8, tag: ""}, {prop: "tccc", name: "tccc", anonymous: false, exported: false, typ: $Uint8, tag: ""}, {prop: "nLead", name: "nLead", anonymous: false, exported: false, typ: $Uint8, tag: ""}, {prop: "flags", name: "flags", anonymous: false, exported: false, typ: qcInfo, tag: ""}, {prop: "index", name: "index", anonymous: false, exported: false, typ: $Uint16, tag: ""}]);
 91164  	lookupFunc.init([input, $Int], [Properties], false);
 91165  	formInfo.init("vendor/golang_org/x/text/unicode/norm", [{prop: "form", name: "form", anonymous: false, exported: false, typ: Form, tag: ""}, {prop: "composing", name: "composing", anonymous: false, exported: false, typ: $Bool, tag: ""}, {prop: "compatibility", name: "compatibility", anonymous: false, exported: false, typ: $Bool, tag: ""}, {prop: "info", name: "info", anonymous: false, exported: false, typ: lookupFunc, tag: ""}, {prop: "nextMain", name: "nextMain", anonymous: false, exported: false, typ: iterFunc, tag: ""}]);
 91166  	input.init("vendor/golang_org/x/text/unicode/norm", [{prop: "str", name: "str", anonymous: false, exported: false, typ: $String, tag: ""}, {prop: "bytes", name: "bytes", anonymous: false, exported: false, typ: sliceType$4, tag: ""}]);
 91167  	Iter.init("vendor/golang_org/x/text/unicode/norm", [{prop: "rb", name: "rb", anonymous: false, exported: false, typ: reorderBuffer, tag: ""}, {prop: "buf", name: "buf", anonymous: false, exported: false, typ: arrayType$1, tag: ""}, {prop: "info", name: "info", anonymous: false, exported: false, typ: Properties, tag: ""}, {prop: "next", name: "next", anonymous: false, exported: false, typ: iterFunc, tag: ""}, {prop: "asciiF", name: "asciiF", anonymous: false, exported: false, typ: iterFunc, tag: ""}, {prop: "p", name: "p", anonymous: false, exported: false, typ: $Int, tag: ""}, {prop: "multiSeg", name: "multiSeg", anonymous: false, exported: false, typ: sliceType$4, tag: ""}]);
 91168  	iterFunc.init([ptrType$4], [sliceType$4], false);
 91169  	normWriter.init("vendor/golang_org/x/text/unicode/norm", [{prop: "rb", name: "rb", anonymous: false, exported: false, typ: reorderBuffer, tag: ""}, {prop: "w", name: "w", anonymous: false, exported: false, typ: io.Writer, tag: ""}, {prop: "buf", name: "buf", anonymous: false, exported: false, typ: sliceType$4, tag: ""}]);
 91170  	normReader.init("vendor/golang_org/x/text/unicode/norm", [{prop: "rb", name: "rb", anonymous: false, exported: false, typ: reorderBuffer, tag: ""}, {prop: "r", name: "r", anonymous: false, exported: false, typ: io.Reader, tag: ""}, {prop: "inbuf", name: "inbuf", anonymous: false, exported: false, typ: sliceType$4, tag: ""}, {prop: "outbuf", name: "outbuf", anonymous: false, exported: false, typ: sliceType$4, tag: ""}, {prop: "bufStart", name: "bufStart", anonymous: false, exported: false, typ: $Int, tag: ""}, {prop: "lastBoundary", name: "lastBoundary", anonymous: false, exported: false, typ: $Int, tag: ""}, {prop: "err", name: "err", anonymous: false, exported: false, typ: $error, tag: ""}]);
 91171  	nfcTrie.init("", []);
 91172  	nfkcTrie.init("", []);
 91173  	valueRange.init("vendor/golang_org/x/text/unicode/norm", [{prop: "value", name: "value", anonymous: false, exported: false, typ: $Uint16, tag: ""}, {prop: "lo", name: "lo", anonymous: false, exported: false, typ: $Uint8, tag: ""}, {prop: "hi", name: "hi", anonymous: false, exported: false, typ: $Uint8, tag: ""}]);
 91174  	sparseBlocks.init("vendor/golang_org/x/text/unicode/norm", [{prop: "values", name: "values", anonymous: false, exported: false, typ: sliceType$2, tag: ""}, {prop: "offset", name: "offset", anonymous: false, exported: false, typ: sliceType, tag: ""}]);
 91175  	$init = function() {
 91176  		$pkg.$init = function() {};
 91177  		/* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 91178  		$r = fmt.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 91179  		$r = io.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 91180  		$r = utf8.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 91181  		$r = transform.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 91182  		ccc = $toNativeArray($kindUint8, [0, 1, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 84, 91, 103, 107, 118, 122, 129, 130, 132, 202, 214, 216, 218, 220, 222, 224, 226, 228, 230, 232, 233, 234, 240]);
 91183  		decomps = $toNativeArray($kindUint8, [0, 65, 32, 65, 33, 65, 34, 65, 35, 65, 36, 65, 37, 65, 38, 65, 39, 65, 40, 65, 41, 65, 42, 65, 43, 65, 44, 65, 45, 65, 46, 65, 47, 65, 48, 65, 49, 65, 50, 65, 51, 65, 52, 65, 53, 65, 54, 65, 55, 65, 56, 65, 57, 65, 58, 65, 59, 65, 60, 65, 61, 65, 62, 65, 63, 65, 64, 65, 65, 65, 66, 65, 67, 65, 68, 65, 69, 65, 70, 65, 71, 65, 72, 65, 73, 65, 74, 65, 75, 65, 76, 65, 77, 65, 78, 65, 79, 65, 80, 65, 81, 65, 82, 65, 83, 65, 84, 65, 85, 65, 86, 65, 87, 65, 88, 65, 89, 65, 90, 65, 91, 65, 92, 65, 93, 65, 94, 65, 95, 65, 96, 65, 97, 65, 98, 65, 99, 65, 100, 65, 101, 65, 102, 65, 103, 65, 104, 65, 105, 65, 106, 65, 107, 65, 108, 65, 109, 65, 110, 65, 111, 65, 112, 65, 113, 65, 114, 65, 115, 65, 116, 65, 117, 65, 118, 65, 119, 65, 120, 65, 121, 65, 122, 65, 123, 65, 124, 65, 125, 65, 126, 66, 194, 162, 66, 194, 163, 66, 194, 165, 66, 194, 166, 66, 194, 172, 66, 194, 183, 66, 195, 134, 66, 195, 176, 66, 196, 166, 66, 196, 167, 66, 196, 177, 66, 197, 139, 66, 197, 147, 66, 198, 142, 66, 198, 144, 66, 198, 171, 66, 200, 162, 66, 200, 183, 66, 201, 144, 66, 201, 145, 66, 201, 146, 66, 201, 148, 66, 201, 149, 66, 201, 153, 66, 201, 155, 66, 201, 156, 66, 201, 159, 66, 201, 161, 66, 201, 163, 66, 201, 165, 66, 201, 166, 66, 201, 168, 66, 201, 169, 66, 201, 170, 66, 201, 171, 66, 201, 173, 66, 201, 175, 66, 201, 176, 66, 201, 177, 66, 201, 178, 66, 201, 179, 66, 201, 180, 66, 201, 181, 66, 201, 184, 66, 201, 185, 66, 201, 187, 66, 202, 129, 66, 202, 130, 66, 202, 131, 66, 202, 137, 66, 202, 138, 66, 202, 139, 66, 202, 140, 66, 202, 144, 66, 202, 145, 66, 202, 146, 66, 202, 149, 66, 202, 157, 66, 202, 159, 66, 202, 185, 66, 206, 145, 66, 206, 146, 66, 206, 147, 66, 206, 148, 66, 206, 149, 66, 206, 150, 66, 206, 151, 66, 206, 152, 66, 206, 153, 66, 206, 154, 66, 206, 155, 66, 206, 156, 66, 206, 157, 66, 206, 158, 66, 206, 159, 66, 206, 160, 66, 206, 161, 66, 206, 163, 66, 206, 164, 66, 206, 165, 66, 206, 166, 66, 206, 167, 66, 206, 168, 66, 206, 169, 66, 206, 177, 66, 206, 178, 66, 206, 179, 66, 206, 180, 66, 206, 181, 66, 206, 182, 66, 206, 183, 66, 206, 184, 66, 206, 185, 66, 206, 186, 66, 206, 187, 66, 206, 188, 66, 206, 189, 66, 206, 190, 66, 206, 191, 66, 207, 128, 66, 207, 129, 66, 207, 130, 66, 207, 131, 66, 207, 132, 66, 207, 133, 66, 207, 134, 66, 207, 135, 66, 207, 136, 66, 207, 137, 66, 207, 156, 66, 207, 157, 66, 208, 189, 66, 209, 138, 66, 209, 140, 66, 215, 144, 66, 215, 145, 66, 215, 146, 66, 215, 147, 66, 215, 148, 66, 215, 155, 66, 215, 156, 66, 215, 157, 66, 215, 162, 66, 215, 168, 66, 215, 170, 66, 216, 161, 66, 216, 167, 66, 216, 168, 66, 216, 169, 66, 216, 170, 66, 216, 171, 66, 216, 172, 66, 216, 173, 66, 216, 174, 66, 216, 175, 66, 216, 176, 66, 216, 177, 66, 216, 178, 66, 216, 179, 66, 216, 180, 66, 216, 181, 66, 216, 182, 66, 216, 183, 66, 216, 184, 66, 216, 185, 66, 216, 186, 66, 217, 129, 66, 217, 130, 66, 217, 131, 66, 217, 132, 66, 217, 133, 66, 217, 134, 66, 217, 135, 66, 217, 136, 66, 217, 137, 66, 217, 138, 66, 217, 174, 66, 217, 175, 66, 217, 177, 66, 217, 185, 66, 217, 186, 66, 217, 187, 66, 217, 190, 66, 217, 191, 66, 218, 128, 66, 218, 131, 66, 218, 132, 66, 218, 134, 66, 218, 135, 66, 218, 136, 66, 218, 140, 66, 218, 141, 66, 218, 142, 66, 218, 145, 66, 218, 152, 66, 218, 161, 66, 218, 164, 66, 218, 166, 66, 218, 169, 66, 218, 173, 66, 218, 175, 66, 218, 177, 66, 218, 179, 66, 218, 186, 66, 218, 187, 66, 218, 190, 66, 219, 129, 66, 219, 133, 66, 219, 134, 66, 219, 135, 66, 219, 136, 66, 219, 137, 66, 219, 139, 66, 219, 140, 66, 219, 144, 66, 219, 146, 67, 224, 188, 139, 67, 225, 131, 156, 67, 225, 132, 128, 67, 225, 132, 129, 67, 225, 132, 130, 67, 225, 132, 131, 67, 225, 132, 132, 67, 225, 132, 133, 67, 225, 132, 134, 67, 225, 132, 135, 67, 225, 132, 136, 67, 225, 132, 137, 67, 225, 132, 138, 67, 225, 132, 139, 67, 225, 132, 140, 67, 225, 132, 141, 67, 225, 132, 142, 67, 225, 132, 143, 67, 225, 132, 144, 67, 225, 132, 145, 67, 225, 132, 146, 67, 225, 132, 148, 67, 225, 132, 149, 67, 225, 132, 154, 67, 225, 132, 156, 67, 225, 132, 157, 67, 225, 132, 158, 67, 225, 132, 160, 67, 225, 132, 161, 67, 225, 132, 162, 67, 225, 132, 163, 67, 225, 132, 167, 67, 225, 132, 169, 67, 225, 132, 171, 67, 225, 132, 172, 67, 225, 132, 173, 67, 225, 132, 174, 67, 225, 132, 175, 67, 225, 132, 178, 67, 225, 132, 182, 67, 225, 133, 128, 67, 225, 133, 135, 67, 225, 133, 140, 67, 225, 133, 151, 67, 225, 133, 152, 67, 225, 133, 153, 67, 225, 133, 160, 67, 225, 134, 132, 67, 225, 134, 133, 67, 225, 134, 136, 67, 225, 134, 145, 67, 225, 134, 146, 67, 225, 134, 148, 67, 225, 134, 158, 67, 225, 134, 161, 67, 225, 135, 135, 67, 225, 135, 136, 67, 225, 135, 140, 67, 225, 135, 142, 67, 225, 135, 147, 67, 225, 135, 151, 67, 225, 135, 153, 67, 225, 135, 157, 67, 225, 135, 159, 67, 225, 135, 177, 67, 225, 135, 178, 67, 225, 180, 130, 67, 225, 180, 150, 67, 225, 180, 151, 67, 225, 180, 156, 67, 225, 180, 157, 67, 225, 180, 165, 67, 225, 181, 187, 67, 225, 182, 133, 67, 226, 128, 130, 67, 226, 128, 131, 67, 226, 128, 144, 67, 226, 128, 147, 67, 226, 128, 148, 67, 226, 130, 169, 67, 226, 134, 144, 67, 226, 134, 145, 67, 226, 134, 146, 67, 226, 134, 147, 67, 226, 136, 130, 67, 226, 136, 135, 67, 226, 136, 145, 67, 226, 136, 146, 67, 226, 148, 130, 67, 226, 150, 160, 67, 226, 151, 139, 67, 226, 166, 133, 67, 226, 166, 134, 67, 226, 181, 161, 67, 227, 128, 129, 67, 227, 128, 130, 67, 227, 128, 136, 67, 227, 128, 137, 67, 227, 128, 138, 67, 227, 128, 139, 67, 227, 128, 140, 67, 227, 128, 141, 67, 227, 128, 142, 67, 227, 128, 143, 67, 227, 128, 144, 67, 227, 128, 145, 67, 227, 128, 146, 67, 227, 128, 148, 67, 227, 128, 149, 67, 227, 128, 150, 67, 227, 128, 151, 67, 227, 130, 161, 67, 227, 130, 162, 67, 227, 130, 163, 67, 227, 130, 164, 67, 227, 130, 165, 67, 227, 130, 166, 67, 227, 130, 167, 67, 227, 130, 168, 67, 227, 130, 169, 67, 227, 130, 170, 67, 227, 130, 171, 67, 227, 130, 173, 67, 227, 130, 175, 67, 227, 130, 177, 67, 227, 130, 179, 67, 227, 130, 181, 67, 227, 130, 183, 67, 227, 130, 185, 67, 227, 130, 187, 67, 227, 130, 189, 67, 227, 130, 191, 67, 227, 131, 129, 67, 227, 131, 131, 67, 227, 131, 132, 67, 227, 131, 134, 67, 227, 131, 136, 67, 227, 131, 138, 67, 227, 131, 139, 67, 227, 131, 140, 67, 227, 131, 141, 67, 227, 131, 142, 67, 227, 131, 143, 67, 227, 131, 146, 67, 227, 131, 149, 67, 227, 131, 152, 67, 227, 131, 155, 67, 227, 131, 158, 67, 227, 131, 159, 67, 227, 131, 160, 67, 227, 131, 161, 67, 227, 131, 162, 67, 227, 131, 163, 67, 227, 131, 164, 67, 227, 131, 165, 67, 227, 131, 166, 67, 227, 131, 167, 67, 227, 131, 168, 67, 227, 131, 169, 67, 227, 131, 170, 67, 227, 131, 171, 67, 227, 131, 172, 67, 227, 131, 173, 67, 227, 131, 175, 67, 227, 131, 176, 67, 227, 131, 177, 67, 227, 131, 178, 67, 227, 131, 179, 67, 227, 131, 187, 67, 227, 131, 188, 67, 227, 146, 158, 67, 227, 146, 185, 67, 227, 146, 187, 67, 227, 147, 159, 67, 227, 148, 149, 67, 227, 155, 174, 67, 227, 155, 188, 67, 227, 158, 129, 67, 227, 160, 175, 67, 227, 161, 162, 67, 227, 161, 188, 67, 227, 163, 135, 67, 227, 163, 163, 67, 227, 164, 156, 67, 227, 164, 186, 67, 227, 168, 174, 67, 227, 169, 172, 67, 227, 171, 164, 67, 227, 172, 136, 67, 227, 172, 153, 67, 227, 173, 137, 67, 227, 174, 157, 67, 227, 176, 152, 67, 227, 177, 142, 67, 227, 180, 179, 67, 227, 182, 150, 67, 227, 186, 172, 67, 227, 186, 184, 67, 227, 188, 155, 67, 227, 191, 188, 67, 228, 128, 136, 67, 228, 128, 152, 67, 228, 128, 185, 67, 228, 129, 134, 67, 228, 130, 150, 67, 228, 131, 163, 67, 228, 132, 175, 67, 228, 136, 130, 67, 228, 136, 167, 67, 228, 138, 160, 67, 228, 140, 129, 67, 228, 140, 180, 67, 228, 141, 153, 67, 228, 143, 149, 67, 228, 143, 153, 67, 228, 144, 139, 67, 228, 145, 171, 67, 228, 148, 171, 67, 228, 149, 157, 67, 228, 149, 161, 67, 228, 149, 171, 67, 228, 151, 151, 67, 228, 151, 185, 67, 228, 152, 181, 67, 228, 154, 190, 67, 228, 155, 135, 67, 228, 166, 149, 67, 228, 167, 166, 67, 228, 169, 174, 67, 228, 169, 182, 67, 228, 170, 178, 67, 228, 172, 179, 67, 228, 175, 142, 67, 228, 179, 142, 67, 228, 179, 173, 67, 228, 179, 184, 67, 228, 181, 150, 67, 228, 184, 128, 67, 228, 184, 129, 67, 228, 184, 131, 67, 228, 184, 137, 67, 228, 184, 138, 67, 228, 184, 139, 67, 228, 184, 141, 67, 228, 184, 153, 67, 228, 184, 166, 67, 228, 184, 168, 67, 228, 184, 173, 67, 228, 184, 178, 67, 228, 184, 182, 67, 228, 184, 184, 67, 228, 184, 185, 67, 228, 184, 189, 67, 228, 184, 191, 67, 228, 185, 129, 67, 228, 185, 153, 67, 228, 185, 157, 67, 228, 186, 130, 67, 228, 186, 133, 67, 228, 186, 134, 67, 228, 186, 140, 67, 228, 186, 148, 67, 228, 186, 160, 67, 228, 186, 164, 67, 228, 186, 174, 67, 228, 186, 186, 67, 228, 187, 128, 67, 228, 187, 140, 67, 228, 187, 164, 67, 228, 188, 129, 67, 228, 188, 145, 67, 228, 189, 160, 67, 228, 190, 128, 67, 228, 190, 134, 67, 228, 190, 139, 67, 228, 190, 174, 67, 228, 190, 187, 67, 228, 190, 191, 67, 229, 128, 130, 67, 229, 128, 171, 67, 229, 129, 186, 67, 229, 130, 153, 67, 229, 131, 143, 67, 229, 131, 154, 67, 229, 131, 167, 67, 229, 132, 170, 67, 229, 132, 191, 67, 229, 133, 128, 67, 229, 133, 133, 67, 229, 133, 141, 67, 229, 133, 148, 67, 229, 133, 164, 67, 229, 133, 165, 67, 229, 133, 167, 67, 229, 133, 168, 67, 229, 133, 169, 67, 229, 133, 171, 67, 229, 133, 173, 67, 229, 133, 183, 67, 229, 134, 128, 67, 229, 134, 130, 67, 229, 134, 141, 67, 229, 134, 146, 67, 229, 134, 149, 67, 229, 134, 150, 67, 229, 134, 151, 67, 229, 134, 153, 67, 229, 134, 164, 67, 229, 134, 171, 67, 229, 134, 172, 67, 229, 134, 181, 67, 229, 134, 183, 67, 229, 135, 137, 67, 229, 135, 140, 67, 229, 135, 156, 67, 229, 135, 158, 67, 229, 135, 160, 67, 229, 135, 181, 67, 229, 136, 128, 67, 229, 136, 131, 67, 229, 136, 135, 67, 229, 136, 151, 67, 229, 136, 157, 67, 229, 136, 169, 67, 229, 136, 186, 67, 229, 136, 187, 67, 229, 137, 134, 67, 229, 137, 141, 67, 229, 137, 178, 67, 229, 137, 183, 67, 229, 138, 137, 67, 229, 138, 155, 67, 229, 138, 163, 67, 229, 138, 179, 67, 229, 138, 180, 67, 229, 139, 135, 67, 229, 139, 137, 67, 229, 139, 146, 67, 229, 139, 158, 67, 229, 139, 164, 67, 229, 139, 181, 67, 229, 139, 185, 67, 229, 139, 186, 67, 229, 140, 133, 67, 229, 140, 134, 67, 229, 140, 149, 67, 229, 140, 151, 67, 229, 140, 154, 67, 229, 140, 184, 67, 229, 140, 187, 67, 229, 140, 191, 67, 229, 141, 129, 67, 229, 141, 132, 67, 229, 141, 133, 67, 229, 141, 137, 67, 229, 141, 145, 67, 229, 141, 148, 67, 229, 141, 154, 67, 229, 141, 156, 67, 229, 141, 169, 67, 229, 141, 176, 67, 229, 141, 179, 67, 229, 141, 181, 67, 229, 141, 189, 67, 229, 141, 191, 67, 229, 142, 130, 67, 229, 142, 182, 67, 229, 143, 131, 67, 229, 143, 136, 67, 229, 143, 138, 67, 229, 143, 140, 67, 229, 143, 159, 67, 229, 143, 163, 67, 229, 143, 165, 67, 229, 143, 171, 67, 229, 143, 175, 67, 229, 143, 177, 67, 229, 143, 179, 67, 229, 144, 134, 67, 229, 144, 136, 67, 229, 144, 141, 67, 229, 144, 143, 67, 229, 144, 157, 67, 229, 144, 184, 67, 229, 144, 185, 67, 229, 145, 130, 67, 229, 145, 136, 67, 229, 145, 168, 67, 229, 146, 158, 67, 229, 146, 162, 67, 229, 146, 189, 67, 229, 147, 182, 67, 229, 148, 144, 67, 229, 149, 143, 67, 229, 149, 147, 67, 229, 149, 149, 67, 229, 149, 163, 67, 229, 150, 132, 67, 229, 150, 135, 67, 229, 150, 153, 67, 229, 150, 157, 67, 229, 150, 171, 67, 229, 150, 179, 67, 229, 150, 182, 67, 229, 151, 128, 67, 229, 151, 130, 67, 229, 151, 162, 67, 229, 152, 134, 67, 229, 153, 145, 67, 229, 153, 168, 67, 229, 153, 180, 67, 229, 155, 151, 67, 229, 155, 155, 67, 229, 155, 185, 67, 229, 156, 150, 67, 229, 156, 151, 67, 229, 156, 159, 67, 229, 156, 176, 67, 229, 158, 139, 67, 229, 159, 142, 67, 229, 159, 180, 67, 229, 160, 141, 67, 229, 160, 177, 67, 229, 160, 178, 67, 229, 161, 128, 67, 229, 161, 154, 67, 229, 161, 158, 67, 229, 162, 168, 67, 229, 162, 172, 67, 229, 162, 179, 67, 229, 163, 152, 67, 229, 163, 159, 67, 229, 163, 171, 67, 229, 163, 174, 67, 229, 163, 176, 67, 229, 163, 178, 67, 229, 163, 183, 67, 229, 164, 130, 67, 229, 164, 134, 67, 229, 164, 138, 67, 229, 164, 149, 67, 229, 164, 154, 67, 229, 164, 156, 67, 229, 164, 162, 67, 229, 164, 167, 67, 229, 164, 169, 67, 229, 165, 132, 67, 229, 165, 136, 67, 229, 165, 145, 67, 229, 165, 148, 67, 229, 165, 162, 67, 229, 165, 179, 67, 229, 167, 152, 67, 229, 167, 172, 67, 229, 168, 155, 67, 229, 168, 167, 67, 229, 169, 162, 67, 229, 169, 166, 67, 229, 170, 181, 67, 229, 172, 136, 67, 229, 172, 168, 67, 229, 172, 190, 67, 229, 173, 144, 67, 229, 173, 151, 67, 229, 173, 166, 67, 229, 174, 128, 67, 229, 174, 133, 67, 229, 174, 151, 67, 229, 175, 131, 67, 229, 175, 152, 67, 229, 175, 167, 67, 229, 175, 174, 67, 229, 175, 179, 67, 229, 175, 184, 67, 229, 175, 191, 67, 229, 176, 134, 67, 229, 176, 143, 67, 229, 176, 162, 67, 229, 176, 184, 67, 229, 176, 191, 67, 229, 177, 160, 67, 229, 177, 162, 67, 229, 177, 164, 67, 229, 177, 165, 67, 229, 177, 174, 67, 229, 177, 177, 67, 229, 178, 141, 67, 229, 179, 128, 67, 229, 180, 153, 67, 229, 181, 131, 67, 229, 181, 144, 67, 229, 181, 171, 67, 229, 181, 174, 67, 229, 181, 188, 67, 229, 182, 178, 67, 229, 182, 186, 67, 229, 183, 155, 67, 229, 183, 161, 67, 229, 183, 162, 67, 229, 183, 165, 67, 229, 183, 166, 67, 229, 183, 177, 67, 229, 183, 189, 67, 229, 183, 190, 67, 229, 184, 168, 67, 229, 184, 189, 67, 229, 185, 169, 67, 229, 185, 178, 67, 229, 185, 180, 67, 229, 185, 186, 67, 229, 185, 188, 67, 229, 185, 191, 67, 229, 186, 166, 67, 229, 186, 176, 67, 229, 186, 179, 67, 229, 186, 182, 67, 229, 187, 137, 67, 229, 187, 138, 67, 229, 187, 146, 67, 229, 187, 147, 67, 229, 187, 153, 67, 229, 187, 172, 67, 229, 187, 180, 67, 229, 187, 190, 67, 229, 188, 132, 67, 229, 188, 139, 67, 229, 188, 147, 67, 229, 188, 162, 67, 229, 189, 144, 67, 229, 189, 147, 67, 229, 189, 161, 67, 229, 189, 162, 67, 229, 189, 169, 67, 229, 189, 171, 67, 229, 189, 179, 67, 229, 190, 139, 67, 229, 190, 140, 67, 229, 190, 151, 67, 229, 190, 154, 67, 229, 190, 169, 67, 229, 190, 173, 67, 229, 191, 131, 67, 229, 191, 141, 67, 229, 191, 151, 67, 229, 191, 181, 67, 229, 191, 185, 67, 230, 128, 146, 67, 230, 128, 156, 67, 230, 129, 181, 67, 230, 130, 129, 67, 230, 130, 148, 67, 230, 131, 135, 67, 230, 131, 152, 67, 230, 131, 161, 67, 230, 132, 136, 67, 230, 133, 132, 67, 230, 133, 136, 67, 230, 133, 140, 67, 230, 133, 142, 67, 230, 133, 160, 67, 230, 133, 168, 67, 230, 133, 186, 67, 230, 134, 142, 67, 230, 134, 144, 67, 230, 134, 164, 67, 230, 134, 175, 67, 230, 134, 178, 67, 230, 135, 158, 67, 230, 135, 178, 67, 230, 135, 182, 67, 230, 136, 128, 67, 230, 136, 136, 67, 230, 136, 144, 67, 230, 136, 155, 67, 230, 136, 174, 67, 230, 136, 180, 67, 230, 136, 182, 67, 230, 137, 139, 67, 230, 137, 147, 67, 230, 137, 157, 67, 230, 138, 149, 67, 230, 138, 177, 67, 230, 139, 137, 67, 230, 139, 143, 67, 230, 139, 147, 67, 230, 139, 148, 67, 230, 139, 188, 67, 230, 139, 190, 67, 230, 140, 135, 67, 230, 140, 189, 67, 230, 141, 144, 67, 230, 141, 149, 67, 230, 141, 168, 67, 230, 141, 187, 67, 230, 142, 131, 67, 230, 142, 160, 67, 230, 142, 169, 67, 230, 143, 132, 67, 230, 143, 133, 67, 230, 143, 164, 67, 230, 144, 156, 67, 230, 144, 162, 67, 230, 145, 146, 67, 230, 145, 169, 67, 230, 145, 183, 67, 230, 145, 190, 67, 230, 146, 154, 67, 230, 146, 157, 67, 230, 147, 132, 67, 230, 148, 175, 67, 230, 148, 180, 67, 230, 149, 143, 67, 230, 149, 150, 67, 230, 149, 172, 67, 230, 149, 184, 67, 230, 150, 135, 67, 230, 150, 151, 67, 230, 150, 153, 67, 230, 150, 164, 67, 230, 150, 176, 67, 230, 150, 185, 67, 230, 151, 133, 67, 230, 151, 160, 67, 230, 151, 162, 67, 230, 151, 163, 67, 230, 151, 165, 67, 230, 152, 147, 67, 230, 152, 160, 67, 230, 153, 137, 67, 230, 153, 180, 67, 230, 154, 136, 67, 230, 154, 145, 67, 230, 154, 156, 67, 230, 154, 180, 67, 230, 155, 134, 67, 230, 155, 176, 67, 230, 155, 180, 67, 230, 155, 184, 67, 230, 156, 128, 67, 230, 156, 136, 67, 230, 156, 137, 67, 230, 156, 151, 67, 230, 156, 155, 67, 230, 156, 161, 67, 230, 156, 168, 67, 230, 157, 142, 67, 230, 157, 147, 67, 230, 157, 150, 67, 230, 157, 158, 67, 230, 157, 187, 67, 230, 158, 133, 67, 230, 158, 151, 67, 230, 159, 179, 67, 230, 159, 186, 67, 230, 160, 151, 67, 230, 160, 159, 67, 230, 160, 170, 67, 230, 161, 146, 67, 230, 162, 129, 67, 230, 162, 133, 67, 230, 162, 142, 67, 230, 162, 168, 67, 230, 164, 148, 67, 230, 165, 130, 67, 230, 166, 163, 67, 230, 167, 170, 67, 230, 168, 130, 67, 230, 168, 147, 67, 230, 170, 168, 67, 230, 171, 147, 67, 230, 171, 155, 67, 230, 172, 132, 67, 230, 172, 160, 67, 230, 172, 161, 67, 230, 173, 148, 67, 230, 173, 162, 67, 230, 173, 163, 67, 230, 173, 178, 67, 230, 173, 183, 67, 230, 173, 185, 67, 230, 174, 159, 67, 230, 174, 174, 67, 230, 174, 179, 67, 230, 174, 186, 67, 230, 174, 187, 67, 230, 175, 139, 67, 230, 175, 141, 67, 230, 175, 148, 67, 230, 175, 155, 67, 230, 176, 143, 67, 230, 176, 148, 67, 230, 176, 180, 67, 230, 177, 142, 67, 230, 177, 167, 67, 230, 178, 136, 67, 230, 178, 191, 67, 230, 179, 140, 67, 230, 179, 141, 67, 230, 179, 165, 67, 230, 179, 168, 67, 230, 180, 150, 67, 230, 180, 155, 67, 230, 180, 158, 67, 230, 180, 180, 67, 230, 180, 190, 67, 230, 181, 129, 67, 230, 181, 169, 67, 230, 181, 170, 67, 230, 181, 183, 67, 230, 181, 184, 67, 230, 182, 133, 67, 230, 183, 139, 67, 230, 183, 154, 67, 230, 183, 170, 67, 230, 183, 185, 67, 230, 184, 154, 67, 230, 184, 175, 67, 230, 185, 174, 67, 230, 186, 128, 67, 230, 186, 156, 67, 230, 186, 186, 67, 230, 187, 135, 67, 230, 187, 139, 67, 230, 187, 145, 67, 230, 187, 155, 67, 230, 188, 143, 67, 230, 188, 148, 67, 230, 188, 162, 67, 230, 188, 163, 67, 230, 189, 174, 67, 230, 191, 134, 67, 230, 191, 171, 67, 230, 191, 190, 67, 231, 128, 155, 67, 231, 128, 158, 67, 231, 128, 185, 67, 231, 129, 138, 67, 231, 129, 171, 67, 231, 129, 176, 67, 231, 129, 183, 67, 231, 129, 189, 67, 231, 130, 153, 67, 231, 130, 173, 67, 231, 131, 136, 67, 231, 131, 153, 67, 231, 132, 161, 67, 231, 133, 133, 67, 231, 133, 137, 67, 231, 133, 174, 67, 231, 134, 156, 67, 231, 135, 142, 67, 231, 135, 144, 67, 231, 136, 144, 67, 231, 136, 155, 67, 231, 136, 168, 67, 231, 136, 170, 67, 231, 136, 171, 67, 231, 136, 181, 67, 231, 136, 182, 67, 231, 136, 187, 67, 231, 136, 191, 67, 231, 137, 135, 67, 231, 137, 144, 67, 231, 137, 153, 67, 231, 137, 155, 67, 231, 137, 162, 67, 231, 137, 185, 67, 231, 138, 128, 67, 231, 138, 149, 67, 231, 138, 172, 67, 231, 138, 175, 67, 231, 139, 128, 67, 231, 139, 188, 67, 231, 140, 170, 67, 231, 141, 181, 67, 231, 141, 186, 67, 231, 142, 132, 67, 231, 142, 135, 67, 231, 142, 137, 67, 231, 142, 139, 67, 231, 142, 165, 67, 231, 142, 178, 67, 231, 143, 158, 67, 231, 144, 134, 67, 231, 144, 137, 67, 231, 144, 162, 67, 231, 145, 135, 67, 231, 145, 156, 67, 231, 145, 169, 67, 231, 145, 177, 67, 231, 146, 133, 67, 231, 146, 137, 67, 231, 146, 152, 67, 231, 147, 138, 67, 231, 147, 156, 67, 231, 147, 166, 67, 231, 148, 134, 67, 231, 148, 152, 67, 231, 148, 159, 67, 231, 148, 164, 67, 231, 148, 168, 67, 231, 148, 176, 67, 231, 148, 178, 67, 231, 148, 179, 67, 231, 148, 183, 67, 231, 148, 187, 67, 231, 148, 190, 67, 231, 149, 153, 67, 231, 149, 165, 67, 231, 149, 176, 67, 231, 150, 139, 67, 231, 150, 146, 67, 231, 151, 162, 67, 231, 152, 144, 67, 231, 152, 157, 67, 231, 152, 159, 67, 231, 153, 130, 67, 231, 153, 169, 67, 231, 153, 182, 67, 231, 153, 189, 67, 231, 154, 174, 67, 231, 154, 191, 67, 231, 155, 138, 67, 231, 155, 155, 67, 231, 155, 163, 67, 231, 155, 167, 67, 231, 155, 174, 67, 231, 155, 180, 67, 231, 156, 129, 67, 231, 156, 158, 67, 231, 156, 159, 67, 231, 157, 128, 67, 231, 157, 138, 67, 231, 158, 139, 67, 231, 158, 167, 67, 231, 159, 155, 67, 231, 159, 162, 67, 231, 159, 179, 67, 231, 161, 142, 67, 231, 161, 171, 67, 231, 162, 140, 67, 231, 162, 145, 67, 231, 163, 138, 67, 231, 163, 140, 67, 231, 163, 187, 67, 231, 164, 170, 67, 231, 164, 186, 67, 231, 164, 188, 67, 231, 164, 190, 67, 231, 165, 136, 67, 231, 165, 137, 67, 231, 165, 144, 67, 231, 165, 150, 67, 231, 165, 157, 67, 231, 165, 158, 67, 231, 165, 165, 67, 231, 165, 191, 67, 231, 166, 129, 67, 231, 166, 141, 67, 231, 166, 142, 67, 231, 166, 143, 67, 231, 166, 174, 67, 231, 166, 184, 67, 231, 166, 190, 67, 231, 167, 138, 67, 231, 167, 152, 67, 231, 167, 171, 67, 231, 168, 156, 67, 231, 169, 128, 67, 231, 169, 138, 67, 231, 169, 143, 67, 231, 169, 180, 67, 231, 169, 186, 67, 231, 170, 129, 67, 231, 170, 177, 67, 231, 171, 139, 67, 231, 171, 174, 67, 231, 171, 185, 67, 231, 172, 160, 67, 231, 174, 143, 67, 231, 175, 128, 67, 231, 175, 134, 67, 231, 175, 137, 67, 231, 176, 190, 67, 231, 177, 160, 67, 231, 177, 179, 67, 231, 177, 187, 67, 231, 178, 146, 67, 231, 178, 190, 67, 231, 179, 146, 67, 231, 179, 150, 67, 231, 179, 163, 67, 231, 179, 167, 67, 231, 179, 168, 67, 231, 179, 184, 67, 231, 180, 128, 67, 231, 180, 144, 67, 231, 180, 162, 67, 231, 180, 175, 67, 231, 181, 130, 67, 231, 181, 155, 67, 231, 181, 163, 67, 231, 182, 160, 67, 231, 182, 190, 67, 231, 183, 135, 67, 231, 183, 180, 67, 231, 184, 130, 67, 231, 184, 137, 67, 231, 184, 183, 67, 231, 185, 129, 67, 231, 185, 133, 67, 231, 188, 182, 67, 231, 188, 190, 67, 231, 189, 145, 67, 231, 189, 178, 67, 231, 189, 185, 67, 231, 189, 186, 67, 231, 190, 133, 67, 231, 190, 138, 67, 231, 190, 149, 67, 231, 190, 154, 67, 231, 190, 189, 67, 231, 191, 186, 67, 232, 128, 129, 67, 232, 128, 133, 67, 232, 128, 140, 67, 232, 128, 146, 67, 232, 128, 179, 67, 232, 129, 134, 67, 232, 129, 160, 67, 232, 129, 175, 67, 232, 129, 176, 67, 232, 129, 190, 67, 232, 129, 191, 67, 232, 130, 137, 67, 232, 130, 139, 67, 232, 130, 173, 67, 232, 130, 178, 67, 232, 132, 131, 67, 232, 132, 190, 67, 232, 135, 152, 67, 232, 135, 163, 67, 232, 135, 168, 67, 232, 135, 170, 67, 232, 135, 173, 67, 232, 135, 179, 67, 232, 135, 188, 67, 232, 136, 129, 67, 232, 136, 132, 67, 232, 136, 140, 67, 232, 136, 152, 67, 232, 136, 155, 67, 232, 136, 159, 67, 232, 137, 174, 67, 232, 137, 175, 67, 232, 137, 178, 67, 232, 137, 184, 67, 232, 137, 185, 67, 232, 138, 139, 67, 232, 138, 145, 67, 232, 138, 157, 67, 232, 138, 177, 67, 232, 138, 179, 67, 232, 138, 189, 67, 232, 139, 165, 67, 232, 139, 166, 67, 232, 140, 157, 67, 232, 140, 163, 67, 232, 140, 182, 67, 232, 141, 146, 67, 232, 141, 147, 67, 232, 141, 163, 67, 232, 142, 173, 67, 232, 142, 189, 67, 232, 143, 137, 67, 232, 143, 138, 67, 232, 143, 140, 67, 232, 143, 156, 67, 232, 143, 167, 67, 232, 143, 175, 67, 232, 143, 177, 67, 232, 144, 189, 67, 232, 145, 137, 67, 232, 145, 151, 67, 232, 147, 174, 67, 232, 147, 177, 67, 232, 147, 179, 67, 232, 147, 188, 67, 232, 148, 150, 67, 232, 149, 164, 67, 232, 151, 141, 67, 232, 151, 186, 67, 232, 152, 134, 67, 232, 152, 146, 67, 232, 152, 173, 67, 232, 152, 191, 67, 232, 153, 141, 67, 232, 153, 144, 67, 232, 153, 156, 67, 232, 153, 167, 67, 232, 153, 169, 67, 232, 153, 171, 67, 232, 154, 136, 67, 232, 154, 169, 67, 232, 155, 162, 67, 232, 156, 142, 67, 232, 156, 168, 67, 232, 157, 171, 67, 232, 157, 185, 67, 232, 158, 134, 67, 232, 158, 186, 67, 232, 159, 161, 67, 232, 160, 129, 67, 232, 160, 159, 67, 232, 161, 128, 67, 232, 161, 140, 67, 232, 161, 160, 67, 232, 161, 163, 67, 232, 163, 130, 67, 232, 163, 143, 67, 232, 163, 151, 67, 232, 163, 158, 67, 232, 163, 161, 67, 232, 163, 184, 67, 232, 163, 186, 67, 232, 164, 144, 67, 232, 165, 129, 67, 232, 165, 164, 67, 232, 165, 190, 67, 232, 166, 134, 67, 232, 166, 139, 67, 232, 166, 150, 67, 232, 167, 146, 67, 232, 167, 163, 67, 232, 168, 128, 67, 232, 170, 160, 67, 232, 170, 170, 67, 232, 170, 191, 67, 232, 171, 139, 67, 232, 171, 146, 67, 232, 171, 150, 67, 232, 171, 173, 67, 232, 171, 184, 67, 232, 171, 190, 67, 232, 172, 129, 67, 232, 172, 185, 67, 232, 173, 152, 67, 232, 174, 128, 67, 232, 174, 138, 67, 232, 176, 183, 67, 232, 177, 134, 67, 232, 177, 136, 67, 232, 177, 149, 67, 232, 177, 184, 67, 232, 178, 157, 67, 232, 178, 161, 67, 232, 178, 169, 67, 232, 178, 171, 67, 232, 179, 129, 67, 232, 179, 130, 67, 232, 179, 135, 67, 232, 179, 136, 67, 232, 179, 147, 67, 232, 180, 136, 67, 232, 180, 155, 67, 232, 181, 164, 67, 232, 181, 176, 67, 232, 181, 183, 67, 232, 182, 179, 67, 232, 182, 188, 67, 232, 183, 139, 67, 232, 183, 175, 67, 232, 183, 176, 67, 232, 186, 171, 67, 232, 187, 138, 67, 232, 187, 148, 67, 232, 188, 166, 67, 232, 188, 170, 67, 232, 188, 184, 67, 232, 188, 187, 67, 232, 189, 162, 67, 232, 190, 155, 67, 232, 190, 158, 67, 232, 190, 176, 67, 232, 190, 181, 67, 232, 190, 182, 67, 233, 128, 163, 67, 233, 128, 184, 67, 233, 129, 138, 67, 233, 129, 169, 67, 233, 129, 178, 67, 233, 129, 188, 67, 233, 130, 143, 67, 233, 130, 145, 67, 233, 130, 148, 67, 233, 131, 142, 67, 233, 131, 158, 67, 233, 131, 177, 67, 233, 131, 189, 67, 233, 132, 145, 67, 233, 132, 155, 67, 233, 133, 137, 67, 233, 133, 141, 67, 233, 133, 170, 67, 233, 134, 153, 67, 233, 134, 180, 67, 233, 135, 134, 67, 233, 135, 140, 67, 233, 135, 143, 67, 233, 135, 145, 67, 233, 136, 180, 67, 233, 136, 184, 67, 233, 137, 182, 67, 233, 137, 188, 67, 233, 139, 151, 67, 233, 139, 152, 67, 233, 140, 132, 67, 233, 141, 138, 67, 233, 143, 185, 67, 233, 144, 149, 67, 233, 149, 183, 67, 233, 150, 128, 67, 233, 150, 139, 67, 233, 150, 173, 67, 233, 150, 183, 67, 233, 152, 156, 67, 233, 152, 174, 67, 233, 153, 139, 67, 233, 153, 141, 67, 233, 153, 181, 67, 233, 153, 184, 67, 233, 153, 188, 67, 233, 154, 134, 67, 233, 154, 163, 67, 233, 154, 182, 67, 233, 154, 183, 67, 233, 154, 184, 67, 233, 154, 185, 67, 233, 155, 131, 67, 233, 155, 162, 67, 233, 155, 163, 67, 233, 155, 168, 67, 233, 155, 182, 67, 233, 155, 183, 67, 233, 156, 163, 67, 233, 156, 178, 67, 233, 157, 136, 67, 233, 157, 145, 67, 233, 157, 150, 67, 233, 157, 158, 67, 233, 157, 162, 67, 233, 157, 169, 67, 233, 159, 139, 67, 233, 159, 155, 67, 233, 159, 160, 67, 233, 159, 173, 67, 233, 159, 179, 67, 233, 159, 191, 67, 233, 160, 129, 67, 233, 160, 133, 67, 233, 160, 139, 67, 233, 160, 152, 67, 233, 160, 169, 67, 233, 160, 187, 67, 233, 161, 158, 67, 233, 162, 168, 67, 233, 163, 155, 67, 233, 163, 159, 67, 233, 163, 162, 67, 233, 163, 175, 67, 233, 163, 188, 67, 233, 164, 168, 67, 233, 164, 169, 67, 233, 166, 150, 67, 233, 166, 153, 67, 233, 166, 167, 67, 233, 166, 172, 67, 233, 167, 130, 67, 233, 167, 177, 67, 233, 167, 190, 67, 233, 169, 170, 67, 233, 170, 168, 67, 233, 171, 152, 67, 233, 171, 159, 67, 233, 172, 146, 67, 233, 172, 165, 67, 233, 172, 175, 67, 233, 172, 178, 67, 233, 172, 188, 67, 233, 173, 154, 67, 233, 173, 175, 67, 233, 177, 128, 67, 233, 177, 151, 67, 233, 179, 165, 67, 233, 179, 189, 67, 233, 181, 167, 67, 233, 182, 180, 67, 233, 183, 186, 67, 233, 184, 158, 67, 233, 185, 181, 67, 233, 185, 191, 67, 233, 186, 151, 67, 233, 186, 159, 67, 233, 186, 165, 67, 233, 186, 187, 67, 233, 187, 131, 67, 233, 187, 141, 67, 233, 187, 142, 67, 233, 187, 145, 67, 233, 187, 185, 67, 233, 187, 189, 67, 233, 187, 190, 67, 233, 188, 133, 67, 233, 188, 142, 67, 233, 188, 143, 67, 233, 188, 147, 67, 233, 188, 150, 67, 233, 188, 160, 67, 233, 188, 187, 67, 233, 189, 131, 67, 233, 189, 138, 67, 233, 189, 146, 67, 233, 190, 141, 67, 233, 190, 142, 67, 233, 190, 156, 67, 233, 190, 159, 67, 233, 190, 160, 67, 234, 156, 167, 67, 234, 157, 175, 67, 234, 172, 183, 67, 234, 173, 146, 68, 240, 160, 132, 162, 68, 240, 160, 148, 156, 68, 240, 160, 148, 165, 68, 240, 160, 149, 139, 68, 240, 160, 152, 186, 68, 240, 160, 160, 132, 68, 240, 160, 163, 158, 68, 240, 160, 168, 172, 68, 240, 160, 173, 163, 68, 240, 161, 147, 164, 68, 240, 161, 154, 168, 68, 240, 161, 155, 170, 68, 240, 161, 167, 136, 68, 240, 161, 172, 152, 68, 240, 161, 180, 139, 68, 240, 161, 183, 164, 68, 240, 161, 183, 166, 68, 240, 162, 134, 131, 68, 240, 162, 134, 159, 68, 240, 162, 140, 177, 68, 240, 162, 155, 148, 68, 240, 162, 161, 132, 68, 240, 162, 161, 138, 68, 240, 162, 172, 140, 68, 240, 162, 175, 177, 68, 240, 163, 128, 138, 68, 240, 163, 138, 184, 68, 240, 163, 141, 159, 68, 240, 163, 142, 147, 68, 240, 163, 142, 156, 68, 240, 163, 143, 131, 68, 240, 163, 143, 149, 68, 240, 163, 145, 173, 68, 240, 163, 154, 163, 68, 240, 163, 162, 167, 68, 240, 163, 170, 141, 68, 240, 163, 171, 186, 68, 240, 163, 178, 188, 68, 240, 163, 180, 158, 68, 240, 163, 187, 145, 68, 240, 163, 189, 158, 68, 240, 163, 190, 142, 68, 240, 164, 137, 163, 68, 240, 164, 139, 174, 68, 240, 164, 142, 171, 68, 240, 164, 152, 136, 68, 240, 164, 156, 181, 68, 240, 164, 160, 148, 68, 240, 164, 176, 182, 68, 240, 164, 178, 146, 68, 240, 164, 190, 161, 68, 240, 164, 190, 184, 68, 240, 165, 129, 132, 68, 240, 165, 131, 178, 68, 240, 165, 131, 179, 68, 240, 165, 132, 153, 68, 240, 165, 132, 179, 68, 240, 165, 137, 137, 68, 240, 165, 144, 157, 68, 240, 165, 152, 166, 68, 240, 165, 154, 154, 68, 240, 165, 155, 133, 68, 240, 165, 165, 188, 68, 240, 165, 170, 167, 68, 240, 165, 174, 171, 68, 240, 165, 178, 128, 68, 240, 165, 179, 144, 68, 240, 165, 190, 134, 68, 240, 166, 135, 154, 68, 240, 166, 136, 168, 68, 240, 166, 137, 135, 68, 240, 166, 139, 153, 68, 240, 166, 140, 190, 68, 240, 166, 147, 154, 68, 240, 166, 148, 163, 68, 240, 166, 150, 168, 68, 240, 166, 158, 167, 68, 240, 166, 158, 181, 68, 240, 166, 172, 188, 68, 240, 166, 176, 182, 68, 240, 166, 179, 149, 68, 240, 166, 181, 171, 68, 240, 166, 188, 172, 68, 240, 166, 190, 177, 68, 240, 167, 131, 146, 68, 240, 167, 143, 138, 68, 240, 167, 153, 167, 68, 240, 167, 162, 174, 68, 240, 167, 165, 166, 68, 240, 167, 178, 168, 68, 240, 167, 187, 147, 68, 240, 167, 188, 175, 68, 240, 168, 151, 146, 68, 240, 168, 151, 173, 68, 240, 168, 156, 174, 68, 240, 168, 175, 186, 68, 240, 168, 181, 183, 68, 240, 169, 133, 133, 68, 240, 169, 135, 159, 68, 240, 169, 136, 154, 68, 240, 169, 144, 138, 68, 240, 169, 146, 150, 68, 240, 169, 150, 182, 68, 240, 169, 172, 176, 68, 240, 170, 131, 142, 68, 240, 170, 132, 133, 68, 240, 170, 136, 142, 68, 240, 170, 138, 145, 68, 240, 170, 142, 146, 68, 240, 170, 152, 128, 66, 33, 33, 66, 33, 63, 66, 46, 46, 66, 48, 44, 66, 48, 46, 66, 49, 44, 66, 49, 46, 66, 49, 48, 66, 49, 49, 66, 49, 50, 66, 49, 51, 66, 49, 52, 66, 49, 53, 66, 49, 54, 66, 49, 55, 66, 49, 56, 66, 49, 57, 66, 50, 44, 66, 50, 46, 66, 50, 48, 66, 50, 49, 66, 50, 50, 66, 50, 51, 66, 50, 52, 66, 50, 53, 66, 50, 54, 66, 50, 55, 66, 50, 56, 66, 50, 57, 66, 51, 44, 66, 51, 46, 66, 51, 48, 66, 51, 49, 66, 51, 50, 66, 51, 51, 66, 51, 52, 66, 51, 53, 66, 51, 54, 66, 51, 55, 66, 51, 56, 66, 51, 57, 66, 52, 44, 66, 52, 46, 66, 52, 48, 66, 52, 49, 66, 52, 50, 66, 52, 51, 66, 52, 52, 66, 52, 53, 66, 52, 54, 66, 52, 55, 66, 52, 56, 66, 52, 57, 66, 53, 44, 66, 53, 46, 66, 53, 48, 66, 54, 44, 66, 54, 46, 66, 55, 44, 66, 55, 46, 66, 56, 44, 66, 56, 46, 66, 57, 44, 66, 57, 46, 66, 61, 61, 66, 63, 33, 66, 63, 63, 66, 65, 85, 66, 66, 113, 66, 67, 68, 66, 68, 74, 66, 68, 90, 66, 68, 122, 66, 71, 66, 66, 71, 121, 66, 72, 80, 66, 72, 86, 66, 72, 103, 66, 72, 122, 66, 73, 73, 66, 73, 74, 66, 73, 85, 66, 73, 86, 66, 73, 88, 66, 75, 66, 66, 75, 75, 66, 75, 77, 66, 76, 74, 66, 76, 106, 66, 77, 66, 66, 77, 67, 66, 77, 68, 66, 77, 86, 66, 77, 87, 66, 78, 74, 66, 78, 106, 66, 78, 111, 66, 80, 72, 66, 80, 82, 66, 80, 97, 66, 82, 115, 66, 83, 68, 66, 83, 77, 66, 83, 83, 66, 83, 118, 66, 84, 77, 66, 86, 73, 66, 87, 67, 66, 87, 90, 66, 87, 98, 66, 88, 73, 66, 99, 99, 66, 99, 100, 66, 99, 109, 66, 100, 66, 66, 100, 97, 66, 100, 108, 66, 100, 109, 66, 100, 122, 66, 101, 86, 66, 102, 102, 66, 102, 105, 66, 102, 108, 66, 102, 109, 66, 104, 97, 66, 105, 105, 66, 105, 106, 66, 105, 110, 66, 105, 118, 66, 105, 120, 66, 107, 65, 66, 107, 86, 66, 107, 87, 66, 107, 103, 66, 107, 108, 66, 107, 109, 66, 107, 116, 66, 108, 106, 66, 108, 109, 66, 108, 110, 66, 108, 120, 66, 109, 50, 66, 109, 51, 66, 109, 65, 66, 109, 86, 66, 109, 87, 66, 109, 98, 66, 109, 103, 66, 109, 108, 66, 109, 109, 66, 109, 115, 66, 110, 65, 66, 110, 70, 66, 110, 86, 66, 110, 87, 66, 110, 106, 66, 110, 109, 66, 110, 115, 66, 111, 86, 66, 112, 65, 66, 112, 70, 66, 112, 86, 66, 112, 87, 66, 112, 99, 66, 112, 115, 66, 115, 114, 66, 115, 116, 66, 118, 105, 66, 120, 105, 67, 40, 49, 41, 67, 40, 50, 41, 67, 40, 51, 41, 67, 40, 52, 41, 67, 40, 53, 41, 67, 40, 54, 41, 67, 40, 55, 41, 67, 40, 56, 41, 67, 40, 57, 41, 67, 40, 65, 41, 67, 40, 66, 41, 67, 40, 67, 41, 67, 40, 68, 41, 67, 40, 69, 41, 67, 40, 70, 41, 67, 40, 71, 41, 67, 40, 72, 41, 67, 40, 73, 41, 67, 40, 74, 41, 67, 40, 75, 41, 67, 40, 76, 41, 67, 40, 77, 41, 67, 40, 78, 41, 67, 40, 79, 41, 67, 40, 80, 41, 67, 40, 81, 41, 67, 40, 82, 41, 67, 40, 83, 41, 67, 40, 84, 41, 67, 40, 85, 41, 67, 40, 86, 41, 67, 40, 87, 41, 67, 40, 88, 41, 67, 40, 89, 41, 67, 40, 90, 41, 67, 40, 97, 41, 67, 40, 98, 41, 67, 40, 99, 41, 67, 40, 100, 41, 67, 40, 101, 41, 67, 40, 102, 41, 67, 40, 103, 41, 67, 40, 104, 41, 67, 40, 105, 41, 67, 40, 106, 41, 67, 40, 107, 41, 67, 40, 108, 41, 67, 40, 109, 41, 67, 40, 110, 41, 67, 40, 111, 41, 67, 40, 112, 41, 67, 40, 113, 41, 67, 40, 114, 41, 67, 40, 115, 41, 67, 40, 116, 41, 67, 40, 117, 41, 67, 40, 118, 41, 67, 40, 119, 41, 67, 40, 120, 41, 67, 40, 121, 41, 67, 40, 122, 41, 67, 46, 46, 46, 67, 49, 48, 46, 67, 49, 49, 46, 67, 49, 50, 46, 67, 49, 51, 46, 67, 49, 52, 46, 67, 49, 53, 46, 67, 49, 54, 46, 67, 49, 55, 46, 67, 49, 56, 46, 67, 49, 57, 46, 67, 50, 48, 46, 67, 58, 58, 61, 67, 61, 61, 61, 67, 67, 111, 46, 67, 70, 65, 88, 67, 71, 72, 122, 67, 71, 80, 97, 67, 73, 73, 73, 67, 76, 84, 68, 67, 76, 194, 183, 67, 77, 72, 122, 67, 77, 80, 97, 67, 77, 206, 169, 67, 80, 80, 77, 67, 80, 80, 86, 67, 80, 84, 69, 67, 84, 69, 76, 67, 84, 72, 122, 67, 86, 73, 73, 67, 88, 73, 73, 67, 97, 47, 99, 67, 97, 47, 115, 67, 97, 202, 190, 67, 98, 97, 114, 67, 99, 47, 111, 67, 99, 47, 117, 67, 99, 97, 108, 67, 99, 109, 50, 67, 99, 109, 51, 67, 100, 109, 50, 67, 100, 109, 51, 67, 101, 114, 103, 67, 102, 102, 105, 67, 102, 102, 108, 67, 103, 97, 108, 67, 104, 80, 97, 67, 105, 105, 105, 67, 107, 72, 122, 67, 107, 80, 97, 67, 107, 109, 50, 67, 107, 109, 51, 67, 107, 206, 169, 67, 108, 111, 103, 67, 108, 194, 183, 67, 109, 105, 108, 67, 109, 109, 50, 67, 109, 109, 51, 67, 109, 111, 108, 67, 114, 97, 100, 67, 118, 105, 105, 67, 120, 105, 105, 67, 194, 176, 67, 67, 194, 176, 70, 67, 202, 188, 110, 67, 206, 188, 65, 67, 206, 188, 70, 67, 206, 188, 86, 67, 206, 188, 87, 67, 206, 188, 103, 67, 206, 188, 108, 67, 206, 188, 109, 67, 206, 188, 115, 68, 40, 49, 48, 41, 68, 40, 49, 49, 41, 68, 40, 49, 50, 41, 68, 40, 49, 51, 41, 68, 40, 49, 52, 41, 68, 40, 49, 53, 41, 68, 40, 49, 54, 41, 68, 40, 49, 55, 41, 68, 40, 49, 56, 41, 68, 40, 49, 57, 41, 68, 40, 50, 48, 41, 68, 48, 231, 130, 185, 68, 49, 226, 129, 132, 68, 49, 230, 151, 165, 68, 49, 230, 156, 136, 68, 49, 231, 130, 185, 68, 50, 230, 151, 165, 68, 50, 230, 156, 136, 68, 50, 231, 130, 185, 68, 51, 230, 151, 165, 68, 51, 230, 156, 136, 68, 51, 231, 130, 185, 68, 52, 230, 151, 165, 68, 52, 230, 156, 136, 68, 52, 231, 130, 185, 68, 53, 230, 151, 165, 68, 53, 230, 156, 136, 68, 53, 231, 130, 185, 68, 54, 230, 151, 165, 68, 54, 230, 156, 136, 68, 54, 231, 130, 185, 68, 55, 230, 151, 165, 68, 55, 230, 156, 136, 68, 55, 231, 130, 185, 68, 56, 230, 151, 165, 68, 56, 230, 156, 136, 68, 56, 231, 130, 185, 68, 57, 230, 151, 165, 68, 57, 230, 156, 136, 68, 57, 231, 130, 185, 68, 86, 73, 73, 73, 68, 97, 46, 109, 46, 68, 107, 99, 97, 108, 68, 112, 46, 109, 46, 68, 118, 105, 105, 105, 68, 213, 165, 214, 130, 68, 213, 180, 213, 165, 68, 213, 180, 213, 171, 68, 213, 180, 213, 173, 68, 213, 180, 213, 182, 68, 213, 190, 213, 182, 68, 215, 144, 215, 156, 68, 216, 167, 217, 180, 68, 216, 168, 216, 172, 68, 216, 168, 216, 173, 68, 216, 168, 216, 174, 68, 216, 168, 216, 177, 68, 216, 168, 216, 178, 68, 216, 168, 217, 133, 68, 216, 168, 217, 134, 68, 216, 168, 217, 135, 68, 216, 168, 217, 137, 68, 216, 168, 217, 138, 68, 216, 170, 216, 172, 68, 216, 170, 216, 173, 68, 216, 170, 216, 174, 68, 216, 170, 216, 177, 68, 216, 170, 216, 178, 68, 216, 170, 217, 133, 68, 216, 170, 217, 134, 68, 216, 170, 217, 135, 68, 216, 170, 217, 137, 68, 216, 170, 217, 138, 68, 216, 171, 216, 172, 68, 216, 171, 216, 177, 68, 216, 171, 216, 178, 68, 216, 171, 217, 133, 68, 216, 171, 217, 134, 68, 216, 171, 217, 135, 68, 216, 171, 217, 137, 68, 216, 171, 217, 138, 68, 216, 172, 216, 173, 68, 216, 172, 217, 133, 68, 216, 172, 217, 137, 68, 216, 172, 217, 138, 68, 216, 173, 216, 172, 68, 216, 173, 217, 133, 68, 216, 173, 217, 137, 68, 216, 173, 217, 138, 68, 216, 174, 216, 172, 68, 216, 174, 216, 173, 68, 216, 174, 217, 133, 68, 216, 174, 217, 137, 68, 216, 174, 217, 138, 68, 216, 179, 216, 172, 68, 216, 179, 216, 173, 68, 216, 179, 216, 174, 68, 216, 179, 216, 177, 68, 216, 179, 217, 133, 68, 216, 179, 217, 135, 68, 216, 179, 217, 137, 68, 216, 179, 217, 138, 68, 216, 180, 216, 172, 68, 216, 180, 216, 173, 68, 216, 180, 216, 174, 68, 216, 180, 216, 177, 68, 216, 180, 217, 133, 68, 216, 180, 217, 135, 68, 216, 180, 217, 137, 68, 216, 180, 217, 138, 68, 216, 181, 216, 173, 68, 216, 181, 216, 174, 68, 216, 181, 216, 177, 68, 216, 181, 217, 133, 68, 216, 181, 217, 137, 68, 216, 181, 217, 138, 68, 216, 182, 216, 172, 68, 216, 182, 216, 173, 68, 216, 182, 216, 174, 68, 216, 182, 216, 177, 68, 216, 182, 217, 133, 68, 216, 182, 217, 137, 68, 216, 182, 217, 138, 68, 216, 183, 216, 173, 68, 216, 183, 217, 133, 68, 216, 183, 217, 137, 68, 216, 183, 217, 138, 68, 216, 184, 217, 133, 68, 216, 185, 216, 172, 68, 216, 185, 217, 133, 68, 216, 185, 217, 137, 68, 216, 185, 217, 138, 68, 216, 186, 216, 172, 68, 216, 186, 217, 133, 68, 216, 186, 217, 137, 68, 216, 186, 217, 138, 68, 217, 129, 216, 172, 68, 217, 129, 216, 173, 68, 217, 129, 216, 174, 68, 217, 129, 217, 133, 68, 217, 129, 217, 137, 68, 217, 129, 217, 138, 68, 217, 130, 216, 173, 68, 217, 130, 217, 133, 68, 217, 130, 217, 137, 68, 217, 130, 217, 138, 68, 217, 131, 216, 167, 68, 217, 131, 216, 172, 68, 217, 131, 216, 173, 68, 217, 131, 216, 174, 68, 217, 131, 217, 132, 68, 217, 131, 217, 133, 68, 217, 131, 217, 137, 68, 217, 131, 217, 138, 68, 217, 132, 216, 167, 68, 217, 132, 216, 172, 68, 217, 132, 216, 173, 68, 217, 132, 216, 174, 68, 217, 132, 217, 133, 68, 217, 132, 217, 135, 68, 217, 132, 217, 137, 68, 217, 132, 217, 138, 68, 217, 133, 216, 167, 68, 217, 133, 216, 172, 68, 217, 133, 216, 173, 68, 217, 133, 216, 174, 68, 217, 133, 217, 133, 68, 217, 133, 217, 137, 68, 217, 133, 217, 138, 68, 217, 134, 216, 172, 68, 217, 134, 216, 173, 68, 217, 134, 216, 174, 68, 217, 134, 216, 177, 68, 217, 134, 216, 178, 68, 217, 134, 217, 133, 68, 217, 134, 217, 134, 68, 217, 134, 217, 135, 68, 217, 134, 217, 137, 68, 217, 134, 217, 138, 68, 217, 135, 216, 172, 68, 217, 135, 217, 133, 68, 217, 135, 217, 137, 68, 217, 135, 217, 138, 68, 217, 136, 217, 180, 68, 217, 138, 216, 172, 68, 217, 138, 216, 173, 68, 217, 138, 216, 174, 68, 217, 138, 216, 177, 68, 217, 138, 216, 178, 68, 217, 138, 217, 133, 68, 217, 138, 217, 134, 68, 217, 138, 217, 135, 68, 217, 138, 217, 137, 68, 217, 138, 217, 138, 68, 217, 138, 217, 180, 68, 219, 135, 217, 180, 69, 40, 225, 132, 128, 41, 69, 40, 225, 132, 130, 41, 69, 40, 225, 132, 131, 41, 69, 40, 225, 132, 133, 41, 69, 40, 225, 132, 134, 41, 69, 40, 225, 132, 135, 41, 69, 40, 225, 132, 137, 41, 69, 40, 225, 132, 139, 41, 69, 40, 225, 132, 140, 41, 69, 40, 225, 132, 142, 41, 69, 40, 225, 132, 143, 41, 69, 40, 225, 132, 144, 41, 69, 40, 225, 132, 145, 41, 69, 40, 225, 132, 146, 41, 69, 40, 228, 184, 128, 41, 69, 40, 228, 184, 131, 41, 69, 40, 228, 184, 137, 41, 69, 40, 228, 185, 157, 41, 69, 40, 228, 186, 140, 41, 69, 40, 228, 186, 148, 41, 69, 40, 228, 187, 163, 41, 69, 40, 228, 188, 129, 41, 69, 40, 228, 188, 145, 41, 69, 40, 229, 133, 171, 41, 69, 40, 229, 133, 173, 41, 69, 40, 229, 138, 180, 41, 69, 40, 229, 141, 129, 41, 69, 40, 229, 141, 148, 41, 69, 40, 229, 144, 141, 41, 69, 40, 229, 145, 188, 41, 69, 40, 229, 155, 155, 41, 69, 40, 229, 156, 159, 41, 69, 40, 229, 173, 166, 41, 69, 40, 230, 151, 165, 41, 69, 40, 230, 156, 136, 41, 69, 40, 230, 156, 137, 41, 69, 40, 230, 156, 168, 41, 69, 40, 230, 160, 170, 41, 69, 40, 230, 176, 180, 41, 69, 40, 231, 129, 171, 41, 69, 40, 231, 137, 185, 41, 69, 40, 231, 155, 163, 41, 69, 40, 231, 164, 190, 41, 69, 40, 231, 165, 157, 41, 69, 40, 231, 165, 173, 41, 69, 40, 232, 135, 170, 41, 69, 40, 232, 135, 179, 41, 69, 40, 232, 178, 161, 41, 69, 40, 232, 179, 135, 41, 69, 40, 233, 135, 145, 41, 69, 48, 226, 129, 132, 51, 69, 49, 48, 230, 151, 165, 69, 49, 48, 230, 156, 136, 69, 49, 48, 231, 130, 185, 69, 49, 49, 230, 151, 165, 69, 49, 49, 230, 156, 136, 69, 49, 49, 231, 130, 185, 69, 49, 50, 230, 151, 165, 69, 49, 50, 230, 156, 136, 69, 49, 50, 231, 130, 185, 69, 49, 51, 230, 151, 165, 69, 49, 51, 231, 130, 185, 69, 49, 52, 230, 151, 165, 69, 49, 52, 231, 130, 185, 69, 49, 53, 230, 151, 165, 69, 49, 53, 231, 130, 185, 69, 49, 54, 230, 151, 165, 69, 49, 54, 231, 130, 185, 69, 49, 55, 230, 151, 165, 69, 49, 55, 231, 130, 185, 69, 49, 56, 230, 151, 165, 69, 49, 56, 231, 130, 185, 69, 49, 57, 230, 151, 165, 69, 49, 57, 231, 130, 185, 69, 49, 226, 129, 132, 50, 69, 49, 226, 129, 132, 51, 69, 49, 226, 129, 132, 52, 69, 49, 226, 129, 132, 53, 69, 49, 226, 129, 132, 54, 69, 49, 226, 129, 132, 55, 69, 49, 226, 129, 132, 56, 69, 49, 226, 129, 132, 57, 69, 50, 48, 230, 151, 165, 69, 50, 48, 231, 130, 185, 69, 50, 49, 230, 151, 165, 69, 50, 49, 231, 130, 185, 69, 50, 50, 230, 151, 165, 69, 50, 50, 231, 130, 185, 69, 50, 51, 230, 151, 165, 69, 50, 51, 231, 130, 185, 69, 50, 52, 230, 151, 165, 69, 50, 52, 231, 130, 185, 69, 50, 53, 230, 151, 165, 69, 50, 54, 230, 151, 165, 69, 50, 55, 230, 151, 165, 69, 50, 56, 230, 151, 165, 69, 50, 57, 230, 151, 165, 69, 50, 226, 129, 132, 51, 69, 50, 226, 129, 132, 53, 69, 51, 48, 230, 151, 165, 69, 51, 49, 230, 151, 165, 69, 51, 226, 129, 132, 52, 69, 51, 226, 129, 132, 53, 69, 51, 226, 129, 132, 56, 69, 52, 226, 129, 132, 53, 69, 53, 226, 129, 132, 54, 69, 53, 226, 129, 132, 56, 69, 55, 226, 129, 132, 56, 69, 65, 226, 136, 149, 109, 69, 86, 226, 136, 149, 109, 69, 109, 226, 136, 149, 115, 70, 49, 226, 129, 132, 49, 48, 70, 67, 226, 136, 149, 107, 103, 70, 109, 226, 136, 149, 115, 50, 70, 216, 168, 216, 173, 217, 138, 70, 216, 168, 216, 174, 217, 138, 70, 216, 170, 216, 172, 217, 133, 70, 216, 170, 216, 172, 217, 137, 70, 216, 170, 216, 172, 217, 138, 70, 216, 170, 216, 173, 216, 172, 70, 216, 170, 216, 173, 217, 133, 70, 216, 170, 216, 174, 217, 133, 70, 216, 170, 216, 174, 217, 137, 70, 216, 170, 216, 174, 217, 138, 70, 216, 170, 217, 133, 216, 172, 70, 216, 170, 217, 133, 216, 173, 70, 216, 170, 217, 133, 216, 174, 70, 216, 170, 217, 133, 217, 137, 70, 216, 170, 217, 133, 217, 138, 70, 216, 172, 216, 173, 217, 137, 70, 216, 172, 216, 173, 217, 138, 70, 216, 172, 217, 133, 216, 173, 70, 216, 172, 217, 133, 217, 137, 70, 216, 172, 217, 133, 217, 138, 70, 216, 173, 216, 172, 217, 138, 70, 216, 173, 217, 133, 217, 137, 70, 216, 173, 217, 133, 217, 138, 70, 216, 179, 216, 172, 216, 173, 70, 216, 179, 216, 172, 217, 137, 70, 216, 179, 216, 173, 216, 172, 70, 216, 179, 216, 174, 217, 137, 70, 216, 179, 216, 174, 217, 138, 70, 216, 179, 217, 133, 216, 172, 70, 216, 179, 217, 133, 216, 173, 70, 216, 179, 217, 133, 217, 133, 70, 216, 180, 216, 172, 217, 138, 70, 216, 180, 216, 173, 217, 133, 70, 216, 180, 216, 173, 217, 138, 70, 216, 180, 217, 133, 216, 174, 70, 216, 180, 217, 133, 217, 133, 70, 216, 181, 216, 173, 216, 173, 70, 216, 181, 216, 173, 217, 138, 70, 216, 181, 217, 132, 217, 137, 70, 216, 181, 217, 132, 219, 146, 70, 216, 181, 217, 133, 217, 133, 70, 216, 182, 216, 173, 217, 137, 70, 216, 182, 216, 173, 217, 138, 70, 216, 182, 216, 174, 217, 133, 70, 216, 183, 217, 133, 216, 173, 70, 216, 183, 217, 133, 217, 133, 70, 216, 183, 217, 133, 217, 138, 70, 216, 185, 216, 172, 217, 133, 70, 216, 185, 217, 133, 217, 133, 70, 216, 185, 217, 133, 217, 137, 70, 216, 185, 217, 133, 217, 138, 70, 216, 186, 217, 133, 217, 133, 70, 216, 186, 217, 133, 217, 137, 70, 216, 186, 217, 133, 217, 138, 70, 217, 129, 216, 174, 217, 133, 70, 217, 129, 217, 133, 217, 138, 70, 217, 130, 217, 132, 219, 146, 70, 217, 130, 217, 133, 216, 173, 70, 217, 130, 217, 133, 217, 133, 70, 217, 130, 217, 133, 217, 138, 70, 217, 131, 217, 133, 217, 133, 70, 217, 131, 217, 133, 217, 138, 70, 217, 132, 216, 172, 216, 172, 70, 217, 132, 216, 172, 217, 133, 70, 217, 132, 216, 172, 217, 138, 70, 217, 132, 216, 173, 217, 133, 70, 217, 132, 216, 173, 217, 137, 70, 217, 132, 216, 173, 217, 138, 70, 217, 132, 216, 174, 217, 133, 70, 217, 132, 217, 133, 216, 173, 70, 217, 132, 217, 133, 217, 138, 70, 217, 133, 216, 172, 216, 173, 70, 217, 133, 216, 172, 216, 174, 70, 217, 133, 216, 172, 217, 133, 70, 217, 133, 216, 172, 217, 138, 70, 217, 133, 216, 173, 216, 172, 70, 217, 133, 216, 173, 217, 133, 70, 217, 133, 216, 173, 217, 138, 70, 217, 133, 216, 174, 216, 172, 70, 217, 133, 216, 174, 217, 133, 70, 217, 133, 216, 174, 217, 138, 70, 217, 133, 217, 133, 217, 138, 70, 217, 134, 216, 172, 216, 173, 70, 217, 134, 216, 172, 217, 133, 70, 217, 134, 216, 172, 217, 137, 70, 217, 134, 216, 172, 217, 138, 70, 217, 134, 216, 173, 217, 133, 70, 217, 134, 216, 173, 217, 137, 70, 217, 134, 216, 173, 217, 138, 70, 217, 134, 217, 133, 217, 137, 70, 217, 134, 217, 133, 217, 138, 70, 217, 135, 217, 133, 216, 172, 70, 217, 135, 217, 133, 217, 133, 70, 217, 138, 216, 172, 217, 138, 70, 217, 138, 216, 173, 217, 138, 70, 217, 138, 217, 133, 217, 133, 70, 217, 138, 217, 133, 217, 138, 70, 217, 138, 217, 148, 216, 167, 70, 217, 138, 217, 148, 216, 172, 70, 217, 138, 217, 148, 216, 173, 70, 217, 138, 217, 148, 216, 174, 70, 217, 138, 217, 148, 216, 177, 70, 217, 138, 217, 148, 216, 178, 70, 217, 138, 217, 148, 217, 133, 70, 217, 138, 217, 148, 217, 134, 70, 217, 138, 217, 148, 217, 135, 70, 217, 138, 217, 148, 217, 136, 70, 217, 138, 217, 148, 217, 137, 70, 217, 138, 217, 148, 217, 138, 70, 217, 138, 217, 148, 219, 134, 70, 217, 138, 217, 148, 219, 135, 70, 217, 138, 217, 148, 219, 136, 70, 217, 138, 217, 148, 219, 144, 70, 217, 138, 217, 148, 219, 149, 70, 224, 185, 141, 224, 184, 178, 70, 224, 186, 171, 224, 186, 153, 70, 224, 186, 171, 224, 186, 161, 70, 224, 187, 141, 224, 186, 178, 70, 224, 189, 128, 224, 190, 181, 70, 224, 189, 130, 224, 190, 183, 70, 224, 189, 140, 224, 190, 183, 70, 224, 189, 145, 224, 190, 183, 70, 224, 189, 150, 224, 190, 183, 70, 224, 189, 155, 224, 190, 183, 70, 224, 190, 144, 224, 190, 181, 70, 224, 190, 146, 224, 190, 183, 70, 224, 190, 156, 224, 190, 183, 70, 224, 190, 161, 224, 190, 183, 70, 224, 190, 166, 224, 190, 183, 70, 224, 190, 171, 224, 190, 183, 70, 226, 128, 178, 226, 128, 178, 70, 226, 128, 181, 226, 128, 181, 70, 226, 136, 171, 226, 136, 171, 70, 226, 136, 174, 226, 136, 174, 70, 227, 129, 187, 227, 129, 139, 70, 227, 130, 136, 227, 130, 138, 70, 227, 130, 173, 227, 131, 173, 70, 227, 130, 179, 227, 130, 179, 70, 227, 130, 179, 227, 131, 136, 70, 227, 131, 136, 227, 131, 179, 70, 227, 131, 138, 227, 131, 142, 70, 227, 131, 155, 227, 131, 179, 70, 227, 131, 159, 227, 131, 170, 70, 227, 131, 170, 227, 131, 169, 70, 227, 131, 172, 227, 131, 160, 70, 229, 164, 167, 230, 173, 163, 70, 229, 185, 179, 230, 136, 144, 70, 230, 152, 142, 230, 178, 187, 70, 230, 152, 173, 229, 146, 140, 71, 114, 97, 100, 226, 136, 149, 115, 71, 227, 128, 148, 83, 227, 128, 149, 72, 40, 225, 132, 128, 225, 133, 161, 41, 72, 40, 225, 132, 130, 225, 133, 161, 41, 72, 40, 225, 132, 131, 225, 133, 161, 41, 72, 40, 225, 132, 133, 225, 133, 161, 41, 72, 40, 225, 132, 134, 225, 133, 161, 41, 72, 40, 225, 132, 135, 225, 133, 161, 41, 72, 40, 225, 132, 137, 225, 133, 161, 41, 72, 40, 225, 132, 139, 225, 133, 161, 41, 72, 40, 225, 132, 140, 225, 133, 161, 41, 72, 40, 225, 132, 140, 225, 133, 174, 41, 72, 40, 225, 132, 142, 225, 133, 161, 41, 72, 40, 225, 132, 143, 225, 133, 161, 41, 72, 40, 225, 132, 144, 225, 133, 161, 41, 72, 40, 225, 132, 145, 225, 133, 161, 41, 72, 40, 225, 132, 146, 225, 133, 161, 41, 72, 114, 97, 100, 226, 136, 149, 115, 50, 72, 216, 167, 217, 131, 216, 168, 216, 177, 72, 216, 167, 217, 132, 217, 132, 217, 135, 72, 216, 177, 216, 179, 217, 136, 217, 132, 72, 216, 177, 219, 140, 216, 167, 217, 132, 72, 216, 181, 217, 132, 216, 185, 217, 133, 72, 216, 185, 217, 132, 217, 138, 217, 135, 72, 217, 133, 216, 173, 217, 133, 216, 175, 72, 217, 136, 216, 179, 217, 132, 217, 133, 73, 226, 128, 178, 226, 128, 178, 226, 128, 178, 73, 226, 128, 181, 226, 128, 181, 226, 128, 181, 73, 226, 136, 171, 226, 136, 171, 226, 136, 171, 73, 226, 136, 174, 226, 136, 174, 226, 136, 174, 73, 227, 128, 148, 228, 184, 137, 227, 128, 149, 73, 227, 128, 148, 228, 186, 140, 227, 128, 149, 73, 227, 128, 148, 229, 139, 157, 227, 128, 149, 73, 227, 128, 148, 229, 174, 137, 227, 128, 149, 73, 227, 128, 148, 230, 137, 147, 227, 128, 149, 73, 227, 128, 148, 230, 149, 151, 227, 128, 149, 73, 227, 128, 148, 230, 156, 172, 227, 128, 149, 73, 227, 128, 148, 231, 130, 185, 227, 128, 149, 73, 227, 128, 148, 231, 155, 151, 227, 128, 149, 73, 227, 130, 162, 227, 131, 188, 227, 131, 171, 73, 227, 130, 164, 227, 131, 179, 227, 131, 129, 73, 227, 130, 166, 227, 130, 169, 227, 131, 179, 73, 227, 130, 170, 227, 131, 179, 227, 130, 185, 73, 227, 130, 170, 227, 131, 188, 227, 131, 160, 73, 227, 130, 171, 227, 130, 164, 227, 131, 170, 73, 227, 130, 177, 227, 131, 188, 227, 130, 185, 73, 227, 130, 179, 227, 131, 171, 227, 131, 138, 73, 227, 130, 187, 227, 131, 179, 227, 131, 129, 73, 227, 130, 187, 227, 131, 179, 227, 131, 136, 73, 227, 131, 134, 227, 130, 153, 227, 130, 183, 73, 227, 131, 136, 227, 130, 153, 227, 131, 171, 73, 227, 131, 142, 227, 131, 131, 227, 131, 136, 73, 227, 131, 143, 227, 130, 164, 227, 131, 132, 73, 227, 131, 146, 227, 130, 153, 227, 131, 171, 73, 227, 131, 146, 227, 130, 154, 227, 130, 179, 73, 227, 131, 149, 227, 131, 169, 227, 131, 179, 73, 227, 131, 152, 227, 130, 154, 227, 130, 189, 73, 227, 131, 152, 227, 131, 171, 227, 131, 132, 73, 227, 131, 155, 227, 131, 188, 227, 131, 171, 73, 227, 131, 155, 227, 131, 188, 227, 131, 179, 73, 227, 131, 158, 227, 130, 164, 227, 131, 171, 73, 227, 131, 158, 227, 131, 131, 227, 131, 143, 73, 227, 131, 158, 227, 131, 171, 227, 130, 175, 73, 227, 131, 164, 227, 131, 188, 227, 131, 171, 73, 227, 131, 166, 227, 130, 162, 227, 131, 179, 73, 227, 131, 175, 227, 131, 131, 227, 131, 136, 76, 226, 128, 178, 226, 128, 178, 226, 128, 178, 226, 128, 178, 76, 226, 136, 171, 226, 136, 171, 226, 136, 171, 226, 136, 171, 76, 227, 130, 162, 227, 131, 171, 227, 131, 149, 227, 130, 161, 76, 227, 130, 168, 227, 131, 188, 227, 130, 171, 227, 131, 188, 76, 227, 130, 171, 227, 130, 153, 227, 131, 173, 227, 131, 179, 76, 227, 130, 171, 227, 130, 153, 227, 131, 179, 227, 131, 158, 76, 227, 130, 171, 227, 131, 169, 227, 131, 131, 227, 131, 136, 76, 227, 130, 171, 227, 131, 173, 227, 131, 170, 227, 131, 188, 76, 227, 130, 173, 227, 130, 153, 227, 131, 139, 227, 131, 188, 76, 227, 130, 173, 227, 131, 165, 227, 131, 170, 227, 131, 188, 76, 227, 130, 175, 227, 130, 153, 227, 131, 169, 227, 131, 160, 76, 227, 130, 175, 227, 131, 173, 227, 131, 188, 227, 131, 141, 76, 227, 130, 181, 227, 130, 164, 227, 130, 175, 227, 131, 171, 76, 227, 130, 191, 227, 130, 153, 227, 131, 188, 227, 130, 185, 76, 227, 131, 143, 227, 130, 154, 227, 131, 188, 227, 131, 132, 76, 227, 131, 146, 227, 130, 154, 227, 130, 175, 227, 131, 171, 76, 227, 131, 149, 227, 130, 163, 227, 131, 188, 227, 131, 136, 76, 227, 131, 152, 227, 130, 153, 227, 131, 188, 227, 130, 191, 76, 227, 131, 152, 227, 130, 154, 227, 131, 139, 227, 131, 146, 76, 227, 131, 152, 227, 130, 154, 227, 131, 179, 227, 130, 185, 76, 227, 131, 155, 227, 130, 153, 227, 131, 171, 227, 131, 136, 76, 227, 131, 158, 227, 130, 164, 227, 130, 175, 227, 131, 173, 76, 227, 131, 159, 227, 130, 175, 227, 131, 173, 227, 131, 179, 76, 227, 131, 161, 227, 131, 188, 227, 131, 136, 227, 131, 171, 76, 227, 131, 170, 227, 131, 131, 227, 131, 136, 227, 131, 171, 76, 227, 131, 171, 227, 131, 146, 227, 130, 154, 227, 131, 188, 76, 230, 160, 170, 229, 188, 143, 228, 188, 154, 231, 164, 190, 78, 40, 225, 132, 139, 225, 133, 169, 225, 132, 146, 225, 133, 174, 41, 79, 216, 172, 217, 132, 32, 216, 172, 217, 132, 216, 167, 217, 132, 217, 135, 79, 227, 130, 162, 227, 131, 143, 227, 130, 154, 227, 131, 188, 227, 131, 136, 79, 227, 130, 162, 227, 131, 179, 227, 131, 152, 227, 130, 154, 227, 130, 162, 79, 227, 130, 173, 227, 131, 173, 227, 131, 175, 227, 131, 131, 227, 131, 136, 79, 227, 130, 181, 227, 131, 179, 227, 131, 129, 227, 131, 188, 227, 131, 160, 79, 227, 131, 143, 227, 130, 153, 227, 131, 188, 227, 131, 172, 227, 131, 171, 79, 227, 131, 152, 227, 130, 175, 227, 130, 191, 227, 131, 188, 227, 131, 171, 79, 227, 131, 155, 227, 130, 154, 227, 130, 164, 227, 131, 179, 227, 131, 136, 79, 227, 131, 158, 227, 131, 179, 227, 130, 183, 227, 131, 167, 227, 131, 179, 79, 227, 131, 161, 227, 130, 171, 227, 130, 153, 227, 131, 136, 227, 131, 179, 79, 227, 131, 171, 227, 131, 188, 227, 131, 149, 227, 130, 153, 227, 131, 171, 81, 40, 225, 132, 139, 225, 133, 169, 225, 132, 140, 225, 133, 165, 225, 134, 171, 41, 82, 227, 130, 173, 227, 130, 153, 227, 131, 171, 227, 130, 191, 227, 130, 153, 227, 131, 188, 82, 227, 130, 173, 227, 131, 173, 227, 130, 175, 227, 130, 153, 227, 131, 169, 227, 131, 160, 82, 227, 130, 173, 227, 131, 173, 227, 131, 161, 227, 131, 188, 227, 131, 136, 227, 131, 171, 82, 227, 130, 175, 227, 130, 153, 227, 131, 169, 227, 131, 160, 227, 131, 136, 227, 131, 179, 82, 227, 130, 175, 227, 131, 171, 227, 130, 187, 227, 130, 153, 227, 130, 164, 227, 131, 173, 82, 227, 131, 143, 227, 130, 154, 227, 131, 188, 227, 130, 187, 227, 131, 179, 227, 131, 136, 82, 227, 131, 146, 227, 130, 154, 227, 130, 162, 227, 130, 185, 227, 131, 136, 227, 131, 171, 82, 227, 131, 149, 227, 130, 153, 227, 131, 131, 227, 130, 183, 227, 130, 167, 227, 131, 171, 82, 227, 131, 159, 227, 131, 170, 227, 131, 143, 227, 130, 153, 227, 131, 188, 227, 131, 171, 82, 227, 131, 172, 227, 131, 179, 227, 131, 136, 227, 130, 177, 227, 130, 153, 227, 131, 179, 97, 216, 181, 217, 132, 217, 137, 32, 216, 167, 217, 132, 217, 132, 217, 135, 32, 216, 185, 217, 132, 217, 138, 217, 135, 32, 217, 136, 216, 179, 217, 132, 217, 133, 6, 224, 167, 135, 224, 166, 190, 1, 6, 224, 167, 135, 224, 167, 151, 1, 6, 224, 173, 135, 224, 172, 190, 1, 6, 224, 173, 135, 224, 173, 150, 1, 6, 224, 173, 135, 224, 173, 151, 1, 6, 224, 174, 146, 224, 175, 151, 1, 6, 224, 175, 134, 224, 174, 190, 1, 6, 224, 175, 134, 224, 175, 151, 1, 6, 224, 175, 135, 224, 174, 190, 1, 6, 224, 178, 191, 224, 179, 149, 1, 6, 224, 179, 134, 224, 179, 149, 1, 6, 224, 179, 134, 224, 179, 150, 1, 6, 224, 181, 134, 224, 180, 190, 1, 6, 224, 181, 134, 224, 181, 151, 1, 6, 224, 181, 135, 224, 180, 190, 1, 6, 224, 183, 153, 224, 183, 159, 1, 6, 225, 128, 165, 225, 128, 174, 1, 6, 225, 172, 133, 225, 172, 181, 1, 6, 225, 172, 135, 225, 172, 181, 1, 6, 225, 172, 137, 225, 172, 181, 1, 6, 225, 172, 139, 225, 172, 181, 1, 6, 225, 172, 141, 225, 172, 181, 1, 6, 225, 172, 145, 225, 172, 181, 1, 6, 225, 172, 186, 225, 172, 181, 1, 6, 225, 172, 188, 225, 172, 181, 1, 6, 225, 172, 190, 225, 172, 181, 1, 6, 225, 172, 191, 225, 172, 181, 1, 6, 225, 173, 130, 225, 172, 181, 1, 8, 240, 145, 132, 177, 240, 145, 132, 167, 1, 8, 240, 145, 132, 178, 240, 145, 132, 167, 1, 8, 240, 145, 141, 135, 240, 145, 140, 190, 1, 8, 240, 145, 141, 135, 240, 145, 141, 151, 1, 8, 240, 145, 146, 185, 240, 145, 146, 176, 1, 8, 240, 145, 146, 185, 240, 145, 146, 186, 1, 8, 240, 145, 146, 185, 240, 145, 146, 189, 1, 8, 240, 145, 150, 184, 240, 145, 150, 175, 1, 8, 240, 145, 150, 185, 240, 145, 150, 175, 1, 9, 224, 179, 134, 224, 179, 130, 224, 179, 149, 2, 9, 224, 183, 153, 224, 183, 143, 224, 183, 138, 18, 68, 68, 90, 204, 140, 201, 68, 68, 122, 204, 140, 201, 68, 100, 122, 204, 140, 201, 70, 217, 132, 216, 167, 217, 147, 201, 70, 217, 132, 216, 167, 217, 148, 201, 70, 217, 132, 216, 167, 217, 149, 181, 70, 225, 132, 128, 225, 133, 161, 1, 70, 225, 132, 130, 225, 133, 161, 1, 70, 225, 132, 131, 225, 133, 161, 1, 70, 225, 132, 133, 225, 133, 161, 1, 70, 225, 132, 134, 225, 133, 161, 1, 70, 225, 132, 135, 225, 133, 161, 1, 70, 225, 132, 137, 225, 133, 161, 1, 70, 225, 132, 139, 225, 133, 161, 1, 70, 225, 132, 139, 225, 133, 174, 1, 70, 225, 132, 140, 225, 133, 161, 1, 70, 225, 132, 142, 225, 133, 161, 1, 70, 225, 132, 143, 225, 133, 161, 1, 70, 225, 132, 144, 225, 133, 161, 1, 70, 225, 132, 145, 225, 133, 161, 1, 70, 225, 132, 146, 225, 133, 161, 1, 73, 227, 131, 161, 227, 130, 171, 227, 130, 153, 13, 76, 225, 132, 140, 225, 133, 174, 225, 132, 139, 225, 133, 180, 1, 76, 227, 130, 173, 227, 130, 153, 227, 130, 171, 227, 130, 153, 13, 76, 227, 130, 179, 227, 131, 188, 227, 131, 155, 227, 130, 154, 13, 76, 227, 131, 164, 227, 131, 188, 227, 131, 136, 227, 130, 153, 13, 79, 225, 132, 142, 225, 133, 161, 225, 134, 183, 225, 132, 128, 225, 133, 169, 1, 79, 227, 130, 164, 227, 131, 139, 227, 131, 179, 227, 130, 175, 227, 130, 153, 13, 79, 227, 130, 183, 227, 131, 170, 227, 131, 179, 227, 130, 175, 227, 130, 153, 13, 79, 227, 131, 152, 227, 130, 154, 227, 131, 188, 227, 130, 183, 227, 130, 153, 13, 79, 227, 131, 155, 227, 130, 154, 227, 131, 179, 227, 131, 136, 227, 130, 153, 13, 82, 227, 130, 168, 227, 130, 185, 227, 130, 175, 227, 131, 188, 227, 131, 136, 227, 130, 153, 13, 82, 227, 131, 149, 227, 130, 161, 227, 131, 169, 227, 131, 131, 227, 131, 136, 227, 130, 153, 13, 134, 224, 179, 134, 224, 179, 130, 1, 134, 224, 183, 153, 224, 183, 143, 1, 3, 60, 204, 184, 5, 3, 61, 204, 184, 5, 3, 62, 204, 184, 5, 3, 65, 204, 128, 201, 3, 65, 204, 129, 201, 3, 65, 204, 131, 201, 3, 65, 204, 132, 201, 3, 65, 204, 137, 201, 3, 65, 204, 140, 201, 3, 65, 204, 143, 201, 3, 65, 204, 145, 201, 3, 65, 204, 165, 181, 3, 65, 204, 168, 165, 3, 66, 204, 135, 201, 3, 66, 204, 163, 181, 3, 66, 204, 177, 181, 3, 67, 204, 129, 201, 3, 67, 204, 130, 201, 3, 67, 204, 135, 201, 3, 67, 204, 140, 201, 3, 68, 204, 135, 201, 3, 68, 204, 140, 201, 3, 68, 204, 163, 181, 3, 68, 204, 167, 165, 3, 68, 204, 173, 181, 3, 68, 204, 177, 181, 3, 69, 204, 128, 201, 3, 69, 204, 129, 201, 3, 69, 204, 131, 201, 3, 69, 204, 134, 201, 3, 69, 204, 135, 201, 3, 69, 204, 136, 201, 3, 69, 204, 137, 201, 3, 69, 204, 140, 201, 3, 69, 204, 143, 201, 3, 69, 204, 145, 201, 3, 69, 204, 168, 165, 3, 69, 204, 173, 181, 3, 69, 204, 176, 181, 3, 70, 204, 135, 201, 3, 71, 204, 129, 201, 3, 71, 204, 130, 201, 3, 71, 204, 132, 201, 3, 71, 204, 134, 201, 3, 71, 204, 135, 201, 3, 71, 204, 140, 201, 3, 71, 204, 167, 165, 3, 72, 204, 130, 201, 3, 72, 204, 135, 201, 3, 72, 204, 136, 201, 3, 72, 204, 140, 201, 3, 72, 204, 163, 181, 3, 72, 204, 167, 165, 3, 72, 204, 174, 181, 3, 73, 204, 128, 201, 3, 73, 204, 129, 201, 3, 73, 204, 130, 201, 3, 73, 204, 131, 201, 3, 73, 204, 132, 201, 3, 73, 204, 134, 201, 3, 73, 204, 135, 201, 3, 73, 204, 137, 201, 3, 73, 204, 140, 201, 3, 73, 204, 143, 201, 3, 73, 204, 145, 201, 3, 73, 204, 163, 181, 3, 73, 204, 168, 165, 3, 73, 204, 176, 181, 3, 74, 204, 130, 201, 3, 75, 204, 129, 201, 3, 75, 204, 140, 201, 3, 75, 204, 163, 181, 3, 75, 204, 167, 165, 3, 75, 204, 177, 181, 3, 76, 204, 129, 201, 3, 76, 204, 140, 201, 3, 76, 204, 167, 165, 3, 76, 204, 173, 181, 3, 76, 204, 177, 181, 3, 77, 204, 129, 201, 3, 77, 204, 135, 201, 3, 77, 204, 163, 181, 3, 78, 204, 128, 201, 3, 78, 204, 129, 201, 3, 78, 204, 131, 201, 3, 78, 204, 135, 201, 3, 78, 204, 140, 201, 3, 78, 204, 163, 181, 3, 78, 204, 167, 165, 3, 78, 204, 173, 181, 3, 78, 204, 177, 181, 3, 79, 204, 128, 201, 3, 79, 204, 129, 201, 3, 79, 204, 134, 201, 3, 79, 204, 137, 201, 3, 79, 204, 139, 201, 3, 79, 204, 140, 201, 3, 79, 204, 143, 201, 3, 79, 204, 145, 201, 3, 80, 204, 129, 201, 3, 80, 204, 135, 201, 3, 82, 204, 129, 201, 3, 82, 204, 135, 201, 3, 82, 204, 140, 201, 3, 82, 204, 143, 201, 3, 82, 204, 145, 201, 3, 82, 204, 167, 165, 3, 82, 204, 177, 181, 3, 83, 204, 130, 201, 3, 83, 204, 135, 201, 3, 83, 204, 166, 181, 3, 83, 204, 167, 165, 3, 84, 204, 135, 201, 3, 84, 204, 140, 201, 3, 84, 204, 163, 181, 3, 84, 204, 166, 181, 3, 84, 204, 167, 165, 3, 84, 204, 173, 181, 3, 84, 204, 177, 181, 3, 85, 204, 128, 201, 3, 85, 204, 129, 201, 3, 85, 204, 130, 201, 3, 85, 204, 134, 201, 3, 85, 204, 137, 201, 3, 85, 204, 138, 201, 3, 85, 204, 139, 201, 3, 85, 204, 140, 201, 3, 85, 204, 143, 201, 3, 85, 204, 145, 201, 3, 85, 204, 163, 181, 3, 85, 204, 164, 181, 3, 85, 204, 168, 165, 3, 85, 204, 173, 181, 3, 85, 204, 176, 181, 3, 86, 204, 131, 201, 3, 86, 204, 163, 181, 3, 87, 204, 128, 201, 3, 87, 204, 129, 201, 3, 87, 204, 130, 201, 3, 87, 204, 135, 201, 3, 87, 204, 136, 201, 3, 87, 204, 163, 181, 3, 88, 204, 135, 201, 3, 88, 204, 136, 201, 3, 89, 204, 128, 201, 3, 89, 204, 129, 201, 3, 89, 204, 130, 201, 3, 89, 204, 131, 201, 3, 89, 204, 132, 201, 3, 89, 204, 135, 201, 3, 89, 204, 136, 201, 3, 89, 204, 137, 201, 3, 89, 204, 163, 181, 3, 90, 204, 129, 201, 3, 90, 204, 130, 201, 3, 90, 204, 135, 201, 3, 90, 204, 140, 201, 3, 90, 204, 163, 181, 3, 90, 204, 177, 181, 3, 97, 204, 128, 201, 3, 97, 204, 129, 201, 3, 97, 204, 131, 201, 3, 97, 204, 132, 201, 3, 97, 204, 137, 201, 3, 97, 204, 140, 201, 3, 97, 204, 143, 201, 3, 97, 204, 145, 201, 3, 97, 204, 165, 181, 3, 97, 204, 168, 165, 3, 98, 204, 135, 201, 3, 98, 204, 163, 181, 3, 98, 204, 177, 181, 3, 99, 204, 129, 201, 3, 99, 204, 130, 201, 3, 99, 204, 135, 201, 3, 99, 204, 140, 201, 3, 100, 204, 135, 201, 3, 100, 204, 140, 201, 3, 100, 204, 163, 181, 3, 100, 204, 167, 165, 3, 100, 204, 173, 181, 3, 100, 204, 177, 181, 3, 101, 204, 128, 201, 3, 101, 204, 129, 201, 3, 101, 204, 131, 201, 3, 101, 204, 134, 201, 3, 101, 204, 135, 201, 3, 101, 204, 136, 201, 3, 101, 204, 137, 201, 3, 101, 204, 140, 201, 3, 101, 204, 143, 201, 3, 101, 204, 145, 201, 3, 101, 204, 168, 165, 3, 101, 204, 173, 181, 3, 101, 204, 176, 181, 3, 102, 204, 135, 201, 3, 103, 204, 129, 201, 3, 103, 204, 130, 201, 3, 103, 204, 132, 201, 3, 103, 204, 134, 201, 3, 103, 204, 135, 201, 3, 103, 204, 140, 201, 3, 103, 204, 167, 165, 3, 104, 204, 130, 201, 3, 104, 204, 135, 201, 3, 104, 204, 136, 201, 3, 104, 204, 140, 201, 3, 104, 204, 163, 181, 3, 104, 204, 167, 165, 3, 104, 204, 174, 181, 3, 104, 204, 177, 181, 3, 105, 204, 128, 201, 3, 105, 204, 129, 201, 3, 105, 204, 130, 201, 3, 105, 204, 131, 201, 3, 105, 204, 132, 201, 3, 105, 204, 134, 201, 3, 105, 204, 137, 201, 3, 105, 204, 140, 201, 3, 105, 204, 143, 201, 3, 105, 204, 145, 201, 3, 105, 204, 163, 181, 3, 105, 204, 168, 165, 3, 105, 204, 176, 181, 3, 106, 204, 130, 201, 3, 106, 204, 140, 201, 3, 107, 204, 129, 201, 3, 107, 204, 140, 201, 3, 107, 204, 163, 181, 3, 107, 204, 167, 165, 3, 107, 204, 177, 181, 3, 108, 204, 129, 201, 3, 108, 204, 140, 201, 3, 108, 204, 167, 165, 3, 108, 204, 173, 181, 3, 108, 204, 177, 181, 3, 109, 204, 129, 201, 3, 109, 204, 135, 201, 3, 109, 204, 163, 181, 3, 110, 204, 128, 201, 3, 110, 204, 129, 201, 3, 110, 204, 131, 201, 3, 110, 204, 135, 201, 3, 110, 204, 140, 201, 3, 110, 204, 163, 181, 3, 110, 204, 167, 165, 3, 110, 204, 173, 181, 3, 110, 204, 177, 181, 3, 111, 204, 128, 201, 3, 111, 204, 129, 201, 3, 111, 204, 134, 201, 3, 111, 204, 137, 201, 3, 111, 204, 139, 201, 3, 111, 204, 140, 201, 3, 111, 204, 143, 201, 3, 111, 204, 145, 201, 3, 112, 204, 129, 201, 3, 112, 204, 135, 201, 3, 114, 204, 129, 201, 3, 114, 204, 135, 201, 3, 114, 204, 140, 201, 3, 114, 204, 143, 201, 3, 114, 204, 145, 201, 3, 114, 204, 167, 165, 3, 114, 204, 177, 181, 3, 115, 204, 130, 201, 3, 115, 204, 135, 201, 3, 115, 204, 166, 181, 3, 115, 204, 167, 165, 3, 116, 204, 135, 201, 3, 116, 204, 136, 201, 3, 116, 204, 140, 201, 3, 116, 204, 163, 181, 3, 116, 204, 166, 181, 3, 116, 204, 167, 165, 3, 116, 204, 173, 181, 3, 116, 204, 177, 181, 3, 117, 204, 128, 201, 3, 117, 204, 129, 201, 3, 117, 204, 130, 201, 3, 117, 204, 134, 201, 3, 117, 204, 137, 201, 3, 117, 204, 138, 201, 3, 117, 204, 139, 201, 3, 117, 204, 140, 201, 3, 117, 204, 143, 201, 3, 117, 204, 145, 201, 3, 117, 204, 163, 181, 3, 117, 204, 164, 181, 3, 117, 204, 168, 165, 3, 117, 204, 173, 181, 3, 117, 204, 176, 181, 3, 118, 204, 131, 201, 3, 118, 204, 163, 181, 3, 119, 204, 128, 201, 3, 119, 204, 129, 201, 3, 119, 204, 130, 201, 3, 119, 204, 135, 201, 3, 119, 204, 136, 201, 3, 119, 204, 138, 201, 3, 119, 204, 163, 181, 3, 120, 204, 135, 201, 3, 120, 204, 136, 201, 3, 121, 204, 128, 201, 3, 121, 204, 129, 201, 3, 121, 204, 130, 201, 3, 121, 204, 131, 201, 3, 121, 204, 132, 201, 3, 121, 204, 135, 201, 3, 121, 204, 136, 201, 3, 121, 204, 137, 201, 3, 121, 204, 138, 201, 3, 121, 204, 163, 181, 3, 122, 204, 129, 201, 3, 122, 204, 130, 201, 3, 122, 204, 135, 201, 3, 122, 204, 140, 201, 3, 122, 204, 163, 181, 3, 122, 204, 177, 181, 4, 194, 168, 204, 128, 202, 4, 194, 168, 204, 129, 202, 4, 194, 168, 205, 130, 202, 4, 195, 134, 204, 129, 201, 4, 195, 134, 204, 132, 201, 4, 195, 152, 204, 129, 201, 4, 195, 166, 204, 129, 201, 4, 195, 166, 204, 132, 201, 4, 195, 184, 204, 129, 201, 4, 197, 191, 204, 135, 201, 4, 198, 183, 204, 140, 201, 4, 202, 146, 204, 140, 201, 4, 206, 145, 204, 128, 201, 4, 206, 145, 204, 129, 201, 4, 206, 145, 204, 132, 201, 4, 206, 145, 204, 134, 201, 4, 206, 145, 205, 133, 217, 4, 206, 149, 204, 128, 201, 4, 206, 149, 204, 129, 201, 4, 206, 151, 204, 128, 201, 4, 206, 151, 204, 129, 201, 4, 206, 151, 205, 133, 217, 4, 206, 153, 204, 128, 201, 4, 206, 153, 204, 129, 201, 4, 206, 153, 204, 132, 201, 4, 206, 153, 204, 134, 201, 4, 206, 153, 204, 136, 201, 4, 206, 159, 204, 128, 201, 4, 206, 159, 204, 129, 201, 4, 206, 161, 204, 148, 201, 4, 206, 165, 204, 128, 201, 4, 206, 165, 204, 129, 201, 4, 206, 165, 204, 132, 201, 4, 206, 165, 204, 134, 201, 4, 206, 165, 204, 136, 201, 4, 206, 169, 204, 128, 201, 4, 206, 169, 204, 129, 201, 4, 206, 169, 205, 133, 217, 4, 206, 177, 204, 132, 201, 4, 206, 177, 204, 134, 201, 4, 206, 177, 205, 133, 217, 4, 206, 181, 204, 128, 201, 4, 206, 181, 204, 129, 201, 4, 206, 183, 205, 133, 217, 4, 206, 185, 204, 128, 201, 4, 206, 185, 204, 129, 201, 4, 206, 185, 204, 132, 201, 4, 206, 185, 204, 134, 201, 4, 206, 185, 205, 130, 201, 4, 206, 191, 204, 128, 201, 4, 206, 191, 204, 129, 201, 4, 207, 129, 204, 147, 201, 4, 207, 129, 204, 148, 201, 4, 207, 133, 204, 128, 201, 4, 207, 133, 204, 129, 201, 4, 207, 133, 204, 132, 201, 4, 207, 133, 204, 134, 201, 4, 207, 133, 205, 130, 201, 4, 207, 137, 205, 133, 217, 4, 207, 146, 204, 129, 201, 4, 207, 146, 204, 136, 201, 4, 208, 134, 204, 136, 201, 4, 208, 144, 204, 134, 201, 4, 208, 144, 204, 136, 201, 4, 208, 147, 204, 129, 201, 4, 208, 149, 204, 128, 201, 4, 208, 149, 204, 134, 201, 4, 208, 149, 204, 136, 201, 4, 208, 150, 204, 134, 201, 4, 208, 150, 204, 136, 201, 4, 208, 151, 204, 136, 201, 4, 208, 152, 204, 128, 201, 4, 208, 152, 204, 132, 201, 4, 208, 152, 204, 134, 201, 4, 208, 152, 204, 136, 201, 4, 208, 154, 204, 129, 201, 4, 208, 158, 204, 136, 201, 4, 208, 163, 204, 132, 201, 4, 208, 163, 204, 134, 201, 4, 208, 163, 204, 136, 201, 4, 208, 163, 204, 139, 201, 4, 208, 167, 204, 136, 201, 4, 208, 171, 204, 136, 201, 4, 208, 173, 204, 136, 201, 4, 208, 176, 204, 134, 201, 4, 208, 176, 204, 136, 201, 4, 208, 179, 204, 129, 201, 4, 208, 181, 204, 128, 201, 4, 208, 181, 204, 134, 201, 4, 208, 181, 204, 136, 201, 4, 208, 182, 204, 134, 201, 4, 208, 182, 204, 136, 201, 4, 208, 183, 204, 136, 201, 4, 208, 184, 204, 128, 201, 4, 208, 184, 204, 132, 201, 4, 208, 184, 204, 134, 201, 4, 208, 184, 204, 136, 201, 4, 208, 186, 204, 129, 201, 4, 208, 190, 204, 136, 201, 4, 209, 131, 204, 132, 201, 4, 209, 131, 204, 134, 201, 4, 209, 131, 204, 136, 201, 4, 209, 131, 204, 139, 201, 4, 209, 135, 204, 136, 201, 4, 209, 139, 204, 136, 201, 4, 209, 141, 204, 136, 201, 4, 209, 150, 204, 136, 201, 4, 209, 180, 204, 143, 201, 4, 209, 181, 204, 143, 201, 4, 211, 152, 204, 136, 201, 4, 211, 153, 204, 136, 201, 4, 211, 168, 204, 136, 201, 4, 211, 169, 204, 136, 201, 4, 216, 167, 217, 147, 201, 4, 216, 167, 217, 148, 201, 4, 216, 167, 217, 149, 181, 4, 217, 136, 217, 148, 201, 4, 217, 138, 217, 148, 201, 4, 219, 129, 217, 148, 201, 4, 219, 146, 217, 148, 201, 4, 219, 149, 217, 148, 201, 5, 65, 204, 130, 204, 128, 202, 5, 65, 204, 130, 204, 129, 202, 5, 65, 204, 130, 204, 131, 202, 5, 65, 204, 130, 204, 137, 202, 5, 65, 204, 134, 204, 128, 202, 5, 65, 204, 134, 204, 129, 202, 5, 65, 204, 134, 204, 131, 202, 5, 65, 204, 134, 204, 137, 202, 5, 65, 204, 135, 204, 132, 202, 5, 65, 204, 136, 204, 132, 202, 5, 65, 204, 138, 204, 129, 202, 5, 65, 204, 163, 204, 130, 202, 5, 65, 204, 163, 204, 134, 202, 5, 67, 204, 167, 204, 129, 202, 5, 69, 204, 130, 204, 128, 202, 5, 69, 204, 130, 204, 129, 202, 5, 69, 204, 130, 204, 131, 202, 5, 69, 204, 130, 204, 137, 202, 5, 69, 204, 132, 204, 128, 202, 5, 69, 204, 132, 204, 129, 202, 5, 69, 204, 163, 204, 130, 202, 5, 69, 204, 167, 204, 134, 202, 5, 73, 204, 136, 204, 129, 202, 5, 76, 204, 163, 204, 132, 202, 5, 79, 204, 130, 204, 128, 202, 5, 79, 204, 130, 204, 129, 202, 5, 79, 204, 130, 204, 131, 202, 5, 79, 204, 130, 204, 137, 202, 5, 79, 204, 131, 204, 129, 202, 5, 79, 204, 131, 204, 132, 202, 5, 79, 204, 131, 204, 136, 202, 5, 79, 204, 132, 204, 128, 202, 5, 79, 204, 132, 204, 129, 202, 5, 79, 204, 135, 204, 132, 202, 5, 79, 204, 136, 204, 132, 202, 5, 79, 204, 155, 204, 128, 202, 5, 79, 204, 155, 204, 129, 202, 5, 79, 204, 155, 204, 131, 202, 5, 79, 204, 155, 204, 137, 202, 5, 79, 204, 155, 204, 163, 182, 5, 79, 204, 163, 204, 130, 202, 5, 79, 204, 168, 204, 132, 202, 5, 82, 204, 163, 204, 132, 202, 5, 83, 204, 129, 204, 135, 202, 5, 83, 204, 140, 204, 135, 202, 5, 83, 204, 163, 204, 135, 202, 5, 85, 204, 131, 204, 129, 202, 5, 85, 204, 132, 204, 136, 202, 5, 85, 204, 136, 204, 128, 202, 5, 85, 204, 136, 204, 129, 202, 5, 85, 204, 136, 204, 132, 202, 5, 85, 204, 136, 204, 140, 202, 5, 85, 204, 155, 204, 128, 202, 5, 85, 204, 155, 204, 129, 202, 5, 85, 204, 155, 204, 131, 202, 5, 85, 204, 155, 204, 137, 202, 5, 85, 204, 155, 204, 163, 182, 5, 97, 204, 130, 204, 128, 202, 5, 97, 204, 130, 204, 129, 202, 5, 97, 204, 130, 204, 131, 202, 5, 97, 204, 130, 204, 137, 202, 5, 97, 204, 134, 204, 128, 202, 5, 97, 204, 134, 204, 129, 202, 5, 97, 204, 134, 204, 131, 202, 5, 97, 204, 134, 204, 137, 202, 5, 97, 204, 135, 204, 132, 202, 5, 97, 204, 136, 204, 132, 202, 5, 97, 204, 138, 204, 129, 202, 5, 97, 204, 163, 204, 130, 202, 5, 97, 204, 163, 204, 134, 202, 5, 99, 204, 167, 204, 129, 202, 5, 101, 204, 130, 204, 128, 202, 5, 101, 204, 130, 204, 129, 202, 5, 101, 204, 130, 204, 131, 202, 5, 101, 204, 130, 204, 137, 202, 5, 101, 204, 132, 204, 128, 202, 5, 101, 204, 132, 204, 129, 202, 5, 101, 204, 163, 204, 130, 202, 5, 101, 204, 167, 204, 134, 202, 5, 105, 204, 136, 204, 129, 202, 5, 108, 204, 163, 204, 132, 202, 5, 111, 204, 130, 204, 128, 202, 5, 111, 204, 130, 204, 129, 202, 5, 111, 204, 130, 204, 131, 202, 5, 111, 204, 130, 204, 137, 202, 5, 111, 204, 131, 204, 129, 202, 5, 111, 204, 131, 204, 132, 202, 5, 111, 204, 131, 204, 136, 202, 5, 111, 204, 132, 204, 128, 202, 5, 111, 204, 132, 204, 129, 202, 5, 111, 204, 135, 204, 132, 202, 5, 111, 204, 136, 204, 132, 202, 5, 111, 204, 155, 204, 128, 202, 5, 111, 204, 155, 204, 129, 202, 5, 111, 204, 155, 204, 131, 202, 5, 111, 204, 155, 204, 137, 202, 5, 111, 204, 155, 204, 163, 182, 5, 111, 204, 163, 204, 130, 202, 5, 111, 204, 168, 204, 132, 202, 5, 114, 204, 163, 204, 132, 202, 5, 115, 204, 129, 204, 135, 202, 5, 115, 204, 140, 204, 135, 202, 5, 115, 204, 163, 204, 135, 202, 5, 117, 204, 131, 204, 129, 202, 5, 117, 204, 132, 204, 136, 202, 5, 117, 204, 136, 204, 128, 202, 5, 117, 204, 136, 204, 129, 202, 5, 117, 204, 136, 204, 132, 202, 5, 117, 204, 136, 204, 140, 202, 5, 117, 204, 155, 204, 128, 202, 5, 117, 204, 155, 204, 129, 202, 5, 117, 204, 155, 204, 131, 202, 5, 117, 204, 155, 204, 137, 202, 5, 117, 204, 155, 204, 163, 182, 5, 225, 190, 191, 204, 128, 202, 5, 225, 190, 191, 204, 129, 202, 5, 225, 190, 191, 205, 130, 202, 5, 225, 191, 190, 204, 128, 202, 5, 225, 191, 190, 204, 129, 202, 5, 225, 191, 190, 205, 130, 202, 5, 226, 134, 144, 204, 184, 5, 5, 226, 134, 146, 204, 184, 5, 5, 226, 134, 148, 204, 184, 5, 5, 226, 135, 144, 204, 184, 5, 5, 226, 135, 146, 204, 184, 5, 5, 226, 135, 148, 204, 184, 5, 5, 226, 136, 131, 204, 184, 5, 5, 226, 136, 136, 204, 184, 5, 5, 226, 136, 139, 204, 184, 5, 5, 226, 136, 163, 204, 184, 5, 5, 226, 136, 165, 204, 184, 5, 5, 226, 136, 188, 204, 184, 5, 5, 226, 137, 131, 204, 184, 5, 5, 226, 137, 133, 204, 184, 5, 5, 226, 137, 136, 204, 184, 5, 5, 226, 137, 141, 204, 184, 5, 5, 226, 137, 161, 204, 184, 5, 5, 226, 137, 164, 204, 184, 5, 5, 226, 137, 165, 204, 184, 5, 5, 226, 137, 178, 204, 184, 5, 5, 226, 137, 179, 204, 184, 5, 5, 226, 137, 182, 204, 184, 5, 5, 226, 137, 183, 204, 184, 5, 5, 226, 137, 186, 204, 184, 5, 5, 226, 137, 187, 204, 184, 5, 5, 226, 137, 188, 204, 184, 5, 5, 226, 137, 189, 204, 184, 5, 5, 226, 138, 130, 204, 184, 5, 5, 226, 138, 131, 204, 184, 5, 5, 226, 138, 134, 204, 184, 5, 5, 226, 138, 135, 204, 184, 5, 5, 226, 138, 145, 204, 184, 5, 5, 226, 138, 146, 204, 184, 5, 5, 226, 138, 162, 204, 184, 5, 5, 226, 138, 168, 204, 184, 5, 5, 226, 138, 169, 204, 184, 5, 5, 226, 138, 171, 204, 184, 5, 5, 226, 138, 178, 204, 184, 5, 5, 226, 138, 179, 204, 184, 5, 5, 226, 138, 180, 204, 184, 5, 5, 226, 138, 181, 204, 184, 5, 6, 206, 145, 204, 147, 205, 133, 218, 6, 206, 145, 204, 148, 205, 133, 218, 6, 206, 149, 204, 147, 204, 128, 202, 6, 206, 149, 204, 147, 204, 129, 202, 6, 206, 149, 204, 148, 204, 128, 202, 6, 206, 149, 204, 148, 204, 129, 202, 6, 206, 151, 204, 147, 205, 133, 218, 6, 206, 151, 204, 148, 205, 133, 218, 6, 206, 153, 204, 147, 204, 128, 202, 6, 206, 153, 204, 147, 204, 129, 202, 6, 206, 153, 204, 147, 205, 130, 202, 6, 206, 153, 204, 148, 204, 128, 202, 6, 206, 153, 204, 148, 204, 129, 202, 6, 206, 153, 204, 148, 205, 130, 202, 6, 206, 159, 204, 147, 204, 128, 202, 6, 206, 159, 204, 147, 204, 129, 202, 6, 206, 159, 204, 148, 204, 128, 202, 6, 206, 159, 204, 148, 204, 129, 202, 6, 206, 165, 204, 148, 204, 128, 202, 6, 206, 165, 204, 148, 204, 129, 202, 6, 206, 165, 204, 148, 205, 130, 202, 6, 206, 169, 204, 147, 205, 133, 218, 6, 206, 169, 204, 148, 205, 133, 218, 6, 206, 177, 204, 128, 205, 133, 218, 6, 206, 177, 204, 129, 205, 133, 218, 6, 206, 177, 204, 147, 205, 133, 218, 6, 206, 177, 204, 148, 205, 133, 218, 6, 206, 177, 205, 130, 205, 133, 218, 6, 206, 181, 204, 147, 204, 128, 202, 6, 206, 181, 204, 147, 204, 129, 202, 6, 206, 181, 204, 148, 204, 128, 202, 6, 206, 181, 204, 148, 204, 129, 202, 6, 206, 183, 204, 128, 205, 133, 218, 6, 206, 183, 204, 129, 205, 133, 218, 6, 206, 183, 204, 147, 205, 133, 218, 6, 206, 183, 204, 148, 205, 133, 218, 6, 206, 183, 205, 130, 205, 133, 218, 6, 206, 185, 204, 136, 204, 128, 202, 6, 206, 185, 204, 136, 204, 129, 202, 6, 206, 185, 204, 136, 205, 130, 202, 6, 206, 185, 204, 147, 204, 128, 202, 6, 206, 185, 204, 147, 204, 129, 202, 6, 206, 185, 204, 147, 205, 130, 202, 6, 206, 185, 204, 148, 204, 128, 202, 6, 206, 185, 204, 148, 204, 129, 202, 6, 206, 185, 204, 148, 205, 130, 202, 6, 206, 191, 204, 147, 204, 128, 202, 6, 206, 191, 204, 147, 204, 129, 202, 6, 206, 191, 204, 148, 204, 128, 202, 6, 206, 191, 204, 148, 204, 129, 202, 6, 207, 133, 204, 136, 204, 128, 202, 6, 207, 133, 204, 136, 204, 129, 202, 6, 207, 133, 204, 136, 205, 130, 202, 6, 207, 133, 204, 147, 204, 128, 202, 6, 207, 133, 204, 147, 204, 129, 202, 6, 207, 133, 204, 147, 205, 130, 202, 6, 207, 133, 204, 148, 204, 128, 202, 6, 207, 133, 204, 148, 204, 129, 202, 6, 207, 133, 204, 148, 205, 130, 202, 6, 207, 137, 204, 128, 205, 133, 218, 6, 207, 137, 204, 129, 205, 133, 218, 6, 207, 137, 204, 147, 205, 133, 218, 6, 207, 137, 204, 148, 205, 133, 218, 6, 207, 137, 205, 130, 205, 133, 218, 6, 224, 164, 168, 224, 164, 188, 9, 6, 224, 164, 176, 224, 164, 188, 9, 6, 224, 164, 179, 224, 164, 188, 9, 6, 224, 177, 134, 224, 177, 150, 133, 6, 224, 183, 153, 224, 183, 138, 17, 6, 227, 129, 134, 227, 130, 153, 13, 6, 227, 129, 139, 227, 130, 153, 13, 6, 227, 129, 141, 227, 130, 153, 13, 6, 227, 129, 143, 227, 130, 153, 13, 6, 227, 129, 145, 227, 130, 153, 13, 6, 227, 129, 147, 227, 130, 153, 13, 6, 227, 129, 149, 227, 130, 153, 13, 6, 227, 129, 151, 227, 130, 153, 13, 6, 227, 129, 153, 227, 130, 153, 13, 6, 227, 129, 155, 227, 130, 153, 13, 6, 227, 129, 157, 227, 130, 153, 13, 6, 227, 129, 159, 227, 130, 153, 13, 6, 227, 129, 161, 227, 130, 153, 13, 6, 227, 129, 164, 227, 130, 153, 13, 6, 227, 129, 166, 227, 130, 153, 13, 6, 227, 129, 168, 227, 130, 153, 13, 6, 227, 129, 175, 227, 130, 153, 13, 6, 227, 129, 175, 227, 130, 154, 13, 6, 227, 129, 178, 227, 130, 153, 13, 6, 227, 129, 178, 227, 130, 154, 13, 6, 227, 129, 181, 227, 130, 153, 13, 6, 227, 129, 181, 227, 130, 154, 13, 6, 227, 129, 184, 227, 130, 153, 13, 6, 227, 129, 184, 227, 130, 154, 13, 6, 227, 129, 187, 227, 130, 153, 13, 6, 227, 129, 187, 227, 130, 154, 13, 6, 227, 130, 157, 227, 130, 153, 13, 6, 227, 130, 166, 227, 130, 153, 13, 6, 227, 130, 171, 227, 130, 153, 13, 6, 227, 130, 173, 227, 130, 153, 13, 6, 227, 130, 175, 227, 130, 153, 13, 6, 227, 130, 177, 227, 130, 153, 13, 6, 227, 130, 179, 227, 130, 153, 13, 6, 227, 130, 181, 227, 130, 153, 13, 6, 227, 130, 183, 227, 130, 153, 13, 6, 227, 130, 185, 227, 130, 153, 13, 6, 227, 130, 187, 227, 130, 153, 13, 6, 227, 130, 189, 227, 130, 153, 13, 6, 227, 130, 191, 227, 130, 153, 13, 6, 227, 131, 129, 227, 130, 153, 13, 6, 227, 131, 132, 227, 130, 153, 13, 6, 227, 131, 134, 227, 130, 153, 13, 6, 227, 131, 136, 227, 130, 153, 13, 6, 227, 131, 143, 227, 130, 153, 13, 6, 227, 131, 143, 227, 130, 154, 13, 6, 227, 131, 146, 227, 130, 153, 13, 6, 227, 131, 146, 227, 130, 154, 13, 6, 227, 131, 149, 227, 130, 153, 13, 6, 227, 131, 149, 227, 130, 154, 13, 6, 227, 131, 152, 227, 130, 153, 13, 6, 227, 131, 152, 227, 130, 154, 13, 6, 227, 131, 155, 227, 130, 153, 13, 6, 227, 131, 155, 227, 130, 154, 13, 6, 227, 131, 175, 227, 130, 153, 13, 6, 227, 131, 176, 227, 130, 153, 13, 6, 227, 131, 177, 227, 130, 153, 13, 6, 227, 131, 178, 227, 130, 153, 13, 6, 227, 131, 189, 227, 130, 153, 13, 8, 206, 145, 204, 147, 204, 128, 205, 133, 219, 8, 206, 145, 204, 147, 204, 129, 205, 133, 219, 8, 206, 145, 204, 147, 205, 130, 205, 133, 219, 8, 206, 145, 204, 148, 204, 128, 205, 133, 219, 8, 206, 145, 204, 148, 204, 129, 205, 133, 219, 8, 206, 145, 204, 148, 205, 130, 205, 133, 219, 8, 206, 151, 204, 147, 204, 128, 205, 133, 219, 8, 206, 151, 204, 147, 204, 129, 205, 133, 219, 8, 206, 151, 204, 147, 205, 130, 205, 133, 219, 8, 206, 151, 204, 148, 204, 128, 205, 133, 219, 8, 206, 151, 204, 148, 204, 129, 205, 133, 219, 8, 206, 151, 204, 148, 205, 130, 205, 133, 219, 8, 206, 169, 204, 147, 204, 128, 205, 133, 219, 8, 206, 169, 204, 147, 204, 129, 205, 133, 219, 8, 206, 169, 204, 147, 205, 130, 205, 133, 219, 8, 206, 169, 204, 148, 204, 128, 205, 133, 219, 8, 206, 169, 204, 148, 204, 129, 205, 133, 219, 8, 206, 169, 204, 148, 205, 130, 205, 133, 219, 8, 206, 177, 204, 147, 204, 128, 205, 133, 219, 8, 206, 177, 204, 147, 204, 129, 205, 133, 219, 8, 206, 177, 204, 147, 205, 130, 205, 133, 219, 8, 206, 177, 204, 148, 204, 128, 205, 133, 219, 8, 206, 177, 204, 148, 204, 129, 205, 133, 219, 8, 206, 177, 204, 148, 205, 130, 205, 133, 219, 8, 206, 183, 204, 147, 204, 128, 205, 133, 219, 8, 206, 183, 204, 147, 204, 129, 205, 133, 219, 8, 206, 183, 204, 147, 205, 130, 205, 133, 219, 8, 206, 183, 204, 148, 204, 128, 205, 133, 219, 8, 206, 183, 204, 148, 204, 129, 205, 133, 219, 8, 206, 183, 204, 148, 205, 130, 205, 133, 219, 8, 207, 137, 204, 147, 204, 128, 205, 133, 219, 8, 207, 137, 204, 147, 204, 129, 205, 133, 219, 8, 207, 137, 204, 147, 205, 130, 205, 133, 219, 8, 207, 137, 204, 148, 204, 128, 205, 133, 219, 8, 207, 137, 204, 148, 204, 129, 205, 133, 219, 8, 207, 137, 204, 148, 205, 130, 205, 133, 219, 8, 240, 145, 130, 153, 240, 145, 130, 186, 9, 8, 240, 145, 130, 155, 240, 145, 130, 186, 9, 8, 240, 145, 130, 165, 240, 145, 130, 186, 9, 66, 194, 180, 1, 67, 32, 204, 129, 201, 67, 32, 204, 131, 201, 67, 32, 204, 132, 201, 67, 32, 204, 133, 201, 67, 32, 204, 134, 201, 67, 32, 204, 135, 201, 67, 32, 204, 136, 201, 67, 32, 204, 138, 201, 67, 32, 204, 139, 201, 67, 32, 204, 147, 201, 67, 32, 204, 148, 201, 67, 32, 204, 167, 165, 67, 32, 204, 168, 165, 67, 32, 204, 179, 181, 67, 32, 205, 130, 201, 67, 32, 205, 133, 217, 67, 32, 217, 139, 89, 67, 32, 217, 140, 93, 67, 32, 217, 141, 97, 67, 32, 217, 142, 101, 67, 32, 217, 143, 105, 67, 32, 217, 144, 109, 67, 32, 217, 145, 113, 67, 32, 217, 146, 117, 67, 65, 204, 138, 201, 67, 115, 204, 135, 201, 68, 32, 227, 130, 153, 13, 68, 32, 227, 130, 154, 13, 68, 194, 168, 204, 129, 202, 68, 206, 145, 204, 129, 201, 68, 206, 149, 204, 129, 201, 68, 206, 151, 204, 129, 201, 68, 206, 153, 204, 129, 201, 68, 206, 159, 204, 129, 201, 68, 206, 165, 204, 129, 201, 68, 206, 165, 204, 136, 201, 68, 206, 169, 204, 129, 201, 68, 206, 177, 204, 129, 201, 68, 206, 181, 204, 129, 201, 68, 206, 183, 204, 129, 201, 68, 206, 185, 204, 129, 201, 68, 206, 191, 204, 129, 201, 68, 207, 133, 204, 129, 201, 68, 207, 137, 204, 129, 201, 68, 215, 144, 214, 183, 49, 68, 215, 144, 214, 184, 53, 68, 215, 144, 214, 188, 65, 68, 215, 145, 214, 188, 65, 68, 215, 145, 214, 191, 73, 68, 215, 146, 214, 188, 65, 68, 215, 147, 214, 188, 65, 68, 215, 148, 214, 188, 65, 68, 215, 149, 214, 185, 57, 68, 215, 149, 214, 188, 65, 68, 215, 150, 214, 188, 65, 68, 215, 152, 214, 188, 65, 68, 215, 153, 214, 180, 37, 68, 215, 153, 214, 188, 65, 68, 215, 154, 214, 188, 65, 68, 215, 155, 214, 188, 65, 68, 215, 155, 214, 191, 73, 68, 215, 156, 214, 188, 65, 68, 215, 158, 214, 188, 65, 68, 215, 160, 214, 188, 65, 68, 215, 161, 214, 188, 65, 68, 215, 163, 214, 188, 65, 68, 215, 164, 214, 188, 65, 68, 215, 164, 214, 191, 73, 68, 215, 166, 214, 188, 65, 68, 215, 167, 214, 188, 65, 68, 215, 168, 214, 188, 65, 68, 215, 169, 214, 188, 65, 68, 215, 169, 215, 129, 77, 68, 215, 169, 215, 130, 81, 68, 215, 170, 214, 188, 65, 68, 215, 178, 214, 183, 49, 68, 216, 167, 217, 139, 89, 68, 216, 167, 217, 147, 201, 68, 216, 167, 217, 148, 201, 68, 216, 167, 217, 149, 181, 68, 216, 176, 217, 176, 121, 68, 216, 177, 217, 176, 121, 68, 217, 128, 217, 139, 89, 68, 217, 128, 217, 142, 101, 68, 217, 128, 217, 143, 105, 68, 217, 128, 217, 144, 109, 68, 217, 128, 217, 145, 113, 68, 217, 128, 217, 146, 117, 68, 217, 135, 217, 176, 121, 68, 217, 136, 217, 148, 201, 68, 217, 137, 217, 176, 121, 68, 217, 138, 217, 148, 201, 68, 219, 146, 217, 148, 201, 68, 219, 149, 217, 148, 201, 69, 32, 204, 136, 204, 128, 202, 69, 32, 204, 136, 204, 129, 202, 69, 32, 204, 136, 205, 130, 202, 69, 32, 204, 147, 204, 128, 202, 69, 32, 204, 147, 204, 129, 202, 69, 32, 204, 147, 205, 130, 202, 69, 32, 204, 148, 204, 128, 202, 69, 32, 204, 148, 204, 129, 202, 69, 32, 204, 148, 205, 130, 202, 69, 32, 217, 140, 217, 145, 114, 69, 32, 217, 141, 217, 145, 114, 69, 32, 217, 142, 217, 145, 114, 69, 32, 217, 143, 217, 145, 114, 69, 32, 217, 144, 217, 145, 114, 69, 32, 217, 145, 217, 176, 122, 69, 226, 171, 157, 204, 184, 5, 70, 206, 185, 204, 136, 204, 129, 202, 70, 207, 133, 204, 136, 204, 129, 202, 70, 215, 169, 214, 188, 215, 129, 78, 70, 215, 169, 214, 188, 215, 130, 82, 70, 217, 128, 217, 142, 217, 145, 114, 70, 217, 128, 217, 143, 217, 145, 114, 70, 217, 128, 217, 144, 217, 145, 114, 70, 224, 164, 149, 224, 164, 188, 9, 70, 224, 164, 150, 224, 164, 188, 9, 70, 224, 164, 151, 224, 164, 188, 9, 70, 224, 164, 156, 224, 164, 188, 9, 70, 224, 164, 161, 224, 164, 188, 9, 70, 224, 164, 162, 224, 164, 188, 9, 70, 224, 164, 171, 224, 164, 188, 9, 70, 224, 164, 175, 224, 164, 188, 9, 70, 224, 166, 161, 224, 166, 188, 9, 70, 224, 166, 162, 224, 166, 188, 9, 70, 224, 166, 175, 224, 166, 188, 9, 70, 224, 168, 150, 224, 168, 188, 9, 70, 224, 168, 151, 224, 168, 188, 9, 70, 224, 168, 156, 224, 168, 188, 9, 70, 224, 168, 171, 224, 168, 188, 9, 70, 224, 168, 178, 224, 168, 188, 9, 70, 224, 168, 184, 224, 168, 188, 9, 70, 224, 172, 161, 224, 172, 188, 9, 70, 224, 172, 162, 224, 172, 188, 9, 70, 224, 190, 178, 224, 190, 128, 157, 70, 224, 190, 179, 224, 190, 128, 157, 70, 227, 131, 134, 227, 130, 153, 13, 72, 240, 157, 133, 151, 240, 157, 133, 165, 173, 72, 240, 157, 133, 152, 240, 157, 133, 165, 173, 72, 240, 157, 134, 185, 240, 157, 133, 165, 173, 72, 240, 157, 134, 186, 240, 157, 133, 165, 173, 73, 224, 190, 178, 224, 189, 177, 224, 190, 128, 158, 73, 224, 190, 179, 224, 189, 177, 224, 190, 128, 158, 76, 240, 157, 133, 152, 240, 157, 133, 165, 240, 157, 133, 174, 174, 76, 240, 157, 133, 152, 240, 157, 133, 165, 240, 157, 133, 175, 174, 76, 240, 157, 133, 152, 240, 157, 133, 165, 240, 157, 133, 176, 174, 76, 240, 157, 133, 152, 240, 157, 133, 165, 240, 157, 133, 177, 174, 76, 240, 157, 133, 152, 240, 157, 133, 165, 240, 157, 133, 178, 174, 76, 240, 157, 134, 185, 240, 157, 133, 165, 240, 157, 133, 174, 174, 76, 240, 157, 134, 185, 240, 157, 133, 165, 240, 157, 133, 175, 174, 76, 240, 157, 134, 186, 240, 157, 133, 165, 240, 157, 133, 174, 174, 76, 240, 157, 134, 186, 240, 157, 133, 165, 240, 157, 133, 175, 174, 131, 65, 204, 130, 201, 131, 65, 204, 134, 201, 131, 65, 204, 135, 201, 131, 65, 204, 136, 201, 131, 65, 204, 138, 201, 131, 65, 204, 163, 181, 131, 67, 204, 167, 165, 131, 69, 204, 130, 201, 131, 69, 204, 132, 201, 131, 69, 204, 163, 181, 131, 69, 204, 167, 165, 131, 73, 204, 136, 201, 131, 76, 204, 163, 181, 131, 79, 204, 130, 201, 131, 79, 204, 131, 201, 131, 79, 204, 132, 201, 131, 79, 204, 135, 201, 131, 79, 204, 136, 201, 131, 79, 204, 155, 173, 131, 79, 204, 163, 181, 131, 79, 204, 168, 165, 131, 82, 204, 163, 181, 131, 83, 204, 129, 201, 131, 83, 204, 140, 201, 131, 83, 204, 163, 181, 131, 85, 204, 131, 201, 131, 85, 204, 132, 201, 131, 85, 204, 136, 201, 131, 85, 204, 155, 173, 131, 97, 204, 130, 201, 131, 97, 204, 134, 201, 131, 97, 204, 135, 201, 131, 97, 204, 136, 201, 131, 97, 204, 138, 201, 131, 97, 204, 163, 181, 131, 99, 204, 167, 165, 131, 101, 204, 130, 201, 131, 101, 204, 132, 201, 131, 101, 204, 163, 181, 131, 101, 204, 167, 165, 131, 105, 204, 136, 201, 131, 108, 204, 163, 181, 131, 111, 204, 130, 201, 131, 111, 204, 131, 201, 131, 111, 204, 132, 201, 131, 111, 204, 135, 201, 131, 111, 204, 136, 201, 131, 111, 204, 155, 173, 131, 111, 204, 163, 181, 131, 111, 204, 168, 165, 131, 114, 204, 163, 181, 131, 115, 204, 129, 201, 131, 115, 204, 140, 201, 131, 115, 204, 163, 181, 131, 117, 204, 131, 201, 131, 117, 204, 132, 201, 131, 117, 204, 136, 201, 131, 117, 204, 155, 173, 132, 206, 145, 204, 147, 201, 132, 206, 145, 204, 148, 201, 132, 206, 149, 204, 147, 201, 132, 206, 149, 204, 148, 201, 132, 206, 151, 204, 147, 201, 132, 206, 151, 204, 148, 201, 132, 206, 153, 204, 147, 201, 132, 206, 153, 204, 148, 201, 132, 206, 159, 204, 147, 201, 132, 206, 159, 204, 148, 201, 132, 206, 165, 204, 148, 201, 132, 206, 169, 204, 147, 201, 132, 206, 169, 204, 148, 201, 132, 206, 177, 204, 128, 201, 132, 206, 177, 204, 129, 201, 132, 206, 177, 204, 147, 201, 132, 206, 177, 204, 148, 201, 132, 206, 177, 205, 130, 201, 132, 206, 181, 204, 147, 201, 132, 206, 181, 204, 148, 201, 132, 206, 183, 204, 128, 201, 132, 206, 183, 204, 129, 201, 132, 206, 183, 204, 147, 201, 132, 206, 183, 204, 148, 201, 132, 206, 183, 205, 130, 201, 132, 206, 185, 204, 136, 201, 132, 206, 185, 204, 147, 201, 132, 206, 185, 204, 148, 201, 132, 206, 191, 204, 147, 201, 132, 206, 191, 204, 148, 201, 132, 207, 133, 204, 136, 201, 132, 207, 133, 204, 147, 201, 132, 207, 133, 204, 148, 201, 132, 207, 137, 204, 128, 201, 132, 207, 137, 204, 129, 201, 132, 207, 137, 204, 147, 201, 132, 207, 137, 204, 148, 201, 132, 207, 137, 205, 130, 201, 134, 206, 145, 204, 147, 204, 128, 202, 134, 206, 145, 204, 147, 204, 129, 202, 134, 206, 145, 204, 147, 205, 130, 202, 134, 206, 145, 204, 148, 204, 128, 202, 134, 206, 145, 204, 148, 204, 129, 202, 134, 206, 145, 204, 148, 205, 130, 202, 134, 206, 151, 204, 147, 204, 128, 202, 134, 206, 151, 204, 147, 204, 129, 202, 134, 206, 151, 204, 147, 205, 130, 202, 134, 206, 151, 204, 148, 204, 128, 202, 134, 206, 151, 204, 148, 204, 129, 202, 134, 206, 151, 204, 148, 205, 130, 202, 134, 206, 169, 204, 147, 204, 128, 202, 134, 206, 169, 204, 147, 204, 129, 202, 134, 206, 169, 204, 147, 205, 130, 202, 134, 206, 169, 204, 148, 204, 128, 202, 134, 206, 169, 204, 148, 204, 129, 202, 134, 206, 169, 204, 148, 205, 130, 202, 134, 206, 177, 204, 147, 204, 128, 202, 134, 206, 177, 204, 147, 204, 129, 202, 134, 206, 177, 204, 147, 205, 130, 202, 134, 206, 177, 204, 148, 204, 128, 202, 134, 206, 177, 204, 148, 204, 129, 202, 134, 206, 177, 204, 148, 205, 130, 202, 134, 206, 183, 204, 147, 204, 128, 202, 134, 206, 183, 204, 147, 204, 129, 202, 134, 206, 183, 204, 147, 205, 130, 202, 134, 206, 183, 204, 148, 204, 128, 202, 134, 206, 183, 204, 148, 204, 129, 202, 134, 206, 183, 204, 148, 205, 130, 202, 134, 207, 137, 204, 147, 204, 128, 202, 134, 207, 137, 204, 147, 204, 129, 202, 134, 207, 137, 204, 147, 205, 130, 202, 134, 207, 137, 204, 148, 204, 128, 202, 134, 207, 137, 204, 148, 204, 129, 202, 134, 207, 137, 204, 148, 205, 130, 202, 66, 204, 128, 201, 50, 66, 204, 129, 201, 50, 66, 204, 147, 201, 50, 67, 225, 133, 161, 1, 0, 67, 225, 133, 162, 1, 0, 67, 225, 133, 163, 1, 0, 67, 225, 133, 164, 1, 0, 67, 225, 133, 165, 1, 0, 67, 225, 133, 166, 1, 0, 67, 225, 133, 167, 1, 0, 67, 225, 133, 168, 1, 0, 67, 225, 133, 169, 1, 0, 67, 225, 133, 170, 1, 0, 67, 225, 133, 171, 1, 0, 67, 225, 133, 172, 1, 0, 67, 225, 133, 173, 1, 0, 67, 225, 133, 174, 1, 0, 67, 225, 133, 175, 1, 0, 67, 225, 133, 176, 1, 0, 67, 225, 133, 177, 1, 0, 67, 225, 133, 178, 1, 0, 67, 225, 133, 179, 1, 0, 67, 225, 133, 180, 1, 0, 67, 225, 133, 181, 1, 0, 67, 225, 134, 170, 1, 0, 67, 225, 134, 172, 1, 0, 67, 225, 134, 173, 1, 0, 67, 225, 134, 176, 1, 0, 67, 225, 134, 177, 1, 0, 67, 225, 134, 178, 1, 0, 67, 225, 134, 179, 1, 0, 67, 225, 134, 180, 1, 0, 67, 225, 134, 181, 1, 0, 68, 204, 136, 204, 129, 202, 50, 67, 227, 130, 153, 13, 3, 67, 227, 130, 154, 13, 3, 70, 224, 189, 177, 224, 189, 178, 158, 38, 70, 224, 189, 177, 224, 189, 180, 162, 38, 70, 224, 189, 177, 224, 190, 128, 158, 38, 0, 1]);
 91184  		nfcValues = $toNativeArray($kindUint16, [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40960, 40960, 40960, 0, 0, 40960, 40960, 40960, 40960, 40960, 40960, 40960, 40960, 40960, 40960, 40960, 40960, 40960, 40960, 40960, 40960, 0, 40960, 40960, 40960, 40960, 40960, 40960, 40960, 40960, 40960, 0, 0, 0, 0, 0, 0, 40960, 40960, 40960, 40960, 40960, 40960, 40960, 40960, 40960, 40960, 40960, 40960, 40960, 40960, 40960, 40960, 0, 40960, 40960, 40960, 40960, 40960, 40960, 40960, 40960, 40960, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12143, 12148, 18056, 12153, 18071, 18076, 40960, 18086, 12258, 12263, 18091, 12283, 12398, 12403, 12408, 18111, 0, 12548, 12583, 12588, 18121, 18126, 18141, 0, 40960, 12723, 12728, 12733, 18191, 12853, 0, 0, 12923, 12928, 18201, 12933, 18216, 18221, 40960, 18231, 13038, 13043, 18236, 13063, 13183, 13188, 13193, 18256, 0, 13333, 13368, 13373, 18266, 18271, 18286, 0, 40960, 13513, 13518, 13523, 18336, 13648, 0, 13673, 12158, 12938, 18061, 18206, 12188, 12968, 12208, 12988, 12213, 12993, 12218, 12998, 12223, 13003, 12233, 13013, 0, 0, 18096, 18241, 12273, 13053, 12278, 13058, 12308, 13088, 12293, 13073, 12333, 13113, 12343, 13123, 12348, 13128, 12358, 13138, 12363, 13143, 0, 0, 12413, 13198, 12418, 13203, 12423, 13208, 12458, 13238, 12428, 0, 0, 0, 12468, 13248, 12488, 13273, 0, 12498, 13283, 12508, 13293, 12503, 13288, 0, 0, 0, 0, 12543, 13328, 12568, 13353, 12558, 13343, 0, 0, 0, 18131, 18276, 12593, 13378, 12603, 13388, 0, 0, 12633, 13418, 12658, 13443, 12643, 13428, 18166, 18311, 12668, 13453, 12683, 13468, 18171, 18316, 12708, 13498, 12693, 13483, 0, 0, 18181, 18326, 18186, 18331, 12738, 13528, 12748, 13538, 12753, 13543, 12783, 13573, 12818, 13608, 12858, 13653, 12878, 12893, 13693, 12903, 13703, 12908, 13708, 40960, 0, 0, 0, 0, 33024, 33024, 33024, 0, 0, 0, 0, 0, 0, 12168, 12948, 12438, 13218, 12608, 13393, 12758, 13548, 14799, 15198, 14792, 15191, 14806, 15205, 14785, 15184, 0, 14512, 14911, 14505, 14904, 13747, 13765, 0, 0, 12353, 13133, 12478, 13263, 18156, 18301, 14736, 15135, 13783, 13789, 13253, 0, 0, 0, 12328, 13108, 0, 0, 12538, 13323, 14519, 14918, 13741, 13759, 13753, 13771, 12173, 12953, 12178, 12958, 12298, 13078, 12303, 13083, 12443, 13223, 12448, 13228, 12613, 13398, 12618, 13403, 12648, 13433, 12653, 13438, 12763, 13553, 12768, 13558, 12678, 13463, 12703, 13493, 0, 0, 12378, 13158, 0, 0, 0, 0, 0, 0, 18066, 18211, 18106, 18251, 14687, 15086, 14652, 15051, 18136, 18281, 14680, 15079, 12868, 13663, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39218, 39218, 39218, 39218, 39218, 33074, 39218, 39218, 39218, 39218, 39218, 39218, 39218, 33074, 33074, 39218, 33074, 39218, 33074, 39218, 39218, 33075, 33069, 33069, 33069, 33069, 33075, 39211, 33069, 33069, 33069, 33069, 33069, 33065, 33065, 39213, 39213, 39213, 39213, 39209, 39209, 33069, 33069, 33069, 33069, 39213, 39213, 33069, 39213, 39213, 33069, 33069, 33025, 33025, 33025, 33025, 39169, 33069, 33069, 33069, 33069, 33074, 33074, 33074, 18862, 18867, 39218, 18872, 19057, 39222, 33074, 33069, 33069, 33069, 33074, 33074, 33074, 33069, 33069, 0, 33074, 33074, 33074, 33069, 33069, 33069, 33069, 33074, 33075, 33069, 33069, 33074, 33076, 33077, 33077, 33076, 33077, 33077, 33076, 33074, 33074, 33074, 33074, 33074, 33074, 33074, 33074, 33074, 33074, 33074, 33074, 33074, 0, 0, 0, 0, 368, 0, 0, 0, 0, 0, 33024, 0, 0, 0, 55, 0, 0, 0, 0, 0, 33024, 13729, 13801, 206, 13831, 13843, 13861, 0, 13891, 0, 13909, 13939, 15880, 40960, 0, 0, 0, 40960, 0, 40960, 0, 40960, 0, 0, 0, 0, 0, 40960, 0, 40960, 0, 0, 0, 40960, 0, 0, 0, 40960, 13879, 13927, 18430, 13975, 18472, 13993, 15984, 40960, 0, 0, 0, 40960, 0, 40960, 0, 40960, 0, 0, 0, 0, 0, 40960, 14113, 14125, 0, 14107, 0, 0, 40960, 14089, 0, 0, 0, 0, 14173, 14149, 14191, 0, 40960, 0, 0, 40960, 0, 40960, 40960, 40960, 40960, 14161, 40960, 0, 0, 0, 40960, 0, 0, 0, 0, 40960, 0, 0, 0, 40960, 0, 0, 0, 40960, 0, 40960, 0, 0, 40960, 0, 0, 40960, 0, 40960, 40960, 40960, 40960, 14293, 40960, 0, 0, 0, 40960, 0, 0, 14131, 14263, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14095, 14227, 14101, 14233, 0, 0, 14119, 14251, 40960, 40960, 14377, 14383, 14137, 14269, 14143, 14275, 0, 0, 14155, 14287, 14167, 14299, 14179, 14311, 40960, 40960, 14389, 14395, 14221, 14353, 14185, 14317, 14197, 14329, 14203, 14335, 14209, 14341, 0, 0, 14215, 14347, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33069, 33074, 33074, 33074, 33074, 33069, 33074, 33074, 33074, 33070, 33069, 33074, 33074, 33074, 33074, 33074, 33074, 33069, 33069, 33069, 33069, 33069, 33069, 33074, 33074, 33069, 33074, 33074, 33070, 33073, 33074, 33029, 33030, 33031, 33032, 33033, 33034, 33035, 33036, 33037, 33038, 33038, 33039, 33040, 33041, 0, 33042, 0, 0, 0, 0, 0, 0, 0, 0, 40960, 0, 40960, 33046, 33047, 33048, 33049, 33050, 33051, 33052, 33053, 39218, 39218, 39213, 33069, 33074, 33074, 33074, 33074, 33074, 33069, 33074, 33074, 33069, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33054, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40960, 11558, 40960, 11566, 40960, 11574, 40960, 11582, 40960, 11590, 0, 0, 40960, 11598, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33026, 39168, 0, 0, 0, 0, 40960, 11606, 40960, 11614, 40960, 40960, 33074, 33074, 33069, 33074, 33074, 33074, 33074, 33074, 33074, 33074, 33069, 33074, 33074, 33077, 33066, 33069, 33065, 33074, 33074, 33074, 33074, 33074, 33074, 33074, 33074, 33074, 33074, 33074, 33074, 33074, 33074, 33074, 33074, 33074, 33074, 33074, 33074, 33074, 33074, 33074, 33074, 33074, 33074, 33074, 33074, 33074, 33074, 33074, 33074, 33074, 33074, 33074, 33074, 33074, 33075, 33073, 33073, 33069, 0, 33074, 33076, 33069, 33074, 33069, 12183, 12963, 12193, 12973, 12198, 12978, 12203, 12983, 14540, 14939, 12228, 13008, 12238, 13018, 12253, 13033, 12243, 13023, 12248, 13028, 14575, 14974, 14582, 14981, 12313, 13093, 12318, 13098, 14596, 14995, 12323, 13103, 12338, 13118, 12368, 13148, 12383, 13163, 12373, 13153, 12388, 13168, 12393, 13173, 12463, 13243, 14603, 15002, 12473, 13258, 12483, 13268, 12493, 13278, 18116, 18261, 14610, 15009, 12518, 13303, 12513, 13298, 12523, 13308, 12528, 13313, 12533, 13318, 12553, 13338, 12563, 13348, 12578, 13363, 12573, 13358, 14645, 15044, 14659, 15058, 14666, 15065, 14673, 15072, 12623, 13408, 12628, 13413, 12638, 13423, 18161, 18306, 14743, 15142, 12663, 13448, 12673, 13458, 18176, 18321, 14750, 15149, 14757, 15156, 14764, 15163, 12688, 13473, 12698, 13488, 12718, 13508, 12713, 13503, 12778, 13568, 12793, 13583, 12788, 13578, 14771, 15170, 14778, 15177, 12798, 13588, 12803, 13593, 12808, 13598, 12813, 13603, 12828, 13618, 12823, 13613, 12833, 13628, 12838, 13633, 12843, 13638, 12873, 13668, 12898, 13698, 12913, 13713, 12918, 13718, 13178, 13478, 13623, 13683, 0, 13777, 0, 0, 0, 0, 18081, 18226, 12163, 12943, 14456, 14855, 14449, 14848, 14470, 14869, 14463, 14862, 14526, 14925, 14484, 14883, 14477, 14876, 14498, 14897, 14491, 14890, 14533, 14932, 18101, 18246, 12288, 13068, 12268, 13048, 14554, 14953, 14547, 14946, 14568, 14967, 14561, 14960, 14589, 14988, 12433, 13213, 12453, 13233, 18151, 18296, 12598, 13383, 14624, 15023, 14617, 15016, 14638, 15037, 14631, 15030, 14729, 15128, 14701, 15100, 14694, 15093, 14715, 15114, 14708, 15107, 14722, 15121, 12773, 13563, 12743, 13533, 14820, 15219, 14813, 15212, 14834, 15233, 14827, 15226, 14841, 15240, 12848, 13643, 12888, 13688, 12883, 13678, 12863, 13658, 0, 0, 0, 0, 0, 0, 18436, 18442, 18718, 18742, 18726, 18750, 18734, 18758, 18346, 18352, 18574, 18598, 18582, 18606, 18590, 18614, 18454, 18460, 15800, 15816, 15808, 15824, 0, 0, 18358, 18364, 15592, 15608, 15600, 15616, 0, 0, 18478, 18484, 18766, 18790, 18774, 18798, 18782, 18806, 18370, 18376, 18622, 18646, 18630, 18654, 18638, 18662, 18502, 18508, 15896, 15920, 15904, 15928, 15912, 15936, 18382, 18388, 15640, 15664, 15648, 15672, 15656, 15680, 18514, 18520, 15944, 15960, 15952, 15968, 0, 0, 18394, 18400, 15688, 15704, 15696, 15712, 0, 0, 18532, 18538, 16000, 16024, 16008, 16032, 16016, 16040, 0, 18406, 0, 15720, 0, 15728, 0, 15736, 18556, 18562, 18814, 18838, 18822, 18846, 18830, 18854, 18412, 18418, 18670, 18694, 18678, 18702, 18686, 18710, 18424, 17182, 13969, 17188, 18466, 17194, 13987, 17200, 14017, 17206, 14041, 17212, 18544, 17218, 0, 0, 15776, 15784, 16772, 16802, 16782, 16812, 16792, 16822, 15576, 15584, 16592, 16622, 16602, 16632, 16612, 16642, 15848, 15856, 16832, 16862, 16842, 16872, 16852, 16882, 15624, 15632, 16652, 16682, 16662, 16692, 16672, 16702, 16064, 16072, 16892, 16922, 16902, 16932, 16912, 16942, 15744, 15752, 16712, 16742, 16722, 16752, 16732, 16762, 13957, 13951, 15760, 13963, 15768, 0, 18448, 15792, 13813, 13807, 13795, 17134, 13819, 33024, 467, 41216, 33024, 13735, 15832, 13981, 15840, 0, 18490, 15864, 13825, 17140, 13837, 17146, 13849, 15247, 15254, 15261, 14005, 13999, 15872, 17636, 0, 0, 14011, 15888, 13873, 13867, 13855, 17152, 0, 15268, 15275, 15282, 14059, 14053, 15976, 17644, 14029, 14035, 14065, 15992, 13921, 13915, 13903, 17164, 13897, 13723, 17128, 129, 0, 0, 16048, 14071, 16056, 0, 18568, 16080, 13885, 17158, 13933, 17176, 13945, 16982, 41216, 0, 0, 15366, 0, 40960, 15373, 40960, 0, 15380, 40960, 15387, 0, 0, 0, 40960, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12133, 40960, 15401, 0, 40960, 40960, 0, 0, 0, 0, 0, 0, 0, 15394, 12128, 12138, 15408, 15415, 40960, 40960, 15422, 15429, 40960, 40960, 15436, 15443, 40960, 40960, 40960, 40960, 0, 0, 15450, 15457, 40960, 40960, 15478, 15485, 40960, 40960, 15492, 15499, 0, 0, 0, 0, 0, 0, 0, 40960, 40960, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40960, 0, 0, 0, 0, 0, 40960, 40960, 0, 40960, 15520, 15527, 15534, 15541, 0, 0, 40960, 40960, 40960, 40960, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40960, 0, 0, 0, 0, 40960, 16136, 40960, 16144, 40960, 16152, 40960, 16160, 40960, 16168, 40960, 16176, 40960, 16184, 40960, 16192, 40960, 16200, 40960, 16208, 40960, 16216, 40960, 16224, 0, 40960, 16232, 40960, 16240, 40960, 16248, 0, 0, 0, 0, 0, 40960, 16256, 16264, 40960, 16272, 16280, 40960, 16288, 16296, 40960, 16304, 16312, 40960, 16320, 16328, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16128, 0, 0, 0, 0, 39171, 39171, 33024, 33024, 40960, 16336, 0, 0, 0, 0, 0, 0, 0, 40960, 0, 0, 0, 0, 40960, 16352, 40960, 16360, 40960, 16368, 40960, 16376, 40960, 16384, 40960, 16392, 40960, 16400, 40960, 16408, 40960, 16416, 40960, 16424, 40960, 16432, 40960, 16440, 0, 40960, 16448, 40960, 16456, 40960, 16464, 0, 0, 0, 0, 0, 40960, 16472, 16480, 40960, 16488, 16496, 40960, 16504, 16512, 40960, 16520, 16528, 40960, 16536, 16544, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40960, 40960, 40960, 40960, 0, 16344, 0, 0, 16552, 16560, 16568, 16576, 0, 0, 40960, 16584, 0, 4983, 3323, 5075, 5023, 3671, 1771, 2271, 5675, 5675, 2571, 5215, 2371, 2567, 3055, 4047, 4447, 4759, 4819, 4871, 5147, 3443, 3583, 3755, 3907, 4703, 5191, 5491, 1807, 2227, 3463, 3791, 4755, 5571, 2739, 3703, 4739, 4887, 3107, 4539, 4831, 2847, 3343, 3607, 3867, 5159, 1871, 2023, 2131, 3211, 3455, 3787, 4079, 4471, 4747, 4771, 5063, 5359, 5539, 5567, 4139, 4203, 4387, 4675, 5243, 5579, 4939, 2503, 2875, 4315, 4507, 3839, 4147, 5015, 5351, 2499, 2703, 3447, 3627, 3679, 4371, 4411, 5287, 2127, 4519, 2035, 2031, 4247, 4391, 4699, 5295, 4967, 3111, 3443, 4951, 1783, 2659, 2963, 3887, 4015, 2163, 4155, 1887, 2935, 1751, 3563, 3235, 4367, 2247, 2483, 4091, 4707, 4923, 3511, 5111, 3555, 3127, 4635, 3159, 4011, 1835, 1959, 2027, 3411, 4347, 4595, 4935, 5211, 2139, 2319, 2583, 2863, 3263, 3707, 4159, 5271, 5499, 5583, 5607, 2103, 3315, 3491, 5099, 2811, 3031, 3059, 3203, 3691, 3767, 3943, 4235, 4399, 4499, 5083, 4715, 5123, 5247, 2063, 2107, 2339, 3751, 4851, 4923, 2843, 2955, 3151, 3503, 4311, 3875, 1851, 2431, 2659, 2759, 2967, 3903, 3931, 4459, 4491, 5219, 5347, 5363, 5423, 1875, 4223, 5199, 5323, 2991, 1815, 1911, 2663, 2695, 3247, 3443, 3779, 4043, 4727, 5143, 5667, 3299, 5283, 2099, 3375, 3387, 3599, 3655, 3915, 4007, 4135, 4363, 5435, 1967, 3075, 5299, 1895, 2731, 3631, 5087, 2919, 2999, 3395, 3887, 5307, 2071, 2303, 2711, 3283, 3359, 3423, 3571, 3911, 4027, 4439, 4855, 4867, 5207, 5335, 2179, 3659, 2307, 3783, 3947, 4743, 5311, 5547, 5587, 3383, 3623, 4547, 4279, 4291, 4327, 3863, 3743, 4963, 1843, 4651, 2075, 2059, 2827, 3115, 4339, 2643, 3587, 3311, 5095, 4839, 5291, 4899, 2855, 1927, 2395, 0, 0, 2479, 0, 3295, 0, 0, 2039, 3871, 4067, 4167, 4195, 4199, 4219, 5371, 4331, 4463, 0, 4751, 0, 4947, 0, 0, 5127, 5171, 0, 0, 0, 5455, 5459, 5463, 5563, 5163, 5319, 1879, 1915, 1935, 2123, 2135, 2199, 2379, 2407, 2415, 2475, 2487, 2707, 2715, 2979, 3019, 3027, 3051, 3223, 3271, 3303, 3415, 3611, 3639, 3687, 3771, 3803, 3919, 4143, 4171, 4179, 4175, 4183, 4187, 4191, 4211, 4215, 4251, 4271, 4299, 4399, 4407, 4415, 4435, 4475, 4555, 4607, 4607, 4711, 4879, 4903, 4955, 4959, 5027, 5031, 5119, 5127, 5339, 5407, 5431, 2971, 5918, 4579, 0, 0, 1759, 2019, 1955, 1867, 1931, 1975, 2119, 2147, 2379, 2359, 2375, 2403, 2479, 2495, 2563, 2575, 2603, 2619, 2851, 2859, 2907, 2939, 2987, 3011, 2995, 3027, 3015, 3051, 3079, 3167, 3179, 3187, 3227, 3295, 3343, 3347, 3367, 3495, 3511, 3599, 3675, 3667, 3687, 3715, 3771, 4115, 3807, 3859, 3871, 3935, 3963, 3999, 4035, 4039, 4067, 4071, 4087, 4107, 4103, 4151, 4275, 4299, 4323, 4379, 4399, 4427, 4475, 4655, 4695, 4811, 4883, 4895, 4903, 4927, 4947, 4931, 4955, 4951, 4943, 4959, 4971, 5031, 5091, 5139, 5195, 5227, 5303, 5339, 5371, 5391, 5407, 5419, 5431, 5515, 5675, 5813, 5808, 5858, 1543, 1583, 1587, 5988, 6033, 6153, 5655, 5671, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1787, 1779, 1795, 5703, 1863, 1879, 1883, 1891, 1899, 1903, 1915, 1907, 1459, 5723, 1935, 1939, 1943, 1971, 5708, 1463, 1951, 1983, 5718, 1999, 2007, 1847, 2015, 2019, 6193, 2047, 2055, 1471, 2079, 2083, 2091, 2095, 1475, 2119, 2123, 2135, 2147, 2151, 2155, 2163, 2195, 2199, 2207, 2223, 2231, 2235, 2235, 2235, 5738, 3731, 2255, 2263, 5743, 2275, 2283, 2291, 2331, 2311, 2323, 2327, 2335, 2343, 2347, 2355, 2363, 2367, 2367, 2375, 2383, 2387, 2399, 2435, 2407, 2439, 2411, 2419, 2059, 2511, 2455, 2459, 2463, 2451, 2471, 2467, 2491, 5748, 2519, 2523, 2531, 2543, 2551, 2579, 5753, 5758, 2591, 2595, 2599, 2587, 2607, 1479, 1483, 2615, 2623, 2623, 5763, 2651, 2655, 2659, 2667, 5768, 2675, 2679, 2895, 2687, 1487, 2699, 2715, 2727, 2723, 5778, 2735, 5783, 2747, 2743, 2751, 2767, 2771, 1491, 2787, 2795, 2799, 2803, 1495, 5788, 1499, 2831, 2835, 2839, 2847, 6243, 2871, 5798, 5798, 4567, 2887, 2887, 1503, 5833, 6043, 2903, 2911, 1507, 2931, 2947, 2951, 2959, 2975, 1515, 1511, 2979, 5803, 2983, 3003, 3007, 3011, 3007, 3023, 3027, 3043, 3035, 3039, 3047, 3051, 3055, 3067, 3071, 3095, 3103, 3119, 3139, 5818, 3135, 3123, 3147, 3155, 3175, 5823, 3183, 3171, 3163, 1519, 3191, 3199, 3207, 3195, 1523, 3223, 3231, 5828, 3275, 3327, 3291, 1535, 3303, 1531, 1527, 1987, 1991, 3331, 3307, 4523, 1635, 3343, 3347, 3351, 3371, 3363, 5853, 1539, 3391, 3379, 3407, 3415, 5863, 3419, 3399, 3427, 1543, 3431, 3435, 3439, 3451, 5868, 3459, 1547, 3471, 5873, 3475, 1551, 3487, 3499, 3511, 3515, 5878, 5773, 5883, 3547, 5888, 3559, 3567, 3551, 3579, 3595, 3611, 3599, 3603, 3615, 3619, 5893, 3591, 3643, 3647, 1555, 3667, 3663, 5898, 3635, 3695, 5903, 5908, 3699, 3719, 3715, 3711, 1559, 3723, 3739, 3735, 3747, 5713, 3763, 5913, 3775, 5923, 3795, 3807, 3827, 5928, 3847, 3851, 5933, 5938, 3879, 3895, 1563, 3899, 1567, 1567, 3923, 3927, 3935, 3939, 3951, 1571, 3975, 5943, 4003, 5948, 4015, 5793, 4031, 5953, 5958, 5963, 1575, 1579, 4087, 5973, 5968, 5978, 5983, 4095, 4099, 4099, 4107, 1587, 4111, 1591, 1595, 5993, 4131, 4139, 4151, 1599, 5998, 4187, 6003, 6008, 4219, 4243, 1603, 4251, 4255, 4259, 6013, 6018, 6018, 4283, 1607, 6023, 4303, 4307, 1611, 6028, 4335, 1615, 4351, 4343, 4359, 6038, 4383, 1619, 4395, 4403, 4419, 1623, 6048, 6053, 1627, 6058, 4443, 6063, 4455, 4467, 4475, 6068, 6073, 4495, 6078, 4503, 5838, 1631, 4527, 4531, 1639, 4535, 2611, 6083, 6088, 5843, 5848, 4567, 4571, 5107, 1643, 4615, 4611, 4619, 2111, 4623, 4627, 4631, 4639, 6093, 4635, 4643, 4663, 4667, 4647, 4671, 4691, 4711, 4659, 4679, 4683, 4687, 6098, 6108, 6103, 1647, 4719, 4723, 4731, 6128, 4735, 6113, 1651, 1655, 6118, 6123, 1659, 4767, 4771, 4775, 4779, 4791, 4787, 4799, 4795, 4811, 4803, 4807, 4815, 1663, 4823, 4827, 1667, 4843, 4847, 6133, 4859, 4863, 1671, 4875, 1467, 6138, 6143, 1675, 1679, 4919, 4943, 4971, 4987, 6148, 5007, 5011, 5035, 5047, 6158, 5728, 5059, 5055, 5067, 5733, 5079, 5091, 6163, 6168, 5155, 5167, 5175, 6173, 5179, 5223, 5235, 5239, 5231, 5251, 5255, 6178, 5267, 1683, 5275, 6183, 1687, 5331, 2755, 5355, 6188, 6198, 1691, 1695, 5395, 6203, 1699, 6208, 5419, 5419, 5427, 6213, 5451, 1703, 5467, 5479, 5487, 5495, 1707, 6218, 5515, 5543, 5555, 1711, 1715, 5559, 6223, 1719, 6228, 6233, 6238, 5595, 1723, 5615, 5623, 5627, 5635, 5643, 5651, 6248, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]);
 91185  		nfcIndex = $toNativeArray($kindUint8, [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45, 1, 2, 3, 46, 4, 5, 0, 47, 48, 6, 7, 8, 49, 9, 50, 51, 10, 0, 0, 11, 52, 53, 12, 0, 54, 55, 56, 0, 57, 2, 3, 4, 5, 0, 0, 0, 0, 0, 0, 6, 7, 8, 9, 0, 10, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 58, 59, 0, 60, 61, 62, 63, 64, 65, 66, 67, 68, 63, 69, 70, 71, 0, 72, 73, 74, 75, 76, 0, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 0, 87, 0, 88, 89, 90, 91, 0, 0, 0, 0, 0, 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 93, 0, 0, 94, 0, 0, 95, 0, 96, 0, 0, 0, 97, 98, 99, 0, 13, 100, 101, 102, 103, 0, 0, 104, 0, 0, 0, 14, 15, 16, 17, 18, 19, 20, 21, 22, 105, 0, 0, 106, 107, 0, 108, 109, 110, 23, 24, 111, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 113, 0, 0, 0, 0, 0, 0, 0, 114, 0, 115, 0, 116, 0, 0, 0, 0, 0, 0, 0, 0, 117, 25, 26, 27, 118, 119, 0, 0, 0, 120, 0, 0, 121, 122, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 123, 124, 125, 0, 0, 0, 0, 126, 0, 0, 127, 128, 129, 130, 131, 0, 0, 132, 133, 0, 0, 0, 134, 135, 136, 137, 138, 139, 140, 141, 135, 136, 137, 138, 139, 140, 141, 135, 136, 137, 138, 139, 140, 141, 135, 136, 137, 138, 139, 140, 141, 135, 136, 137, 138, 139, 140, 141, 135, 136, 137, 138, 139, 140, 141, 135, 136, 137, 138, 139, 140, 141, 135, 136, 137, 138, 139, 140, 141, 135, 136, 137, 138, 139, 140, 141, 135, 136, 137, 138, 139, 140, 141, 135, 136, 137, 138, 139, 140, 141, 135, 136, 137, 138, 139, 140, 141, 135, 136, 137, 138, 139, 140, 141, 135, 136, 137, 138, 139, 140, 141, 135, 136, 137, 138, 139, 140, 141, 135, 136, 137, 138, 139, 140, 141, 135, 136, 137, 138, 139, 140, 141, 135, 136, 137, 138, 139, 140, 141, 135, 136, 137, 138, 139, 140, 141, 135, 136, 137, 138, 139, 140, 141, 135, 136, 137, 138, 139, 140, 141, 135, 136, 137, 138, 139, 140, 141, 135, 136, 137, 138, 139, 140, 141, 135, 136, 137, 138, 139, 140, 141, 135, 136, 137, 138, 139, 140, 142, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 29, 30, 31, 32, 33, 34, 35, 143, 144, 145, 0, 0, 146, 147, 148, 149, 0, 0, 0, 150, 151, 152, 153, 0, 0, 154, 155, 0, 0, 0, 0, 0, 0, 0, 156, 0, 0, 0, 157, 0, 158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 159, 0, 0, 160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 161, 162, 0, 163, 130, 0, 164, 165, 0, 0, 166, 63, 167, 0, 0, 0, 168, 169, 170, 0, 0, 171, 172, 115, 0, 173, 0, 174, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 175, 176, 177, 0, 0, 0, 0, 0, 115, 0, 0, 0, 0, 178, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 179, 180, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 181, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 182, 183, 184, 0, 185, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 186, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 187, 0, 188, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 189, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 37, 38, 39, 40, 41, 42, 43, 44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 12, 0, 0, 0, 0, 13, 0, 0, 0, 0, 14, 0, 15, 16, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]);
 91186  		nfcSparseOffset = new sliceType([0, 5, 9, 11, 13, 24, 40, 42, 47, 58, 73, 86, 94, 98, 103, 105, 122, 130, 137, 140, 147, 151, 155, 157, 159, 168, 172, 179, 184, 187, 197, 200, 207, 215, 218, 220, 222, 224, 229, 246, 258, 260, 266, 268, 270, 272, 274, 276, 278, 281, 284, 286, 289, 292, 296, 301, 310, 312, 315, 317, 328, 332, 346, 349, 355, 361, 372, 376, 378, 380, 382, 384, 386, 392, 396, 398, 400, 408, 412, 415, 417, 419, 421, 424, 426, 428, 430, 432, 438, 441, 443, 450, 456, 462, 470, 476, 482, 488, 492, 506, 515, 518, 521, 523, 526, 528, 532, 537, 539, 541, 546, 552, 554, 556, 558, 564, 567, 570, 578, 585, 588, 591, 593, 601, 604, 611, 614, 620, 622, 625, 627, 629, 631, 633, 636, 638, 640, 642, 655, 665, 667, 669, 675, 677, 680]);
 91187  		nfcSparseValues = $toNativeArray($kindStruct, [new valueRange.ptr(0, 4, 0), new valueRange.ptr(41216, 168, 168), new valueRange.ptr(33024, 175, 175), new valueRange.ptr(33024, 180, 180), new valueRange.ptr(33024, 184, 184), new valueRange.ptr(145, 3, 0), new valueRange.ptr(18146, 160, 161), new valueRange.ptr(18196, 175, 176), new valueRange.ptr(40960, 183, 183), new valueRange.ptr(0, 1, 0), new valueRange.ptr(40960, 146, 146), new valueRange.ptr(0, 1, 0), new valueRange.ptr(33024, 152, 157), new valueRange.ptr(6, 10, 0), new valueRange.ptr(40960, 129, 129), new valueRange.ptr(40960, 133, 133), new valueRange.ptr(40960, 137, 137), new valueRange.ptr(18496, 138, 138), new valueRange.ptr(18526, 139, 139), new valueRange.ptr(14023, 140, 140), new valueRange.ptr(14047, 141, 141), new valueRange.ptr(18550, 142, 142), new valueRange.ptr(40960, 146, 146), new valueRange.ptr(14077, 147, 148), new valueRange.ptr(0, 15, 0), new valueRange.ptr(40960, 131, 131), new valueRange.ptr(40960, 135, 135), new valueRange.ptr(40960, 139, 139), new valueRange.ptr(40960, 141, 141), new valueRange.ptr(14245, 144, 144), new valueRange.ptr(14257, 145, 145), new valueRange.ptr(14239, 147, 147), new valueRange.ptr(40960, 150, 150), new valueRange.ptr(14359, 151, 151), new valueRange.ptr(14305, 156, 156), new valueRange.ptr(14281, 157, 157), new valueRange.ptr(14323, 158, 158), new valueRange.ptr(40960, 180, 181), new valueRange.ptr(14365, 182, 182), new valueRange.ptr(14371, 183, 183), new valueRange.ptr(0, 1, 0), new valueRange.ptr(33074, 131, 135), new valueRange.ptr(1, 4, 0), new valueRange.ptr(33043, 129, 130), new valueRange.ptr(33074, 132, 132), new valueRange.ptr(33069, 133, 133), new valueRange.ptr(33037, 135, 135), new valueRange.ptr(0, 10, 0), new valueRange.ptr(33074, 144, 151), new valueRange.ptr(33049, 152, 152), new valueRange.ptr(33050, 153, 153), new valueRange.ptr(33051, 154, 154), new valueRange.ptr(14401, 162, 162), new valueRange.ptr(14407, 163, 163), new valueRange.ptr(14419, 164, 164), new valueRange.ptr(14413, 165, 165), new valueRange.ptr(14425, 166, 166), new valueRange.ptr(40960, 167, 167), new valueRange.ptr(0, 14, 0), new valueRange.ptr(14443, 128, 128), new valueRange.ptr(40960, 129, 129), new valueRange.ptr(14431, 130, 130), new valueRange.ptr(40960, 146, 146), new valueRange.ptr(14437, 147, 147), new valueRange.ptr(40960, 149, 149), new valueRange.ptr(33074, 150, 156), new valueRange.ptr(33074, 159, 162), new valueRange.ptr(33069, 163, 163), new valueRange.ptr(33074, 164, 164), new valueRange.ptr(33074, 167, 168), new valueRange.ptr(33069, 170, 170), new valueRange.ptr(33074, 171, 172), new valueRange.ptr(33069, 173, 173), new valueRange.ptr(0, 12, 0), new valueRange.ptr(33055, 145, 145), new valueRange.ptr(33074, 176, 176), new valueRange.ptr(33069, 177, 177), new valueRange.ptr(33074, 178, 179), new valueRange.ptr(33069, 180, 180), new valueRange.ptr(33074, 181, 182), new valueRange.ptr(33069, 183, 185), new valueRange.ptr(33074, 186, 186), new valueRange.ptr(33069, 187, 188), new valueRange.ptr(33074, 189, 189), new valueRange.ptr(33069, 190, 190), new valueRange.ptr(33074, 191, 191), new valueRange.ptr(5, 7, 0), new valueRange.ptr(33074, 128, 128), new valueRange.ptr(33074, 129, 129), new valueRange.ptr(33069, 130, 131), new valueRange.ptr(33069, 132, 133), new valueRange.ptr(33069, 134, 135), new valueRange.ptr(33069, 136, 137), new valueRange.ptr(33074, 138, 138), new valueRange.ptr(0, 3, 0), new valueRange.ptr(33074, 171, 177), new valueRange.ptr(33069, 178, 178), new valueRange.ptr(33074, 179, 179), new valueRange.ptr(0, 4, 0), new valueRange.ptr(33074, 150, 153), new valueRange.ptr(33074, 155, 163), new valueRange.ptr(33074, 165, 167), new valueRange.ptr(33074, 169, 173), new valueRange.ptr(0, 1, 0), new valueRange.ptr(33069, 153, 155), new valueRange.ptr(0, 16, 0), new valueRange.ptr(33074, 148, 161), new valueRange.ptr(33069, 163, 163), new valueRange.ptr(33074, 164, 165), new valueRange.ptr(33069, 166, 166), new valueRange.ptr(33074, 167, 168), new valueRange.ptr(33069, 169, 169), new valueRange.ptr(33074, 170, 172), new valueRange.ptr(33069, 173, 175), new valueRange.ptr(33046, 176, 176), new valueRange.ptr(33047, 177, 177), new valueRange.ptr(33048, 178, 178), new valueRange.ptr(33074, 179, 181), new valueRange.ptr(33069, 182, 182), new valueRange.ptr(33074, 183, 184), new valueRange.ptr(33069, 185, 186), new valueRange.ptr(33074, 187, 191), new valueRange.ptr(0, 7, 0), new valueRange.ptr(40960, 168, 168), new valueRange.ptr(16088, 169, 169), new valueRange.ptr(40960, 176, 176), new valueRange.ptr(16096, 177, 177), new valueRange.ptr(40960, 179, 179), new valueRange.ptr(16104, 180, 180), new valueRange.ptr(39170, 188, 188), new valueRange.ptr(8, 6, 0), new valueRange.ptr(33028, 141, 141), new valueRange.ptr(33074, 145, 145), new valueRange.ptr(33069, 146, 146), new valueRange.ptr(33074, 147, 147), new valueRange.ptr(33074, 148, 148), new valueRange.ptr(17692, 152, 159), new valueRange.ptr(0, 2, 0), new valueRange.ptr(33026, 188, 188), new valueRange.ptr(39168, 190, 190), new valueRange.ptr(8, 6, 0), new valueRange.ptr(40960, 135, 135), new valueRange.ptr(11422, 139, 140), new valueRange.ptr(33028, 141, 141), new valueRange.ptr(39168, 151, 151), new valueRange.ptr(17756, 156, 157), new valueRange.ptr(17772, 159, 159), new valueRange.ptr(0, 3, 0), new valueRange.ptr(17812, 179, 179), new valueRange.ptr(17820, 182, 182), new valueRange.ptr(33026, 188, 188), new valueRange.ptr(8, 3, 0), new valueRange.ptr(33028, 141, 141), new valueRange.ptr(17780, 153, 155), new valueRange.ptr(17804, 158, 158), new valueRange.ptr(0, 1, 0), new valueRange.ptr(33026, 188, 188), new valueRange.ptr(0, 1, 0), new valueRange.ptr(33028, 141, 141), new valueRange.ptr(0, 8, 0), new valueRange.ptr(40960, 135, 135), new valueRange.ptr(11446, 136, 136), new valueRange.ptr(11438, 139, 139), new valueRange.ptr(11454, 140, 140), new valueRange.ptr(33028, 141, 141), new valueRange.ptr(39168, 150, 151), new valueRange.ptr(17828, 156, 156), new valueRange.ptr(17836, 157, 157), new valueRange.ptr(0, 3, 0), new valueRange.ptr(40960, 146, 146), new valueRange.ptr(11462, 148, 148), new valueRange.ptr(39168, 190, 190), new valueRange.ptr(0, 6, 0), new valueRange.ptr(40960, 134, 135), new valueRange.ptr(11470, 138, 138), new valueRange.ptr(11486, 139, 139), new valueRange.ptr(11478, 140, 140), new valueRange.ptr(33028, 141, 141), new valueRange.ptr(39168, 151, 151), new valueRange.ptr(6145, 4, 0), new valueRange.ptr(40960, 134, 134), new valueRange.ptr(16112, 136, 136), new valueRange.ptr(33028, 141, 141), new valueRange.ptr(33056, 149, 150), new valueRange.ptr(0, 2, 0), new valueRange.ptr(33026, 188, 188), new valueRange.ptr(40960, 191, 191), new valueRange.ptr(0, 9, 0), new valueRange.ptr(11494, 128, 128), new valueRange.ptr(39168, 130, 130), new valueRange.ptr(40960, 134, 134), new valueRange.ptr(11502, 135, 135), new valueRange.ptr(11510, 136, 136), new valueRange.ptr(12112, 138, 138), new valueRange.ptr(11736, 139, 139), new valueRange.ptr(33028, 141, 141), new valueRange.ptr(39168, 149, 150), new valueRange.ptr(0, 2, 0), new valueRange.ptr(33028, 187, 188), new valueRange.ptr(39168, 190, 190), new valueRange.ptr(0, 6, 0), new valueRange.ptr(40960, 134, 135), new valueRange.ptr(11518, 138, 138), new valueRange.ptr(11534, 139, 139), new valueRange.ptr(11526, 140, 140), new valueRange.ptr(33028, 141, 141), new valueRange.ptr(39168, 151, 151), new valueRange.ptr(27626, 7, 0), new valueRange.ptr(39172, 138, 138), new valueRange.ptr(39168, 143, 143), new valueRange.ptr(40960, 153, 153), new valueRange.ptr(16120, 154, 154), new valueRange.ptr(12120, 156, 156), new valueRange.ptr(11747, 157, 157), new valueRange.ptr(11542, 158, 159), new valueRange.ptr(0, 2, 0), new valueRange.ptr(33058, 184, 185), new valueRange.ptr(33028, 186, 186), new valueRange.ptr(0, 1, 0), new valueRange.ptr(33059, 136, 139), new valueRange.ptr(0, 1, 0), new valueRange.ptr(33060, 184, 185), new valueRange.ptr(0, 1, 0), new valueRange.ptr(33061, 136, 139), new valueRange.ptr(0, 4, 0), new valueRange.ptr(33069, 152, 153), new valueRange.ptr(33069, 181, 181), new valueRange.ptr(33069, 183, 183), new valueRange.ptr(33067, 185, 185), new valueRange.ptr(0, 16, 0), new valueRange.ptr(9796, 131, 131), new valueRange.ptr(9803, 141, 141), new valueRange.ptr(9810, 146, 146), new valueRange.ptr(9817, 151, 151), new valueRange.ptr(9824, 156, 156), new valueRange.ptr(9789, 169, 169), new valueRange.ptr(33062, 177, 177), new valueRange.ptr(33063, 178, 178), new valueRange.ptr(19076, 179, 179), new valueRange.ptr(33064, 180, 180), new valueRange.ptr(19085, 181, 181), new valueRange.ptr(17844, 182, 182), new valueRange.ptr(33280, 183, 183), new valueRange.ptr(17852, 184, 184), new valueRange.ptr(33280, 185, 185), new valueRange.ptr(33063, 186, 189), new valueRange.ptr(0, 11, 0), new valueRange.ptr(33063, 128, 128), new valueRange.ptr(19094, 129, 129), new valueRange.ptr(33074, 130, 131), new valueRange.ptr(33028, 132, 132), new valueRange.ptr(33074, 134, 135), new valueRange.ptr(9838, 147, 147), new valueRange.ptr(9845, 157, 157), new valueRange.ptr(9852, 162, 162), new valueRange.ptr(9859, 167, 167), new valueRange.ptr(9866, 172, 172), new valueRange.ptr(9831, 185, 185), new valueRange.ptr(0, 1, 0), new valueRange.ptr(33069, 134, 134), new valueRange.ptr(0, 5, 0), new valueRange.ptr(40960, 165, 165), new valueRange.ptr(11550, 166, 166), new valueRange.ptr(39168, 174, 174), new valueRange.ptr(33026, 183, 183), new valueRange.ptr(33028, 185, 186), new valueRange.ptr(0, 1, 0), new valueRange.ptr(33069, 141, 141), new valueRange.ptr(0, 1, 0), new valueRange.ptr(40960, 128, 146), new valueRange.ptr(0, 1, 0), new valueRange.ptr(47360, 161, 181), new valueRange.ptr(0, 1, 0), new valueRange.ptr(39168, 168, 191), new valueRange.ptr(0, 1, 0), new valueRange.ptr(39168, 128, 130), new valueRange.ptr(0, 1, 0), new valueRange.ptr(33074, 157, 159), new valueRange.ptr(0, 2, 0), new valueRange.ptr(33028, 148, 148), new valueRange.ptr(33028, 180, 180), new valueRange.ptr(0, 2, 0), new valueRange.ptr(33028, 146, 146), new valueRange.ptr(33074, 157, 157), new valueRange.ptr(0, 1, 0), new valueRange.ptr(33073, 169, 169), new valueRange.ptr(4, 2, 0), new valueRange.ptr(33070, 185, 186), new valueRange.ptr(33069, 187, 187), new valueRange.ptr(0, 2, 0), new valueRange.ptr(33074, 151, 151), new valueRange.ptr(33069, 152, 152), new valueRange.ptr(0, 3, 0), new valueRange.ptr(33028, 160, 160), new valueRange.ptr(33074, 181, 188), new valueRange.ptr(33069, 191, 191), new valueRange.ptr(0, 4, 0), new valueRange.ptr(33074, 176, 180), new valueRange.ptr(33069, 181, 186), new valueRange.ptr(33074, 187, 188), new valueRange.ptr(33069, 189, 189), new valueRange.ptr(0, 8, 0), new valueRange.ptr(11622, 128, 128), new valueRange.ptr(11630, 129, 129), new valueRange.ptr(40960, 130, 130), new valueRange.ptr(11638, 131, 131), new valueRange.ptr(33028, 132, 132), new valueRange.ptr(33074, 171, 171), new valueRange.ptr(33069, 172, 172), new valueRange.ptr(33074, 173, 179), new valueRange.ptr(0, 1, 0), new valueRange.ptr(33028, 170, 171), new valueRange.ptr(0, 2, 0), new valueRange.ptr(33026, 166, 166), new valueRange.ptr(33028, 178, 179), new valueRange.ptr(0, 1, 0), new valueRange.ptr(33026, 183, 183), new valueRange.ptr(0, 10, 0), new valueRange.ptr(33074, 144, 146), new valueRange.ptr(33025, 148, 148), new valueRange.ptr(33069, 149, 153), new valueRange.ptr(33074, 154, 155), new valueRange.ptr(33069, 156, 159), new valueRange.ptr(33074, 160, 160), new valueRange.ptr(33025, 162, 168), new valueRange.ptr(33069, 173, 173), new valueRange.ptr(33074, 180, 180), new valueRange.ptr(33074, 184, 185), new valueRange.ptr(4, 3, 0), new valueRange.ptr(1075, 128, 129), new valueRange.ptr(33024, 151, 151), new valueRange.ptr(33024, 190, 190), new valueRange.ptr(0, 13, 0), new valueRange.ptr(33074, 144, 145), new valueRange.ptr(33025, 146, 147), new valueRange.ptr(33074, 148, 151), new valueRange.ptr(33025, 152, 154), new valueRange.ptr(33074, 155, 156), new valueRange.ptr(33074, 161, 161), new valueRange.ptr(33025, 165, 166), new valueRange.ptr(33074, 167, 167), new valueRange.ptr(33069, 168, 168), new valueRange.ptr(33074, 169, 169), new valueRange.ptr(33025, 170, 171), new valueRange.ptr(33069, 172, 175), new valueRange.ptr(33074, 176, 176), new valueRange.ptr(17019, 2, 0), new valueRange.ptr(440, 166, 166), new valueRange.ptr(87, 170, 171), new valueRange.ptr(7, 5, 0), new valueRange.ptr(40960, 144, 144), new valueRange.ptr(40960, 146, 146), new valueRange.ptr(40960, 148, 148), new valueRange.ptr(15289, 154, 155), new valueRange.ptr(15303, 174, 174), new valueRange.ptr(14, 5, 0), new valueRange.ptr(15310, 141, 142), new valueRange.ptr(15317, 143, 143), new valueRange.ptr(40960, 144, 144), new valueRange.ptr(40960, 146, 146), new valueRange.ptr(40960, 148, 148), new valueRange.ptr(25608, 10, 0), new valueRange.ptr(40960, 131, 131), new valueRange.ptr(15331, 132, 132), new valueRange.ptr(40960, 136, 136), new valueRange.ptr(15338, 137, 137), new valueRange.ptr(40960, 139, 139), new valueRange.ptr(15345, 140, 140), new valueRange.ptr(40960, 163, 163), new valueRange.ptr(15352, 164, 165), new valueRange.ptr(15359, 166, 166), new valueRange.ptr(40960, 188, 188), new valueRange.ptr(7, 3, 0), new valueRange.ptr(15464, 160, 161), new valueRange.ptr(15506, 162, 163), new valueRange.ptr(15548, 170, 173), new valueRange.ptr(4, 1, 0), new valueRange.ptr(1163, 169, 170), new valueRange.ptr(0, 1, 0), new valueRange.ptr(17629, 156, 156), new valueRange.ptr(0, 1, 0), new valueRange.ptr(33074, 175, 177), new valueRange.ptr(0, 1, 0), new valueRange.ptr(33028, 191, 191), new valueRange.ptr(0, 1, 0), new valueRange.ptr(33074, 160, 191), new valueRange.ptr(0, 5, 0), new valueRange.ptr(33068, 170, 170), new valueRange.ptr(33073, 171, 171), new valueRange.ptr(33075, 172, 172), new valueRange.ptr(33070, 173, 173), new valueRange.ptr(33071, 174, 175), new valueRange.ptr(0, 3, 0), new valueRange.ptr(19103, 179, 179), new valueRange.ptr(19103, 181, 182), new valueRange.ptr(19103, 186, 191), new valueRange.ptr(0, 1, 0), new valueRange.ptr(19103, 143, 163), new valueRange.ptr(0, 1, 0), new valueRange.ptr(33024, 174, 190), new valueRange.ptr(0, 7, 0), new valueRange.ptr(33024, 132, 132), new valueRange.ptr(33024, 135, 135), new valueRange.ptr(33024, 144, 144), new valueRange.ptr(33024, 158, 158), new valueRange.ptr(33024, 161, 161), new valueRange.ptr(33024, 178, 178), new valueRange.ptr(33024, 187, 187), new valueRange.ptr(0, 3, 0), new valueRange.ptr(33024, 128, 128), new valueRange.ptr(33024, 139, 139), new valueRange.ptr(33024, 142, 142), new valueRange.ptr(0, 2, 0), new valueRange.ptr(33074, 175, 175), new valueRange.ptr(33074, 180, 189), new valueRange.ptr(0, 1, 0), new valueRange.ptr(33074, 158, 159), new valueRange.ptr(0, 1, 0), new valueRange.ptr(33074, 176, 177), new valueRange.ptr(0, 1, 0), new valueRange.ptr(33028, 134, 134), new valueRange.ptr(0, 2, 0), new valueRange.ptr(33028, 132, 132), new valueRange.ptr(33074, 160, 177), new valueRange.ptr(0, 1, 0), new valueRange.ptr(33069, 171, 173), new valueRange.ptr(0, 1, 0), new valueRange.ptr(33028, 147, 147), new valueRange.ptr(0, 1, 0), new valueRange.ptr(33026, 179, 179), new valueRange.ptr(0, 1, 0), new valueRange.ptr(33028, 128, 128), new valueRange.ptr(0, 5, 0), new valueRange.ptr(33074, 176, 176), new valueRange.ptr(33074, 178, 179), new valueRange.ptr(33069, 180, 180), new valueRange.ptr(33074, 183, 184), new valueRange.ptr(33074, 190, 191), new valueRange.ptr(0, 2, 0), new valueRange.ptr(33074, 129, 129), new valueRange.ptr(33028, 182, 182), new valueRange.ptr(0, 1, 0), new valueRange.ptr(33028, 173, 173), new valueRange.ptr(0, 6, 0), new valueRange.ptr(58624, 128, 128), new valueRange.ptr(50688, 129, 155), new valueRange.ptr(58624, 156, 156), new valueRange.ptr(50688, 157, 183), new valueRange.ptr(58624, 184, 184), new valueRange.ptr(50688, 185, 191), new valueRange.ptr(0, 5, 0), new valueRange.ptr(50688, 128, 147), new valueRange.ptr(58624, 148, 148), new valueRange.ptr(50688, 149, 175), new valueRange.ptr(58624, 176, 176), new valueRange.ptr(50688, 177, 191), new valueRange.ptr(0, 5, 0), new valueRange.ptr(50688, 128, 139), new valueRange.ptr(58624, 140, 140), new valueRange.ptr(50688, 141, 167), new valueRange.ptr(58624, 168, 168), new valueRange.ptr(50688, 169, 191), new valueRange.ptr(0, 7, 0), new valueRange.ptr(50688, 128, 131), new valueRange.ptr(58624, 132, 132), new valueRange.ptr(50688, 133, 159), new valueRange.ptr(58624, 160, 160), new valueRange.ptr(50688, 161, 187), new valueRange.ptr(58624, 188, 188), new valueRange.ptr(50688, 189, 191), new valueRange.ptr(0, 5, 0), new valueRange.ptr(50688, 128, 151), new valueRange.ptr(58624, 152, 152), new valueRange.ptr(50688, 153, 179), new valueRange.ptr(58624, 180, 180), new valueRange.ptr(50688, 181, 191), new valueRange.ptr(0, 5, 0), new valueRange.ptr(50688, 128, 143), new valueRange.ptr(58624, 144, 144), new valueRange.ptr(50688, 145, 171), new valueRange.ptr(58624, 172, 172), new valueRange.ptr(50688, 173, 191), new valueRange.ptr(0, 5, 0), new valueRange.ptr(50688, 128, 135), new valueRange.ptr(58624, 136, 136), new valueRange.ptr(50688, 137, 163), new valueRange.ptr(58624, 164, 164), new valueRange.ptr(50688, 165, 191), new valueRange.ptr(0, 3, 0), new valueRange.ptr(50688, 128, 135), new valueRange.ptr(58624, 136, 136), new valueRange.ptr(50688, 137, 163), new valueRange.ptr(6, 13, 0), new valueRange.ptr(17296, 157, 157), new valueRange.ptr(33045, 158, 158), new valueRange.ptr(17410, 159, 159), new valueRange.ptr(17392, 170, 171), new valueRange.ptr(17652, 172, 172), new valueRange.ptr(17660, 173, 173), new valueRange.ptr(17224, 174, 177), new valueRange.ptr(17254, 178, 180), new valueRange.ptr(17278, 181, 182), new valueRange.ptr(17290, 184, 184), new valueRange.ptr(17302, 185, 187), new valueRange.ptr(17326, 188, 188), new valueRange.ptr(17332, 190, 190), new valueRange.ptr(6, 8, 0), new valueRange.ptr(17338, 128, 129), new valueRange.ptr(17350, 131, 132), new valueRange.ptr(17368, 134, 137), new valueRange.ptr(17404, 138, 138), new valueRange.ptr(17272, 139, 139), new valueRange.ptr(17248, 140, 140), new valueRange.ptr(17320, 141, 141), new valueRange.ptr(17362, 142, 142), new valueRange.ptr(0, 2, 0), new valueRange.ptr(33024, 164, 165), new valueRange.ptr(33024, 176, 177), new valueRange.ptr(0, 2, 0), new valueRange.ptr(33024, 155, 157), new valueRange.ptr(33280, 158, 163), new valueRange.ptr(0, 1, 0), new valueRange.ptr(33024, 144, 144), new valueRange.ptr(0, 2, 0), new valueRange.ptr(33024, 153, 153), new valueRange.ptr(33280, 178, 180), new valueRange.ptr(0, 1, 0), new valueRange.ptr(33024, 188, 189), new valueRange.ptr(0, 3, 0), new valueRange.ptr(33074, 160, 166), new valueRange.ptr(33069, 167, 173), new valueRange.ptr(33074, 174, 175), new valueRange.ptr(0, 4, 0), new valueRange.ptr(33024, 137, 140), new valueRange.ptr(33024, 176, 178), new valueRange.ptr(33024, 180, 180), new valueRange.ptr(33024, 182, 191), new valueRange.ptr(0, 1, 0), new valueRange.ptr(33024, 129, 140), new valueRange.ptr(0, 1, 0), new valueRange.ptr(33024, 181, 186), new valueRange.ptr(0, 4, 0), new valueRange.ptr(19103, 158, 159), new valueRange.ptr(19103, 163, 163), new valueRange.ptr(19103, 165, 166), new valueRange.ptr(19103, 170, 175), new valueRange.ptr(0, 5, 0), new valueRange.ptr(19103, 130, 135), new valueRange.ptr(19103, 138, 143), new valueRange.ptr(19103, 146, 151), new valueRange.ptr(19103, 154, 156), new valueRange.ptr(33024, 163, 163), new valueRange.ptr(0, 1, 0), new valueRange.ptr(33069, 189, 189), new valueRange.ptr(0, 1, 0), new valueRange.ptr(33069, 160, 160), new valueRange.ptr(0, 1, 0), new valueRange.ptr(33074, 182, 186), new valueRange.ptr(44, 5, 0), new valueRange.ptr(33069, 141, 141), new valueRange.ptr(33074, 143, 143), new valueRange.ptr(33074, 184, 184), new valueRange.ptr(33025, 185, 186), new valueRange.ptr(33028, 191, 191), new valueRange.ptr(0, 2, 0), new valueRange.ptr(33074, 165, 165), new valueRange.ptr(33069, 166, 166), new valueRange.ptr(0, 2, 0), new valueRange.ptr(33028, 134, 134), new valueRange.ptr(33028, 191, 191), new valueRange.ptr(6142, 7, 0), new valueRange.ptr(40960, 153, 153), new valueRange.ptr(16952, 154, 154), new valueRange.ptr(40960, 155, 155), new valueRange.ptr(16962, 156, 156), new valueRange.ptr(40960, 165, 165), new valueRange.ptr(16972, 171, 171), new valueRange.ptr(33028, 185, 186), new valueRange.ptr(0, 6, 0), new valueRange.ptr(33074, 128, 130), new valueRange.ptr(39168, 167, 167), new valueRange.ptr(11646, 174, 174), new valueRange.ptr(11656, 175, 175), new valueRange.ptr(40960, 177, 178), new valueRange.ptr(33028, 179, 180), new valueRange.ptr(0, 2, 0), new valueRange.ptr(33028, 128, 128), new valueRange.ptr(33026, 138, 138), new valueRange.ptr(0, 2, 0), new valueRange.ptr(33028, 181, 181), new valueRange.ptr(33026, 182, 182), new valueRange.ptr(2, 1, 0), new valueRange.ptr(33026, 169, 170), new valueRange.ptr(0, 7, 0), new valueRange.ptr(40960, 135, 135), new valueRange.ptr(11666, 139, 139), new valueRange.ptr(11676, 140, 140), new valueRange.ptr(33028, 141, 141), new valueRange.ptr(39168, 151, 151), new valueRange.ptr(33074, 166, 172), new valueRange.ptr(33074, 176, 180), new valueRange.ptr(0, 2, 0), new valueRange.ptr(33028, 130, 130), new valueRange.ptr(33026, 134, 134), new valueRange.ptr(27482, 6, 0), new valueRange.ptr(39168, 176, 176), new valueRange.ptr(40960, 185, 185), new valueRange.ptr(39168, 186, 186), new valueRange.ptr(11696, 187, 187), new valueRange.ptr(11686, 188, 189), new valueRange.ptr(11706, 190, 190), new valueRange.ptr(0, 2, 0), new valueRange.ptr(33028, 130, 130), new valueRange.ptr(33026, 131, 131), new valueRange.ptr(0, 5, 0), new valueRange.ptr(39168, 175, 175), new valueRange.ptr(40960, 184, 185), new valueRange.ptr(11716, 186, 186), new valueRange.ptr(11726, 187, 187), new valueRange.ptr(33028, 191, 191), new valueRange.ptr(0, 1, 0), new valueRange.ptr(33026, 128, 128), new valueRange.ptr(0, 2, 0), new valueRange.ptr(33028, 182, 182), new valueRange.ptr(33026, 183, 183), new valueRange.ptr(0, 1, 0), new valueRange.ptr(33028, 171, 171), new valueRange.ptr(0, 1, 0), new valueRange.ptr(33028, 180, 180), new valueRange.ptr(0, 1, 0), new valueRange.ptr(33028, 135, 135), new valueRange.ptr(0, 1, 0), new valueRange.ptr(33028, 153, 153), new valueRange.ptr(0, 2, 0), new valueRange.ptr(33026, 130, 130), new valueRange.ptr(33028, 132, 133), new valueRange.ptr(0, 1, 0), new valueRange.ptr(33025, 176, 180), new valueRange.ptr(0, 1, 0), new valueRange.ptr(33074, 176, 182), new valueRange.ptr(0, 1, 0), new valueRange.ptr(33025, 158, 158), new valueRange.ptr(0, 12, 0), new valueRange.ptr(17868, 158, 158), new valueRange.ptr(17878, 159, 159), new valueRange.ptr(17930, 160, 160), new valueRange.ptr(17944, 161, 161), new valueRange.ptr(17958, 162, 162), new valueRange.ptr(17972, 163, 163), new valueRange.ptr(17986, 164, 164), new valueRange.ptr(33067, 165, 166), new valueRange.ptr(33025, 167, 169), new valueRange.ptr(33072, 173, 173), new valueRange.ptr(33067, 174, 178), new valueRange.ptr(33069, 187, 191), new valueRange.ptr(0, 9, 0), new valueRange.ptr(33069, 128, 130), new valueRange.ptr(33074, 133, 137), new valueRange.ptr(33069, 138, 139), new valueRange.ptr(33074, 170, 173), new valueRange.ptr(17888, 187, 187), new valueRange.ptr(17898, 188, 188), new valueRange.ptr(18000, 189, 189), new valueRange.ptr(18028, 190, 190), new valueRange.ptr(18014, 191, 191), new valueRange.ptr(0, 1, 0), new valueRange.ptr(18042, 128, 128), new valueRange.ptr(0, 1, 0), new valueRange.ptr(33074, 130, 132), new valueRange.ptr(0, 5, 0), new valueRange.ptr(33074, 128, 134), new valueRange.ptr(33074, 136, 152), new valueRange.ptr(33074, 155, 161), new valueRange.ptr(33074, 163, 164), new valueRange.ptr(33074, 166, 170), new valueRange.ptr(0, 1, 0), new valueRange.ptr(33069, 144, 150), new valueRange.ptr(0, 2, 0), new valueRange.ptr(33074, 132, 137), new valueRange.ptr(33026, 138, 138), new valueRange.ptr(0, 1, 0), new valueRange.ptr(33024, 147, 147)]);
 91188  		nfkcValues = $toNativeArray($kindUint16, [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40960, 40960, 40960, 0, 0, 40960, 40960, 40960, 40960, 40960, 40960, 40960, 40960, 40960, 40960, 40960, 40960, 40960, 40960, 40960, 40960, 0, 40960, 40960, 40960, 40960, 40960, 40960, 40960, 40960, 40960, 0, 0, 0, 0, 0, 0, 40960, 40960, 40960, 40960, 40960, 40960, 40960, 40960, 40960, 40960, 40960, 40960, 40960, 40960, 40960, 40960, 0, 40960, 40960, 40960, 40960, 40960, 40960, 40960, 40960, 40960, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12143, 12148, 18056, 12153, 18071, 18076, 40960, 18086, 12258, 12263, 18091, 12283, 12398, 12403, 12408, 18111, 0, 12548, 12583, 12588, 18121, 18126, 18141, 0, 40960, 12723, 12728, 12733, 18191, 12853, 0, 0, 12923, 12928, 18201, 12933, 18216, 18221, 40960, 18231, 13038, 13043, 18236, 13063, 13183, 13188, 13193, 18256, 0, 13333, 13368, 13373, 18266, 18271, 18286, 0, 40960, 13513, 13518, 13523, 18336, 13648, 0, 13673, 12158, 12938, 18061, 18206, 12188, 12968, 12208, 12988, 12213, 12993, 12218, 12998, 12223, 13003, 12233, 13013, 0, 0, 18096, 18241, 12273, 13053, 12278, 13058, 12308, 13088, 12293, 13073, 12333, 13113, 12343, 13123, 12348, 13128, 12358, 13138, 12363, 13143, 0, 0, 12413, 13198, 12418, 13203, 12423, 13208, 12458, 13238, 12428, 0, 6493, 6631, 12468, 13248, 12488, 13273, 0, 12498, 13283, 12508, 13293, 12503, 13288, 7084, 7220, 0, 0, 12543, 13328, 12568, 13353, 12558, 13343, 7260, 0, 0, 18131, 18276, 12593, 13378, 12603, 13388, 0, 0, 12633, 13418, 12658, 13443, 12643, 13428, 18166, 18311, 12668, 13453, 12683, 13468, 18171, 18316, 12708, 13498, 12693, 13483, 0, 0, 18181, 18326, 18186, 18331, 12738, 13528, 12748, 13538, 12753, 13543, 12783, 13573, 12818, 13608, 12858, 13653, 12878, 12893, 13693, 12903, 13703, 12908, 13708, 167, 0, 0, 0, 0, 11758, 11764, 11770, 6514, 6517, 6664, 6535, 6538, 6718, 12168, 12948, 12438, 13218, 12608, 13393, 12758, 13548, 14799, 15198, 14792, 15191, 14806, 15205, 14785, 15184, 0, 14512, 14911, 14505, 14904, 13747, 13765, 0, 0, 12353, 13133, 12478, 13263, 18156, 18301, 14736, 15135, 13783, 13789, 13253, 6466, 6469, 6607, 12328, 13108, 0, 0, 12538, 13323, 14519, 14918, 13741, 13759, 13753, 13771, 12173, 12953, 12178, 12958, 12298, 13078, 12303, 13083, 12443, 13223, 12448, 13228, 12613, 13398, 12618, 13403, 12648, 13433, 12653, 13438, 12763, 13553, 12768, 13558, 12678, 13463, 12703, 13493, 0, 0, 12378, 13158, 0, 0, 0, 0, 0, 0, 18066, 18211, 18106, 18251, 14687, 15086, 14652, 15051, 18136, 18281, 14680, 15079, 12868, 13663, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39218, 39218, 39218, 39218, 39218, 33074, 39218, 39218, 39218, 39218, 39218, 39218, 39218, 33074, 33074, 39218, 33074, 39218, 33074, 39218, 39218, 33075, 33069, 33069, 33069, 33069, 33075, 39211, 33069, 33069, 33069, 33069, 33069, 33065, 33065, 39213, 39213, 39213, 39213, 39209, 39209, 33069, 33069, 33069, 33069, 39213, 39213, 33069, 39213, 39213, 33069, 33069, 33025, 33025, 33025, 33025, 39169, 33069, 33069, 33069, 33069, 33074, 33074, 33074, 18862, 18867, 39218, 18872, 19057, 39222, 33074, 33069, 33069, 33069, 33074, 33074, 33074, 33069, 33069, 0, 33074, 33074, 33074, 33069, 33069, 33069, 33069, 33074, 33075, 33069, 33069, 33074, 33076, 33077, 33077, 33076, 33077, 33077, 33076, 33074, 33074, 33074, 33074, 33074, 33074, 33074, 33074, 33074, 33074, 33074, 33074, 33074, 0, 0, 0, 0, 368, 0, 0, 0, 0, 0, 17061, 0, 0, 0, 55, 0, 0, 0, 0, 0, 16986, 17531, 13801, 206, 13831, 13843, 13861, 0, 13891, 0, 13909, 13939, 15880, 40960, 0, 0, 0, 40960, 0, 40960, 0, 40960, 0, 0, 0, 0, 0, 40960, 0, 40960, 0, 0, 0, 40960, 0, 0, 0, 40960, 13879, 13927, 18430, 13975, 18472, 13993, 15984, 40960, 0, 0, 0, 40960, 0, 40960, 0, 40960, 0, 0, 0, 0, 0, 40960, 0, 40960, 0, 0, 0, 40960, 0, 0, 0, 40960, 18496, 18526, 14023, 14047, 18550, 0, 446, 464, 428, 17164, 17170, 506, 488, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 470, 491, 494, 0, 392, 455, 0, 0, 0, 422, 0, 0, 0, 0, 0, 0, 14113, 14125, 0, 14107, 0, 0, 40960, 14089, 0, 0, 0, 0, 14173, 14149, 14191, 0, 40960, 0, 0, 40960, 0, 40960, 40960, 40960, 40960, 14161, 40960, 0, 0, 0, 40960, 0, 0, 0, 0, 40960, 0, 0, 0, 40960, 0, 0, 0, 40960, 0, 40960, 0, 0, 40960, 0, 0, 40960, 0, 40960, 40960, 40960, 40960, 14293, 40960, 0, 0, 0, 40960, 0, 0, 14131, 14263, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14095, 14227, 14101, 14233, 0, 0, 14119, 14251, 40960, 40960, 14377, 14383, 14137, 14269, 14143, 14275, 0, 0, 14155, 14287, 14167, 14299, 14179, 14311, 40960, 40960, 14389, 14395, 14221, 14353, 14185, 14317, 14197, 14329, 14203, 14335, 14209, 14341, 0, 0, 14215, 14347, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7521, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33069, 33074, 33074, 33074, 33074, 33069, 33074, 33074, 33074, 33070, 33069, 33074, 33074, 33074, 33074, 33074, 33074, 33069, 33069, 33069, 33069, 33069, 33069, 33074, 33074, 33069, 33074, 33074, 33070, 33073, 33074, 33029, 33030, 33031, 33032, 33033, 33034, 33035, 33036, 33037, 33038, 33038, 33039, 33040, 33041, 0, 33042, 0, 0, 0, 0, 0, 0, 0, 0, 40960, 0, 40960, 33046, 33047, 33048, 33049, 33050, 33051, 33052, 33053, 39218, 39218, 39213, 33069, 33074, 33074, 33074, 33074, 33074, 33069, 33074, 33074, 33069, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33054, 0, 0, 0, 0, 7556, 8211, 8271, 8266, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40960, 11558, 40960, 11566, 40960, 11574, 40960, 11582, 40960, 11590, 0, 0, 40960, 11598, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33026, 39168, 0, 0, 0, 0, 40960, 11606, 40960, 11614, 40960, 40960, 105, 107, 111, 131, 245, 248, 1043, 133, 137, 139, 260, 263, 266, 143, 0, 151, 155, 224, 159, 254, 1047, 1051, 161, 169, 171, 1059, 299, 173, 1063, 446, 449, 452, 506, 509, 147, 165, 171, 173, 446, 449, 491, 506, 509, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 524, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 251, 135, 257, 212, 266, 141, 269, 272, 278, 284, 287, 290, 1067, 362, 296, 1071, 365, 305, 302, 308, 311, 314, 317, 320, 332, 335, 236, 338, 341, 1055, 344, 347, 181, 350, 353, 356, 464, 33074, 33074, 33069, 33074, 33074, 33074, 33074, 33074, 33074, 33074, 33069, 33074, 33074, 33077, 33066, 33069, 33065, 33074, 33074, 33074, 33074, 33074, 33074, 33074, 33074, 33074, 33074, 33074, 33074, 33074, 33074, 33074, 33074, 33074, 33074, 33074, 33074, 33074, 33074, 33074, 33074, 33074, 33074, 33074, 33074, 33074, 33074, 33074, 33074, 33074, 33074, 33074, 33074, 33074, 33075, 33073, 33073, 33069, 0, 33074, 33076, 33069, 33074, 33069, 12183, 12963, 12193, 12973, 12198, 12978, 12203, 12983, 14540, 14939, 12228, 13008, 12238, 13018, 12253, 13033, 12243, 13023, 12248, 13028, 14575, 14974, 14582, 14981, 12313, 13093, 12318, 13098, 14596, 14995, 12323, 13103, 12338, 13118, 12368, 13148, 12383, 13163, 12373, 13153, 12388, 13168, 12393, 13173, 12463, 13243, 14603, 15002, 12473, 13258, 12483, 13268, 12493, 13278, 18116, 18261, 14610, 15009, 12518, 13303, 12513, 13298, 12523, 13308, 12528, 13313, 12533, 13318, 12553, 13338, 12563, 13348, 12578, 13363, 12573, 13358, 14645, 15044, 14659, 15058, 14666, 15065, 14673, 15072, 12623, 13408, 12628, 13413, 12638, 13423, 18161, 18306, 14743, 15142, 12663, 13448, 12673, 13458, 18176, 18321, 14750, 15149, 14757, 15156, 14764, 15163, 12688, 13473, 12698, 13488, 12718, 13508, 12713, 13503, 12778, 13568, 12793, 13583, 12788, 13578, 14771, 15170, 14778, 15177, 12798, 13588, 12803, 13593, 12808, 13598, 12813, 13603, 12828, 13618, 12823, 13613, 12833, 13628, 12838, 13633, 12843, 13638, 12873, 13668, 12898, 13698, 12913, 13713, 12918, 13718, 13178, 13478, 13623, 13683, 7136, 17111, 0, 0, 0, 0, 18081, 18226, 12163, 12943, 14456, 14855, 14449, 14848, 14470, 14869, 14463, 14862, 14526, 14925, 14484, 14883, 14477, 14876, 14498, 14897, 14491, 14890, 14533, 14932, 18101, 18246, 12288, 13068, 12268, 13048, 14554, 14953, 14547, 14946, 14568, 14967, 14561, 14960, 14589, 14988, 12433, 13213, 12453, 13233, 18151, 18296, 12598, 13383, 14624, 15023, 14617, 15016, 14638, 15037, 14631, 15030, 14729, 15128, 14701, 15100, 14694, 15093, 14715, 15114, 14708, 15107, 14722, 15121, 12773, 13563, 12743, 13533, 14820, 15219, 14813, 15212, 14834, 15233, 14827, 15226, 14841, 15240, 12848, 13643, 12888, 13688, 12883, 13678, 12863, 13658, 0, 0, 0, 0, 0, 0, 18436, 18442, 18718, 18742, 18726, 18750, 18734, 18758, 18346, 18352, 18574, 18598, 18582, 18606, 18590, 18614, 18454, 18460, 15800, 15816, 15808, 15824, 0, 0, 18358, 18364, 15592, 15608, 15600, 15616, 0, 0, 18478, 18484, 18766, 18790, 18774, 18798, 18782, 18806, 18370, 18376, 18622, 18646, 18630, 18654, 18638, 18662, 18502, 18508, 15896, 15920, 15904, 15928, 15912, 15936, 18382, 18388, 15640, 15664, 15648, 15672, 15656, 15680, 18514, 18520, 15944, 15960, 15952, 15968, 0, 0, 18394, 18400, 15688, 15704, 15696, 15712, 0, 0, 18532, 18538, 16000, 16024, 16008, 16032, 16016, 16040, 0, 18406, 0, 15720, 0, 15728, 0, 15736, 18556, 18562, 18814, 18838, 18822, 18846, 18830, 18854, 18412, 18418, 18670, 18694, 18678, 18702, 18686, 18710, 18424, 17182, 13969, 17188, 18466, 17194, 13987, 17200, 14017, 17206, 14041, 17212, 18544, 17218, 0, 0, 15776, 15784, 16772, 16802, 16782, 16812, 16792, 16822, 15576, 15584, 16592, 16622, 16602, 16632, 16612, 16642, 15848, 15856, 16832, 16862, 16842, 16872, 16852, 16882, 15624, 15632, 16652, 16682, 16662, 16692, 16672, 16702, 16064, 16072, 16892, 16922, 16902, 16932, 16912, 16942, 15744, 15752, 16712, 16742, 16722, 16752, 16732, 16762, 13957, 13951, 15760, 13963, 15768, 0, 18448, 15792, 13813, 13807, 13795, 17134, 13819, 17031, 467, 17031, 17056, 17538, 15832, 13981, 15840, 0, 18490, 15864, 13825, 17140, 13837, 17146, 13849, 17545, 17552, 17559, 14005, 13999, 15872, 17636, 0, 0, 14011, 15888, 13873, 13867, 13855, 17152, 0, 17566, 17573, 17580, 14059, 14053, 15976, 17644, 14029, 14035, 14065, 15992, 13921, 13915, 13903, 17164, 13897, 17524, 17531, 129, 0, 0, 16048, 14071, 16056, 0, 18568, 16080, 13885, 17158, 13933, 17176, 13945, 16986, 17036, 0, 7128, 7132, 71, 7252, 0, 7144, 7148, 233, 0, 7256, 143, 81, 81, 81, 145, 218, 83, 83, 89, 153, 0, 93, 6541, 0, 0, 97, 99, 101, 101, 101, 0, 0, 6559, 7112, 6568, 0, 117, 0, 440, 0, 117, 0, 87, 17106, 69, 71, 0, 139, 75, 77, 0, 91, 159, 533, 536, 539, 542, 147, 0, 7064, 488, 449, 377, 416, 1123, 0, 0, 0, 0, 73, 137, 139, 147, 149, 0, 0, 0, 0, 0, 0, 8750, 8762, 8942, 8726, 8858, 8738, 8864, 8888, 8900, 8744, 8906, 8756, 8894, 8912, 8918, 7356, 83, 6490, 7076, 6499, 109, 6571, 7120, 7496, 6502, 113, 6583, 7124, 89, 71, 73, 91, 147, 6628, 7192, 6637, 173, 6754, 7244, 7516, 6640, 177, 6757, 7248, 153, 135, 137, 155, 0, 15366, 0, 40960, 15373, 40960, 0, 15380, 40960, 15387, 0, 0, 0, 40960, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12133, 40960, 15401, 0, 40960, 40960, 0, 0, 0, 0, 0, 0, 0, 15394, 12128, 12138, 15408, 15415, 40960, 40960, 15422, 15429, 40960, 40960, 15436, 15443, 40960, 40960, 40960, 40960, 0, 0, 15450, 15457, 40960, 40960, 15478, 15485, 40960, 40960, 15492, 15499, 0, 0, 0, 0, 0, 0, 0, 40960, 40960, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40960, 0, 0, 0, 0, 0, 40960, 40960, 0, 40960, 15520, 15527, 15534, 15541, 0, 0, 40960, 40960, 40960, 40960, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 37, 39, 41, 43, 45, 47, 49, 51, 6274, 6277, 6280, 6283, 6286, 6289, 6292, 6295, 6298, 6301, 6310, 6760, 6764, 6768, 6772, 6776, 6780, 6784, 6788, 6792, 7296, 7301, 7306, 7311, 7316, 7321, 7326, 7331, 7336, 7341, 7346, 6271, 6307, 6343, 6379, 6415, 6424, 6430, 6436, 6442, 7008, 7012, 7016, 7020, 7024, 7028, 7032, 7036, 7040, 7044, 7048, 6900, 6904, 6908, 6912, 6916, 6920, 6924, 6928, 6932, 6936, 6940, 6944, 6948, 6952, 6956, 6960, 6964, 6968, 6972, 6976, 6980, 6984, 6988, 6992, 6996, 7000, 67, 69, 71, 73, 75, 77, 79, 81, 83, 85, 1727, 1763, 1775, 1791, 1799, 1811, 1819, 1827, 1839, 1923, 1947, 1963, 1979, 1995, 2011, 2043, 2047, 2051, 2103, 2143, 2159, 2167, 2171, 2183, 2211, 2215, 2239, 2243, 2251, 2267, 2423, 2443, 2507, 2527, 2535, 2539, 2555, 2583, 2627, 2639, 2671, 2683, 2687, 2691, 2715, 2719, 2763, 2775, 2783, 2791, 2807, 2815, 2823, 2867, 2871, 2879, 2883, 2891, 2899, 2915, 2943, 3063, 3083, 3087, 3215, 3219, 3239, 3243, 3251, 3259, 3267, 3279, 3319, 3335, 3355, 3467, 3479, 3495, 3507, 3519, 3527, 3531, 3535, 3539, 3543, 3727, 3799, 3811, 3815, 3819, 3823, 3831, 3835, 3855, 3883, 3891, 3955, 3959, 3967, 3971, 3979, 3983, 4019, 4023, 4051, 4055, 4059, 4063, 4083, 4119, 4123, 4127, 4163, 4227, 4231, 4263, 4279, 4287, 4319, 4355, 4423, 4431, 4451, 4463, 4471, 4479, 4483, 4487, 4511, 4515, 4543, 4551, 4559, 4563, 4575, 4583, 4587, 4591, 4599, 4603, 4763, 4783, 4835, 4839, 4847, 4891, 4899, 4907, 4915, 4975, 4979, 4987, 4991, 4995, 5039, 5043, 5051, 5071, 5075, 5103, 5111, 5115, 5151, 5183, 5203, 5207, 5215, 5259, 5263, 5279, 5315, 5327, 5343, 5367, 5375, 5379, 5383, 5387, 5399, 5403, 5411, 5439, 5443, 5447, 5471, 5475, 5483, 5503, 5507, 5511, 5519, 5523, 0, 0, 0, 0, 0, 0, 40960, 0, 0, 0, 0, 40960, 16136, 40960, 16144, 40960, 16152, 40960, 16160, 40960, 16168, 40960, 16176, 40960, 16184, 40960, 16192, 40960, 16200, 40960, 16208, 40960, 16216, 40960, 16224, 0, 40960, 16232, 40960, 16240, 40960, 16248, 0, 0, 0, 0, 0, 40960, 16256, 16264, 40960, 16272, 16280, 40960, 16288, 16296, 40960, 16304, 16312, 40960, 16320, 16328, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16128, 0, 0, 0, 0, 39171, 39171, 17116, 17122, 40960, 16336, 9908, 0, 0, 0, 0, 0, 0, 40960, 0, 0, 0, 0, 40960, 16352, 40960, 16360, 40960, 16368, 40960, 16376, 40960, 16384, 40960, 16392, 40960, 16400, 40960, 16408, 40960, 16416, 40960, 16424, 40960, 16432, 40960, 16440, 0, 40960, 16448, 40960, 16456, 40960, 16464, 0, 0, 0, 0, 0, 40960, 16472, 16480, 40960, 16488, 16496, 40960, 16504, 16512, 40960, 16520, 16528, 40960, 16536, 16544, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40960, 40960, 40960, 40960, 0, 16344, 0, 0, 16552, 16560, 16568, 16576, 0, 0, 40960, 16584, 9929, 871, 811, 815, 819, 891, 823, 827, 831, 835, 839, 843, 847, 851, 855, 859, 18877, 18883, 18889, 18895, 18901, 18907, 18913, 18919, 18925, 18931, 18937, 18943, 18949, 18955, 18961, 18967, 18973, 18979, 18985, 18991, 18997, 963, 863, 867, 999, 1003, 1007, 1011, 1015, 1019, 1023, 875, 1027, 1031, 879, 883, 887, 895, 899, 903, 907, 911, 915, 919, 923, 927, 931, 935, 939, 943, 947, 1035, 1039, 951, 955, 959, 967, 971, 975, 979, 983, 987, 991, 995, 0, 0, 0, 1727, 1819, 1739, 2427, 1743, 1767, 1747, 3987, 1799, 1755, 1731, 2559, 2447, 1839, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8276, 8282, 8288, 8294, 8300, 8306, 8312, 8318, 8324, 8330, 8336, 8342, 8348, 8354, 10022, 10031, 10040, 10049, 10058, 10067, 10076, 10085, 10094, 10112, 10121, 10130, 10139, 10148, 10103, 11180, 10989, 0, 8360, 8384, 8372, 8456, 8390, 8420, 8366, 8414, 8378, 8432, 8480, 8510, 8504, 8492, 8570, 8462, 8474, 8498, 8486, 8528, 8444, 8516, 8558, 8534, 8426, 8396, 8450, 8468, 8522, 8402, 8564, 8438, 8540, 8408, 8546, 8552, 2351, 2819, 3239, 4295, 0, 0, 0, 0, 0, 0, 0, 0, 7108, 6313, 6316, 6319, 6322, 6325, 6328, 6331, 6334, 6337, 6346, 6349, 6352, 6355, 6358, 6361, 787, 795, 799, 807, 811, 815, 823, 831, 835, 843, 847, 851, 855, 859, 11800, 11808, 11816, 11824, 11832, 11840, 11848, 11856, 11872, 11880, 11888, 11896, 11904, 11912, 11987, 11931, 11864, 0, 1727, 1819, 1739, 2427, 1823, 1967, 1735, 1963, 1803, 2183, 3335, 3727, 3543, 3355, 5215, 2443, 3279, 3403, 3339, 4171, 2299, 3843, 4999, 4191, 2115, 4239, 3995, 2583, 5135, 1919, 2219, 3575, 5415, 1859, 2003, 3483, 1743, 1767, 1747, 2779, 2287, 2175, 2647, 2635, 4075, 1855, 5019, 2203, 2547, 6364, 6367, 6370, 6373, 6382, 6385, 6388, 6391, 6394, 6397, 6400, 6403, 6406, 6409, 6418, 7366, 7381, 7396, 7411, 7426, 7441, 7456, 7471, 7486, 8588, 8606, 8624, 6484, 7172, 6610, 7080, 1227, 1235, 1243, 1251, 1259, 1263, 1267, 1271, 1275, 1279, 1283, 1287, 1291, 1295, 1299, 1303, 1307, 1315, 1319, 1323, 1327, 1331, 1335, 1339, 1343, 1347, 1351, 1355, 1359, 1363, 1367, 1371, 1375, 1379, 1383, 1391, 1399, 1407, 1411, 1415, 1419, 1423, 1427, 1431, 1435, 1439, 1443, 0, 11020, 10664, 11036, 10368, 12004, 10378, 10388, 12072, 10677, 10398, 10408, 10418, 10716, 10729, 10690, 10703, 11945, 10742, 10755, 11198, 9915, 11217, 11236, 11052, 10768, 11255, 11274, 10781, 10428, 10438, 11959, 10794, 11068, 12021, 10448, 10458, 10807, 10468, 10478, 9936, 9943, 10488, 10498, 11293, 10820, 11084, 11312, 10833, 10518, 10508, 12092, 10846, 11331, 10528, 11100, 10538, 10872, 10548, 10885, 12038, 10859, 11116, 10898, 9950, 12055, 10558, 10568, 10911, 10578, 10588, 10598, 11132, 10924, 9957, 11350, 11920, 11148, 10937, 11973, 10608, 10618, 10950, 9964, 10963, 11164, 9971, 11369, 10628, 7351, 7371, 7386, 7401, 7416, 7431, 7446, 7461, 7476, 7491, 8594, 8612, 8630, 8642, 8654, 8666, 8678, 8690, 8702, 8714, 8774, 8786, 8798, 8810, 8822, 7188, 6598, 6454, 7140, 6727, 6742, 6604, 7164, 7168, 6496, 9985, 9999, 9978, 9992, 10976, 6730, 6706, 7264, 6682, 6643, 6505, 6520, 6472, 7152, 7506, 6733, 6709, 7268, 7280, 6694, 6652, 6487, 7196, 7088, 7068, 7116, 7284, 6697, 6601, 6655, 6622, 6721, 7288, 6700, 6592, 6658, 7228, 7156, 6676, 7204, 7232, 7160, 6679, 7208, 8936, 8956, 6550, 7200, 7092, 7072, 7240, 10006, 10157, 6745, 6724, 7292, 6703, 6736, 6712, 7272, 6685, 6646, 6529, 6739, 6715, 7276, 6688, 6649, 6532, 7212, 7096, 7501, 6457, 6586, 6589, 8949, 7060, 6595, 6475, 6625, 6478, 6634, 6508, 6511, 6661, 6667, 6670, 7216, 6673, 6691, 7224, 7236, 6544, 7511, 7100, 6547, 6748, 6565, 6580, 8930, 8924, 7361, 7376, 7391, 7406, 7421, 7436, 7451, 7466, 7481, 8582, 8600, 8618, 8636, 8648, 8660, 8672, 8684, 8696, 8708, 8768, 8780, 8792, 8804, 8816, 8828, 8834, 8840, 8846, 8852, 8870, 8876, 7184, 4983, 3323, 5075, 5023, 3671, 1771, 2271, 5675, 5675, 2571, 5215, 2371, 2567, 3055, 4047, 4447, 4759, 4819, 4871, 5147, 3443, 3583, 3755, 3907, 4703, 5191, 5491, 1807, 2227, 3463, 3791, 4755, 5571, 2739, 3703, 4739, 4887, 3107, 4539, 4831, 2847, 3343, 3607, 3867, 5159, 1871, 2023, 2131, 3211, 3455, 3787, 4079, 4471, 4747, 4771, 5063, 5359, 5539, 5567, 4139, 4203, 4387, 4675, 5243, 5579, 4939, 2503, 2875, 4315, 4507, 3839, 4147, 5015, 5351, 2499, 2703, 3447, 3627, 3679, 4371, 4411, 5287, 2127, 4519, 2035, 2031, 4247, 4391, 4699, 5295, 4967, 3111, 3443, 4951, 1783, 2659, 2963, 3887, 4015, 2163, 4155, 1887, 2935, 1751, 3563, 3235, 4367, 2247, 2483, 4091, 4707, 4923, 3511, 5111, 3555, 3127, 4635, 3159, 4011, 1835, 1959, 2027, 3411, 4347, 4595, 4935, 5211, 2139, 2319, 2583, 2863, 3263, 3707, 4159, 5271, 5499, 5583, 5607, 2103, 3315, 3491, 5099, 2811, 3031, 3059, 3203, 3691, 3767, 3943, 4235, 4399, 4499, 5083, 4715, 5123, 5247, 2063, 2107, 2339, 3751, 4851, 4923, 2843, 2955, 3151, 3503, 4311, 3875, 1851, 2431, 2659, 2759, 2967, 3903, 3931, 4459, 4491, 5219, 5347, 5363, 5423, 1875, 4223, 5199, 5323, 2991, 1815, 1911, 2663, 2695, 3247, 3443, 3779, 4043, 4727, 5143, 5667, 3299, 5283, 2099, 3375, 3387, 3599, 3655, 3915, 4007, 4135, 4363, 5435, 1967, 3075, 5299, 1895, 2731, 3631, 5087, 2919, 2999, 3395, 3887, 5307, 2071, 2303, 2711, 3283, 3359, 3423, 3571, 3911, 4027, 4439, 4855, 4867, 5207, 5335, 2179, 3659, 2307, 3783, 3947, 4743, 5311, 5547, 5587, 3383, 3623, 4547, 4279, 4291, 4327, 3863, 3743, 4963, 1843, 4651, 2075, 2059, 2827, 3115, 4339, 2643, 3587, 3311, 5095, 4839, 5291, 4899, 2855, 1927, 2395, 0, 0, 2479, 0, 3295, 0, 0, 2039, 3871, 4067, 4167, 4195, 4199, 4219, 5371, 4331, 4463, 0, 4751, 0, 4947, 0, 0, 5127, 5171, 0, 0, 0, 5455, 5459, 5463, 5563, 5163, 5319, 1879, 1915, 1935, 2123, 2135, 2199, 2379, 2407, 2415, 2475, 2487, 2707, 2715, 2979, 3019, 3027, 3051, 3223, 3271, 3303, 3415, 3611, 3639, 3687, 3771, 3803, 3919, 4143, 4171, 4179, 4175, 4183, 4187, 4191, 4211, 4215, 4251, 4271, 4299, 4399, 4407, 4415, 4435, 4475, 4555, 4607, 4607, 4711, 4879, 4903, 4955, 4959, 5027, 5031, 5119, 5127, 5339, 5407, 5431, 2971, 5918, 4579, 0, 0, 1759, 2019, 1955, 1867, 1931, 1975, 2119, 2147, 2379, 2359, 2375, 2403, 2479, 2495, 2563, 2575, 2603, 2619, 2851, 2859, 2907, 2939, 2987, 3011, 2995, 3027, 3015, 3051, 3079, 3167, 3179, 3187, 3227, 3295, 3343, 3347, 3367, 3495, 3511, 3599, 3675, 3667, 3687, 3715, 3771, 4115, 3807, 3859, 3871, 3935, 3963, 3999, 4035, 4039, 4067, 4071, 4087, 4107, 4103, 4151, 4275, 4299, 4323, 4379, 4399, 4427, 4475, 4655, 4695, 4811, 4883, 4895, 4903, 4927, 4947, 4931, 4955, 4951, 4943, 4959, 4971, 5031, 5091, 5139, 5195, 5227, 5303, 5339, 5371, 5391, 5407, 5419, 5431, 5515, 5675, 5813, 5808, 5858, 1543, 1583, 1587, 5988, 6033, 6153, 5655, 5671, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6613, 6616, 6619, 7176, 7180, 6751, 6751, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7541, 7526, 7531, 7546, 7536, 0, 0, 0, 0, 0, 17296, 33045, 17410, 557, 533, 542, 545, 548, 551, 554, 560, 563, 23, 17392, 17398, 17652, 17660, 17224, 17230, 17236, 17242, 17254, 17260, 17266, 17278, 17284, 0, 17290, 17302, 17308, 17314, 17326, 0, 17332, 0, 17338, 17344, 0, 17350, 17356, 0, 17368, 17374, 17380, 17386, 17404, 17272, 17248, 17320, 17362, 7551, 665, 665, 674, 674, 674, 674, 677, 677, 677, 677, 683, 683, 683, 683, 671, 671, 671, 671, 680, 680, 680, 680, 668, 668, 668, 668, 719, 719, 719, 719, 722, 722, 722, 722, 689, 689, 689, 689, 686, 686, 686, 686, 692, 692, 692, 692, 695, 695, 695, 695, 704, 704, 701, 701, 707, 707, 698, 698, 713, 713, 710, 710, 725, 725, 725, 725, 731, 731, 731, 731, 737, 737, 737, 737, 734, 734, 734, 734, 740, 740, 743, 743, 743, 743, 17518, 17518, 749, 749, 749, 749, 746, 746, 746, 746, 776, 776, 17512, 17512, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 728, 728, 728, 728, 758, 758, 755, 755, 761, 761, 8271, 767, 767, 752, 752, 764, 764, 773, 773, 773, 773, 653, 653, 9642, 9642, 9754, 9754, 9705, 9705, 9733, 9733, 9726, 9726, 9740, 9740, 9747, 9747, 9747, 9712, 9712, 9712, 770, 770, 770, 770, 9649, 9656, 9684, 9712, 9719, 7561, 7566, 7571, 7586, 7601, 7606, 7611, 7616, 7621, 7636, 7651, 7656, 7661, 7676, 7691, 7696, 7701, 7706, 7721, 7726, 7741, 7746, 7751, 7766, 7771, 7776, 7786, 7846, 7861, 7876, 7881, 7886, 7896, 7911, 7916, 7931, 7936, 7941, 7956, 7961, 7976, 7981, 7986, 7991, 7996, 8001, 8006, 8011, 8016, 8021, 8026, 8031, 8036, 8041, 8046, 8051, 8056, 8061, 8071, 8076, 8081, 8086, 8096, 8101, 8111, 8116, 8121, 8126, 8131, 8136, 8141, 8146, 8151, 8166, 8181, 8186, 8191, 8196, 8201, 8206, 8216, 8221, 8226, 8241, 8256, 8261, 17440, 17446, 17500, 17587, 17594, 17601, 17608, 17615, 17622, 9670, 9677, 9684, 9691, 9712, 9719, 7576, 7581, 7586, 7591, 7601, 7606, 7626, 7631, 7636, 7641, 7651, 7656, 7666, 7671, 7676, 7681, 7691, 7696, 7996, 8001, 8016, 8021, 8026, 8046, 8051, 8056, 8061, 8086, 8096, 8101, 8106, 8126, 8156, 8161, 8166, 8171, 8181, 8186, 17500, 8231, 8236, 8241, 8246, 8256, 8261, 9649, 9656, 9663, 9684, 9698, 7561, 7566, 7571, 7586, 7596, 7611, 7616, 7621, 7636, 7646, 7676, 7701, 7706, 7721, 7726, 7741, 7751, 7766, 7771, 7776, 7786, 7846, 7851, 7861, 7876, 7881, 7886, 7896, 7911, 7931, 7936, 7941, 7956, 7961, 7976, 7981, 7986, 7991, 8006, 8011, 8031, 8036, 8041, 8046, 8051, 8071, 8076, 8081, 8086, 8091, 8111, 8116, 8121, 8126, 8141, 8146, 8151, 8166, 8176, 8191, 8196, 17488, 8216, 8221, 8226, 8241, 8251, 9684, 9698, 7586, 7596, 7636, 7646, 7676, 7686, 7786, 7791, 7826, 7831, 8046, 8051, 8086, 8166, 8176, 8241, 8251, 17668, 17676, 17684, 7921, 7926, 7946, 7951, 7966, 7971, 7796, 7801, 7836, 7841, 7731, 7736, 7711, 7716, 7756, 7761, 7866, 7871, 7901, 7906, 7806, 7811, 7816, 7826, 7821, 7781, 7856, 7891, 7921, 7926, 7946, 7951, 7966, 7971, 7796, 7801, 7836, 7841, 7731, 7736, 7711, 7716, 7756, 7761, 7866, 7871, 7901, 7906, 7806, 7811, 7816, 7826, 7821, 7781, 7856, 7891, 7806, 7811, 7816, 7826, 7791, 7831, 7916, 7766, 7771, 7776, 7806, 7811, 7816, 7916, 7931, 17416, 17416, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8977, 8998, 8998, 9005, 9012, 9033, 9040, 9047, 9082, 9082, 9117, 9110, 9138, 9124, 9131, 9166, 9166, 9159, 9173, 9173, 9215, 9215, 9243, 9187, 9187, 9180, 9201, 9201, 9208, 9208, 9250, 9264, 9264, 9271, 9271, 9278, 9285, 9292, 9299, 9299, 9306, 9320, 9334, 9327, 9341, 9341, 9362, 9369, 9418, 9432, 9425, 9397, 9397, 9439, 9439, 9446, 9446, 9488, 9495, 9502, 9460, 9474, 9509, 9516, 0, 0, 9467, 9600, 9607, 9565, 9572, 9544, 9544, 9551, 9593, 9586, 9628, 9628, 8970, 8991, 8984, 9026, 9019, 9061, 9054, 9096, 9068, 9089, 9145, 9222, 9194, 9257, 9411, 9453, 9621, 9614, 9635, 9530, 9376, 9579, 9362, 9418, 9313, 9390, 9537, 9523, 9404, 9383, 9404, 9537, 9075, 9103, 9481, 9348, 8963, 9383, 9292, 9243, 9152, 9558, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9236, 9355, 10175, 10166, 10220, 10202, 10184, 10211, 10229, 9229, 11388, 11004, 10193, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 1155, 1159, 53, 55, 3, 63, 1215, 1219, 7004, 0, 0, 0, 0, 0, 0, 33074, 33074, 33074, 33074, 33074, 33074, 33074, 33069, 33069, 33069, 33069, 33069, 33069, 33069, 33074, 33074, 6259, 1091, 1087, 127, 127, 17, 19, 183, 187, 1207, 1211, 1195, 1199, 1171, 1175, 1163, 1167, 1179, 1183, 1187, 1191, 0, 0, 119, 123, 17001, 17001, 17001, 17001, 127, 127, 127, 25, 1155, 29, 0, 55, 53, 63, 3, 1091, 17, 19, 183, 187, 1207, 1211, 7, 13, 21, 23, 27, 57, 61, 59, 0, 121, 9, 11, 65, 0, 0, 0, 0, 17066, 17452, 17071, 0, 17076, 0, 17081, 17458, 17086, 17464, 17091, 17470, 17096, 17476, 17101, 17482, 566, 17422, 17422, 17428, 17428, 17494, 17494, 17434, 17434, 17506, 17506, 17506, 17506, 569, 569, 572, 572, 572, 572, 575, 575, 578, 578, 578, 578, 581, 581, 581, 581, 584, 584, 584, 584, 587, 587, 587, 587, 590, 590, 590, 590, 593, 593, 596, 596, 599, 599, 602, 602, 605, 605, 605, 605, 608, 608, 608, 608, 611, 611, 611, 611, 614, 614, 614, 614, 617, 617, 617, 617, 620, 620, 620, 620, 623, 623, 623, 623, 626, 626, 626, 626, 629, 629, 629, 629, 632, 632, 632, 632, 635, 635, 635, 635, 638, 638, 638, 638, 641, 641, 641, 641, 644, 644, 644, 644, 647, 647, 647, 647, 650, 650, 653, 653, 656, 656, 656, 656, 11776, 11776, 11784, 11784, 11792, 11792, 8066, 8066, 0, 0, 0, 129, 131, 133, 135, 137, 139, 141, 143, 145, 147, 149, 151, 153, 155, 157, 159, 161, 163, 165, 167, 169, 171, 173, 175, 177, 179, 181, 183, 185, 187, 189, 1143, 1147, 1159, 1179, 1183, 1155, 1451, 1443, 1223, 1231, 1239, 1247, 1255, 1387, 1395, 1403, 1311, 1455, 1227, 1235, 1243, 1251, 1259, 1263, 1267, 1271, 1275, 1279, 1283, 1287, 1291, 1295, 1299, 1303, 1307, 1315, 1319, 1323, 1327, 1331, 1335, 1339, 1343, 1347, 1351, 1355, 1359, 1363, 1367, 1371, 1375, 1379, 1383, 1391, 1399, 1407, 1411, 1415, 1419, 1423, 1427, 1431, 1447, 19064, 19070, 963, 787, 791, 19003, 795, 19009, 19015, 799, 803, 807, 19021, 19027, 19033, 19039, 19045, 19051, 871, 811, 815, 819, 891, 823, 827, 831, 835, 839, 843, 847, 851, 855, 859, 0, 0, 0, 18877, 18883, 18889, 18895, 18901, 18907, 0, 0, 18913, 18919, 18925, 18931, 18937, 18943, 0, 0, 18949, 18955, 18961, 18967, 18973, 18979, 0, 0, 18985, 18991, 18997, 0, 0, 0, 191, 194, 203, 16996, 200, 197, 1095, 0, 1131, 1099, 1103, 1107, 1111, 1135, 1139, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 99, 101, 103, 105, 107, 109, 111, 113, 115, 117, 131, 133, 135, 137, 139, 141, 143, 145, 147, 149, 151, 153, 155, 157, 159, 161, 163, 165, 167, 169, 171, 173, 175, 177, 179, 181, 221, 242, 0, 0, 371, 374, 377, 380, 383, 386, 389, 392, 395, 398, 401, 404, 407, 410, 413, 416, 419, 392, 422, 425, 428, 431, 434, 437, 509, 512, 515, 1115, 455, 464, 470, 506, 491, 488, 518, 521, 0, 0, 33, 35, 37, 39, 41, 43, 45, 47, 49, 51, 33, 35, 37, 39, 41, 43, 45, 47, 49, 51, 33, 35, 37, 39, 41, 43, 45, 47, 49, 51, 33, 35, 37, 39, 41, 43, 45, 47, 49, 51, 33, 35, 37, 39, 41, 43, 45, 47, 49, 51, 569, 572, 584, 593, 0, 650, 602, 587, 617, 656, 635, 638, 641, 644, 605, 623, 629, 611, 632, 599, 608, 578, 581, 590, 596, 614, 620, 626, 659, 740, 716, 662, 0, 572, 584, 0, 647, 0, 0, 587, 0, 656, 635, 638, 641, 644, 605, 623, 629, 611, 632, 0, 608, 578, 581, 590, 0, 614, 0, 626, 0, 0, 0, 0, 0, 0, 584, 0, 0, 0, 0, 587, 0, 656, 0, 638, 0, 644, 605, 623, 0, 611, 632, 0, 608, 0, 0, 590, 0, 614, 0, 626, 0, 740, 0, 662, 0, 572, 584, 0, 647, 0, 0, 587, 617, 656, 635, 0, 641, 644, 605, 623, 629, 611, 632, 0, 608, 578, 581, 590, 0, 614, 620, 626, 659, 0, 716, 0, 569, 572, 584, 593, 647, 650, 602, 587, 617, 656, 0, 638, 641, 644, 605, 623, 629, 611, 632, 599, 608, 578, 581, 590, 596, 614, 620, 626, 0, 0, 0, 0, 0, 572, 584, 593, 0, 650, 602, 587, 617, 656, 0, 638, 641, 644, 605, 623, 629, 611, 632, 599, 608, 578, 581, 590, 596, 614, 620, 626, 0, 0, 0, 0, 6265, 6262, 6268, 6304, 6340, 6376, 6412, 6421, 6427, 6433, 6439, 0, 0, 0, 0, 0, 6796, 6800, 6804, 6808, 6812, 6816, 6820, 6824, 6828, 6832, 6836, 6840, 6844, 6848, 6852, 6856, 6860, 6864, 6868, 6872, 6876, 6880, 6884, 6888, 6892, 6896, 10014, 71, 101, 6460, 6577, 0, 67, 69, 71, 73, 75, 77, 79, 81, 83, 85, 87, 89, 91, 93, 95, 97, 9901, 9922, 1283, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3087, 2631, 2259, 17860, 1819, 2543, 4911, 2559, 1831, 3287, 3759, 3247, 2087, 2923, 1983, 3255, 2067, 4375, 3971, 5003, 2515, 2315, 3683, 3099, 3143, 1727, 1739, 5131, 2779, 1767, 2287, 3131, 5043, 3091, 4207, 4267, 2295, 3651, 3339, 3335, 3991, 2091, 2391, 5187, 0, 0, 0, 0, 1787, 1779, 1795, 5703, 1863, 1879, 1883, 1891, 1899, 1903, 1915, 1907, 1459, 5723, 1935, 1939, 1943, 1971, 5708, 1463, 1951, 1983, 5718, 1999, 2007, 1847, 2015, 2019, 6193, 2047, 2055, 1471, 2079, 2083, 2091, 2095, 1475, 2119, 2123, 2135, 2147, 2151, 2155, 2163, 2195, 2199, 2207, 2223, 2231, 2235, 2235, 2235, 5738, 3731, 2255, 2263, 5743, 2275, 2283, 2291, 2331, 2311, 2323, 2327, 2335, 2343, 2347, 2355, 2363, 2367, 2367, 2375, 2383, 2387, 2399, 2435, 2407, 2439, 2411, 2419, 2059, 2511, 2455, 2459, 2463, 2451, 2471, 2467, 2491, 5748, 2519, 2523, 2531, 2543, 2551, 2579, 5753, 5758, 2591, 2595, 2599, 2587, 2607, 1479, 1483, 2615, 2623, 2623, 5763, 2651, 2655, 2659, 2667, 5768, 2675, 2679, 2895, 2687, 1487, 2699, 2715, 2727, 2723, 5778, 2735, 5783, 2747, 2743, 2751, 2767, 2771, 1491, 2787, 2795, 2799, 2803, 1495, 5788, 1499, 2831, 2835, 2839, 2847, 6243, 2871, 5798, 5798, 4567, 2887, 2887, 1503, 5833, 6043, 2903, 2911, 1507, 2931, 2947, 2951, 2959, 2975, 1515, 1511, 2979, 5803, 2983, 3003, 3007, 3011, 3007, 3023, 3027, 3043, 3035, 3039, 3047, 3051, 3055, 3067, 3071, 3095, 3103, 3119, 3139, 5818, 3135, 3123, 3147, 3155, 3175, 5823, 3183, 3171, 3163, 1519, 3191, 3199, 3207, 3195, 1523, 3223, 3231, 5828, 3275, 3327, 3291, 1535, 3303, 1531, 1527, 1987, 1991, 3331, 3307, 4523, 1635, 3343, 3347, 3351, 3371, 3363, 5853, 1539, 3391, 3379, 3407, 3415, 5863, 3419, 3399, 3427, 1543, 3431, 3435, 3439, 3451, 5868, 3459, 1547, 3471, 5873, 3475, 1551, 3487, 3499, 3511, 3515, 5878, 5773, 5883, 3547, 5888, 3559, 3567, 3551, 3579, 3595, 3611, 3599, 3603, 3615, 3619, 5893, 3591, 3643, 3647, 1555, 3667, 3663, 5898, 3635, 3695, 5903, 5908, 3699, 3719, 3715, 3711, 1559, 3723, 3739, 3735, 3747, 5713, 3763, 5913, 3775, 5923, 3795, 3807, 3827, 5928, 3847, 3851, 5933, 5938, 3879, 3895, 1563, 3899, 1567, 1567, 3923, 3927, 3935, 3939, 3951, 1571, 3975, 5943, 4003, 5948, 4015, 5793, 4031, 5953, 5958, 5963, 1575, 1579, 4087, 5973, 5968, 5978, 5983, 4095, 4099, 4099, 4107, 1587, 4111, 1591, 1595, 5993, 4131, 4139, 4151, 1599, 5998, 4187, 6003, 6008, 4219, 4243, 1603, 4251, 4255, 4259, 6013, 6018, 6018, 4283, 1607, 6023, 4303, 4307, 1611, 6028, 4335, 1615, 4351, 4343, 4359, 6038, 4383, 1619, 4395, 4403, 4419, 1623, 6048, 6053, 1627, 6058, 4443, 6063, 4455, 4467, 4475, 6068, 6073, 4495, 6078, 4503, 5838, 1631, 4527, 4531, 1639, 4535, 2611, 6083, 6088, 5843, 5848, 4567, 4571, 5107, 1643, 4615, 4611, 4619, 2111, 4623, 4627, 4631, 4639, 6093, 4635, 4643, 4663, 4667, 4647, 4671, 4691, 4711, 4659, 4679, 4683, 4687, 6098, 6108, 6103, 1647, 4719, 4723, 4731, 6128, 4735, 6113, 1651, 1655, 6118, 6123, 1659, 4767, 4771, 4775, 4779, 4791, 4787, 4799, 4795, 4811, 4803, 4807, 4815, 1663, 4823, 4827, 1667, 4843, 4847, 6133, 4859, 4863, 1671, 4875, 1467, 6138, 6143, 1675, 1679, 4919, 4943, 4971, 4987, 6148, 5007, 5011, 5035, 5047, 6158, 5728, 5059, 5055, 5067, 5733, 5079, 5091, 6163, 6168, 5155, 5167, 5175, 6173, 5179, 5223, 5235, 5239, 5231, 5251, 5255, 6178, 5267, 1683, 5275, 6183, 1687, 5331, 2755, 5355, 6188, 6198, 1691, 1695, 5395, 6203, 1699, 6208, 5419, 5419, 5427, 6213, 5451, 1703, 5467, 5479, 5487, 5495, 1707, 6218, 5515, 5543, 5555, 1711, 1715, 5559, 6223, 1719, 6228, 6233, 6238, 5595, 1723, 5615, 5623, 5627, 5635, 5643, 5651, 6248, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]);
 91189  		nfkcIndex = $toNativeArray($kindUint8, [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 91, 1, 2, 3, 92, 4, 5, 0, 93, 94, 6, 7, 8, 9, 10, 95, 96, 11, 0, 0, 12, 97, 98, 13, 0, 99, 100, 101, 0, 102, 2, 3, 4, 5, 0, 0, 0, 0, 0, 0, 6, 7, 8, 9, 0, 10, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 103, 104, 0, 105, 106, 107, 108, 109, 110, 111, 112, 113, 108, 114, 115, 116, 0, 117, 118, 119, 120, 121, 0, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 0, 132, 133, 134, 135, 136, 137, 0, 0, 0, 0, 0, 138, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 139, 0, 0, 140, 0, 0, 141, 0, 142, 0, 0, 0, 143, 144, 145, 0, 14, 146, 147, 148, 149, 0, 0, 150, 151, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 152, 153, 154, 155, 26, 27, 156, 157, 158, 28, 29, 159, 160, 0, 0, 0, 0, 30, 31, 161, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 162, 163, 0, 164, 0, 0, 0, 0, 0, 165, 0, 166, 0, 167, 0, 168, 0, 0, 169, 170, 32, 33, 34, 171, 172, 35, 36, 37, 173, 38, 39, 0, 40, 41, 42, 43, 44, 45, 46, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 174, 175, 176, 0, 177, 0, 178, 179, 0, 0, 180, 181, 182, 183, 184, 0, 0, 185, 186, 0, 187, 0, 188, 189, 190, 191, 192, 193, 194, 195, 189, 190, 191, 192, 193, 194, 195, 189, 190, 191, 192, 193, 194, 195, 189, 190, 191, 192, 193, 194, 195, 189, 190, 191, 192, 193, 194, 195, 189, 190, 191, 192, 193, 194, 195, 189, 190, 191, 192, 193, 194, 195, 189, 190, 191, 192, 193, 194, 195, 189, 190, 191, 192, 193, 194, 195, 189, 190, 191, 192, 193, 194, 195, 189, 190, 191, 192, 193, 194, 195, 189, 190, 191, 192, 193, 194, 195, 189, 190, 191, 192, 193, 194, 195, 189, 190, 191, 192, 193, 194, 195, 189, 190, 191, 192, 193, 194, 195, 189, 190, 191, 192, 193, 194, 195, 189, 190, 191, 192, 193, 194, 195, 189, 190, 191, 192, 193, 194, 195, 189, 190, 191, 192, 193, 194, 195, 189, 190, 191, 192, 193, 194, 195, 189, 190, 191, 192, 193, 194, 195, 189, 190, 191, 192, 193, 194, 195, 189, 190, 191, 192, 193, 194, 195, 189, 190, 191, 192, 193, 194, 195, 189, 190, 191, 192, 193, 194, 196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 197, 72, 73, 74, 0, 0, 0, 0, 0, 0, 0, 198, 0, 0, 0, 199, 0, 200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 201, 0, 0, 202, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 203, 204, 0, 205, 183, 0, 206, 207, 0, 0, 208, 108, 209, 0, 0, 0, 210, 211, 212, 0, 0, 213, 214, 215, 0, 216, 0, 217, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 218, 219, 220, 0, 0, 0, 0, 0, 215, 0, 0, 0, 0, 221, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 222, 223, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 225, 226, 227, 0, 228, 0, 0, 0, 0, 0, 0, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 75, 239, 240, 241, 242, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 243, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 244, 0, 245, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 78, 79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 246, 247, 0, 81, 248, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 83, 84, 85, 86, 87, 88, 89, 90, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 12, 0, 0, 0, 0, 13, 0, 0, 0, 0, 14, 0, 15, 16, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]);
 91190  		nfkcSparseOffset = new sliceType([0, 14, 18, 27, 37, 53, 55, 60, 71, 86, 99, 107, 111, 116, 118, 135, 143, 150, 153, 160, 164, 168, 170, 172, 181, 185, 192, 197, 200, 210, 213, 220, 228, 232, 234, 237, 241, 247, 264, 276, 278, 284, 286, 288, 290, 292, 294, 296, 298, 301, 304, 306, 309, 312, 316, 321, 330, 332, 335, 337, 348, 359, 373, 387, 403, 417, 424, 430, 445, 449, 451, 455, 457, 460, 462, 465, 467, 470, 472, 474, 476, 488, 498, 508, 511, 515, 517, 519, 521, 523, 526, 528, 530, 532, 534, 540, 543, 547, 549, 556, 562, 568, 576, 582, 588, 594, 598, 600, 602, 604, 606, 612, 615, 618, 626, 633, 636, 639, 641, 649, 652, 659, 662, 668, 670, 672, 675, 677, 679, 681, 683, 686, 688, 690, 692, 705, 715, 717, 719, 723, 728, 740, 745, 754, 760, 765, 769, 774, 778, 794, 808, 822, 836, 842, 844, 847, 857, 859]);
 91191  		nfkcSparseValues = $toNativeArray($kindStruct, [new valueRange.ptr(2, 13, 0), new valueRange.ptr(1, 160, 160), new valueRange.ptr(17016, 168, 168), new valueRange.ptr(131, 170, 170), new valueRange.ptr(16996, 175, 175), new valueRange.ptr(37, 178, 179), new valueRange.ptr(16986, 180, 180), new valueRange.ptr(476, 181, 181), new valueRange.ptr(17041, 184, 184), new valueRange.ptr(35, 185, 185), new valueRange.ptr(159, 186, 186), new valueRange.ptr(8732, 188, 188), new valueRange.ptr(8720, 189, 189), new valueRange.ptr(8882, 190, 190), new valueRange.ptr(145, 3, 0), new valueRange.ptr(18146, 160, 161), new valueRange.ptr(18196, 175, 176), new valueRange.ptr(40960, 183, 183), new valueRange.ptr(3, 8, 0), new valueRange.ptr(40960, 146, 146), new valueRange.ptr(145, 176, 176), new valueRange.ptr(281, 177, 177), new valueRange.ptr(149, 178, 178), new valueRange.ptr(165, 179, 179), new valueRange.ptr(323, 180, 182), new valueRange.ptr(175, 183, 183), new valueRange.ptr(179, 184, 184), new valueRange.ptr(10, 9, 0), new valueRange.ptr(17006, 152, 152), new valueRange.ptr(17011, 153, 154), new valueRange.ptr(17046, 155, 155), new valueRange.ptr(16991, 156, 156), new valueRange.ptr(17026, 157, 157), new valueRange.ptr(275, 160, 160), new valueRange.ptr(153, 161, 161), new valueRange.ptr(167, 162, 163), new valueRange.ptr(359, 164, 164), new valueRange.ptr(0, 15, 0), new valueRange.ptr(40960, 131, 131), new valueRange.ptr(40960, 135, 135), new valueRange.ptr(40960, 139, 139), new valueRange.ptr(40960, 141, 141), new valueRange.ptr(14245, 144, 144), new valueRange.ptr(14257, 145, 145), new valueRange.ptr(14239, 147, 147), new valueRange.ptr(40960, 150, 150), new valueRange.ptr(14359, 151, 151), new valueRange.ptr(14305, 156, 156), new valueRange.ptr(14281, 157, 157), new valueRange.ptr(14323, 158, 158), new valueRange.ptr(40960, 180, 181), new valueRange.ptr(14365, 182, 182), new valueRange.ptr(14371, 183, 183), new valueRange.ptr(0, 1, 0), new valueRange.ptr(33074, 131, 135), new valueRange.ptr(1, 4, 0), new valueRange.ptr(33043, 129, 130), new valueRange.ptr(33074, 132, 132), new valueRange.ptr(33069, 133, 133), new valueRange.ptr(33037, 135, 135), new valueRange.ptr(0, 10, 0), new valueRange.ptr(33074, 144, 151), new valueRange.ptr(33049, 152, 152), new valueRange.ptr(33050, 153, 153), new valueRange.ptr(33051, 154, 154), new valueRange.ptr(14401, 162, 162), new valueRange.ptr(14407, 163, 163), new valueRange.ptr(14419, 164, 164), new valueRange.ptr(14413, 165, 165), new valueRange.ptr(14425, 166, 166), new valueRange.ptr(40960, 167, 167), new valueRange.ptr(0, 14, 0), new valueRange.ptr(14443, 128, 128), new valueRange.ptr(40960, 129, 129), new valueRange.ptr(14431, 130, 130), new valueRange.ptr(40960, 146, 146), new valueRange.ptr(14437, 147, 147), new valueRange.ptr(40960, 149, 149), new valueRange.ptr(33074, 150, 156), new valueRange.ptr(33074, 159, 162), new valueRange.ptr(33069, 163, 163), new valueRange.ptr(33074, 164, 164), new valueRange.ptr(33074, 167, 168), new valueRange.ptr(33069, 170, 170), new valueRange.ptr(33074, 171, 172), new valueRange.ptr(33069, 173, 173), new valueRange.ptr(0, 12, 0), new valueRange.ptr(33055, 145, 145), new valueRange.ptr(33074, 176, 176), new valueRange.ptr(33069, 177, 177), new valueRange.ptr(33074, 178, 179), new valueRange.ptr(33069, 180, 180), new valueRange.ptr(33074, 181, 182), new valueRange.ptr(33069, 183, 185), new valueRange.ptr(33074, 186, 186), new valueRange.ptr(33069, 187, 188), new valueRange.ptr(33074, 189, 189), new valueRange.ptr(33069, 190, 190), new valueRange.ptr(33074, 191, 191), new valueRange.ptr(5, 7, 0), new valueRange.ptr(33074, 128, 128), new valueRange.ptr(33074, 129, 129), new valueRange.ptr(33069, 130, 131), new valueRange.ptr(33069, 132, 133), new valueRange.ptr(33069, 134, 135), new valueRange.ptr(33069, 136, 137), new valueRange.ptr(33074, 138, 138), new valueRange.ptr(0, 3, 0), new valueRange.ptr(33074, 171, 177), new valueRange.ptr(33069, 178, 178), new valueRange.ptr(33074, 179, 179), new valueRange.ptr(0, 4, 0), new valueRange.ptr(33074, 150, 153), new valueRange.ptr(33074, 155, 163), new valueRange.ptr(33074, 165, 167), new valueRange.ptr(33074, 169, 173), new valueRange.ptr(0, 1, 0), new valueRange.ptr(33069, 153, 155), new valueRange.ptr(0, 16, 0), new valueRange.ptr(33074, 148, 161), new valueRange.ptr(33069, 163, 163), new valueRange.ptr(33074, 164, 165), new valueRange.ptr(33069, 166, 166), new valueRange.ptr(33074, 167, 168), new valueRange.ptr(33069, 169, 169), new valueRange.ptr(33074, 170, 172), new valueRange.ptr(33069, 173, 175), new valueRange.ptr(33046, 176, 176), new valueRange.ptr(33047, 177, 177), new valueRange.ptr(33048, 178, 178), new valueRange.ptr(33074, 179, 181), new valueRange.ptr(33069, 182, 182), new valueRange.ptr(33074, 183, 184), new valueRange.ptr(33069, 185, 186), new valueRange.ptr(33074, 187, 191), new valueRange.ptr(0, 7, 0), new valueRange.ptr(40960, 168, 168), new valueRange.ptr(16088, 169, 169), new valueRange.ptr(40960, 176, 176), new valueRange.ptr(16096, 177, 177), new valueRange.ptr(40960, 179, 179), new valueRange.ptr(16104, 180, 180), new valueRange.ptr(39170, 188, 188), new valueRange.ptr(8, 6, 0), new valueRange.ptr(33028, 141, 141), new valueRange.ptr(33074, 145, 145), new valueRange.ptr(33069, 146, 146), new valueRange.ptr(33074, 147, 147), new valueRange.ptr(33074, 148, 148), new valueRange.ptr(17692, 152, 159), new valueRange.ptr(0, 2, 0), new valueRange.ptr(33026, 188, 188), new valueRange.ptr(39168, 190, 190), new valueRange.ptr(8, 6, 0), new valueRange.ptr(40960, 135, 135), new valueRange.ptr(11422, 139, 140), new valueRange.ptr(33028, 141, 141), new valueRange.ptr(39168, 151, 151), new valueRange.ptr(17756, 156, 157), new valueRange.ptr(17772, 159, 159), new valueRange.ptr(0, 3, 0), new valueRange.ptr(17812, 179, 179), new valueRange.ptr(17820, 182, 182), new valueRange.ptr(33026, 188, 188), new valueRange.ptr(8, 3, 0), new valueRange.ptr(33028, 141, 141), new valueRange.ptr(17780, 153, 155), new valueRange.ptr(17804, 158, 158), new valueRange.ptr(0, 1, 0), new valueRange.ptr(33026, 188, 188), new valueRange.ptr(0, 1, 0), new valueRange.ptr(33028, 141, 141), new valueRange.ptr(0, 8, 0), new valueRange.ptr(40960, 135, 135), new valueRange.ptr(11446, 136, 136), new valueRange.ptr(11438, 139, 139), new valueRange.ptr(11454, 140, 140), new valueRange.ptr(33028, 141, 141), new valueRange.ptr(39168, 150, 151), new valueRange.ptr(17828, 156, 156), new valueRange.ptr(17836, 157, 157), new valueRange.ptr(0, 3, 0), new valueRange.ptr(40960, 146, 146), new valueRange.ptr(11462, 148, 148), new valueRange.ptr(39168, 190, 190), new valueRange.ptr(0, 6, 0), new valueRange.ptr(40960, 134, 135), new valueRange.ptr(11470, 138, 138), new valueRange.ptr(11486, 139, 139), new valueRange.ptr(11478, 140, 140), new valueRange.ptr(33028, 141, 141), new valueRange.ptr(39168, 151, 151), new valueRange.ptr(6145, 4, 0), new valueRange.ptr(40960, 134, 134), new valueRange.ptr(16112, 136, 136), new valueRange.ptr(33028, 141, 141), new valueRange.ptr(33056, 149, 150), new valueRange.ptr(0, 2, 0), new valueRange.ptr(33026, 188, 188), new valueRange.ptr(40960, 191, 191), new valueRange.ptr(0, 9, 0), new valueRange.ptr(11494, 128, 128), new valueRange.ptr(39168, 130, 130), new valueRange.ptr(40960, 134, 134), new valueRange.ptr(11502, 135, 135), new valueRange.ptr(11510, 136, 136), new valueRange.ptr(12112, 138, 138), new valueRange.ptr(11736, 139, 139), new valueRange.ptr(33028, 141, 141), new valueRange.ptr(39168, 149, 150), new valueRange.ptr(0, 2, 0), new valueRange.ptr(33028, 187, 188), new valueRange.ptr(39168, 190, 190), new valueRange.ptr(0, 6, 0), new valueRange.ptr(40960, 134, 135), new valueRange.ptr(11518, 138, 138), new valueRange.ptr(11534, 139, 139), new valueRange.ptr(11526, 140, 140), new valueRange.ptr(33028, 141, 141), new valueRange.ptr(39168, 151, 151), new valueRange.ptr(27626, 7, 0), new valueRange.ptr(39172, 138, 138), new valueRange.ptr(39168, 143, 143), new valueRange.ptr(40960, 153, 153), new valueRange.ptr(16120, 154, 154), new valueRange.ptr(12120, 156, 156), new valueRange.ptr(11747, 157, 157), new valueRange.ptr(11542, 158, 159), new valueRange.ptr(0, 3, 0), new valueRange.ptr(9761, 179, 179), new valueRange.ptr(33058, 184, 185), new valueRange.ptr(33028, 186, 186), new valueRange.ptr(0, 1, 0), new valueRange.ptr(33059, 136, 139), new valueRange.ptr(0, 2, 0), new valueRange.ptr(9782, 179, 179), new valueRange.ptr(33060, 184, 185), new valueRange.ptr(0, 3, 0), new valueRange.ptr(33061, 136, 139), new valueRange.ptr(9768, 156, 156), new valueRange.ptr(9775, 157, 157), new valueRange.ptr(0, 5, 0), new valueRange.ptr(779, 140, 140), new valueRange.ptr(33069, 152, 153), new valueRange.ptr(33069, 181, 181), new valueRange.ptr(33069, 183, 183), new valueRange.ptr(33067, 185, 185), new valueRange.ptr(0, 16, 0), new valueRange.ptr(9796, 131, 131), new valueRange.ptr(9803, 141, 141), new valueRange.ptr(9810, 146, 146), new valueRange.ptr(9817, 151, 151), new valueRange.ptr(9824, 156, 156), new valueRange.ptr(9789, 169, 169), new valueRange.ptr(33062, 177, 177), new valueRange.ptr(33063, 178, 178), new valueRange.ptr(19076, 179, 179), new valueRange.ptr(33064, 180, 180), new valueRange.ptr(19085, 181, 181), new valueRange.ptr(17844, 182, 182), new valueRange.ptr(17908, 183, 183), new valueRange.ptr(17852, 184, 184), new valueRange.ptr(17919, 185, 185), new valueRange.ptr(33063, 186, 189), new valueRange.ptr(0, 11, 0), new valueRange.ptr(33063, 128, 128), new valueRange.ptr(19094, 129, 129), new valueRange.ptr(33074, 130, 131), new valueRange.ptr(33028, 132, 132), new valueRange.ptr(33074, 134, 135), new valueRange.ptr(9838, 147, 147), new valueRange.ptr(9845, 157, 157), new valueRange.ptr(9852, 162, 162), new valueRange.ptr(9859, 167, 167), new valueRange.ptr(9866, 172, 172), new valueRange.ptr(9831, 185, 185), new valueRange.ptr(0, 1, 0), new valueRange.ptr(33069, 134, 134), new valueRange.ptr(0, 5, 0), new valueRange.ptr(40960, 165, 165), new valueRange.ptr(11550, 166, 166), new valueRange.ptr(39168, 174, 174), new valueRange.ptr(33026, 183, 183), new valueRange.ptr(33028, 185, 186), new valueRange.ptr(0, 1, 0), new valueRange.ptr(33069, 141, 141), new valueRange.ptr(0, 1, 0), new valueRange.ptr(783, 188, 188), new valueRange.ptr(0, 1, 0), new valueRange.ptr(40960, 128, 146), new valueRange.ptr(0, 1, 0), new valueRange.ptr(47360, 161, 181), new valueRange.ptr(0, 1, 0), new valueRange.ptr(39168, 168, 191), new valueRange.ptr(0, 1, 0), new valueRange.ptr(39168, 128, 130), new valueRange.ptr(0, 1, 0), new valueRange.ptr(33074, 157, 159), new valueRange.ptr(0, 2, 0), new valueRange.ptr(33028, 148, 148), new valueRange.ptr(33028, 180, 180), new valueRange.ptr(0, 2, 0), new valueRange.ptr(33028, 146, 146), new valueRange.ptr(33074, 157, 157), new valueRange.ptr(0, 1, 0), new valueRange.ptr(33073, 169, 169), new valueRange.ptr(4, 2, 0), new valueRange.ptr(33070, 185, 186), new valueRange.ptr(33069, 187, 187), new valueRange.ptr(0, 2, 0), new valueRange.ptr(33074, 151, 151), new valueRange.ptr(33069, 152, 152), new valueRange.ptr(0, 3, 0), new valueRange.ptr(33028, 160, 160), new valueRange.ptr(33074, 181, 188), new valueRange.ptr(33069, 191, 191), new valueRange.ptr(0, 4, 0), new valueRange.ptr(33074, 176, 180), new valueRange.ptr(33069, 181, 186), new valueRange.ptr(33074, 187, 188), new valueRange.ptr(33069, 189, 189), new valueRange.ptr(0, 8, 0), new valueRange.ptr(11622, 128, 128), new valueRange.ptr(11630, 129, 129), new valueRange.ptr(40960, 130, 130), new valueRange.ptr(11638, 131, 131), new valueRange.ptr(33028, 132, 132), new valueRange.ptr(33074, 171, 171), new valueRange.ptr(33069, 172, 172), new valueRange.ptr(33074, 173, 179), new valueRange.ptr(0, 1, 0), new valueRange.ptr(33028, 170, 171), new valueRange.ptr(0, 2, 0), new valueRange.ptr(33026, 166, 166), new valueRange.ptr(33028, 178, 179), new valueRange.ptr(0, 1, 0), new valueRange.ptr(33026, 183, 183), new valueRange.ptr(0, 10, 0), new valueRange.ptr(33074, 144, 146), new valueRange.ptr(33025, 148, 148), new valueRange.ptr(33069, 149, 153), new valueRange.ptr(33074, 154, 155), new valueRange.ptr(33069, 156, 159), new valueRange.ptr(33074, 160, 160), new valueRange.ptr(33025, 162, 168), new valueRange.ptr(33069, 173, 173), new valueRange.ptr(33074, 180, 180), new valueRange.ptr(33074, 184, 185), new valueRange.ptr(2, 10, 0), new valueRange.ptr(67, 172, 172), new valueRange.ptr(209, 173, 173), new valueRange.ptr(69, 174, 174), new valueRange.ptr(73, 176, 177), new valueRange.ptr(230, 178, 178), new valueRange.ptr(79, 179, 186), new valueRange.ptr(95, 188, 188), new valueRange.ptr(239, 189, 189), new valueRange.ptr(97, 190, 190), new valueRange.ptr(101, 191, 191), new valueRange.ptr(0, 13, 0), new valueRange.ptr(1, 128, 138), new valueRange.ptr(1083, 145, 145), new valueRange.ptr(17051, 151, 151), new valueRange.ptr(29, 164, 164), new valueRange.ptr(6259, 165, 165), new valueRange.ptr(7004, 166, 166), new valueRange.ptr(1, 175, 175), new valueRange.ptr(9873, 179, 179), new valueRange.ptr(10238, 180, 180), new valueRange.ptr(9880, 182, 182), new valueRange.ptr(10248, 183, 183), new valueRange.ptr(6253, 188, 188), new valueRange.ptr(17001, 190, 190), new valueRange.ptr(2, 13, 0), new valueRange.ptr(6451, 135, 135), new valueRange.ptr(6448, 136, 136), new valueRange.ptr(6256, 137, 137), new valueRange.ptr(10638, 151, 151), new valueRange.ptr(1, 159, 159), new valueRange.ptr(33, 176, 176), new valueRange.ptr(147, 177, 177), new valueRange.ptr(41, 180, 185), new valueRange.ptr(23, 186, 186), new valueRange.ptr(1127, 187, 187), new valueRange.ptr(59, 188, 188), new valueRange.ptr(17, 189, 190), new valueRange.ptr(157, 191, 191), new valueRange.ptr(2, 15, 0), new valueRange.ptr(33, 128, 137), new valueRange.ptr(23, 138, 138), new valueRange.ptr(1127, 139, 139), new valueRange.ptr(59, 140, 140), new valueRange.ptr(17, 141, 142), new valueRange.ptr(131, 144, 144), new valueRange.ptr(139, 145, 145), new valueRange.ptr(159, 146, 146), new valueRange.ptr(177, 147, 147), new valueRange.ptr(260, 148, 148), new valueRange.ptr(145, 149, 149), new valueRange.ptr(151, 150, 153), new valueRange.ptr(161, 154, 154), new valueRange.ptr(167, 155, 156), new valueRange.ptr(6553, 168, 168), new valueRange.ptr(0, 13, 0), new valueRange.ptr(33074, 144, 145), new valueRange.ptr(33025, 146, 147), new valueRange.ptr(33074, 148, 151), new valueRange.ptr(33025, 152, 154), new valueRange.ptr(33074, 155, 156), new valueRange.ptr(33074, 161, 161), new valueRange.ptr(33025, 165, 166), new valueRange.ptr(33074, 167, 167), new valueRange.ptr(33069, 168, 168), new valueRange.ptr(33074, 169, 169), new valueRange.ptr(33025, 170, 171), new valueRange.ptr(33069, 172, 175), new valueRange.ptr(33074, 176, 176), new valueRange.ptr(7, 6, 0), new valueRange.ptr(8576, 137, 137), new valueRange.ptr(40960, 144, 144), new valueRange.ptr(40960, 146, 146), new valueRange.ptr(40960, 148, 148), new valueRange.ptr(15289, 154, 155), new valueRange.ptr(15303, 174, 174), new valueRange.ptr(14, 5, 0), new valueRange.ptr(15310, 141, 142), new valueRange.ptr(15317, 143, 143), new valueRange.ptr(40960, 144, 144), new valueRange.ptr(40960, 146, 146), new valueRange.ptr(40960, 148, 148), new valueRange.ptr(371, 14, 0), new valueRange.ptr(40960, 131, 131), new valueRange.ptr(15331, 132, 132), new valueRange.ptr(40960, 136, 136), new valueRange.ptr(15338, 137, 137), new valueRange.ptr(40960, 139, 139), new valueRange.ptr(15345, 140, 140), new valueRange.ptr(40960, 163, 163), new valueRange.ptr(15352, 164, 164), new valueRange.ptr(40960, 165, 165), new valueRange.ptr(15359, 166, 166), new valueRange.ptr(9887, 172, 173), new valueRange.ptr(9894, 175, 175), new valueRange.ptr(10268, 176, 176), new valueRange.ptr(40960, 188, 188), new valueRange.ptr(7, 3, 0), new valueRange.ptr(15464, 160, 161), new valueRange.ptr(15506, 162, 163), new valueRange.ptr(15548, 170, 173), new valueRange.ptr(4, 1, 0), new valueRange.ptr(1163, 169, 170), new valueRange.ptr(2, 3, 0), new valueRange.ptr(87, 128, 143), new valueRange.ptr(131, 144, 169), new valueRange.ptr(33, 170, 170), new valueRange.ptr(0, 1, 0), new valueRange.ptr(10651, 140, 140), new valueRange.ptr(611, 2, 0), new valueRange.ptr(7052, 180, 180), new valueRange.ptr(6445, 181, 182), new valueRange.ptr(0, 1, 0), new valueRange.ptr(17629, 156, 156), new valueRange.ptr(0, 2, 0), new valueRange.ptr(149, 188, 188), new valueRange.ptr(109, 189, 189), new valueRange.ptr(0, 1, 0), new valueRange.ptr(33074, 175, 177), new valueRange.ptr(0, 2, 0), new valueRange.ptr(1151, 175, 175), new valueRange.ptr(33028, 191, 191), new valueRange.ptr(0, 1, 0), new valueRange.ptr(33074, 160, 191), new valueRange.ptr(0, 1, 0), new valueRange.ptr(3523, 159, 159), new valueRange.ptr(0, 1, 0), new valueRange.ptr(5679, 179, 179), new valueRange.ptr(4, 11, 0), new valueRange.ptr(5527, 128, 130), new valueRange.ptr(5551, 131, 131), new valueRange.ptr(5575, 132, 133), new valueRange.ptr(5591, 134, 137), new valueRange.ptr(5611, 138, 140), new valueRange.ptr(5631, 141, 141), new valueRange.ptr(5639, 142, 142), new valueRange.ptr(5647, 143, 144), new valueRange.ptr(5659, 145, 147), new valueRange.ptr(5675, 148, 148), new valueRange.ptr(5683, 149, 149), new valueRange.ptr(4, 9, 0), new valueRange.ptr(1, 128, 128), new valueRange.ptr(33068, 170, 170), new valueRange.ptr(33073, 171, 171), new valueRange.ptr(33075, 172, 172), new valueRange.ptr(33070, 173, 173), new valueRange.ptr(33071, 174, 174), new valueRange.ptr(33071, 175, 175), new valueRange.ptr(1203, 182, 182), new valueRange.ptr(2183, 184, 186), new valueRange.ptr(6, 9, 0), new valueRange.ptr(787, 177, 177), new valueRange.ptr(791, 178, 178), new valueRange.ptr(19003, 179, 179), new valueRange.ptr(795, 180, 180), new valueRange.ptr(19009, 181, 182), new valueRange.ptr(799, 183, 183), new valueRange.ptr(803, 184, 184), new valueRange.ptr(807, 185, 185), new valueRange.ptr(19021, 186, 191), new valueRange.ptr(0, 2, 0), new valueRange.ptr(33074, 175, 175), new valueRange.ptr(33074, 180, 189), new valueRange.ptr(0, 3, 0), new valueRange.ptr(527, 156, 156), new valueRange.ptr(530, 157, 157), new valueRange.ptr(33074, 158, 159), new valueRange.ptr(0, 1, 0), new valueRange.ptr(33074, 176, 177), new valueRange.ptr(0, 1, 0), new valueRange.ptr(5691, 176, 176), new valueRange.ptr(12, 1, 0), new valueRange.ptr(215, 184, 185), new valueRange.ptr(0, 1, 0), new valueRange.ptr(33028, 134, 134), new valueRange.ptr(0, 2, 0), new valueRange.ptr(33028, 132, 132), new valueRange.ptr(33074, 160, 177), new valueRange.ptr(0, 1, 0), new valueRange.ptr(33069, 171, 173), new valueRange.ptr(0, 1, 0), new valueRange.ptr(33028, 147, 147), new valueRange.ptr(0, 1, 0), new valueRange.ptr(33026, 179, 179), new valueRange.ptr(0, 1, 0), new valueRange.ptr(33028, 128, 128), new valueRange.ptr(0, 5, 0), new valueRange.ptr(33074, 176, 176), new valueRange.ptr(33074, 178, 179), new valueRange.ptr(33069, 180, 180), new valueRange.ptr(33074, 183, 184), new valueRange.ptr(33074, 190, 191), new valueRange.ptr(0, 2, 0), new valueRange.ptr(33074, 129, 129), new valueRange.ptr(33028, 182, 182), new valueRange.ptr(8, 3, 0), new valueRange.ptr(5687, 156, 157), new valueRange.ptr(293, 158, 158), new valueRange.ptr(5699, 159, 159), new valueRange.ptr(0, 1, 0), new valueRange.ptr(33028, 173, 173), new valueRange.ptr(0, 6, 0), new valueRange.ptr(58624, 128, 128), new valueRange.ptr(50688, 129, 155), new valueRange.ptr(58624, 156, 156), new valueRange.ptr(50688, 157, 183), new valueRange.ptr(58624, 184, 184), new valueRange.ptr(50688, 185, 191), new valueRange.ptr(0, 5, 0), new valueRange.ptr(50688, 128, 147), new valueRange.ptr(58624, 148, 148), new valueRange.ptr(50688, 149, 175), new valueRange.ptr(58624, 176, 176), new valueRange.ptr(50688, 177, 191), new valueRange.ptr(0, 5, 0), new valueRange.ptr(50688, 128, 139), new valueRange.ptr(58624, 140, 140), new valueRange.ptr(50688, 141, 167), new valueRange.ptr(58624, 168, 168), new valueRange.ptr(50688, 169, 191), new valueRange.ptr(0, 7, 0), new valueRange.ptr(50688, 128, 131), new valueRange.ptr(58624, 132, 132), new valueRange.ptr(50688, 133, 159), new valueRange.ptr(58624, 160, 160), new valueRange.ptr(50688, 161, 187), new valueRange.ptr(58624, 188, 188), new valueRange.ptr(50688, 189, 191), new valueRange.ptr(0, 5, 0), new valueRange.ptr(50688, 128, 151), new valueRange.ptr(58624, 152, 152), new valueRange.ptr(50688, 153, 179), new valueRange.ptr(58624, 180, 180), new valueRange.ptr(50688, 181, 191), new valueRange.ptr(0, 5, 0), new valueRange.ptr(50688, 128, 143), new valueRange.ptr(58624, 144, 144), new valueRange.ptr(50688, 145, 171), new valueRange.ptr(58624, 172, 172), new valueRange.ptr(50688, 173, 191), new valueRange.ptr(0, 5, 0), new valueRange.ptr(50688, 128, 135), new valueRange.ptr(58624, 136, 136), new valueRange.ptr(50688, 137, 163), new valueRange.ptr(58624, 164, 164), new valueRange.ptr(50688, 165, 191), new valueRange.ptr(0, 3, 0), new valueRange.ptr(50688, 128, 135), new valueRange.ptr(58624, 136, 136), new valueRange.ptr(50688, 137, 163), new valueRange.ptr(2, 1, 0), new valueRange.ptr(3, 129, 191), new valueRange.ptr(0, 1, 0), new valueRange.ptr(33069, 189, 189), new valueRange.ptr(0, 1, 0), new valueRange.ptr(33069, 160, 160), new valueRange.ptr(0, 1, 0), new valueRange.ptr(33074, 182, 186), new valueRange.ptr(44, 5, 0), new valueRange.ptr(33069, 141, 141), new valueRange.ptr(33074, 143, 143), new valueRange.ptr(33074, 184, 184), new valueRange.ptr(33025, 185, 186), new valueRange.ptr(33028, 191, 191), new valueRange.ptr(0, 2, 0), new valueRange.ptr(33074, 165, 165), new valueRange.ptr(33069, 166, 166), new valueRange.ptr(0, 2, 0), new valueRange.ptr(33028, 134, 134), new valueRange.ptr(33028, 191, 191), new valueRange.ptr(6142, 7, 0), new valueRange.ptr(40960, 153, 153), new valueRange.ptr(16952, 154, 154), new valueRange.ptr(40960, 155, 155), new valueRange.ptr(16962, 156, 156), new valueRange.ptr(40960, 165, 165), new valueRange.ptr(16972, 171, 171), new valueRange.ptr(33028, 185, 186), new valueRange.ptr(0, 6, 0), new valueRange.ptr(33074, 128, 130), new valueRange.ptr(39168, 167, 167), new valueRange.ptr(11646, 174, 174), new valueRange.ptr(11656, 175, 175), new valueRange.ptr(40960, 177, 178), new valueRange.ptr(33028, 179, 180), new valueRange.ptr(0, 2, 0), new valueRange.ptr(33028, 128, 128), new valueRange.ptr(33026, 138, 138), new valueRange.ptr(0, 2, 0), new valueRange.ptr(33028, 181, 181), new valueRange.ptr(33026, 182, 182), new valueRange.ptr(2, 1, 0), new valueRange.ptr(33026, 169, 170), new valueRange.ptr(0, 7, 0), new valueRange.ptr(40960, 135, 135), new valueRange.ptr(11666, 139, 139), new valueRange.ptr(11676, 140, 140), new valueRange.ptr(33028, 141, 141), new valueRange.ptr(39168, 151, 151), new valueRange.ptr(33074, 166, 172), new valueRange.ptr(33074, 176, 180), new valueRange.ptr(0, 2, 0), new valueRange.ptr(33028, 130, 130), new valueRange.ptr(33026, 134, 134), new valueRange.ptr(27482, 6, 0), new valueRange.ptr(39168, 176, 176), new valueRange.ptr(40960, 185, 185), new valueRange.ptr(39168, 186, 186), new valueRange.ptr(11696, 187, 187), new valueRange.ptr(11686, 188, 189), new valueRange.ptr(11706, 190, 190), new valueRange.ptr(0, 2, 0), new valueRange.ptr(33028, 130, 130), new valueRange.ptr(33026, 131, 131), new valueRange.ptr(0, 5, 0), new valueRange.ptr(39168, 175, 175), new valueRange.ptr(40960, 184, 185), new valueRange.ptr(11716, 186, 186), new valueRange.ptr(11726, 187, 187), new valueRange.ptr(33028, 191, 191), new valueRange.ptr(0, 1, 0), new valueRange.ptr(33026, 128, 128), new valueRange.ptr(0, 1, 0), new valueRange.ptr(33028, 191, 191), new valueRange.ptr(0, 2, 0), new valueRange.ptr(33028, 182, 182), new valueRange.ptr(33026, 183, 183), new valueRange.ptr(0, 1, 0), new valueRange.ptr(33028, 171, 171), new valueRange.ptr(0, 1, 0), new valueRange.ptr(33028, 180, 180), new valueRange.ptr(0, 1, 0), new valueRange.ptr(33028, 135, 135), new valueRange.ptr(0, 1, 0), new valueRange.ptr(33028, 153, 153), new valueRange.ptr(0, 2, 0), new valueRange.ptr(33026, 130, 130), new valueRange.ptr(33028, 132, 133), new valueRange.ptr(0, 1, 0), new valueRange.ptr(33025, 176, 180), new valueRange.ptr(0, 1, 0), new valueRange.ptr(33074, 176, 182), new valueRange.ptr(0, 1, 0), new valueRange.ptr(33025, 158, 158), new valueRange.ptr(0, 12, 0), new valueRange.ptr(17868, 158, 158), new valueRange.ptr(17878, 159, 159), new valueRange.ptr(17930, 160, 160), new valueRange.ptr(17944, 161, 161), new valueRange.ptr(17958, 162, 162), new valueRange.ptr(17972, 163, 163), new valueRange.ptr(17986, 164, 164), new valueRange.ptr(33067, 165, 166), new valueRange.ptr(33025, 167, 169), new valueRange.ptr(33072, 173, 173), new valueRange.ptr(33067, 174, 178), new valueRange.ptr(33069, 187, 191), new valueRange.ptr(0, 9, 0), new valueRange.ptr(33069, 128, 130), new valueRange.ptr(33074, 133, 137), new valueRange.ptr(33069, 138, 139), new valueRange.ptr(33074, 170, 173), new valueRange.ptr(17888, 187, 187), new valueRange.ptr(17898, 188, 188), new valueRange.ptr(18000, 189, 189), new valueRange.ptr(18028, 190, 190), new valueRange.ptr(18014, 191, 191), new valueRange.ptr(0, 1, 0), new valueRange.ptr(18042, 128, 128), new valueRange.ptr(0, 1, 0), new valueRange.ptr(33074, 130, 132), new valueRange.ptr(2, 3, 0), new valueRange.ptr(67, 128, 153), new valueRange.ptr(131, 154, 179), new valueRange.ptr(67, 180, 191), new valueRange.ptr(2, 4, 0), new valueRange.ptr(91, 128, 141), new valueRange.ptr(131, 142, 148), new valueRange.ptr(147, 150, 167), new valueRange.ptr(67, 168, 191), new valueRange.ptr(2, 11, 0), new valueRange.ptr(115, 128, 129), new valueRange.ptr(131, 130, 155), new valueRange.ptr(67, 156, 156), new valueRange.ptr(71, 158, 159), new valueRange.ptr(79, 162, 162), new valueRange.ptr(85, 165, 166), new valueRange.ptr(93, 169, 172), new valueRange.ptr(103, 174, 181), new valueRange.ptr(131, 182, 185), new valueRange.ptr(141, 187, 187), new valueRange.ptr(145, 189, 191), new valueRange.ptr(2, 4, 0), new valueRange.ptr(151, 128, 131), new valueRange.ptr(161, 133, 143), new valueRange.ptr(67, 144, 169), new valueRange.ptr(131, 170, 191), new valueRange.ptr(2, 8, 0), new valueRange.ptr(175, 128, 131), new valueRange.ptr(67, 132, 133), new valueRange.ptr(73, 135, 138), new valueRange.ptr(85, 141, 148), new valueRange.ptr(103, 150, 156), new valueRange.ptr(131, 158, 183), new valueRange.ptr(67, 184, 185), new valueRange.ptr(73, 187, 190), new valueRange.ptr(2, 5, 0), new valueRange.ptr(83, 128, 132), new valueRange.ptr(95, 134, 134), new valueRange.ptr(103, 138, 144), new valueRange.ptr(131, 146, 171), new valueRange.ptr(67, 172, 191), new valueRange.ptr(2, 4, 0), new valueRange.ptr(107, 128, 133), new valueRange.ptr(131, 134, 159), new valueRange.ptr(67, 160, 185), new valueRange.ptr(131, 186, 191), new valueRange.ptr(2, 3, 0), new valueRange.ptr(143, 128, 147), new valueRange.ptr(67, 148, 173), new valueRange.ptr(131, 174, 191), new valueRange.ptr(2, 4, 0), new valueRange.ptr(167, 128, 135), new valueRange.ptr(67, 136, 161), new valueRange.ptr(131, 162, 187), new valueRange.ptr(67, 188, 191), new valueRange.ptr(2, 3, 0), new valueRange.ptr(75, 128, 149), new valueRange.ptr(131, 150, 175), new valueRange.ptr(67, 176, 191), new valueRange.ptr(3, 15, 0), new valueRange.ptr(440, 128, 128), new valueRange.ptr(1119, 129, 129), new valueRange.ptr(443, 130, 154), new valueRange.ptr(1115, 155, 155), new valueRange.ptr(455, 156, 156), new valueRange.ptr(464, 157, 157), new valueRange.ptr(470, 158, 158), new valueRange.ptr(506, 159, 159), new valueRange.ptr(491, 160, 160), new valueRange.ptr(488, 161, 161), new valueRange.ptr(371, 162, 178), new valueRange.ptr(392, 179, 179), new valueRange.ptr(422, 180, 186), new valueRange.ptr(1119, 187, 187), new valueRange.ptr(443, 188, 191), new valueRange.ptr(3, 13, 0), new valueRange.ptr(455, 128, 148), new valueRange.ptr(1115, 149, 149), new valueRange.ptr(455, 150, 150), new valueRange.ptr(464, 151, 151), new valueRange.ptr(470, 152, 152), new valueRange.ptr(506, 153, 153), new valueRange.ptr(491, 154, 154), new valueRange.ptr(488, 155, 155), new valueRange.ptr(371, 156, 172), new valueRange.ptr(392, 173, 173), new valueRange.ptr(422, 174, 180), new valueRange.ptr(1119, 181, 181), new valueRange.ptr(443, 182, 191), new valueRange.ptr(3, 13, 0), new valueRange.ptr(473, 128, 142), new valueRange.ptr(1115, 143, 143), new valueRange.ptr(455, 144, 144), new valueRange.ptr(464, 145, 145), new valueRange.ptr(470, 146, 146), new valueRange.ptr(506, 147, 147), new valueRange.ptr(491, 148, 148), new valueRange.ptr(488, 149, 149), new valueRange.ptr(371, 150, 166), new valueRange.ptr(392, 167, 167), new valueRange.ptr(422, 168, 174), new valueRange.ptr(1119, 175, 175), new valueRange.ptr(443, 176, 191), new valueRange.ptr(3, 13, 0), new valueRange.ptr(491, 128, 136), new valueRange.ptr(1115, 137, 137), new valueRange.ptr(455, 138, 138), new valueRange.ptr(464, 139, 139), new valueRange.ptr(470, 140, 140), new valueRange.ptr(506, 141, 141), new valueRange.ptr(491, 142, 142), new valueRange.ptr(488, 143, 143), new valueRange.ptr(371, 144, 160), new valueRange.ptr(392, 161, 161), new valueRange.ptr(422, 162, 168), new valueRange.ptr(1119, 169, 169), new valueRange.ptr(443, 170, 191), new valueRange.ptr(0, 5, 0), new valueRange.ptr(33074, 128, 134), new valueRange.ptr(33074, 136, 152), new valueRange.ptr(33074, 155, 161), new valueRange.ptr(33074, 163, 164), new valueRange.ptr(33074, 166, 170), new valueRange.ptr(0, 1, 0), new valueRange.ptr(33069, 144, 150), new valueRange.ptr(0, 2, 0), new valueRange.ptr(33074, 132, 137), new valueRange.ptr(33026, 138, 138), new valueRange.ptr(2, 9, 0), new valueRange.ptr(99, 128, 137), new valueRange.ptr(6481, 138, 138), new valueRange.ptr(6529, 139, 139), new valueRange.ptr(6556, 140, 140), new valueRange.ptr(6562, 141, 141), new valueRange.ptr(7104, 142, 142), new valueRange.ptr(6574, 143, 143), new valueRange.ptr(6523, 170, 170), new valueRange.ptr(6526, 171, 171), new valueRange.ptr(0, 1, 0), new valueRange.ptr(6463, 144, 144), new valueRange.ptr(40, 9, 0), new valueRange.ptr(10338, 128, 128), new valueRange.ptr(10278, 129, 129), new valueRange.ptr(10288, 130, 130), new valueRange.ptr(10308, 131, 132), new valueRange.ptr(10318, 133, 134), new valueRange.ptr(10298, 135, 135), new valueRange.ptr(10328, 136, 136), new valueRange.ptr(2927, 144, 144), new valueRange.ptr(2279, 145, 145)]);
 91192  		recompMap = $makeMap($Uint32.keyFor, [{ k: 4260608, v: 192 }, { k: 4260609, v: 193 }, { k: 4260610, v: 194 }, { k: 4260611, v: 195 }, { k: 4260616, v: 196 }, { k: 4260618, v: 197 }, { k: 4391719, v: 199 }, { k: 4522752, v: 200 }, { k: 4522753, v: 201 }, { k: 4522754, v: 202 }, { k: 4522760, v: 203 }, { k: 4784896, v: 204 }, { k: 4784897, v: 205 }, { k: 4784898, v: 206 }, { k: 4784904, v: 207 }, { k: 5112579, v: 209 }, { k: 5178112, v: 210 }, { k: 5178113, v: 211 }, { k: 5178114, v: 212 }, { k: 5178115, v: 213 }, { k: 5178120, v: 214 }, { k: 5571328, v: 217 }, { k: 5571329, v: 218 }, { k: 5571330, v: 219 }, { k: 5571336, v: 220 }, { k: 5833473, v: 221 }, { k: 6357760, v: 224 }, { k: 6357761, v: 225 }, { k: 6357762, v: 226 }, { k: 6357763, v: 227 }, { k: 6357768, v: 228 }, { k: 6357770, v: 229 }, { k: 6488871, v: 231 }, { k: 6619904, v: 232 }, { k: 6619905, v: 233 }, { k: 6619906, v: 234 }, { k: 6619912, v: 235 }, { k: 6882048, v: 236 }, { k: 6882049, v: 237 }, { k: 6882050, v: 238 }, { k: 6882056, v: 239 }, { k: 7209731, v: 241 }, { k: 7275264, v: 242 }, { k: 7275265, v: 243 }, { k: 7275266, v: 244 }, { k: 7275267, v: 245 }, { k: 7275272, v: 246 }, { k: 7668480, v: 249 }, { k: 7668481, v: 250 }, { k: 7668482, v: 251 }, { k: 7668488, v: 252 }, { k: 7930625, v: 253 }, { k: 7930632, v: 255 }, { k: 4260612, v: 256 }, { k: 6357764, v: 257 }, { k: 4260614, v: 258 }, { k: 6357766, v: 259 }, { k: 4260648, v: 260 }, { k: 6357800, v: 261 }, { k: 4391681, v: 262 }, { k: 6488833, v: 263 }, { k: 4391682, v: 264 }, { k: 6488834, v: 265 }, { k: 4391687, v: 266 }, { k: 6488839, v: 267 }, { k: 4391692, v: 268 }, { k: 6488844, v: 269 }, { k: 4457228, v: 270 }, { k: 6554380, v: 271 }, { k: 4522756, v: 274 }, { k: 6619908, v: 275 }, { k: 4522758, v: 276 }, { k: 6619910, v: 277 }, { k: 4522759, v: 278 }, { k: 6619911, v: 279 }, { k: 4522792, v: 280 }, { k: 6619944, v: 281 }, { k: 4522764, v: 282 }, { k: 6619916, v: 283 }, { k: 4653826, v: 284 }, { k: 6750978, v: 285 }, { k: 4653830, v: 286 }, { k: 6750982, v: 287 }, { k: 4653831, v: 288 }, { k: 6750983, v: 289 }, { k: 4653863, v: 290 }, { k: 6751015, v: 291 }, { k: 4719362, v: 292 }, { k: 6816514, v: 293 }, { k: 4784899, v: 296 }, { k: 6882051, v: 297 }, { k: 4784900, v: 298 }, { k: 6882052, v: 299 }, { k: 4784902, v: 300 }, { k: 6882054, v: 301 }, { k: 4784936, v: 302 }, { k: 6882088, v: 303 }, { k: 4784903, v: 304 }, { k: 4850434, v: 308 }, { k: 6947586, v: 309 }, { k: 4916007, v: 310 }, { k: 7013159, v: 311 }, { k: 4981505, v: 313 }, { k: 7078657, v: 314 }, { k: 4981543, v: 315 }, { k: 7078695, v: 316 }, { k: 4981516, v: 317 }, { k: 7078668, v: 318 }, { k: 5112577, v: 323 }, { k: 7209729, v: 324 }, { k: 5112615, v: 325 }, { k: 7209767, v: 326 }, { k: 5112588, v: 327 }, { k: 7209740, v: 328 }, { k: 5178116, v: 332 }, { k: 7275268, v: 333 }, { k: 5178118, v: 334 }, { k: 7275270, v: 335 }, { k: 5178123, v: 336 }, { k: 7275275, v: 337 }, { k: 5374721, v: 340 }, { k: 7471873, v: 341 }, { k: 5374759, v: 342 }, { k: 7471911, v: 343 }, { k: 5374732, v: 344 }, { k: 7471884, v: 345 }, { k: 5440257, v: 346 }, { k: 7537409, v: 347 }, { k: 5440258, v: 348 }, { k: 7537410, v: 349 }, { k: 5440295, v: 350 }, { k: 7537447, v: 351 }, { k: 5440268, v: 352 }, { k: 7537420, v: 353 }, { k: 5505831, v: 354 }, { k: 7602983, v: 355 }, { k: 5505804, v: 356 }, { k: 7602956, v: 357 }, { k: 5571331, v: 360 }, { k: 7668483, v: 361 }, { k: 5571332, v: 362 }, { k: 7668484, v: 363 }, { k: 5571334, v: 364 }, { k: 7668486, v: 365 }, { k: 5571338, v: 366 }, { k: 7668490, v: 367 }, { k: 5571339, v: 368 }, { k: 7668491, v: 369 }, { k: 5571368, v: 370 }, { k: 7668520, v: 371 }, { k: 5702402, v: 372 }, { k: 7799554, v: 373 }, { k: 5833474, v: 374 }, { k: 7930626, v: 375 }, { k: 5833480, v: 376 }, { k: 5899009, v: 377 }, { k: 7996161, v: 378 }, { k: 5899015, v: 379 }, { k: 7996167, v: 380 }, { k: 5899020, v: 381 }, { k: 7996172, v: 382 }, { k: 5178139, v: 416 }, { k: 7275291, v: 417 }, { k: 5571355, v: 431 }, { k: 7668507, v: 432 }, { k: 4260620, v: 461 }, { k: 6357772, v: 462 }, { k: 4784908, v: 463 }, { k: 6882060, v: 464 }, { k: 5178124, v: 465 }, { k: 7275276, v: 466 }, { k: 5571340, v: 467 }, { k: 7668492, v: 468 }, { k: 14418692, v: 469 }, { k: 16515844, v: 470 }, { k: 14418689, v: 471 }, { k: 16515841, v: 472 }, { k: 14418700, v: 473 }, { k: 16515852, v: 474 }, { k: 14418688, v: 475 }, { k: 16515840, v: 476 }, { k: 12845828, v: 478 }, { k: 14942980, v: 479 }, { k: 36045572, v: 480 }, { k: 36111108, v: 481 }, { k: 12976900, v: 482 }, { k: 15074052, v: 483 }, { k: 4653836, v: 486 }, { k: 6750988, v: 487 }, { k: 4915980, v: 488 }, { k: 7013132, v: 489 }, { k: 5178152, v: 490 }, { k: 7275304, v: 491 }, { k: 32113412, v: 492 }, { k: 32178948, v: 493 }, { k: 28771084, v: 494 }, { k: 43123468, v: 495 }, { k: 6947596, v: 496 }, { k: 4653825, v: 500 }, { k: 6750977, v: 501 }, { k: 5112576, v: 504 }, { k: 7209728, v: 505 }, { k: 12911361, v: 506 }, { k: 15008513, v: 507 }, { k: 12976897, v: 508 }, { k: 15074049, v: 509 }, { k: 14156545, v: 510 }, { k: 16253697, v: 511 }, { k: 4260623, v: 512 }, { k: 6357775, v: 513 }, { k: 4260625, v: 514 }, { k: 6357777, v: 515 }, { k: 4522767, v: 516 }, { k: 6619919, v: 517 }, { k: 4522769, v: 518 }, { k: 6619921, v: 519 }, { k: 4784911, v: 520 }, { k: 6882063, v: 521 }, { k: 4784913, v: 522 }, { k: 6882065, v: 523 }, { k: 5178127, v: 524 }, { k: 7275279, v: 525 }, { k: 5178129, v: 526 }, { k: 7275281, v: 527 }, { k: 5374735, v: 528 }, { k: 7471887, v: 529 }, { k: 5374737, v: 530 }, { k: 7471889, v: 531 }, { k: 5571343, v: 532 }, { k: 7668495, v: 533 }, { k: 5571345, v: 534 }, { k: 7668497, v: 535 }, { k: 5440294, v: 536 }, { k: 7537446, v: 537 }, { k: 5505830, v: 538 }, { k: 7602982, v: 539 }, { k: 4719372, v: 542 }, { k: 6816524, v: 543 }, { k: 4260615, v: 550 }, { k: 6357767, v: 551 }, { k: 4522791, v: 552 }, { k: 6619943, v: 553 }, { k: 14025476, v: 554 }, { k: 16122628, v: 555 }, { k: 13959940, v: 556 }, { k: 16057092, v: 557 }, { k: 5178119, v: 558 }, { k: 7275271, v: 559 }, { k: 36569860, v: 560 }, { k: 36635396, v: 561 }, { k: 5833476, v: 562 }, { k: 7930628, v: 563 }, { k: 11010817, v: 901 }, { k: 59835137, v: 902 }, { k: 60097281, v: 904 }, { k: 60228353, v: 905 }, { k: 60359425, v: 906 }, { k: 60752641, v: 908 }, { k: 61145857, v: 910 }, { k: 61408001, v: 911 }, { k: 63570689, v: 912 }, { k: 60359432, v: 938 }, { k: 61145864, v: 939 }, { k: 61932289, v: 940 }, { k: 62194433, v: 941 }, { k: 62325505, v: 942 }, { k: 62456577, v: 943 }, { k: 63636225, v: 944 }, { k: 62456584, v: 970 }, { k: 63243016, v: 971 }, { k: 62849793, v: 972 }, { k: 63243009, v: 973 }, { k: 63505153, v: 974 }, { k: 64094977, v: 979 }, { k: 64094984, v: 980 }, { k: 68485888, v: 1024 }, { k: 68485896, v: 1025 }, { k: 68354817, v: 1027 }, { k: 67502856, v: 1031 }, { k: 68813569, v: 1036 }, { k: 68682496, v: 1037 }, { k: 69403398, v: 1038 }, { k: 68682502, v: 1049 }, { k: 70779654, v: 1081 }, { k: 70583040, v: 1104 }, { k: 70583048, v: 1105 }, { k: 70451969, v: 1107 }, { k: 72745736, v: 1111 }, { k: 70910721, v: 1116 }, { k: 70779648, v: 1117 }, { k: 71500550, v: 1118 }, { k: 74711823, v: 1142 }, { k: 74777359, v: 1143 }, { k: 68551430, v: 1217 }, { k: 70648582, v: 1218 }, { k: 68158214, v: 1232 }, { k: 70255366, v: 1233 }, { k: 68158216, v: 1234 }, { k: 70255368, v: 1235 }, { k: 68485894, v: 1238 }, { k: 70583046, v: 1239 }, { k: 81265416, v: 1242 }, { k: 81330952, v: 1243 }, { k: 68551432, v: 1244 }, { k: 70648584, v: 1245 }, { k: 68616968, v: 1246 }, { k: 70714120, v: 1247 }, { k: 68682500, v: 1250 }, { k: 70779652, v: 1251 }, { k: 68682504, v: 1252 }, { k: 70779656, v: 1253 }, { k: 69075720, v: 1254 }, { k: 71172872, v: 1255 }, { k: 82313992, v: 1258 }, { k: 82379528, v: 1259 }, { k: 70058760, v: 1260 }, { k: 72155912, v: 1261 }, { k: 69403396, v: 1262 }, { k: 71500548, v: 1263 }, { k: 69403400, v: 1264 }, { k: 71500552, v: 1265 }, { k: 69403403, v: 1266 }, { k: 71500555, v: 1267 }, { k: 69665544, v: 1268 }, { k: 71762696, v: 1269 }, { k: 69927688, v: 1272 }, { k: 72024840, v: 1273 }, { k: 103220819, v: 1570 }, { k: 103220820, v: 1571 }, { k: 105383508, v: 1572 }, { k: 103220821, v: 1573 }, { k: 105514580, v: 1574 }, { k: 114624084, v: 1728 }, { k: 113313364, v: 1730 }, { k: 114427476, v: 1747 }, { k: 153618748, v: 2345 }, { k: 154143036, v: 2353 }, { k: 154339644, v: 2356 }, { k: 164039102, v: 2507 }, { k: 164039127, v: 2508 }, { k: 189205334, v: 2888 }, { k: 189205310, v: 2891 }, { k: 189205335, v: 2892 }, { k: 194120663, v: 2964 }, { k: 197528510, v: 3018 }, { k: 197594046, v: 3019 }, { k: 197528535, v: 3020 }, { k: 205917270, v: 3144 }, { k: 213847253, v: 3264 }, { k: 214306005, v: 3271 }, { k: 214306006, v: 3272 }, { k: 214305986, v: 3274 }, { k: 214568149, v: 3275 }, { k: 222694718, v: 3402 }, { k: 222760254, v: 3403 }, { k: 222694743, v: 3404 }, { k: 232328650, v: 3546 }, { k: 232328655, v: 3548 }, { k: 232525258, v: 3549 }, { k: 232328671, v: 3550 }, { k: 270864430, v: 4134 }, { k: 453319477, v: 6918 }, { k: 453450549, v: 6920 }, { k: 453581621, v: 6922 }, { k: 453712693, v: 6924 }, { k: 453843765, v: 6926 }, { k: 454105909, v: 6930 }, { k: 456792885, v: 6971 }, { k: 456923957, v: 6973 }, { k: 457055029, v: 6976 }, { k: 457120565, v: 6977 }, { k: 457317173, v: 6979 }, { k: 4260645, v: 7680 }, { k: 6357797, v: 7681 }, { k: 4326151, v: 7682 }, { k: 6423303, v: 7683 }, { k: 4326179, v: 7684 }, { k: 6423331, v: 7685 }, { k: 4326193, v: 7686 }, { k: 6423345, v: 7687 }, { k: 13042433, v: 7688 }, { k: 15139585, v: 7689 }, { k: 4457223, v: 7690 }, { k: 6554375, v: 7691 }, { k: 4457251, v: 7692 }, { k: 6554403, v: 7693 }, { k: 4457265, v: 7694 }, { k: 6554417, v: 7695 }, { k: 4457255, v: 7696 }, { k: 6554407, v: 7697 }, { k: 4457261, v: 7698 }, { k: 6554413, v: 7699 }, { k: 17957632, v: 7700 }, { k: 18023168, v: 7701 }, { k: 17957633, v: 7702 }, { k: 18023169, v: 7703 }, { k: 4522797, v: 7704 }, { k: 6619949, v: 7705 }, { k: 4522800, v: 7706 }, { k: 6619952, v: 7707 }, { k: 36176646, v: 7708 }, { k: 36242182, v: 7709 }, { k: 4588295, v: 7710 }, { k: 6685447, v: 7711 }, { k: 4653828, v: 7712 }, { k: 6750980, v: 7713 }, { k: 4719367, v: 7714 }, { k: 6816519, v: 7715 }, { k: 4719395, v: 7716 }, { k: 6816547, v: 7717 }, { k: 4719368, v: 7718 }, { k: 6816520, v: 7719 }, { k: 4719399, v: 7720 }, { k: 6816551, v: 7721 }, { k: 4719406, v: 7722 }, { k: 6816558, v: 7723 }, { k: 4784944, v: 7724 }, { k: 6882096, v: 7725 }, { k: 13566721, v: 7726 }, { k: 15663873, v: 7727 }, { k: 4915969, v: 7728 }, { k: 7013121, v: 7729 }, { k: 4916003, v: 7730 }, { k: 7013155, v: 7731 }, { k: 4916017, v: 7732 }, { k: 7013169, v: 7733 }, { k: 4981539, v: 7734 }, { k: 7078691, v: 7735 }, { k: 506856196, v: 7736 }, { k: 506921732, v: 7737 }, { k: 4981553, v: 7738 }, { k: 7078705, v: 7739 }, { k: 4981549, v: 7740 }, { k: 7078701, v: 7741 }, { k: 5047041, v: 7742 }, { k: 7144193, v: 7743 }, { k: 5047047, v: 7744 }, { k: 7144199, v: 7745 }, { k: 5047075, v: 7746 }, { k: 7144227, v: 7747 }, { k: 5112583, v: 7748 }, { k: 7209735, v: 7749 }, { k: 5112611, v: 7750 }, { k: 7209763, v: 7751 }, { k: 5112625, v: 7752 }, { k: 7209777, v: 7753 }, { k: 5112621, v: 7754 }, { k: 7209773, v: 7755 }, { k: 13959937, v: 7756 }, { k: 16057089, v: 7757 }, { k: 13959944, v: 7758 }, { k: 16057096, v: 7759 }, { k: 21758720, v: 7760 }, { k: 21824256, v: 7761 }, { k: 21758721, v: 7762 }, { k: 21824257, v: 7763 }, { k: 5243649, v: 7764 }, { k: 7340801, v: 7765 }, { k: 5243655, v: 7766 }, { k: 7340807, v: 7767 }, { k: 5374727, v: 7768 }, { k: 7471879, v: 7769 }, { k: 5374755, v: 7770 }, { k: 7471907, v: 7771 }, { k: 509215492, v: 7772 }, { k: 509281028, v: 7773 }, { k: 5374769, v: 7774 }, { k: 7471921, v: 7775 }, { k: 5440263, v: 7776 }, { k: 7537415, v: 7777 }, { k: 5440291, v: 7778 }, { k: 7537443, v: 7779 }, { k: 22676231, v: 7780 }, { k: 22741767, v: 7781 }, { k: 23069447, v: 7782 }, { k: 23134983, v: 7783 }, { k: 509739783, v: 7784 }, { k: 509805319, v: 7785 }, { k: 5505799, v: 7786 }, { k: 7602951, v: 7787 }, { k: 5505827, v: 7788 }, { k: 7602979, v: 7789 }, { k: 5505841, v: 7790 }, { k: 7602993, v: 7791 }, { k: 5505837, v: 7792 }, { k: 7602989, v: 7793 }, { k: 5571364, v: 7794 }, { k: 7668516, v: 7795 }, { k: 5571376, v: 7796 }, { k: 7668528, v: 7797 }, { k: 5571373, v: 7798 }, { k: 7668525, v: 7799 }, { k: 23593729, v: 7800 }, { k: 23659265, v: 7801 }, { k: 23724808, v: 7802 }, { k: 23790344, v: 7803 }, { k: 5636867, v: 7804 }, { k: 7734019, v: 7805 }, { k: 5636899, v: 7806 }, { k: 7734051, v: 7807 }, { k: 5702400, v: 7808 }, { k: 7799552, v: 7809 }, { k: 5702401, v: 7810 }, { k: 7799553, v: 7811 }, { k: 5702408, v: 7812 }, { k: 7799560, v: 7813 }, { k: 5702407, v: 7814 }, { k: 7799559, v: 7815 }, { k: 5702435, v: 7816 }, { k: 7799587, v: 7817 }, { k: 5767943, v: 7818 }, { k: 7865095, v: 7819 }, { k: 5767944, v: 7820 }, { k: 7865096, v: 7821 }, { k: 5833479, v: 7822 }, { k: 7930631, v: 7823 }, { k: 5899010, v: 7824 }, { k: 7996162, v: 7825 }, { k: 5899043, v: 7826 }, { k: 7996195, v: 7827 }, { k: 5899057, v: 7828 }, { k: 7996209, v: 7829 }, { k: 6816561, v: 7830 }, { k: 7602952, v: 7831 }, { k: 7799562, v: 7832 }, { k: 7930634, v: 7833 }, { k: 25101063, v: 7835 }, { k: 4260643, v: 7840 }, { k: 6357795, v: 7841 }, { k: 4260617, v: 7842 }, { k: 6357769, v: 7843 }, { k: 12714753, v: 7844 }, { k: 14811905, v: 7845 }, { k: 12714752, v: 7846 }, { k: 14811904, v: 7847 }, { k: 12714761, v: 7848 }, { k: 14811913, v: 7849 }, { k: 12714755, v: 7850 }, { k: 14811907, v: 7851 }, { k: 513803010, v: 7852 }, { k: 513868546, v: 7853 }, { k: 16909057, v: 7854 }, { k: 16974593, v: 7855 }, { k: 16909056, v: 7856 }, { k: 16974592, v: 7857 }, { k: 16909065, v: 7858 }, { k: 16974601, v: 7859 }, { k: 16909059, v: 7860 }, { k: 16974595, v: 7861 }, { k: 513803014, v: 7862 }, { k: 513868550, v: 7863 }, { k: 4522787, v: 7864 }, { k: 6619939, v: 7865 }, { k: 4522761, v: 7866 }, { k: 6619913, v: 7867 }, { k: 4522755, v: 7868 }, { k: 6619907, v: 7869 }, { k: 13239041, v: 7870 }, { k: 15336193, v: 7871 }, { k: 13239040, v: 7872 }, { k: 15336192, v: 7873 }, { k: 13239049, v: 7874 }, { k: 15336201, v: 7875 }, { k: 13239043, v: 7876 }, { k: 15336195, v: 7877 }, { k: 515375874, v: 7878 }, { k: 515441410, v: 7879 }, { k: 4784905, v: 7880 }, { k: 6882057, v: 7881 }, { k: 4784931, v: 7882 }, { k: 6882083, v: 7883 }, { k: 5178147, v: 7884 }, { k: 7275299, v: 7885 }, { k: 5178121, v: 7886 }, { k: 7275273, v: 7887 }, { k: 13894401, v: 7888 }, { k: 15991553, v: 7889 }, { k: 13894400, v: 7890 }, { k: 15991552, v: 7891 }, { k: 13894409, v: 7892 }, { k: 15991561, v: 7893 }, { k: 13894403, v: 7894 }, { k: 15991555, v: 7895 }, { k: 516686594, v: 7896 }, { k: 516752130, v: 7897 }, { k: 27263745, v: 7898 }, { k: 27329281, v: 7899 }, { k: 27263744, v: 7900 }, { k: 27329280, v: 7901 }, { k: 27263753, v: 7902 }, { k: 27329289, v: 7903 }, { k: 27263747, v: 7904 }, { k: 27329283, v: 7905 }, { k: 27263779, v: 7906 }, { k: 27329315, v: 7907 }, { k: 5571363, v: 7908 }, { k: 7668515, v: 7909 }, { k: 5571337, v: 7910 }, { k: 7668489, v: 7911 }, { k: 28246785, v: 7912 }, { k: 28312321, v: 7913 }, { k: 28246784, v: 7914 }, { k: 28312320, v: 7915 }, { k: 28246793, v: 7916 }, { k: 28312329, v: 7917 }, { k: 28246787, v: 7918 }, { k: 28312323, v: 7919 }, { k: 28246819, v: 7920 }, { k: 28312355, v: 7921 }, { k: 5833472, v: 7922 }, { k: 7930624, v: 7923 }, { k: 5833507, v: 7924 }, { k: 7930659, v: 7925 }, { k: 5833481, v: 7926 }, { k: 7930633, v: 7927 }, { k: 5833475, v: 7928 }, { k: 7930627, v: 7929 }, { k: 61932307, v: 7936 }, { k: 61932308, v: 7937 }, { k: 520094464, v: 7938 }, { k: 520160000, v: 7939 }, { k: 520094465, v: 7940 }, { k: 520160001, v: 7941 }, { k: 520094530, v: 7942 }, { k: 520160066, v: 7943 }, { k: 59835155, v: 7944 }, { k: 59835156, v: 7945 }, { k: 520618752, v: 7946 }, { k: 520684288, v: 7947 }, { k: 520618753, v: 7948 }, { k: 520684289, v: 7949 }, { k: 520618818, v: 7950 }, { k: 520684354, v: 7951 }, { k: 62194451, v: 7952 }, { k: 62194452, v: 7953 }, { k: 521143040, v: 7954 }, { k: 521208576, v: 7955 }, { k: 521143041, v: 7956 }, { k: 521208577, v: 7957 }, { k: 60097299, v: 7960 }, { k: 60097300, v: 7961 }, { k: 521667328, v: 7962 }, { k: 521732864, v: 7963 }, { k: 521667329, v: 7964 }, { k: 521732865, v: 7965 }, { k: 62325523, v: 7968 }, { k: 62325524, v: 7969 }, { k: 522191616, v: 7970 }, { k: 522257152, v: 7971 }, { k: 522191617, v: 7972 }, { k: 522257153, v: 7973 }, { k: 522191682, v: 7974 }, { k: 522257218, v: 7975 }, { k: 60228371, v: 7976 }, { k: 60228372, v: 7977 }, { k: 522715904, v: 7978 }, { k: 522781440, v: 7979 }, { k: 522715905, v: 7980 }, { k: 522781441, v: 7981 }, { k: 522715970, v: 7982 }, { k: 522781506, v: 7983 }, { k: 62456595, v: 7984 }, { k: 62456596, v: 7985 }, { k: 523240192, v: 7986 }, { k: 523305728, v: 7987 }, { k: 523240193, v: 7988 }, { k: 523305729, v: 7989 }, { k: 523240258, v: 7990 }, { k: 523305794, v: 7991 }, { k: 60359443, v: 7992 }, { k: 60359444, v: 7993 }, { k: 523764480, v: 7994 }, { k: 523830016, v: 7995 }, { k: 523764481, v: 7996 }, { k: 523830017, v: 7997 }, { k: 523764546, v: 7998 }, { k: 523830082, v: 7999 }, { k: 62849811, v: 8000 }, { k: 62849812, v: 8001 }, { k: 524288768, v: 8002 }, { k: 524354304, v: 8003 }, { k: 524288769, v: 8004 }, { k: 524354305, v: 8005 }, { k: 60752659, v: 8008 }, { k: 60752660, v: 8009 }, { k: 524813056, v: 8010 }, { k: 524878592, v: 8011 }, { k: 524813057, v: 8012 }, { k: 524878593, v: 8013 }, { k: 63243027, v: 8016 }, { k: 63243028, v: 8017 }, { k: 525337344, v: 8018 }, { k: 525402880, v: 8019 }, { k: 525337345, v: 8020 }, { k: 525402881, v: 8021 }, { k: 525337410, v: 8022 }, { k: 525402946, v: 8023 }, { k: 61145876, v: 8025 }, { k: 525927168, v: 8027 }, { k: 525927169, v: 8029 }, { k: 525927234, v: 8031 }, { k: 63505171, v: 8032 }, { k: 63505172, v: 8033 }, { k: 526385920, v: 8034 }, { k: 526451456, v: 8035 }, { k: 526385921, v: 8036 }, { k: 526451457, v: 8037 }, { k: 526385986, v: 8038 }, { k: 526451522, v: 8039 }, { k: 61408019, v: 8040 }, { k: 61408020, v: 8041 }, { k: 526910208, v: 8042 }, { k: 526975744, v: 8043 }, { k: 526910209, v: 8044 }, { k: 526975745, v: 8045 }, { k: 526910274, v: 8046 }, { k: 526975810, v: 8047 }, { k: 61932288, v: 8048 }, { k: 62194432, v: 8050 }, { k: 62325504, v: 8052 }, { k: 62456576, v: 8054 }, { k: 62849792, v: 8056 }, { k: 63243008, v: 8058 }, { k: 63505152, v: 8060 }, { k: 520094533, v: 8064 }, { k: 520160069, v: 8065 }, { k: 520225605, v: 8066 }, { k: 520291141, v: 8067 }, { k: 520356677, v: 8068 }, { k: 520422213, v: 8069 }, { k: 520487749, v: 8070 }, { k: 520553285, v: 8071 }, { k: 520618821, v: 8072 }, { k: 520684357, v: 8073 }, { k: 520749893, v: 8074 }, { k: 520815429, v: 8075 }, { k: 520880965, v: 8076 }, { k: 520946501, v: 8077 }, { k: 521012037, v: 8078 }, { k: 521077573, v: 8079 }, { k: 522191685, v: 8080 }, { k: 522257221, v: 8081 }, { k: 522322757, v: 8082 }, { k: 522388293, v: 8083 }, { k: 522453829, v: 8084 }, { k: 522519365, v: 8085 }, { k: 522584901, v: 8086 }, { k: 522650437, v: 8087 }, { k: 522715973, v: 8088 }, { k: 522781509, v: 8089 }, { k: 522847045, v: 8090 }, { k: 522912581, v: 8091 }, { k: 522978117, v: 8092 }, { k: 523043653, v: 8093 }, { k: 523109189, v: 8094 }, { k: 523174725, v: 8095 }, { k: 526385989, v: 8096 }, { k: 526451525, v: 8097 }, { k: 526517061, v: 8098 }, { k: 526582597, v: 8099 }, { k: 526648133, v: 8100 }, { k: 526713669, v: 8101 }, { k: 526779205, v: 8102 }, { k: 526844741, v: 8103 }, { k: 526910277, v: 8104 }, { k: 526975813, v: 8105 }, { k: 527041349, v: 8106 }, { k: 527106885, v: 8107 }, { k: 527172421, v: 8108 }, { k: 527237957, v: 8109 }, { k: 527303493, v: 8110 }, { k: 527369029, v: 8111 }, { k: 61932294, v: 8112 }, { k: 61932292, v: 8113 }, { k: 527434565, v: 8114 }, { k: 61932357, v: 8115 }, { k: 61604677, v: 8116 }, { k: 61932354, v: 8118 }, { k: 532022085, v: 8119 }, { k: 59835142, v: 8120 }, { k: 59835140, v: 8121 }, { k: 59835136, v: 8122 }, { k: 59835205, v: 8124 }, { k: 11010882, v: 8129 }, { k: 527696709, v: 8130 }, { k: 62325573, v: 8131 }, { k: 61735749, v: 8132 }, { k: 62325570, v: 8134 }, { k: 533070661, v: 8135 }, { k: 60097280, v: 8136 }, { k: 60228352, v: 8138 }, { k: 60228421, v: 8140 }, { k: 532611840, v: 8141 }, { k: 532611841, v: 8142 }, { k: 532611906, v: 8143 }, { k: 62456582, v: 8144 }, { k: 62456580, v: 8145 }, { k: 63570688, v: 8146 }, { k: 62456642, v: 8150 }, { k: 63570754, v: 8151 }, { k: 60359430, v: 8152 }, { k: 60359428, v: 8153 }, { k: 60359424, v: 8154 }, { k: 536740608, v: 8157 }, { k: 536740609, v: 8158 }, { k: 536740674, v: 8159 }, { k: 63243014, v: 8160 }, { k: 63243012, v: 8161 }, { k: 63636224, v: 8162 }, { k: 62980883, v: 8164 }, { k: 62980884, v: 8165 }, { k: 63243074, v: 8166 }, { k: 63636290, v: 8167 }, { k: 61145862, v: 8168 }, { k: 61145860, v: 8169 }, { k: 61145856, v: 8170 }, { k: 60883732, v: 8172 }, { k: 11010816, v: 8173 }, { k: 528220997, v: 8178 }, { k: 63505221, v: 8179 }, { k: 63832901, v: 8180 }, { k: 63505218, v: 8182 }, { k: 536216389, v: 8183 }, { k: 60752640, v: 8184 }, { k: 61408000, v: 8186 }, { k: 61408069, v: 8188 }, { k: 563086136, v: 8602 }, { k: 563217208, v: 8603 }, { k: 563348280, v: 8622 }, { k: 567280440, v: 8653 }, { k: 567542584, v: 8654 }, { k: 567411512, v: 8655 }, { k: 570622776, v: 8708 }, { k: 570950456, v: 8713 }, { k: 571147064, v: 8716 }, { k: 572719928, v: 8740 }, { k: 572851000, v: 8742 }, { k: 574358328, v: 8769 }, { k: 574817080, v: 8772 }, { k: 574948152, v: 8775 }, { k: 575144760, v: 8777 }, { k: 3998520, v: 8800 }, { k: 576783160, v: 8802 }, { k: 575472440, v: 8813 }, { k: 3932984, v: 8814 }, { k: 4064056, v: 8815 }, { k: 576979768, v: 8816 }, { k: 577045304, v: 8817 }, { k: 577897272, v: 8820 }, { k: 577962808, v: 8821 }, { k: 578159416, v: 8824 }, { k: 578224952, v: 8825 }, { k: 578421560, v: 8832 }, { k: 578487096, v: 8833 }, { k: 578945848, v: 8836 }, { k: 579011384, v: 8837 }, { k: 579207992, v: 8840 }, { k: 579273528, v: 8841 }, { k: 581043000, v: 8876 }, { k: 581436216, v: 8877 }, { k: 581501752, v: 8878 }, { k: 581632824, v: 8879 }, { k: 578552632, v: 8928 }, { k: 578618168, v: 8929 }, { k: 579928888, v: 8930 }, { k: 579994424, v: 8931 }, { k: 582091576, v: 8938 }, { k: 582157112, v: 8939 }, { k: 582222648, v: 8940 }, { k: 582288184, v: 8941 }, { k: 810234009, v: 12364 }, { k: 810365081, v: 12366 }, { k: 810496153, v: 12368 }, { k: 810627225, v: 12370 }, { k: 810758297, v: 12372 }, { k: 810889369, v: 12374 }, { k: 811020441, v: 12376 }, { k: 811151513, v: 12378 }, { k: 811282585, v: 12380 }, { k: 811413657, v: 12382 }, { k: 811544729, v: 12384 }, { k: 811675801, v: 12386 }, { k: 811872409, v: 12389 }, { k: 812003481, v: 12391 }, { k: 812134553, v: 12393 }, { k: 812593305, v: 12400 }, { k: 812593306, v: 12401 }, { k: 812789913, v: 12403 }, { k: 812789914, v: 12404 }, { k: 812986521, v: 12406 }, { k: 812986522, v: 12407 }, { k: 813183129, v: 12409 }, { k: 813183130, v: 12410 }, { k: 813379737, v: 12412 }, { k: 813379738, v: 12413 }, { k: 809906329, v: 12436 }, { k: 815607961, v: 12446 }, { k: 816525465, v: 12460 }, { k: 816656537, v: 12462 }, { k: 816787609, v: 12464 }, { k: 816918681, v: 12466 }, { k: 817049753, v: 12468 }, { k: 817180825, v: 12470 }, { k: 817311897, v: 12472 }, { k: 817442969, v: 12474 }, { k: 817574041, v: 12476 }, { k: 817705113, v: 12478 }, { k: 817836185, v: 12480 }, { k: 817967257, v: 12482 }, { k: 818163865, v: 12485 }, { k: 818294937, v: 12487 }, { k: 818426009, v: 12489 }, { k: 818884761, v: 12496 }, { k: 818884762, v: 12497 }, { k: 819081369, v: 12499 }, { k: 819081370, v: 12500 }, { k: 819277977, v: 12502 }, { k: 819277978, v: 12503 }, { k: 819474585, v: 12505 }, { k: 819474586, v: 12506 }, { k: 819671193, v: 12508 }, { k: 819671194, v: 12509 }, { k: 816197785, v: 12532 }, { k: 820981913, v: 12535 }, { k: 821047449, v: 12536 }, { k: 821112985, v: 12537 }, { k: 821178521, v: 12538 }, { k: 821899417, v: 12542 }, { k: 278466746, v: 69786 }, { k: 278597818, v: 69788 }, { k: 279253178, v: 69803 }, { k: 288428327, v: 69934 }, { k: 288493863, v: 69935 }, { k: 323425086, v: 70475 }, { k: 323425111, v: 70476 }, { k: 347673786, v: 70843 }, { k: 347673776, v: 70844 }, { k: 347673789, v: 70846 }, { k: 364385711, v: 71098 }, { k: 364451247, v: 71099 }]);
 91193  		errs = new sliceType$1([$ifaceNil, transform.ErrShortDst, transform.ErrShortSrc]);
 91194  		nfcSparse = new sparseBlocks.ptr(new sliceType$2(nfcSparseValues), nfcSparseOffset);
 91195  		nfkcSparse = new sparseBlocks.ptr(new sliceType$2(nfkcSparseValues), nfkcSparseOffset);
 91196  		nfcData = newNfcTrie(0);
 91197  		nfkcData = newNfkcTrie(0);
 91198  		formTable = new sliceType$3([new formInfo.ptr(0, true, false, lookupInfoNFC, nextComposed), new formInfo.ptr(1, false, false, lookupInfoNFC, nextDecomposed), new formInfo.ptr(2, true, true, lookupInfoNFKC, nextComposed), new formInfo.ptr(3, false, true, lookupInfoNFKC, nextDecomposed)]);
 91199  		/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
 91200  	};
 91201  	$pkg.$init = $init;
 91202  	return $pkg;
 91203  })();
 91204  $packages["vendor/golang_org/x/net/idna"] = (function() {
 91205  	var $pkg = {}, $init, fmt, math, strings, utf8, bidirule, bidi, norm, options, Profile, labelError, runeError, labelIter, joinState, idnaTrie, valueRange, sparseBlocks, info, category, ptrType, sliceType, sliceType$1, arrayType, sliceType$2, sliceType$3, sliceType$4, sliceType$5, sliceType$6, ptrType$2, funcType, funcType$1, funcType$2, ptrType$3, ptrType$4, punycode, lookup, joinStates, mappings, xorData, idnaValues, idnaIndex, idnaSparseOffset, idnaSparseValues, idnaSparse, trie, ToASCII, validateAndMap, validateFromPunycode, ascii, punyError, decode, encode, decodeDigit, encodeDigit, adapt;
 91206  	fmt = $packages["fmt"];
 91207  	math = $packages["math"];
 91208  	strings = $packages["strings"];
 91209  	utf8 = $packages["unicode/utf8"];
 91210  	bidirule = $packages["vendor/golang_org/x/text/secure/bidirule"];
 91211  	bidi = $packages["vendor/golang_org/x/text/unicode/bidi"];
 91212  	norm = $packages["vendor/golang_org/x/text/unicode/norm"];
 91213  	options = $pkg.options = $newType(0, $kindStruct, "idna.options", true, "vendor/golang_org/x/net/idna", false, function(transitional_, useSTD3Rules_, validateLabels_, verifyDNSLength_, removeLeadingDots_, trie_, fromPuny_, mapping_, bidirule_) {
 91214  		this.$val = this;
 91215  		if (arguments.length === 0) {
 91216  			this.transitional = false;
 91217  			this.useSTD3Rules = false;
 91218  			this.validateLabels = false;
 91219  			this.verifyDNSLength = false;
 91220  			this.removeLeadingDots = false;
 91221  			this.trie = ptrType.nil;
 91222  			this.fromPuny = $throwNilPointerError;
 91223  			this.mapping = $throwNilPointerError;
 91224  			this.bidirule = $throwNilPointerError;
 91225  			return;
 91226  		}
 91227  		this.transitional = transitional_;
 91228  		this.useSTD3Rules = useSTD3Rules_;
 91229  		this.validateLabels = validateLabels_;
 91230  		this.verifyDNSLength = verifyDNSLength_;
 91231  		this.removeLeadingDots = removeLeadingDots_;
 91232  		this.trie = trie_;
 91233  		this.fromPuny = fromPuny_;
 91234  		this.mapping = mapping_;
 91235  		this.bidirule = bidirule_;
 91236  	});
 91237  	Profile = $pkg.Profile = $newType(0, $kindStruct, "idna.Profile", true, "vendor/golang_org/x/net/idna", true, function(options_) {
 91238  		this.$val = this;
 91239  		if (arguments.length === 0) {
 91240  			this.options = new options.ptr(false, false, false, false, false, ptrType.nil, $throwNilPointerError, $throwNilPointerError, $throwNilPointerError);
 91241  			return;
 91242  		}
 91243  		this.options = options_;
 91244  	});
 91245  	labelError = $pkg.labelError = $newType(0, $kindStruct, "idna.labelError", true, "vendor/golang_org/x/net/idna", false, function(label_, code__) {
 91246  		this.$val = this;
 91247  		if (arguments.length === 0) {
 91248  			this.label = "";
 91249  			this.code_ = "";
 91250  			return;
 91251  		}
 91252  		this.label = label_;
 91253  		this.code_ = code__;
 91254  	});
 91255  	runeError = $pkg.runeError = $newType(4, $kindInt32, "idna.runeError", true, "vendor/golang_org/x/net/idna", false, null);
 91256  	labelIter = $pkg.labelIter = $newType(0, $kindStruct, "idna.labelIter", true, "vendor/golang_org/x/net/idna", false, function(orig_, slice_, curStart_, curEnd_, i_) {
 91257  		this.$val = this;
 91258  		if (arguments.length === 0) {
 91259  			this.orig = "";
 91260  			this.slice = sliceType$4.nil;
 91261  			this.curStart = 0;
 91262  			this.curEnd = 0;
 91263  			this.i = 0;
 91264  			return;
 91265  		}
 91266  		this.orig = orig_;
 91267  		this.slice = slice_;
 91268  		this.curStart = curStart_;
 91269  		this.curEnd = curEnd_;
 91270  		this.i = i_;
 91271  	});
 91272  	joinState = $pkg.joinState = $newType(1, $kindInt8, "idna.joinState", true, "vendor/golang_org/x/net/idna", false, null);
 91273  	idnaTrie = $pkg.idnaTrie = $newType(0, $kindStruct, "idna.idnaTrie", true, "vendor/golang_org/x/net/idna", false, function() {
 91274  		this.$val = this;
 91275  		if (arguments.length === 0) {
 91276  			return;
 91277  		}
 91278  	});
 91279  	valueRange = $pkg.valueRange = $newType(0, $kindStruct, "idna.valueRange", true, "vendor/golang_org/x/net/idna", false, function(value_, lo_, hi_) {
 91280  		this.$val = this;
 91281  		if (arguments.length === 0) {
 91282  			this.value = 0;
 91283  			this.lo = 0;
 91284  			this.hi = 0;
 91285  			return;
 91286  		}
 91287  		this.value = value_;
 91288  		this.lo = lo_;
 91289  		this.hi = hi_;
 91290  	});
 91291  	sparseBlocks = $pkg.sparseBlocks = $newType(0, $kindStruct, "idna.sparseBlocks", true, "vendor/golang_org/x/net/idna", false, function(values_, offset_) {
 91292  		this.$val = this;
 91293  		if (arguments.length === 0) {
 91294  			this.values = sliceType$1.nil;
 91295  			this.offset = sliceType.nil;
 91296  			return;
 91297  		}
 91298  		this.values = values_;
 91299  		this.offset = offset_;
 91300  	});
 91301  	info = $pkg.info = $newType(2, $kindUint16, "idna.info", true, "vendor/golang_org/x/net/idna", false, null);
 91302  	category = $pkg.category = $newType(2, $kindUint16, "idna.category", true, "vendor/golang_org/x/net/idna", false, null);
 91303  	ptrType = $ptrType(idnaTrie);
 91304  	sliceType = $sliceType($Uint16);
 91305  	sliceType$1 = $sliceType(valueRange);
 91306  	arrayType = $arrayType(joinState, 8);
 91307  	sliceType$2 = $sliceType(arrayType);
 91308  	sliceType$3 = $sliceType($emptyInterface);
 91309  	sliceType$4 = $sliceType($String);
 91310  	sliceType$5 = $sliceType($Uint8);
 91311  	sliceType$6 = $sliceType($Int32);
 91312  	ptrType$2 = $ptrType(Profile);
 91313  	funcType = $funcType([ptrType$2, $String], [$error], false);
 91314  	funcType$1 = $funcType([ptrType$2, $String], [$String, $Bool, $error], false);
 91315  	funcType$2 = $funcType([$String], [$Bool], false);
 91316  	ptrType$3 = $ptrType(labelIter);
 91317  	ptrType$4 = $ptrType(sparseBlocks);
 91318  	ToASCII = function(s) {
 91319  		var _r, s, $s, $r;
 91320  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 91321  		_r = $pkg.Punycode.process(s, true); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 91322  		$s = -1; return _r;
 91323  		/* */ } return; } if ($f === undefined) { $f = { $blk: ToASCII }; } $f._r = _r; $f.s = s; $f.$s = $s; $f.$r = $r; return $f;
 91324  	};
 91325  	$pkg.ToASCII = ToASCII;
 91326  	Profile.ptr.prototype.ToASCII = function(s) {
 91327  		var _r, p, s, $s, $r;
 91328  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; p = $f.p; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 91329  		p = this;
 91330  		_r = p.process(s, true); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 91331  		$s = -1; return _r;
 91332  		/* */ } return; } if ($f === undefined) { $f = { $blk: Profile.ptr.prototype.ToASCII }; } $f._r = _r; $f.p = p; $f.s = s; $f.$s = $s; $f.$r = $r; return $f;
 91333  	};
 91334  	Profile.prototype.ToASCII = function(s) { return this.$val.ToASCII(s); };
 91335  	Profile.ptr.prototype.ToUnicode = function(s) {
 91336  		var _r, p, pp, s, $s, $r;
 91337  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; p = $f.p; pp = $f.pp; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 91338  		p = this;
 91339  		pp = $clone(p, Profile);
 91340  		pp.options.transitional = false;
 91341  		_r = pp.process(s, false); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 91342  		$s = -1; return _r;
 91343  		/* */ } return; } if ($f === undefined) { $f = { $blk: Profile.ptr.prototype.ToUnicode }; } $f._r = _r; $f.p = p; $f.pp = pp; $f.s = s; $f.$s = $s; $f.$r = $r; return $f;
 91344  	};
 91345  	Profile.prototype.ToUnicode = function(s) { return this.$val.ToUnicode(s); };
 91346  	Profile.ptr.prototype.String = function() {
 91347  		var p, s;
 91348  		p = this;
 91349  		s = "";
 91350  		if (p.options.transitional) {
 91351  			s = "Transitional";
 91352  		} else {
 91353  			s = "NonTransitional";
 91354  		}
 91355  		if (p.options.useSTD3Rules) {
 91356  			s = s + (":UseSTD3Rules");
 91357  		}
 91358  		if (p.options.validateLabels) {
 91359  			s = s + (":ValidateLabels");
 91360  		}
 91361  		if (p.options.verifyDNSLength) {
 91362  			s = s + (":VerifyDNSLength");
 91363  		}
 91364  		return s;
 91365  	};
 91366  	Profile.prototype.String = function() { return this.$val.String(); };
 91367  	labelError.ptr.prototype.Error = function() {
 91368  		var _r, e, $s, $r;
 91369  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; e = $f.e; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 91370  		e = this;
 91371  		_r = fmt.Sprintf("idna: invalid label %q", new sliceType$3([new $String(e.label)])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 91372  		$s = -1; return _r;
 91373  		/* */ } return; } if ($f === undefined) { $f = { $blk: labelError.ptr.prototype.Error }; } $f._r = _r; $f.e = e; $f.$s = $s; $f.$r = $r; return $f;
 91374  	};
 91375  	labelError.prototype.Error = function() { return this.$val.Error(); };
 91376  	runeError.prototype.Error = function() {
 91377  		var _r, e, $s, $r;
 91378  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; e = $f.e; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 91379  		e = this.$val;
 91380  		_r = fmt.Sprintf("idna: disallowed rune %U", new sliceType$3([new runeError(e)])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 91381  		$s = -1; return _r;
 91382  		/* */ } return; } if ($f === undefined) { $f = { $blk: runeError.prototype.Error }; } $f._r = _r; $f.e = e; $f.$s = $s; $f.$r = $r; return $f;
 91383  	};
 91384  	$ptrType(runeError).prototype.Error = function() { return new runeError(this.$get()).Error(); };
 91385  	Profile.ptr.prototype.process = function(s, toASCII) {
 91386  		var _r, _r$1, _r$2, _tuple, _tuple$1, _tuple$2, a, err, err2, err2$1, isBidi, label, label$1, labels, n, n$1, p, s, toASCII, u, $s, $r;
 91387  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; a = $f.a; err = $f.err; err2 = $f.err2; err2$1 = $f.err2$1; isBidi = $f.isBidi; label = $f.label; label$1 = $f.label$1; labels = $f.labels; n = $f.n; n$1 = $f.n$1; p = $f.p; s = $f.s; toASCII = $f.toASCII; u = $f.u; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 91388  		p = this;
 91389  		err = $ifaceNil;
 91390  		isBidi = false;
 91391  		/* */ if (!(p.options.mapping === $throwNilPointerError)) { $s = 1; continue; }
 91392  		/* */ $s = 2; continue;
 91393  		/* if (!(p.options.mapping === $throwNilPointerError)) { */ case 1:
 91394  			_r = p.options.mapping(p, s); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 91395  			_tuple = _r;
 91396  			s = _tuple[0];
 91397  			isBidi = _tuple[1];
 91398  			err = _tuple[2];
 91399  		/* } */ case 2:
 91400  		if (p.options.removeLeadingDots) {
 91401  			while (true) {
 91402  				if (!(s.length > 0 && (s.charCodeAt(0) === 46))) { break; }
 91403  				s = $substring(s, 1);
 91404  			}
 91405  		}
 91406  		if ($interfaceIsEqual(err, $ifaceNil) && p.options.verifyDNSLength && s === "") {
 91407  			err = new labelError.ptr(s, "A4");
 91408  		}
 91409  		labels = new labelIter.ptr(s, sliceType$4.nil, 0, 0, 0);
 91410  		/* while (true) { */ case 4:
 91411  			/* if (!(!labels.done())) { break; } */ if(!(!labels.done())) { $s = 5; continue; }
 91412  			label = labels.label();
 91413  			/* */ if (label === "") { $s = 6; continue; }
 91414  			/* */ $s = 7; continue;
 91415  			/* if (label === "") { */ case 6:
 91416  				if ($interfaceIsEqual(err, $ifaceNil) && p.options.verifyDNSLength) {
 91417  					err = new labelError.ptr(s, "A4");
 91418  				}
 91419  				labels.next();
 91420  				/* continue; */ $s = 4; continue;
 91421  			/* } */ case 7:
 91422  			/* */ if (strings.HasPrefix(label, "xn--")) { $s = 8; continue; }
 91423  			/* */ if ($interfaceIsEqual(err, $ifaceNil)) { $s = 9; continue; }
 91424  			/* */ $s = 10; continue;
 91425  			/* if (strings.HasPrefix(label, "xn--")) { */ case 8:
 91426  				_tuple$1 = decode($substring(label, 4));
 91427  				u = _tuple$1[0];
 91428  				err2 = _tuple$1[1];
 91429  				/* */ if (!($interfaceIsEqual(err2, $ifaceNil))) { $s = 11; continue; }
 91430  				/* */ $s = 12; continue;
 91431  				/* if (!($interfaceIsEqual(err2, $ifaceNil))) { */ case 11:
 91432  					if ($interfaceIsEqual(err, $ifaceNil)) {
 91433  						err = err2;
 91434  					}
 91435  					labels.next();
 91436  					/* continue; */ $s = 4; continue;
 91437  				/* } */ case 12:
 91438  				isBidi = isBidi || !((bidirule.DirectionString(u) === 0));
 91439  				labels.set(u);
 91440  				/* */ if ($interfaceIsEqual(err, $ifaceNil) && p.options.validateLabels) { $s = 13; continue; }
 91441  				/* */ $s = 14; continue;
 91442  				/* if ($interfaceIsEqual(err, $ifaceNil) && p.options.validateLabels) { */ case 13:
 91443  					_r$1 = p.options.fromPuny(p, u); /* */ $s = 15; case 15: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 91444  					err = _r$1;
 91445  				/* } */ case 14:
 91446  				if ($interfaceIsEqual(err, $ifaceNil)) {
 91447  					err = p.validateLabel(u);
 91448  				}
 91449  				$s = 10; continue;
 91450  			/* } else if ($interfaceIsEqual(err, $ifaceNil)) { */ case 9:
 91451  				err = p.validateLabel(label);
 91452  			/* } */ case 10:
 91453  			labels.next();
 91454  		/* } */ $s = 4; continue; case 5:
 91455  		/* */ if (isBidi && !(p.options.bidirule === $throwNilPointerError) && $interfaceIsEqual(err, $ifaceNil)) { $s = 16; continue; }
 91456  		/* */ $s = 17; continue;
 91457  		/* if (isBidi && !(p.options.bidirule === $throwNilPointerError) && $interfaceIsEqual(err, $ifaceNil)) { */ case 16:
 91458  			labels.reset();
 91459  			/* while (true) { */ case 18:
 91460  				/* if (!(!labels.done())) { break; } */ if(!(!labels.done())) { $s = 19; continue; }
 91461  				_r$2 = p.options.bidirule(labels.label()); /* */ $s = 22; case 22: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 91462  				/* */ if (!_r$2) { $s = 20; continue; }
 91463  				/* */ $s = 21; continue;
 91464  				/* if (!_r$2) { */ case 20:
 91465  					err = new labelError.ptr(s, "B");
 91466  					/* break; */ $s = 19; continue;
 91467  				/* } */ case 21:
 91468  				labels.next();
 91469  			/* } */ $s = 18; continue; case 19:
 91470  		/* } */ case 17:
 91471  		if (toASCII) {
 91472  			labels.reset();
 91473  			while (true) {
 91474  				if (!(!labels.done())) { break; }
 91475  				label$1 = labels.label();
 91476  				if (!ascii(label$1)) {
 91477  					_tuple$2 = encode("xn--", label$1);
 91478  					a = _tuple$2[0];
 91479  					err2$1 = _tuple$2[1];
 91480  					if ($interfaceIsEqual(err, $ifaceNil)) {
 91481  						err = err2$1;
 91482  					}
 91483  					label$1 = a;
 91484  					labels.set(a);
 91485  				}
 91486  				n = label$1.length;
 91487  				if (p.options.verifyDNSLength && $interfaceIsEqual(err, $ifaceNil) && ((n === 0) || n > 63)) {
 91488  					err = new labelError.ptr(label$1, "A4");
 91489  				}
 91490  				labels.next();
 91491  			}
 91492  		}
 91493  		s = labels.result();
 91494  		if (toASCII && p.options.verifyDNSLength && $interfaceIsEqual(err, $ifaceNil)) {
 91495  			n$1 = s.length;
 91496  			if (n$1 > 0 && (s.charCodeAt((n$1 - 1 >> 0)) === 46)) {
 91497  				n$1 = n$1 - (1) >> 0;
 91498  			}
 91499  			if (s.length < 1 || n$1 > 253) {
 91500  				err = new labelError.ptr(s, "A4");
 91501  			}
 91502  		}
 91503  		$s = -1; return [s, err];
 91504  		/* */ } return; } if ($f === undefined) { $f = { $blk: Profile.ptr.prototype.process }; } $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f.a = a; $f.err = err; $f.err2 = err2; $f.err2$1 = err2$1; $f.isBidi = isBidi; $f.label = label; $f.label$1 = label$1; $f.labels = labels; $f.n = n; $f.n$1 = n$1; $f.p = p; $f.s = s; $f.toASCII = toASCII; $f.u = u; $f.$s = $s; $f.$r = $r; return $f;
 91505  	};
 91506  	Profile.prototype.process = function(s, toASCII) { return this.$val.process(s, toASCII); };
 91507  	info.prototype.isBidi = function(s) {
 91508  		var _1, _tuple, c, p, s;
 91509  		c = this.$val;
 91510  		if (!new info(c).isMapped()) {
 91511  			return ((c & 6144) >>> 0) === 2048;
 91512  		}
 91513  		_tuple = bidi.LookupString(s);
 91514  		p = $clone(_tuple[0], bidi.Properties);
 91515  		_1 = $clone(p, bidi.Properties).Class();
 91516  		if ((_1 === (1)) || (_1 === (13)) || (_1 === (5))) {
 91517  			return true;
 91518  		}
 91519  		return false;
 91520  	};
 91521  	$ptrType(info).prototype.isBidi = function(s) { return new info(this.$get()).isBidi(s); };
 91522  	validateAndMap = function(p, s) {
 91523  		var _1, _r, _r$1, _r$2, _tmp, _tmp$1, _tmp$2, _tuple, _tuple$1, b, bidi$1, combinedInfoBits, err, i, k, p, r, s, start, sz, v, vm, $s, $r;
 91524  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; b = $f.b; bidi$1 = $f.bidi$1; combinedInfoBits = $f.combinedInfoBits; err = $f.err; i = $f.i; k = $f.k; p = $f.p; r = $f.r; s = $f.s; start = $f.start; sz = $f.sz; v = $f.v; vm = $f.vm; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 91525  		vm = "";
 91526  		bidi$1 = false;
 91527  		err = $ifaceNil;
 91528  		b = sliceType$5.nil;
 91529  		k = 0;
 91530  		combinedInfoBits = 0;
 91531  		i = 0;
 91532  		/* while (true) { */ case 1:
 91533  			/* if (!(i < s.length)) { break; } */ if(!(i < s.length)) { $s = 2; continue; }
 91534  			_tuple = trie.lookupString($substring(s, i));
 91535  			v = _tuple[0];
 91536  			sz = _tuple[1];
 91537  			if (sz === 0) {
 91538  				b = $appendSlice(b, $substring(s, k, i));
 91539  				b = $appendSlice(b, "\xEF\xBF\xBD");
 91540  				k = s.length;
 91541  				if ($interfaceIsEqual(err, $ifaceNil)) {
 91542  					err = new runeError(65533);
 91543  				}
 91544  				/* break; */ $s = 2; continue;
 91545  			}
 91546  			combinedInfoBits = (combinedInfoBits | (((v << 16 >>> 16)))) >>> 0;
 91547  			bidi$1 = bidi$1 || new info(((v << 16 >>> 16))).isBidi($substring(s, i));
 91548  			start = i;
 91549  			i = i + (sz) >> 0;
 91550  			_1 = p.simplify(new info(((v << 16 >>> 16))).category());
 91551  			if (_1 === (8)) {
 91552  				/* continue; */ $s = 1; continue;
 91553  			} else if (_1 === (64)) {
 91554  				if ($interfaceIsEqual(err, $ifaceNil)) {
 91555  					_tuple$1 = utf8.DecodeRuneInString($substring(s, start));
 91556  					r = _tuple$1[0];
 91557  					err = new runeError(((r >> 0)));
 91558  				}
 91559  				/* continue; */ $s = 1; continue;
 91560  			} else if ((_1 === (1)) || (_1 === (3))) {
 91561  				b = $appendSlice(b, $substring(s, k, start));
 91562  				b = new info(((v << 16 >>> 16))).appendMapping(b, $substring(s, start, i));
 91563  			} else if (_1 === (192)) {
 91564  				b = $appendSlice(b, $substring(s, k, start));
 91565  			} else if (_1 === (0)) {
 91566  				b = $appendSlice(b, $substring(s, k, start));
 91567  				b = $appendSlice(b, "\xEF\xBF\xBD");
 91568  			}
 91569  			k = i;
 91570  		/* } */ $s = 1; continue; case 2:
 91571  		/* */ if (k === 0) { $s = 3; continue; }
 91572  		/* */ $s = 4; continue;
 91573  		/* if (k === 0) { */ case 3:
 91574  			/* */ if (!((((combinedInfoBits & 8192) >>> 0) === 0))) { $s = 6; continue; }
 91575  			/* */ $s = 7; continue;
 91576  			/* if (!((((combinedInfoBits & 8192) >>> 0) === 0))) { */ case 6:
 91577  				_r = new norm.Form(0).String(s); /* */ $s = 8; case 8: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 91578  				s = _r;
 91579  			/* } */ case 7:
 91580  			$s = 5; continue;
 91581  		/* } else { */ case 4:
 91582  			b = $appendSlice(b, $substring(s, k));
 91583  			_r$1 = new norm.Form(0).QuickSpan(b); /* */ $s = 11; case 11: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 91584  			/* */ if (!((_r$1 === b.$length))) { $s = 9; continue; }
 91585  			/* */ $s = 10; continue;
 91586  			/* if (!((_r$1 === b.$length))) { */ case 9:
 91587  				_r$2 = new norm.Form(0).Bytes(b); /* */ $s = 12; case 12: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 91588  				b = _r$2;
 91589  			/* } */ case 10:
 91590  			s = ($bytesToString(b));
 91591  		/* } */ case 5:
 91592  		_tmp = s;
 91593  		_tmp$1 = bidi$1;
 91594  		_tmp$2 = err;
 91595  		vm = _tmp;
 91596  		bidi$1 = _tmp$1;
 91597  		err = _tmp$2;
 91598  		$s = -1; return [vm, bidi$1, err];
 91599  		/* */ } return; } if ($f === undefined) { $f = { $blk: validateAndMap }; } $f._1 = _1; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.b = b; $f.bidi$1 = bidi$1; $f.combinedInfoBits = combinedInfoBits; $f.err = err; $f.i = i; $f.k = k; $f.p = p; $f.r = r; $f.s = s; $f.start = start; $f.sz = sz; $f.v = v; $f.vm = vm; $f.$s = $s; $f.$r = $r; return $f;
 91600  	};
 91601  	labelIter.ptr.prototype.reset = function() {
 91602  		var l;
 91603  		l = this;
 91604  		l.curStart = 0;
 91605  		l.curEnd = 0;
 91606  		l.i = 0;
 91607  	};
 91608  	labelIter.prototype.reset = function() { return this.$val.reset(); };
 91609  	labelIter.ptr.prototype.done = function() {
 91610  		var l;
 91611  		l = this;
 91612  		return l.curStart >= l.orig.length;
 91613  	};
 91614  	labelIter.prototype.done = function() { return this.$val.done(); };
 91615  	labelIter.ptr.prototype.result = function() {
 91616  		var l;
 91617  		l = this;
 91618  		if (!(l.slice === sliceType$4.nil)) {
 91619  			return strings.Join(l.slice, ".");
 91620  		}
 91621  		return l.orig;
 91622  	};
 91623  	labelIter.prototype.result = function() { return this.$val.result(); };
 91624  	labelIter.ptr.prototype.label = function() {
 91625  		var l, p, x, x$1;
 91626  		l = this;
 91627  		if (!(l.slice === sliceType$4.nil)) {
 91628  			return (x = l.slice, x$1 = l.i, ((x$1 < 0 || x$1 >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + x$1]));
 91629  		}
 91630  		p = strings.IndexByte($substring(l.orig, l.curStart), 46);
 91631  		l.curEnd = l.curStart + p >> 0;
 91632  		if (p === -1) {
 91633  			l.curEnd = l.orig.length;
 91634  		}
 91635  		return $substring(l.orig, l.curStart, l.curEnd);
 91636  	};
 91637  	labelIter.prototype.label = function() { return this.$val.label(); };
 91638  	labelIter.ptr.prototype.next = function() {
 91639  		var l, x, x$1;
 91640  		l = this;
 91641  		l.i = l.i + (1) >> 0;
 91642  		if (!(l.slice === sliceType$4.nil)) {
 91643  			if (l.i >= l.slice.$length || (l.i === (l.slice.$length - 1 >> 0)) && (x = l.slice, x$1 = l.i, ((x$1 < 0 || x$1 >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + x$1])) === "") {
 91644  				l.curStart = l.orig.length;
 91645  			}
 91646  		} else {
 91647  			l.curStart = l.curEnd + 1 >> 0;
 91648  			if ((l.curStart === (l.orig.length - 1 >> 0)) && (l.orig.charCodeAt(l.curStart) === 46)) {
 91649  				l.curStart = l.orig.length;
 91650  			}
 91651  		}
 91652  	};
 91653  	labelIter.prototype.next = function() { return this.$val.next(); };
 91654  	labelIter.ptr.prototype.set = function(s) {
 91655  		var l, s, x, x$1;
 91656  		l = this;
 91657  		if (l.slice === sliceType$4.nil) {
 91658  			l.slice = strings.Split(l.orig, ".");
 91659  		}
 91660  		(x = l.slice, x$1 = l.i, ((x$1 < 0 || x$1 >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + x$1] = s));
 91661  	};
 91662  	labelIter.prototype.set = function(s) { return this.$val.set(s); };
 91663  	Profile.ptr.prototype.simplify = function(cat) {
 91664  		var _1, cat, p;
 91665  		p = this;
 91666  		_1 = cat;
 91667  		if (_1 === (2)) {
 91668  			if (p.options.useSTD3Rules) {
 91669  				cat = 64;
 91670  			} else {
 91671  				cat = 1;
 91672  			}
 91673  		} else if (_1 === (128)) {
 91674  			if (p.options.useSTD3Rules) {
 91675  				cat = 64;
 91676  			} else {
 91677  				cat = 8;
 91678  			}
 91679  		} else if (_1 === (3)) {
 91680  			if (!p.options.transitional) {
 91681  				cat = 8;
 91682  			}
 91683  		} else if ((_1 === (24)) || (_1 === (40))) {
 91684  			cat = 8;
 91685  		}
 91686  		return cat;
 91687  	};
 91688  	Profile.prototype.simplify = function(cat) { return this.$val.simplify(cat); };
 91689  	validateFromPunycode = function(p, s) {
 91690  		var _r, _tuple, c, i, p, s, sz, v, $s, $r;
 91691  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _tuple = $f._tuple; c = $f.c; i = $f.i; p = $f.p; s = $f.s; sz = $f.sz; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 91692  		_r = new norm.Form(0).IsNormalString(s); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 91693  		/* */ if (!_r) { $s = 1; continue; }
 91694  		/* */ $s = 2; continue;
 91695  		/* if (!_r) { */ case 1:
 91696  			$s = -1; return new labelError.ptr(s, "V1");
 91697  		/* } */ case 2:
 91698  		i = 0;
 91699  		while (true) {
 91700  			if (!(i < s.length)) { break; }
 91701  			_tuple = trie.lookupString($substring(s, i));
 91702  			v = _tuple[0];
 91703  			sz = _tuple[1];
 91704  			if (sz === 0) {
 91705  				$s = -1; return new runeError(65533);
 91706  			}
 91707  			c = p.simplify(new info(((v << 16 >>> 16))).category());
 91708  			if (!((c === 8)) && !((c === 3))) {
 91709  				$s = -1; return new labelError.ptr(s, "V6");
 91710  			}
 91711  			i = i + (sz) >> 0;
 91712  		}
 91713  		$s = -1; return $ifaceNil;
 91714  		/* */ } return; } if ($f === undefined) { $f = { $blk: validateFromPunycode }; } $f._r = _r; $f._tuple = _tuple; $f.c = c; $f.i = i; $f.p = p; $f.s = s; $f.sz = sz; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
 91715  	};
 91716  	Profile.ptr.prototype.validateLabel = function(s) {
 91717  		var _tuple, _tuple$1, err, i, jt, p, s, st, sz, trie$1, v, x, x$1;
 91718  		err = $ifaceNil;
 91719  		p = this;
 91720  		if (s === "") {
 91721  			if (p.options.verifyDNSLength) {
 91722  				err = new labelError.ptr(s, "A4");
 91723  				return err;
 91724  			}
 91725  			err = $ifaceNil;
 91726  			return err;
 91727  		}
 91728  		if (!p.options.validateLabels) {
 91729  			err = $ifaceNil;
 91730  			return err;
 91731  		}
 91732  		trie$1 = p.options.trie;
 91733  		if (s.length > 4 && (s.charCodeAt(2) === 45) && (s.charCodeAt(3) === 45)) {
 91734  			err = new labelError.ptr(s, "V2");
 91735  			return err;
 91736  		}
 91737  		if ((s.charCodeAt(0) === 45) || (s.charCodeAt((s.length - 1 >> 0)) === 45)) {
 91738  			err = new labelError.ptr(s, "V3");
 91739  			return err;
 91740  		}
 91741  		_tuple = trie$1.lookupString(s);
 91742  		v = _tuple[0];
 91743  		sz = _tuple[1];
 91744  		x = ((v << 16 >>> 16));
 91745  		if (new info(x).isModifier()) {
 91746  			err = new labelError.ptr(s, "V5");
 91747  			return err;
 91748  		}
 91749  		if ((strings.Index(s, "\xE2\x80\x8D") === -1) && (strings.Index(s, "\xE2\x80\x8C") === -1)) {
 91750  			err = $ifaceNil;
 91751  			return err;
 91752  		}
 91753  		st = 0;
 91754  		i = 0;
 91755  		while (true) {
 91756  			jt = new info(x).joinType();
 91757  			if ($substring(s, i, (i + sz >> 0)) === "\xE2\x80\x8D") {
 91758  				jt = 5;
 91759  			} else if ($substring(s, i, (i + sz >> 0)) === "\xE2\x80\x8C") {
 91760  				jt = 6;
 91761  			}
 91762  			st = (x$1 = ((st < 0 || st >= joinStates.$length) ? ($throwRuntimeError("index out of range"), undefined) : joinStates.$array[joinStates.$offset + st]), ((jt < 0 || jt >= x$1.length) ? ($throwRuntimeError("index out of range"), undefined) : x$1[jt]));
 91763  			if (new info(x).isViramaModifier()) {
 91764  				st = ((st < 0 || st >= joinStates.$length) ? ($throwRuntimeError("index out of range"), undefined) : joinStates.$array[joinStates.$offset + st])[7];
 91765  			}
 91766  			i = i + (sz) >> 0;
 91767  			if (i === s.length) {
 91768  				break;
 91769  			}
 91770  			_tuple$1 = trie$1.lookupString($substring(s, i));
 91771  			v = _tuple$1[0];
 91772  			sz = _tuple$1[1];
 91773  			x = ((v << 16 >>> 16));
 91774  		}
 91775  		if ((st === 5) || (st === 4)) {
 91776  			err = new labelError.ptr(s, "C");
 91777  			return err;
 91778  		}
 91779  		err = $ifaceNil;
 91780  		return err;
 91781  	};
 91782  	Profile.prototype.validateLabel = function(s) { return this.$val.validateLabel(s); };
 91783  	ascii = function(s) {
 91784  		var i, s;
 91785  		i = 0;
 91786  		while (true) {
 91787  			if (!(i < s.length)) { break; }
 91788  			if (s.charCodeAt(i) >= 128) {
 91789  				return false;
 91790  			}
 91791  			i = i + (1) >> 0;
 91792  		}
 91793  		return true;
 91794  	};
 91795  	punyError = function(s) {
 91796  		var s;
 91797  		return new labelError.ptr(s, "A3");
 91798  	};
 91799  	decode = function(encoded) {
 91800  		var _i, _q, _r, _ref, _rune, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tuple, bias, digit, encoded, i, k, n, ok, oldI, output, pos, r, t, w, x;
 91801  		if (encoded === "") {
 91802  			return ["", $ifaceNil];
 91803  		}
 91804  		pos = 1 + strings.LastIndex(encoded, "-") >> 0;
 91805  		if (pos === 1) {
 91806  			return ["", punyError(encoded)];
 91807  		}
 91808  		if (pos === encoded.length) {
 91809  			return [$substring(encoded, 0, (encoded.length - 1 >> 0)), $ifaceNil];
 91810  		}
 91811  		output = $makeSlice(sliceType$6, 0, encoded.length);
 91812  		if (!((pos === 0))) {
 91813  			_ref = $substring(encoded, 0, (pos - 1 >> 0));
 91814  			_i = 0;
 91815  			while (true) {
 91816  				if (!(_i < _ref.length)) { break; }
 91817  				_rune = $decodeRune(_ref, _i);
 91818  				r = _rune[0];
 91819  				output = $append(output, r);
 91820  				_i += _rune[1];
 91821  			}
 91822  		}
 91823  		_tmp = 0;
 91824  		_tmp$1 = 128;
 91825  		_tmp$2 = 72;
 91826  		i = _tmp;
 91827  		n = _tmp$1;
 91828  		bias = _tmp$2;
 91829  		while (true) {
 91830  			if (!(pos < encoded.length)) { break; }
 91831  			_tmp$3 = i;
 91832  			_tmp$4 = 1;
 91833  			oldI = _tmp$3;
 91834  			w = _tmp$4;
 91835  			k = 36;
 91836  			while (true) {
 91837  				if (pos === encoded.length) {
 91838  					return ["", punyError(encoded)];
 91839  				}
 91840  				_tuple = decodeDigit(encoded.charCodeAt(pos));
 91841  				digit = _tuple[0];
 91842  				ok = _tuple[1];
 91843  				if (!ok) {
 91844  					return ["", punyError(encoded)];
 91845  				}
 91846  				pos = pos + (1) >> 0;
 91847  				i = i + (($imul(digit, w))) >> 0;
 91848  				if (i < 0) {
 91849  					return ["", punyError(encoded)];
 91850  				}
 91851  				t = k - bias >> 0;
 91852  				if (t < 1) {
 91853  					t = 1;
 91854  				} else if (t > 26) {
 91855  					t = 26;
 91856  				}
 91857  				if (digit < t) {
 91858  					break;
 91859  				}
 91860  				w = $imul(w, ((36 - t >> 0)));
 91861  				if (w >= 59652323) {
 91862  					return ["", punyError(encoded)];
 91863  				}
 91864  				k = k + (36) >> 0;
 91865  			}
 91866  			x = (((output.$length + 1 >> 0) >> 0));
 91867  			bias = adapt(i - oldI >> 0, x, oldI === 0);
 91868  			n = n + ((_q = i / x, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero"))) >> 0;
 91869  			i = (_r = i % (x), _r === _r ? _r : $throwRuntimeError("integer divide by zero"));
 91870  			if (n > 1114111 || output.$length >= 1024) {
 91871  				return ["", punyError(encoded)];
 91872  			}
 91873  			output = $append(output, 0);
 91874  			$copySlice($subslice(output, (i + 1 >> 0)), $subslice(output, i));
 91875  			((i < 0 || i >= output.$length) ? ($throwRuntimeError("index out of range"), undefined) : output.$array[output.$offset + i] = n);
 91876  			i = i + (1) >> 0;
 91877  		}
 91878  		return [($runesToString(output)), $ifaceNil];
 91879  	};
 91880  	encode = function(prefix, s) {
 91881  		var _i, _i$1, _i$2, _q, _r, _ref, _ref$1, _ref$2, _rune, _rune$1, _rune$2, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, b, bias, delta, h, k, m, n, output, prefix, q, r, r$1, r$2, remaining, s, t;
 91882  		output = $makeSlice(sliceType$5, prefix.length, ((prefix.length + 1 >> 0) + ($imul(2, s.length)) >> 0));
 91883  		$copyString(output, prefix);
 91884  		_tmp = 0;
 91885  		_tmp$1 = 128;
 91886  		_tmp$2 = 72;
 91887  		delta = _tmp;
 91888  		n = _tmp$1;
 91889  		bias = _tmp$2;
 91890  		_tmp$3 = 0;
 91891  		_tmp$4 = 0;
 91892  		b = _tmp$3;
 91893  		remaining = _tmp$4;
 91894  		_ref = s;
 91895  		_i = 0;
 91896  		while (true) {
 91897  			if (!(_i < _ref.length)) { break; }
 91898  			_rune = $decodeRune(_ref, _i);
 91899  			r = _rune[0];
 91900  			if (r < 128) {
 91901  				b = b + (1) >> 0;
 91902  				output = $append(output, ((r << 24 >>> 24)));
 91903  			} else {
 91904  				remaining = remaining + (1) >> 0;
 91905  			}
 91906  			_i += _rune[1];
 91907  		}
 91908  		h = b;
 91909  		if (b > 0) {
 91910  			output = $append(output, 45);
 91911  		}
 91912  		while (true) {
 91913  			if (!(!((remaining === 0)))) { break; }
 91914  			m = 2147483647;
 91915  			_ref$1 = s;
 91916  			_i$1 = 0;
 91917  			while (true) {
 91918  				if (!(_i$1 < _ref$1.length)) { break; }
 91919  				_rune$1 = $decodeRune(_ref$1, _i$1);
 91920  				r$1 = _rune$1[0];
 91921  				if (m > r$1 && r$1 >= n) {
 91922  					m = r$1;
 91923  				}
 91924  				_i$1 += _rune$1[1];
 91925  			}
 91926  			delta = delta + (($imul(((m - n >> 0)), ((h + 1 >> 0))))) >> 0;
 91927  			if (delta < 0) {
 91928  				return ["", punyError(s)];
 91929  			}
 91930  			n = m;
 91931  			_ref$2 = s;
 91932  			_i$2 = 0;
 91933  			while (true) {
 91934  				if (!(_i$2 < _ref$2.length)) { break; }
 91935  				_rune$2 = $decodeRune(_ref$2, _i$2);
 91936  				r$2 = _rune$2[0];
 91937  				if (r$2 < n) {
 91938  					delta = delta + (1) >> 0;
 91939  					if (delta < 0) {
 91940  						return ["", punyError(s)];
 91941  					}
 91942  					_i$2 += _rune$2[1];
 91943  					continue;
 91944  				}
 91945  				if (r$2 > n) {
 91946  					_i$2 += _rune$2[1];
 91947  					continue;
 91948  				}
 91949  				q = delta;
 91950  				k = 36;
 91951  				while (true) {
 91952  					t = k - bias >> 0;
 91953  					if (t < 1) {
 91954  						t = 1;
 91955  					} else if (t > 26) {
 91956  						t = 26;
 91957  					}
 91958  					if (q < t) {
 91959  						break;
 91960  					}
 91961  					output = $append(output, encodeDigit(t + (_r = ((q - t >> 0)) % ((36 - t >> 0)), _r === _r ? _r : $throwRuntimeError("integer divide by zero")) >> 0));
 91962  					q = (_q = ((q - t >> 0)) / ((36 - t >> 0)), (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero"));
 91963  					k = k + (36) >> 0;
 91964  				}
 91965  				output = $append(output, encodeDigit(q));
 91966  				bias = adapt(delta, h + 1 >> 0, h === b);
 91967  				delta = 0;
 91968  				h = h + (1) >> 0;
 91969  				remaining = remaining - (1) >> 0;
 91970  				_i$2 += _rune$2[1];
 91971  			}
 91972  			delta = delta + (1) >> 0;
 91973  			n = n + (1) >> 0;
 91974  		}
 91975  		return [($bytesToString(output)), $ifaceNil];
 91976  	};
 91977  	decodeDigit = function(x) {
 91978  		var _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, digit, ok, x;
 91979  		digit = 0;
 91980  		ok = false;
 91981  		if (48 <= x && x <= 57) {
 91982  			_tmp = (((x - 22 << 24 >>> 24) >> 0));
 91983  			_tmp$1 = true;
 91984  			digit = _tmp;
 91985  			ok = _tmp$1;
 91986  			return [digit, ok];
 91987  		} else if (65 <= x && x <= 90) {
 91988  			_tmp$2 = (((x - 65 << 24 >>> 24) >> 0));
 91989  			_tmp$3 = true;
 91990  			digit = _tmp$2;
 91991  			ok = _tmp$3;
 91992  			return [digit, ok];
 91993  		} else if (97 <= x && x <= 122) {
 91994  			_tmp$4 = (((x - 97 << 24 >>> 24) >> 0));
 91995  			_tmp$5 = true;
 91996  			digit = _tmp$4;
 91997  			ok = _tmp$5;
 91998  			return [digit, ok];
 91999  		}
 92000  		_tmp$6 = 0;
 92001  		_tmp$7 = false;
 92002  		digit = _tmp$6;
 92003  		ok = _tmp$7;
 92004  		return [digit, ok];
 92005  	};
 92006  	encodeDigit = function(digit) {
 92007  		var digit;
 92008  		if (0 <= digit && digit < 26) {
 92009  			return (((digit + 97 >> 0) << 24 >>> 24));
 92010  		} else if (26 <= digit && digit < 36) {
 92011  			return (((digit + 22 >> 0) << 24 >>> 24));
 92012  		}
 92013  		$panic(new $String("idna: internal error in punycode encoding"));
 92014  	};
 92015  	adapt = function(delta, numPoints, firstTime) {
 92016  		var _q, _q$1, _q$2, _q$3, _q$4, delta, firstTime, k, numPoints;
 92017  		if (firstTime) {
 92018  			delta = (_q = delta / (700), (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero"));
 92019  		} else {
 92020  			delta = (_q$1 = delta / (2), (_q$1 === _q$1 && _q$1 !== 1/0 && _q$1 !== -1/0) ? _q$1 >> 0 : $throwRuntimeError("integer divide by zero"));
 92021  		}
 92022  		delta = delta + ((_q$2 = delta / numPoints, (_q$2 === _q$2 && _q$2 !== 1/0 && _q$2 !== -1/0) ? _q$2 >> 0 : $throwRuntimeError("integer divide by zero"))) >> 0;
 92023  		k = 0;
 92024  		while (true) {
 92025  			if (!(delta > 455)) { break; }
 92026  			delta = (_q$3 = delta / (35), (_q$3 === _q$3 && _q$3 !== 1/0 && _q$3 !== -1/0) ? _q$3 >> 0 : $throwRuntimeError("integer divide by zero"));
 92027  			k = k + (36) >> 0;
 92028  		}
 92029  		return k + (_q$4 = ($imul(36, delta)) / ((delta + 38 >> 0)), (_q$4 === _q$4 && _q$4 !== 1/0 && _q$4 !== -1/0) ? _q$4 >> 0 : $throwRuntimeError("integer divide by zero")) >> 0;
 92030  	};
 92031  	idnaTrie.ptr.prototype.lookup = function(s) {
 92032  		var _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$14, _tmp$15, _tmp$16, _tmp$17, _tmp$18, _tmp$19, _tmp$2, _tmp$20, _tmp$21, _tmp$22, _tmp$23, _tmp$24, _tmp$25, _tmp$26, _tmp$27, _tmp$28, _tmp$29, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, c0, c1, c1$1, c1$2, c2, c2$1, c3, i, i$1, i$2, o, o$1, s, sz, t, v;
 92033  		v = 0;
 92034  		sz = 0;
 92035  		t = this;
 92036  		c0 = (0 >= s.$length ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + 0]);
 92037  		if (c0 < 128) {
 92038  			_tmp = ((c0 < 0 || c0 >= idnaValues.length) ? ($throwRuntimeError("index out of range"), undefined) : idnaValues[c0]);
 92039  			_tmp$1 = 1;
 92040  			v = _tmp;
 92041  			sz = _tmp$1;
 92042  			return [v, sz];
 92043  		} else if (c0 < 194) {
 92044  			_tmp$2 = 0;
 92045  			_tmp$3 = 1;
 92046  			v = _tmp$2;
 92047  			sz = _tmp$3;
 92048  			return [v, sz];
 92049  		} else if (c0 < 224) {
 92050  			if (s.$length < 2) {
 92051  				_tmp$4 = 0;
 92052  				_tmp$5 = 0;
 92053  				v = _tmp$4;
 92054  				sz = _tmp$5;
 92055  				return [v, sz];
 92056  			}
 92057  			i = ((c0 < 0 || c0 >= idnaIndex.length) ? ($throwRuntimeError("index out of range"), undefined) : idnaIndex[c0]);
 92058  			c1 = (1 >= s.$length ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + 1]);
 92059  			if (c1 < 128 || 192 <= c1) {
 92060  				_tmp$6 = 0;
 92061  				_tmp$7 = 1;
 92062  				v = _tmp$6;
 92063  				sz = _tmp$7;
 92064  				return [v, sz];
 92065  			}
 92066  			_tmp$8 = t.lookupValue(((i >>> 0)), c1);
 92067  			_tmp$9 = 2;
 92068  			v = _tmp$8;
 92069  			sz = _tmp$9;
 92070  			return [v, sz];
 92071  		} else if (c0 < 240) {
 92072  			if (s.$length < 3) {
 92073  				_tmp$10 = 0;
 92074  				_tmp$11 = 0;
 92075  				v = _tmp$10;
 92076  				sz = _tmp$11;
 92077  				return [v, sz];
 92078  			}
 92079  			i$1 = ((c0 < 0 || c0 >= idnaIndex.length) ? ($throwRuntimeError("index out of range"), undefined) : idnaIndex[c0]);
 92080  			c1$1 = (1 >= s.$length ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + 1]);
 92081  			if (c1$1 < 128 || 192 <= c1$1) {
 92082  				_tmp$12 = 0;
 92083  				_tmp$13 = 1;
 92084  				v = _tmp$12;
 92085  				sz = _tmp$13;
 92086  				return [v, sz];
 92087  			}
 92088  			o = (((i$1 >>> 0)) << 6 >>> 0) + ((c1$1 >>> 0)) >>> 0;
 92089  			i$1 = ((o < 0 || o >= idnaIndex.length) ? ($throwRuntimeError("index out of range"), undefined) : idnaIndex[o]);
 92090  			c2 = (2 >= s.$length ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + 2]);
 92091  			if (c2 < 128 || 192 <= c2) {
 92092  				_tmp$14 = 0;
 92093  				_tmp$15 = 2;
 92094  				v = _tmp$14;
 92095  				sz = _tmp$15;
 92096  				return [v, sz];
 92097  			}
 92098  			_tmp$16 = t.lookupValue(((i$1 >>> 0)), c2);
 92099  			_tmp$17 = 3;
 92100  			v = _tmp$16;
 92101  			sz = _tmp$17;
 92102  			return [v, sz];
 92103  		} else if (c0 < 248) {
 92104  			if (s.$length < 4) {
 92105  				_tmp$18 = 0;
 92106  				_tmp$19 = 0;
 92107  				v = _tmp$18;
 92108  				sz = _tmp$19;
 92109  				return [v, sz];
 92110  			}
 92111  			i$2 = ((c0 < 0 || c0 >= idnaIndex.length) ? ($throwRuntimeError("index out of range"), undefined) : idnaIndex[c0]);
 92112  			c1$2 = (1 >= s.$length ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + 1]);
 92113  			if (c1$2 < 128 || 192 <= c1$2) {
 92114  				_tmp$20 = 0;
 92115  				_tmp$21 = 1;
 92116  				v = _tmp$20;
 92117  				sz = _tmp$21;
 92118  				return [v, sz];
 92119  			}
 92120  			o$1 = (((i$2 >>> 0)) << 6 >>> 0) + ((c1$2 >>> 0)) >>> 0;
 92121  			i$2 = ((o$1 < 0 || o$1 >= idnaIndex.length) ? ($throwRuntimeError("index out of range"), undefined) : idnaIndex[o$1]);
 92122  			c2$1 = (2 >= s.$length ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + 2]);
 92123  			if (c2$1 < 128 || 192 <= c2$1) {
 92124  				_tmp$22 = 0;
 92125  				_tmp$23 = 2;
 92126  				v = _tmp$22;
 92127  				sz = _tmp$23;
 92128  				return [v, sz];
 92129  			}
 92130  			o$1 = (((i$2 >>> 0)) << 6 >>> 0) + ((c2$1 >>> 0)) >>> 0;
 92131  			i$2 = ((o$1 < 0 || o$1 >= idnaIndex.length) ? ($throwRuntimeError("index out of range"), undefined) : idnaIndex[o$1]);
 92132  			c3 = (3 >= s.$length ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + 3]);
 92133  			if (c3 < 128 || 192 <= c3) {
 92134  				_tmp$24 = 0;
 92135  				_tmp$25 = 3;
 92136  				v = _tmp$24;
 92137  				sz = _tmp$25;
 92138  				return [v, sz];
 92139  			}
 92140  			_tmp$26 = t.lookupValue(((i$2 >>> 0)), c3);
 92141  			_tmp$27 = 4;
 92142  			v = _tmp$26;
 92143  			sz = _tmp$27;
 92144  			return [v, sz];
 92145  		}
 92146  		_tmp$28 = 0;
 92147  		_tmp$29 = 1;
 92148  		v = _tmp$28;
 92149  		sz = _tmp$29;
 92150  		return [v, sz];
 92151  	};
 92152  	idnaTrie.prototype.lookup = function(s) { return this.$val.lookup(s); };
 92153  	idnaTrie.ptr.prototype.lookupString = function(s) {
 92154  		var _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$14, _tmp$15, _tmp$16, _tmp$17, _tmp$18, _tmp$19, _tmp$2, _tmp$20, _tmp$21, _tmp$22, _tmp$23, _tmp$24, _tmp$25, _tmp$26, _tmp$27, _tmp$28, _tmp$29, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, c0, c1, c1$1, c1$2, c2, c2$1, c3, i, i$1, i$2, o, o$1, s, sz, t, v;
 92155  		v = 0;
 92156  		sz = 0;
 92157  		t = this;
 92158  		c0 = s.charCodeAt(0);
 92159  		if (c0 < 128) {
 92160  			_tmp = ((c0 < 0 || c0 >= idnaValues.length) ? ($throwRuntimeError("index out of range"), undefined) : idnaValues[c0]);
 92161  			_tmp$1 = 1;
 92162  			v = _tmp;
 92163  			sz = _tmp$1;
 92164  			return [v, sz];
 92165  		} else if (c0 < 194) {
 92166  			_tmp$2 = 0;
 92167  			_tmp$3 = 1;
 92168  			v = _tmp$2;
 92169  			sz = _tmp$3;
 92170  			return [v, sz];
 92171  		} else if (c0 < 224) {
 92172  			if (s.length < 2) {
 92173  				_tmp$4 = 0;
 92174  				_tmp$5 = 0;
 92175  				v = _tmp$4;
 92176  				sz = _tmp$5;
 92177  				return [v, sz];
 92178  			}
 92179  			i = ((c0 < 0 || c0 >= idnaIndex.length) ? ($throwRuntimeError("index out of range"), undefined) : idnaIndex[c0]);
 92180  			c1 = s.charCodeAt(1);
 92181  			if (c1 < 128 || 192 <= c1) {
 92182  				_tmp$6 = 0;
 92183  				_tmp$7 = 1;
 92184  				v = _tmp$6;
 92185  				sz = _tmp$7;
 92186  				return [v, sz];
 92187  			}
 92188  			_tmp$8 = t.lookupValue(((i >>> 0)), c1);
 92189  			_tmp$9 = 2;
 92190  			v = _tmp$8;
 92191  			sz = _tmp$9;
 92192  			return [v, sz];
 92193  		} else if (c0 < 240) {
 92194  			if (s.length < 3) {
 92195  				_tmp$10 = 0;
 92196  				_tmp$11 = 0;
 92197  				v = _tmp$10;
 92198  				sz = _tmp$11;
 92199  				return [v, sz];
 92200  			}
 92201  			i$1 = ((c0 < 0 || c0 >= idnaIndex.length) ? ($throwRuntimeError("index out of range"), undefined) : idnaIndex[c0]);
 92202  			c1$1 = s.charCodeAt(1);
 92203  			if (c1$1 < 128 || 192 <= c1$1) {
 92204  				_tmp$12 = 0;
 92205  				_tmp$13 = 1;
 92206  				v = _tmp$12;
 92207  				sz = _tmp$13;
 92208  				return [v, sz];
 92209  			}
 92210  			o = (((i$1 >>> 0)) << 6 >>> 0) + ((c1$1 >>> 0)) >>> 0;
 92211  			i$1 = ((o < 0 || o >= idnaIndex.length) ? ($throwRuntimeError("index out of range"), undefined) : idnaIndex[o]);
 92212  			c2 = s.charCodeAt(2);
 92213  			if (c2 < 128 || 192 <= c2) {
 92214  				_tmp$14 = 0;
 92215  				_tmp$15 = 2;
 92216  				v = _tmp$14;
 92217  				sz = _tmp$15;
 92218  				return [v, sz];
 92219  			}
 92220  			_tmp$16 = t.lookupValue(((i$1 >>> 0)), c2);
 92221  			_tmp$17 = 3;
 92222  			v = _tmp$16;
 92223  			sz = _tmp$17;
 92224  			return [v, sz];
 92225  		} else if (c0 < 248) {
 92226  			if (s.length < 4) {
 92227  				_tmp$18 = 0;
 92228  				_tmp$19 = 0;
 92229  				v = _tmp$18;
 92230  				sz = _tmp$19;
 92231  				return [v, sz];
 92232  			}
 92233  			i$2 = ((c0 < 0 || c0 >= idnaIndex.length) ? ($throwRuntimeError("index out of range"), undefined) : idnaIndex[c0]);
 92234  			c1$2 = s.charCodeAt(1);
 92235  			if (c1$2 < 128 || 192 <= c1$2) {
 92236  				_tmp$20 = 0;
 92237  				_tmp$21 = 1;
 92238  				v = _tmp$20;
 92239  				sz = _tmp$21;
 92240  				return [v, sz];
 92241  			}
 92242  			o$1 = (((i$2 >>> 0)) << 6 >>> 0) + ((c1$2 >>> 0)) >>> 0;
 92243  			i$2 = ((o$1 < 0 || o$1 >= idnaIndex.length) ? ($throwRuntimeError("index out of range"), undefined) : idnaIndex[o$1]);
 92244  			c2$1 = s.charCodeAt(2);
 92245  			if (c2$1 < 128 || 192 <= c2$1) {
 92246  				_tmp$22 = 0;
 92247  				_tmp$23 = 2;
 92248  				v = _tmp$22;
 92249  				sz = _tmp$23;
 92250  				return [v, sz];
 92251  			}
 92252  			o$1 = (((i$2 >>> 0)) << 6 >>> 0) + ((c2$1 >>> 0)) >>> 0;
 92253  			i$2 = ((o$1 < 0 || o$1 >= idnaIndex.length) ? ($throwRuntimeError("index out of range"), undefined) : idnaIndex[o$1]);
 92254  			c3 = s.charCodeAt(3);
 92255  			if (c3 < 128 || 192 <= c3) {
 92256  				_tmp$24 = 0;
 92257  				_tmp$25 = 3;
 92258  				v = _tmp$24;
 92259  				sz = _tmp$25;
 92260  				return [v, sz];
 92261  			}
 92262  			_tmp$26 = t.lookupValue(((i$2 >>> 0)), c3);
 92263  			_tmp$27 = 4;
 92264  			v = _tmp$26;
 92265  			sz = _tmp$27;
 92266  			return [v, sz];
 92267  		}
 92268  		_tmp$28 = 0;
 92269  		_tmp$29 = 1;
 92270  		v = _tmp$28;
 92271  		sz = _tmp$29;
 92272  		return [v, sz];
 92273  	};
 92274  	idnaTrie.prototype.lookupString = function(s) { return this.$val.lookupString(s); };
 92275  	idnaTrie.ptr.prototype.lookupValue = function(n, b) {
 92276  		var b, n, t, x;
 92277  		t = this;
 92278  		if (n < 125) {
 92279  			return ((x = (n << 6 >>> 0) + ((b >>> 0)) >>> 0, ((x < 0 || x >= idnaValues.length) ? ($throwRuntimeError("index out of range"), undefined) : idnaValues[x])));
 92280  		} else {
 92281  			n = n - (125) >>> 0;
 92282  			return (idnaSparse.lookup(n, b));
 92283  		}
 92284  	};
 92285  	idnaTrie.prototype.lookupValue = function(n, b) { return this.$val.lookupValue(n, b); };
 92286  	info.prototype.appendMapping = function(b, s) {
 92287  		var _index, b, c, index, p, s, s$1;
 92288  		c = this.$val;
 92289  		index = (((c >>> 3 << 16 >>> 16) >> 0));
 92290  		if (((c & 4) >>> 0) === 0) {
 92291  			s$1 = $substring(mappings, index);
 92292  			return $appendSlice(b, $substring(s$1, 1, (s$1.charCodeAt(0) + 1 << 24 >>> 24)));
 92293  		}
 92294  		b = $appendSlice(b, s);
 92295  		if (((c & 57344) >>> 0) === 57344) {
 92296  			_index = b.$length - 1 >> 0;
 92297  			((_index < 0 || _index >= b.$length) ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + _index] = ((((_index < 0 || _index >= b.$length) ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + _index]) ^ (((index << 24 >>> 24)))) << 24 >>> 24));
 92298  		} else {
 92299  			p = b.$length - ((xorData.charCodeAt(index) >> 0)) >> 0;
 92300  			while (true) {
 92301  				if (!(p < b.$length)) { break; }
 92302  				index = index + (1) >> 0;
 92303  				((p < 0 || p >= b.$length) ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + p] = ((((p < 0 || p >= b.$length) ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + p]) ^ (xorData.charCodeAt(index))) << 24 >>> 24));
 92304  				p = p + (1) >> 0;
 92305  			}
 92306  		}
 92307  		return b;
 92308  	};
 92309  	$ptrType(info).prototype.appendMapping = function(b, s) { return new info(this.$get()).appendMapping(b, s); };
 92310  	sparseBlocks.ptr.prototype.lookup = function(n, b) {
 92311  		var _q, b, header, hi, lo, m, n, offset, r, t, x, x$1, x$2;
 92312  		t = this;
 92313  		offset = (x = t.offset, ((n < 0 || n >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + n]));
 92314  		header = $clone((x$1 = t.values, ((offset < 0 || offset >= x$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + offset])), valueRange);
 92315  		lo = offset + 1 << 16 >>> 16;
 92316  		hi = lo + ((header.lo << 16 >>> 16)) << 16 >>> 16;
 92317  		while (true) {
 92318  			if (!(lo < hi)) { break; }
 92319  			m = lo + (_q = ((hi - lo << 16 >>> 16)) / 2, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >>> 0 : $throwRuntimeError("integer divide by zero")) << 16 >>> 16;
 92320  			r = $clone((x$2 = t.values, ((m < 0 || m >= x$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + m])), valueRange);
 92321  			if (r.lo <= b && b <= r.hi) {
 92322  				return r.value + ((((b - r.lo << 24 >>> 24) << 16 >>> 16)) * header.value << 16 >>> 16) << 16 >>> 16;
 92323  			}
 92324  			if (b < r.lo) {
 92325  				hi = m;
 92326  			} else {
 92327  				lo = m + 1 << 16 >>> 16;
 92328  			}
 92329  		}
 92330  		return 0;
 92331  	};
 92332  	sparseBlocks.prototype.lookup = function(n, b) { return this.$val.lookup(n, b); };
 92333  	info.prototype.isMapped = function() {
 92334  		var c;
 92335  		c = this.$val;
 92336  		return !((((c & 3) >>> 0) === 0));
 92337  	};
 92338  	$ptrType(info).prototype.isMapped = function() { return new info(this.$get()).isMapped(); };
 92339  	info.prototype.category = function() {
 92340  		var c, small;
 92341  		c = this.$val;
 92342  		small = (c & 3) >>> 0;
 92343  		if (!((small === 0))) {
 92344  			return ((small << 16 >>> 16));
 92345  		}
 92346  		return ((((c & 248) >>> 0) << 16 >>> 16));
 92347  	};
 92348  	$ptrType(info).prototype.category = function() { return new info(this.$get()).category(); };
 92349  	info.prototype.joinType = function() {
 92350  		var c;
 92351  		c = this.$val;
 92352  		if (new info(c).isMapped()) {
 92353  			return 0;
 92354  		}
 92355  		return (((c >>> 8 << 16 >>> 16)) & 7) >>> 0;
 92356  	};
 92357  	$ptrType(info).prototype.joinType = function() { return new info(this.$get()).joinType(); };
 92358  	info.prototype.isModifier = function() {
 92359  		var c;
 92360  		c = this.$val;
 92361  		return ((c & 4099) >>> 0) === 4096;
 92362  	};
 92363  	$ptrType(info).prototype.isModifier = function() { return new info(this.$get()).isModifier(); };
 92364  	info.prototype.isViramaModifier = function() {
 92365  		var c;
 92366  		c = this.$val;
 92367  		return ((c & 6147) >>> 0) === 6144;
 92368  	};
 92369  	$ptrType(info).prototype.isViramaModifier = function() { return new info(this.$get()).isViramaModifier(); };
 92370  	ptrType$2.methods = [{prop: "ToASCII", name: "ToASCII", pkg: "", typ: $funcType([$String], [$String, $error], false)}, {prop: "ToUnicode", name: "ToUnicode", pkg: "", typ: $funcType([$String], [$String, $error], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "process", name: "process", pkg: "vendor/golang_org/x/net/idna", typ: $funcType([$String, $Bool], [$String, $error], false)}, {prop: "simplify", name: "simplify", pkg: "vendor/golang_org/x/net/idna", typ: $funcType([category], [category], false)}, {prop: "validateLabel", name: "validateLabel", pkg: "vendor/golang_org/x/net/idna", typ: $funcType([$String], [$error], false)}];
 92371  	labelError.methods = [{prop: "code", name: "code", pkg: "vendor/golang_org/x/net/idna", typ: $funcType([], [$String], false)}, {prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}];
 92372  	runeError.methods = [{prop: "code", name: "code", pkg: "vendor/golang_org/x/net/idna", typ: $funcType([], [$String], false)}, {prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}];
 92373  	ptrType$3.methods = [{prop: "reset", name: "reset", pkg: "vendor/golang_org/x/net/idna", typ: $funcType([], [], false)}, {prop: "done", name: "done", pkg: "vendor/golang_org/x/net/idna", typ: $funcType([], [$Bool], false)}, {prop: "result", name: "result", pkg: "vendor/golang_org/x/net/idna", typ: $funcType([], [$String], false)}, {prop: "label", name: "label", pkg: "vendor/golang_org/x/net/idna", typ: $funcType([], [$String], false)}, {prop: "next", name: "next", pkg: "vendor/golang_org/x/net/idna", typ: $funcType([], [], false)}, {prop: "set", name: "set", pkg: "vendor/golang_org/x/net/idna", typ: $funcType([$String], [], false)}];
 92374  	ptrType.methods = [{prop: "lookup", name: "lookup", pkg: "vendor/golang_org/x/net/idna", typ: $funcType([sliceType$5], [$Uint16, $Int], false)}, {prop: "lookupUnsafe", name: "lookupUnsafe", pkg: "vendor/golang_org/x/net/idna", typ: $funcType([sliceType$5], [$Uint16], false)}, {prop: "lookupString", name: "lookupString", pkg: "vendor/golang_org/x/net/idna", typ: $funcType([$String], [$Uint16, $Int], false)}, {prop: "lookupStringUnsafe", name: "lookupStringUnsafe", pkg: "vendor/golang_org/x/net/idna", typ: $funcType([$String], [$Uint16], false)}, {prop: "lookupValue", name: "lookupValue", pkg: "vendor/golang_org/x/net/idna", typ: $funcType([$Uint32, $Uint8], [$Uint16], false)}];
 92375  	ptrType$4.methods = [{prop: "lookup", name: "lookup", pkg: "vendor/golang_org/x/net/idna", typ: $funcType([$Uint32, $Uint8], [$Uint16], false)}];
 92376  	info.methods = [{prop: "isBidi", name: "isBidi", pkg: "vendor/golang_org/x/net/idna", typ: $funcType([$String], [$Bool], false)}, {prop: "appendMapping", name: "appendMapping", pkg: "vendor/golang_org/x/net/idna", typ: $funcType([sliceType$5, $String], [sliceType$5], false)}, {prop: "isMapped", name: "isMapped", pkg: "vendor/golang_org/x/net/idna", typ: $funcType([], [$Bool], false)}, {prop: "category", name: "category", pkg: "vendor/golang_org/x/net/idna", typ: $funcType([], [category], false)}, {prop: "joinType", name: "joinType", pkg: "vendor/golang_org/x/net/idna", typ: $funcType([], [info], false)}, {prop: "isModifier", name: "isModifier", pkg: "vendor/golang_org/x/net/idna", typ: $funcType([], [$Bool], false)}, {prop: "isViramaModifier", name: "isViramaModifier", pkg: "vendor/golang_org/x/net/idna", typ: $funcType([], [$Bool], false)}];
 92377  	options.init("vendor/golang_org/x/net/idna", [{prop: "transitional", name: "transitional", anonymous: false, exported: false, typ: $Bool, tag: ""}, {prop: "useSTD3Rules", name: "useSTD3Rules", anonymous: false, exported: false, typ: $Bool, tag: ""}, {prop: "validateLabels", name: "validateLabels", anonymous: false, exported: false, typ: $Bool, tag: ""}, {prop: "verifyDNSLength", name: "verifyDNSLength", anonymous: false, exported: false, typ: $Bool, tag: ""}, {prop: "removeLeadingDots", name: "removeLeadingDots", anonymous: false, exported: false, typ: $Bool, tag: ""}, {prop: "trie", name: "trie", anonymous: false, exported: false, typ: ptrType, tag: ""}, {prop: "fromPuny", name: "fromPuny", anonymous: false, exported: false, typ: funcType, tag: ""}, {prop: "mapping", name: "mapping", anonymous: false, exported: false, typ: funcType$1, tag: ""}, {prop: "bidirule", name: "bidirule", anonymous: false, exported: false, typ: funcType$2, tag: ""}]);
 92378  	Profile.init("vendor/golang_org/x/net/idna", [{prop: "options", name: "options", anonymous: true, exported: false, typ: options, tag: ""}]);
 92379  	labelError.init("vendor/golang_org/x/net/idna", [{prop: "label", name: "label", anonymous: false, exported: false, typ: $String, tag: ""}, {prop: "code_", name: "code_", anonymous: false, exported: false, typ: $String, tag: ""}]);
 92380  	labelIter.init("vendor/golang_org/x/net/idna", [{prop: "orig", name: "orig", anonymous: false, exported: false, typ: $String, tag: ""}, {prop: "slice", name: "slice", anonymous: false, exported: false, typ: sliceType$4, tag: ""}, {prop: "curStart", name: "curStart", anonymous: false, exported: false, typ: $Int, tag: ""}, {prop: "curEnd", name: "curEnd", anonymous: false, exported: false, typ: $Int, tag: ""}, {prop: "i", name: "i", anonymous: false, exported: false, typ: $Int, tag: ""}]);
 92381  	idnaTrie.init("", []);
 92382  	valueRange.init("vendor/golang_org/x/net/idna", [{prop: "value", name: "value", anonymous: false, exported: false, typ: $Uint16, tag: ""}, {prop: "lo", name: "lo", anonymous: false, exported: false, typ: $Uint8, tag: ""}, {prop: "hi", name: "hi", anonymous: false, exported: false, typ: $Uint8, tag: ""}]);
 92383  	sparseBlocks.init("vendor/golang_org/x/net/idna", [{prop: "values", name: "values", anonymous: false, exported: false, typ: sliceType$1, tag: ""}, {prop: "offset", name: "offset", anonymous: false, exported: false, typ: sliceType, tag: ""}]);
 92384  	$init = function() {
 92385  		$pkg.$init = function() {};
 92386  		/* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 92387  		$r = fmt.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 92388  		$r = math.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 92389  		$r = strings.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 92390  		$r = utf8.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 92391  		$r = bidirule.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 92392  		$r = bidi.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 92393  		$r = norm.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 92394  		punycode = new Profile.ptr(new options.ptr(false, false, false, false, false, ptrType.nil, $throwNilPointerError, $throwNilPointerError, $throwNilPointerError));
 92395  		$pkg.Punycode = punycode;
 92396  		mappings = "\x00\x01 \x03 \xCC\x88\x01a\x03 \xCC\x84\x012\x013\x03 \xCC\x81\x03 \xCC\xA7\x011\x01o\x051\xE2\x81\x844\x051\xE2\x81\x842\x053\xE2\x81\x844\x03i\xCC\x87\x03l\xC2\xB7\x03\xCA\xBCn\x01s\x03d\xC5\xBE\x03\xE2\xB1\xA5\x03\xE2\xB1\xA6\x01h\x01j\x01r\x01w\x01y\x03 \xCC\x86\x03 \xCC\x87\x03 \xCC\x8A\x03 \xCC\xA8\x03 \xCC\x83\x03 \xCC\x8B\x01l\x01x\x04\xCC\x88\xCC\x81\x03 \xCE\xB9\x01;\x05 \xCC\x88\xCC\x81\x04\xD5\xA5\xD6\x82\x04\xD8\xA7\xD9\xB4\x04\xD9\x88\xD9\xB4\x04\xDB\x87\xD9\xB4\x04\xD9\x8A\xD9\xB4\x06\xE0\xA4\x95\xE0\xA4\xBC\x06\xE0\xA4\x96\xE0\xA4\xBC\x06\xE0\xA4\x97\xE0\xA4\xBC\x06\xE0\xA4\x9C\xE0\xA4\xBC\x06\xE0\xA4\xA1\xE0\xA4\xBC\x06\xE0\xA4\xA2\xE0\xA4\xBC\x06\xE0\xA4\xAB\xE0\xA4\xBC\x06\xE0\xA4\xAF\xE0\xA4\xBC\x06\xE0\xA6\xA1\xE0\xA6\xBC\x06\xE0\xA6\xA2\xE0\xA6\xBC\x06\xE0\xA6\xAF\xE0\xA6\xBC\x06\xE0\xA8\xB2\xE0\xA8\xBC\x06\xE0\xA8\xB8\xE0\xA8\xBC\x06\xE0\xA8\x96\xE0\xA8\xBC\x06\xE0\xA8\x97\xE0\xA8\xBC\x06\xE0\xA8\x9C\xE0\xA8\xBC\x06\xE0\xA8\xAB\xE0\xA8\xBC\x06\xE0\xAC\xA1\xE0\xAC\xBC\x06\xE0\xAC\xA2\xE0\xAC\xBC\x06\xE0\xB9\x8D\xE0\xB8\xB2\x06\xE0\xBB\x8D\xE0\xBA\xB2\x06\xE0\xBA\xAB\xE0\xBA\x99\x06\xE0\xBA\xAB\xE0\xBA\xA1\x06\xE0\xBD\x82\xE0\xBE\xB7\x06\xE0\xBD\x8C\xE0\xBE\xB7\x06\xE0\xBD\x91\xE0\xBE\xB7\x06\xE0\xBD\x96\xE0\xBE\xB7\x06\xE0\xBD\x9B\xE0\xBE\xB7\x06\xE0\xBD\x80\xE0\xBE\xB5\x06\xE0\xBD\xB1\xE0\xBD\xB2\x06\xE0\xBD\xB1\xE0\xBD\xB4\x06\xE0\xBE\xB2\xE0\xBE\x80\t\xE0\xBE\xB2\xE0\xBD\xB1\xE0\xBE\x80\x06\xE0\xBE\xB3\xE0\xBE\x80\t\xE0\xBE\xB3\xE0\xBD\xB1\xE0\xBE\x80\x06\xE0\xBD\xB1\xE0\xBE\x80\x06\xE0\xBE\x92\xE0\xBE\xB7\x06\xE0\xBE\x9C\xE0\xBE\xB7\x06\xE0\xBE\xA1\xE0\xBE\xB7\x06\xE0\xBE\xA6\xE0\xBE\xB7\x06\xE0\xBE\xAB\xE0\xBE\xB7\x06\xE0\xBE\x90\xE0\xBE\xB5\x02\xD0\xB2\x02\xD0\xB4\x02\xD0\xBE\x02\xD1\x81\x02\xD1\x82\x02\xD1\x8A\x02\xD1\xA3\x02\xC3\xA6\x01b\x01d\x01e\x02\xC7\x9D\x01g\x01i\x01k\x01m\x01n\x02\xC8\xA3\x01p\x01t\x01u\x02\xC9\x90\x02\xC9\x91\x02\xC9\x99\x02\xC9\x9B\x02\xC9\x9C\x02\xC5\x8B\x02\xC9\x94\x02\xC9\xAF\x01v\x02\xCE\xB2\x02\xCE\xB3\x02\xCE\xB4\x02\xCF\x86\x02\xCF\x87\x02\xCF\x81\x02\xD0\xBD\x02\xC9\x92\x01c\x02\xC9\x95\x02\xC3\xB0\x01f\x02\xC9\x9F\x02\xC9\xA1\x02\xC9\xA5\x02\xC9\xA8\x02\xC9\xA9\x02\xC9\xAA\x02\xCA\x9D\x02\xC9\xAD\x02\xCA\x9F\x02\xC9\xB1\x02\xC9\xB0\x02\xC9\xB2\x02\xC9\xB3\x02\xC9\xB4\x02\xC9\xB5\x02\xC9\xB8\x02\xCA\x82\x02\xCA\x83\x02\xC6\xAB\x02\xCA\x89\x02\xCA\x8A\x02\xCA\x8B\x02\xCA\x8C\x01z\x02\xCA\x90\x02\xCA\x91\x02\xCA\x92\x02\xCE\xB8\x02ss\x02\xCE\xAC\x02\xCE\xAD\x02\xCE\xAE\x02\xCE\xAF\x02\xCF\x8C\x02\xCF\x8D\x02\xCF\x8E\x05\xE1\xBC\x80\xCE\xB9\x05\xE1\xBC\x81\xCE\xB9\x05\xE1\xBC\x82\xCE\xB9\x05\xE1\xBC\x83\xCE\xB9\x05\xE1\xBC\x84\xCE\xB9\x05\xE1\xBC\x85\xCE\xB9\x05\xE1\xBC\x86\xCE\xB9\x05\xE1\xBC\x87\xCE\xB9\x05\xE1\xBC\xA0\xCE\xB9\x05\xE1\xBC\xA1\xCE\xB9\x05\xE1\xBC\xA2\xCE\xB9\x05\xE1\xBC\xA3\xCE\xB9\x05\xE1\xBC\xA4\xCE\xB9\x05\xE1\xBC\xA5\xCE\xB9\x05\xE1\xBC\xA6\xCE\xB9\x05\xE1\xBC\xA7\xCE\xB9\x05\xE1\xBD\xA0\xCE\xB9\x05\xE1\xBD\xA1\xCE\xB9\x05\xE1\xBD\xA2\xCE\xB9\x05\xE1\xBD\xA3\xCE\xB9\x05\xE1\xBD\xA4\xCE\xB9\x05\xE1\xBD\xA5\xCE\xB9\x05\xE1\xBD\xA6\xCE\xB9\x05\xE1\xBD\xA7\xCE\xB9\x05\xE1\xBD\xB0\xCE\xB9\x04\xCE\xB1\xCE\xB9\x04\xCE\xAC\xCE\xB9\x05\xE1\xBE\xB6\xCE\xB9\x02\xCE\xB9\x05 \xCC\x88\xCD\x82\x05\xE1\xBD\xB4\xCE\xB9\x04\xCE\xB7\xCE\xB9\x04\xCE\xAE\xCE\xB9\x05\xE1\xBF\x86\xCE\xB9\x05 \xCC\x93\xCC\x80\x05 \xCC\x93\xCC\x81\x05 \xCC\x93\xCD\x82\x02\xCE\x90\x05 \xCC\x94\xCC\x80\x05 \xCC\x94\xCC\x81\x05 \xCC\x94\xCD\x82\x02\xCE\xB0\x05 \xCC\x88\xCC\x80\x01`\x05\xE1\xBD\xBC\xCE\xB9\x04\xCF\x89\xCE\xB9\x04\xCF\x8E\xCE\xB9\x05\xE1\xBF\xB6\xCE\xB9\x06\xE2\x80\xB2\xE2\x80\xB2\t\xE2\x80\xB2\xE2\x80\xB2\xE2\x80\xB2\x06\xE2\x80\xB5\xE2\x80\xB5\t\xE2\x80\xB5\xE2\x80\xB5\xE2\x80\xB5\x02!!\x02??\x02?!\x02!?\f\xE2\x80\xB2\xE2\x80\xB2\xE2\x80\xB2\xE2\x80\xB2\x010\x014\x015\x016\x017\x018\x019\x01+\x01=\x01(\x01)\x02rs\x02\xC4\xA7\x02no\x01q\x02sm\x02tm\x02\xCF\x89\x02\xC3\xA5\x02\xD7\x90\x02\xD7\x91\x02\xD7\x92\x02\xD7\x93\x02\xCF\x80\x051\xE2\x81\x847\x051\xE2\x81\x849\x061\xE2\x81\x8410\x051\xE2\x81\x843\x052\xE2\x81\x843\x051\xE2\x81\x845\x052\xE2\x81\x845\x053\xE2\x81\x845\x054\xE2\x81\x845\x051\xE2\x81\x846\x055\xE2\x81\x846\x051\xE2\x81\x848\x053\xE2\x81\x848\x055\xE2\x81\x848\x057\xE2\x81\x848\x041\xE2\x81\x84\x02ii\x02iv\x02vi\x04viii\x02ix\x02xi\x050\xE2\x81\x843\x06\xE2\x88\xAB\xE2\x88\xAB\t\xE2\x88\xAB\xE2\x88\xAB\xE2\x88\xAB\x06\xE2\x88\xAE\xE2\x88\xAE\t\xE2\x88\xAE\xE2\x88\xAE\xE2\x88\xAE\x0210\x0211\x0212\x0213\x0214\x0215\x0216\x0217\x0218\x0219\x0220\x04(10)\x04(11)\x04(12)\x04(13)\x04(14)\x04(15)\x04(16)\x04(17)\x04(18)\x04(19)\x04(20)\f\xE2\x88\xAB\xE2\x88\xAB\xE2\x88\xAB\xE2\x88\xAB\x02==\x05\xE2\xAB\x9D\xCC\xB8\x02\xC9\xAB\x02\xC9\xBD\x02\xC8\xBF\x02\xC9\x80\x01.\x04 \xE3\x82\x99\x04 \xE3\x82\x9A\x06\xE3\x82\x88\xE3\x82\x8A\x06\xE3\x82\xB3\xE3\x83\x88\x05(\xE1\x84\x80)\x05(\xE1\x84\x82)\x05(\xE1\x84\x83)\x05(\xE1\x84\x85)\x05(\xE1\x84\x86)\x05(\xE1\x84\x87)\x05(\xE1\x84\x89)\x05(\xE1\x84\x8B)\x05(\xE1\x84\x8C)\x05(\xE1\x84\x8E)\x05(\xE1\x84\x8F)\x05(\xE1\x84\x90)\x05(\xE1\x84\x91)\x05(\xE1\x84\x92)\x05(\xEA\xB0\x80)\x05(\xEB\x82\x98)\x05(\xEB\x8B\xA4)\x05(\xEB\x9D\xBC)\x05(\xEB\xA7\x88)\x05(\xEB\xB0\x94)\x05(\xEC\x82\xAC)\x05(\xEC\x95\x84)\x05(\xEC\x9E\x90)\x05(\xEC\xB0\xA8)\x05(\xEC\xB9\xB4)\x05(\xED\x83\x80)\x05(\xED\x8C\x8C)\x05(\xED\x95\x98)\x05(\xEC\xA3\xBC)\b(\xEC\x98\xA4\xEC\xA0\x84)\b(\xEC\x98\xA4\xED\x9B\x84)\x05(\xE4\xB8\x80)\x05(\xE4\xBA\x8C)\x05(\xE4\xB8\x89)\x05(\xE5\x9B\x9B)\x05(\xE4\xBA\x94)\x05(\xE5\x85\xAD)\x05(\xE4\xB8\x83)\x05(\xE5\x85\xAB)\x05(\xE4\xB9\x9D)\x05(\xE5\x8D\x81)\x05(\xE6\x9C\x88)\x05(\xE7\x81\xAB)\x05(\xE6\xB0\xB4)\x05(\xE6\x9C\xA8)\x05(\xE9\x87\x91)\x05(\xE5\x9C\x9F)\x05(\xE6\x97\xA5)\x05(\xE6\xA0\xAA)\x05(\xE6\x9C\x89)\x05(\xE7\xA4\xBE)\x05(\xE5\x90\x8D)\x05(\xE7\x89\xB9)\x05(\xE8\xB2\xA1)\x05(\xE7\xA5\x9D)\x05(\xE5\x8A\xB4)\x05(\xE4\xBB\xA3)\x05(\xE5\x91\xBC)\x05(\xE5\xAD\xA6)\x05(\xE7\x9B\xA3)\x05(\xE4\xBC\x81)\x05(\xE8\xB3\x87)\x05(\xE5\x8D\x94)\x05(\xE7\xA5\xAD)\x05(\xE4\xBC\x91)\x05(\xE8\x87\xAA)\x05(\xE8\x87\xB3)\x0221\x0222\x0223\x0224\x0225\x0226\x0227\x0228\x0229\x0230\x0231\x0232\x0233\x0234\x0235\x06\xEC\xB0\xB8\xEA\xB3\xA0\x06\xEC\xA3\xBC\xEC\x9D\x98\x0236\x0237\x0238\x0239\x0240\x0241\x0242\x0243\x0244\x0245\x0246\x0247\x0248\x0249\x0250\x041\xE6\x9C\x88\x042\xE6\x9C\x88\x043\xE6\x9C\x88\x044\xE6\x9C\x88\x045\xE6\x9C\x88\x046\xE6\x9C\x88\x047\xE6\x9C\x88\x048\xE6\x9C\x88\x049\xE6\x9C\x88\x0510\xE6\x9C\x88\x0511\xE6\x9C\x88\x0512\xE6\x9C\x88\x02hg\x02ev\f\xE3\x82\xA2\xE3\x83\x91\xE3\x83\xBC\xE3\x83\x88\f\xE3\x82\xA2\xE3\x83\xAB\xE3\x83\x95\xE3\x82\xA1\f\xE3\x82\xA2\xE3\x83\xB3\xE3\x83\x9A\xE3\x82\xA2\t\xE3\x82\xA2\xE3\x83\xBC\xE3\x83\xAB\f\xE3\x82\xA4\xE3\x83\x8B\xE3\x83\xB3\xE3\x82\xB0\t\xE3\x82\xA4\xE3\x83\xB3\xE3\x83\x81\t\xE3\x82\xA6\xE3\x82\xA9\xE3\x83\xB3\x0F\xE3\x82\xA8\xE3\x82\xB9\xE3\x82\xAF\xE3\x83\xBC\xE3\x83\x89\f\xE3\x82\xA8\xE3\x83\xBC\xE3\x82\xAB\xE3\x83\xBC\t\xE3\x82\xAA\xE3\x83\xB3\xE3\x82\xB9\t\xE3\x82\xAA\xE3\x83\xBC\xE3\x83\xA0\t\xE3\x82\xAB\xE3\x82\xA4\xE3\x83\xAA\f\xE3\x82\xAB\xE3\x83\xA9\xE3\x83\x83\xE3\x83\x88\f\xE3\x82\xAB\xE3\x83\xAD\xE3\x83\xAA\xE3\x83\xBC\t\xE3\x82\xAC\xE3\x83\xAD\xE3\x83\xB3\t\xE3\x82\xAC\xE3\x83\xB3\xE3\x83\x9E\x06\xE3\x82\xAE\xE3\x82\xAC\t\xE3\x82\xAE\xE3\x83\x8B\xE3\x83\xBC\f\xE3\x82\xAD\xE3\x83\xA5\xE3\x83\xAA\xE3\x83\xBC\f\xE3\x82\xAE\xE3\x83\xAB\xE3\x83\x80\xE3\x83\xBC\x06\xE3\x82\xAD\xE3\x83\xAD\x0F\xE3\x82\xAD\xE3\x83\xAD\xE3\x82\xB0\xE3\x83\xA9\xE3\x83\xA0\x12\xE3\x82\xAD\xE3\x83\xAD\xE3\x83\xA1\xE3\x83\xBC\xE3\x83\x88\xE3\x83\xAB\x0F\xE3\x82\xAD\xE3\x83\xAD\xE3\x83\xAF\xE3\x83\x83\xE3\x83\x88\t\xE3\x82\xB0\xE3\x83\xA9\xE3\x83\xA0\x0F\xE3\x82\xB0\xE3\x83\xA9\xE3\x83\xA0\xE3\x83\x88\xE3\x83\xB3\x0F\xE3\x82\xAF\xE3\x83\xAB\xE3\x82\xBC\xE3\x82\xA4\xE3\x83\xAD\f\xE3\x82\xAF\xE3\x83\xAD\xE3\x83\xBC\xE3\x83\x8D\t\xE3\x82\xB1\xE3\x83\xBC\xE3\x82\xB9\t\xE3\x82\xB3\xE3\x83\xAB\xE3\x83\x8A\t\xE3\x82\xB3\xE3\x83\xBC\xE3\x83\x9D\f\xE3\x82\xB5\xE3\x82\xA4\xE3\x82\xAF\xE3\x83\xAB\x0F\xE3\x82\xB5\xE3\x83\xB3\xE3\x83\x81\xE3\x83\xBC\xE3\x83\xA0\f\xE3\x82\xB7\xE3\x83\xAA\xE3\x83\xB3\xE3\x82\xB0\t\xE3\x82\xBB\xE3\x83\xB3\xE3\x83\x81\t\xE3\x82\xBB\xE3\x83\xB3\xE3\x83\x88\t\xE3\x83\x80\xE3\x83\xBC\xE3\x82\xB9\x06\xE3\x83\x87\xE3\x82\xB7\x06\xE3\x83\x89\xE3\x83\xAB\x06\xE3\x83\x88\xE3\x83\xB3\x06\xE3\x83\x8A\xE3\x83\x8E\t\xE3\x83\x8E\xE3\x83\x83\xE3\x83\x88\t\xE3\x83\x8F\xE3\x82\xA4\xE3\x83\x84\x0F\xE3\x83\x91\xE3\x83\xBC\xE3\x82\xBB\xE3\x83\xB3\xE3\x83\x88\t\xE3\x83\x91\xE3\x83\xBC\xE3\x83\x84\f\xE3\x83\x90\xE3\x83\xBC\xE3\x83\xAC\xE3\x83\xAB\x0F\xE3\x83\x94\xE3\x82\xA2\xE3\x82\xB9\xE3\x83\x88\xE3\x83\xAB\t\xE3\x83\x94\xE3\x82\xAF\xE3\x83\xAB\x06\xE3\x83\x94\xE3\x82\xB3\x06\xE3\x83\x93\xE3\x83\xAB\x0F\xE3\x83\x95\xE3\x82\xA1\xE3\x83\xA9\xE3\x83\x83\xE3\x83\x89\f\xE3\x83\x95\xE3\x82\xA3\xE3\x83\xBC\xE3\x83\x88\x0F\xE3\x83\x96\xE3\x83\x83\xE3\x82\xB7\xE3\x82\xA7\xE3\x83\xAB\t\xE3\x83\x95\xE3\x83\xA9\xE3\x83\xB3\x0F\xE3\x83\x98\xE3\x82\xAF\xE3\x82\xBF\xE3\x83\xBC\xE3\x83\xAB\x06\xE3\x83\x9A\xE3\x82\xBD\t\xE3\x83\x9A\xE3\x83\x8B\xE3\x83\x92\t\xE3\x83\x98\xE3\x83\xAB\xE3\x83\x84\t\xE3\x83\x9A\xE3\x83\xB3\xE3\x82\xB9\t\xE3\x83\x9A\xE3\x83\xBC\xE3\x82\xB8\t\xE3\x83\x99\xE3\x83\xBC\xE3\x82\xBF\f\xE3\x83\x9D\xE3\x82\xA4\xE3\x83\xB3\xE3\x83\x88\t\xE3\x83\x9C\xE3\x83\xAB\xE3\x83\x88\x06\xE3\x83\x9B\xE3\x83\xB3\t\xE3\x83\x9D\xE3\x83\xB3\xE3\x83\x89\t\xE3\x83\x9B\xE3\x83\xBC\xE3\x83\xAB\t\xE3\x83\x9B\xE3\x83\xBC\xE3\x83\xB3\f\xE3\x83\x9E\xE3\x82\xA4\xE3\x82\xAF\xE3\x83\xAD\t\xE3\x83\x9E\xE3\x82\xA4\xE3\x83\xAB\t\xE3\x83\x9E\xE3\x83\x83\xE3\x83\x8F\t\xE3\x83\x9E\xE3\x83\xAB\xE3\x82\xAF\x0F\xE3\x83\x9E\xE3\x83\xB3\xE3\x82\xB7\xE3\x83\xA7\xE3\x83\xB3\f\xE3\x83\x9F\xE3\x82\xAF\xE3\x83\xAD\xE3\x83\xB3\x06\xE3\x83\x9F\xE3\x83\xAA\x0F\xE3\x83\x9F\xE3\x83\xAA\xE3\x83\x90\xE3\x83\xBC\xE3\x83\xAB\x06\xE3\x83\xA1\xE3\x82\xAC\f\xE3\x83\xA1\xE3\x82\xAC\xE3\x83\x88\xE3\x83\xB3\f\xE3\x83\xA1\xE3\x83\xBC\xE3\x83\x88\xE3\x83\xAB\t\xE3\x83\xA4\xE3\x83\xBC\xE3\x83\x89\t\xE3\x83\xA4\xE3\x83\xBC\xE3\x83\xAB\t\xE3\x83\xA6\xE3\x82\xA2\xE3\x83\xB3\f\xE3\x83\xAA\xE3\x83\x83\xE3\x83\x88\xE3\x83\xAB\x06\xE3\x83\xAA\xE3\x83\xA9\t\xE3\x83\xAB\xE3\x83\x94\xE3\x83\xBC\f\xE3\x83\xAB\xE3\x83\xBC\xE3\x83\x96\xE3\x83\xAB\x06\xE3\x83\xAC\xE3\x83\xA0\x0F\xE3\x83\xAC\xE3\x83\xB3\xE3\x83\x88\xE3\x82\xB2\xE3\x83\xB3\t\xE3\x83\xAF\xE3\x83\x83\xE3\x83\x88\x040\xE7\x82\xB9\x041\xE7\x82\xB9\x042\xE7\x82\xB9\x043\xE7\x82\xB9\x044\xE7\x82\xB9\x045\xE7\x82\xB9\x046\xE7\x82\xB9\x047\xE7\x82\xB9\x048\xE7\x82\xB9\x049\xE7\x82\xB9\x0510\xE7\x82\xB9\x0511\xE7\x82\xB9\x0512\xE7\x82\xB9\x0513\xE7\x82\xB9\x0514\xE7\x82\xB9\x0515\xE7\x82\xB9\x0516\xE7\x82\xB9\x0517\xE7\x82\xB9\x0518\xE7\x82\xB9\x0519\xE7\x82\xB9\x0520\xE7\x82\xB9\x0521\xE7\x82\xB9\x0522\xE7\x82\xB9\x0523\xE7\x82\xB9\x0524\xE7\x82\xB9\x02da\x02au\x02ov\x02pc\x02dm\x02iu\x06\xE5\xB9\xB3\xE6\x88\x90\x06\xE6\x98\xAD\xE5\x92\x8C\x06\xE5\xA4\xA7\xE6\xAD\xA3\x06\xE6\x98\x8E\xE6\xB2\xBB\f\xE6\xA0\xAA\xE5\xBC\x8F\xE4\xBC\x9A\xE7\xA4\xBE\x02pa\x02na\x02ma\x02ka\x02kb\x02mb\x02gb\x04kcal\x02pf\x02nf\x02mg\x02kg\x02hz\x02ml\x02dl\x02kl\x02fm\x02nm\x02mm\x02cm\x02km\x02m2\x02m3\x05m\xE2\x88\x95s\x06m\xE2\x88\x95s2\x07rad\xE2\x88\x95s\brad\xE2\x88\x95s2\x02ps\x02ns\x02ms\x02pv\x02nv\x02mv\x02kv\x02pw\x02nw\x02mw\x02kw\x02bq\x02cc\x02cd\x06c\xE2\x88\x95kg\x02db\x02gy\x02ha\x02hp\x02in\x02kk\x02kt\x02lm\x02ln\x02lx\x02ph\x02pr\x02sr\x02sv\x02wb\x05v\xE2\x88\x95m\x05a\xE2\x88\x95m\x041\xE6\x97\xA5\x042\xE6\x97\xA5\x043\xE6\x97\xA5\x044\xE6\x97\xA5\x045\xE6\x97\xA5\x046\xE6\x97\xA5\x047\xE6\x97\xA5\x048\xE6\x97\xA5\x049\xE6\x97\xA5\x0510\xE6\x97\xA5\x0511\xE6\x97\xA5\x0512\xE6\x97\xA5\x0513\xE6\x97\xA5\x0514\xE6\x97\xA5\x0515\xE6\x97\xA5\x0516\xE6\x97\xA5\x0517\xE6\x97\xA5\x0518\xE6\x97\xA5\x0519\xE6\x97\xA5\x0520\xE6\x97\xA5\x0521\xE6\x97\xA5\x0522\xE6\x97\xA5\x0523\xE6\x97\xA5\x0524\xE6\x97\xA5\x0525\xE6\x97\xA5\x0526\xE6\x97\xA5\x0527\xE6\x97\xA5\x0528\xE6\x97\xA5\x0529\xE6\x97\xA5\x0530\xE6\x97\xA5\x0531\xE6\x97\xA5\x02\xD1\x8C\x02\xC9\xA6\x02\xC9\xAC\x02\xCA\x9E\x02\xCA\x87\x02\xC5\x93\x04\xF0\xA4\x8B\xAE\x04\xF0\xA2\xA1\x8A\x04\xF0\xA2\xA1\x84\x04\xF0\xA3\x8F\x95\x04\xF0\xA5\x89\x89\x04\xF0\xA5\xB3\x90\x04\xF0\xA7\xBB\x93\x02ff\x02fi\x02fl\x02st\x04\xD5\xB4\xD5\xB6\x04\xD5\xB4\xD5\xA5\x04\xD5\xB4\xD5\xAB\x04\xD5\xBE\xD5\xB6\x04\xD5\xB4\xD5\xAD\x04\xD7\x99\xD6\xB4\x04\xD7\xB2\xD6\xB7\x02\xD7\xA2\x02\xD7\x94\x02\xD7\x9B\x02\xD7\x9C\x02\xD7\x9D\x02\xD7\xA8\x02\xD7\xAA\x04\xD7\xA9\xD7\x81\x04\xD7\xA9\xD7\x82\x06\xD7\xA9\xD6\xBC\xD7\x81\x06\xD7\xA9\xD6\xBC\xD7\x82\x04\xD7\x90\xD6\xB7\x04\xD7\x90\xD6\xB8\x04\xD7\x90\xD6\xBC\x04\xD7\x91\xD6\xBC\x04\xD7\x92\xD6\xBC\x04\xD7\x93\xD6\xBC\x04\xD7\x94\xD6\xBC\x04\xD7\x95\xD6\xBC\x04\xD7\x96\xD6\xBC\x04\xD7\x98\xD6\xBC\x04\xD7\x99\xD6\xBC\x04\xD7\x9A\xD6\xBC\x04\xD7\x9B\xD6\xBC\x04\xD7\x9C\xD6\xBC\x04\xD7\x9E\xD6\xBC\x04\xD7\xA0\xD6\xBC\x04\xD7\xA1\xD6\xBC\x04\xD7\xA3\xD6\xBC\x04\xD7\xA4\xD6\xBC\x04\xD7\xA6\xD6\xBC\x04\xD7\xA7\xD6\xBC\x04\xD7\xA8\xD6\xBC\x04\xD7\xA9\xD6\xBC\x04\xD7\xAA\xD6\xBC\x04\xD7\x95\xD6\xB9\x04\xD7\x91\xD6\xBF\x04\xD7\x9B\xD6\xBF\x04\xD7\xA4\xD6\xBF\x04\xD7\x90\xD7\x9C\x02\xD9\xB1\x02\xD9\xBB\x02\xD9\xBE\x02\xDA\x80\x02\xD9\xBA\x02\xD9\xBF\x02\xD9\xB9\x02\xDA\xA4\x02\xDA\xA6\x02\xDA\x84\x02\xDA\x83\x02\xDA\x86\x02\xDA\x87\x02\xDA\x8D\x02\xDA\x8C\x02\xDA\x8E\x02\xDA\x88\x02\xDA\x98\x02\xDA\x91\x02\xDA\xA9\x02\xDA\xAF\x02\xDA\xB3\x02\xDA\xB1\x02\xDA\xBA\x02\xDA\xBB\x02\xDB\x80\x02\xDB\x81\x02\xDA\xBE\x02\xDB\x92\x02\xDB\x93\x02\xDA\xAD\x02\xDB\x87\x02\xDB\x86\x02\xDB\x88\x02\xDB\x8B\x02\xDB\x85\x02\xDB\x89\x02\xDB\x90\x02\xD9\x89\x04\xD8\xA6\xD8\xA7\x04\xD8\xA6\xDB\x95\x04\xD8\xA6\xD9\x88\x04\xD8\xA6\xDB\x87\x04\xD8\xA6\xDB\x86\x04\xD8\xA6\xDB\x88\x04\xD8\xA6\xDB\x90\x04\xD8\xA6\xD9\x89\x02\xDB\x8C\x04\xD8\xA6\xD8\xAC\x04\xD8\xA6\xD8\xAD\x04\xD8\xA6\xD9\x85\x04\xD8\xA6\xD9\x8A\x04\xD8\xA8\xD8\xAC\x04\xD8\xA8\xD8\xAD\x04\xD8\xA8\xD8\xAE\x04\xD8\xA8\xD9\x85\x04\xD8\xA8\xD9\x89\x04\xD8\xA8\xD9\x8A\x04\xD8\xAA\xD8\xAC\x04\xD8\xAA\xD8\xAD\x04\xD8\xAA\xD8\xAE\x04\xD8\xAA\xD9\x85\x04\xD8\xAA\xD9\x89\x04\xD8\xAA\xD9\x8A\x04\xD8\xAB\xD8\xAC\x04\xD8\xAB\xD9\x85\x04\xD8\xAB\xD9\x89\x04\xD8\xAB\xD9\x8A\x04\xD8\xAC\xD8\xAD\x04\xD8\xAC\xD9\x85\x04\xD8\xAD\xD8\xAC\x04\xD8\xAD\xD9\x85\x04\xD8\xAE\xD8\xAC\x04\xD8\xAE\xD8\xAD\x04\xD8\xAE\xD9\x85\x04\xD8\xB3\xD8\xAC\x04\xD8\xB3\xD8\xAD\x04\xD8\xB3\xD8\xAE\x04\xD8\xB3\xD9\x85\x04\xD8\xB5\xD8\xAD\x04\xD8\xB5\xD9\x85\x04\xD8\xB6\xD8\xAC\x04\xD8\xB6\xD8\xAD\x04\xD8\xB6\xD8\xAE\x04\xD8\xB6\xD9\x85\x04\xD8\xB7\xD8\xAD\x04\xD8\xB7\xD9\x85\x04\xD8\xB8\xD9\x85\x04\xD8\xB9\xD8\xAC\x04\xD8\xB9\xD9\x85\x04\xD8\xBA\xD8\xAC\x04\xD8\xBA\xD9\x85\x04\xD9\x81\xD8\xAC\x04\xD9\x81\xD8\xAD\x04\xD9\x81\xD8\xAE\x04\xD9\x81\xD9\x85\x04\xD9\x81\xD9\x89\x04\xD9\x81\xD9\x8A\x04\xD9\x82\xD8\xAD\x04\xD9\x82\xD9\x85\x04\xD9\x82\xD9\x89\x04\xD9\x82\xD9\x8A\x04\xD9\x83\xD8\xA7\x04\xD9\x83\xD8\xAC\x04\xD9\x83\xD8\xAD\x04\xD9\x83\xD8\xAE\x04\xD9\x83\xD9\x84\x04\xD9\x83\xD9\x85\x04\xD9\x83\xD9\x89\x04\xD9\x83\xD9\x8A\x04\xD9\x84\xD8\xAC\x04\xD9\x84\xD8\xAD\x04\xD9\x84\xD8\xAE\x04\xD9\x84\xD9\x85\x04\xD9\x84\xD9\x89\x04\xD9\x84\xD9\x8A\x04\xD9\x85\xD8\xAC\x04\xD9\x85\xD8\xAD\x04\xD9\x85\xD8\xAE\x04\xD9\x85\xD9\x85\x04\xD9\x85\xD9\x89\x04\xD9\x85\xD9\x8A\x04\xD9\x86\xD8\xAC\x04\xD9\x86\xD8\xAD\x04\xD9\x86\xD8\xAE\x04\xD9\x86\xD9\x85\x04\xD9\x86\xD9\x89\x04\xD9\x86\xD9\x8A\x04\xD9\x87\xD8\xAC\x04\xD9\x87\xD9\x85\x04\xD9\x87\xD9\x89\x04\xD9\x87\xD9\x8A\x04\xD9\x8A\xD8\xAC\x04\xD9\x8A\xD8\xAD\x04\xD9\x8A\xD8\xAE\x04\xD9\x8A\xD9\x85\x04\xD9\x8A\xD9\x89\x04\xD9\x8A\xD9\x8A\x04\xD8\xB0\xD9\xB0\x04\xD8\xB1\xD9\xB0\x04\xD9\x89\xD9\xB0\x05 \xD9\x8C\xD9\x91\x05 \xD9\x8D\xD9\x91\x05 \xD9\x8E\xD9\x91\x05 \xD9\x8F\xD9\x91\x05 \xD9\x90\xD9\x91\x05 \xD9\x91\xD9\xB0\x04\xD8\xA6\xD8\xB1\x04\xD8\xA6\xD8\xB2\x04\xD8\xA6\xD9\x86\x04\xD8\xA8\xD8\xB1\x04\xD8\xA8\xD8\xB2\x04\xD8\xA8\xD9\x86\x04\xD8\xAA\xD8\xB1\x04\xD8\xAA\xD8\xB2\x04\xD8\xAA\xD9\x86\x04\xD8\xAB\xD8\xB1\x04\xD8\xAB\xD8\xB2\x04\xD8\xAB\xD9\x86\x04\xD9\x85\xD8\xA7\x04\xD9\x86\xD8\xB1\x04\xD9\x86\xD8\xB2\x04\xD9\x86\xD9\x86\x04\xD9\x8A\xD8\xB1\x04\xD9\x8A\xD8\xB2\x04\xD9\x8A\xD9\x86\x04\xD8\xA6\xD8\xAE\x04\xD8\xA6\xD9\x87\x04\xD8\xA8\xD9\x87\x04\xD8\xAA\xD9\x87\x04\xD8\xB5\xD8\xAE\x04\xD9\x84\xD9\x87\x04\xD9\x86\xD9\x87\x04\xD9\x87\xD9\xB0\x04\xD9\x8A\xD9\x87\x04\xD8\xAB\xD9\x87\x04\xD8\xB3\xD9\x87\x04\xD8\xB4\xD9\x85\x04\xD8\xB4\xD9\x87\x06\xD9\x80\xD9\x8E\xD9\x91\x06\xD9\x80\xD9\x8F\xD9\x91\x06\xD9\x80\xD9\x90\xD9\x91\x04\xD8\xB7\xD9\x89\x04\xD8\xB7\xD9\x8A\x04\xD8\xB9\xD9\x89\x04\xD8\xB9\xD9\x8A\x04\xD8\xBA\xD9\x89\x04\xD8\xBA\xD9\x8A\x04\xD8\xB3\xD9\x89\x04\xD8\xB3\xD9\x8A\x04\xD8\xB4\xD9\x89\x04\xD8\xB4\xD9\x8A\x04\xD8\xAD\xD9\x89\x04\xD8\xAD\xD9\x8A\x04\xD8\xAC\xD9\x89\x04\xD8\xAC\xD9\x8A\x04\xD8\xAE\xD9\x89\x04\xD8\xAE\xD9\x8A\x04\xD8\xB5\xD9\x89\x04\xD8\xB5\xD9\x8A\x04\xD8\xB6\xD9\x89\x04\xD8\xB6\xD9\x8A\x04\xD8\xB4\xD8\xAC\x04\xD8\xB4\xD8\xAD\x04\xD8\xB4\xD8\xAE\x04\xD8\xB4\xD8\xB1\x04\xD8\xB3\xD8\xB1\x04\xD8\xB5\xD8\xB1\x04\xD8\xB6\xD8\xB1\x04\xD8\xA7\xD9\x8B\x06\xD8\xAA\xD8\xAC\xD9\x85\x06\xD8\xAA\xD8\xAD\xD8\xAC\x06\xD8\xAA\xD8\xAD\xD9\x85\x06\xD8\xAA\xD8\xAE\xD9\x85\x06\xD8\xAA\xD9\x85\xD8\xAC\x06\xD8\xAA\xD9\x85\xD8\xAD\x06\xD8\xAA\xD9\x85\xD8\xAE\x06\xD8\xAC\xD9\x85\xD8\xAD\x06\xD8\xAD\xD9\x85\xD9\x8A\x06\xD8\xAD\xD9\x85\xD9\x89\x06\xD8\xB3\xD8\xAD\xD8\xAC\x06\xD8\xB3\xD8\xAC\xD8\xAD\x06\xD8\xB3\xD8\xAC\xD9\x89\x06\xD8\xB3\xD9\x85\xD8\xAD\x06\xD8\xB3\xD9\x85\xD8\xAC\x06\xD8\xB3\xD9\x85\xD9\x85\x06\xD8\xB5\xD8\xAD\xD8\xAD\x06\xD8\xB5\xD9\x85\xD9\x85\x06\xD8\xB4\xD8\xAD\xD9\x85\x06\xD8\xB4\xD8\xAC\xD9\x8A\x06\xD8\xB4\xD9\x85\xD8\xAE\x06\xD8\xB4\xD9\x85\xD9\x85\x06\xD8\xB6\xD8\xAD\xD9\x89\x06\xD8\xB6\xD8\xAE\xD9\x85\x06\xD8\xB7\xD9\x85\xD8\xAD\x06\xD8\xB7\xD9\x85\xD9\x85\x06\xD8\xB7\xD9\x85\xD9\x8A\x06\xD8\xB9\xD8\xAC\xD9\x85\x06\xD8\xB9\xD9\x85\xD9\x85\x06\xD8\xB9\xD9\x85\xD9\x89\x06\xD8\xBA\xD9\x85\xD9\x85\x06\xD8\xBA\xD9\x85\xD9\x8A\x06\xD8\xBA\xD9\x85\xD9\x89\x06\xD9\x81\xD8\xAE\xD9\x85\x06\xD9\x82\xD9\x85\xD8\xAD\x06\xD9\x82\xD9\x85\xD9\x85\x06\xD9\x84\xD8\xAD\xD9\x85\x06\xD9\x84\xD8\xAD\xD9\x8A\x06\xD9\x84\xD8\xAD\xD9\x89\x06\xD9\x84\xD8\xAC\xD8\xAC\x06\xD9\x84\xD8\xAE\xD9\x85\x06\xD9\x84\xD9\x85\xD8\xAD\x06\xD9\x85\xD8\xAD\xD8\xAC\x06\xD9\x85\xD8\xAD\xD9\x85\x06\xD9\x85\xD8\xAD\xD9\x8A\x06\xD9\x85\xD8\xAC\xD8\xAD\x06\xD9\x85\xD8\xAC\xD9\x85\x06\xD9\x85\xD8\xAE\xD8\xAC\x06\xD9\x85\xD8\xAE\xD9\x85\x06\xD9\x85\xD8\xAC\xD8\xAE\x06\xD9\x87\xD9\x85\xD8\xAC\x06\xD9\x87\xD9\x85\xD9\x85\x06\xD9\x86\xD8\xAD\xD9\x85\x06\xD9\x86\xD8\xAD\xD9\x89\x06\xD9\x86\xD8\xAC\xD9\x85\x06\xD9\x86\xD8\xAC\xD9\x89\x06\xD9\x86\xD9\x85\xD9\x8A\x06\xD9\x86\xD9\x85\xD9\x89\x06\xD9\x8A\xD9\x85\xD9\x85\x06\xD8\xA8\xD8\xAE\xD9\x8A\x06\xD8\xAA\xD8\xAC\xD9\x8A\x06\xD8\xAA\xD8\xAC\xD9\x89\x06\xD8\xAA\xD8\xAE\xD9\x8A\x06\xD8\xAA\xD8\xAE\xD9\x89\x06\xD8\xAA\xD9\x85\xD9\x8A\x06\xD8\xAA\xD9\x85\xD9\x89\x06\xD8\xAC\xD9\x85\xD9\x8A\x06\xD8\xAC\xD8\xAD\xD9\x89\x06\xD8\xAC\xD9\x85\xD9\x89\x06\xD8\xB3\xD8\xAE\xD9\x89\x06\xD8\xB5\xD8\xAD\xD9\x8A\x06\xD8\xB4\xD8\xAD\xD9\x8A\x06\xD8\xB6\xD8\xAD\xD9\x8A\x06\xD9\x84\xD8\xAC\xD9\x8A\x06\xD9\x84\xD9\x85\xD9\x8A\x06\xD9\x8A\xD8\xAD\xD9\x8A\x06\xD9\x8A\xD8\xAC\xD9\x8A\x06\xD9\x8A\xD9\x85\xD9\x8A\x06\xD9\x85\xD9\x85\xD9\x8A\x06\xD9\x82\xD9\x85\xD9\x8A\x06\xD9\x86\xD8\xAD\xD9\x8A\x06\xD8\xB9\xD9\x85\xD9\x8A\x06\xD9\x83\xD9\x85\xD9\x8A\x06\xD9\x86\xD8\xAC\xD8\xAD\x06\xD9\x85\xD8\xAE\xD9\x8A\x06\xD9\x84\xD8\xAC\xD9\x85\x06\xD9\x83\xD9\x85\xD9\x85\x06\xD8\xAC\xD8\xAD\xD9\x8A\x06\xD8\xAD\xD8\xAC\xD9\x8A\x06\xD9\x85\xD8\xAC\xD9\x8A\x06\xD9\x81\xD9\x85\xD9\x8A\x06\xD8\xA8\xD8\xAD\xD9\x8A\x06\xD8\xB3\xD8\xAE\xD9\x8A\x06\xD9\x86\xD8\xAC\xD9\x8A\x06\xD8\xB5\xD9\x84\xDB\x92\x06\xD9\x82\xD9\x84\xDB\x92\b\xD8\xA7\xD9\x84\xD9\x84\xD9\x87\b\xD8\xA7\xD9\x83\xD8\xA8\xD8\xB1\b\xD9\x85\xD8\xAD\xD9\x85\xD8\xAF\b\xD8\xB5\xD9\x84\xD8\xB9\xD9\x85\b\xD8\xB1\xD8\xB3\xD9\x88\xD9\x84\b\xD8\xB9\xD9\x84\xD9\x8A\xD9\x87\b\xD9\x88\xD8\xB3\xD9\x84\xD9\x85\x06\xD8\xB5\xD9\x84\xD9\x89!\xD8\xB5\xD9\x84\xD9\x89 \xD8\xA7\xD9\x84\xD9\x84\xD9\x87 \xD8\xB9\xD9\x84\xD9\x8A\xD9\x87 \xD9\x88\xD8\xB3\xD9\x84\xD9\x85\x0F\xD8\xAC\xD9\x84 \xD8\xAC\xD9\x84\xD8\xA7\xD9\x84\xD9\x87\b\xD8\xB1\xDB\x8C\xD8\xA7\xD9\x84\x01,\x01:\x01!\x01?\x01_\x01{\x01}\x01[\x01]\x01#\x01&\x01*\x01-\x01<\x01>\x01\\\x01$\x01%\x01@\x04\xD9\x80\xD9\x8B\x04\xD9\x80\xD9\x8E\x04\xD9\x80\xD9\x8F\x04\xD9\x80\xD9\x90\x04\xD9\x80\xD9\x91\x04\xD9\x80\xD9\x92\x02\xD8\xA1\x02\xD8\xA2\x02\xD8\xA3\x02\xD8\xA4\x02\xD8\xA5\x02\xD8\xA6\x02\xD8\xA7\x02\xD8\xA8\x02\xD8\xA9\x02\xD8\xAA\x02\xD8\xAB\x02\xD8\xAC\x02\xD8\xAD\x02\xD8\xAE\x02\xD8\xAF\x02\xD8\xB0\x02\xD8\xB1\x02\xD8\xB2\x02\xD8\xB3\x02\xD8\xB4\x02\xD8\xB5\x02\xD8\xB6\x02\xD8\xB7\x02\xD8\xB8\x02\xD8\xB9\x02\xD8\xBA\x02\xD9\x81\x02\xD9\x82\x02\xD9\x83\x02\xD9\x84\x02\xD9\x85\x02\xD9\x86\x02\xD9\x87\x02\xD9\x88\x02\xD9\x8A\x04\xD9\x84\xD8\xA2\x04\xD9\x84\xD8\xA3\x04\xD9\x84\xD8\xA5\x04\xD9\x84\xD8\xA7\x01\"\x01'\x01/\x01^\x01|\x01~\x02\xC2\xA2\x02\xC2\xA3\x02\xC2\xAC\x02\xC2\xA6\x02\xC2\xA5\b\xF0\x9D\x85\x97\xF0\x9D\x85\xA5\b\xF0\x9D\x85\x98\xF0\x9D\x85\xA5\f\xF0\x9D\x85\x98\xF0\x9D\x85\xA5\xF0\x9D\x85\xAE\f\xF0\x9D\x85\x98\xF0\x9D\x85\xA5\xF0\x9D\x85\xAF\f\xF0\x9D\x85\x98\xF0\x9D\x85\xA5\xF0\x9D\x85\xB0\f\xF0\x9D\x85\x98\xF0\x9D\x85\xA5\xF0\x9D\x85\xB1\f\xF0\x9D\x85\x98\xF0\x9D\x85\xA5\xF0\x9D\x85\xB2\b\xF0\x9D\x86\xB9\xF0\x9D\x85\xA5\b\xF0\x9D\x86\xBA\xF0\x9D\x85\xA5\f\xF0\x9D\x86\xB9\xF0\x9D\x85\xA5\xF0\x9D\x85\xAE\f\xF0\x9D\x86\xBA\xF0\x9D\x85\xA5\xF0\x9D\x85\xAE\f\xF0\x9D\x86\xB9\xF0\x9D\x85\xA5\xF0\x9D\x85\xAF\f\xF0\x9D\x86\xBA\xF0\x9D\x85\xA5\xF0\x9D\x85\xAF\x02\xC4\xB1\x02\xC8\xB7\x02\xCE\xB1\x02\xCE\xB5\x02\xCE\xB6\x02\xCE\xB7\x02\xCE\xBA\x02\xCE\xBB\x02\xCE\xBC\x02\xCE\xBD\x02\xCE\xBE\x02\xCE\xBF\x02\xCF\x83\x02\xCF\x84\x02\xCF\x85\x02\xCF\x88\x03\xE2\x88\x87\x03\xE2\x88\x82\x02\xCF\x9D\x02\xD9\xAE\x02\xDA\xA1\x02\xD9\xAF\x020,\x021,\x022,\x023,\x024,\x025,\x026,\x027,\x028,\x029,\x03(a)\x03(b)\x03(c)\x03(d)\x03(e)\x03(f)\x03(g)\x03(h)\x03(i)\x03(j)\x03(k)\x03(l)\x03(m)\x03(n)\x03(o)\x03(p)\x03(q)\x03(r)\x03(s)\x03(t)\x03(u)\x03(v)\x03(w)\x03(x)\x03(y)\x03(z)\x07\xE3\x80\x94s\xE3\x80\x95\x02wz\x02hv\x02sd\x03ppv\x02wc\x02mc\x02md\x02dj\x06\xE3\x81\xBB\xE3\x81\x8B\x06\xE3\x82\xB3\xE3\x82\xB3\x03\xE3\x82\xB5\x03\xE6\x89\x8B\x03\xE5\xAD\x97\x03\xE5\x8F\x8C\x03\xE3\x83\x87\x03\xE4\xBA\x8C\x03\xE5\xA4\x9A\x03\xE8\xA7\xA3\x03\xE5\xA4\xA9\x03\xE4\xBA\xA4\x03\xE6\x98\xA0\x03\xE7\x84\xA1\x03\xE6\x96\x99\x03\xE5\x89\x8D\x03\xE5\xBE\x8C\x03\xE5\x86\x8D\x03\xE6\x96\xB0\x03\xE5\x88\x9D\x03\xE7\xB5\x82\x03\xE7\x94\x9F\x03\xE8\xB2\xA9\x03\xE5\xA3\xB0\x03\xE5\x90\xB9\x03\xE6\xBC\x94\x03\xE6\x8A\x95\x03\xE6\x8D\x95\x03\xE4\xB8\x80\x03\xE4\xB8\x89\x03\xE9\x81\x8A\x03\xE5\xB7\xA6\x03\xE4\xB8\xAD\x03\xE5\x8F\xB3\x03\xE6\x8C\x87\x03\xE8\xB5\xB0\x03\xE6\x89\x93\x03\xE7\xA6\x81\x03\xE7\xA9\xBA\x03\xE5\x90\x88\x03\xE6\xBA\x80\x03\xE6\x9C\x89\x03\xE6\x9C\x88\x03\xE7\x94\xB3\x03\xE5\x89\xB2\x03\xE5\x96\xB6\x03\xE9\x85\x8D\t\xE3\x80\x94\xE6\x9C\xAC\xE3\x80\x95\t\xE3\x80\x94\xE4\xB8\x89\xE3\x80\x95\t\xE3\x80\x94\xE4\xBA\x8C\xE3\x80\x95\t\xE3\x80\x94\xE5\xAE\x89\xE3\x80\x95\t\xE3\x80\x94\xE7\x82\xB9\xE3\x80\x95\t\xE3\x80\x94\xE6\x89\x93\xE3\x80\x95\t\xE3\x80\x94\xE7\x9B\x97\xE3\x80\x95\t\xE3\x80\x94\xE5\x8B\x9D\xE3\x80\x95\t\xE3\x80\x94\xE6\x95\x97\xE3\x80\x95\x03\xE5\xBE\x97\x03\xE5\x8F\xAF\x03\xE4\xB8\xBD\x03\xE4\xB8\xB8\x03\xE4\xB9\x81\x03\xE4\xBD\xA0\x03\xE4\xBE\xAE\x03\xE4\xBE\xBB\x03\xE5\x80\x82\x03\xE5\x81\xBA\x03\xE5\x82\x99\x03\xE5\x83\xA7\x03\xE5\x83\x8F\x03\xE3\x92\x9E\x03\xE5\x85\x8D\x03\xE5\x85\x94\x03\xE5\x85\xA4\x03\xE5\x85\xB7\x03\xE3\x92\xB9\x03\xE5\x85\xA7\x03\xE5\x86\x97\x03\xE5\x86\xA4\x03\xE4\xBB\x8C\x03\xE5\x86\xAC\x03\xE5\x86\xB5\x03\xE5\x87\xB5\x03\xE5\x88\x83\x03\xE3\x93\x9F\x03\xE5\x88\xBB\x03\xE5\x89\x86\x03\xE5\x89\xB7\x03\xE3\x94\x95\x03\xE5\x8B\x87\x03\xE5\x8B\x89\x03\xE5\x8B\xA4\x03\xE5\x8B\xBA\x03\xE5\x8C\x85\x03\xE5\x8C\x86\x03\xE5\x8C\x97\x03\xE5\x8D\x89\x03\xE5\x8D\x91\x03\xE5\x8D\x9A\x03\xE5\x8D\xB3\x03\xE5\x8D\xBD\x03\xE5\x8D\xBF\x03\xE7\x81\xB0\x03\xE5\x8F\x8A\x03\xE5\x8F\x9F\x03\xE5\x8F\xAB\x03\xE5\x8F\xB1\x03\xE5\x90\x86\x03\xE5\x92\x9E\x03\xE5\x90\xB8\x03\xE5\x91\x88\x03\xE5\x91\xA8\x03\xE5\x92\xA2\x03\xE5\x93\xB6\x03\xE5\x94\x90\x03\xE5\x95\x93\x03\xE5\x95\xA3\x03\xE5\x96\x84\x03\xE5\x96\x99\x03\xE5\x96\xAB\x03\xE5\x96\xB3\x03\xE5\x97\x82\x03\xE5\x9C\x96\x03\xE5\x98\x86\x03\xE5\x9C\x97\x03\xE5\x99\x91\x03\xE5\x99\xB4\x03\xE5\x88\x87\x03\xE5\xA3\xAE\x03\xE5\x9F\x8E\x03\xE5\x9F\xB4\x03\xE5\xA0\x8D\x03\xE5\x9E\x8B\x03\xE5\xA0\xB2\x03\xE5\xA0\xB1\x03\xE5\xA2\xAC\x03\xE5\xA3\xB2\x03\xE5\xA3\xB7\x03\xE5\xA4\x86\x03\xE5\xA4\xA2\x03\xE5\xA5\xA2\x03\xE5\xA7\xAC\x03\xE5\xA8\x9B\x03\xE5\xA8\xA7\x03\xE5\xA7\x98\x03\xE5\xA9\xA6\x03\xE3\x9B\xAE\x03\xE5\xAC\x88\x03\xE5\xAC\xBE\x03\xE5\xAF\x83\x03\xE5\xAF\x98\x03\xE5\xAF\xA7\x03\xE5\xAF\xB3\x03\xE5\xAF\xBF\x03\xE5\xB0\x86\x03\xE5\xB0\xA2\x03\xE3\x9E\x81\x03\xE5\xB1\xA0\x03\xE5\xB1\xAE\x03\xE5\xB3\x80\x03\xE5\xB2\x8D\x03\xE5\xB5\x83\x03\xE5\xB5\xAE\x03\xE5\xB5\xAB\x03\xE5\xB5\xBC\x03\xE5\xB7\xA1\x03\xE5\xB7\xA2\x03\xE3\xA0\xAF\x03\xE5\xB7\xBD\x03\xE5\xB8\xA8\x03\xE5\xB8\xBD\x03\xE5\xB9\xA9\x03\xE3\xA1\xA2\x03\xE3\xA1\xBC\x03\xE5\xBA\xB0\x03\xE5\xBA\xB3\x03\xE5\xBA\xB6\x03\xE5\xBB\x8A\x03\xE5\xBB\xBE\x03\xE8\x88\x81\x03\xE5\xBC\xA2\x03\xE3\xA3\x87\x03\xE5\xBD\xA2\x03\xE5\xBD\xAB\x03\xE3\xA3\xA3\x03\xE5\xBE\x9A\x03\xE5\xBF\x8D\x03\xE5\xBF\x97\x03\xE5\xBF\xB9\x03\xE6\x82\x81\x03\xE3\xA4\xBA\x03\xE3\xA4\x9C\x03\xE6\x82\x94\x03\xE6\x83\x87\x03\xE6\x85\x88\x03\xE6\x85\x8C\x03\xE6\x85\x8E\x03\xE6\x85\xBA\x03\xE6\x86\x8E\x03\xE6\x86\xB2\x03\xE6\x86\xA4\x03\xE6\x86\xAF\x03\xE6\x87\x9E\x03\xE6\x87\xB2\x03\xE6\x87\xB6\x03\xE6\x88\x90\x03\xE6\x88\x9B\x03\xE6\x89\x9D\x03\xE6\x8A\xB1\x03\xE6\x8B\x94\x03\xE6\x8D\x90\x03\xE6\x8C\xBD\x03\xE6\x8B\xBC\x03\xE6\x8D\xA8\x03\xE6\x8E\x83\x03\xE6\x8F\xA4\x03\xE6\x90\xA2\x03\xE6\x8F\x85\x03\xE6\x8E\xA9\x03\xE3\xA8\xAE\x03\xE6\x91\xA9\x03\xE6\x91\xBE\x03\xE6\x92\x9D\x03\xE6\x91\xB7\x03\xE3\xA9\xAC\x03\xE6\x95\x8F\x03\xE6\x95\xAC\x03\xE6\x97\xA3\x03\xE6\x9B\xB8\x03\xE6\x99\x89\x03\xE3\xAC\x99\x03\xE6\x9A\x91\x03\xE3\xAC\x88\x03\xE3\xAB\xA4\x03\xE5\x86\x92\x03\xE5\x86\x95\x03\xE6\x9C\x80\x03\xE6\x9A\x9C\x03\xE8\x82\xAD\x03\xE4\x8F\x99\x03\xE6\x9C\x97\x03\xE6\x9C\x9B\x03\xE6\x9C\xA1\x03\xE6\x9D\x9E\x03\xE6\x9D\x93\x03\xE3\xAD\x89\x03\xE6\x9F\xBA\x03\xE6\x9E\x85\x03\xE6\xA1\x92\x03\xE6\xA2\x85\x03\xE6\xA2\x8E\x03\xE6\xA0\x9F\x03\xE6\xA4\x94\x03\xE3\xAE\x9D\x03\xE6\xA5\x82\x03\xE6\xA6\xA3\x03\xE6\xA7\xAA\x03\xE6\xAA\xA8\x03\xE6\xAB\x9B\x03\xE3\xB0\x98\x03\xE6\xAC\xA1\x03\xE6\xAD\x94\x03\xE3\xB1\x8E\x03\xE6\xAD\xB2\x03\xE6\xAE\x9F\x03\xE6\xAE\xBA\x03\xE6\xAE\xBB\x03\xE6\xB1\x8E\x03\xE6\xB2\xBF\x03\xE6\xB3\x8D\x03\xE6\xB1\xA7\x03\xE6\xB4\x96\x03\xE6\xB4\xBE\x03\xE6\xB5\xB7\x03\xE6\xB5\x81\x03\xE6\xB5\xA9\x03\xE6\xB5\xB8\x03\xE6\xB6\x85\x03\xE6\xB4\xB4\x03\xE6\xB8\xAF\x03\xE6\xB9\xAE\x03\xE3\xB4\xB3\x03\xE6\xBB\x8B\x03\xE6\xBB\x87\x03\xE6\xB7\xB9\x03\xE6\xBD\xAE\x03\xE6\xBF\x86\x03\xE7\x80\xB9\x03\xE7\x80\x9E\x03\xE7\x80\x9B\x03\xE3\xB6\x96\x03\xE7\x81\x8A\x03\xE7\x81\xBD\x03\xE7\x81\xB7\x03\xE7\x82\xAD\x03\xE7\x85\x85\x03\xE7\x86\x9C\x03\xE7\x88\xA8\x03\xE7\x88\xB5\x03\xE7\x89\x90\x03\xE7\x8A\x80\x03\xE7\x8A\x95\x03\xE7\x8D\xBA\x03\xE7\x8E\x8B\x03\xE3\xBA\xAC\x03\xE7\x8E\xA5\x03\xE3\xBA\xB8\x03\xE7\x91\x87\x03\xE7\x91\x9C\x03\xE7\x91\xB1\x03\xE7\x92\x85\x03\xE7\x93\x8A\x03\xE3\xBC\x9B\x03\xE7\x94\xA4\x03\xE7\x94\xBE\x03\xE7\x95\xB0\x03\xE7\x98\x90\x03\xE3\xBF\xBC\x03\xE4\x80\x88\x03\xE7\x9B\xB4\x03\xE7\x9C\x9E\x03\xE7\x9C\x9F\x03\xE7\x9D\x8A\x03\xE4\x80\xB9\x03\xE7\x9E\x8B\x03\xE4\x81\x86\x03\xE4\x82\x96\x03\xE7\xA1\x8E\x03\xE7\xA2\x8C\x03\xE7\xA3\x8C\x03\xE4\x83\xA3\x03\xE7\xA5\x96\x03\xE7\xA6\x8F\x03\xE7\xA7\xAB\x03\xE4\x84\xAF\x03\xE7\xA9\x80\x03\xE7\xA9\x8A\x03\xE7\xA9\x8F\x03\xE4\x88\x82\x03\xE7\xAF\x86\x03\xE7\xAF\x89\x03\xE4\x88\xA7\x03\xE7\xB3\x92\x03\xE4\x8A\xA0\x03\xE7\xB3\xA8\x03\xE7\xB3\xA3\x03\xE7\xB4\x80\x03\xE7\xB5\xA3\x03\xE4\x8C\x81\x03\xE7\xB7\x87\x03\xE7\xB8\x82\x03\xE7\xB9\x85\x03\xE4\x8C\xB4\x03\xE4\x8D\x99\x03\xE7\xBD\xBA\x03\xE7\xBE\x95\x03\xE7\xBF\xBA\x03\xE8\x80\x85\x03\xE8\x81\xA0\x03\xE8\x81\xB0\x03\xE4\x8F\x95\x03\xE8\x82\xB2\x03\xE8\x84\x83\x03\xE4\x90\x8B\x03\xE8\x84\xBE\x03\xE5\xAA\xB5\x03\xE8\x88\x84\x03\xE8\xBE\x9E\x03\xE4\x91\xAB\x03\xE8\x8A\x91\x03\xE8\x8A\x8B\x03\xE8\x8A\x9D\x03\xE5\x8A\xB3\x03\xE8\x8A\xB1\x03\xE8\x8A\xB3\x03\xE8\x8A\xBD\x03\xE8\x8B\xA6\x03\xE8\x8B\xA5\x03\xE8\x8C\x9D\x03\xE8\x8D\xA3\x03\xE8\x8E\xAD\x03\xE8\x8C\xA3\x03\xE8\x8E\xBD\x03\xE8\x8F\xA7\x03\xE8\x91\x97\x03\xE8\x8D\x93\x03\xE8\x8F\x8A\x03\xE8\x8F\x8C\x03\xE8\x8F\x9C\x03\xE4\x94\xAB\x03\xE8\x93\xB1\x03\xE8\x93\xB3\x03\xE8\x94\x96\x03\xE8\x95\xA4\x03\xE4\x95\x9D\x03\xE4\x95\xA1\x03\xE4\x95\xAB\x03\xE8\x99\x90\x03\xE8\x99\x9C\x03\xE8\x99\xA7\x03\xE8\x99\xA9\x03\xE8\x9A\xA9\x03\xE8\x9A\x88\x03\xE8\x9C\x8E\x03\xE8\x9B\xA2\x03\xE8\x9D\xB9\x03\xE8\x9C\xA8\x03\xE8\x9D\xAB\x03\xE8\x9E\x86\x03\xE8\x9F\xA1\x03\xE8\xA0\x81\x03\xE4\x97\xB9\x03\xE8\xA1\xA0\x03\xE8\xA1\xA3\x03\xE8\xA3\x97\x03\xE8\xA3\x9E\x03\xE4\x98\xB5\x03\xE8\xA3\xBA\x03\xE3\x92\xBB\x03\xE4\x9A\xBE\x03\xE4\x9B\x87\x03\xE8\xAA\xA0\x03\xE8\xAB\xAD\x03\xE8\xAE\x8A\x03\xE8\xB1\x95\x03\xE8\xB2\xAB\x03\xE8\xB3\x81\x03\xE8\xB4\x9B\x03\xE8\xB5\xB7\x03\xE8\xB7\x8B\x03\xE8\xB6\xBC\x03\xE8\xB7\xB0\x03\xE8\xBB\x94\x03\xE8\xBC\xB8\x03\xE9\x82\x94\x03\xE9\x83\xB1\x03\xE9\x84\x91\x03\xE9\x84\x9B\x03\xE9\x88\xB8\x03\xE9\x8B\x97\x03\xE9\x8B\x98\x03\xE9\x89\xBC\x03\xE9\x8F\xB9\x03\xE9\x90\x95\x03\xE9\x96\x8B\x03\xE4\xA6\x95\x03\xE9\x96\xB7\x03\xE4\xA7\xA6\x03\xE9\x9B\x83\x03\xE5\xB6\xB2\x03\xE9\x9C\xA3\x03\xE4\xA9\xAE\x03\xE4\xA9\xB6\x03\xE9\x9F\xA0\x03\xE4\xAA\xB2\x03\xE9\xA0\x8B\x03\xE9\xA0\xA9\x03\xE9\xA3\xA2\x03\xE4\xAC\xB3\x03\xE9\xA4\xA9\x03\xE9\xA6\xA7\x03\xE9\xA7\x82\x03\xE9\xA7\xBE\x03\xE4\xAF\x8E\x03\xE9\xAC\x92\x03\xE9\xB1\x80\x03\xE9\xB3\xBD\x03\xE4\xB3\x8E\x03\xE4\xB3\xAD\x03\xE9\xB5\xA7\x03\xE4\xB3\xB8\x03\xE9\xBA\xBB\x03\xE4\xB5\x96\x03\xE9\xBB\xB9\x03\xE9\xBB\xBE\x03\xE9\xBC\x85\x03\xE9\xBC\x8F\x03\xE9\xBC\x96\x03\xE9\xBC\xBB";
 92397  		xorData = "\x02\f\t\x02\xB0\xEC\x02\xAD\xD8\x02\xAD\xD9\x02\x06\x07\x02\x0F\x12\x02\x0F\x1F\x02\x0F\x1D\x02\x01\x13\x02\x0F\x16\x02\x0F\v\x02\x0F3\x02\x0F7\x02\x0F?\x02\x0F/\x02\x0F*\x02\f&\x02\f*\x02\f;\x02\f9\x02\f%\x02\xAB\xED\x02\xAB\xE2\x02\xAB\xE3\x02\xA9\xE0\x02\xA9\xE1\x02\xA9\xE6\x02\xA3\xCB\x02\xA3\xC8\x02\xA3\xC9\x02\x01#\x02\x01\b\x02\x0E>\x02\x0E'\x02\x0F\x03\x02\x03\r\x02\x03\t\x02\x03\x17\x02\x03\x0E\x02\x02\x03\x02\x011\x02\x01\x00\x02\x01\x10\x02\x03<\x02\x07\r\x02\x02\f\x02\f0\x02\x01\x03\x02\x01\x01\x02\x01 \x02\x01\"\x02\x01)\x02\x01\n\x02\x01\f\x02\x02\x06\x02\x02\x02\x02\x03\x10\x03\x037 \x03\v+\x03\x02\x01\x04\x02\x01\x02\x02\x019\x02\x03\x1C\x02\x02$\x03\x80p$\x02\x03:\x02\x03\n\x03\xC1r.\x03\xC1r,\x03\xC1r\x02\x02\x02:\x02\x02>\x02\x02,\x02\x02\x10\x02\x02\x00\x03\xC1s<\x03\xC1s*\x03\xC2L$\x03\xC2L;\x02\t)\x02\n\x19\x03\x83\xAB\xE3\x03\x83\xAB\xF2\x03 4\xE0\x03\x81\xAB\xEA\x03\x81\xAB\xF3\x03 4\xEF\x03\x96\xE1\xCD\x03\x84\xE5\xC3\x02\r\x11\x03\x8B\xEC\xCB\x03\x94\xEC\xCF\x03\x9A\xEC\xC2\x03\x8B\xEC\xDB\x03\x94\xEC\xDF\x03\x9A\xEC\xD2\x03\x01\f!\x03\x01\f#\x03\xCA\xA0\x9D\x03\xCA\xA3\x9C\x03\xCA\xA2\x9F\x03\xCA\xA5\x9E\x03\xCA\xA4\x91\x03\xCA\xA7\x90\x03\xCA\xA6\x93\x03\xCA\xA9\x92\x03\xCA\xA8\x95\x03\xCA\xF3\xB5\x03\xCA\xF0\xB4\x03\xCA\xF1\xB7\x03\xCA\xF6\xB6\x03\xCA\xF7\x89\x03\xCA\xF4\x88\x03\xCA\xF5\x8B\x03\xCA\xFA\x8A\x03\xCA\xFB\x8D\x03\xCA\xF8\x8C\x03\xCA\xF9\x8F\x03\xCA\xFE\x8E\x03\xCA\xFF\x81\x03\xCA\xFC\x80\x03\xCA\xFD\x83\x03\xCA\xE2\x82\x03\xCA\xE3\x85\x03\xCA\xE0\x84\x03\xCA\xE1\x87\x03\xCA\xE6\x86\x03\xCA\xE7\x99\x03\xCA\xE4\x98\x03\xCA\xE5\x9B\x03\xCA\xEA\x9A\x03\xCA\xEB\x9D\x03\xCA\xE8\x9C\x03\xD8\x93\x89\x03\xDF\x94\x8B\x02\x010\x03\x03\x04\x1E\x03\x04\x15\x12\x03\v\x05,\x03\x06\x04\x00\x03\x06\x04)\x03\x06\x044\x03\x06\x04<\x03\x06\x05\x1D\x03\x06\x06\x00\x03\x06\x06\n\x03\x06\x06'\x03\x06\x062\x03\x0786\x03\x079/\x03\x079 \x03\x07:\x0E\x03\x07:\x1B\x03\x07:%\x03\x07;/\x03\x07;%\x03\x074\x11\x03\x076\t\x03\x077*\x03\x070\x01\x03\x070\x0F\x03\x070.\x03\x071\x16\x03\x071\x04\x03\x0710\x03\x072\x18\x03\x072-\x03\x073\x14\x03\x073>\x03\x07'\t\x03\x07 \x00\x03\x07\x1F\v\x03\x07\x18#\x03\x07\x18(\x03\x07\x186\x03\x07\x18\x03\x03\x07\x19\x16\x03\x07\x116\x03\x07\x12'\x03\x07\x13\x10\x03\x07\f&\x03\x07\f\b\x03\x07\f\x13\x03\x07\r\x02\x03\x07\r\x1C\x03\x07\v5\x03\x07\v\n\x03\x07\v\x01\x03\x07\v\x0F\x03\x07\x05\x00\x03\x07\x05\t\x03\x07\x05\v\x03\x07\x07\x01\x03\x07\x07\b\x03\x07\x00<\x03\x07\x00+\x03\x07\x01)\x03\x07\x01\x1B\x03\x07\x01\b\x03\x07\x03?\x03\x0445\x03\x044\b\x03\x0454\x03\x04)/\x03\x04)5\x03\x04+\x05\x03\x04+\x14\x03\x04+ \x03\x04+<\x03\x04*&\x03\x04*\"\x03\x04&8\x03\x04!\x01\x03\x04!\"\x03\x04\x11+\x03\x04\x10.\x03\x04\x104\x03\x04\x13=\x03\x04\x12\x04\x03\x04\x12\n\x03\x04\r\x1D\x03\x04\r\x07\x03\x04\r \x03\x05<>\x03\x055<\x03\x055!\x03\x055#\x03\x055&\x03\x054\x1D\x03\x054\x02\x03\x054\x07\x03\x0571\x03\x053\x1A\x03\x053\x16\x03\x05.<\x03\x05.\x07\x03\x05):\x03\x05)<\x03\x05)\f\x03\x05)\x15\x03\x05+-\x03\x05+5\x03\x05$\x1E\x03\x05$\x14\x03\x05'\x04\x03\x05'\x14\x03\x05&\x02\x03\x05\"6\x03\x05\"\f\x03\x05\"\x1C\x03\x05\x19\n\x03\x05\x1B\t\x03\x05\x1B\f\x03\x05\x14\x07\x03\x05\x16?\x03\x05\x16\f\x03\x05\f\x05\x03\x05\x0E\x0F\x03\x05\x01\x0E\x03\x05\x00(\x03\x05\x030\x03\x05\x03\x06\x03\n==\x03\n=1\x03\n=,\x03\n=\f\x03\n??\x03\n<\b\x03\n9!\x03\n9)\x03\n97\x03\n99\x03\n6\n\x03\n6\x1C\x03\n6\x17\x03\n7'\x03\n78\x03\n73\x03\n'\x01\x03\n'&\x03\n\x1F\x0E\x03\n\x1F\x03\x03\n\x1F3\x03\n\x1B/\x03\n\x18\x19\x03\n\x19\x01\x03\n\x16\x14\x03\n\x0E\"\x03\n\x0F\x10\x03\n\x0F\x02\x03\n\x0F \x03\n\f\x04\x03\n\v>\x03\n\v+\x03\n\b/\x03\n\x046\x03\n\x05\x14\x03\n\x00\x04\x03\n\x00\x10\x03\n\x00\x14\x03\v<3\x03\v;*\x03\v9\"\x03\v9)\x03\v97\x03\v+\x10\x03\v((\x03\v&5\x03\v$\x1C\x03\v$\x12\x03\v%\x04\x03\v#<\x03\v#0\x03\v#\r\x03\v#\x19\x03\v!:\x03\v!\x1F\x03\v!\x00\x03\v\x1E5\x03\v\x1C\x1D\x03\v\x1D-\x03\v\x1D(\x03\v\x18.\x03\v\x18 \x03\v\x18\x16\x03\v\x14\x13\x03\v\x15$\x03\v\x15\"\x03\v\x12\x1B\x03\v\x12\x10\x03\v\x132\x03\v\x13=\x03\v\x12\x18\x03\v\f&\x03\v\x061\x03\v\x06:\x03\v\x05#\x03\v\x05<\x03\v\x04\v\x03\v\x04\x04\x03\v\x04\x1B\x03\v\x042\x03\v\x041\x03\v\x03\x03\x03\v\x03\x1D\x03\v\x03/\x03\v\x03+\x03\v\x02\x1B\x03\v\x02\x00\x03\v\x01\x1E\x03\v\x01\b\x03\v\x015\x03\x06\r9\x03\x06\r=\x03\x06\r?\x03\x02\x001\x03\x02\x003\x03\x02\x02\x19\x03\x02\x006\x03\x02\x02\x1B\x03\x02\x004\x03\x02\x00<\x03\x02\x02\n\x03\x02\x02\x0E\x03\x02\x01\x1A\x03\x02\x01\x07\x03\x02\x01\x05\x03\x02\x01\v\x03\x02\x01%\x03\x02\x01\f\x03\x02\x01\x04\x03\x02\x01\x1C\x03\x02\x00.\x03\x02\x002\x03\x02\x00>\x03\x02\x00\x12\x03\x02\x00\x16\x03\x02\x011\x03\x02\x013\x03\x02\x02 \x03\x02\x02%\x03\x02\x02$\x03\x02\x028\x03\x02\x02;\x03\x02\x024\x03\x02\x012\x03\x02\x022\x03\x02\x02/\x03\x02\x01,\x03\x02\x01\x13\x03\x02\x01\x16\x03\x02\x01\x11\x03\x02\x01\x1E\x03\x02\x01\x15\x03\x02\x01\x17\x03\x02\x01\x0F\x03\x02\x01\b\x03\x02\x00?\x03\x02\x03\x07\x03\x02\x03\r\x03\x02\x03\x13\x03\x02\x03\x1D\x03\x02\x03\x1F\x03\x02\x00\x03\x03\x02\x00\r\x03\x02\x00\x01\x03\x02\x00\x1B\x03\x02\x00\x19\x03\x02\x00\x18\x03\x02\x00\x13\x03\x02\x00/\x03\x07>\x12\x03\x07<\x1F\x03\x07>\x1D\x03\x06\x1D\x0E\x03\x07>\x1C\x03\x07>:\x03\x07>\x13\x03\x04\x12+\x03\x07?\x03\x03\x07>\x02\x03\x06\"4\x03\x06\x1A.\x03\x07<%\x03\x06\x1C\v\x03\x0609\x03\x05\x1F\x01\x03\x04'\b\x03\x93\xFD\xF5\x03\x02\r \x03\x02\r#\x03\x02\r!\x03\x02\r&\x03\x02\r\"\x03\x02\r/\x03\x02\r,\x03\x02\r$\x03\x02\r'\x03\x02\r%\x03\x02\r;\x03\x02\r=\x03\x02\r?\x03\t9.\x03\b\v7\x03\b\x02\x14\x03\b\x14\r\x03\b.:\x03\b9'\x03\x0F\v\x18\x03\x0F\x1C1\x03\x0F\x17&\x03\x0F9\x1F\x03\x0F0\f\x03\x0E\n9\x03\x0E\x056\x03\x0E\x1C#\x03\x0F\x13\x0E\x03\x072\x00\x03\x070\r\x03\x072\v\x03\x06\x11\x18\x03\x070\x10\x03\x06\x0F(\x03\x072\x05\x03\x06\x0F,\x03\x073\x15\x03\x06\x07\b\x03\x05\x16\x02\x03\x04\v \x03\x05:8\x03\x05\x16%\x03\n\r\x1F\x03\x06\x16\x10\x03\x05\x1D5\x03\x05*;\x03\x05\x16\x1B\x03\x04.-\x03\x06\x1A\x19\x03\x04\x03,\x03\v87\x03\x04/\n\x03\x06\x00,\x03\x04-\x01\x03\x04\x1E-\x03\x06/(\x03\n\v5\x03\x06\x0E7\x03\x06\x07.\x03\x0597\x03\n*%\x03\x0760\x03\x06\f;\x03\x05'\x00\x03\x072.\x03\x072\b\x03\x06=\x01\x03\x06\x05\x1B\x03\x06\x06\x12\x03\x06$=\x03\x06'\r\x03\x04\x11\x0F\x03\x076,\x03\x06\x07;\x03\x06.,\x03\x86\xF9\xEA\x03\x8F\xFF\xEB\x02\t2\x02\t5\x02\t4\x02\t;\x02\t>\x02\t8\x02\t*\x02\t/\x02\t,\x02\t%\x02\t&\x02\t#\x02\t \x02\b!\x02\b%\x02\b$\x02\b+\x02\b.\x02\b*\x02\b&\x02\b8\x02\b>\x02\b4\x02\b6\x02\b0\x02\b\x10\x02\b\x17\x02\b\x12\x02\b\x1D\x02\b\x1F\x02\b\x13\x02\b\x15\x02\b\x14\x02\b\f\x03\x8B\xFD\xD0\x03\x81\xEC\xC6\x03\x87\xE0\x8A\x03-2\xE3\x03\x80\xEF\xE4\x03-2\xEA\x03\x88\xE6\xEB\x03\x8E\xE6\xE8\x03\x84\xE6\xE9\x03\x97\xE6\xEE\x03-2\xF9\x03-2\xF6\x03\x8E\xE3\xAD\x03\x80\xE3\x92\x03\x88\xE3\x90\x03\x8E\xE3\x90\x03\x80\xE3\x97\x03\x88\xE3\x95\x03\x88\xFE\xCB\x03\x8E\xFE\xCA\x03\x84\xFE\xCD\x03\x91\xEF\xC9\x03-2\xC1\x03-2\xC0\x03-2\xCB\x03\x88@\t\x03\x8E@\b\x03\x8F\xE0\xF5\x03\x8E\xE6\xF9\x03\x8E\xE0\xFA\x03\x93\xFF\xF4\x03\x84\xEE\xD3\x03\v(\x04\x023 \x021;\x02\x01*\x03\v#\x10\x03\v 0\x03\v!\x10\x03\v!0\x03\x07\x15\b\x03\t?5\x03\x07\x1F\b\x03\x07\x17\v\x03\t\x1F\x15\x03\v\x1C7\x03\n+#\x03\x06\x1A\x1B\x03\x06\x1A\x14\x03\n\x01\x18\x03\x06#\x1B\x03\n2\f\x03\n\x01\x04\x03\t#;\x03\b='\x03\b\x1A\n\x03\x07</\x03\x07:+\x03\x07\x07*\x03\x06&\x1C\x03\t\f\x16\x03\t\x10\x0E\x03\b'\x0F\x03\b+\t\x03\x074%\x03\x06!3\x03\x06\x03+\x03\v\x1E\x19\x03\n))\x03\t\b\x19\x03\b,\x05\x03\x07<2\x03\x06\x1C>\x03\n\x111\x03\t\x1B\t\x03\x073.\x03\x07\x01\x00\x03\t/,\x03\x07#>\x03\x07\x048\x03\n\x1F\"\x03\t8>\x03\t\x11\x00\x03\b/\x17\x03\x06'\"\x03\v\x1A+\x03\n\"\x19\x03\n/1\x03\t74\x03\t\x0F\"\x03\b,\"\x03\b?\x14\x03\x07$5\x03\x07<3\x03\x07=*\x03\x07\x13\x18\x03\x068\n\x03\x06\t\x16\x03\x06\x13\x00\x03\b\x067\x03\b\x01\x03\x03\b\x12\x1D\x03\x07+7\x03\x06(;\x03\x06\x1C?\x03\x07\x0E\x17\x03\n\x06\x1D\x03\n\x19\x07\x03\b\x14$\x03\x07$;\x03\b,$\x03\b\x06\r\x03\x07\x16\n\x03\x06>>\x03\n\x06\x12\x03\n\x14)\x03\t\r\x1F\x03\t\x12\x17\x03\t\x19\x01\x03\b\x11 \x03\b\x1D'\x03\x06<\x1A\x03\n.\x00\x03\x07'\x18\x03\n\"\b\x03\b\r\n\x03\b\x13)\x03\x07*)\x03\x06<,\x03\x07\v\x1A\x03\t.\x14\x03\t\r\x1E\x03\x07\x0E#\x03\v\x1D'\x03\n\n8\x03\t%2\x03\b+&\x03\b0\x12\x03\n)4\x03\b\x06\x1F\x03\v\x1B\x1A\x03\n\x1B\x0F\x03\v\x1D*\x03\t\x16$\x03\t0\x11\x03\b\x11\b\x03\n*(\x03\n\x042\x03\b9,\x03\x074'\x03\x07\x0F\x05\x03\t\v\n\x03\x07\x1B\x01\x03\t\x17:\x03\t.\r\x03\x07.\x11\x03\t+\x15\x03\b0\x13\x03\v\x1F\x19\x03\n \x11\x03\n\"0\x03\t\x07;\x03\b\x16\x1C\x03\x07,\x13\x03\x07\x0E/\x03\x06\"1\x03\n.\n\x03\n7\x02\x03\n\x032\x03\n\x1D.\x03\t1\x06\x03\t\x19:\x03\b\x02/\x03\x060+\x03\x06\x0F-\x03\x06\x1C\x1F\x03\x06\x1D\x07\x03\n,\x11\x03\t=\r\x03\t\v;\x03\x07\x1B/\x03\n\x1F:\x03\t \x1F\x03\t.\x10\x03\t4\v\x03\t\x1A1\x03\b#\x1A\x03\b4\x1D\x03\b\x01\x1F\x03\b\x11\"\x03\x07'8\x03\x07\x1A>\x03\x0757\x03\x06&9\x03\x06+\x11\x03\n.\v\x03\n,>\x03\n4#\x03\b%\x17\x03\x07\x05\"\x03\x07\f\v\x03\n\x1D+\x03\n\x19\x16\x03\t+\x1F\x03\t\b\v\x03\b\x16\x18\x03\b+\x12\x03\v\x1D\f\x03\n=\x10\x03\n\t\r\x03\n\x10\x11\x03\t&0\x03\b(\x1F\x03\b7\x07\x03\b\x185\x03\x07'6\x03\x06.\x05\x03\x06=\x04\x03\x06;;\x03\x06\x06,\x03\v\x18>\x03\b\x00\x18\x03\x06 \x03\x03\x06<\x00\x03\t%\x18\x03\v\x1C<\x03\n%!\x03\n\t\x12\x03\n\x16\x02\x03\t0'\x03\t\x0E=\x03\b \x0E\x03\b>\x03\x03\x074>\x03\x06&?\x03\x06\x19\t\x03\x06?(\x03\n-\x0E\x03\t:3\x03\t8:\x03\t\x12\v\x03\t\x1D\x17\x03\b7\x05\x03\b2\x14\x03\b\x06%\x03\b\x13\x1F\x03\x06\x06\x0E\x03\n\"<\x03\t/<\x03\x06>+\x03\n'?\x03\n\x13\f\x03\t\x10<\x03\x07\x1B=\x03\n\x19\x13\x03\t\"\x1D\x03\t\x07\r\x03\b)\x1C\x03\x06=\x1A\x03\n/4\x03\n7\x11\x03\n\x16:\x03\t?3\x03\t:/\x03\t\x05\n\x03\t\x14\x06\x03\b7\"\x03\b0\x07\x03\b\x1A\x1F\x03\x07\x04(\x03\x07\x04\t\x03\x06 %\x03\x06<\b\x03\n+\x14\x03\t\x1D\x16\x03\n70\x03\b >\x03\b57\x03\x070\n\x03\x06=\x12\x03\x06\x16%\x03\x06\x1D,\x03\t9#\x03\t\x10>\x03\x07 \x1E\x03\b\f<\x03\b\v\x18\x03\b\x15+\x03\b,:\x03\b%\"\x03\x07\n$\x03\v\x1C=\x03\x07+\b\x03\n/\x05\x03\n \x07\x03\n\x12'\x03\t#\x11\x03\b\x1B\x15\x03\n\x06\x01\x03\t\x1C\x1B\x03\t22\x03\x07\x14<\x03\x07\t\x04\x03\x061\x04\x03\x07\x0E\x01\x03\n\x13\x18\x03\n-\f\x03\n?\r\x03\n\t\n\x03\t1&\x03\n/\v\x03\b$<\x03\b3\x1D\x03\b\f$\x03\b\r\x07\x03\b\r?\x03\b\x0E\x14\x03\x065\n\x03\b\x1A#\x03\b\x16#\x03\x0702\x03\x07\x03\x1A\x03\x06(\x1D\x03\x06+\x1B\x03\x06\v\x05\x03\x06\v\x17\x03\x06\f\x04\x03\x06\x1E\x19\x03\x06+0\x03\x062\x18\x03\v\x16\x1E\x03\n+\x16\x03\n-?\x03\n#:\x03\n#\x10\x03\n%$\x03\n>+\x03\n01\x03\n1\x10\x03\n\t9\x03\n\n\x12\x03\n\x19\x1F\x03\n\x19\x12\x03\t*)\x03\t-\x16\x03\t.1\x03\t.2\x03\t<\x0E\x03\t> \x03\t3\x12\x03\t\v\x01\x03\t\x1C2\x03\t\x11\x1C\x03\t\x15%\x03\b,&\x03\b!\"\x03\b9(\x03\b\v\x1A\x03\b\r2\x03\b\f\x04\x03\b\f\x06\x03\b\f\x1F\x03\b\f\f\x03\b\x0F\x1F\x03\b\x0F\x1D\x03\b\x00\x14\x03\b\x03\x14\x03\b\x06\x16\x03\b\x1E#\x03\b\x11\x11\x03\b\x10\x18\x03\b\x14(\x03\x07)\x1E\x03\x07.1\x03\x07 $\x03\x07 '\x03\x078\b\x03\x07\r0\x03\x07\x0F7\x03\x07\x05#\x03\x07\x05\x1A\x03\x07\x1A7\x03\x07\x1D-\x03\x07\x17\x10\x03\x06)\x1F\x03\x062\v\x03\x066\x16\x03\x06\t\x11\x03\t(\x1E\x03\x07!5\x03\v\x11\x16\x03\n/\x04\x03\n,\x1A\x03\v\x173\x03\n,1\x03\n/5\x03\n\"1\x03\n\"\r\x03\n?%\x03\n<,\x03\n?#\x03\n>\x19\x03\n\b&\x03\n\v\x0E\x03\n\f:\x03\n\f+\x03\n\x03\"\x03\n\x06)\x03\n\x11\x10\x03\n\x11\x1A\x03\n\x17-\x03\n\x14(\x03\t)\x1E\x03\t/\t\x03\t.\x00\x03\t,\x07\x03\t/*\x03\t-9\x03\t\"8\x03\t%\t\x03\t:\x12\x03\t;\x1D\x03\t?\x06\x03\t3%\x03\t6\x05\x03\t6\b\x03\t7\x02\x03\t\x07,\x03\t\x04,\x03\t\x1F\x16\x03\t\x11\x03\x03\t\x11\x12\x03\t\x168\x03\b*\x05\x03\b/2\x03\b4:\x03\b\"+\x03\b 0\x03\b&\n\x03\b;\x10\x03\b>$\x03\b>\x18\x03\b29\x03\b2:\x03\b1,\x03\b1<\x03\b1\x1C\x03\b7#\x03\b7*\x03\b\t'\x03\b\x00\x1D\x03\b\x05-\x03\b\x1F4\x03\b\x1D\x04\x03\b\x16\x0F\x03\x07*7\x03\x07'!\x03\x07%\x1B\x03\x077\f\x03\x07\f1\x03\x07\f.\x03\x07\x00\x06\x03\x07\x01\x02\x03\x07\x010\x03\x07\x06=\x03\x07\x01\x03\x03\x07\x01\x13\x03\x07\x06\x06\x03\x07\x05\n\x03\x07\x1F\t\x03\x07\x17:\x03\x06*1\x03\x06-\x1D\x03\x06\"3\x03\x062:\x03\x060$\x03\x066\x1E\x03\x064\x12\x03\x0645\x03\x06\v\x00\x03\x06\v7\x03\x06\x07\x1F\x03\x06\x15\x12\x03\f\x05\x0F\x03\v+\v\x03\v+-\x03\x06\x16\x1B\x03\x06\x15\x17\x03\x89\xCA\xEA\x03\x89\xCA\xE8\x03\f8\x10\x03\f8\x01\x03\f8\x0F\x03\r8%\x03\r8!\x03\f8-\x03\f8/\x03\f8+\x03\f87\x03\f85\x03\f9\t\x03\f9\r\x03\f9\x0F\x03\f9\v\x03\xCFu\f\x03\xCFu\x0F\x03\xCFu\x0E\x03\xCFu\t\x03\f9\x10\x03\r9\f\x03\xCF`;\x03\xCF`>\x03\xCF`9\x03\xCF`8\x03\xCF`7\x03\xCF`*\x03\xCF`-\x03\xCF`,\x03\r\x1B\x1A\x03\r\x1B&\x03\f=.\x03\f=%\x03\f>\x1E\x03\f>\x14\x03\f?\x06\x03\f?\v\x03\f?\f\x03\f?\r\x03\f?\x02\x03\f>\x0F\x03\f>\b\x03\f>\t\x03\f>,\x03\f>\f\x03\f?\x13\x03\f?\x16\x03\f?\x15\x03\f?\x1C\x03\f?\x1F\x03\f?\x1D\x03\f?\x1A\x03\f?\x17\x03\f?\b\x03\f?\t\x03\f?\x0E\x03\f?\x04\x03\f?\x05\x03\f<?\x03\f=\x00\x03\f=\x06\x03\f=\x05\x03\f=\f\x03\f=\x0F\x03\f=\r\x03\f=\v\x03\f=\x07\x03\f=\x19\x03\f=\x15\x03\f=\x11\x03\f=1\x03\f=3\x03\f=0\x03\f=>\x03\f=2\x03\f=6\x03\f<\x07\x03\f<\x05\x03\x0E:!\x03\x0E:#\x03\x0E8\t\x03\x0E:&\x03\x0E8\v\x03\x0E:$\x03\x0E:,\x03\x0E8\x1A\x03\x0E8\x1E\x03\x0E:*\x03\x0E:7\x03\x0E:5\x03\x0E:;\x03\x0E:\x15\x03\x0E:<\x03\x0E:4\x03\x0E:'\x03\x0E:-\x03\x0E:%\x03\x0E:?\x03\x0E:=\x03\x0E:)\x03\x0E:/\x03\xCFs'\x03\r=\x0F\x03\r+*\x03\r99\x03\r9;\x03\r9?\x03\r)\r\x03\r(%\x02\x01\x18\x02\x01(\x02\x01\x1E\x03\x0F$!\x03\x0F87\x03\x0F4\x0E\x03\x0F5\x1D\x03\x06'\x03\x03\x0F\b\x18\x03\x0F\r\x1B\x03\x0E2=\x03\x0E;\b\x03\x0E:\v\x03\x0E\x06$\x03\x0E\r)\x03\x0E\x16\x1F\x03\x0E\x16\x1B\x03\r$\n\x03\x05,\x1D\x03\r. \x03\r.#\x03\f(/\x03\t%\x02\x03\r90\x03\r\x0E4\x03\r\r\x0F\x03\f#\x00\x03\f,\x1E\x03\f2\x0E\x03\f\x01\x17\x03\f\t:\x03\x0E\x173\x03\f\b\x03\x03\f\x11\x07\x03\f\x10\x18\x03\f\x1F\x1C\x03\f\x19\x0E\x03\f\x1A\x1F\x03\x0F0>\x03\v->\x03\v<+\x03\v8\x13\x03\v\x043\x03\v\x14\x03\x03\v\x16%\x03\r\"&\x03\v\x1A\x1A\x03\v\x1A\x04\x03\n%9\x03\n&2\x03\n&0\x03\n!\x1A\x03\n!7\x03\n5\x10\x03\n=4\x03\n?\x0E\x03\n>\x10\x03\n\x00 \x03\n\x0F:\x03\n\x0F9\x03\n\v\n\x03\n\x17%\x03\n\x1B-\x03\t-\x1A\x03\t,4\x03\t.,\x03\t)\t\x03\t6!\x03\t1\x1F\x03\t3\x16\x03\f+\x1F\x03\t8 \x03\t8=\x03\f(\x1A\x03\f(\x16\x03\t\n+\x03\t\x16\x12\x03\t\x13\x0E\x03\t\x153\x03\b)!\x03\t\x1A\x01\x03\t\x18\x01\x03\b%#\x03\b>\"\x03\b\x05%\x03\b\x02*\x03\b\x15;\x03\b\x1B7\x03\x0F\x07\x1D\x03\x0F\x04\x03\x03\x070\f\x03\x07;\v\x03\x07\b\x17\x03\x07\x12\x06\x03\x06/-\x03\x0671\x03\x065+\x03\x06>7\x03\x06\x049\x03\x05+\x1E\x03\x05,\x17\x03\x05 \x1D\x03\x05\"\x05\x03\x050\x1D";
 92398  		idnaValues = $toNativeArray($kindUint16, [128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 8, 8, 128, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 128, 128, 128, 128, 128, 128, 128, 57605, 57605, 57605, 57605, 57605, 57605, 57605, 57605, 57605, 57605, 57605, 57605, 57605, 57605, 57605, 57605, 57605, 57605, 57605, 57605, 57605, 57605, 57605, 57605, 57605, 57605, 128, 128, 128, 128, 128, 128, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 128, 128, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 10, 24, 24, 24, 24, 24, 24, 24, 26, 24, 57, 24, 24, 960, 24, 74, 24, 24, 105, 121, 138, 5, 24, 8, 170, 201, 217, 24, 233, 281, 329, 24, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 377, 8, 53, 77, 57357, 8, 57357, 8, 8, 57373, 8, 57405, 8, 57373, 8, 409, 409, 57373, 8, 57405, 8, 57373, 8, 57469, 8, 441, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 101, 57373, 8, 57405, 8, 57373, 8, 473, 8, 125, 57357, 8, 57357, 8, 125, 57469, 8, 149, 173, 57405, 8, 8, 197, 221, 245, 57373, 8, 269, 293, 8, 317, 317, 57357, 8, 8, 8, 269, 341, 8, 365, 57357, 8, 57357, 8, 57357, 8, 389, 57469, 8, 413, 8, 8, 57357, 8, 389, 57597, 8, 437, 461, 57405, 8, 57373, 8, 485, 57357, 8, 8, 8, 57357, 8, 8, 8, 8, 8, 8, 8, 489, 489, 489, 509, 533, 557, 581, 605, 629, 57373, 8, 57597, 8, 57373, 8, 57405, 8, 57373, 8, 57469, 8, 57373, 8, 57405, 8, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 8, 653, 677, 701, 57357, 8, 725, 749, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 773, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 8, 8, 8, 8, 8, 8, 521, 57405, 8, 797, 553, 8, 8, 8, 24, 24, 24, 24, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 24, 24, 24, 24, 24, 24, 666, 698, 730, 762, 794, 826, 24, 24, 941, 857, 473, 873, 965, 24, 24, 24, 24, 24, 24, 24, 8, 24, 8, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 989, 989, 13064, 1013, 889, 1037, 13064, 13064, 13064, 13064, 13064, 13064, 13064, 13064, 13064, 13248, 13064, 13064, 13064, 13064, 13064, 13064, 13064, 13064, 13064, 13064, 13064, 13064, 13064, 13064, 13064, 13064, 13064, 13064, 13064, 13064, 13064, 13064, 13064, 13064, 13064, 13064, 13064, 13064, 13064, 13064, 13064, 13064, 57357, 8, 57357, 8, 1061, 8, 57357, 8, 64, 64, 930, 8, 8, 8, 962, 1085, 64, 64, 64, 64, 138, 978, 57685, 1109, 57645, 57661, 57645, 64, 989, 64, 1133, 1157, 8, 57605, 57605, 57605, 57605, 57605, 57605, 57605, 57605, 57605, 57605, 57605, 57605, 57605, 57605, 57605, 1181, 1181, 64, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 57359, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 57541, 1205, 1229, 57533, 57589, 57597, 57501, 57525, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 1253, 57733, 57741, 8, 1277, 989, 24, 57469, 8, 57813, 57357, 8, 8, 1301, 1325, 1325, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 24, 13064, 13064, 13064, 13064, 13064, 13080, 13080, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 64, 57373, 8, 57405, 8, 57373, 8, 57469, 8, 57373, 8, 57405, 8, 57373, 8, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 64, 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, 2112, 2112, 2112, 2112, 2112, 2112, 24, 24, 2072, 24, 24, 2072, 24, 2072, 24, 24, 13064, 13064, 13064, 13064, 13064, 13064, 13064, 13064, 13064, 13064, 13064, 2072, 2880, 64, 2072, 2072, 2568, 2056, 3080, 3080, 3080, 3080, 2568, 3080, 2568, 3080, 2568, 2568, 2568, 2568, 2568, 3080, 3080, 3080, 3080, 2568, 2568, 2568, 2568, 2568, 2568, 2568, 2568, 2568, 2568, 2568, 2568, 2568, 2072, 2568, 2568, 2568, 2568, 2568, 2568, 2568, 3080, 2568, 2568, 13064, 13064, 13064, 13064, 13064, 13064, 13064, 13064, 13064, 13064, 13064, 13064, 13064, 13064, 13064, 13064, 13064, 13064, 13064, 13064, 13064, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 24, 2072, 2072, 2072, 2568, 2568, 13064, 3080, 3080, 3080, 2056, 1065, 1105, 1145, 1185, 2568, 2568, 2568, 2568, 2568, 2568, 2568, 3080, 2568, 2568, 3080, 3080, 3080, 3080, 3080, 3080, 3080, 3080, 3080, 2568, 3080, 2568, 3080, 2568, 2568, 3080, 3080, 2072, 3080, 13064, 13064, 13064, 13064, 13064, 13064, 13064, 2112, 24, 13064, 13064, 13064, 13064, 13064, 13064, 2056, 2056, 13064, 13064, 24, 13064, 13064, 13064, 13064, 3080, 3080, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 2568, 2568, 2568, 2056, 2056, 2568, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 64, 2880, 3080, 13064, 2568, 2568, 2568, 3080, 3080, 3080, 3080, 3080, 2568, 2568, 2568, 2568, 3080, 2568, 2568, 2568, 2568, 2568, 2568, 2568, 2568, 2568, 3080, 2568, 3080, 2568, 3080, 2568, 2568, 3080, 13064, 13064, 13064, 13064, 13064, 13064, 13064, 13064, 13064, 13064, 13064, 13064, 13064, 13064, 13064, 13064, 3080, 2568, 2568, 2568, 2568, 2568, 3080, 3080, 2568, 3080, 2568, 2568, 2568, 2568, 2568, 2568, 2568, 2568, 2568, 2568, 3080, 2568, 2056, 2056, 2056, 13064, 13064, 13064, 64, 64, 2072, 64, 2568, 2056, 2568, 2568, 2568, 2568, 2056, 3080, 2568, 3080, 3080, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 12296, 13064, 13064, 13064, 13064, 13064, 13064, 13064, 13064, 12296, 12296, 12296, 12296, 15112, 12296, 12296, 8, 13064, 13064, 13064, 13064, 13064, 13064, 13064, 1225, 1281, 1337, 1393, 1449, 1505, 1561, 1617, 8, 8, 13064, 13064, 24, 24, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 24, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 13064, 12296, 12296, 64, 8, 8, 8, 8, 8, 8, 8, 8, 64, 64, 8, 8, 64, 64, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 64, 8, 8, 8, 8, 8, 8, 8, 64, 8, 64, 64, 64, 8, 8, 8, 8, 64, 64, 13064, 8, 12296, 12296, 12296, 13064, 13064, 13064, 13064, 64, 64, 12296, 12296, 64, 64, 12296, 12296, 15112, 8, 64, 64, 64, 64, 64, 64, 64, 64, 12296, 64, 64, 64, 64, 1673, 1729, 64, 1785, 8, 8, 13064, 13064, 64, 64, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 8, 24, 64, 64, 64, 13064, 13064, 12296, 64, 8, 8, 8, 8, 8, 8, 64, 64, 64, 64, 8, 8, 64, 64, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 64, 8, 8, 8, 8, 8, 8, 8, 64, 8, 1841, 64, 8, 1897, 64, 8, 8, 64, 64, 13064, 64, 12296, 12296, 12296, 13064, 13064, 64, 64, 64, 64, 13064, 13064, 64, 64, 13064, 13064, 15112, 64, 64, 64, 13064, 64, 64, 64, 64, 64, 64, 64, 1953, 2009, 2065, 8, 64, 2121, 64, 64, 64, 64, 64, 64, 64, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 13064, 13064, 8, 8, 8, 13064, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 13064, 13064, 12296, 64, 8, 8, 8, 8, 8, 8, 8, 8, 8, 64, 8, 8, 8, 64, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 64, 8, 8, 8, 8, 8, 8, 8, 64, 8, 8, 64, 8, 8, 8, 8, 8, 64, 64, 13064, 8, 12296, 12296, 12296, 13064, 13064, 13064, 13064, 13064, 64, 13064, 13064, 12296, 64, 12296, 12296, 15112, 64, 64, 8, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 8, 8, 13064, 13064, 64, 64, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 24, 24, 64, 64, 64, 64, 64, 64, 64, 8, 13064, 13064, 13064, 13064, 13064, 13064, 64, 13064, 12296, 12296, 64, 8, 8, 8, 8, 8, 8, 8, 8, 64, 64, 8, 8, 64, 64, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 64, 8, 8, 8, 8, 8, 8, 8, 64, 8, 8, 64, 8, 8, 8, 8, 8, 64, 64, 13064, 8, 12296, 13064, 12296, 13064, 13064, 13064, 13064, 64, 64, 12296, 12296, 64, 64, 12296, 12296, 15112, 64, 64, 64, 64, 64, 64, 64, 64, 13064, 12296, 64, 64, 64, 64, 2177, 2233, 64, 8, 8, 8, 13064, 13064, 64, 64, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 24, 8, 24, 24, 24, 24, 24, 24, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 13064, 8, 64, 8, 8, 8, 8, 8, 8, 64, 64, 64, 8, 8, 8, 64, 8, 8, 8, 8, 64, 64, 64, 8, 8, 64, 8, 64, 8, 8, 64, 64, 64, 8, 8, 64, 64, 64, 8, 8, 8, 64, 64, 64, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 64, 64, 64, 64, 12296, 12296, 13064, 12296, 12296, 12296, 12296, 64, 13064, 13064, 13064, 64, 13064, 13064, 13064, 15112, 64, 64, 64, 64, 64, 64, 64, 13064, 13064, 64, 8, 8, 8, 64, 64, 64, 64, 64, 8, 8, 13064, 13064, 64, 64, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 64, 64, 64, 64, 64, 64, 64, 64, 24, 24, 24, 24, 24, 24, 24, 24, 8, 13064, 12296, 12296, 64, 8, 8, 8, 8, 8, 8, 8, 8, 64, 8, 8, 8, 64, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 64, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 64, 8, 8, 8, 8, 8, 64, 64, 13064, 8, 12296, 13064, 12296, 12296, 12296, 12296, 12296, 64, 13064, 12296, 12296, 64, 12296, 12296, 13064, 15112, 64, 64, 64, 64, 64, 64, 64, 12296, 12296, 64, 64, 64, 64, 64, 64, 64, 8, 64, 8, 8, 13064, 13064, 64, 64, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 64, 8, 8, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 12296, 13064, 13064, 13064, 13064, 64, 12296, 12296, 12296, 64, 12296, 12296, 12296, 15112, 8, 24, 64, 64, 64, 64, 8, 8, 8, 12296, 24, 24, 24, 24, 24, 24, 24, 8, 8, 8, 13064, 13064, 64, 64, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 8, 8, 8, 8, 8, 8, 64, 8, 8, 64, 8, 64, 64, 8, 8, 64, 8, 64, 64, 8, 64, 64, 64, 64, 64, 64, 8, 8, 8, 8, 64, 8, 8, 8, 8, 8, 8, 8, 64, 8, 8, 8, 64, 8, 64, 8, 64, 64, 8, 8, 64, 8, 8, 8, 8, 13064, 8, 2345, 13064, 13064, 13064, 13064, 13064, 13064, 64, 13064, 13064, 8, 64, 64, 8, 8, 8, 2513, 8, 8, 8, 8, 64, 8, 8, 8, 8, 2569, 8, 8, 8, 8, 2625, 8, 8, 8, 8, 2681, 8, 8, 8, 8, 2737, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 2793, 8, 8, 8, 64, 64, 64, 64, 13064, 13064, 2849, 13064, 2905, 2961, 3017, 3097, 3153, 13064, 13064, 13064, 13064, 13064, 12296, 13064, 3233, 13064, 13064, 15112, 24, 13064, 13064, 8, 8, 8, 8, 8, 13064, 13064, 13064, 13064, 13064, 13064, 3289, 13064, 13064, 13064, 13064, 64, 13064, 13064, 13064, 13064, 3345, 13064, 13064, 13064, 13064, 3401, 13064, 13064, 13064, 13064, 3457, 13064, 13064, 13064, 13064, 3513, 13064, 13064, 13064, 13064, 13064, 13064, 13064, 13064, 13064, 13064, 13064, 13064, 3569, 13064, 13064, 13064, 64, 24, 24, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 57, 3793, 3817, 8, 3833, 3849, 3865, 3889, 585, 3905, 601, 3921, 857, 3937, 3953, 8, 217, 3969, 3993, 617, 4009, 4025, 633, 57, 4041, 4065, 1437, 3817, 3833, 3849, 4089, 4113, 4137, 3889, 8, 3921, 3937, 4161, 217, 4185, 1461, 1461, 3993, 4009, 4025, 1437, 4209, 4233, 1485, 4249, 4273, 4297, 4321, 4345, 3905, 617, 4025, 4233, 4249, 4273, 4369, 4321, 4345, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 4393, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 4417, 4441, 4457, 4481, 4137, 4505, 4521, 4545, 4569, 4593, 4617, 4641, 1509, 4665, 4689, 57725, 4713, 4737, 4761, 4785, 4809, 4833, 4857, 4881, 4905, 4929, 4953, 4977, 5001, 1533, 5025, 5049, 5073, 5089, 5113, 5137, 5161, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 8, 8, 8, 8, 1557, 1589, 8, 8, 5185, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 8, 8, 8, 8, 8, 8, 64, 64, 57413, 57413, 57413, 57413, 57413, 57413, 64, 64, 8, 8, 8, 8, 8, 8, 8, 8, 64, 57413, 64, 57413, 64, 57413, 64, 57413, 8, 8, 8, 8, 8, 8, 8, 8, 57413, 57413, 57413, 57413, 57413, 57413, 57413, 57413, 8, 5209, 8, 5233, 8, 5257, 8, 5281, 8, 5305, 8, 5329, 8, 5353, 64, 64, 5377, 5425, 5473, 5521, 5569, 5617, 5665, 5713, 5377, 5425, 5473, 5521, 5569, 5617, 5665, 5713, 5761, 5809, 5857, 5905, 5953, 6001, 6049, 6097, 5761, 5809, 5857, 5905, 5953, 6001, 6049, 6097, 6145, 6193, 6241, 6289, 6337, 6385, 6433, 6481, 6145, 6193, 6241, 6289, 6337, 6385, 6433, 6481, 8, 8, 6529, 6577, 6617, 64, 8, 6657, 57413, 57413, 1613, 5209, 6577, 1638, 6705, 1670, 1702, 6730, 6777, 6825, 6865, 64, 8, 6905, 1733, 5233, 1757, 5257, 6825, 6954, 7002, 7050, 8, 8, 8, 7097, 64, 64, 8, 8, 57413, 57413, 1781, 5281, 64, 7122, 7170, 7218, 8, 8, 8, 7265, 8, 8, 8, 8, 57413, 57413, 1805, 5329, 57421, 7290, 978, 7338, 64, 64, 7353, 7401, 7441, 64, 8, 7481, 1829, 5305, 1301, 5353, 7401, 1854, 1886, 64, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 960, 3, 3, 832, 2880, 24, 57357, 24, 24, 24, 24, 24, 1918, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 64, 64, 64, 24, 64, 64, 832, 832, 832, 832, 832, 10, 24, 24, 24, 7529, 7585, 24, 7665, 7721, 24, 24, 24, 24, 7802, 24, 1950, 24, 24, 24, 24, 24, 24, 24, 24, 7826, 7850, 7874, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 7897, 24, 24, 24, 24, 24, 24, 24, 10, 960, 832, 832, 832, 960, 64, 64, 64, 64, 64, 832, 832, 832, 832, 832, 832, 8001, 3905, 64, 64, 8017, 8033, 8049, 8065, 8081, 8097, 8114, 1981, 8130, 8146, 8162, 3953, 8001, 201, 105, 121, 8017, 8033, 8049, 8065, 8081, 8097, 8114, 2005, 8130, 8146, 8162, 64, 57, 3849, 217, 873, 4089, 585, 3921, 857, 3937, 3953, 3993, 473, 4009, 64, 64, 64, 24, 24, 24, 24, 24, 24, 24, 24, 8177, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 2030, 2062, 4441, 2093, 24, 2126, 2158, 4113, 24, 2189, 3889, 585, 585, 585, 585, 8201, 3905, 3905, 857, 857, 24, 3953, 8225, 24, 24, 3993, 8249, 617, 617, 617, 24, 24, 8265, 2221, 8289, 24, 5073, 24, 8313, 24, 5073, 24, 3921, 8337, 3817, 4441, 24, 3849, 3849, 4505, 64, 3937, 217, 8361, 8385, 8409, 8433, 3905, 24, 2253, 8457, 4273, 4273, 8457, 2285, 24, 24, 24, 24, 3833, 3833, 3849, 3905, 601, 24, 24, 24, 24, 8, 24, 8481, 8529, 8577, 8633, 8681, 8729, 8777, 8825, 8873, 8921, 8969, 9017, 9065, 9113, 9161, 9209, 3905, 9249, 2309, 9273, 4233, 9297, 2341, 9321, 9361, 873, 9385, 2373, 857, 4441, 3833, 3937, 3905, 9249, 2405, 9273, 4233, 9297, 2437, 9321, 9361, 873, 9385, 2469, 857, 4441, 3833, 3937, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 201, 105, 121, 8017, 8033, 8049, 8065, 8081, 8097, 9729, 9753, 9777, 9801, 9825, 9849, 9873, 9897, 9921, 9945, 9969, 2566, 2598, 2630, 2662, 2694, 2726, 2758, 2790, 2822, 9994, 10034, 10074, 10114, 10154, 10194, 10234, 10274, 10314, 10354, 10394, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 2854, 2886, 2918, 2950, 2982, 3014, 3046, 3078, 3110, 3142, 3174, 3206, 3238, 3270, 3302, 3334, 3366, 3398, 3430, 3462, 3494, 3526, 3558, 3590, 3622, 3654, 57, 3817, 4441, 3833, 3849, 4505, 3889, 585, 3905, 601, 3921, 857, 3937, 3953, 217, 3993, 8249, 617, 473, 4009, 4025, 4233, 633, 873, 649, 5073, 57, 3817, 4441, 3833, 3849, 4505, 3889, 585, 3905, 601, 3921, 857, 3937, 3953, 217, 3993, 8249, 617, 473, 4009, 4025, 4233, 633, 873, 649, 5073, 8001, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 64, 57357, 8, 10609, 3773, 10633, 8, 8, 57469, 8, 57373, 8, 57405, 8, 4065, 4737, 4041, 4417, 8, 57357, 8, 8, 57373, 8, 8, 8, 8, 8, 8, 601, 4233, 10657, 10681, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 8, 24, 24, 24, 24, 24, 24, 57405, 8, 57373, 8, 13064, 13064, 13064, 57357, 8, 64, 64, 64, 64, 64, 24, 24, 24, 24, 24, 24, 24, 9981, 10013, 10045, 10077, 10109, 10141, 10173, 10205, 10237, 10269, 10301, 10333, 10365, 10397, 10429, 10461, 10493, 10525, 10557, 10589, 10621, 10653, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 10, 24, 10705, 24, 24, 8, 8, 8, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 13064, 13064, 13064, 13064, 12312, 12312, 24, 24, 24, 24, 24, 24, 57637, 24, 10685, 10717, 10749, 24, 8, 24, 24, 24, 11069, 11101, 11133, 11165, 11197, 11229, 11229, 11229, 11261, 11261, 11261, 11261, 11293, 11293, 11293, 11325, 11357, 11357, 10877, 10877, 11357, 11357, 11389, 11389, 11357, 11357, 10877, 10877, 11357, 11357, 11325, 11325, 11421, 11421, 11453, 11453, 64, 11485, 11517, 11549, 11549, 11581, 11613, 11645, 11677, 11709, 11741, 11773, 11805, 11837, 11837, 11869, 11901, 11901, 11933, 11965, 11869, 11997, 12029, 11997, 11869, 12061, 12093, 12125, 12157, 12189, 11517, 11485, 12221, 12253, 12285, 12317, 12349, 12381, 12413, 12445, 12477, 12509, 12541, 64, 24, 24, 12573, 12605, 12637, 12669, 12701, 12733, 12765, 12797, 12829, 12861, 12637, 12893, 12925, 12957, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 64, 64, 64, 64, 64, 13986, 14034, 14082, 14130, 12989, 13021, 13053, 13085, 24, 24, 24, 24, 24, 24, 24, 24, 13117, 14177, 14201, 14225, 14249, 14273, 14297, 14321, 14345, 14369, 14393, 14417, 14441, 14465, 14489, 14513, 13149, 13181, 13213, 13245, 13277, 13277, 13309, 13341, 13373, 13405, 13437, 13469, 13501, 13533, 13565, 13597, 13629, 13661, 13693, 13725, 13757, 13789, 13821, 13853, 13885, 13917, 13949, 13981, 14537, 14593, 14013, 24, 14045, 14077, 14109, 14141, 14173, 14205, 14237, 14269, 14301, 14333, 14365, 14397, 14429, 14461, 14493, 14525, 14557, 14589, 14621, 14653, 14685, 14717, 14749, 14781, 14813, 14845, 14877, 14909, 14941, 14973, 15005, 15037, 15069, 15101, 15133, 15165, 15197, 15229, 4733, 15261, 15293, 15325, 15357, 15389, 15421, 15453, 9117, 15485, 15517, 14649, 14673, 14697, 14721, 14745, 14769, 14793, 14817, 14841, 14865, 14889, 14913, 14937, 14961, 14985, 15009, 15049, 15089, 15129, 15169, 15209, 15249, 15289, 15329, 15369, 15417, 15465, 15513, 15549, 15537, 15581, 15613, 15637, 15661, 15685, 15709, 15709, 15685, 15733, 1981, 15757, 15781, 15805, 15829, 15853, 15877, 15901, 15925, 15949, 15973, 15997, 16021, 16021, 16045, 16045, 16069, 16069, 16093, 16117, 16141, 16165, 16189, 16189, 16213, 16213, 16213, 16237, 16261, 16285, 16309, 16285, 16333, 16357, 16237, 16381, 16405, 16405, 16405, 64, 15561, 15665, 15769, 15873, 15953, 16057, 16137, 16217, 16345, 16449, 16529, 16609, 16689, 16793, 16897, 16977, 17057, 17113, 17193, 17297, 17401, 17457, 17585, 17737, 17865, 17945, 18073, 18201, 18305, 18385, 18465, 18545, 18649, 18777, 18881, 18961, 19041, 19121, 19177, 19233, 19289, 19345, 19425, 19505, 19633, 19713, 19817, 19945, 20025, 20081, 20137, 20265, 20369, 20497, 20577, 20705, 20761, 20841, 20921, 21001, 21081, 21161, 21265, 21345, 21401, 21481, 21561, 21641, 21745, 21825, 21905, 21985, 22113, 22217, 22273, 22401, 22457, 22561, 22665, 22745, 22825, 22905, 23009, 23065, 23145, 23249, 23305, 23433, 23513, 23553, 23593, 23633, 23673, 23713, 23753, 23793, 23833, 23873, 23913, 23961, 24009, 24057, 24105, 24153, 24201, 24249, 24297, 24345, 24393, 24441, 24489, 24537, 24585, 16429, 24633, 24657, 16461, 24681, 24705, 24729, 16493, 16493, 24753, 24777, 24833, 24889, 24945, 25001, 25105, 25129, 16525, 25153, 25177, 25201, 25225, 25249, 16557, 25273, 25313, 25337, 16589, 16589, 25361, 25385, 25409, 16621, 16653, 16685, 16717, 16749, 25433, 25457, 25481, 25505, 25529, 16781, 25553, 25577, 25601, 16813, 16845, 25625, 16877, 16909, 16941, 25649, 16973, 25673, 25721, 25105, 17005, 17037, 17069, 17101, 25777, 25841, 25913, 25937, 17133, 25961, 25985, 26009, 17165, 26033, 26057, 26033, 26081, 26105, 17197, 26129, 26153, 26129, 17229, 17261, 64, 26177, 26201, 26225, 26249, 64, 26305, 26329, 26353, 26377, 26401, 26425, 25601, 26449, 26473, 26497, 17293, 26521, 25225, 17325, 17357, 26545, 64, 17389, 26569, 26593, 26617, 26641, 26665, 26713, 26761, 26801, 26841, 26881, 26921, 26961, 27001, 27041, 27081, 27121, 27169, 27217, 27265, 27313, 27361, 27409, 27457, 27505, 27553, 27601, 27649, 27697, 27745, 27793, 27841, 27889, 27937, 27985, 28033, 28081, 28129, 17421, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 8, 13064, 13080, 13080, 13080, 24, 13064, 13064, 13064, 13064, 13064, 13064, 13064, 13064, 13064, 13064, 24, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 3745, 28177, 13064, 13064, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 8, 8, 8, 8, 8, 8, 8, 8, 8, 24, 24, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 8, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57597, 8, 8, 8, 8, 8, 8, 8, 8, 57373, 8, 57405, 8, 17453, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 8, 24, 24, 57405, 8, 4569, 8, 8, 57357, 8, 57357, 8, 8, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 57357, 8, 28201, 4137, 4545, 28225, 4641, 64, 28249, 28273, 4665, 17485, 57357, 8, 57357, 8, 64, 64, 64, 64, 64, 64, 64, 64, 25813, 25845, 25877, 25909, 25941, 25973, 26005, 26037, 26069, 26101, 26133, 26165, 26197, 26229, 8, 8, 26261, 8, 26293, 8, 8, 26325, 26357, 26389, 26421, 26453, 26485, 26517, 26549, 26581, 26613, 8, 26645, 8, 26677, 8, 8, 26709, 26741, 8, 8, 8, 26773, 26805, 26837, 26869, 26901, 26933, 26965, 26997, 27029, 27061, 27093, 27125, 27157, 27189, 27221, 27253, 27285, 27317, 27349, 27381, 27413, 27445, 31381, 31413, 31445, 31477, 31509, 31541, 31573, 31605, 31637, 31669, 31701, 31733, 31765, 31797, 31829, 28361, 28401, 28441, 31861, 31893, 31925, 28481, 28521, 28561, 31957, 31989, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 28601, 28625, 28649, 32021, 32053, 28673, 28673, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 28697, 28737, 28777, 28817, 28857, 64, 64, 64, 64, 64, 28897, 13064, 28937, 28977, 8361, 8433, 29001, 29025, 29049, 29073, 29097, 29121, 8114, 29145, 29185, 29225, 29281, 29337, 29377, 29417, 29457, 29497, 29537, 29577, 29617, 29657, 64, 29697, 29737, 29777, 29817, 29857, 64, 29897, 64, 29937, 29977, 64, 30017, 30057, 64, 30097, 30137, 30177, 30217, 30257, 30297, 30337, 30377, 30417, 30457, 30497, 30497, 30521, 30521, 30521, 30521, 30545, 30545, 30545, 30545, 30569, 30569, 30569, 30569, 30593, 30593, 30593, 30593, 30617, 30617, 30617, 30617, 30641, 30641, 30641, 30641, 30665, 30665, 30665, 30665, 30689, 30689, 30689, 30689, 30713, 30713, 30713, 30713, 30737, 30737, 30737, 30737, 30761, 30761, 30761, 30761, 30785, 30785, 30785, 30785, 30809, 30809, 30833, 30833, 30857, 30857, 30881, 30881, 30905, 30905, 30929, 30929, 30953, 30953, 30953, 30953, 30977, 30977, 30977, 30977, 31001, 31001, 31001, 31001, 31025, 31025, 31025, 31025, 31049, 31049, 31073, 31073, 31073, 31073, 31097, 31097, 31121, 31121, 31121, 31121, 31145, 31145, 31145, 31145, 31169, 31169, 31193, 31193, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 31217, 31217, 31217, 31217, 31241, 31241, 31265, 31265, 31289, 31289, 1145, 31313, 31313, 31337, 31337, 31361, 31361, 31385, 31385, 31385, 31385, 31409, 31409, 31433, 31433, 31473, 31473, 31513, 31513, 31553, 31553, 31593, 31593, 31633, 31633, 31673, 31673, 31673, 31713, 31713, 31713, 31753, 31753, 31753, 31753, 34297, 34337, 34377, 34417, 34457, 34497, 34537, 34577, 34617, 34657, 34697, 34737, 34777, 34817, 34857, 34897, 34937, 34977, 35017, 35057, 35097, 35137, 35177, 35217, 35257, 35297, 35337, 35377, 35417, 35457, 35498, 35546, 35594, 35642, 35690, 35738, 35785, 35825, 31857, 35865, 31713, 31897, 35905, 35945, 32057, 35985, 32097, 32137, 36025, 36065, 32297, 36105, 32337, 32377, 36145, 36185, 32457, 36225, 32497, 32537, 33697, 33737, 33857, 33897, 33937, 34097, 34137, 34177, 34217, 34377, 34417, 34457, 36265, 34617, 36305, 36345, 34857, 36385, 34897, 34937, 35457, 36425, 36465, 35257, 36505, 35297, 35337, 31777, 31817, 36545, 31857, 36585, 31937, 31977, 32017, 32057, 36625, 32177, 32217, 32257, 32297, 36665, 32457, 32577, 32617, 32657, 32697, 32737, 32817, 32857, 32897, 32937, 32977, 33017, 36705, 33057, 33097, 33137, 33177, 33217, 33257, 33337, 33377, 33417, 33457, 33497, 33537, 33577, 33617, 33657, 33777, 33817, 33977, 34017, 34057, 34097, 34137, 34257, 34297, 34337, 34377, 36745, 34497, 34537, 34577, 34617, 34737, 34777, 34817, 34857, 36785, 34977, 35017, 36825, 35137, 35177, 35217, 35257, 36865, 31857, 36585, 32057, 36625, 32297, 36665, 32457, 36905, 32977, 36945, 36985, 37025, 34097, 34137, 34377, 34857, 36785, 35257, 36865, 37065, 37121, 37177, 37233, 37273, 37313, 37353, 37393, 37433, 37473, 37513, 37553, 37593, 37633, 37673, 37713, 37753, 37793, 37833, 37873, 37913, 37953, 37993, 38033, 38073, 38113, 36985, 38153, 38193, 38233, 38273, 37233, 37273, 37313, 37353, 37393, 37433, 37473, 37513, 37553, 37593, 37633, 37673, 37713, 37753, 37793, 37833, 37873, 37913, 37953, 37993, 38033, 38073, 38113, 36985, 38153, 38193, 38233, 38273, 38033, 38073, 38113, 36985, 36945, 37025, 33297, 32857, 32897, 32937, 38033, 38073, 38113, 33297, 33337, 38313, 38313, 24, 24, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 38353, 38409, 38409, 38465, 38521, 38577, 38633, 38689, 38745, 38745, 38801, 38857, 38913, 38969, 39025, 39081, 39081, 39137, 39193, 39193, 39249, 39249, 39305, 39361, 39361, 39417, 39473, 39473, 39529, 39529, 39585, 39641, 39641, 39697, 39697, 39753, 39809, 39865, 39921, 39921, 39977, 40033, 40089, 40145, 40201, 40201, 40257, 40313, 43337, 43393, 43449, 43169, 39865, 39305, 43505, 43561, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 43617, 43673, 43729, 43801, 43873, 43945, 44017, 44089, 44161, 44233, 44290, 44562, 44689, 24, 64, 64, 13248, 13248, 13248, 13248, 13248, 13248, 13248, 13248, 13248, 13248, 13248, 13248, 13248, 13248, 13248, 13248, 44762, 32085, 64, 44778, 962, 44794, 44810, 32117, 32149, 64, 64, 64, 64, 64, 64, 64, 13064, 13064, 13064, 13064, 13064, 13064, 13064, 13064, 13064, 13064, 13064, 13064, 13064, 13064, 13064, 13064, 64, 32181, 32213, 44826, 44826, 8146, 8162, 44842, 44858, 32245, 32277, 32309, 32245, 32341, 32373, 32341, 32405, 32437, 32469, 32437, 32501, 24, 24, 44874, 44890, 32534, 32566, 32598, 32630, 44826, 44826, 44826, 44762, 32661, 64, 64, 962, 44778, 44810, 44794, 32693, 8146, 8162, 44842, 44858, 32405, 32501, 44906, 44922, 44938, 8114, 44953, 44970, 44986, 8130, 64, 45002, 45018, 45034, 45050, 64, 64, 64, 64, 32726, 45065, 32758, 2056, 32790, 64, 32822, 45105, 32854, 45145, 32886, 45185, 32918, 45225, 32950, 45265, 45305, 45329, 45329, 45353, 45353, 45377, 45377, 45401, 45401, 45425, 45425, 45425, 45425, 45449, 45449, 45473, 45473, 45473, 45473, 45497, 45497, 45521, 45521, 45521, 45521, 45545, 45545, 45545, 45545, 45569, 45569, 45569, 45569, 45593, 45593, 45593, 45593, 45617, 45617, 45617, 45617, 45641, 45641, 45665, 45665, 45689, 45689, 45713, 45713, 45737, 45737, 45737, 45737, 45761, 45761, 45761, 45761, 45785, 45785, 45785, 45785, 45809, 45809, 45809, 45809, 45833, 45833, 45833, 45833, 45857, 45857, 45857, 45857, 45881, 45881, 45881, 45881, 45905, 45905, 45905, 45905, 45929, 45929, 45929, 45929, 45953, 45953, 45953, 45953, 45977, 45977, 45977, 45977, 46001, 46001, 46001, 46001, 46025, 46025, 46025, 46025, 46049, 46049, 46049, 46049, 46073, 46073, 46073, 46073, 46097, 46097, 31409, 31409, 46121, 46121, 46121, 46121, 46145, 46145, 46185, 46185, 46225, 46225, 46265, 46265, 64, 64, 960, 64, 44794, 46306, 44906, 45018, 45034, 44922, 46322, 8146, 8162, 44938, 8114, 44762, 44953, 10705, 46338, 8001, 201, 105, 121, 8017, 8033, 8049, 8065, 8081, 8097, 44778, 962, 44970, 8130, 44986, 44810, 45050, 57, 3817, 4441, 3833, 3849, 4505, 3889, 585, 3905, 601, 3921, 857, 3937, 3953, 217, 3993, 8249, 617, 473, 4009, 4025, 4233, 633, 873, 649, 5073, 44874, 45002, 44890, 46354, 44826, 7338, 57, 3817, 4441, 3833, 3849, 4505, 3889, 585, 3905, 601, 3921, 857, 3937, 3953, 217, 3993, 8249, 617, 473, 4009, 4025, 4233, 633, 873, 649, 5073, 44842, 46370, 44858, 46386, 32981, 33013, 10705, 33045, 33045, 33077, 33109, 33141, 33173, 33205, 33237, 33269, 33301, 33333, 33365, 33397, 33429, 33461, 33493, 33525, 33557, 33589, 33621, 33653, 33685, 33717, 33749, 33781, 33813, 33205, 33845, 33877, 33301, 33909, 33941, 33973, 34005, 34037, 34069, 34101, 34133, 34005, 34165, 34005, 34197, 34197, 34229, 34229, 34261, 34069, 34293, 34325, 34293, 34357, 34325, 34389, 34389, 34421, 34421, 34453, 34453, 34325, 33045, 34485, 34517, 64, 34549, 34581, 34613, 34645, 34613, 34677, 34709, 34741, 34741, 34773, 34773, 34805, 34805, 34773, 34773, 34837, 34869, 34901, 34933, 34965, 34997, 34997, 34997, 35029, 35029, 35029, 35029, 34741, 34741, 34741, 64, 64, 64, 34581, 34549, 35061, 34549, 34581, 34549, 64, 64, 35093, 34581, 35125, 35061, 35125, 34581, 64, 64, 35157, 35189, 34933, 35125, 35061, 35125, 64, 64, 35221, 35253, 35221, 64, 64, 64, 46401, 46425, 46449, 35286, 46473, 46497, 35317, 64, 35349, 35381, 35413, 35381, 35445, 35477, 35509, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 832, 832, 832, 64, 64, 64, 64, 2568, 2568, 2568, 2568, 2568, 3080, 2056, 3080, 2072, 3080, 3080, 2056, 2056, 2312, 3080, 3080, 3080, 3080, 3080, 2568, 2568, 2568, 2568, 2312, 2568, 2568, 2568, 2568, 2568, 3080, 2568, 2568, 2568, 3080, 2056, 2056, 3080, 13064, 13064, 64, 64, 64, 64, 2584, 2584, 2584, 2584, 3096, 2072, 2072, 2072, 2072, 2072, 2072, 2072, 64, 64, 64, 64, 64, 64, 64, 64, 64, 2568, 3080, 2568, 3080, 3080, 3080, 2568, 2568, 2568, 3080, 2568, 2568, 3080, 2568, 3080, 3080, 2568, 3080, 64, 64, 64, 64, 64, 64, 64, 2072, 2072, 2072, 2072, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 3096, 3096, 3096, 3096, 2584, 2584, 2072, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 13064, 13064, 12296, 12296, 64, 8, 8, 8, 8, 8, 8, 8, 8, 64, 64, 8, 8, 64, 64, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 64, 8, 8, 8, 8, 8, 8, 8, 64, 8, 8, 64, 8, 8, 8, 8, 8, 64, 64, 13064, 8, 12296, 12296, 13064, 12296, 12296, 12296, 12296, 64, 64, 12296, 12296, 64, 64, 12296, 12296, 14344, 64, 64, 8, 64, 64, 64, 64, 64, 64, 12296, 64, 64, 64, 64, 64, 8, 8, 8, 8, 8, 12296, 12296, 64, 64, 13064, 13064, 13064, 13064, 13064, 13064, 13064, 64, 64, 64, 13064, 13064, 13064, 13064, 13064, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 57, 3817, 4441, 3833, 3849, 4505, 3889, 585, 3905, 601, 3921, 857, 3937, 3953, 217, 3993, 8249, 617, 473, 4009, 4025, 4233, 633, 873, 649, 5073, 57, 3817, 4441, 3833, 3849, 4505, 3889, 585, 3905, 601, 3921, 857, 3937, 3953, 217, 3993, 8249, 617, 473, 4009, 4025, 4233, 633, 873, 649, 5073, 57, 3817, 4441, 3833, 3849, 4505, 3889, 585, 3905, 601, 3921, 857, 3937, 3953, 217, 3993, 8249, 617, 473, 4009, 4025, 4233, 633, 873, 649, 5073, 57, 3817, 4441, 3833, 3849, 4505, 3889, 64, 3905, 601, 3921, 857, 3937, 3953, 217, 3993, 8249, 617, 473, 4009, 4025, 4233, 633, 873, 649, 5073, 57, 3817, 4441, 3833, 3849, 4505, 3889, 585, 3905, 601, 3921, 857, 3937, 3953, 217, 3993, 8249, 617, 473, 4009, 4025, 4233, 633, 873, 649, 5073, 57, 3817, 4441, 3833, 3849, 4505, 3889, 585, 3905, 601, 3921, 857, 3937, 3953, 217, 3993, 8249, 617, 473, 4009, 4025, 4233, 633, 873, 649, 5073, 57, 64, 4441, 3833, 64, 64, 3889, 64, 64, 601, 3921, 64, 64, 3953, 217, 3993, 8249, 64, 473, 4009, 4025, 4233, 633, 873, 649, 5073, 57, 3817, 4441, 3833, 64, 4505, 64, 585, 3905, 601, 3921, 857, 3937, 3953, 64, 3993, 8249, 617, 473, 4009, 4025, 4233, 633, 873, 649, 5073, 57, 3817, 4441, 3833, 3849, 4505, 3889, 585, 3905, 601, 3921, 857, 3937, 3953, 217, 3993, 8249, 617, 473, 4009, 4025, 4233, 633, 873, 649, 5073, 57, 3817, 4441, 3833, 3849, 4505, 3889, 585, 3905, 601, 3921, 857, 3937, 3953, 217, 3993, 8249, 617, 473, 4009, 4025, 4233, 633, 873, 649, 5073, 57, 3817, 64, 3833, 3849, 4505, 3889, 64, 64, 601, 3921, 857, 3937, 3953, 217, 3993, 8249, 64, 473, 4009, 4025, 4233, 633, 873, 649, 64, 57, 3817, 4441, 3833, 3849, 4505, 3889, 585, 3905, 601, 3921, 857, 3937, 3953, 217, 3993, 8249, 617, 473, 4009, 4025, 4233, 633, 873, 649, 5073, 57, 3817, 64, 3833, 3849, 4505, 3889, 64, 3905, 601, 3921, 857, 3937, 64, 217, 64, 64, 64, 473, 4009, 4025, 4233, 633, 873, 649, 64, 57, 3817, 4441, 3833, 3849, 4505, 3889, 585, 3905, 601, 3921, 857, 3937, 3953, 217, 3993, 8249, 617, 473, 4009, 4025, 4233, 633, 873, 649, 5073, 57, 3817, 4441, 3833, 3849, 4505, 3889, 585, 3905, 601, 3921, 857, 3937, 3953, 217, 3993, 8249, 617, 473, 4009, 4025, 4233, 633, 873, 649, 5073, 57, 3817, 4441, 3833, 3849, 4505, 3889, 585, 3905, 601, 3921, 857, 3937, 3953, 217, 3993, 8249, 617, 473, 4009, 4025, 4233, 633, 873, 649, 5073, 57, 3817, 4441, 3833, 3849, 4505, 3889, 585, 3905, 601, 3921, 857, 3937, 3953, 217, 3993, 8249, 617, 473, 4009, 4025, 4233, 633, 873, 649, 5073, 57, 3817, 4441, 3833, 3849, 4505, 3889, 585, 3905, 601, 3921, 857, 3937, 3953, 217, 3993, 8249, 617, 473, 4009, 4025, 4233, 633, 873, 649, 5073, 57, 3817, 4441, 3833, 3849, 4505, 3889, 585, 3905, 601, 3921, 857, 3937, 3953, 217, 3993, 8249, 617, 473, 4009, 4025, 4233, 633, 873, 649, 5073, 57, 3817, 4441, 3833, 3849, 4505, 3889, 585, 3905, 601, 3921, 857, 3937, 3953, 217, 3993, 8249, 617, 473, 4009, 4025, 4233, 633, 873, 649, 5073, 57, 3817, 4441, 3833, 3849, 4505, 3889, 585, 3905, 601, 3921, 857, 3937, 3953, 217, 3993, 8249, 617, 473, 4009, 4025, 4233, 633, 873, 649, 5073, 57, 3817, 4441, 3833, 3849, 4505, 3889, 585, 3905, 601, 3921, 857, 3937, 3953, 217, 3993, 8249, 617, 473, 4009, 4025, 4233, 633, 873, 649, 5073, 57, 3817, 4441, 3833, 3849, 4505, 3889, 585, 3905, 601, 3921, 857, 3937, 3953, 217, 3993, 8249, 617, 473, 4009, 4025, 4233, 633, 873, 649, 5073, 57, 3817, 4441, 3833, 3849, 4505, 3889, 585, 3905, 601, 3921, 857, 3937, 3953, 217, 3993, 8249, 617, 473, 4009, 4025, 4233, 633, 873, 649, 5073, 57, 3817, 4441, 3833, 3849, 4505, 3889, 585, 3905, 601, 3921, 857, 3937, 3953, 217, 3993, 8249, 617, 473, 4009, 4025, 4233, 633, 873, 649, 5073, 57, 3817, 4441, 3833, 3849, 4505, 3889, 585, 3905, 601, 3921, 857, 3937, 3953, 217, 3993, 8249, 617, 473, 4009, 4025, 4233, 633, 873, 649, 5073, 47745, 47769, 64, 64, 47793, 4249, 4273, 4297, 47817, 47841, 47865, 5161, 6705, 47889, 47913, 47937, 47961, 47985, 48009, 8457, 4369, 5161, 48033, 48057, 48081, 4321, 4345, 48105, 8313, 48129, 47793, 4249, 4273, 4297, 47817, 47841, 47865, 5161, 6705, 47889, 47913, 47937, 47961, 47985, 48009, 8457, 4369, 48033, 48033, 48057, 48081, 4321, 4345, 48105, 8313, 48161, 47817, 5161, 47889, 4321, 4369, 8457, 47793, 4249, 4273, 4297, 47817, 47841, 47865, 5161, 6705, 47889, 47913, 47937, 47961, 47985, 48009, 8457, 4369, 5161, 48033, 48057, 48081, 4321, 4345, 48105, 8313, 48129, 47793, 4249, 4273, 4297, 47817, 47841, 47865, 5161, 6705, 47889, 47913, 47937, 47961, 47985, 48009, 8457, 4369, 48033, 48033, 48057, 48081, 4321, 4345, 48105, 8313, 48161, 47817, 5161, 47889, 4321, 4369, 8457, 47793, 4249, 4273, 4297, 47817, 47841, 47865, 5161, 6705, 47889, 47913, 47937, 47961, 47985, 48009, 8457, 4369, 5161, 48033, 48057, 48081, 4321, 4345, 48105, 8313, 48129, 47793, 4249, 4273, 4297, 47817, 47841, 47865, 5161, 6705, 47889, 47913, 47937, 47961, 47985, 48009, 8457, 4369, 48033, 48033, 48057, 48081, 4321, 4345, 48105, 8313, 48161, 47817, 5161, 47889, 4321, 4369, 8457, 47793, 4249, 4273, 4297, 47817, 47841, 47865, 5161, 6705, 47889, 47913, 47937, 47961, 47985, 48009, 8457, 4369, 5161, 48033, 48057, 48081, 4321, 4345, 48105, 8313, 48129, 47793, 4249, 4273, 4297, 47817, 47841, 47865, 5161, 6705, 47889, 47913, 47937, 47961, 47985, 48009, 8457, 4369, 48033, 48033, 48057, 48081, 4321, 4345, 48105, 8313, 48161, 47817, 5161, 47889, 4321, 4369, 8457, 47793, 4249, 4273, 4297, 47817, 47841, 47865, 5161, 6705, 47889, 47913, 47937, 47961, 47985, 48009, 8457, 4369, 5161, 48033, 48057, 48081, 4321, 4345, 48105, 8313, 48129, 47793, 4249, 4273, 4297, 47817, 47841, 47865, 5161, 6705, 47889, 47913, 47937, 47961, 47985, 48009, 8457, 4369, 48033, 48033, 48057, 48081, 4321, 4345, 48105, 8313, 48161, 47817, 5161, 47889, 4321, 4369, 8457, 48193, 48193, 64, 64, 8001, 201, 105, 121, 8017, 8033, 8049, 8065, 8081, 8097, 8001, 201, 105, 121, 8017, 8033, 8049, 8065, 8081, 8097, 8001, 201, 105, 121, 8017, 8033, 8049, 8065, 8081, 8097, 8001, 201, 105, 121, 8017, 8033, 8049, 8065, 8081, 8097, 8001, 201, 105, 121, 8017, 8033, 8049, 8065, 8081, 8097, 57621, 57621, 57653, 57653, 57621, 57621, 57717, 57717, 57621, 57621, 57653, 57653, 57621, 57621, 57845, 57845, 57621, 57621, 57653, 57653, 57621, 57621, 57717, 57717, 57621, 57621, 57653, 57653, 57621, 57621, 35589, 35589, 1205, 1205, 2568, 2568, 2568, 2568, 2568, 2568, 2568, 2568, 2568, 2568, 2568, 2568, 2568, 2568, 2568, 2568, 2568, 2568, 2568, 2568, 2568, 2568, 2568, 2568, 2568, 2568, 2568, 2568, 2568, 2568, 45449, 45473, 45569, 45641, 64, 46097, 45713, 45593, 45833, 46121, 45977, 46001, 46025, 46049, 45737, 45881, 45929, 45785, 45953, 45689, 45761, 45521, 45545, 45617, 45665, 45809, 45857, 45905, 48217, 31049, 48241, 48265, 64, 45473, 45569, 64, 46073, 64, 64, 45593, 64, 46121, 45977, 46001, 46025, 46049, 45737, 45881, 45929, 45785, 45953, 64, 45761, 45521, 45545, 45617, 64, 45809, 64, 45905, 64, 64, 64, 64, 64, 64, 45569, 64, 64, 64, 64, 45593, 64, 46121, 64, 46001, 64, 46049, 45737, 45881, 64, 45785, 45953, 64, 45761, 64, 64, 45617, 64, 45809, 64, 45905, 64, 31049, 64, 48265, 64, 45473, 45569, 64, 46073, 64, 64, 45593, 45833, 46121, 45977, 64, 46025, 46049, 45737, 45881, 45929, 45785, 45953, 64, 45761, 45521, 45545, 45617, 64, 45809, 45857, 45905, 48217, 64, 48241, 64, 45449, 45473, 45569, 45641, 46073, 46097, 45713, 45593, 45833, 46121, 64, 46001, 46025, 46049, 45737, 45881, 45929, 45785, 45953, 45689, 45761, 45521, 45545, 45617, 45665, 45809, 45857, 45905, 64, 64, 64, 64, 64, 45473, 45569, 45641, 64, 46097, 45713, 45593, 45833, 46121, 64, 46001, 46025, 46049, 45737, 45881, 45929, 45785, 45953, 45689, 45761, 45521, 45545, 45617, 45665, 45809, 45857, 45905, 64, 64, 64, 64, 64, 48290, 48314, 48338, 48362, 48386, 48410, 48434, 48458, 48482, 48506, 24, 24, 64, 64, 64, 48530, 48562, 48594, 48626, 48658, 48690, 48722, 48754, 48786, 48818, 48850, 48882, 48914, 48946, 48978, 49010, 49042, 49074, 49106, 49138, 49170, 49202, 49234, 49266, 49298, 49330, 49361, 4441, 617, 26225, 49425, 64, 57, 3817, 4441, 3833, 3849, 4505, 3889, 585, 3905, 601, 3921, 857, 3937, 3953, 217, 3993, 8249, 617, 473, 4009, 4025, 4233, 633, 873, 649, 5073, 49449, 26033, 49473, 5185, 49497, 49529, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 49553, 49577, 64, 64, 64, 64, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 49625, 49681, 49737, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 49769, 49801, 49833, 49865, 49897, 49929, 49961, 49993, 50025, 50057, 50089, 50121, 50153, 50185, 50217, 50249, 50281, 50313, 50345, 50377, 50409, 50441, 50473, 50505, 50537, 50569, 50601, 50633, 50665, 50697, 50729, 50761, 50793, 50825, 50857, 50889, 50921, 50953, 50985, 51017, 51049, 51081, 51113, 51145, 64, 64, 64, 64, 51961, 51993, 52025, 35613, 52057, 52089, 52121, 52153, 52185, 52217, 52249, 52281, 52313, 35645, 52345, 52377, 52409, 52441, 35677, 52473, 52505, 50217, 35709, 52537, 52569, 52601, 52633, 52665, 35741, 52697, 52729, 52761, 52793, 52825, 51081, 52857, 52889, 52921, 52953, 52985, 53017, 53049, 53081, 53113, 53145, 53177, 53209, 53241, 53273, 53305, 53305, 53305, 35773, 53337, 53369, 53401, 35805, 53433, 53465, 53497, 53529, 53561, 53593, 53625, 53657, 53689, 53721, 53753, 53785, 53817, 53817, 53849, 53881, 53913, 53945, 53977, 54009, 54041, 54073, 54105, 54137, 54169, 54201, 54233, 54265, 54297, 54329, 54361, 54393, 35837, 54425, 54457, 54489, 49929, 54521, 54553, 35869, 35901, 54585, 54617, 54649, 54681, 54713, 54745, 8256, 54777, 54809, 54809, 35933, 54841, 54873, 54905, 54937, 35965, 54969, 55001, 8256, 55033, 55065, 55097, 55129, 55161, 55193, 35997, 55225, 36029, 55257, 55289, 55321, 55353, 55385, 55417, 55449, 55481, 55513, 55545, 55577, 36061, 55609, 55641, 55673, 55705, 55737, 36093, 55769, 36125, 36157, 55801, 55833, 55833, 55865, 36189, 36221, 55897, 55929, 55961, 55993, 56025, 56057, 56089, 56121, 56153, 56185, 56217, 36253, 56249, 56281, 56313, 56345, 56313, 56377, 56409, 56441, 56473, 56505, 56537, 56569, 56601, 56633, 56665, 56697, 56729, 56761, 56793, 36285, 56825, 56857, 56889, 56921, 56953, 36317, 56985, 58777, 58809, 58841, 58873, 58905, 58937, 36605, 58969, 59001, 59033, 59065, 59097, 59129, 36637, 59161, 59193, 36669, 36701, 59225, 59257, 59289, 59321, 59353, 59385, 59417, 59449, 59481, 36733, 59513, 36765, 59545, 8256, 59577, 59609, 59641, 36797, 59673, 59705, 36829, 36861, 59737, 59769, 59801, 59833, 59865, 59865, 59897, 59929, 59961, 59993, 60025, 60057, 60089, 36893, 60121, 36925, 60153, 36957, 60185, 36989, 37021, 37053, 60217, 60249, 60281, 37085, 37117, 37149, 37181, 60313, 60345, 60345, 60377, 60409, 60441, 60473, 60505, 37213, 60537, 60569, 60601, 60633, 37245, 60665, 37277, 37309, 60697, 60729, 60761, 60793, 60825, 60857, 37341, 37373, 37405, 8256, 60889, 37437, 60921, 60953, 60985, 37469, 61017, 61049, 61081, 61113, 61145, 37501, 61177, 61209, 61241, 61273, 61305, 61337, 37533, 37565, 61369, 37597, 61401, 37629, 61433, 61465, 61497, 37661, 37693, 61529, 37725, 61561, 63161, 63193, 63225, 63257, 63289, 38173, 63321, 63353, 63385, 63417, 63449, 38205, 38237, 63481, 63513, 63545, 63577, 63609, 63641, 38269, 63673, 63705, 63737, 63769, 38301, 38333, 63801, 63833, 63865, 38365, 63897, 63929, 26645, 38397, 63961, 63993, 64025, 38429, 64057, 64089, 64121, 64153, 64185, 64217, 64249, 38461, 64281, 64313, 64345, 38493, 64377, 64409, 64441, 64473, 31541, 38525, 64505, 64537, 64569, 38557, 64601, 38589, 64633, 64633, 64665, 38621, 64697, 64729, 64761, 64793, 64825, 64857, 64889, 38653, 64921, 64953, 64985, 65017, 65049, 65081, 38685, 65113, 38717, 38749, 38781, 65145, 65177, 65209, 65241, 65273, 65305, 65337, 65369, 38813, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64]);
 92399  		idnaIndex = $toNativeArray($kindUint16, [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 125, 2, 3, 4, 5, 6, 126, 127, 7, 128, 8, 9, 10, 129, 11, 12, 13, 14, 130, 131, 132, 15, 16, 133, 17, 18, 134, 135, 136, 2, 3, 4, 5, 6, 7, 7, 7, 7, 8, 9, 7, 7, 10, 11, 12, 29, 30, 30, 32, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 137, 19, 138, 139, 140, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 141, 142, 30, 31, 32, 143, 33, 144, 145, 146, 147, 34, 148, 149, 35, 36, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 159, 159, 159, 159, 159, 159, 159, 159, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 37, 38, 39, 195, 40, 40, 41, 40, 196, 42, 43, 44, 45, 46, 47, 197, 48, 49, 198, 155, 199, 200, 155, 155, 201, 155, 155, 155, 202, 50, 51, 52, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 203, 204, 155, 205, 155, 206, 207, 208, 209, 53, 40, 54, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 55, 56, 221, 222, 223, 224, 57, 58, 225, 226, 59, 60, 61, 62, 63, 64, 65, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 178, 155, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 227, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 228, 229, 159, 159, 159, 159, 230, 66, 67, 231, 68, 69, 70, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 249, 250, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 251, 252, 253, 254, 71, 255, 256, 72, 73, 74, 75, 76, 257, 77, 78, 79, 80, 81, 258, 82, 83, 84, 85, 86, 87, 88, 89, 90, 259, 260, 159, 261, 262, 155, 263, 264, 186, 186, 265, 266, 267, 268, 269, 270, 271, 159, 272, 273, 274, 275, 186, 186, 159, 159, 159, 159, 276, 277, 186, 186, 278, 279, 280, 281, 282, 186, 283, 284, 285, 286, 287, 91, 288, 289, 92, 186, 290, 291, 292, 293, 186, 186, 186, 186, 186, 294, 186, 186, 186, 186, 186, 186, 295, 296, 297, 298, 299, 300, 301, 302, 303, 186, 304, 305, 93, 94, 186, 186, 306, 307, 308, 309, 186, 186, 310, 311, 312, 313, 314, 315, 316, 186, 186, 186, 186, 186, 317, 318, 186, 186, 186, 186, 319, 320, 321, 322, 186, 186, 186, 186, 323, 324, 325, 186, 326, 327, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 328, 186, 155, 329, 159, 159, 159, 330, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 331, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 159, 159, 159, 159, 159, 159, 159, 159, 159, 332, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 159, 159, 159, 159, 159, 159, 159, 159, 322, 333, 186, 334, 335, 336, 337, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 159, 338, 339, 340, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 341, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 342, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 159, 159, 159, 159, 343, 344, 159, 159, 159, 159, 159, 345, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 159, 346, 347, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 155, 155, 155, 348, 349, 350, 351, 352, 155, 353, 186, 186, 155, 354, 186, 186, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 155, 155, 155, 155, 155, 155, 155, 155, 355, 356, 357, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 358, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 290, 290, 290, 359, 111, 360, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 112, 113, 114, 361, 186, 186, 186, 186, 362, 155, 363, 364, 115, 116, 365, 366, 117, 367, 186, 186, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 368, 155, 369, 155, 370, 371, 372, 373, 186, 374, 375, 376, 377, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 378, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 379, 159, 159, 159, 380, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 381, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 382, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 118, 119, 120, 383, 121, 122, 384, 123, 124, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 14, 15, 16, 17, 11, 18, 7, 19, 11, 11, 20, 11, 21, 22, 23, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 24, 25, 26, 7, 27, 28, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 385, 386, 186, 186, 387, 387, 387, 388, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 31, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]);
 92400  		idnaSparseOffset = new sliceType([0, 8, 25, 37, 39, 44, 52, 63, 75, 79, 94, 99, 107, 119, 133, 138, 147, 163, 177, 189, 201, 218, 228, 235, 248, 265, 272, 283, 298, 312, 322, 324, 329, 332, 335, 337, 349, 360, 368, 374, 380, 385, 390, 393, 397, 403, 408, 420, 430, 436, 453, 463, 466, 474, 477, 490, 498, 502, 509, 517, 533, 545, 547, 557, 569, 581, 593, 601, 606, 616, 633, 637, 648, 652, 661, 669, 675, 680, 683, 687, 693, 697, 701, 707, 714, 720, 728, 735, 746, 756, 760, 763, 769, 773, 775, 778, 780, 783, 793, 796, 811, 815, 820, 823, 827, 832, 837, 843, 849, 864, 870, 874, 889, 894, 902, 912, 923, 931, 948, 957, 973, 986, 996, 1001, 1014, 1018, 1023, 1025, 1029, 1031, 1035, 1044, 1050, 1054, 1070, 1080, 1085, 1088, 1094, 1101, 1106, 1110, 1116, 1121, 1130, 1135, 1141, 1148, 1155, 1162, 1166, 1171, 1174, 1179, 1191, 1197, 1202, 1209, 1217, 1222, 1226, 1242, 1249, 1253, 1257, 1264, 1266, 1269, 1272, 1276, 1280, 1286, 1295, 1307, 1314, 1323, 1331, 1338, 1352, 1365, 1378, 1387, 1391, 1405, 1413, 1424, 1433, 1439, 1447, 1456, 1466, 1469, 1481, 1484, 1489, 1502, 1511, 1523, 1526, 1536, 1545, 1557, 1570, 1578, 1581, 1586, 1589, 1592, 1595, 1602, 1609, 1613, 1624, 1627, 1633, 1638, 1642, 1645, 1648, 1651, 1654, 1657, 1662, 1672, 1675, 1679, 1694, 1706, 1710, 1715, 1720, 1724, 1729, 1738, 1749, 1755, 1763, 1767, 1771, 1777, 1783, 1788, 1791, 1807, 1814, 1817, 1820, 1824, 1830, 1835, 1840, 1845, 1848, 1853, 1856, 1859, 1863, 1867, 1870, 1886, 1903, 1908, 1910, 1912]);
 92401  		idnaSparseValues = $toNativeArray($kindStruct, [new valueRange.ptr(0, 7, 0), new valueRange.ptr(57605, 128, 150), new valueRange.ptr(24, 151, 151), new valueRange.ptr(57605, 152, 158), new valueRange.ptr(31, 159, 159), new valueRange.ptr(8, 160, 182), new valueRange.ptr(24, 183, 183), new valueRange.ptr(8, 184, 191), new valueRange.ptr(0, 16, 0), new valueRange.ptr(8, 128, 128), new valueRange.ptr(57373, 129, 129), new valueRange.ptr(8, 130, 130), new valueRange.ptr(821, 131, 131), new valueRange.ptr(845, 132, 132), new valueRange.ptr(869, 133, 133), new valueRange.ptr(57357, 134, 134), new valueRange.ptr(8, 135, 135), new valueRange.ptr(57357, 136, 136), new valueRange.ptr(8, 137, 137), new valueRange.ptr(57357, 138, 138), new valueRange.ptr(8, 139, 139), new valueRange.ptr(57357, 140, 140), new valueRange.ptr(8, 141, 141), new valueRange.ptr(57357, 142, 142), new valueRange.ptr(8, 143, 191), new valueRange.ptr(0, 11, 0), new valueRange.ptr(8, 128, 175), new valueRange.ptr(585, 176, 176), new valueRange.ptr(893, 177, 177), new valueRange.ptr(601, 178, 178), new valueRange.ptr(617, 179, 179), new valueRange.ptr(845, 180, 180), new valueRange.ptr(917, 181, 181), new valueRange.ptr(57789, 182, 182), new valueRange.ptr(633, 183, 183), new valueRange.ptr(649, 184, 184), new valueRange.ptr(8, 185, 191), new valueRange.ptr(0, 1, 0), new valueRange.ptr(13064, 128, 191), new valueRange.ptr(0, 4, 0), new valueRange.ptr(1013, 128, 143), new valueRange.ptr(57605, 144, 159), new valueRange.ptr(1181, 160, 175), new valueRange.ptr(8, 176, 191), new valueRange.ptr(0, 7, 0), new valueRange.ptr(57733, 128, 143), new valueRange.ptr(1349, 144, 150), new valueRange.ptr(64, 151, 152), new valueRange.ptr(8, 153, 153), new valueRange.ptr(24, 154, 159), new valueRange.ptr(64, 160, 160), new valueRange.ptr(8, 161, 191), new valueRange.ptr(0, 10, 0), new valueRange.ptr(8, 128, 134), new valueRange.ptr(1025, 135, 135), new valueRange.ptr(64, 136, 136), new valueRange.ptr(24, 137, 138), new valueRange.ptr(64, 139, 140), new valueRange.ptr(24, 141, 143), new valueRange.ptr(64, 144, 144), new valueRange.ptr(13064, 145, 189), new valueRange.ptr(2072, 190, 190), new valueRange.ptr(13064, 191, 191), new valueRange.ptr(0, 11, 0), new valueRange.ptr(2072, 128, 128), new valueRange.ptr(13064, 129, 130), new valueRange.ptr(2072, 131, 131), new valueRange.ptr(13064, 132, 133), new valueRange.ptr(2072, 134, 134), new valueRange.ptr(13064, 135, 135), new valueRange.ptr(64, 136, 143), new valueRange.ptr(2056, 144, 170), new valueRange.ptr(64, 171, 175), new valueRange.ptr(2056, 176, 180), new valueRange.ptr(64, 181, 191), new valueRange.ptr(0, 3, 0), new valueRange.ptr(2568, 128, 135), new valueRange.ptr(3080, 136, 153), new valueRange.ptr(2568, 154, 191), new valueRange.ptr(0, 14, 0), new valueRange.ptr(13064, 128, 138), new valueRange.ptr(64, 139, 140), new valueRange.ptr(3080, 141, 141), new valueRange.ptr(2568, 142, 152), new valueRange.ptr(3080, 153, 155), new valueRange.ptr(2568, 156, 170), new valueRange.ptr(3080, 171, 172), new valueRange.ptr(2568, 173, 176), new valueRange.ptr(3080, 177, 177), new valueRange.ptr(2568, 178, 178), new valueRange.ptr(3080, 179, 180), new valueRange.ptr(2568, 181, 183), new valueRange.ptr(3080, 184, 185), new valueRange.ptr(2568, 186, 191), new valueRange.ptr(0, 4, 0), new valueRange.ptr(2056, 128, 165), new valueRange.ptr(13064, 166, 176), new valueRange.ptr(2056, 177, 177), new valueRange.ptr(64, 178, 191), new valueRange.ptr(0, 7, 0), new valueRange.ptr(2056, 128, 137), new valueRange.ptr(2568, 138, 170), new valueRange.ptr(13064, 171, 179), new valueRange.ptr(2056, 180, 181), new valueRange.ptr(24, 182, 185), new valueRange.ptr(2072, 186, 186), new valueRange.ptr(64, 187, 191), new valueRange.ptr(0, 11, 0), new valueRange.ptr(2056, 128, 149), new valueRange.ptr(13064, 150, 153), new valueRange.ptr(2056, 154, 154), new valueRange.ptr(13064, 155, 163), new valueRange.ptr(2056, 164, 164), new valueRange.ptr(13064, 165, 167), new valueRange.ptr(2056, 168, 168), new valueRange.ptr(13064, 169, 173), new valueRange.ptr(64, 174, 175), new valueRange.ptr(2072, 176, 190), new valueRange.ptr(64, 191, 191), new valueRange.ptr(0, 13, 0), new valueRange.ptr(64, 128, 159), new valueRange.ptr(2568, 160, 169), new valueRange.ptr(3080, 170, 172), new valueRange.ptr(2056, 173, 173), new valueRange.ptr(3080, 174, 174), new valueRange.ptr(2568, 175, 176), new valueRange.ptr(3080, 177, 178), new valueRange.ptr(2568, 179, 180), new valueRange.ptr(64, 181, 181), new valueRange.ptr(2568, 182, 184), new valueRange.ptr(3080, 185, 185), new valueRange.ptr(2568, 186, 189), new valueRange.ptr(64, 190, 191), new valueRange.ptr(0, 4, 0), new valueRange.ptr(64, 128, 147), new valueRange.ptr(13064, 148, 161), new valueRange.ptr(2112, 162, 162), new valueRange.ptr(13064, 163, 191), new valueRange.ptr(0, 8, 0), new valueRange.ptr(13064, 128, 130), new valueRange.ptr(12296, 131, 131), new valueRange.ptr(8, 132, 185), new valueRange.ptr(13064, 186, 186), new valueRange.ptr(12296, 187, 187), new valueRange.ptr(13064, 188, 188), new valueRange.ptr(8, 189, 189), new valueRange.ptr(12296, 190, 191), new valueRange.ptr(0, 15, 0), new valueRange.ptr(13064, 128, 128), new valueRange.ptr(12296, 129, 130), new valueRange.ptr(64, 131, 133), new valueRange.ptr(12296, 134, 136), new valueRange.ptr(64, 137, 137), new valueRange.ptr(12296, 138, 140), new valueRange.ptr(15112, 141, 141), new valueRange.ptr(64, 142, 143), new valueRange.ptr(8, 144, 144), new valueRange.ptr(64, 145, 150), new valueRange.ptr(12296, 151, 151), new valueRange.ptr(64, 152, 165), new valueRange.ptr(8, 166, 175), new valueRange.ptr(24, 176, 186), new valueRange.ptr(64, 187, 191), new valueRange.ptr(0, 13, 0), new valueRange.ptr(13064, 128, 128), new valueRange.ptr(12296, 129, 131), new valueRange.ptr(64, 132, 132), new valueRange.ptr(8, 133, 140), new valueRange.ptr(64, 141, 141), new valueRange.ptr(8, 142, 144), new valueRange.ptr(64, 145, 145), new valueRange.ptr(8, 146, 168), new valueRange.ptr(64, 169, 169), new valueRange.ptr(8, 170, 185), new valueRange.ptr(64, 186, 188), new valueRange.ptr(8, 189, 189), new valueRange.ptr(13064, 190, 191), new valueRange.ptr(0, 11, 0), new valueRange.ptr(13064, 128, 129), new valueRange.ptr(12296, 130, 131), new valueRange.ptr(64, 132, 132), new valueRange.ptr(8, 133, 140), new valueRange.ptr(64, 141, 141), new valueRange.ptr(8, 142, 144), new valueRange.ptr(64, 145, 145), new valueRange.ptr(8, 146, 186), new valueRange.ptr(15112, 187, 188), new valueRange.ptr(8, 189, 189), new valueRange.ptr(12296, 190, 191), new valueRange.ptr(0, 11, 0), new valueRange.ptr(64, 128, 129), new valueRange.ptr(12296, 130, 131), new valueRange.ptr(64, 132, 132), new valueRange.ptr(8, 133, 150), new valueRange.ptr(64, 151, 153), new valueRange.ptr(8, 154, 177), new valueRange.ptr(64, 178, 178), new valueRange.ptr(8, 179, 187), new valueRange.ptr(64, 188, 188), new valueRange.ptr(8, 189, 189), new valueRange.ptr(64, 190, 191), new valueRange.ptr(0, 16, 0), new valueRange.ptr(8, 128, 134), new valueRange.ptr(64, 135, 137), new valueRange.ptr(15112, 138, 138), new valueRange.ptr(64, 139, 142), new valueRange.ptr(12296, 143, 145), new valueRange.ptr(13064, 146, 148), new valueRange.ptr(64, 149, 149), new valueRange.ptr(13064, 150, 150), new valueRange.ptr(64, 151, 151), new valueRange.ptr(12296, 152, 159), new valueRange.ptr(64, 160, 165), new valueRange.ptr(8, 166, 175), new valueRange.ptr(64, 176, 177), new valueRange.ptr(12296, 178, 179), new valueRange.ptr(24, 180, 180), new valueRange.ptr(64, 181, 191), new valueRange.ptr(0, 9, 0), new valueRange.ptr(64, 128, 128), new valueRange.ptr(8, 129, 176), new valueRange.ptr(13064, 177, 177), new valueRange.ptr(8, 178, 178), new valueRange.ptr(2289, 179, 179), new valueRange.ptr(13064, 180, 185), new valueRange.ptr(15112, 186, 186), new valueRange.ptr(64, 187, 190), new valueRange.ptr(24, 191, 191), new valueRange.ptr(0, 6, 0), new valueRange.ptr(8, 128, 134), new valueRange.ptr(13064, 135, 142), new valueRange.ptr(24, 143, 143), new valueRange.ptr(8, 144, 153), new valueRange.ptr(24, 154, 155), new valueRange.ptr(64, 156, 191), new valueRange.ptr(0, 12, 0), new valueRange.ptr(8, 128, 132), new valueRange.ptr(64, 133, 133), new valueRange.ptr(8, 134, 134), new valueRange.ptr(64, 135, 135), new valueRange.ptr(13064, 136, 141), new valueRange.ptr(64, 142, 143), new valueRange.ptr(8, 144, 153), new valueRange.ptr(64, 154, 155), new valueRange.ptr(2401, 156, 156), new valueRange.ptr(2457, 157, 157), new valueRange.ptr(8, 158, 159), new valueRange.ptr(64, 160, 191), new valueRange.ptr(0, 16, 0), new valueRange.ptr(8, 128, 128), new valueRange.ptr(24, 129, 138), new valueRange.ptr(8, 139, 139), new valueRange.ptr(57405, 140, 140), new valueRange.ptr(24, 141, 151), new valueRange.ptr(13064, 152, 153), new valueRange.ptr(24, 154, 159), new valueRange.ptr(8, 160, 169), new valueRange.ptr(24, 170, 180), new valueRange.ptr(13064, 181, 181), new valueRange.ptr(24, 182, 182), new valueRange.ptr(13064, 183, 183), new valueRange.ptr(24, 184, 184), new valueRange.ptr(13064, 185, 185), new valueRange.ptr(24, 186, 189), new valueRange.ptr(12296, 190, 191), new valueRange.ptr(0, 6, 0), new valueRange.ptr(24, 128, 133), new valueRange.ptr(13064, 134, 134), new valueRange.ptr(24, 135, 140), new valueRange.ptr(64, 141, 141), new valueRange.ptr(24, 142, 154), new valueRange.ptr(64, 155, 191), new valueRange.ptr(0, 10, 0), new valueRange.ptr(8, 128, 170), new valueRange.ptr(12296, 171, 172), new valueRange.ptr(13064, 173, 176), new valueRange.ptr(12296, 177, 177), new valueRange.ptr(13064, 178, 183), new valueRange.ptr(12296, 184, 184), new valueRange.ptr(15112, 185, 186), new valueRange.ptr(12296, 187, 188), new valueRange.ptr(13064, 189, 190), new valueRange.ptr(8, 191, 191), new valueRange.ptr(0, 14, 0), new valueRange.ptr(8, 128, 137), new valueRange.ptr(24, 138, 143), new valueRange.ptr(8, 144, 149), new valueRange.ptr(12296, 150, 151), new valueRange.ptr(13064, 152, 153), new valueRange.ptr(8, 154, 157), new valueRange.ptr(13064, 158, 160), new valueRange.ptr(8, 161, 161), new valueRange.ptr(12296, 162, 164), new valueRange.ptr(8, 165, 166), new valueRange.ptr(12296, 167, 173), new valueRange.ptr(8, 174, 176), new valueRange.ptr(13064, 177, 180), new valueRange.ptr(8, 181, 191), new valueRange.ptr(0, 13, 0), new valueRange.ptr(8, 128, 129), new valueRange.ptr(13064, 130, 130), new valueRange.ptr(12296, 131, 132), new valueRange.ptr(13064, 133, 134), new valueRange.ptr(12296, 135, 140), new valueRange.ptr(13064, 141, 141), new valueRange.ptr(8, 142, 142), new valueRange.ptr(12296, 143, 143), new valueRange.ptr(8, 144, 153), new valueRange.ptr(12296, 154, 156), new valueRange.ptr(13064, 157, 157), new valueRange.ptr(24, 158, 159), new valueRange.ptr(64, 160, 191), new valueRange.ptr(0, 9, 0), new valueRange.ptr(64, 128, 134), new valueRange.ptr(1373, 135, 135), new valueRange.ptr(64, 136, 140), new valueRange.ptr(1373, 141, 141), new valueRange.ptr(64, 142, 143), new valueRange.ptr(8, 144, 186), new valueRange.ptr(24, 187, 187), new valueRange.ptr(57605, 188, 188), new valueRange.ptr(8, 189, 191), new valueRange.ptr(0, 1, 0), new valueRange.ptr(24, 128, 191), new valueRange.ptr(0, 4, 0), new valueRange.ptr(24, 128, 158), new valueRange.ptr(64, 159, 160), new valueRange.ptr(8216, 161, 181), new valueRange.ptr(24, 182, 191), new valueRange.ptr(0, 2, 0), new valueRange.ptr(24, 128, 167), new valueRange.ptr(8216, 168, 191), new valueRange.ptr(0, 2, 0), new valueRange.ptr(8216, 128, 130), new valueRange.ptr(24, 131, 191), new valueRange.ptr(0, 1, 0), new valueRange.ptr(8, 128, 191), new valueRange.ptr(0, 11, 0), new valueRange.ptr(8, 128, 136), new valueRange.ptr(64, 137, 137), new valueRange.ptr(8, 138, 141), new valueRange.ptr(64, 142, 143), new valueRange.ptr(8, 144, 150), new valueRange.ptr(64, 151, 151), new valueRange.ptr(8, 152, 152), new valueRange.ptr(64, 153, 153), new valueRange.ptr(8, 154, 157), new valueRange.ptr(64, 158, 159), new valueRange.ptr(8, 160, 191), new valueRange.ptr(0, 10, 0), new valueRange.ptr(8, 128, 136), new valueRange.ptr(64, 137, 137), new valueRange.ptr(8, 138, 141), new valueRange.ptr(64, 142, 143), new valueRange.ptr(8, 144, 176), new valueRange.ptr(64, 177, 177), new valueRange.ptr(8, 178, 181), new valueRange.ptr(64, 182, 183), new valueRange.ptr(8, 184, 190), new valueRange.ptr(64, 191, 191), new valueRange.ptr(0, 7, 0), new valueRange.ptr(8, 128, 128), new valueRange.ptr(64, 129, 129), new valueRange.ptr(8, 130, 133), new valueRange.ptr(64, 134, 135), new valueRange.ptr(8, 136, 150), new valueRange.ptr(64, 151, 151), new valueRange.ptr(8, 152, 191), new valueRange.ptr(0, 5, 0), new valueRange.ptr(8, 128, 144), new valueRange.ptr(64, 145, 145), new valueRange.ptr(8, 146, 149), new valueRange.ptr(64, 150, 151), new valueRange.ptr(8, 152, 191), new valueRange.ptr(0, 5, 0), new valueRange.ptr(8, 128, 154), new valueRange.ptr(64, 155, 156), new valueRange.ptr(13064, 157, 159), new valueRange.ptr(24, 160, 188), new valueRange.ptr(64, 189, 191), new valueRange.ptr(0, 4, 0), new valueRange.ptr(8, 128, 143), new valueRange.ptr(24, 144, 153), new valueRange.ptr(64, 154, 159), new valueRange.ptr(8, 160, 191), new valueRange.ptr(0, 4, 0), new valueRange.ptr(8, 128, 181), new valueRange.ptr(64, 182, 183), new valueRange.ptr(57413, 184, 189), new valueRange.ptr(64, 190, 191), new valueRange.ptr(0, 2, 0), new valueRange.ptr(24, 128, 128), new valueRange.ptr(8, 129, 191), new valueRange.ptr(0, 3, 0), new valueRange.ptr(8, 128, 172), new valueRange.ptr(24, 173, 174), new valueRange.ptr(8, 175, 191), new valueRange.ptr(0, 5, 0), new valueRange.ptr(64, 128, 128), new valueRange.ptr(8, 129, 154), new valueRange.ptr(24, 155, 156), new valueRange.ptr(64, 157, 159), new valueRange.ptr(8, 160, 191), new valueRange.ptr(0, 4, 0), new valueRange.ptr(8, 128, 170), new valueRange.ptr(24, 171, 176), new valueRange.ptr(8, 177, 184), new valueRange.ptr(64, 185, 191), new valueRange.ptr(0, 11, 0), new valueRange.ptr(8, 128, 140), new valueRange.ptr(64, 141, 141), new valueRange.ptr(8, 142, 145), new valueRange.ptr(13064, 146, 147), new valueRange.ptr(15112, 148, 148), new valueRange.ptr(64, 149, 159), new valueRange.ptr(8, 160, 177), new valueRange.ptr(13064, 178, 179), new valueRange.ptr(15112, 180, 180), new valueRange.ptr(24, 181, 182), new valueRange.ptr(64, 183, 191), new valueRange.ptr(0, 9, 0), new valueRange.ptr(8, 128, 145), new valueRange.ptr(13064, 146, 147), new valueRange.ptr(64, 148, 159), new valueRange.ptr(8, 160, 172), new valueRange.ptr(64, 173, 173), new valueRange.ptr(8, 174, 176), new valueRange.ptr(64, 177, 177), new valueRange.ptr(13064, 178, 179), new valueRange.ptr(64, 180, 191), new valueRange.ptr(0, 5, 0), new valueRange.ptr(8, 128, 179), new valueRange.ptr(13120, 180, 181), new valueRange.ptr(12296, 182, 182), new valueRange.ptr(13064, 183, 189), new valueRange.ptr(12296, 190, 191), new valueRange.ptr(0, 16, 0), new valueRange.ptr(12296, 128, 133), new valueRange.ptr(13064, 134, 134), new valueRange.ptr(12296, 135, 136), new valueRange.ptr(13064, 137, 145), new valueRange.ptr(15112, 146, 146), new valueRange.ptr(13064, 147, 147), new valueRange.ptr(24, 148, 150), new valueRange.ptr(8, 151, 151), new valueRange.ptr(24, 152, 155), new valueRange.ptr(8, 156, 156), new valueRange.ptr(13064, 157, 157), new valueRange.ptr(64, 158, 159), new valueRange.ptr(8, 160, 169), new valueRange.ptr(64, 170, 175), new valueRange.ptr(24, 176, 185), new valueRange.ptr(64, 186, 191), new valueRange.ptr(0, 9, 0), new valueRange.ptr(24, 128, 133), new valueRange.ptr(64, 134, 134), new valueRange.ptr(536, 135, 135), new valueRange.ptr(24, 136, 138), new valueRange.ptr(13248, 139, 141), new valueRange.ptr(64, 142, 143), new valueRange.ptr(8, 144, 153), new valueRange.ptr(64, 154, 159), new valueRange.ptr(520, 160, 191), new valueRange.ptr(0, 2, 0), new valueRange.ptr(520, 128, 183), new valueRange.ptr(64, 184, 191), new valueRange.ptr(0, 7, 0), new valueRange.ptr(8, 128, 132), new valueRange.ptr(13064, 133, 134), new valueRange.ptr(520, 135, 168), new valueRange.ptr(13064, 169, 169), new valueRange.ptr(520, 170, 170), new valueRange.ptr(64, 171, 175), new valueRange.ptr(8, 176, 191), new valueRange.ptr(0, 2, 0), new valueRange.ptr(8, 128, 181), new valueRange.ptr(64, 182, 191), new valueRange.ptr(0, 12, 0), new valueRange.ptr(8, 128, 158), new valueRange.ptr(64, 159, 159), new valueRange.ptr(13064, 160, 162), new valueRange.ptr(12296, 163, 166), new valueRange.ptr(13064, 167, 168), new valueRange.ptr(12296, 169, 171), new valueRange.ptr(64, 172, 175), new valueRange.ptr(12296, 176, 177), new valueRange.ptr(13064, 178, 178), new valueRange.ptr(12296, 179, 184), new valueRange.ptr(13064, 185, 187), new valueRange.ptr(64, 188, 191), new valueRange.ptr(0, 7, 0), new valueRange.ptr(24, 128, 128), new valueRange.ptr(64, 129, 131), new valueRange.ptr(24, 132, 133), new valueRange.ptr(8, 134, 173), new valueRange.ptr(64, 174, 175), new valueRange.ptr(8, 176, 180), new valueRange.ptr(64, 181, 191), new valueRange.ptr(0, 3, 0), new valueRange.ptr(8, 128, 171), new valueRange.ptr(64, 172, 175), new valueRange.ptr(8, 176, 191), new valueRange.ptr(0, 6, 0), new valueRange.ptr(8, 128, 137), new valueRange.ptr(64, 138, 143), new valueRange.ptr(8, 144, 153), new valueRange.ptr(40, 154, 154), new valueRange.ptr(64, 155, 157), new valueRange.ptr(24, 158, 191), new valueRange.ptr(0, 7, 0), new valueRange.ptr(8, 128, 150), new valueRange.ptr(13064, 151, 152), new valueRange.ptr(12296, 153, 154), new valueRange.ptr(13064, 155, 155), new valueRange.ptr(64, 156, 157), new valueRange.ptr(24, 158, 159), new valueRange.ptr(8, 160, 191), new valueRange.ptr(0, 15, 0), new valueRange.ptr(8, 128, 148), new valueRange.ptr(12296, 149, 149), new valueRange.ptr(13064, 150, 150), new valueRange.ptr(12296, 151, 151), new valueRange.ptr(13064, 152, 158), new valueRange.ptr(64, 159, 159), new valueRange.ptr(15112, 160, 160), new valueRange.ptr(12296, 161, 161), new valueRange.ptr(13064, 162, 162), new valueRange.ptr(12296, 163, 164), new valueRange.ptr(13064, 165, 172), new valueRange.ptr(12296, 173, 178), new valueRange.ptr(13064, 179, 188), new valueRange.ptr(64, 189, 190), new valueRange.ptr(13064, 191, 191), new valueRange.ptr(0, 11, 0), new valueRange.ptr(8, 128, 137), new valueRange.ptr(64, 138, 143), new valueRange.ptr(8, 144, 153), new valueRange.ptr(64, 154, 159), new valueRange.ptr(24, 160, 166), new valueRange.ptr(8, 167, 167), new valueRange.ptr(24, 168, 173), new valueRange.ptr(64, 174, 175), new valueRange.ptr(13064, 176, 189), new valueRange.ptr(13080, 190, 190), new valueRange.ptr(64, 191, 191), new valueRange.ptr(0, 1, 0), new valueRange.ptr(64, 128, 191), new valueRange.ptr(0, 9, 0), new valueRange.ptr(13064, 128, 131), new valueRange.ptr(12296, 132, 132), new valueRange.ptr(8, 133, 179), new valueRange.ptr(13064, 180, 180), new valueRange.ptr(12296, 181, 181), new valueRange.ptr(13064, 182, 186), new valueRange.ptr(12296, 187, 187), new valueRange.ptr(13064, 188, 188), new valueRange.ptr(12296, 189, 191), new valueRange.ptr(0, 11, 0), new valueRange.ptr(12296, 128, 129), new valueRange.ptr(13064, 130, 130), new valueRange.ptr(12296, 131, 131), new valueRange.ptr(14344, 132, 132), new valueRange.ptr(8, 133, 139), new valueRange.ptr(64, 140, 143), new valueRange.ptr(8, 144, 153), new valueRange.ptr(24, 154, 170), new valueRange.ptr(13064, 171, 179), new valueRange.ptr(24, 180, 188), new valueRange.ptr(64, 189, 191), new valueRange.ptr(0, 11, 0), new valueRange.ptr(13064, 128, 129), new valueRange.ptr(12296, 130, 130), new valueRange.ptr(8, 131, 160), new valueRange.ptr(12296, 161, 161), new valueRange.ptr(13064, 162, 165), new valueRange.ptr(12296, 166, 167), new valueRange.ptr(13064, 168, 169), new valueRange.ptr(14344, 170, 170), new valueRange.ptr(15112, 171, 171), new valueRange.ptr(13064, 172, 173), new valueRange.ptr(8, 174, 191), new valueRange.ptr(0, 11, 0), new valueRange.ptr(8, 128, 165), new valueRange.ptr(13064, 166, 166), new valueRange.ptr(12296, 167, 167), new valueRange.ptr(13064, 168, 169), new valueRange.ptr(12296, 170, 172), new valueRange.ptr(13064, 173, 173), new valueRange.ptr(12296, 174, 174), new valueRange.ptr(13064, 175, 177), new valueRange.ptr(14344, 178, 179), new valueRange.ptr(64, 180, 187), new valueRange.ptr(24, 188, 191), new valueRange.ptr(0, 7, 0), new valueRange.ptr(8, 128, 163), new valueRange.ptr(12296, 164, 171), new valueRange.ptr(13064, 172, 179), new valueRange.ptr(12296, 180, 181), new valueRange.ptr(13064, 182, 183), new valueRange.ptr(64, 184, 186), new valueRange.ptr(24, 187, 191), new valueRange.ptr(0, 4, 0), new valueRange.ptr(8, 128, 137), new valueRange.ptr(64, 138, 140), new valueRange.ptr(8, 141, 189), new valueRange.ptr(24, 190, 191), new valueRange.ptr(0, 9, 0), new valueRange.ptr(3625, 128, 128), new valueRange.ptr(3649, 129, 129), new valueRange.ptr(3673, 130, 130), new valueRange.ptr(3697, 131, 131), new valueRange.ptr(3721, 132, 133), new valueRange.ptr(3745, 134, 134), new valueRange.ptr(3769, 135, 135), new valueRange.ptr(1405, 136, 136), new valueRange.ptr(64, 137, 191), new valueRange.ptr(0, 16, 0), new valueRange.ptr(24, 128, 135), new valueRange.ptr(64, 136, 143), new valueRange.ptr(13064, 144, 146), new valueRange.ptr(24, 147, 147), new valueRange.ptr(13064, 148, 160), new valueRange.ptr(12296, 161, 161), new valueRange.ptr(13064, 162, 168), new valueRange.ptr(8, 169, 172), new valueRange.ptr(13064, 173, 173), new valueRange.ptr(8, 174, 177), new valueRange.ptr(12296, 178, 179), new valueRange.ptr(13064, 180, 180), new valueRange.ptr(8, 181, 182), new valueRange.ptr(12296, 183, 183), new valueRange.ptr(13064, 184, 185), new valueRange.ptr(64, 186, 191), new valueRange.ptr(0, 3, 0), new valueRange.ptr(13064, 128, 185), new valueRange.ptr(64, 186, 186), new valueRange.ptr(13064, 187, 191), new valueRange.ptr(0, 10, 0), new valueRange.ptr(8, 128, 135), new valueRange.ptr(57413, 136, 143), new valueRange.ptr(8, 144, 149), new valueRange.ptr(64, 150, 151), new valueRange.ptr(57413, 152, 157), new valueRange.ptr(64, 158, 159), new valueRange.ptr(8, 160, 167), new valueRange.ptr(57413, 168, 175), new valueRange.ptr(8, 176, 183), new valueRange.ptr(57413, 184, 191), new valueRange.ptr(0, 3, 0), new valueRange.ptr(64, 128, 143), new valueRange.ptr(13080, 144, 176), new valueRange.ptr(64, 177, 191), new valueRange.ptr(0, 8, 0), new valueRange.ptr(24, 128, 130), new valueRange.ptr(64, 131, 131), new valueRange.ptr(8, 132, 132), new valueRange.ptr(24, 133, 136), new valueRange.ptr(9409, 137, 137), new valueRange.ptr(24, 138, 139), new valueRange.ptr(64, 140, 143), new valueRange.ptr(24, 144, 191), new valueRange.ptr(0, 7, 0), new valueRange.ptr(24, 128, 171), new valueRange.ptr(9457, 172, 172), new valueRange.ptr(9513, 173, 173), new valueRange.ptr(24, 174, 174), new valueRange.ptr(9593, 175, 175), new valueRange.ptr(9649, 176, 176), new valueRange.ptr(24, 177, 191), new valueRange.ptr(0, 5, 0), new valueRange.ptr(24, 128, 159), new valueRange.ptr(128, 160, 160), new valueRange.ptr(24, 161, 173), new valueRange.ptr(128, 174, 175), new valueRange.ptr(24, 176, 191), new valueRange.ptr(0, 4, 0), new valueRange.ptr(24, 128, 168), new valueRange.ptr(2501, 169, 169), new valueRange.ptr(2533, 170, 170), new valueRange.ptr(24, 171, 191), new valueRange.ptr(0, 2, 0), new valueRange.ptr(24, 128, 166), new valueRange.ptr(64, 167, 191), new valueRange.ptr(0, 3, 0), new valueRange.ptr(24, 128, 139), new valueRange.ptr(10433, 140, 140), new valueRange.ptr(24, 141, 191), new valueRange.ptr(0, 5, 0), new valueRange.ptr(24, 128, 179), new valueRange.ptr(3686, 180, 180), new valueRange.ptr(10538, 181, 181), new valueRange.ptr(3718, 182, 182), new valueRange.ptr(24, 183, 191), new valueRange.ptr(0, 3, 0), new valueRange.ptr(24, 128, 155), new valueRange.ptr(10561, 156, 156), new valueRange.ptr(24, 157, 191), new valueRange.ptr(0, 3, 0), new valueRange.ptr(24, 128, 179), new valueRange.ptr(64, 180, 181), new valueRange.ptr(24, 182, 191), new valueRange.ptr(0, 5, 0), new valueRange.ptr(24, 128, 149), new valueRange.ptr(64, 150, 151), new valueRange.ptr(24, 152, 185), new valueRange.ptr(64, 186, 188), new valueRange.ptr(24, 189, 191), new valueRange.ptr(0, 6, 0), new valueRange.ptr(24, 128, 136), new valueRange.ptr(64, 137, 137), new valueRange.ptr(24, 138, 146), new valueRange.ptr(64, 147, 171), new valueRange.ptr(24, 172, 175), new valueRange.ptr(64, 176, 191), new valueRange.ptr(0, 5, 0), new valueRange.ptr(57733, 128, 143), new valueRange.ptr(1013, 144, 159), new valueRange.ptr(3749, 160, 174), new valueRange.ptr(64, 175, 175), new valueRange.ptr(8, 176, 191), new valueRange.ptr(0, 7, 0), new valueRange.ptr(8, 128, 165), new valueRange.ptr(64, 166, 166), new valueRange.ptr(8, 167, 167), new valueRange.ptr(64, 168, 172), new valueRange.ptr(8, 173, 173), new valueRange.ptr(64, 174, 175), new valueRange.ptr(8, 176, 191), new valueRange.ptr(0, 6, 0), new valueRange.ptr(8, 128, 167), new valueRange.ptr(64, 168, 174), new valueRange.ptr(57461, 175, 175), new valueRange.ptr(24, 176, 176), new valueRange.ptr(64, 177, 190), new valueRange.ptr(15112, 191, 191), new valueRange.ptr(0, 10, 0), new valueRange.ptr(8, 128, 150), new valueRange.ptr(64, 151, 159), new valueRange.ptr(8, 160, 166), new valueRange.ptr(64, 167, 167), new valueRange.ptr(8, 168, 174), new valueRange.ptr(64, 175, 175), new valueRange.ptr(8, 176, 182), new valueRange.ptr(64, 183, 183), new valueRange.ptr(8, 184, 190), new valueRange.ptr(64, 191, 191), new valueRange.ptr(0, 9, 0), new valueRange.ptr(8, 128, 134), new valueRange.ptr(64, 135, 135), new valueRange.ptr(8, 136, 142), new valueRange.ptr(64, 143, 143), new valueRange.ptr(8, 144, 150), new valueRange.ptr(64, 151, 151), new valueRange.ptr(8, 152, 158), new valueRange.ptr(64, 159, 159), new valueRange.ptr(13064, 160, 191), new valueRange.ptr(0, 3, 0), new valueRange.ptr(24, 128, 174), new valueRange.ptr(8, 175, 175), new valueRange.ptr(24, 176, 191), new valueRange.ptr(0, 2, 0), new valueRange.ptr(24, 128, 137), new valueRange.ptr(64, 138, 191), new valueRange.ptr(0, 5, 0), new valueRange.ptr(24, 128, 153), new valueRange.ptr(64, 154, 154), new valueRange.ptr(24, 155, 158), new valueRange.ptr(3805, 159, 159), new valueRange.ptr(24, 160, 191), new valueRange.ptr(0, 3, 0), new valueRange.ptr(24, 128, 178), new valueRange.ptr(3837, 179, 179), new valueRange.ptr(64, 180, 191), new valueRange.ptr(32, 1, 0), new valueRange.ptr(3869, 128, 191), new valueRange.ptr(32, 2, 0), new valueRange.ptr(5917, 128, 143), new valueRange.ptr(6397, 144, 191), new valueRange.ptr(32, 1, 0), new valueRange.ptr(7933, 128, 191), new valueRange.ptr(0, 2, 0), new valueRange.ptr(64, 128, 128), new valueRange.ptr(8, 129, 191), new valueRange.ptr(0, 9, 0), new valueRange.ptr(8, 128, 150), new valueRange.ptr(64, 151, 152), new valueRange.ptr(13064, 153, 154), new valueRange.ptr(10722, 155, 155), new valueRange.ptr(10762, 156, 156), new valueRange.ptr(8, 157, 158), new valueRange.ptr(10801, 159, 159), new valueRange.ptr(24, 160, 160), new valueRange.ptr(8, 161, 191), new valueRange.ptr(0, 2, 0), new valueRange.ptr(8, 128, 190), new valueRange.ptr(10857, 191, 191), new valueRange.ptr(0, 14, 0), new valueRange.ptr(64, 128, 132), new valueRange.ptr(8, 133, 174), new valueRange.ptr(64, 175, 176), new valueRange.ptr(10781, 177, 177), new valueRange.ptr(10813, 178, 178), new valueRange.ptr(10845, 179, 179), new valueRange.ptr(10877, 180, 180), new valueRange.ptr(10845, 181, 181), new valueRange.ptr(10909, 182, 182), new valueRange.ptr(10941, 183, 183), new valueRange.ptr(10973, 184, 185), new valueRange.ptr(11005, 186, 187), new valueRange.ptr(11037, 188, 189), new valueRange.ptr(11005, 190, 191), new valueRange.ptr(0, 3, 0), new valueRange.ptr(24, 128, 163), new valueRange.ptr(64, 164, 175), new valueRange.ptr(8, 176, 191), new valueRange.ptr(48, 4, 0), new valueRange.ptr(10914, 128, 157), new valueRange.ptr(12378, 158, 158), new valueRange.ptr(64, 159, 159), new valueRange.ptr(12450, 160, 191), new valueRange.ptr(0, 2, 0), new valueRange.ptr(8, 128, 170), new valueRange.ptr(64, 171, 191), new valueRange.ptr(0, 3, 0), new valueRange.ptr(8, 128, 140), new valueRange.ptr(64, 141, 143), new valueRange.ptr(24, 144, 191), new valueRange.ptr(0, 4, 0), new valueRange.ptr(24, 128, 134), new valueRange.ptr(64, 135, 143), new valueRange.ptr(8, 144, 189), new valueRange.ptr(24, 190, 191), new valueRange.ptr(0, 4, 0), new valueRange.ptr(8, 128, 140), new valueRange.ptr(24, 141, 143), new valueRange.ptr(8, 144, 171), new valueRange.ptr(64, 172, 191), new valueRange.ptr(0, 5, 0), new valueRange.ptr(8, 128, 165), new valueRange.ptr(24, 166, 175), new valueRange.ptr(13064, 176, 177), new valueRange.ptr(24, 178, 183), new valueRange.ptr(64, 184, 191), new valueRange.ptr(0, 5, 0), new valueRange.ptr(64, 128, 182), new valueRange.ptr(8, 183, 183), new valueRange.ptr(8201, 184, 184), new valueRange.ptr(28297, 185, 185), new valueRange.ptr(8, 186, 191), new valueRange.ptr(0, 14, 0), new valueRange.ptr(8, 128, 129), new valueRange.ptr(13064, 130, 130), new valueRange.ptr(8, 131, 133), new valueRange.ptr(15112, 134, 134), new valueRange.ptr(8, 135, 138), new valueRange.ptr(13064, 139, 139), new valueRange.ptr(8, 140, 162), new valueRange.ptr(12296, 163, 164), new valueRange.ptr(13064, 165, 166), new valueRange.ptr(12296, 167, 167), new valueRange.ptr(24, 168, 171), new valueRange.ptr(64, 172, 175), new valueRange.ptr(24, 176, 185), new valueRange.ptr(64, 186, 191), new valueRange.ptr(0, 5, 0), new valueRange.ptr(520, 128, 177), new valueRange.ptr(264, 178, 178), new valueRange.ptr(8, 179, 179), new valueRange.ptr(24, 180, 183), new valueRange.ptr(64, 184, 191), new valueRange.ptr(0, 3, 0), new valueRange.ptr(12296, 128, 129), new valueRange.ptr(8, 130, 179), new valueRange.ptr(12296, 180, 191), new valueRange.ptr(0, 14, 0), new valueRange.ptr(12296, 128, 131), new valueRange.ptr(15112, 132, 132), new valueRange.ptr(13064, 133, 133), new valueRange.ptr(64, 134, 141), new valueRange.ptr(24, 142, 143), new valueRange.ptr(8, 144, 153), new valueRange.ptr(64, 154, 159), new valueRange.ptr(13064, 160, 177), new valueRange.ptr(8, 178, 183), new valueRange.ptr(24, 184, 186), new valueRange.ptr(8, 187, 187), new valueRange.ptr(24, 188, 188), new valueRange.ptr(8, 189, 189), new valueRange.ptr(64, 190, 191), new valueRange.ptr(0, 4, 0), new valueRange.ptr(8, 128, 165), new valueRange.ptr(13064, 166, 173), new valueRange.ptr(24, 174, 175), new valueRange.ptr(8, 176, 191), new valueRange.ptr(0, 7, 0), new valueRange.ptr(8, 128, 134), new valueRange.ptr(13064, 135, 145), new valueRange.ptr(12296, 146, 146), new valueRange.ptr(14344, 147, 147), new valueRange.ptr(64, 148, 158), new valueRange.ptr(24, 159, 188), new valueRange.ptr(64, 189, 191), new valueRange.ptr(0, 9, 0), new valueRange.ptr(13064, 128, 130), new valueRange.ptr(12296, 131, 131), new valueRange.ptr(8, 132, 178), new valueRange.ptr(13064, 179, 179), new valueRange.ptr(12296, 180, 181), new valueRange.ptr(13064, 182, 185), new valueRange.ptr(12296, 186, 187), new valueRange.ptr(13064, 188, 188), new valueRange.ptr(12296, 189, 191), new valueRange.ptr(0, 10, 0), new valueRange.ptr(14344, 128, 128), new valueRange.ptr(24, 129, 141), new valueRange.ptr(64, 142, 142), new valueRange.ptr(8, 143, 153), new valueRange.ptr(64, 154, 157), new valueRange.ptr(24, 158, 159), new valueRange.ptr(8, 160, 164), new valueRange.ptr(13064, 165, 165), new valueRange.ptr(8, 166, 190), new valueRange.ptr(64, 191, 191), new valueRange.ptr(0, 7, 0), new valueRange.ptr(8, 128, 168), new valueRange.ptr(13064, 169, 174), new valueRange.ptr(12296, 175, 176), new valueRange.ptr(13064, 177, 178), new valueRange.ptr(12296, 179, 180), new valueRange.ptr(13064, 181, 182), new valueRange.ptr(64, 183, 191), new valueRange.ptr(0, 16, 0), new valueRange.ptr(8, 128, 130), new valueRange.ptr(13064, 131, 131), new valueRange.ptr(8, 132, 139), new valueRange.ptr(13064, 140, 140), new valueRange.ptr(12296, 141, 141), new valueRange.ptr(64, 142, 143), new valueRange.ptr(8, 144, 153), new valueRange.ptr(64, 154, 155), new valueRange.ptr(24, 156, 159), new valueRange.ptr(8, 160, 182), new valueRange.ptr(24, 183, 185), new valueRange.ptr(8, 186, 186), new valueRange.ptr(12296, 187, 187), new valueRange.ptr(13064, 188, 188), new valueRange.ptr(12296, 189, 189), new valueRange.ptr(8, 190, 191), new valueRange.ptr(0, 8, 0), new valueRange.ptr(8, 128, 175), new valueRange.ptr(13064, 176, 176), new valueRange.ptr(8, 177, 177), new valueRange.ptr(13064, 178, 180), new valueRange.ptr(8, 181, 182), new valueRange.ptr(13064, 183, 184), new valueRange.ptr(8, 185, 189), new valueRange.ptr(13064, 190, 191), new valueRange.ptr(0, 15, 0), new valueRange.ptr(8, 128, 128), new valueRange.ptr(13064, 129, 129), new valueRange.ptr(8, 130, 130), new valueRange.ptr(64, 131, 154), new valueRange.ptr(8, 155, 157), new valueRange.ptr(24, 158, 159), new valueRange.ptr(8, 160, 170), new valueRange.ptr(12296, 171, 171), new valueRange.ptr(13064, 172, 173), new valueRange.ptr(12296, 174, 175), new valueRange.ptr(24, 176, 177), new valueRange.ptr(8, 178, 180), new valueRange.ptr(12296, 181, 181), new valueRange.ptr(15112, 182, 182), new valueRange.ptr(64, 183, 191), new valueRange.ptr(0, 12, 0), new valueRange.ptr(64, 128, 128), new valueRange.ptr(8, 129, 134), new valueRange.ptr(64, 135, 136), new valueRange.ptr(8, 137, 142), new valueRange.ptr(64, 143, 144), new valueRange.ptr(8, 145, 150), new valueRange.ptr(64, 151, 159), new valueRange.ptr(8, 160, 166), new valueRange.ptr(64, 167, 167), new valueRange.ptr(8, 168, 174), new valueRange.ptr(64, 175, 175), new valueRange.ptr(8, 176, 191), new valueRange.ptr(0, 9, 0), new valueRange.ptr(8, 128, 154), new valueRange.ptr(24, 155, 155), new valueRange.ptr(17509, 156, 156), new valueRange.ptr(17533, 157, 157), new valueRange.ptr(10609, 158, 158), new valueRange.ptr(57453, 159, 159), new valueRange.ptr(8, 160, 165), new valueRange.ptr(64, 166, 175), new valueRange.ptr(17557, 176, 191), new valueRange.ptr(0, 4, 0), new valueRange.ptr(17589, 128, 143), new valueRange.ptr(17621, 144, 159), new valueRange.ptr(17653, 160, 175), new valueRange.ptr(17621, 176, 191), new valueRange.ptr(0, 12, 0), new valueRange.ptr(8, 128, 162), new valueRange.ptr(12296, 163, 164), new valueRange.ptr(13064, 165, 165), new valueRange.ptr(12296, 166, 167), new valueRange.ptr(13064, 168, 168), new valueRange.ptr(12296, 169, 170), new valueRange.ptr(24, 171, 171), new valueRange.ptr(12296, 172, 172), new valueRange.ptr(15112, 173, 173), new valueRange.ptr(64, 174, 175), new valueRange.ptr(8, 176, 185), new valueRange.ptr(64, 186, 191), new valueRange.ptr(0, 3, 0), new valueRange.ptr(8, 128, 163), new valueRange.ptr(64, 164, 175), new valueRange.ptr(24, 176, 191), new valueRange.ptr(0, 4, 0), new valueRange.ptr(24, 128, 134), new valueRange.ptr(64, 135, 138), new valueRange.ptr(24, 139, 187), new valueRange.ptr(64, 188, 191), new valueRange.ptr(32, 1, 0), new valueRange.ptr(17685, 128, 191), new valueRange.ptr(32, 3, 0), new valueRange.ptr(19733, 128, 148), new valueRange.ptr(19157, 149, 149), new valueRange.ptr(20405, 150, 191), new valueRange.ptr(32, 1, 0), new valueRange.ptr(21749, 128, 191), new valueRange.ptr(32, 3, 0), new valueRange.ptr(23797, 128, 132), new valueRange.ptr(22101, 133, 133), new valueRange.ptr(23957, 134, 191), new valueRange.ptr(32, 8, 0), new valueRange.ptr(27477, 128, 143), new valueRange.ptr(27925, 144, 144), new valueRange.ptr(27989, 145, 171), new valueRange.ptr(28321, 172, 172), new valueRange.ptr(28853, 173, 173), new valueRange.ptr(64, 174, 174), new valueRange.ptr(64, 175, 175), new valueRange.ptr(28885, 176, 191), new valueRange.ptr(32, 5, 0), new valueRange.ptr(29397, 128, 173), new valueRange.ptr(25909, 174, 174), new valueRange.ptr(30869, 175, 181), new valueRange.ptr(28501, 182, 182), new valueRange.ptr(31093, 183, 191), new valueRange.ptr(40, 3, 0), new valueRange.ptr(31777, 128, 130), new valueRange.ptr(31713, 131, 131), new valueRange.ptr(31897, 132, 191), new valueRange.ptr(56, 15, 0), new valueRange.ptr(40369, 128, 131), new valueRange.ptr(40537, 132, 133), new valueRange.ptr(40593, 134, 135), new valueRange.ptr(40649, 136, 143), new valueRange.ptr(64, 144, 144), new valueRange.ptr(64, 145, 145), new valueRange.ptr(41097, 146, 151), new valueRange.ptr(41377, 152, 156), new valueRange.ptr(41601, 157, 179), new valueRange.ptr(40257, 180, 180), new valueRange.ptr(40369, 181, 181), new valueRange.ptr(42889, 182, 187), new valueRange.ptr(43113, 188, 188), new valueRange.ptr(43001, 189, 189), new valueRange.ptr(43225, 190, 191), new valueRange.ptr(0, 9, 0), new valueRange.ptr(8, 128, 139), new valueRange.ptr(64, 140, 140), new valueRange.ptr(8, 141, 166), new valueRange.ptr(64, 167, 167), new valueRange.ptr(8, 168, 186), new valueRange.ptr(64, 187, 187), new valueRange.ptr(8, 188, 189), new valueRange.ptr(64, 190, 190), new valueRange.ptr(8, 191, 191), new valueRange.ptr(0, 4, 0), new valueRange.ptr(8, 128, 141), new valueRange.ptr(64, 142, 143), new valueRange.ptr(8, 144, 157), new valueRange.ptr(64, 158, 191), new valueRange.ptr(0, 2, 0), new valueRange.ptr(8, 128, 186), new valueRange.ptr(64, 187, 191), new valueRange.ptr(0, 5, 0), new valueRange.ptr(24, 128, 130), new valueRange.ptr(64, 131, 134), new valueRange.ptr(24, 135, 179), new valueRange.ptr(64, 180, 182), new valueRange.ptr(24, 183, 191), new valueRange.ptr(0, 6, 0), new valueRange.ptr(24, 128, 142), new valueRange.ptr(64, 143, 143), new valueRange.ptr(24, 144, 155), new valueRange.ptr(64, 156, 159), new valueRange.ptr(24, 160, 160), new valueRange.ptr(64, 161, 191), new valueRange.ptr(0, 4, 0), new valueRange.ptr(64, 128, 143), new valueRange.ptr(24, 144, 188), new valueRange.ptr(13064, 189, 189), new valueRange.ptr(64, 190, 191), new valueRange.ptr(0, 3, 0), new valueRange.ptr(8, 128, 156), new valueRange.ptr(64, 157, 159), new valueRange.ptr(8, 160, 191), new valueRange.ptr(0, 5, 0), new valueRange.ptr(8, 128, 144), new valueRange.ptr(64, 145, 159), new valueRange.ptr(13064, 160, 160), new valueRange.ptr(24, 161, 187), new valueRange.ptr(64, 188, 191), new valueRange.ptr(0, 4, 0), new valueRange.ptr(8, 128, 159), new valueRange.ptr(24, 160, 163), new valueRange.ptr(64, 164, 172), new valueRange.ptr(8, 173, 191), new valueRange.ptr(0, 8, 0), new valueRange.ptr(8, 128, 128), new valueRange.ptr(24, 129, 129), new valueRange.ptr(8, 130, 137), new valueRange.ptr(24, 138, 138), new valueRange.ptr(64, 139, 143), new valueRange.ptr(8, 144, 181), new valueRange.ptr(13064, 182, 186), new valueRange.ptr(64, 187, 191), new valueRange.ptr(0, 4, 0), new valueRange.ptr(8, 128, 157), new valueRange.ptr(64, 158, 158), new valueRange.ptr(24, 159, 159), new valueRange.ptr(8, 160, 191), new valueRange.ptr(0, 5, 0), new valueRange.ptr(8, 128, 131), new valueRange.ptr(64, 132, 135), new valueRange.ptr(8, 136, 143), new valueRange.ptr(24, 144, 149), new valueRange.ptr(64, 150, 191), new valueRange.ptr(0, 6, 0), new valueRange.ptr(57669, 128, 135), new valueRange.ptr(57797, 136, 143), new valueRange.ptr(57669, 144, 151), new valueRange.ptr(35541, 152, 159), new valueRange.ptr(35565, 160, 167), new valueRange.ptr(8, 168, 191), new valueRange.ptr(0, 6, 0), new valueRange.ptr(8, 128, 157), new valueRange.ptr(64, 158, 159), new valueRange.ptr(8, 160, 169), new valueRange.ptr(64, 170, 175), new valueRange.ptr(35565, 176, 183), new valueRange.ptr(35541, 184, 191), new valueRange.ptr(0, 6, 0), new valueRange.ptr(57669, 128, 135), new valueRange.ptr(57797, 136, 143), new valueRange.ptr(57669, 144, 147), new valueRange.ptr(64, 148, 151), new valueRange.ptr(8, 152, 187), new valueRange.ptr(64, 188, 191), new valueRange.ptr(0, 3, 0), new valueRange.ptr(8, 128, 167), new valueRange.ptr(64, 168, 175), new valueRange.ptr(8, 176, 191), new valueRange.ptr(0, 4, 0), new valueRange.ptr(8, 128, 163), new valueRange.ptr(64, 164, 174), new valueRange.ptr(24, 175, 175), new valueRange.ptr(64, 176, 191), new valueRange.ptr(0, 2, 0), new valueRange.ptr(8, 128, 182), new valueRange.ptr(64, 183, 191), new valueRange.ptr(0, 4, 0), new valueRange.ptr(8, 128, 149), new valueRange.ptr(64, 150, 159), new valueRange.ptr(8, 160, 167), new valueRange.ptr(64, 168, 191), new valueRange.ptr(0, 11, 0), new valueRange.ptr(2056, 128, 133), new valueRange.ptr(64, 134, 135), new valueRange.ptr(2056, 136, 136), new valueRange.ptr(64, 137, 137), new valueRange.ptr(2056, 138, 181), new valueRange.ptr(64, 182, 182), new valueRange.ptr(2056, 183, 184), new valueRange.ptr(64, 185, 187), new valueRange.ptr(2056, 188, 188), new valueRange.ptr(64, 189, 190), new valueRange.ptr(2056, 191, 191), new valueRange.ptr(0, 5, 0), new valueRange.ptr(2056, 128, 149), new valueRange.ptr(64, 150, 150), new valueRange.ptr(2072, 151, 159), new valueRange.ptr(2056, 160, 182), new valueRange.ptr(2072, 183, 191), new valueRange.ptr(0, 4, 0), new valueRange.ptr(2056, 128, 158), new valueRange.ptr(64, 159, 166), new valueRange.ptr(2072, 167, 175), new valueRange.ptr(64, 176, 191), new valueRange.ptr(0, 6, 0), new valueRange.ptr(64, 128, 159), new valueRange.ptr(2056, 160, 178), new valueRange.ptr(64, 179, 179), new valueRange.ptr(2056, 180, 181), new valueRange.ptr(64, 182, 186), new valueRange.ptr(2072, 187, 191), new valueRange.ptr(0, 7, 0), new valueRange.ptr(2056, 128, 149), new valueRange.ptr(2072, 150, 155), new valueRange.ptr(64, 156, 158), new valueRange.ptr(24, 159, 159), new valueRange.ptr(2056, 160, 185), new valueRange.ptr(64, 186, 190), new valueRange.ptr(2072, 191, 191), new valueRange.ptr(0, 4, 0), new valueRange.ptr(2056, 128, 183), new valueRange.ptr(64, 184, 187), new valueRange.ptr(2072, 188, 189), new valueRange.ptr(2056, 190, 191), new valueRange.ptr(0, 3, 0), new valueRange.ptr(2072, 128, 143), new valueRange.ptr(64, 144, 145), new valueRange.ptr(2072, 146, 191), new valueRange.ptr(0, 15, 0), new valueRange.ptr(2056, 128, 128), new valueRange.ptr(13064, 129, 131), new valueRange.ptr(64, 132, 132), new valueRange.ptr(13064, 133, 134), new valueRange.ptr(64, 135, 139), new valueRange.ptr(13064, 140, 143), new valueRange.ptr(2056, 144, 147), new valueRange.ptr(64, 148, 148), new valueRange.ptr(2056, 149, 151), new valueRange.ptr(64, 152, 152), new valueRange.ptr(2056, 153, 179), new valueRange.ptr(64, 180, 183), new valueRange.ptr(13064, 184, 186), new valueRange.ptr(64, 187, 190), new valueRange.ptr(15112, 191, 191), new valueRange.ptr(0, 6, 0), new valueRange.ptr(2072, 128, 135), new valueRange.ptr(64, 136, 143), new valueRange.ptr(2072, 144, 152), new valueRange.ptr(64, 153, 159), new valueRange.ptr(2056, 160, 188), new valueRange.ptr(2072, 189, 191), new valueRange.ptr(0, 3, 0), new valueRange.ptr(2056, 128, 156), new valueRange.ptr(2072, 157, 159), new valueRange.ptr(64, 160, 191), new valueRange.ptr(0, 3, 0), new valueRange.ptr(2056, 128, 181), new valueRange.ptr(64, 182, 184), new valueRange.ptr(24, 185, 191), new valueRange.ptr(0, 6, 0), new valueRange.ptr(2056, 128, 149), new valueRange.ptr(64, 150, 151), new valueRange.ptr(2072, 152, 159), new valueRange.ptr(2056, 160, 178), new valueRange.ptr(64, 179, 183), new valueRange.ptr(2072, 184, 191), new valueRange.ptr(0, 1, 0), new valueRange.ptr(2056, 128, 191), new valueRange.ptr(0, 2, 0), new valueRange.ptr(2056, 128, 136), new valueRange.ptr(64, 137, 191), new valueRange.ptr(0, 2, 0), new valueRange.ptr(989, 128, 178), new valueRange.ptr(64, 179, 191), new valueRange.ptr(0, 3, 0), new valueRange.ptr(2056, 128, 178), new valueRange.ptr(64, 179, 185), new valueRange.ptr(2072, 186, 191), new valueRange.ptr(0, 3, 0), new valueRange.ptr(64, 128, 159), new valueRange.ptr(2072, 160, 190), new valueRange.ptr(64, 191, 191), new valueRange.ptr(0, 5, 0), new valueRange.ptr(12296, 128, 128), new valueRange.ptr(13064, 129, 129), new valueRange.ptr(12296, 130, 130), new valueRange.ptr(8, 131, 183), new valueRange.ptr(13064, 184, 191), new valueRange.ptr(0, 8, 0), new valueRange.ptr(13064, 128, 133), new valueRange.ptr(15112, 134, 134), new valueRange.ptr(24, 135, 141), new valueRange.ptr(64, 142, 145), new valueRange.ptr(24, 146, 165), new valueRange.ptr(8, 166, 175), new valueRange.ptr(64, 176, 190), new valueRange.ptr(15112, 191, 191), new valueRange.ptr(0, 11, 0), new valueRange.ptr(13064, 128, 129), new valueRange.ptr(12296, 130, 130), new valueRange.ptr(8, 131, 175), new valueRange.ptr(12296, 176, 178), new valueRange.ptr(13064, 179, 182), new valueRange.ptr(12296, 183, 184), new valueRange.ptr(15112, 185, 185), new valueRange.ptr(13064, 186, 186), new valueRange.ptr(24, 187, 188), new valueRange.ptr(832, 189, 189), new valueRange.ptr(24, 190, 191), new valueRange.ptr(0, 6, 0), new valueRange.ptr(24, 128, 129), new valueRange.ptr(64, 130, 143), new valueRange.ptr(8, 144, 168), new valueRange.ptr(64, 169, 175), new valueRange.ptr(8, 176, 185), new valueRange.ptr(64, 186, 191), new valueRange.ptr(0, 8, 0), new valueRange.ptr(13064, 128, 130), new valueRange.ptr(8, 131, 166), new valueRange.ptr(13064, 167, 171), new valueRange.ptr(12296, 172, 172), new valueRange.ptr(13064, 173, 178), new valueRange.ptr(15112, 179, 180), new valueRange.ptr(64, 181, 181), new valueRange.ptr(8, 182, 191), new valueRange.ptr(0, 7, 0), new valueRange.ptr(24, 128, 131), new valueRange.ptr(64, 132, 143), new valueRange.ptr(8, 144, 178), new valueRange.ptr(13064, 179, 179), new valueRange.ptr(24, 180, 181), new valueRange.ptr(8, 182, 182), new valueRange.ptr(64, 183, 191), new valueRange.ptr(0, 6, 0), new valueRange.ptr(13064, 128, 129), new valueRange.ptr(12296, 130, 130), new valueRange.ptr(8, 131, 178), new valueRange.ptr(12296, 179, 181), new valueRange.ptr(13064, 182, 190), new valueRange.ptr(12296, 191, 191), new valueRange.ptr(0, 13, 0), new valueRange.ptr(14344, 128, 128), new valueRange.ptr(8, 129, 132), new valueRange.ptr(24, 133, 137), new valueRange.ptr(13064, 138, 140), new valueRange.ptr(24, 141, 141), new valueRange.ptr(64, 142, 143), new valueRange.ptr(8, 144, 154), new valueRange.ptr(24, 155, 155), new valueRange.ptr(8, 156, 156), new valueRange.ptr(24, 157, 159), new valueRange.ptr(64, 160, 160), new valueRange.ptr(24, 161, 180), new valueRange.ptr(64, 181, 191), new valueRange.ptr(0, 12, 0), new valueRange.ptr(8, 128, 145), new valueRange.ptr(64, 146, 146), new valueRange.ptr(8, 147, 171), new valueRange.ptr(12296, 172, 174), new valueRange.ptr(13064, 175, 177), new valueRange.ptr(12296, 178, 179), new valueRange.ptr(13064, 180, 180), new valueRange.ptr(14344, 181, 181), new valueRange.ptr(13064, 182, 183), new valueRange.ptr(24, 184, 189), new valueRange.ptr(13064, 190, 190), new valueRange.ptr(64, 191, 191), new valueRange.ptr(0, 12, 0), new valueRange.ptr(8, 128, 134), new valueRange.ptr(64, 135, 135), new valueRange.ptr(8, 136, 136), new valueRange.ptr(64, 137, 137), new valueRange.ptr(8, 138, 141), new valueRange.ptr(64, 142, 142), new valueRange.ptr(8, 143, 157), new valueRange.ptr(64, 158, 158), new valueRange.ptr(8, 159, 168), new valueRange.ptr(24, 169, 169), new valueRange.ptr(64, 170, 175), new valueRange.ptr(8, 176, 191), new valueRange.ptr(0, 8, 0), new valueRange.ptr(8, 128, 158), new valueRange.ptr(13064, 159, 159), new valueRange.ptr(12296, 160, 162), new valueRange.ptr(13064, 163, 169), new valueRange.ptr(15112, 170, 170), new valueRange.ptr(64, 171, 175), new valueRange.ptr(8, 176, 185), new valueRange.ptr(64, 186, 191), new valueRange.ptr(0, 3, 0), new valueRange.ptr(8, 128, 180), new valueRange.ptr(12296, 181, 183), new valueRange.ptr(13064, 184, 191), new valueRange.ptr(0, 13, 0), new valueRange.ptr(12296, 128, 129), new valueRange.ptr(15112, 130, 130), new valueRange.ptr(13064, 131, 132), new valueRange.ptr(12296, 133, 133), new valueRange.ptr(13064, 134, 134), new valueRange.ptr(8, 135, 138), new valueRange.ptr(24, 139, 143), new valueRange.ptr(8, 144, 153), new valueRange.ptr(64, 154, 154), new valueRange.ptr(24, 155, 155), new valueRange.ptr(64, 156, 156), new valueRange.ptr(24, 157, 157), new valueRange.ptr(64, 158, 191), new valueRange.ptr(0, 7, 0), new valueRange.ptr(8, 128, 175), new valueRange.ptr(12296, 176, 178), new valueRange.ptr(13064, 179, 184), new valueRange.ptr(12296, 185, 185), new valueRange.ptr(13064, 186, 186), new valueRange.ptr(12296, 187, 190), new valueRange.ptr(13064, 191, 191), new valueRange.ptr(0, 10, 0), new valueRange.ptr(13064, 128, 128), new valueRange.ptr(12296, 129, 129), new valueRange.ptr(15112, 130, 130), new valueRange.ptr(13064, 131, 131), new valueRange.ptr(8, 132, 133), new valueRange.ptr(24, 134, 134), new valueRange.ptr(8, 135, 135), new valueRange.ptr(64, 136, 143), new valueRange.ptr(8, 144, 153), new valueRange.ptr(64, 154, 191), new valueRange.ptr(0, 8, 0), new valueRange.ptr(8, 128, 174), new valueRange.ptr(12296, 175, 177), new valueRange.ptr(13064, 178, 181), new valueRange.ptr(64, 182, 183), new valueRange.ptr(12296, 184, 187), new valueRange.ptr(13064, 188, 189), new valueRange.ptr(12296, 190, 190), new valueRange.ptr(15112, 191, 191), new valueRange.ptr(0, 5, 0), new valueRange.ptr(13064, 128, 128), new valueRange.ptr(24, 129, 151), new valueRange.ptr(8, 152, 155), new valueRange.ptr(13064, 156, 157), new valueRange.ptr(64, 158, 191), new valueRange.ptr(0, 7, 0), new valueRange.ptr(8, 128, 175), new valueRange.ptr(12296, 176, 178), new valueRange.ptr(13064, 179, 186), new valueRange.ptr(12296, 187, 188), new valueRange.ptr(13064, 189, 189), new valueRange.ptr(12296, 190, 190), new valueRange.ptr(15112, 191, 191), new valueRange.ptr(0, 8, 0), new valueRange.ptr(13064, 128, 128), new valueRange.ptr(24, 129, 131), new valueRange.ptr(8, 132, 132), new valueRange.ptr(64, 133, 143), new valueRange.ptr(8, 144, 153), new valueRange.ptr(64, 154, 159), new valueRange.ptr(24, 160, 172), new valueRange.ptr(64, 173, 191), new valueRange.ptr(0, 9, 0), new valueRange.ptr(8, 128, 170), new valueRange.ptr(13064, 171, 171), new valueRange.ptr(12296, 172, 172), new valueRange.ptr(13064, 173, 173), new valueRange.ptr(12296, 174, 175), new valueRange.ptr(13064, 176, 181), new valueRange.ptr(14344, 182, 182), new valueRange.ptr(13064, 183, 183), new valueRange.ptr(64, 184, 191), new valueRange.ptr(0, 2, 0), new valueRange.ptr(8, 128, 137), new valueRange.ptr(64, 138, 191), new valueRange.ptr(0, 11, 0), new valueRange.ptr(8, 128, 153), new valueRange.ptr(64, 154, 156), new valueRange.ptr(13064, 157, 159), new valueRange.ptr(12296, 160, 161), new valueRange.ptr(13064, 162, 165), new valueRange.ptr(12296, 166, 166), new valueRange.ptr(13064, 167, 170), new valueRange.ptr(15112, 171, 171), new valueRange.ptr(64, 172, 175), new valueRange.ptr(8, 176, 185), new valueRange.ptr(24, 186, 191), new valueRange.ptr(0, 2, 0), new valueRange.ptr(64, 128, 159), new valueRange.ptr(1181, 160, 191), new valueRange.ptr(0, 4, 0), new valueRange.ptr(8, 128, 169), new valueRange.ptr(24, 170, 178), new valueRange.ptr(64, 179, 190), new valueRange.ptr(8, 191, 191), new valueRange.ptr(0, 12, 0), new valueRange.ptr(8, 128, 128), new valueRange.ptr(13064, 129, 134), new valueRange.ptr(12296, 135, 136), new valueRange.ptr(13064, 137, 138), new valueRange.ptr(8, 139, 178), new valueRange.ptr(13064, 179, 179), new valueRange.ptr(15112, 180, 180), new valueRange.ptr(13064, 181, 184), new valueRange.ptr(12296, 185, 185), new valueRange.ptr(8, 186, 186), new valueRange.ptr(13064, 187, 190), new valueRange.ptr(24, 191, 191), new valueRange.ptr(0, 8, 0), new valueRange.ptr(24, 128, 134), new valueRange.ptr(15112, 135, 135), new valueRange.ptr(64, 136, 143), new valueRange.ptr(8, 144, 144), new valueRange.ptr(13064, 145, 150), new valueRange.ptr(12296, 151, 152), new valueRange.ptr(13064, 153, 155), new valueRange.ptr(8, 156, 191), new valueRange.ptr(0, 11, 0), new valueRange.ptr(8, 128, 131), new valueRange.ptr(64, 132, 133), new valueRange.ptr(8, 134, 137), new valueRange.ptr(13064, 138, 150), new valueRange.ptr(12296, 151, 151), new valueRange.ptr(13064, 152, 152), new valueRange.ptr(15112, 153, 153), new valueRange.ptr(24, 154, 156), new valueRange.ptr(64, 157, 157), new valueRange.ptr(24, 158, 162), new valueRange.ptr(64, 163, 191), new valueRange.ptr(0, 2, 0), new valueRange.ptr(8, 128, 184), new valueRange.ptr(64, 185, 191), new valueRange.ptr(0, 9, 0), new valueRange.ptr(8, 128, 136), new valueRange.ptr(64, 137, 137), new valueRange.ptr(8, 138, 174), new valueRange.ptr(12296, 175, 175), new valueRange.ptr(13064, 176, 182), new valueRange.ptr(64, 183, 183), new valueRange.ptr(13064, 184, 189), new valueRange.ptr(12296, 190, 190), new valueRange.ptr(15112, 191, 191), new valueRange.ptr(0, 8, 0), new valueRange.ptr(8, 128, 128), new valueRange.ptr(24, 129, 133), new valueRange.ptr(64, 134, 143), new valueRange.ptr(8, 144, 153), new valueRange.ptr(24, 154, 172), new valueRange.ptr(64, 173, 175), new valueRange.ptr(24, 176, 177), new valueRange.ptr(8, 178, 191), new valueRange.ptr(0, 11, 0), new valueRange.ptr(8, 128, 143), new valueRange.ptr(64, 144, 145), new valueRange.ptr(13064, 146, 167), new valueRange.ptr(64, 168, 168), new valueRange.ptr(12296, 169, 169), new valueRange.ptr(13064, 170, 176), new valueRange.ptr(12296, 177, 177), new valueRange.ptr(13064, 178, 179), new valueRange.ptr(12296, 180, 180), new valueRange.ptr(13064, 181, 182), new valueRange.ptr(64, 183, 191), new valueRange.ptr(0, 12, 0), new valueRange.ptr(8, 128, 134), new valueRange.ptr(64, 135, 135), new valueRange.ptr(8, 136, 137), new valueRange.ptr(64, 138, 138), new valueRange.ptr(8, 139, 176), new valueRange.ptr(13064, 177, 182), new valueRange.ptr(64, 183, 185), new valueRange.ptr(13064, 186, 186), new valueRange.ptr(64, 187, 187), new valueRange.ptr(13064, 188, 189), new valueRange.ptr(64, 190, 190), new valueRange.ptr(13064, 191, 191), new valueRange.ptr(0, 7, 0), new valueRange.ptr(13064, 128, 131), new valueRange.ptr(15112, 132, 133), new valueRange.ptr(8, 134, 134), new valueRange.ptr(13064, 135, 135), new valueRange.ptr(64, 136, 143), new valueRange.ptr(8, 144, 153), new valueRange.ptr(64, 154, 191), new valueRange.ptr(0, 2, 0), new valueRange.ptr(8, 128, 153), new valueRange.ptr(64, 154, 191), new valueRange.ptr(0, 4, 0), new valueRange.ptr(24, 128, 174), new valueRange.ptr(64, 175, 175), new valueRange.ptr(24, 176, 180), new valueRange.ptr(64, 181, 191), new valueRange.ptr(0, 2, 0), new valueRange.ptr(8, 128, 131), new valueRange.ptr(64, 132, 191), new valueRange.ptr(0, 2, 0), new valueRange.ptr(8, 128, 174), new valueRange.ptr(64, 175, 191), new valueRange.ptr(0, 2, 0), new valueRange.ptr(8, 128, 134), new valueRange.ptr(64, 135, 191), new valueRange.ptr(0, 6, 0), new valueRange.ptr(8, 128, 158), new valueRange.ptr(64, 159, 159), new valueRange.ptr(8, 160, 169), new valueRange.ptr(64, 170, 173), new valueRange.ptr(24, 174, 175), new valueRange.ptr(64, 176, 191), new valueRange.ptr(0, 6, 0), new valueRange.ptr(64, 128, 143), new valueRange.ptr(8, 144, 173), new valueRange.ptr(64, 174, 175), new valueRange.ptr(13064, 176, 180), new valueRange.ptr(24, 181, 181), new valueRange.ptr(64, 182, 191), new valueRange.ptr(0, 3, 0), new valueRange.ptr(8, 128, 175), new valueRange.ptr(13064, 176, 182), new valueRange.ptr(24, 183, 191), new valueRange.ptr(0, 10, 0), new valueRange.ptr(8, 128, 131), new valueRange.ptr(24, 132, 133), new valueRange.ptr(64, 134, 143), new valueRange.ptr(8, 144, 153), new valueRange.ptr(64, 154, 154), new valueRange.ptr(24, 155, 161), new valueRange.ptr(64, 162, 162), new valueRange.ptr(8, 163, 183), new valueRange.ptr(64, 184, 188), new valueRange.ptr(8, 189, 191), new valueRange.ptr(0, 2, 0), new valueRange.ptr(8, 128, 143), new valueRange.ptr(64, 144, 191), new valueRange.ptr(0, 5, 0), new valueRange.ptr(8, 128, 132), new valueRange.ptr(64, 133, 143), new valueRange.ptr(8, 144, 144), new valueRange.ptr(12296, 145, 190), new valueRange.ptr(64, 191, 191), new valueRange.ptr(0, 4, 0), new valueRange.ptr(64, 128, 142), new valueRange.ptr(13064, 143, 146), new valueRange.ptr(8, 147, 159), new valueRange.ptr(64, 160, 191), new valueRange.ptr(0, 3, 0), new valueRange.ptr(64, 128, 159), new valueRange.ptr(8, 160, 161), new valueRange.ptr(64, 162, 191), new valueRange.ptr(0, 2, 0), new valueRange.ptr(8, 128, 172), new valueRange.ptr(64, 173, 191), new valueRange.ptr(0, 2, 0), new valueRange.ptr(8, 128, 178), new valueRange.ptr(64, 179, 191), new valueRange.ptr(0, 2, 0), new valueRange.ptr(8, 128, 158), new valueRange.ptr(64, 159, 191), new valueRange.ptr(0, 2, 0), new valueRange.ptr(64, 128, 175), new valueRange.ptr(8, 176, 191), new valueRange.ptr(0, 2, 0), new valueRange.ptr(8, 128, 187), new valueRange.ptr(64, 188, 191), new valueRange.ptr(0, 4, 0), new valueRange.ptr(8, 128, 170), new valueRange.ptr(64, 171, 175), new valueRange.ptr(8, 176, 188), new valueRange.ptr(64, 189, 191), new valueRange.ptr(0, 9, 0), new valueRange.ptr(8, 128, 136), new valueRange.ptr(64, 137, 143), new valueRange.ptr(8, 144, 153), new valueRange.ptr(64, 154, 155), new valueRange.ptr(24, 156, 156), new valueRange.ptr(13064, 157, 158), new valueRange.ptr(24, 159, 159), new valueRange.ptr(960, 160, 163), new valueRange.ptr(64, 164, 191), new valueRange.ptr(0, 2, 0), new valueRange.ptr(24, 128, 181), new valueRange.ptr(64, 182, 191), new valueRange.ptr(0, 3, 0), new valueRange.ptr(24, 128, 166), new valueRange.ptr(64, 167, 168), new valueRange.ptr(24, 169, 191), new valueRange.ptr(0, 14, 0), new valueRange.ptr(24, 128, 157), new valueRange.ptr(46521, 158, 158), new valueRange.ptr(46593, 159, 159), new valueRange.ptr(46665, 160, 160), new valueRange.ptr(46769, 161, 161), new valueRange.ptr(46873, 162, 162), new valueRange.ptr(46977, 163, 163), new valueRange.ptr(47081, 164, 164), new valueRange.ptr(12312, 165, 166), new valueRange.ptr(13080, 167, 169), new valueRange.ptr(24, 170, 172), new valueRange.ptr(12312, 173, 178), new valueRange.ptr(832, 179, 186), new valueRange.ptr(13080, 187, 191), new valueRange.ptr(0, 11, 0), new valueRange.ptr(13080, 128, 130), new valueRange.ptr(24, 131, 132), new valueRange.ptr(13080, 133, 139), new valueRange.ptr(24, 140, 169), new valueRange.ptr(13080, 170, 173), new valueRange.ptr(24, 174, 186), new valueRange.ptr(47185, 187, 187), new valueRange.ptr(47257, 188, 188), new valueRange.ptr(47329, 189, 189), new valueRange.ptr(47433, 190, 190), new valueRange.ptr(47537, 191, 191), new valueRange.ptr(0, 3, 0), new valueRange.ptr(47641, 128, 128), new valueRange.ptr(24, 129, 168), new valueRange.ptr(64, 169, 191), new valueRange.ptr(0, 4, 0), new valueRange.ptr(24, 128, 129), new valueRange.ptr(13080, 130, 132), new valueRange.ptr(24, 133, 133), new valueRange.ptr(64, 134, 191), new valueRange.ptr(0, 4, 0), new valueRange.ptr(24, 128, 150), new valueRange.ptr(64, 151, 159), new valueRange.ptr(24, 160, 177), new valueRange.ptr(64, 178, 191), new valueRange.ptr(0, 3, 0), new valueRange.ptr(13064, 128, 182), new valueRange.ptr(24, 183, 186), new valueRange.ptr(13064, 187, 191), new valueRange.ptr(0, 4, 0), new valueRange.ptr(13064, 128, 172), new valueRange.ptr(24, 173, 180), new valueRange.ptr(13064, 181, 181), new valueRange.ptr(24, 182, 191), new valueRange.ptr(0, 8, 0), new valueRange.ptr(24, 128, 131), new valueRange.ptr(13064, 132, 132), new valueRange.ptr(24, 133, 139), new valueRange.ptr(64, 140, 154), new valueRange.ptr(13064, 155, 159), new valueRange.ptr(64, 160, 160), new valueRange.ptr(13064, 161, 175), new valueRange.ptr(64, 176, 191), new valueRange.ptr(0, 10, 0), new valueRange.ptr(13064, 128, 134), new valueRange.ptr(64, 135, 135), new valueRange.ptr(13064, 136, 152), new valueRange.ptr(64, 153, 154), new valueRange.ptr(13064, 155, 161), new valueRange.ptr(64, 162, 162), new valueRange.ptr(13064, 163, 164), new valueRange.ptr(64, 165, 165), new valueRange.ptr(13064, 166, 170), new valueRange.ptr(64, 171, 191), new valueRange.ptr(0, 5, 0), new valueRange.ptr(2056, 128, 132), new valueRange.ptr(64, 133, 134), new valueRange.ptr(2072, 135, 143), new valueRange.ptr(13064, 144, 150), new valueRange.ptr(64, 151, 191), new valueRange.ptr(0, 7, 0), new valueRange.ptr(2568, 128, 131), new valueRange.ptr(13064, 132, 138), new valueRange.ptr(64, 139, 143), new valueRange.ptr(2056, 144, 153), new valueRange.ptr(64, 154, 157), new valueRange.ptr(2072, 158, 159), new valueRange.ptr(64, 160, 191), new valueRange.ptr(0, 3, 0), new valueRange.ptr(64, 128, 175), new valueRange.ptr(24, 176, 177), new valueRange.ptr(64, 178, 191), new valueRange.ptr(0, 3, 0), new valueRange.ptr(24, 128, 171), new valueRange.ptr(64, 172, 175), new valueRange.ptr(24, 176, 191), new valueRange.ptr(0, 5, 0), new valueRange.ptr(24, 128, 147), new valueRange.ptr(64, 148, 159), new valueRange.ptr(24, 160, 174), new valueRange.ptr(64, 175, 176), new valueRange.ptr(24, 177, 191), new valueRange.ptr(0, 5, 0), new valueRange.ptr(64, 128, 128), new valueRange.ptr(24, 129, 143), new valueRange.ptr(64, 144, 144), new valueRange.ptr(24, 145, 181), new valueRange.ptr(64, 182, 191), new valueRange.ptr(0, 4, 0), new valueRange.ptr(24, 128, 143), new valueRange.ptr(49601, 144, 144), new valueRange.ptr(24, 145, 172), new valueRange.ptr(64, 173, 191), new valueRange.ptr(0, 2, 0), new valueRange.ptr(64, 128, 165), new valueRange.ptr(24, 166, 191), new valueRange.ptr(0, 15, 0), new valueRange.ptr(51177, 128, 128), new valueRange.ptr(51257, 129, 129), new valueRange.ptr(51337, 130, 130), new valueRange.ptr(51417, 131, 131), new valueRange.ptr(51497, 132, 132), new valueRange.ptr(51577, 133, 133), new valueRange.ptr(51657, 134, 134), new valueRange.ptr(51737, 135, 135), new valueRange.ptr(51817, 136, 136), new valueRange.ptr(64, 137, 143), new valueRange.ptr(51897, 144, 144), new valueRange.ptr(51929, 145, 145), new valueRange.ptr(64, 146, 159), new valueRange.ptr(24, 160, 165), new valueRange.ptr(64, 166, 191), new valueRange.ptr(0, 6, 0), new valueRange.ptr(24, 128, 148), new valueRange.ptr(64, 149, 159), new valueRange.ptr(24, 160, 172), new valueRange.ptr(64, 173, 175), new valueRange.ptr(24, 176, 184), new valueRange.ptr(64, 185, 191), new valueRange.ptr(0, 2, 0), new valueRange.ptr(24, 128, 179), new valueRange.ptr(64, 180, 191), new valueRange.ptr(0, 2, 0), new valueRange.ptr(24, 128, 148), new valueRange.ptr(64, 149, 191), new valueRange.ptr(0, 3, 0), new valueRange.ptr(24, 128, 139), new valueRange.ptr(64, 140, 143), new valueRange.ptr(24, 144, 191), new valueRange.ptr(0, 5, 0), new valueRange.ptr(24, 128, 135), new valueRange.ptr(64, 136, 143), new valueRange.ptr(24, 144, 153), new valueRange.ptr(64, 154, 159), new valueRange.ptr(24, 160, 191), new valueRange.ptr(0, 4, 0), new valueRange.ptr(24, 128, 135), new valueRange.ptr(64, 136, 143), new valueRange.ptr(24, 144, 173), new valueRange.ptr(64, 174, 191), new valueRange.ptr(0, 4, 0), new valueRange.ptr(24, 128, 139), new valueRange.ptr(64, 140, 143), new valueRange.ptr(24, 144, 190), new valueRange.ptr(64, 191, 191), new valueRange.ptr(0, 4, 0), new valueRange.ptr(24, 128, 140), new valueRange.ptr(64, 141, 143), new valueRange.ptr(24, 144, 171), new valueRange.ptr(64, 172, 191), new valueRange.ptr(0, 2, 0), new valueRange.ptr(24, 128, 151), new valueRange.ptr(64, 152, 191), new valueRange.ptr(0, 4, 0), new valueRange.ptr(24, 128, 128), new valueRange.ptr(64, 129, 143), new valueRange.ptr(24, 144, 166), new valueRange.ptr(64, 167, 191), new valueRange.ptr(0, 2, 0), new valueRange.ptr(8, 128, 150), new valueRange.ptr(64, 151, 191), new valueRange.ptr(0, 2, 0), new valueRange.ptr(8, 128, 180), new valueRange.ptr(64, 181, 191), new valueRange.ptr(0, 3, 0), new valueRange.ptr(8, 128, 157), new valueRange.ptr(64, 158, 159), new valueRange.ptr(8, 160, 191), new valueRange.ptr(0, 3, 0), new valueRange.ptr(8, 128, 161), new valueRange.ptr(64, 162, 175), new valueRange.ptr(8, 176, 191), new valueRange.ptr(0, 2, 0), new valueRange.ptr(8, 128, 160), new valueRange.ptr(64, 161, 191), new valueRange.ptr(32, 15, 0), new valueRange.ptr(57017, 128, 137), new valueRange.ptr(36349, 138, 138), new valueRange.ptr(57337, 139, 156), new valueRange.ptr(36381, 157, 157), new valueRange.ptr(57913, 158, 162), new valueRange.ptr(36413, 163, 163), new valueRange.ptr(58073, 164, 171), new valueRange.ptr(32469, 172, 172), new valueRange.ptr(58329, 173, 175), new valueRange.ptr(36445, 176, 176), new valueRange.ptr(58425, 177, 182), new valueRange.ptr(36477, 183, 185), new valueRange.ptr(58617, 186, 186), new valueRange.ptr(36573, 187, 187), new valueRange.ptr(58649, 188, 191), new valueRange.ptr(32, 16, 0), new valueRange.ptr(37757, 128, 128), new valueRange.ptr(61593, 129, 134), new valueRange.ptr(37789, 135, 138), new valueRange.ptr(55801, 139, 139), new valueRange.ptr(61785, 140, 150), new valueRange.ptr(37917, 151, 151), new valueRange.ptr(62137, 152, 163), new valueRange.ptr(37949, 164, 166), new valueRange.ptr(62521, 167, 170), new valueRange.ptr(38045, 171, 171), new valueRange.ptr(62649, 172, 172), new valueRange.ptr(38077, 173, 173), new valueRange.ptr(62681, 174, 175), new valueRange.ptr(38109, 176, 177), new valueRange.ptr(62745, 178, 190), new valueRange.ptr(8256, 191, 191), new valueRange.ptr(0, 4, 0), new valueRange.ptr(64, 128, 128), new valueRange.ptr(832, 129, 129), new valueRange.ptr(64, 130, 159), new valueRange.ptr(832, 160, 191), new valueRange.ptr(0, 1, 0), new valueRange.ptr(832, 128, 191), new valueRange.ptr(0, 1, 0), new valueRange.ptr(13248, 128, 191), new valueRange.ptr(0, 2, 0), new valueRange.ptr(13248, 128, 175), new valueRange.ptr(64, 176, 191)]);
 92402  		idnaSparse = new sparseBlocks.ptr(new sliceType$1(idnaSparseValues), idnaSparseOffset);
 92403  		trie = new idnaTrie.ptr();
 92404  		lookup = new Profile.ptr(new options.ptr(true, true, true, false, false, trie, validateFromPunycode, validateAndMap, bidirule.ValidString));
 92405  		$pkg.Lookup = lookup;
 92406  		joinStates = new sliceType$2([$toNativeArray($kindInt8, [0, 2, 2, 0, 0, 5, 5, 1]), $toNativeArray($kindInt8, [0, 2, 2, 0, 0, 0, 0, 0]), $toNativeArray($kindInt8, [0, 2, 2, 2, 0, 5, 4, 3]), $toNativeArray($kindInt8, [0, 2, 2, 2, 0, 0, 0, 0]), $toNativeArray($kindInt8, [0, 5, 2, 4, 0, 5, 5, 4]), $toNativeArray($kindInt8, [5, 5, 5, 5, 5, 5, 5, 5])]);
 92407  		/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
 92408  	};
 92409  	$pkg.$init = $init;
 92410  	return $pkg;
 92411  })();
 92412  $packages["vendor/golang_org/x/net/lex/httplex"] = (function() {
 92413  	var $pkg = {}, $init, net, strings, utf8, idna, isTokenTable, validHostByte, IsTokenRune, HeaderValuesContainsToken, isOWS, trimOWS, headerValueContainsToken, lowerASCII, tokenEqual, isLWS, isCTL, ValidHeaderFieldName, ValidHostHeader, ValidHeaderFieldValue, isASCII, PunycodeHostPort;
 92414  	net = $packages["net"];
 92415  	strings = $packages["strings"];
 92416  	utf8 = $packages["unicode/utf8"];
 92417  	idna = $packages["vendor/golang_org/x/net/idna"];
 92418  	IsTokenRune = function(r) {
 92419  		var i, r;
 92420  		i = ((r >> 0));
 92421  		return i < 127 && ((i < 0 || i >= isTokenTable.length) ? ($throwRuntimeError("index out of range"), undefined) : isTokenTable[i]);
 92422  	};
 92423  	$pkg.IsTokenRune = IsTokenRune;
 92424  	HeaderValuesContainsToken = function(values, token) {
 92425  		var _i, _ref, token, v, values;
 92426  		_ref = values;
 92427  		_i = 0;
 92428  		while (true) {
 92429  			if (!(_i < _ref.$length)) { break; }
 92430  			v = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
 92431  			if (headerValueContainsToken(v, token)) {
 92432  				return true;
 92433  			}
 92434  			_i++;
 92435  		}
 92436  		return false;
 92437  	};
 92438  	$pkg.HeaderValuesContainsToken = HeaderValuesContainsToken;
 92439  	isOWS = function(b) {
 92440  		var b;
 92441  		return (b === 32) || (b === 9);
 92442  	};
 92443  	trimOWS = function(x) {
 92444  		var x;
 92445  		while (true) {
 92446  			if (!(x.length > 0 && isOWS(x.charCodeAt(0)))) { break; }
 92447  			x = $substring(x, 1);
 92448  		}
 92449  		while (true) {
 92450  			if (!(x.length > 0 && isOWS(x.charCodeAt((x.length - 1 >> 0))))) { break; }
 92451  			x = $substring(x, 0, (x.length - 1 >> 0));
 92452  		}
 92453  		return x;
 92454  	};
 92455  	headerValueContainsToken = function(v, token) {
 92456  		var comma, token, v;
 92457  		v = trimOWS(v);
 92458  		comma = strings.IndexByte(v, 44);
 92459  		if (!((comma === -1))) {
 92460  			return tokenEqual(trimOWS($substring(v, 0, comma)), token) || headerValueContainsToken($substring(v, (comma + 1 >> 0)), token);
 92461  		}
 92462  		return tokenEqual(v, token);
 92463  	};
 92464  	lowerASCII = function(b) {
 92465  		var b;
 92466  		if (65 <= b && b <= 90) {
 92467  			return b + 32 << 24 >>> 24;
 92468  		}
 92469  		return b;
 92470  	};
 92471  	tokenEqual = function(t1, t2) {
 92472  		var _i, _ref, _rune, b, i, t1, t2;
 92473  		if (!((t1.length === t2.length))) {
 92474  			return false;
 92475  		}
 92476  		_ref = t1;
 92477  		_i = 0;
 92478  		while (true) {
 92479  			if (!(_i < _ref.length)) { break; }
 92480  			_rune = $decodeRune(_ref, _i);
 92481  			i = _i;
 92482  			b = _rune[0];
 92483  			if (b >= 128) {
 92484  				return false;
 92485  			}
 92486  			if (!((lowerASCII(((b << 24 >>> 24))) === lowerASCII(t2.charCodeAt(i))))) {
 92487  				return false;
 92488  			}
 92489  			_i += _rune[1];
 92490  		}
 92491  		return true;
 92492  	};
 92493  	isLWS = function(b) {
 92494  		var b;
 92495  		return (b === 32) || (b === 9);
 92496  	};
 92497  	isCTL = function(b) {
 92498  		var b;
 92499  		return b < 32 || (b === 127);
 92500  	};
 92501  	ValidHeaderFieldName = function(v) {
 92502  		var _i, _ref, _rune, r, v;
 92503  		if (v.length === 0) {
 92504  			return false;
 92505  		}
 92506  		_ref = v;
 92507  		_i = 0;
 92508  		while (true) {
 92509  			if (!(_i < _ref.length)) { break; }
 92510  			_rune = $decodeRune(_ref, _i);
 92511  			r = _rune[0];
 92512  			if (!IsTokenRune(r)) {
 92513  				return false;
 92514  			}
 92515  			_i += _rune[1];
 92516  		}
 92517  		return true;
 92518  	};
 92519  	$pkg.ValidHeaderFieldName = ValidHeaderFieldName;
 92520  	ValidHostHeader = function(h) {
 92521  		var h, i, x;
 92522  		i = 0;
 92523  		while (true) {
 92524  			if (!(i < h.length)) { break; }
 92525  			if (!(x = h.charCodeAt(i), ((x < 0 || x >= validHostByte.length) ? ($throwRuntimeError("index out of range"), undefined) : validHostByte[x]))) {
 92526  				return false;
 92527  			}
 92528  			i = i + (1) >> 0;
 92529  		}
 92530  		return true;
 92531  	};
 92532  	$pkg.ValidHostHeader = ValidHostHeader;
 92533  	ValidHeaderFieldValue = function(v) {
 92534  		var b, i, v;
 92535  		i = 0;
 92536  		while (true) {
 92537  			if (!(i < v.length)) { break; }
 92538  			b = v.charCodeAt(i);
 92539  			if (isCTL(b) && !isLWS(b)) {
 92540  				return false;
 92541  			}
 92542  			i = i + (1) >> 0;
 92543  		}
 92544  		return true;
 92545  	};
 92546  	$pkg.ValidHeaderFieldValue = ValidHeaderFieldValue;
 92547  	isASCII = function(s) {
 92548  		var i, s;
 92549  		i = 0;
 92550  		while (true) {
 92551  			if (!(i < s.length)) { break; }
 92552  			if (s.charCodeAt(i) >= 128) {
 92553  				return false;
 92554  			}
 92555  			i = i + (1) >> 0;
 92556  		}
 92557  		return true;
 92558  	};
 92559  	PunycodeHostPort = function(v) {
 92560  		var _r, _r$1, _tuple, _tuple$1, err, host, port, v, $s, $r;
 92561  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; err = $f.err; host = $f.host; port = $f.port; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 92562  		if (isASCII(v)) {
 92563  			$s = -1; return [v, $ifaceNil];
 92564  		}
 92565  		_r = net.SplitHostPort(v); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 92566  		_tuple = _r;
 92567  		host = _tuple[0];
 92568  		port = _tuple[1];
 92569  		err = _tuple[2];
 92570  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 92571  			host = v;
 92572  			port = "";
 92573  		}
 92574  		_r$1 = idna.ToASCII(host); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 92575  		_tuple$1 = _r$1;
 92576  		host = _tuple$1[0];
 92577  		err = _tuple$1[1];
 92578  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 92579  			$s = -1; return ["", err];
 92580  		}
 92581  		if (port === "") {
 92582  			$s = -1; return [host, $ifaceNil];
 92583  		}
 92584  		$s = -1; return [net.JoinHostPort(host, port), $ifaceNil];
 92585  		/* */ } return; } if ($f === undefined) { $f = { $blk: PunycodeHostPort }; } $f._r = _r; $f._r$1 = _r$1; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.err = err; $f.host = host; $f.port = port; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
 92586  	};
 92587  	$pkg.PunycodeHostPort = PunycodeHostPort;
 92588  	$init = function() {
 92589  		$pkg.$init = function() {};
 92590  		/* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 92591  		$r = net.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 92592  		$r = strings.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 92593  		$r = utf8.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 92594  		$r = idna.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 92595  		isTokenTable = $toNativeArray($kindBool, [false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, true, false, true, true, true, true, true, false, false, true, true, false, true, true, false, true, true, true, true, true, true, true, true, true, true, false, false, false, false, false, false, false, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, false, false, false, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, false, true, false, true]);
 92596  		validHostByte = $toNativeArray($kindBool, [false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, true, false, false, true, true, true, true, true, true, true, true, true, true, true, false, true, true, true, true, true, true, true, true, true, true, true, true, false, true, false, false, false, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, false, true, false, true, false, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, false, false, false, true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false]);
 92597  		/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
 92598  	};
 92599  	$pkg.$init = $init;
 92600  	return $pkg;
 92601  })();
 92602  $packages["vendor/golang_org/x/net/proxy"] = (function() {
 92603  	var $pkg = {}, $init, errors, io, net, url, os, strconv, strings, Dialer, Auth, socks5, sliceType, ptrType$1, sliceType$3, ptrType$4, socks5Errors, SOCKS5;
 92604  	errors = $packages["errors"];
 92605  	io = $packages["io"];
 92606  	net = $packages["net"];
 92607  	url = $packages["net/url"];
 92608  	os = $packages["os"];
 92609  	strconv = $packages["strconv"];
 92610  	strings = $packages["strings"];
 92611  	Dialer = $pkg.Dialer = $newType(8, $kindInterface, "proxy.Dialer", true, "vendor/golang_org/x/net/proxy", true, null);
 92612  	Auth = $pkg.Auth = $newType(0, $kindStruct, "proxy.Auth", true, "vendor/golang_org/x/net/proxy", true, function(User_, Password_) {
 92613  		this.$val = this;
 92614  		if (arguments.length === 0) {
 92615  			this.User = "";
 92616  			this.Password = "";
 92617  			return;
 92618  		}
 92619  		this.User = User_;
 92620  		this.Password = Password_;
 92621  	});
 92622  	socks5 = $pkg.socks5 = $newType(0, $kindStruct, "proxy.socks5", true, "vendor/golang_org/x/net/proxy", false, function(user_, password_, network_, addr_, forward_) {
 92623  		this.$val = this;
 92624  		if (arguments.length === 0) {
 92625  			this.user = "";
 92626  			this.password = "";
 92627  			this.network = "";
 92628  			this.addr = "";
 92629  			this.forward = $ifaceNil;
 92630  			return;
 92631  		}
 92632  		this.user = user_;
 92633  		this.password = password_;
 92634  		this.network = network_;
 92635  		this.addr = addr_;
 92636  		this.forward = forward_;
 92637  	});
 92638  	sliceType = $sliceType($String);
 92639  	ptrType$1 = $ptrType(Auth);
 92640  	sliceType$3 = $sliceType($Uint8);
 92641  	ptrType$4 = $ptrType(socks5);
 92642  	SOCKS5 = function(network, addr, auth, forward) {
 92643  		var addr, auth, forward, network, s;
 92644  		s = new socks5.ptr("", "", network, addr, forward);
 92645  		if (!(auth === ptrType$1.nil)) {
 92646  			s.user = auth.User;
 92647  			s.password = auth.Password;
 92648  		}
 92649  		return [s, $ifaceNil];
 92650  	};
 92651  	$pkg.SOCKS5 = SOCKS5;
 92652  	socks5.ptr.prototype.Dial = function(network, addr) {
 92653  		var _1, _r, _r$1, _r$2, _tuple, addr, conn, err, err$1, network, s, $s, $r;
 92654  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _tuple = $f._tuple; addr = $f.addr; conn = $f.conn; err = $f.err; err$1 = $f.err$1; network = $f.network; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 92655  		s = this;
 92656  		_1 = network;
 92657  		if (_1 === ("tcp") || _1 === ("tcp6") || _1 === ("tcp4")) {
 92658  		} else {
 92659  			$s = -1; return [$ifaceNil, errors.New("proxy: no support for SOCKS5 proxy connections of type " + network)];
 92660  		}
 92661  		_r = s.forward.Dial(s.network, s.addr); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 92662  		_tuple = _r;
 92663  		conn = _tuple[0];
 92664  		err = _tuple[1];
 92665  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 92666  			$s = -1; return [$ifaceNil, err];
 92667  		}
 92668  		_r$1 = s.connect(conn, addr); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 92669  		err$1 = _r$1;
 92670  		/* */ if (!($interfaceIsEqual(err$1, $ifaceNil))) { $s = 3; continue; }
 92671  		/* */ $s = 4; continue;
 92672  		/* if (!($interfaceIsEqual(err$1, $ifaceNil))) { */ case 3:
 92673  			_r$2 = conn.Close(); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 92674  			_r$2;
 92675  			$s = -1; return [$ifaceNil, err$1];
 92676  		/* } */ case 4:
 92677  		$s = -1; return [conn, $ifaceNil];
 92678  		/* */ } return; } if ($f === undefined) { $f = { $blk: socks5.ptr.prototype.Dial }; } $f._1 = _1; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._tuple = _tuple; $f.addr = addr; $f.conn = conn; $f.err = err; $f.err$1 = err$1; $f.network = network; $f.s = s; $f.$s = $s; $f.$r = $r; return $f;
 92679  	};
 92680  	socks5.prototype.Dial = function(network, addr) { return this.$val.Dial(network, addr); };
 92681  	socks5.ptr.prototype.connect = function(conn, target) {
 92682  		var _1, _r, _r$1, _r$10, _r$11, _r$12, _r$13, _r$14, _r$15, _r$16, _r$17, _r$18, _r$19, _r$2, _r$20, _r$21, _r$22, _r$23, _r$24, _r$25, _r$26, _r$27, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _tuple, _tuple$1, _tuple$10, _tuple$2, _tuple$3, _tuple$4, _tuple$5, _tuple$6, _tuple$7, _tuple$8, _tuple$9, buf, bytesToDiscard, conn, err, err$1, err$2, err$3, err$4, err$5, err$6, err$7, err$8, err$9, failure, host, ip, ip4, port, portStr, s, target, x, $s, $r;
 92683  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _r = $f._r; _r$1 = $f._r$1; _r$10 = $f._r$10; _r$11 = $f._r$11; _r$12 = $f._r$12; _r$13 = $f._r$13; _r$14 = $f._r$14; _r$15 = $f._r$15; _r$16 = $f._r$16; _r$17 = $f._r$17; _r$18 = $f._r$18; _r$19 = $f._r$19; _r$2 = $f._r$2; _r$20 = $f._r$20; _r$21 = $f._r$21; _r$22 = $f._r$22; _r$23 = $f._r$23; _r$24 = $f._r$24; _r$25 = $f._r$25; _r$26 = $f._r$26; _r$27 = $f._r$27; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _r$8 = $f._r$8; _r$9 = $f._r$9; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$10 = $f._tuple$10; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; _tuple$4 = $f._tuple$4; _tuple$5 = $f._tuple$5; _tuple$6 = $f._tuple$6; _tuple$7 = $f._tuple$7; _tuple$8 = $f._tuple$8; _tuple$9 = $f._tuple$9; buf = $f.buf; bytesToDiscard = $f.bytesToDiscard; conn = $f.conn; err = $f.err; err$1 = $f.err$1; err$2 = $f.err$2; err$3 = $f.err$3; err$4 = $f.err$4; err$5 = $f.err$5; err$6 = $f.err$6; err$7 = $f.err$7; err$8 = $f.err$8; err$9 = $f.err$9; failure = $f.failure; host = $f.host; ip = $f.ip; ip4 = $f.ip4; port = $f.port; portStr = $f.portStr; s = $f.s; target = $f.target; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 92684  		s = this;
 92685  		_r = net.SplitHostPort(target); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
 92686  		_tuple = _r;
 92687  		host = _tuple[0];
 92688  		portStr = _tuple[1];
 92689  		err = _tuple[2];
 92690  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 92691  			$s = -1; return err;
 92692  		}
 92693  		_tuple$1 = strconv.Atoi(portStr);
 92694  		port = _tuple$1[0];
 92695  		err = _tuple$1[1];
 92696  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 92697  			$s = -1; return errors.New("proxy: failed to parse port number: " + portStr);
 92698  		}
 92699  		if (port < 1 || port > 65535) {
 92700  			$s = -1; return errors.New("proxy: port number out of range: " + portStr);
 92701  		}
 92702  		buf = $makeSlice(sliceType$3, 0, (6 + host.length >> 0));
 92703  		buf = $append(buf, 5);
 92704  		if (s.user.length > 0 && s.user.length < 256 && s.password.length < 256) {
 92705  			buf = $append(buf, 2, 0, 2);
 92706  		} else {
 92707  			buf = $append(buf, 1, 0);
 92708  		}
 92709  		_r$1 = conn.Write(buf); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 92710  		_tuple$2 = _r$1;
 92711  		err$1 = _tuple$2[1];
 92712  		/* */ if (!($interfaceIsEqual(err$1, $ifaceNil))) { $s = 3; continue; }
 92713  		/* */ $s = 4; continue;
 92714  		/* if (!($interfaceIsEqual(err$1, $ifaceNil))) { */ case 3:
 92715  			_r$2 = err$1.Error(); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 92716  			_r$3 = errors.New("proxy: failed to write greeting to SOCKS5 proxy at " + s.addr + ": " + _r$2); /* */ $s = 6; case 6: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 92717  			$s = -1; return _r$3;
 92718  		/* } */ case 4:
 92719  		_r$4 = io.ReadFull(conn, $subslice(buf, 0, 2)); /* */ $s = 7; case 7: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 92720  		_tuple$3 = _r$4;
 92721  		err$2 = _tuple$3[1];
 92722  		/* */ if (!($interfaceIsEqual(err$2, $ifaceNil))) { $s = 8; continue; }
 92723  		/* */ $s = 9; continue;
 92724  		/* if (!($interfaceIsEqual(err$2, $ifaceNil))) { */ case 8:
 92725  			_r$5 = err$2.Error(); /* */ $s = 10; case 10: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
 92726  			_r$6 = errors.New("proxy: failed to read greeting from SOCKS5 proxy at " + s.addr + ": " + _r$5); /* */ $s = 11; case 11: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
 92727  			$s = -1; return _r$6;
 92728  		/* } */ case 9:
 92729  		if (!(((0 >= buf.$length ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + 0]) === 5))) {
 92730  			$s = -1; return errors.New("proxy: SOCKS5 proxy at " + s.addr + " has unexpected version " + strconv.Itoa((((0 >= buf.$length ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + 0]) >> 0))));
 92731  		}
 92732  		if ((1 >= buf.$length ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + 1]) === 255) {
 92733  			$s = -1; return errors.New("proxy: SOCKS5 proxy at " + s.addr + " requires authentication");
 92734  		}
 92735  		/* */ if ((1 >= buf.$length ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + 1]) === 2) { $s = 12; continue; }
 92736  		/* */ $s = 13; continue;
 92737  		/* if ((1 >= buf.$length ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + 1]) === 2) { */ case 12:
 92738  			buf = $subslice(buf, 0, 0);
 92739  			buf = $append(buf, 1);
 92740  			buf = $append(buf, ((s.user.length << 24 >>> 24)));
 92741  			buf = $appendSlice(buf, s.user);
 92742  			buf = $append(buf, ((s.password.length << 24 >>> 24)));
 92743  			buf = $appendSlice(buf, s.password);
 92744  			_r$7 = conn.Write(buf); /* */ $s = 14; case 14: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
 92745  			_tuple$4 = _r$7;
 92746  			err$3 = _tuple$4[1];
 92747  			/* */ if (!($interfaceIsEqual(err$3, $ifaceNil))) { $s = 15; continue; }
 92748  			/* */ $s = 16; continue;
 92749  			/* if (!($interfaceIsEqual(err$3, $ifaceNil))) { */ case 15:
 92750  				_r$8 = err$3.Error(); /* */ $s = 17; case 17: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
 92751  				_r$9 = errors.New("proxy: failed to write authentication request to SOCKS5 proxy at " + s.addr + ": " + _r$8); /* */ $s = 18; case 18: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 92752  				$s = -1; return _r$9;
 92753  			/* } */ case 16:
 92754  			_r$10 = io.ReadFull(conn, $subslice(buf, 0, 2)); /* */ $s = 19; case 19: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
 92755  			_tuple$5 = _r$10;
 92756  			err$4 = _tuple$5[1];
 92757  			/* */ if (!($interfaceIsEqual(err$4, $ifaceNil))) { $s = 20; continue; }
 92758  			/* */ $s = 21; continue;
 92759  			/* if (!($interfaceIsEqual(err$4, $ifaceNil))) { */ case 20:
 92760  				_r$11 = err$4.Error(); /* */ $s = 22; case 22: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; }
 92761  				_r$12 = errors.New("proxy: failed to read authentication reply from SOCKS5 proxy at " + s.addr + ": " + _r$11); /* */ $s = 23; case 23: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; }
 92762  				$s = -1; return _r$12;
 92763  			/* } */ case 21:
 92764  			if (!(((1 >= buf.$length ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + 1]) === 0))) {
 92765  				$s = -1; return errors.New("proxy: SOCKS5 proxy at " + s.addr + " rejected username/password");
 92766  			}
 92767  		/* } */ case 13:
 92768  		buf = $subslice(buf, 0, 0);
 92769  		buf = $append(buf, 5, 1, 0);
 92770  		ip = net.ParseIP(host);
 92771  		if (!(ip === net.IP.nil)) {
 92772  			ip4 = ip.To4();
 92773  			if (!(ip4 === net.IP.nil)) {
 92774  				buf = $append(buf, 1);
 92775  				ip = ip4;
 92776  			} else {
 92777  				buf = $append(buf, 4);
 92778  			}
 92779  			buf = $appendSlice(buf, $subslice(new sliceType$3(ip.$array), ip.$offset, ip.$offset + ip.$length));
 92780  		} else {
 92781  			if (host.length > 255) {
 92782  				$s = -1; return errors.New("proxy: destination hostname too long: " + host);
 92783  			}
 92784  			buf = $append(buf, 3);
 92785  			buf = $append(buf, ((host.length << 24 >>> 24)));
 92786  			buf = $appendSlice(buf, host);
 92787  		}
 92788  		buf = $append(buf, (((port >> 8 >> 0) << 24 >>> 24)), ((port << 24 >>> 24)));
 92789  		_r$13 = conn.Write(buf); /* */ $s = 24; case 24: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; }
 92790  		_tuple$6 = _r$13;
 92791  		err$5 = _tuple$6[1];
 92792  		/* */ if (!($interfaceIsEqual(err$5, $ifaceNil))) { $s = 25; continue; }
 92793  		/* */ $s = 26; continue;
 92794  		/* if (!($interfaceIsEqual(err$5, $ifaceNil))) { */ case 25:
 92795  			_r$14 = err$5.Error(); /* */ $s = 27; case 27: if($c) { $c = false; _r$14 = _r$14.$blk(); } if (_r$14 && _r$14.$blk !== undefined) { break s; }
 92796  			_r$15 = errors.New("proxy: failed to write connect request to SOCKS5 proxy at " + s.addr + ": " + _r$14); /* */ $s = 28; case 28: if($c) { $c = false; _r$15 = _r$15.$blk(); } if (_r$15 && _r$15.$blk !== undefined) { break s; }
 92797  			$s = -1; return _r$15;
 92798  		/* } */ case 26:
 92799  		_r$16 = io.ReadFull(conn, $subslice(buf, 0, 4)); /* */ $s = 29; case 29: if($c) { $c = false; _r$16 = _r$16.$blk(); } if (_r$16 && _r$16.$blk !== undefined) { break s; }
 92800  		_tuple$7 = _r$16;
 92801  		err$6 = _tuple$7[1];
 92802  		/* */ if (!($interfaceIsEqual(err$6, $ifaceNil))) { $s = 30; continue; }
 92803  		/* */ $s = 31; continue;
 92804  		/* if (!($interfaceIsEqual(err$6, $ifaceNil))) { */ case 30:
 92805  			_r$17 = err$6.Error(); /* */ $s = 32; case 32: if($c) { $c = false; _r$17 = _r$17.$blk(); } if (_r$17 && _r$17.$blk !== undefined) { break s; }
 92806  			_r$18 = errors.New("proxy: failed to read connect reply from SOCKS5 proxy at " + s.addr + ": " + _r$17); /* */ $s = 33; case 33: if($c) { $c = false; _r$18 = _r$18.$blk(); } if (_r$18 && _r$18.$blk !== undefined) { break s; }
 92807  			$s = -1; return _r$18;
 92808  		/* } */ case 31:
 92809  		failure = "unknown error";
 92810  		if ((((1 >= buf.$length ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + 1]) >> 0)) < socks5Errors.$length) {
 92811  			failure = (x = (1 >= buf.$length ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + 1]), ((x < 0 || x >= socks5Errors.$length) ? ($throwRuntimeError("index out of range"), undefined) : socks5Errors.$array[socks5Errors.$offset + x]));
 92812  		}
 92813  		if (failure.length > 0) {
 92814  			$s = -1; return errors.New("proxy: SOCKS5 proxy at " + s.addr + " failed to connect: " + failure);
 92815  		}
 92816  		bytesToDiscard = 0;
 92817  			_1 = (3 >= buf.$length ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + 3]);
 92818  			/* */ if (_1 === (1)) { $s = 35; continue; }
 92819  			/* */ if (_1 === (4)) { $s = 36; continue; }
 92820  			/* */ if (_1 === (3)) { $s = 37; continue; }
 92821  			/* */ $s = 38; continue;
 92822  			/* if (_1 === (1)) { */ case 35:
 92823  				bytesToDiscard = 4;
 92824  				$s = 39; continue;
 92825  			/* } else if (_1 === (4)) { */ case 36:
 92826  				bytesToDiscard = 16;
 92827  				$s = 39; continue;
 92828  			/* } else if (_1 === (3)) { */ case 37:
 92829  				_r$19 = io.ReadFull(conn, $subslice(buf, 0, 1)); /* */ $s = 40; case 40: if($c) { $c = false; _r$19 = _r$19.$blk(); } if (_r$19 && _r$19.$blk !== undefined) { break s; }
 92830  				_tuple$8 = _r$19;
 92831  				err$7 = _tuple$8[1];
 92832  				/* */ if (!($interfaceIsEqual(err$7, $ifaceNil))) { $s = 41; continue; }
 92833  				/* */ $s = 42; continue;
 92834  				/* if (!($interfaceIsEqual(err$7, $ifaceNil))) { */ case 41:
 92835  					_r$20 = err$7.Error(); /* */ $s = 43; case 43: if($c) { $c = false; _r$20 = _r$20.$blk(); } if (_r$20 && _r$20.$blk !== undefined) { break s; }
 92836  					_r$21 = errors.New("proxy: failed to read domain length from SOCKS5 proxy at " + s.addr + ": " + _r$20); /* */ $s = 44; case 44: if($c) { $c = false; _r$21 = _r$21.$blk(); } if (_r$21 && _r$21.$blk !== undefined) { break s; }
 92837  					$s = -1; return _r$21;
 92838  				/* } */ case 42:
 92839  				bytesToDiscard = (((0 >= buf.$length ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + 0]) >> 0));
 92840  				$s = 39; continue;
 92841  			/* } else { */ case 38:
 92842  				$s = -1; return errors.New("proxy: got unknown address type " + strconv.Itoa((((3 >= buf.$length ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + 3]) >> 0))) + " from SOCKS5 proxy at " + s.addr);
 92843  			/* } */ case 39:
 92844  		case 34:
 92845  		if (buf.$capacity < bytesToDiscard) {
 92846  			buf = $makeSlice(sliceType$3, bytesToDiscard);
 92847  		} else {
 92848  			buf = $subslice(buf, 0, bytesToDiscard);
 92849  		}
 92850  		_r$22 = io.ReadFull(conn, buf); /* */ $s = 45; case 45: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; }
 92851  		_tuple$9 = _r$22;
 92852  		err$8 = _tuple$9[1];
 92853  		/* */ if (!($interfaceIsEqual(err$8, $ifaceNil))) { $s = 46; continue; }
 92854  		/* */ $s = 47; continue;
 92855  		/* if (!($interfaceIsEqual(err$8, $ifaceNil))) { */ case 46:
 92856  			_r$23 = err$8.Error(); /* */ $s = 48; case 48: if($c) { $c = false; _r$23 = _r$23.$blk(); } if (_r$23 && _r$23.$blk !== undefined) { break s; }
 92857  			_r$24 = errors.New("proxy: failed to read address from SOCKS5 proxy at " + s.addr + ": " + _r$23); /* */ $s = 49; case 49: if($c) { $c = false; _r$24 = _r$24.$blk(); } if (_r$24 && _r$24.$blk !== undefined) { break s; }
 92858  			$s = -1; return _r$24;
 92859  		/* } */ case 47:
 92860  		_r$25 = io.ReadFull(conn, $subslice(buf, 0, 2)); /* */ $s = 50; case 50: if($c) { $c = false; _r$25 = _r$25.$blk(); } if (_r$25 && _r$25.$blk !== undefined) { break s; }
 92861  		_tuple$10 = _r$25;
 92862  		err$9 = _tuple$10[1];
 92863  		/* */ if (!($interfaceIsEqual(err$9, $ifaceNil))) { $s = 51; continue; }
 92864  		/* */ $s = 52; continue;
 92865  		/* if (!($interfaceIsEqual(err$9, $ifaceNil))) { */ case 51:
 92866  			_r$26 = err$9.Error(); /* */ $s = 53; case 53: if($c) { $c = false; _r$26 = _r$26.$blk(); } if (_r$26 && _r$26.$blk !== undefined) { break s; }
 92867  			_r$27 = errors.New("proxy: failed to read port from SOCKS5 proxy at " + s.addr + ": " + _r$26); /* */ $s = 54; case 54: if($c) { $c = false; _r$27 = _r$27.$blk(); } if (_r$27 && _r$27.$blk !== undefined) { break s; }
 92868  			$s = -1; return _r$27;
 92869  		/* } */ case 52:
 92870  		$s = -1; return $ifaceNil;
 92871  		/* */ } return; } if ($f === undefined) { $f = { $blk: socks5.ptr.prototype.connect }; } $f._1 = _1; $f._r = _r; $f._r$1 = _r$1; $f._r$10 = _r$10; $f._r$11 = _r$11; $f._r$12 = _r$12; $f._r$13 = _r$13; $f._r$14 = _r$14; $f._r$15 = _r$15; $f._r$16 = _r$16; $f._r$17 = _r$17; $f._r$18 = _r$18; $f._r$19 = _r$19; $f._r$2 = _r$2; $f._r$20 = _r$20; $f._r$21 = _r$21; $f._r$22 = _r$22; $f._r$23 = _r$23; $f._r$24 = _r$24; $f._r$25 = _r$25; $f._r$26 = _r$26; $f._r$27 = _r$27; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._r$8 = _r$8; $f._r$9 = _r$9; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$10 = _tuple$10; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f._tuple$4 = _tuple$4; $f._tuple$5 = _tuple$5; $f._tuple$6 = _tuple$6; $f._tuple$7 = _tuple$7; $f._tuple$8 = _tuple$8; $f._tuple$9 = _tuple$9; $f.buf = buf; $f.bytesToDiscard = bytesToDiscard; $f.conn = conn; $f.err = err; $f.err$1 = err$1; $f.err$2 = err$2; $f.err$3 = err$3; $f.err$4 = err$4; $f.err$5 = err$5; $f.err$6 = err$6; $f.err$7 = err$7; $f.err$8 = err$8; $f.err$9 = err$9; $f.failure = failure; $f.host = host; $f.ip = ip; $f.ip4 = ip4; $f.port = port; $f.portStr = portStr; $f.s = s; $f.target = target; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
 92872  	};
 92873  	socks5.prototype.connect = function(conn, target) { return this.$val.connect(conn, target); };
 92874  	ptrType$4.methods = [{prop: "Dial", name: "Dial", pkg: "", typ: $funcType([$String, $String], [net.Conn, $error], false)}, {prop: "connect", name: "connect", pkg: "vendor/golang_org/x/net/proxy", typ: $funcType([net.Conn, $String], [$error], false)}];
 92875  	Dialer.init([{prop: "Dial", name: "Dial", pkg: "", typ: $funcType([$String, $String], [net.Conn, $error], false)}]);
 92876  	Auth.init("", [{prop: "User", name: "User", anonymous: false, exported: true, typ: $String, tag: ""}, {prop: "Password", name: "Password", anonymous: false, exported: true, typ: $String, tag: ""}]);
 92877  	socks5.init("vendor/golang_org/x/net/proxy", [{prop: "user", name: "user", anonymous: false, exported: false, typ: $String, tag: ""}, {prop: "password", name: "password", anonymous: false, exported: false, typ: $String, tag: ""}, {prop: "network", name: "network", anonymous: false, exported: false, typ: $String, tag: ""}, {prop: "addr", name: "addr", anonymous: false, exported: false, typ: $String, tag: ""}, {prop: "forward", name: "forward", anonymous: false, exported: false, typ: Dialer, tag: ""}]);
 92878  	$init = function() {
 92879  		$pkg.$init = function() {};
 92880  		/* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 92881  		$r = errors.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 92882  		$r = io.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 92883  		$r = net.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 92884  		$r = url.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 92885  		$r = os.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 92886  		$r = strconv.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 92887  		$r = strings.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 92888  		socks5Errors = new sliceType(["", "general failure", "connection forbidden", "network unreachable", "host unreachable", "connection refused", "TTL expired", "command not supported", "address type not supported"]);
 92889  		/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
 92890  	};
 92891  	$pkg.$init = $init;
 92892  	return $pkg;
 92893  })();
 92894  $packages["net/http"] = (function() {
 92895  	var $pkg = {}, $init, bufio, bytes, gzip, list, context, rand, tls, base64, binary, errors, fmt, js, io, ioutil, log, math, rand$1, mime, multipart, net, httptrace, internal, textproto, url, os, path, filepath, reflect, runtime, sort, strconv, strings, sync, atomic, time, utf8, hpack, idna, httplex, proxy, streamReader, fetchTransport, noTransport, XHRTransport, Client, RoundTripper, cancelTimerBody, Cookie, http2ClientConnPool, http2clientConnPoolIdleCloser, http2clientConnPool, http2dialCall, http2addConnCall, http2noDialClientConnPool, http2noDialH2RoundTripper, http2dataBuffer, http2ErrCode, http2ConnectionError, http2StreamError, http2goAwayFlowError, http2connError, http2pseudoHeaderError, http2duplicatePseudoHeaderError, http2headerFieldNameError, http2headerFieldValueError, http2flow, http2FrameType, http2Flags, http2FrameHeader, http2Frame, http2Framer, http2frameCache, http2DataFrame, http2SettingsFrame, http2PingFrame, http2GoAwayFrame, http2UnknownFrame, http2WindowUpdateFrame, http2HeadersFrame, http2HeadersFrameParam, http2PriorityFrame, http2PriorityParam, http2RSTStreamFrame, http2ContinuationFrame, http2PushPromiseFrame, http2PushPromiseParam, http2MetaHeadersFrame, http2contextContext, http2clientTrace, http2goroutineLock, http2streamState, http2Setting, http2SettingID, http2gate, http2closeWaiter, http2bufferedWriter, http2httpError, http2connectionStater, http2sorter, http2pipe, http2pipeBuffer, http2Server, http2serverInternalState, http2ServeConnOpts, http2serverConn, http2stream, http2readFrameResult, http2frameWriteResult, http2serverMessage, http2requestParam, http2bodyReadMsg, http2requestBody, http2responseWriter, http2responseWriterState, http2chunkWriter, http2pushOptions, http2startPushRequest, http2Transport, http2ClientConn, http2clientStream, http2stickyErrWriter, http2noCachedConnError, http2RoundTripOpt, http2badStringError, http2resAndError, http2clientConnReadLoop, http2GoAwayError, http2transportResponseBody, http2erringRoundTripper, http2gzipReader, http2bodyWriterState, http2writeFramer, http2writeContext, http2flushFrameWriter, http2writeSettings, http2writeGoAway, http2writeData, http2handlerPanicRST, http2writePingAck, http2writeSettingsAck, http2writeResHeaders, http2writePushPromise, http2write100ContinueHeadersFrame, http2writeWindowUpdate, http2WriteScheduler, http2OpenStreamOptions, http2FrameWriteRequest, http2writeQueue, http2writeQueuePool, http2PriorityWriteSchedulerConfig, http2priorityNodeState, http2priorityNode, http2sortPriorityNodeSiblings, http2priorityWriteScheduler, http2randomWriteScheduler, Header, writeStringer, stringWriter, keyValues, headerSorter, contextKey, noBody, PushOptions, CookieJar, ProtocolError, badStringError, Request, requestBodyReadError, maxBytesReader, Response, Handler, ResponseWriter, conn, chunkWriter, response, atomicBool, writerOnly, readResult, connReader, expectContinueReader, extraHeader, closeWriter, badRequestError, HandlerFunc, redirectHandler, ServeMux, muxEntry, Server, ConnState, serverHandler, tcpKeepAliveListener, globalOptionsHandler, initNPNRequest, loggingConn, checkConnErrorWriter, sniffSig, exactSig, maskedSig, htmlSig, mp4Sig, textSig, errorReader, byteReader, transferBodyReader, transferWriter, transferReader, body, bodyLocked, finishAsyncByteRead, Transport, transportRequest, transportReadFromServerError, oneConnDialer, persistConnWriter, connectMethod, connectMethodKey, persistConn, nothingWrittenError, responseAndError, requestAndChan, writeRequest, httpError, tLogKey, bodyEOFSignal, gzipReader, tlsHandshakeTimeoutError, fakeLocker, connLRU, canceler, I, requestTooLarger, dialRes, ptrType, sliceType, ptrType$1, ptrType$2, sliceType$1, ptrType$3, sliceType$2, sliceType$3, ptrType$4, ptrType$5, ptrType$6, ptrType$7, ptrType$8, ptrType$9, ptrType$10, ptrType$11, chanType, sliceType$4, sliceType$5, sliceType$6, ptrType$13, ptrType$14, ptrType$15, ptrType$16, funcType, ptrType$17, mapType, funcType$1, ptrType$18, funcType$2, ptrType$19, ptrType$20, ptrType$21, structType, ptrType$22, ptrType$23, sliceType$7, ptrType$24, ptrType$25, sliceType$8, arrayType, ptrType$28, sliceType$10, ptrType$29, ptrType$30, sliceType$11, ptrType$31, sliceType$12, arrayType$2, sliceType$13, sliceType$14, ptrType$32, ptrType$33, ptrType$34, arrayType$3, ptrType$35, ptrType$36, ptrType$37, arrayType$4, sliceType$15, ptrType$38, ptrType$39, ptrType$40, ptrType$41, ptrType$42, ptrType$43, ptrType$44, ptrType$45, ptrType$46, ptrType$47, ptrType$48, ptrType$49, ptrType$50, ptrType$51, ptrType$52, ptrType$53, ptrType$54, sliceType$16, ptrType$55, ptrType$56, ptrType$57, ptrType$58, sliceType$17, sliceType$18, ptrType$59, ptrType$60, funcType$3, ptrType$61, ptrType$62, ptrType$63, ptrType$64, ptrType$65, ptrType$66, ptrType$67, ptrType$68, ptrType$69, ptrType$70, interfaceType, ptrType$71, ptrType$72, sliceType$19, ptrType$73, ptrType$74, ptrType$75, ptrType$76, sliceType$20, ptrType$77, ptrType$78, ptrType$79, sliceType$21, ptrType$80, ptrType$81, ptrType$82, ptrType$83, ptrType$84, ptrType$85, ptrType$86, ptrType$87, ptrType$88, sliceType$22, arrayType$5, sliceType$23, structType$1, ptrType$89, ptrType$90, ptrType$91, ptrType$92, ptrType$93, ptrType$94, ptrType$95, ptrType$96, ptrType$97, arrayType$6, arrayType$7, arrayType$8, ptrType$98, ptrType$99, ptrType$100, ptrType$101, mapType$1, ptrType$102, sliceType$24, ptrType$103, ptrType$104, ptrType$105, funcType$4, ptrType$106, ptrType$107, ptrType$108, mapType$2, funcType$5, funcType$6, ptrType$109, funcType$7, ptrType$110, mapType$3, mapType$4, mapType$5, mapType$6, chanType$2, ptrType$113, ptrType$114, funcType$8, funcType$9, ptrType$115, chanType$3, funcType$10, funcType$11, funcType$12, funcType$13, funcType$14, funcType$15, funcType$16, funcType$17, funcType$18, ptrType$116, funcType$19, mapType$7, funcType$20, chanType$4, chanType$5, chanType$6, chanType$7, chanType$8, mapType$8, mapType$9, chanType$9, chanType$10, funcType$21, mapType$10, mapType$11, chanType$11, ptrType$117, ptrType$118, ptrType$119, ptrType$120, funcType$22, ptrType$121, funcType$23, ptrType$122, mapType$12, ptrType$123, mapType$13, mapType$14, ptrType$124, ptrType$125, ptrType$126, funcType$24, ptrType$127, ptrType$128, ptrType$129, mapType$15, funcType$25, mapType$16, funcType$26, mapType$17, mapType$18, ptrType$132, ptrType$133, ptrType$134, ptrType$135, chanType$12, ptrType$136, ptrType$137, chanType$13, mapType$19, mapType$20, mapType$21, funcType$27, funcType$28, funcType$29, funcType$30, mapType$22, ptrType$139, chanType$14, chanType$15, funcType$31, chanType$16, chanType$17, chanType$18, ptrType$140, funcType$32, funcType$33, ptrType$141, ptrType$142, mapType$23, cookieNameSanitizer, errSeeker, errNoOverlap, unixEpochTime, http2dataChunkSizeClasses, http2dataChunkPools, http2errReadEmpty, http2errCodeName, http2errMixPseudoHeaderTypes, http2errPseudoAfterRegular, http2padZeros, http2frameName, http2flagName, http2frameParsers, http2fhBytes, http2ErrFrameTooLarge, http2errStreamID, http2errDepStreamID, http2errPadLength, http2errPadBytes, http2DebugGoroutines, http2goroutineSpace, http2littleBuf, http2commonLowerHeader, http2commonCanonHeader, http2VerboseLogs, http2logFrameWrites, http2logFrameReads, http2inTests, http2clientPreface, http2stateName, http2settingName, http2errInvalidHeaderFieldName, http2errInvalidHeaderFieldValue, http2httpCodeStringCommon, http2bufWriterPool, http2errTimeout, http2sorterPool, http2errClosedPipeWrite, http2errClientDisconnected, http2errClosedBody, http2errHandlerComplete, http2errStreamClosed, http2responseWriterStatePool, http2testHookOnConn, http2testHookGetServerConn, http2testHookOnPanicMu, http2testHookOnPanic, http2settingsTimerMsg, http2idleTimerMsg, http2shutdownTimerMsg, http2gracefulShutdownMsg, http2errPrefaceTimeout, http2errChanPool, http2writeDataPool, http2errHandlerPanicked, http2goAwayTimeout, http2ErrRecursivePush, http2ErrPushLimitReached, http2connHeaders, http2badTrailer, http2errTransportVersion, http2ErrNoCachedConn, http2errClientConnClosed, http2errClientConnUnusable, http2errClientConnGotGoAway, http2errRequestCanceled, http2errStopReqBodyWrite, http2errStopReqBodyWriteAndCancel, http2errClosedResponseBody, http2errInvalidTrailers, http2errResponseHeaderListSize, http2errRequestHeaderListSize, http2errPseudoTrailers, http2noBody, headerNewlineToSpace, headerSorterPool, aLongTimeAgo, reqWriteExcludeHeader, multipartByReader, errMissingHost, textprotoReaderPool, respExcludeHeader, crlf, colonSpace, bufioReaderPool, bufioWriter2kPool, bufioWriter2kPool$24ptr, bufioWriter4kPool, bufioWriter4kPool$24ptr, copyBufPool, errTooLarge, extraHeaderKeys, headerContentLength, headerDate, connStateInterface, parseURL, htmlReplacer, defaultServeMux, defaultServeMux$24ptr, shutdownPollInterval, stateName, testHookServerServe, uniqNameMu, uniqNameNext, sniffSignatures, mp4ftype, mp4, statusText, suppressedHeaders304, suppressedHeadersNoBody, singleCRLF, doubleCRLF, errTrailerEOF, errKeepAlivesDisabled, errConnBroken, errWantIdle, errTooManyIdle, errTooManyIdleHost, errCloseIdleConns, errReadLoopExiting, errIdleConnTimeout, errNotCachingH2Conn, errServerClosedIdle, zeroDialer, errTimeout, errRequestCanceled, errRequestCanceledConn, testHookEnterRoundTrip, testHookWaitResLoop, testHookRoundTripRetried, testHookPrePendingDial, testHookPostPendingDial, testHookMu, testHookReadLoopBeforeNextRead, portMap, errReadOnClosedResBody, _r, x, x$1, x$2, x$3, refererForURL, send, setRequestCancel, basicAuth, Get, alwaysFalse, redirectBehavior, defaultCheckRedirect, shouldCopyHeaderOnRedirect, isDomainOrSubdomain, readSetCookies, readCookies, validCookieDomain, validCookieExpires, isCookieDomainName, sanitizeCookieName, sanitizeCookieValue, validCookieValueByte, sanitizeCookiePath, validCookiePathByte, sanitizeOrWarn, parseCookieValue, isCookieNameValid, http2isBadCipher, http2filterOutClientConn, http2configureTransport, http2registerHTTPSProtocol, http2getDataBufferChunk, http2putDataBufferChunk, http2streamError, http2typeFrameParser, http2readFrameHeader, http2NewFramer, http2terminalReadFrameError, http2parseDataFrame, http2validStreamIDOrZero, http2validStreamID, http2parseSettingsFrame, http2parsePingFrame, http2parseGoAwayFrame, http2parseUnknownFrame, http2parseWindowUpdateFrame, http2parseHeadersFrame, http2parsePriorityFrame, http2parseRSTStreamFrame, http2parseContinuationFrame, http2parsePushPromise, http2readByte, http2readUint32, http2summarizeFrame, http2transportExpectContinueTimeout, http2serverConnBaseContext, http2contextWithCancel, http2requestWithContext, http2reqContext, http2setResponseUncompressed, http2traceGotConn, http2traceWroteHeaders, http2traceGot100Continue, http2traceWait100Continue, http2traceWroteRequest, http2traceFirstResponseByte, http2requestTrace, http2cloneTLSConfig, http2configureServer18, http2shouldLogPanic, http2reqGetBody, http2reqBodyIsNoBody, http2configureServer19, http2newGoroutineLock, http2curGoroutineID, http2parseUintBytes, http2cutoff64, init, http2lowerHeader, init$1, http2validWireHeaderFieldName, init$2, http2httpCodeString, http2newBufferedWriter, http2mustUint31, http2bodyAllowedForStatus, http2validPseudoPath, http2ConfigureServer, http2errno, http2isClosedConnError, http2checkPriority, http2handleHeaderListTooLong, http2checkWriteHeaderCode, http2cloneHeader, http2foreachHeaderElement, http2checkValidHTTP2RequestHeaders, http2new400Handler, http2ValidTrailerHeader, http2h1ServerKeepAlivesDisabled, http2awaitRequestCancel, http2isNoCachedConnError, http2authorityAddr, http2shouldRetryRequest, http2canRetryError, http2commaSeparatedTrailers, http2checkConnHeaders, http2actualContentLength, http2shouldSendReqContentLength, http2isEOFOrNetReadError, http2strSliceContains, http2isConnectionCloseRequest, http2writeEndsStream, http2splitHeaderBlock, http2encKV, http2encodeHeaders, http2NewPriorityWriteScheduler, http2NewRandomWriteScheduler, CanonicalHeaderKey, hasToken, isTokenBoundary, cloneHeader, hasPort, removeEmptyPort, isNotToken, isASCII, hexEscapeNonASCII, valueOrDefault, idnaASCII, cleanHost, removeZone, ParseHTTPVersion, validMethod, NewRequest, parseBasicAuth, parseRequestLine, newTextprotoReader, putTextprotoReader, readRequest, MaxBytesReader, copyValues, parsePostForm, requestMethodUsuallyLacksBody, ReadResponse, fixPragmaCacheControl, srcIsRegularFile, bufioWriterPool, newBufioReader, putBufioReader, newBufioWriterSize, putBufioWriter, appendTime, http1ServerSupportsRequest, checkWriteHeaderCode, foreachHeaderElement, writeStatusLine, validNPN, isCommonNetReadError, registerOnHitEOF, requestBodyRemains, Error, NotFound, NotFoundHandler, Redirect, htmlEscape, RedirectHandler, pathMatch, cleanPath, stripHostPort, newLoggingConn, numLeadingCRorLF, strSliceContains, DetectContentType, isWS, StatusText, newTransferWriter, noResponseBodyExpected, bodyAllowedForStatus, suppressedHeaders, readTransfer, chunked, isIdentity, fixLength, shouldClose, fixTrailer, seeUpcomingDoubleCRLF, mergeSetHeader, parseContentLength, newOneConnDialer, nop, canonicalAddr, cloneTLSConfig, validPort;
 92896  	bufio = $packages["bufio"];
 92897  	bytes = $packages["bytes"];
 92898  	gzip = $packages["compress/gzip"];
 92899  	list = $packages["container/list"];
 92900  	context = $packages["context"];
 92901  	rand = $packages["crypto/rand"];
 92902  	tls = $packages["crypto/tls"];
 92903  	base64 = $packages["encoding/base64"];
 92904  	binary = $packages["encoding/binary"];
 92905  	errors = $packages["errors"];
 92906  	fmt = $packages["fmt"];
 92907  	js = $packages["github.com/gopherjs/gopherjs/js"];
 92908  	io = $packages["io"];
 92909  	ioutil = $packages["io/ioutil"];
 92910  	log = $packages["log"];
 92911  	math = $packages["math"];
 92912  	rand$1 = $packages["math/rand"];
 92913  	mime = $packages["mime"];
 92914  	multipart = $packages["mime/multipart"];
 92915  	net = $packages["net"];
 92916  	httptrace = $packages["net/http/httptrace"];
 92917  	internal = $packages["net/http/internal"];
 92918  	textproto = $packages["net/textproto"];
 92919  	url = $packages["net/url"];
 92920  	os = $packages["os"];
 92921  	path = $packages["path"];
 92922  	filepath = $packages["path/filepath"];
 92923  	reflect = $packages["reflect"];
 92924  	runtime = $packages["runtime"];
 92925  	sort = $packages["sort"];
 92926  	strconv = $packages["strconv"];
 92927  	strings = $packages["strings"];
 92928  	sync = $packages["sync"];
 92929  	atomic = $packages["sync/atomic"];
 92930  	time = $packages["time"];
 92931  	utf8 = $packages["unicode/utf8"];
 92932  	hpack = $packages["vendor/golang_org/x/net/http2/hpack"];
 92933  	idna = $packages["vendor/golang_org/x/net/idna"];
 92934  	httplex = $packages["vendor/golang_org/x/net/lex/httplex"];
 92935  	proxy = $packages["vendor/golang_org/x/net/proxy"];
 92936  	streamReader = $pkg.streamReader = $newType(0, $kindStruct, "http.streamReader", true, "net/http", false, function(pending_, stream_) {
 92937  		this.$val = this;
 92938  		if (arguments.length === 0) {
 92939  			this.pending = sliceType$3.nil;
 92940  			this.stream = null;
 92941  			return;
 92942  		}
 92943  		this.pending = pending_;
 92944  		this.stream = stream_;
 92945  	});
 92946  	fetchTransport = $pkg.fetchTransport = $newType(0, $kindStruct, "http.fetchTransport", true, "net/http", false, function() {
 92947  		this.$val = this;
 92948  		if (arguments.length === 0) {
 92949  			return;
 92950  		}
 92951  	});
 92952  	noTransport = $pkg.noTransport = $newType(0, $kindStruct, "http.noTransport", true, "net/http", false, function() {
 92953  		this.$val = this;
 92954  		if (arguments.length === 0) {
 92955  			return;
 92956  		}
 92957  	});
 92958  	XHRTransport = $pkg.XHRTransport = $newType(0, $kindStruct, "http.XHRTransport", true, "net/http", true, function(inflight_) {
 92959  		this.$val = this;
 92960  		if (arguments.length === 0) {
 92961  			this.inflight = false;
 92962  			return;
 92963  		}
 92964  		this.inflight = inflight_;
 92965  	});
 92966  	Client = $pkg.Client = $newType(0, $kindStruct, "http.Client", true, "net/http", true, function(Transport_, CheckRedirect_, Jar_, Timeout_) {
 92967  		this.$val = this;
 92968  		if (arguments.length === 0) {
 92969  			this.Transport = $ifaceNil;
 92970  			this.CheckRedirect = $throwNilPointerError;
 92971  			this.Jar = $ifaceNil;
 92972  			this.Timeout = new time.Duration(0, 0);
 92973  			return;
 92974  		}
 92975  		this.Transport = Transport_;
 92976  		this.CheckRedirect = CheckRedirect_;
 92977  		this.Jar = Jar_;
 92978  		this.Timeout = Timeout_;
 92979  	});
 92980  	RoundTripper = $pkg.RoundTripper = $newType(8, $kindInterface, "http.RoundTripper", true, "net/http", true, null);
 92981  	cancelTimerBody = $pkg.cancelTimerBody = $newType(0, $kindStruct, "http.cancelTimerBody", true, "net/http", false, function(stop_, rc_, reqDidTimeout_) {
 92982  		this.$val = this;
 92983  		if (arguments.length === 0) {
 92984  			this.stop = $throwNilPointerError;
 92985  			this.rc = $ifaceNil;
 92986  			this.reqDidTimeout = $throwNilPointerError;
 92987  			return;
 92988  		}
 92989  		this.stop = stop_;
 92990  		this.rc = rc_;
 92991  		this.reqDidTimeout = reqDidTimeout_;
 92992  	});
 92993  	Cookie = $pkg.Cookie = $newType(0, $kindStruct, "http.Cookie", true, "net/http", true, function(Name_, Value_, Path_, Domain_, Expires_, RawExpires_, MaxAge_, Secure_, HttpOnly_, Raw_, Unparsed_) {
 92994  		this.$val = this;
 92995  		if (arguments.length === 0) {
 92996  			this.Name = "";
 92997  			this.Value = "";
 92998  			this.Path = "";
 92999  			this.Domain = "";
 93000  			this.Expires = new time.Time.ptr(new $Uint64(0, 0), new $Int64(0, 0), ptrType$1.nil);
 93001  			this.RawExpires = "";
 93002  			this.MaxAge = 0;
 93003  			this.Secure = false;
 93004  			this.HttpOnly = false;
 93005  			this.Raw = "";
 93006  			this.Unparsed = sliceType$1.nil;
 93007  			return;
 93008  		}
 93009  		this.Name = Name_;
 93010  		this.Value = Value_;
 93011  		this.Path = Path_;
 93012  		this.Domain = Domain_;
 93013  		this.Expires = Expires_;
 93014  		this.RawExpires = RawExpires_;
 93015  		this.MaxAge = MaxAge_;
 93016  		this.Secure = Secure_;
 93017  		this.HttpOnly = HttpOnly_;
 93018  		this.Raw = Raw_;
 93019  		this.Unparsed = Unparsed_;
 93020  	});
 93021  	http2ClientConnPool = $pkg.http2ClientConnPool = $newType(8, $kindInterface, "http.http2ClientConnPool", true, "net/http", false, null);
 93022  	http2clientConnPoolIdleCloser = $pkg.http2clientConnPoolIdleCloser = $newType(8, $kindInterface, "http.http2clientConnPoolIdleCloser", true, "net/http", false, null);
 93023  	http2clientConnPool = $pkg.http2clientConnPool = $newType(0, $kindStruct, "http.http2clientConnPool", true, "net/http", false, function(t_, mu_, conns_, dialing_, keys_, addConnCalls_) {
 93024  		this.$val = this;
 93025  		if (arguments.length === 0) {
 93026  			this.t = ptrType$15.nil;
 93027  			this.mu = new sync.Mutex.ptr(0, 0);
 93028  			this.conns = false;
 93029  			this.dialing = false;
 93030  			this.keys = false;
 93031  			this.addConnCalls = false;
 93032  			return;
 93033  		}
 93034  		this.t = t_;
 93035  		this.mu = mu_;
 93036  		this.conns = conns_;
 93037  		this.dialing = dialing_;
 93038  		this.keys = keys_;
 93039  		this.addConnCalls = addConnCalls_;
 93040  	});
 93041  	http2dialCall = $pkg.http2dialCall = $newType(0, $kindStruct, "http.http2dialCall", true, "net/http", false, function(p_, done_, res_, err_) {
 93042  		this.$val = this;
 93043  		if (arguments.length === 0) {
 93044  			this.p = ptrType$3.nil;
 93045  			this.done = $chanNil;
 93046  			this.res = ptrType$28.nil;
 93047  			this.err = $ifaceNil;
 93048  			return;
 93049  		}
 93050  		this.p = p_;
 93051  		this.done = done_;
 93052  		this.res = res_;
 93053  		this.err = err_;
 93054  	});
 93055  	http2addConnCall = $pkg.http2addConnCall = $newType(0, $kindStruct, "http.http2addConnCall", true, "net/http", false, function(p_, done_, err_) {
 93056  		this.$val = this;
 93057  		if (arguments.length === 0) {
 93058  			this.p = ptrType$3.nil;
 93059  			this.done = $chanNil;
 93060  			this.err = $ifaceNil;
 93061  			return;
 93062  		}
 93063  		this.p = p_;
 93064  		this.done = done_;
 93065  		this.err = err_;
 93066  	});
 93067  	http2noDialClientConnPool = $pkg.http2noDialClientConnPool = $newType(0, $kindStruct, "http.http2noDialClientConnPool", true, "net/http", false, function(http2clientConnPool_) {
 93068  		this.$val = this;
 93069  		if (arguments.length === 0) {
 93070  			this.http2clientConnPool = ptrType$3.nil;
 93071  			return;
 93072  		}
 93073  		this.http2clientConnPool = http2clientConnPool_;
 93074  	});
 93075  	http2noDialH2RoundTripper = $pkg.http2noDialH2RoundTripper = $newType(0, $kindStruct, "http.http2noDialH2RoundTripper", true, "net/http", false, function(t_) {
 93076  		this.$val = this;
 93077  		if (arguments.length === 0) {
 93078  			this.t = ptrType$15.nil;
 93079  			return;
 93080  		}
 93081  		this.t = t_;
 93082  	});
 93083  	http2dataBuffer = $pkg.http2dataBuffer = $newType(0, $kindStruct, "http.http2dataBuffer", true, "net/http", false, function(chunks_, r_, w_, size_, expected_) {
 93084  		this.$val = this;
 93085  		if (arguments.length === 0) {
 93086  			this.chunks = sliceType$5.nil;
 93087  			this.r = 0;
 93088  			this.w = 0;
 93089  			this.size = 0;
 93090  			this.expected = new $Int64(0, 0);
 93091  			return;
 93092  		}
 93093  		this.chunks = chunks_;
 93094  		this.r = r_;
 93095  		this.w = w_;
 93096  		this.size = size_;
 93097  		this.expected = expected_;
 93098  	});
 93099  	http2ErrCode = $pkg.http2ErrCode = $newType(4, $kindUint32, "http.http2ErrCode", true, "net/http", false, null);
 93100  	http2ConnectionError = $pkg.http2ConnectionError = $newType(4, $kindUint32, "http.http2ConnectionError", true, "net/http", false, null);
 93101  	http2StreamError = $pkg.http2StreamError = $newType(0, $kindStruct, "http.http2StreamError", true, "net/http", false, function(StreamID_, Code_, Cause_) {
 93102  		this.$val = this;
 93103  		if (arguments.length === 0) {
 93104  			this.StreamID = 0;
 93105  			this.Code = 0;
 93106  			this.Cause = $ifaceNil;
 93107  			return;
 93108  		}
 93109  		this.StreamID = StreamID_;
 93110  		this.Code = Code_;
 93111  		this.Cause = Cause_;
 93112  	});
 93113  	http2goAwayFlowError = $pkg.http2goAwayFlowError = $newType(0, $kindStruct, "http.http2goAwayFlowError", true, "net/http", false, function() {
 93114  		this.$val = this;
 93115  		if (arguments.length === 0) {
 93116  			return;
 93117  		}
 93118  	});
 93119  	http2connError = $pkg.http2connError = $newType(0, $kindStruct, "http.http2connError", true, "net/http", false, function(Code_, Reason_) {
 93120  		this.$val = this;
 93121  		if (arguments.length === 0) {
 93122  			this.Code = 0;
 93123  			this.Reason = "";
 93124  			return;
 93125  		}
 93126  		this.Code = Code_;
 93127  		this.Reason = Reason_;
 93128  	});
 93129  	http2pseudoHeaderError = $pkg.http2pseudoHeaderError = $newType(8, $kindString, "http.http2pseudoHeaderError", true, "net/http", false, null);
 93130  	http2duplicatePseudoHeaderError = $pkg.http2duplicatePseudoHeaderError = $newType(8, $kindString, "http.http2duplicatePseudoHeaderError", true, "net/http", false, null);
 93131  	http2headerFieldNameError = $pkg.http2headerFieldNameError = $newType(8, $kindString, "http.http2headerFieldNameError", true, "net/http", false, null);
 93132  	http2headerFieldValueError = $pkg.http2headerFieldValueError = $newType(8, $kindString, "http.http2headerFieldValueError", true, "net/http", false, null);
 93133  	http2flow = $pkg.http2flow = $newType(0, $kindStruct, "http.http2flow", true, "net/http", false, function(n_, conn_) {
 93134  		this.$val = this;
 93135  		if (arguments.length === 0) {
 93136  			this.n = 0;
 93137  			this.conn = ptrType$32.nil;
 93138  			return;
 93139  		}
 93140  		this.n = n_;
 93141  		this.conn = conn_;
 93142  	});
 93143  	http2FrameType = $pkg.http2FrameType = $newType(1, $kindUint8, "http.http2FrameType", true, "net/http", false, null);
 93144  	http2Flags = $pkg.http2Flags = $newType(1, $kindUint8, "http.http2Flags", true, "net/http", false, null);
 93145  	http2FrameHeader = $pkg.http2FrameHeader = $newType(0, $kindStruct, "http.http2FrameHeader", true, "net/http", false, function(valid_, Type_, Flags_, Length_, StreamID_) {
 93146  		this.$val = this;
 93147  		if (arguments.length === 0) {
 93148  			this.valid = false;
 93149  			this.Type = 0;
 93150  			this.Flags = 0;
 93151  			this.Length = 0;
 93152  			this.StreamID = 0;
 93153  			return;
 93154  		}
 93155  		this.valid = valid_;
 93156  		this.Type = Type_;
 93157  		this.Flags = Flags_;
 93158  		this.Length = Length_;
 93159  		this.StreamID = StreamID_;
 93160  	});
 93161  	http2Frame = $pkg.http2Frame = $newType(8, $kindInterface, "http.http2Frame", true, "net/http", false, null);
 93162  	http2Framer = $pkg.http2Framer = $newType(0, $kindStruct, "http.http2Framer", true, "net/http", false, function(r_, lastFrame_, errDetail_, lastHeaderStream_, maxReadSize_, headerBuf_, getReadBuf_, readBuf_, maxWriteSize_, w_, wbuf_, AllowIllegalWrites_, AllowIllegalReads_, ReadMetaHeaders_, MaxHeaderListSize_, logReads_, logWrites_, debugFramer_, debugFramerBuf_, debugReadLoggerf_, debugWriteLoggerf_, frameCache_) {
 93163  		this.$val = this;
 93164  		if (arguments.length === 0) {
 93165  			this.r = $ifaceNil;
 93166  			this.lastFrame = $ifaceNil;
 93167  			this.errDetail = $ifaceNil;
 93168  			this.lastHeaderStream = 0;
 93169  			this.maxReadSize = 0;
 93170  			this.headerBuf = arrayType$3.zero();
 93171  			this.getReadBuf = $throwNilPointerError;
 93172  			this.readBuf = sliceType$3.nil;
 93173  			this.maxWriteSize = 0;
 93174  			this.w = $ifaceNil;
 93175  			this.wbuf = sliceType$3.nil;
 93176  			this.AllowIllegalWrites = false;
 93177  			this.AllowIllegalReads = false;
 93178  			this.ReadMetaHeaders = ptrType$35.nil;
 93179  			this.MaxHeaderListSize = 0;
 93180  			this.logReads = false;
 93181  			this.logWrites = false;
 93182  			this.debugFramer = ptrType$33.nil;
 93183  			this.debugFramerBuf = ptrType$36.nil;
 93184  			this.debugReadLoggerf = $throwNilPointerError;
 93185  			this.debugWriteLoggerf = $throwNilPointerError;
 93186  			this.frameCache = ptrType$34.nil;
 93187  			return;
 93188  		}
 93189  		this.r = r_;
 93190  		this.lastFrame = lastFrame_;
 93191  		this.errDetail = errDetail_;
 93192  		this.lastHeaderStream = lastHeaderStream_;
 93193  		this.maxReadSize = maxReadSize_;
 93194  		this.headerBuf = headerBuf_;
 93195  		this.getReadBuf = getReadBuf_;
 93196  		this.readBuf = readBuf_;
 93197  		this.maxWriteSize = maxWriteSize_;
 93198  		this.w = w_;
 93199  		this.wbuf = wbuf_;
 93200  		this.AllowIllegalWrites = AllowIllegalWrites_;
 93201  		this.AllowIllegalReads = AllowIllegalReads_;
 93202  		this.ReadMetaHeaders = ReadMetaHeaders_;
 93203  		this.MaxHeaderListSize = MaxHeaderListSize_;
 93204  		this.logReads = logReads_;
 93205  		this.logWrites = logWrites_;
 93206  		this.debugFramer = debugFramer_;
 93207  		this.debugFramerBuf = debugFramerBuf_;
 93208  		this.debugReadLoggerf = debugReadLoggerf_;
 93209  		this.debugWriteLoggerf = debugWriteLoggerf_;
 93210  		this.frameCache = frameCache_;
 93211  	});
 93212  	http2frameCache = $pkg.http2frameCache = $newType(0, $kindStruct, "http.http2frameCache", true, "net/http", false, function(dataFrame_) {
 93213  		this.$val = this;
 93214  		if (arguments.length === 0) {
 93215  			this.dataFrame = new http2DataFrame.ptr(new http2FrameHeader.ptr(false, 0, 0, 0, 0), sliceType$3.nil);
 93216  			return;
 93217  		}
 93218  		this.dataFrame = dataFrame_;
 93219  	});
 93220  	http2DataFrame = $pkg.http2DataFrame = $newType(0, $kindStruct, "http.http2DataFrame", true, "net/http", false, function(http2FrameHeader_, data_) {
 93221  		this.$val = this;
 93222  		if (arguments.length === 0) {
 93223  			this.http2FrameHeader = new http2FrameHeader.ptr(false, 0, 0, 0, 0);
 93224  			this.data = sliceType$3.nil;
 93225  			return;
 93226  		}
 93227  		this.http2FrameHeader = http2FrameHeader_;
 93228  		this.data = data_;
 93229  	});
 93230  	http2SettingsFrame = $pkg.http2SettingsFrame = $newType(0, $kindStruct, "http.http2SettingsFrame", true, "net/http", false, function(http2FrameHeader_, p_) {
 93231  		this.$val = this;
 93232  		if (arguments.length === 0) {
 93233  			this.http2FrameHeader = new http2FrameHeader.ptr(false, 0, 0, 0, 0);
 93234  			this.p = sliceType$3.nil;
 93235  			return;
 93236  		}
 93237  		this.http2FrameHeader = http2FrameHeader_;
 93238  		this.p = p_;
 93239  	});
 93240  	http2PingFrame = $pkg.http2PingFrame = $newType(0, $kindStruct, "http.http2PingFrame", true, "net/http", false, function(http2FrameHeader_, Data_) {
 93241  		this.$val = this;
 93242  		if (arguments.length === 0) {
 93243  			this.http2FrameHeader = new http2FrameHeader.ptr(false, 0, 0, 0, 0);
 93244  			this.Data = arrayType$4.zero();
 93245  			return;
 93246  		}
 93247  		this.http2FrameHeader = http2FrameHeader_;
 93248  		this.Data = Data_;
 93249  	});
 93250  	http2GoAwayFrame = $pkg.http2GoAwayFrame = $newType(0, $kindStruct, "http.http2GoAwayFrame", true, "net/http", false, function(http2FrameHeader_, LastStreamID_, ErrCode_, debugData_) {
 93251  		this.$val = this;
 93252  		if (arguments.length === 0) {
 93253  			this.http2FrameHeader = new http2FrameHeader.ptr(false, 0, 0, 0, 0);
 93254  			this.LastStreamID = 0;
 93255  			this.ErrCode = 0;
 93256  			this.debugData = sliceType$3.nil;
 93257  			return;
 93258  		}
 93259  		this.http2FrameHeader = http2FrameHeader_;
 93260  		this.LastStreamID = LastStreamID_;
 93261  		this.ErrCode = ErrCode_;
 93262  		this.debugData = debugData_;
 93263  	});
 93264  	http2UnknownFrame = $pkg.http2UnknownFrame = $newType(0, $kindStruct, "http.http2UnknownFrame", true, "net/http", false, function(http2FrameHeader_, p_) {
 93265  		this.$val = this;
 93266  		if (arguments.length === 0) {
 93267  			this.http2FrameHeader = new http2FrameHeader.ptr(false, 0, 0, 0, 0);
 93268  			this.p = sliceType$3.nil;
 93269  			return;
 93270  		}
 93271  		this.http2FrameHeader = http2FrameHeader_;
 93272  		this.p = p_;
 93273  	});
 93274  	http2WindowUpdateFrame = $pkg.http2WindowUpdateFrame = $newType(0, $kindStruct, "http.http2WindowUpdateFrame", true, "net/http", false, function(http2FrameHeader_, Increment_) {
 93275  		this.$val = this;
 93276  		if (arguments.length === 0) {
 93277  			this.http2FrameHeader = new http2FrameHeader.ptr(false, 0, 0, 0, 0);
 93278  			this.Increment = 0;
 93279  			return;
 93280  		}
 93281  		this.http2FrameHeader = http2FrameHeader_;
 93282  		this.Increment = Increment_;
 93283  	});
 93284  	http2HeadersFrame = $pkg.http2HeadersFrame = $newType(0, $kindStruct, "http.http2HeadersFrame", true, "net/http", false, function(http2FrameHeader_, Priority_, headerFragBuf_) {
 93285  		this.$val = this;
 93286  		if (arguments.length === 0) {
 93287  			this.http2FrameHeader = new http2FrameHeader.ptr(false, 0, 0, 0, 0);
 93288  			this.Priority = new http2PriorityParam.ptr(0, false, 0);
 93289  			this.headerFragBuf = sliceType$3.nil;
 93290  			return;
 93291  		}
 93292  		this.http2FrameHeader = http2FrameHeader_;
 93293  		this.Priority = Priority_;
 93294  		this.headerFragBuf = headerFragBuf_;
 93295  	});
 93296  	http2HeadersFrameParam = $pkg.http2HeadersFrameParam = $newType(0, $kindStruct, "http.http2HeadersFrameParam", true, "net/http", false, function(StreamID_, BlockFragment_, EndStream_, EndHeaders_, PadLength_, Priority_) {
 93297  		this.$val = this;
 93298  		if (arguments.length === 0) {
 93299  			this.StreamID = 0;
 93300  			this.BlockFragment = sliceType$3.nil;
 93301  			this.EndStream = false;
 93302  			this.EndHeaders = false;
 93303  			this.PadLength = 0;
 93304  			this.Priority = new http2PriorityParam.ptr(0, false, 0);
 93305  			return;
 93306  		}
 93307  		this.StreamID = StreamID_;
 93308  		this.BlockFragment = BlockFragment_;
 93309  		this.EndStream = EndStream_;
 93310  		this.EndHeaders = EndHeaders_;
 93311  		this.PadLength = PadLength_;
 93312  		this.Priority = Priority_;
 93313  	});
 93314  	http2PriorityFrame = $pkg.http2PriorityFrame = $newType(0, $kindStruct, "http.http2PriorityFrame", true, "net/http", false, function(http2FrameHeader_, http2PriorityParam_) {
 93315  		this.$val = this;
 93316  		if (arguments.length === 0) {
 93317  			this.http2FrameHeader = new http2FrameHeader.ptr(false, 0, 0, 0, 0);
 93318  			this.http2PriorityParam = new http2PriorityParam.ptr(0, false, 0);
 93319  			return;
 93320  		}
 93321  		this.http2FrameHeader = http2FrameHeader_;
 93322  		this.http2PriorityParam = http2PriorityParam_;
 93323  	});
 93324  	http2PriorityParam = $pkg.http2PriorityParam = $newType(0, $kindStruct, "http.http2PriorityParam", true, "net/http", false, function(StreamDep_, Exclusive_, Weight_) {
 93325  		this.$val = this;
 93326  		if (arguments.length === 0) {
 93327  			this.StreamDep = 0;
 93328  			this.Exclusive = false;
 93329  			this.Weight = 0;
 93330  			return;
 93331  		}
 93332  		this.StreamDep = StreamDep_;
 93333  		this.Exclusive = Exclusive_;
 93334  		this.Weight = Weight_;
 93335  	});
 93336  	http2RSTStreamFrame = $pkg.http2RSTStreamFrame = $newType(0, $kindStruct, "http.http2RSTStreamFrame", true, "net/http", false, function(http2FrameHeader_, ErrCode_) {
 93337  		this.$val = this;
 93338  		if (arguments.length === 0) {
 93339  			this.http2FrameHeader = new http2FrameHeader.ptr(false, 0, 0, 0, 0);
 93340  			this.ErrCode = 0;
 93341  			return;
 93342  		}
 93343  		this.http2FrameHeader = http2FrameHeader_;
 93344  		this.ErrCode = ErrCode_;
 93345  	});
 93346  	http2ContinuationFrame = $pkg.http2ContinuationFrame = $newType(0, $kindStruct, "http.http2ContinuationFrame", true, "net/http", false, function(http2FrameHeader_, headerFragBuf_) {
 93347  		this.$val = this;
 93348  		if (arguments.length === 0) {
 93349  			this.http2FrameHeader = new http2FrameHeader.ptr(false, 0, 0, 0, 0);
 93350  			this.headerFragBuf = sliceType$3.nil;
 93351  			return;
 93352  		}
 93353  		this.http2FrameHeader = http2FrameHeader_;
 93354  		this.headerFragBuf = headerFragBuf_;
 93355  	});
 93356  	http2PushPromiseFrame = $pkg.http2PushPromiseFrame = $newType(0, $kindStruct, "http.http2PushPromiseFrame", true, "net/http", false, function(http2FrameHeader_, PromiseID_, headerFragBuf_) {
 93357  		this.$val = this;
 93358  		if (arguments.length === 0) {
 93359  			this.http2FrameHeader = new http2FrameHeader.ptr(false, 0, 0, 0, 0);
 93360  			this.PromiseID = 0;
 93361  			this.headerFragBuf = sliceType$3.nil;
 93362  			return;
 93363  		}
 93364  		this.http2FrameHeader = http2FrameHeader_;
 93365  		this.PromiseID = PromiseID_;
 93366  		this.headerFragBuf = headerFragBuf_;
 93367  	});
 93368  	http2PushPromiseParam = $pkg.http2PushPromiseParam = $newType(0, $kindStruct, "http.http2PushPromiseParam", true, "net/http", false, function(StreamID_, PromiseID_, BlockFragment_, EndHeaders_, PadLength_) {
 93369  		this.$val = this;
 93370  		if (arguments.length === 0) {
 93371  			this.StreamID = 0;
 93372  			this.PromiseID = 0;
 93373  			this.BlockFragment = sliceType$3.nil;
 93374  			this.EndHeaders = false;
 93375  			this.PadLength = 0;
 93376  			return;
 93377  		}
 93378  		this.StreamID = StreamID_;
 93379  		this.PromiseID = PromiseID_;
 93380  		this.BlockFragment = BlockFragment_;
 93381  		this.EndHeaders = EndHeaders_;
 93382  		this.PadLength = PadLength_;
 93383  	});
 93384  	http2MetaHeadersFrame = $pkg.http2MetaHeadersFrame = $newType(0, $kindStruct, "http.http2MetaHeadersFrame", true, "net/http", false, function(http2HeadersFrame_, Fields_, Truncated_) {
 93385  		this.$val = this;
 93386  		if (arguments.length === 0) {
 93387  			this.http2HeadersFrame = ptrType$37.nil;
 93388  			this.Fields = sliceType$15.nil;
 93389  			this.Truncated = false;
 93390  			return;
 93391  		}
 93392  		this.http2HeadersFrame = http2HeadersFrame_;
 93393  		this.Fields = Fields_;
 93394  		this.Truncated = Truncated_;
 93395  	});
 93396  	http2contextContext = $pkg.http2contextContext = $newType(8, $kindInterface, "http.http2contextContext", true, "net/http", false, null);
 93397  	http2clientTrace = $pkg.http2clientTrace = $newType(0, $kindStruct, "http.http2clientTrace", true, "net/http", false, function(GetConn_, GotConn_, PutIdleConn_, GotFirstResponseByte_, Got100Continue_, DNSStart_, DNSDone_, ConnectStart_, ConnectDone_, TLSHandshakeStart_, TLSHandshakeDone_, WroteHeaders_, Wait100Continue_, WroteRequest_) {
 93398  		this.$val = this;
 93399  		if (arguments.length === 0) {
 93400  			this.GetConn = $throwNilPointerError;
 93401  			this.GotConn = $throwNilPointerError;
 93402  			this.PutIdleConn = $throwNilPointerError;
 93403  			this.GotFirstResponseByte = $throwNilPointerError;
 93404  			this.Got100Continue = $throwNilPointerError;
 93405  			this.DNSStart = $throwNilPointerError;
 93406  			this.DNSDone = $throwNilPointerError;
 93407  			this.ConnectStart = $throwNilPointerError;
 93408  			this.ConnectDone = $throwNilPointerError;
 93409  			this.TLSHandshakeStart = $throwNilPointerError;
 93410  			this.TLSHandshakeDone = $throwNilPointerError;
 93411  			this.WroteHeaders = $throwNilPointerError;
 93412  			this.Wait100Continue = $throwNilPointerError;
 93413  			this.WroteRequest = $throwNilPointerError;
 93414  			return;
 93415  		}
 93416  		this.GetConn = GetConn_;
 93417  		this.GotConn = GotConn_;
 93418  		this.PutIdleConn = PutIdleConn_;
 93419  		this.GotFirstResponseByte = GotFirstResponseByte_;
 93420  		this.Got100Continue = Got100Continue_;
 93421  		this.DNSStart = DNSStart_;
 93422  		this.DNSDone = DNSDone_;
 93423  		this.ConnectStart = ConnectStart_;
 93424  		this.ConnectDone = ConnectDone_;
 93425  		this.TLSHandshakeStart = TLSHandshakeStart_;
 93426  		this.TLSHandshakeDone = TLSHandshakeDone_;
 93427  		this.WroteHeaders = WroteHeaders_;
 93428  		this.Wait100Continue = Wait100Continue_;
 93429  		this.WroteRequest = WroteRequest_;
 93430  	});
 93431  	http2goroutineLock = $pkg.http2goroutineLock = $newType(8, $kindUint64, "http.http2goroutineLock", true, "net/http", false, null);
 93432  	http2streamState = $pkg.http2streamState = $newType(4, $kindInt, "http.http2streamState", true, "net/http", false, null);
 93433  	http2Setting = $pkg.http2Setting = $newType(0, $kindStruct, "http.http2Setting", true, "net/http", false, function(ID_, Val_) {
 93434  		this.$val = this;
 93435  		if (arguments.length === 0) {
 93436  			this.ID = 0;
 93437  			this.Val = 0;
 93438  			return;
 93439  		}
 93440  		this.ID = ID_;
 93441  		this.Val = Val_;
 93442  	});
 93443  	http2SettingID = $pkg.http2SettingID = $newType(2, $kindUint16, "http.http2SettingID", true, "net/http", false, null);
 93444  	http2gate = $pkg.http2gate = $newType(4, $kindChan, "http.http2gate", true, "net/http", false, null);
 93445  	http2closeWaiter = $pkg.http2closeWaiter = $newType(4, $kindChan, "http.http2closeWaiter", true, "net/http", false, null);
 93446  	http2bufferedWriter = $pkg.http2bufferedWriter = $newType(0, $kindStruct, "http.http2bufferedWriter", true, "net/http", false, function(w_, bw_) {
 93447  		this.$val = this;
 93448  		if (arguments.length === 0) {
 93449  			this.w = $ifaceNil;
 93450  			this.bw = ptrType$10.nil;
 93451  			return;
 93452  		}
 93453  		this.w = w_;
 93454  		this.bw = bw_;
 93455  	});
 93456  	http2httpError = $pkg.http2httpError = $newType(0, $kindStruct, "http.http2httpError", true, "net/http", false, function(msg_, timeout_) {
 93457  		this.$val = this;
 93458  		if (arguments.length === 0) {
 93459  			this.msg = "";
 93460  			this.timeout = false;
 93461  			return;
 93462  		}
 93463  		this.msg = msg_;
 93464  		this.timeout = timeout_;
 93465  	});
 93466  	http2connectionStater = $pkg.http2connectionStater = $newType(8, $kindInterface, "http.http2connectionStater", true, "net/http", false, null);
 93467  	http2sorter = $pkg.http2sorter = $newType(0, $kindStruct, "http.http2sorter", true, "net/http", false, function(v_) {
 93468  		this.$val = this;
 93469  		if (arguments.length === 0) {
 93470  			this.v = sliceType$1.nil;
 93471  			return;
 93472  		}
 93473  		this.v = v_;
 93474  	});
 93475  	http2pipe = $pkg.http2pipe = $newType(0, $kindStruct, "http.http2pipe", true, "net/http", false, function(mu_, c_, b_, err_, breakErr_, donec_, readFn_) {
 93476  		this.$val = this;
 93477  		if (arguments.length === 0) {
 93478  			this.mu = new sync.Mutex.ptr(0, 0);
 93479  			this.c = new sync.Cond.ptr(new sync.noCopy.ptr(), $ifaceNil, new sync.notifyList.ptr(0, 0, 0, 0, 0), 0, 0, $chanNil);
 93480  			this.b = $ifaceNil;
 93481  			this.err = $ifaceNil;
 93482  			this.breakErr = $ifaceNil;
 93483  			this.donec = $chanNil;
 93484  			this.readFn = $throwNilPointerError;
 93485  			return;
 93486  		}
 93487  		this.mu = mu_;
 93488  		this.c = c_;
 93489  		this.b = b_;
 93490  		this.err = err_;
 93491  		this.breakErr = breakErr_;
 93492  		this.donec = donec_;
 93493  		this.readFn = readFn_;
 93494  	});
 93495  	http2pipeBuffer = $pkg.http2pipeBuffer = $newType(8, $kindInterface, "http.http2pipeBuffer", true, "net/http", false, null);
 93496  	http2Server = $pkg.http2Server = $newType(0, $kindStruct, "http.http2Server", true, "net/http", false, function(MaxHandlers_, MaxConcurrentStreams_, MaxReadFrameSize_, PermitProhibitedCipherSuites_, IdleTimeout_, MaxUploadBufferPerConnection_, MaxUploadBufferPerStream_, NewWriteScheduler_, state_) {
 93497  		this.$val = this;
 93498  		if (arguments.length === 0) {
 93499  			this.MaxHandlers = 0;
 93500  			this.MaxConcurrentStreams = 0;
 93501  			this.MaxReadFrameSize = 0;
 93502  			this.PermitProhibitedCipherSuites = false;
 93503  			this.IdleTimeout = new time.Duration(0, 0);
 93504  			this.MaxUploadBufferPerConnection = 0;
 93505  			this.MaxUploadBufferPerStream = 0;
 93506  			this.NewWriteScheduler = $throwNilPointerError;
 93507  			this.state = ptrType$51.nil;
 93508  			return;
 93509  		}
 93510  		this.MaxHandlers = MaxHandlers_;
 93511  		this.MaxConcurrentStreams = MaxConcurrentStreams_;
 93512  		this.MaxReadFrameSize = MaxReadFrameSize_;
 93513  		this.PermitProhibitedCipherSuites = PermitProhibitedCipherSuites_;
 93514  		this.IdleTimeout = IdleTimeout_;
 93515  		this.MaxUploadBufferPerConnection = MaxUploadBufferPerConnection_;
 93516  		this.MaxUploadBufferPerStream = MaxUploadBufferPerStream_;
 93517  		this.NewWriteScheduler = NewWriteScheduler_;
 93518  		this.state = state_;
 93519  	});
 93520  	http2serverInternalState = $pkg.http2serverInternalState = $newType(0, $kindStruct, "http.http2serverInternalState", true, "net/http", false, function(mu_, activeConns_) {
 93521  		this.$val = this;
 93522  		if (arguments.length === 0) {
 93523  			this.mu = new sync.Mutex.ptr(0, 0);
 93524  			this.activeConns = false;
 93525  			return;
 93526  		}
 93527  		this.mu = mu_;
 93528  		this.activeConns = activeConns_;
 93529  	});
 93530  	http2ServeConnOpts = $pkg.http2ServeConnOpts = $newType(0, $kindStruct, "http.http2ServeConnOpts", true, "net/http", false, function(BaseConfig_, Handler_) {
 93531  		this.$val = this;
 93532  		if (arguments.length === 0) {
 93533  			this.BaseConfig = ptrType$46.nil;
 93534  			this.Handler = $ifaceNil;
 93535  			return;
 93536  		}
 93537  		this.BaseConfig = BaseConfig_;
 93538  		this.Handler = Handler_;
 93539  	});
 93540  	http2serverConn = $pkg.http2serverConn = $newType(0, $kindStruct, "http.http2serverConn", true, "net/http", false, function(srv_, hs_, conn_, bw_, handler_, baseCtx_, framer_, doneServing_, readFrameCh_, wantWriteFrameCh_, wroteFrameCh_, bodyReadCh_, serveMsgCh_, flow_, inflow_, tlsState_, remoteAddrStr_, writeSched_, serveG_, pushEnabled_, sawFirstSettings_, needToSendSettingsAck_, unackedSettings_, clientMaxStreams_, advMaxStreams_, curClientStreams_, curPushedStreams_, maxClientStreamID_, maxPushPromiseID_, streams_, initialStreamSendWindowSize_, maxFrameSize_, headerTableSize_, peerMaxHeaderListSize_, canonHeader_, writingFrame_, writingFrameAsync_, needsFrameFlush_, inGoAway_, inFrameScheduleLoop_, needToSendGoAway_, goAwayCode_, shutdownTimer_, idleTimer_, headerWriteBuf_, hpackEncoder_, shutdownOnce_) {
 93541  		this.$val = this;
 93542  		if (arguments.length === 0) {
 93543  			this.srv = ptrType$52.nil;
 93544  			this.hs = ptrType$46.nil;
 93545  			this.conn = $ifaceNil;
 93546  			this.bw = ptrType$55.nil;
 93547  			this.handler = $ifaceNil;
 93548  			this.baseCtx = $ifaceNil;
 93549  			this.framer = ptrType$33.nil;
 93550  			this.doneServing = $chanNil;
 93551  			this.readFrameCh = $chanNil;
 93552  			this.wantWriteFrameCh = $chanNil;
 93553  			this.wroteFrameCh = $chanNil;
 93554  			this.bodyReadCh = $chanNil;
 93555  			this.serveMsgCh = $chanNil;
 93556  			this.flow = new http2flow.ptr(0, ptrType$32.nil);
 93557  			this.inflow = new http2flow.ptr(0, ptrType$32.nil);
 93558  			this.tlsState = ptrType$18.nil;
 93559  			this.remoteAddrStr = "";
 93560  			this.writeSched = $ifaceNil;
 93561  			this.serveG = new http2goroutineLock(0, 0);
 93562  			this.pushEnabled = false;
 93563  			this.sawFirstSettings = false;
 93564  			this.needToSendSettingsAck = false;
 93565  			this.unackedSettings = 0;
 93566  			this.clientMaxStreams = 0;
 93567  			this.advMaxStreams = 0;
 93568  			this.curClientStreams = 0;
 93569  			this.curPushedStreams = 0;
 93570  			this.maxClientStreamID = 0;
 93571  			this.maxPushPromiseID = 0;
 93572  			this.streams = false;
 93573  			this.initialStreamSendWindowSize = 0;
 93574  			this.maxFrameSize = 0;
 93575  			this.headerTableSize = 0;
 93576  			this.peerMaxHeaderListSize = 0;
 93577  			this.canonHeader = false;
 93578  			this.writingFrame = false;
 93579  			this.writingFrameAsync = false;
 93580  			this.needsFrameFlush = false;
 93581  			this.inGoAway = false;
 93582  			this.inFrameScheduleLoop = false;
 93583  			this.needToSendGoAway = false;
 93584  			this.goAwayCode = 0;
 93585  			this.shutdownTimer = ptrType$56.nil;
 93586  			this.idleTimer = ptrType$56.nil;
 93587  			this.headerWriteBuf = new bytes.Buffer.ptr(sliceType$3.nil, 0, arrayType.zero(), 0);
 93588  			this.hpackEncoder = ptrType$57.nil;
 93589  			this.shutdownOnce = new sync.Once.ptr(new sync.Mutex.ptr(0, 0), 0);
 93590  			return;
 93591  		}
 93592  		this.srv = srv_;
 93593  		this.hs = hs_;
 93594  		this.conn = conn_;
 93595  		this.bw = bw_;
 93596  		this.handler = handler_;
 93597  		this.baseCtx = baseCtx_;
 93598  		this.framer = framer_;
 93599  		this.doneServing = doneServing_;
 93600  		this.readFrameCh = readFrameCh_;
 93601  		this.wantWriteFrameCh = wantWriteFrameCh_;
 93602  		this.wroteFrameCh = wroteFrameCh_;
 93603  		this.bodyReadCh = bodyReadCh_;
 93604  		this.serveMsgCh = serveMsgCh_;
 93605  		this.flow = flow_;
 93606  		this.inflow = inflow_;
 93607  		this.tlsState = tlsState_;
 93608  		this.remoteAddrStr = remoteAddrStr_;
 93609  		this.writeSched = writeSched_;
 93610  		this.serveG = serveG_;
 93611  		this.pushEnabled = pushEnabled_;
 93612  		this.sawFirstSettings = sawFirstSettings_;
 93613  		this.needToSendSettingsAck = needToSendSettingsAck_;
 93614  		this.unackedSettings = unackedSettings_;
 93615  		this.clientMaxStreams = clientMaxStreams_;
 93616  		this.advMaxStreams = advMaxStreams_;
 93617  		this.curClientStreams = curClientStreams_;
 93618  		this.curPushedStreams = curPushedStreams_;
 93619  		this.maxClientStreamID = maxClientStreamID_;
 93620  		this.maxPushPromiseID = maxPushPromiseID_;
 93621  		this.streams = streams_;
 93622  		this.initialStreamSendWindowSize = initialStreamSendWindowSize_;
 93623  		this.maxFrameSize = maxFrameSize_;
 93624  		this.headerTableSize = headerTableSize_;
 93625  		this.peerMaxHeaderListSize = peerMaxHeaderListSize_;
 93626  		this.canonHeader = canonHeader_;
 93627  		this.writingFrame = writingFrame_;
 93628  		this.writingFrameAsync = writingFrameAsync_;
 93629  		this.needsFrameFlush = needsFrameFlush_;
 93630  		this.inGoAway = inGoAway_;
 93631  		this.inFrameScheduleLoop = inFrameScheduleLoop_;
 93632  		this.needToSendGoAway = needToSendGoAway_;
 93633  		this.goAwayCode = goAwayCode_;
 93634  		this.shutdownTimer = shutdownTimer_;
 93635  		this.idleTimer = idleTimer_;
 93636  		this.headerWriteBuf = headerWriteBuf_;
 93637  		this.hpackEncoder = hpackEncoder_;
 93638  		this.shutdownOnce = shutdownOnce_;
 93639  	});
 93640  	http2stream = $pkg.http2stream = $newType(0, $kindStruct, "http.http2stream", true, "net/http", false, function(sc_, id_, body_, cw_, ctx_, cancelCtx_, bodyBytes_, declBodyBytes_, flow_, inflow_, parent_, numTrailerValues_, weight_, state_, resetQueued_, gotTrailerHeader_, wroteHeaders_, writeDeadline_, trailer_, reqTrailer_) {
 93641  		this.$val = this;
 93642  		if (arguments.length === 0) {
 93643  			this.sc = ptrType$9.nil;
 93644  			this.id = 0;
 93645  			this.body = ptrType$67.nil;
 93646  			this.cw = $chanNil;
 93647  			this.ctx = $ifaceNil;
 93648  			this.cancelCtx = $throwNilPointerError;
 93649  			this.bodyBytes = new $Int64(0, 0);
 93650  			this.declBodyBytes = new $Int64(0, 0);
 93651  			this.flow = new http2flow.ptr(0, ptrType$32.nil);
 93652  			this.inflow = new http2flow.ptr(0, ptrType$32.nil);
 93653  			this.parent = ptrType$6.nil;
 93654  			this.numTrailerValues = new $Int64(0, 0);
 93655  			this.weight = 0;
 93656  			this.state = 0;
 93657  			this.resetQueued = false;
 93658  			this.gotTrailerHeader = false;
 93659  			this.wroteHeaders = false;
 93660  			this.writeDeadline = ptrType$56.nil;
 93661  			this.trailer = false;
 93662  			this.reqTrailer = false;
 93663  			return;
 93664  		}
 93665  		this.sc = sc_;
 93666  		this.id = id_;
 93667  		this.body = body_;
 93668  		this.cw = cw_;
 93669  		this.ctx = ctx_;
 93670  		this.cancelCtx = cancelCtx_;
 93671  		this.bodyBytes = bodyBytes_;
 93672  		this.declBodyBytes = declBodyBytes_;
 93673  		this.flow = flow_;
 93674  		this.inflow = inflow_;
 93675  		this.parent = parent_;
 93676  		this.numTrailerValues = numTrailerValues_;
 93677  		this.weight = weight_;
 93678  		this.state = state_;
 93679  		this.resetQueued = resetQueued_;
 93680  		this.gotTrailerHeader = gotTrailerHeader_;
 93681  		this.wroteHeaders = wroteHeaders_;
 93682  		this.writeDeadline = writeDeadline_;
 93683  		this.trailer = trailer_;
 93684  		this.reqTrailer = reqTrailer_;
 93685  	});
 93686  	http2readFrameResult = $pkg.http2readFrameResult = $newType(0, $kindStruct, "http.http2readFrameResult", true, "net/http", false, function(f_, err_, readMore_) {
 93687  		this.$val = this;
 93688  		if (arguments.length === 0) {
 93689  			this.f = $ifaceNil;
 93690  			this.err = $ifaceNil;
 93691  			this.readMore = $throwNilPointerError;
 93692  			return;
 93693  		}
 93694  		this.f = f_;
 93695  		this.err = err_;
 93696  		this.readMore = readMore_;
 93697  	});
 93698  	http2frameWriteResult = $pkg.http2frameWriteResult = $newType(0, $kindStruct, "http.http2frameWriteResult", true, "net/http", false, function(wr_, err_) {
 93699  		this.$val = this;
 93700  		if (arguments.length === 0) {
 93701  			this.wr = new http2FrameWriteRequest.ptr($ifaceNil, ptrType$6.nil, $chanNil);
 93702  			this.err = $ifaceNil;
 93703  			return;
 93704  		}
 93705  		this.wr = wr_;
 93706  		this.err = err_;
 93707  	});
 93708  	http2serverMessage = $pkg.http2serverMessage = $newType(4, $kindInt, "http.http2serverMessage", true, "net/http", false, null);
 93709  	http2requestParam = $pkg.http2requestParam = $newType(0, $kindStruct, "http.http2requestParam", true, "net/http", false, function(method_, scheme_, authority_, path_, header_) {
 93710  		this.$val = this;
 93711  		if (arguments.length === 0) {
 93712  			this.method = "";
 93713  			this.scheme = "";
 93714  			this.authority = "";
 93715  			this.path = "";
 93716  			this.header = false;
 93717  			return;
 93718  		}
 93719  		this.method = method_;
 93720  		this.scheme = scheme_;
 93721  		this.authority = authority_;
 93722  		this.path = path_;
 93723  		this.header = header_;
 93724  	});
 93725  	http2bodyReadMsg = $pkg.http2bodyReadMsg = $newType(0, $kindStruct, "http.http2bodyReadMsg", true, "net/http", false, function(st_, n_) {
 93726  		this.$val = this;
 93727  		if (arguments.length === 0) {
 93728  			this.st = ptrType$6.nil;
 93729  			this.n = 0;
 93730  			return;
 93731  		}
 93732  		this.st = st_;
 93733  		this.n = n_;
 93734  	});
 93735  	http2requestBody = $pkg.http2requestBody = $newType(0, $kindStruct, "http.http2requestBody", true, "net/http", false, function(stream_, conn_, closed_, sawEOF_, pipe_, needsContinue_) {
 93736  		this.$val = this;
 93737  		if (arguments.length === 0) {
 93738  			this.stream = ptrType$6.nil;
 93739  			this.conn = ptrType$9.nil;
 93740  			this.closed = false;
 93741  			this.sawEOF = false;
 93742  			this.pipe = ptrType$67.nil;
 93743  			this.needsContinue = false;
 93744  			return;
 93745  		}
 93746  		this.stream = stream_;
 93747  		this.conn = conn_;
 93748  		this.closed = closed_;
 93749  		this.sawEOF = sawEOF_;
 93750  		this.pipe = pipe_;
 93751  		this.needsContinue = needsContinue_;
 93752  	});
 93753  	http2responseWriter = $pkg.http2responseWriter = $newType(0, $kindStruct, "http.http2responseWriter", true, "net/http", false, function(rws_) {
 93754  		this.$val = this;
 93755  		if (arguments.length === 0) {
 93756  			this.rws = ptrType$69.nil;
 93757  			return;
 93758  		}
 93759  		this.rws = rws_;
 93760  	});
 93761  	http2responseWriterState = $pkg.http2responseWriterState = $newType(0, $kindStruct, "http.http2responseWriterState", true, "net/http", false, function(stream_, req_, body_, conn_, bw_, handlerHeader_, snapHeader_, trailers_, status_, wroteHeader_, sentHeader_, handlerDone_, dirty_, sentContentLen_, wroteBytes_, closeNotifierMu_, closeNotifierCh_) {
 93762  		this.$val = this;
 93763  		if (arguments.length === 0) {
 93764  			this.stream = ptrType$6.nil;
 93765  			this.req = ptrType$7.nil;
 93766  			this.body = ptrType$8.nil;
 93767  			this.conn = ptrType$9.nil;
 93768  			this.bw = ptrType$10.nil;
 93769  			this.handlerHeader = false;
 93770  			this.snapHeader = false;
 93771  			this.trailers = sliceType$1.nil;
 93772  			this.status = 0;
 93773  			this.wroteHeader = false;
 93774  			this.sentHeader = false;
 93775  			this.handlerDone = false;
 93776  			this.dirty = false;
 93777  			this.sentContentLen = new $Int64(0, 0);
 93778  			this.wroteBytes = new $Int64(0, 0);
 93779  			this.closeNotifierMu = new sync.Mutex.ptr(0, 0);
 93780  			this.closeNotifierCh = $chanNil;
 93781  			return;
 93782  		}
 93783  		this.stream = stream_;
 93784  		this.req = req_;
 93785  		this.body = body_;
 93786  		this.conn = conn_;
 93787  		this.bw = bw_;
 93788  		this.handlerHeader = handlerHeader_;
 93789  		this.snapHeader = snapHeader_;
 93790  		this.trailers = trailers_;
 93791  		this.status = status_;
 93792  		this.wroteHeader = wroteHeader_;
 93793  		this.sentHeader = sentHeader_;
 93794  		this.handlerDone = handlerDone_;
 93795  		this.dirty = dirty_;
 93796  		this.sentContentLen = sentContentLen_;
 93797  		this.wroteBytes = wroteBytes_;
 93798  		this.closeNotifierMu = closeNotifierMu_;
 93799  		this.closeNotifierCh = closeNotifierCh_;
 93800  	});
 93801  	http2chunkWriter = $pkg.http2chunkWriter = $newType(0, $kindStruct, "http.http2chunkWriter", true, "net/http", false, function(rws_) {
 93802  		this.$val = this;
 93803  		if (arguments.length === 0) {
 93804  			this.rws = ptrType$69.nil;
 93805  			return;
 93806  		}
 93807  		this.rws = rws_;
 93808  	});
 93809  	http2pushOptions = $pkg.http2pushOptions = $newType(0, $kindStruct, "http.http2pushOptions", true, "net/http", false, function(Method_, Header_) {
 93810  		this.$val = this;
 93811  		if (arguments.length === 0) {
 93812  			this.Method = "";
 93813  			this.Header = false;
 93814  			return;
 93815  		}
 93816  		this.Method = Method_;
 93817  		this.Header = Header_;
 93818  	});
 93819  	http2startPushRequest = $pkg.http2startPushRequest = $newType(0, $kindStruct, "http.http2startPushRequest", true, "net/http", false, function(parent_, method_, url_, header_, done_) {
 93820  		this.$val = this;
 93821  		if (arguments.length === 0) {
 93822  			this.parent = ptrType$6.nil;
 93823  			this.method = "";
 93824  			this.url = ptrType$20.nil;
 93825  			this.header = false;
 93826  			this.done = $chanNil;
 93827  			return;
 93828  		}
 93829  		this.parent = parent_;
 93830  		this.method = method_;
 93831  		this.url = url_;
 93832  		this.header = header_;
 93833  		this.done = done_;
 93834  	});
 93835  	http2Transport = $pkg.http2Transport = $newType(0, $kindStruct, "http.http2Transport", true, "net/http", false, function(DialTLS_, TLSClientConfig_, ConnPool_, DisableCompression_, AllowHTTP_, MaxHeaderListSize_, t1_, connPoolOnce_, connPoolOrDef_) {
 93836  		this.$val = this;
 93837  		if (arguments.length === 0) {
 93838  			this.DialTLS = $throwNilPointerError;
 93839  			this.TLSClientConfig = ptrType$14.nil;
 93840  			this.ConnPool = $ifaceNil;
 93841  			this.DisableCompression = false;
 93842  			this.AllowHTTP = false;
 93843  			this.MaxHeaderListSize = 0;
 93844  			this.t1 = ptrType$22.nil;
 93845  			this.connPoolOnce = new sync.Once.ptr(new sync.Mutex.ptr(0, 0), 0);
 93846  			this.connPoolOrDef = $ifaceNil;
 93847  			return;
 93848  		}
 93849  		this.DialTLS = DialTLS_;
 93850  		this.TLSClientConfig = TLSClientConfig_;
 93851  		this.ConnPool = ConnPool_;
 93852  		this.DisableCompression = DisableCompression_;
 93853  		this.AllowHTTP = AllowHTTP_;
 93854  		this.MaxHeaderListSize = MaxHeaderListSize_;
 93855  		this.t1 = t1_;
 93856  		this.connPoolOnce = connPoolOnce_;
 93857  		this.connPoolOrDef = connPoolOrDef_;
 93858  	});
 93859  	http2ClientConn = $pkg.http2ClientConn = $newType(0, $kindStruct, "http.http2ClientConn", true, "net/http", false, function(t_, tconn_, tlsState_, singleUse_, readerDone_, readerErr_, idleTimeout_, idleTimer_, mu_, cond_, flow_, inflow_, closed_, wantSettingsAck_, goAway_, goAwayDebug_, streams_, nextStreamID_, pendingRequests_, pings_, bw_, br_, fr_, lastActive_, maxFrameSize_, maxConcurrentStreams_, peerMaxHeaderListSize_, initialWindowSize_, hbuf_, henc_, freeBuf_, wmu_, werr_) {
 93860  		this.$val = this;
 93861  		if (arguments.length === 0) {
 93862  			this.t = ptrType$15.nil;
 93863  			this.tconn = $ifaceNil;
 93864  			this.tlsState = ptrType$18.nil;
 93865  			this.singleUse = false;
 93866  			this.readerDone = $chanNil;
 93867  			this.readerErr = $ifaceNil;
 93868  			this.idleTimeout = new time.Duration(0, 0);
 93869  			this.idleTimer = ptrType$56.nil;
 93870  			this.mu = new sync.Mutex.ptr(0, 0);
 93871  			this.cond = ptrType$71.nil;
 93872  			this.flow = new http2flow.ptr(0, ptrType$32.nil);
 93873  			this.inflow = new http2flow.ptr(0, ptrType$32.nil);
 93874  			this.closed = false;
 93875  			this.wantSettingsAck = false;
 93876  			this.goAway = ptrType$44.nil;
 93877  			this.goAwayDebug = "";
 93878  			this.streams = false;
 93879  			this.nextStreamID = 0;
 93880  			this.pendingRequests = 0;
 93881  			this.pings = false;
 93882  			this.bw = ptrType$10.nil;
 93883  			this.br = ptrType$72.nil;
 93884  			this.fr = ptrType$33.nil;
 93885  			this.lastActive = new time.Time.ptr(new $Uint64(0, 0), new $Int64(0, 0), ptrType$1.nil);
 93886  			this.maxFrameSize = 0;
 93887  			this.maxConcurrentStreams = 0;
 93888  			this.peerMaxHeaderListSize = new $Uint64(0, 0);
 93889  			this.initialWindowSize = 0;
 93890  			this.hbuf = new bytes.Buffer.ptr(sliceType$3.nil, 0, arrayType.zero(), 0);
 93891  			this.henc = ptrType$57.nil;
 93892  			this.freeBuf = sliceType$5.nil;
 93893  			this.wmu = new sync.Mutex.ptr(0, 0);
 93894  			this.werr = $ifaceNil;
 93895  			return;
 93896  		}
 93897  		this.t = t_;
 93898  		this.tconn = tconn_;
 93899  		this.tlsState = tlsState_;
 93900  		this.singleUse = singleUse_;
 93901  		this.readerDone = readerDone_;
 93902  		this.readerErr = readerErr_;
 93903  		this.idleTimeout = idleTimeout_;
 93904  		this.idleTimer = idleTimer_;
 93905  		this.mu = mu_;
 93906  		this.cond = cond_;
 93907  		this.flow = flow_;
 93908  		this.inflow = inflow_;
 93909  		this.closed = closed_;
 93910  		this.wantSettingsAck = wantSettingsAck_;
 93911  		this.goAway = goAway_;
 93912  		this.goAwayDebug = goAwayDebug_;
 93913  		this.streams = streams_;
 93914  		this.nextStreamID = nextStreamID_;
 93915  		this.pendingRequests = pendingRequests_;
 93916  		this.pings = pings_;
 93917  		this.bw = bw_;
 93918  		this.br = br_;
 93919  		this.fr = fr_;
 93920  		this.lastActive = lastActive_;
 93921  		this.maxFrameSize = maxFrameSize_;
 93922  		this.maxConcurrentStreams = maxConcurrentStreams_;
 93923  		this.peerMaxHeaderListSize = peerMaxHeaderListSize_;
 93924  		this.initialWindowSize = initialWindowSize_;
 93925  		this.hbuf = hbuf_;
 93926  		this.henc = henc_;
 93927  		this.freeBuf = freeBuf_;
 93928  		this.wmu = wmu_;
 93929  		this.werr = werr_;
 93930  	});
 93931  	http2clientStream = $pkg.http2clientStream = $newType(0, $kindStruct, "http.http2clientStream", true, "net/http", false, function(cc_, req_, trace_, ID_, resc_, bufPipe_, startedWrite_, requestedGzip_, on100_, flow_, inflow_, bytesRemain_, readErr_, stopReqBody_, didReset_, peerReset_, resetErr_, done_, firstByte_, pastHeaders_, pastTrailers_, trailer_, resTrailer_) {
 93932  		this.$val = this;
 93933  		if (arguments.length === 0) {
 93934  			this.cc = ptrType$28.nil;
 93935  			this.req = ptrType$7.nil;
 93936  			this.trace = ptrType$48.nil;
 93937  			this.ID = 0;
 93938  			this.resc = $chanNil;
 93939  			this.bufPipe = new http2pipe.ptr(new sync.Mutex.ptr(0, 0), new sync.Cond.ptr(new sync.noCopy.ptr(), $ifaceNil, new sync.notifyList.ptr(0, 0, 0, 0, 0), 0, 0, $chanNil), $ifaceNil, $ifaceNil, $ifaceNil, $chanNil, $throwNilPointerError);
 93940  			this.startedWrite = false;
 93941  			this.requestedGzip = false;
 93942  			this.on100 = $throwNilPointerError;
 93943  			this.flow = new http2flow.ptr(0, ptrType$32.nil);
 93944  			this.inflow = new http2flow.ptr(0, ptrType$32.nil);
 93945  			this.bytesRemain = new $Int64(0, 0);
 93946  			this.readErr = $ifaceNil;
 93947  			this.stopReqBody = $ifaceNil;
 93948  			this.didReset = false;
 93949  			this.peerReset = $chanNil;
 93950  			this.resetErr = $ifaceNil;
 93951  			this.done = $chanNil;
 93952  			this.firstByte = false;
 93953  			this.pastHeaders = false;
 93954  			this.pastTrailers = false;
 93955  			this.trailer = false;
 93956  			this.resTrailer = ptrType$73.nil;
 93957  			return;
 93958  		}
 93959  		this.cc = cc_;
 93960  		this.req = req_;
 93961  		this.trace = trace_;
 93962  		this.ID = ID_;
 93963  		this.resc = resc_;
 93964  		this.bufPipe = bufPipe_;
 93965  		this.startedWrite = startedWrite_;
 93966  		this.requestedGzip = requestedGzip_;
 93967  		this.on100 = on100_;
 93968  		this.flow = flow_;
 93969  		this.inflow = inflow_;
 93970  		this.bytesRemain = bytesRemain_;
 93971  		this.readErr = readErr_;
 93972  		this.stopReqBody = stopReqBody_;
 93973  		this.didReset = didReset_;
 93974  		this.peerReset = peerReset_;
 93975  		this.resetErr = resetErr_;
 93976  		this.done = done_;
 93977  		this.firstByte = firstByte_;
 93978  		this.pastHeaders = pastHeaders_;
 93979  		this.pastTrailers = pastTrailers_;
 93980  		this.trailer = trailer_;
 93981  		this.resTrailer = resTrailer_;
 93982  	});
 93983  	http2stickyErrWriter = $pkg.http2stickyErrWriter = $newType(0, $kindStruct, "http.http2stickyErrWriter", true, "net/http", false, function(w_, err_) {
 93984  		this.$val = this;
 93985  		if (arguments.length === 0) {
 93986  			this.w = $ifaceNil;
 93987  			this.err = ptrType$50.nil;
 93988  			return;
 93989  		}
 93990  		this.w = w_;
 93991  		this.err = err_;
 93992  	});
 93993  	http2noCachedConnError = $pkg.http2noCachedConnError = $newType(0, $kindStruct, "http.http2noCachedConnError", true, "net/http", false, function() {
 93994  		this.$val = this;
 93995  		if (arguments.length === 0) {
 93996  			return;
 93997  		}
 93998  	});
 93999  	http2RoundTripOpt = $pkg.http2RoundTripOpt = $newType(0, $kindStruct, "http.http2RoundTripOpt", true, "net/http", false, function(OnlyCachedConn_) {
 94000  		this.$val = this;
 94001  		if (arguments.length === 0) {
 94002  			this.OnlyCachedConn = false;
 94003  			return;
 94004  		}
 94005  		this.OnlyCachedConn = OnlyCachedConn_;
 94006  	});
 94007  	http2badStringError = $pkg.http2badStringError = $newType(0, $kindStruct, "http.http2badStringError", true, "net/http", false, function(what_, str_) {
 94008  		this.$val = this;
 94009  		if (arguments.length === 0) {
 94010  			this.what = "";
 94011  			this.str = "";
 94012  			return;
 94013  		}
 94014  		this.what = what_;
 94015  		this.str = str_;
 94016  	});
 94017  	http2resAndError = $pkg.http2resAndError = $newType(0, $kindStruct, "http.http2resAndError", true, "net/http", false, function(res_, err_) {
 94018  		this.$val = this;
 94019  		if (arguments.length === 0) {
 94020  			this.res = ptrType$17.nil;
 94021  			this.err = $ifaceNil;
 94022  			return;
 94023  		}
 94024  		this.res = res_;
 94025  		this.err = err_;
 94026  	});
 94027  	http2clientConnReadLoop = $pkg.http2clientConnReadLoop = $newType(0, $kindStruct, "http.http2clientConnReadLoop", true, "net/http", false, function(cc_, closeWhenIdle_) {
 94028  		this.$val = this;
 94029  		if (arguments.length === 0) {
 94030  			this.cc = ptrType$28.nil;
 94031  			this.closeWhenIdle = false;
 94032  			return;
 94033  		}
 94034  		this.cc = cc_;
 94035  		this.closeWhenIdle = closeWhenIdle_;
 94036  	});
 94037  	http2GoAwayError = $pkg.http2GoAwayError = $newType(0, $kindStruct, "http.http2GoAwayError", true, "net/http", false, function(LastStreamID_, ErrCode_, DebugData_) {
 94038  		this.$val = this;
 94039  		if (arguments.length === 0) {
 94040  			this.LastStreamID = 0;
 94041  			this.ErrCode = 0;
 94042  			this.DebugData = "";
 94043  			return;
 94044  		}
 94045  		this.LastStreamID = LastStreamID_;
 94046  		this.ErrCode = ErrCode_;
 94047  		this.DebugData = DebugData_;
 94048  	});
 94049  	http2transportResponseBody = $pkg.http2transportResponseBody = $newType(0, $kindStruct, "http.http2transportResponseBody", true, "net/http", false, function(cs_) {
 94050  		this.$val = this;
 94051  		if (arguments.length === 0) {
 94052  			this.cs = ptrType$74.nil;
 94053  			return;
 94054  		}
 94055  		this.cs = cs_;
 94056  	});
 94057  	http2erringRoundTripper = $pkg.http2erringRoundTripper = $newType(0, $kindStruct, "http.http2erringRoundTripper", true, "net/http", false, function(err_) {
 94058  		this.$val = this;
 94059  		if (arguments.length === 0) {
 94060  			this.err = $ifaceNil;
 94061  			return;
 94062  		}
 94063  		this.err = err_;
 94064  	});
 94065  	http2gzipReader = $pkg.http2gzipReader = $newType(0, $kindStruct, "http.http2gzipReader", true, "net/http", false, function(body_, zr_, zerr_) {
 94066  		this.$val = this;
 94067  		if (arguments.length === 0) {
 94068  			this.body = $ifaceNil;
 94069  			this.zr = ptrType$75.nil;
 94070  			this.zerr = $ifaceNil;
 94071  			return;
 94072  		}
 94073  		this.body = body_;
 94074  		this.zr = zr_;
 94075  		this.zerr = zerr_;
 94076  	});
 94077  	http2bodyWriterState = $pkg.http2bodyWriterState = $newType(0, $kindStruct, "http.http2bodyWriterState", true, "net/http", false, function(cs_, timer_, fnonce_, fn_, resc_, delay_) {
 94078  		this.$val = this;
 94079  		if (arguments.length === 0) {
 94080  			this.cs = ptrType$74.nil;
 94081  			this.timer = ptrType$56.nil;
 94082  			this.fnonce = ptrType$76.nil;
 94083  			this.fn = $throwNilPointerError;
 94084  			this.resc = $chanNil;
 94085  			this.delay = new time.Duration(0, 0);
 94086  			return;
 94087  		}
 94088  		this.cs = cs_;
 94089  		this.timer = timer_;
 94090  		this.fnonce = fnonce_;
 94091  		this.fn = fn_;
 94092  		this.resc = resc_;
 94093  		this.delay = delay_;
 94094  	});
 94095  	http2writeFramer = $pkg.http2writeFramer = $newType(8, $kindInterface, "http.http2writeFramer", true, "net/http", false, null);
 94096  	http2writeContext = $pkg.http2writeContext = $newType(8, $kindInterface, "http.http2writeContext", true, "net/http", false, null);
 94097  	http2flushFrameWriter = $pkg.http2flushFrameWriter = $newType(0, $kindStruct, "http.http2flushFrameWriter", true, "net/http", false, function() {
 94098  		this.$val = this;
 94099  		if (arguments.length === 0) {
 94100  			return;
 94101  		}
 94102  	});
 94103  	http2writeSettings = $pkg.http2writeSettings = $newType(12, $kindSlice, "http.http2writeSettings", true, "net/http", false, null);
 94104  	http2writeGoAway = $pkg.http2writeGoAway = $newType(0, $kindStruct, "http.http2writeGoAway", true, "net/http", false, function(maxStreamID_, code_) {
 94105  		this.$val = this;
 94106  		if (arguments.length === 0) {
 94107  			this.maxStreamID = 0;
 94108  			this.code = 0;
 94109  			return;
 94110  		}
 94111  		this.maxStreamID = maxStreamID_;
 94112  		this.code = code_;
 94113  	});
 94114  	http2writeData = $pkg.http2writeData = $newType(0, $kindStruct, "http.http2writeData", true, "net/http", false, function(streamID_, p_, endStream_) {
 94115  		this.$val = this;
 94116  		if (arguments.length === 0) {
 94117  			this.streamID = 0;
 94118  			this.p = sliceType$3.nil;
 94119  			this.endStream = false;
 94120  			return;
 94121  		}
 94122  		this.streamID = streamID_;
 94123  		this.p = p_;
 94124  		this.endStream = endStream_;
 94125  	});
 94126  	http2handlerPanicRST = $pkg.http2handlerPanicRST = $newType(0, $kindStruct, "http.http2handlerPanicRST", true, "net/http", false, function(StreamID_) {
 94127  		this.$val = this;
 94128  		if (arguments.length === 0) {
 94129  			this.StreamID = 0;
 94130  			return;
 94131  		}
 94132  		this.StreamID = StreamID_;
 94133  	});
 94134  	http2writePingAck = $pkg.http2writePingAck = $newType(0, $kindStruct, "http.http2writePingAck", true, "net/http", false, function(pf_) {
 94135  		this.$val = this;
 94136  		if (arguments.length === 0) {
 94137  			this.pf = ptrType$43.nil;
 94138  			return;
 94139  		}
 94140  		this.pf = pf_;
 94141  	});
 94142  	http2writeSettingsAck = $pkg.http2writeSettingsAck = $newType(0, $kindStruct, "http.http2writeSettingsAck", true, "net/http", false, function() {
 94143  		this.$val = this;
 94144  		if (arguments.length === 0) {
 94145  			return;
 94146  		}
 94147  	});
 94148  	http2writeResHeaders = $pkg.http2writeResHeaders = $newType(0, $kindStruct, "http.http2writeResHeaders", true, "net/http", false, function(streamID_, httpResCode_, h_, trailers_, endStream_, date_, contentType_, contentLength_) {
 94149  		this.$val = this;
 94150  		if (arguments.length === 0) {
 94151  			this.streamID = 0;
 94152  			this.httpResCode = 0;
 94153  			this.h = false;
 94154  			this.trailers = sliceType$1.nil;
 94155  			this.endStream = false;
 94156  			this.date = "";
 94157  			this.contentType = "";
 94158  			this.contentLength = "";
 94159  			return;
 94160  		}
 94161  		this.streamID = streamID_;
 94162  		this.httpResCode = httpResCode_;
 94163  		this.h = h_;
 94164  		this.trailers = trailers_;
 94165  		this.endStream = endStream_;
 94166  		this.date = date_;
 94167  		this.contentType = contentType_;
 94168  		this.contentLength = contentLength_;
 94169  	});
 94170  	http2writePushPromise = $pkg.http2writePushPromise = $newType(0, $kindStruct, "http.http2writePushPromise", true, "net/http", false, function(streamID_, method_, url_, h_, allocatePromisedID_, promisedID_) {
 94171  		this.$val = this;
 94172  		if (arguments.length === 0) {
 94173  			this.streamID = 0;
 94174  			this.method = "";
 94175  			this.url = ptrType$20.nil;
 94176  			this.h = false;
 94177  			this.allocatePromisedID = $throwNilPointerError;
 94178  			this.promisedID = 0;
 94179  			return;
 94180  		}
 94181  		this.streamID = streamID_;
 94182  		this.method = method_;
 94183  		this.url = url_;
 94184  		this.h = h_;
 94185  		this.allocatePromisedID = allocatePromisedID_;
 94186  		this.promisedID = promisedID_;
 94187  	});
 94188  	http2write100ContinueHeadersFrame = $pkg.http2write100ContinueHeadersFrame = $newType(0, $kindStruct, "http.http2write100ContinueHeadersFrame", true, "net/http", false, function(streamID_) {
 94189  		this.$val = this;
 94190  		if (arguments.length === 0) {
 94191  			this.streamID = 0;
 94192  			return;
 94193  		}
 94194  		this.streamID = streamID_;
 94195  	});
 94196  	http2writeWindowUpdate = $pkg.http2writeWindowUpdate = $newType(0, $kindStruct, "http.http2writeWindowUpdate", true, "net/http", false, function(streamID_, n_) {
 94197  		this.$val = this;
 94198  		if (arguments.length === 0) {
 94199  			this.streamID = 0;
 94200  			this.n = 0;
 94201  			return;
 94202  		}
 94203  		this.streamID = streamID_;
 94204  		this.n = n_;
 94205  	});
 94206  	http2WriteScheduler = $pkg.http2WriteScheduler = $newType(8, $kindInterface, "http.http2WriteScheduler", true, "net/http", false, null);
 94207  	http2OpenStreamOptions = $pkg.http2OpenStreamOptions = $newType(0, $kindStruct, "http.http2OpenStreamOptions", true, "net/http", false, function(PusherID_) {
 94208  		this.$val = this;
 94209  		if (arguments.length === 0) {
 94210  			this.PusherID = 0;
 94211  			return;
 94212  		}
 94213  		this.PusherID = PusherID_;
 94214  	});
 94215  	http2FrameWriteRequest = $pkg.http2FrameWriteRequest = $newType(0, $kindStruct, "http.http2FrameWriteRequest", true, "net/http", false, function(write_, stream_, done_) {
 94216  		this.$val = this;
 94217  		if (arguments.length === 0) {
 94218  			this.write = $ifaceNil;
 94219  			this.stream = ptrType$6.nil;
 94220  			this.done = $chanNil;
 94221  			return;
 94222  		}
 94223  		this.write = write_;
 94224  		this.stream = stream_;
 94225  		this.done = done_;
 94226  	});
 94227  	http2writeQueue = $pkg.http2writeQueue = $newType(0, $kindStruct, "http.http2writeQueue", true, "net/http", false, function(s_) {
 94228  		this.$val = this;
 94229  		if (arguments.length === 0) {
 94230  			this.s = sliceType$20.nil;
 94231  			return;
 94232  		}
 94233  		this.s = s_;
 94234  	});
 94235  	http2writeQueuePool = $pkg.http2writeQueuePool = $newType(12, $kindSlice, "http.http2writeQueuePool", true, "net/http", false, null);
 94236  	http2PriorityWriteSchedulerConfig = $pkg.http2PriorityWriteSchedulerConfig = $newType(0, $kindStruct, "http.http2PriorityWriteSchedulerConfig", true, "net/http", false, function(MaxClosedNodesInTree_, MaxIdleNodesInTree_, ThrottleOutOfOrderWrites_) {
 94237  		this.$val = this;
 94238  		if (arguments.length === 0) {
 94239  			this.MaxClosedNodesInTree = 0;
 94240  			this.MaxIdleNodesInTree = 0;
 94241  			this.ThrottleOutOfOrderWrites = false;
 94242  			return;
 94243  		}
 94244  		this.MaxClosedNodesInTree = MaxClosedNodesInTree_;
 94245  		this.MaxIdleNodesInTree = MaxIdleNodesInTree_;
 94246  		this.ThrottleOutOfOrderWrites = ThrottleOutOfOrderWrites_;
 94247  	});
 94248  	http2priorityNodeState = $pkg.http2priorityNodeState = $newType(4, $kindInt, "http.http2priorityNodeState", true, "net/http", false, null);
 94249  	http2priorityNode = $pkg.http2priorityNode = $newType(0, $kindStruct, "http.http2priorityNode", true, "net/http", false, function(q_, id_, weight_, state_, bytes_, subtreeBytes_, parent_, kids_, prev_, next_) {
 94250  		this.$val = this;
 94251  		if (arguments.length === 0) {
 94252  			this.q = new http2writeQueue.ptr(sliceType$20.nil);
 94253  			this.id = 0;
 94254  			this.weight = 0;
 94255  			this.state = 0;
 94256  			this.bytes = new $Int64(0, 0);
 94257  			this.subtreeBytes = new $Int64(0, 0);
 94258  			this.parent = ptrType$79.nil;
 94259  			this.kids = ptrType$79.nil;
 94260  			this.prev = ptrType$79.nil;
 94261  			this.next = ptrType$79.nil;
 94262  			return;
 94263  		}
 94264  		this.q = q_;
 94265  		this.id = id_;
 94266  		this.weight = weight_;
 94267  		this.state = state_;
 94268  		this.bytes = bytes_;
 94269  		this.subtreeBytes = subtreeBytes_;
 94270  		this.parent = parent_;
 94271  		this.kids = kids_;
 94272  		this.prev = prev_;
 94273  		this.next = next_;
 94274  	});
 94275  	http2sortPriorityNodeSiblings = $pkg.http2sortPriorityNodeSiblings = $newType(12, $kindSlice, "http.http2sortPriorityNodeSiblings", true, "net/http", false, null);
 94276  	http2priorityWriteScheduler = $pkg.http2priorityWriteScheduler = $newType(0, $kindStruct, "http.http2priorityWriteScheduler", true, "net/http", false, function(root_, nodes_, maxID_, closedNodes_, idleNodes_, maxClosedNodesInTree_, maxIdleNodesInTree_, writeThrottleLimit_, enableWriteThrottle_, tmp_, queuePool_) {
 94277  		this.$val = this;
 94278  		if (arguments.length === 0) {
 94279  			this.root = new http2priorityNode.ptr(new http2writeQueue.ptr(sliceType$20.nil), 0, 0, 0, new $Int64(0, 0), new $Int64(0, 0), ptrType$79.nil, ptrType$79.nil, ptrType$79.nil, ptrType$79.nil);
 94280  			this.nodes = false;
 94281  			this.maxID = 0;
 94282  			this.closedNodes = sliceType$21.nil;
 94283  			this.idleNodes = sliceType$21.nil;
 94284  			this.maxClosedNodesInTree = 0;
 94285  			this.maxIdleNodesInTree = 0;
 94286  			this.writeThrottleLimit = 0;
 94287  			this.enableWriteThrottle = false;
 94288  			this.tmp = sliceType$21.nil;
 94289  			this.queuePool = http2writeQueuePool.nil;
 94290  			return;
 94291  		}
 94292  		this.root = root_;
 94293  		this.nodes = nodes_;
 94294  		this.maxID = maxID_;
 94295  		this.closedNodes = closedNodes_;
 94296  		this.idleNodes = idleNodes_;
 94297  		this.maxClosedNodesInTree = maxClosedNodesInTree_;
 94298  		this.maxIdleNodesInTree = maxIdleNodesInTree_;
 94299  		this.writeThrottleLimit = writeThrottleLimit_;
 94300  		this.enableWriteThrottle = enableWriteThrottle_;
 94301  		this.tmp = tmp_;
 94302  		this.queuePool = queuePool_;
 94303  	});
 94304  	http2randomWriteScheduler = $pkg.http2randomWriteScheduler = $newType(0, $kindStruct, "http.http2randomWriteScheduler", true, "net/http", false, function(zero_, sq_, queuePool_) {
 94305  		this.$val = this;
 94306  		if (arguments.length === 0) {
 94307  			this.zero = new http2writeQueue.ptr(sliceType$20.nil);
 94308  			this.sq = false;
 94309  			this.queuePool = http2writeQueuePool.nil;
 94310  			return;
 94311  		}
 94312  		this.zero = zero_;
 94313  		this.sq = sq_;
 94314  		this.queuePool = queuePool_;
 94315  	});
 94316  	Header = $pkg.Header = $newType(4, $kindMap, "http.Header", true, "net/http", true, null);
 94317  	writeStringer = $pkg.writeStringer = $newType(8, $kindInterface, "http.writeStringer", true, "net/http", false, null);
 94318  	stringWriter = $pkg.stringWriter = $newType(0, $kindStruct, "http.stringWriter", true, "net/http", false, function(w_) {
 94319  		this.$val = this;
 94320  		if (arguments.length === 0) {
 94321  			this.w = $ifaceNil;
 94322  			return;
 94323  		}
 94324  		this.w = w_;
 94325  	});
 94326  	keyValues = $pkg.keyValues = $newType(0, $kindStruct, "http.keyValues", true, "net/http", false, function(key_, values_) {
 94327  		this.$val = this;
 94328  		if (arguments.length === 0) {
 94329  			this.key = "";
 94330  			this.values = sliceType$1.nil;
 94331  			return;
 94332  		}
 94333  		this.key = key_;
 94334  		this.values = values_;
 94335  	});
 94336  	headerSorter = $pkg.headerSorter = $newType(0, $kindStruct, "http.headerSorter", true, "net/http", false, function(kvs_) {
 94337  		this.$val = this;
 94338  		if (arguments.length === 0) {
 94339  			this.kvs = sliceType$4.nil;
 94340  			return;
 94341  		}
 94342  		this.kvs = kvs_;
 94343  	});
 94344  	contextKey = $pkg.contextKey = $newType(0, $kindStruct, "http.contextKey", true, "net/http", false, function(name_) {
 94345  		this.$val = this;
 94346  		if (arguments.length === 0) {
 94347  			this.name = "";
 94348  			return;
 94349  		}
 94350  		this.name = name_;
 94351  	});
 94352  	noBody = $pkg.noBody = $newType(0, $kindStruct, "http.noBody", true, "net/http", false, function() {
 94353  		this.$val = this;
 94354  		if (arguments.length === 0) {
 94355  			return;
 94356  		}
 94357  	});
 94358  	PushOptions = $pkg.PushOptions = $newType(0, $kindStruct, "http.PushOptions", true, "net/http", true, function(Method_, Header_) {
 94359  		this.$val = this;
 94360  		if (arguments.length === 0) {
 94361  			this.Method = "";
 94362  			this.Header = false;
 94363  			return;
 94364  		}
 94365  		this.Method = Method_;
 94366  		this.Header = Header_;
 94367  	});
 94368  	CookieJar = $pkg.CookieJar = $newType(8, $kindInterface, "http.CookieJar", true, "net/http", true, null);
 94369  	ProtocolError = $pkg.ProtocolError = $newType(0, $kindStruct, "http.ProtocolError", true, "net/http", true, function(ErrorString_) {
 94370  		this.$val = this;
 94371  		if (arguments.length === 0) {
 94372  			this.ErrorString = "";
 94373  			return;
 94374  		}
 94375  		this.ErrorString = ErrorString_;
 94376  	});
 94377  	badStringError = $pkg.badStringError = $newType(0, $kindStruct, "http.badStringError", true, "net/http", false, function(what_, str_) {
 94378  		this.$val = this;
 94379  		if (arguments.length === 0) {
 94380  			this.what = "";
 94381  			this.str = "";
 94382  			return;
 94383  		}
 94384  		this.what = what_;
 94385  		this.str = str_;
 94386  	});
 94387  	Request = $pkg.Request = $newType(0, $kindStruct, "http.Request", true, "net/http", true, function(Method_, URL_, Proto_, ProtoMajor_, ProtoMinor_, Header_, Body_, GetBody_, ContentLength_, TransferEncoding_, Close_, Host_, Form_, PostForm_, MultipartForm_, Trailer_, RemoteAddr_, RequestURI_, TLS_, Cancel_, Response_, ctx_) {
 94388  		this.$val = this;
 94389  		if (arguments.length === 0) {
 94390  			this.Method = "";
 94391  			this.URL = ptrType$20.nil;
 94392  			this.Proto = "";
 94393  			this.ProtoMajor = 0;
 94394  			this.ProtoMinor = 0;
 94395  			this.Header = false;
 94396  			this.Body = $ifaceNil;
 94397  			this.GetBody = $throwNilPointerError;
 94398  			this.ContentLength = new $Int64(0, 0);
 94399  			this.TransferEncoding = sliceType$1.nil;
 94400  			this.Close = false;
 94401  			this.Host = "";
 94402  			this.Form = false;
 94403  			this.PostForm = false;
 94404  			this.MultipartForm = ptrType$21.nil;
 94405  			this.Trailer = false;
 94406  			this.RemoteAddr = "";
 94407  			this.RequestURI = "";
 94408  			this.TLS = ptrType$18.nil;
 94409  			this.Cancel = $chanNil;
 94410  			this.Response = ptrType$17.nil;
 94411  			this.ctx = $ifaceNil;
 94412  			return;
 94413  		}
 94414  		this.Method = Method_;
 94415  		this.URL = URL_;
 94416  		this.Proto = Proto_;
 94417  		this.ProtoMajor = ProtoMajor_;
 94418  		this.ProtoMinor = ProtoMinor_;
 94419  		this.Header = Header_;
 94420  		this.Body = Body_;
 94421  		this.GetBody = GetBody_;
 94422  		this.ContentLength = ContentLength_;
 94423  		this.TransferEncoding = TransferEncoding_;
 94424  		this.Close = Close_;
 94425  		this.Host = Host_;
 94426  		this.Form = Form_;
 94427  		this.PostForm = PostForm_;
 94428  		this.MultipartForm = MultipartForm_;
 94429  		this.Trailer = Trailer_;
 94430  		this.RemoteAddr = RemoteAddr_;
 94431  		this.RequestURI = RequestURI_;
 94432  		this.TLS = TLS_;
 94433  		this.Cancel = Cancel_;
 94434  		this.Response = Response_;
 94435  		this.ctx = ctx_;
 94436  	});
 94437  	requestBodyReadError = $pkg.requestBodyReadError = $newType(0, $kindStruct, "http.requestBodyReadError", true, "net/http", false, function(error_) {
 94438  		this.$val = this;
 94439  		if (arguments.length === 0) {
 94440  			this.error = $ifaceNil;
 94441  			return;
 94442  		}
 94443  		this.error = error_;
 94444  	});
 94445  	maxBytesReader = $pkg.maxBytesReader = $newType(0, $kindStruct, "http.maxBytesReader", true, "net/http", false, function(w_, r_, n_, err_) {
 94446  		this.$val = this;
 94447  		if (arguments.length === 0) {
 94448  			this.w = $ifaceNil;
 94449  			this.r = $ifaceNil;
 94450  			this.n = new $Int64(0, 0);
 94451  			this.err = $ifaceNil;
 94452  			return;
 94453  		}
 94454  		this.w = w_;
 94455  		this.r = r_;
 94456  		this.n = n_;
 94457  		this.err = err_;
 94458  	});
 94459  	Response = $pkg.Response = $newType(0, $kindStruct, "http.Response", true, "net/http", true, function(Status_, StatusCode_, Proto_, ProtoMajor_, ProtoMinor_, Header_, Body_, ContentLength_, TransferEncoding_, Close_, Uncompressed_, Trailer_, Request_, TLS_) {
 94460  		this.$val = this;
 94461  		if (arguments.length === 0) {
 94462  			this.Status = "";
 94463  			this.StatusCode = 0;
 94464  			this.Proto = "";
 94465  			this.ProtoMajor = 0;
 94466  			this.ProtoMinor = 0;
 94467  			this.Header = false;
 94468  			this.Body = $ifaceNil;
 94469  			this.ContentLength = new $Int64(0, 0);
 94470  			this.TransferEncoding = sliceType$1.nil;
 94471  			this.Close = false;
 94472  			this.Uncompressed = false;
 94473  			this.Trailer = false;
 94474  			this.Request = ptrType$7.nil;
 94475  			this.TLS = ptrType$18.nil;
 94476  			return;
 94477  		}
 94478  		this.Status = Status_;
 94479  		this.StatusCode = StatusCode_;
 94480  		this.Proto = Proto_;
 94481  		this.ProtoMajor = ProtoMajor_;
 94482  		this.ProtoMinor = ProtoMinor_;
 94483  		this.Header = Header_;
 94484  		this.Body = Body_;
 94485  		this.ContentLength = ContentLength_;
 94486  		this.TransferEncoding = TransferEncoding_;
 94487  		this.Close = Close_;
 94488  		this.Uncompressed = Uncompressed_;
 94489  		this.Trailer = Trailer_;
 94490  		this.Request = Request_;
 94491  		this.TLS = TLS_;
 94492  	});
 94493  	Handler = $pkg.Handler = $newType(8, $kindInterface, "http.Handler", true, "net/http", true, null);
 94494  	ResponseWriter = $pkg.ResponseWriter = $newType(8, $kindInterface, "http.ResponseWriter", true, "net/http", true, null);
 94495  	conn = $pkg.conn = $newType(0, $kindStruct, "http.conn", true, "net/http", false, function(server_, cancelCtx_, rwc_, remoteAddr_, tlsState_, werr_, r_, bufr_, bufw_, lastMethod_, curReq_, curState_, mu_, hijackedv_) {
 94496  		this.$val = this;
 94497  		if (arguments.length === 0) {
 94498  			this.server = ptrType$46.nil;
 94499  			this.cancelCtx = $throwNilPointerError;
 94500  			this.rwc = $ifaceNil;
 94501  			this.remoteAddr = "";
 94502  			this.tlsState = ptrType$18.nil;
 94503  			this.werr = $ifaceNil;
 94504  			this.r = ptrType$93.nil;
 94505  			this.bufr = ptrType$72.nil;
 94506  			this.bufw = ptrType$10.nil;
 94507  			this.lastMethod = "";
 94508  			this.curReq = new atomic.Value.ptr($ifaceNil);
 94509  			this.curState = new atomic.Value.ptr($ifaceNil);
 94510  			this.mu = new sync.Mutex.ptr(0, 0);
 94511  			this.hijackedv = false;
 94512  			return;
 94513  		}
 94514  		this.server = server_;
 94515  		this.cancelCtx = cancelCtx_;
 94516  		this.rwc = rwc_;
 94517  		this.remoteAddr = remoteAddr_;
 94518  		this.tlsState = tlsState_;
 94519  		this.werr = werr_;
 94520  		this.r = r_;
 94521  		this.bufr = bufr_;
 94522  		this.bufw = bufw_;
 94523  		this.lastMethod = lastMethod_;
 94524  		this.curReq = curReq_;
 94525  		this.curState = curState_;
 94526  		this.mu = mu_;
 94527  		this.hijackedv = hijackedv_;
 94528  	});
 94529  	chunkWriter = $pkg.chunkWriter = $newType(0, $kindStruct, "http.chunkWriter", true, "net/http", false, function(res_, header_, wroteHeader_, chunking_) {
 94530  		this.$val = this;
 94531  		if (arguments.length === 0) {
 94532  			this.res = ptrType$94.nil;
 94533  			this.header = false;
 94534  			this.wroteHeader = false;
 94535  			this.chunking = false;
 94536  			return;
 94537  		}
 94538  		this.res = res_;
 94539  		this.header = header_;
 94540  		this.wroteHeader = wroteHeader_;
 94541  		this.chunking = chunking_;
 94542  	});
 94543  	response = $pkg.response = $newType(0, $kindStruct, "http.response", true, "net/http", false, function(conn_, req_, reqBody_, cancelCtx_, wroteHeader_, wroteContinue_, wants10KeepAlive_, wantsClose_, w_, cw_, handlerHeader_, calledHeader_, written_, contentLength_, status_, closeAfterReply_, requestBodyLimitHit_, trailers_, handlerDone_, dateBuf_, clenBuf_, statusBuf_, closeNotifyCh_, didCloseNotify_) {
 94544  		this.$val = this;
 94545  		if (arguments.length === 0) {
 94546  			this.conn = ptrType$97.nil;
 94547  			this.req = ptrType$7.nil;
 94548  			this.reqBody = $ifaceNil;
 94549  			this.cancelCtx = $throwNilPointerError;
 94550  			this.wroteHeader = false;
 94551  			this.wroteContinue = false;
 94552  			this.wants10KeepAlive = false;
 94553  			this.wantsClose = false;
 94554  			this.w = ptrType$10.nil;
 94555  			this.cw = new chunkWriter.ptr(ptrType$94.nil, false, false, false);
 94556  			this.handlerHeader = false;
 94557  			this.calledHeader = false;
 94558  			this.written = new $Int64(0, 0);
 94559  			this.contentLength = new $Int64(0, 0);
 94560  			this.status = 0;
 94561  			this.closeAfterReply = false;
 94562  			this.requestBodyLimitHit = false;
 94563  			this.trailers = sliceType$1.nil;
 94564  			this.handlerDone = 0;
 94565  			this.dateBuf = arrayType$6.zero();
 94566  			this.clenBuf = arrayType$7.zero();
 94567  			this.statusBuf = arrayType$8.zero();
 94568  			this.closeNotifyCh = $chanNil;
 94569  			this.didCloseNotify = 0;
 94570  			return;
 94571  		}
 94572  		this.conn = conn_;
 94573  		this.req = req_;
 94574  		this.reqBody = reqBody_;
 94575  		this.cancelCtx = cancelCtx_;
 94576  		this.wroteHeader = wroteHeader_;
 94577  		this.wroteContinue = wroteContinue_;
 94578  		this.wants10KeepAlive = wants10KeepAlive_;
 94579  		this.wantsClose = wantsClose_;
 94580  		this.w = w_;
 94581  		this.cw = cw_;
 94582  		this.handlerHeader = handlerHeader_;
 94583  		this.calledHeader = calledHeader_;
 94584  		this.written = written_;
 94585  		this.contentLength = contentLength_;
 94586  		this.status = status_;
 94587  		this.closeAfterReply = closeAfterReply_;
 94588  		this.requestBodyLimitHit = requestBodyLimitHit_;
 94589  		this.trailers = trailers_;
 94590  		this.handlerDone = handlerDone_;
 94591  		this.dateBuf = dateBuf_;
 94592  		this.clenBuf = clenBuf_;
 94593  		this.statusBuf = statusBuf_;
 94594  		this.closeNotifyCh = closeNotifyCh_;
 94595  		this.didCloseNotify = didCloseNotify_;
 94596  	});
 94597  	atomicBool = $pkg.atomicBool = $newType(4, $kindInt32, "http.atomicBool", true, "net/http", false, null);
 94598  	writerOnly = $pkg.writerOnly = $newType(0, $kindStruct, "http.writerOnly", true, "net/http", false, function(Writer_) {
 94599  		this.$val = this;
 94600  		if (arguments.length === 0) {
 94601  			this.Writer = $ifaceNil;
 94602  			return;
 94603  		}
 94604  		this.Writer = Writer_;
 94605  	});
 94606  	readResult = $pkg.readResult = $newType(0, $kindStruct, "http.readResult", true, "net/http", false, function(n_, err_, b_) {
 94607  		this.$val = this;
 94608  		if (arguments.length === 0) {
 94609  			this.n = 0;
 94610  			this.err = $ifaceNil;
 94611  			this.b = 0;
 94612  			return;
 94613  		}
 94614  		this.n = n_;
 94615  		this.err = err_;
 94616  		this.b = b_;
 94617  	});
 94618  	connReader = $pkg.connReader = $newType(0, $kindStruct, "http.connReader", true, "net/http", false, function(conn_, mu_, hasByte_, byteBuf_, cond_, inRead_, aborted_, remain_) {
 94619  		this.$val = this;
 94620  		if (arguments.length === 0) {
 94621  			this.conn = ptrType$97.nil;
 94622  			this.mu = new sync.Mutex.ptr(0, 0);
 94623  			this.hasByte = false;
 94624  			this.byteBuf = arrayType$5.zero();
 94625  			this.cond = ptrType$71.nil;
 94626  			this.inRead = false;
 94627  			this.aborted = false;
 94628  			this.remain = new $Int64(0, 0);
 94629  			return;
 94630  		}
 94631  		this.conn = conn_;
 94632  		this.mu = mu_;
 94633  		this.hasByte = hasByte_;
 94634  		this.byteBuf = byteBuf_;
 94635  		this.cond = cond_;
 94636  		this.inRead = inRead_;
 94637  		this.aborted = aborted_;
 94638  		this.remain = remain_;
 94639  	});
 94640  	expectContinueReader = $pkg.expectContinueReader = $newType(0, $kindStruct, "http.expectContinueReader", true, "net/http", false, function(resp_, readCloser_, closed_, sawEOF_) {
 94641  		this.$val = this;
 94642  		if (arguments.length === 0) {
 94643  			this.resp = ptrType$94.nil;
 94644  			this.readCloser = $ifaceNil;
 94645  			this.closed = false;
 94646  			this.sawEOF = false;
 94647  			return;
 94648  		}
 94649  		this.resp = resp_;
 94650  		this.readCloser = readCloser_;
 94651  		this.closed = closed_;
 94652  		this.sawEOF = sawEOF_;
 94653  	});
 94654  	extraHeader = $pkg.extraHeader = $newType(0, $kindStruct, "http.extraHeader", true, "net/http", false, function(contentType_, connection_, transferEncoding_, date_, contentLength_) {
 94655  		this.$val = this;
 94656  		if (arguments.length === 0) {
 94657  			this.contentType = "";
 94658  			this.connection = "";
 94659  			this.transferEncoding = "";
 94660  			this.date = sliceType$3.nil;
 94661  			this.contentLength = sliceType$3.nil;
 94662  			return;
 94663  		}
 94664  		this.contentType = contentType_;
 94665  		this.connection = connection_;
 94666  		this.transferEncoding = transferEncoding_;
 94667  		this.date = date_;
 94668  		this.contentLength = contentLength_;
 94669  	});
 94670  	closeWriter = $pkg.closeWriter = $newType(8, $kindInterface, "http.closeWriter", true, "net/http", false, null);
 94671  	badRequestError = $pkg.badRequestError = $newType(8, $kindString, "http.badRequestError", true, "net/http", false, null);
 94672  	HandlerFunc = $pkg.HandlerFunc = $newType(4, $kindFunc, "http.HandlerFunc", true, "net/http", true, null);
 94673  	redirectHandler = $pkg.redirectHandler = $newType(0, $kindStruct, "http.redirectHandler", true, "net/http", false, function(url_, code_) {
 94674  		this.$val = this;
 94675  		if (arguments.length === 0) {
 94676  			this.url = "";
 94677  			this.code = 0;
 94678  			return;
 94679  		}
 94680  		this.url = url_;
 94681  		this.code = code_;
 94682  	});
 94683  	ServeMux = $pkg.ServeMux = $newType(0, $kindStruct, "http.ServeMux", true, "net/http", true, function(mu_, m_, hosts_) {
 94684  		this.$val = this;
 94685  		if (arguments.length === 0) {
 94686  			this.mu = new sync.RWMutex.ptr(new sync.Mutex.ptr(0, 0), 0, 0, 0, 0);
 94687  			this.m = false;
 94688  			this.hosts = false;
 94689  			return;
 94690  		}
 94691  		this.mu = mu_;
 94692  		this.m = m_;
 94693  		this.hosts = hosts_;
 94694  	});
 94695  	muxEntry = $pkg.muxEntry = $newType(0, $kindStruct, "http.muxEntry", true, "net/http", false, function(h_, pattern_) {
 94696  		this.$val = this;
 94697  		if (arguments.length === 0) {
 94698  			this.h = $ifaceNil;
 94699  			this.pattern = "";
 94700  			return;
 94701  		}
 94702  		this.h = h_;
 94703  		this.pattern = pattern_;
 94704  	});
 94705  	Server = $pkg.Server = $newType(0, $kindStruct, "http.Server", true, "net/http", true, function(Addr_, Handler_, TLSConfig_, ReadTimeout_, ReadHeaderTimeout_, WriteTimeout_, IdleTimeout_, MaxHeaderBytes_, TLSNextProto_, ConnState_, ErrorLog_, disableKeepAlives_, inShutdown_, nextProtoOnce_, nextProtoErr_, mu_, listeners_, activeConn_, doneChan_, onShutdown_) {
 94706  		this.$val = this;
 94707  		if (arguments.length === 0) {
 94708  			this.Addr = "";
 94709  			this.Handler = $ifaceNil;
 94710  			this.TLSConfig = ptrType$14.nil;
 94711  			this.ReadTimeout = new time.Duration(0, 0);
 94712  			this.ReadHeaderTimeout = new time.Duration(0, 0);
 94713  			this.WriteTimeout = new time.Duration(0, 0);
 94714  			this.IdleTimeout = new time.Duration(0, 0);
 94715  			this.MaxHeaderBytes = 0;
 94716  			this.TLSNextProto = false;
 94717  			this.ConnState = $throwNilPointerError;
 94718  			this.ErrorLog = ptrType$54.nil;
 94719  			this.disableKeepAlives = 0;
 94720  			this.inShutdown = 0;
 94721  			this.nextProtoOnce = new sync.Once.ptr(new sync.Mutex.ptr(0, 0), 0);
 94722  			this.nextProtoErr = $ifaceNil;
 94723  			this.mu = new sync.Mutex.ptr(0, 0);
 94724  			this.listeners = false;
 94725  			this.activeConn = false;
 94726  			this.doneChan = $chanNil;
 94727  			this.onShutdown = sliceType$16.nil;
 94728  			return;
 94729  		}
 94730  		this.Addr = Addr_;
 94731  		this.Handler = Handler_;
 94732  		this.TLSConfig = TLSConfig_;
 94733  		this.ReadTimeout = ReadTimeout_;
 94734  		this.ReadHeaderTimeout = ReadHeaderTimeout_;
 94735  		this.WriteTimeout = WriteTimeout_;
 94736  		this.IdleTimeout = IdleTimeout_;
 94737  		this.MaxHeaderBytes = MaxHeaderBytes_;
 94738  		this.TLSNextProto = TLSNextProto_;
 94739  		this.ConnState = ConnState_;
 94740  		this.ErrorLog = ErrorLog_;
 94741  		this.disableKeepAlives = disableKeepAlives_;
 94742  		this.inShutdown = inShutdown_;
 94743  		this.nextProtoOnce = nextProtoOnce_;
 94744  		this.nextProtoErr = nextProtoErr_;
 94745  		this.mu = mu_;
 94746  		this.listeners = listeners_;
 94747  		this.activeConn = activeConn_;
 94748  		this.doneChan = doneChan_;
 94749  		this.onShutdown = onShutdown_;
 94750  	});
 94751  	ConnState = $pkg.ConnState = $newType(4, $kindInt, "http.ConnState", true, "net/http", true, null);
 94752  	serverHandler = $pkg.serverHandler = $newType(0, $kindStruct, "http.serverHandler", true, "net/http", false, function(srv_) {
 94753  		this.$val = this;
 94754  		if (arguments.length === 0) {
 94755  			this.srv = ptrType$46.nil;
 94756  			return;
 94757  		}
 94758  		this.srv = srv_;
 94759  	});
 94760  	tcpKeepAliveListener = $pkg.tcpKeepAliveListener = $newType(0, $kindStruct, "http.tcpKeepAliveListener", true, "net/http", false, function(TCPListener_) {
 94761  		this.$val = this;
 94762  		if (arguments.length === 0) {
 94763  			this.TCPListener = ptrType$100.nil;
 94764  			return;
 94765  		}
 94766  		this.TCPListener = TCPListener_;
 94767  	});
 94768  	globalOptionsHandler = $pkg.globalOptionsHandler = $newType(0, $kindStruct, "http.globalOptionsHandler", true, "net/http", false, function() {
 94769  		this.$val = this;
 94770  		if (arguments.length === 0) {
 94771  			return;
 94772  		}
 94773  	});
 94774  	initNPNRequest = $pkg.initNPNRequest = $newType(0, $kindStruct, "http.initNPNRequest", true, "net/http", false, function(c_, h_) {
 94775  		this.$val = this;
 94776  		if (arguments.length === 0) {
 94777  			this.c = ptrType$99.nil;
 94778  			this.h = new serverHandler.ptr(ptrType$46.nil);
 94779  			return;
 94780  		}
 94781  		this.c = c_;
 94782  		this.h = h_;
 94783  	});
 94784  	loggingConn = $pkg.loggingConn = $newType(0, $kindStruct, "http.loggingConn", true, "net/http", false, function(name_, Conn_) {
 94785  		this.$val = this;
 94786  		if (arguments.length === 0) {
 94787  			this.name = "";
 94788  			this.Conn = $ifaceNil;
 94789  			return;
 94790  		}
 94791  		this.name = name_;
 94792  		this.Conn = Conn_;
 94793  	});
 94794  	checkConnErrorWriter = $pkg.checkConnErrorWriter = $newType(0, $kindStruct, "http.checkConnErrorWriter", true, "net/http", false, function(c_) {
 94795  		this.$val = this;
 94796  		if (arguments.length === 0) {
 94797  			this.c = ptrType$97.nil;
 94798  			return;
 94799  		}
 94800  		this.c = c_;
 94801  	});
 94802  	sniffSig = $pkg.sniffSig = $newType(8, $kindInterface, "http.sniffSig", true, "net/http", false, null);
 94803  	exactSig = $pkg.exactSig = $newType(0, $kindStruct, "http.exactSig", true, "net/http", false, function(sig_, ct_) {
 94804  		this.$val = this;
 94805  		if (arguments.length === 0) {
 94806  			this.sig = sliceType$3.nil;
 94807  			this.ct = "";
 94808  			return;
 94809  		}
 94810  		this.sig = sig_;
 94811  		this.ct = ct_;
 94812  	});
 94813  	maskedSig = $pkg.maskedSig = $newType(0, $kindStruct, "http.maskedSig", true, "net/http", false, function(mask_, pat_, skipWS_, ct_) {
 94814  		this.$val = this;
 94815  		if (arguments.length === 0) {
 94816  			this.mask = sliceType$3.nil;
 94817  			this.pat = sliceType$3.nil;
 94818  			this.skipWS = false;
 94819  			this.ct = "";
 94820  			return;
 94821  		}
 94822  		this.mask = mask_;
 94823  		this.pat = pat_;
 94824  		this.skipWS = skipWS_;
 94825  		this.ct = ct_;
 94826  	});
 94827  	htmlSig = $pkg.htmlSig = $newType(12, $kindSlice, "http.htmlSig", true, "net/http", false, null);
 94828  	mp4Sig = $pkg.mp4Sig = $newType(0, $kindStruct, "http.mp4Sig", true, "net/http", false, function() {
 94829  		this.$val = this;
 94830  		if (arguments.length === 0) {
 94831  			return;
 94832  		}
 94833  	});
 94834  	textSig = $pkg.textSig = $newType(0, $kindStruct, "http.textSig", true, "net/http", false, function() {
 94835  		this.$val = this;
 94836  		if (arguments.length === 0) {
 94837  			return;
 94838  		}
 94839  	});
 94840  	errorReader = $pkg.errorReader = $newType(0, $kindStruct, "http.errorReader", true, "net/http", false, function(err_) {
 94841  		this.$val = this;
 94842  		if (arguments.length === 0) {
 94843  			this.err = $ifaceNil;
 94844  			return;
 94845  		}
 94846  		this.err = err_;
 94847  	});
 94848  	byteReader = $pkg.byteReader = $newType(0, $kindStruct, "http.byteReader", true, "net/http", false, function(b_, done_) {
 94849  		this.$val = this;
 94850  		if (arguments.length === 0) {
 94851  			this.b = 0;
 94852  			this.done = false;
 94853  			return;
 94854  		}
 94855  		this.b = b_;
 94856  		this.done = done_;
 94857  	});
 94858  	transferBodyReader = $pkg.transferBodyReader = $newType(0, $kindStruct, "http.transferBodyReader", true, "net/http", false, function(tw_) {
 94859  		this.$val = this;
 94860  		if (arguments.length === 0) {
 94861  			this.tw = ptrType$101.nil;
 94862  			return;
 94863  		}
 94864  		this.tw = tw_;
 94865  	});
 94866  	transferWriter = $pkg.transferWriter = $newType(0, $kindStruct, "http.transferWriter", true, "net/http", false, function(Method_, Body_, BodyCloser_, ResponseToHEAD_, ContentLength_, Close_, TransferEncoding_, Header_, Trailer_, IsResponse_, bodyReadError_, FlushHeaders_, ByteReadCh_) {
 94867  		this.$val = this;
 94868  		if (arguments.length === 0) {
 94869  			this.Method = "";
 94870  			this.Body = $ifaceNil;
 94871  			this.BodyCloser = $ifaceNil;
 94872  			this.ResponseToHEAD = false;
 94873  			this.ContentLength = new $Int64(0, 0);
 94874  			this.Close = false;
 94875  			this.TransferEncoding = sliceType$1.nil;
 94876  			this.Header = false;
 94877  			this.Trailer = false;
 94878  			this.IsResponse = false;
 94879  			this.bodyReadError = $ifaceNil;
 94880  			this.FlushHeaders = false;
 94881  			this.ByteReadCh = $chanNil;
 94882  			return;
 94883  		}
 94884  		this.Method = Method_;
 94885  		this.Body = Body_;
 94886  		this.BodyCloser = BodyCloser_;
 94887  		this.ResponseToHEAD = ResponseToHEAD_;
 94888  		this.ContentLength = ContentLength_;
 94889  		this.Close = Close_;
 94890  		this.TransferEncoding = TransferEncoding_;
 94891  		this.Header = Header_;
 94892  		this.Trailer = Trailer_;
 94893  		this.IsResponse = IsResponse_;
 94894  		this.bodyReadError = bodyReadError_;
 94895  		this.FlushHeaders = FlushHeaders_;
 94896  		this.ByteReadCh = ByteReadCh_;
 94897  	});
 94898  	transferReader = $pkg.transferReader = $newType(0, $kindStruct, "http.transferReader", true, "net/http", false, function(Header_, StatusCode_, RequestMethod_, ProtoMajor_, ProtoMinor_, Body_, ContentLength_, TransferEncoding_, Close_, Trailer_) {
 94899  		this.$val = this;
 94900  		if (arguments.length === 0) {
 94901  			this.Header = false;
 94902  			this.StatusCode = 0;
 94903  			this.RequestMethod = "";
 94904  			this.ProtoMajor = 0;
 94905  			this.ProtoMinor = 0;
 94906  			this.Body = $ifaceNil;
 94907  			this.ContentLength = new $Int64(0, 0);
 94908  			this.TransferEncoding = sliceType$1.nil;
 94909  			this.Close = false;
 94910  			this.Trailer = false;
 94911  			return;
 94912  		}
 94913  		this.Header = Header_;
 94914  		this.StatusCode = StatusCode_;
 94915  		this.RequestMethod = RequestMethod_;
 94916  		this.ProtoMajor = ProtoMajor_;
 94917  		this.ProtoMinor = ProtoMinor_;
 94918  		this.Body = Body_;
 94919  		this.ContentLength = ContentLength_;
 94920  		this.TransferEncoding = TransferEncoding_;
 94921  		this.Close = Close_;
 94922  		this.Trailer = Trailer_;
 94923  	});
 94924  	body = $pkg.body = $newType(0, $kindStruct, "http.body", true, "net/http", false, function(src_, hdr_, r_, closing_, doEarlyClose_, mu_, sawEOF_, closed_, earlyClose_, onHitEOF_) {
 94925  		this.$val = this;
 94926  		if (arguments.length === 0) {
 94927  			this.src = $ifaceNil;
 94928  			this.hdr = $ifaceNil;
 94929  			this.r = ptrType$72.nil;
 94930  			this.closing = false;
 94931  			this.doEarlyClose = false;
 94932  			this.mu = new sync.Mutex.ptr(0, 0);
 94933  			this.sawEOF = false;
 94934  			this.closed = false;
 94935  			this.earlyClose = false;
 94936  			this.onHitEOF = $throwNilPointerError;
 94937  			return;
 94938  		}
 94939  		this.src = src_;
 94940  		this.hdr = hdr_;
 94941  		this.r = r_;
 94942  		this.closing = closing_;
 94943  		this.doEarlyClose = doEarlyClose_;
 94944  		this.mu = mu_;
 94945  		this.sawEOF = sawEOF_;
 94946  		this.closed = closed_;
 94947  		this.earlyClose = earlyClose_;
 94948  		this.onHitEOF = onHitEOF_;
 94949  	});
 94950  	bodyLocked = $pkg.bodyLocked = $newType(0, $kindStruct, "http.bodyLocked", true, "net/http", false, function(b_) {
 94951  		this.$val = this;
 94952  		if (arguments.length === 0) {
 94953  			this.b = ptrType$96.nil;
 94954  			return;
 94955  		}
 94956  		this.b = b_;
 94957  	});
 94958  	finishAsyncByteRead = $pkg.finishAsyncByteRead = $newType(0, $kindStruct, "http.finishAsyncByteRead", true, "net/http", false, function(tw_) {
 94959  		this.$val = this;
 94960  		if (arguments.length === 0) {
 94961  			this.tw = ptrType$101.nil;
 94962  			return;
 94963  		}
 94964  		this.tw = tw_;
 94965  	});
 94966  	Transport = $pkg.Transport = $newType(0, $kindStruct, "http.Transport", true, "net/http", true, function(idleMu_, wantIdle_, idleConn_, idleConnCh_, idleLRU_, reqMu_, reqCanceler_, altMu_, altProto_, Proxy_, DialContext_, Dial_, DialTLS_, TLSClientConfig_, TLSHandshakeTimeout_, DisableKeepAlives_, DisableCompression_, MaxIdleConns_, MaxIdleConnsPerHost_, IdleConnTimeout_, ResponseHeaderTimeout_, ExpectContinueTimeout_, TLSNextProto_, ProxyConnectHeader_, MaxResponseHeaderBytes_, nextProtoOnce_, h2transport_) {
 94967  		this.$val = this;
 94968  		if (arguments.length === 0) {
 94969  			this.idleMu = new sync.Mutex.ptr(0, 0);
 94970  			this.wantIdle = false;
 94971  			this.idleConn = false;
 94972  			this.idleConnCh = false;
 94973  			this.idleLRU = new connLRU.ptr(ptrType$13.nil, false);
 94974  			this.reqMu = new sync.Mutex.ptr(0, 0);
 94975  			this.reqCanceler = false;
 94976  			this.altMu = new sync.Mutex.ptr(0, 0);
 94977  			this.altProto = new atomic.Value.ptr($ifaceNil);
 94978  			this.Proxy = $throwNilPointerError;
 94979  			this.DialContext = $throwNilPointerError;
 94980  			this.Dial = $throwNilPointerError;
 94981  			this.DialTLS = $throwNilPointerError;
 94982  			this.TLSClientConfig = ptrType$14.nil;
 94983  			this.TLSHandshakeTimeout = new time.Duration(0, 0);
 94984  			this.DisableKeepAlives = false;
 94985  			this.DisableCompression = false;
 94986  			this.MaxIdleConns = 0;
 94987  			this.MaxIdleConnsPerHost = 0;
 94988  			this.IdleConnTimeout = new time.Duration(0, 0);
 94989  			this.ResponseHeaderTimeout = new time.Duration(0, 0);
 94990  			this.ExpectContinueTimeout = new time.Duration(0, 0);
 94991  			this.TLSNextProto = false;
 94992  			this.ProxyConnectHeader = false;
 94993  			this.MaxResponseHeaderBytes = new $Int64(0, 0);
 94994  			this.nextProtoOnce = new sync.Once.ptr(new sync.Mutex.ptr(0, 0), 0);
 94995  			this.h2transport = ptrType$15.nil;
 94996  			return;
 94997  		}
 94998  		this.idleMu = idleMu_;
 94999  		this.wantIdle = wantIdle_;
 95000  		this.idleConn = idleConn_;
 95001  		this.idleConnCh = idleConnCh_;
 95002  		this.idleLRU = idleLRU_;
 95003  		this.reqMu = reqMu_;
 95004  		this.reqCanceler = reqCanceler_;
 95005  		this.altMu = altMu_;
 95006  		this.altProto = altProto_;
 95007  		this.Proxy = Proxy_;
 95008  		this.DialContext = DialContext_;
 95009  		this.Dial = Dial_;
 95010  		this.DialTLS = DialTLS_;
 95011  		this.TLSClientConfig = TLSClientConfig_;
 95012  		this.TLSHandshakeTimeout = TLSHandshakeTimeout_;
 95013  		this.DisableKeepAlives = DisableKeepAlives_;
 95014  		this.DisableCompression = DisableCompression_;
 95015  		this.MaxIdleConns = MaxIdleConns_;
 95016  		this.MaxIdleConnsPerHost = MaxIdleConnsPerHost_;
 95017  		this.IdleConnTimeout = IdleConnTimeout_;
 95018  		this.ResponseHeaderTimeout = ResponseHeaderTimeout_;
 95019  		this.ExpectContinueTimeout = ExpectContinueTimeout_;
 95020  		this.TLSNextProto = TLSNextProto_;
 95021  		this.ProxyConnectHeader = ProxyConnectHeader_;
 95022  		this.MaxResponseHeaderBytes = MaxResponseHeaderBytes_;
 95023  		this.nextProtoOnce = nextProtoOnce_;
 95024  		this.h2transport = h2transport_;
 95025  	});
 95026  	transportRequest = $pkg.transportRequest = $newType(0, $kindStruct, "http.transportRequest", true, "net/http", false, function(Request_, extra_, trace_, mu_, err_) {
 95027  		this.$val = this;
 95028  		if (arguments.length === 0) {
 95029  			this.Request = ptrType$7.nil;
 95030  			this.extra = false;
 95031  			this.trace = ptrType$47.nil;
 95032  			this.mu = new sync.Mutex.ptr(0, 0);
 95033  			this.err = $ifaceNil;
 95034  			return;
 95035  		}
 95036  		this.Request = Request_;
 95037  		this.extra = extra_;
 95038  		this.trace = trace_;
 95039  		this.mu = mu_;
 95040  		this.err = err_;
 95041  	});
 95042  	transportReadFromServerError = $pkg.transportReadFromServerError = $newType(0, $kindStruct, "http.transportReadFromServerError", true, "net/http", false, function(err_) {
 95043  		this.$val = this;
 95044  		if (arguments.length === 0) {
 95045  			this.err = $ifaceNil;
 95046  			return;
 95047  		}
 95048  		this.err = err_;
 95049  	});
 95050  	oneConnDialer = $pkg.oneConnDialer = $newType(4, $kindChan, "http.oneConnDialer", true, "net/http", false, null);
 95051  	persistConnWriter = $pkg.persistConnWriter = $newType(0, $kindStruct, "http.persistConnWriter", true, "net/http", false, function(pc_) {
 95052  		this.$val = this;
 95053  		if (arguments.length === 0) {
 95054  			this.pc = ptrType$102.nil;
 95055  			return;
 95056  		}
 95057  		this.pc = pc_;
 95058  	});
 95059  	connectMethod = $pkg.connectMethod = $newType(0, $kindStruct, "http.connectMethod", true, "net/http", false, function(proxyURL_, targetScheme_, targetAddr_) {
 95060  		this.$val = this;
 95061  		if (arguments.length === 0) {
 95062  			this.proxyURL = ptrType$20.nil;
 95063  			this.targetScheme = "";
 95064  			this.targetAddr = "";
 95065  			return;
 95066  		}
 95067  		this.proxyURL = proxyURL_;
 95068  		this.targetScheme = targetScheme_;
 95069  		this.targetAddr = targetAddr_;
 95070  	});
 95071  	connectMethodKey = $pkg.connectMethodKey = $newType(0, $kindStruct, "http.connectMethodKey", true, "net/http", false, function(proxy_, scheme_, addr_) {
 95072  		this.$val = this;
 95073  		if (arguments.length === 0) {
 95074  			this.proxy = "";
 95075  			this.scheme = "";
 95076  			this.addr = "";
 95077  			return;
 95078  		}
 95079  		this.proxy = proxy_;
 95080  		this.scheme = scheme_;
 95081  		this.addr = addr_;
 95082  	});
 95083  	persistConn = $pkg.persistConn = $newType(0, $kindStruct, "http.persistConn", true, "net/http", false, function(alt_, t_, cacheKey_, conn_, tlsState_, br_, bw_, nwrite_, reqch_, writech_, closech_, isProxy_, sawEOF_, readLimit_, writeErrCh_, writeLoopDone_, idleAt_, idleTimer_, mu_, numExpectedResponses_, closed_, canceledErr_, broken_, reused_, mutateHeaderFunc_) {
 95084  		this.$val = this;
 95085  		if (arguments.length === 0) {
 95086  			this.alt = $ifaceNil;
 95087  			this.t = ptrType$22.nil;
 95088  			this.cacheKey = new connectMethodKey.ptr("", "", "");
 95089  			this.conn = $ifaceNil;
 95090  			this.tlsState = ptrType$18.nil;
 95091  			this.br = ptrType$72.nil;
 95092  			this.bw = ptrType$10.nil;
 95093  			this.nwrite = new $Int64(0, 0);
 95094  			this.reqch = $chanNil;
 95095  			this.writech = $chanNil;
 95096  			this.closech = $chanNil;
 95097  			this.isProxy = false;
 95098  			this.sawEOF = false;
 95099  			this.readLimit = new $Int64(0, 0);
 95100  			this.writeErrCh = $chanNil;
 95101  			this.writeLoopDone = $chanNil;
 95102  			this.idleAt = new time.Time.ptr(new $Uint64(0, 0), new $Int64(0, 0), ptrType$1.nil);
 95103  			this.idleTimer = ptrType$56.nil;
 95104  			this.mu = new sync.Mutex.ptr(0, 0);
 95105  			this.numExpectedResponses = 0;
 95106  			this.closed = $ifaceNil;
 95107  			this.canceledErr = $ifaceNil;
 95108  			this.broken = false;
 95109  			this.reused = false;
 95110  			this.mutateHeaderFunc = $throwNilPointerError;
 95111  			return;
 95112  		}
 95113  		this.alt = alt_;
 95114  		this.t = t_;
 95115  		this.cacheKey = cacheKey_;
 95116  		this.conn = conn_;
 95117  		this.tlsState = tlsState_;
 95118  		this.br = br_;
 95119  		this.bw = bw_;
 95120  		this.nwrite = nwrite_;
 95121  		this.reqch = reqch_;
 95122  		this.writech = writech_;
 95123  		this.closech = closech_;
 95124  		this.isProxy = isProxy_;
 95125  		this.sawEOF = sawEOF_;
 95126  		this.readLimit = readLimit_;
 95127  		this.writeErrCh = writeErrCh_;
 95128  		this.writeLoopDone = writeLoopDone_;
 95129  		this.idleAt = idleAt_;
 95130  		this.idleTimer = idleTimer_;
 95131  		this.mu = mu_;
 95132  		this.numExpectedResponses = numExpectedResponses_;
 95133  		this.closed = closed_;
 95134  		this.canceledErr = canceledErr_;
 95135  		this.broken = broken_;
 95136  		this.reused = reused_;
 95137  		this.mutateHeaderFunc = mutateHeaderFunc_;
 95138  	});
 95139  	nothingWrittenError = $pkg.nothingWrittenError = $newType(0, $kindStruct, "http.nothingWrittenError", true, "net/http", false, function(error_) {
 95140  		this.$val = this;
 95141  		if (arguments.length === 0) {
 95142  			this.error = $ifaceNil;
 95143  			return;
 95144  		}
 95145  		this.error = error_;
 95146  	});
 95147  	responseAndError = $pkg.responseAndError = $newType(0, $kindStruct, "http.responseAndError", true, "net/http", false, function(res_, err_) {
 95148  		this.$val = this;
 95149  		if (arguments.length === 0) {
 95150  			this.res = ptrType$17.nil;
 95151  			this.err = $ifaceNil;
 95152  			return;
 95153  		}
 95154  		this.res = res_;
 95155  		this.err = err_;
 95156  	});
 95157  	requestAndChan = $pkg.requestAndChan = $newType(0, $kindStruct, "http.requestAndChan", true, "net/http", false, function(req_, ch_, addedGzip_, continueCh_, callerGone_) {
 95158  		this.$val = this;
 95159  		if (arguments.length === 0) {
 95160  			this.req = ptrType$7.nil;
 95161  			this.ch = $chanNil;
 95162  			this.addedGzip = false;
 95163  			this.continueCh = $chanNil;
 95164  			this.callerGone = $chanNil;
 95165  			return;
 95166  		}
 95167  		this.req = req_;
 95168  		this.ch = ch_;
 95169  		this.addedGzip = addedGzip_;
 95170  		this.continueCh = continueCh_;
 95171  		this.callerGone = callerGone_;
 95172  	});
 95173  	writeRequest = $pkg.writeRequest = $newType(0, $kindStruct, "http.writeRequest", true, "net/http", false, function(req_, ch_, continueCh_) {
 95174  		this.$val = this;
 95175  		if (arguments.length === 0) {
 95176  			this.req = ptrType$137.nil;
 95177  			this.ch = $chanNil;
 95178  			this.continueCh = $chanNil;
 95179  			return;
 95180  		}
 95181  		this.req = req_;
 95182  		this.ch = ch_;
 95183  		this.continueCh = continueCh_;
 95184  	});
 95185  	httpError = $pkg.httpError = $newType(0, $kindStruct, "http.httpError", true, "net/http", false, function(err_, timeout_) {
 95186  		this.$val = this;
 95187  		if (arguments.length === 0) {
 95188  			this.err = "";
 95189  			this.timeout = false;
 95190  			return;
 95191  		}
 95192  		this.err = err_;
 95193  		this.timeout = timeout_;
 95194  	});
 95195  	tLogKey = $pkg.tLogKey = $newType(0, $kindStruct, "http.tLogKey", true, "net/http", false, function() {
 95196  		this.$val = this;
 95197  		if (arguments.length === 0) {
 95198  			return;
 95199  		}
 95200  	});
 95201  	bodyEOFSignal = $pkg.bodyEOFSignal = $newType(0, $kindStruct, "http.bodyEOFSignal", true, "net/http", false, function(body_, mu_, closed_, rerr_, fn_, earlyCloseFn_) {
 95202  		this.$val = this;
 95203  		if (arguments.length === 0) {
 95204  			this.body = $ifaceNil;
 95205  			this.mu = new sync.Mutex.ptr(0, 0);
 95206  			this.closed = false;
 95207  			this.rerr = $ifaceNil;
 95208  			this.fn = $throwNilPointerError;
 95209  			this.earlyCloseFn = $throwNilPointerError;
 95210  			return;
 95211  		}
 95212  		this.body = body_;
 95213  		this.mu = mu_;
 95214  		this.closed = closed_;
 95215  		this.rerr = rerr_;
 95216  		this.fn = fn_;
 95217  		this.earlyCloseFn = earlyCloseFn_;
 95218  	});
 95219  	gzipReader = $pkg.gzipReader = $newType(0, $kindStruct, "http.gzipReader", true, "net/http", false, function(body_, zr_, zerr_) {
 95220  		this.$val = this;
 95221  		if (arguments.length === 0) {
 95222  			this.body = ptrType$105.nil;
 95223  			this.zr = ptrType$75.nil;
 95224  			this.zerr = $ifaceNil;
 95225  			return;
 95226  		}
 95227  		this.body = body_;
 95228  		this.zr = zr_;
 95229  		this.zerr = zerr_;
 95230  	});
 95231  	tlsHandshakeTimeoutError = $pkg.tlsHandshakeTimeoutError = $newType(0, $kindStruct, "http.tlsHandshakeTimeoutError", true, "net/http", false, function() {
 95232  		this.$val = this;
 95233  		if (arguments.length === 0) {
 95234  			return;
 95235  		}
 95236  	});
 95237  	fakeLocker = $pkg.fakeLocker = $newType(0, $kindStruct, "http.fakeLocker", true, "net/http", false, function() {
 95238  		this.$val = this;
 95239  		if (arguments.length === 0) {
 95240  			return;
 95241  		}
 95242  	});
 95243  	connLRU = $pkg.connLRU = $newType(0, $kindStruct, "http.connLRU", true, "net/http", false, function(ll_, m_) {
 95244  		this.$val = this;
 95245  		if (arguments.length === 0) {
 95246  			this.ll = ptrType$13.nil;
 95247  			this.m = false;
 95248  			return;
 95249  		}
 95250  		this.ll = ll_;
 95251  		this.m = m_;
 95252  	});
 95253  	canceler = $newType(8, $kindInterface, "http.canceler", true, "net/http", false, null);
 95254  	I = $newType(8, $kindInterface, "http.I", true, "net/http", true, null);
 95255  	requestTooLarger = $newType(8, $kindInterface, "http.requestTooLarger", true, "net/http", false, null);
 95256  	dialRes = $newType(0, $kindStruct, "http.dialRes", true, "net/http", false, function(pc_, err_) {
 95257  		this.$val = this;
 95258  		if (arguments.length === 0) {
 95259  			this.pc = ptrType$102.nil;
 95260  			this.err = $ifaceNil;
 95261  			return;
 95262  		}
 95263  		this.pc = pc_;
 95264  		this.err = err_;
 95265  	});
 95266  	ptrType = $ptrType(sync.Mutex);
 95267  	sliceType = $sliceType($emptyInterface);
 95268  	ptrType$1 = $ptrType(time.Location);
 95269  	ptrType$2 = $ptrType(net.Resolver);
 95270  	sliceType$1 = $sliceType($String);
 95271  	ptrType$3 = $ptrType(http2clientConnPool);
 95272  	sliceType$2 = $sliceType($Int);
 95273  	sliceType$3 = $sliceType($Uint8);
 95274  	ptrType$4 = $ptrType(sliceType$3);
 95275  	ptrType$5 = $ptrType(http2responseWriter);
 95276  	ptrType$6 = $ptrType(http2stream);
 95277  	ptrType$7 = $ptrType(Request);
 95278  	ptrType$8 = $ptrType(http2requestBody);
 95279  	ptrType$9 = $ptrType(http2serverConn);
 95280  	ptrType$10 = $ptrType(bufio.Writer);
 95281  	ptrType$11 = $ptrType(http2serverMessage);
 95282  	chanType = $chanType($error, false, false);
 95283  	sliceType$4 = $sliceType(keyValues);
 95284  	sliceType$5 = $sliceType(sliceType$3);
 95285  	sliceType$6 = $sliceType(sniffSig);
 95286  	ptrType$13 = $ptrType(list.List);
 95287  	ptrType$14 = $ptrType(tls.Config);
 95288  	ptrType$15 = $ptrType(http2Transport);
 95289  	ptrType$16 = $ptrType(js.Object);
 95290  	funcType = $funcType([ptrType$16], [], false);
 95291  	ptrType$17 = $ptrType(Response);
 95292  	mapType = $mapType($String, $emptyInterface);
 95293  	funcType$1 = $funcType([ptrType$16, ptrType$16], [], false);
 95294  	ptrType$18 = $ptrType(tls.ConnectionState);
 95295  	funcType$2 = $funcType([], [], false);
 95296  	ptrType$19 = $ptrType(url.Userinfo);
 95297  	ptrType$20 = $ptrType(url.URL);
 95298  	ptrType$21 = $ptrType(multipart.Form);
 95299  	structType = $structType("", []);
 95300  	ptrType$22 = $ptrType(Transport);
 95301  	ptrType$23 = $ptrType(atomicBool);
 95302  	sliceType$7 = $sliceType(ptrType$7);
 95303  	ptrType$24 = $ptrType(url.Error);
 95304  	ptrType$25 = $ptrType(Cookie);
 95305  	sliceType$8 = $sliceType(ptrType$25);
 95306  	arrayType = $arrayType($Uint8, 64);
 95307  	ptrType$28 = $ptrType(http2ClientConn);
 95308  	sliceType$10 = $sliceType(ptrType$28);
 95309  	ptrType$29 = $ptrType(http2dialCall);
 95310  	ptrType$30 = $ptrType(http2addConnCall);
 95311  	sliceType$11 = $sliceType(tls.Certificate);
 95312  	ptrType$31 = $ptrType($packages["crypto/x509"].CertPool);
 95313  	sliceType$12 = $sliceType($Uint16);
 95314  	arrayType$2 = $arrayType($Uint8, 32);
 95315  	sliceType$13 = $sliceType(tls.CurveID);
 95316  	sliceType$14 = $sliceType(tls.ticketKey);
 95317  	ptrType$32 = $ptrType(http2flow);
 95318  	ptrType$33 = $ptrType(http2Framer);
 95319  	ptrType$34 = $ptrType(http2frameCache);
 95320  	arrayType$3 = $arrayType($Uint8, 9);
 95321  	ptrType$35 = $ptrType(hpack.Decoder);
 95322  	ptrType$36 = $ptrType(bytes.Buffer);
 95323  	ptrType$37 = $ptrType(http2HeadersFrame);
 95324  	arrayType$4 = $arrayType($Uint8, 8);
 95325  	sliceType$15 = $sliceType(hpack.HeaderField);
 95326  	ptrType$38 = $ptrType(http2MetaHeadersFrame);
 95327  	ptrType$39 = $ptrType(http2ContinuationFrame);
 95328  	ptrType$40 = $ptrType(http2SettingsFrame);
 95329  	ptrType$41 = $ptrType(http2DataFrame);
 95330  	ptrType$42 = $ptrType(http2WindowUpdateFrame);
 95331  	ptrType$43 = $ptrType(http2PingFrame);
 95332  	ptrType$44 = $ptrType(http2GoAwayFrame);
 95333  	ptrType$45 = $ptrType(http2RSTStreamFrame);
 95334  	ptrType$46 = $ptrType(Server);
 95335  	ptrType$47 = $ptrType(httptrace.ClientTrace);
 95336  	ptrType$48 = $ptrType(http2clientTrace);
 95337  	ptrType$49 = $ptrType(PushOptions);
 95338  	ptrType$50 = $ptrType($error);
 95339  	ptrType$51 = $ptrType(http2serverInternalState);
 95340  	ptrType$52 = $ptrType(http2Server);
 95341  	ptrType$53 = $ptrType(http2ServeConnOpts);
 95342  	ptrType$54 = $ptrType(log.Logger);
 95343  	sliceType$16 = $sliceType(funcType$2);
 95344  	ptrType$55 = $ptrType(http2bufferedWriter);
 95345  	ptrType$56 = $ptrType(time.Timer);
 95346  	ptrType$57 = $ptrType(hpack.Encoder);
 95347  	ptrType$58 = $ptrType($packages["crypto/x509"].Certificate);
 95348  	sliceType$17 = $sliceType(ptrType$58);
 95349  	sliceType$18 = $sliceType(sliceType$17);
 95350  	ptrType$59 = $ptrType(net.OpError);
 95351  	ptrType$60 = $ptrType(os.SyscallError);
 95352  	funcType$3 = $funcType([$Int], [], false);
 95353  	ptrType$61 = $ptrType(http2startPushRequest);
 95354  	ptrType$62 = $ptrType(http2writeData);
 95355  	ptrType$63 = $ptrType(http2writeResHeaders);
 95356  	ptrType$64 = $ptrType(http2writePushPromise);
 95357  	ptrType$65 = $ptrType(http2PriorityFrame);
 95358  	ptrType$66 = $ptrType(http2PushPromiseFrame);
 95359  	ptrType$67 = $ptrType(http2pipe);
 95360  	ptrType$68 = $ptrType(http2closeWaiter);
 95361  	ptrType$69 = $ptrType(http2responseWriterState);
 95362  	ptrType$70 = $ptrType(http2sorter);
 95363  	interfaceType = $interfaceType([{prop: "IsHTTP2NoCachedConnError", name: "IsHTTP2NoCachedConnError", pkg: "", typ: $funcType([], [], false)}]);
 95364  	ptrType$71 = $ptrType(sync.Cond);
 95365  	ptrType$72 = $ptrType(bufio.Reader);
 95366  	sliceType$19 = $sliceType(http2Setting);
 95367  	ptrType$73 = $ptrType(Header);
 95368  	ptrType$74 = $ptrType(http2clientStream);
 95369  	ptrType$75 = $ptrType(gzip.Reader);
 95370  	ptrType$76 = $ptrType(sync.Once);
 95371  	sliceType$20 = $sliceType(http2FrameWriteRequest);
 95372  	ptrType$77 = $ptrType(http2writeQueue);
 95373  	ptrType$78 = $ptrType(http2PriorityWriteSchedulerConfig);
 95374  	ptrType$79 = $ptrType(http2priorityNode);
 95375  	sliceType$21 = $sliceType(ptrType$79);
 95376  	ptrType$80 = $ptrType(http2writeQueuePool);
 95377  	ptrType$81 = $ptrType(sliceType$21);
 95378  	ptrType$82 = $ptrType(headerSorter);
 95379  	ptrType$83 = $ptrType(multipart.Reader);
 95380  	ptrType$84 = $ptrType(bytes.Reader);
 95381  	ptrType$85 = $ptrType(strings.Reader);
 95382  	ptrType$86 = $ptrType(textproto.Reader);
 95383  	ptrType$87 = $ptrType(maxBytesReader);
 95384  	ptrType$88 = $ptrType(multipart.FileHeader);
 95385  	sliceType$22 = $sliceType(ptrType$88);
 95386  	arrayType$5 = $arrayType($Uint8, 1);
 95387  	sliceType$23 = $sliceType(io.Reader);
 95388  	structType$1 = $structType("", [{prop: "Reader", name: "Reader", anonymous: true, exported: true, typ: io.Reader, tag: ""}, {prop: "Closer", name: "Closer", anonymous: true, exported: true, typ: io.Closer, tag: ""}]);
 95389  	ptrType$89 = $ptrType(bufio.ReadWriter);
 95390  	ptrType$90 = $ptrType($Int32);
 95391  	ptrType$91 = $ptrType(os.File);
 95392  	ptrType$92 = $ptrType(io.LimitedReader);
 95393  	ptrType$93 = $ptrType(connReader);
 95394  	ptrType$94 = $ptrType(response);
 95395  	ptrType$95 = $ptrType(sync.Pool);
 95396  	ptrType$96 = $ptrType(body);
 95397  	ptrType$97 = $ptrType(conn);
 95398  	arrayType$6 = $arrayType($Uint8, 29);
 95399  	arrayType$7 = $arrayType($Uint8, 10);
 95400  	arrayType$8 = $arrayType($Uint8, 3);
 95401  	ptrType$98 = $ptrType(expectContinueReader);
 95402  	ptrType$99 = $ptrType(tls.Conn);
 95403  	ptrType$100 = $ptrType(net.TCPListener);
 95404  	ptrType$101 = $ptrType(transferWriter);
 95405  	mapType$1 = $mapType($String, RoundTripper);
 95406  	ptrType$102 = $ptrType(persistConn);
 95407  	sliceType$24 = $sliceType(ptrType$102);
 95408  	ptrType$103 = $ptrType(proxy.Auth);
 95409  	ptrType$104 = $ptrType(list.Element);
 95410  	ptrType$105 = $ptrType(bodyEOFSignal);
 95411  	funcType$4 = $funcType([$String, sliceType], [], true);
 95412  	ptrType$106 = $ptrType(streamReader);
 95413  	ptrType$107 = $ptrType(fetchTransport);
 95414  	ptrType$108 = $ptrType(XHRTransport);
 95415  	mapType$2 = $mapType(ptrType$7, ptrType$16);
 95416  	funcType$5 = $funcType([], [$Bool], false);
 95417  	funcType$6 = $funcType([ptrType$7], [], false);
 95418  	ptrType$109 = $ptrType(Client);
 95419  	funcType$7 = $funcType([ptrType$7, sliceType$7], [$error], false);
 95420  	ptrType$110 = $ptrType(cancelTimerBody);
 95421  	mapType$3 = $mapType($String, sliceType$10);
 95422  	mapType$4 = $mapType($String, ptrType$29);
 95423  	mapType$5 = $mapType(ptrType$28, sliceType$1);
 95424  	mapType$6 = $mapType($String, ptrType$30);
 95425  	chanType$2 = $chanType(structType, false, false);
 95426  	ptrType$113 = $ptrType(http2dataBuffer);
 95427  	ptrType$114 = $ptrType(http2FrameHeader);
 95428  	funcType$8 = $funcType([$Uint32], [sliceType$3], false);
 95429  	funcType$9 = $funcType([http2Setting], [$error], false);
 95430  	ptrType$115 = $ptrType(http2UnknownFrame);
 95431  	chanType$3 = $chanType(structType, false, true);
 95432  	funcType$10 = $funcType([$String], [], false);
 95433  	funcType$11 = $funcType([httptrace.GotConnInfo], [], false);
 95434  	funcType$12 = $funcType([$error], [], false);
 95435  	funcType$13 = $funcType([httptrace.DNSStartInfo], [], false);
 95436  	funcType$14 = $funcType([httptrace.DNSDoneInfo], [], false);
 95437  	funcType$15 = $funcType([$String, $String], [], false);
 95438  	funcType$16 = $funcType([$String, $String, $error], [], false);
 95439  	funcType$17 = $funcType([tls.ConnectionState, $error], [], false);
 95440  	funcType$18 = $funcType([httptrace.WroteRequestInfo], [], false);
 95441  	ptrType$116 = $ptrType(http2httpError);
 95442  	funcType$19 = $funcType([], [http2WriteScheduler], false);
 95443  	mapType$7 = $mapType(ptrType$9, structType);
 95444  	funcType$20 = $funcType([ResponseWriter, ptrType$7], [], false);
 95445  	chanType$4 = $chanType(http2readFrameResult, false, false);
 95446  	chanType$5 = $chanType(http2FrameWriteRequest, false, false);
 95447  	chanType$6 = $chanType(http2frameWriteResult, false, false);
 95448  	chanType$7 = $chanType(http2bodyReadMsg, false, false);
 95449  	chanType$8 = $chanType($emptyInterface, false, false);
 95450  	mapType$8 = $mapType($Uint32, ptrType$6);
 95451  	mapType$9 = $mapType($String, $String);
 95452  	chanType$9 = $chanType($Bool, false, true);
 95453  	chanType$10 = $chanType($Bool, false, false);
 95454  	funcType$21 = $funcType([$String, $String, ptrType$14], [net.Conn, $error], false);
 95455  	mapType$10 = $mapType($Uint32, ptrType$74);
 95456  	mapType$11 = $mapType(arrayType$4, chanType$2);
 95457  	chanType$11 = $chanType(http2resAndError, false, false);
 95458  	ptrType$117 = $ptrType(http2badStringError);
 95459  	ptrType$118 = $ptrType(http2clientConnReadLoop);
 95460  	ptrType$119 = $ptrType(http2gzipReader);
 95461  	ptrType$120 = $ptrType(http2writeGoAway);
 95462  	funcType$22 = $funcType([], [$Uint32, $error], false);
 95463  	ptrType$121 = $ptrType(http2FrameWriteRequest);
 95464  	funcType$23 = $funcType([ptrType$79, $Bool], [$Bool], false);
 95465  	ptrType$122 = $ptrType(http2priorityWriteScheduler);
 95466  	mapType$12 = $mapType($Uint32, ptrType$79);
 95467  	ptrType$123 = $ptrType(http2randomWriteScheduler);
 95468  	mapType$13 = $mapType($Uint32, ptrType$77);
 95469  	mapType$14 = $mapType($String, $Bool);
 95470  	ptrType$124 = $ptrType(contextKey);
 95471  	ptrType$125 = $ptrType(ProtocolError);
 95472  	ptrType$126 = $ptrType(badStringError);
 95473  	funcType$24 = $funcType([], [io.ReadCloser, $error], false);
 95474  	ptrType$127 = $ptrType(chunkWriter);
 95475  	ptrType$128 = $ptrType(redirectHandler);
 95476  	ptrType$129 = $ptrType(ServeMux);
 95477  	mapType$15 = $mapType($String, muxEntry);
 95478  	funcType$25 = $funcType([ptrType$46, ptrType$99, Handler], [], false);
 95479  	mapType$16 = $mapType($String, funcType$25);
 95480  	funcType$26 = $funcType([net.Conn, ConnState], [], false);
 95481  	mapType$17 = $mapType(net.Listener, structType);
 95482  	mapType$18 = $mapType(ptrType$97, structType);
 95483  	ptrType$132 = $ptrType(loggingConn);
 95484  	ptrType$133 = $ptrType(exactSig);
 95485  	ptrType$134 = $ptrType(maskedSig);
 95486  	ptrType$135 = $ptrType(byteReader);
 95487  	chanType$12 = $chanType(readResult, false, false);
 95488  	ptrType$136 = $ptrType(transferReader);
 95489  	ptrType$137 = $ptrType(transportRequest);
 95490  	chanType$13 = $chanType(ptrType$102, false, false);
 95491  	mapType$19 = $mapType(connectMethodKey, sliceType$24);
 95492  	mapType$20 = $mapType(connectMethodKey, chanType$13);
 95493  	mapType$21 = $mapType(ptrType$7, funcType$12);
 95494  	funcType$27 = $funcType([ptrType$7], [ptrType$20, $error], false);
 95495  	funcType$28 = $funcType([context.Context, $String, $String], [net.Conn, $error], false);
 95496  	funcType$29 = $funcType([$String, $String], [net.Conn, $error], false);
 95497  	funcType$30 = $funcType([$String, ptrType$99], [RoundTripper], false);
 95498  	mapType$22 = $mapType($String, funcType$30);
 95499  	ptrType$139 = $ptrType(connectMethod);
 95500  	chanType$14 = $chanType(requestAndChan, false, false);
 95501  	chanType$15 = $chanType(writeRequest, false, false);
 95502  	funcType$31 = $funcType([Header], [], false);
 95503  	chanType$16 = $chanType(responseAndError, false, false);
 95504  	chanType$17 = $chanType(structType, true, false);
 95505  	chanType$18 = $chanType($error, true, false);
 95506  	ptrType$140 = $ptrType(httpError);
 95507  	funcType$32 = $funcType([$error], [$error], false);
 95508  	funcType$33 = $funcType([], [$error], false);
 95509  	ptrType$141 = $ptrType(gzipReader);
 95510  	ptrType$142 = $ptrType(connLRU);
 95511  	mapType$23 = $mapType(ptrType$102, ptrType$104);
 95512  	streamReader.ptr.prototype.Read = function(p) {
 95513  		var _r$1, _selection, _tmp, _tmp$1, _tmp$2, _tmp$3, b, bCh, err, err$1, errCh, n, p, r, $s, $r;
 95514  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; _selection = $f._selection; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; b = $f.b; bCh = $f.bCh; err = $f.err; err$1 = $f.err$1; errCh = $f.errCh; n = $f.n; p = $f.p; r = $f.r; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 95515  		bCh = [bCh];
 95516  		errCh = [errCh];
 95517  		n = 0;
 95518  		err = $ifaceNil;
 95519  		r = this;
 95520  		/* */ if (r.pending.$length === 0) { $s = 1; continue; }
 95521  		/* */ $s = 2; continue;
 95522  		/* if (r.pending.$length === 0) { */ case 1:
 95523  			bCh[0] = new $Chan(sliceType$3, 0);
 95524  			errCh[0] = new $Chan($error, 0);
 95525  			r.stream.read().then($externalize((function(bCh, errCh) { return function $b(result) {
 95526  				var result, $s, $r;
 95527  				/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; result = $f.result; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 95528  				/* */ if (!!(result.done)) { $s = 1; continue; }
 95529  				/* */ $s = 2; continue;
 95530  				/* if (!!(result.done)) { */ case 1:
 95531  					$r = $send(errCh[0], io.EOF); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 95532  					$s = -1; return;
 95533  				/* } */ case 2:
 95534  				$r = $send(bCh[0], $assertType($internalize(result.value, $emptyInterface), sliceType$3)); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 95535  				$s = -1; return;
 95536  				/* */ } return; } if ($f === undefined) { $f = { $blk: $b }; } $f.result = result; $f.$s = $s; $f.$r = $r; return $f;
 95537  			}; })(bCh, errCh), funcType), $externalize((function(bCh, errCh) { return function $b(reason) {
 95538  				var reason, $s, $r;
 95539  				/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; reason = $f.reason; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 95540  				$r = $send(errCh[0], errors.New($internalize(reason.message, $String))); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 95541  				$s = -1; return;
 95542  				/* */ } return; } if ($f === undefined) { $f = { $blk: $b }; } $f.reason = reason; $f.$s = $s; $f.$r = $r; return $f;
 95543  			}; })(bCh, errCh), funcType));
 95544  			_r$1 = $select([[bCh[0]], [errCh[0]]]); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 95545  			_selection = _r$1;
 95546  			if (_selection[0] === 0) {
 95547  				b = _selection[1][0];
 95548  				r.pending = b;
 95549  			} else if (_selection[0] === 1) {
 95550  				err$1 = _selection[1][0];
 95551  				_tmp = 0;
 95552  				_tmp$1 = err$1;
 95553  				n = _tmp;
 95554  				err = _tmp$1;
 95555  				$s = -1; return [n, err];
 95556  			}
 95557  		/* } */ case 2:
 95558  		n = $copySlice(p, r.pending);
 95559  		r.pending = $subslice(r.pending, n);
 95560  		_tmp$2 = n;
 95561  		_tmp$3 = $ifaceNil;
 95562  		n = _tmp$2;
 95563  		err = _tmp$3;
 95564  		$s = -1; return [n, err];
 95565  		/* */ } return; } if ($f === undefined) { $f = { $blk: streamReader.ptr.prototype.Read }; } $f._r$1 = _r$1; $f._selection = _selection; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f.b = b; $f.bCh = bCh; $f.err = err; $f.err$1 = err$1; $f.errCh = errCh; $f.n = n; $f.p = p; $f.r = r; $f.$s = $s; $f.$r = $r; return $f;
 95566  	};
 95567  	streamReader.prototype.Read = function(p) { return this.$val.Read(p); };
 95568  	streamReader.ptr.prototype.Close = function() {
 95569  		var r;
 95570  		r = this;
 95571  		r.stream.cancel();
 95572  		return $ifaceNil;
 95573  	};
 95574  	streamReader.prototype.Close = function() { return this.$val.Close(); };
 95575  	fetchTransport.ptr.prototype.RoundTrip = function(req) {
 95576  		var _entry, _i, _i$1, _key, _keys, _r$1, _r$2, _r$3, _r$4, _r$5, _ref, _ref$1, _selection, _tuple, body$1, err, err$1, errCh, headers, key, opt, req, resp, respCh, respPromise, t, value, values, $s, $r;
 95577  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _entry = $f._entry; _i = $f._i; _i$1 = $f._i$1; _key = $f._key; _keys = $f._keys; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _ref = $f._ref; _ref$1 = $f._ref$1; _selection = $f._selection; _tuple = $f._tuple; body$1 = $f.body$1; err = $f.err; err$1 = $f.err$1; errCh = $f.errCh; headers = $f.headers; key = $f.key; opt = $f.opt; req = $f.req; resp = $f.resp; respCh = $f.respCh; respPromise = $f.respPromise; t = $f.t; value = $f.value; values = $f.values; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 95578  		errCh = [errCh];
 95579  		req = [req];
 95580  		respCh = [respCh];
 95581  		t = this;
 95582  		headers = new ($global.Headers)();
 95583  		_ref = req[0].Header;
 95584  		_i = 0;
 95585  		_keys = $keys(_ref);
 95586  		while (true) {
 95587  			if (!(_i < _keys.length)) { break; }
 95588  			_entry = _ref[_keys[_i]];
 95589  			if (_entry === undefined) {
 95590  				_i++;
 95591  				continue;
 95592  			}
 95593  			key = _entry.k;
 95594  			values = _entry.v;
 95595  			_ref$1 = values;
 95596  			_i$1 = 0;
 95597  			while (true) {
 95598  				if (!(_i$1 < _ref$1.$length)) { break; }
 95599  				value = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]);
 95600  				headers.append($externalize(key, $String), $externalize(value, $String));
 95601  				_i$1++;
 95602  			}
 95603  			_i++;
 95604  		}
 95605  		opt = $makeMap($String.keyFor, [{ k: "method", v: new $String(req[0].Method) }, { k: "headers", v: new $jsObjectPtr(headers) }, { k: "credentials", v: new $String("same-origin") }]);
 95606  		/* */ if (!($interfaceIsEqual(req[0].Body, $ifaceNil))) { $s = 1; continue; }
 95607  		/* */ $s = 2; continue;
 95608  		/* if (!($interfaceIsEqual(req[0].Body, $ifaceNil))) { */ case 1:
 95609  			_r$1 = ioutil.ReadAll(req[0].Body); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 95610  			_tuple = _r$1;
 95611  			body$1 = _tuple[0];
 95612  			err = _tuple[1];
 95613  			/* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 4; continue; }
 95614  			/* */ $s = 5; continue;
 95615  			/* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 4:
 95616  				_r$2 = req[0].Body.Close(); /* */ $s = 6; case 6: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 95617  				_r$2;
 95618  				$s = -1; return [ptrType$17.nil, err];
 95619  			/* } */ case 5:
 95620  			_r$3 = req[0].Body.Close(); /* */ $s = 7; case 7: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 95621  			_r$3;
 95622  			_key = "body"; (opt || $throwRuntimeError("assignment to entry in nil map"))[$String.keyFor(_key)] = { k: _key, v: body$1 };
 95623  		/* } */ case 2:
 95624  		respPromise = $global.fetch($externalize(req[0].URL.String(), $String), $externalize(opt, mapType));
 95625  		respCh[0] = new $Chan(ptrType$17, 0);
 95626  		errCh[0] = new $Chan($error, 0);
 95627  		respPromise.then($externalize((function(errCh, req, respCh) { return function $b(result) {
 95628  			var _r$4, _r$5, _selection, _tuple$1, cl, contentLength, err$1, header, result, $s, $r;
 95629  			/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$4 = $f._r$4; _r$5 = $f._r$5; _selection = $f._selection; _tuple$1 = $f._tuple$1; cl = $f.cl; contentLength = $f.contentLength; err$1 = $f.err$1; header = $f.header; result = $f.result; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 95630  			header = [header];
 95631  			header[0] = $makeMap($String.keyFor, []);
 95632  			result.headers.forEach($externalize((function(errCh, header, req, respCh) { return function(value$1, key$1) {
 95633  				var _entry$1, _key$1, ck, key$1, value$1;
 95634  				ck = CanonicalHeaderKey($internalize(key$1, $String));
 95635  				_key$1 = ck; (header[0] || $throwRuntimeError("assignment to entry in nil map"))[$String.keyFor(_key$1)] = { k: _key$1, v: $append((_entry$1 = header[0][$String.keyFor(ck)], _entry$1 !== undefined ? _entry$1.v : sliceType$1.nil), $internalize(value$1, $String)) };
 95636  			}; })(errCh, header, req, respCh), funcType$1));
 95637  			contentLength = new $Int64(-1, 4294967295);
 95638  			_tuple$1 = strconv.ParseInt(new Header(header[0]).Get("Content-Length"), 10, 64);
 95639  			cl = _tuple$1[0];
 95640  			err$1 = _tuple$1[1];
 95641  			if ($interfaceIsEqual(err$1, $ifaceNil)) {
 95642  				contentLength = cl;
 95643  			}
 95644  			_r$4 = req[0].Context().Done(); /* */ $s = 1; case 1: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 95645  			_r$5 = $select([[respCh[0], new Response.ptr($internalize(result.status, $String) + " " + StatusText($parseInt(result.status) >> 0), $parseInt(result.status) >> 0, "", 0, 0, header[0], new streamReader.ptr(sliceType$3.nil, result.body.getReader()), contentLength, sliceType$1.nil, false, false, false, req[0], ptrType$18.nil)], [_r$4]]); /* */ $s = 2; case 2: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
 95646  			_selection = _r$5;
 95647  			/* */ if (_selection[0] === 0) { $s = 3; continue; }
 95648  			/* */ if (_selection[0] === 1) { $s = 4; continue; }
 95649  			/* */ $s = 5; continue;
 95650  			/* if (_selection[0] === 0) { */ case 3:
 95651  				$s = 5; continue;
 95652  			/* } else if (_selection[0] === 1) { */ case 4:
 95653  			/* } */ case 5:
 95654  			$s = -1; return;
 95655  			/* */ } return; } if ($f === undefined) { $f = { $blk: $b }; } $f._r$4 = _r$4; $f._r$5 = _r$5; $f._selection = _selection; $f._tuple$1 = _tuple$1; $f.cl = cl; $f.contentLength = contentLength; $f.err$1 = err$1; $f.header = header; $f.result = result; $f.$s = $s; $f.$r = $r; return $f;
 95656  		}; })(errCh, req, respCh), funcType), $externalize((function(errCh, req, respCh) { return function $b(reason) {
 95657  			var _r$4, _r$5, _r$6, _selection, reason, $s, $r;
 95658  			/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _selection = $f._selection; reason = $f.reason; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 95659  			_r$4 = fmt.Errorf("net/http: fetch() failed: %s", new sliceType([new $String($internalize(reason, $String))])); /* */ $s = 1; case 1: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 95660  			_r$5 = req[0].Context().Done(); /* */ $s = 2; case 2: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
 95661  			_r$6 = $select([[errCh[0], _r$4], [_r$5]]); /* */ $s = 3; case 3: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
 95662  			_selection = _r$6;
 95663  			/* */ if (_selection[0] === 0) { $s = 4; continue; }
 95664  			/* */ if (_selection[0] === 1) { $s = 5; continue; }
 95665  			/* */ $s = 6; continue;
 95666  			/* if (_selection[0] === 0) { */ case 4:
 95667  				$s = 6; continue;
 95668  			/* } else if (_selection[0] === 1) { */ case 5:
 95669  			/* } */ case 6:
 95670  			$s = -1; return;
 95671  			/* */ } return; } if ($f === undefined) { $f = { $blk: $b }; } $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._selection = _selection; $f.reason = reason; $f.$s = $s; $f.$r = $r; return $f;
 95672  		}; })(errCh, req, respCh), funcType));
 95673  		_r$4 = req[0].Context().Done(); /* */ $s = 8; case 8: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 95674  		_r$5 = $select([[_r$4], [respCh[0]], [errCh[0]]]); /* */ $s = 9; case 9: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
 95675  		_selection = _r$5;
 95676  		/* */ if (_selection[0] === 0) { $s = 10; continue; }
 95677  		/* */ if (_selection[0] === 1) { $s = 11; continue; }
 95678  		/* */ if (_selection[0] === 2) { $s = 12; continue; }
 95679  		/* */ $s = 13; continue;
 95680  		/* if (_selection[0] === 0) { */ case 10:
 95681  			$s = -1; return [ptrType$17.nil, errors.New("net/http: request canceled")];
 95682  		/* } else if (_selection[0] === 1) { */ case 11:
 95683  			resp = _selection[1][0];
 95684  			$s = -1; return [resp, $ifaceNil];
 95685  		/* } else if (_selection[0] === 2) { */ case 12:
 95686  			err$1 = _selection[1][0];
 95687  			$s = -1; return [ptrType$17.nil, err$1];
 95688  		/* } */ case 13:
 95689  		$s = -1; return [ptrType$17.nil, $ifaceNil];
 95690  		/* */ } return; } if ($f === undefined) { $f = { $blk: fetchTransport.ptr.prototype.RoundTrip }; } $f._entry = _entry; $f._i = _i; $f._i$1 = _i$1; $f._key = _key; $f._keys = _keys; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._ref = _ref; $f._ref$1 = _ref$1; $f._selection = _selection; $f._tuple = _tuple; $f.body$1 = body$1; $f.err = err; $f.err$1 = err$1; $f.errCh = errCh; $f.headers = headers; $f.key = key; $f.opt = opt; $f.req = req; $f.resp = resp; $f.respCh = respCh; $f.respPromise = respPromise; $f.t = t; $f.value = value; $f.values = values; $f.$s = $s; $f.$r = $r; return $f;
 95691  	};
 95692  	fetchTransport.prototype.RoundTrip = function(req) { return this.$val.RoundTrip(req); };
 95693  	noTransport.ptr.prototype.RoundTrip = function(req) {
 95694  		var req;
 95695  		return [ptrType$17.nil, errors.New("net/http: neither of Fetch nor XMLHttpRequest APIs is available")];
 95696  	};
 95697  	noTransport.prototype.RoundTrip = function(req) { return this.$val.RoundTrip(req); };
 95698  	XHRTransport.ptr.prototype.RoundTrip = function(req) {
 95699  		var _arg, _arg$1, _entry, _i, _i$1, _key, _keys, _r$1, _r$2, _r$3, _r$4, _ref, _ref$1, _selection, _tuple, body$1, err, err$1, errCh, key, req, resp, respCh, t, value, values, xhr, $s, $deferred, $r;
 95700  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _arg = $f._arg; _arg$1 = $f._arg$1; _entry = $f._entry; _i = $f._i; _i$1 = $f._i$1; _key = $f._key; _keys = $f._keys; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _ref = $f._ref; _ref$1 = $f._ref$1; _selection = $f._selection; _tuple = $f._tuple; body$1 = $f.body$1; err = $f.err; err$1 = $f.err$1; errCh = $f.errCh; key = $f.key; req = $f.req; resp = $f.resp; respCh = $f.respCh; t = $f.t; value = $f.value; values = $f.values; xhr = $f.xhr; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
 95701  		errCh = [errCh];
 95702  		req = [req];
 95703  		respCh = [respCh];
 95704  		xhr = [xhr];
 95705  		t = this;
 95706  		xhr[0] = new ($global.XMLHttpRequest)();
 95707  		if (t.inflight === false) {
 95708  			t.inflight = $makeMap(ptrType$7.keyFor, []);
 95709  		}
 95710  		_key = req[0]; (t.inflight || $throwRuntimeError("assignment to entry in nil map"))[ptrType$7.keyFor(_key)] = { k: _key, v: xhr[0] };
 95711  		$deferred.push([function(_arg, _arg$1) { delete _arg[ptrType$7.keyFor(_arg$1)]; }, [t.inflight, req[0]]]);
 95712  		respCh[0] = new $Chan(ptrType$17, 0);
 95713  		errCh[0] = new $Chan($error, 0);
 95714  		xhr[0].onload = $externalize((function(errCh, req, respCh, xhr) { return function $b() {
 95715  			var _1, _r$1, _tuple, _tuple$1, body$1, contentLength, err, header, l, $s, $r;
 95716  			/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _r$1 = $f._r$1; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; body$1 = $f.body$1; contentLength = $f.contentLength; err = $f.err; header = $f.header; l = $f.l; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 95717  			_r$1 = textproto.NewReader(bufio.NewReader(bytes.NewReader((new sliceType$3($stringToBytes($internalize(xhr[0].getAllResponseHeaders(), $String) + "\n")))))).ReadMIMEHeader(); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 95718  			_tuple = _r$1;
 95719  			header = _tuple[0];
 95720  			body$1 = $assertType($internalize(new ($global.Uint8Array)(xhr[0].response), $emptyInterface), sliceType$3);
 95721  			contentLength = new $Int64(-1, 4294967295);
 95722  			_1 = req[0].Method;
 95723  			if (_1 === ("HEAD")) {
 95724  				_tuple$1 = strconv.ParseInt(new textproto.MIMEHeader(header).Get("Content-Length"), 10, 64);
 95725  				l = _tuple$1[0];
 95726  				err = _tuple$1[1];
 95727  				if ($interfaceIsEqual(err, $ifaceNil)) {
 95728  					contentLength = l;
 95729  				}
 95730  			} else {
 95731  				contentLength = (new $Int64(0, body$1.$length));
 95732  			}
 95733  			$r = $send(respCh[0], new Response.ptr($internalize(xhr[0].status, $String) + " " + $internalize(xhr[0].statusText, $String), $parseInt(xhr[0].status) >> 0, "", 0, 0, (header), ioutil.NopCloser(bytes.NewReader(body$1)), contentLength, sliceType$1.nil, false, false, false, req[0], ptrType$18.nil)); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 95734  			$s = -1; return;
 95735  			/* */ } return; } if ($f === undefined) { $f = { $blk: $b }; } $f._1 = _1; $f._r$1 = _r$1; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.body$1 = body$1; $f.contentLength = contentLength; $f.err = err; $f.header = header; $f.l = l; $f.$s = $s; $f.$r = $r; return $f;
 95736  		}; })(errCh, req, respCh, xhr), funcType$2);
 95737  		xhr[0].onerror = $externalize((function(errCh, req, respCh, xhr) { return function $b(e) {
 95738  			var e, $s, $r;
 95739  			/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; e = $f.e; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 95740  			$r = $send(errCh[0], errors.New("net/http: XMLHttpRequest failed")); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 95741  			$s = -1; return;
 95742  			/* */ } return; } if ($f === undefined) { $f = { $blk: $b }; } $f.e = e; $f.$s = $s; $f.$r = $r; return $f;
 95743  		}; })(errCh, req, respCh, xhr), funcType);
 95744  		xhr[0].onabort = $externalize((function(errCh, req, respCh, xhr) { return function $b(e) {
 95745  			var e, $s, $r;
 95746  			/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; e = $f.e; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 95747  			$r = $send(errCh[0], errors.New("net/http: request canceled")); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 95748  			$s = -1; return;
 95749  			/* */ } return; } if ($f === undefined) { $f = { $blk: $b }; } $f.e = e; $f.$s = $s; $f.$r = $r; return $f;
 95750  		}; })(errCh, req, respCh, xhr), funcType);
 95751  		xhr[0].open($externalize(req[0].Method, $String), $externalize(req[0].URL.String(), $String));
 95752  		xhr[0].responseType = $externalize("arraybuffer", $String);
 95753  		_ref = req[0].Header;
 95754  		_i = 0;
 95755  		_keys = $keys(_ref);
 95756  		while (true) {
 95757  			if (!(_i < _keys.length)) { break; }
 95758  			_entry = _ref[_keys[_i]];
 95759  			if (_entry === undefined) {
 95760  				_i++;
 95761  				continue;
 95762  			}
 95763  			key = _entry.k;
 95764  			values = _entry.v;
 95765  			_ref$1 = values;
 95766  			_i$1 = 0;
 95767  			while (true) {
 95768  				if (!(_i$1 < _ref$1.$length)) { break; }
 95769  				value = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]);
 95770  				xhr[0].setRequestHeader($externalize(key, $String), $externalize(value, $String));
 95771  				_i$1++;
 95772  			}
 95773  			_i++;
 95774  		}
 95775  		/* */ if ($interfaceIsEqual(req[0].Body, $ifaceNil)) { $s = 1; continue; }
 95776  		/* */ $s = 2; continue;
 95777  		/* if ($interfaceIsEqual(req[0].Body, $ifaceNil)) { */ case 1:
 95778  			xhr[0].send();
 95779  			$s = 3; continue;
 95780  		/* } else { */ case 2:
 95781  			_r$1 = ioutil.ReadAll(req[0].Body); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 95782  			_tuple = _r$1;
 95783  			body$1 = _tuple[0];
 95784  			err = _tuple[1];
 95785  			/* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 5; continue; }
 95786  			/* */ $s = 6; continue;
 95787  			/* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 5:
 95788  				_r$2 = req[0].Body.Close(); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 95789  				_r$2;
 95790  				$s = -1; return [ptrType$17.nil, err];
 95791  			/* } */ case 6:
 95792  			_r$3 = req[0].Body.Close(); /* */ $s = 8; case 8: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 95793  			_r$3;
 95794  			xhr[0].send($externalize(body$1, sliceType$3));
 95795  		/* } */ case 3:
 95796  		_r$4 = $select([[respCh[0]], [errCh[0]]]); /* */ $s = 9; case 9: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 95797  		_selection = _r$4;
 95798  		if (_selection[0] === 0) {
 95799  			resp = _selection[1][0];
 95800  			$s = -1; return [resp, $ifaceNil];
 95801  		} else if (_selection[0] === 1) {
 95802  			err$1 = _selection[1][0];
 95803  			$s = -1; return [ptrType$17.nil, err$1];
 95804  		}
 95805  		$s = -1; return [ptrType$17.nil, $ifaceNil];
 95806  		/* */ } return; } } catch(err) { $err = err; $s = -1; return [ptrType$17.nil, $ifaceNil]; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: XHRTransport.ptr.prototype.RoundTrip }; } $f._arg = _arg; $f._arg$1 = _arg$1; $f._entry = _entry; $f._i = _i; $f._i$1 = _i$1; $f._key = _key; $f._keys = _keys; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._ref = _ref; $f._ref$1 = _ref$1; $f._selection = _selection; $f._tuple = _tuple; $f.body$1 = body$1; $f.err = err; $f.err$1 = err$1; $f.errCh = errCh; $f.key = key; $f.req = req; $f.resp = resp; $f.respCh = respCh; $f.t = t; $f.value = value; $f.values = values; $f.xhr = xhr; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
 95807  	};
 95808  	XHRTransport.prototype.RoundTrip = function(req) { return this.$val.RoundTrip(req); };
 95809  	XHRTransport.ptr.prototype.CancelRequest = function(req) {
 95810  		var _entry, _tuple, ok, req, t, xhr;
 95811  		t = this;
 95812  		_tuple = (_entry = t.inflight[ptrType$7.keyFor(req)], _entry !== undefined ? [_entry.v, true] : [null, false]);
 95813  		xhr = _tuple[0];
 95814  		ok = _tuple[1];
 95815  		if (ok) {
 95816  			xhr.abort();
 95817  		}
 95818  	};
 95819  	XHRTransport.prototype.CancelRequest = function(req) { return this.$val.CancelRequest(req); };
 95820  	refererForURL = function(lastReq, newReq) {
 95821  		var auth, lastReq, newReq, referer;
 95822  		if (lastReq.Scheme === "https" && newReq.Scheme === "http") {
 95823  			return "";
 95824  		}
 95825  		referer = lastReq.String();
 95826  		if (!(lastReq.User === ptrType$19.nil)) {
 95827  			auth = lastReq.User.String() + "@";
 95828  			referer = strings.Replace(referer, auth, "", 1);
 95829  		}
 95830  		return referer;
 95831  	};
 95832  	Client.ptr.prototype.send = function(req, deadline) {
 95833  		var _i, _r$1, _r$2, _r$3, _ref, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tuple, c, cookie, deadline, didTimeout, err, rc, req, resp, $s, $r;
 95834  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _i = $f._i; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _ref = $f._ref; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tmp$4 = $f._tmp$4; _tmp$5 = $f._tmp$5; _tuple = $f._tuple; c = $f.c; cookie = $f.cookie; deadline = $f.deadline; didTimeout = $f.didTimeout; err = $f.err; rc = $f.rc; req = $f.req; resp = $f.resp; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 95835  		resp = ptrType$17.nil;
 95836  		didTimeout = $throwNilPointerError;
 95837  		err = $ifaceNil;
 95838  		c = this;
 95839  		/* */ if (!($interfaceIsEqual(c.Jar, $ifaceNil))) { $s = 1; continue; }
 95840  		/* */ $s = 2; continue;
 95841  		/* if (!($interfaceIsEqual(c.Jar, $ifaceNil))) { */ case 1:
 95842  			_r$1 = c.Jar.Cookies(req.URL); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 95843  			_ref = _r$1;
 95844  			_i = 0;
 95845  			/* while (true) { */ case 4:
 95846  				/* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 5; continue; }
 95847  				cookie = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
 95848  				$r = req.AddCookie(cookie); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 95849  				_i++;
 95850  			/* } */ $s = 4; continue; case 5:
 95851  		/* } */ case 2:
 95852  		_r$2 = send(req, c.transport(), $clone(deadline, time.Time)); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 95853  		_tuple = _r$2;
 95854  		resp = _tuple[0];
 95855  		didTimeout = _tuple[1];
 95856  		err = _tuple[2];
 95857  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 95858  			_tmp = ptrType$17.nil;
 95859  			_tmp$1 = didTimeout;
 95860  			_tmp$2 = err;
 95861  			resp = _tmp;
 95862  			didTimeout = _tmp$1;
 95863  			err = _tmp$2;
 95864  			$s = -1; return [resp, didTimeout, err];
 95865  		}
 95866  		/* */ if (!($interfaceIsEqual(c.Jar, $ifaceNil))) { $s = 8; continue; }
 95867  		/* */ $s = 9; continue;
 95868  		/* if (!($interfaceIsEqual(c.Jar, $ifaceNil))) { */ case 8:
 95869  			_r$3 = resp.Cookies(); /* */ $s = 10; case 10: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 95870  			rc = _r$3;
 95871  			/* */ if (rc.$length > 0) { $s = 11; continue; }
 95872  			/* */ $s = 12; continue;
 95873  			/* if (rc.$length > 0) { */ case 11:
 95874  				$r = c.Jar.SetCookies(req.URL, rc); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 95875  			/* } */ case 12:
 95876  		/* } */ case 9:
 95877  		_tmp$3 = resp;
 95878  		_tmp$4 = $throwNilPointerError;
 95879  		_tmp$5 = $ifaceNil;
 95880  		resp = _tmp$3;
 95881  		didTimeout = _tmp$4;
 95882  		err = _tmp$5;
 95883  		$s = -1; return [resp, didTimeout, err];
 95884  		/* */ } return; } if ($f === undefined) { $f = { $blk: Client.ptr.prototype.send }; } $f._i = _i; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._ref = _ref; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tmp$4 = _tmp$4; $f._tmp$5 = _tmp$5; $f._tuple = _tuple; $f.c = c; $f.cookie = cookie; $f.deadline = deadline; $f.didTimeout = didTimeout; $f.err = err; $f.rc = rc; $f.req = req; $f.resp = resp; $f.$s = $s; $f.$r = $r; return $f;
 95885  	};
 95886  	Client.prototype.send = function(req, deadline) { return this.$val.send(req, deadline); };
 95887  	Client.ptr.prototype.deadline = function() {
 95888  		var c, x$4;
 95889  		c = this;
 95890  		if ((x$4 = c.Timeout, (x$4.$high > 0 || (x$4.$high === 0 && x$4.$low > 0)))) {
 95891  			return $clone(time.Now(), time.Time).Add(c.Timeout);
 95892  		}
 95893  		return new time.Time.ptr(new $Uint64(0, 0), new $Int64(0, 0), ptrType$1.nil);
 95894  	};
 95895  	Client.prototype.deadline = function() { return this.$val.deadline(); };
 95896  	Client.ptr.prototype.transport = function() {
 95897  		var c;
 95898  		c = this;
 95899  		if (!($interfaceIsEqual(c.Transport, $ifaceNil))) {
 95900  			return c.Transport;
 95901  		}
 95902  		return $pkg.DefaultTransport;
 95903  	};
 95904  	Client.prototype.transport = function() { return this.$val.transport(); };
 95905  	send = function(ireq, rt, deadline) {
 95906  		var _r$1, _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$14, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, _tuple$1, _tuple$2, _tuple$3, deadline, didTimeout, err, forkReq, ireq, ok, password, req, resp, rt, stopTimer, tlsErr, u, username, $s, $r;
 95907  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$10 = $f._tmp$10; _tmp$11 = $f._tmp$11; _tmp$12 = $f._tmp$12; _tmp$13 = $f._tmp$13; _tmp$14 = $f._tmp$14; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tmp$4 = $f._tmp$4; _tmp$5 = $f._tmp$5; _tmp$6 = $f._tmp$6; _tmp$7 = $f._tmp$7; _tmp$8 = $f._tmp$8; _tmp$9 = $f._tmp$9; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; deadline = $f.deadline; didTimeout = $f.didTimeout; err = $f.err; forkReq = $f.forkReq; ireq = $f.ireq; ok = $f.ok; password = $f.password; req = $f.req; resp = $f.resp; rt = $f.rt; stopTimer = $f.stopTimer; tlsErr = $f.tlsErr; u = $f.u; username = $f.username; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 95908  		ireq = [ireq];
 95909  		req = [req];
 95910  		resp = ptrType$17.nil;
 95911  		didTimeout = $throwNilPointerError;
 95912  		err = $ifaceNil;
 95913  		req[0] = ireq[0];
 95914  		/* */ if ($interfaceIsEqual(rt, $ifaceNil)) { $s = 1; continue; }
 95915  		/* */ $s = 2; continue;
 95916  		/* if ($interfaceIsEqual(rt, $ifaceNil)) { */ case 1:
 95917  			$r = req[0].closeBody(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 95918  			_tmp = ptrType$17.nil;
 95919  			_tmp$1 = alwaysFalse;
 95920  			_tmp$2 = errors.New("http: no Client.Transport or DefaultTransport");
 95921  			resp = _tmp;
 95922  			didTimeout = _tmp$1;
 95923  			err = _tmp$2;
 95924  			$s = -1; return [resp, didTimeout, err];
 95925  		/* } */ case 2:
 95926  		/* */ if (req[0].URL === ptrType$20.nil) { $s = 4; continue; }
 95927  		/* */ $s = 5; continue;
 95928  		/* if (req[0].URL === ptrType$20.nil) { */ case 4:
 95929  			$r = req[0].closeBody(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 95930  			_tmp$3 = ptrType$17.nil;
 95931  			_tmp$4 = alwaysFalse;
 95932  			_tmp$5 = errors.New("http: nil Request.URL");
 95933  			resp = _tmp$3;
 95934  			didTimeout = _tmp$4;
 95935  			err = _tmp$5;
 95936  			$s = -1; return [resp, didTimeout, err];
 95937  		/* } */ case 5:
 95938  		/* */ if (!(req[0].RequestURI === "")) { $s = 7; continue; }
 95939  		/* */ $s = 8; continue;
 95940  		/* if (!(req[0].RequestURI === "")) { */ case 7:
 95941  			$r = req[0].closeBody(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 95942  			_tmp$6 = ptrType$17.nil;
 95943  			_tmp$7 = alwaysFalse;
 95944  			_tmp$8 = errors.New("http: Request.RequestURI can't be set in client requests.");
 95945  			resp = _tmp$6;
 95946  			didTimeout = _tmp$7;
 95947  			err = _tmp$8;
 95948  			$s = -1; return [resp, didTimeout, err];
 95949  		/* } */ case 8:
 95950  		forkReq = (function(ireq, req) { return function() {
 95951  			if (ireq[0] === req[0]) {
 95952  				req[0] = new Request.ptr("", ptrType$20.nil, "", 0, 0, false, $ifaceNil, $throwNilPointerError, new $Int64(0, 0), sliceType$1.nil, false, "", false, false, ptrType$21.nil, false, "", "", ptrType$18.nil, $chanNil, ptrType$17.nil, $ifaceNil);
 95953  				Request.copy(req[0], ireq[0]);
 95954  			}
 95955  		}; })(ireq, req);
 95956  		/* */ if (req[0].Header === false) { $s = 10; continue; }
 95957  		/* */ $s = 11; continue;
 95958  		/* if (req[0].Header === false) { */ case 10:
 95959  			$r = forkReq(); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 95960  			req[0].Header = {};
 95961  		/* } */ case 11:
 95962  		u = req[0].URL.User;
 95963  		/* */ if (!(u === ptrType$19.nil) && new Header(req[0].Header).Get("Authorization") === "") { $s = 13; continue; }
 95964  		/* */ $s = 14; continue;
 95965  		/* if (!(u === ptrType$19.nil) && new Header(req[0].Header).Get("Authorization") === "") { */ case 13:
 95966  			username = u.Username();
 95967  			_tuple = u.Password();
 95968  			password = _tuple[0];
 95969  			$r = forkReq(); /* */ $s = 15; case 15: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 95970  			req[0].Header = cloneHeader(ireq[0].Header);
 95971  			new Header(req[0].Header).Set("Authorization", "Basic " + basicAuth(username, password));
 95972  		/* } */ case 14:
 95973  		/* */ if (!$clone(deadline, time.Time).IsZero()) { $s = 16; continue; }
 95974  		/* */ $s = 17; continue;
 95975  		/* if (!$clone(deadline, time.Time).IsZero()) { */ case 16:
 95976  			$r = forkReq(); /* */ $s = 18; case 18: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 95977  		/* } */ case 17:
 95978  		_tuple$1 = setRequestCancel(req[0], rt, $clone(deadline, time.Time));
 95979  		stopTimer = _tuple$1[0];
 95980  		didTimeout = _tuple$1[1];
 95981  		_r$1 = rt.RoundTrip(req[0]); /* */ $s = 19; case 19: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 95982  		_tuple$2 = _r$1;
 95983  		resp = _tuple$2[0];
 95984  		err = _tuple$2[1];
 95985  		/* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 20; continue; }
 95986  		/* */ $s = 21; continue;
 95987  		/* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 20:
 95988  			$r = stopTimer(); /* */ $s = 22; case 22: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 95989  			/* */ if (!(resp === ptrType$17.nil)) { $s = 23; continue; }
 95990  			/* */ $s = 24; continue;
 95991  			/* if (!(resp === ptrType$17.nil)) { */ case 23:
 95992  				$r = log.Printf("RoundTripper returned a response & error; ignoring response", new sliceType([])); /* */ $s = 25; case 25: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 95993  			/* } */ case 24:
 95994  			_tuple$3 = $assertType(err, tls.RecordHeaderError, true);
 95995  			tlsErr = $clone(_tuple$3[0], tls.RecordHeaderError);
 95996  			ok = _tuple$3[1];
 95997  			if (ok) {
 95998  				if (($bytesToString(new sliceType$3(tlsErr.RecordHeader))) === "HTTP/") {
 95999  					err = errors.New("http: server gave HTTP response to HTTPS client");
 96000  				}
 96001  			}
 96002  			_tmp$9 = ptrType$17.nil;
 96003  			_tmp$10 = didTimeout;
 96004  			_tmp$11 = err;
 96005  			resp = _tmp$9;
 96006  			didTimeout = _tmp$10;
 96007  			err = _tmp$11;
 96008  			$s = -1; return [resp, didTimeout, err];
 96009  		/* } */ case 21:
 96010  		if (!$clone(deadline, time.Time).IsZero()) {
 96011  			resp.Body = new cancelTimerBody.ptr(stopTimer, resp.Body, didTimeout);
 96012  		}
 96013  		_tmp$12 = resp;
 96014  		_tmp$13 = $throwNilPointerError;
 96015  		_tmp$14 = $ifaceNil;
 96016  		resp = _tmp$12;
 96017  		didTimeout = _tmp$13;
 96018  		err = _tmp$14;
 96019  		$s = -1; return [resp, didTimeout, err];
 96020  		/* */ } return; } if ($f === undefined) { $f = { $blk: send }; } $f._r$1 = _r$1; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$10 = _tmp$10; $f._tmp$11 = _tmp$11; $f._tmp$12 = _tmp$12; $f._tmp$13 = _tmp$13; $f._tmp$14 = _tmp$14; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tmp$4 = _tmp$4; $f._tmp$5 = _tmp$5; $f._tmp$6 = _tmp$6; $f._tmp$7 = _tmp$7; $f._tmp$8 = _tmp$8; $f._tmp$9 = _tmp$9; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f.deadline = deadline; $f.didTimeout = didTimeout; $f.err = err; $f.forkReq = forkReq; $f.ireq = ireq; $f.ok = ok; $f.password = password; $f.req = req; $f.resp = resp; $f.rt = rt; $f.stopTimer = stopTimer; $f.tlsErr = tlsErr; $f.u = u; $f.username = username; $f.$s = $s; $f.$r = $r; return $f;
 96021  	};
 96022  	setRequestCancel = function(req, rt, deadline) {
 96023  		var _tmp, _tmp$1, _tmp$2, _tmp$3, cancel, deadline, didTimeout, doCancel, initialReqCancel, once, req, rt, stopTimer, stopTimerCh, timedOut, timer;
 96024  		stopTimer = $throwNilPointerError;
 96025  		didTimeout = $throwNilPointerError;
 96026  		if ($clone(deadline, time.Time).IsZero()) {
 96027  			_tmp = nop;
 96028  			_tmp$1 = alwaysFalse;
 96029  			stopTimer = _tmp;
 96030  			didTimeout = _tmp$1;
 96031  			return [stopTimer, didTimeout];
 96032  		}
 96033  		initialReqCancel = req.Cancel;
 96034  		cancel = new $Chan(structType, 0);
 96035  		req.Cancel = cancel;
 96036  		doCancel = (function $b() {
 96037  			var _ref, v, v$1, $s, $r;
 96038  			/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _ref = $f._ref; v = $f.v; v$1 = $f.v$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 96039  			$close(cancel);
 96040  			_ref = rt;
 96041  			/* */ if ($assertType(_ref, ptrType$22, true)[1] || $assertType(_ref, ptrType$15, true)[1]) { $s = 1; continue; }
 96042  			/* */ if ($assertType(_ref, canceler, true)[1]) { $s = 2; continue; }
 96043  			/* */ $s = 3; continue;
 96044  			/* if ($assertType(_ref, ptrType$22, true)[1] || $assertType(_ref, ptrType$15, true)[1]) { */ case 1:
 96045  				v = _ref;
 96046  				$s = 3; continue;
 96047  			/* } else if ($assertType(_ref, canceler, true)[1]) { */ case 2:
 96048  				v$1 = _ref;
 96049  				$r = v$1.CancelRequest(req); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 96050  			/* } */ case 3:
 96051  			$s = -1; return;
 96052  			/* */ } return; } if ($f === undefined) { $f = { $blk: $b }; } $f._ref = _ref; $f.v = v; $f.v$1 = v$1; $f.$s = $s; $f.$r = $r; return $f;
 96053  		});
 96054  		stopTimerCh = new $Chan(structType, 0);
 96055  		once = new sync.Once.ptr(new sync.Mutex.ptr(0, 0), 0);
 96056  		stopTimer = (function $b() {
 96057  			var $s, $r;
 96058  			/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 96059  			$r = once.Do((function() {
 96060  				$close(stopTimerCh);
 96061  			})); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 96062  			$s = -1; return;
 96063  			/* */ } return; } if ($f === undefined) { $f = { $blk: $b }; } $f.$s = $s; $f.$r = $r; return $f;
 96064  		});
 96065  		timer = time.NewTimer(time.Until($clone(deadline, time.Time)));
 96066  		timedOut = 0;
 96067  		$go((function $b() {
 96068  			var _r$1, _selection, timedOut$24ptr, $s, $r;
 96069  			/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; _selection = $f._selection; timedOut$24ptr = $f.timedOut$24ptr; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 96070  			_r$1 = $select([[initialReqCancel], [timer.C], [stopTimerCh]]); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 96071  			_selection = _r$1;
 96072  			/* */ if (_selection[0] === 0) { $s = 2; continue; }
 96073  			/* */ if (_selection[0] === 1) { $s = 3; continue; }
 96074  			/* */ if (_selection[0] === 2) { $s = 4; continue; }
 96075  			/* */ $s = 5; continue;
 96076  			/* if (_selection[0] === 0) { */ case 2:
 96077  				$r = doCancel(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 96078  				timer.Stop();
 96079  				$s = 5; continue;
 96080  			/* } else if (_selection[0] === 1) { */ case 3:
 96081  				(timedOut$24ptr || (timedOut$24ptr = new ptrType$23(function() { return timedOut; }, function($v) { timedOut = $v; }))).setTrue();
 96082  				$r = doCancel(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 96083  				$s = 5; continue;
 96084  			/* } else if (_selection[0] === 2) { */ case 4:
 96085  				timer.Stop();
 96086  			/* } */ case 5:
 96087  			$s = -1; return;
 96088  			/* */ } return; } if ($f === undefined) { $f = { $blk: $b }; } $f._r$1 = _r$1; $f._selection = _selection; $f.timedOut$24ptr = timedOut$24ptr; $f.$s = $s; $f.$r = $r; return $f;
 96089  		}), []);
 96090  		_tmp$2 = stopTimer;
 96091  		_tmp$3 = $methodVal((timedOut$24ptr || (timedOut$24ptr = new ptrType$23(function() { return timedOut; }, function($v) { timedOut = $v; }))), "isSet");
 96092  		stopTimer = _tmp$2;
 96093  		didTimeout = _tmp$3;
 96094  		return [stopTimer, didTimeout];
 96095  	};
 96096  	basicAuth = function(username, password) {
 96097  		var auth, password, username;
 96098  		auth = username + ":" + password;
 96099  		return base64.StdEncoding.EncodeToString((new sliceType$3($stringToBytes(auth))));
 96100  	};
 96101  	Get = function(url$1) {
 96102  		var _r$1, _tuple, err, resp, url$1, $s, $r;
 96103  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; _tuple = $f._tuple; err = $f.err; resp = $f.resp; url$1 = $f.url$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 96104  		resp = ptrType$17.nil;
 96105  		err = $ifaceNil;
 96106  		_r$1 = $pkg.DefaultClient.Get(url$1); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 96107  		_tuple = _r$1;
 96108  		resp = _tuple[0];
 96109  		err = _tuple[1];
 96110  		$s = -1; return [resp, err];
 96111  		/* */ } return; } if ($f === undefined) { $f = { $blk: Get }; } $f._r$1 = _r$1; $f._tuple = _tuple; $f.err = err; $f.resp = resp; $f.url$1 = url$1; $f.$s = $s; $f.$r = $r; return $f;
 96112  	};
 96113  	$pkg.Get = Get;
 96114  	Client.ptr.prototype.Get = function(url$1) {
 96115  		var _r$1, _r$2, _tmp, _tmp$1, _tuple, _tuple$1, c, err, req, resp, url$1, $s, $r;
 96116  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; _r$2 = $f._r$2; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; c = $f.c; err = $f.err; req = $f.req; resp = $f.resp; url$1 = $f.url$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 96117  		resp = ptrType$17.nil;
 96118  		err = $ifaceNil;
 96119  		c = this;
 96120  		_r$1 = NewRequest("GET", url$1, $ifaceNil); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 96121  		_tuple = _r$1;
 96122  		req = _tuple[0];
 96123  		err = _tuple[1];
 96124  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 96125  			_tmp = ptrType$17.nil;
 96126  			_tmp$1 = err;
 96127  			resp = _tmp;
 96128  			err = _tmp$1;
 96129  			$s = -1; return [resp, err];
 96130  		}
 96131  		_r$2 = c.Do(req); /* */ $s = 2; case 2: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 96132  		_tuple$1 = _r$2;
 96133  		resp = _tuple$1[0];
 96134  		err = _tuple$1[1];
 96135  		$s = -1; return [resp, err];
 96136  		/* */ } return; } if ($f === undefined) { $f = { $blk: Client.ptr.prototype.Get }; } $f._r$1 = _r$1; $f._r$2 = _r$2; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.c = c; $f.err = err; $f.req = req; $f.resp = resp; $f.url$1 = url$1; $f.$s = $s; $f.$r = $r; return $f;
 96137  	};
 96138  	Client.prototype.Get = function(url$1) { return this.$val.Get(url$1); };
 96139  	alwaysFalse = function() {
 96140  		return false;
 96141  	};
 96142  	Client.ptr.prototype.checkRedirect = function(req, via) {
 96143  		var _r$1, c, fn, req, via, $s, $r;
 96144  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; c = $f.c; fn = $f.fn; req = $f.req; via = $f.via; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 96145  		c = this;
 96146  		fn = c.CheckRedirect;
 96147  		if (fn === $throwNilPointerError) {
 96148  			fn = defaultCheckRedirect;
 96149  		}
 96150  		_r$1 = fn(req, via); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 96151  		$s = -1; return _r$1;
 96152  		/* */ } return; } if ($f === undefined) { $f = { $blk: Client.ptr.prototype.checkRedirect }; } $f._r$1 = _r$1; $f.c = c; $f.fn = fn; $f.req = req; $f.via = via; $f.$s = $s; $f.$r = $r; return $f;
 96153  	};
 96154  	Client.prototype.checkRedirect = function(req, via) { return this.$val.checkRedirect(req, via); };
 96155  	redirectBehavior = function(reqMethod, resp, ireq) {
 96156  		var _1, _tmp, _tmp$1, _tmp$2, includeBody, ireq, redirectMethod, reqMethod, resp, shouldRedirect, x$4;
 96157  		redirectMethod = "";
 96158  		shouldRedirect = false;
 96159  		includeBody = false;
 96160  		switch (0) { default:
 96161  			_1 = resp.StatusCode;
 96162  			if ((_1 === (301)) || (_1 === (302)) || (_1 === (303))) {
 96163  				redirectMethod = reqMethod;
 96164  				shouldRedirect = true;
 96165  				includeBody = false;
 96166  				if (!(reqMethod === "GET") && !(reqMethod === "HEAD")) {
 96167  					redirectMethod = "GET";
 96168  				}
 96169  			} else if ((_1 === (307)) || (_1 === (308))) {
 96170  				redirectMethod = reqMethod;
 96171  				shouldRedirect = true;
 96172  				includeBody = true;
 96173  				if (new Header(resp.Header).Get("Location") === "") {
 96174  					shouldRedirect = false;
 96175  					break;
 96176  				}
 96177  				if (ireq.GetBody === $throwNilPointerError && !((x$4 = ireq.outgoingLength(), (x$4.$high === 0 && x$4.$low === 0)))) {
 96178  					shouldRedirect = false;
 96179  				}
 96180  			}
 96181  		}
 96182  		_tmp = redirectMethod;
 96183  		_tmp$1 = shouldRedirect;
 96184  		_tmp$2 = includeBody;
 96185  		redirectMethod = _tmp;
 96186  		shouldRedirect = _tmp$1;
 96187  		includeBody = _tmp$2;
 96188  		return [redirectMethod, shouldRedirect, includeBody];
 96189  	};
 96190  	Client.ptr.prototype.Do = function(req) {
 96191  		var _r$1, _r$10, _r$11, _r$12, _r$13, _r$14, _r$15, _r$16, _r$17, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, _v, c, copyHeaders, deadline, didTimeout, err, err$1, host, includeBody, ireq, loc, redirectMethod, ref, req, reqBodyClosed, reqs, resp, shouldRedirect, u, u$1, ue, uerr, x$4, x$5, x$6, $s, $r;
 96192  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; _r$10 = $f._r$10; _r$11 = $f._r$11; _r$12 = $f._r$12; _r$13 = $f._r$13; _r$14 = $f._r$14; _r$15 = $f._r$15; _r$16 = $f._r$16; _r$17 = $f._r$17; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _r$8 = $f._r$8; _r$9 = $f._r$9; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; _tuple$4 = $f._tuple$4; _v = $f._v; c = $f.c; copyHeaders = $f.copyHeaders; deadline = $f.deadline; didTimeout = $f.didTimeout; err = $f.err; err$1 = $f.err$1; host = $f.host; includeBody = $f.includeBody; ireq = $f.ireq; loc = $f.loc; redirectMethod = $f.redirectMethod; ref = $f.ref; req = $f.req; reqBodyClosed = $f.reqBodyClosed; reqs = $f.reqs; resp = $f.resp; shouldRedirect = $f.shouldRedirect; u = $f.u; u$1 = $f.u$1; ue = $f.ue; uerr = $f.uerr; x$4 = $f.x$4; x$5 = $f.x$5; x$6 = $f.x$6; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 96193  		req = [req];
 96194  		reqBodyClosed = [reqBodyClosed];
 96195  		reqs = [reqs];
 96196  		resp = [resp];
 96197  		c = this;
 96198  		/* */ if (req[0].URL === ptrType$20.nil) { $s = 1; continue; }
 96199  		/* */ $s = 2; continue;
 96200  		/* if (req[0].URL === ptrType$20.nil) { */ case 1:
 96201  			$r = req[0].closeBody(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 96202  			$s = -1; return [ptrType$17.nil, errors.New("http: nil Request.URL")];
 96203  		/* } */ case 2:
 96204  		deadline = $clone(c.deadline(), time.Time);
 96205  		reqs[0] = sliceType$7.nil;
 96206  		resp[0] = ptrType$17.nil;
 96207  		_r$1 = c.makeHeadersCopier(req[0]); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 96208  		copyHeaders = _r$1;
 96209  		reqBodyClosed[0] = false;
 96210  		redirectMethod = "";
 96211  		includeBody = false;
 96212  		uerr = (function(req, reqBodyClosed, reqs, resp) { return function $b(err) {
 96213  			var _r$2, err, method, urlStr, $s, $r;
 96214  			/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$2 = $f._r$2; err = $f.err; method = $f.method; urlStr = $f.urlStr; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 96215  			/* */ if (!reqBodyClosed[0]) { $s = 1; continue; }
 96216  			/* */ $s = 2; continue;
 96217  			/* if (!reqBodyClosed[0]) { */ case 1:
 96218  				$r = req[0].closeBody(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 96219  			/* } */ case 2:
 96220  			method = valueOrDefault((0 >= reqs[0].$length ? ($throwRuntimeError("index out of range"), undefined) : reqs[0].$array[reqs[0].$offset + 0]).Method, "GET");
 96221  			urlStr = "";
 96222  			if (!(resp[0] === ptrType$17.nil) && !(resp[0].Request === ptrType$7.nil)) {
 96223  				urlStr = resp[0].Request.URL.String();
 96224  			} else {
 96225  				urlStr = req[0].URL.String();
 96226  			}
 96227  			_r$2 = strings.ToLower($substring(method, 1)); /* */ $s = 4; case 4: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 96228  			$s = -1; return new url.Error.ptr($substring(method, 0, 1) + _r$2, urlStr, err);
 96229  			/* */ } return; } if ($f === undefined) { $f = { $blk: $b }; } $f._r$2 = _r$2; $f.err = err; $f.method = method; $f.urlStr = urlStr; $f.$s = $s; $f.$r = $r; return $f;
 96230  		}; })(req, reqBodyClosed, reqs, resp);
 96231  		/* while (true) { */ case 5:
 96232  			/* */ if (reqs[0].$length > 0) { $s = 7; continue; }
 96233  			/* */ $s = 8; continue;
 96234  			/* if (reqs[0].$length > 0) { */ case 7:
 96235  				loc = new Header(resp[0].Header).Get("Location");
 96236  				/* */ if (loc === "") { $s = 9; continue; }
 96237  				/* */ $s = 10; continue;
 96238  				/* if (loc === "") { */ case 9:
 96239  					$r = resp[0].closeBody(); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 96240  					_r$2 = fmt.Errorf("%d response missing Location header", new sliceType([new $Int(resp[0].StatusCode)])); /* */ $s = 12; case 12: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 96241  					_r$3 = uerr(_r$2); /* */ $s = 13; case 13: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 96242  					$s = -1; return [ptrType$17.nil, _r$3];
 96243  				/* } */ case 10:
 96244  				_r$4 = req[0].URL.Parse(loc); /* */ $s = 14; case 14: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 96245  				_tuple = _r$4;
 96246  				u = _tuple[0];
 96247  				err = _tuple[1];
 96248  				/* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 15; continue; }
 96249  				/* */ $s = 16; continue;
 96250  				/* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 15:
 96251  					$r = resp[0].closeBody(); /* */ $s = 17; case 17: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 96252  					_r$5 = fmt.Errorf("failed to parse Location header %q: %v", new sliceType([new $String(loc), err])); /* */ $s = 18; case 18: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
 96253  					_r$6 = uerr(_r$5); /* */ $s = 19; case 19: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
 96254  					$s = -1; return [ptrType$17.nil, _r$6];
 96255  				/* } */ case 16:
 96256  				host = "";
 96257  				/* */ if (!(req[0].Host === "") && !(req[0].Host === req[0].URL.Host)) { $s = 20; continue; }
 96258  				/* */ $s = 21; continue;
 96259  				/* if (!(req[0].Host === "") && !(req[0].Host === req[0].URL.Host)) { */ case 20:
 96260  					_r$7 = url.Parse(loc); /* */ $s = 22; case 22: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
 96261  					_tuple$1 = _r$7;
 96262  					u$1 = _tuple$1[0];
 96263  					if (!(u$1 === ptrType$20.nil) && !u$1.IsAbs()) {
 96264  						host = req[0].Host;
 96265  					}
 96266  				/* } */ case 21:
 96267  				ireq = (0 >= reqs[0].$length ? ($throwRuntimeError("index out of range"), undefined) : reqs[0].$array[reqs[0].$offset + 0]);
 96268  				req[0] = new Request.ptr(redirectMethod, u, "", 0, 0, {}, $ifaceNil, $throwNilPointerError, new $Int64(0, 0), sliceType$1.nil, false, host, false, false, ptrType$21.nil, false, "", "", ptrType$18.nil, ireq.Cancel, resp[0], ireq.ctx);
 96269  				/* */ if (includeBody && !(ireq.GetBody === $throwNilPointerError)) { $s = 23; continue; }
 96270  				/* */ $s = 24; continue;
 96271  				/* if (includeBody && !(ireq.GetBody === $throwNilPointerError)) { */ case 23:
 96272  					_r$8 = ireq.GetBody(); /* */ $s = 25; case 25: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
 96273  					_tuple$2 = _r$8;
 96274  					req[0].Body = _tuple$2[0];
 96275  					err = _tuple$2[1];
 96276  					/* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 26; continue; }
 96277  					/* */ $s = 27; continue;
 96278  					/* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 26:
 96279  						$r = resp[0].closeBody(); /* */ $s = 28; case 28: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 96280  						_r$9 = uerr(err); /* */ $s = 29; case 29: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 96281  						$s = -1; return [ptrType$17.nil, _r$9];
 96282  					/* } */ case 27:
 96283  					req[0].ContentLength = ireq.ContentLength;
 96284  				/* } */ case 24:
 96285  				$r = copyHeaders(req[0]); /* */ $s = 30; case 30: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 96286  				ref = refererForURL((x$4 = reqs[0].$length - 1 >> 0, ((x$4 < 0 || x$4 >= reqs[0].$length) ? ($throwRuntimeError("index out of range"), undefined) : reqs[0].$array[reqs[0].$offset + x$4])).URL, req[0].URL);
 96287  				if (!(ref === "")) {
 96288  					new Header(req[0].Header).Set("Referer", ref);
 96289  				}
 96290  				_r$10 = c.checkRedirect(req[0], reqs[0]); /* */ $s = 31; case 31: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
 96291  				err = _r$10;
 96292  				if ($interfaceIsEqual(err, $pkg.ErrUseLastResponse)) {
 96293  					$s = -1; return [resp[0], $ifaceNil];
 96294  				}
 96295  				/* */ if ((x$5 = resp[0].ContentLength, (x$5.$high === -1 && x$5.$low === 4294967295)) || (x$6 = resp[0].ContentLength, (x$6.$high < 0 || (x$6.$high === 0 && x$6.$low <= 2048)))) { $s = 32; continue; }
 96296  				/* */ $s = 33; continue;
 96297  				/* if ((x$5 = resp[0].ContentLength, (x$5.$high === -1 && x$5.$low === 4294967295)) || (x$6 = resp[0].ContentLength, (x$6.$high < 0 || (x$6.$high === 0 && x$6.$low <= 2048)))) { */ case 32:
 96298  					_r$11 = io.CopyN(ioutil.Discard, resp[0].Body, new $Int64(0, 2048)); /* */ $s = 34; case 34: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; }
 96299  					_r$11;
 96300  				/* } */ case 33:
 96301  				_r$12 = resp[0].Body.Close(); /* */ $s = 35; case 35: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; }
 96302  				_r$12;
 96303  				/* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 36; continue; }
 96304  				/* */ $s = 37; continue;
 96305  				/* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 36:
 96306  					_r$13 = uerr(err); /* */ $s = 38; case 38: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; }
 96307  					ue = _r$13;
 96308  					$assertType(ue, ptrType$24).URL = loc;
 96309  					$s = -1; return [resp[0], ue];
 96310  				/* } */ case 37:
 96311  			/* } */ case 8:
 96312  			reqs[0] = $append(reqs[0], req[0]);
 96313  			err$1 = $ifaceNil;
 96314  			didTimeout = $throwNilPointerError;
 96315  			_r$14 = c.send(req[0], $clone(deadline, time.Time)); /* */ $s = 39; case 39: if($c) { $c = false; _r$14 = _r$14.$blk(); } if (_r$14 && _r$14.$blk !== undefined) { break s; }
 96316  			_tuple$3 = _r$14;
 96317  			resp[0] = _tuple$3[0];
 96318  			didTimeout = _tuple$3[1];
 96319  			err$1 = _tuple$3[2];
 96320  			/* */ if (!($interfaceIsEqual(err$1, $ifaceNil))) { $s = 40; continue; }
 96321  			/* */ $s = 41; continue;
 96322  			/* if (!($interfaceIsEqual(err$1, $ifaceNil))) { */ case 40:
 96323  				reqBodyClosed[0] = true;
 96324  				if (!(!$clone(deadline, time.Time).IsZero())) { _v = false; $s = 44; continue s; }
 96325  				_r$15 = didTimeout(); /* */ $s = 45; case 45: if($c) { $c = false; _r$15 = _r$15.$blk(); } if (_r$15 && _r$15.$blk !== undefined) { break s; }
 96326  				_v = _r$15; case 44:
 96327  				/* */ if (_v) { $s = 42; continue; }
 96328  				/* */ $s = 43; continue;
 96329  				/* if (_v) { */ case 42:
 96330  					_r$16 = err$1.Error(); /* */ $s = 46; case 46: if($c) { $c = false; _r$16 = _r$16.$blk(); } if (_r$16 && _r$16.$blk !== undefined) { break s; }
 96331  					err$1 = new httpError.ptr(_r$16 + " (Client.Timeout exceeded while awaiting headers)", true);
 96332  				/* } */ case 43:
 96333  				_r$17 = uerr(err$1); /* */ $s = 47; case 47: if($c) { $c = false; _r$17 = _r$17.$blk(); } if (_r$17 && _r$17.$blk !== undefined) { break s; }
 96334  				$s = -1; return [ptrType$17.nil, _r$17];
 96335  			/* } */ case 41:
 96336  			shouldRedirect = false;
 96337  			_tuple$4 = redirectBehavior(req[0].Method, resp[0], (0 >= reqs[0].$length ? ($throwRuntimeError("index out of range"), undefined) : reqs[0].$array[reqs[0].$offset + 0]));
 96338  			redirectMethod = _tuple$4[0];
 96339  			shouldRedirect = _tuple$4[1];
 96340  			includeBody = _tuple$4[2];
 96341  			if (!shouldRedirect) {
 96342  				$s = -1; return [resp[0], $ifaceNil];
 96343  			}
 96344  			$r = req[0].closeBody(); /* */ $s = 48; case 48: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 96345  		/* } */ $s = 5; continue; case 6:
 96346  		$s = -1; return [ptrType$17.nil, $ifaceNil];
 96347  		/* */ } return; } if ($f === undefined) { $f = { $blk: Client.ptr.prototype.Do }; } $f._r$1 = _r$1; $f._r$10 = _r$10; $f._r$11 = _r$11; $f._r$12 = _r$12; $f._r$13 = _r$13; $f._r$14 = _r$14; $f._r$15 = _r$15; $f._r$16 = _r$16; $f._r$17 = _r$17; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._r$8 = _r$8; $f._r$9 = _r$9; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f._tuple$4 = _tuple$4; $f._v = _v; $f.c = c; $f.copyHeaders = copyHeaders; $f.deadline = deadline; $f.didTimeout = didTimeout; $f.err = err; $f.err$1 = err$1; $f.host = host; $f.includeBody = includeBody; $f.ireq = ireq; $f.loc = loc; $f.redirectMethod = redirectMethod; $f.ref = ref; $f.req = req; $f.reqBodyClosed = reqBodyClosed; $f.reqs = reqs; $f.resp = resp; $f.shouldRedirect = shouldRedirect; $f.u = u; $f.u$1 = u$1; $f.ue = ue; $f.uerr = uerr; $f.x$4 = x$4; $f.x$5 = x$5; $f.x$6 = x$6; $f.$s = $s; $f.$r = $r; return $f;
 96348  	};
 96349  	Client.prototype.Do = function(req) { return this.$val.Do(req); };
 96350  	Client.ptr.prototype.makeHeadersCopier = function(ireq) {
 96351  		var _entry, _i, _key, _r$1, _ref, c, c$1, icookies, ireq, ireqhdr, preq, $s, $r;
 96352  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _entry = $f._entry; _i = $f._i; _key = $f._key; _r$1 = $f._r$1; _ref = $f._ref; c = $f.c; c$1 = $f.c$1; icookies = $f.icookies; ireq = $f.ireq; ireqhdr = $f.ireqhdr; preq = $f.preq; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 96353  		c = [c];
 96354  		icookies = [icookies];
 96355  		ireqhdr = [ireqhdr];
 96356  		preq = [preq];
 96357  		c[0] = this;
 96358  		ireqhdr[0] = new Header(ireq.Header).clone();
 96359  		icookies[0] = false;
 96360  		/* */ if (!($interfaceIsEqual(c[0].Jar, $ifaceNil)) && !(new Header(ireq.Header).Get("Cookie") === "")) { $s = 1; continue; }
 96361  		/* */ $s = 2; continue;
 96362  		/* if (!($interfaceIsEqual(c[0].Jar, $ifaceNil)) && !(new Header(ireq.Header).Get("Cookie") === "")) { */ case 1:
 96363  			icookies[0] = {};
 96364  			_r$1 = ireq.Cookies(); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 96365  			_ref = _r$1;
 96366  			_i = 0;
 96367  			/* while (true) { */ case 4:
 96368  				/* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 5; continue; }
 96369  				c$1 = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
 96370  				_key = c$1.Name; (icookies[0] || $throwRuntimeError("assignment to entry in nil map"))[$String.keyFor(_key)] = { k: _key, v: $append((_entry = icookies[0][$String.keyFor(c$1.Name)], _entry !== undefined ? _entry.v : sliceType$8.nil), c$1) };
 96371  				_i++;
 96372  			/* } */ $s = 4; continue; case 5:
 96373  		/* } */ case 2:
 96374  		preq[0] = ireq;
 96375  		$s = -1; return (function(c, icookies, ireqhdr, preq) { return function $b(req) {
 96376  			var _entry$1, _entry$2, _entry$3, _i$1, _i$2, _i$3, _i$4, _key$1, _keys, _keys$1, _r$2, _r$3, _ref$1, _ref$2, _ref$3, _ref$4, _tuple, c$2, c$3, changed, cs, k, ok, req, resp, ss, vv, $s, $r;
 96377  			/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _entry$1 = $f._entry$1; _entry$2 = $f._entry$2; _entry$3 = $f._entry$3; _i$1 = $f._i$1; _i$2 = $f._i$2; _i$3 = $f._i$3; _i$4 = $f._i$4; _key$1 = $f._key$1; _keys = $f._keys; _keys$1 = $f._keys$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _ref$1 = $f._ref$1; _ref$2 = $f._ref$2; _ref$3 = $f._ref$3; _ref$4 = $f._ref$4; _tuple = $f._tuple; c$2 = $f.c$2; c$3 = $f.c$3; changed = $f.changed; cs = $f.cs; k = $f.k; ok = $f.ok; req = $f.req; resp = $f.resp; ss = $f.ss; vv = $f.vv; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 96378  			/* */ if (!($interfaceIsEqual(c[0].Jar, $ifaceNil)) && !(icookies[0] === false)) { $s = 1; continue; }
 96379  			/* */ $s = 2; continue;
 96380  			/* if (!($interfaceIsEqual(c[0].Jar, $ifaceNil)) && !(icookies[0] === false)) { */ case 1:
 96381  				changed = false;
 96382  				resp = req.Response;
 96383  				_r$2 = resp.Cookies(); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 96384  				_ref$1 = _r$2;
 96385  				_i$1 = 0;
 96386  				/* while (true) { */ case 4:
 96387  					/* if (!(_i$1 < _ref$1.$length)) { break; } */ if(!(_i$1 < _ref$1.$length)) { $s = 5; continue; }
 96388  					c$2 = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]);
 96389  					_tuple = (_entry$1 = icookies[0][$String.keyFor(c$2.Name)], _entry$1 !== undefined ? [_entry$1.v, true] : [sliceType$8.nil, false]);
 96390  					ok = _tuple[1];
 96391  					if (ok) {
 96392  						delete icookies[0][$String.keyFor(c$2.Name)];
 96393  						changed = true;
 96394  					}
 96395  					_i$1++;
 96396  				/* } */ $s = 4; continue; case 5:
 96397  				/* */ if (changed) { $s = 6; continue; }
 96398  				/* */ $s = 7; continue;
 96399  				/* if (changed) { */ case 6:
 96400  					new Header(ireqhdr[0]).Del("Cookie");
 96401  					ss = sliceType$1.nil;
 96402  					_ref$2 = icookies[0];
 96403  					_i$2 = 0;
 96404  					_keys = $keys(_ref$2);
 96405  					while (true) {
 96406  						if (!(_i$2 < _keys.length)) { break; }
 96407  						_entry$2 = _ref$2[_keys[_i$2]];
 96408  						if (_entry$2 === undefined) {
 96409  							_i$2++;
 96410  							continue;
 96411  						}
 96412  						cs = _entry$2.v;
 96413  						_ref$3 = cs;
 96414  						_i$3 = 0;
 96415  						while (true) {
 96416  							if (!(_i$3 < _ref$3.$length)) { break; }
 96417  							c$3 = ((_i$3 < 0 || _i$3 >= _ref$3.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$3.$array[_ref$3.$offset + _i$3]);
 96418  							ss = $append(ss, c$3.Name + "=" + c$3.Value);
 96419  							_i$3++;
 96420  						}
 96421  						_i$2++;
 96422  					}
 96423  					$r = sort.Strings(ss); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 96424  					new Header(ireqhdr[0]).Set("Cookie", strings.Join(ss, "; "));
 96425  				/* } */ case 7:
 96426  			/* } */ case 2:
 96427  			_ref$4 = ireqhdr[0];
 96428  			_i$4 = 0;
 96429  			_keys$1 = $keys(_ref$4);
 96430  			/* while (true) { */ case 9:
 96431  				/* if (!(_i$4 < _keys$1.length)) { break; } */ if(!(_i$4 < _keys$1.length)) { $s = 10; continue; }
 96432  				_entry$3 = _ref$4[_keys$1[_i$4]];
 96433  				if (_entry$3 === undefined) {
 96434  					_i$4++;
 96435  					/* continue; */ $s = 9; continue;
 96436  				}
 96437  				k = _entry$3.k;
 96438  				vv = _entry$3.v;
 96439  				_r$3 = shouldCopyHeaderOnRedirect(k, preq[0].URL, req.URL); /* */ $s = 13; case 13: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 96440  				/* */ if (_r$3) { $s = 11; continue; }
 96441  				/* */ $s = 12; continue;
 96442  				/* if (_r$3) { */ case 11:
 96443  					_key$1 = k; (req.Header || $throwRuntimeError("assignment to entry in nil map"))[$String.keyFor(_key$1)] = { k: _key$1, v: vv };
 96444  				/* } */ case 12:
 96445  				_i$4++;
 96446  			/* } */ $s = 9; continue; case 10:
 96447  			preq[0] = req;
 96448  			$s = -1; return;
 96449  			/* */ } return; } if ($f === undefined) { $f = { $blk: $b }; } $f._entry$1 = _entry$1; $f._entry$2 = _entry$2; $f._entry$3 = _entry$3; $f._i$1 = _i$1; $f._i$2 = _i$2; $f._i$3 = _i$3; $f._i$4 = _i$4; $f._key$1 = _key$1; $f._keys = _keys; $f._keys$1 = _keys$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._ref$1 = _ref$1; $f._ref$2 = _ref$2; $f._ref$3 = _ref$3; $f._ref$4 = _ref$4; $f._tuple = _tuple; $f.c$2 = c$2; $f.c$3 = c$3; $f.changed = changed; $f.cs = cs; $f.k = k; $f.ok = ok; $f.req = req; $f.resp = resp; $f.ss = ss; $f.vv = vv; $f.$s = $s; $f.$r = $r; return $f;
 96450  		}; })(c, icookies, ireqhdr, preq);
 96451  		/* */ } return; } if ($f === undefined) { $f = { $blk: Client.ptr.prototype.makeHeadersCopier }; } $f._entry = _entry; $f._i = _i; $f._key = _key; $f._r$1 = _r$1; $f._ref = _ref; $f.c = c; $f.c$1 = c$1; $f.icookies = icookies; $f.ireq = ireq; $f.ireqhdr = ireqhdr; $f.preq = preq; $f.$s = $s; $f.$r = $r; return $f;
 96452  	};
 96453  	Client.prototype.makeHeadersCopier = function(ireq) { return this.$val.makeHeadersCopier(ireq); };
 96454  	defaultCheckRedirect = function(req, via) {
 96455  		var req, via;
 96456  		if (via.$length >= 10) {
 96457  			return errors.New("stopped after 10 redirects");
 96458  		}
 96459  		return $ifaceNil;
 96460  	};
 96461  	Client.ptr.prototype.Post = function(url$1, contentType, body$1) {
 96462  		var _r$1, _r$2, _tmp, _tmp$1, _tuple, _tuple$1, body$1, c, contentType, err, req, resp, url$1, $s, $r;
 96463  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; _r$2 = $f._r$2; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; body$1 = $f.body$1; c = $f.c; contentType = $f.contentType; err = $f.err; req = $f.req; resp = $f.resp; url$1 = $f.url$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 96464  		resp = ptrType$17.nil;
 96465  		err = $ifaceNil;
 96466  		c = this;
 96467  		_r$1 = NewRequest("POST", url$1, body$1); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 96468  		_tuple = _r$1;
 96469  		req = _tuple[0];
 96470  		err = _tuple[1];
 96471  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 96472  			_tmp = ptrType$17.nil;
 96473  			_tmp$1 = err;
 96474  			resp = _tmp;
 96475  			err = _tmp$1;
 96476  			$s = -1; return [resp, err];
 96477  		}
 96478  		new Header(req.Header).Set("Content-Type", contentType);
 96479  		_r$2 = c.Do(req); /* */ $s = 2; case 2: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 96480  		_tuple$1 = _r$2;
 96481  		resp = _tuple$1[0];
 96482  		err = _tuple$1[1];
 96483  		$s = -1; return [resp, err];
 96484  		/* */ } return; } if ($f === undefined) { $f = { $blk: Client.ptr.prototype.Post }; } $f._r$1 = _r$1; $f._r$2 = _r$2; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.body$1 = body$1; $f.c = c; $f.contentType = contentType; $f.err = err; $f.req = req; $f.resp = resp; $f.url$1 = url$1; $f.$s = $s; $f.$r = $r; return $f;
 96485  	};
 96486  	Client.prototype.Post = function(url$1, contentType, body$1) { return this.$val.Post(url$1, contentType, body$1); };
 96487  	Client.ptr.prototype.PostForm = function(url$1, data) {
 96488  		var _arg, _arg$1, _r$1, _r$2, _r$3, _tuple, c, data, err, resp, url$1, $s, $r;
 96489  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _arg = $f._arg; _arg$1 = $f._arg$1; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _tuple = $f._tuple; c = $f.c; data = $f.data; err = $f.err; resp = $f.resp; url$1 = $f.url$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 96490  		resp = ptrType$17.nil;
 96491  		err = $ifaceNil;
 96492  		c = this;
 96493  		_arg = url$1;
 96494  		_r$1 = new url.Values(data).Encode(); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 96495  		_r$2 = strings.NewReader(_r$1); /* */ $s = 2; case 2: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 96496  		_arg$1 = _r$2;
 96497  		_r$3 = c.Post(_arg, "application/x-www-form-urlencoded", _arg$1); /* */ $s = 3; case 3: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 96498  		_tuple = _r$3;
 96499  		resp = _tuple[0];
 96500  		err = _tuple[1];
 96501  		$s = -1; return [resp, err];
 96502  		/* */ } return; } if ($f === undefined) { $f = { $blk: Client.ptr.prototype.PostForm }; } $f._arg = _arg; $f._arg$1 = _arg$1; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._tuple = _tuple; $f.c = c; $f.data = data; $f.err = err; $f.resp = resp; $f.url$1 = url$1; $f.$s = $s; $f.$r = $r; return $f;
 96503  	};
 96504  	Client.prototype.PostForm = function(url$1, data) { return this.$val.PostForm(url$1, data); };
 96505  	Client.ptr.prototype.Head = function(url$1) {
 96506  		var _r$1, _r$2, _tmp, _tmp$1, _tuple, _tuple$1, c, err, req, resp, url$1, $s, $r;
 96507  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; _r$2 = $f._r$2; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; c = $f.c; err = $f.err; req = $f.req; resp = $f.resp; url$1 = $f.url$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 96508  		resp = ptrType$17.nil;
 96509  		err = $ifaceNil;
 96510  		c = this;
 96511  		_r$1 = NewRequest("HEAD", url$1, $ifaceNil); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 96512  		_tuple = _r$1;
 96513  		req = _tuple[0];
 96514  		err = _tuple[1];
 96515  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 96516  			_tmp = ptrType$17.nil;
 96517  			_tmp$1 = err;
 96518  			resp = _tmp;
 96519  			err = _tmp$1;
 96520  			$s = -1; return [resp, err];
 96521  		}
 96522  		_r$2 = c.Do(req); /* */ $s = 2; case 2: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 96523  		_tuple$1 = _r$2;
 96524  		resp = _tuple$1[0];
 96525  		err = _tuple$1[1];
 96526  		$s = -1; return [resp, err];
 96527  		/* */ } return; } if ($f === undefined) { $f = { $blk: Client.ptr.prototype.Head }; } $f._r$1 = _r$1; $f._r$2 = _r$2; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.c = c; $f.err = err; $f.req = req; $f.resp = resp; $f.url$1 = url$1; $f.$s = $s; $f.$r = $r; return $f;
 96528  	};
 96529  	Client.prototype.Head = function(url$1) { return this.$val.Head(url$1); };
 96530  	cancelTimerBody.ptr.prototype.Read = function(p) {
 96531  		var _r$1, _r$2, _r$3, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tuple, b, err, n, p, $s, $r;
 96532  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tmp$4 = $f._tmp$4; _tmp$5 = $f._tmp$5; _tuple = $f._tuple; b = $f.b; err = $f.err; n = $f.n; p = $f.p; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 96533  		n = 0;
 96534  		err = $ifaceNil;
 96535  		b = this;
 96536  		_r$1 = b.rc.Read(p); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 96537  		_tuple = _r$1;
 96538  		n = _tuple[0];
 96539  		err = _tuple[1];
 96540  		if ($interfaceIsEqual(err, $ifaceNil)) {
 96541  			_tmp = n;
 96542  			_tmp$1 = $ifaceNil;
 96543  			n = _tmp;
 96544  			err = _tmp$1;
 96545  			$s = -1; return [n, err];
 96546  		}
 96547  		$r = b.stop(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 96548  		if ($interfaceIsEqual(err, io.EOF)) {
 96549  			_tmp$2 = n;
 96550  			_tmp$3 = err;
 96551  			n = _tmp$2;
 96552  			err = _tmp$3;
 96553  			$s = -1; return [n, err];
 96554  		}
 96555  		_r$2 = b.reqDidTimeout(); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 96556  		/* */ if (_r$2) { $s = 3; continue; }
 96557  		/* */ $s = 4; continue;
 96558  		/* if (_r$2) { */ case 3:
 96559  			_r$3 = err.Error(); /* */ $s = 6; case 6: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 96560  			err = new httpError.ptr(_r$3 + " (Client.Timeout exceeded while reading body)", true);
 96561  		/* } */ case 4:
 96562  		_tmp$4 = n;
 96563  		_tmp$5 = err;
 96564  		n = _tmp$4;
 96565  		err = _tmp$5;
 96566  		$s = -1; return [n, err];
 96567  		/* */ } return; } if ($f === undefined) { $f = { $blk: cancelTimerBody.ptr.prototype.Read }; } $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tmp$4 = _tmp$4; $f._tmp$5 = _tmp$5; $f._tuple = _tuple; $f.b = b; $f.err = err; $f.n = n; $f.p = p; $f.$s = $s; $f.$r = $r; return $f;
 96568  	};
 96569  	cancelTimerBody.prototype.Read = function(p) { return this.$val.Read(p); };
 96570  	cancelTimerBody.ptr.prototype.Close = function() {
 96571  		var _r$1, b, err, $s, $r;
 96572  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; b = $f.b; err = $f.err; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 96573  		b = this;
 96574  		_r$1 = b.rc.Close(); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 96575  		err = _r$1;
 96576  		$r = b.stop(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 96577  		$s = -1; return err;
 96578  		/* */ } return; } if ($f === undefined) { $f = { $blk: cancelTimerBody.ptr.prototype.Close }; } $f._r$1 = _r$1; $f.b = b; $f.err = err; $f.$s = $s; $f.$r = $r; return $f;
 96579  	};
 96580  	cancelTimerBody.prototype.Close = function() { return this.$val.Close(); };
 96581  	shouldCopyHeaderOnRedirect = function(headerKey, initial, dest) {
 96582  		var _1, _r$1, _r$2, dest, dhost, headerKey, ihost, initial, $s, $r;
 96583  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _r$1 = $f._r$1; _r$2 = $f._r$2; dest = $f.dest; dhost = $f.dhost; headerKey = $f.headerKey; ihost = $f.ihost; initial = $f.initial; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 96584  			_1 = CanonicalHeaderKey(headerKey);
 96585  			/* */ if (_1 === ("Authorization") || _1 === ("Www-Authenticate") || _1 === ("Cookie") || _1 === ("Cookie2")) { $s = 2; continue; }
 96586  			/* */ $s = 3; continue;
 96587  			/* if (_1 === ("Authorization") || _1 === ("Www-Authenticate") || _1 === ("Cookie") || _1 === ("Cookie2")) { */ case 2:
 96588  				_r$1 = canonicalAddr(initial); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 96589  				ihost = _r$1;
 96590  				_r$2 = canonicalAddr(dest); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 96591  				dhost = _r$2;
 96592  				$s = -1; return isDomainOrSubdomain(dhost, ihost);
 96593  			/* } */ case 3:
 96594  		case 1:
 96595  		$s = -1; return true;
 96596  		/* */ } return; } if ($f === undefined) { $f = { $blk: shouldCopyHeaderOnRedirect }; } $f._1 = _1; $f._r$1 = _r$1; $f._r$2 = _r$2; $f.dest = dest; $f.dhost = dhost; $f.headerKey = headerKey; $f.ihost = ihost; $f.initial = initial; $f.$s = $s; $f.$r = $r; return $f;
 96597  	};
 96598  	isDomainOrSubdomain = function(sub, parent) {
 96599  		var parent, sub;
 96600  		if (sub === parent) {
 96601  			return true;
 96602  		}
 96603  		if (!strings.HasSuffix(sub, parent)) {
 96604  			return false;
 96605  		}
 96606  		return sub.charCodeAt(((sub.length - parent.length >> 0) - 1 >> 0)) === 46;
 96607  	};
 96608  	readSetCookies = function(h) {
 96609  		var _1, _entry, _entry$1, _i, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _ref, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, attr, c, cookieCount, cookies, err, err$1, exptime, h, i, j, j$1, line, lowerAttr, name, ok, parts, secs, val, value, $s, $r;
 96610  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _entry = $f._entry; _entry$1 = $f._entry$1; _i = $f._i; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _r$8 = $f._r$8; _ref = $f._ref; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tmp$4 = $f._tmp$4; _tmp$5 = $f._tmp$5; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; _tuple$4 = $f._tuple$4; attr = $f.attr; c = $f.c; cookieCount = $f.cookieCount; cookies = $f.cookies; err = $f.err; err$1 = $f.err$1; exptime = $f.exptime; h = $f.h; i = $f.i; j = $f.j; j$1 = $f.j$1; line = $f.line; lowerAttr = $f.lowerAttr; name = $f.name; ok = $f.ok; parts = $f.parts; secs = $f.secs; val = $f.val; value = $f.value; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 96611  		cookieCount = (_entry = h[$String.keyFor("Set-Cookie")], _entry !== undefined ? _entry.v : sliceType$1.nil).$length;
 96612  		if (cookieCount === 0) {
 96613  			$s = -1; return new sliceType$8([]);
 96614  		}
 96615  		cookies = $makeSlice(sliceType$8, 0, cookieCount);
 96616  		_ref = (_entry$1 = h[$String.keyFor("Set-Cookie")], _entry$1 !== undefined ? _entry$1.v : sliceType$1.nil);
 96617  		_i = 0;
 96618  		/* while (true) { */ case 1:
 96619  			/* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; }
 96620  			line = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
 96621  			_r$1 = strings.TrimSpace(line); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 96622  			_r$2 = strings.Split(_r$1, ";"); /* */ $s = 4; case 4: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 96623  			parts = _r$2;
 96624  			/* */ if ((parts.$length === 1) && (0 >= parts.$length ? ($throwRuntimeError("index out of range"), undefined) : parts.$array[parts.$offset + 0]) === "") { $s = 5; continue; }
 96625  			/* */ $s = 6; continue;
 96626  			/* if ((parts.$length === 1) && (0 >= parts.$length ? ($throwRuntimeError("index out of range"), undefined) : parts.$array[parts.$offset + 0]) === "") { */ case 5:
 96627  				_i++;
 96628  				/* continue; */ $s = 1; continue;
 96629  			/* } */ case 6:
 96630  			_r$3 = strings.TrimSpace((0 >= parts.$length ? ($throwRuntimeError("index out of range"), undefined) : parts.$array[parts.$offset + 0])); /* */ $s = 7; case 7: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 96631  			(0 >= parts.$length ? ($throwRuntimeError("index out of range"), undefined) : parts.$array[parts.$offset + 0] = _r$3);
 96632  			j = strings.Index((0 >= parts.$length ? ($throwRuntimeError("index out of range"), undefined) : parts.$array[parts.$offset + 0]), "=");
 96633  			/* */ if (j < 0) { $s = 8; continue; }
 96634  			/* */ $s = 9; continue;
 96635  			/* if (j < 0) { */ case 8:
 96636  				_i++;
 96637  				/* continue; */ $s = 1; continue;
 96638  			/* } */ case 9:
 96639  			_tmp = $substring((0 >= parts.$length ? ($throwRuntimeError("index out of range"), undefined) : parts.$array[parts.$offset + 0]), 0, j);
 96640  			_tmp$1 = $substring((0 >= parts.$length ? ($throwRuntimeError("index out of range"), undefined) : parts.$array[parts.$offset + 0]), (j + 1 >> 0));
 96641  			name = _tmp;
 96642  			value = _tmp$1;
 96643  			_r$4 = isCookieNameValid(name); /* */ $s = 12; case 12: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 96644  			/* */ if (!_r$4) { $s = 10; continue; }
 96645  			/* */ $s = 11; continue;
 96646  			/* if (!_r$4) { */ case 10:
 96647  				_i++;
 96648  				/* continue; */ $s = 1; continue;
 96649  			/* } */ case 11:
 96650  			_tuple = parseCookieValue(value, true);
 96651  			value = _tuple[0];
 96652  			ok = _tuple[1];
 96653  			/* */ if (!ok) { $s = 13; continue; }
 96654  			/* */ $s = 14; continue;
 96655  			/* if (!ok) { */ case 13:
 96656  				_i++;
 96657  				/* continue; */ $s = 1; continue;
 96658  			/* } */ case 14:
 96659  			c = new Cookie.ptr(name, value, "", "", new time.Time.ptr(new $Uint64(0, 0), new $Int64(0, 0), ptrType$1.nil), "", 0, false, false, line, sliceType$1.nil);
 96660  			i = 1;
 96661  			/* while (true) { */ case 15:
 96662  				/* if (!(i < parts.$length)) { break; } */ if(!(i < parts.$length)) { $s = 16; continue; }
 96663  				_r$5 = strings.TrimSpace(((i < 0 || i >= parts.$length) ? ($throwRuntimeError("index out of range"), undefined) : parts.$array[parts.$offset + i])); /* */ $s = 17; case 17: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
 96664  				((i < 0 || i >= parts.$length) ? ($throwRuntimeError("index out of range"), undefined) : parts.$array[parts.$offset + i] = _r$5);
 96665  				/* */ if (((i < 0 || i >= parts.$length) ? ($throwRuntimeError("index out of range"), undefined) : parts.$array[parts.$offset + i]).length === 0) { $s = 18; continue; }
 96666  				/* */ $s = 19; continue;
 96667  				/* if (((i < 0 || i >= parts.$length) ? ($throwRuntimeError("index out of range"), undefined) : parts.$array[parts.$offset + i]).length === 0) { */ case 18:
 96668  					i = i + (1) >> 0;
 96669  					/* continue; */ $s = 15; continue;
 96670  				/* } */ case 19:
 96671  				_tmp$2 = ((i < 0 || i >= parts.$length) ? ($throwRuntimeError("index out of range"), undefined) : parts.$array[parts.$offset + i]);
 96672  				_tmp$3 = "";
 96673  				attr = _tmp$2;
 96674  				val = _tmp$3;
 96675  				j$1 = strings.Index(attr, "=");
 96676  				if (j$1 >= 0) {
 96677  					_tmp$4 = $substring(attr, 0, j$1);
 96678  					_tmp$5 = $substring(attr, (j$1 + 1 >> 0));
 96679  					attr = _tmp$4;
 96680  					val = _tmp$5;
 96681  				}
 96682  				_r$6 = strings.ToLower(attr); /* */ $s = 20; case 20: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
 96683  				lowerAttr = _r$6;
 96684  				_tuple$1 = parseCookieValue(val, false);
 96685  				val = _tuple$1[0];
 96686  				ok = _tuple$1[1];
 96687  				/* */ if (!ok) { $s = 21; continue; }
 96688  				/* */ $s = 22; continue;
 96689  				/* if (!ok) { */ case 21:
 96690  					c.Unparsed = $append(c.Unparsed, ((i < 0 || i >= parts.$length) ? ($throwRuntimeError("index out of range"), undefined) : parts.$array[parts.$offset + i]));
 96691  					i = i + (1) >> 0;
 96692  					/* continue; */ $s = 15; continue;
 96693  				/* } */ case 22:
 96694  					_1 = lowerAttr;
 96695  					/* */ if (_1 === ("secure")) { $s = 24; continue; }
 96696  					/* */ if (_1 === ("httponly")) { $s = 25; continue; }
 96697  					/* */ if (_1 === ("domain")) { $s = 26; continue; }
 96698  					/* */ if (_1 === ("max-age")) { $s = 27; continue; }
 96699  					/* */ if (_1 === ("expires")) { $s = 28; continue; }
 96700  					/* */ if (_1 === ("path")) { $s = 29; continue; }
 96701  					/* */ $s = 30; continue;
 96702  					/* if (_1 === ("secure")) { */ case 24:
 96703  						c.Secure = true;
 96704  						i = i + (1) >> 0;
 96705  						/* continue; */ $s = 15; continue;
 96706  						$s = 30; continue;
 96707  					/* } else if (_1 === ("httponly")) { */ case 25:
 96708  						c.HttpOnly = true;
 96709  						i = i + (1) >> 0;
 96710  						/* continue; */ $s = 15; continue;
 96711  						$s = 30; continue;
 96712  					/* } else if (_1 === ("domain")) { */ case 26:
 96713  						c.Domain = val;
 96714  						i = i + (1) >> 0;
 96715  						/* continue; */ $s = 15; continue;
 96716  						$s = 30; continue;
 96717  					/* } else if (_1 === ("max-age")) { */ case 27:
 96718  						_tuple$2 = strconv.Atoi(val);
 96719  						secs = _tuple$2[0];
 96720  						err = _tuple$2[1];
 96721  						if (!($interfaceIsEqual(err, $ifaceNil)) || !((secs === 0)) && (val.charCodeAt(0) === 48)) {
 96722  							/* break; */ $s = 23; continue;
 96723  						}
 96724  						if (secs <= 0) {
 96725  							secs = -1;
 96726  						}
 96727  						c.MaxAge = secs;
 96728  						i = i + (1) >> 0;
 96729  						/* continue; */ $s = 15; continue;
 96730  						$s = 30; continue;
 96731  					/* } else if (_1 === ("expires")) { */ case 28:
 96732  						c.RawExpires = val;
 96733  						_r$7 = time.Parse("Mon, 02 Jan 2006 15:04:05 MST", val); /* */ $s = 31; case 31: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
 96734  						_tuple$3 = _r$7;
 96735  						exptime = $clone(_tuple$3[0], time.Time);
 96736  						err$1 = _tuple$3[1];
 96737  						/* */ if (!($interfaceIsEqual(err$1, $ifaceNil))) { $s = 32; continue; }
 96738  						/* */ $s = 33; continue;
 96739  						/* if (!($interfaceIsEqual(err$1, $ifaceNil))) { */ case 32:
 96740  							_r$8 = time.Parse("Mon, 02-Jan-2006 15:04:05 MST", val); /* */ $s = 34; case 34: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
 96741  							_tuple$4 = _r$8;
 96742  							time.Time.copy(exptime, _tuple$4[0]);
 96743  							err$1 = _tuple$4[1];
 96744  							if (!($interfaceIsEqual(err$1, $ifaceNil))) {
 96745  								time.Time.copy(c.Expires, new time.Time.ptr(new $Uint64(0, 0), new $Int64(0, 0), ptrType$1.nil));
 96746  								/* break; */ $s = 23; continue;
 96747  							}
 96748  						/* } */ case 33:
 96749  						time.Time.copy(c.Expires, $clone(exptime, time.Time).UTC());
 96750  						i = i + (1) >> 0;
 96751  						/* continue; */ $s = 15; continue;
 96752  						$s = 30; continue;
 96753  					/* } else if (_1 === ("path")) { */ case 29:
 96754  						c.Path = val;
 96755  						i = i + (1) >> 0;
 96756  						/* continue; */ $s = 15; continue;
 96757  					/* } */ case 30:
 96758  				case 23:
 96759  				c.Unparsed = $append(c.Unparsed, ((i < 0 || i >= parts.$length) ? ($throwRuntimeError("index out of range"), undefined) : parts.$array[parts.$offset + i]));
 96760  				i = i + (1) >> 0;
 96761  			/* } */ $s = 15; continue; case 16:
 96762  			cookies = $append(cookies, c);
 96763  			_i++;
 96764  		/* } */ $s = 1; continue; case 2:
 96765  		$s = -1; return cookies;
 96766  		/* */ } return; } if ($f === undefined) { $f = { $blk: readSetCookies }; } $f._1 = _1; $f._entry = _entry; $f._entry$1 = _entry$1; $f._i = _i; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._r$8 = _r$8; $f._ref = _ref; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tmp$4 = _tmp$4; $f._tmp$5 = _tmp$5; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f._tuple$4 = _tuple$4; $f.attr = attr; $f.c = c; $f.cookieCount = cookieCount; $f.cookies = cookies; $f.err = err; $f.err$1 = err$1; $f.exptime = exptime; $f.h = h; $f.i = i; $f.j = j; $f.j$1 = j$1; $f.line = line; $f.lowerAttr = lowerAttr; $f.name = name; $f.ok = ok; $f.parts = parts; $f.secs = secs; $f.val = val; $f.value = value; $f.$s = $s; $f.$r = $r; return $f;
 96767  	};
 96768  	Cookie.ptr.prototype.String = function() {
 96769  		var _r$1, _r$10, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _v, b, b2, b2$1, c, d, $s, $r;
 96770  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; _r$10 = $f._r$10; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _r$8 = $f._r$8; _r$9 = $f._r$9; _v = $f._v; b = $f.b; b2 = $f.b2; b2$1 = $f.b2$1; c = $f.c; d = $f.d; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 96771  		c = this;
 96772  		if (c === ptrType$25.nil) { _v = true; $s = 3; continue s; }
 96773  		_r$1 = isCookieNameValid(c.Name); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 96774  		_v = !_r$1; case 3:
 96775  		/* */ if (_v) { $s = 1; continue; }
 96776  		/* */ $s = 2; continue;
 96777  		/* if (_v) { */ case 1:
 96778  			$s = -1; return "";
 96779  		/* } */ case 2:
 96780  		b = new bytes.Buffer.ptr(sliceType$3.nil, 0, arrayType.zero(), 0);
 96781  		_r$2 = sanitizeCookieName(c.Name); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 96782  		_r$3 = b.WriteString(_r$2); /* */ $s = 6; case 6: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 96783  		_r$3;
 96784  		b.WriteRune(61);
 96785  		_r$4 = sanitizeCookieValue(c.Value); /* */ $s = 7; case 7: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 96786  		_r$5 = b.WriteString(_r$4); /* */ $s = 8; case 8: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
 96787  		_r$5;
 96788  		/* */ if (c.Path.length > 0) { $s = 9; continue; }
 96789  		/* */ $s = 10; continue;
 96790  		/* if (c.Path.length > 0) { */ case 9:
 96791  			b.WriteString("; Path=");
 96792  			_r$6 = sanitizeCookiePath(c.Path); /* */ $s = 11; case 11: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
 96793  			_r$7 = b.WriteString(_r$6); /* */ $s = 12; case 12: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
 96794  			_r$7;
 96795  		/* } */ case 10:
 96796  		/* */ if (c.Domain.length > 0) { $s = 13; continue; }
 96797  		/* */ $s = 14; continue;
 96798  		/* if (c.Domain.length > 0) { */ case 13:
 96799  			/* */ if (validCookieDomain(c.Domain)) { $s = 15; continue; }
 96800  			/* */ $s = 16; continue;
 96801  			/* if (validCookieDomain(c.Domain)) { */ case 15:
 96802  				d = c.Domain;
 96803  				if (d.charCodeAt(0) === 46) {
 96804  					d = $substring(d, 1);
 96805  				}
 96806  				b.WriteString("; Domain=");
 96807  				b.WriteString(d);
 96808  				$s = 17; continue;
 96809  			/* } else { */ case 16:
 96810  				$r = log.Printf("net/http: invalid Cookie.Domain %q; dropping domain attribute", new sliceType([new $String(c.Domain)])); /* */ $s = 18; case 18: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 96811  			/* } */ case 17:
 96812  		/* } */ case 14:
 96813  		_r$8 = validCookieExpires($clone(c.Expires, time.Time)); /* */ $s = 21; case 21: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
 96814  		/* */ if (_r$8) { $s = 19; continue; }
 96815  		/* */ $s = 20; continue;
 96816  		/* if (_r$8) { */ case 19:
 96817  			b.WriteString("; Expires=");
 96818  			b2 = b.Bytes();
 96819  			b.Reset();
 96820  			_r$9 = $clone($clone(c.Expires, time.Time).UTC(), time.Time).AppendFormat(b2, "Mon, 02 Jan 2006 15:04:05 GMT"); /* */ $s = 22; case 22: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
 96821  			_r$10 = b.Write(_r$9); /* */ $s = 23; case 23: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
 96822  			_r$10;
 96823  		/* } */ case 20:
 96824  		if (c.MaxAge > 0) {
 96825  			b.WriteString("; Max-Age=");
 96826  			b2$1 = b.Bytes();
 96827  			b.Reset();
 96828  			b.Write(strconv.AppendInt(b2$1, (new $Int64(0, c.MaxAge)), 10));
 96829  		} else if (c.MaxAge < 0) {
 96830  			b.WriteString("; Max-Age=0");
 96831  		}
 96832  		if (c.HttpOnly) {
 96833  			b.WriteString("; HttpOnly");
 96834  		}
 96835  		if (c.Secure) {
 96836  			b.WriteString("; Secure");
 96837  		}
 96838  		$s = -1; return b.String();
 96839  		/* */ } return; } if ($f === undefined) { $f = { $blk: Cookie.ptr.prototype.String }; } $f._r$1 = _r$1; $f._r$10 = _r$10; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._r$8 = _r$8; $f._r$9 = _r$9; $f._v = _v; $f.b = b; $f.b2 = b2; $f.b2$1 = b2$1; $f.c = c; $f.d = d; $f.$s = $s; $f.$r = $r; return $f;
 96840  	};
 96841  	Cookie.prototype.String = function() { return this.$val.String(); };
 96842  	readCookies = function(h, filter) {
 96843  		var _entry, _i, _r$1, _r$2, _r$3, _r$4, _ref, _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, _tuple$1, cookies, filter, h, i, j, line, lines, name, ok, ok$1, parts, val, $s, $r;
 96844  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _entry = $f._entry; _i = $f._i; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _ref = $f._ref; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; cookies = $f.cookies; filter = $f.filter; h = $f.h; i = $f.i; j = $f.j; line = $f.line; lines = $f.lines; name = $f.name; ok = $f.ok; ok$1 = $f.ok$1; parts = $f.parts; val = $f.val; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 96845  		_tuple = (_entry = h[$String.keyFor("Cookie")], _entry !== undefined ? [_entry.v, true] : [sliceType$1.nil, false]);
 96846  		lines = _tuple[0];
 96847  		ok = _tuple[1];
 96848  		if (!ok) {
 96849  			$s = -1; return new sliceType$8([]);
 96850  		}
 96851  		cookies = new sliceType$8([]);
 96852  		_ref = lines;
 96853  		_i = 0;
 96854  		/* while (true) { */ case 1:
 96855  			/* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; }
 96856  			line = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
 96857  			_r$1 = strings.TrimSpace(line); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 96858  			_r$2 = strings.Split(_r$1, ";"); /* */ $s = 4; case 4: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 96859  			parts = _r$2;
 96860  			/* */ if ((parts.$length === 1) && (0 >= parts.$length ? ($throwRuntimeError("index out of range"), undefined) : parts.$array[parts.$offset + 0]) === "") { $s = 5; continue; }
 96861  			/* */ $s = 6; continue;
 96862  			/* if ((parts.$length === 1) && (0 >= parts.$length ? ($throwRuntimeError("index out of range"), undefined) : parts.$array[parts.$offset + 0]) === "") { */ case 5:
 96863  				_i++;
 96864  				/* continue; */ $s = 1; continue;
 96865  			/* } */ case 6:
 96866  			i = 0;
 96867  			/* while (true) { */ case 7:
 96868  				/* if (!(i < parts.$length)) { break; } */ if(!(i < parts.$length)) { $s = 8; continue; }
 96869  				_r$3 = strings.TrimSpace(((i < 0 || i >= parts.$length) ? ($throwRuntimeError("index out of range"), undefined) : parts.$array[parts.$offset + i])); /* */ $s = 9; case 9: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 96870  				((i < 0 || i >= parts.$length) ? ($throwRuntimeError("index out of range"), undefined) : parts.$array[parts.$offset + i] = _r$3);
 96871  				/* */ if (((i < 0 || i >= parts.$length) ? ($throwRuntimeError("index out of range"), undefined) : parts.$array[parts.$offset + i]).length === 0) { $s = 10; continue; }
 96872  				/* */ $s = 11; continue;
 96873  				/* if (((i < 0 || i >= parts.$length) ? ($throwRuntimeError("index out of range"), undefined) : parts.$array[parts.$offset + i]).length === 0) { */ case 10:
 96874  					i = i + (1) >> 0;
 96875  					/* continue; */ $s = 7; continue;
 96876  				/* } */ case 11:
 96877  				_tmp = ((i < 0 || i >= parts.$length) ? ($throwRuntimeError("index out of range"), undefined) : parts.$array[parts.$offset + i]);
 96878  				_tmp$1 = "";
 96879  				name = _tmp;
 96880  				val = _tmp$1;
 96881  				j = strings.Index(name, "=");
 96882  				if (j >= 0) {
 96883  					_tmp$2 = $substring(name, 0, j);
 96884  					_tmp$3 = $substring(name, (j + 1 >> 0));
 96885  					name = _tmp$2;
 96886  					val = _tmp$3;
 96887  				}
 96888  				_r$4 = isCookieNameValid(name); /* */ $s = 14; case 14: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 96889  				/* */ if (!_r$4) { $s = 12; continue; }
 96890  				/* */ $s = 13; continue;
 96891  				/* if (!_r$4) { */ case 12:
 96892  					i = i + (1) >> 0;
 96893  					/* continue; */ $s = 7; continue;
 96894  				/* } */ case 13:
 96895  				if (!(filter === "") && !(filter === name)) {
 96896  					i = i + (1) >> 0;
 96897  					/* continue; */ $s = 7; continue;
 96898  				}
 96899  				_tuple$1 = parseCookieValue(val, true);
 96900  				val = _tuple$1[0];
 96901  				ok$1 = _tuple$1[1];
 96902  				if (!ok$1) {
 96903  					i = i + (1) >> 0;
 96904  					/* continue; */ $s = 7; continue;
 96905  				}
 96906  				cookies = $append(cookies, new Cookie.ptr(name, val, "", "", new time.Time.ptr(new $Uint64(0, 0), new $Int64(0, 0), ptrType$1.nil), "", 0, false, false, "", sliceType$1.nil));
 96907  				i = i + (1) >> 0;
 96908  			/* } */ $s = 7; continue; case 8:
 96909  			_i++;
 96910  		/* } */ $s = 1; continue; case 2:
 96911  		$s = -1; return cookies;
 96912  		/* */ } return; } if ($f === undefined) { $f = { $blk: readCookies }; } $f._entry = _entry; $f._i = _i; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._ref = _ref; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.cookies = cookies; $f.filter = filter; $f.h = h; $f.i = i; $f.j = j; $f.line = line; $f.lines = lines; $f.name = name; $f.ok = ok; $f.ok$1 = ok$1; $f.parts = parts; $f.val = val; $f.$s = $s; $f.$r = $r; return $f;
 96913  	};
 96914  	validCookieDomain = function(v) {
 96915  		var v;
 96916  		if (isCookieDomainName(v)) {
 96917  			return true;
 96918  		}
 96919  		if (!(net.ParseIP(v) === net.IP.nil) && !strings.Contains(v, ":")) {
 96920  			return true;
 96921  		}
 96922  		return false;
 96923  	};
 96924  	validCookieExpires = function(t) {
 96925  		var _r$1, t, $s, $r;
 96926  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; t = $f.t; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 96927  		_r$1 = $clone(t, time.Time).Year(); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 96928  		$s = -1; return _r$1 >= 1601;
 96929  		/* */ } return; } if ($f === undefined) { $f = { $blk: validCookieExpires }; } $f._r$1 = _r$1; $f.t = t; $f.$s = $s; $f.$r = $r; return $f;
 96930  	};
 96931  	isCookieDomainName = function(s) {
 96932  		var c, i, last, ok, partlen, s;
 96933  		if (s.length === 0) {
 96934  			return false;
 96935  		}
 96936  		if (s.length > 255) {
 96937  			return false;
 96938  		}
 96939  		if (s.charCodeAt(0) === 46) {
 96940  			s = $substring(s, 1);
 96941  		}
 96942  		last = 46;
 96943  		ok = false;
 96944  		partlen = 0;
 96945  		i = 0;
 96946  		while (true) {
 96947  			if (!(i < s.length)) { break; }
 96948  			c = s.charCodeAt(i);
 96949  			if (97 <= c && c <= 122 || 65 <= c && c <= 90) {
 96950  				ok = true;
 96951  				partlen = partlen + (1) >> 0;
 96952  			} else if (48 <= c && c <= 57) {
 96953  				partlen = partlen + (1) >> 0;
 96954  			} else if ((c === 45)) {
 96955  				if (last === 46) {
 96956  					return false;
 96957  				}
 96958  				partlen = partlen + (1) >> 0;
 96959  			} else if ((c === 46)) {
 96960  				if ((last === 46) || (last === 45)) {
 96961  					return false;
 96962  				}
 96963  				if (partlen > 63 || (partlen === 0)) {
 96964  					return false;
 96965  				}
 96966  				partlen = 0;
 96967  			} else {
 96968  				return false;
 96969  			}
 96970  			last = c;
 96971  			i = i + (1) >> 0;
 96972  		}
 96973  		if ((last === 45) || partlen > 63) {
 96974  			return false;
 96975  		}
 96976  		return ok;
 96977  	};
 96978  	sanitizeCookieName = function(n) {
 96979  		var _r$1, n, $s, $r;
 96980  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; n = $f.n; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 96981  		_r$1 = cookieNameSanitizer.Replace(n); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 96982  		$s = -1; return _r$1;
 96983  		/* */ } return; } if ($f === undefined) { $f = { $blk: sanitizeCookieName }; } $f._r$1 = _r$1; $f.n = n; $f.$s = $s; $f.$r = $r; return $f;
 96984  	};
 96985  	sanitizeCookieValue = function(v) {
 96986  		var _r$1, v, $s, $r;
 96987  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 96988  		_r$1 = sanitizeOrWarn("Cookie.Value", validCookieValueByte, v); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 96989  		v = _r$1;
 96990  		if (v.length === 0) {
 96991  			$s = -1; return v;
 96992  		}
 96993  		if (strings.IndexByte(v, 32) >= 0 || strings.IndexByte(v, 44) >= 0) {
 96994  			$s = -1; return "\"" + v + "\"";
 96995  		}
 96996  		$s = -1; return v;
 96997  		/* */ } return; } if ($f === undefined) { $f = { $blk: sanitizeCookieValue }; } $f._r$1 = _r$1; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
 96998  	};
 96999  	validCookieValueByte = function(b) {
 97000  		var b;
 97001  		return 32 <= b && b < 127 && !((b === 34)) && !((b === 59)) && !((b === 92));
 97002  	};
 97003  	sanitizeCookiePath = function(v) {
 97004  		var _r$1, v, $s, $r;
 97005  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 97006  		_r$1 = sanitizeOrWarn("Cookie.Path", validCookiePathByte, v); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 97007  		$s = -1; return _r$1;
 97008  		/* */ } return; } if ($f === undefined) { $f = { $blk: sanitizeCookiePath }; } $f._r$1 = _r$1; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
 97009  	};
 97010  	validCookiePathByte = function(b) {
 97011  		var b;
 97012  		return 32 <= b && b < 127 && !((b === 59));
 97013  	};
 97014  	sanitizeOrWarn = function(fieldName, valid, v) {
 97015  		var _r$1, _r$2, b, buf, fieldName, i, i$1, ok, v, valid, $s, $r;
 97016  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; _r$2 = $f._r$2; b = $f.b; buf = $f.buf; fieldName = $f.fieldName; i = $f.i; i$1 = $f.i$1; ok = $f.ok; v = $f.v; valid = $f.valid; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 97017  		ok = true;
 97018  		i = 0;
 97019  		/* while (true) { */ case 1:
 97020  			/* if (!(i < v.length)) { break; } */ if(!(i < v.length)) { $s = 2; continue; }
 97021  			_r$1 = valid(v.charCodeAt(i)); /* */ $s = 5; case 5: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 97022  			/* */ if (_r$1) { $s = 3; continue; }
 97023  			/* */ $s = 4; continue;
 97024  			/* if (_r$1) { */ case 3:
 97025  				i = i + (1) >> 0;
 97026  				/* continue; */ $s = 1; continue;
 97027  			/* } */ case 4:
 97028  			$r = log.Printf("net/http: invalid byte %q in %s; dropping invalid bytes", new sliceType([new $Uint8(v.charCodeAt(i)), new $String(fieldName)])); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 97029  			ok = false;
 97030  			/* break; */ $s = 2; continue;
 97031  		/* } */ $s = 1; continue; case 2:
 97032  		if (ok) {
 97033  			$s = -1; return v;
 97034  		}
 97035  		buf = $makeSlice(sliceType$3, 0, v.length);
 97036  		i$1 = 0;
 97037  		/* while (true) { */ case 7:
 97038  			/* if (!(i$1 < v.length)) { break; } */ if(!(i$1 < v.length)) { $s = 8; continue; }
 97039  			b = v.charCodeAt(i$1);
 97040  			_r$2 = valid(b); /* */ $s = 11; case 11: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 97041  			/* */ if (_r$2) { $s = 9; continue; }
 97042  			/* */ $s = 10; continue;
 97043  			/* if (_r$2) { */ case 9:
 97044  				buf = $append(buf, b);
 97045  			/* } */ case 10:
 97046  			i$1 = i$1 + (1) >> 0;
 97047  		/* } */ $s = 7; continue; case 8:
 97048  		$s = -1; return ($bytesToString(buf));
 97049  		/* */ } return; } if ($f === undefined) { $f = { $blk: sanitizeOrWarn }; } $f._r$1 = _r$1; $f._r$2 = _r$2; $f.b = b; $f.buf = buf; $f.fieldName = fieldName; $f.i = i; $f.i$1 = i$1; $f.ok = ok; $f.v = v; $f.valid = valid; $f.$s = $s; $f.$r = $r; return $f;
 97050  	};
 97051  	parseCookieValue = function(raw, allowDoubleQuote) {
 97052  		var allowDoubleQuote, i, raw;
 97053  		if (allowDoubleQuote && raw.length > 1 && (raw.charCodeAt(0) === 34) && (raw.charCodeAt((raw.length - 1 >> 0)) === 34)) {
 97054  			raw = $substring(raw, 1, (raw.length - 1 >> 0));
 97055  		}
 97056  		i = 0;
 97057  		while (true) {
 97058  			if (!(i < raw.length)) { break; }
 97059  			if (!validCookieValueByte(raw.charCodeAt(i))) {
 97060  				return ["", false];
 97061  			}
 97062  			i = i + (1) >> 0;
 97063  		}
 97064  		return [raw, true];
 97065  	};
 97066  	isCookieNameValid = function(raw) {
 97067  		var _r$1, raw, $s, $r;
 97068  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; raw = $f.raw; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 97069  		if (raw === "") {
 97070  			$s = -1; return false;
 97071  		}
 97072  		_r$1 = strings.IndexFunc(raw, isNotToken); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 97073  		$s = -1; return _r$1 < 0;
 97074  		/* */ } return; } if ($f === undefined) { $f = { $blk: isCookieNameValid }; } $f._r$1 = _r$1; $f.raw = raw; $f.$s = $s; $f.$r = $r; return $f;
 97075  	};
 97076  	http2isBadCipher = function(cipher) {
 97077  		var _1, cipher;
 97078  		_1 = cipher;
 97079  		if ((_1 === (0)) || (_1 === (1)) || (_1 === (2)) || (_1 === (3)) || (_1 === (4)) || (_1 === (5)) || (_1 === (6)) || (_1 === (7)) || (_1 === (8)) || (_1 === (9)) || (_1 === (10)) || (_1 === (11)) || (_1 === (12)) || (_1 === (13)) || (_1 === (14)) || (_1 === (15)) || (_1 === (16)) || (_1 === (17)) || (_1 === (18)) || (_1 === (19)) || (_1 === (20)) || (_1 === (21)) || (_1 === (22)) || (_1 === (23)) || (_1 === (24)) || (_1 === (25)) || (_1 === (26)) || (_1 === (27)) || (_1 === (30)) || (_1 === (31)) || (_1 === (32)) || (_1 === (33)) || (_1 === (34)) || (_1 === (35)) || (_1 === (36)) || (_1 === (37)) || (_1 === (38)) || (_1 === (39)) || (_1 === (40)) || (_1 === (41)) || (_1 === (42)) || (_1 === (43)) || (_1 === (44)) || (_1 === (45)) || (_1 === (46)) || (_1 === (47)) || (_1 === (48)) || (_1 === (49)) || (_1 === (50)) || (_1 === (51)) || (_1 === (52)) || (_1 === (53)) || (_1 === (54)) || (_1 === (55)) || (_1 === (56)) || (_1 === (57)) || (_1 === (58)) || (_1 === (59)) || (_1 === (60)) || (_1 === (61)) || (_1 === (62)) || (_1 === (63)) || (_1 === (64)) || (_1 === (65)) || (_1 === (66)) || (_1 === (67)) || (_1 === (68)) || (_1 === (69)) || (_1 === (70)) || (_1 === (103)) || (_1 === (104)) || (_1 === (105)) || (_1 === (106)) || (_1 === (107)) || (_1 === (108)) || (_1 === (109)) || (_1 === (132)) || (_1 === (133)) || (_1 === (134)) || (_1 === (135)) || (_1 === (136)) || (_1 === (137)) || (_1 === (138)) || (_1 === (139)) || (_1 === (140)) || (_1 === (141)) || (_1 === (142)) || (_1 === (143)) || (_1 === (144)) || (_1 === (145)) || (_1 === (146)) || (_1 === (147)) || (_1 === (148)) || (_1 === (149)) || (_1 === (150)) || (_1 === (151)) || (_1 === (152)) || (_1 === (153)) || (_1 === (154)) || (_1 === (155)) || (_1 === (156)) || (_1 === (157)) || (_1 === (160)) || (_1 === (161)) || (_1 === (164)) || (_1 === (165)) || (_1 === (166)) || (_1 === (167)) || (_1 === (168)) || (_1 === (169)) || (_1 === (172)) || (_1 === (173)) || (_1 === (174)) || (_1 === (175)) || (_1 === (176)) || (_1 === (177)) || (_1 === (178)) || (_1 === (179)) || (_1 === (180)) || (_1 === (181)) || (_1 === (182)) || (_1 === (183)) || (_1 === (184)) || (_1 === (185)) || (_1 === (186)) || (_1 === (187)) || (_1 === (188)) || (_1 === (189)) || (_1 === (190)) || (_1 === (191)) || (_1 === (192)) || (_1 === (193)) || (_1 === (194)) || (_1 === (195)) || (_1 === (196)) || (_1 === (197)) || (_1 === (255)) || (_1 === (49153)) || (_1 === (49154)) || (_1 === (49155)) || (_1 === (49156)) || (_1 === (49157)) || (_1 === (49158)) || (_1 === (49159)) || (_1 === (49160)) || (_1 === (49161)) || (_1 === (49162)) || (_1 === (49163)) || (_1 === (49164)) || (_1 === (49165)) || (_1 === (49166)) || (_1 === (49167)) || (_1 === (49168)) || (_1 === (49169)) || (_1 === (49170)) || (_1 === (49171)) || (_1 === (49172)) || (_1 === (49173)) || (_1 === (49174)) || (_1 === (49175)) || (_1 === (49176)) || (_1 === (49177)) || (_1 === (49178)) || (_1 === (49179)) || (_1 === (49180)) || (_1 === (49181)) || (_1 === (49182)) || (_1 === (49183)) || (_1 === (49184)) || (_1 === (49185)) || (_1 === (49186)) || (_1 === (49187)) || (_1 === (49188)) || (_1 === (49189)) || (_1 === (49190)) || (_1 === (49191)) || (_1 === (49192)) || (_1 === (49193)) || (_1 === (49194)) || (_1 === (49197)) || (_1 === (49198)) || (_1 === (49201)) || (_1 === (49202)) || (_1 === (49203)) || (_1 === (49204)) || (_1 === (49205)) || (_1 === (49206)) || (_1 === (49207)) || (_1 === (49208)) || (_1 === (49209)) || (_1 === (49210)) || (_1 === (49211)) || (_1 === (49212)) || (_1 === (49213)) || (_1 === (49214)) || (_1 === (49215)) || (_1 === (49216)) || (_1 === (49217)) || (_1 === (49218)) || (_1 === (49219)) || (_1 === (49220)) || (_1 === (49221)) || (_1 === (49222)) || (_1 === (49223)) || (_1 === (49224)) || (_1 === (49225)) || (_1 === (49226)) || (_1 === (49227)) || (_1 === (49228)) || (_1 === (49229)) || (_1 === (49230)) || (_1 === (49231)) || (_1 === (49232)) || (_1 === (49233)) || (_1 === (49236)) || (_1 === (49237)) || (_1 === (49240)) || (_1 === (49241)) || (_1 === (49242)) || (_1 === (49243)) || (_1 === (49246)) || (_1 === (49247)) || (_1 === (49250)) || (_1 === (49251)) || (_1 === (49252)) || (_1 === (49253)) || (_1 === (49254)) || (_1 === (49255)) || (_1 === (49256)) || (_1 === (49257)) || (_1 === (49258)) || (_1 === (49259)) || (_1 === (49262)) || (_1 === (49263)) || (_1 === (49264)) || (_1 === (49265)) || (_1 === (49266)) || (_1 === (49267)) || (_1 === (49268)) || (_1 === (49269)) || (_1 === (49270)) || (_1 === (49271)) || (_1 === (49272)) || (_1 === (49273)) || (_1 === (49274)) || (_1 === (49275)) || (_1 === (49278)) || (_1 === (49279)) || (_1 === (49282)) || (_1 === (49283)) || (_1 === (49284)) || (_1 === (49285)) || (_1 === (49288)) || (_1 === (49289)) || (_1 === (49292)) || (_1 === (49293)) || (_1 === (49294)) || (_1 === (49295)) || (_1 === (49298)) || (_1 === (49299)) || (_1 === (49300)) || (_1 === (49301)) || (_1 === (49302)) || (_1 === (49303)) || (_1 === (49304)) || (_1 === (49305)) || (_1 === (49306)) || (_1 === (49307)) || (_1 === (49308)) || (_1 === (49309)) || (_1 === (49312)) || (_1 === (49313)) || (_1 === (49316)) || (_1 === (49317)) || (_1 === (49320)) || (_1 === (49321))) {
 97080  			return true;
 97081  		} else {
 97082  			return false;
 97083  		}
 97084  	};
 97085  	http2clientConnPool.ptr.prototype.GetClientConn = function(req, addr) {
 97086  		var _r$1, addr, p, req, $s, $r;
 97087  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; addr = $f.addr; p = $f.p; req = $f.req; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 97088  		p = this;
 97089  		_r$1 = p.getClientConn(req, addr, true); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 97090  		$s = -1; return _r$1;
 97091  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2clientConnPool.ptr.prototype.GetClientConn }; } $f._r$1 = _r$1; $f.addr = addr; $f.p = p; $f.req = req; $f.$s = $s; $f.$r = $r; return $f;
 97092  	};
 97093  	http2clientConnPool.prototype.GetClientConn = function(req, addr) { return this.$val.GetClientConn(req, addr); };
 97094  	http2clientConnPool.ptr.prototype.getClientConn = function(req, addr, dialOnMiss) {
 97095  		var _entry, _i, _r$1, _r$2, _r$3, _ref, _tuple, addr, call, cc, cc$1, dialOnMiss, err, p, req, $s, $r;
 97096  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _entry = $f._entry; _i = $f._i; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _ref = $f._ref; _tuple = $f._tuple; addr = $f.addr; call = $f.call; cc = $f.cc; cc$1 = $f.cc$1; dialOnMiss = $f.dialOnMiss; err = $f.err; p = $f.p; req = $f.req; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 97097  		p = this;
 97098  		/* */ if (http2isConnectionCloseRequest(req) && dialOnMiss) { $s = 1; continue; }
 97099  		/* */ $s = 2; continue;
 97100  		/* if (http2isConnectionCloseRequest(req) && dialOnMiss) { */ case 1:
 97101  			_r$1 = p.t.dialClientConn(addr, true); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 97102  			_tuple = _r$1;
 97103  			cc = _tuple[0];
 97104  			err = _tuple[1];
 97105  			if (!($interfaceIsEqual(err, $ifaceNil))) {
 97106  				$s = -1; return [ptrType$28.nil, err];
 97107  			}
 97108  			$s = -1; return [cc, $ifaceNil];
 97109  		/* } */ case 2:
 97110  		$r = p.mu.Lock(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 97111  		_ref = (_entry = p.conns[$String.keyFor(addr)], _entry !== undefined ? _entry.v : sliceType$10.nil);
 97112  		_i = 0;
 97113  		/* while (true) { */ case 5:
 97114  			/* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 6; continue; }
 97115  			cc$1 = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
 97116  			_r$2 = cc$1.CanTakeNewRequest(); /* */ $s = 9; case 9: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 97117  			/* */ if (_r$2) { $s = 7; continue; }
 97118  			/* */ $s = 8; continue;
 97119  			/* if (_r$2) { */ case 7:
 97120  				$r = p.mu.Unlock(); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 97121  				$s = -1; return [cc$1, $ifaceNil];
 97122  			/* } */ case 8:
 97123  			_i++;
 97124  		/* } */ $s = 5; continue; case 6:
 97125  		/* */ if (!dialOnMiss) { $s = 11; continue; }
 97126  		/* */ $s = 12; continue;
 97127  		/* if (!dialOnMiss) { */ case 11:
 97128  			$r = p.mu.Unlock(); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 97129  			$s = -1; return [ptrType$28.nil, http2ErrNoCachedConn];
 97130  		/* } */ case 12:
 97131  		call = p.getStartDialLocked(addr);
 97132  		$r = p.mu.Unlock(); /* */ $s = 14; case 14: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 97133  		_r$3 = $recv(call.done); /* */ $s = 15; case 15: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 97134  		_r$3[0];
 97135  		$s = -1; return [call.res, call.err];
 97136  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2clientConnPool.ptr.prototype.getClientConn }; } $f._entry = _entry; $f._i = _i; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._ref = _ref; $f._tuple = _tuple; $f.addr = addr; $f.call = call; $f.cc = cc; $f.cc$1 = cc$1; $f.dialOnMiss = dialOnMiss; $f.err = err; $f.p = p; $f.req = req; $f.$s = $s; $f.$r = $r; return $f;
 97137  	};
 97138  	http2clientConnPool.prototype.getClientConn = function(req, addr, dialOnMiss) { return this.$val.getClientConn(req, addr, dialOnMiss); };
 97139  	http2clientConnPool.ptr.prototype.getStartDialLocked = function(addr) {
 97140  		var _entry, _key, _tuple, addr, call, call$1, ok, p;
 97141  		p = this;
 97142  		_tuple = (_entry = p.dialing[$String.keyFor(addr)], _entry !== undefined ? [_entry.v, true] : [ptrType$29.nil, false]);
 97143  		call = _tuple[0];
 97144  		ok = _tuple[1];
 97145  		if (ok) {
 97146  			return call;
 97147  		}
 97148  		call$1 = new http2dialCall.ptr(p, new $Chan(structType, 0), ptrType$28.nil, $ifaceNil);
 97149  		if (p.dialing === false) {
 97150  			p.dialing = {};
 97151  		}
 97152  		_key = addr; (p.dialing || $throwRuntimeError("assignment to entry in nil map"))[$String.keyFor(_key)] = { k: _key, v: call$1 };
 97153  		$go($methodVal(call$1, "dial"), [addr]);
 97154  		return call$1;
 97155  	};
 97156  	http2clientConnPool.prototype.getStartDialLocked = function(addr) { return this.$val.getStartDialLocked(addr); };
 97157  	http2dialCall.ptr.prototype.dial = function(addr) {
 97158  		var _r$1, _tuple, addr, c, $s, $r;
 97159  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; _tuple = $f._tuple; addr = $f.addr; c = $f.c; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 97160  		c = this;
 97161  		_r$1 = c.p.t.dialClientConn(addr, false); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 97162  		_tuple = _r$1;
 97163  		c.res = _tuple[0];
 97164  		c.err = _tuple[1];
 97165  		$close(c.done);
 97166  		$r = c.p.mu.Lock(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 97167  		delete c.p.dialing[$String.keyFor(addr)];
 97168  		if ($interfaceIsEqual(c.err, $ifaceNil)) {
 97169  			c.p.addConnLocked(addr, c.res);
 97170  		}
 97171  		$r = c.p.mu.Unlock(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 97172  		$s = -1; return;
 97173  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2dialCall.ptr.prototype.dial }; } $f._r$1 = _r$1; $f._tuple = _tuple; $f.addr = addr; $f.c = c; $f.$s = $s; $f.$r = $r; return $f;
 97174  	};
 97175  	http2dialCall.prototype.dial = function(addr) { return this.$val.dial(addr); };
 97176  	http2clientConnPool.ptr.prototype.addConnIfNeeded = function(key, t, c) {
 97177  		var _entry, _entry$1, _i, _key, _r$1, _r$2, _ref, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tuple, c, call, cc, dup, err, key, p, t, used, $s, $r;
 97178  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _entry = $f._entry; _entry$1 = $f._entry$1; _i = $f._i; _key = $f._key; _r$1 = $f._r$1; _r$2 = $f._r$2; _ref = $f._ref; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tmp$4 = $f._tmp$4; _tmp$5 = $f._tmp$5; _tuple = $f._tuple; c = $f.c; call = $f.call; cc = $f.cc; dup = $f.dup; err = $f.err; key = $f.key; p = $f.p; t = $f.t; used = $f.used; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 97179  		used = false;
 97180  		err = $ifaceNil;
 97181  		p = this;
 97182  		$r = p.mu.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 97183  		_ref = (_entry = p.conns[$String.keyFor(key)], _entry !== undefined ? _entry.v : sliceType$10.nil);
 97184  		_i = 0;
 97185  		/* while (true) { */ case 2:
 97186  			/* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 3; continue; }
 97187  			cc = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
 97188  			_r$1 = cc.CanTakeNewRequest(); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 97189  			/* */ if (_r$1) { $s = 4; continue; }
 97190  			/* */ $s = 5; continue;
 97191  			/* if (_r$1) { */ case 4:
 97192  				$r = p.mu.Unlock(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 97193  				_tmp = false;
 97194  				_tmp$1 = $ifaceNil;
 97195  				used = _tmp;
 97196  				err = _tmp$1;
 97197  				$s = -1; return [used, err];
 97198  			/* } */ case 5:
 97199  			_i++;
 97200  		/* } */ $s = 2; continue; case 3:
 97201  		_tuple = (_entry$1 = p.addConnCalls[$String.keyFor(key)], _entry$1 !== undefined ? [_entry$1.v, true] : [ptrType$30.nil, false]);
 97202  		call = _tuple[0];
 97203  		dup = _tuple[1];
 97204  		/* */ if (!dup) { $s = 8; continue; }
 97205  		/* */ $s = 9; continue;
 97206  		/* if (!dup) { */ case 8:
 97207  			if (p.addConnCalls === false) {
 97208  				p.addConnCalls = {};
 97209  			}
 97210  			call = new http2addConnCall.ptr(p, new $Chan(structType, 0), $ifaceNil);
 97211  			_key = key; (p.addConnCalls || $throwRuntimeError("assignment to entry in nil map"))[$String.keyFor(_key)] = { k: _key, v: call };
 97212  			$go($methodVal(call, "run"), [t, key, c]);
 97213  		/* } */ case 9:
 97214  		$r = p.mu.Unlock(); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 97215  		_r$2 = $recv(call.done); /* */ $s = 11; case 11: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 97216  		_r$2[0];
 97217  		if (!($interfaceIsEqual(call.err, $ifaceNil))) {
 97218  			_tmp$2 = false;
 97219  			_tmp$3 = call.err;
 97220  			used = _tmp$2;
 97221  			err = _tmp$3;
 97222  			$s = -1; return [used, err];
 97223  		}
 97224  		_tmp$4 = !dup;
 97225  		_tmp$5 = $ifaceNil;
 97226  		used = _tmp$4;
 97227  		err = _tmp$5;
 97228  		$s = -1; return [used, err];
 97229  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2clientConnPool.ptr.prototype.addConnIfNeeded }; } $f._entry = _entry; $f._entry$1 = _entry$1; $f._i = _i; $f._key = _key; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._ref = _ref; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tmp$4 = _tmp$4; $f._tmp$5 = _tmp$5; $f._tuple = _tuple; $f.c = c; $f.call = call; $f.cc = cc; $f.dup = dup; $f.err = err; $f.key = key; $f.p = p; $f.t = t; $f.used = used; $f.$s = $s; $f.$r = $r; return $f;
 97230  	};
 97231  	http2clientConnPool.prototype.addConnIfNeeded = function(key, t, c) { return this.$val.addConnIfNeeded(key, t, c); };
 97232  	http2addConnCall.ptr.prototype.run = function(t, key, tc) {
 97233  		var _r$1, _tuple, c, cc, err, key, p, t, tc, $s, $r;
 97234  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; _tuple = $f._tuple; c = $f.c; cc = $f.cc; err = $f.err; key = $f.key; p = $f.p; t = $f.t; tc = $f.tc; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 97235  		c = this;
 97236  		_r$1 = t.NewClientConn(tc); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 97237  		_tuple = _r$1;
 97238  		cc = _tuple[0];
 97239  		err = _tuple[1];
 97240  		p = c.p;
 97241  		$r = p.mu.Lock(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 97242  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 97243  			c.err = err;
 97244  		} else {
 97245  			p.addConnLocked(key, cc);
 97246  		}
 97247  		delete p.addConnCalls[$String.keyFor(key)];
 97248  		$r = p.mu.Unlock(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 97249  		$close(c.done);
 97250  		$s = -1; return;
 97251  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2addConnCall.ptr.prototype.run }; } $f._r$1 = _r$1; $f._tuple = _tuple; $f.c = c; $f.cc = cc; $f.err = err; $f.key = key; $f.p = p; $f.t = t; $f.tc = tc; $f.$s = $s; $f.$r = $r; return $f;
 97252  	};
 97253  	http2addConnCall.prototype.run = function(t, key, tc) { return this.$val.run(t, key, tc); };
 97254  	http2clientConnPool.ptr.prototype.addConnLocked = function(key, cc) {
 97255  		var _entry, _entry$1, _entry$2, _i, _key, _key$1, _ref, cc, key, p, v;
 97256  		p = this;
 97257  		_ref = (_entry = p.conns[$String.keyFor(key)], _entry !== undefined ? _entry.v : sliceType$10.nil);
 97258  		_i = 0;
 97259  		while (true) {
 97260  			if (!(_i < _ref.$length)) { break; }
 97261  			v = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
 97262  			if (v === cc) {
 97263  				return;
 97264  			}
 97265  			_i++;
 97266  		}
 97267  		if (p.conns === false) {
 97268  			p.conns = {};
 97269  		}
 97270  		if (p.keys === false) {
 97271  			p.keys = {};
 97272  		}
 97273  		_key = key; (p.conns || $throwRuntimeError("assignment to entry in nil map"))[$String.keyFor(_key)] = { k: _key, v: $append((_entry$1 = p.conns[$String.keyFor(key)], _entry$1 !== undefined ? _entry$1.v : sliceType$10.nil), cc) };
 97274  		_key$1 = cc; (p.keys || $throwRuntimeError("assignment to entry in nil map"))[ptrType$28.keyFor(_key$1)] = { k: _key$1, v: $append((_entry$2 = p.keys[ptrType$28.keyFor(cc)], _entry$2 !== undefined ? _entry$2.v : sliceType$1.nil), key) };
 97275  	};
 97276  	http2clientConnPool.prototype.addConnLocked = function(key, cc) { return this.$val.addConnLocked(key, cc); };
 97277  	http2clientConnPool.ptr.prototype.MarkDead = function(cc) {
 97278  		var _entry, _entry$1, _i, _key, _ref, _tuple, cc, key, newList, ok, p, vv, $s, $deferred, $r;
 97279  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _entry = $f._entry; _entry$1 = $f._entry$1; _i = $f._i; _key = $f._key; _ref = $f._ref; _tuple = $f._tuple; cc = $f.cc; key = $f.key; newList = $f.newList; ok = $f.ok; p = $f.p; vv = $f.vv; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
 97280  		p = this;
 97281  		$r = p.mu.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 97282  		$deferred.push([$methodVal(p.mu, "Unlock"), []]);
 97283  		_ref = (_entry = p.keys[ptrType$28.keyFor(cc)], _entry !== undefined ? _entry.v : sliceType$1.nil);
 97284  		_i = 0;
 97285  		while (true) {
 97286  			if (!(_i < _ref.$length)) { break; }
 97287  			key = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
 97288  			_tuple = (_entry$1 = p.conns[$String.keyFor(key)], _entry$1 !== undefined ? [_entry$1.v, true] : [sliceType$10.nil, false]);
 97289  			vv = _tuple[0];
 97290  			ok = _tuple[1];
 97291  			if (!ok) {
 97292  				_i++;
 97293  				continue;
 97294  			}
 97295  			newList = http2filterOutClientConn(vv, cc);
 97296  			if (newList.$length > 0) {
 97297  				_key = key; (p.conns || $throwRuntimeError("assignment to entry in nil map"))[$String.keyFor(_key)] = { k: _key, v: newList };
 97298  			} else {
 97299  				delete p.conns[$String.keyFor(key)];
 97300  			}
 97301  			_i++;
 97302  		}
 97303  		delete p.keys[ptrType$28.keyFor(cc)];
 97304  		$s = -1; return;
 97305  		/* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: http2clientConnPool.ptr.prototype.MarkDead }; } $f._entry = _entry; $f._entry$1 = _entry$1; $f._i = _i; $f._key = _key; $f._ref = _ref; $f._tuple = _tuple; $f.cc = cc; $f.key = key; $f.newList = newList; $f.ok = ok; $f.p = p; $f.vv = vv; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
 97306  	};
 97307  	http2clientConnPool.prototype.MarkDead = function(cc) { return this.$val.MarkDead(cc); };
 97308  	http2clientConnPool.ptr.prototype.closeIdleConnections = function() {
 97309  		var _entry, _i, _i$1, _keys, _ref, _ref$1, cc, p, vv, $s, $deferred, $r;
 97310  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _entry = $f._entry; _i = $f._i; _i$1 = $f._i$1; _keys = $f._keys; _ref = $f._ref; _ref$1 = $f._ref$1; cc = $f.cc; p = $f.p; vv = $f.vv; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
 97311  		p = this;
 97312  		$r = p.mu.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 97313  		$deferred.push([$methodVal(p.mu, "Unlock"), []]);
 97314  		_ref = p.conns;
 97315  		_i = 0;
 97316  		_keys = $keys(_ref);
 97317  		/* while (true) { */ case 2:
 97318  			/* if (!(_i < _keys.length)) { break; } */ if(!(_i < _keys.length)) { $s = 3; continue; }
 97319  			_entry = _ref[_keys[_i]];
 97320  			if (_entry === undefined) {
 97321  				_i++;
 97322  				/* continue; */ $s = 2; continue;
 97323  			}
 97324  			vv = _entry.v;
 97325  			_ref$1 = vv;
 97326  			_i$1 = 0;
 97327  			/* while (true) { */ case 4:
 97328  				/* if (!(_i$1 < _ref$1.$length)) { break; } */ if(!(_i$1 < _ref$1.$length)) { $s = 5; continue; }
 97329  				cc = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]);
 97330  				$r = cc.closeIfIdle(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 97331  				_i$1++;
 97332  			/* } */ $s = 4; continue; case 5:
 97333  			_i++;
 97334  		/* } */ $s = 2; continue; case 3:
 97335  		$s = -1; return;
 97336  		/* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: http2clientConnPool.ptr.prototype.closeIdleConnections }; } $f._entry = _entry; $f._i = _i; $f._i$1 = _i$1; $f._keys = _keys; $f._ref = _ref; $f._ref$1 = _ref$1; $f.cc = cc; $f.p = p; $f.vv = vv; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
 97337  	};
 97338  	http2clientConnPool.prototype.closeIdleConnections = function() { return this.$val.closeIdleConnections(); };
 97339  	http2filterOutClientConn = function(in$1, exclude) {
 97340  		var _i, _ref, exclude, in$1, out, v, x$4;
 97341  		out = $subslice(in$1, 0, 0);
 97342  		_ref = in$1;
 97343  		_i = 0;
 97344  		while (true) {
 97345  			if (!(_i < _ref.$length)) { break; }
 97346  			v = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
 97347  			if (!(v === exclude)) {
 97348  				out = $append(out, v);
 97349  			}
 97350  			_i++;
 97351  		}
 97352  		if (!((in$1.$length === out.$length))) {
 97353  			(x$4 = in$1.$length - 1 >> 0, ((x$4 < 0 || x$4 >= in$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : in$1.$array[in$1.$offset + x$4] = ptrType$28.nil));
 97354  		}
 97355  		return out;
 97356  	};
 97357  	http2noDialClientConnPool.ptr.prototype.GetClientConn = function(req, addr) {
 97358  		var _r$1, addr, p, req, $s, $r;
 97359  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; addr = $f.addr; p = $f.p; req = $f.req; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 97360  		p = this;
 97361  		_r$1 = p.http2clientConnPool.getClientConn(req, addr, false); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 97362  		$s = -1; return _r$1;
 97363  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2noDialClientConnPool.ptr.prototype.GetClientConn }; } $f._r$1 = _r$1; $f.addr = addr; $f.p = p; $f.req = req; $f.$s = $s; $f.$r = $r; return $f;
 97364  	};
 97365  	http2noDialClientConnPool.prototype.GetClientConn = function(req, addr) { return this.$val.GetClientConn(req, addr); };
 97366  	http2configureTransport = function(t1) {
 97367  		var _key, _r$1, connPool, err, m, t1, t2, upgradeFn, x$4, x$5, $s, $r;
 97368  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _key = $f._key; _r$1 = $f._r$1; connPool = $f.connPool; err = $f.err; m = $f.m; t1 = $f.t1; t2 = $f.t2; upgradeFn = $f.upgradeFn; x$4 = $f.x$4; x$5 = $f.x$5; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 97369  		connPool = [connPool];
 97370  		t2 = [t2];
 97371  		connPool[0] = new http2clientConnPool.ptr(ptrType$15.nil, new sync.Mutex.ptr(0, 0), false, false, false, false);
 97372  		t2[0] = new http2Transport.ptr($throwNilPointerError, ptrType$14.nil, (x$4 = new http2noDialClientConnPool.ptr(connPool[0]), new x$4.constructor.elem(x$4)), false, false, 0, t1, new sync.Once.ptr(new sync.Mutex.ptr(0, 0), 0), $ifaceNil);
 97373  		connPool[0].t = t2[0];
 97374  		_r$1 = http2registerHTTPSProtocol(t1, (x$5 = new http2noDialH2RoundTripper.ptr(t2[0]), new x$5.constructor.elem(x$5))); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 97375  		err = _r$1;
 97376  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 97377  			$s = -1; return [ptrType$15.nil, err];
 97378  		}
 97379  		if (t1.TLSClientConfig === ptrType$14.nil) {
 97380  			t1.TLSClientConfig = new tls.Config.ptr($ifaceNil, $throwNilPointerError, sliceType$11.nil, false, $throwNilPointerError, $throwNilPointerError, $throwNilPointerError, $throwNilPointerError, ptrType$31.nil, sliceType$1.nil, "", 0, ptrType$31.nil, false, sliceType$12.nil, false, false, arrayType$2.zero(), $ifaceNil, 0, 0, sliceType$13.nil, false, 0, $ifaceNil, new sync.Once.ptr(new sync.Mutex.ptr(0, 0), 0), new sync.RWMutex.ptr(new sync.Mutex.ptr(0, 0), 0, 0, 0, 0), sliceType$14.nil);
 97381  		}
 97382  		if (!http2strSliceContains(t1.TLSClientConfig.NextProtos, "h2")) {
 97383  			t1.TLSClientConfig.NextProtos = $appendSlice(new sliceType$1(["h2"]), t1.TLSClientConfig.NextProtos);
 97384  		}
 97385  		if (!http2strSliceContains(t1.TLSClientConfig.NextProtos, "http/1.1")) {
 97386  			t1.TLSClientConfig.NextProtos = $append(t1.TLSClientConfig.NextProtos, "http/1.1");
 97387  		}
 97388  		upgradeFn = (function(connPool, t2) { return function $b(authority, c) {
 97389  			var _r$2, _r$3, _tuple, addr, authority, c, err$1, used, x$6, $s, $r;
 97390  			/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$2 = $f._r$2; _r$3 = $f._r$3; _tuple = $f._tuple; addr = $f.addr; authority = $f.authority; c = $f.c; err$1 = $f.err$1; used = $f.used; x$6 = $f.x$6; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 97391  			_r$2 = http2authorityAddr("https", authority); /* */ $s = 1; case 1: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 97392  			addr = _r$2;
 97393  			_r$3 = connPool[0].addConnIfNeeded(addr, t2[0], c); /* */ $s = 2; case 2: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 97394  			_tuple = _r$3;
 97395  			used = _tuple[0];
 97396  			err$1 = _tuple[1];
 97397  			if (!($interfaceIsEqual(err$1, $ifaceNil))) {
 97398  				$go($methodVal(c, "Close"), []);
 97399  				$s = -1; return (x$6 = new http2erringRoundTripper.ptr(err$1), new x$6.constructor.elem(x$6));
 97400  			} else if (!used) {
 97401  				$go($methodVal(c, "Close"), []);
 97402  			}
 97403  			$s = -1; return t2[0];
 97404  			/* */ } return; } if ($f === undefined) { $f = { $blk: $b }; } $f._r$2 = _r$2; $f._r$3 = _r$3; $f._tuple = _tuple; $f.addr = addr; $f.authority = authority; $f.c = c; $f.err$1 = err$1; $f.used = used; $f.x$6 = x$6; $f.$s = $s; $f.$r = $r; return $f;
 97405  		}; })(connPool, t2);
 97406  		m = t1.TLSNextProto;
 97407  		if ($keys(m).length === 0) {
 97408  			t1.TLSNextProto = $makeMap($String.keyFor, [{ k: "h2", v: upgradeFn }]);
 97409  		} else {
 97410  			_key = "h2"; (m || $throwRuntimeError("assignment to entry in nil map"))[$String.keyFor(_key)] = { k: _key, v: upgradeFn };
 97411  		}
 97412  		$s = -1; return [t2[0], $ifaceNil];
 97413  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2configureTransport }; } $f._key = _key; $f._r$1 = _r$1; $f.connPool = connPool; $f.err = err; $f.m = m; $f.t1 = t1; $f.t2 = t2; $f.upgradeFn = upgradeFn; $f.x$4 = x$4; $f.x$5 = x$5; $f.$s = $s; $f.$r = $r; return $f;
 97414  	};
 97415  	http2registerHTTPSProtocol = function(t, rt) {
 97416  		var err, rt, t, $s, $deferred, $r;
 97417  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; err = $f.err; rt = $f.rt; t = $f.t; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
 97418  		err = [err];
 97419  		err[0] = $ifaceNil;
 97420  		$deferred.push([(function(err) { return function $b() {
 97421  			var _r$1, e, $s, $r;
 97422  			/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; e = $f.e; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 97423  			e = $recover();
 97424  			/* */ if (!($interfaceIsEqual(e, $ifaceNil))) { $s = 1; continue; }
 97425  			/* */ $s = 2; continue;
 97426  			/* if (!($interfaceIsEqual(e, $ifaceNil))) { */ case 1:
 97427  				_r$1 = fmt.Errorf("%v", new sliceType([e])); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 97428  				err[0] = _r$1;
 97429  			/* } */ case 2:
 97430  			$s = -1; return;
 97431  			/* */ } return; } if ($f === undefined) { $f = { $blk: $b }; } $f._r$1 = _r$1; $f.e = e; $f.$s = $s; $f.$r = $r; return $f;
 97432  		}; })(err), []]);
 97433  		$r = t.RegisterProtocol("https", rt); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 97434  		err[0] = $ifaceNil;
 97435  		$s = -1; return err[0];
 97436  		/* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if (!$curGoroutine.asleep) { return  err[0]; } if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: http2registerHTTPSProtocol }; } $f.err = err; $f.rt = rt; $f.t = t; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
 97437  	};
 97438  	http2noDialH2RoundTripper.ptr.prototype.RoundTrip = function(req) {
 97439  		var _r$1, _tuple, err, req, res, rt, $s, $r;
 97440  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; _tuple = $f._tuple; err = $f.err; req = $f.req; res = $f.res; rt = $f.rt; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 97441  		rt = this;
 97442  		_r$1 = rt.t.RoundTrip(req); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 97443  		_tuple = _r$1;
 97444  		res = _tuple[0];
 97445  		err = _tuple[1];
 97446  		if (http2isNoCachedConnError(err)) {
 97447  			$s = -1; return [ptrType$17.nil, $pkg.ErrSkipAltProtocol];
 97448  		}
 97449  		$s = -1; return [res, err];
 97450  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2noDialH2RoundTripper.ptr.prototype.RoundTrip }; } $f._r$1 = _r$1; $f._tuple = _tuple; $f.err = err; $f.req = req; $f.res = res; $f.rt = rt; $f.$s = $s; $f.$r = $r; return $f;
 97451  	};
 97452  	http2noDialH2RoundTripper.prototype.RoundTrip = function(req) { return this.$val.RoundTrip(req); };
 97453  	http2getDataBufferChunk = function(size) {
 97454  		var _r$1, i, size, x$4, $s, $r;
 97455  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; i = $f.i; size = $f.size; x$4 = $f.x$4; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 97456  		i = 0;
 97457  		while (true) {
 97458  			if (!(i < (http2dataChunkSizeClasses.$length - 1 >> 0))) { break; }
 97459  			if ((x$4 = (new $Int64(0, ((i < 0 || i >= http2dataChunkSizeClasses.$length) ? ($throwRuntimeError("index out of range"), undefined) : http2dataChunkSizeClasses.$array[http2dataChunkSizeClasses.$offset + i]))), (size.$high < x$4.$high || (size.$high === x$4.$high && size.$low <= x$4.$low)))) {
 97460  				break;
 97461  			}
 97462  			i = i + (1) >> 0;
 97463  		}
 97464  		_r$1 = ((i < 0 || i >= http2dataChunkPools.length) ? ($throwRuntimeError("index out of range"), undefined) : http2dataChunkPools[i]).Get(); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 97465  		$s = -1; return $assertType(_r$1, sliceType$3);
 97466  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2getDataBufferChunk }; } $f._r$1 = _r$1; $f.i = i; $f.size = size; $f.x$4 = x$4; $f.$s = $s; $f.$r = $r; return $f;
 97467  	};
 97468  	http2putDataBufferChunk = function(p) {
 97469  		var _i, _r$1, _ref, i, n, p, $s, $r;
 97470  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _i = $f._i; _r$1 = $f._r$1; _ref = $f._ref; i = $f.i; n = $f.n; p = $f.p; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 97471  		_ref = http2dataChunkSizeClasses;
 97472  		_i = 0;
 97473  		while (true) {
 97474  			if (!(_i < _ref.$length)) { break; }
 97475  			i = _i;
 97476  			n = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
 97477  			if (p.$length === n) {
 97478  				((i < 0 || i >= http2dataChunkPools.length) ? ($throwRuntimeError("index out of range"), undefined) : http2dataChunkPools[i]).Put(p);
 97479  				$s = -1; return;
 97480  			}
 97481  			_i++;
 97482  		}
 97483  		_r$1 = fmt.Sprintf("unexpected buffer len=%v", new sliceType([new $Int(p.$length)])); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 97484  		$panic(new $String(_r$1));
 97485  		$s = -1; return;
 97486  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2putDataBufferChunk }; } $f._i = _i; $f._r$1 = _r$1; $f._ref = _ref; $f.i = i; $f.n = n; $f.p = p; $f.$s = $s; $f.$r = $r; return $f;
 97487  	};
 97488  	http2dataBuffer.ptr.prototype.Read = function(p) {
 97489  		var b, end, n, ntotal, p, readFrom, x$4, x$5, x$6, $s, $r;
 97490  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; b = $f.b; end = $f.end; n = $f.n; ntotal = $f.ntotal; p = $f.p; readFrom = $f.readFrom; x$4 = $f.x$4; x$5 = $f.x$5; x$6 = $f.x$6; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 97491  		b = this;
 97492  		if (b.size === 0) {
 97493  			$s = -1; return [0, http2errReadEmpty];
 97494  		}
 97495  		ntotal = 0;
 97496  		/* while (true) { */ case 1:
 97497  			/* if (!(p.$length > 0 && b.size > 0)) { break; } */ if(!(p.$length > 0 && b.size > 0)) { $s = 2; continue; }
 97498  			readFrom = b.bytesFromFirstChunk();
 97499  			n = $copySlice(p, readFrom);
 97500  			p = $subslice(p, n);
 97501  			ntotal = ntotal + (n) >> 0;
 97502  			b.r = b.r + (n) >> 0;
 97503  			b.size = b.size - (n) >> 0;
 97504  			/* */ if (b.r === (x$4 = b.chunks, (0 >= x$4.$length ? ($throwRuntimeError("index out of range"), undefined) : x$4.$array[x$4.$offset + 0])).$length) { $s = 3; continue; }
 97505  			/* */ $s = 4; continue;
 97506  			/* if (b.r === (x$4 = b.chunks, (0 >= x$4.$length ? ($throwRuntimeError("index out of range"), undefined) : x$4.$array[x$4.$offset + 0])).$length) { */ case 3:
 97507  				$r = http2putDataBufferChunk((x$5 = b.chunks, (0 >= x$5.$length ? ($throwRuntimeError("index out of range"), undefined) : x$5.$array[x$5.$offset + 0]))); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 97508  				end = b.chunks.$length - 1 >> 0;
 97509  				$copySlice($subslice(b.chunks, 0, end), $subslice(b.chunks, 1));
 97510  				(x$6 = b.chunks, ((end < 0 || end >= x$6.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$6.$array[x$6.$offset + end] = sliceType$3.nil));
 97511  				b.chunks = $subslice(b.chunks, 0, end);
 97512  				b.r = 0;
 97513  			/* } */ case 4:
 97514  		/* } */ $s = 1; continue; case 2:
 97515  		$s = -1; return [ntotal, $ifaceNil];
 97516  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2dataBuffer.ptr.prototype.Read }; } $f.b = b; $f.end = end; $f.n = n; $f.ntotal = ntotal; $f.p = p; $f.readFrom = readFrom; $f.x$4 = x$4; $f.x$5 = x$5; $f.x$6 = x$6; $f.$s = $s; $f.$r = $r; return $f;
 97517  	};
 97518  	http2dataBuffer.prototype.Read = function(p) { return this.$val.Read(p); };
 97519  	http2dataBuffer.ptr.prototype.bytesFromFirstChunk = function() {
 97520  		var b, x$4, x$5;
 97521  		b = this;
 97522  		if (b.chunks.$length === 1) {
 97523  			return $subslice((x$4 = b.chunks, (0 >= x$4.$length ? ($throwRuntimeError("index out of range"), undefined) : x$4.$array[x$4.$offset + 0])), b.r, b.w);
 97524  		}
 97525  		return $subslice((x$5 = b.chunks, (0 >= x$5.$length ? ($throwRuntimeError("index out of range"), undefined) : x$5.$array[x$5.$offset + 0])), b.r);
 97526  	};
 97527  	http2dataBuffer.prototype.bytesFromFirstChunk = function() { return this.$val.bytesFromFirstChunk(); };
 97528  	http2dataBuffer.ptr.prototype.Len = function() {
 97529  		var b;
 97530  		b = this;
 97531  		return b.size;
 97532  	};
 97533  	http2dataBuffer.prototype.Len = function() { return this.$val.Len(); };
 97534  	http2dataBuffer.ptr.prototype.Write = function(p) {
 97535  		var _r$1, b, chunk, n, ntotal, p, want, x$4, x$5, x$6, $s, $r;
 97536  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; b = $f.b; chunk = $f.chunk; n = $f.n; ntotal = $f.ntotal; p = $f.p; want = $f.want; x$4 = $f.x$4; x$5 = $f.x$5; x$6 = $f.x$6; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 97537  		b = this;
 97538  		ntotal = p.$length;
 97539  		/* while (true) { */ case 1:
 97540  			/* if (!(p.$length > 0)) { break; } */ if(!(p.$length > 0)) { $s = 2; continue; }
 97541  			want = (new $Int64(0, p.$length));
 97542  			if ((x$4 = b.expected, (x$4.$high > want.$high || (x$4.$high === want.$high && x$4.$low > want.$low)))) {
 97543  				want = b.expected;
 97544  			}
 97545  			_r$1 = b.lastChunkOrAlloc(want); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 97546  			chunk = _r$1;
 97547  			n = $copySlice($subslice(chunk, b.w), p);
 97548  			p = $subslice(p, n);
 97549  			b.w = b.w + (n) >> 0;
 97550  			b.size = b.size + (n) >> 0;
 97551  			b.expected = (x$5 = b.expected, x$6 = (new $Int64(0, n)), new $Int64(x$5.$high - x$6.$high, x$5.$low - x$6.$low));
 97552  		/* } */ $s = 1; continue; case 2:
 97553  		$s = -1; return [ntotal, $ifaceNil];
 97554  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2dataBuffer.ptr.prototype.Write }; } $f._r$1 = _r$1; $f.b = b; $f.chunk = chunk; $f.n = n; $f.ntotal = ntotal; $f.p = p; $f.want = want; $f.x$4 = x$4; $f.x$5 = x$5; $f.x$6 = x$6; $f.$s = $s; $f.$r = $r; return $f;
 97555  	};
 97556  	http2dataBuffer.prototype.Write = function(p) { return this.$val.Write(p); };
 97557  	http2dataBuffer.ptr.prototype.lastChunkOrAlloc = function(want) {
 97558  		var _r$1, b, chunk, last, want, x$4, x$5, $s, $r;
 97559  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; b = $f.b; chunk = $f.chunk; last = $f.last; want = $f.want; x$4 = $f.x$4; x$5 = $f.x$5; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 97560  		b = this;
 97561  		if (!((b.chunks.$length === 0))) {
 97562  			last = (x$4 = b.chunks, x$5 = b.chunks.$length - 1 >> 0, ((x$5 < 0 || x$5 >= x$4.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$4.$array[x$4.$offset + x$5]));
 97563  			if (b.w < last.$length) {
 97564  				$s = -1; return last;
 97565  			}
 97566  		}
 97567  		_r$1 = http2getDataBufferChunk(want); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 97568  		chunk = _r$1;
 97569  		b.chunks = $append(b.chunks, chunk);
 97570  		b.w = 0;
 97571  		$s = -1; return chunk;
 97572  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2dataBuffer.ptr.prototype.lastChunkOrAlloc }; } $f._r$1 = _r$1; $f.b = b; $f.chunk = chunk; $f.last = last; $f.want = want; $f.x$4 = x$4; $f.x$5 = x$5; $f.$s = $s; $f.$r = $r; return $f;
 97573  	};
 97574  	http2dataBuffer.prototype.lastChunkOrAlloc = function(want) { return this.$val.lastChunkOrAlloc(want); };
 97575  	http2ErrCode.prototype.String = function() {
 97576  		var _entry, _r$1, _tuple, e, ok, s, $s, $r;
 97577  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _entry = $f._entry; _r$1 = $f._r$1; _tuple = $f._tuple; e = $f.e; ok = $f.ok; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 97578  		e = this.$val;
 97579  		_tuple = (_entry = http2errCodeName[http2ErrCode.keyFor(e)], _entry !== undefined ? [_entry.v, true] : ["", false]);
 97580  		s = _tuple[0];
 97581  		ok = _tuple[1];
 97582  		if (ok) {
 97583  			$s = -1; return s;
 97584  		}
 97585  		_r$1 = fmt.Sprintf("unknown error code 0x%x", new sliceType([new $Uint32(((e >>> 0)))])); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 97586  		$s = -1; return _r$1;
 97587  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2ErrCode.prototype.String }; } $f._entry = _entry; $f._r$1 = _r$1; $f._tuple = _tuple; $f.e = e; $f.ok = ok; $f.s = s; $f.$s = $s; $f.$r = $r; return $f;
 97588  	};
 97589  	$ptrType(http2ErrCode).prototype.String = function() { return new http2ErrCode(this.$get()).String(); };
 97590  	http2ConnectionError.prototype.Error = function() {
 97591  		var _r$1, e, $s, $r;
 97592  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; e = $f.e; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 97593  		e = this.$val;
 97594  		_r$1 = fmt.Sprintf("connection error: %s", new sliceType([new http2ErrCode(((e >>> 0)))])); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 97595  		$s = -1; return _r$1;
 97596  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2ConnectionError.prototype.Error }; } $f._r$1 = _r$1; $f.e = e; $f.$s = $s; $f.$r = $r; return $f;
 97597  	};
 97598  	$ptrType(http2ConnectionError).prototype.Error = function() { return new http2ConnectionError(this.$get()).Error(); };
 97599  	http2streamError = function(id, code) {
 97600  		var code, id;
 97601  		return new http2StreamError.ptr(id, code, $ifaceNil);
 97602  	};
 97603  	http2StreamError.ptr.prototype.Error = function() {
 97604  		var _r$1, _r$2, e, $s, $r;
 97605  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; _r$2 = $f._r$2; e = $f.e; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 97606  		e = this;
 97607  		/* */ if (!($interfaceIsEqual(e.Cause, $ifaceNil))) { $s = 1; continue; }
 97608  		/* */ $s = 2; continue;
 97609  		/* if (!($interfaceIsEqual(e.Cause, $ifaceNil))) { */ case 1:
 97610  			_r$1 = fmt.Sprintf("stream error: stream ID %d; %v; %v", new sliceType([new $Uint32(e.StreamID), new http2ErrCode(e.Code), e.Cause])); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 97611  			$s = -1; return _r$1;
 97612  		/* } */ case 2:
 97613  		_r$2 = fmt.Sprintf("stream error: stream ID %d; %v", new sliceType([new $Uint32(e.StreamID), new http2ErrCode(e.Code)])); /* */ $s = 4; case 4: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 97614  		$s = -1; return _r$2;
 97615  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2StreamError.ptr.prototype.Error }; } $f._r$1 = _r$1; $f._r$2 = _r$2; $f.e = e; $f.$s = $s; $f.$r = $r; return $f;
 97616  	};
 97617  	http2StreamError.prototype.Error = function() { return this.$val.Error(); };
 97618  	http2goAwayFlowError.ptr.prototype.Error = function() {
 97619  		return "connection exceeded flow control window size";
 97620  	};
 97621  	http2goAwayFlowError.prototype.Error = function() { return this.$val.Error(); };
 97622  	http2connError.ptr.prototype.Error = function() {
 97623  		var _r$1, e, $s, $r;
 97624  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; e = $f.e; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 97625  		e = this;
 97626  		_r$1 = fmt.Sprintf("http2: connection error: %v: %v", new sliceType([new http2ErrCode(e.Code), new $String(e.Reason)])); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 97627  		$s = -1; return _r$1;
 97628  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2connError.ptr.prototype.Error }; } $f._r$1 = _r$1; $f.e = e; $f.$s = $s; $f.$r = $r; return $f;
 97629  	};
 97630  	http2connError.prototype.Error = function() { return this.$val.Error(); };
 97631  	http2pseudoHeaderError.prototype.Error = function() {
 97632  		var _r$1, e, $s, $r;
 97633  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; e = $f.e; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 97634  		e = this.$val;
 97635  		_r$1 = fmt.Sprintf("invalid pseudo-header %q", new sliceType([new $String((e))])); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 97636  		$s = -1; return _r$1;
 97637  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2pseudoHeaderError.prototype.Error }; } $f._r$1 = _r$1; $f.e = e; $f.$s = $s; $f.$r = $r; return $f;
 97638  	};
 97639  	$ptrType(http2pseudoHeaderError).prototype.Error = function() { return new http2pseudoHeaderError(this.$get()).Error(); };
 97640  	http2duplicatePseudoHeaderError.prototype.Error = function() {
 97641  		var _r$1, e, $s, $r;
 97642  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; e = $f.e; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 97643  		e = this.$val;
 97644  		_r$1 = fmt.Sprintf("duplicate pseudo-header %q", new sliceType([new $String((e))])); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 97645  		$s = -1; return _r$1;
 97646  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2duplicatePseudoHeaderError.prototype.Error }; } $f._r$1 = _r$1; $f.e = e; $f.$s = $s; $f.$r = $r; return $f;
 97647  	};
 97648  	$ptrType(http2duplicatePseudoHeaderError).prototype.Error = function() { return new http2duplicatePseudoHeaderError(this.$get()).Error(); };
 97649  	http2headerFieldNameError.prototype.Error = function() {
 97650  		var _r$1, e, $s, $r;
 97651  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; e = $f.e; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 97652  		e = this.$val;
 97653  		_r$1 = fmt.Sprintf("invalid header field name %q", new sliceType([new $String((e))])); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 97654  		$s = -1; return _r$1;
 97655  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2headerFieldNameError.prototype.Error }; } $f._r$1 = _r$1; $f.e = e; $f.$s = $s; $f.$r = $r; return $f;
 97656  	};
 97657  	$ptrType(http2headerFieldNameError).prototype.Error = function() { return new http2headerFieldNameError(this.$get()).Error(); };
 97658  	http2headerFieldValueError.prototype.Error = function() {
 97659  		var _r$1, e, $s, $r;
 97660  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; e = $f.e; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 97661  		e = this.$val;
 97662  		_r$1 = fmt.Sprintf("invalid header field value %q", new sliceType([new $String((e))])); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 97663  		$s = -1; return _r$1;
 97664  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2headerFieldValueError.prototype.Error }; } $f._r$1 = _r$1; $f.e = e; $f.$s = $s; $f.$r = $r; return $f;
 97665  	};
 97666  	$ptrType(http2headerFieldValueError).prototype.Error = function() { return new http2headerFieldValueError(this.$get()).Error(); };
 97667  	http2flow.ptr.prototype.setConnFlow = function(cf) {
 97668  		var cf, f;
 97669  		f = this;
 97670  		f.conn = cf;
 97671  	};
 97672  	http2flow.prototype.setConnFlow = function(cf) { return this.$val.setConnFlow(cf); };
 97673  	http2flow.ptr.prototype.available = function() {
 97674  		var f, n;
 97675  		f = this;
 97676  		n = f.n;
 97677  		if (!(f.conn === ptrType$32.nil) && f.conn.n < n) {
 97678  			n = f.conn.n;
 97679  		}
 97680  		return n;
 97681  	};
 97682  	http2flow.prototype.available = function() { return this.$val.available(); };
 97683  	http2flow.ptr.prototype.take = function(n) {
 97684  		var f, n;
 97685  		f = this;
 97686  		if (n > f.available()) {
 97687  			$panic(new $String("internal error: took too much"));
 97688  		}
 97689  		f.n = f.n - (n) >> 0;
 97690  		if (!(f.conn === ptrType$32.nil)) {
 97691  			f.conn.n = f.conn.n - (n) >> 0;
 97692  		}
 97693  	};
 97694  	http2flow.prototype.take = function(n) { return this.$val.take(n); };
 97695  	http2flow.ptr.prototype.add = function(n) {
 97696  		var f, n, remain;
 97697  		f = this;
 97698  		remain = 2147483647 - f.n >> 0;
 97699  		if (n > remain) {
 97700  			return false;
 97701  		}
 97702  		f.n = f.n + (n) >> 0;
 97703  		return true;
 97704  	};
 97705  	http2flow.prototype.add = function(n) { return this.$val.add(n); };
 97706  	http2FrameType.prototype.String = function() {
 97707  		var _entry, _r$1, _tuple, ok, s, t, $s, $r;
 97708  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _entry = $f._entry; _r$1 = $f._r$1; _tuple = $f._tuple; ok = $f.ok; s = $f.s; t = $f.t; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 97709  		t = this.$val;
 97710  		_tuple = (_entry = http2frameName[http2FrameType.keyFor(t)], _entry !== undefined ? [_entry.v, true] : ["", false]);
 97711  		s = _tuple[0];
 97712  		ok = _tuple[1];
 97713  		if (ok) {
 97714  			$s = -1; return s;
 97715  		}
 97716  		_r$1 = fmt.Sprintf("UNKNOWN_FRAME_TYPE_%d", new sliceType([new $Uint8(((t << 24 >>> 24)))])); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 97717  		$s = -1; return _r$1;
 97718  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2FrameType.prototype.String }; } $f._entry = _entry; $f._r$1 = _r$1; $f._tuple = _tuple; $f.ok = ok; $f.s = s; $f.t = t; $f.$s = $s; $f.$r = $r; return $f;
 97719  	};
 97720  	$ptrType(http2FrameType).prototype.String = function() { return new http2FrameType(this.$get()).String(); };
 97721  	http2Flags.prototype.Has = function(v) {
 97722  		var f, v;
 97723  		f = this.$val;
 97724  		return (((f & v) >>> 0)) === v;
 97725  	};
 97726  	$ptrType(http2Flags).prototype.Has = function(v) { return new http2Flags(this.$get()).Has(v); };
 97727  	http2typeFrameParser = function(t) {
 97728  		var _entry, f, t;
 97729  		f = (_entry = http2frameParsers[http2FrameType.keyFor(t)], _entry !== undefined ? _entry.v : $throwNilPointerError);
 97730  		if (!(f === $throwNilPointerError)) {
 97731  			return f;
 97732  		}
 97733  		return http2parseUnknownFrame;
 97734  	};
 97735  	http2FrameHeader.ptr.prototype.Header = function() {
 97736  		var h;
 97737  		h = this;
 97738  		return h;
 97739  	};
 97740  	http2FrameHeader.prototype.Header = function() { return this.$val.Header(); };
 97741  	http2FrameHeader.ptr.prototype.String = function() {
 97742  		var buf, h, $s, $r;
 97743  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; buf = $f.buf; h = $f.h; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 97744  		buf = [buf];
 97745  		h = this;
 97746  		buf[0] = new bytes.Buffer.ptr(sliceType$3.nil, 0, arrayType.zero(), 0);
 97747  		buf[0].WriteString("[FrameHeader ");
 97748  		$r = $clone(h, http2FrameHeader).writeDebug(buf[0]); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 97749  		buf[0].WriteByte(93);
 97750  		$s = -1; return buf[0].String();
 97751  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2FrameHeader.ptr.prototype.String }; } $f.buf = buf; $f.h = h; $f.$s = $s; $f.$r = $r; return $f;
 97752  	};
 97753  	http2FrameHeader.prototype.String = function() { return this.$val.String(); };
 97754  	http2FrameHeader.ptr.prototype.writeDebug = function(buf) {
 97755  		var _entry, _entry$1, _r$1, _r$2, _r$3, _r$4, _r$5, buf, h, i, name, set, y, y$1, y$2, $s, $r;
 97756  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _entry = $f._entry; _entry$1 = $f._entry$1; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; buf = $f.buf; h = $f.h; i = $f.i; name = $f.name; set = $f.set; y = $f.y; y$1 = $f.y$1; y$2 = $f.y$2; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 97757  		h = this;
 97758  		_r$1 = new http2FrameType(h.Type).String(); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 97759  		_r$2 = buf.WriteString(_r$1); /* */ $s = 2; case 2: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 97760  		_r$2;
 97761  		/* */ if (!((h.Flags === 0))) { $s = 3; continue; }
 97762  		/* */ $s = 4; continue;
 97763  		/* if (!((h.Flags === 0))) { */ case 3:
 97764  			buf.WriteString(" flags=");
 97765  			set = 0;
 97766  			i = 0;
 97767  			/* while (true) { */ case 5:
 97768  				/* if (!(i < 8)) { break; } */ if(!(i < 8)) { $s = 6; continue; }
 97769  				/* */ if (((h.Flags & (((y = i, y < 32 ? (1 << y) : 0) << 24 >>> 24))) >>> 0) === 0) { $s = 7; continue; }
 97770  				/* */ $s = 8; continue;
 97771  				/* if (((h.Flags & (((y = i, y < 32 ? (1 << y) : 0) << 24 >>> 24))) >>> 0) === 0) { */ case 7:
 97772  					i = i + (1) << 24 >>> 24;
 97773  					/* continue; */ $s = 5; continue;
 97774  				/* } */ case 8:
 97775  				set = set + (1) >> 0;
 97776  				if (set > 1) {
 97777  					buf.WriteByte(124);
 97778  				}
 97779  				name = (_entry = (_entry$1 = http2flagName[http2FrameType.keyFor(h.Type)], _entry$1 !== undefined ? _entry$1.v : false)[http2Flags.keyFor((((y$1 = i, y$1 < 32 ? (1 << y$1) : 0) << 24 >>> 24)))], _entry !== undefined ? _entry.v : "");
 97780  				/* */ if (!(name === "")) { $s = 9; continue; }
 97781  				/* */ $s = 10; continue;
 97782  				/* if (!(name === "")) { */ case 9:
 97783  					buf.WriteString(name);
 97784  					$s = 11; continue;
 97785  				/* } else { */ case 10:
 97786  					_r$3 = fmt.Fprintf(buf, "0x%x", new sliceType([new $Int(((y$2 = i, y$2 < 32 ? (1 << y$2) : 0) >> 0))])); /* */ $s = 12; case 12: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 97787  					_r$3;
 97788  				/* } */ case 11:
 97789  				i = i + (1) << 24 >>> 24;
 97790  			/* } */ $s = 5; continue; case 6:
 97791  		/* } */ case 4:
 97792  		/* */ if (!((h.StreamID === 0))) { $s = 13; continue; }
 97793  		/* */ $s = 14; continue;
 97794  		/* if (!((h.StreamID === 0))) { */ case 13:
 97795  			_r$4 = fmt.Fprintf(buf, " stream=%d", new sliceType([new $Uint32(h.StreamID)])); /* */ $s = 15; case 15: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 97796  			_r$4;
 97797  		/* } */ case 14:
 97798  		_r$5 = fmt.Fprintf(buf, " len=%d", new sliceType([new $Uint32(h.Length)])); /* */ $s = 16; case 16: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
 97799  		_r$5;
 97800  		$s = -1; return;
 97801  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2FrameHeader.ptr.prototype.writeDebug }; } $f._entry = _entry; $f._entry$1 = _entry$1; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f.buf = buf; $f.h = h; $f.i = i; $f.name = name; $f.set = set; $f.y = y; $f.y$1 = y$1; $f.y$2 = y$2; $f.$s = $s; $f.$r = $r; return $f;
 97802  	};
 97803  	http2FrameHeader.prototype.writeDebug = function(buf) { return this.$val.writeDebug(buf); };
 97804  	http2FrameHeader.ptr.prototype.checkValid = function() {
 97805  		var h;
 97806  		h = this;
 97807  		if (!h.valid) {
 97808  			$panic(new $String("Frame accessor called on non-owned Frame"));
 97809  		}
 97810  	};
 97811  	http2FrameHeader.prototype.checkValid = function() { return this.$val.checkValid(); };
 97812  	http2FrameHeader.ptr.prototype.invalidate = function() {
 97813  		var h;
 97814  		h = this;
 97815  		h.valid = false;
 97816  	};
 97817  	http2FrameHeader.prototype.invalidate = function() { return this.$val.invalidate(); };
 97818  	http2readFrameHeader = function(buf, r) {
 97819  		var _r$1, _tuple, buf, err, r, $s, $r;
 97820  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; _tuple = $f._tuple; buf = $f.buf; err = $f.err; r = $f.r; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 97821  		_r$1 = io.ReadFull(r, $subslice(buf, 0, 9)); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 97822  		_tuple = _r$1;
 97823  		err = _tuple[1];
 97824  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 97825  			$s = -1; return [new http2FrameHeader.ptr(false, 0, 0, 0, 0), err];
 97826  		}
 97827  		$s = -1; return [new http2FrameHeader.ptr(true, (((3 >= buf.$length ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + 3]) << 24 >>> 24)), (((4 >= buf.$length ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + 4]) << 24 >>> 24)), ((((((((0 >= buf.$length ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + 0]) >>> 0)) << 16 >>> 0) | ((((1 >= buf.$length ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + 1]) >>> 0)) << 8 >>> 0)) >>> 0) | (((2 >= buf.$length ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + 2]) >>> 0))) >>> 0), ($clone(binary.BigEndian, binary.bigEndian).Uint32($subslice(buf, 5)) & 2147483647) >>> 0), $ifaceNil];
 97828  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2readFrameHeader }; } $f._r$1 = _r$1; $f._tuple = _tuple; $f.buf = buf; $f.err = err; $f.r = r; $f.$s = $s; $f.$r = $r; return $f;
 97829  	};
 97830  	http2Framer.ptr.prototype.maxHeaderListSize = function() {
 97831  		var fr;
 97832  		fr = this;
 97833  		if (fr.MaxHeaderListSize === 0) {
 97834  			return 16777216;
 97835  		}
 97836  		return fr.MaxHeaderListSize;
 97837  	};
 97838  	http2Framer.prototype.maxHeaderListSize = function() { return this.$val.maxHeaderListSize(); };
 97839  	http2Framer.ptr.prototype.startWrite = function(ftype, flags, streamID) {
 97840  		var f, flags, ftype, streamID;
 97841  		f = this;
 97842  		f.wbuf = $append($subslice(f.wbuf, 0, 0), 0, 0, 0, ((ftype << 24 >>> 24)), ((flags << 24 >>> 24)), (((streamID >>> 24 >>> 0) << 24 >>> 24)), (((streamID >>> 16 >>> 0) << 24 >>> 24)), (((streamID >>> 8 >>> 0) << 24 >>> 24)), ((streamID << 24 >>> 24)));
 97843  	};
 97844  	http2Framer.prototype.startWrite = function(ftype, flags, streamID) { return this.$val.startWrite(ftype, flags, streamID); };
 97845  	http2Framer.ptr.prototype.endWrite = function() {
 97846  		var _r$1, _tuple, err, f, length, n, $s, $r;
 97847  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; _tuple = $f._tuple; err = $f.err; f = $f.f; length = $f.length; n = $f.n; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 97848  		f = this;
 97849  		length = f.wbuf.$length - 9 >> 0;
 97850  		if (length >= 16777216) {
 97851  			$s = -1; return http2ErrFrameTooLarge;
 97852  		}
 97853  		$unused($append($subslice(f.wbuf, 0, 0), (((length >> 16 >> 0) << 24 >>> 24)), (((length >> 8 >> 0) << 24 >>> 24)), ((length << 24 >>> 24))));
 97854  		/* */ if (f.logWrites) { $s = 1; continue; }
 97855  		/* */ $s = 2; continue;
 97856  		/* if (f.logWrites) { */ case 1:
 97857  			$r = f.logWrite(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 97858  		/* } */ case 2:
 97859  		_r$1 = f.w.Write(f.wbuf); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 97860  		_tuple = _r$1;
 97861  		n = _tuple[0];
 97862  		err = _tuple[1];
 97863  		if ($interfaceIsEqual(err, $ifaceNil) && !((n === f.wbuf.$length))) {
 97864  			err = io.ErrShortWrite;
 97865  		}
 97866  		$s = -1; return err;
 97867  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2Framer.ptr.prototype.endWrite }; } $f._r$1 = _r$1; $f._tuple = _tuple; $f.err = err; $f.f = f; $f.length = length; $f.n = n; $f.$s = $s; $f.$r = $r; return $f;
 97868  	};
 97869  	http2Framer.prototype.endWrite = function() { return this.$val.endWrite(); };
 97870  	http2Framer.ptr.prototype.logWrite = function() {
 97871  		var _arg, _arg$1, _r$1, _r$2, _tuple, err, f, fr, $s, $r;
 97872  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _arg = $f._arg; _arg$1 = $f._arg$1; _r$1 = $f._r$1; _r$2 = $f._r$2; _tuple = $f._tuple; err = $f.err; f = $f.f; fr = $f.fr; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 97873  		f = this;
 97874  		if (f.debugFramer === ptrType$33.nil) {
 97875  			f.debugFramerBuf = new bytes.Buffer.ptr(sliceType$3.nil, 0, arrayType.zero(), 0);
 97876  			f.debugFramer = http2NewFramer($ifaceNil, f.debugFramerBuf);
 97877  			f.debugFramer.logReads = false;
 97878  			f.debugFramer.AllowIllegalReads = true;
 97879  		}
 97880  		f.debugFramerBuf.Write(f.wbuf);
 97881  		_r$1 = f.debugFramer.ReadFrame(); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 97882  		_tuple = _r$1;
 97883  		fr = _tuple[0];
 97884  		err = _tuple[1];
 97885  		/* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 2; continue; }
 97886  		/* */ $s = 3; continue;
 97887  		/* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 2:
 97888  			$r = f.debugWriteLoggerf("http2: Framer %p: failed to decode just-written frame", new sliceType([f])); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 97889  			$s = -1; return;
 97890  		/* } */ case 3:
 97891  		_arg = f;
 97892  		_r$2 = http2summarizeFrame(fr); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 97893  		_arg$1 = new $String(_r$2);
 97894  		$r = f.debugWriteLoggerf("http2: Framer %p: wrote %v", new sliceType([_arg, _arg$1])); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 97895  		$s = -1; return;
 97896  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2Framer.ptr.prototype.logWrite }; } $f._arg = _arg; $f._arg$1 = _arg$1; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._tuple = _tuple; $f.err = err; $f.f = f; $f.fr = fr; $f.$s = $s; $f.$r = $r; return $f;
 97897  	};
 97898  	http2Framer.prototype.logWrite = function() { return this.$val.logWrite(); };
 97899  	http2Framer.ptr.prototype.writeByte = function(v) {
 97900  		var f, v;
 97901  		f = this;
 97902  		f.wbuf = $append(f.wbuf, v);
 97903  	};
 97904  	http2Framer.prototype.writeByte = function(v) { return this.$val.writeByte(v); };
 97905  	http2Framer.ptr.prototype.writeBytes = function(v) {
 97906  		var f, v;
 97907  		f = this;
 97908  		f.wbuf = $appendSlice(f.wbuf, v);
 97909  	};
 97910  	http2Framer.prototype.writeBytes = function(v) { return this.$val.writeBytes(v); };
 97911  	http2Framer.ptr.prototype.writeUint16 = function(v) {
 97912  		var f, v;
 97913  		f = this;
 97914  		f.wbuf = $append(f.wbuf, (((v >>> 8 << 16 >>> 16) << 24 >>> 24)), ((v << 24 >>> 24)));
 97915  	};
 97916  	http2Framer.prototype.writeUint16 = function(v) { return this.$val.writeUint16(v); };
 97917  	http2Framer.ptr.prototype.writeUint32 = function(v) {
 97918  		var f, v;
 97919  		f = this;
 97920  		f.wbuf = $append(f.wbuf, (((v >>> 24 >>> 0) << 24 >>> 24)), (((v >>> 16 >>> 0) << 24 >>> 24)), (((v >>> 8 >>> 0) << 24 >>> 24)), ((v << 24 >>> 24)));
 97921  	};
 97922  	http2Framer.prototype.writeUint32 = function(v) { return this.$val.writeUint32(v); };
 97923  	http2Framer.ptr.prototype.SetReuseFrames = function() {
 97924  		var fr;
 97925  		fr = this;
 97926  		if (!(fr.frameCache === ptrType$34.nil)) {
 97927  			return;
 97928  		}
 97929  		fr.frameCache = new http2frameCache.ptr(new http2DataFrame.ptr(new http2FrameHeader.ptr(false, 0, 0, 0, 0), sliceType$3.nil));
 97930  	};
 97931  	http2Framer.prototype.SetReuseFrames = function() { return this.$val.SetReuseFrames(); };
 97932  	http2frameCache.ptr.prototype.getDataFrame = function() {
 97933  		var fc;
 97934  		fc = this;
 97935  		if (fc === ptrType$34.nil) {
 97936  			return new http2DataFrame.ptr(new http2FrameHeader.ptr(false, 0, 0, 0, 0), sliceType$3.nil);
 97937  		}
 97938  		return fc.dataFrame;
 97939  	};
 97940  	http2frameCache.prototype.getDataFrame = function() { return this.$val.getDataFrame(); };
 97941  	http2NewFramer = function(w, r) {
 97942  		var fr, r, w;
 97943  		fr = new http2Framer.ptr(r, $ifaceNil, $ifaceNil, 0, 0, arrayType$3.zero(), $throwNilPointerError, sliceType$3.nil, 0, w, sliceType$3.nil, false, false, ptrType$35.nil, 0, http2logFrameReads, http2logFrameWrites, ptrType$33.nil, ptrType$36.nil, log.Printf, log.Printf, ptrType$34.nil);
 97944  		fr.getReadBuf = (function(size) {
 97945  			var size;
 97946  			if (fr.readBuf.$capacity >= ((size >> 0))) {
 97947  				return $subslice(fr.readBuf, 0, size);
 97948  			}
 97949  			fr.readBuf = $makeSlice(sliceType$3, size);
 97950  			return fr.readBuf;
 97951  		});
 97952  		fr.SetMaxReadFrameSize(16777215);
 97953  		return fr;
 97954  	};
 97955  	http2Framer.ptr.prototype.SetMaxReadFrameSize = function(v) {
 97956  		var fr, v;
 97957  		fr = this;
 97958  		if (v > 16777215) {
 97959  			v = 16777215;
 97960  		}
 97961  		fr.maxReadSize = v;
 97962  	};
 97963  	http2Framer.prototype.SetMaxReadFrameSize = function(v) { return this.$val.SetMaxReadFrameSize(v); };
 97964  	http2Framer.ptr.prototype.ErrorDetail = function() {
 97965  		var fr;
 97966  		fr = this;
 97967  		return fr.errDetail;
 97968  	};
 97969  	http2Framer.prototype.ErrorDetail = function() { return this.$val.ErrorDetail(); };
 97970  	http2terminalReadFrameError = function(err) {
 97971  		var _tuple, err, ok;
 97972  		_tuple = $assertType(err, http2StreamError, true);
 97973  		ok = _tuple[1];
 97974  		if (ok) {
 97975  			return false;
 97976  		}
 97977  		return !($interfaceIsEqual(err, $ifaceNil));
 97978  	};
 97979  	http2Framer.ptr.prototype.ReadFrame = function() {
 97980  		var _arg, _arg$1, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _returncast, _tuple, _tuple$1, _tuple$2, _tuple$3, ce, err, err$1, err$2, f, fh, fr, ok, payload, $s, $r;
 97981  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _arg = $f._arg; _arg$1 = $f._arg$1; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _returncast = $f._returncast; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; ce = $f.ce; err = $f.err; err$1 = $f.err$1; err$2 = $f.err$2; f = $f.f; fh = $f.fh; fr = $f.fr; ok = $f.ok; payload = $f.payload; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 97982  		fr = this;
 97983  		fr.errDetail = $ifaceNil;
 97984  		/* */ if (!($interfaceIsEqual(fr.lastFrame, $ifaceNil))) { $s = 1; continue; }
 97985  		/* */ $s = 2; continue;
 97986  		/* if (!($interfaceIsEqual(fr.lastFrame, $ifaceNil))) { */ case 1:
 97987  			$r = fr.lastFrame.invalidate(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 97988  		/* } */ case 2:
 97989  		_r$1 = http2readFrameHeader(new sliceType$3(fr.headerBuf), fr.r); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 97990  		_tuple = _r$1;
 97991  		fh = $clone(_tuple[0], http2FrameHeader);
 97992  		err = _tuple[1];
 97993  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 97994  			$s = -1; return [$ifaceNil, err];
 97995  		}
 97996  		if (fh.Length > fr.maxReadSize) {
 97997  			$s = -1; return [$ifaceNil, http2ErrFrameTooLarge];
 97998  		}
 97999  		_r$2 = fr.getReadBuf(fh.Length); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 98000  		payload = _r$2;
 98001  		_r$3 = io.ReadFull(fr.r, payload); /* */ $s = 6; case 6: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 98002  		_tuple$1 = _r$3;
 98003  		err$1 = _tuple$1[1];
 98004  		if (!($interfaceIsEqual(err$1, $ifaceNil))) {
 98005  			$s = -1; return [$ifaceNil, err$1];
 98006  		}
 98007  		_r$4 = http2typeFrameParser(fh.Type)(fr.frameCache, $clone(fh, http2FrameHeader), payload); /* */ $s = 7; case 7: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 98008  		_tuple$2 = _r$4;
 98009  		f = _tuple$2[0];
 98010  		err = _tuple$2[1];
 98011  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 98012  			_tuple$3 = $assertType(err, http2connError, true);
 98013  			ce = $clone(_tuple$3[0], http2connError);
 98014  			ok = _tuple$3[1];
 98015  			if (ok) {
 98016  				$s = -1; return [$ifaceNil, fr.connError(ce.Code, ce.Reason)];
 98017  			}
 98018  			$s = -1; return [$ifaceNil, err];
 98019  		}
 98020  		_r$5 = fr.checkFrameOrder(f); /* */ $s = 8; case 8: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
 98021  		err$2 = _r$5;
 98022  		if (!($interfaceIsEqual(err$2, $ifaceNil))) {
 98023  			$s = -1; return [$ifaceNil, err$2];
 98024  		}
 98025  		/* */ if (fr.logReads) { $s = 9; continue; }
 98026  		/* */ $s = 10; continue;
 98027  		/* if (fr.logReads) { */ case 9:
 98028  			_arg = fr;
 98029  			_r$6 = http2summarizeFrame(f); /* */ $s = 11; case 11: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
 98030  			_arg$1 = new $String(_r$6);
 98031  			$r = fr.debugReadLoggerf("http2: Framer %p: read %v", new sliceType([_arg, _arg$1])); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 98032  		/* } */ case 10:
 98033  		/* */ if ((fh.Type === 1) && !(fr.ReadMetaHeaders === ptrType$35.nil)) { $s = 13; continue; }
 98034  		/* */ $s = 14; continue;
 98035  		/* if ((fh.Type === 1) && !(fr.ReadMetaHeaders === ptrType$35.nil)) { */ case 13:
 98036  			_r$7 = fr.readMetaFrame($assertType(f, ptrType$37)); /* */ $s = 15; case 15: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
 98037  			_returncast = _r$7;
 98038  			$s = -1; return [_returncast[0], _returncast[1]];
 98039  		/* } */ case 14:
 98040  		$s = -1; return [f, $ifaceNil];
 98041  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2Framer.ptr.prototype.ReadFrame }; } $f._arg = _arg; $f._arg$1 = _arg$1; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._returncast = _returncast; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f.ce = ce; $f.err = err; $f.err$1 = err$1; $f.err$2 = err$2; $f.f = f; $f.fh = fh; $f.fr = fr; $f.ok = ok; $f.payload = payload; $f.$s = $s; $f.$r = $r; return $f;
 98042  	};
 98043  	http2Framer.prototype.ReadFrame = function() { return this.$val.ReadFrame(); };
 98044  	http2Framer.ptr.prototype.connError = function(code, reason) {
 98045  		var code, fr, reason;
 98046  		fr = this;
 98047  		fr.errDetail = errors.New(reason);
 98048  		return new http2ConnectionError(((code >>> 0)));
 98049  	};
 98050  	http2Framer.prototype.connError = function(code, reason) { return this.$val.connError(code, reason); };
 98051  	http2Framer.ptr.prototype.checkFrameOrder = function(f) {
 98052  		var _1, _arg, _arg$1, _arg$2, _arg$3, _arg$4, _arg$5, _arg$6, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, f, fh, fr, last, $s, $r;
 98053  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _arg = $f._arg; _arg$1 = $f._arg$1; _arg$2 = $f._arg$2; _arg$3 = $f._arg$3; _arg$4 = $f._arg$4; _arg$5 = $f._arg$5; _arg$6 = $f._arg$6; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _r$8 = $f._r$8; f = $f.f; fh = $f.fh; fr = $f.fr; last = $f.last; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 98054  		fr = this;
 98055  		last = fr.lastFrame;
 98056  		fr.lastFrame = f;
 98057  		if (fr.AllowIllegalReads) {
 98058  			$s = -1; return $ifaceNil;
 98059  		}
 98060  		_r$1 = f.Header(); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 98061  		fh = $clone(_r$1, http2FrameHeader);
 98062  		/* */ if (!((fr.lastHeaderStream === 0))) { $s = 2; continue; }
 98063  		/* */ if (fh.Type === 9) { $s = 3; continue; }
 98064  		/* */ $s = 4; continue;
 98065  		/* if (!((fr.lastHeaderStream === 0))) { */ case 2:
 98066  			/* */ if (!((fh.Type === 9))) { $s = 5; continue; }
 98067  			/* */ $s = 6; continue;
 98068  			/* if (!((fh.Type === 9))) { */ case 5:
 98069  				_arg = new http2FrameType(fh.Type);
 98070  				_arg$1 = new $Uint32(fh.StreamID);
 98071  				_r$2 = last.Header(); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 98072  				_arg$2 = new http2FrameType(_r$2.Type);
 98073  				_arg$3 = new $Uint32(fr.lastHeaderStream);
 98074  				_r$3 = fmt.Sprintf("got %s for stream %d; expected CONTINUATION following %s for stream %d", new sliceType([_arg, _arg$1, _arg$2, _arg$3])); /* */ $s = 8; case 8: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 98075  				_arg$4 = _r$3;
 98076  				_r$4 = fr.connError(1, _arg$4); /* */ $s = 9; case 9: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 98077  				$s = -1; return _r$4;
 98078  			/* } */ case 6:
 98079  			/* */ if (!((fh.StreamID === fr.lastHeaderStream))) { $s = 10; continue; }
 98080  			/* */ $s = 11; continue;
 98081  			/* if (!((fh.StreamID === fr.lastHeaderStream))) { */ case 10:
 98082  				_r$5 = fmt.Sprintf("got CONTINUATION for stream %d; expected stream %d", new sliceType([new $Uint32(fh.StreamID), new $Uint32(fr.lastHeaderStream)])); /* */ $s = 12; case 12: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
 98083  				_arg$5 = _r$5;
 98084  				_r$6 = fr.connError(1, _arg$5); /* */ $s = 13; case 13: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
 98085  				$s = -1; return _r$6;
 98086  			/* } */ case 11:
 98087  			$s = 4; continue;
 98088  		/* } else if (fh.Type === 9) { */ case 3:
 98089  			_r$7 = fmt.Sprintf("unexpected CONTINUATION for stream %d", new sliceType([new $Uint32(fh.StreamID)])); /* */ $s = 14; case 14: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
 98090  			_arg$6 = _r$7;
 98091  			_r$8 = fr.connError(1, _arg$6); /* */ $s = 15; case 15: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
 98092  			$s = -1; return _r$8;
 98093  		/* } */ case 4:
 98094  		_1 = fh.Type;
 98095  		if ((_1 === (1)) || (_1 === (9))) {
 98096  			if (new http2Flags(fh.Flags).Has(4)) {
 98097  				fr.lastHeaderStream = 0;
 98098  			} else {
 98099  				fr.lastHeaderStream = fh.StreamID;
 98100  			}
 98101  		}
 98102  		$s = -1; return $ifaceNil;
 98103  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2Framer.ptr.prototype.checkFrameOrder }; } $f._1 = _1; $f._arg = _arg; $f._arg$1 = _arg$1; $f._arg$2 = _arg$2; $f._arg$3 = _arg$3; $f._arg$4 = _arg$4; $f._arg$5 = _arg$5; $f._arg$6 = _arg$6; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._r$8 = _r$8; $f.f = f; $f.fh = fh; $f.fr = fr; $f.last = last; $f.$s = $s; $f.$r = $r; return $f;
 98104  	};
 98105  	http2Framer.prototype.checkFrameOrder = function(f) { return this.$val.checkFrameOrder(f); };
 98106  	http2DataFrame.ptr.prototype.StreamEnded = function() {
 98107  		var f;
 98108  		f = this;
 98109  		return new http2Flags(f.http2FrameHeader.Flags).Has(1);
 98110  	};
 98111  	http2DataFrame.prototype.StreamEnded = function() { return this.$val.StreamEnded(); };
 98112  	http2DataFrame.ptr.prototype.Data = function() {
 98113  		var f;
 98114  		f = this;
 98115  		f.http2FrameHeader.checkValid();
 98116  		return f.data;
 98117  	};
 98118  	http2DataFrame.prototype.Data = function() { return this.$val.Data(); };
 98119  	http2parseDataFrame = function(fc, fh, payload) {
 98120  		var _tuple, err, f, fc, fh, padSize, payload, x$4, x$5;
 98121  		if (fh.StreamID === 0) {
 98122  			return [$ifaceNil, (x$4 = new http2connError.ptr(1, "DATA frame with stream ID 0"), new x$4.constructor.elem(x$4))];
 98123  		}
 98124  		f = fc.getDataFrame();
 98125  		http2FrameHeader.copy(f.http2FrameHeader, fh);
 98126  		padSize = 0;
 98127  		if (new http2Flags(fh.Flags).Has(8)) {
 98128  			err = $ifaceNil;
 98129  			_tuple = http2readByte(payload);
 98130  			payload = _tuple[0];
 98131  			padSize = _tuple[1];
 98132  			err = _tuple[2];
 98133  			if (!($interfaceIsEqual(err, $ifaceNil))) {
 98134  				return [$ifaceNil, err];
 98135  			}
 98136  		}
 98137  		if (((padSize >> 0)) > payload.$length) {
 98138  			return [$ifaceNil, (x$5 = new http2connError.ptr(1, "pad size larger than data payload"), new x$5.constructor.elem(x$5))];
 98139  		}
 98140  		f.data = $subslice(payload, 0, (payload.$length - ((padSize >> 0)) >> 0));
 98141  		return [f, $ifaceNil];
 98142  	};
 98143  	http2validStreamIDOrZero = function(streamID) {
 98144  		var streamID;
 98145  		return ((streamID & 2147483648) >>> 0) === 0;
 98146  	};
 98147  	http2validStreamID = function(streamID) {
 98148  		var streamID;
 98149  		return !((streamID === 0)) && (((streamID & 2147483648) >>> 0) === 0);
 98150  	};
 98151  	http2Framer.ptr.prototype.WriteData = function(streamID, endStream, data) {
 98152  		var _r$1, data, endStream, f, streamID, $s, $r;
 98153  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; data = $f.data; endStream = $f.endStream; f = $f.f; streamID = $f.streamID; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 98154  		f = this;
 98155  		_r$1 = f.WriteDataPadded(streamID, endStream, data, sliceType$3.nil); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 98156  		$s = -1; return _r$1;
 98157  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2Framer.ptr.prototype.WriteData }; } $f._r$1 = _r$1; $f.data = data; $f.endStream = endStream; $f.f = f; $f.streamID = streamID; $f.$s = $s; $f.$r = $r; return $f;
 98158  	};
 98159  	http2Framer.prototype.WriteData = function(streamID, endStream, data) { return this.$val.WriteData(streamID, endStream, data); };
 98160  	http2Framer.ptr.prototype.WriteDataPadded = function(streamID, endStream, data, pad) {
 98161  		var _i, _r$1, _ref, b, data, endStream, f, flags, pad, streamID, $s, $r;
 98162  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _i = $f._i; _r$1 = $f._r$1; _ref = $f._ref; b = $f.b; data = $f.data; endStream = $f.endStream; f = $f.f; flags = $f.flags; pad = $f.pad; streamID = $f.streamID; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 98163  		f = this;
 98164  		if (!http2validStreamID(streamID) && !f.AllowIllegalWrites) {
 98165  			$s = -1; return http2errStreamID;
 98166  		}
 98167  		if (pad.$length > 0) {
 98168  			if (pad.$length > 255) {
 98169  				$s = -1; return http2errPadLength;
 98170  			}
 98171  			if (!f.AllowIllegalWrites) {
 98172  				_ref = pad;
 98173  				_i = 0;
 98174  				while (true) {
 98175  					if (!(_i < _ref.$length)) { break; }
 98176  					b = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
 98177  					if (!((b === 0))) {
 98178  						$s = -1; return http2errPadBytes;
 98179  					}
 98180  					_i++;
 98181  				}
 98182  			}
 98183  		}
 98184  		flags = 0;
 98185  		if (endStream) {
 98186  			flags = (flags | (1)) >>> 0;
 98187  		}
 98188  		if (!(pad === sliceType$3.nil)) {
 98189  			flags = (flags | (8)) >>> 0;
 98190  		}
 98191  		f.startWrite(0, flags, streamID);
 98192  		if (!(pad === sliceType$3.nil)) {
 98193  			f.wbuf = $append(f.wbuf, ((pad.$length << 24 >>> 24)));
 98194  		}
 98195  		f.wbuf = $appendSlice(f.wbuf, data);
 98196  		f.wbuf = $appendSlice(f.wbuf, pad);
 98197  		_r$1 = f.endWrite(); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 98198  		$s = -1; return _r$1;
 98199  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2Framer.ptr.prototype.WriteDataPadded }; } $f._i = _i; $f._r$1 = _r$1; $f._ref = _ref; $f.b = b; $f.data = data; $f.endStream = endStream; $f.f = f; $f.flags = flags; $f.pad = pad; $f.streamID = streamID; $f.$s = $s; $f.$r = $r; return $f;
 98200  	};
 98201  	http2Framer.prototype.WriteDataPadded = function(streamID, endStream, data, pad) { return this.$val.WriteDataPadded(streamID, endStream, data, pad); };
 98202  	http2parseSettingsFrame = function(param, fh, p) {
 98203  		var _r$1, _tuple, f, fh, ok, p, param, v;
 98204  		if (new http2Flags(fh.Flags).Has(1) && fh.Length > 0) {
 98205  			return [$ifaceNil, new http2ConnectionError(6)];
 98206  		}
 98207  		if (!((fh.StreamID === 0))) {
 98208  			return [$ifaceNil, new http2ConnectionError(1)];
 98209  		}
 98210  		if (!(((_r$1 = p.$length % 6, _r$1 === _r$1 ? _r$1 : $throwRuntimeError("integer divide by zero")) === 0))) {
 98211  			return [$ifaceNil, new http2ConnectionError(6)];
 98212  		}
 98213  		f = new http2SettingsFrame.ptr($clone(fh, http2FrameHeader), p);
 98214  		_tuple = f.Value(4);
 98215  		v = _tuple[0];
 98216  		ok = _tuple[1];
 98217  		if (ok && v > 2147483647) {
 98218  			return [$ifaceNil, new http2ConnectionError(3)];
 98219  		}
 98220  		return [f, $ifaceNil];
 98221  	};
 98222  	http2SettingsFrame.ptr.prototype.IsAck = function() {
 98223  		var f;
 98224  		f = this;
 98225  		return new http2Flags(f.http2FrameHeader.Flags).Has(1);
 98226  	};
 98227  	http2SettingsFrame.prototype.IsAck = function() { return this.$val.IsAck(); };
 98228  	http2SettingsFrame.ptr.prototype.Value = function(s) {
 98229  		var _tmp, _tmp$1, _tmp$2, _tmp$3, buf, f, ok, s, settingID, v;
 98230  		v = 0;
 98231  		ok = false;
 98232  		f = this;
 98233  		f.http2FrameHeader.checkValid();
 98234  		buf = f.p;
 98235  		while (true) {
 98236  			if (!(buf.$length > 0)) { break; }
 98237  			settingID = (($clone(binary.BigEndian, binary.bigEndian).Uint16($subslice(buf, 0, 2)) << 16 >>> 16));
 98238  			if (settingID === s) {
 98239  				_tmp = $clone(binary.BigEndian, binary.bigEndian).Uint32($subslice(buf, 2, 6));
 98240  				_tmp$1 = true;
 98241  				v = _tmp;
 98242  				ok = _tmp$1;
 98243  				return [v, ok];
 98244  			}
 98245  			buf = $subslice(buf, 6);
 98246  		}
 98247  		_tmp$2 = 0;
 98248  		_tmp$3 = false;
 98249  		v = _tmp$2;
 98250  		ok = _tmp$3;
 98251  		return [v, ok];
 98252  	};
 98253  	http2SettingsFrame.prototype.Value = function(s) { return this.$val.Value(s); };
 98254  	http2SettingsFrame.ptr.prototype.ForeachSetting = function(fn) {
 98255  		var _r$1, buf, err, f, fn, $s, $r;
 98256  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; buf = $f.buf; err = $f.err; f = $f.f; fn = $f.fn; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 98257  		f = this;
 98258  		f.http2FrameHeader.checkValid();
 98259  		buf = f.p;
 98260  		/* while (true) { */ case 1:
 98261  			/* if (!(buf.$length > 0)) { break; } */ if(!(buf.$length > 0)) { $s = 2; continue; }
 98262  			_r$1 = fn(new http2Setting.ptr((($clone(binary.BigEndian, binary.bigEndian).Uint16($subslice(buf, 0, 2)) << 16 >>> 16)), $clone(binary.BigEndian, binary.bigEndian).Uint32($subslice(buf, 2, 6)))); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 98263  			err = _r$1;
 98264  			if (!($interfaceIsEqual(err, $ifaceNil))) {
 98265  				$s = -1; return err;
 98266  			}
 98267  			buf = $subslice(buf, 6);
 98268  		/* } */ $s = 1; continue; case 2:
 98269  		$s = -1; return $ifaceNil;
 98270  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2SettingsFrame.ptr.prototype.ForeachSetting }; } $f._r$1 = _r$1; $f.buf = buf; $f.err = err; $f.f = f; $f.fn = fn; $f.$s = $s; $f.$r = $r; return $f;
 98271  	};
 98272  	http2SettingsFrame.prototype.ForeachSetting = function(fn) { return this.$val.ForeachSetting(fn); };
 98273  	http2Framer.ptr.prototype.WriteSettings = function(settings) {
 98274  		var _i, _r$1, _ref, f, s, settings, $s, $r;
 98275  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _i = $f._i; _r$1 = $f._r$1; _ref = $f._ref; f = $f.f; s = $f.s; settings = $f.settings; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 98276  		f = this;
 98277  		f.startWrite(4, 0, 0);
 98278  		_ref = settings;
 98279  		_i = 0;
 98280  		while (true) {
 98281  			if (!(_i < _ref.$length)) { break; }
 98282  			s = $clone(((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]), http2Setting);
 98283  			f.writeUint16(((s.ID << 16 >>> 16)));
 98284  			f.writeUint32(s.Val);
 98285  			_i++;
 98286  		}
 98287  		_r$1 = f.endWrite(); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 98288  		$s = -1; return _r$1;
 98289  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2Framer.ptr.prototype.WriteSettings }; } $f._i = _i; $f._r$1 = _r$1; $f._ref = _ref; $f.f = f; $f.s = s; $f.settings = settings; $f.$s = $s; $f.$r = $r; return $f;
 98290  	};
 98291  	http2Framer.prototype.WriteSettings = function(settings) { return this.$val.WriteSettings(settings); };
 98292  	http2Framer.ptr.prototype.WriteSettingsAck = function() {
 98293  		var _r$1, f, $s, $r;
 98294  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; f = $f.f; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 98295  		f = this;
 98296  		f.startWrite(4, 1, 0);
 98297  		_r$1 = f.endWrite(); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 98298  		$s = -1; return _r$1;
 98299  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2Framer.ptr.prototype.WriteSettingsAck }; } $f._r$1 = _r$1; $f.f = f; $f.$s = $s; $f.$r = $r; return $f;
 98300  	};
 98301  	http2Framer.prototype.WriteSettingsAck = function() { return this.$val.WriteSettingsAck(); };
 98302  	http2PingFrame.ptr.prototype.IsAck = function() {
 98303  		var f;
 98304  		f = this;
 98305  		return new http2Flags(f.http2FrameHeader.Flags).Has(1);
 98306  	};
 98307  	http2PingFrame.prototype.IsAck = function() { return this.$val.IsAck(); };
 98308  	http2parsePingFrame = function(param, fh, payload) {
 98309  		var f, fh, param, payload;
 98310  		if (!((payload.$length === 8))) {
 98311  			return [$ifaceNil, new http2ConnectionError(6)];
 98312  		}
 98313  		if (!((fh.StreamID === 0))) {
 98314  			return [$ifaceNil, new http2ConnectionError(1)];
 98315  		}
 98316  		f = new http2PingFrame.ptr($clone(fh, http2FrameHeader), arrayType$4.zero());
 98317  		$copySlice(new sliceType$3(f.Data), payload);
 98318  		return [f, $ifaceNil];
 98319  	};
 98320  	http2Framer.ptr.prototype.WritePing = function(ack, data) {
 98321  		var _r$1, ack, data, f, flags, $s, $r;
 98322  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; ack = $f.ack; data = $f.data; f = $f.f; flags = $f.flags; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 98323  		f = this;
 98324  		flags = 0;
 98325  		if (ack) {
 98326  			flags = 1;
 98327  		}
 98328  		f.startWrite(6, flags, 0);
 98329  		f.writeBytes(new sliceType$3(data));
 98330  		_r$1 = f.endWrite(); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 98331  		$s = -1; return _r$1;
 98332  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2Framer.ptr.prototype.WritePing }; } $f._r$1 = _r$1; $f.ack = ack; $f.data = data; $f.f = f; $f.flags = flags; $f.$s = $s; $f.$r = $r; return $f;
 98333  	};
 98334  	http2Framer.prototype.WritePing = function(ack, data) { return this.$val.WritePing(ack, data); };
 98335  	http2GoAwayFrame.ptr.prototype.DebugData = function() {
 98336  		var f;
 98337  		f = this;
 98338  		f.http2FrameHeader.checkValid();
 98339  		return f.debugData;
 98340  	};
 98341  	http2GoAwayFrame.prototype.DebugData = function() { return this.$val.DebugData(); };
 98342  	http2parseGoAwayFrame = function(param, fh, p) {
 98343  		var fh, p, param;
 98344  		if (!((fh.StreamID === 0))) {
 98345  			return [$ifaceNil, new http2ConnectionError(1)];
 98346  		}
 98347  		if (p.$length < 8) {
 98348  			return [$ifaceNil, new http2ConnectionError(6)];
 98349  		}
 98350  		return [new http2GoAwayFrame.ptr($clone(fh, http2FrameHeader), ($clone(binary.BigEndian, binary.bigEndian).Uint32($subslice(p, 0, 4)) & 2147483647) >>> 0, (($clone(binary.BigEndian, binary.bigEndian).Uint32($subslice(p, 4, 8)) >>> 0)), $subslice(p, 8)), $ifaceNil];
 98351  	};
 98352  	http2Framer.ptr.prototype.WriteGoAway = function(maxStreamID, code, debugData) {
 98353  		var _r$1, code, debugData, f, maxStreamID, $s, $r;
 98354  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; code = $f.code; debugData = $f.debugData; f = $f.f; maxStreamID = $f.maxStreamID; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 98355  		f = this;
 98356  		f.startWrite(7, 0, 0);
 98357  		f.writeUint32((maxStreamID & 2147483647) >>> 0);
 98358  		f.writeUint32(((code >>> 0)));
 98359  		f.writeBytes(debugData);
 98360  		_r$1 = f.endWrite(); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 98361  		$s = -1; return _r$1;
 98362  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2Framer.ptr.prototype.WriteGoAway }; } $f._r$1 = _r$1; $f.code = code; $f.debugData = debugData; $f.f = f; $f.maxStreamID = maxStreamID; $f.$s = $s; $f.$r = $r; return $f;
 98363  	};
 98364  	http2Framer.prototype.WriteGoAway = function(maxStreamID, code, debugData) { return this.$val.WriteGoAway(maxStreamID, code, debugData); };
 98365  	http2UnknownFrame.ptr.prototype.Payload = function() {
 98366  		var f;
 98367  		f = this;
 98368  		f.http2FrameHeader.checkValid();
 98369  		return f.p;
 98370  	};
 98371  	http2UnknownFrame.prototype.Payload = function() { return this.$val.Payload(); };
 98372  	http2parseUnknownFrame = function(param, fh, p) {
 98373  		var fh, p, param;
 98374  		return [new http2UnknownFrame.ptr($clone(fh, http2FrameHeader), p), $ifaceNil];
 98375  	};
 98376  	http2parseWindowUpdateFrame = function(param, fh, p) {
 98377  		var fh, inc, p, param, x$4;
 98378  		if (!((p.$length === 4))) {
 98379  			return [$ifaceNil, new http2ConnectionError(6)];
 98380  		}
 98381  		inc = ($clone(binary.BigEndian, binary.bigEndian).Uint32($subslice(p, 0, 4)) & 2147483647) >>> 0;
 98382  		if (inc === 0) {
 98383  			if (fh.StreamID === 0) {
 98384  				return [$ifaceNil, new http2ConnectionError(1)];
 98385  			}
 98386  			return [$ifaceNil, (x$4 = http2streamError(fh.StreamID, 1), new x$4.constructor.elem(x$4))];
 98387  		}
 98388  		return [new http2WindowUpdateFrame.ptr($clone(fh, http2FrameHeader), inc), $ifaceNil];
 98389  	};
 98390  	http2Framer.ptr.prototype.WriteWindowUpdate = function(streamID, incr) {
 98391  		var _r$1, f, incr, streamID, $s, $r;
 98392  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; f = $f.f; incr = $f.incr; streamID = $f.streamID; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 98393  		f = this;
 98394  		if ((incr < 1 || incr > 2147483647) && !f.AllowIllegalWrites) {
 98395  			$s = -1; return errors.New("illegal window increment value");
 98396  		}
 98397  		f.startWrite(8, 0, streamID);
 98398  		f.writeUint32(incr);
 98399  		_r$1 = f.endWrite(); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 98400  		$s = -1; return _r$1;
 98401  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2Framer.ptr.prototype.WriteWindowUpdate }; } $f._r$1 = _r$1; $f.f = f; $f.incr = incr; $f.streamID = streamID; $f.$s = $s; $f.$r = $r; return $f;
 98402  	};
 98403  	http2Framer.prototype.WriteWindowUpdate = function(streamID, incr) { return this.$val.WriteWindowUpdate(streamID, incr); };
 98404  	http2HeadersFrame.ptr.prototype.HeaderBlockFragment = function() {
 98405  		var f;
 98406  		f = this;
 98407  		f.http2FrameHeader.checkValid();
 98408  		return f.headerFragBuf;
 98409  	};
 98410  	http2HeadersFrame.prototype.HeaderBlockFragment = function() { return this.$val.HeaderBlockFragment(); };
 98411  	http2HeadersFrame.ptr.prototype.HeadersEnded = function() {
 98412  		var f;
 98413  		f = this;
 98414  		return new http2Flags(f.http2FrameHeader.Flags).Has(4);
 98415  	};
 98416  	http2HeadersFrame.prototype.HeadersEnded = function() { return this.$val.HeadersEnded(); };
 98417  	http2HeadersFrame.ptr.prototype.StreamEnded = function() {
 98418  		var f;
 98419  		f = this;
 98420  		return new http2Flags(f.http2FrameHeader.Flags).Has(1);
 98421  	};
 98422  	http2HeadersFrame.prototype.StreamEnded = function() { return this.$val.StreamEnded(); };
 98423  	http2HeadersFrame.ptr.prototype.HasPriority = function() {
 98424  		var f;
 98425  		f = this;
 98426  		return new http2Flags(f.http2FrameHeader.Flags).Has(32);
 98427  	};
 98428  	http2HeadersFrame.prototype.HasPriority = function() { return this.$val.HasPriority(); };
 98429  	http2parseHeadersFrame = function(param, fh, p) {
 98430  		var _, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, _tuple$1, _tuple$2, err, fh, hf, p, padLength, param, v, x$4, x$5;
 98431  		_ = $ifaceNil;
 98432  		err = $ifaceNil;
 98433  		hf = new http2HeadersFrame.ptr($clone(fh, http2FrameHeader), new http2PriorityParam.ptr(0, false, 0), sliceType$3.nil);
 98434  		if (fh.StreamID === 0) {
 98435  			_tmp = $ifaceNil;
 98436  			_tmp$1 = (x$4 = new http2connError.ptr(1, "HEADERS frame with stream ID 0"), new x$4.constructor.elem(x$4));
 98437  			_ = _tmp;
 98438  			err = _tmp$1;
 98439  			return [_, err];
 98440  		}
 98441  		padLength = 0;
 98442  		if (new http2Flags(fh.Flags).Has(8)) {
 98443  			_tuple = http2readByte(p);
 98444  			p = _tuple[0];
 98445  			padLength = _tuple[1];
 98446  			err = _tuple[2];
 98447  			if (!($interfaceIsEqual(err, $ifaceNil))) {
 98448  				return [_, err];
 98449  			}
 98450  		}
 98451  		if (new http2Flags(fh.Flags).Has(32)) {
 98452  			v = 0;
 98453  			_tuple$1 = http2readUint32(p);
 98454  			p = _tuple$1[0];
 98455  			v = _tuple$1[1];
 98456  			err = _tuple$1[2];
 98457  			if (!($interfaceIsEqual(err, $ifaceNil))) {
 98458  				_tmp$2 = $ifaceNil;
 98459  				_tmp$3 = err;
 98460  				_ = _tmp$2;
 98461  				err = _tmp$3;
 98462  				return [_, err];
 98463  			}
 98464  			hf.Priority.StreamDep = (v & 2147483647) >>> 0;
 98465  			hf.Priority.Exclusive = !((v === hf.Priority.StreamDep));
 98466  			_tuple$2 = http2readByte(p);
 98467  			p = _tuple$2[0];
 98468  			hf.Priority.Weight = _tuple$2[1];
 98469  			err = _tuple$2[2];
 98470  			if (!($interfaceIsEqual(err, $ifaceNil))) {
 98471  				_tmp$4 = $ifaceNil;
 98472  				_tmp$5 = err;
 98473  				_ = _tmp$4;
 98474  				err = _tmp$5;
 98475  				return [_, err];
 98476  			}
 98477  		}
 98478  		if ((p.$length - ((padLength >> 0)) >> 0) <= 0) {
 98479  			_tmp$6 = $ifaceNil;
 98480  			_tmp$7 = (x$5 = http2streamError(fh.StreamID, 1), new x$5.constructor.elem(x$5));
 98481  			_ = _tmp$6;
 98482  			err = _tmp$7;
 98483  			return [_, err];
 98484  		}
 98485  		hf.headerFragBuf = $subslice(p, 0, (p.$length - ((padLength >> 0)) >> 0));
 98486  		_tmp$8 = hf;
 98487  		_tmp$9 = $ifaceNil;
 98488  		_ = _tmp$8;
 98489  		err = _tmp$9;
 98490  		return [_, err];
 98491  	};
 98492  	http2Framer.ptr.prototype.WriteHeaders = function(p) {
 98493  		var _r$1, f, flags, p, v, $s, $r;
 98494  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; f = $f.f; flags = $f.flags; p = $f.p; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 98495  		f = this;
 98496  		if (!http2validStreamID(p.StreamID) && !f.AllowIllegalWrites) {
 98497  			$s = -1; return http2errStreamID;
 98498  		}
 98499  		flags = 0;
 98500  		if (!((p.PadLength === 0))) {
 98501  			flags = (flags | (8)) >>> 0;
 98502  		}
 98503  		if (p.EndStream) {
 98504  			flags = (flags | (1)) >>> 0;
 98505  		}
 98506  		if (p.EndHeaders) {
 98507  			flags = (flags | (4)) >>> 0;
 98508  		}
 98509  		if (!$clone(p.Priority, http2PriorityParam).IsZero()) {
 98510  			flags = (flags | (32)) >>> 0;
 98511  		}
 98512  		f.startWrite(1, flags, p.StreamID);
 98513  		if (!((p.PadLength === 0))) {
 98514  			f.writeByte(p.PadLength);
 98515  		}
 98516  		if (!$clone(p.Priority, http2PriorityParam).IsZero()) {
 98517  			v = p.Priority.StreamDep;
 98518  			if (!http2validStreamIDOrZero(v) && !f.AllowIllegalWrites) {
 98519  				$s = -1; return http2errDepStreamID;
 98520  			}
 98521  			if (p.Priority.Exclusive) {
 98522  				v = (v | (2147483648)) >>> 0;
 98523  			}
 98524  			f.writeUint32(v);
 98525  			f.writeByte(p.Priority.Weight);
 98526  		}
 98527  		f.wbuf = $appendSlice(f.wbuf, p.BlockFragment);
 98528  		f.wbuf = $appendSlice(f.wbuf, $subslice(http2padZeros, 0, p.PadLength));
 98529  		_r$1 = f.endWrite(); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 98530  		$s = -1; return _r$1;
 98531  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2Framer.ptr.prototype.WriteHeaders }; } $f._r$1 = _r$1; $f.f = f; $f.flags = flags; $f.p = p; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
 98532  	};
 98533  	http2Framer.prototype.WriteHeaders = function(p) { return this.$val.WriteHeaders(p); };
 98534  	http2PriorityParam.ptr.prototype.IsZero = function() {
 98535  		var p;
 98536  		p = this;
 98537  		return $equal(p, new http2PriorityParam.ptr(0, false, 0), http2PriorityParam);
 98538  	};
 98539  	http2PriorityParam.prototype.IsZero = function() { return this.$val.IsZero(); };
 98540  	http2parsePriorityFrame = function(param, fh, payload) {
 98541  		var _r$1, fh, param, payload, streamID, v, x$4, x$5, $s, $r;
 98542  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; fh = $f.fh; param = $f.param; payload = $f.payload; streamID = $f.streamID; v = $f.v; x$4 = $f.x$4; x$5 = $f.x$5; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 98543  		if (fh.StreamID === 0) {
 98544  			$s = -1; return [$ifaceNil, (x$4 = new http2connError.ptr(1, "PRIORITY frame with stream ID 0"), new x$4.constructor.elem(x$4))];
 98545  		}
 98546  		/* */ if (!((payload.$length === 5))) { $s = 1; continue; }
 98547  		/* */ $s = 2; continue;
 98548  		/* if (!((payload.$length === 5))) { */ case 1:
 98549  			_r$1 = fmt.Sprintf("PRIORITY frame payload size was %d; want 5", new sliceType([new $Int(payload.$length)])); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 98550  			$s = -1; return [$ifaceNil, (x$5 = new http2connError.ptr(6, _r$1), new x$5.constructor.elem(x$5))];
 98551  		/* } */ case 2:
 98552  		v = $clone(binary.BigEndian, binary.bigEndian).Uint32($subslice(payload, 0, 4));
 98553  		streamID = (v & 2147483647) >>> 0;
 98554  		$s = -1; return [new http2PriorityFrame.ptr($clone(fh, http2FrameHeader), new http2PriorityParam.ptr(streamID, !((streamID === v)), (4 >= payload.$length ? ($throwRuntimeError("index out of range"), undefined) : payload.$array[payload.$offset + 4]))), $ifaceNil];
 98555  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2parsePriorityFrame }; } $f._r$1 = _r$1; $f.fh = fh; $f.param = param; $f.payload = payload; $f.streamID = streamID; $f.v = v; $f.x$4 = x$4; $f.x$5 = x$5; $f.$s = $s; $f.$r = $r; return $f;
 98556  	};
 98557  	http2Framer.ptr.prototype.WritePriority = function(streamID, p) {
 98558  		var _r$1, f, p, streamID, v, $s, $r;
 98559  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; f = $f.f; p = $f.p; streamID = $f.streamID; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 98560  		f = this;
 98561  		if (!http2validStreamID(streamID) && !f.AllowIllegalWrites) {
 98562  			$s = -1; return http2errStreamID;
 98563  		}
 98564  		if (!http2validStreamIDOrZero(p.StreamDep)) {
 98565  			$s = -1; return http2errDepStreamID;
 98566  		}
 98567  		f.startWrite(2, 0, streamID);
 98568  		v = p.StreamDep;
 98569  		if (p.Exclusive) {
 98570  			v = (v | (2147483648)) >>> 0;
 98571  		}
 98572  		f.writeUint32(v);
 98573  		f.writeByte(p.Weight);
 98574  		_r$1 = f.endWrite(); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 98575  		$s = -1; return _r$1;
 98576  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2Framer.ptr.prototype.WritePriority }; } $f._r$1 = _r$1; $f.f = f; $f.p = p; $f.streamID = streamID; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
 98577  	};
 98578  	http2Framer.prototype.WritePriority = function(streamID, p) { return this.$val.WritePriority(streamID, p); };
 98579  	http2parseRSTStreamFrame = function(param, fh, p) {
 98580  		var fh, p, param;
 98581  		if (!((p.$length === 4))) {
 98582  			return [$ifaceNil, new http2ConnectionError(6)];
 98583  		}
 98584  		if (fh.StreamID === 0) {
 98585  			return [$ifaceNil, new http2ConnectionError(1)];
 98586  		}
 98587  		return [new http2RSTStreamFrame.ptr($clone(fh, http2FrameHeader), (($clone(binary.BigEndian, binary.bigEndian).Uint32($subslice(p, 0, 4)) >>> 0))), $ifaceNil];
 98588  	};
 98589  	http2Framer.ptr.prototype.WriteRSTStream = function(streamID, code) {
 98590  		var _r$1, code, f, streamID, $s, $r;
 98591  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; code = $f.code; f = $f.f; streamID = $f.streamID; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 98592  		f = this;
 98593  		if (!http2validStreamID(streamID) && !f.AllowIllegalWrites) {
 98594  			$s = -1; return http2errStreamID;
 98595  		}
 98596  		f.startWrite(3, 0, streamID);
 98597  		f.writeUint32(((code >>> 0)));
 98598  		_r$1 = f.endWrite(); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 98599  		$s = -1; return _r$1;
 98600  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2Framer.ptr.prototype.WriteRSTStream }; } $f._r$1 = _r$1; $f.code = code; $f.f = f; $f.streamID = streamID; $f.$s = $s; $f.$r = $r; return $f;
 98601  	};
 98602  	http2Framer.prototype.WriteRSTStream = function(streamID, code) { return this.$val.WriteRSTStream(streamID, code); };
 98603  	http2parseContinuationFrame = function(param, fh, p) {
 98604  		var fh, p, param, x$4;
 98605  		if (fh.StreamID === 0) {
 98606  			return [$ifaceNil, (x$4 = new http2connError.ptr(1, "CONTINUATION frame with stream ID 0"), new x$4.constructor.elem(x$4))];
 98607  		}
 98608  		return [new http2ContinuationFrame.ptr($clone(fh, http2FrameHeader), p), $ifaceNil];
 98609  	};
 98610  	http2ContinuationFrame.ptr.prototype.HeaderBlockFragment = function() {
 98611  		var f;
 98612  		f = this;
 98613  		f.http2FrameHeader.checkValid();
 98614  		return f.headerFragBuf;
 98615  	};
 98616  	http2ContinuationFrame.prototype.HeaderBlockFragment = function() { return this.$val.HeaderBlockFragment(); };
 98617  	http2ContinuationFrame.ptr.prototype.HeadersEnded = function() {
 98618  		var f;
 98619  		f = this;
 98620  		return new http2Flags(f.http2FrameHeader.Flags).Has(4);
 98621  	};
 98622  	http2ContinuationFrame.prototype.HeadersEnded = function() { return this.$val.HeadersEnded(); };
 98623  	http2Framer.ptr.prototype.WriteContinuation = function(streamID, endHeaders, headerBlockFragment) {
 98624  		var _r$1, endHeaders, f, flags, headerBlockFragment, streamID, $s, $r;
 98625  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; endHeaders = $f.endHeaders; f = $f.f; flags = $f.flags; headerBlockFragment = $f.headerBlockFragment; streamID = $f.streamID; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 98626  		f = this;
 98627  		if (!http2validStreamID(streamID) && !f.AllowIllegalWrites) {
 98628  			$s = -1; return http2errStreamID;
 98629  		}
 98630  		flags = 0;
 98631  		if (endHeaders) {
 98632  			flags = (flags | (4)) >>> 0;
 98633  		}
 98634  		f.startWrite(9, flags, streamID);
 98635  		f.wbuf = $appendSlice(f.wbuf, headerBlockFragment);
 98636  		_r$1 = f.endWrite(); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 98637  		$s = -1; return _r$1;
 98638  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2Framer.ptr.prototype.WriteContinuation }; } $f._r$1 = _r$1; $f.endHeaders = endHeaders; $f.f = f; $f.flags = flags; $f.headerBlockFragment = headerBlockFragment; $f.streamID = streamID; $f.$s = $s; $f.$r = $r; return $f;
 98639  	};
 98640  	http2Framer.prototype.WriteContinuation = function(streamID, endHeaders, headerBlockFragment) { return this.$val.WriteContinuation(streamID, endHeaders, headerBlockFragment); };
 98641  	http2PushPromiseFrame.ptr.prototype.HeaderBlockFragment = function() {
 98642  		var f;
 98643  		f = this;
 98644  		f.http2FrameHeader.checkValid();
 98645  		return f.headerFragBuf;
 98646  	};
 98647  	http2PushPromiseFrame.prototype.HeaderBlockFragment = function() { return this.$val.HeaderBlockFragment(); };
 98648  	http2PushPromiseFrame.ptr.prototype.HeadersEnded = function() {
 98649  		var f;
 98650  		f = this;
 98651  		return new http2Flags(f.http2FrameHeader.Flags).Has(4);
 98652  	};
 98653  	http2PushPromiseFrame.prototype.HeadersEnded = function() { return this.$val.HeadersEnded(); };
 98654  	http2parsePushPromise = function(param, fh, p) {
 98655  		var _, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tuple, _tuple$1, err, fh, p, padLength, param, pp;
 98656  		_ = $ifaceNil;
 98657  		err = $ifaceNil;
 98658  		pp = new http2PushPromiseFrame.ptr($clone(fh, http2FrameHeader), 0, sliceType$3.nil);
 98659  		if (pp.http2FrameHeader.StreamID === 0) {
 98660  			_tmp = $ifaceNil;
 98661  			_tmp$1 = new http2ConnectionError(1);
 98662  			_ = _tmp;
 98663  			err = _tmp$1;
 98664  			return [_, err];
 98665  		}
 98666  		padLength = 0;
 98667  		if (new http2Flags(fh.Flags).Has(8)) {
 98668  			_tuple = http2readByte(p);
 98669  			p = _tuple[0];
 98670  			padLength = _tuple[1];
 98671  			err = _tuple[2];
 98672  			if (!($interfaceIsEqual(err, $ifaceNil))) {
 98673  				return [_, err];
 98674  			}
 98675  		}
 98676  		_tuple$1 = http2readUint32(p);
 98677  		p = _tuple$1[0];
 98678  		pp.PromiseID = _tuple$1[1];
 98679  		err = _tuple$1[2];
 98680  		if (!($interfaceIsEqual(err, $ifaceNil))) {
 98681  			return [_, err];
 98682  		}
 98683  		pp.PromiseID = (pp.PromiseID & 2147483647) >>> 0;
 98684  		if (((padLength >> 0)) > p.$length) {
 98685  			_tmp$2 = $ifaceNil;
 98686  			_tmp$3 = new http2ConnectionError(1);
 98687  			_ = _tmp$2;
 98688  			err = _tmp$3;
 98689  			return [_, err];
 98690  		}
 98691  		pp.headerFragBuf = $subslice(p, 0, (p.$length - ((padLength >> 0)) >> 0));
 98692  		_tmp$4 = pp;
 98693  		_tmp$5 = $ifaceNil;
 98694  		_ = _tmp$4;
 98695  		err = _tmp$5;
 98696  		return [_, err];
 98697  	};
 98698  	http2Framer.ptr.prototype.WritePushPromise = function(p) {
 98699  		var _r$1, f, flags, p, $s, $r;
 98700  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; f = $f.f; flags = $f.flags; p = $f.p; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 98701  		f = this;
 98702  		if (!http2validStreamID(p.StreamID) && !f.AllowIllegalWrites) {
 98703  			$s = -1; return http2errStreamID;
 98704  		}
 98705  		flags = 0;
 98706  		if (!((p.PadLength === 0))) {
 98707  			flags = (flags | (8)) >>> 0;
 98708  		}
 98709  		if (p.EndHeaders) {
 98710  			flags = (flags | (4)) >>> 0;
 98711  		}
 98712  		f.startWrite(5, flags, p.StreamID);
 98713  		if (!((p.PadLength === 0))) {
 98714  			f.writeByte(p.PadLength);
 98715  		}
 98716  		if (!http2validStreamID(p.PromiseID) && !f.AllowIllegalWrites) {
 98717  			$s = -1; return http2errStreamID;
 98718  		}
 98719  		f.writeUint32(p.PromiseID);
 98720  		f.wbuf = $appendSlice(f.wbuf, p.BlockFragment);
 98721  		f.wbuf = $appendSlice(f.wbuf, $subslice(http2padZeros, 0, p.PadLength));
 98722  		_r$1 = f.endWrite(); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 98723  		$s = -1; return _r$1;
 98724  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2Framer.ptr.prototype.WritePushPromise }; } $f._r$1 = _r$1; $f.f = f; $f.flags = flags; $f.p = p; $f.$s = $s; $f.$r = $r; return $f;
 98725  	};
 98726  	http2Framer.prototype.WritePushPromise = function(p) { return this.$val.WritePushPromise(p); };
 98727  	http2Framer.ptr.prototype.WriteRawFrame = function(t, flags, streamID, payload) {
 98728  		var _r$1, f, flags, payload, streamID, t, $s, $r;
 98729  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; f = $f.f; flags = $f.flags; payload = $f.payload; streamID = $f.streamID; t = $f.t; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 98730  		f = this;
 98731  		f.startWrite(t, flags, streamID);
 98732  		f.writeBytes(payload);
 98733  		_r$1 = f.endWrite(); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 98734  		$s = -1; return _r$1;
 98735  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2Framer.ptr.prototype.WriteRawFrame }; } $f._r$1 = _r$1; $f.f = f; $f.flags = flags; $f.payload = payload; $f.streamID = streamID; $f.t = t; $f.$s = $s; $f.$r = $r; return $f;
 98736  	};
 98737  	http2Framer.prototype.WriteRawFrame = function(t, flags, streamID, payload) { return this.$val.WriteRawFrame(t, flags, streamID, payload); };
 98738  	http2readByte = function(p) {
 98739  		var _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, b, err, p, remain;
 98740  		remain = sliceType$3.nil;
 98741  		b = 0;
 98742  		err = $ifaceNil;
 98743  		if (p.$length === 0) {
 98744  			_tmp = sliceType$3.nil;
 98745  			_tmp$1 = 0;
 98746  			_tmp$2 = io.ErrUnexpectedEOF;
 98747  			remain = _tmp;
 98748  			b = _tmp$1;
 98749  			err = _tmp$2;
 98750  			return [remain, b, err];
 98751  		}
 98752  		_tmp$3 = $subslice(p, 1);
 98753  		_tmp$4 = (0 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 0]);
 98754  		_tmp$5 = $ifaceNil;
 98755  		remain = _tmp$3;
 98756  		b = _tmp$4;
 98757  		err = _tmp$5;
 98758  		return [remain, b, err];
 98759  	};
 98760  	http2readUint32 = function(p) {
 98761  		var _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, err, p, remain, v;
 98762  		remain = sliceType$3.nil;
 98763  		v = 0;
 98764  		err = $ifaceNil;
 98765  		if (p.$length < 4) {
 98766  			_tmp = sliceType$3.nil;
 98767  			_tmp$1 = 0;
 98768  			_tmp$2 = io.ErrUnexpectedEOF;
 98769  			remain = _tmp;
 98770  			v = _tmp$1;
 98771  			err = _tmp$2;
 98772  			return [remain, v, err];
 98773  		}
 98774  		_tmp$3 = $subslice(p, 4);
 98775  		_tmp$4 = $clone(binary.BigEndian, binary.bigEndian).Uint32($subslice(p, 0, 4));
 98776  		_tmp$5 = $ifaceNil;
 98777  		remain = _tmp$3;
 98778  		v = _tmp$4;
 98779  		err = _tmp$5;
 98780  		return [remain, v, err];
 98781  	};
 98782  	http2MetaHeadersFrame.ptr.prototype.PseudoValue = function(pseudo) {
 98783  		var _i, _ref, hf, mh, pseudo;
 98784  		mh = this;
 98785  		_ref = mh.Fields;
 98786  		_i = 0;
 98787  		while (true) {
 98788  			if (!(_i < _ref.$length)) { break; }
 98789  			hf = $clone(((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]), hpack.HeaderField);
 98790  			if (!$clone(hf, hpack.HeaderField).IsPseudo()) {
 98791  				return "";
 98792  			}
 98793  			if ($substring(hf.Name, 1) === pseudo) {
 98794  				return hf.Value;
 98795  			}
 98796  			_i++;
 98797  		}
 98798  		return "";
 98799  	};
 98800  	http2MetaHeadersFrame.prototype.PseudoValue = function(pseudo) { return this.$val.PseudoValue(pseudo); };
 98801  	http2MetaHeadersFrame.ptr.prototype.RegularFields = function() {
 98802  		var _i, _ref, hf, i, mh;
 98803  		mh = this;
 98804  		_ref = mh.Fields;
 98805  		_i = 0;
 98806  		while (true) {
 98807  			if (!(_i < _ref.$length)) { break; }
 98808  			i = _i;
 98809  			hf = $clone(((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]), hpack.HeaderField);
 98810  			if (!$clone(hf, hpack.HeaderField).IsPseudo()) {
 98811  				return $subslice(mh.Fields, i);
 98812  			}
 98813  			_i++;
 98814  		}
 98815  		return sliceType$15.nil;
 98816  	};
 98817  	http2MetaHeadersFrame.prototype.RegularFields = function() { return this.$val.RegularFields(); };
 98818  	http2MetaHeadersFrame.ptr.prototype.PseudoFields = function() {
 98819  		var _i, _ref, hf, i, mh;
 98820  		mh = this;
 98821  		_ref = mh.Fields;
 98822  		_i = 0;
 98823  		while (true) {
 98824  			if (!(_i < _ref.$length)) { break; }
 98825  			i = _i;
 98826  			hf = $clone(((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]), hpack.HeaderField);
 98827  			if (!$clone(hf, hpack.HeaderField).IsPseudo()) {
 98828  				return $subslice(mh.Fields, 0, i);
 98829  			}
 98830  			_i++;
 98831  		}
 98832  		return mh.Fields;
 98833  	};
 98834  	http2MetaHeadersFrame.prototype.PseudoFields = function() { return this.$val.PseudoFields(); };
 98835  	http2MetaHeadersFrame.ptr.prototype.checkPseudos = function() {
 98836  		var _1, _i, _i$1, _ref, _ref$1, _tmp, _tmp$1, hf, hf2, i, isRequest, isResponse, mh, pf;
 98837  		mh = this;
 98838  		_tmp = false;
 98839  		_tmp$1 = false;
 98840  		isRequest = _tmp;
 98841  		isResponse = _tmp$1;
 98842  		pf = mh.PseudoFields();
 98843  		_ref = pf;
 98844  		_i = 0;
 98845  		while (true) {
 98846  			if (!(_i < _ref.$length)) { break; }
 98847  			i = _i;
 98848  			hf = $clone(((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]), hpack.HeaderField);
 98849  			_1 = hf.Name;
 98850  			if (_1 === (":method") || _1 === (":path") || _1 === (":scheme") || _1 === (":authority")) {
 98851  				isRequest = true;
 98852  			} else if (_1 === (":status")) {
 98853  				isResponse = true;
 98854  			} else {
 98855  				return new http2pseudoHeaderError((hf.Name));
 98856  			}
 98857  			_ref$1 = $subslice(pf, 0, i);
 98858  			_i$1 = 0;
 98859  			while (true) {
 98860  				if (!(_i$1 < _ref$1.$length)) { break; }
 98861  				hf2 = $clone(((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]), hpack.HeaderField);
 98862  				if (hf.Name === hf2.Name) {
 98863  					return new http2duplicatePseudoHeaderError((hf.Name));
 98864  				}
 98865  				_i$1++;
 98866  			}
 98867  			_i++;
 98868  		}
 98869  		if (isRequest && isResponse) {
 98870  			return http2errMixPseudoHeaderTypes;
 98871  		}
 98872  		return $ifaceNil;
 98873  	};
 98874  	http2MetaHeadersFrame.prototype.checkPseudos = function() { return this.$val.checkPseudos(); };
 98875  	http2Framer.ptr.prototype.maxHeaderStringLen = function() {
 98876  		var fr, v;
 98877  		fr = this;
 98878  		v = fr.maxHeaderListSize();
 98879  		if (((((v >> 0)) >>> 0)) === v) {
 98880  			return ((v >> 0));
 98881  		}
 98882  		return 0;
 98883  	};
 98884  	http2Framer.prototype.maxHeaderStringLen = function() { return this.$val.maxHeaderStringLen(); };
 98885  	http2Framer.ptr.prototype.readMetaFrame = function(hf) {
 98886  		var _r$1, _r$2, _r$3, _r$4, _tuple, _tuple$1, err, err$1, err$2, err$3, f, fr, frag, hc, hdec, hf, invalid, mh, remainSize, sawRegular, x$4, x$5, $s, $deferred, $r;
 98887  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; err = $f.err; err$1 = $f.err$1; err$2 = $f.err$2; err$3 = $f.err$3; f = $f.f; fr = $f.fr; frag = $f.frag; hc = $f.hc; hdec = $f.hdec; hf = $f.hf; invalid = $f.invalid; mh = $f.mh; remainSize = $f.remainSize; sawRegular = $f.sawRegular; x$4 = $f.x$4; x$5 = $f.x$5; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
 98888  		fr = [fr];
 98889  		hdec = [hdec];
 98890  		invalid = [invalid];
 98891  		mh = [mh];
 98892  		remainSize = [remainSize];
 98893  		sawRegular = [sawRegular];
 98894  		fr[0] = this;
 98895  		if (fr[0].AllowIllegalReads) {
 98896  			$s = -1; return [ptrType$38.nil, errors.New("illegal use of AllowIllegalReads with ReadMetaHeaders")];
 98897  		}
 98898  		mh[0] = new http2MetaHeadersFrame.ptr(hf, sliceType$15.nil, false);
 98899  		remainSize[0] = fr[0].maxHeaderListSize();
 98900  		sawRegular[0] = false;
 98901  		invalid[0] = $ifaceNil;
 98902  		hdec[0] = fr[0].ReadMetaHeaders;
 98903  		hdec[0].SetEmitEnabled(true);
 98904  		hdec[0].SetMaxStringLength(fr[0].maxHeaderStringLen());
 98905  		hdec[0].SetEmitFunc((function(fr, hdec, invalid, mh, remainSize, sawRegular) { return function $b(hf$1) {
 98906  			var hf$1, isPseudo, size, $s, $r;
 98907  			/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; hf$1 = $f.hf$1; isPseudo = $f.isPseudo; size = $f.size; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 98908  			/* */ if (http2VerboseLogs && fr[0].logReads) { $s = 1; continue; }
 98909  			/* */ $s = 2; continue;
 98910  			/* if (http2VerboseLogs && fr[0].logReads) { */ case 1:
 98911  				$r = fr[0].debugReadLoggerf("http2: decoded hpack field %+v", new sliceType([new hf$1.constructor.elem(hf$1)])); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 98912  			/* } */ case 2:
 98913  			if (!httplex.ValidHeaderFieldValue(hf$1.Value)) {
 98914  				invalid[0] = new http2headerFieldValueError((hf$1.Value));
 98915  			}
 98916  			isPseudo = strings.HasPrefix(hf$1.Name, ":");
 98917  			if (isPseudo) {
 98918  				if (sawRegular[0]) {
 98919  					invalid[0] = http2errPseudoAfterRegular;
 98920  				}
 98921  			} else {
 98922  				sawRegular[0] = true;
 98923  				if (!http2validWireHeaderFieldName(hf$1.Name)) {
 98924  					invalid[0] = new http2headerFieldNameError((hf$1.Name));
 98925  				}
 98926  			}
 98927  			if (!($interfaceIsEqual(invalid[0], $ifaceNil))) {
 98928  				hdec[0].SetEmitEnabled(false);
 98929  				$s = -1; return;
 98930  			}
 98931  			size = $clone(hf$1, hpack.HeaderField).Size();
 98932  			if (size > remainSize[0]) {
 98933  				hdec[0].SetEmitEnabled(false);
 98934  				mh[0].Truncated = true;
 98935  				$s = -1; return;
 98936  			}
 98937  			remainSize[0] = remainSize[0] - (size) >>> 0;
 98938  			mh[0].Fields = $append(mh[0].Fields, hf$1);
 98939  			$s = -1; return;
 98940  			/* */ } return; } if ($f === undefined) { $f = { $blk: $b }; } $f.hf$1 = hf$1; $f.isPseudo = isPseudo; $f.size = size; $f.$s = $s; $f.$r = $r; return $f;
 98941  		}; })(fr, hdec, invalid, mh, remainSize, sawRegular));
 98942  		$deferred.push([$methodVal(hdec[0], "SetEmitFunc"), [(function(fr, hdec, invalid, mh, remainSize, sawRegular) { return function(hf$1) {
 98943  			var hf$1;
 98944  		}; })(fr, hdec, invalid, mh, remainSize, sawRegular)]]);
 98945  		hc = hf;
 98946  		/* while (true) { */ case 1:
 98947  			_r$1 = hc.HeaderBlockFragment(); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 98948  			frag = _r$1;
 98949  			_r$2 = hdec[0].Write(frag); /* */ $s = 4; case 4: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 98950  			_tuple = _r$2;
 98951  			err = _tuple[1];
 98952  			if (!($interfaceIsEqual(err, $ifaceNil))) {
 98953  				$s = -1; return [ptrType$38.nil, new http2ConnectionError(9)];
 98954  			}
 98955  			_r$3 = hc.HeadersEnded(); /* */ $s = 7; case 7: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 98956  			/* */ if (_r$3) { $s = 5; continue; }
 98957  			/* */ $s = 6; continue;
 98958  			/* if (_r$3) { */ case 5:
 98959  				/* break; */ $s = 2; continue;
 98960  			/* } */ case 6:
 98961  			_r$4 = fr[0].ReadFrame(); /* */ $s = 8; case 8: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 98962  			_tuple$1 = _r$4;
 98963  			f = _tuple$1[0];
 98964  			err$1 = _tuple$1[1];
 98965  			if (!($interfaceIsEqual(err$1, $ifaceNil))) {
 98966  				$s = -1; return [ptrType$38.nil, err$1];
 98967  			} else {
 98968  				hc = $assertType(f, ptrType$39);
 98969  			}
 98970  		/* } */ $s = 1; continue; case 2:
 98971  		mh[0].http2HeadersFrame.headerFragBuf = sliceType$3.nil;
 98972  		mh[0].http2HeadersFrame.http2FrameHeader.invalidate();
 98973  		err$2 = hdec[0].Close();
 98974  		if (!($interfaceIsEqual(err$2, $ifaceNil))) {
 98975  			$s = -1; return [ptrType$38.nil, new http2ConnectionError(9)];
 98976  		}
 98977  		/* */ if (!($interfaceIsEqual(invalid[0], $ifaceNil))) { $s = 9; continue; }
 98978  		/* */ $s = 10; continue;
 98979  		/* if (!($interfaceIsEqual(invalid[0], $ifaceNil))) { */ case 9:
 98980  			fr[0].errDetail = invalid[0];
 98981  			/* */ if (http2VerboseLogs) { $s = 11; continue; }
 98982  			/* */ $s = 12; continue;
 98983  			/* if (http2VerboseLogs) { */ case 11:
 98984  				$r = log.Printf("http2: invalid header: %v", new sliceType([invalid[0]])); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 98985  			/* } */ case 12:
 98986  			$s = -1; return [ptrType$38.nil, (x$4 = new http2StreamError.ptr(mh[0].http2HeadersFrame.http2FrameHeader.StreamID, 1, invalid[0]), new x$4.constructor.elem(x$4))];
 98987  		/* } */ case 10:
 98988  		err$3 = mh[0].checkPseudos();
 98989  		/* */ if (!($interfaceIsEqual(err$3, $ifaceNil))) { $s = 14; continue; }
 98990  		/* */ $s = 15; continue;
 98991  		/* if (!($interfaceIsEqual(err$3, $ifaceNil))) { */ case 14:
 98992  			fr[0].errDetail = err$3;
 98993  			/* */ if (http2VerboseLogs) { $s = 16; continue; }
 98994  			/* */ $s = 17; continue;
 98995  			/* if (http2VerboseLogs) { */ case 16:
 98996  				$r = log.Printf("http2: invalid pseudo headers: %v", new sliceType([err$3])); /* */ $s = 18; case 18: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 98997  			/* } */ case 17:
 98998  			$s = -1; return [ptrType$38.nil, (x$5 = new http2StreamError.ptr(mh[0].http2HeadersFrame.http2FrameHeader.StreamID, 1, err$3), new x$5.constructor.elem(x$5))];
 98999  		/* } */ case 15:
 99000  		$s = -1; return [mh[0], $ifaceNil];
 99001  		/* */ } return; } } catch(err) { $err = err; $s = -1; return [ptrType$38.nil, $ifaceNil]; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: http2Framer.ptr.prototype.readMetaFrame }; } $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.err = err; $f.err$1 = err$1; $f.err$2 = err$2; $f.err$3 = err$3; $f.f = f; $f.fr = fr; $f.frag = frag; $f.hc = hc; $f.hdec = hdec; $f.hf = hf; $f.invalid = invalid; $f.mh = mh; $f.remainSize = remainSize; $f.sawRegular = sawRegular; $f.x$4 = x$4; $f.x$5 = x$5; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
 99002  	};
 99003  	http2Framer.prototype.readMetaFrame = function(hf) { return this.$val.readMetaFrame(hf); };
 99004  	http2summarizeFrame = function(f) {
 99005  		var _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _ref, buf, data, f, f$1, f$2, f$3, f$4, f$5, f$6, n, $s, $r;
 99006  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _r$8 = $f._r$8; _ref = $f._ref; buf = $f.buf; data = $f.data; f = $f.f; f$1 = $f.f$1; f$2 = $f.f$2; f$3 = $f.f$3; f$4 = $f.f$4; f$5 = $f.f$5; f$6 = $f.f$6; n = $f.n; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 99007  		buf = [buf];
 99008  		n = [n];
 99009  		buf[0] = new bytes.Buffer.ptr(sliceType$3.nil, 0, arrayType.zero(), 0);
 99010  		_r$1 = f.Header(); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 99011  		$r = $clone(_r$1, http2FrameHeader).writeDebug(buf[0]); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 99012  		_ref = f;
 99013  		/* */ if ($assertType(_ref, ptrType$40, true)[1]) { $s = 3; continue; }
 99014  		/* */ if ($assertType(_ref, ptrType$41, true)[1]) { $s = 4; continue; }
 99015  		/* */ if ($assertType(_ref, ptrType$42, true)[1]) { $s = 5; continue; }
 99016  		/* */ if ($assertType(_ref, ptrType$43, true)[1]) { $s = 6; continue; }
 99017  		/* */ if ($assertType(_ref, ptrType$44, true)[1]) { $s = 7; continue; }
 99018  		/* */ if ($assertType(_ref, ptrType$45, true)[1]) { $s = 8; continue; }
 99019  		/* */ $s = 9; continue;
 99020  		/* if ($assertType(_ref, ptrType$40, true)[1]) { */ case 3:
 99021  			f$1 = _ref.$val;
 99022  			n[0] = 0;
 99023  			_r$2 = f$1.ForeachSetting((function(buf, n) { return function $b(s) {
 99024  				var _r$2, s, $s, $r;
 99025  				/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$2 = $f._r$2; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 99026  				n[0] = n[0] + (1) >> 0;
 99027  				if (n[0] === 1) {
 99028  					buf[0].WriteString(", settings:");
 99029  				}
 99030  				_r$2 = fmt.Fprintf(buf[0], " %v=%v,", new sliceType([new http2SettingID(s.ID), new $Uint32(s.Val)])); /* */ $s = 1; case 1: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 99031  				_r$2;
 99032  				$s = -1; return $ifaceNil;
 99033  				/* */ } return; } if ($f === undefined) { $f = { $blk: $b }; } $f._r$2 = _r$2; $f.s = s; $f.$s = $s; $f.$r = $r; return $f;
 99034  			}; })(buf, n)); /* */ $s = 10; case 10: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 99035  			_r$2;
 99036  			if (n[0] > 0) {
 99037  				buf[0].Truncate(buf[0].Len() - 1 >> 0);
 99038  			}
 99039  			$s = 9; continue;
 99040  		/* } else if ($assertType(_ref, ptrType$41, true)[1]) { */ case 4:
 99041  			f$2 = _ref.$val;
 99042  			data = f$2.Data();
 99043  			if (data.$length > 256) {
 99044  				data = $subslice(data, 0, 256);
 99045  			}
 99046  			_r$3 = fmt.Fprintf(buf[0], " data=%q", new sliceType([data])); /* */ $s = 11; case 11: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 99047  			_r$3;
 99048  			/* */ if (f$2.Data().$length > 256) { $s = 12; continue; }
 99049  			/* */ $s = 13; continue;
 99050  			/* if (f$2.Data().$length > 256) { */ case 12:
 99051  				_r$4 = fmt.Fprintf(buf[0], " (%d bytes omitted)", new sliceType([new $Int((f$2.Data().$length - 256 >> 0))])); /* */ $s = 14; case 14: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 99052  				_r$4;
 99053  			/* } */ case 13:
 99054  			$s = 9; continue;
 99055  		/* } else if ($assertType(_ref, ptrType$42, true)[1]) { */ case 5:
 99056  			f$3 = _ref.$val;
 99057  			if (f$3.http2FrameHeader.StreamID === 0) {
 99058  				buf[0].WriteString(" (conn)");
 99059  			}
 99060  			_r$5 = fmt.Fprintf(buf[0], " incr=%v", new sliceType([new $Uint32(f$3.Increment)])); /* */ $s = 15; case 15: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
 99061  			_r$5;
 99062  			$s = 9; continue;
 99063  		/* } else if ($assertType(_ref, ptrType$43, true)[1]) { */ case 6:
 99064  			f$4 = _ref.$val;
 99065  			_r$6 = fmt.Fprintf(buf[0], " ping=%q", new sliceType([new sliceType$3(f$4.Data)])); /* */ $s = 16; case 16: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
 99066  			_r$6;
 99067  			$s = 9; continue;
 99068  		/* } else if ($assertType(_ref, ptrType$44, true)[1]) { */ case 7:
 99069  			f$5 = _ref.$val;
 99070  			_r$7 = fmt.Fprintf(buf[0], " LastStreamID=%v ErrCode=%v Debug=%q", new sliceType([new $Uint32(f$5.LastStreamID), new http2ErrCode(f$5.ErrCode), f$5.debugData])); /* */ $s = 17; case 17: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
 99071  			_r$7;
 99072  			$s = 9; continue;
 99073  		/* } else if ($assertType(_ref, ptrType$45, true)[1]) { */ case 8:
 99074  			f$6 = _ref.$val;
 99075  			_r$8 = fmt.Fprintf(buf[0], " ErrCode=%v", new sliceType([new http2ErrCode(f$6.ErrCode)])); /* */ $s = 18; case 18: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
 99076  			_r$8;
 99077  		/* } */ case 9:
 99078  		$s = -1; return buf[0].String();
 99079  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2summarizeFrame }; } $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._r$8 = _r$8; $f._ref = _ref; $f.buf = buf; $f.data = data; $f.f = f; $f.f$1 = f$1; $f.f$2 = f$2; $f.f$3 = f$3; $f.f$4 = f$4; $f.f$5 = f$5; $f.f$6 = f$6; $f.n = n; $f.$s = $s; $f.$r = $r; return $f;
 99080  	};
 99081  	http2transportExpectContinueTimeout = function(t1) {
 99082  		var t1;
 99083  		return t1.ExpectContinueTimeout;
 99084  	};
 99085  	http2serverConnBaseContext = function(c, opts) {
 99086  		var _arg, _arg$1, _arg$2, _r$1, _r$2, _r$3, _r$4, _tuple, c, cancel, ctx, hs, opts, $s, $r;
 99087  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _arg = $f._arg; _arg$1 = $f._arg$1; _arg$2 = $f._arg$2; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _tuple = $f._tuple; c = $f.c; cancel = $f.cancel; ctx = $f.ctx; hs = $f.hs; opts = $f.opts; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 99088  		ctx = $ifaceNil;
 99089  		cancel = $throwNilPointerError;
 99090  		_r$1 = context.WithCancel(context.Background()); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 99091  		_tuple = _r$1;
 99092  		ctx = _tuple[0];
 99093  		cancel = _tuple[1];
 99094  		_arg = ctx;
 99095  		_arg$1 = $pkg.LocalAddrContextKey;
 99096  		_r$2 = c.LocalAddr(); /* */ $s = 2; case 2: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 99097  		_arg$2 = _r$2;
 99098  		_r$3 = context.WithValue(_arg, _arg$1, _arg$2); /* */ $s = 3; case 3: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 99099  		ctx = _r$3;
 99100  		hs = opts.baseConfig();
 99101  		/* */ if (!(hs === ptrType$46.nil)) { $s = 4; continue; }
 99102  		/* */ $s = 5; continue;
 99103  		/* if (!(hs === ptrType$46.nil)) { */ case 4:
 99104  			_r$4 = context.WithValue(ctx, $pkg.ServerContextKey, hs); /* */ $s = 6; case 6: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
 99105  			ctx = _r$4;
 99106  		/* } */ case 5:
 99107  		$s = -1; return [ctx, cancel];
 99108  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2serverConnBaseContext }; } $f._arg = _arg; $f._arg$1 = _arg$1; $f._arg$2 = _arg$2; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._tuple = _tuple; $f.c = c; $f.cancel = cancel; $f.ctx = ctx; $f.hs = hs; $f.opts = opts; $f.$s = $s; $f.$r = $r; return $f;
 99109  	};
 99110  	http2contextWithCancel = function(ctx) {
 99111  		var _, _r$1, _tuple, cancel, ctx, $s, $r;
 99112  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _ = $f._; _r$1 = $f._r$1; _tuple = $f._tuple; cancel = $f.cancel; ctx = $f.ctx; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 99113  		_ = $ifaceNil;
 99114  		cancel = $throwNilPointerError;
 99115  		_r$1 = context.WithCancel(ctx); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 99116  		_tuple = _r$1;
 99117  		_ = _tuple[0];
 99118  		cancel = _tuple[1];
 99119  		$s = -1; return [_, cancel];
 99120  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2contextWithCancel }; } $f._ = _; $f._r$1 = _r$1; $f._tuple = _tuple; $f.cancel = cancel; $f.ctx = ctx; $f.$s = $s; $f.$r = $r; return $f;
 99121  	};
 99122  	http2requestWithContext = function(req, ctx) {
 99123  		var ctx, req;
 99124  		return req.WithContext(ctx);
 99125  	};
 99126  	http2reqContext = function(r) {
 99127  		var r;
 99128  		return r.Context();
 99129  	};
 99130  	http2Transport.ptr.prototype.idleConnTimeout = function() {
 99131  		var t;
 99132  		t = this;
 99133  		if (!(t.t1 === ptrType$22.nil)) {
 99134  			return t.t1.IdleConnTimeout;
 99135  		}
 99136  		return new time.Duration(0, 0);
 99137  	};
 99138  	http2Transport.prototype.idleConnTimeout = function() { return this.$val.idleConnTimeout(); };
 99139  	http2setResponseUncompressed = function(res) {
 99140  		var res;
 99141  		res.Uncompressed = true;
 99142  	};
 99143  	http2traceGotConn = function(req, cc) {
 99144  		var _r$1, cc, ci, req, trace, $s, $r;
 99145  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; cc = $f.cc; ci = $f.ci; req = $f.req; trace = $f.trace; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 99146  		_r$1 = httptrace.ContextClientTrace(req.Context()); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 99147  		trace = _r$1;
 99148  		if (trace === ptrType$47.nil || trace.GotConn === $throwNilPointerError) {
 99149  			$s = -1; return;
 99150  		}
 99151  		ci = new httptrace.GotConnInfo.ptr(cc.tconn, false, false, new time.Duration(0, 0));
 99152  		$r = cc.mu.Lock(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 99153  		ci.Reused = cc.nextStreamID > 1;
 99154  		ci.WasIdle = ($keys(cc.streams).length === 0) && ci.Reused;
 99155  		if (ci.WasIdle && !$clone(cc.lastActive, time.Time).IsZero()) {
 99156  			ci.IdleTime = $clone(time.Now(), time.Time).Sub($clone(cc.lastActive, time.Time));
 99157  		}
 99158  		$r = cc.mu.Unlock(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 99159  		$r = trace.GotConn($clone(ci, httptrace.GotConnInfo)); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 99160  		$s = -1; return;
 99161  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2traceGotConn }; } $f._r$1 = _r$1; $f.cc = cc; $f.ci = ci; $f.req = req; $f.trace = trace; $f.$s = $s; $f.$r = $r; return $f;
 99162  	};
 99163  	http2traceWroteHeaders = function(trace) {
 99164  		var trace, $s, $r;
 99165  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; trace = $f.trace; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 99166  		/* */ if (!(trace === ptrType$48.nil) && !(trace.WroteHeaders === $throwNilPointerError)) { $s = 1; continue; }
 99167  		/* */ $s = 2; continue;
 99168  		/* if (!(trace === ptrType$48.nil) && !(trace.WroteHeaders === $throwNilPointerError)) { */ case 1:
 99169  			$r = trace.WroteHeaders(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 99170  		/* } */ case 2:
 99171  		$s = -1; return;
 99172  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2traceWroteHeaders }; } $f.trace = trace; $f.$s = $s; $f.$r = $r; return $f;
 99173  	};
 99174  	http2traceGot100Continue = function(trace) {
 99175  		var trace, $s, $r;
 99176  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; trace = $f.trace; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 99177  		/* */ if (!(trace === ptrType$48.nil) && !(trace.Got100Continue === $throwNilPointerError)) { $s = 1; continue; }
 99178  		/* */ $s = 2; continue;
 99179  		/* if (!(trace === ptrType$48.nil) && !(trace.Got100Continue === $throwNilPointerError)) { */ case 1:
 99180  			$r = trace.Got100Continue(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 99181  		/* } */ case 2:
 99182  		$s = -1; return;
 99183  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2traceGot100Continue }; } $f.trace = trace; $f.$s = $s; $f.$r = $r; return $f;
 99184  	};
 99185  	http2traceWait100Continue = function(trace) {
 99186  		var trace, $s, $r;
 99187  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; trace = $f.trace; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 99188  		/* */ if (!(trace === ptrType$48.nil) && !(trace.Wait100Continue === $throwNilPointerError)) { $s = 1; continue; }
 99189  		/* */ $s = 2; continue;
 99190  		/* if (!(trace === ptrType$48.nil) && !(trace.Wait100Continue === $throwNilPointerError)) { */ case 1:
 99191  			$r = trace.Wait100Continue(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 99192  		/* } */ case 2:
 99193  		$s = -1; return;
 99194  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2traceWait100Continue }; } $f.trace = trace; $f.$s = $s; $f.$r = $r; return $f;
 99195  	};
 99196  	http2traceWroteRequest = function(trace, err) {
 99197  		var err, trace, $s, $r;
 99198  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; err = $f.err; trace = $f.trace; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 99199  		/* */ if (!(trace === ptrType$48.nil) && !(trace.WroteRequest === $throwNilPointerError)) { $s = 1; continue; }
 99200  		/* */ $s = 2; continue;
 99201  		/* if (!(trace === ptrType$48.nil) && !(trace.WroteRequest === $throwNilPointerError)) { */ case 1:
 99202  			$r = trace.WroteRequest(new httptrace.WroteRequestInfo.ptr(err)); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 99203  		/* } */ case 2:
 99204  		$s = -1; return;
 99205  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2traceWroteRequest }; } $f.err = err; $f.trace = trace; $f.$s = $s; $f.$r = $r; return $f;
 99206  	};
 99207  	http2traceFirstResponseByte = function(trace) {
 99208  		var trace, $s, $r;
 99209  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; trace = $f.trace; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 99210  		/* */ if (!(trace === ptrType$48.nil) && !(trace.GotFirstResponseByte === $throwNilPointerError)) { $s = 1; continue; }
 99211  		/* */ $s = 2; continue;
 99212  		/* if (!(trace === ptrType$48.nil) && !(trace.GotFirstResponseByte === $throwNilPointerError)) { */ case 1:
 99213  			$r = trace.GotFirstResponseByte(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 99214  		/* } */ case 2:
 99215  		$s = -1; return;
 99216  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2traceFirstResponseByte }; } $f.trace = trace; $f.$s = $s; $f.$r = $r; return $f;
 99217  	};
 99218  	http2requestTrace = function(req) {
 99219  		var _r$1, req, trace, $s, $r;
 99220  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; req = $f.req; trace = $f.trace; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 99221  		_r$1 = httptrace.ContextClientTrace(req.Context()); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 99222  		trace = _r$1;
 99223  		$s = -1; return ($pointerOfStructConversion(trace, ptrType$48));
 99224  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2requestTrace }; } $f._r$1 = _r$1; $f.req = req; $f.trace = trace; $f.$s = $s; $f.$r = $r; return $f;
 99225  	};
 99226  	http2ClientConn.ptr.prototype.Ping = function(ctx) {
 99227  		var _r$1, cc, ctx, $s, $r;
 99228  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; cc = $f.cc; ctx = $f.ctx; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 99229  		cc = this;
 99230  		_r$1 = cc.ping(ctx); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 99231  		$s = -1; return _r$1;
 99232  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2ClientConn.ptr.prototype.Ping }; } $f._r$1 = _r$1; $f.cc = cc; $f.ctx = ctx; $f.$s = $s; $f.$r = $r; return $f;
 99233  	};
 99234  	http2ClientConn.prototype.Ping = function(ctx) { return this.$val.Ping(ctx); };
 99235  	http2cloneTLSConfig = function(c) {
 99236  		var _r$1, c, c2, $s, $r;
 99237  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; c = $f.c; c2 = $f.c2; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 99238  		_r$1 = c.Clone(); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 99239  		c2 = _r$1;
 99240  		c2.GetClientCertificate = c.GetClientCertificate;
 99241  		$s = -1; return c2;
 99242  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2cloneTLSConfig }; } $f._r$1 = _r$1; $f.c = c; $f.c2 = c2; $f.$s = $s; $f.$r = $r; return $f;
 99243  	};
 99244  	http2responseWriter.ptr.prototype.Push = function(target, opts) {
 99245  		var _r$1, internalOpts, opts, target, w, $s, $r;
 99246  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; internalOpts = $f.internalOpts; opts = $f.opts; target = $f.target; w = $f.w; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 99247  		w = this;
 99248  		internalOpts = new http2pushOptions.ptr("", false);
 99249  		if (!(opts === ptrType$49.nil)) {
 99250  			internalOpts.Method = opts.Method;
 99251  			internalOpts.Header = opts.Header;
 99252  		}
 99253  		_r$1 = w.push(target, $clone(internalOpts, http2pushOptions)); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 99254  		$s = -1; return _r$1;
 99255  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2responseWriter.ptr.prototype.Push }; } $f._r$1 = _r$1; $f.internalOpts = internalOpts; $f.opts = opts; $f.target = target; $f.w = w; $f.$s = $s; $f.$r = $r; return $f;
 99256  	};
 99257  	http2responseWriter.prototype.Push = function(target, opts) { return this.$val.Push(target, opts); };
 99258  	http2configureServer18 = function(h1, h2) {
 99259  		var h1, h2, x$4, x$5;
 99260  		if ((x$4 = h2.IdleTimeout, (x$4.$high === 0 && x$4.$low === 0))) {
 99261  			if (!((x$5 = h1.IdleTimeout, (x$5.$high === 0 && x$5.$low === 0)))) {
 99262  				h2.IdleTimeout = h1.IdleTimeout;
 99263  			} else {
 99264  				h2.IdleTimeout = h1.ReadTimeout;
 99265  			}
 99266  		}
 99267  		return $ifaceNil;
 99268  	};
 99269  	http2shouldLogPanic = function(panicValue) {
 99270  		var panicValue;
 99271  		return !($interfaceIsEqual(panicValue, $ifaceNil)) && !($interfaceIsEqual(panicValue, $pkg.ErrAbortHandler));
 99272  	};
 99273  	http2reqGetBody = function(req) {
 99274  		var req;
 99275  		return req.GetBody;
 99276  	};
 99277  	http2reqBodyIsNoBody = function(body$1) {
 99278  		var body$1;
 99279  		return $interfaceIsEqual(body$1, new $pkg.NoBody.constructor.elem($pkg.NoBody));
 99280  	};
 99281  	http2configureServer19 = function(s, conf) {
 99282  		var conf, s, $s, $r;
 99283  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; conf = $f.conf; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 99284  		$r = s.RegisterOnShutdown($methodVal(conf.state, "startGracefulShutdown")); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 99285  		$s = -1; return $ifaceNil;
 99286  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2configureServer19 }; } $f.conf = conf; $f.s = s; $f.$s = $s; $f.$r = $r; return $f;
 99287  	};
 99288  	http2newGoroutineLock = function() {
 99289  		var _r$1, x$4, $s, $r;
 99290  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; x$4 = $f.x$4; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 99291  		if (!http2DebugGoroutines) {
 99292  			$s = -1; return new http2goroutineLock(0, 0);
 99293  		}
 99294  		_r$1 = http2curGoroutineID(); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 99295  		$s = -1; return ((x$4 = _r$1, new http2goroutineLock(x$4.$high, x$4.$low)));
 99296  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2newGoroutineLock }; } $f._r$1 = _r$1; $f.x$4 = x$4; $f.$s = $s; $f.$r = $r; return $f;
 99297  	};
 99298  	http2goroutineLock.prototype.check = function() {
 99299  		var _r$1, g, x$4, x$5, $s, $r;
 99300  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; g = $f.g; x$4 = $f.x$4; x$5 = $f.x$5; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 99301  		g = this;
 99302  		if (!http2DebugGoroutines) {
 99303  			$s = -1; return;
 99304  		}
 99305  		_r$1 = http2curGoroutineID(); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 99306  		/* */ if (!((x$4 = _r$1, x$5 = (new $Uint64(g.$high, g.$low)), (x$4.$high === x$5.$high && x$4.$low === x$5.$low)))) { $s = 1; continue; }
 99307  		/* */ $s = 2; continue;
 99308  		/* if (!((x$4 = _r$1, x$5 = (new $Uint64(g.$high, g.$low)), (x$4.$high === x$5.$high && x$4.$low === x$5.$low)))) { */ case 1:
 99309  			$panic(new $String("running on the wrong goroutine"));
 99310  		/* } */ case 2:
 99311  		$s = -1; return;
 99312  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2goroutineLock.prototype.check }; } $f._r$1 = _r$1; $f.g = g; $f.x$4 = x$4; $f.x$5 = x$5; $f.$s = $s; $f.$r = $r; return $f;
 99313  	};
 99314  	$ptrType(http2goroutineLock).prototype.check = function() { return this.$get().check(); };
 99315  	http2goroutineLock.prototype.checkNotOn = function() {
 99316  		var _r$1, g, x$4, x$5, $s, $r;
 99317  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; g = $f.g; x$4 = $f.x$4; x$5 = $f.x$5; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 99318  		g = this;
 99319  		if (!http2DebugGoroutines) {
 99320  			$s = -1; return;
 99321  		}
 99322  		_r$1 = http2curGoroutineID(); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 99323  		/* */ if ((x$4 = _r$1, x$5 = (new $Uint64(g.$high, g.$low)), (x$4.$high === x$5.$high && x$4.$low === x$5.$low))) { $s = 1; continue; }
 99324  		/* */ $s = 2; continue;
 99325  		/* if ((x$4 = _r$1, x$5 = (new $Uint64(g.$high, g.$low)), (x$4.$high === x$5.$high && x$4.$low === x$5.$low))) { */ case 1:
 99326  			$panic(new $String("running on the wrong goroutine"));
 99327  		/* } */ case 2:
 99328  		$s = -1; return;
 99329  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2goroutineLock.prototype.checkNotOn }; } $f._r$1 = _r$1; $f.g = g; $f.x$4 = x$4; $f.x$5 = x$5; $f.$s = $s; $f.$r = $r; return $f;
 99330  	};
 99331  	$ptrType(http2goroutineLock).prototype.checkNotOn = function() { return this.$get().checkNotOn(); };
 99332  	http2curGoroutineID = function() {
 99333  		var _r$1, _r$2, _r$3, _tuple, b, bp, err, i, n, $s, $deferred, $r;
 99334  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _tuple = $f._tuple; b = $f.b; bp = $f.bp; err = $f.err; i = $f.i; n = $f.n; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
 99335  		_r$1 = http2littleBuf.Get(); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 99336  		bp = $assertType(_r$1, ptrType$4);
 99337  		$deferred.push([$methodVal(http2littleBuf, "Put"), [bp]]);
 99338  		b = bp.$get();
 99339  		b = $subslice(b, 0, runtime.Stack(b, false));
 99340  		b = bytes.TrimPrefix(b, http2goroutineSpace);
 99341  		i = bytes.IndexByte(b, 32);
 99342  		/* */ if (i < 0) { $s = 2; continue; }
 99343  		/* */ $s = 3; continue;
 99344  		/* if (i < 0) { */ case 2:
 99345  			_r$2 = fmt.Sprintf("No space found in %q", new sliceType([b])); /* */ $s = 4; case 4: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 99346  			$panic(new $String(_r$2));
 99347  		/* } */ case 3:
 99348  		b = $subslice(b, 0, i);
 99349  		_tuple = http2parseUintBytes(b, 10, 64);
 99350  		n = _tuple[0];
 99351  		err = _tuple[1];
 99352  		/* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 5; continue; }
 99353  		/* */ $s = 6; continue;
 99354  		/* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 5:
 99355  			_r$3 = fmt.Sprintf("Failed to parse goroutine ID out of %q: %v", new sliceType([b, err])); /* */ $s = 7; case 7: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
 99356  			$panic(new $String(_r$3));
 99357  		/* } */ case 6:
 99358  		$s = -1; return n;
 99359  		/* */ } return; } } catch(err) { $err = err; $s = -1; return new $Uint64(0, 0); } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: http2curGoroutineID }; } $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._tuple = _tuple; $f.b = b; $f.bp = bp; $f.err = err; $f.i = i; $f.n = n; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
 99360  	};
 99361  	http2parseUintBytes = function(s, base, bitSize) {
 99362  		var _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, base, bitSize, cutoff, d, err, i, maxVal, n, n1, s, s0, v, x$4, x$5, $s;
 99363  		/* */ $s = 0; s: while (true) { switch ($s) { case 0:
 99364  		n = new $Uint64(0, 0);
 99365  		err = $ifaceNil;
 99366  		_tmp = new $Uint64(0, 0);
 99367  		_tmp$1 = new $Uint64(0, 0);
 99368  		cutoff = _tmp;
 99369  		maxVal = _tmp$1;
 99370  		if (bitSize === 0) {
 99371  			bitSize = 32;
 99372  		}
 99373  		s0 = s;
 99374  			/* */ if (s.$length < 1) { $s = 2; continue; }
 99375  			/* */ if (2 <= base && base <= 36) { $s = 3; continue; }
 99376  			/* */ if ((base === 0)) { $s = 4; continue; }
 99377  			/* */ $s = 5; continue;
 99378  			/* if (s.$length < 1) { */ case 2:
 99379  				err = strconv.ErrSyntax;
 99380  				/* goto Error */ $s = 7; continue;
 99381  				$s = 6; continue;
 99382  			/* } else if (2 <= base && base <= 36) { */ case 3:
 99383  				$s = 6; continue;
 99384  			/* } else if ((base === 0)) { */ case 4:
 99385  					/* */ if (((0 >= s.$length ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + 0]) === 48) && s.$length > 1 && (((1 >= s.$length ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + 1]) === 120) || ((1 >= s.$length ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + 1]) === 88))) { $s = 9; continue; }
 99386  					/* */ if (((0 >= s.$length ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + 0]) === 48)) { $s = 10; continue; }
 99387  					/* */ $s = 11; continue;
 99388  					/* if (((0 >= s.$length ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + 0]) === 48) && s.$length > 1 && (((1 >= s.$length ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + 1]) === 120) || ((1 >= s.$length ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + 1]) === 88))) { */ case 9:
 99389  						base = 16;
 99390  						s = $subslice(s, 2);
 99391  						/* */ if (s.$length < 1) { $s = 13; continue; }
 99392  						/* */ $s = 14; continue;
 99393  						/* if (s.$length < 1) { */ case 13:
 99394  							err = strconv.ErrSyntax;
 99395  							/* goto Error */ $s = 7; continue;
 99396  						/* } */ case 14:
 99397  						$s = 12; continue;
 99398  					/* } else if (((0 >= s.$length ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + 0]) === 48)) { */ case 10:
 99399  						base = 8;
 99400  						$s = 12; continue;
 99401  					/* } else { */ case 11:
 99402  						base = 10;
 99403  					/* } */ case 12:
 99404  				case 8:
 99405  				$s = 6; continue;
 99406  			/* } else { */ case 5:
 99407  				err = errors.New("invalid base " + strconv.Itoa(base));
 99408  				/* goto Error */ $s = 7; continue;
 99409  			/* } */ case 6:
 99410  		case 1:
 99411  		n = new $Uint64(0, 0);
 99412  		cutoff = http2cutoff64(base);
 99413  		maxVal = (x$4 = $shiftLeft64(new $Uint64(0, 1), ((bitSize >>> 0))), new $Uint64(x$4.$high - 0, x$4.$low - 1));
 99414  		i = 0;
 99415  		/* while (true) { */ case 15:
 99416  			/* if (!(i < s.$length)) { break; } */ if(!(i < s.$length)) { $s = 16; continue; }
 99417  			v = 0;
 99418  			d = ((i < 0 || i >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + i]);
 99419  				/* */ if (48 <= d && d <= 57) { $s = 18; continue; }
 99420  				/* */ if (97 <= d && d <= 122) { $s = 19; continue; }
 99421  				/* */ if (65 <= d && d <= 90) { $s = 20; continue; }
 99422  				/* */ $s = 21; continue;
 99423  				/* if (48 <= d && d <= 57) { */ case 18:
 99424  					v = d - 48 << 24 >>> 24;
 99425  					$s = 22; continue;
 99426  				/* } else if (97 <= d && d <= 122) { */ case 19:
 99427  					v = (d - 97 << 24 >>> 24) + 10 << 24 >>> 24;
 99428  					$s = 22; continue;
 99429  				/* } else if (65 <= d && d <= 90) { */ case 20:
 99430  					v = (d - 65 << 24 >>> 24) + 10 << 24 >>> 24;
 99431  					$s = 22; continue;
 99432  				/* } else { */ case 21:
 99433  					n = new $Uint64(0, 0);
 99434  					err = strconv.ErrSyntax;
 99435  					/* goto Error */ $s = 7; continue;
 99436  				/* } */ case 22:
 99437  			case 17:
 99438  			/* */ if (((v >> 0)) >= base) { $s = 23; continue; }
 99439  			/* */ $s = 24; continue;
 99440  			/* if (((v >> 0)) >= base) { */ case 23:
 99441  				n = new $Uint64(0, 0);
 99442  				err = strconv.ErrSyntax;
 99443  				/* goto Error */ $s = 7; continue;
 99444  			/* } */ case 24:
 99445  			/* */ if ((n.$high > cutoff.$high || (n.$high === cutoff.$high && n.$low >= cutoff.$low))) { $s = 25; continue; }
 99446  			/* */ $s = 26; continue;
 99447  			/* if ((n.$high > cutoff.$high || (n.$high === cutoff.$high && n.$low >= cutoff.$low))) { */ case 25:
 99448  				n = new $Uint64(4294967295, 4294967295);
 99449  				err = strconv.ErrRange;
 99450  				/* goto Error */ $s = 7; continue;
 99451  			/* } */ case 26:
 99452  			n = $mul64(n, ((new $Uint64(0, base))));
 99453  			n1 = (x$5 = (new $Uint64(0, v)), new $Uint64(n.$high + x$5.$high, n.$low + x$5.$low));
 99454  			/* */ if ((n1.$high < n.$high || (n1.$high === n.$high && n1.$low < n.$low)) || (n1.$high > maxVal.$high || (n1.$high === maxVal.$high && n1.$low > maxVal.$low))) { $s = 27; continue; }
 99455  			/* */ $s = 28; continue;
 99456  			/* if ((n1.$high < n.$high || (n1.$high === n.$high && n1.$low < n.$low)) || (n1.$high > maxVal.$high || (n1.$high === maxVal.$high && n1.$low > maxVal.$low))) { */ case 27:
 99457  				n = new $Uint64(4294967295, 4294967295);
 99458  				err = strconv.ErrRange;
 99459  				/* goto Error */ $s = 7; continue;
 99460  			/* } */ case 28:
 99461  			n = n1;
 99462  			i = i + (1) >> 0;
 99463  		/* } */ $s = 15; continue; case 16:
 99464  		_tmp$2 = n;
 99465  		_tmp$3 = $ifaceNil;
 99466  		n = _tmp$2;
 99467  		err = _tmp$3;
 99468  		$s = -1; return [n, err];
 99469  		/* Error: */ case 7:
 99470  		_tmp$4 = n;
 99471  		_tmp$5 = new strconv.NumError.ptr("ParseUint", ($bytesToString(s0)), err);
 99472  		n = _tmp$4;
 99473  		err = _tmp$5;
 99474  		$s = -1; return [n, err];
 99475  		$s = -1; return [n, err];
 99476  		/* */ } return; }
 99477  	};
 99478  	http2cutoff64 = function(base) {
 99479  		var base, x$4;
 99480  		if (base < 2) {
 99481  			return new $Uint64(0, 0);
 99482  		}
 99483  		return (x$4 = $div64(new $Uint64(4294967295, 4294967295), (new $Uint64(0, base)), false), new $Uint64(x$4.$high + 0, x$4.$low + 1));
 99484  	};
 99485  	init = function() {
 99486  		var _i, _key, _key$1, _ref, chk, v;
 99487  		_ref = new sliceType$1(["accept", "accept-charset", "accept-encoding", "accept-language", "accept-ranges", "age", "access-control-allow-origin", "allow", "authorization", "cache-control", "content-disposition", "content-encoding", "content-language", "content-length", "content-location", "content-range", "content-type", "cookie", "date", "etag", "expect", "expires", "from", "host", "if-match", "if-modified-since", "if-none-match", "if-unmodified-since", "last-modified", "link", "location", "max-forwards", "proxy-authenticate", "proxy-authorization", "range", "referer", "refresh", "retry-after", "server", "set-cookie", "strict-transport-security", "trailer", "transfer-encoding", "user-agent", "vary", "via", "www-authenticate"]);
 99488  		_i = 0;
 99489  		while (true) {
 99490  			if (!(_i < _ref.$length)) { break; }
 99491  			v = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
 99492  			chk = CanonicalHeaderKey(v);
 99493  			_key = chk; (http2commonLowerHeader || $throwRuntimeError("assignment to entry in nil map"))[$String.keyFor(_key)] = { k: _key, v: v };
 99494  			_key$1 = v; (http2commonCanonHeader || $throwRuntimeError("assignment to entry in nil map"))[$String.keyFor(_key$1)] = { k: _key$1, v: chk };
 99495  			_i++;
 99496  		}
 99497  	};
 99498  	http2lowerHeader = function(v) {
 99499  		var _entry, _r$1, _tuple, ok, s, v, $s, $r;
 99500  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _entry = $f._entry; _r$1 = $f._r$1; _tuple = $f._tuple; ok = $f.ok; s = $f.s; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 99501  		_tuple = (_entry = http2commonLowerHeader[$String.keyFor(v)], _entry !== undefined ? [_entry.v, true] : ["", false]);
 99502  		s = _tuple[0];
 99503  		ok = _tuple[1];
 99504  		if (ok) {
 99505  			$s = -1; return s;
 99506  		}
 99507  		_r$1 = strings.ToLower(v); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 99508  		$s = -1; return _r$1;
 99509  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2lowerHeader }; } $f._entry = _entry; $f._r$1 = _r$1; $f._tuple = _tuple; $f.ok = ok; $f.s = s; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
 99510  	};
 99511  	init$1 = function() {
 99512  		var _r$1, e, $s, $r;
 99513  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; e = $f.e; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 99514  		_r$1 = os.Getenv("GODEBUG"); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 99515  		e = _r$1;
 99516  		if (strings.Contains(e, "http2debug=1")) {
 99517  			http2VerboseLogs = true;
 99518  		}
 99519  		if (strings.Contains(e, "http2debug=2")) {
 99520  			http2VerboseLogs = true;
 99521  			http2logFrameWrites = true;
 99522  			http2logFrameReads = true;
 99523  		}
 99524  		$s = -1; return;
 99525  		/* */ } return; } if ($f === undefined) { $f = { $blk: init$1 }; } $f._r$1 = _r$1; $f.e = e; $f.$s = $s; $f.$r = $r; return $f;
 99526  	};
 99527  	http2streamState.prototype.String = function() {
 99528  		var st;
 99529  		st = this.$val;
 99530  		return ((st < 0 || st >= http2stateName.length) ? ($throwRuntimeError("index out of range"), undefined) : http2stateName[st]);
 99531  	};
 99532  	$ptrType(http2streamState).prototype.String = function() { return new http2streamState(this.$get()).String(); };
 99533  	http2Setting.ptr.prototype.String = function() {
 99534  		var _r$1, s, $s, $r;
 99535  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 99536  		s = this;
 99537  		_r$1 = fmt.Sprintf("[%v = %d]", new sliceType([new http2SettingID(s.ID), new $Uint32(s.Val)])); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 99538  		$s = -1; return _r$1;
 99539  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2Setting.ptr.prototype.String }; } $f._r$1 = _r$1; $f.s = s; $f.$s = $s; $f.$r = $r; return $f;
 99540  	};
 99541  	http2Setting.prototype.String = function() { return this.$val.String(); };
 99542  	http2Setting.ptr.prototype.Valid = function() {
 99543  		var _1, s;
 99544  		s = this;
 99545  		_1 = s.ID;
 99546  		if (_1 === (2)) {
 99547  			if (!((s.Val === 1)) && !((s.Val === 0))) {
 99548  				return new http2ConnectionError(1);
 99549  			}
 99550  		} else if (_1 === (4)) {
 99551  			if (s.Val > 2147483647) {
 99552  				return new http2ConnectionError(3);
 99553  			}
 99554  		} else if (_1 === (5)) {
 99555  			if (s.Val < 16384 || s.Val > 16777215) {
 99556  				return new http2ConnectionError(1);
 99557  			}
 99558  		}
 99559  		return $ifaceNil;
 99560  	};
 99561  	http2Setting.prototype.Valid = function() { return this.$val.Valid(); };
 99562  	http2SettingID.prototype.String = function() {
 99563  		var _entry, _r$1, _tuple, ok, s, v, $s, $r;
 99564  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _entry = $f._entry; _r$1 = $f._r$1; _tuple = $f._tuple; ok = $f.ok; s = $f.s; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 99565  		s = this.$val;
 99566  		_tuple = (_entry = http2settingName[http2SettingID.keyFor(s)], _entry !== undefined ? [_entry.v, true] : ["", false]);
 99567  		v = _tuple[0];
 99568  		ok = _tuple[1];
 99569  		if (ok) {
 99570  			$s = -1; return v;
 99571  		}
 99572  		_r$1 = fmt.Sprintf("UNKNOWN_SETTING_%d", new sliceType([new $Uint16(((s << 16 >>> 16)))])); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 99573  		$s = -1; return _r$1;
 99574  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2SettingID.prototype.String }; } $f._entry = _entry; $f._r$1 = _r$1; $f._tuple = _tuple; $f.ok = ok; $f.s = s; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
 99575  	};
 99576  	$ptrType(http2SettingID).prototype.String = function() { return new http2SettingID(this.$get()).String(); };
 99577  	http2validWireHeaderFieldName = function(v) {
 99578  		var _i, _ref, _rune, r, v;
 99579  		if (v.length === 0) {
 99580  			return false;
 99581  		}
 99582  		_ref = v;
 99583  		_i = 0;
 99584  		while (true) {
 99585  			if (!(_i < _ref.length)) { break; }
 99586  			_rune = $decodeRune(_ref, _i);
 99587  			r = _rune[0];
 99588  			if (!httplex.IsTokenRune(r)) {
 99589  				return false;
 99590  			}
 99591  			if (65 <= r && r <= 90) {
 99592  				return false;
 99593  			}
 99594  			_i += _rune[1];
 99595  		}
 99596  		return true;
 99597  	};
 99598  	init$2 = function() {
 99599  		var _key, i, v;
 99600  		i = 100;
 99601  		while (true) {
 99602  			if (!(i <= 999)) { break; }
 99603  			v = StatusText(i);
 99604  			if (!(v === "")) {
 99605  				_key = i; (http2httpCodeStringCommon || $throwRuntimeError("assignment to entry in nil map"))[$Int.keyFor(_key)] = { k: _key, v: strconv.Itoa(i) };
 99606  			}
 99607  			i = i + (1) >> 0;
 99608  		}
 99609  	};
 99610  	http2httpCodeString = function(code) {
 99611  		var _entry, _tuple, code, ok, s;
 99612  		_tuple = (_entry = http2httpCodeStringCommon[$Int.keyFor(code)], _entry !== undefined ? [_entry.v, true] : ["", false]);
 99613  		s = _tuple[0];
 99614  		ok = _tuple[1];
 99615  		if (ok) {
 99616  			return s;
 99617  		}
 99618  		return strconv.Itoa(code);
 99619  	};
 99620  	http2gate.prototype.Done = function() {
 99621  		var g, $s, $r;
 99622  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; g = $f.g; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 99623  		g = this.$val;
 99624  		$r = $send(g, $clone(new structType.ptr(), structType)); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 99625  		$s = -1; return;
 99626  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2gate.prototype.Done }; } $f.g = g; $f.$s = $s; $f.$r = $r; return $f;
 99627  	};
 99628  	$ptrType(http2gate).prototype.Done = function() { return new http2gate(this.$get()).Done(); };
 99629  	http2gate.prototype.Wait = function() {
 99630  		var _r$1, g, $s, $r;
 99631  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; g = $f.g; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 99632  		g = this.$val;
 99633  		_r$1 = $recv(g); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 99634  		_r$1[0];
 99635  		$s = -1; return;
 99636  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2gate.prototype.Wait }; } $f._r$1 = _r$1; $f.g = g; $f.$s = $s; $f.$r = $r; return $f;
 99637  	};
 99638  	$ptrType(http2gate).prototype.Wait = function() { return new http2gate(this.$get()).Wait(); };
 99639  	$ptrType(http2closeWaiter).prototype.Init = function() {
 99640  		var cw;
 99641  		cw = this;
 99642  		cw.$set(new $Chan(structType, 0));
 99643  	};
 99644  	http2closeWaiter.prototype.Close = function() {
 99645  		var cw;
 99646  		cw = this.$val;
 99647  		$close(cw);
 99648  	};
 99649  	$ptrType(http2closeWaiter).prototype.Close = function() { return new http2closeWaiter(this.$get()).Close(); };
 99650  	http2closeWaiter.prototype.Wait = function() {
 99651  		var _r$1, cw, $s, $r;
 99652  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; cw = $f.cw; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 99653  		cw = this.$val;
 99654  		_r$1 = $recv(cw); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 99655  		_r$1[0];
 99656  		$s = -1; return;
 99657  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2closeWaiter.prototype.Wait }; } $f._r$1 = _r$1; $f.cw = cw; $f.$s = $s; $f.$r = $r; return $f;
 99658  	};
 99659  	$ptrType(http2closeWaiter).prototype.Wait = function() { return new http2closeWaiter(this.$get()).Wait(); };
 99660  	http2newBufferedWriter = function(w) {
 99661  		var w;
 99662  		return new http2bufferedWriter.ptr(w, ptrType$10.nil);
 99663  	};
 99664  	http2bufferedWriter.ptr.prototype.Available = function() {
 99665  		var w;
 99666  		w = this;
 99667  		if (w.bw === ptrType$10.nil) {
 99668  			return 4096;
 99669  		}
 99670  		return w.bw.Available();
 99671  	};
 99672  	http2bufferedWriter.prototype.Available = function() { return this.$val.Available(); };
 99673  	http2bufferedWriter.ptr.prototype.Write = function(p) {
 99674  		var _r$1, _r$2, _tuple, bw, err, n, p, w, $s, $r;
 99675  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; _r$2 = $f._r$2; _tuple = $f._tuple; bw = $f.bw; err = $f.err; n = $f.n; p = $f.p; w = $f.w; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 99676  		n = 0;
 99677  		err = $ifaceNil;
 99678  		w = this;
 99679  		/* */ if (w.bw === ptrType$10.nil) { $s = 1; continue; }
 99680  		/* */ $s = 2; continue;
 99681  		/* if (w.bw === ptrType$10.nil) { */ case 1:
 99682  			_r$1 = http2bufWriterPool.Get(); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 99683  			bw = $assertType(_r$1, ptrType$10);
 99684  			bw.Reset(w.w);
 99685  			w.bw = bw;
 99686  		/* } */ case 2:
 99687  		_r$2 = w.bw.Write(p); /* */ $s = 4; case 4: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 99688  		_tuple = _r$2;
 99689  		n = _tuple[0];
 99690  		err = _tuple[1];
 99691  		$s = -1; return [n, err];
 99692  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2bufferedWriter.ptr.prototype.Write }; } $f._r$1 = _r$1; $f._r$2 = _r$2; $f._tuple = _tuple; $f.bw = bw; $f.err = err; $f.n = n; $f.p = p; $f.w = w; $f.$s = $s; $f.$r = $r; return $f;
 99693  	};
 99694  	http2bufferedWriter.prototype.Write = function(p) { return this.$val.Write(p); };
 99695  	http2bufferedWriter.ptr.prototype.Flush = function() {
 99696  		var _r$1, bw, err, w, $s, $r;
 99697  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; bw = $f.bw; err = $f.err; w = $f.w; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 99698  		w = this;
 99699  		bw = w.bw;
 99700  		if (bw === ptrType$10.nil) {
 99701  			$s = -1; return $ifaceNil;
 99702  		}
 99703  		_r$1 = bw.Flush(); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 99704  		err = _r$1;
 99705  		bw.Reset($ifaceNil);
 99706  		http2bufWriterPool.Put(bw);
 99707  		w.bw = ptrType$10.nil;
 99708  		$s = -1; return err;
 99709  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2bufferedWriter.ptr.prototype.Flush }; } $f._r$1 = _r$1; $f.bw = bw; $f.err = err; $f.w = w; $f.$s = $s; $f.$r = $r; return $f;
 99710  	};
 99711  	http2bufferedWriter.prototype.Flush = function() { return this.$val.Flush(); };
 99712  	http2mustUint31 = function(v) {
 99713  		var v;
 99714  		if (v < 0 || v > 2147483647) {
 99715  			$panic(new $String("out of range"));
 99716  		}
 99717  		return ((v >>> 0));
 99718  	};
 99719  	http2bodyAllowedForStatus = function(status) {
 99720  		var status;
 99721  		if (status >= 100 && status <= 199) {
 99722  			return false;
 99723  		} else if ((status === 204)) {
 99724  			return false;
 99725  		} else if ((status === 304)) {
 99726  			return false;
 99727  		}
 99728  		return true;
 99729  	};
 99730  	http2httpError.ptr.prototype.Error = function() {
 99731  		var e;
 99732  		e = this;
 99733  		return e.msg;
 99734  	};
 99735  	http2httpError.prototype.Error = function() { return this.$val.Error(); };
 99736  	http2httpError.ptr.prototype.Timeout = function() {
 99737  		var e;
 99738  		e = this;
 99739  		return e.timeout;
 99740  	};
 99741  	http2httpError.prototype.Timeout = function() { return this.$val.Timeout(); };
 99742  	http2httpError.ptr.prototype.Temporary = function() {
 99743  		var e;
 99744  		e = this;
 99745  		return true;
 99746  	};
 99747  	http2httpError.prototype.Temporary = function() { return this.$val.Temporary(); };
 99748  	http2sorter.ptr.prototype.Len = function() {
 99749  		var s;
 99750  		s = this;
 99751  		return s.v.$length;
 99752  	};
 99753  	http2sorter.prototype.Len = function() { return this.$val.Len(); };
 99754  	http2sorter.ptr.prototype.Swap = function(i, j) {
 99755  		var _tmp, _tmp$1, i, j, s, x$4, x$5, x$6, x$7;
 99756  		s = this;
 99757  		_tmp = (x$4 = s.v, ((j < 0 || j >= x$4.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$4.$array[x$4.$offset + j]));
 99758  		_tmp$1 = (x$5 = s.v, ((i < 0 || i >= x$5.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$5.$array[x$5.$offset + i]));
 99759  		(x$6 = s.v, ((i < 0 || i >= x$6.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$6.$array[x$6.$offset + i] = _tmp));
 99760  		(x$7 = s.v, ((j < 0 || j >= x$7.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$7.$array[x$7.$offset + j] = _tmp$1));
 99761  	};
 99762  	http2sorter.prototype.Swap = function(i, j) { return this.$val.Swap(i, j); };
 99763  	http2sorter.ptr.prototype.Less = function(i, j) {
 99764  		var i, j, s, x$4, x$5;
 99765  		s = this;
 99766  		return (x$4 = s.v, ((i < 0 || i >= x$4.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$4.$array[x$4.$offset + i])) < (x$5 = s.v, ((j < 0 || j >= x$5.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$5.$array[x$5.$offset + j]));
 99767  	};
 99768  	http2sorter.prototype.Less = function(i, j) { return this.$val.Less(i, j); };
 99769  	http2sorter.ptr.prototype.Keys = function(h) {
 99770  		var _entry, _i, _keys, _ref, h, k, keys, s, $s, $r;
 99771  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _entry = $f._entry; _i = $f._i; _keys = $f._keys; _ref = $f._ref; h = $f.h; k = $f.k; keys = $f.keys; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 99772  		s = this;
 99773  		keys = $subslice(s.v, 0, 0);
 99774  		_ref = h;
 99775  		_i = 0;
 99776  		_keys = $keys(_ref);
 99777  		while (true) {
 99778  			if (!(_i < _keys.length)) { break; }
 99779  			_entry = _ref[_keys[_i]];
 99780  			if (_entry === undefined) {
 99781  				_i++;
 99782  				continue;
 99783  			}
 99784  			k = _entry.k;
 99785  			keys = $append(keys, k);
 99786  			_i++;
 99787  		}
 99788  		s.v = keys;
 99789  		$r = sort.Sort(s); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 99790  		$s = -1; return keys;
 99791  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2sorter.ptr.prototype.Keys }; } $f._entry = _entry; $f._i = _i; $f._keys = _keys; $f._ref = _ref; $f.h = h; $f.k = k; $f.keys = keys; $f.s = s; $f.$s = $s; $f.$r = $r; return $f;
 99792  	};
 99793  	http2sorter.prototype.Keys = function(h) { return this.$val.Keys(h); };
 99794  	http2sorter.ptr.prototype.SortStrings = function(ss) {
 99795  		var s, save, ss, $s, $r;
 99796  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; s = $f.s; save = $f.save; ss = $f.ss; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 99797  		s = this;
 99798  		save = s.v;
 99799  		s.v = ss;
 99800  		$r = sort.Sort(s); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 99801  		s.v = save;
 99802  		$s = -1; return;
 99803  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2sorter.ptr.prototype.SortStrings }; } $f.s = s; $f.save = save; $f.ss = ss; $f.$s = $s; $f.$r = $r; return $f;
 99804  	};
 99805  	http2sorter.prototype.SortStrings = function(ss) { return this.$val.SortStrings(ss); };
 99806  	http2validPseudoPath = function(v) {
 99807  		var v;
 99808  		return (v.length > 0 && (v.charCodeAt(0) === 47)) || v === "*";
 99809  	};
 99810  	http2pipe.ptr.prototype.Len = function() {
 99811  		var _r$1, p, $s, $deferred, $r;
 99812  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; p = $f.p; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
 99813  		p = this;
 99814  		$r = p.mu.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 99815  		$deferred.push([$methodVal(p.mu, "Unlock"), []]);
 99816  		if ($interfaceIsEqual(p.b, $ifaceNil)) {
 99817  			$s = -1; return 0;
 99818  		}
 99819  		_r$1 = p.b.Len(); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 99820  		$s = -1; return _r$1;
 99821  		/* */ } return; } } catch(err) { $err = err; $s = -1; return 0; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: http2pipe.ptr.prototype.Len }; } $f._r$1 = _r$1; $f.p = p; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
 99822  	};
 99823  	http2pipe.prototype.Len = function() { return this.$val.Len(); };
 99824  	http2pipe.ptr.prototype.Read = function(d) {
 99825  		var _r$1, _r$2, _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, _v, d, err, n, p, $s, $deferred, $r;
 99826  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; _r$2 = $f._r$2; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tuple = $f._tuple; _v = $f._v; d = $f.d; err = $f.err; n = $f.n; p = $f.p; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
 99827  		n = 0;
 99828  		err = $ifaceNil;
 99829  		p = this;
 99830  		$r = p.mu.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 99831  		$deferred.push([$methodVal(p.mu, "Unlock"), []]);
 99832  		if ($interfaceIsEqual(p.c.L, $ifaceNil)) {
 99833  			p.c.L = p.mu;
 99834  		}
 99835  		/* while (true) { */ case 2:
 99836  			if (!($interfaceIsEqual(p.breakErr, $ifaceNil))) {
 99837  				_tmp = 0;
 99838  				_tmp$1 = p.breakErr;
 99839  				n = _tmp;
 99840  				err = _tmp$1;
 99841  				$s = -1; return [n, err];
 99842  			}
 99843  			if (!(!($interfaceIsEqual(p.b, $ifaceNil)))) { _v = false; $s = 6; continue s; }
 99844  			_r$1 = p.b.Len(); /* */ $s = 7; case 7: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 99845  			_v = _r$1 > 0; case 6:
 99846  			/* */ if (_v) { $s = 4; continue; }
 99847  			/* */ $s = 5; continue;
 99848  			/* if (_v) { */ case 4:
 99849  				_r$2 = p.b.Read(d); /* */ $s = 8; case 8: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
 99850  				_tuple = _r$2;
 99851  				n = _tuple[0];
 99852  				err = _tuple[1];
 99853  				$s = -1; return [n, err];
 99854  			/* } */ case 5:
 99855  			/* */ if (!($interfaceIsEqual(p.err, $ifaceNil))) { $s = 9; continue; }
 99856  			/* */ $s = 10; continue;
 99857  			/* if (!($interfaceIsEqual(p.err, $ifaceNil))) { */ case 9:
 99858  				/* */ if (!(p.readFn === $throwNilPointerError)) { $s = 11; continue; }
 99859  				/* */ $s = 12; continue;
 99860  				/* if (!(p.readFn === $throwNilPointerError)) { */ case 11:
 99861  					$r = p.readFn(); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 99862  					p.readFn = $throwNilPointerError;
 99863  				/* } */ case 12:
 99864  				p.b = $ifaceNil;
 99865  				_tmp$2 = 0;
 99866  				_tmp$3 = p.err;
 99867  				n = _tmp$2;
 99868  				err = _tmp$3;
 99869  				$s = -1; return [n, err];
 99870  			/* } */ case 10:
 99871  			$r = p.c.Wait(); /* */ $s = 14; case 14: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 99872  		/* } */ $s = 2; continue; case 3:
 99873  		$s = -1; return [n, err];
 99874  		/* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if (!$curGoroutine.asleep) { return  [n, err]; } if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: http2pipe.ptr.prototype.Read }; } $f._r$1 = _r$1; $f._r$2 = _r$2; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tuple = _tuple; $f._v = _v; $f.d = d; $f.err = err; $f.n = n; $f.p = p; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
 99875  	};
 99876  	http2pipe.prototype.Read = function(d) { return this.$val.Read(d); };
 99877  	http2pipe.ptr.prototype.Write = function(d) {
 99878  		var _r$1, _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, d, err, n, p, $s, $deferred, $r;
 99879  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tuple = $f._tuple; d = $f.d; err = $f.err; n = $f.n; p = $f.p; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
 99880  		n = 0;
 99881  		err = $ifaceNil;
 99882  		p = this;
 99883  		$r = p.mu.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 99884  		$deferred.push([$methodVal(p.mu, "Unlock"), []]);
 99885  		if ($interfaceIsEqual(p.c.L, $ifaceNil)) {
 99886  			p.c.L = p.mu;
 99887  		}
 99888  		$deferred.push([$methodVal(p.c, "Signal"), []]);
 99889  		if (!($interfaceIsEqual(p.err, $ifaceNil))) {
 99890  			_tmp = 0;
 99891  			_tmp$1 = http2errClosedPipeWrite;
 99892  			n = _tmp;
 99893  			err = _tmp$1;
 99894  			$s = -1; return [n, err];
 99895  		}
 99896  		if (!($interfaceIsEqual(p.breakErr, $ifaceNil))) {
 99897  			_tmp$2 = d.$length;
 99898  			_tmp$3 = $ifaceNil;
 99899  			n = _tmp$2;
 99900  			err = _tmp$3;
 99901  			$s = -1; return [n, err];
 99902  		}
 99903  		_r$1 = p.b.Write(d); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
 99904  		_tuple = _r$1;
 99905  		n = _tuple[0];
 99906  		err = _tuple[1];
 99907  		$s = -1; return [n, err];
 99908  		/* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if (!$curGoroutine.asleep) { return  [n, err]; } if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: http2pipe.ptr.prototype.Write }; } $f._r$1 = _r$1; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tuple = _tuple; $f.d = d; $f.err = err; $f.n = n; $f.p = p; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
 99909  	};
 99910  	http2pipe.prototype.Write = function(d) { return this.$val.Write(d); };
 99911  	http2pipe.ptr.prototype.CloseWithError = function(err) {
 99912  		var err, p, $s, $r;
 99913  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; err = $f.err; p = $f.p; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 99914  		p = this;
 99915  		$r = p.closeWithError((p.$ptr_err || (p.$ptr_err = new ptrType$50(function() { return this.$target.err; }, function($v) { this.$target.err = $v; }, p))), err, $throwNilPointerError); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 99916  		$s = -1; return;
 99917  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2pipe.ptr.prototype.CloseWithError }; } $f.err = err; $f.p = p; $f.$s = $s; $f.$r = $r; return $f;
 99918  	};
 99919  	http2pipe.prototype.CloseWithError = function(err) { return this.$val.CloseWithError(err); };
 99920  	http2pipe.ptr.prototype.BreakWithError = function(err) {
 99921  		var err, p, $s, $r;
 99922  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; err = $f.err; p = $f.p; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 99923  		p = this;
 99924  		$r = p.closeWithError((p.$ptr_breakErr || (p.$ptr_breakErr = new ptrType$50(function() { return this.$target.breakErr; }, function($v) { this.$target.breakErr = $v; }, p))), err, $throwNilPointerError); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 99925  		$s = -1; return;
 99926  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2pipe.ptr.prototype.BreakWithError }; } $f.err = err; $f.p = p; $f.$s = $s; $f.$r = $r; return $f;
 99927  	};
 99928  	http2pipe.prototype.BreakWithError = function(err) { return this.$val.BreakWithError(err); };
 99929  	http2pipe.ptr.prototype.closeWithErrorAndCode = function(err, fn) {
 99930  		var err, fn, p, $s, $r;
 99931  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; err = $f.err; fn = $f.fn; p = $f.p; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
 99932  		p = this;
 99933  		$r = p.closeWithError((p.$ptr_err || (p.$ptr_err = new ptrType$50(function() { return this.$target.err; }, function($v) { this.$target.err = $v; }, p))), err, fn); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 99934  		$s = -1; return;
 99935  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2pipe.ptr.prototype.closeWithErrorAndCode }; } $f.err = err; $f.fn = fn; $f.p = p; $f.$s = $s; $f.$r = $r; return $f;
 99936  	};
 99937  	http2pipe.prototype.closeWithErrorAndCode = function(err, fn) { return this.$val.closeWithErrorAndCode(err, fn); };
 99938  	http2pipe.ptr.prototype.closeWithError = function(dst, err, fn) {
 99939  		var dst, err, fn, p, $s, $deferred, $r;
 99940  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; dst = $f.dst; err = $f.err; fn = $f.fn; p = $f.p; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
 99941  		p = this;
 99942  		if ($interfaceIsEqual(err, $ifaceNil)) {
 99943  			$panic(new $String("err must be non-nil"));
 99944  		}
 99945  		$r = p.mu.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 99946  		$deferred.push([$methodVal(p.mu, "Unlock"), []]);
 99947  		if ($interfaceIsEqual(p.c.L, $ifaceNil)) {
 99948  			p.c.L = p.mu;
 99949  		}
 99950  		$deferred.push([$methodVal(p.c, "Signal"), []]);
 99951  		if (!($interfaceIsEqual(dst.$get(), $ifaceNil))) {
 99952  			$s = -1; return;
 99953  		}
 99954  		p.readFn = fn;
 99955  		if (dst === (p.$ptr_breakErr || (p.$ptr_breakErr = new ptrType$50(function() { return this.$target.breakErr; }, function($v) { this.$target.breakErr = $v; }, p)))) {
 99956  			p.b = $ifaceNil;
 99957  		}
 99958  		dst.$set(err);
 99959  		p.closeDoneLocked();
 99960  		$s = -1; return;
 99961  		/* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: http2pipe.ptr.prototype.closeWithError }; } $f.dst = dst; $f.err = err; $f.fn = fn; $f.p = p; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
 99962  	};
 99963  	http2pipe.prototype.closeWithError = function(dst, err, fn) { return this.$val.closeWithError(dst, err, fn); };
 99964  	http2pipe.ptr.prototype.closeDoneLocked = function() {
 99965  		var _selection, p, $r;
 99966  		/* */ var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _selection = $f._selection; p = $f.p; $r = $f.$r; }
 99967  		p = this;
 99968  		if (p.donec === $chanNil) {
 99969  			return;
 99970  		}
 99971  		_selection = $select([[p.donec], []]);
 99972  		if (_selection[0] === 0) {
 99973  		} else if (_selection[0] === 1) {
 99974  			$close(p.donec);
 99975  		}
 99976  		/* */ if ($f === undefined) { $f = { $blk: http2pipe.ptr.prototype.closeDoneLocked }; } $f._selection = _selection; $f.p = p; $f.$r = $r; return $f;
 99977  	};
 99978  	http2pipe.prototype.closeDoneLocked = function() { return this.$val.closeDoneLocked(); };
 99979  	http2pipe.ptr.prototype.Err = function() {
 99980  		var p, $s, $deferred, $r;
 99981  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; p = $f.p; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
 99982  		p = this;
 99983  		$r = p.mu.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 99984  		$deferred.push([$methodVal(p.mu, "Unlock"), []]);
 99985  		if (!($interfaceIsEqual(p.breakErr, $ifaceNil))) {
 99986  			$s = -1; return p.breakErr;
 99987  		}
 99988  		$s = -1; return p.err;
 99989  		/* */ } return; } } catch(err) { $err = err; $s = -1; return $ifaceNil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: http2pipe.ptr.prototype.Err }; } $f.p = p; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
 99990  	};
 99991  	http2pipe.prototype.Err = function() { return this.$val.Err(); };
 99992  	http2pipe.ptr.prototype.Done = function() {
 99993  		var p, $s, $deferred, $r;
 99994  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; p = $f.p; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
 99995  		p = this;
 99996  		$r = p.mu.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
 99997  		$deferred.push([$methodVal(p.mu, "Unlock"), []]);
 99998  		if (p.donec === $chanNil) {
 99999  			p.donec = new $Chan(structType, 0);
100000  			if (!($interfaceIsEqual(p.err, $ifaceNil)) || !($interfaceIsEqual(p.breakErr, $ifaceNil))) {
100001  				p.closeDoneLocked();
100002  			}
100003  		}
100004  		$s = -1; return p.donec;
100005  		/* */ } return; } } catch(err) { $err = err; $s = -1; return $chanNil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: http2pipe.ptr.prototype.Done }; } $f.p = p; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
100006  	};
100007  	http2pipe.prototype.Done = function() { return this.$val.Done(); };
100008  	http2Server.ptr.prototype.initialConnRecvWindowSize = function() {
100009  		var s;
100010  		s = this;
100011  		if (s.MaxUploadBufferPerConnection > 65535) {
100012  			return s.MaxUploadBufferPerConnection;
100013  		}
100014  		return 1048576;
100015  	};
100016  	http2Server.prototype.initialConnRecvWindowSize = function() { return this.$val.initialConnRecvWindowSize(); };
100017  	http2Server.ptr.prototype.initialStreamRecvWindowSize = function() {
100018  		var s;
100019  		s = this;
100020  		if (s.MaxUploadBufferPerStream > 0) {
100021  			return s.MaxUploadBufferPerStream;
100022  		}
100023  		return 1048576;
100024  	};
100025  	http2Server.prototype.initialStreamRecvWindowSize = function() { return this.$val.initialStreamRecvWindowSize(); };
100026  	http2Server.ptr.prototype.maxReadFrameSize = function() {
100027  		var s, v;
100028  		s = this;
100029  		v = s.MaxReadFrameSize;
100030  		if (v >= 16384 && v <= 16777215) {
100031  			return v;
100032  		}
100033  		return 1048576;
100034  	};
100035  	http2Server.prototype.maxReadFrameSize = function() { return this.$val.maxReadFrameSize(); };
100036  	http2Server.ptr.prototype.maxConcurrentStreams = function() {
100037  		var s, v;
100038  		s = this;
100039  		v = s.MaxConcurrentStreams;
100040  		if (v > 0) {
100041  			return v;
100042  		}
100043  		return 250;
100044  	};
100045  	http2Server.prototype.maxConcurrentStreams = function() { return this.$val.maxConcurrentStreams(); };
100046  	http2serverInternalState.ptr.prototype.registerConn = function(sc) {
100047  		var _key, s, sc, $s, $r;
100048  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _key = $f._key; s = $f.s; sc = $f.sc; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
100049  		s = this;
100050  		if (s === ptrType$51.nil) {
100051  			$s = -1; return;
100052  		}
100053  		$r = s.mu.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
100054  		_key = sc; (s.activeConns || $throwRuntimeError("assignment to entry in nil map"))[ptrType$9.keyFor(_key)] = { k: _key, v: new structType.ptr() };
100055  		$r = s.mu.Unlock(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
100056  		$s = -1; return;
100057  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2serverInternalState.ptr.prototype.registerConn }; } $f._key = _key; $f.s = s; $f.sc = sc; $f.$s = $s; $f.$r = $r; return $f;
100058  	};
100059  	http2serverInternalState.prototype.registerConn = function(sc) { return this.$val.registerConn(sc); };
100060  	http2serverInternalState.ptr.prototype.unregisterConn = function(sc) {
100061  		var s, sc, $s, $r;
100062  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; s = $f.s; sc = $f.sc; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
100063  		s = this;
100064  		if (s === ptrType$51.nil) {
100065  			$s = -1; return;
100066  		}
100067  		$r = s.mu.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
100068  		delete s.activeConns[ptrType$9.keyFor(sc)];
100069  		$r = s.mu.Unlock(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
100070  		$s = -1; return;
100071  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2serverInternalState.ptr.prototype.unregisterConn }; } $f.s = s; $f.sc = sc; $f.$s = $s; $f.$r = $r; return $f;
100072  	};
100073  	http2serverInternalState.prototype.unregisterConn = function(sc) { return this.$val.unregisterConn(sc); };
100074  	http2serverInternalState.ptr.prototype.startGracefulShutdown = function() {
100075  		var _entry, _i, _keys, _ref, s, sc, $s, $r;
100076  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _entry = $f._entry; _i = $f._i; _keys = $f._keys; _ref = $f._ref; s = $f.s; sc = $f.sc; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
100077  		s = this;
100078  		if (s === ptrType$51.nil) {
100079  			$s = -1; return;
100080  		}
100081  		$r = s.mu.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
100082  		_ref = s.activeConns;
100083  		_i = 0;
100084  		_keys = $keys(_ref);
100085  		/* while (true) { */ case 2:
100086  			/* if (!(_i < _keys.length)) { break; } */ if(!(_i < _keys.length)) { $s = 3; continue; }
100087  			_entry = _ref[_keys[_i]];
100088  			if (_entry === undefined) {
100089  				_i++;
100090  				/* continue; */ $s = 2; continue;
100091  			}
100092  			sc = _entry.k;
100093  			$r = sc.startGracefulShutdown(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
100094  			_i++;
100095  		/* } */ $s = 2; continue; case 3:
100096  		$r = s.mu.Unlock(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
100097  		$s = -1; return;
100098  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2serverInternalState.ptr.prototype.startGracefulShutdown }; } $f._entry = _entry; $f._i = _i; $f._keys = _keys; $f._ref = _ref; $f.s = s; $f.sc = sc; $f.$s = $s; $f.$r = $r; return $f;
100099  	};
100100  	http2serverInternalState.prototype.startGracefulShutdown = function() { return this.$val.startGracefulShutdown(); };
100101  	http2ConfigureServer = function(s, conf) {
100102  		var _1, _i, _i$1, _key, _r$1, _r$2, _r$3, _ref, _ref$1, conf, cs, err, err$1, haveNPN, haveRequired, i, p, protoHandler, s, sawBad, $s, $r;
100103  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _i = $f._i; _i$1 = $f._i$1; _key = $f._key; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _ref = $f._ref; _ref$1 = $f._ref$1; conf = $f.conf; cs = $f.cs; err = $f.err; err$1 = $f.err$1; haveNPN = $f.haveNPN; haveRequired = $f.haveRequired; i = $f.i; p = $f.p; protoHandler = $f.protoHandler; s = $f.s; sawBad = $f.sawBad; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
100104  		conf = [conf];
100105  		if (s === ptrType$46.nil) {
100106  			$panic(new $String("nil *http.Server"));
100107  		}
100108  		if (conf[0] === ptrType$52.nil) {
100109  			conf[0] = new http2Server.ptr(0, 0, 0, false, new time.Duration(0, 0), 0, 0, $throwNilPointerError, ptrType$51.nil);
100110  		}
100111  		conf[0].state = new http2serverInternalState.ptr(new sync.Mutex.ptr(0, 0), {});
100112  		err = http2configureServer18(s, conf[0]);
100113  		if (!($interfaceIsEqual(err, $ifaceNil))) {
100114  			$s = -1; return err;
100115  		}
100116  		_r$1 = http2configureServer19(s, conf[0]); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
100117  		err$1 = _r$1;
100118  		if (!($interfaceIsEqual(err$1, $ifaceNil))) {
100119  			$s = -1; return err$1;
100120  		}
100121  		/* */ if (s.TLSConfig === ptrType$14.nil) { $s = 2; continue; }
100122  		/* */ if (!(s.TLSConfig.CipherSuites === sliceType$12.nil)) { $s = 3; continue; }
100123  		/* */ $s = 4; continue;
100124  		/* if (s.TLSConfig === ptrType$14.nil) { */ case 2:
100125  			s.TLSConfig = new tls.Config.ptr($ifaceNil, $throwNilPointerError, sliceType$11.nil, false, $throwNilPointerError, $throwNilPointerError, $throwNilPointerError, $throwNilPointerError, ptrType$31.nil, sliceType$1.nil, "", 0, ptrType$31.nil, false, sliceType$12.nil, false, false, arrayType$2.zero(), $ifaceNil, 0, 0, sliceType$13.nil, false, 0, $ifaceNil, new sync.Once.ptr(new sync.Mutex.ptr(0, 0), 0), new sync.RWMutex.ptr(new sync.Mutex.ptr(0, 0), 0, 0, 0, 0), sliceType$14.nil);
100126  			$s = 4; continue;
100127  		/* } else if (!(s.TLSConfig.CipherSuites === sliceType$12.nil)) { */ case 3:
100128  			haveRequired = false;
100129  			sawBad = false;
100130  			_ref = s.TLSConfig.CipherSuites;
100131  			_i = 0;
100132  			/* while (true) { */ case 5:
100133  				/* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 6; continue; }
100134  				i = _i;
100135  				cs = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
100136  				_1 = cs;
100137  				if ((_1 === (49199)) || (_1 === (49195))) {
100138  					haveRequired = true;
100139  				}
100140  				/* */ if (http2isBadCipher(cs)) { $s = 7; continue; }
100141  				/* */ if (sawBad) { $s = 8; continue; }
100142  				/* */ $s = 9; continue;
100143  				/* if (http2isBadCipher(cs)) { */ case 7:
100144  					sawBad = true;
100145  					$s = 9; continue;
100146  				/* } else if (sawBad) { */ case 8:
100147  					_r$2 = fmt.Errorf("http2: TLSConfig.CipherSuites index %d contains an HTTP/2-approved cipher suite (%#04x), but it comes after unapproved cipher suites. With this configuration, clients that don't support previous, approved cipher suites may be given an unapproved one and reject the connection.", new sliceType([new $Int(i), new $Uint16(cs)])); /* */ $s = 10; case 10: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
100148  					$s = -1; return _r$2;
100149  				/* } */ case 9:
100150  				_i++;
100151  			/* } */ $s = 5; continue; case 6:
100152  			/* */ if (!haveRequired) { $s = 11; continue; }
100153  			/* */ $s = 12; continue;
100154  			/* if (!haveRequired) { */ case 11:
100155  				_r$3 = fmt.Errorf("http2: TLSConfig.CipherSuites is missing an HTTP/2-required AES_128_GCM_SHA256 cipher.", new sliceType([])); /* */ $s = 13; case 13: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
100156  				$s = -1; return _r$3;
100157  			/* } */ case 12:
100158  		/* } */ case 4:
100159  		s.TLSConfig.PreferServerCipherSuites = true;
100160  		haveNPN = false;
100161  		_ref$1 = s.TLSConfig.NextProtos;
100162  		_i$1 = 0;
100163  		while (true) {
100164  			if (!(_i$1 < _ref$1.$length)) { break; }
100165  			p = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]);
100166  			if (p === "h2") {
100167  				haveNPN = true;
100168  				break;
100169  			}
100170  			_i$1++;
100171  		}
100172  		if (!haveNPN) {
100173  			s.TLSConfig.NextProtos = $append(s.TLSConfig.NextProtos, "h2");
100174  		}
100175  		if (s.TLSNextProto === false) {
100176  			s.TLSNextProto = $makeMap($String.keyFor, []);
100177  		}
100178  		protoHandler = (function(conf) { return function $b(hs, c, h) {
100179  			var c, h, hs, $s, $r;
100180  			/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; c = $f.c; h = $f.h; hs = $f.hs; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
100181  			/* */ if (!(http2testHookOnConn === $throwNilPointerError)) { $s = 1; continue; }
100182  			/* */ $s = 2; continue;
100183  			/* if (!(http2testHookOnConn === $throwNilPointerError)) { */ case 1:
100184  				$r = http2testHookOnConn(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
100185  			/* } */ case 2:
100186  			$r = conf[0].ServeConn(c, new http2ServeConnOpts.ptr(hs, h)); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
100187  			$s = -1; return;
100188  			/* */ } return; } if ($f === undefined) { $f = { $blk: $b }; } $f.c = c; $f.h = h; $f.hs = hs; $f.$s = $s; $f.$r = $r; return $f;
100189  		}; })(conf);
100190  		_key = "h2"; (s.TLSNextProto || $throwRuntimeError("assignment to entry in nil map"))[$String.keyFor(_key)] = { k: _key, v: protoHandler };
100191  		$s = -1; return $ifaceNil;
100192  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2ConfigureServer }; } $f._1 = _1; $f._i = _i; $f._i$1 = _i$1; $f._key = _key; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._ref = _ref; $f._ref$1 = _ref$1; $f.conf = conf; $f.cs = cs; $f.err = err; $f.err$1 = err$1; $f.haveNPN = haveNPN; $f.haveRequired = haveRequired; $f.i = i; $f.p = p; $f.protoHandler = protoHandler; $f.s = s; $f.sawBad = sawBad; $f.$s = $s; $f.$r = $r; return $f;
100193  	};
100194  	http2ServeConnOpts.ptr.prototype.baseConfig = function() {
100195  		var o;
100196  		o = this;
100197  		if (!(o === ptrType$53.nil) && !(o.BaseConfig === ptrType$46.nil)) {
100198  			return o.BaseConfig;
100199  		}
100200  		return new Server.ptr("", $ifaceNil, ptrType$14.nil, new time.Duration(0, 0), new time.Duration(0, 0), new time.Duration(0, 0), new time.Duration(0, 0), 0, false, $throwNilPointerError, ptrType$54.nil, 0, 0, new sync.Once.ptr(new sync.Mutex.ptr(0, 0), 0), $ifaceNil, new sync.Mutex.ptr(0, 0), false, false, $chanNil, sliceType$16.nil);
100201  	};
100202  	http2ServeConnOpts.prototype.baseConfig = function() { return this.$val.baseConfig(); };
100203  	http2ServeConnOpts.ptr.prototype.handler = function() {
100204  		var o;
100205  		o = this;
100206  		if (!(o === ptrType$53.nil)) {
100207  			if (!($interfaceIsEqual(o.Handler, $ifaceNil))) {
100208  				return o.Handler;
100209  			}
100210  			if (!(o.BaseConfig === ptrType$46.nil) && !($interfaceIsEqual(o.BaseConfig.Handler, $ifaceNil))) {
100211  				return o.BaseConfig.Handler;
100212  			}
100213  		}
100214  		return $pkg.DefaultServeMux;
100215  	};
100216  	http2ServeConnOpts.prototype.handler = function() { return this.$val.handler(); };
100217  	http2Server.ptr.prototype.ServeConn = function(c, opts) {
100218  		var _arg, _r$1, _r$10, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _tuple, _tuple$1, baseCtx, c, cancel, fr, hook, ok, opts, s, sc, tc, x$4, $s, $deferred, $r;
100219  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _arg = $f._arg; _r$1 = $f._r$1; _r$10 = $f._r$10; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _r$8 = $f._r$8; _r$9 = $f._r$9; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; baseCtx = $f.baseCtx; c = $f.c; cancel = $f.cancel; fr = $f.fr; hook = $f.hook; ok = $f.ok; opts = $f.opts; s = $f.s; sc = $f.sc; tc = $f.tc; x$4 = $f.x$4; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
100220  		s = this;
100221  		_r$1 = http2serverConnBaseContext(c, opts); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
100222  		_tuple = _r$1;
100223  		baseCtx = _tuple[0];
100224  		cancel = _tuple[1];
100225  		$deferred.push([cancel, []]);
100226  		_r$2 = c.RemoteAddr(); /* */ $s = 2; case 2: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
100227  		_r$3 = _r$2.String(); /* */ $s = 3; case 3: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
100228  		_r$4 = http2newGoroutineLock(); /* */ $s = 4; case 4: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
100229  		sc = new http2serverConn.ptr(s, opts.baseConfig(), c, http2newBufferedWriter(c), opts.handler(), baseCtx, ptrType$33.nil, new $Chan(structType, 0), new $Chan(http2readFrameResult, 0), new $Chan(http2FrameWriteRequest, 8), new $Chan(http2frameWriteResult, 1), new $Chan(http2bodyReadMsg, 0), new $Chan($emptyInterface, 8), new http2flow.ptr(0, ptrType$32.nil), new http2flow.ptr(0, ptrType$32.nil), ptrType$18.nil, _r$3, $ifaceNil, _r$4, true, false, false, 0, 4294967295, s.maxConcurrentStreams(), 0, 0, 0, 0, {}, 65535, 16384, 4096, 0, false, false, false, false, false, false, false, 0, ptrType$56.nil, ptrType$56.nil, new bytes.Buffer.ptr(sliceType$3.nil, 0, arrayType.zero(), 0), ptrType$57.nil, new sync.Once.ptr(new sync.Mutex.ptr(0, 0), 0));
100230  		$r = s.state.registerConn(sc); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
100231  		$deferred.push([$methodVal(s.state, "unregisterConn"), [sc]]);
100232  		/* */ if (!((x$4 = sc.hs.WriteTimeout, (x$4.$high === 0 && x$4.$low === 0)))) { $s = 6; continue; }
100233  		/* */ $s = 7; continue;
100234  		/* if (!((x$4 = sc.hs.WriteTimeout, (x$4.$high === 0 && x$4.$low === 0)))) { */ case 6:
100235  			_r$5 = sc.conn.SetWriteDeadline(new time.Time.ptr(new $Uint64(0, 0), new $Int64(0, 0), ptrType$1.nil)); /* */ $s = 8; case 8: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
100236  			_r$5;
100237  		/* } */ case 7:
100238  		/* */ if (!(s.NewWriteScheduler === $throwNilPointerError)) { $s = 9; continue; }
100239  		/* */ $s = 10; continue;
100240  		/* if (!(s.NewWriteScheduler === $throwNilPointerError)) { */ case 9:
100241  			_r$6 = s.NewWriteScheduler(); /* */ $s = 12; case 12: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
100242  			sc.writeSched = _r$6;
100243  			$s = 11; continue;
100244  		/* } else { */ case 10:
100245  			sc.writeSched = http2NewRandomWriteScheduler();
100246  		/* } */ case 11:
100247  		sc.flow.add(65535);
100248  		sc.inflow.add(65535);
100249  		_r$7 = hpack.NewEncoder(sc.headerWriteBuf); /* */ $s = 13; case 13: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
100250  		sc.hpackEncoder = _r$7;
100251  		fr = http2NewFramer(sc.bw, c);
100252  		_r$8 = hpack.NewDecoder(4096, $throwNilPointerError); /* */ $s = 14; case 14: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
100253  		fr.ReadMetaHeaders = _r$8;
100254  		fr.MaxHeaderListSize = sc.maxHeaderListSize();
100255  		fr.SetMaxReadFrameSize(s.maxReadFrameSize());
100256  		sc.framer = fr;
100257  		_tuple$1 = $assertType(c, http2connectionStater, true);
100258  		tc = _tuple$1[0];
100259  		ok = _tuple$1[1];
100260  		/* */ if (ok) { $s = 15; continue; }
100261  		/* */ $s = 16; continue;
100262  		/* if (ok) { */ case 15:
100263  			sc.tlsState = new tls.ConnectionState.ptr(0, false, false, 0, "", false, "", sliceType$17.nil, sliceType$18.nil, sliceType$5.nil, sliceType$3.nil, sliceType$3.nil);
100264  			_r$9 = tc.ConnectionState(); /* */ $s = 17; case 17: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
100265  			tls.ConnectionState.copy(sc.tlsState, _r$9);
100266  			/* */ if (sc.tlsState.Version < 771) { $s = 18; continue; }
100267  			/* */ $s = 19; continue;
100268  			/* if (sc.tlsState.Version < 771) { */ case 18:
100269  				$r = sc.rejectConn(12, "TLS version too low"); /* */ $s = 20; case 20: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
100270  				$s = -1; return;
100271  			/* } */ case 19:
100272  			if (sc.tlsState.ServerName === "") {
100273  			}
100274  			/* */ if (!s.PermitProhibitedCipherSuites && http2isBadCipher(sc.tlsState.CipherSuite)) { $s = 21; continue; }
100275  			/* */ $s = 22; continue;
100276  			/* if (!s.PermitProhibitedCipherSuites && http2isBadCipher(sc.tlsState.CipherSuite)) { */ case 21:
100277  				_r$10 = fmt.Sprintf("Prohibited TLS 1.2 Cipher Suite: %x", new sliceType([new $Uint16(sc.tlsState.CipherSuite)])); /* */ $s = 23; case 23: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
100278  				_arg = _r$10;
100279  				$r = sc.rejectConn(12, _arg); /* */ $s = 24; case 24: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
100280  				$s = -1; return;
100281  			/* } */ case 22:
100282  		/* } */ case 16:
100283  		hook = http2testHookGetServerConn;
100284  		/* */ if (!(hook === $throwNilPointerError)) { $s = 25; continue; }
100285  		/* */ $s = 26; continue;
100286  		/* if (!(hook === $throwNilPointerError)) { */ case 25:
100287  			$r = hook(sc); /* */ $s = 27; case 27: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
100288  		/* } */ case 26:
100289  		$r = sc.serve(); /* */ $s = 28; case 28: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
100290  		$s = -1; return;
100291  		/* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: http2Server.ptr.prototype.ServeConn }; } $f._arg = _arg; $f._r$1 = _r$1; $f._r$10 = _r$10; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._r$8 = _r$8; $f._r$9 = _r$9; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.baseCtx = baseCtx; $f.c = c; $f.cancel = cancel; $f.fr = fr; $f.hook = hook; $f.ok = ok; $f.opts = opts; $f.s = s; $f.sc = sc; $f.tc = tc; $f.x$4 = x$4; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
100292  	};
100293  	http2Server.prototype.ServeConn = function(c, opts) { return this.$val.ServeConn(c, opts); };
100294  	http2serverConn.ptr.prototype.rejectConn = function(err, debug) {
100295  		var _r$1, _r$2, _r$3, debug, err, sc, $s, $r;
100296  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; debug = $f.debug; err = $f.err; sc = $f.sc; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
100297  		sc = this;
100298  		$r = sc.vlogf("http2: server rejecting conn: %v, %s", new sliceType([new http2ErrCode(err), new $String(debug)])); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
100299  		_r$1 = sc.framer.WriteGoAway(0, err, (new sliceType$3($stringToBytes(debug)))); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
100300  		_r$1;
100301  		_r$2 = sc.bw.Flush(); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
100302  		_r$2;
100303  		_r$3 = sc.conn.Close(); /* */ $s = 4; case 4: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
100304  		_r$3;
100305  		$s = -1; return;
100306  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2serverConn.ptr.prototype.rejectConn }; } $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f.debug = debug; $f.err = err; $f.sc = sc; $f.$s = $s; $f.$r = $r; return $f;
100307  	};
100308  	http2serverConn.prototype.rejectConn = function(err, debug) { return this.$val.rejectConn(err, debug); };
100309  	http2serverConn.ptr.prototype.maxHeaderListSize = function() {
100310  		var n, sc;
100311  		sc = this;
100312  		n = sc.hs.MaxHeaderBytes;
100313  		if (n <= 0) {
100314  			n = 1048576;
100315  		}
100316  		return (((n + 320 >> 0) >>> 0));
100317  	};
100318  	http2serverConn.prototype.maxHeaderListSize = function() { return this.$val.maxHeaderListSize(); };
100319  	http2serverConn.ptr.prototype.curOpenStreams = function() {
100320  		var sc, $s, $r;
100321  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; sc = $f.sc; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
100322  		sc = this;
100323  		$r = sc.serveG.check(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
100324  		$s = -1; return sc.curClientStreams + sc.curPushedStreams >>> 0;
100325  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2serverConn.ptr.prototype.curOpenStreams }; } $f.sc = sc; $f.$s = $s; $f.$r = $r; return $f;
100326  	};
100327  	http2serverConn.prototype.curOpenStreams = function() { return this.$val.curOpenStreams(); };
100328  	http2serverConn.ptr.prototype.Framer = function() {
100329  		var sc;
100330  		sc = this;
100331  		return sc.framer;
100332  	};
100333  	http2serverConn.prototype.Framer = function() { return this.$val.Framer(); };
100334  	http2serverConn.ptr.prototype.CloseConn = function() {
100335  		var _r$1, sc, $s, $r;
100336  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; sc = $f.sc; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
100337  		sc = this;
100338  		_r$1 = sc.conn.Close(); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
100339  		$s = -1; return _r$1;
100340  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2serverConn.ptr.prototype.CloseConn }; } $f._r$1 = _r$1; $f.sc = sc; $f.$s = $s; $f.$r = $r; return $f;
100341  	};
100342  	http2serverConn.prototype.CloseConn = function() { return this.$val.CloseConn(); };
100343  	http2serverConn.ptr.prototype.Flush = function() {
100344  		var _r$1, sc, $s, $r;
100345  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; sc = $f.sc; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
100346  		sc = this;
100347  		_r$1 = sc.bw.Flush(); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
100348  		$s = -1; return _r$1;
100349  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2serverConn.ptr.prototype.Flush }; } $f._r$1 = _r$1; $f.sc = sc; $f.$s = $s; $f.$r = $r; return $f;
100350  	};
100351  	http2serverConn.prototype.Flush = function() { return this.$val.Flush(); };
100352  	http2serverConn.ptr.prototype.HeaderEncoder = function() {
100353  		var sc;
100354  		sc = this;
100355  		return [sc.hpackEncoder, sc.headerWriteBuf];
100356  	};
100357  	http2serverConn.prototype.HeaderEncoder = function() { return this.$val.HeaderEncoder(); };
100358  	http2serverConn.ptr.prototype.state = function(streamID) {
100359  		var _entry, _r$1, _tuple, ok, sc, st, streamID, $s, $r;
100360  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _entry = $f._entry; _r$1 = $f._r$1; _tuple = $f._tuple; ok = $f.ok; sc = $f.sc; st = $f.st; streamID = $f.streamID; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
100361  		sc = this;
100362  		$r = sc.serveG.check(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
100363  		_tuple = (_entry = sc.streams[$Uint32.keyFor(streamID)], _entry !== undefined ? [_entry.v, true] : [ptrType$6.nil, false]);
100364  		st = _tuple[0];
100365  		ok = _tuple[1];
100366  		if (ok) {
100367  			$s = -1; return [st.state, st];
100368  		}
100369  		if ((_r$1 = streamID % 2, _r$1 === _r$1 ? _r$1 : $throwRuntimeError("integer divide by zero")) === 1) {
100370  			if (streamID <= sc.maxClientStreamID) {
100371  				$s = -1; return [4, ptrType$6.nil];
100372  			}
100373  		} else {
100374  			if (streamID <= sc.maxPushPromiseID) {
100375  				$s = -1; return [4, ptrType$6.nil];
100376  			}
100377  		}
100378  		$s = -1; return [0, ptrType$6.nil];
100379  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2serverConn.ptr.prototype.state }; } $f._entry = _entry; $f._r$1 = _r$1; $f._tuple = _tuple; $f.ok = ok; $f.sc = sc; $f.st = st; $f.streamID = streamID; $f.$s = $s; $f.$r = $r; return $f;
100380  	};
100381  	http2serverConn.prototype.state = function(streamID) { return this.$val.state(streamID); };
100382  	http2serverConn.ptr.prototype.setConnState = function(state) {
100383  		var sc, state, $s, $r;
100384  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; sc = $f.sc; state = $f.state; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
100385  		sc = this;
100386  		/* */ if (!(sc.hs.ConnState === $throwNilPointerError)) { $s = 1; continue; }
100387  		/* */ $s = 2; continue;
100388  		/* if (!(sc.hs.ConnState === $throwNilPointerError)) { */ case 1:
100389  			$r = sc.hs.ConnState(sc.conn, state); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
100390  		/* } */ case 2:
100391  		$s = -1; return;
100392  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2serverConn.ptr.prototype.setConnState }; } $f.sc = sc; $f.state = state; $f.$s = $s; $f.$r = $r; return $f;
100393  	};
100394  	http2serverConn.prototype.setConnState = function(state) { return this.$val.setConnState(state); };
100395  	http2serverConn.ptr.prototype.vlogf = function(format, args) {
100396  		var args, format, sc, $s, $r;
100397  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; args = $f.args; format = $f.format; sc = $f.sc; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
100398  		sc = this;
100399  		/* */ if (http2VerboseLogs) { $s = 1; continue; }
100400  		/* */ $s = 2; continue;
100401  		/* if (http2VerboseLogs) { */ case 1:
100402  			$r = sc.logf(format, args); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
100403  		/* } */ case 2:
100404  		$s = -1; return;
100405  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2serverConn.ptr.prototype.vlogf }; } $f.args = args; $f.format = format; $f.sc = sc; $f.$s = $s; $f.$r = $r; return $f;
100406  	};
100407  	http2serverConn.prototype.vlogf = function(format, args) { return this.$val.vlogf(format, args); };
100408  	http2serverConn.ptr.prototype.logf = function(format, args) {
100409  		var args, format, lg, sc, $s, $r;
100410  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; args = $f.args; format = $f.format; lg = $f.lg; sc = $f.sc; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
100411  		sc = this;
100412  		lg = sc.hs.ErrorLog;
100413  		/* */ if (!(lg === ptrType$54.nil)) { $s = 1; continue; }
100414  		/* */ $s = 2; continue;
100415  		/* if (!(lg === ptrType$54.nil)) { */ case 1:
100416  			$r = lg.Printf(format, args); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
100417  			$s = 3; continue;
100418  		/* } else { */ case 2:
100419  			$r = log.Printf(format, args); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
100420  		/* } */ case 3:
100421  		$s = -1; return;
100422  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2serverConn.ptr.prototype.logf }; } $f.args = args; $f.format = format; $f.lg = lg; $f.sc = sc; $f.$s = $s; $f.$r = $r; return $f;
100423  	};
100424  	http2serverConn.prototype.logf = function(format, args) { return this.$val.logf(format, args); };
100425  	http2errno = function(v) {
100426  		var _r$1, rv, v, $s, $r;
100427  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; rv = $f.rv; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
100428  		_r$1 = reflect.ValueOf(v); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
100429  		rv = _r$1;
100430  		if ($clone(rv, reflect.Value).Kind() === 12) {
100431  			$s = -1; return (($clone(rv, reflect.Value).Uint().$low >>> 0));
100432  		}
100433  		$s = -1; return 0;
100434  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2errno }; } $f._r$1 = _r$1; $f.rv = rv; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
100435  	};
100436  	http2isClosedConnError = function(err) {
100437  		var _r$1, _r$2, _tuple, _tuple$1, err, n, oe, ok, ok$1, se, str, $s, $r;
100438  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; _r$2 = $f._r$2; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; err = $f.err; n = $f.n; oe = $f.oe; ok = $f.ok; ok$1 = $f.ok$1; se = $f.se; str = $f.str; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
100439  		if ($interfaceIsEqual(err, $ifaceNil)) {
100440  			$s = -1; return false;
100441  		}
100442  		_r$1 = err.Error(); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
100443  		str = _r$1;
100444  		if (strings.Contains(str, "use of closed network connection")) {
100445  			$s = -1; return true;
100446  		}
100447  		/* */ if (false) { $s = 2; continue; }
100448  		/* */ $s = 3; continue;
100449  		/* if (false) { */ case 2:
100450  			_tuple = $assertType(err, ptrType$59, true);
100451  			oe = _tuple[0];
100452  			ok = _tuple[1];
100453  			/* */ if (ok && oe.Op === "read") { $s = 4; continue; }
100454  			/* */ $s = 5; continue;
100455  			/* if (ok && oe.Op === "read") { */ case 4:
100456  				_tuple$1 = $assertType(oe.Err, ptrType$60, true);
100457  				se = _tuple$1[0];
100458  				ok$1 = _tuple$1[1];
100459  				/* */ if (ok$1 && se.Syscall === "wsarecv") { $s = 6; continue; }
100460  				/* */ $s = 7; continue;
100461  				/* if (ok$1 && se.Syscall === "wsarecv") { */ case 6:
100462  					_r$2 = http2errno(se.Err); /* */ $s = 8; case 8: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
100463  					n = _r$2;
100464  					if ((n === 10054) || (n === 10053)) {
100465  						$s = -1; return true;
100466  					}
100467  				/* } */ case 7:
100468  			/* } */ case 5:
100469  		/* } */ case 3:
100470  		$s = -1; return false;
100471  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2isClosedConnError }; } $f._r$1 = _r$1; $f._r$2 = _r$2; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.err = err; $f.n = n; $f.oe = oe; $f.ok = ok; $f.ok$1 = ok$1; $f.se = se; $f.str = str; $f.$s = $s; $f.$r = $r; return $f;
100472  	};
100473  	http2serverConn.ptr.prototype.condlogf = function(err, format, args) {
100474  		var _r$1, _v, args, err, format, sc, $s, $r;
100475  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; _v = $f._v; args = $f.args; err = $f.err; format = $f.format; sc = $f.sc; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
100476  		sc = this;
100477  		if ($interfaceIsEqual(err, $ifaceNil)) {
100478  			$s = -1; return;
100479  		}
100480  		if ($interfaceIsEqual(err, io.EOF) || $interfaceIsEqual(err, io.ErrUnexpectedEOF)) { _v = true; $s = 4; continue s; }
100481  		_r$1 = http2isClosedConnError(err); /* */ $s = 5; case 5: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
100482  		_v = _r$1; case 4:
100483  		/* */ if (_v || $interfaceIsEqual(err, http2errPrefaceTimeout)) { $s = 1; continue; }
100484  		/* */ $s = 2; continue;
100485  		/* if (_v || $interfaceIsEqual(err, http2errPrefaceTimeout)) { */ case 1:
100486  			$r = sc.vlogf(format, args); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
100487  			$s = 3; continue;
100488  		/* } else { */ case 2:
100489  			$r = sc.logf(format, args); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
100490  		/* } */ case 3:
100491  		$s = -1; return;
100492  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2serverConn.ptr.prototype.condlogf }; } $f._r$1 = _r$1; $f._v = _v; $f.args = args; $f.err = err; $f.format = format; $f.sc = sc; $f.$s = $s; $f.$r = $r; return $f;
100493  	};
100494  	http2serverConn.prototype.condlogf = function(err, format, args) { return this.$val.condlogf(err, format, args); };
100495  	http2serverConn.ptr.prototype.canonicalHeader = function(v) {
100496  		var _entry, _entry$1, _key, _tuple, _tuple$1, cv, ok, sc, v, $s, $r;
100497  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _entry = $f._entry; _entry$1 = $f._entry$1; _key = $f._key; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; cv = $f.cv; ok = $f.ok; sc = $f.sc; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
100498  		sc = this;
100499  		$r = sc.serveG.check(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
100500  		_tuple = (_entry = http2commonCanonHeader[$String.keyFor(v)], _entry !== undefined ? [_entry.v, true] : ["", false]);
100501  		cv = _tuple[0];
100502  		ok = _tuple[1];
100503  		if (ok) {
100504  			$s = -1; return cv;
100505  		}
100506  		_tuple$1 = (_entry$1 = sc.canonHeader[$String.keyFor(v)], _entry$1 !== undefined ? [_entry$1.v, true] : ["", false]);
100507  		cv = _tuple$1[0];
100508  		ok = _tuple$1[1];
100509  		if (ok) {
100510  			$s = -1; return cv;
100511  		}
100512  		if (sc.canonHeader === false) {
100513  			sc.canonHeader = {};
100514  		}
100515  		cv = CanonicalHeaderKey(v);
100516  		_key = v; (sc.canonHeader || $throwRuntimeError("assignment to entry in nil map"))[$String.keyFor(_key)] = { k: _key, v: cv };
100517  		$s = -1; return cv;
100518  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2serverConn.ptr.prototype.canonicalHeader }; } $f._entry = _entry; $f._entry$1 = _entry$1; $f._key = _key; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.cv = cv; $f.ok = ok; $f.sc = sc; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
100519  	};
100520  	http2serverConn.prototype.canonicalHeader = function(v) { return this.$val.canonicalHeader(v); };
100521  	http2serverConn.ptr.prototype.readFrames = function() {
100522  		var _r$1, _r$2, _r$3, _selection, _selection$1, _tuple, err, f, gate, gateDone, sc, $s, $r;
100523  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _selection = $f._selection; _selection$1 = $f._selection$1; _tuple = $f._tuple; err = $f.err; f = $f.f; gate = $f.gate; gateDone = $f.gateDone; sc = $f.sc; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
100524  		sc = this;
100525  		gate = new $Chan(structType, 0);
100526  		gateDone = $methodVal(new http2gate(gate), "Done");
100527  		/* while (true) { */ case 1:
100528  			_r$1 = sc.framer.ReadFrame(); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
100529  			_tuple = _r$1;
100530  			f = _tuple[0];
100531  			err = _tuple[1];
100532  			_r$2 = $select([[sc.readFrameCh, new http2readFrameResult.ptr(f, err, gateDone)], [sc.doneServing]]); /* */ $s = 4; case 4: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
100533  			_selection = _r$2;
100534  			if (_selection[0] === 0) {
100535  			} else if (_selection[0] === 1) {
100536  				$s = -1; return;
100537  			}
100538  			_r$3 = $select([[gate], [sc.doneServing]]); /* */ $s = 5; case 5: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
100539  			_selection$1 = _r$3;
100540  			if (_selection$1[0] === 0) {
100541  			} else if (_selection$1[0] === 1) {
100542  				$s = -1; return;
100543  			}
100544  			if (http2terminalReadFrameError(err)) {
100545  				$s = -1; return;
100546  			}
100547  		/* } */ $s = 1; continue; case 2:
100548  		$s = -1; return;
100549  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2serverConn.ptr.prototype.readFrames }; } $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._selection = _selection; $f._selection$1 = _selection$1; $f._tuple = _tuple; $f.err = err; $f.f = f; $f.gate = gate; $f.gateDone = gateDone; $f.sc = sc; $f.$s = $s; $f.$r = $r; return $f;
100550  	};
100551  	http2serverConn.prototype.readFrames = function() { return this.$val.readFrames(); };
100552  	http2serverConn.ptr.prototype.writeFrameAsync = function(wr) {
100553  		var _r$1, err, sc, wr, $s, $r;
100554  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; err = $f.err; sc = $f.sc; wr = $f.wr; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
100555  		sc = this;
100556  		_r$1 = wr.write.writeFrame(sc); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
100557  		err = _r$1;
100558  		$r = $send(sc.wroteFrameCh, $clone(new http2frameWriteResult.ptr($clone(wr, http2FrameWriteRequest), err), http2frameWriteResult)); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
100559  		$s = -1; return;
100560  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2serverConn.ptr.prototype.writeFrameAsync }; } $f._r$1 = _r$1; $f.err = err; $f.sc = sc; $f.wr = wr; $f.$s = $s; $f.$r = $r; return $f;
100561  	};
100562  	http2serverConn.prototype.writeFrameAsync = function(wr) { return this.$val.writeFrameAsync(wr); };
100563  	http2serverConn.ptr.prototype.closeAllStreamsOnConnClose = function() {
100564  		var _entry, _i, _keys, _ref, sc, st, $s, $r;
100565  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _entry = $f._entry; _i = $f._i; _keys = $f._keys; _ref = $f._ref; sc = $f.sc; st = $f.st; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
100566  		sc = this;
100567  		$r = sc.serveG.check(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
100568  		_ref = sc.streams;
100569  		_i = 0;
100570  		_keys = $keys(_ref);
100571  		/* while (true) { */ case 2:
100572  			/* if (!(_i < _keys.length)) { break; } */ if(!(_i < _keys.length)) { $s = 3; continue; }
100573  			_entry = _ref[_keys[_i]];
100574  			if (_entry === undefined) {
100575  				_i++;
100576  				/* continue; */ $s = 2; continue;
100577  			}
100578  			st = _entry.v;
100579  			$r = sc.closeStream(st, http2errClientDisconnected); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
100580  			_i++;
100581  		/* } */ $s = 2; continue; case 3:
100582  		$s = -1; return;
100583  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2serverConn.ptr.prototype.closeAllStreamsOnConnClose }; } $f._entry = _entry; $f._i = _i; $f._keys = _keys; $f._ref = _ref; $f.sc = sc; $f.st = st; $f.$s = $s; $f.$r = $r; return $f;
100584  	};
100585  	http2serverConn.prototype.closeAllStreamsOnConnClose = function() { return this.$val.closeAllStreamsOnConnClose(); };
100586  	http2serverConn.ptr.prototype.stopShutdownTimer = function() {
100587  		var sc, t, $s, $r;
100588  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; sc = $f.sc; t = $f.t; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
100589  		sc = this;
100590  		$r = sc.serveG.check(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
100591  		t = sc.shutdownTimer;
100592  		if (!(t === ptrType$56.nil)) {
100593  			t.Stop();
100594  		}
100595  		$s = -1; return;
100596  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2serverConn.ptr.prototype.stopShutdownTimer }; } $f.sc = sc; $f.t = t; $f.$s = $s; $f.$r = $r; return $f;
100597  	};
100598  	http2serverConn.prototype.stopShutdownTimer = function() { return this.$val.stopShutdownTimer(); };
100599  	http2serverConn.ptr.prototype.notePanic = function() {
100600  		var _r$1, e, sc, $s, $deferred, $r;
100601  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; e = $f.e; sc = $f.sc; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
100602  		sc = this;
100603  		/* */ if (!(http2testHookOnPanicMu === ptrType.nil)) { $s = 1; continue; }
100604  		/* */ $s = 2; continue;
100605  		/* if (!(http2testHookOnPanicMu === ptrType.nil)) { */ case 1:
100606  			$r = http2testHookOnPanicMu.Lock(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
100607  			$deferred.push([$methodVal(http2testHookOnPanicMu, "Unlock"), []]);
100608  		/* } */ case 2:
100609  		/* */ if (!(http2testHookOnPanic === $throwNilPointerError)) { $s = 4; continue; }
100610  		/* */ $s = 5; continue;
100611  		/* if (!(http2testHookOnPanic === $throwNilPointerError)) { */ case 4:
100612  			e = $recover();
100613  			/* */ if (!($interfaceIsEqual(e, $ifaceNil))) { $s = 6; continue; }
100614  			/* */ $s = 7; continue;
100615  			/* if (!($interfaceIsEqual(e, $ifaceNil))) { */ case 6:
100616  				_r$1 = http2testHookOnPanic(sc, e); /* */ $s = 10; case 10: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
100617  				/* */ if (_r$1) { $s = 8; continue; }
100618  				/* */ $s = 9; continue;
100619  				/* if (_r$1) { */ case 8:
100620  					$panic(e);
100621  				/* } */ case 9:
100622  			/* } */ case 7:
100623  		/* } */ case 5:
100624  		$s = -1; return;
100625  		/* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: http2serverConn.ptr.prototype.notePanic }; } $f._r$1 = _r$1; $f.e = e; $f.sc = sc; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
100626  	};
100627  	http2serverConn.prototype.notePanic = function() { return this.$val.notePanic(); };
100628  	http2serverConn.ptr.prototype.serve = function() {
100629  		var _1, _arg, _arg$1, _arg$2, _arg$3, _arg$4, _arg$5, _arg$6, _arg$7, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, _selection, _tuple, _v, diff, err, gracefulShutdownComplete, loopNum, m, msg, ok, res, res$1, sc, se, sentGoAway, settingsTimer, v, v$1, v$2, v$3, wr, x$4, $s, $deferred, $r;
100630  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _arg = $f._arg; _arg$1 = $f._arg$1; _arg$2 = $f._arg$2; _arg$3 = $f._arg$3; _arg$4 = $f._arg$4; _arg$5 = $f._arg$5; _arg$6 = $f._arg$6; _arg$7 = $f._arg$7; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _r$8 = $f._r$8; _r$9 = $f._r$9; _ref = $f._ref; _selection = $f._selection; _tuple = $f._tuple; _v = $f._v; diff = $f.diff; err = $f.err; gracefulShutdownComplete = $f.gracefulShutdownComplete; loopNum = $f.loopNum; m = $f.m; msg = $f.msg; ok = $f.ok; res = $f.res; res$1 = $f.res$1; sc = $f.sc; se = $f.se; sentGoAway = $f.sentGoAway; settingsTimer = $f.settingsTimer; v = $f.v; v$1 = $f.v$1; v$2 = $f.v$2; v$3 = $f.v$3; wr = $f.wr; x$4 = $f.x$4; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
100631  		sc = this;
100632  		$r = sc.serveG.check(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
100633  		$deferred.push([$methodVal(sc, "notePanic"), []]);
100634  		$deferred.push([$methodVal(sc.conn, "Close"), []]);
100635  		$deferred.push([$methodVal(sc, "closeAllStreamsOnConnClose"), []]);
100636  		$deferred.push([$methodVal(sc, "stopShutdownTimer"), []]);
100637  		$deferred.push([function(_arg) { $close(_arg); }, [sc.doneServing]]);
100638  		/* */ if (http2VerboseLogs) { $s = 2; continue; }
100639  		/* */ $s = 3; continue;
100640  		/* if (http2VerboseLogs) { */ case 2:
100641  			_r$1 = sc.conn.RemoteAddr(); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
100642  			_arg$1 = _r$1;
100643  			_arg$2 = sc.hs;
100644  			$r = sc.vlogf("http2: server connection from %v on %p", new sliceType([_arg$1, _arg$2])); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
100645  		/* } */ case 3:
100646  		$r = sc.writeFrame(new http2FrameWriteRequest.ptr(new http2writeSettings([new http2Setting.ptr(5, sc.srv.maxReadFrameSize()), new http2Setting.ptr(3, sc.advMaxStreams), new http2Setting.ptr(6, sc.maxHeaderListSize()), new http2Setting.ptr(4, ((sc.srv.initialStreamRecvWindowSize() >>> 0)))]), ptrType$6.nil, $chanNil)); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
100647  		sc.unackedSettings = sc.unackedSettings + (1) >> 0;
100648  		diff = sc.srv.initialConnRecvWindowSize() - 65535 >> 0;
100649  		/* */ if (diff > 0) { $s = 7; continue; }
100650  		/* */ $s = 8; continue;
100651  		/* if (diff > 0) { */ case 7:
100652  			$r = sc.sendWindowUpdate(ptrType$6.nil, ((diff >> 0))); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
100653  		/* } */ case 8:
100654  		_r$2 = sc.readPreface(); /* */ $s = 10; case 10: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
100655  		err = _r$2;
100656  		/* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 11; continue; }
100657  		/* */ $s = 12; continue;
100658  		/* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 11:
100659  			_arg$3 = err;
100660  			_r$3 = sc.conn.RemoteAddr(); /* */ $s = 13; case 13: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
100661  			_arg$4 = _r$3;
100662  			_arg$5 = err;
100663  			$r = sc.condlogf(_arg$3, "http2: server: error reading preface from client %v: %v", new sliceType([_arg$4, _arg$5])); /* */ $s = 14; case 14: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
100664  			$s = -1; return;
100665  		/* } */ case 12:
100666  		$r = sc.setConnState(1); /* */ $s = 15; case 15: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
100667  		$r = sc.setConnState(2); /* */ $s = 16; case 16: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
100668  		if (!((x$4 = sc.srv.IdleTimeout, (x$4.$high === 0 && x$4.$low === 0)))) {
100669  			sc.idleTimer = time.AfterFunc(sc.srv.IdleTimeout, $methodVal(sc, "onIdleTimer"));
100670  			$deferred.push([$methodVal(sc.idleTimer, "Stop"), []]);
100671  		}
100672  		$go($methodVal(sc, "readFrames"), []);
100673  		settingsTimer = time.AfterFunc(new time.Duration(0, 2000000000), $methodVal(sc, "onSettingsTimer"));
100674  		$deferred.push([$methodVal(settingsTimer, "Stop"), []]);
100675  		loopNum = 0;
100676  		/* while (true) { */ case 17:
100677  			loopNum = loopNum + (1) >> 0;
100678  			_r$4 = $select([[sc.wantWriteFrameCh], [sc.wroteFrameCh], [sc.readFrameCh], [sc.bodyReadCh], [sc.serveMsgCh]]); /* */ $s = 19; case 19: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
100679  			_selection = _r$4;
100680  			/* */ if (_selection[0] === 0) { $s = 20; continue; }
100681  			/* */ if (_selection[0] === 1) { $s = 21; continue; }
100682  			/* */ if (_selection[0] === 2) { $s = 22; continue; }
100683  			/* */ if (_selection[0] === 3) { $s = 23; continue; }
100684  			/* */ if (_selection[0] === 4) { $s = 24; continue; }
100685  			/* */ $s = 25; continue;
100686  			/* switch (0) { default: if (_selection[0] === 0) { */ case 20:
100687  				wr = $clone(_selection[1][0], http2FrameWriteRequest);
100688  				_tuple = $assertType(wr.write, http2StreamError, true);
100689  				se = $clone(_tuple[0], http2StreamError);
100690  				ok = _tuple[1];
100691  				/* */ if (ok) { $s = 26; continue; }
100692  				/* */ $s = 27; continue;
100693  				/* if (ok) { */ case 26:
100694  					$r = sc.resetStream($clone(se, http2StreamError)); /* */ $s = 28; case 28: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
100695  					/* break; */ $s = 25; continue;
100696  				/* } */ case 27:
100697  				$r = sc.writeFrame($clone(wr, http2FrameWriteRequest)); /* */ $s = 29; case 29: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
100698  				$s = 25; continue;
100699  			/* } else if (_selection[0] === 1) { */ case 21:
100700  				res = $clone(_selection[1][0], http2frameWriteResult);
100701  				$r = sc.wroteFrame($clone(res, http2frameWriteResult)); /* */ $s = 30; case 30: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
100702  				$s = 25; continue;
100703  			/* } else if (_selection[0] === 2) { */ case 22:
100704  				res$1 = $clone(_selection[1][0], http2readFrameResult);
100705  				_r$5 = sc.processFrameFromReader($clone(res$1, http2readFrameResult)); /* */ $s = 33; case 33: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
100706  				/* */ if (!_r$5) { $s = 31; continue; }
100707  				/* */ $s = 32; continue;
100708  				/* if (!_r$5) { */ case 31:
100709  					$s = -1; return;
100710  				/* } */ case 32:
100711  				$r = res$1.readMore(); /* */ $s = 34; case 34: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
100712  				if (!(settingsTimer === ptrType$56.nil)) {
100713  					settingsTimer.Stop();
100714  					settingsTimer = ptrType$56.nil;
100715  				}
100716  				$s = 25; continue;
100717  			/* } else if (_selection[0] === 3) { */ case 23:
100718  				m = $clone(_selection[1][0], http2bodyReadMsg);
100719  				$r = sc.noteBodyRead(m.st, m.n); /* */ $s = 35; case 35: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
100720  				$s = 25; continue;
100721  			/* } else if (_selection[0] === 4) { */ case 24:
100722  				msg = _selection[1][0];
100723  				_ref = msg;
100724  				/* */ if ($assertType(_ref, funcType$3, true)[1]) { $s = 36; continue; }
100725  				/* */ if ($assertType(_ref, ptrType$11, true)[1]) { $s = 37; continue; }
100726  				/* */ if ($assertType(_ref, ptrType$61, true)[1]) { $s = 38; continue; }
100727  				/* */ $s = 39; continue;
100728  				/* if ($assertType(_ref, funcType$3, true)[1]) { */ case 36:
100729  					v = _ref.$val;
100730  					$r = v(loopNum); /* */ $s = 41; case 41: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
100731  					$s = 40; continue;
100732  				/* } else if ($assertType(_ref, ptrType$11, true)[1]) { */ case 37:
100733  					v$1 = _ref.$val;
100734  						_1 = v$1;
100735  						/* */ if (_1 === (http2settingsTimerMsg)) { $s = 43; continue; }
100736  						/* */ if (_1 === (http2idleTimerMsg)) { $s = 44; continue; }
100737  						/* */ if (_1 === (http2shutdownTimerMsg)) { $s = 45; continue; }
100738  						/* */ if (_1 === (http2gracefulShutdownMsg)) { $s = 46; continue; }
100739  						/* */ $s = 47; continue;
100740  						/* if (_1 === (http2settingsTimerMsg)) { */ case 43:
100741  							_r$6 = sc.conn.RemoteAddr(); /* */ $s = 49; case 49: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
100742  							_arg$6 = _r$6;
100743  							$r = sc.logf("timeout waiting for SETTINGS frames from %v", new sliceType([_arg$6])); /* */ $s = 50; case 50: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
100744  							$s = -1; return;
100745  						/* } else if (_1 === (http2idleTimerMsg)) { */ case 44:
100746  							$r = sc.vlogf("connection is idle", new sliceType([])); /* */ $s = 51; case 51: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
100747  							$r = sc.goAway(0); /* */ $s = 52; case 52: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
100748  							$s = 48; continue;
100749  						/* } else if (_1 === (http2shutdownTimerMsg)) { */ case 45:
100750  							_r$7 = sc.conn.RemoteAddr(); /* */ $s = 53; case 53: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
100751  							_arg$7 = _r$7;
100752  							$r = sc.vlogf("GOAWAY close timer fired; closing conn from %v", new sliceType([_arg$7])); /* */ $s = 54; case 54: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
100753  							$s = -1; return;
100754  						/* } else if (_1 === (http2gracefulShutdownMsg)) { */ case 46:
100755  							$r = sc.startGracefulShutdownInternal(); /* */ $s = 55; case 55: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
100756  							$s = 48; continue;
100757  						/* } else { */ case 47:
100758  							$panic(new $String("unknown timer"));
100759  						/* } */ case 48:
100760  					case 42:
100761  					$s = 40; continue;
100762  				/* } else if ($assertType(_ref, ptrType$61, true)[1]) { */ case 38:
100763  					v$2 = _ref.$val;
100764  					$r = sc.startPush(v$2); /* */ $s = 56; case 56: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
100765  					$s = 40; continue;
100766  				/* } else { */ case 39:
100767  					v$3 = _ref;
100768  					_r$8 = fmt.Sprintf("unexpected type %T", new sliceType([v$3])); /* */ $s = 57; case 57: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
100769  					$panic(new $String(_r$8));
100770  				/* } */ case 40:
100771  			/* } } */ case 25:
100772  			sentGoAway = sc.inGoAway && !sc.needToSendGoAway && !sc.writingFrame;
100773  			if (!(sc.goAwayCode === 0)) { _v = false; $s = 58; continue s; }
100774  			_r$9 = sc.curOpenStreams(); /* */ $s = 59; case 59: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
100775  			_v = _r$9 === 0; case 58:
100776  			gracefulShutdownComplete = _v;
100777  			/* */ if (sentGoAway && sc.shutdownTimer === ptrType$56.nil && (!((sc.goAwayCode === 0)) || gracefulShutdownComplete)) { $s = 60; continue; }
100778  			/* */ $s = 61; continue;
100779  			/* if (sentGoAway && sc.shutdownTimer === ptrType$56.nil && (!((sc.goAwayCode === 0)) || gracefulShutdownComplete)) { */ case 60:
100780  				$r = sc.shutDownIn(http2goAwayTimeout); /* */ $s = 62; case 62: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
100781  			/* } */ case 61:
100782  		/* } */ $s = 17; continue; case 18:
100783  		$s = -1; return;
100784  		/* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: http2serverConn.ptr.prototype.serve }; } $f._1 = _1; $f._arg = _arg; $f._arg$1 = _arg$1; $f._arg$2 = _arg$2; $f._arg$3 = _arg$3; $f._arg$4 = _arg$4; $f._arg$5 = _arg$5; $f._arg$6 = _arg$6; $f._arg$7 = _arg$7; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._r$8 = _r$8; $f._r$9 = _r$9; $f._ref = _ref; $f._selection = _selection; $f._tuple = _tuple; $f._v = _v; $f.diff = diff; $f.err = err; $f.gracefulShutdownComplete = gracefulShutdownComplete; $f.loopNum = loopNum; $f.m = m; $f.msg = msg; $f.ok = ok; $f.res = res; $f.res$1 = res$1; $f.sc = sc; $f.se = se; $f.sentGoAway = sentGoAway; $f.settingsTimer = settingsTimer; $f.v = v; $f.v$1 = v$1; $f.v$2 = v$2; $f.v$3 = v$3; $f.wr = wr; $f.x$4 = x$4; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
100785  	};
100786  	http2serverConn.prototype.serve = function() { return this.$val.serve(); };
100787  	http2serverConn.ptr.prototype.onSettingsTimer = function() {
100788  		var sc, $s, $r;
100789  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; sc = $f.sc; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
100790  		sc = this;
100791  		$r = sc.sendServeMsg(http2settingsTimerMsg); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
100792  		$s = -1; return;
100793  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2serverConn.ptr.prototype.onSettingsTimer }; } $f.sc = sc; $f.$s = $s; $f.$r = $r; return $f;
100794  	};
100795  	http2serverConn.prototype.onSettingsTimer = function() { return this.$val.onSettingsTimer(); };
100796  	http2serverConn.ptr.prototype.onIdleTimer = function() {
100797  		var sc, $s, $r;
100798  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; sc = $f.sc; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
100799  		sc = this;
100800  		$r = sc.sendServeMsg(http2idleTimerMsg); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
100801  		$s = -1; return;
100802  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2serverConn.ptr.prototype.onIdleTimer }; } $f.sc = sc; $f.$s = $s; $f.$r = $r; return $f;
100803  	};
100804  	http2serverConn.prototype.onIdleTimer = function() { return this.$val.onIdleTimer(); };
100805  	http2serverConn.ptr.prototype.onShutdownTimer = function() {
100806  		var sc, $s, $r;
100807  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; sc = $f.sc; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
100808  		sc = this;
100809  		$r = sc.sendServeMsg(http2shutdownTimerMsg); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
100810  		$s = -1; return;
100811  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2serverConn.ptr.prototype.onShutdownTimer }; } $f.sc = sc; $f.$s = $s; $f.$r = $r; return $f;
100812  	};
100813  	http2serverConn.prototype.onShutdownTimer = function() { return this.$val.onShutdownTimer(); };
100814  	http2serverConn.ptr.prototype.sendServeMsg = function(msg) {
100815  		var _r$1, _selection, msg, sc, $s, $r;
100816  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; _selection = $f._selection; msg = $f.msg; sc = $f.sc; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
100817  		sc = this;
100818  		$r = sc.serveG.checkNotOn(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
100819  		_r$1 = $select([[sc.serveMsgCh, msg], [sc.doneServing]]); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
100820  		_selection = _r$1;
100821  		if (_selection[0] === 0) {
100822  		} else if (_selection[0] === 1) {
100823  		}
100824  		$s = -1; return;
100825  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2serverConn.ptr.prototype.sendServeMsg }; } $f._r$1 = _r$1; $f._selection = _selection; $f.msg = msg; $f.sc = sc; $f.$s = $s; $f.$r = $r; return $f;
100826  	};
100827  	http2serverConn.prototype.sendServeMsg = function(msg) { return this.$val.sendServeMsg(msg); };
100828  	http2serverConn.ptr.prototype.readPreface = function() {
100829  		var _arg, _r$1, _r$2, _selection, err, errc, sc, timer, $s, $deferred, $r;
100830  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _arg = $f._arg; _r$1 = $f._r$1; _r$2 = $f._r$2; _selection = $f._selection; err = $f.err; errc = $f.errc; sc = $f.sc; timer = $f.timer; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
100831  		errc = [errc];
100832  		sc = [sc];
100833  		sc[0] = this;
100834  		errc[0] = new $Chan($error, 1);
100835  		$go((function(errc, sc) { return function $b() {
100836  			var _r$1, _r$2, _tuple, buf, err, $s, $r;
100837  			/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; _r$2 = $f._r$2; _tuple = $f._tuple; buf = $f.buf; err = $f.err; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
100838  			buf = $makeSlice(sliceType$3, 24);
100839  			_r$1 = io.ReadFull(sc[0].conn, buf); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
100840  			_tuple = _r$1;
100841  			err = _tuple[1];
100842  			/* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 2; continue; }
100843  			/* */ if (!bytes.Equal(buf, http2clientPreface)) { $s = 3; continue; }
100844  			/* */ $s = 4; continue;
100845  			/* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 2:
100846  				$r = $send(errc[0], err); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
100847  				$s = 5; continue;
100848  			/* } else if (!bytes.Equal(buf, http2clientPreface)) { */ case 3:
100849  				_r$2 = fmt.Errorf("bogus greeting %q", new sliceType([buf])); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
100850  				$r = $send(errc[0], _r$2); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
100851  				$s = 5; continue;
100852  			/* } else { */ case 4:
100853  				$r = $send(errc[0], $ifaceNil); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
100854  			/* } */ case 5:
100855  			$s = -1; return;
100856  			/* */ } return; } if ($f === undefined) { $f = { $blk: $b }; } $f._r$1 = _r$1; $f._r$2 = _r$2; $f._tuple = _tuple; $f.buf = buf; $f.err = err; $f.$s = $s; $f.$r = $r; return $f;
100857  		}; })(errc, sc), []);
100858  		timer = time.NewTimer(new time.Duration(2, 1410065408));
100859  		$deferred.push([$methodVal(timer, "Stop"), []]);
100860  		_r$1 = $select([[timer.C], [errc[0]]]); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
100861  		_selection = _r$1;
100862  		/* */ if (_selection[0] === 0) { $s = 2; continue; }
100863  		/* */ if (_selection[0] === 1) { $s = 3; continue; }
100864  		/* */ $s = 4; continue;
100865  		/* if (_selection[0] === 0) { */ case 2:
100866  			$s = -1; return http2errPrefaceTimeout;
100867  		/* } else if (_selection[0] === 1) { */ case 3:
100868  			err = _selection[1][0];
100869  			/* */ if ($interfaceIsEqual(err, $ifaceNil)) { $s = 5; continue; }
100870  			/* */ $s = 6; continue;
100871  			/* if ($interfaceIsEqual(err, $ifaceNil)) { */ case 5:
100872  				/* */ if (http2VerboseLogs) { $s = 7; continue; }
100873  				/* */ $s = 8; continue;
100874  				/* if (http2VerboseLogs) { */ case 7:
100875  					_r$2 = sc[0].conn.RemoteAddr(); /* */ $s = 9; case 9: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
100876  					_arg = _r$2;
100877  					$r = sc[0].vlogf("http2: server: client %v said hello", new sliceType([_arg])); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
100878  				/* } */ case 8:
100879  			/* } */ case 6:
100880  			$s = -1; return err;
100881  		/* } */ case 4:
100882  		$s = -1; return $ifaceNil;
100883  		/* */ } return; } } catch(err) { $err = err; $s = -1; return $ifaceNil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: http2serverConn.ptr.prototype.readPreface }; } $f._arg = _arg; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._selection = _selection; $f.err = err; $f.errc = errc; $f.sc = sc; $f.timer = timer; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
100884  	};
100885  	http2serverConn.prototype.readPreface = function() { return this.$val.readPreface(); };
100886  	http2serverConn.ptr.prototype.writeDataFromHandler = function(stream, data, endStream) {
100887  		var _r$1, _r$2, _r$3, _r$4, _selection, _selection$1, ch, data, endStream, err, frameWriteDone, sc, stream, writeArg, $s, $r;
100888  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _selection = $f._selection; _selection$1 = $f._selection$1; ch = $f.ch; data = $f.data; endStream = $f.endStream; err = $f.err; frameWriteDone = $f.frameWriteDone; sc = $f.sc; stream = $f.stream; writeArg = $f.writeArg; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
100889  		sc = this;
100890  		_r$1 = http2errChanPool.Get(); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
100891  		ch = $assertType(_r$1, chanType);
100892  		_r$2 = http2writeDataPool.Get(); /* */ $s = 2; case 2: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
100893  		writeArg = $assertType(_r$2, ptrType$62);
100894  		http2writeData.copy(writeArg, new http2writeData.ptr(stream.id, data, endStream));
100895  		_r$3 = sc.writeFrameFromHandler(new http2FrameWriteRequest.ptr(writeArg, stream, ch)); /* */ $s = 3; case 3: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
100896  		err = _r$3;
100897  		if (!($interfaceIsEqual(err, $ifaceNil))) {
100898  			$s = -1; return err;
100899  		}
100900  		frameWriteDone = false;
100901  		_r$4 = $select([[ch], [sc.doneServing], [stream.cw]]); /* */ $s = 4; case 4: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
100902  		_selection = _r$4;
100903  		if (_selection[0] === 0) {
100904  			err = _selection[1][0];
100905  			frameWriteDone = true;
100906  		} else if (_selection[0] === 1) {
100907  			$s = -1; return http2errClientDisconnected;
100908  		} else if (_selection[0] === 2) {
100909  			_selection$1 = $select([[ch], []]);
100910  			if (_selection$1[0] === 0) {
100911  				err = _selection$1[1][0];
100912  				frameWriteDone = true;
100913  			} else if (_selection$1[0] === 1) {
100914  				$s = -1; return http2errStreamClosed;
100915  			}
100916  		}
100917  		http2errChanPool.Put(new chanType(ch));
100918  		if (frameWriteDone) {
100919  			http2writeDataPool.Put(writeArg);
100920  		}
100921  		$s = -1; return err;
100922  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2serverConn.ptr.prototype.writeDataFromHandler }; } $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._selection = _selection; $f._selection$1 = _selection$1; $f.ch = ch; $f.data = data; $f.endStream = endStream; $f.err = err; $f.frameWriteDone = frameWriteDone; $f.sc = sc; $f.stream = stream; $f.writeArg = writeArg; $f.$s = $s; $f.$r = $r; return $f;
100923  	};
100924  	http2serverConn.prototype.writeDataFromHandler = function(stream, data, endStream) { return this.$val.writeDataFromHandler(stream, data, endStream); };
100925  	http2serverConn.ptr.prototype.writeFrameFromHandler = function(wr) {
100926  		var _r$1, _selection, sc, wr, $s, $r;
100927  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; _selection = $f._selection; sc = $f.sc; wr = $f.wr; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
100928  		sc = this;
100929  		$r = sc.serveG.checkNotOn(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
100930  		_r$1 = $select([[sc.wantWriteFrameCh, $clone(wr, http2FrameWriteRequest)], [sc.doneServing]]); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
100931  		_selection = _r$1;
100932  		if (_selection[0] === 0) {
100933  			$s = -1; return $ifaceNil;
100934  		} else if (_selection[0] === 1) {
100935  			$s = -1; return http2errClientDisconnected;
100936  		}
100937  		$s = -1; return $ifaceNil;
100938  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2serverConn.ptr.prototype.writeFrameFromHandler }; } $f._r$1 = _r$1; $f._selection = _selection; $f.sc = sc; $f.wr = wr; $f.$s = $s; $f.$r = $r; return $f;
100939  	};
100940  	http2serverConn.prototype.writeFrameFromHandler = function(wr) { return this.$val.writeFrameFromHandler(wr); };
100941  	http2serverConn.ptr.prototype.writeFrame = function(wr) {
100942  		var _r$1, _ref, _tuple, _tuple$1, ignoreWrite, isReset, sc, state, wr, $s, $r;
100943  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; _ref = $f._ref; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; ignoreWrite = $f.ignoreWrite; isReset = $f.isReset; sc = $f.sc; state = $f.state; wr = $f.wr; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
100944  		sc = this;
100945  		$r = sc.serveG.check(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
100946  		ignoreWrite = false;
100947  		/* */ if (!(($clone(wr, http2FrameWriteRequest).StreamID() === 0))) { $s = 2; continue; }
100948  		/* */ $s = 3; continue;
100949  		/* if (!(($clone(wr, http2FrameWriteRequest).StreamID() === 0))) { */ case 2:
100950  			_tuple = $assertType(wr.write, http2StreamError, true);
100951  			isReset = _tuple[1];
100952  			_r$1 = sc.state($clone(wr, http2FrameWriteRequest).StreamID()); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
100953  			_tuple$1 = _r$1;
100954  			state = _tuple$1[0];
100955  			if ((state === 4) && !isReset) {
100956  				ignoreWrite = true;
100957  			}
100958  		/* } */ case 3:
100959  		_ref = wr.write;
100960  		if ($assertType(_ref, ptrType$63, true)[1]) {
100961  			wr.stream.wroteHeaders = true;
100962  		} else if ($assertType(_ref, http2write100ContinueHeadersFrame, true)[1]) {
100963  			if (wr.stream.wroteHeaders) {
100964  				if (!(wr.done === $chanNil)) {
100965  					$panic(new $String("wr.done != nil for write100ContinueHeadersFrame"));
100966  				}
100967  				ignoreWrite = true;
100968  			}
100969  		}
100970  		/* */ if (!ignoreWrite) { $s = 5; continue; }
100971  		/* */ $s = 6; continue;
100972  		/* if (!ignoreWrite) { */ case 5:
100973  			$r = sc.writeSched.Push($clone(wr, http2FrameWriteRequest)); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
100974  		/* } */ case 6:
100975  		$r = sc.scheduleFrameWrite(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
100976  		$s = -1; return;
100977  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2serverConn.ptr.prototype.writeFrame }; } $f._r$1 = _r$1; $f._ref = _ref; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.ignoreWrite = ignoreWrite; $f.isReset = isReset; $f.sc = sc; $f.state = state; $f.wr = wr; $f.$s = $s; $f.$r = $r; return $f;
100978  	};
100979  	http2serverConn.prototype.writeFrame = function(wr) { return this.$val.writeFrame(wr); };
100980  	http2serverConn.ptr.prototype.startFrameWrite = function(wr) {
100981  		var _1, _r$1, _r$2, _r$3, _r$4, _r$5, _ref, _tuple, _tuple$1, err, err$1, ok, sc, st, wpp, wr, $s, $r;
100982  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _ref = $f._ref; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; err = $f.err; err$1 = $f.err$1; ok = $f.ok; sc = $f.sc; st = $f.st; wpp = $f.wpp; wr = $f.wr; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
100983  		sc = this;
100984  		$r = sc.serveG.check(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
100985  		if (sc.writingFrame) {
100986  			$panic(new $String("internal error: can only be writing one frame at a time"));
100987  		}
100988  		st = wr.stream;
100989  		/* */ if (!(st === ptrType$6.nil)) { $s = 2; continue; }
100990  		/* */ $s = 3; continue;
100991  		/* if (!(st === ptrType$6.nil)) { */ case 2:
100992  				_1 = st.state;
100993  				/* */ if (_1 === (2)) { $s = 5; continue; }
100994  				/* */ if (_1 === (4)) { $s = 6; continue; }
100995  				/* */ $s = 7; continue;
100996  				/* if (_1 === (2)) { */ case 5:
100997  					_ref = wr.write;
100998  					/* */ if ($assertType(_ref, http2StreamError, true)[1] || $assertType(_ref, http2handlerPanicRST, true)[1] || $assertType(_ref, http2writeWindowUpdate, true)[1]) { $s = 8; continue; }
100999  					/* */ $s = 9; continue;
101000  					/* if ($assertType(_ref, http2StreamError, true)[1] || $assertType(_ref, http2handlerPanicRST, true)[1] || $assertType(_ref, http2writeWindowUpdate, true)[1]) { */ case 8:
101001  						$s = 10; continue;
101002  					/* } else { */ case 9:
101003  						_r$1 = fmt.Sprintf("internal error: attempt to send frame on a half-closed-local stream: %v", new sliceType([new wr.constructor.elem(wr)])); /* */ $s = 11; case 11: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
101004  						$panic(new $String(_r$1));
101005  					/* } */ case 10:
101006  					$s = 7; continue;
101007  				/* } else if (_1 === (4)) { */ case 6:
101008  					_r$2 = fmt.Sprintf("internal error: attempt to send frame on a closed stream: %v", new sliceType([new wr.constructor.elem(wr)])); /* */ $s = 12; case 12: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
101009  					$panic(new $String(_r$2));
101010  				/* } */ case 7:
101011  			case 4:
101012  		/* } */ case 3:
101013  		_tuple = $assertType(wr.write, ptrType$64, true);
101014  		wpp = _tuple[0];
101015  		ok = _tuple[1];
101016  		/* */ if (ok) { $s = 13; continue; }
101017  		/* */ $s = 14; continue;
101018  		/* if (ok) { */ case 13:
101019  			err = $ifaceNil;
101020  			_r$3 = wpp.allocatePromisedID(); /* */ $s = 15; case 15: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
101021  			_tuple$1 = _r$3;
101022  			wpp.promisedID = _tuple$1[0];
101023  			err = _tuple$1[1];
101024  			/* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 16; continue; }
101025  			/* */ $s = 17; continue;
101026  			/* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 16:
101027  				sc.writingFrameAsync = false;
101028  				$r = wr.replyToWriter(err); /* */ $s = 18; case 18: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
101029  				$s = -1; return;
101030  			/* } */ case 17:
101031  		/* } */ case 14:
101032  		sc.writingFrame = true;
101033  		sc.needsFrameFlush = true;
101034  		_r$4 = wr.write.staysWithinBuffer(sc.bw.Available()); /* */ $s = 22; case 22: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
101035  		/* */ if (_r$4) { $s = 19; continue; }
101036  		/* */ $s = 20; continue;
101037  		/* if (_r$4) { */ case 19:
101038  			sc.writingFrameAsync = false;
101039  			_r$5 = wr.write.writeFrame(sc); /* */ $s = 23; case 23: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
101040  			err$1 = _r$5;
101041  			$r = sc.wroteFrame(new http2frameWriteResult.ptr($clone(wr, http2FrameWriteRequest), err$1)); /* */ $s = 24; case 24: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
101042  			$s = 21; continue;
101043  		/* } else { */ case 20:
101044  			sc.writingFrameAsync = true;
101045  			$go($methodVal(sc, "writeFrameAsync"), [$clone(wr, http2FrameWriteRequest)]);
101046  		/* } */ case 21:
101047  		$s = -1; return;
101048  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2serverConn.ptr.prototype.startFrameWrite }; } $f._1 = _1; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._ref = _ref; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.err = err; $f.err$1 = err$1; $f.ok = ok; $f.sc = sc; $f.st = st; $f.wpp = wpp; $f.wr = wr; $f.$s = $s; $f.$r = $r; return $f;
101049  	};
101050  	http2serverConn.prototype.startFrameWrite = function(wr) { return this.$val.startFrameWrite(wr); };
101051  	http2serverConn.ptr.prototype.wroteFrame = function(res) {
101052  		var _1, _entry, _ref, _tuple, ok, res, sc, st, st$1, v, v$1, wr, $s, $r;
101053  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _entry = $f._entry; _ref = $f._ref; _tuple = $f._tuple; ok = $f.ok; res = $f.res; sc = $f.sc; st = $f.st; st$1 = $f.st$1; v = $f.v; v$1 = $f.v$1; wr = $f.wr; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
101054  		sc = this;
101055  		$r = sc.serveG.check(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
101056  		if (!sc.writingFrame) {
101057  			$panic(new $String("internal error: expected to be already writing a frame"));
101058  		}
101059  		sc.writingFrame = false;
101060  		sc.writingFrameAsync = false;
101061  		wr = $clone(res.wr, http2FrameWriteRequest);
101062  		/* */ if (http2writeEndsStream(wr.write)) { $s = 2; continue; }
101063  		/* */ $s = 3; continue;
101064  		/* if (http2writeEndsStream(wr.write)) { */ case 2:
101065  			st = wr.stream;
101066  			if (st === ptrType$6.nil) {
101067  				$panic(new $String("internal error: expecting non-nil stream"));
101068  			}
101069  				_1 = st.state;
101070  				/* */ if (_1 === (1)) { $s = 6; continue; }
101071  				/* */ if (_1 === (3)) { $s = 7; continue; }
101072  				/* */ $s = 8; continue;
101073  				/* if (_1 === (1)) { */ case 6:
101074  					st.state = 2;
101075  					$r = sc.resetStream($clone(http2streamError(st.id, 0), http2StreamError)); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
101076  					$s = 8; continue;
101077  				/* } else if (_1 === (3)) { */ case 7:
101078  					$r = sc.closeStream(st, http2errHandlerComplete); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
101079  				/* } */ case 8:
101080  			case 5:
101081  			$s = 4; continue;
101082  		/* } else { */ case 3:
101083  			_ref = wr.write;
101084  			/* */ if ($assertType(_ref, http2StreamError, true)[1]) { $s = 11; continue; }
101085  			/* */ if ($assertType(_ref, http2handlerPanicRST, true)[1]) { $s = 12; continue; }
101086  			/* */ $s = 13; continue;
101087  			/* if ($assertType(_ref, http2StreamError, true)[1]) { */ case 11:
101088  				v = $clone(_ref.$val, http2StreamError);
101089  				_tuple = (_entry = sc.streams[$Uint32.keyFor(v.StreamID)], _entry !== undefined ? [_entry.v, true] : [ptrType$6.nil, false]);
101090  				st$1 = _tuple[0];
101091  				ok = _tuple[1];
101092  				/* */ if (ok) { $s = 14; continue; }
101093  				/* */ $s = 15; continue;
101094  				/* if (ok) { */ case 14:
101095  					$r = sc.closeStream(st$1, new v.constructor.elem(v)); /* */ $s = 16; case 16: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
101096  				/* } */ case 15:
101097  				$s = 13; continue;
101098  			/* } else if ($assertType(_ref, http2handlerPanicRST, true)[1]) { */ case 12:
101099  				v$1 = $clone(_ref.$val, http2handlerPanicRST);
101100  				$r = sc.closeStream(wr.stream, http2errHandlerPanicked); /* */ $s = 17; case 17: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
101101  			/* } */ case 13:
101102  		/* } */ case 4:
101103  		$r = wr.replyToWriter(res.err); /* */ $s = 18; case 18: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
101104  		$r = sc.scheduleFrameWrite(); /* */ $s = 19; case 19: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
101105  		$s = -1; return;
101106  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2serverConn.ptr.prototype.wroteFrame }; } $f._1 = _1; $f._entry = _entry; $f._ref = _ref; $f._tuple = _tuple; $f.ok = ok; $f.res = res; $f.sc = sc; $f.st = st; $f.st$1 = st$1; $f.v = v; $f.v$1 = v$1; $f.wr = wr; $f.$s = $s; $f.$r = $r; return $f;
101107  	};
101108  	http2serverConn.prototype.wroteFrame = function(res) { return this.$val.wroteFrame(res); };
101109  	http2serverConn.ptr.prototype.scheduleFrameWrite = function() {
101110  		var _r$1, _tuple, ok, sc, wr, x$4, x$5, $s, $r;
101111  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; _tuple = $f._tuple; ok = $f.ok; sc = $f.sc; wr = $f.wr; x$4 = $f.x$4; x$5 = $f.x$5; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
101112  		sc = this;
101113  		$r = sc.serveG.check(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
101114  		if (sc.writingFrame || sc.inFrameScheduleLoop) {
101115  			$s = -1; return;
101116  		}
101117  		sc.inFrameScheduleLoop = true;
101118  		/* while (true) { */ case 2:
101119  			/* if (!(!sc.writingFrameAsync)) { break; } */ if(!(!sc.writingFrameAsync)) { $s = 3; continue; }
101120  			/* */ if (sc.needToSendGoAway) { $s = 4; continue; }
101121  			/* */ $s = 5; continue;
101122  			/* if (sc.needToSendGoAway) { */ case 4:
101123  				sc.needToSendGoAway = false;
101124  				$r = sc.startFrameWrite(new http2FrameWriteRequest.ptr(new http2writeGoAway.ptr(sc.maxClientStreamID, sc.goAwayCode), ptrType$6.nil, $chanNil)); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
101125  				/* continue; */ $s = 2; continue;
101126  			/* } */ case 5:
101127  			/* */ if (sc.needToSendSettingsAck) { $s = 7; continue; }
101128  			/* */ $s = 8; continue;
101129  			/* if (sc.needToSendSettingsAck) { */ case 7:
101130  				sc.needToSendSettingsAck = false;
101131  				$r = sc.startFrameWrite(new http2FrameWriteRequest.ptr((x$4 = new http2writeSettingsAck.ptr(), new x$4.constructor.elem(x$4)), ptrType$6.nil, $chanNil)); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
101132  				/* continue; */ $s = 2; continue;
101133  			/* } */ case 8:
101134  			/* */ if (!sc.inGoAway || (sc.goAwayCode === 0)) { $s = 10; continue; }
101135  			/* */ $s = 11; continue;
101136  			/* if (!sc.inGoAway || (sc.goAwayCode === 0)) { */ case 10:
101137  				_r$1 = sc.writeSched.Pop(); /* */ $s = 12; case 12: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
101138  				_tuple = _r$1;
101139  				wr = $clone(_tuple[0], http2FrameWriteRequest);
101140  				ok = _tuple[1];
101141  				/* */ if (ok) { $s = 13; continue; }
101142  				/* */ $s = 14; continue;
101143  				/* if (ok) { */ case 13:
101144  					$r = sc.startFrameWrite($clone(wr, http2FrameWriteRequest)); /* */ $s = 15; case 15: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
101145  					/* continue; */ $s = 2; continue;
101146  				/* } */ case 14:
101147  			/* } */ case 11:
101148  			/* */ if (sc.needsFrameFlush) { $s = 16; continue; }
101149  			/* */ $s = 17; continue;
101150  			/* if (sc.needsFrameFlush) { */ case 16:
101151  				$r = sc.startFrameWrite(new http2FrameWriteRequest.ptr((x$5 = new http2flushFrameWriter.ptr(), new x$5.constructor.elem(x$5)), ptrType$6.nil, $chanNil)); /* */ $s = 18; case 18: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
101152  				sc.needsFrameFlush = false;
101153  				/* continue; */ $s = 2; continue;
101154  			/* } */ case 17:
101155  			/* break; */ $s = 3; continue;
101156  		/* } */ $s = 2; continue; case 3:
101157  		sc.inFrameScheduleLoop = false;
101158  		$s = -1; return;
101159  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2serverConn.ptr.prototype.scheduleFrameWrite }; } $f._r$1 = _r$1; $f._tuple = _tuple; $f.ok = ok; $f.sc = sc; $f.wr = wr; $f.x$4 = x$4; $f.x$5 = x$5; $f.$s = $s; $f.$r = $r; return $f;
101160  	};
101161  	http2serverConn.prototype.scheduleFrameWrite = function() { return this.$val.scheduleFrameWrite(); };
101162  	http2serverConn.ptr.prototype.startGracefulShutdown = function() {
101163  		var sc, $s, $r;
101164  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; sc = $f.sc; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
101165  		sc = [sc];
101166  		sc[0] = this;
101167  		$r = sc[0].serveG.checkNotOn(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
101168  		$r = sc[0].shutdownOnce.Do((function(sc) { return function $b() {
101169  			var $s, $r;
101170  			/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
101171  			$r = sc[0].sendServeMsg(http2gracefulShutdownMsg); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
101172  			$s = -1; return;
101173  			/* */ } return; } if ($f === undefined) { $f = { $blk: $b }; } $f.$s = $s; $f.$r = $r; return $f;
101174  		}; })(sc)); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
101175  		$s = -1; return;
101176  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2serverConn.ptr.prototype.startGracefulShutdown }; } $f.sc = sc; $f.$s = $s; $f.$r = $r; return $f;
101177  	};
101178  	http2serverConn.prototype.startGracefulShutdown = function() { return this.$val.startGracefulShutdown(); };
101179  	http2serverConn.ptr.prototype.startGracefulShutdownInternal = function() {
101180  		var sc, $s, $r;
101181  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; sc = $f.sc; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
101182  		sc = this;
101183  		$r = sc.goAway(0); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
101184  		$s = -1; return;
101185  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2serverConn.ptr.prototype.startGracefulShutdownInternal }; } $f.sc = sc; $f.$s = $s; $f.$r = $r; return $f;
101186  	};
101187  	http2serverConn.prototype.startGracefulShutdownInternal = function() { return this.$val.startGracefulShutdownInternal(); };
101188  	http2serverConn.ptr.prototype.goAway = function(code) {
101189  		var code, sc, $s, $r;
101190  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; code = $f.code; sc = $f.sc; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
101191  		sc = this;
101192  		$r = sc.serveG.check(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
101193  		if (sc.inGoAway) {
101194  			$s = -1; return;
101195  		}
101196  		sc.inGoAway = true;
101197  		sc.needToSendGoAway = true;
101198  		sc.goAwayCode = code;
101199  		$r = sc.scheduleFrameWrite(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
101200  		$s = -1; return;
101201  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2serverConn.ptr.prototype.goAway }; } $f.code = code; $f.sc = sc; $f.$s = $s; $f.$r = $r; return $f;
101202  	};
101203  	http2serverConn.prototype.goAway = function(code) { return this.$val.goAway(code); };
101204  	http2serverConn.ptr.prototype.shutDownIn = function(d) {
101205  		var d, sc, $s, $r;
101206  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; d = $f.d; sc = $f.sc; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
101207  		sc = this;
101208  		$r = sc.serveG.check(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
101209  		sc.shutdownTimer = time.AfterFunc(d, $methodVal(sc, "onShutdownTimer"));
101210  		$s = -1; return;
101211  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2serverConn.ptr.prototype.shutDownIn }; } $f.d = d; $f.sc = sc; $f.$s = $s; $f.$r = $r; return $f;
101212  	};
101213  	http2serverConn.prototype.shutDownIn = function(d) { return this.$val.shutDownIn(d); };
101214  	http2serverConn.ptr.prototype.resetStream = function(se) {
101215  		var _entry, _tuple, ok, sc, se, st, $s, $r;
101216  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _entry = $f._entry; _tuple = $f._tuple; ok = $f.ok; sc = $f.sc; se = $f.se; st = $f.st; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
101217  		sc = this;
101218  		$r = sc.serveG.check(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
101219  		$r = sc.writeFrame(new http2FrameWriteRequest.ptr(new se.constructor.elem(se), ptrType$6.nil, $chanNil)); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
101220  		_tuple = (_entry = sc.streams[$Uint32.keyFor(se.StreamID)], _entry !== undefined ? [_entry.v, true] : [ptrType$6.nil, false]);
101221  		st = _tuple[0];
101222  		ok = _tuple[1];
101223  		if (ok) {
101224  			st.resetQueued = true;
101225  		}
101226  		$s = -1; return;
101227  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2serverConn.ptr.prototype.resetStream }; } $f._entry = _entry; $f._tuple = _tuple; $f.ok = ok; $f.sc = sc; $f.se = se; $f.st = st; $f.$s = $s; $f.$r = $r; return $f;
101228  	};
101229  	http2serverConn.prototype.resetStream = function(se) { return this.$val.resetStream(se); };
101230  	http2serverConn.ptr.prototype.processFrameFromReader = function(res) {
101231  		var _arg, _arg$1, _arg$2, _arg$3, _arg$4, _r$1, _r$2, _r$3, _r$4, _r$5, _ref, _v, clientGone, err, ev, ev$1, ev$2, ev$3, f, res, sc, $s, $r;
101232  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _arg = $f._arg; _arg$1 = $f._arg$1; _arg$2 = $f._arg$2; _arg$3 = $f._arg$3; _arg$4 = $f._arg$4; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _ref = $f._ref; _v = $f._v; clientGone = $f.clientGone; err = $f.err; ev = $f.ev; ev$1 = $f.ev$1; ev$2 = $f.ev$2; ev$3 = $f.ev$3; f = $f.f; res = $f.res; sc = $f.sc; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
101233  		sc = this;
101234  		$r = sc.serveG.check(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
101235  		err = res.err;
101236  		/* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 2; continue; }
101237  		/* */ $s = 3; continue;
101238  		/* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 2:
101239  			/* */ if ($interfaceIsEqual(err, http2ErrFrameTooLarge)) { $s = 5; continue; }
101240  			/* */ $s = 6; continue;
101241  			/* if ($interfaceIsEqual(err, http2ErrFrameTooLarge)) { */ case 5:
101242  				$r = sc.goAway(6); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
101243  				$s = -1; return true;
101244  			/* } */ case 6:
101245  			if ($interfaceIsEqual(err, io.EOF) || $interfaceIsEqual(err, io.ErrUnexpectedEOF)) { _v = true; $s = 8; continue s; }
101246  			_r$1 = http2isClosedConnError(err); /* */ $s = 9; case 9: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
101247  			_v = _r$1; case 8:
101248  			clientGone = _v;
101249  			if (clientGone) {
101250  				$s = -1; return false;
101251  			}
101252  			$s = 4; continue;
101253  		/* } else { */ case 3:
101254  			f = res.f;
101255  			/* */ if (http2VerboseLogs) { $s = 10; continue; }
101256  			/* */ $s = 11; continue;
101257  			/* if (http2VerboseLogs) { */ case 10:
101258  				_r$2 = http2summarizeFrame(f); /* */ $s = 12; case 12: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
101259  				_arg = new $String(_r$2);
101260  				$r = sc.vlogf("http2: server read frame %v", new sliceType([_arg])); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
101261  			/* } */ case 11:
101262  			_r$3 = sc.processFrame(f); /* */ $s = 14; case 14: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
101263  			err = _r$3;
101264  			if ($interfaceIsEqual(err, $ifaceNil)) {
101265  				$s = -1; return true;
101266  			}
101267  		/* } */ case 4:
101268  		_ref = err;
101269  		/* */ if ($assertType(_ref, http2StreamError, true)[1]) { $s = 15; continue; }
101270  		/* */ if ($assertType(_ref, http2goAwayFlowError, true)[1]) { $s = 16; continue; }
101271  		/* */ if ($assertType(_ref, http2ConnectionError, true)[1]) { $s = 17; continue; }
101272  		/* */ $s = 18; continue;
101273  		/* if ($assertType(_ref, http2StreamError, true)[1]) { */ case 15:
101274  			ev = $clone(_ref.$val, http2StreamError);
101275  			$r = sc.resetStream($clone(ev, http2StreamError)); /* */ $s = 20; case 20: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
101276  			$s = -1; return true;
101277  		/* } else if ($assertType(_ref, http2goAwayFlowError, true)[1]) { */ case 16:
101278  			ev$1 = $clone(_ref.$val, http2goAwayFlowError);
101279  			$r = sc.goAway(3); /* */ $s = 21; case 21: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
101280  			$s = -1; return true;
101281  		/* } else if ($assertType(_ref, http2ConnectionError, true)[1]) { */ case 17:
101282  			ev$2 = _ref.$val;
101283  			_r$4 = sc.conn.RemoteAddr(); /* */ $s = 22; case 22: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
101284  			_arg$1 = _r$4;
101285  			_arg$2 = new http2ConnectionError(ev$2);
101286  			$r = sc.logf("http2: server connection error from %v: %v", new sliceType([_arg$1, _arg$2])); /* */ $s = 23; case 23: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
101287  			$r = sc.goAway(((ev$2 >>> 0))); /* */ $s = 24; case 24: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
101288  			$s = -1; return true;
101289  		/* } else { */ case 18:
101290  			ev$3 = _ref;
101291  			/* */ if (!($interfaceIsEqual(res.err, $ifaceNil))) { $s = 25; continue; }
101292  			/* */ $s = 26; continue;
101293  			/* if (!($interfaceIsEqual(res.err, $ifaceNil))) { */ case 25:
101294  				_r$5 = sc.conn.RemoteAddr(); /* */ $s = 28; case 28: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
101295  				_arg$3 = _r$5;
101296  				_arg$4 = err;
101297  				$r = sc.vlogf("http2: server closing client connection; error reading frame from client %s: %v", new sliceType([_arg$3, _arg$4])); /* */ $s = 29; case 29: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
101298  				$s = 27; continue;
101299  			/* } else { */ case 26:
101300  				$r = sc.logf("http2: server closing client connection: %v", new sliceType([err])); /* */ $s = 30; case 30: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
101301  			/* } */ case 27:
101302  			$s = -1; return false;
101303  		/* } */ case 19:
101304  		$s = -1; return false;
101305  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2serverConn.ptr.prototype.processFrameFromReader }; } $f._arg = _arg; $f._arg$1 = _arg$1; $f._arg$2 = _arg$2; $f._arg$3 = _arg$3; $f._arg$4 = _arg$4; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._ref = _ref; $f._v = _v; $f.clientGone = clientGone; $f.err = err; $f.ev = ev; $f.ev$1 = ev$1; $f.ev$2 = ev$2; $f.ev$3 = ev$3; $f.f = f; $f.res = res; $f.sc = sc; $f.$s = $s; $f.$r = $r; return $f;
101306  	};
101307  	http2serverConn.prototype.processFrameFromReader = function(res) { return this.$val.processFrameFromReader(res); };
101308  	http2serverConn.ptr.prototype.processFrame = function(f) {
101309  		var _arg, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, _tuple, f, f$1, f$10, f$2, f$3, f$4, f$5, f$6, f$7, f$8, f$9, ok, sc, x$4, $s, $r;
101310  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _arg = $f._arg; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _r$8 = $f._r$8; _r$9 = $f._r$9; _ref = $f._ref; _tuple = $f._tuple; f = $f.f; f$1 = $f.f$1; f$10 = $f.f$10; f$2 = $f.f$2; f$3 = $f.f$3; f$4 = $f.f$4; f$5 = $f.f$5; f$6 = $f.f$6; f$7 = $f.f$7; f$8 = $f.f$8; f$9 = $f.f$9; ok = $f.ok; sc = $f.sc; x$4 = $f.x$4; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
101311  		sc = this;
101312  		$r = sc.serveG.check(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
101313  		if (!sc.sawFirstSettings) {
101314  			_tuple = $assertType(f, ptrType$40, true);
101315  			ok = _tuple[1];
101316  			if (!ok) {
101317  				$s = -1; return new http2ConnectionError(1);
101318  			}
101319  			sc.sawFirstSettings = true;
101320  		}
101321  		_ref = f;
101322  		/* */ if ($assertType(_ref, ptrType$40, true)[1]) { $s = 2; continue; }
101323  		/* */ if ($assertType(_ref, ptrType$38, true)[1]) { $s = 3; continue; }
101324  		/* */ if ($assertType(_ref, ptrType$42, true)[1]) { $s = 4; continue; }
101325  		/* */ if ($assertType(_ref, ptrType$43, true)[1]) { $s = 5; continue; }
101326  		/* */ if ($assertType(_ref, ptrType$41, true)[1]) { $s = 6; continue; }
101327  		/* */ if ($assertType(_ref, ptrType$45, true)[1]) { $s = 7; continue; }
101328  		/* */ if ($assertType(_ref, ptrType$65, true)[1]) { $s = 8; continue; }
101329  		/* */ if ($assertType(_ref, ptrType$44, true)[1]) { $s = 9; continue; }
101330  		/* */ if ($assertType(_ref, ptrType$66, true)[1]) { $s = 10; continue; }
101331  		/* */ $s = 11; continue;
101332  		/* if ($assertType(_ref, ptrType$40, true)[1]) { */ case 2:
101333  			f$1 = _ref.$val;
101334  			_r$1 = sc.processSettings(f$1); /* */ $s = 13; case 13: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
101335  			$s = -1; return _r$1;
101336  		/* } else if ($assertType(_ref, ptrType$38, true)[1]) { */ case 3:
101337  			f$2 = _ref.$val;
101338  			_r$2 = sc.processHeaders(f$2); /* */ $s = 14; case 14: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
101339  			$s = -1; return _r$2;
101340  		/* } else if ($assertType(_ref, ptrType$42, true)[1]) { */ case 4:
101341  			f$3 = _ref.$val;
101342  			_r$3 = sc.processWindowUpdate(f$3); /* */ $s = 15; case 15: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
101343  			$s = -1; return _r$3;
101344  		/* } else if ($assertType(_ref, ptrType$43, true)[1]) { */ case 5:
101345  			f$4 = _ref.$val;
101346  			_r$4 = sc.processPing(f$4); /* */ $s = 16; case 16: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
101347  			$s = -1; return _r$4;
101348  		/* } else if ($assertType(_ref, ptrType$41, true)[1]) { */ case 6:
101349  			f$5 = _ref.$val;
101350  			_r$5 = sc.processData(f$5); /* */ $s = 17; case 17: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
101351  			$s = -1; return _r$5;
101352  		/* } else if ($assertType(_ref, ptrType$45, true)[1]) { */ case 7:
101353  			f$6 = _ref.$val;
101354  			_r$6 = sc.processResetStream(f$6); /* */ $s = 18; case 18: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
101355  			$s = -1; return _r$6;
101356  		/* } else if ($assertType(_ref, ptrType$65, true)[1]) { */ case 8:
101357  			f$7 = _ref.$val;
101358  			_r$7 = sc.processPriority(f$7); /* */ $s = 19; case 19: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
101359  			$s = -1; return _r$7;
101360  		/* } else if ($assertType(_ref, ptrType$44, true)[1]) { */ case 9:
101361  			f$8 = _ref.$val;
101362  			_r$8 = sc.processGoAway(f$8); /* */ $s = 20; case 20: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
101363  			$s = -1; return _r$8;
101364  		/* } else if ($assertType(_ref, ptrType$66, true)[1]) { */ case 10:
101365  			f$9 = _ref.$val;
101366  			$s = -1; return new http2ConnectionError(1);
101367  		/* } else { */ case 11:
101368  			f$10 = _ref;
101369  			_r$9 = f$10.Header(); /* */ $s = 21; case 21: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
101370  			_arg = (x$4 = _r$9, new x$4.constructor.elem(x$4));
101371  			$r = sc.vlogf("http2: server ignoring frame: %v", new sliceType([_arg])); /* */ $s = 22; case 22: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
101372  			$s = -1; return $ifaceNil;
101373  		/* } */ case 12:
101374  		$s = -1; return $ifaceNil;
101375  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2serverConn.ptr.prototype.processFrame }; } $f._arg = _arg; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._r$8 = _r$8; $f._r$9 = _r$9; $f._ref = _ref; $f._tuple = _tuple; $f.f = f; $f.f$1 = f$1; $f.f$10 = f$10; $f.f$2 = f$2; $f.f$3 = f$3; $f.f$4 = f$4; $f.f$5 = f$5; $f.f$6 = f$6; $f.f$7 = f$7; $f.f$8 = f$8; $f.f$9 = f$9; $f.ok = ok; $f.sc = sc; $f.x$4 = x$4; $f.$s = $s; $f.$r = $r; return $f;
101376  	};
101377  	http2serverConn.prototype.processFrame = function(f) { return this.$val.processFrame(f); };
101378  	http2serverConn.ptr.prototype.processPing = function(f) {
101379  		var f, sc, x$4, $s, $r;
101380  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; f = $f.f; sc = $f.sc; x$4 = $f.x$4; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
101381  		sc = this;
101382  		$r = sc.serveG.check(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
101383  		if (f.IsAck()) {
101384  			$s = -1; return $ifaceNil;
101385  		}
101386  		if (!((f.http2FrameHeader.StreamID === 0))) {
101387  			$s = -1; return new http2ConnectionError(1);
101388  		}
101389  		if (sc.inGoAway && !((sc.goAwayCode === 0))) {
101390  			$s = -1; return $ifaceNil;
101391  		}
101392  		$r = sc.writeFrame(new http2FrameWriteRequest.ptr((x$4 = new http2writePingAck.ptr(f), new x$4.constructor.elem(x$4)), ptrType$6.nil, $chanNil)); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
101393  		$s = -1; return $ifaceNil;
101394  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2serverConn.ptr.prototype.processPing }; } $f.f = f; $f.sc = sc; $f.x$4 = x$4; $f.$s = $s; $f.$r = $r; return $f;
101395  	};
101396  	http2serverConn.prototype.processPing = function(f) { return this.$val.processPing(f); };
101397  	http2serverConn.ptr.prototype.processWindowUpdate = function(f) {
101398  		var _r$1, _tuple, f, sc, st, state, x$4, x$5, $s, $r;
101399  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; _tuple = $f._tuple; f = $f.f; sc = $f.sc; st = $f.st; state = $f.state; x$4 = $f.x$4; x$5 = $f.x$5; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
101400  		sc = this;
101401  		$r = sc.serveG.check(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
101402  			/* */ if (!((f.http2FrameHeader.StreamID === 0))) { $s = 3; continue; }
101403  			/* */ if (!sc.flow.add(((f.Increment >> 0)))) { $s = 4; continue; }
101404  			/* */ $s = 5; continue;
101405  			/* if (!((f.http2FrameHeader.StreamID === 0))) { */ case 3:
101406  				_r$1 = sc.state(f.http2FrameHeader.StreamID); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
101407  				_tuple = _r$1;
101408  				state = _tuple[0];
101409  				st = _tuple[1];
101410  				if (state === 0) {
101411  					$s = -1; return new http2ConnectionError(1);
101412  				}
101413  				if (st === ptrType$6.nil) {
101414  					$s = -1; return $ifaceNil;
101415  				}
101416  				if (!st.flow.add(((f.Increment >> 0)))) {
101417  					$s = -1; return (x$4 = http2streamError(f.http2FrameHeader.StreamID, 3), new x$4.constructor.elem(x$4));
101418  				}
101419  				$s = 5; continue;
101420  			/* } else if (!sc.flow.add(((f.Increment >> 0)))) { */ case 4:
101421  				$s = -1; return (x$5 = new http2goAwayFlowError.ptr(), new x$5.constructor.elem(x$5));
101422  			/* } */ case 5:
101423  		case 2:
101424  		$r = sc.scheduleFrameWrite(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
101425  		$s = -1; return $ifaceNil;
101426  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2serverConn.ptr.prototype.processWindowUpdate }; } $f._r$1 = _r$1; $f._tuple = _tuple; $f.f = f; $f.sc = sc; $f.st = st; $f.state = state; $f.x$4 = x$4; $f.x$5 = x$5; $f.$s = $s; $f.$r = $r; return $f;
101427  	};
101428  	http2serverConn.prototype.processWindowUpdate = function(f) { return this.$val.processWindowUpdate(f); };
101429  	http2serverConn.ptr.prototype.processResetStream = function(f) {
101430  		var _r$1, _tuple, f, sc, st, state, x$4, $s, $r;
101431  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; _tuple = $f._tuple; f = $f.f; sc = $f.sc; st = $f.st; state = $f.state; x$4 = $f.x$4; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
101432  		sc = this;
101433  		$r = sc.serveG.check(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
101434  		_r$1 = sc.state(f.http2FrameHeader.StreamID); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
101435  		_tuple = _r$1;
101436  		state = _tuple[0];
101437  		st = _tuple[1];
101438  		if (state === 0) {
101439  			$s = -1; return new http2ConnectionError(1);
101440  		}
101441  		/* */ if (!(st === ptrType$6.nil)) { $s = 3; continue; }
101442  		/* */ $s = 4; continue;
101443  		/* if (!(st === ptrType$6.nil)) { */ case 3:
101444  			$r = st.cancelCtx(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
101445  			$r = sc.closeStream(st, (x$4 = http2streamError(f.http2FrameHeader.StreamID, f.ErrCode), new x$4.constructor.elem(x$4))); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
101446  		/* } */ case 4:
101447  		$s = -1; return $ifaceNil;
101448  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2serverConn.ptr.prototype.processResetStream }; } $f._r$1 = _r$1; $f._tuple = _tuple; $f.f = f; $f.sc = sc; $f.st = st; $f.state = state; $f.x$4 = x$4; $f.$s = $s; $f.$r = $r; return $f;
101449  	};
101450  	http2serverConn.prototype.processResetStream = function(f) { return this.$val.processResetStream(f); };
101451  	http2serverConn.ptr.prototype.closeStream = function(st, err) {
101452  		var _arg, _arg$1, _r$1, _r$2, _r$3, err, p, sc, st, x$4, $s, $r;
101453  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _arg = $f._arg; _arg$1 = $f._arg$1; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; err = $f.err; p = $f.p; sc = $f.sc; st = $f.st; x$4 = $f.x$4; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
101454  		sc = this;
101455  		$r = sc.serveG.check(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
101456  		/* */ if ((st.state === 0) || (st.state === 4)) { $s = 2; continue; }
101457  		/* */ $s = 3; continue;
101458  		/* if ((st.state === 0) || (st.state === 4)) { */ case 2:
101459  			_r$1 = fmt.Sprintf("invariant; can't close stream in state %v", new sliceType([new http2streamState(st.state)])); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
101460  			$panic(new $String(_r$1));
101461  		/* } */ case 3:
101462  		st.state = 4;
101463  		if (!(st.writeDeadline === ptrType$56.nil)) {
101464  			st.writeDeadline.Stop();
101465  		}
101466  		if (st.isPushed()) {
101467  			sc.curPushedStreams = sc.curPushedStreams - (1) >>> 0;
101468  		} else {
101469  			sc.curClientStreams = sc.curClientStreams - (1) >>> 0;
101470  		}
101471  		delete sc.streams[$Uint32.keyFor(st.id)];
101472  		/* */ if ($keys(sc.streams).length === 0) { $s = 5; continue; }
101473  		/* */ $s = 6; continue;
101474  		/* if ($keys(sc.streams).length === 0) { */ case 5:
101475  			$r = sc.setConnState(2); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
101476  			if (!((x$4 = sc.srv.IdleTimeout, (x$4.$high === 0 && x$4.$low === 0)))) {
101477  				sc.idleTimer.Reset(sc.srv.IdleTimeout);
101478  			}
101479  			_r$2 = http2h1ServerKeepAlivesDisabled(sc.hs); /* */ $s = 10; case 10: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
101480  			/* */ if (_r$2) { $s = 8; continue; }
101481  			/* */ $s = 9; continue;
101482  			/* if (_r$2) { */ case 8:
101483  				$r = sc.startGracefulShutdownInternal(); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
101484  			/* } */ case 9:
101485  		/* } */ case 6:
101486  		p = st.body;
101487  		/* */ if (!(p === ptrType$67.nil)) { $s = 12; continue; }
101488  		/* */ $s = 13; continue;
101489  		/* if (!(p === ptrType$67.nil)) { */ case 12:
101490  			_arg = ptrType$6.nil;
101491  			_r$3 = p.Len(); /* */ $s = 14; case 14: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
101492  			_arg$1 = _r$3;
101493  			$r = sc.sendWindowUpdate(_arg, _arg$1); /* */ $s = 15; case 15: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
101494  			$r = p.CloseWithError(err); /* */ $s = 16; case 16: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
101495  		/* } */ case 13:
101496  		new http2closeWaiter(st.cw).Close();
101497  		$r = sc.writeSched.CloseStream(st.id); /* */ $s = 17; case 17: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
101498  		$s = -1; return;
101499  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2serverConn.ptr.prototype.closeStream }; } $f._arg = _arg; $f._arg$1 = _arg$1; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f.err = err; $f.p = p; $f.sc = sc; $f.st = st; $f.x$4 = x$4; $f.$s = $s; $f.$r = $r; return $f;
101500  	};
101501  	http2serverConn.prototype.closeStream = function(st, err) { return this.$val.closeStream(st, err); };
101502  	http2serverConn.ptr.prototype.processSettings = function(f) {
101503  		var _r$1, err, f, sc, $s, $r;
101504  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; err = $f.err; f = $f.f; sc = $f.sc; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
101505  		sc = this;
101506  		$r = sc.serveG.check(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
101507  		if (f.IsAck()) {
101508  			sc.unackedSettings = sc.unackedSettings - (1) >> 0;
101509  			if (sc.unackedSettings < 0) {
101510  				$s = -1; return new http2ConnectionError(1);
101511  			}
101512  			$s = -1; return $ifaceNil;
101513  		}
101514  		_r$1 = f.ForeachSetting($methodVal(sc, "processSetting")); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
101515  		err = _r$1;
101516  		if (!($interfaceIsEqual(err, $ifaceNil))) {
101517  			$s = -1; return err;
101518  		}
101519  		sc.needToSendSettingsAck = true;
101520  		$r = sc.scheduleFrameWrite(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
101521  		$s = -1; return $ifaceNil;
101522  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2serverConn.ptr.prototype.processSettings }; } $f._r$1 = _r$1; $f.err = err; $f.f = f; $f.sc = sc; $f.$s = $s; $f.$r = $r; return $f;
101523  	};
101524  	http2serverConn.prototype.processSettings = function(f) { return this.$val.processSettings(f); };
101525  	http2serverConn.ptr.prototype.processSetting = function(s) {
101526  		var _1, _r$1, err, s, sc, $s, $r;
101527  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _r$1 = $f._r$1; err = $f.err; s = $f.s; sc = $f.sc; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
101528  		sc = this;
101529  		$r = sc.serveG.check(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
101530  		err = $clone(s, http2Setting).Valid();
101531  		if (!($interfaceIsEqual(err, $ifaceNil))) {
101532  			$s = -1; return err;
101533  		}
101534  		/* */ if (http2VerboseLogs) { $s = 2; continue; }
101535  		/* */ $s = 3; continue;
101536  		/* if (http2VerboseLogs) { */ case 2:
101537  			$r = sc.vlogf("http2: server processing setting %v", new sliceType([new s.constructor.elem(s)])); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
101538  		/* } */ case 3:
101539  			_1 = s.ID;
101540  			/* */ if (_1 === (1)) { $s = 6; continue; }
101541  			/* */ if (_1 === (2)) { $s = 7; continue; }
101542  			/* */ if (_1 === (3)) { $s = 8; continue; }
101543  			/* */ if (_1 === (4)) { $s = 9; continue; }
101544  			/* */ if (_1 === (5)) { $s = 10; continue; }
101545  			/* */ if (_1 === (6)) { $s = 11; continue; }
101546  			/* */ if (http2VerboseLogs) { $s = 12; continue; }
101547  			/* */ $s = 13; continue;
101548  			/* if (_1 === (1)) { */ case 6:
101549  				sc.headerTableSize = s.Val;
101550  				$r = sc.hpackEncoder.SetMaxDynamicTableSize(s.Val); /* */ $s = 14; case 14: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
101551  				$s = 13; continue;
101552  			/* } else if (_1 === (2)) { */ case 7:
101553  				sc.pushEnabled = !((s.Val === 0));
101554  				$s = 13; continue;
101555  			/* } else if (_1 === (3)) { */ case 8:
101556  				sc.clientMaxStreams = s.Val;
101557  				$s = 13; continue;
101558  			/* } else if (_1 === (4)) { */ case 9:
101559  				_r$1 = sc.processSettingInitialWindowSize(s.Val); /* */ $s = 15; case 15: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
101560  				$s = -1; return _r$1;
101561  			/* } else if (_1 === (5)) { */ case 10:
101562  				sc.maxFrameSize = ((s.Val >> 0));
101563  				$s = 13; continue;
101564  			/* } else if (_1 === (6)) { */ case 11:
101565  				sc.peerMaxHeaderListSize = s.Val;
101566  				$s = 13; continue;
101567  			/* } else if (http2VerboseLogs) { */ case 12:
101568  				$r = sc.vlogf("http2: server ignoring unknown setting %v", new sliceType([new s.constructor.elem(s)])); /* */ $s = 16; case 16: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
101569  			/* } */ case 13:
101570  		case 5:
101571  		$s = -1; return $ifaceNil;
101572  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2serverConn.ptr.prototype.processSetting }; } $f._1 = _1; $f._r$1 = _r$1; $f.err = err; $f.s = s; $f.sc = sc; $f.$s = $s; $f.$r = $r; return $f;
101573  	};
101574  	http2serverConn.prototype.processSetting = function(s) { return this.$val.processSetting(s); };
101575  	http2serverConn.ptr.prototype.processSettingInitialWindowSize = function(val) {
101576  		var _entry, _i, _keys, _ref, growth, old, sc, st, val, $s, $r;
101577  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _entry = $f._entry; _i = $f._i; _keys = $f._keys; _ref = $f._ref; growth = $f.growth; old = $f.old; sc = $f.sc; st = $f.st; val = $f.val; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
101578  		sc = this;
101579  		$r = sc.serveG.check(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
101580  		old = sc.initialStreamSendWindowSize;
101581  		sc.initialStreamSendWindowSize = ((val >> 0));
101582  		growth = ((val >> 0)) - old >> 0;
101583  		_ref = sc.streams;
101584  		_i = 0;
101585  		_keys = $keys(_ref);
101586  		while (true) {
101587  			if (!(_i < _keys.length)) { break; }
101588  			_entry = _ref[_keys[_i]];
101589  			if (_entry === undefined) {
101590  				_i++;
101591  				continue;
101592  			}
101593  			st = _entry.v;
101594  			if (!st.flow.add(growth)) {
101595  				$s = -1; return new http2ConnectionError(3);
101596  			}
101597  			_i++;
101598  		}
101599  		$s = -1; return $ifaceNil;
101600  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2serverConn.ptr.prototype.processSettingInitialWindowSize }; } $f._entry = _entry; $f._i = _i; $f._keys = _keys; $f._ref = _ref; $f.growth = growth; $f.old = old; $f.sc = sc; $f.st = st; $f.val = val; $f.$s = $s; $f.$r = $r; return $f;
101601  	};
101602  	http2serverConn.prototype.processSettingInitialWindowSize = function(val) { return this.$val.processSettingInitialWindowSize(val); };
101603  	http2serverConn.ptr.prototype.processData = function(f) {
101604  		var _r$1, _r$2, _r$3, _tuple, _tuple$1, data, err, f, id, pad, sc, st, state, wrote, x$10, x$11, x$12, x$13, x$14, x$15, x$4, x$5, x$6, x$7, x$8, x$9, $s, $r;
101605  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; data = $f.data; err = $f.err; f = $f.f; id = $f.id; pad = $f.pad; sc = $f.sc; st = $f.st; state = $f.state; wrote = $f.wrote; x$10 = $f.x$10; x$11 = $f.x$11; x$12 = $f.x$12; x$13 = $f.x$13; x$14 = $f.x$14; x$15 = $f.x$15; x$4 = $f.x$4; x$5 = $f.x$5; x$6 = $f.x$6; x$7 = $f.x$7; x$8 = $f.x$8; x$9 = $f.x$9; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
101606  		sc = this;
101607  		$r = sc.serveG.check(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
101608  		if (sc.inGoAway && !((sc.goAwayCode === 0))) {
101609  			$s = -1; return $ifaceNil;
101610  		}
101611  		data = f.Data();
101612  		id = $clone(f.http2FrameHeader, http2FrameHeader).Header().StreamID;
101613  		_r$1 = sc.state(id); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
101614  		_tuple = _r$1;
101615  		state = _tuple[0];
101616  		st = _tuple[1];
101617  		if ((id === 0) || (state === 0)) {
101618  			$s = -1; return new http2ConnectionError(1);
101619  		}
101620  		/* */ if (st === ptrType$6.nil || !((state === 1)) || st.gotTrailerHeader || st.resetQueued) { $s = 3; continue; }
101621  		/* */ $s = 4; continue;
101622  		/* if (st === ptrType$6.nil || !((state === 1)) || st.gotTrailerHeader || st.resetQueued) { */ case 3:
101623  			if (sc.inflow.available() < ((f.http2FrameHeader.Length >> 0))) {
101624  				$s = -1; return (x$4 = http2streamError(id, 3), new x$4.constructor.elem(x$4));
101625  			}
101626  			sc.inflow.take(((f.http2FrameHeader.Length >> 0)));
101627  			$r = sc.sendWindowUpdate(ptrType$6.nil, ((f.http2FrameHeader.Length >> 0))); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
101628  			if (!(st === ptrType$6.nil) && st.resetQueued) {
101629  				$s = -1; return $ifaceNil;
101630  			}
101631  			$s = -1; return (x$5 = http2streamError(id, 5), new x$5.constructor.elem(x$5));
101632  		/* } */ case 4:
101633  		if (st.body === ptrType$67.nil) {
101634  			$panic(new $String("internal error: should have a body in this state"));
101635  		}
101636  		/* */ if (!((x$6 = st.declBodyBytes, (x$6.$high === -1 && x$6.$low === 4294967295))) && (x$7 = (x$8 = st.bodyBytes, x$9 = (new $Int64(0, data.$length)), new $Int64(x$8.$high + x$9.$high, x$8.$low + x$9.$low)), x$10 = st.declBodyBytes, (x$7.$high > x$10.$high || (x$7.$high === x$10.$high && x$7.$low > x$10.$low)))) { $s = 6; continue; }
101637  		/* */ $s = 7; continue;
101638  		/* if (!((x$6 = st.declBodyBytes, (x$6.$high === -1 && x$6.$low === 4294967295))) && (x$7 = (x$8 = st.bodyBytes, x$9 = (new $Int64(0, data.$length)), new $Int64(x$8.$high + x$9.$high, x$8.$low + x$9.$low)), x$10 = st.declBodyBytes, (x$7.$high > x$10.$high || (x$7.$high === x$10.$high && x$7.$low > x$10.$low)))) { */ case 6:
101639  			_r$2 = fmt.Errorf("sender tried to send more than declared Content-Length of %d bytes", new sliceType([st.declBodyBytes])); /* */ $s = 8; case 8: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
101640  			$r = st.body.CloseWithError(_r$2); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
101641  			$s = -1; return (x$11 = http2streamError(id, 5), new x$11.constructor.elem(x$11));
101642  		/* } */ case 7:
101643  		/* */ if (f.http2FrameHeader.Length > 0) { $s = 10; continue; }
101644  		/* */ $s = 11; continue;
101645  		/* if (f.http2FrameHeader.Length > 0) { */ case 10:
101646  			if (st.inflow.available() < ((f.http2FrameHeader.Length >> 0))) {
101647  				$s = -1; return (x$12 = http2streamError(id, 3), new x$12.constructor.elem(x$12));
101648  			}
101649  			st.inflow.take(((f.http2FrameHeader.Length >> 0)));
101650  			/* */ if (data.$length > 0) { $s = 12; continue; }
101651  			/* */ $s = 13; continue;
101652  			/* if (data.$length > 0) { */ case 12:
101653  				_r$3 = st.body.Write(data); /* */ $s = 14; case 14: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
101654  				_tuple$1 = _r$3;
101655  				wrote = _tuple$1[0];
101656  				err = _tuple$1[1];
101657  				if (!($interfaceIsEqual(err, $ifaceNil))) {
101658  					$s = -1; return (x$13 = http2streamError(id, 5), new x$13.constructor.elem(x$13));
101659  				}
101660  				if (!((wrote === data.$length))) {
101661  					$panic(new $String("internal error: bad Writer"));
101662  				}
101663  				st.bodyBytes = (x$14 = st.bodyBytes, x$15 = (new $Int64(0, data.$length)), new $Int64(x$14.$high + x$15.$high, x$14.$low + x$15.$low));
101664  			/* } */ case 13:
101665  			pad = ((f.http2FrameHeader.Length >> 0)) - ((data.$length >> 0)) >> 0;
101666  			/* */ if (pad > 0) { $s = 15; continue; }
101667  			/* */ $s = 16; continue;
101668  			/* if (pad > 0) { */ case 15:
101669  				$r = sc.sendWindowUpdate32(ptrType$6.nil, pad); /* */ $s = 17; case 17: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
101670  				$r = sc.sendWindowUpdate32(st, pad); /* */ $s = 18; case 18: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
101671  			/* } */ case 16:
101672  		/* } */ case 11:
101673  		/* */ if (f.StreamEnded()) { $s = 19; continue; }
101674  		/* */ $s = 20; continue;
101675  		/* if (f.StreamEnded()) { */ case 19:
101676  			$r = st.endStream(); /* */ $s = 21; case 21: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
101677  		/* } */ case 20:
101678  		$s = -1; return $ifaceNil;
101679  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2serverConn.ptr.prototype.processData }; } $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.data = data; $f.err = err; $f.f = f; $f.id = id; $f.pad = pad; $f.sc = sc; $f.st = st; $f.state = state; $f.wrote = wrote; $f.x$10 = x$10; $f.x$11 = x$11; $f.x$12 = x$12; $f.x$13 = x$13; $f.x$14 = x$14; $f.x$15 = x$15; $f.x$4 = x$4; $f.x$5 = x$5; $f.x$6 = x$6; $f.x$7 = x$7; $f.x$8 = x$8; $f.x$9 = x$9; $f.$s = $s; $f.$r = $r; return $f;
101680  	};
101681  	http2serverConn.prototype.processData = function(f) { return this.$val.processData(f); };
101682  	http2serverConn.ptr.prototype.processGoAway = function(f) {
101683  		var f, sc, $s, $r;
101684  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; f = $f.f; sc = $f.sc; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
101685  		sc = this;
101686  		$r = sc.serveG.check(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
101687  		/* */ if (!((f.ErrCode === 0))) { $s = 2; continue; }
101688  		/* */ $s = 3; continue;
101689  		/* if (!((f.ErrCode === 0))) { */ case 2:
101690  			$r = sc.logf("http2: received GOAWAY %+v, starting graceful shutdown", new sliceType([f])); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
101691  			$s = 4; continue;
101692  		/* } else { */ case 3:
101693  			$r = sc.vlogf("http2: received GOAWAY %+v, starting graceful shutdown", new sliceType([f])); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
101694  		/* } */ case 4:
101695  		$r = sc.startGracefulShutdownInternal(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
101696  		sc.pushEnabled = false;
101697  		$s = -1; return $ifaceNil;
101698  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2serverConn.ptr.prototype.processGoAway }; } $f.f = f; $f.sc = sc; $f.$s = $s; $f.$r = $r; return $f;
101699  	};
101700  	http2serverConn.prototype.processGoAway = function(f) { return this.$val.processGoAway(f); };
101701  	http2stream.ptr.prototype.isPushed = function() {
101702  		var _r$1, st;
101703  		st = this;
101704  		return (_r$1 = st.id % 2, _r$1 === _r$1 ? _r$1 : $throwRuntimeError("integer divide by zero")) === 0;
101705  	};
101706  	http2stream.prototype.isPushed = function() { return this.$val.isPushed(); };
101707  	http2stream.ptr.prototype.endStream = function() {
101708  		var _r$1, sc, st, x$4, x$5, x$6, $s, $r;
101709  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; sc = $f.sc; st = $f.st; x$4 = $f.x$4; x$5 = $f.x$5; x$6 = $f.x$6; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
101710  		st = this;
101711  		sc = st.sc;
101712  		$r = sc.serveG.check(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
101713  		/* */ if (!((x$4 = st.declBodyBytes, (x$4.$high === -1 && x$4.$low === 4294967295))) && !((x$5 = st.declBodyBytes, x$6 = st.bodyBytes, (x$5.$high === x$6.$high && x$5.$low === x$6.$low)))) { $s = 2; continue; }
101714  		/* */ $s = 3; continue;
101715  		/* if (!((x$4 = st.declBodyBytes, (x$4.$high === -1 && x$4.$low === 4294967295))) && !((x$5 = st.declBodyBytes, x$6 = st.bodyBytes, (x$5.$high === x$6.$high && x$5.$low === x$6.$low)))) { */ case 2:
101716  			_r$1 = fmt.Errorf("request declared a Content-Length of %d but only wrote %d bytes", new sliceType([st.declBodyBytes, st.bodyBytes])); /* */ $s = 5; case 5: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
101717  			$r = st.body.CloseWithError(_r$1); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
101718  			$s = 4; continue;
101719  		/* } else { */ case 3:
101720  			$r = st.body.closeWithErrorAndCode(io.EOF, $methodVal(st, "copyTrailersToHandlerRequest")); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
101721  			$r = st.body.CloseWithError(io.EOF); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
101722  		/* } */ case 4:
101723  		st.state = 3;
101724  		$s = -1; return;
101725  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2stream.ptr.prototype.endStream }; } $f._r$1 = _r$1; $f.sc = sc; $f.st = st; $f.x$4 = x$4; $f.x$5 = x$5; $f.x$6 = x$6; $f.$s = $s; $f.$r = $r; return $f;
101726  	};
101727  	http2stream.prototype.endStream = function() { return this.$val.endStream(); };
101728  	http2stream.ptr.prototype.copyTrailersToHandlerRequest = function() {
101729  		var _entry, _entry$1, _i, _key, _keys, _ref, _tuple, k, ok, st, vv;
101730  		st = this;
101731  		_ref = st.trailer;
101732  		_i = 0;
101733  		_keys = $keys(_ref);
101734  		while (true) {
101735  			if (!(_i < _keys.length)) { break; }
101736  			_entry = _ref[_keys[_i]];
101737  			if (_entry === undefined) {
101738  				_i++;
101739  				continue;
101740  			}
101741  			k = _entry.k;
101742  			vv = _entry.v;
101743  			_tuple = (_entry$1 = st.reqTrailer[$String.keyFor(k)], _entry$1 !== undefined ? [_entry$1.v, true] : [sliceType$1.nil, false]);
101744  			ok = _tuple[1];
101745  			if (ok) {
101746  				_key = k; (st.reqTrailer || $throwRuntimeError("assignment to entry in nil map"))[$String.keyFor(_key)] = { k: _key, v: vv };
101747  			}
101748  			_i++;
101749  		}
101750  	};
101751  	http2stream.prototype.copyTrailersToHandlerRequest = function() { return this.$val.copyTrailersToHandlerRequest(); };
101752  	http2stream.ptr.prototype.onWriteTimeout = function() {
101753  		var _r$1, st, x$4, $s, $r;
101754  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; st = $f.st; x$4 = $f.x$4; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
101755  		st = this;
101756  		_r$1 = st.sc.writeFrameFromHandler(new http2FrameWriteRequest.ptr((x$4 = http2streamError(st.id, 2), new x$4.constructor.elem(x$4)), ptrType$6.nil, $chanNil)); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
101757  		_r$1;
101758  		$s = -1; return;
101759  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2stream.ptr.prototype.onWriteTimeout }; } $f._r$1 = _r$1; $f.st = st; $f.x$4 = x$4; $f.$s = $s; $f.$r = $r; return $f;
101760  	};
101761  	http2stream.prototype.onWriteTimeout = function() { return this.$val.onWriteTimeout(); };
101762  	http2serverConn.ptr.prototype.processHeaders = function(f) {
101763  		var _entry, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _tuple, err, err$1, err$2, f, handler, id, initialState, req, rw, sc, st, st$1, x$4, x$5, x$6, $s, $r;
101764  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _entry = $f._entry; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _tuple = $f._tuple; err = $f.err; err$1 = $f.err$1; err$2 = $f.err$2; f = $f.f; handler = $f.handler; id = $f.id; initialState = $f.initialState; req = $f.req; rw = $f.rw; sc = $f.sc; st = $f.st; st$1 = $f.st$1; x$4 = $f.x$4; x$5 = $f.x$5; x$6 = $f.x$6; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
101765  		sc = this;
101766  		$r = sc.serveG.check(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
101767  		id = f.http2HeadersFrame.http2FrameHeader.StreamID;
101768  		if (sc.inGoAway) {
101769  			$s = -1; return $ifaceNil;
101770  		}
101771  		if (!(((_r$1 = id % 2, _r$1 === _r$1 ? _r$1 : $throwRuntimeError("integer divide by zero")) === 1))) {
101772  			$s = -1; return new http2ConnectionError(1);
101773  		}
101774  		st = (_entry = sc.streams[$Uint32.keyFor(f.http2HeadersFrame.http2FrameHeader.StreamID)], _entry !== undefined ? _entry.v : ptrType$6.nil);
101775  		/* */ if (!(st === ptrType$6.nil)) { $s = 2; continue; }
101776  		/* */ $s = 3; continue;
101777  		/* if (!(st === ptrType$6.nil)) { */ case 2:
101778  			if (st.resetQueued) {
101779  				$s = -1; return $ifaceNil;
101780  			}
101781  			_r$2 = st.processTrailerHeaders(f); /* */ $s = 4; case 4: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
101782  			$s = -1; return _r$2;
101783  		/* } */ case 3:
101784  		if (id <= sc.maxClientStreamID) {
101785  			$s = -1; return new http2ConnectionError(1);
101786  		}
101787  		sc.maxClientStreamID = id;
101788  		if (!(sc.idleTimer === ptrType$56.nil)) {
101789  			sc.idleTimer.Stop();
101790  		}
101791  		if ((sc.curClientStreams + 1 >>> 0) > sc.advMaxStreams) {
101792  			if (sc.unackedSettings === 0) {
101793  				$s = -1; return (x$4 = http2streamError(id, 1), new x$4.constructor.elem(x$4));
101794  			}
101795  			$s = -1; return (x$5 = http2streamError(id, 7), new x$5.constructor.elem(x$5));
101796  		}
101797  		initialState = 1;
101798  		if (f.http2HeadersFrame.StreamEnded()) {
101799  			initialState = 3;
101800  		}
101801  		_r$3 = sc.newStream(id, 0, initialState); /* */ $s = 5; case 5: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
101802  		st$1 = _r$3;
101803  		/* */ if (f.http2HeadersFrame.HasPriority()) { $s = 6; continue; }
101804  		/* */ $s = 7; continue;
101805  		/* if (f.http2HeadersFrame.HasPriority()) { */ case 6:
101806  			err = http2checkPriority(f.http2HeadersFrame.http2FrameHeader.StreamID, $clone(f.http2HeadersFrame.Priority, http2PriorityParam));
101807  			if (!($interfaceIsEqual(err, $ifaceNil))) {
101808  				$s = -1; return err;
101809  			}
101810  			$r = sc.writeSched.AdjustStream(st$1.id, $clone(f.http2HeadersFrame.Priority, http2PriorityParam)); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
101811  		/* } */ case 7:
101812  		_r$4 = sc.newWriterAndRequest(st$1, f); /* */ $s = 9; case 9: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
101813  		_tuple = _r$4;
101814  		rw = _tuple[0];
101815  		req = _tuple[1];
101816  		err$1 = _tuple[2];
101817  		if (!($interfaceIsEqual(err$1, $ifaceNil))) {
101818  			$s = -1; return err$1;
101819  		}
101820  		st$1.reqTrailer = req.Trailer;
101821  		if (!(st$1.reqTrailer === false)) {
101822  			st$1.trailer = {};
101823  		}
101824  		st$1.body = $assertType(req.Body, ptrType$8).pipe;
101825  		st$1.declBodyBytes = req.ContentLength;
101826  		handler = $methodVal(sc.handler, "ServeHTTP");
101827  		/* */ if (f.Truncated) { $s = 10; continue; }
101828  		/* */ $s = 11; continue;
101829  		/* if (f.Truncated) { */ case 10:
101830  			handler = http2handleHeaderListTooLong;
101831  			$s = 12; continue;
101832  		/* } else { */ case 11:
101833  			_r$5 = http2checkValidHTTP2RequestHeaders(req.Header); /* */ $s = 13; case 13: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
101834  			err$2 = _r$5;
101835  			if (!($interfaceIsEqual(err$2, $ifaceNil))) {
101836  				handler = http2new400Handler(err$2);
101837  			}
101838  		/* } */ case 12:
101839  		/* */ if (!((x$6 = sc.hs.ReadTimeout, (x$6.$high === 0 && x$6.$low === 0)))) { $s = 14; continue; }
101840  		/* */ $s = 15; continue;
101841  		/* if (!((x$6 = sc.hs.ReadTimeout, (x$6.$high === 0 && x$6.$low === 0)))) { */ case 14:
101842  			_r$6 = sc.conn.SetReadDeadline(new time.Time.ptr(new $Uint64(0, 0), new $Int64(0, 0), ptrType$1.nil)); /* */ $s = 16; case 16: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
101843  			_r$6;
101844  		/* } */ case 15:
101845  		$go($methodVal(sc, "runHandler"), [rw, req, handler]);
101846  		$s = -1; return $ifaceNil;
101847  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2serverConn.ptr.prototype.processHeaders }; } $f._entry = _entry; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._tuple = _tuple; $f.err = err; $f.err$1 = err$1; $f.err$2 = err$2; $f.f = f; $f.handler = handler; $f.id = id; $f.initialState = initialState; $f.req = req; $f.rw = rw; $f.sc = sc; $f.st = st; $f.st$1 = st$1; $f.x$4 = x$4; $f.x$5 = x$5; $f.x$6 = x$6; $f.$s = $s; $f.$r = $r; return $f;
101848  	};
101849  	http2serverConn.prototype.processHeaders = function(f) { return this.$val.processHeaders(f); };
101850  	http2stream.ptr.prototype.processTrailerHeaders = function(f) {
101851  		var _entry, _i, _key, _r$1, _ref, f, hf, key, sc, st, x$4, x$5, x$6, $s, $r;
101852  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _entry = $f._entry; _i = $f._i; _key = $f._key; _r$1 = $f._r$1; _ref = $f._ref; f = $f.f; hf = $f.hf; key = $f.key; sc = $f.sc; st = $f.st; x$4 = $f.x$4; x$5 = $f.x$5; x$6 = $f.x$6; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
101853  		st = this;
101854  		sc = st.sc;
101855  		$r = sc.serveG.check(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
101856  		if (st.gotTrailerHeader) {
101857  			$s = -1; return new http2ConnectionError(1);
101858  		}
101859  		st.gotTrailerHeader = true;
101860  		if (!f.http2HeadersFrame.StreamEnded()) {
101861  			$s = -1; return (x$4 = http2streamError(st.id, 1), new x$4.constructor.elem(x$4));
101862  		}
101863  		if (f.PseudoFields().$length > 0) {
101864  			$s = -1; return (x$5 = http2streamError(st.id, 1), new x$5.constructor.elem(x$5));
101865  		}
101866  		/* */ if (!(st.trailer === false)) { $s = 2; continue; }
101867  		/* */ $s = 3; continue;
101868  		/* if (!(st.trailer === false)) { */ case 2:
101869  			_ref = f.RegularFields();
101870  			_i = 0;
101871  			/* while (true) { */ case 4:
101872  				/* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 5; continue; }
101873  				hf = $clone(((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]), hpack.HeaderField);
101874  				_r$1 = sc.canonicalHeader(hf.Name); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
101875  				key = _r$1;
101876  				if (!http2ValidTrailerHeader(key)) {
101877  					$s = -1; return (x$6 = http2streamError(st.id, 1), new x$6.constructor.elem(x$6));
101878  				}
101879  				_key = key; (st.trailer || $throwRuntimeError("assignment to entry in nil map"))[$String.keyFor(_key)] = { k: _key, v: $append((_entry = st.trailer[$String.keyFor(key)], _entry !== undefined ? _entry.v : sliceType$1.nil), hf.Value) };
101880  				_i++;
101881  			/* } */ $s = 4; continue; case 5:
101882  		/* } */ case 3:
101883  		$r = st.endStream(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
101884  		$s = -1; return $ifaceNil;
101885  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2stream.ptr.prototype.processTrailerHeaders }; } $f._entry = _entry; $f._i = _i; $f._key = _key; $f._r$1 = _r$1; $f._ref = _ref; $f.f = f; $f.hf = hf; $f.key = key; $f.sc = sc; $f.st = st; $f.x$4 = x$4; $f.x$5 = x$5; $f.x$6 = x$6; $f.$s = $s; $f.$r = $r; return $f;
101886  	};
101887  	http2stream.prototype.processTrailerHeaders = function(f) { return this.$val.processTrailerHeaders(f); };
101888  	http2checkPriority = function(streamID, p) {
101889  		var p, streamID, x$4;
101890  		if (streamID === p.StreamDep) {
101891  			return (x$4 = http2streamError(streamID, 1), new x$4.constructor.elem(x$4));
101892  		}
101893  		return $ifaceNil;
101894  	};
101895  	http2serverConn.ptr.prototype.processPriority = function(f) {
101896  		var err, f, sc, $s, $r;
101897  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; err = $f.err; f = $f.f; sc = $f.sc; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
101898  		sc = this;
101899  		if (sc.inGoAway) {
101900  			$s = -1; return $ifaceNil;
101901  		}
101902  		err = http2checkPriority(f.http2FrameHeader.StreamID, $clone(f.http2PriorityParam, http2PriorityParam));
101903  		if (!($interfaceIsEqual(err, $ifaceNil))) {
101904  			$s = -1; return err;
101905  		}
101906  		$r = sc.writeSched.AdjustStream(f.http2FrameHeader.StreamID, $clone(f.http2PriorityParam, http2PriorityParam)); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
101907  		$s = -1; return $ifaceNil;
101908  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2serverConn.ptr.prototype.processPriority }; } $f.err = err; $f.f = f; $f.sc = sc; $f.$s = $s; $f.$r = $r; return $f;
101909  	};
101910  	http2serverConn.prototype.processPriority = function(f) { return this.$val.processPriority(f); };
101911  	http2serverConn.ptr.prototype.newStream = function(id, pusherID, state) {
101912  		var _key, _r$1, _r$2, _tuple, cancelCtx, ctx, id, pusherID, sc, st, state, x$4, $s, $r;
101913  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _key = $f._key; _r$1 = $f._r$1; _r$2 = $f._r$2; _tuple = $f._tuple; cancelCtx = $f.cancelCtx; ctx = $f.ctx; id = $f.id; pusherID = $f.pusherID; sc = $f.sc; st = $f.st; state = $f.state; x$4 = $f.x$4; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
101914  		sc = this;
101915  		$r = sc.serveG.check(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
101916  		if (id === 0) {
101917  			$panic(new $String("internal error: cannot create stream with id 0"));
101918  		}
101919  		_r$1 = http2contextWithCancel(sc.baseCtx); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
101920  		_tuple = _r$1;
101921  		ctx = _tuple[0];
101922  		cancelCtx = _tuple[1];
101923  		st = new http2stream.ptr(sc, id, ptrType$67.nil, $chanNil, ctx, cancelCtx, new $Int64(0, 0), new $Int64(0, 0), new http2flow.ptr(0, ptrType$32.nil), new http2flow.ptr(0, ptrType$32.nil), ptrType$6.nil, new $Int64(0, 0), 0, state, false, false, false, ptrType$56.nil, false, false);
101924  		(st.$ptr_cw || (st.$ptr_cw = new ptrType$68(function() { return this.$target.cw; }, function($v) { this.$target.cw = $v; }, st))).Init();
101925  		st.flow.conn = sc.flow;
101926  		st.flow.add(sc.initialStreamSendWindowSize);
101927  		st.inflow.conn = sc.inflow;
101928  		st.inflow.add(sc.srv.initialStreamRecvWindowSize());
101929  		if (!((x$4 = sc.hs.WriteTimeout, (x$4.$high === 0 && x$4.$low === 0)))) {
101930  			st.writeDeadline = time.AfterFunc(sc.hs.WriteTimeout, $methodVal(st, "onWriteTimeout"));
101931  		}
101932  		_key = id; (sc.streams || $throwRuntimeError("assignment to entry in nil map"))[$Uint32.keyFor(_key)] = { k: _key, v: st };
101933  		$r = sc.writeSched.OpenStream(st.id, new http2OpenStreamOptions.ptr(pusherID)); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
101934  		if (st.isPushed()) {
101935  			sc.curPushedStreams = sc.curPushedStreams + (1) >>> 0;
101936  		} else {
101937  			sc.curClientStreams = sc.curClientStreams + (1) >>> 0;
101938  		}
101939  		_r$2 = sc.curOpenStreams(); /* */ $s = 6; case 6: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
101940  		/* */ if (_r$2 === 1) { $s = 4; continue; }
101941  		/* */ $s = 5; continue;
101942  		/* if (_r$2 === 1) { */ case 4:
101943  			$r = sc.setConnState(1); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
101944  		/* } */ case 5:
101945  		$s = -1; return st;
101946  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2serverConn.ptr.prototype.newStream }; } $f._key = _key; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._tuple = _tuple; $f.cancelCtx = cancelCtx; $f.ctx = ctx; $f.id = id; $f.pusherID = pusherID; $f.sc = sc; $f.st = st; $f.state = state; $f.x$4 = x$4; $f.$s = $s; $f.$r = $r; return $f;
101947  	};
101948  	http2serverConn.prototype.newStream = function(id, pusherID, state) { return this.$val.newStream(id, pusherID, state); };
101949  	http2serverConn.ptr.prototype.newWriterAndRequest = function(st, f) {
101950  		var _entry, _i, _r$1, _r$2, _ref, _tuple, _tuple$1, _tuple$2, bodyOpen, err, f, hf, isConnect, ok, req, rp, rw, sc, st, vv, x$4, x$5, x$6, $s, $r;
101951  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _entry = $f._entry; _i = $f._i; _r$1 = $f._r$1; _r$2 = $f._r$2; _ref = $f._ref; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; bodyOpen = $f.bodyOpen; err = $f.err; f = $f.f; hf = $f.hf; isConnect = $f.isConnect; ok = $f.ok; req = $f.req; rp = $f.rp; rw = $f.rw; sc = $f.sc; st = $f.st; vv = $f.vv; x$4 = $f.x$4; x$5 = $f.x$5; x$6 = $f.x$6; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
101952  		sc = this;
101953  		$r = sc.serveG.check(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
101954  		rp = new http2requestParam.ptr(f.PseudoValue("method"), f.PseudoValue("scheme"), f.PseudoValue("authority"), f.PseudoValue("path"), false);
101955  		isConnect = rp.method === "CONNECT";
101956  		if (isConnect) {
101957  			if (!(rp.path === "") || !(rp.scheme === "") || rp.authority === "") {
101958  				$s = -1; return [ptrType$5.nil, ptrType$7.nil, (x$4 = http2streamError(f.http2HeadersFrame.http2FrameHeader.StreamID, 1), new x$4.constructor.elem(x$4))];
101959  			}
101960  		} else if (rp.method === "" || rp.path === "" || (!(rp.scheme === "https") && !(rp.scheme === "http"))) {
101961  			$s = -1; return [ptrType$5.nil, ptrType$7.nil, (x$5 = http2streamError(f.http2HeadersFrame.http2FrameHeader.StreamID, 1), new x$5.constructor.elem(x$5))];
101962  		}
101963  		bodyOpen = !f.http2HeadersFrame.StreamEnded();
101964  		if (rp.method === "HEAD" && bodyOpen) {
101965  			$s = -1; return [ptrType$5.nil, ptrType$7.nil, (x$6 = http2streamError(f.http2HeadersFrame.http2FrameHeader.StreamID, 1), new x$6.constructor.elem(x$6))];
101966  		}
101967  		rp.header = {};
101968  		_ref = f.RegularFields();
101969  		_i = 0;
101970  		/* while (true) { */ case 2:
101971  			/* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 3; continue; }
101972  			hf = $clone(((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]), hpack.HeaderField);
101973  			_r$1 = sc.canonicalHeader(hf.Name); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
101974  			$r = new Header(rp.header).Add(_r$1, hf.Value); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
101975  			_i++;
101976  		/* } */ $s = 2; continue; case 3:
101977  		if (rp.authority === "") {
101978  			rp.authority = new Header(rp.header).Get("Host");
101979  		}
101980  		_r$2 = sc.newWriterAndRequestNoBody(st, $clone(rp, http2requestParam)); /* */ $s = 6; case 6: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
101981  		_tuple = _r$2;
101982  		rw = _tuple[0];
101983  		req = _tuple[1];
101984  		err = _tuple[2];
101985  		if (!($interfaceIsEqual(err, $ifaceNil))) {
101986  			$s = -1; return [ptrType$5.nil, ptrType$7.nil, err];
101987  		}
101988  		if (bodyOpen) {
101989  			_tuple$1 = (_entry = rp.header[$String.keyFor("Content-Length")], _entry !== undefined ? [_entry.v, true] : [sliceType$1.nil, false]);
101990  			vv = _tuple$1[0];
101991  			ok = _tuple$1[1];
101992  			if (ok) {
101993  				_tuple$2 = strconv.ParseInt((0 >= vv.$length ? ($throwRuntimeError("index out of range"), undefined) : vv.$array[vv.$offset + 0]), 10, 64);
101994  				req.ContentLength = _tuple$2[0];
101995  			} else {
101996  				req.ContentLength = new $Int64(-1, 4294967295);
101997  			}
101998  			$assertType(req.Body, ptrType$8).pipe = new http2pipe.ptr(new sync.Mutex.ptr(0, 0), new sync.Cond.ptr(new sync.noCopy.ptr(), $ifaceNil, new sync.notifyList.ptr(0, 0, 0, 0, 0), 0, 0, $chanNil), new http2dataBuffer.ptr(sliceType$5.nil, 0, 0, 0, req.ContentLength), $ifaceNil, $ifaceNil, $chanNil, $throwNilPointerError);
101999  		}
102000  		$s = -1; return [rw, req, $ifaceNil];
102001  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2serverConn.ptr.prototype.newWriterAndRequest }; } $f._entry = _entry; $f._i = _i; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._ref = _ref; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f.bodyOpen = bodyOpen; $f.err = err; $f.f = f; $f.hf = hf; $f.isConnect = isConnect; $f.ok = ok; $f.req = req; $f.rp = rp; $f.rw = rw; $f.sc = sc; $f.st = st; $f.vv = vv; $f.x$4 = x$4; $f.x$5 = x$5; $f.x$6 = x$6; $f.$s = $s; $f.$r = $r; return $f;
102002  	};
102003  	http2serverConn.prototype.newWriterAndRequest = function(st, f) { return this.$val.newWriterAndRequest(st, f); };
102004  	http2serverConn.ptr.prototype.newWriterAndRequestNoBody = function(st, rp) {
102005  		var _1, _entry, _entry$1, _i, _i$1, _key, _r$1, _r$2, _r$3, _r$4, _ref, _ref$1, _tuple, body$1, bwSave, cookies, err, key, needsContinue, req, requestURI, rp, rw, rws, sc, st, tlsState, trailer, url_, v, x$4, x$5, $s, $r;
102006  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _entry = $f._entry; _entry$1 = $f._entry$1; _i = $f._i; _i$1 = $f._i$1; _key = $f._key; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _ref = $f._ref; _ref$1 = $f._ref$1; _tuple = $f._tuple; body$1 = $f.body$1; bwSave = $f.bwSave; cookies = $f.cookies; err = $f.err; key = $f.key; needsContinue = $f.needsContinue; req = $f.req; requestURI = $f.requestURI; rp = $f.rp; rw = $f.rw; rws = $f.rws; sc = $f.sc; st = $f.st; tlsState = $f.tlsState; trailer = $f.trailer; url_ = $f.url_; v = $f.v; x$4 = $f.x$4; x$5 = $f.x$5; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
102007  		sc = this;
102008  		$r = sc.serveG.check(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
102009  		tlsState = ptrType$18.nil;
102010  		if (rp.scheme === "https") {
102011  			tlsState = sc.tlsState;
102012  		}
102013  		needsContinue = new Header(rp.header).Get("Expect") === "100-continue";
102014  		if (needsContinue) {
102015  			new Header(rp.header).Del("Expect");
102016  		}
102017  		cookies = (_entry = rp.header[$String.keyFor("Cookie")], _entry !== undefined ? _entry.v : sliceType$1.nil);
102018  		if (cookies.$length > 1) {
102019  			new Header(rp.header).Set("Cookie", strings.Join(cookies, "; "));
102020  		}
102021  		trailer = false;
102022  		_ref = (_entry$1 = rp.header[$String.keyFor("Trailer")], _entry$1 !== undefined ? _entry$1.v : sliceType$1.nil);
102023  		_i = 0;
102024  		/* while (true) { */ case 2:
102025  			/* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 3; continue; }
102026  			v = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
102027  			_ref$1 = strings.Split(v, ",");
102028  			_i$1 = 0;
102029  			/* while (true) { */ case 4:
102030  				/* if (!(_i$1 < _ref$1.$length)) { break; } */ if(!(_i$1 < _ref$1.$length)) { $s = 5; continue; }
102031  				key = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]);
102032  				_r$1 = strings.TrimSpace(key); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
102033  				_r$2 = CanonicalHeaderKey(_r$1); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
102034  				key = _r$2;
102035  				_1 = key;
102036  				if (_1 === ("Transfer-Encoding") || _1 === ("Trailer") || _1 === ("Content-Length")) {
102037  				} else {
102038  					if (trailer === false) {
102039  						trailer = {};
102040  					}
102041  					_key = key; (trailer || $throwRuntimeError("assignment to entry in nil map"))[$String.keyFor(_key)] = { k: _key, v: sliceType$1.nil };
102042  				}
102043  				_i$1++;
102044  			/* } */ $s = 4; continue; case 5:
102045  			_i++;
102046  		/* } */ $s = 2; continue; case 3:
102047  		delete rp.header[$String.keyFor("Trailer")];
102048  		url_ = ptrType$20.nil;
102049  		requestURI = "";
102050  		/* */ if (rp.method === "CONNECT") { $s = 8; continue; }
102051  		/* */ $s = 9; continue;
102052  		/* if (rp.method === "CONNECT") { */ case 8:
102053  			url_ = new url.URL.ptr("", "", ptrType$19.nil, rp.authority, "", "", false, "", "");
102054  			requestURI = rp.authority;
102055  			$s = 10; continue;
102056  		/* } else { */ case 9:
102057  			err = $ifaceNil;
102058  			_r$3 = url.ParseRequestURI(rp.path); /* */ $s = 11; case 11: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
102059  			_tuple = _r$3;
102060  			url_ = _tuple[0];
102061  			err = _tuple[1];
102062  			if (!($interfaceIsEqual(err, $ifaceNil))) {
102063  				$s = -1; return [ptrType$5.nil, ptrType$7.nil, (x$4 = http2streamError(st.id, 1), new x$4.constructor.elem(x$4))];
102064  			}
102065  			requestURI = rp.path;
102066  		/* } */ case 10:
102067  		body$1 = new http2requestBody.ptr(st, sc, false, false, ptrType$67.nil, needsContinue);
102068  		req = new Request.ptr(rp.method, url_, "HTTP/2.0", 2, 0, rp.header, body$1, $throwNilPointerError, new $Int64(0, 0), sliceType$1.nil, false, rp.authority, false, false, ptrType$21.nil, trailer, sc.remoteAddrStr, requestURI, tlsState, $chanNil, ptrType$17.nil, $ifaceNil);
102069  		req = http2requestWithContext(req, st.ctx);
102070  		_r$4 = http2responseWriterStatePool.Get(); /* */ $s = 12; case 12: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
102071  		rws = $assertType(_r$4, ptrType$69);
102072  		bwSave = rws.bw;
102073  		http2responseWriterState.copy(rws, new http2responseWriterState.ptr(ptrType$6.nil, ptrType$7.nil, ptrType$8.nil, ptrType$9.nil, ptrType$10.nil, false, false, sliceType$1.nil, 0, false, false, false, false, new $Int64(0, 0), new $Int64(0, 0), new sync.Mutex.ptr(0, 0), $chanNil));
102074  		rws.conn = sc;
102075  		rws.bw = bwSave;
102076  		rws.bw.Reset((x$5 = new http2chunkWriter.ptr(rws), new x$5.constructor.elem(x$5)));
102077  		rws.stream = st;
102078  		rws.req = req;
102079  		rws.body = body$1;
102080  		rw = new http2responseWriter.ptr(rws);
102081  		$s = -1; return [rw, req, $ifaceNil];
102082  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2serverConn.ptr.prototype.newWriterAndRequestNoBody }; } $f._1 = _1; $f._entry = _entry; $f._entry$1 = _entry$1; $f._i = _i; $f._i$1 = _i$1; $f._key = _key; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._ref = _ref; $f._ref$1 = _ref$1; $f._tuple = _tuple; $f.body$1 = body$1; $f.bwSave = bwSave; $f.cookies = cookies; $f.err = err; $f.key = key; $f.needsContinue = needsContinue; $f.req = req; $f.requestURI = requestURI; $f.rp = rp; $f.rw = rw; $f.rws = rws; $f.sc = sc; $f.st = st; $f.tlsState = tlsState; $f.trailer = trailer; $f.url_ = url_; $f.v = v; $f.x$4 = x$4; $f.x$5 = x$5; $f.$s = $s; $f.$r = $r; return $f;
102083  	};
102084  	http2serverConn.prototype.newWriterAndRequestNoBody = function(st, rp) { return this.$val.newWriterAndRequestNoBody(st, rp); };
102085  	http2serverConn.ptr.prototype.runHandler = function(rw, req, handler) {
102086  		var didPanic, handler, req, rw, sc, $s, $deferred, $r;
102087  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; didPanic = $f.didPanic; handler = $f.handler; req = $f.req; rw = $f.rw; sc = $f.sc; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
102088  		didPanic = [didPanic];
102089  		rw = [rw];
102090  		sc = [sc];
102091  		sc[0] = this;
102092  		didPanic[0] = true;
102093  		$deferred.push([(function(didPanic, rw, sc) { return function $b() {
102094  			var _arg, _arg$1, _arg$2, _r$1, _r$2, buf, e, x$4, $s, $r;
102095  			/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _arg = $f._arg; _arg$1 = $f._arg$1; _arg$2 = $f._arg$2; _r$1 = $f._r$1; _r$2 = $f._r$2; buf = $f.buf; e = $f.e; x$4 = $f.x$4; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
102096  			$r = rw[0].rws.stream.cancelCtx(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
102097  			/* */ if (didPanic[0]) { $s = 2; continue; }
102098  			/* */ $s = 3; continue;
102099  			/* if (didPanic[0]) { */ case 2:
102100  				e = $recover();
102101  				_r$1 = sc[0].writeFrameFromHandler(new http2FrameWriteRequest.ptr((x$4 = new http2handlerPanicRST.ptr(rw[0].rws.stream.id), new x$4.constructor.elem(x$4)), rw[0].rws.stream, $chanNil)); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
102102  				_r$1;
102103  				/* */ if (http2shouldLogPanic(e)) { $s = 5; continue; }
102104  				/* */ $s = 6; continue;
102105  				/* if (http2shouldLogPanic(e)) { */ case 5:
102106  					buf = $makeSlice(sliceType$3, 65536);
102107  					buf = $subslice(buf, 0, runtime.Stack(buf, false));
102108  					_r$2 = sc[0].conn.RemoteAddr(); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
102109  					_arg = _r$2;
102110  					_arg$1 = e;
102111  					_arg$2 = buf;
102112  					$r = sc[0].logf("http2: panic serving %v: %v\n%s", new sliceType([_arg, _arg$1, _arg$2])); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
102113  				/* } */ case 6:
102114  				$s = -1; return;
102115  			/* } */ case 3:
102116  			$r = rw[0].handlerDone(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
102117  			$s = -1; return;
102118  			/* */ } return; } if ($f === undefined) { $f = { $blk: $b }; } $f._arg = _arg; $f._arg$1 = _arg$1; $f._arg$2 = _arg$2; $f._r$1 = _r$1; $f._r$2 = _r$2; $f.buf = buf; $f.e = e; $f.x$4 = x$4; $f.$s = $s; $f.$r = $r; return $f;
102119  		}; })(didPanic, rw, sc), []]);
102120  		$r = handler(rw[0], req); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
102121  		didPanic[0] = false;
102122  		$s = -1; return;
102123  		/* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: http2serverConn.ptr.prototype.runHandler }; } $f.didPanic = didPanic; $f.handler = handler; $f.req = req; $f.rw = rw; $f.sc = sc; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
102124  	};
102125  	http2serverConn.prototype.runHandler = function(rw, req, handler) { return this.$val.runHandler(rw, req, handler); };
102126  	http2handleHeaderListTooLong = function(w, r) {
102127  		var _r$1, r, w, $s, $r;
102128  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; r = $f.r; w = $f.w; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
102129  		$r = w.WriteHeader(431); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
102130  		_r$1 = io.WriteString(w, "<h1>HTTP Error 431</h1><p>Request Header Field(s) Too Large</p>"); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
102131  		_r$1;
102132  		$s = -1; return;
102133  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2handleHeaderListTooLong }; } $f._r$1 = _r$1; $f.r = r; $f.w = w; $f.$s = $s; $f.$r = $r; return $f;
102134  	};
102135  	http2serverConn.ptr.prototype.writeHeaders = function(st, headerData) {
102136  		var _r$1, _r$2, _r$3, _selection, err, err$1, errc, headerData, sc, st, $s, $r;
102137  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _selection = $f._selection; err = $f.err; err$1 = $f.err$1; errc = $f.errc; headerData = $f.headerData; sc = $f.sc; st = $f.st; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
102138  		sc = this;
102139  		$r = sc.serveG.checkNotOn(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
102140  		errc = $chanNil;
102141  		/* */ if (!(headerData.h === false)) { $s = 2; continue; }
102142  		/* */ $s = 3; continue;
102143  		/* if (!(headerData.h === false)) { */ case 2:
102144  			_r$1 = http2errChanPool.Get(); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
102145  			errc = $assertType(_r$1, chanType);
102146  		/* } */ case 3:
102147  		_r$2 = sc.writeFrameFromHandler(new http2FrameWriteRequest.ptr(headerData, st, errc)); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
102148  		err = _r$2;
102149  		if (!($interfaceIsEqual(err, $ifaceNil))) {
102150  			$s = -1; return err;
102151  		}
102152  		/* */ if (!(errc === $chanNil)) { $s = 6; continue; }
102153  		/* */ $s = 7; continue;
102154  		/* if (!(errc === $chanNil)) { */ case 6:
102155  			_r$3 = $select([[errc], [sc.doneServing], [st.cw]]); /* */ $s = 8; case 8: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
102156  			_selection = _r$3;
102157  			if (_selection[0] === 0) {
102158  				err$1 = _selection[1][0];
102159  				http2errChanPool.Put(new chanType(errc));
102160  				$s = -1; return err$1;
102161  			} else if (_selection[0] === 1) {
102162  				$s = -1; return http2errClientDisconnected;
102163  			} else if (_selection[0] === 2) {
102164  				$s = -1; return http2errStreamClosed;
102165  			}
102166  		/* } */ case 7:
102167  		$s = -1; return $ifaceNil;
102168  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2serverConn.ptr.prototype.writeHeaders }; } $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._selection = _selection; $f.err = err; $f.err$1 = err$1; $f.errc = errc; $f.headerData = headerData; $f.sc = sc; $f.st = st; $f.$s = $s; $f.$r = $r; return $f;
102169  	};
102170  	http2serverConn.prototype.writeHeaders = function(st, headerData) { return this.$val.writeHeaders(st, headerData); };
102171  	http2serverConn.ptr.prototype.write100ContinueHeaders = function(st) {
102172  		var _r$1, sc, st, x$4, $s, $r;
102173  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; sc = $f.sc; st = $f.st; x$4 = $f.x$4; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
102174  		sc = this;
102175  		_r$1 = sc.writeFrameFromHandler(new http2FrameWriteRequest.ptr((x$4 = new http2write100ContinueHeadersFrame.ptr(st.id), new x$4.constructor.elem(x$4)), st, $chanNil)); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
102176  		_r$1;
102177  		$s = -1; return;
102178  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2serverConn.ptr.prototype.write100ContinueHeaders }; } $f._r$1 = _r$1; $f.sc = sc; $f.st = st; $f.x$4 = x$4; $f.$s = $s; $f.$r = $r; return $f;
102179  	};
102180  	http2serverConn.prototype.write100ContinueHeaders = function(st) { return this.$val.write100ContinueHeaders(st); };
102181  	http2serverConn.ptr.prototype.noteBodyReadFromHandler = function(st, n, err) {
102182  		var _r$1, _selection, err, n, sc, st, $s, $r;
102183  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; _selection = $f._selection; err = $f.err; n = $f.n; sc = $f.sc; st = $f.st; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
102184  		sc = this;
102185  		$r = sc.serveG.checkNotOn(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
102186  		/* */ if (n > 0) { $s = 2; continue; }
102187  		/* */ $s = 3; continue;
102188  		/* if (n > 0) { */ case 2:
102189  			_r$1 = $select([[sc.bodyReadCh, new http2bodyReadMsg.ptr(st, n)], [sc.doneServing]]); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
102190  			_selection = _r$1;
102191  			if (_selection[0] === 0) {
102192  			} else if (_selection[0] === 1) {
102193  			}
102194  		/* } */ case 3:
102195  		$s = -1; return;
102196  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2serverConn.ptr.prototype.noteBodyReadFromHandler }; } $f._r$1 = _r$1; $f._selection = _selection; $f.err = err; $f.n = n; $f.sc = sc; $f.st = st; $f.$s = $s; $f.$r = $r; return $f;
102197  	};
102198  	http2serverConn.prototype.noteBodyReadFromHandler = function(st, n, err) { return this.$val.noteBodyReadFromHandler(st, n, err); };
102199  	http2serverConn.ptr.prototype.noteBodyRead = function(st, n) {
102200  		var n, sc, st, $s, $r;
102201  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; n = $f.n; sc = $f.sc; st = $f.st; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
102202  		sc = this;
102203  		$r = sc.serveG.check(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
102204  		$r = sc.sendWindowUpdate(ptrType$6.nil, n); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
102205  		/* */ if (!((st.state === 3)) && !((st.state === 4))) { $s = 3; continue; }
102206  		/* */ $s = 4; continue;
102207  		/* if (!((st.state === 3)) && !((st.state === 4))) { */ case 3:
102208  			$r = sc.sendWindowUpdate(st, n); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
102209  		/* } */ case 4:
102210  		$s = -1; return;
102211  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2serverConn.ptr.prototype.noteBodyRead }; } $f.n = n; $f.sc = sc; $f.st = st; $f.$s = $s; $f.$r = $r; return $f;
102212  	};
102213  	http2serverConn.prototype.noteBodyRead = function(st, n) { return this.$val.noteBodyRead(st, n); };
102214  	http2serverConn.ptr.prototype.sendWindowUpdate = function(st, n) {
102215  		var n, sc, st, $s, $r;
102216  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; n = $f.n; sc = $f.sc; st = $f.st; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
102217  		sc = this;
102218  		$r = sc.serveG.check(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
102219  		/* while (true) { */ case 2:
102220  			/* if (!(n >= 2147483647)) { break; } */ if(!(n >= 2147483647)) { $s = 3; continue; }
102221  			$r = sc.sendWindowUpdate32(st, 2147483647); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
102222  			n = n - (2147483647) >> 0;
102223  		/* } */ $s = 2; continue; case 3:
102224  		$r = sc.sendWindowUpdate32(st, ((n >> 0))); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
102225  		$s = -1; return;
102226  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2serverConn.ptr.prototype.sendWindowUpdate }; } $f.n = n; $f.sc = sc; $f.st = st; $f.$s = $s; $f.$r = $r; return $f;
102227  	};
102228  	http2serverConn.prototype.sendWindowUpdate = function(st, n) { return this.$val.sendWindowUpdate(st, n); };
102229  	http2serverConn.ptr.prototype.sendWindowUpdate32 = function(st, n) {
102230  		var n, ok, sc, st, streamID, x$4, $s, $r;
102231  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; n = $f.n; ok = $f.ok; sc = $f.sc; st = $f.st; streamID = $f.streamID; x$4 = $f.x$4; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
102232  		sc = this;
102233  		$r = sc.serveG.check(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
102234  		if (n === 0) {
102235  			$s = -1; return;
102236  		}
102237  		if (n < 0) {
102238  			$panic(new $String("negative update"));
102239  		}
102240  		streamID = 0;
102241  		if (!(st === ptrType$6.nil)) {
102242  			streamID = st.id;
102243  		}
102244  		$r = sc.writeFrame(new http2FrameWriteRequest.ptr((x$4 = new http2writeWindowUpdate.ptr(streamID, ((n >>> 0))), new x$4.constructor.elem(x$4)), st, $chanNil)); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
102245  		ok = false;
102246  		if (st === ptrType$6.nil) {
102247  			ok = sc.inflow.add(n);
102248  		} else {
102249  			ok = st.inflow.add(n);
102250  		}
102251  		if (!ok) {
102252  			$panic(new $String("internal error; sent too many window updates without decrements?"));
102253  		}
102254  		$s = -1; return;
102255  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2serverConn.ptr.prototype.sendWindowUpdate32 }; } $f.n = n; $f.ok = ok; $f.sc = sc; $f.st = st; $f.streamID = streamID; $f.x$4 = x$4; $f.$s = $s; $f.$r = $r; return $f;
102256  	};
102257  	http2serverConn.prototype.sendWindowUpdate32 = function(st, n) { return this.$val.sendWindowUpdate32(st, n); };
102258  	http2requestBody.ptr.prototype.Close = function() {
102259  		var b, $s, $r;
102260  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; b = $f.b; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
102261  		b = this;
102262  		/* */ if (!(b.pipe === ptrType$67.nil) && !b.closed) { $s = 1; continue; }
102263  		/* */ $s = 2; continue;
102264  		/* if (!(b.pipe === ptrType$67.nil) && !b.closed) { */ case 1:
102265  			$r = b.pipe.BreakWithError(http2errClosedBody); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
102266  		/* } */ case 2:
102267  		b.closed = true;
102268  		$s = -1; return $ifaceNil;
102269  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2requestBody.ptr.prototype.Close }; } $f.b = b; $f.$s = $s; $f.$r = $r; return $f;
102270  	};
102271  	http2requestBody.prototype.Close = function() { return this.$val.Close(); };
102272  	http2requestBody.ptr.prototype.Read = function(p) {
102273  		var _r$1, _tmp, _tmp$1, _tuple, b, err, n, p, $s, $r;
102274  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tuple = $f._tuple; b = $f.b; err = $f.err; n = $f.n; p = $f.p; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
102275  		n = 0;
102276  		err = $ifaceNil;
102277  		b = this;
102278  		/* */ if (b.needsContinue) { $s = 1; continue; }
102279  		/* */ $s = 2; continue;
102280  		/* if (b.needsContinue) { */ case 1:
102281  			b.needsContinue = false;
102282  			$r = b.conn.write100ContinueHeaders(b.stream); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
102283  		/* } */ case 2:
102284  		if (b.pipe === ptrType$67.nil || b.sawEOF) {
102285  			_tmp = 0;
102286  			_tmp$1 = io.EOF;
102287  			n = _tmp;
102288  			err = _tmp$1;
102289  			$s = -1; return [n, err];
102290  		}
102291  		_r$1 = b.pipe.Read(p); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
102292  		_tuple = _r$1;
102293  		n = _tuple[0];
102294  		err = _tuple[1];
102295  		if ($interfaceIsEqual(err, io.EOF)) {
102296  			b.sawEOF = true;
102297  		}
102298  		if (b.conn === ptrType$9.nil && http2inTests) {
102299  			$s = -1; return [n, err];
102300  		}
102301  		$r = b.conn.noteBodyReadFromHandler(b.stream, n, err); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
102302  		$s = -1; return [n, err];
102303  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2requestBody.ptr.prototype.Read }; } $f._r$1 = _r$1; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tuple = _tuple; $f.b = b; $f.err = err; $f.n = n; $f.p = p; $f.$s = $s; $f.$r = $r; return $f;
102304  	};
102305  	http2requestBody.prototype.Read = function(p) { return this.$val.Read(p); };
102306  	http2chunkWriter.ptr.prototype.Write = function(p) {
102307  		var _r$1, _tuple, cw, err, n, p, $s, $r;
102308  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; _tuple = $f._tuple; cw = $f.cw; err = $f.err; n = $f.n; p = $f.p; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
102309  		n = 0;
102310  		err = $ifaceNil;
102311  		cw = this;
102312  		_r$1 = cw.rws.writeChunk(p); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
102313  		_tuple = _r$1;
102314  		n = _tuple[0];
102315  		err = _tuple[1];
102316  		$s = -1; return [n, err];
102317  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2chunkWriter.ptr.prototype.Write }; } $f._r$1 = _r$1; $f._tuple = _tuple; $f.cw = cw; $f.err = err; $f.n = n; $f.p = p; $f.$s = $s; $f.$r = $r; return $f;
102318  	};
102319  	http2chunkWriter.prototype.Write = function(p) { return this.$val.Write(p); };
102320  	http2responseWriterState.ptr.prototype.hasTrailers = function() {
102321  		var rws;
102322  		rws = this;
102323  		return !((rws.trailers.$length === 0));
102324  	};
102325  	http2responseWriterState.prototype.hasTrailers = function() { return this.$val.hasTrailers(); };
102326  	http2responseWriterState.ptr.prototype.declareTrailer = function(k) {
102327  		var k, rws, $s, $r;
102328  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; k = $f.k; rws = $f.rws; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
102329  		rws = this;
102330  		k = CanonicalHeaderKey(k);
102331  		/* */ if (!http2ValidTrailerHeader(k)) { $s = 1; continue; }
102332  		/* */ $s = 2; continue;
102333  		/* if (!http2ValidTrailerHeader(k)) { */ case 1:
102334  			$r = rws.conn.logf("ignoring invalid trailer %q", new sliceType([new $String(k)])); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
102335  			$s = -1; return;
102336  		/* } */ case 2:
102337  		if (!http2strSliceContains(rws.trailers, k)) {
102338  			rws.trailers = $append(rws.trailers, k);
102339  		}
102340  		$s = -1; return;
102341  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2responseWriterState.ptr.prototype.declareTrailer }; } $f.k = k; $f.rws = rws; $f.$s = $s; $f.$r = $r; return $f;
102342  	};
102343  	http2responseWriterState.prototype.declareTrailer = function(k) { return this.$val.declareTrailer(k); };
102344  	http2responseWriterState.ptr.prototype.writeChunk = function(p) {
102345  		var _entry, _entry$1, _entry$2, _i, _r$1, _r$2, _r$3, _r$4, _r$5, _ref, _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$14, _tmp$15, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, _tuple$1, _tuple$2, clen, clen64, ctype, date, endStream, endStream$1, err, err$1, err$2, hasContentType, isHeadResp, n, ok, p, rws, v, $s, $r;
102346  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _entry = $f._entry; _entry$1 = $f._entry$1; _entry$2 = $f._entry$2; _i = $f._i; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _ref = $f._ref; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$10 = $f._tmp$10; _tmp$11 = $f._tmp$11; _tmp$12 = $f._tmp$12; _tmp$13 = $f._tmp$13; _tmp$14 = $f._tmp$14; _tmp$15 = $f._tmp$15; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tmp$4 = $f._tmp$4; _tmp$5 = $f._tmp$5; _tmp$6 = $f._tmp$6; _tmp$7 = $f._tmp$7; _tmp$8 = $f._tmp$8; _tmp$9 = $f._tmp$9; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; clen = $f.clen; clen64 = $f.clen64; ctype = $f.ctype; date = $f.date; endStream = $f.endStream; endStream$1 = $f.endStream$1; err = $f.err; err$1 = $f.err$1; err$2 = $f.err$2; hasContentType = $f.hasContentType; isHeadResp = $f.isHeadResp; n = $f.n; ok = $f.ok; p = $f.p; rws = $f.rws; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
102347  		n = 0;
102348  		err = $ifaceNil;
102349  		rws = this;
102350  		/* */ if (!rws.wroteHeader) { $s = 1; continue; }
102351  		/* */ $s = 2; continue;
102352  		/* if (!rws.wroteHeader) { */ case 1:
102353  			$r = rws.writeHeader(200); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
102354  		/* } */ case 2:
102355  		isHeadResp = rws.req.Method === "HEAD";
102356  		/* */ if (!rws.sentHeader) { $s = 4; continue; }
102357  		/* */ $s = 5; continue;
102358  		/* if (!rws.sentHeader) { */ case 4:
102359  			rws.sentHeader = true;
102360  			_tmp = "";
102361  			_tmp$1 = "";
102362  			ctype = _tmp;
102363  			clen = _tmp$1;
102364  			clen = new Header(rws.snapHeader).Get("Content-Length");
102365  			if (!(clen === "")) {
102366  				new Header(rws.snapHeader).Del("Content-Length");
102367  				_tuple = strconv.ParseInt(clen, 10, 64);
102368  				clen64 = _tuple[0];
102369  				err$1 = _tuple[1];
102370  				if ($interfaceIsEqual(err$1, $ifaceNil) && (clen64.$high > 0 || (clen64.$high === 0 && clen64.$low >= 0))) {
102371  					rws.sentContentLen = clen64;
102372  				} else {
102373  					clen = "";
102374  				}
102375  			}
102376  			if (clen === "" && rws.handlerDone && http2bodyAllowedForStatus(rws.status) && (p.$length > 0 || !isHeadResp)) {
102377  				clen = strconv.Itoa(p.$length);
102378  			}
102379  			_tuple$1 = (_entry = rws.snapHeader[$String.keyFor("Content-Type")], _entry !== undefined ? [_entry.v, true] : [sliceType$1.nil, false]);
102380  			hasContentType = _tuple$1[1];
102381  			/* */ if (!hasContentType && http2bodyAllowedForStatus(rws.status) && p.$length > 0) { $s = 6; continue; }
102382  			/* */ $s = 7; continue;
102383  			/* if (!hasContentType && http2bodyAllowedForStatus(rws.status) && p.$length > 0) { */ case 6:
102384  				_r$1 = DetectContentType(p); /* */ $s = 8; case 8: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
102385  				ctype = _r$1;
102386  			/* } */ case 7:
102387  			date = "";
102388  			_tuple$2 = (_entry$1 = rws.snapHeader[$String.keyFor("Date")], _entry$1 !== undefined ? [_entry$1.v, true] : [sliceType$1.nil, false]);
102389  			ok = _tuple$2[1];
102390  			/* */ if (!ok) { $s = 9; continue; }
102391  			/* */ $s = 10; continue;
102392  			/* if (!ok) { */ case 9:
102393  				_r$2 = $clone($clone(time.Now(), time.Time).UTC(), time.Time).Format("Mon, 02 Jan 2006 15:04:05 GMT"); /* */ $s = 11; case 11: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
102394  				date = _r$2;
102395  			/* } */ case 10:
102396  			_ref = (_entry$2 = rws.snapHeader[$String.keyFor("Trailer")], _entry$2 !== undefined ? _entry$2.v : sliceType$1.nil);
102397  			_i = 0;
102398  			/* while (true) { */ case 12:
102399  				/* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 13; continue; }
102400  				v = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
102401  				$r = http2foreachHeaderElement(v, $methodVal(rws, "declareTrailer")); /* */ $s = 14; case 14: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
102402  				_i++;
102403  			/* } */ $s = 12; continue; case 13:
102404  			endStream = (rws.handlerDone && !rws.hasTrailers() && (p.$length === 0)) || isHeadResp;
102405  			_r$3 = rws.conn.writeHeaders(rws.stream, new http2writeResHeaders.ptr(rws.stream.id, rws.status, rws.snapHeader, sliceType$1.nil, endStream, date, ctype, clen)); /* */ $s = 15; case 15: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
102406  			err = _r$3;
102407  			if (!($interfaceIsEqual(err, $ifaceNil))) {
102408  				rws.dirty = true;
102409  				_tmp$2 = 0;
102410  				_tmp$3 = err;
102411  				n = _tmp$2;
102412  				err = _tmp$3;
102413  				$s = -1; return [n, err];
102414  			}
102415  			if (endStream) {
102416  				_tmp$4 = 0;
102417  				_tmp$5 = $ifaceNil;
102418  				n = _tmp$4;
102419  				err = _tmp$5;
102420  				$s = -1; return [n, err];
102421  			}
102422  		/* } */ case 5:
102423  		if (isHeadResp) {
102424  			_tmp$6 = p.$length;
102425  			_tmp$7 = $ifaceNil;
102426  			n = _tmp$6;
102427  			err = _tmp$7;
102428  			$s = -1; return [n, err];
102429  		}
102430  		if ((p.$length === 0) && !rws.handlerDone) {
102431  			_tmp$8 = 0;
102432  			_tmp$9 = $ifaceNil;
102433  			n = _tmp$8;
102434  			err = _tmp$9;
102435  			$s = -1; return [n, err];
102436  		}
102437  		/* */ if (rws.handlerDone) { $s = 16; continue; }
102438  		/* */ $s = 17; continue;
102439  		/* if (rws.handlerDone) { */ case 16:
102440  			$r = rws.promoteUndeclaredTrailers(); /* */ $s = 18; case 18: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
102441  		/* } */ case 17:
102442  		endStream$1 = rws.handlerDone && !rws.hasTrailers();
102443  		/* */ if (p.$length > 0 || endStream$1) { $s = 19; continue; }
102444  		/* */ $s = 20; continue;
102445  		/* if (p.$length > 0 || endStream$1) { */ case 19:
102446  			_r$4 = rws.conn.writeDataFromHandler(rws.stream, p, endStream$1); /* */ $s = 21; case 21: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
102447  			err$2 = _r$4;
102448  			if (!($interfaceIsEqual(err$2, $ifaceNil))) {
102449  				rws.dirty = true;
102450  				_tmp$10 = 0;
102451  				_tmp$11 = err$2;
102452  				n = _tmp$10;
102453  				err = _tmp$11;
102454  				$s = -1; return [n, err];
102455  			}
102456  		/* } */ case 20:
102457  		/* */ if (rws.handlerDone && rws.hasTrailers()) { $s = 22; continue; }
102458  		/* */ $s = 23; continue;
102459  		/* if (rws.handlerDone && rws.hasTrailers()) { */ case 22:
102460  			_r$5 = rws.conn.writeHeaders(rws.stream, new http2writeResHeaders.ptr(rws.stream.id, 0, rws.handlerHeader, rws.trailers, true, "", "", "")); /* */ $s = 24; case 24: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
102461  			err = _r$5;
102462  			if (!($interfaceIsEqual(err, $ifaceNil))) {
102463  				rws.dirty = true;
102464  			}
102465  			_tmp$12 = p.$length;
102466  			_tmp$13 = err;
102467  			n = _tmp$12;
102468  			err = _tmp$13;
102469  			$s = -1; return [n, err];
102470  		/* } */ case 23:
102471  		_tmp$14 = p.$length;
102472  		_tmp$15 = $ifaceNil;
102473  		n = _tmp$14;
102474  		err = _tmp$15;
102475  		$s = -1; return [n, err];
102476  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2responseWriterState.ptr.prototype.writeChunk }; } $f._entry = _entry; $f._entry$1 = _entry$1; $f._entry$2 = _entry$2; $f._i = _i; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._ref = _ref; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$10 = _tmp$10; $f._tmp$11 = _tmp$11; $f._tmp$12 = _tmp$12; $f._tmp$13 = _tmp$13; $f._tmp$14 = _tmp$14; $f._tmp$15 = _tmp$15; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tmp$4 = _tmp$4; $f._tmp$5 = _tmp$5; $f._tmp$6 = _tmp$6; $f._tmp$7 = _tmp$7; $f._tmp$8 = _tmp$8; $f._tmp$9 = _tmp$9; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f.clen = clen; $f.clen64 = clen64; $f.ctype = ctype; $f.date = date; $f.endStream = endStream; $f.endStream$1 = endStream$1; $f.err = err; $f.err$1 = err$1; $f.err$2 = err$2; $f.hasContentType = hasContentType; $f.isHeadResp = isHeadResp; $f.n = n; $f.ok = ok; $f.p = p; $f.rws = rws; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
102477  	};
102478  	http2responseWriterState.prototype.writeChunk = function(p) { return this.$val.writeChunk(p); };
102479  	http2responseWriterState.ptr.prototype.promoteUndeclaredTrailers = function() {
102480  		var _entry, _i, _key, _keys, _r$1, _ref, k, rws, sorter, trailerKey, vv, $s, $r;
102481  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _entry = $f._entry; _i = $f._i; _key = $f._key; _keys = $f._keys; _r$1 = $f._r$1; _ref = $f._ref; k = $f.k; rws = $f.rws; sorter = $f.sorter; trailerKey = $f.trailerKey; vv = $f.vv; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
102482  		rws = this;
102483  		_ref = rws.handlerHeader;
102484  		_i = 0;
102485  		_keys = $keys(_ref);
102486  		/* while (true) { */ case 1:
102487  			/* if (!(_i < _keys.length)) { break; } */ if(!(_i < _keys.length)) { $s = 2; continue; }
102488  			_entry = _ref[_keys[_i]];
102489  			if (_entry === undefined) {
102490  				_i++;
102491  				/* continue; */ $s = 1; continue;
102492  			}
102493  			k = _entry.k;
102494  			vv = _entry.v;
102495  			/* */ if (!strings.HasPrefix(k, "Trailer:")) { $s = 3; continue; }
102496  			/* */ $s = 4; continue;
102497  			/* if (!strings.HasPrefix(k, "Trailer:")) { */ case 3:
102498  				_i++;
102499  				/* continue; */ $s = 1; continue;
102500  			/* } */ case 4:
102501  			trailerKey = strings.TrimPrefix(k, "Trailer:");
102502  			$r = rws.declareTrailer(trailerKey); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
102503  			_key = CanonicalHeaderKey(trailerKey); (rws.handlerHeader || $throwRuntimeError("assignment to entry in nil map"))[$String.keyFor(_key)] = { k: _key, v: vv };
102504  			_i++;
102505  		/* } */ $s = 1; continue; case 2:
102506  		/* */ if (rws.trailers.$length > 1) { $s = 6; continue; }
102507  		/* */ $s = 7; continue;
102508  		/* if (rws.trailers.$length > 1) { */ case 6:
102509  			_r$1 = http2sorterPool.Get(); /* */ $s = 8; case 8: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
102510  			sorter = $assertType(_r$1, ptrType$70);
102511  			$r = sorter.SortStrings(rws.trailers); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
102512  			http2sorterPool.Put(sorter);
102513  		/* } */ case 7:
102514  		$s = -1; return;
102515  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2responseWriterState.ptr.prototype.promoteUndeclaredTrailers }; } $f._entry = _entry; $f._i = _i; $f._key = _key; $f._keys = _keys; $f._r$1 = _r$1; $f._ref = _ref; $f.k = k; $f.rws = rws; $f.sorter = sorter; $f.trailerKey = trailerKey; $f.vv = vv; $f.$s = $s; $f.$r = $r; return $f;
102516  	};
102517  	http2responseWriterState.prototype.promoteUndeclaredTrailers = function() { return this.$val.promoteUndeclaredTrailers(); };
102518  	http2responseWriter.ptr.prototype.Flush = function() {
102519  		var _r$1, _r$2, err, rws, w, $s, $r;
102520  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; _r$2 = $f._r$2; err = $f.err; rws = $f.rws; w = $f.w; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
102521  		w = this;
102522  		rws = w.rws;
102523  		if (rws === ptrType$69.nil) {
102524  			$panic(new $String("Header called after Handler finished"));
102525  		}
102526  		/* */ if (rws.bw.Buffered() > 0) { $s = 1; continue; }
102527  		/* */ $s = 2; continue;
102528  		/* if (rws.bw.Buffered() > 0) { */ case 1:
102529  			_r$1 = rws.bw.Flush(); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
102530  			err = _r$1;
102531  			if (!($interfaceIsEqual(err, $ifaceNil))) {
102532  				$s = -1; return;
102533  			}
102534  			$s = 3; continue;
102535  		/* } else { */ case 2:
102536  			_r$2 = rws.writeChunk(sliceType$3.nil); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
102537  			_r$2;
102538  		/* } */ case 3:
102539  		$s = -1; return;
102540  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2responseWriter.ptr.prototype.Flush }; } $f._r$1 = _r$1; $f._r$2 = _r$2; $f.err = err; $f.rws = rws; $f.w = w; $f.$s = $s; $f.$r = $r; return $f;
102541  	};
102542  	http2responseWriter.prototype.Flush = function() { return this.$val.Flush(); };
102543  	http2responseWriter.ptr.prototype.CloseNotify = function() {
102544  		var ch, cw, rws, w, $s, $r;
102545  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; ch = $f.ch; cw = $f.cw; rws = $f.rws; w = $f.w; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
102546  		ch = [ch];
102547  		cw = [cw];
102548  		w = this;
102549  		rws = w.rws;
102550  		if (rws === ptrType$69.nil) {
102551  			$panic(new $String("CloseNotify called after Handler finished"));
102552  		}
102553  		$r = rws.closeNotifierMu.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
102554  		ch[0] = rws.closeNotifierCh;
102555  		/* */ if (ch[0] === $chanNil) { $s = 2; continue; }
102556  		/* */ $s = 3; continue;
102557  		/* if (ch[0] === $chanNil) { */ case 2:
102558  			ch[0] = new $Chan($Bool, 1);
102559  			rws.closeNotifierCh = ch[0];
102560  			cw[0] = rws.stream.cw;
102561  			$go((function(ch, cw) { return function $b() {
102562  				var $s, $r;
102563  				/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
102564  				$r = new http2closeWaiter(cw[0]).Wait(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
102565  				$r = $send(ch[0], true); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
102566  				$s = -1; return;
102567  				/* */ } return; } if ($f === undefined) { $f = { $blk: $b }; } $f.$s = $s; $f.$r = $r; return $f;
102568  			}; })(ch, cw), []);
102569  		/* } */ case 3:
102570  		$r = rws.closeNotifierMu.Unlock(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
102571  		$s = -1; return ch[0];
102572  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2responseWriter.ptr.prototype.CloseNotify }; } $f.ch = ch; $f.cw = cw; $f.rws = rws; $f.w = w; $f.$s = $s; $f.$r = $r; return $f;
102573  	};
102574  	http2responseWriter.prototype.CloseNotify = function() { return this.$val.CloseNotify(); };
102575  	http2responseWriter.ptr.prototype.Header = function() {
102576  		var rws, w;
102577  		w = this;
102578  		rws = w.rws;
102579  		if (rws === ptrType$69.nil) {
102580  			$panic(new $String("Header called after Handler finished"));
102581  		}
102582  		if (rws.handlerHeader === false) {
102583  			rws.handlerHeader = {};
102584  		}
102585  		return rws.handlerHeader;
102586  	};
102587  	http2responseWriter.prototype.Header = function() { return this.$val.Header(); };
102588  	http2checkWriteHeaderCode = function(code) {
102589  		var _r$1, code, $s, $r;
102590  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; code = $f.code; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
102591  		/* */ if (code < 100 || code > 999) { $s = 1; continue; }
102592  		/* */ $s = 2; continue;
102593  		/* if (code < 100 || code > 999) { */ case 1:
102594  			_r$1 = fmt.Sprintf("invalid WriteHeader code %v", new sliceType([new $Int(code)])); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
102595  			$panic(new $String(_r$1));
102596  		/* } */ case 2:
102597  		$s = -1; return;
102598  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2checkWriteHeaderCode }; } $f._r$1 = _r$1; $f.code = code; $f.$s = $s; $f.$r = $r; return $f;
102599  	};
102600  	http2responseWriter.ptr.prototype.WriteHeader = function(code) {
102601  		var code, rws, w, $s, $r;
102602  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; code = $f.code; rws = $f.rws; w = $f.w; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
102603  		w = this;
102604  		rws = w.rws;
102605  		if (rws === ptrType$69.nil) {
102606  			$panic(new $String("WriteHeader called after Handler finished"));
102607  		}
102608  		$r = rws.writeHeader(code); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
102609  		$s = -1; return;
102610  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2responseWriter.ptr.prototype.WriteHeader }; } $f.code = code; $f.rws = rws; $f.w = w; $f.$s = $s; $f.$r = $r; return $f;
102611  	};
102612  	http2responseWriter.prototype.WriteHeader = function(code) { return this.$val.WriteHeader(code); };
102613  	http2responseWriterState.ptr.prototype.writeHeader = function(code) {
102614  		var code, rws, $s, $r;
102615  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; code = $f.code; rws = $f.rws; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
102616  		rws = this;
102617  		/* */ if (!rws.wroteHeader) { $s = 1; continue; }
102618  		/* */ $s = 2; continue;
102619  		/* if (!rws.wroteHeader) { */ case 1:
102620  			$r = http2checkWriteHeaderCode(code); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
102621  			rws.wroteHeader = true;
102622  			rws.status = code;
102623  			if ($keys(rws.handlerHeader).length > 0) {
102624  				rws.snapHeader = http2cloneHeader(rws.handlerHeader);
102625  			}
102626  		/* } */ case 2:
102627  		$s = -1; return;
102628  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2responseWriterState.ptr.prototype.writeHeader }; } $f.code = code; $f.rws = rws; $f.$s = $s; $f.$r = $r; return $f;
102629  	};
102630  	http2responseWriterState.prototype.writeHeader = function(code) { return this.$val.writeHeader(code); };
102631  	http2cloneHeader = function(h) {
102632  		var _entry, _i, _key, _keys, _ref, h, h2, k, vv, vv2, x$4;
102633  		h2 = (x$4 = $keys(h).length, ((x$4 < 0 || x$4 > 2147483647) ? $throwRuntimeError("makemap: size out of range") : {}));
102634  		_ref = h;
102635  		_i = 0;
102636  		_keys = $keys(_ref);
102637  		while (true) {
102638  			if (!(_i < _keys.length)) { break; }
102639  			_entry = _ref[_keys[_i]];
102640  			if (_entry === undefined) {
102641  				_i++;
102642  				continue;
102643  			}
102644  			k = _entry.k;
102645  			vv = _entry.v;
102646  			vv2 = $makeSlice(sliceType$1, vv.$length);
102647  			$copySlice(vv2, vv);
102648  			_key = k; (h2 || $throwRuntimeError("assignment to entry in nil map"))[$String.keyFor(_key)] = { k: _key, v: vv2 };
102649  			_i++;
102650  		}
102651  		return h2;
102652  	};
102653  	http2responseWriter.ptr.prototype.Write = function(p) {
102654  		var _r$1, _tuple, err, n, p, w, $s, $r;
102655  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; _tuple = $f._tuple; err = $f.err; n = $f.n; p = $f.p; w = $f.w; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
102656  		n = 0;
102657  		err = $ifaceNil;
102658  		w = this;
102659  		_r$1 = w.write(p.$length, p, ""); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
102660  		_tuple = _r$1;
102661  		n = _tuple[0];
102662  		err = _tuple[1];
102663  		$s = -1; return [n, err];
102664  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2responseWriter.ptr.prototype.Write }; } $f._r$1 = _r$1; $f._tuple = _tuple; $f.err = err; $f.n = n; $f.p = p; $f.w = w; $f.$s = $s; $f.$r = $r; return $f;
102665  	};
102666  	http2responseWriter.prototype.Write = function(p) { return this.$val.Write(p); };
102667  	http2responseWriter.ptr.prototype.WriteString = function(s) {
102668  		var _r$1, _tuple, err, n, s, w, $s, $r;
102669  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; _tuple = $f._tuple; err = $f.err; n = $f.n; s = $f.s; w = $f.w; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
102670  		n = 0;
102671  		err = $ifaceNil;
102672  		w = this;
102673  		_r$1 = w.write(s.length, sliceType$3.nil, s); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
102674  		_tuple = _r$1;
102675  		n = _tuple[0];
102676  		err = _tuple[1];
102677  		$s = -1; return [n, err];
102678  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2responseWriter.ptr.prototype.WriteString }; } $f._r$1 = _r$1; $f._tuple = _tuple; $f.err = err; $f.n = n; $f.s = s; $f.w = w; $f.$s = $s; $f.$r = $r; return $f;
102679  	};
102680  	http2responseWriter.prototype.WriteString = function(s) { return this.$val.WriteString(s); };
102681  	http2responseWriter.ptr.prototype.write = function(lenData, dataB, dataS) {
102682  		var _r$1, _r$2, _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, _tuple$1, dataB, dataS, err, lenData, n, rws, w, x$10, x$4, x$5, x$6, x$7, x$8, x$9, $s, $r;
102683  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; _r$2 = $f._r$2; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; dataB = $f.dataB; dataS = $f.dataS; err = $f.err; lenData = $f.lenData; n = $f.n; rws = $f.rws; w = $f.w; x$10 = $f.x$10; x$4 = $f.x$4; x$5 = $f.x$5; x$6 = $f.x$6; x$7 = $f.x$7; x$8 = $f.x$8; x$9 = $f.x$9; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
102684  		n = 0;
102685  		err = $ifaceNil;
102686  		w = this;
102687  		rws = w.rws;
102688  		if (rws === ptrType$69.nil) {
102689  			$panic(new $String("Write called after Handler finished"));
102690  		}
102691  		/* */ if (!rws.wroteHeader) { $s = 1; continue; }
102692  		/* */ $s = 2; continue;
102693  		/* if (!rws.wroteHeader) { */ case 1:
102694  			$r = w.WriteHeader(200); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
102695  		/* } */ case 2:
102696  		if (!http2bodyAllowedForStatus(rws.status)) {
102697  			_tmp = 0;
102698  			_tmp$1 = $pkg.ErrBodyNotAllowed;
102699  			n = _tmp;
102700  			err = _tmp$1;
102701  			$s = -1; return [n, err];
102702  		}
102703  		rws.wroteBytes = (x$4 = rws.wroteBytes, x$5 = (x$6 = (new $Int64(0, dataB.$length)), x$7 = (new $Int64(0, dataS.length)), new $Int64(x$6.$high + x$7.$high, x$6.$low + x$7.$low)), new $Int64(x$4.$high + x$5.$high, x$4.$low + x$5.$low));
102704  		if (!((x$8 = rws.sentContentLen, (x$8.$high === 0 && x$8.$low === 0))) && (x$9 = rws.wroteBytes, x$10 = rws.sentContentLen, (x$9.$high > x$10.$high || (x$9.$high === x$10.$high && x$9.$low > x$10.$low)))) {
102705  			_tmp$2 = 0;
102706  			_tmp$3 = errors.New("http2: handler wrote more than declared Content-Length");
102707  			n = _tmp$2;
102708  			err = _tmp$3;
102709  			$s = -1; return [n, err];
102710  		}
102711  		/* */ if (!(dataB === sliceType$3.nil)) { $s = 4; continue; }
102712  		/* */ $s = 5; continue;
102713  		/* if (!(dataB === sliceType$3.nil)) { */ case 4:
102714  			_r$1 = rws.bw.Write(dataB); /* */ $s = 7; case 7: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
102715  			_tuple = _r$1;
102716  			n = _tuple[0];
102717  			err = _tuple[1];
102718  			$s = -1; return [n, err];
102719  		/* } else { */ case 5:
102720  			_r$2 = rws.bw.WriteString(dataS); /* */ $s = 8; case 8: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
102721  			_tuple$1 = _r$2;
102722  			n = _tuple$1[0];
102723  			err = _tuple$1[1];
102724  			$s = -1; return [n, err];
102725  		/* } */ case 6:
102726  		$s = -1; return [n, err];
102727  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2responseWriter.ptr.prototype.write }; } $f._r$1 = _r$1; $f._r$2 = _r$2; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.dataB = dataB; $f.dataS = dataS; $f.err = err; $f.lenData = lenData; $f.n = n; $f.rws = rws; $f.w = w; $f.x$10 = x$10; $f.x$4 = x$4; $f.x$5 = x$5; $f.x$6 = x$6; $f.x$7 = x$7; $f.x$8 = x$8; $f.x$9 = x$9; $f.$s = $s; $f.$r = $r; return $f;
102728  	};
102729  	http2responseWriter.prototype.write = function(lenData, dataB, dataS) { return this.$val.write(lenData, dataB, dataS); };
102730  	http2responseWriter.ptr.prototype.handlerDone = function() {
102731  		var dirty, rws, w, $s, $r;
102732  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; dirty = $f.dirty; rws = $f.rws; w = $f.w; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
102733  		w = this;
102734  		rws = w.rws;
102735  		dirty = rws.dirty;
102736  		rws.handlerDone = true;
102737  		$r = w.Flush(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
102738  		w.rws = ptrType$69.nil;
102739  		if (!dirty) {
102740  			http2responseWriterStatePool.Put(rws);
102741  		}
102742  		$s = -1; return;
102743  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2responseWriter.ptr.prototype.handlerDone }; } $f.dirty = dirty; $f.rws = rws; $f.w = w; $f.$s = $s; $f.$r = $r; return $f;
102744  	};
102745  	http2responseWriter.prototype.handlerDone = function() { return this.$val.handlerDone(); };
102746  	http2responseWriter.ptr.prototype.push = function(target, opts) {
102747  		var _1, _entry, _i, _keys, _r$1, _r$10, _r$11, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, _selection, _selection$1, _tuple, err, err$1, err$2, k, msg, opts, sc, st, target, u, w, wantScheme, $s, $r;
102748  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _entry = $f._entry; _i = $f._i; _keys = $f._keys; _r$1 = $f._r$1; _r$10 = $f._r$10; _r$11 = $f._r$11; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _r$8 = $f._r$8; _r$9 = $f._r$9; _ref = $f._ref; _selection = $f._selection; _selection$1 = $f._selection$1; _tuple = $f._tuple; err = $f.err; err$1 = $f.err$1; err$2 = $f.err$2; k = $f.k; msg = $f.msg; opts = $f.opts; sc = $f.sc; st = $f.st; target = $f.target; u = $f.u; w = $f.w; wantScheme = $f.wantScheme; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
102749  		w = this;
102750  		st = w.rws.stream;
102751  		sc = st.sc;
102752  		$r = sc.serveG.checkNotOn(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
102753  		if (st.isPushed()) {
102754  			$s = -1; return http2ErrRecursivePush;
102755  		}
102756  		if (opts.Method === "") {
102757  			opts.Method = "GET";
102758  		}
102759  		if (opts.Header === false) {
102760  			opts.Header = $makeMap($String.keyFor, []);
102761  		}
102762  		wantScheme = "http";
102763  		if (!(w.rws.req.TLS === ptrType$18.nil)) {
102764  			wantScheme = "https";
102765  		}
102766  		_r$1 = url.Parse(target); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
102767  		_tuple = _r$1;
102768  		u = _tuple[0];
102769  		err = _tuple[1];
102770  		if (!($interfaceIsEqual(err, $ifaceNil))) {
102771  			$s = -1; return err;
102772  		}
102773  		/* */ if (u.Scheme === "") { $s = 3; continue; }
102774  		/* */ $s = 4; continue;
102775  		/* if (u.Scheme === "") { */ case 3:
102776  			/* */ if (!strings.HasPrefix(target, "/")) { $s = 6; continue; }
102777  			/* */ $s = 7; continue;
102778  			/* if (!strings.HasPrefix(target, "/")) { */ case 6:
102779  				_r$2 = fmt.Errorf("target must be an absolute URL or an absolute path: %q", new sliceType([new $String(target)])); /* */ $s = 8; case 8: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
102780  				$s = -1; return _r$2;
102781  			/* } */ case 7:
102782  			u.Scheme = wantScheme;
102783  			u.Host = w.rws.req.Host;
102784  			$s = 5; continue;
102785  		/* } else { */ case 4:
102786  			/* */ if (!(u.Scheme === wantScheme)) { $s = 9; continue; }
102787  			/* */ $s = 10; continue;
102788  			/* if (!(u.Scheme === wantScheme)) { */ case 9:
102789  				_r$3 = fmt.Errorf("cannot push URL with scheme %q from request with scheme %q", new sliceType([new $String(u.Scheme), new $String(wantScheme)])); /* */ $s = 11; case 11: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
102790  				$s = -1; return _r$3;
102791  			/* } */ case 10:
102792  			if (u.Host === "") {
102793  				$s = -1; return errors.New("URL must have a host");
102794  			}
102795  		/* } */ case 5:
102796  		_ref = opts.Header;
102797  		_i = 0;
102798  		_keys = $keys(_ref);
102799  		/* while (true) { */ case 12:
102800  			/* if (!(_i < _keys.length)) { break; } */ if(!(_i < _keys.length)) { $s = 13; continue; }
102801  			_entry = _ref[_keys[_i]];
102802  			if (_entry === undefined) {
102803  				_i++;
102804  				/* continue; */ $s = 12; continue;
102805  			}
102806  			k = _entry.k;
102807  			/* */ if (strings.HasPrefix(k, ":")) { $s = 14; continue; }
102808  			/* */ $s = 15; continue;
102809  			/* if (strings.HasPrefix(k, ":")) { */ case 14:
102810  				_r$4 = fmt.Errorf("promised request headers cannot include pseudo header %q", new sliceType([new $String(k)])); /* */ $s = 16; case 16: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
102811  				$s = -1; return _r$4;
102812  			/* } */ case 15:
102813  				_r$5 = strings.ToLower(k); /* */ $s = 18; case 18: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
102814  				_1 = _r$5;
102815  				/* */ if (_1 === ("content-length") || _1 === ("content-encoding") || _1 === ("trailer") || _1 === ("te") || _1 === ("expect") || _1 === ("host")) { $s = 19; continue; }
102816  				/* */ $s = 20; continue;
102817  				/* if (_1 === ("content-length") || _1 === ("content-encoding") || _1 === ("trailer") || _1 === ("te") || _1 === ("expect") || _1 === ("host")) { */ case 19:
102818  					_r$6 = fmt.Errorf("promised request headers cannot include %q", new sliceType([new $String(k)])); /* */ $s = 21; case 21: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
102819  					$s = -1; return _r$6;
102820  				/* } */ case 20:
102821  			case 17:
102822  			_i++;
102823  		/* } */ $s = 12; continue; case 13:
102824  		_r$7 = http2checkValidHTTP2RequestHeaders(opts.Header); /* */ $s = 22; case 22: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
102825  		err$1 = _r$7;
102826  		if (!($interfaceIsEqual(err$1, $ifaceNil))) {
102827  			$s = -1; return err$1;
102828  		}
102829  		/* */ if (!(opts.Method === "GET") && !(opts.Method === "HEAD")) { $s = 23; continue; }
102830  		/* */ $s = 24; continue;
102831  		/* if (!(opts.Method === "GET") && !(opts.Method === "HEAD")) { */ case 23:
102832  			_r$8 = fmt.Errorf("method %q must be GET or HEAD", new sliceType([new $String(opts.Method)])); /* */ $s = 25; case 25: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
102833  			$s = -1; return _r$8;
102834  		/* } */ case 24:
102835  		_r$9 = http2errChanPool.Get(); /* */ $s = 26; case 26: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
102836  		msg = new http2startPushRequest.ptr(st, opts.Method, u, http2cloneHeader(opts.Header), $assertType(_r$9, chanType));
102837  		_r$10 = $select([[sc.doneServing], [st.cw], [sc.serveMsgCh, msg]]); /* */ $s = 27; case 27: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
102838  		_selection = _r$10;
102839  		/* */ if (_selection[0] === 0) { $s = 28; continue; }
102840  		/* */ if (_selection[0] === 1) { $s = 29; continue; }
102841  		/* */ if (_selection[0] === 2) { $s = 30; continue; }
102842  		/* */ $s = 31; continue;
102843  		/* if (_selection[0] === 0) { */ case 28:
102844  			$s = -1; return http2errClientDisconnected;
102845  		/* } else if (_selection[0] === 1) { */ case 29:
102846  			$s = -1; return http2errStreamClosed;
102847  		/* } else if (_selection[0] === 2) { */ case 30:
102848  		/* } */ case 31:
102849  		_r$11 = $select([[sc.doneServing], [st.cw], [msg.done]]); /* */ $s = 32; case 32: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; }
102850  		_selection$1 = _r$11;
102851  		if (_selection$1[0] === 0) {
102852  			$s = -1; return http2errClientDisconnected;
102853  		} else if (_selection$1[0] === 1) {
102854  			$s = -1; return http2errStreamClosed;
102855  		} else if (_selection$1[0] === 2) {
102856  			err$2 = _selection$1[1][0];
102857  			http2errChanPool.Put(new chanType(msg.done));
102858  			$s = -1; return err$2;
102859  		}
102860  		$s = -1; return $ifaceNil;
102861  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2responseWriter.ptr.prototype.push }; } $f._1 = _1; $f._entry = _entry; $f._i = _i; $f._keys = _keys; $f._r$1 = _r$1; $f._r$10 = _r$10; $f._r$11 = _r$11; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._r$8 = _r$8; $f._r$9 = _r$9; $f._ref = _ref; $f._selection = _selection; $f._selection$1 = _selection$1; $f._tuple = _tuple; $f.err = err; $f.err$1 = err$1; $f.err$2 = err$2; $f.k = k; $f.msg = msg; $f.opts = opts; $f.sc = sc; $f.st = st; $f.target = target; $f.u = u; $f.w = w; $f.wantScheme = wantScheme; $f.$s = $s; $f.$r = $r; return $f;
102862  	};
102863  	http2responseWriter.prototype.push = function(target, opts) { return this.$val.push(target, opts); };
102864  	http2serverConn.ptr.prototype.startPush = function(msg) {
102865  		var allocatePromisedID, msg, sc, $s, $r;
102866  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; allocatePromisedID = $f.allocatePromisedID; msg = $f.msg; sc = $f.sc; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
102867  		msg = [msg];
102868  		sc = [sc];
102869  		sc[0] = this;
102870  		$r = sc[0].serveG.check(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
102871  		/* */ if (!((msg[0].parent.state === 1)) && !((msg[0].parent.state === 3))) { $s = 2; continue; }
102872  		/* */ $s = 3; continue;
102873  		/* if (!((msg[0].parent.state === 1)) && !((msg[0].parent.state === 3))) { */ case 2:
102874  			$r = $send(msg[0].done, http2errStreamClosed); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
102875  			$s = -1; return;
102876  		/* } */ case 3:
102877  		/* */ if (!sc[0].pushEnabled) { $s = 5; continue; }
102878  		/* */ $s = 6; continue;
102879  		/* if (!sc[0].pushEnabled) { */ case 5:
102880  			$r = $send(msg[0].done, $pkg.ErrNotSupported); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
102881  			$s = -1; return;
102882  		/* } */ case 6:
102883  		allocatePromisedID = (function(msg, sc) { return function $b() {
102884  			var _r$1, _r$2, _r$3, _tuple, err, promised, promisedID, req, rw, $s, $r;
102885  			/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _tuple = $f._tuple; err = $f.err; promised = $f.promised; promisedID = $f.promisedID; req = $f.req; rw = $f.rw; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
102886  			$r = sc[0].serveG.check(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
102887  			if (!sc[0].pushEnabled) {
102888  				$s = -1; return [0, $pkg.ErrNotSupported];
102889  			}
102890  			if ((sc[0].curPushedStreams + 1 >>> 0) > sc[0].clientMaxStreams) {
102891  				$s = -1; return [0, http2ErrPushLimitReached];
102892  			}
102893  			/* */ if ((sc[0].maxPushPromiseID + 2 >>> 0) >= 2147483648) { $s = 2; continue; }
102894  			/* */ $s = 3; continue;
102895  			/* if ((sc[0].maxPushPromiseID + 2 >>> 0) >= 2147483648) { */ case 2:
102896  				$r = sc[0].startGracefulShutdownInternal(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
102897  				$s = -1; return [0, http2ErrPushLimitReached];
102898  			/* } */ case 3:
102899  			sc[0].maxPushPromiseID = sc[0].maxPushPromiseID + (2) >>> 0;
102900  			promisedID = sc[0].maxPushPromiseID;
102901  			_r$1 = sc[0].newStream(promisedID, msg[0].parent.id, 3); /* */ $s = 5; case 5: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
102902  			promised = _r$1;
102903  			_r$2 = sc[0].newWriterAndRequestNoBody(promised, new http2requestParam.ptr(msg[0].method, msg[0].url.Scheme, msg[0].url.Host, msg[0].url.RequestURI(), http2cloneHeader(msg[0].header))); /* */ $s = 6; case 6: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
102904  			_tuple = _r$2;
102905  			rw = _tuple[0];
102906  			req = _tuple[1];
102907  			err = _tuple[2];
102908  			/* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 7; continue; }
102909  			/* */ $s = 8; continue;
102910  			/* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 7:
102911  				_r$3 = fmt.Sprintf("newWriterAndRequestNoBody(%+v): %v", new sliceType([msg[0].url, err])); /* */ $s = 9; case 9: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
102912  				$panic(new $String(_r$3));
102913  			/* } */ case 8:
102914  			$go($methodVal(sc[0], "runHandler"), [rw, req, $methodVal(sc[0].handler, "ServeHTTP")]);
102915  			$s = -1; return [promisedID, $ifaceNil];
102916  			/* */ } return; } if ($f === undefined) { $f = { $blk: $b }; } $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._tuple = _tuple; $f.err = err; $f.promised = promised; $f.promisedID = promisedID; $f.req = req; $f.rw = rw; $f.$s = $s; $f.$r = $r; return $f;
102917  		}; })(msg, sc);
102918  		$r = sc[0].writeFrame(new http2FrameWriteRequest.ptr(new http2writePushPromise.ptr(msg[0].parent.id, msg[0].method, msg[0].url, msg[0].header, allocatePromisedID, 0), msg[0].parent, msg[0].done)); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
102919  		$s = -1; return;
102920  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2serverConn.ptr.prototype.startPush }; } $f.allocatePromisedID = allocatePromisedID; $f.msg = msg; $f.sc = sc; $f.$s = $s; $f.$r = $r; return $f;
102921  	};
102922  	http2serverConn.prototype.startPush = function(msg) { return this.$val.startPush(msg); };
102923  	http2foreachHeaderElement = function(v, fn) {
102924  		var _i, _ref, f, fn, v, $s, $r;
102925  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _i = $f._i; _ref = $f._ref; f = $f.f; fn = $f.fn; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
102926  		v = textproto.TrimString(v);
102927  		if (v === "") {
102928  			$s = -1; return;
102929  		}
102930  		/* */ if (!strings.Contains(v, ",")) { $s = 1; continue; }
102931  		/* */ $s = 2; continue;
102932  		/* if (!strings.Contains(v, ",")) { */ case 1:
102933  			$r = fn(v); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
102934  			$s = -1; return;
102935  		/* } */ case 2:
102936  		_ref = strings.Split(v, ",");
102937  		_i = 0;
102938  		/* while (true) { */ case 4:
102939  			/* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 5; continue; }
102940  			f = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
102941  			f = textproto.TrimString(f);
102942  			/* */ if (!(f === "")) { $s = 6; continue; }
102943  			/* */ $s = 7; continue;
102944  			/* if (!(f === "")) { */ case 6:
102945  				$r = fn(f); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
102946  			/* } */ case 7:
102947  			_i++;
102948  		/* } */ $s = 4; continue; case 5:
102949  		$s = -1; return;
102950  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2foreachHeaderElement }; } $f._i = _i; $f._ref = _ref; $f.f = f; $f.fn = fn; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
102951  	};
102952  	http2checkValidHTTP2RequestHeaders = function(h) {
102953  		var _entry, _entry$1, _i, _r$1, _ref, _tuple, h, k, ok, te, $s, $r;
102954  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _entry = $f._entry; _entry$1 = $f._entry$1; _i = $f._i; _r$1 = $f._r$1; _ref = $f._ref; _tuple = $f._tuple; h = $f.h; k = $f.k; ok = $f.ok; te = $f.te; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
102955  		_ref = http2connHeaders;
102956  		_i = 0;
102957  		/* while (true) { */ case 1:
102958  			/* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; }
102959  			k = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
102960  			_tuple = (_entry = h[$String.keyFor(k)], _entry !== undefined ? [_entry.v, true] : [sliceType$1.nil, false]);
102961  			ok = _tuple[1];
102962  			/* */ if (ok) { $s = 3; continue; }
102963  			/* */ $s = 4; continue;
102964  			/* if (ok) { */ case 3:
102965  				_r$1 = fmt.Errorf("request header %q is not valid in HTTP/2", new sliceType([new $String(k)])); /* */ $s = 5; case 5: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
102966  				$s = -1; return _r$1;
102967  			/* } */ case 4:
102968  			_i++;
102969  		/* } */ $s = 1; continue; case 2:
102970  		te = (_entry$1 = h[$String.keyFor("Te")], _entry$1 !== undefined ? _entry$1.v : sliceType$1.nil);
102971  		if (te.$length > 0 && (te.$length > 1 || (!((0 >= te.$length ? ($throwRuntimeError("index out of range"), undefined) : te.$array[te.$offset + 0]) === "trailers") && !((0 >= te.$length ? ($throwRuntimeError("index out of range"), undefined) : te.$array[te.$offset + 0]) === "")))) {
102972  			$s = -1; return errors.New("request header \"TE\" may only be \"trailers\" in HTTP/2");
102973  		}
102974  		$s = -1; return $ifaceNil;
102975  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2checkValidHTTP2RequestHeaders }; } $f._entry = _entry; $f._entry$1 = _entry$1; $f._i = _i; $f._r$1 = _r$1; $f._ref = _ref; $f._tuple = _tuple; $f.h = h; $f.k = k; $f.ok = ok; $f.te = te; $f.$s = $s; $f.$r = $r; return $f;
102976  	};
102977  	http2new400Handler = function(err) {
102978  		var err;
102979  		return (function $b(w, r) {
102980  			var _arg, _arg$1, _r$1, r, w, $s, $r;
102981  			/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _arg = $f._arg; _arg$1 = $f._arg$1; _r$1 = $f._r$1; r = $f.r; w = $f.w; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
102982  			_arg = w;
102983  			_r$1 = err.Error(); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
102984  			_arg$1 = _r$1;
102985  			$r = Error(_arg, _arg$1, 400); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
102986  			$s = -1; return;
102987  			/* */ } return; } if ($f === undefined) { $f = { $blk: $b }; } $f._arg = _arg; $f._arg$1 = _arg$1; $f._r$1 = _r$1; $f.r = r; $f.w = w; $f.$s = $s; $f.$r = $r; return $f;
102988  		});
102989  	};
102990  	http2ValidTrailerHeader = function(name) {
102991  		var _entry, name;
102992  		name = CanonicalHeaderKey(name);
102993  		if (strings.HasPrefix(name, "If-") || (_entry = http2badTrailer[$String.keyFor(name)], _entry !== undefined ? _entry.v : false)) {
102994  			return false;
102995  		}
102996  		return true;
102997  	};
102998  	http2h1ServerKeepAlivesDisabled = function(hs) {
102999  		var _r$1, _tuple, hs, hs$1, ok, x$4, $s, $r;
103000  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; _tuple = $f._tuple; hs = $f.hs; hs$1 = $f.hs$1; ok = $f.ok; x$4 = $f.x$4; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
103001  		x$4 = hs;
103002  		_tuple = $assertType(x$4, I, true);
103003  		hs$1 = _tuple[0];
103004  		ok = _tuple[1];
103005  		/* */ if (ok) { $s = 1; continue; }
103006  		/* */ $s = 2; continue;
103007  		/* if (ok) { */ case 1:
103008  			_r$1 = hs$1.doKeepAlives(); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
103009  			$s = -1; return !_r$1;
103010  		/* } */ case 2:
103011  		$s = -1; return false;
103012  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2h1ServerKeepAlivesDisabled }; } $f._r$1 = _r$1; $f._tuple = _tuple; $f.hs = hs; $f.hs$1 = hs$1; $f.ok = ok; $f.x$4 = x$4; $f.$s = $s; $f.$r = $r; return $f;
103013  	};
103014  	http2Transport.ptr.prototype.maxHeaderListSize = function() {
103015  		var t;
103016  		t = this;
103017  		if (t.MaxHeaderListSize === 0) {
103018  			return 10485760;
103019  		}
103020  		if (t.MaxHeaderListSize === 4294967295) {
103021  			return 0;
103022  		}
103023  		return t.MaxHeaderListSize;
103024  	};
103025  	http2Transport.prototype.maxHeaderListSize = function() { return this.$val.maxHeaderListSize(); };
103026  	http2Transport.ptr.prototype.disableCompression = function() {
103027  		var t;
103028  		t = this;
103029  		return t.DisableCompression || (!(t.t1 === ptrType$22.nil) && t.t1.DisableCompression);
103030  	};
103031  	http2Transport.prototype.disableCompression = function() { return this.$val.disableCompression(); };
103032  	http2Transport.ptr.prototype.connPool = function() {
103033  		var t, $s, $r;
103034  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; t = $f.t; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
103035  		t = this;
103036  		$r = t.connPoolOnce.Do($methodVal(t, "initConnPool")); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
103037  		$s = -1; return t.connPoolOrDef;
103038  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2Transport.ptr.prototype.connPool }; } $f.t = t; $f.$s = $s; $f.$r = $r; return $f;
103039  	};
103040  	http2Transport.prototype.connPool = function() { return this.$val.connPool(); };
103041  	http2Transport.ptr.prototype.initConnPool = function() {
103042  		var t;
103043  		t = this;
103044  		if (!($interfaceIsEqual(t.ConnPool, $ifaceNil))) {
103045  			t.connPoolOrDef = t.ConnPool;
103046  		} else {
103047  			t.connPoolOrDef = new http2clientConnPool.ptr(t, new sync.Mutex.ptr(0, 0), false, false, false, false);
103048  		}
103049  	};
103050  	http2Transport.prototype.initConnPool = function() { return this.$val.initConnPool(); };
103051  	http2awaitRequestCancel = function(req, done) {
103052  		var _r$1, _r$2, _r$3, _r$4, _selection, _v, ctx, done, req, $s, $r;
103053  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _selection = $f._selection; _v = $f._v; ctx = $f.ctx; done = $f.done; req = $f.req; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
103054  		ctx = http2reqContext(req);
103055  		if (!(req.Cancel === $chanNil)) { _v = false; $s = 3; continue s; }
103056  		_r$1 = ctx.Done(); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
103057  		_v = _r$1 === $chanNil; case 3:
103058  		/* */ if (_v) { $s = 1; continue; }
103059  		/* */ $s = 2; continue;
103060  		/* if (_v) { */ case 1:
103061  			$s = -1; return $ifaceNil;
103062  		/* } */ case 2:
103063  		_r$2 = ctx.Done(); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
103064  		_r$3 = $select([[req.Cancel], [_r$2], [done]]); /* */ $s = 6; case 6: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
103065  		_selection = _r$3;
103066  		/* */ if (_selection[0] === 0) { $s = 7; continue; }
103067  		/* */ if (_selection[0] === 1) { $s = 8; continue; }
103068  		/* */ if (_selection[0] === 2) { $s = 9; continue; }
103069  		/* */ $s = 10; continue;
103070  		/* if (_selection[0] === 0) { */ case 7:
103071  			$s = -1; return http2errRequestCanceled;
103072  		/* } else if (_selection[0] === 1) { */ case 8:
103073  			_r$4 = ctx.Err(); /* */ $s = 11; case 11: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
103074  			$s = -1; return _r$4;
103075  		/* } else if (_selection[0] === 2) { */ case 9:
103076  			$s = -1; return $ifaceNil;
103077  		/* } */ case 10:
103078  		$s = -1; return $ifaceNil;
103079  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2awaitRequestCancel }; } $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._selection = _selection; $f._v = _v; $f.ctx = ctx; $f.done = done; $f.req = req; $f.$s = $s; $f.$r = $r; return $f;
103080  	};
103081  	http2clientStream.ptr.prototype.awaitRequestCancel = function(req) {
103082  		var _r$1, cs, err, req, $s, $r;
103083  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; cs = $f.cs; err = $f.err; req = $f.req; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
103084  		cs = this;
103085  		_r$1 = http2awaitRequestCancel(req, cs.done); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
103086  		err = _r$1;
103087  		/* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 2; continue; }
103088  		/* */ $s = 3; continue;
103089  		/* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 2:
103090  			$r = cs.cancelStream(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
103091  			$r = cs.bufPipe.CloseWithError(err); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
103092  		/* } */ case 3:
103093  		$s = -1; return;
103094  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2clientStream.ptr.prototype.awaitRequestCancel }; } $f._r$1 = _r$1; $f.cs = cs; $f.err = err; $f.req = req; $f.$s = $s; $f.$r = $r; return $f;
103095  	};
103096  	http2clientStream.prototype.awaitRequestCancel = function(req) { return this.$val.awaitRequestCancel(req); };
103097  	http2clientStream.ptr.prototype.cancelStream = function() {
103098  		var cc, cs, didReset, $s, $r;
103099  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; cc = $f.cc; cs = $f.cs; didReset = $f.didReset; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
103100  		cs = this;
103101  		cc = cs.cc;
103102  		$r = cc.mu.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
103103  		didReset = cs.didReset;
103104  		cs.didReset = true;
103105  		$r = cc.mu.Unlock(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
103106  		/* */ if (!didReset) { $s = 3; continue; }
103107  		/* */ $s = 4; continue;
103108  		/* if (!didReset) { */ case 3:
103109  			$r = cc.writeStreamReset(cs.ID, 8, $ifaceNil); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
103110  			$r = cc.forgetStreamID(cs.ID); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
103111  		/* } */ case 4:
103112  		$s = -1; return;
103113  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2clientStream.ptr.prototype.cancelStream }; } $f.cc = cc; $f.cs = cs; $f.didReset = didReset; $f.$s = $s; $f.$r = $r; return $f;
103114  	};
103115  	http2clientStream.prototype.cancelStream = function() { return this.$val.cancelStream(); };
103116  	http2clientStream.ptr.prototype.checkResetOrDone = function() {
103117  		var _selection, cs, $r;
103118  		/* */ var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _selection = $f._selection; cs = $f.cs; $r = $f.$r; }
103119  		cs = this;
103120  		_selection = $select([[cs.peerReset], [cs.done], []]);
103121  		if (_selection[0] === 0) {
103122  			return cs.resetErr;
103123  		} else if (_selection[0] === 1) {
103124  			return http2errStreamClosed;
103125  		} else if (_selection[0] === 2) {
103126  			return $ifaceNil;
103127  		}
103128  		/* */ if ($f === undefined) { $f = { $blk: http2clientStream.ptr.prototype.checkResetOrDone }; } $f._selection = _selection; $f.cs = cs; $f.$r = $r; return $f;
103129  	};
103130  	http2clientStream.prototype.checkResetOrDone = function() { return this.$val.checkResetOrDone(); };
103131  	http2clientStream.ptr.prototype.getStartedWrite = function() {
103132  		var cc, cs, $s, $deferred, $r;
103133  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; cc = $f.cc; cs = $f.cs; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
103134  		cs = this;
103135  		cc = cs.cc;
103136  		$r = cc.mu.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
103137  		$deferred.push([$methodVal(cc.mu, "Unlock"), []]);
103138  		$s = -1; return cs.startedWrite;
103139  		/* */ } return; } } catch(err) { $err = err; $s = -1; return false; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: http2clientStream.ptr.prototype.getStartedWrite }; } $f.cc = cc; $f.cs = cs; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
103140  	};
103141  	http2clientStream.prototype.getStartedWrite = function() { return this.$val.getStartedWrite(); };
103142  	http2clientStream.ptr.prototype.abortRequestBodyWrite = function(err) {
103143  		var cc, cs, err, $s, $r;
103144  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; cc = $f.cc; cs = $f.cs; err = $f.err; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
103145  		cs = this;
103146  		if ($interfaceIsEqual(err, $ifaceNil)) {
103147  			$panic(new $String("nil error"));
103148  		}
103149  		cc = cs.cc;
103150  		$r = cc.mu.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
103151  		cs.stopReqBody = err;
103152  		$r = cc.cond.Broadcast(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
103153  		$r = cc.mu.Unlock(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
103154  		$s = -1; return;
103155  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2clientStream.ptr.prototype.abortRequestBodyWrite }; } $f.cc = cc; $f.cs = cs; $f.err = err; $f.$s = $s; $f.$r = $r; return $f;
103156  	};
103157  	http2clientStream.prototype.abortRequestBodyWrite = function(err) { return this.$val.abortRequestBodyWrite(err); };
103158  	http2stickyErrWriter.ptr.prototype.Write = function(p) {
103159  		var _r$1, _tmp, _tmp$1, _tuple, err, n, p, sew, $s, $r;
103160  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tuple = $f._tuple; err = $f.err; n = $f.n; p = $f.p; sew = $f.sew; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
103161  		n = 0;
103162  		err = $ifaceNil;
103163  		sew = this;
103164  		if (!($interfaceIsEqual(sew.err.$get(), $ifaceNil))) {
103165  			_tmp = 0;
103166  			_tmp$1 = sew.err.$get();
103167  			n = _tmp;
103168  			err = _tmp$1;
103169  			$s = -1; return [n, err];
103170  		}
103171  		_r$1 = sew.w.Write(p); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
103172  		_tuple = _r$1;
103173  		n = _tuple[0];
103174  		err = _tuple[1];
103175  		sew.err.$set(err);
103176  		$s = -1; return [n, err];
103177  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2stickyErrWriter.ptr.prototype.Write }; } $f._r$1 = _r$1; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tuple = _tuple; $f.err = err; $f.n = n; $f.p = p; $f.sew = sew; $f.$s = $s; $f.$r = $r; return $f;
103178  	};
103179  	http2stickyErrWriter.prototype.Write = function(p) { return this.$val.Write(p); };
103180  	http2noCachedConnError.ptr.prototype.IsHTTP2NoCachedConnError = function() {
103181  	};
103182  	http2noCachedConnError.prototype.IsHTTP2NoCachedConnError = function() { return this.$val.IsHTTP2NoCachedConnError(); };
103183  	http2noCachedConnError.ptr.prototype.Error = function() {
103184  		return "http2: no cached connection was available";
103185  	};
103186  	http2noCachedConnError.prototype.Error = function() { return this.$val.Error(); };
103187  	http2isNoCachedConnError = function(err) {
103188  		var _tuple, err, ok;
103189  		_tuple = $assertType(err, interfaceType, true);
103190  		ok = _tuple[1];
103191  		return ok;
103192  	};
103193  	http2Transport.ptr.prototype.RoundTrip = function(req) {
103194  		var _r$1, req, t, $s, $r;
103195  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; req = $f.req; t = $f.t; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
103196  		t = this;
103197  		_r$1 = t.RoundTripOpt(req, new http2RoundTripOpt.ptr(false)); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
103198  		$s = -1; return _r$1;
103199  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2Transport.ptr.prototype.RoundTrip }; } $f._r$1 = _r$1; $f.req = req; $f.t = t; $f.$s = $s; $f.$r = $r; return $f;
103200  	};
103201  	http2Transport.prototype.RoundTrip = function(req) { return this.$val.RoundTrip(req); };
103202  	http2authorityAddr = function(scheme, authority) {
103203  		var _r$1, _r$2, _tuple, _tuple$1, a, addr, authority, err, err$1, host, port, scheme, $s, $r;
103204  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; _r$2 = $f._r$2; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; a = $f.a; addr = $f.addr; authority = $f.authority; err = $f.err; err$1 = $f.err$1; host = $f.host; port = $f.port; scheme = $f.scheme; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
103205  		addr = "";
103206  		_r$1 = net.SplitHostPort(authority); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
103207  		_tuple = _r$1;
103208  		host = _tuple[0];
103209  		port = _tuple[1];
103210  		err = _tuple[2];
103211  		if (!($interfaceIsEqual(err, $ifaceNil))) {
103212  			port = "443";
103213  			if (scheme === "http") {
103214  				port = "80";
103215  			}
103216  			host = authority;
103217  		}
103218  		_r$2 = idna.ToASCII(host); /* */ $s = 2; case 2: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
103219  		_tuple$1 = _r$2;
103220  		a = _tuple$1[0];
103221  		err$1 = _tuple$1[1];
103222  		if ($interfaceIsEqual(err$1, $ifaceNil)) {
103223  			host = a;
103224  		}
103225  		if (strings.HasPrefix(host, "[") && strings.HasSuffix(host, "]")) {
103226  			addr = host + ":" + port;
103227  			$s = -1; return addr;
103228  		}
103229  		addr = net.JoinHostPort(host, port);
103230  		$s = -1; return addr;
103231  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2authorityAddr }; } $f._r$1 = _r$1; $f._r$2 = _r$2; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.a = a; $f.addr = addr; $f.authority = authority; $f.err = err; $f.err$1 = err$1; $f.host = host; $f.port = port; $f.scheme = scheme; $f.$s = $s; $f.$r = $r; return $f;
103232  	};
103233  	http2Transport.ptr.prototype.RoundTripOpt = function(req, opt) {
103234  		var _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _selection, _tuple, _tuple$1, _tuple$2, addr, backoff, cc, err, gotErrAfterReqBodyWrite, opt, req, res, retry, t, y, $s, $r;
103235  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _r$8 = $f._r$8; _r$9 = $f._r$9; _selection = $f._selection; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; addr = $f.addr; backoff = $f.backoff; cc = $f.cc; err = $f.err; gotErrAfterReqBodyWrite = $f.gotErrAfterReqBodyWrite; opt = $f.opt; req = $f.req; res = $f.res; retry = $f.retry; t = $f.t; y = $f.y; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
103236  		t = this;
103237  		if (!(req.URL.Scheme === "https" || (req.URL.Scheme === "http" && t.AllowHTTP))) {
103238  			$s = -1; return [ptrType$17.nil, errors.New("http2: unsupported scheme")];
103239  		}
103240  		_r$1 = http2authorityAddr(req.URL.Scheme, req.URL.Host); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
103241  		addr = _r$1;
103242  		retry = 0;
103243  		/* while (true) { */ case 2:
103244  			_r$2 = t.connPool(); /* */ $s = 4; case 4: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
103245  			_r$3 = _r$2.GetClientConn(req, addr); /* */ $s = 5; case 5: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
103246  			_tuple = _r$3;
103247  			cc = _tuple[0];
103248  			err = _tuple[1];
103249  			/* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 6; continue; }
103250  			/* */ $s = 7; continue;
103251  			/* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 6:
103252  				$r = t.vlogf("http2: Transport failed to get client conn for %s: %v", new sliceType([new $String(addr), err])); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
103253  				$s = -1; return [ptrType$17.nil, err];
103254  			/* } */ case 7:
103255  			$r = http2traceGotConn(req, cc); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
103256  			_r$4 = cc.roundTrip(req); /* */ $s = 10; case 10: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
103257  			_tuple$1 = _r$4;
103258  			res = _tuple$1[0];
103259  			gotErrAfterReqBodyWrite = _tuple$1[1];
103260  			err = _tuple$1[2];
103261  			/* */ if (!($interfaceIsEqual(err, $ifaceNil)) && retry <= 6) { $s = 11; continue; }
103262  			/* */ $s = 12; continue;
103263  			/* if (!($interfaceIsEqual(err, $ifaceNil)) && retry <= 6) { */ case 11:
103264  				_r$5 = http2shouldRetryRequest(req, err, gotErrAfterReqBodyWrite); /* */ $s = 13; case 13: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
103265  				_tuple$2 = _r$5;
103266  				req = _tuple$2[0];
103267  				err = _tuple$2[1];
103268  				/* */ if ($interfaceIsEqual(err, $ifaceNil)) { $s = 14; continue; }
103269  				/* */ $s = 15; continue;
103270  				/* if ($interfaceIsEqual(err, $ifaceNil)) { */ case 14:
103271  					/* */ if (retry === 0) { $s = 16; continue; }
103272  					/* */ $s = 17; continue;
103273  					/* if (retry === 0) { */ case 16:
103274  						retry = retry + (1) >> 0;
103275  						/* continue; */ $s = 2; continue;
103276  					/* } */ case 17:
103277  					backoff = (((y = ((((retry >>> 0)) - 1 >>> 0)), y < 32 ? (1 << y) : 0) >>> 0));
103278  					_r$6 = rand$1.Float64(); /* */ $s = 18; case 18: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
103279  					backoff = backoff + (backoff * (0.1 * _r$6));
103280  					_r$7 = http2reqContext(req).Done(); /* */ $s = 19; case 19: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
103281  					_r$8 = $select([[time.After($mul64(new time.Duration(0, 1000000000), (new time.Duration(0, backoff))))], [_r$7]]); /* */ $s = 20; case 20: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
103282  					_selection = _r$8;
103283  					/* */ if (_selection[0] === 0) { $s = 21; continue; }
103284  					/* */ if (_selection[0] === 1) { $s = 22; continue; }
103285  					/* */ $s = 23; continue;
103286  					/* if (_selection[0] === 0) { */ case 21:
103287  						retry = retry + (1) >> 0;
103288  						/* continue; */ $s = 2; continue;
103289  						$s = 23; continue;
103290  					/* } else if (_selection[0] === 1) { */ case 22:
103291  						_r$9 = http2reqContext(req).Err(); /* */ $s = 24; case 24: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
103292  						$s = -1; return [ptrType$17.nil, _r$9];
103293  					/* } */ case 23:
103294  				/* } */ case 15:
103295  			/* } */ case 12:
103296  			/* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 25; continue; }
103297  			/* */ $s = 26; continue;
103298  			/* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 25:
103299  				$r = t.vlogf("RoundTrip failure: %v", new sliceType([err])); /* */ $s = 27; case 27: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
103300  				$s = -1; return [ptrType$17.nil, err];
103301  			/* } */ case 26:
103302  			$s = -1; return [res, $ifaceNil];
103303  		/* } */ $s = 2; continue; case 3:
103304  		$s = -1; return [ptrType$17.nil, $ifaceNil];
103305  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2Transport.ptr.prototype.RoundTripOpt }; } $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._r$8 = _r$8; $f._r$9 = _r$9; $f._selection = _selection; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f.addr = addr; $f.backoff = backoff; $f.cc = cc; $f.err = err; $f.gotErrAfterReqBodyWrite = gotErrAfterReqBodyWrite; $f.opt = opt; $f.req = req; $f.res = res; $f.retry = retry; $f.t = t; $f.y = y; $f.$s = $s; $f.$r = $r; return $f;
103306  	};
103307  	http2Transport.prototype.RoundTripOpt = function(req, opt) { return this.$val.RoundTripOpt(req, opt); };
103308  	http2Transport.ptr.prototype.CloseIdleConnections = function() {
103309  		var _r$1, _tuple, cp, ok, t, $s, $r;
103310  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; _tuple = $f._tuple; cp = $f.cp; ok = $f.ok; t = $f.t; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
103311  		t = this;
103312  		_r$1 = t.connPool(); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
103313  		_tuple = $assertType(_r$1, http2clientConnPoolIdleCloser, true);
103314  		cp = _tuple[0];
103315  		ok = _tuple[1];
103316  		/* */ if (ok) { $s = 2; continue; }
103317  		/* */ $s = 3; continue;
103318  		/* if (ok) { */ case 2:
103319  			$r = cp.closeIdleConnections(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
103320  		/* } */ case 3:
103321  		$s = -1; return;
103322  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2Transport.ptr.prototype.CloseIdleConnections }; } $f._r$1 = _r$1; $f._tuple = _tuple; $f.cp = cp; $f.ok = ok; $f.t = t; $f.$s = $s; $f.$r = $r; return $f;
103323  	};
103324  	http2Transport.prototype.CloseIdleConnections = function() { return this.$val.CloseIdleConnections(); };
103325  	http2shouldRetryRequest = function(req, err, afterBodyWrite) {
103326  		var _r$1, _r$2, _tuple, afterBodyWrite, body$1, err, getBody, newReq, req, $s, $r;
103327  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; _r$2 = $f._r$2; _tuple = $f._tuple; afterBodyWrite = $f.afterBodyWrite; body$1 = $f.body$1; err = $f.err; getBody = $f.getBody; newReq = $f.newReq; req = $f.req; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
103328  		newReq = [newReq];
103329  		if (!http2canRetryError(err)) {
103330  			$s = -1; return [ptrType$7.nil, err];
103331  		}
103332  		if (!afterBodyWrite) {
103333  			$s = -1; return [req, $ifaceNil];
103334  		}
103335  		if ($interfaceIsEqual(req.Body, $ifaceNil) || http2reqBodyIsNoBody(req.Body)) {
103336  			$s = -1; return [req, $ifaceNil];
103337  		}
103338  		getBody = http2reqGetBody(req);
103339  		/* */ if (getBody === $throwNilPointerError) { $s = 1; continue; }
103340  		/* */ $s = 2; continue;
103341  		/* if (getBody === $throwNilPointerError) { */ case 1:
103342  			_r$1 = fmt.Errorf("http2: Transport: cannot retry err [%v] after Request.Body was written; define Request.GetBody to avoid this error", new sliceType([err])); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
103343  			$s = -1; return [ptrType$7.nil, _r$1];
103344  		/* } */ case 2:
103345  		_r$2 = getBody(); /* */ $s = 4; case 4: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
103346  		_tuple = _r$2;
103347  		body$1 = _tuple[0];
103348  		err = _tuple[1];
103349  		if (!($interfaceIsEqual(err, $ifaceNil))) {
103350  			$s = -1; return [ptrType$7.nil, err];
103351  		}
103352  		newReq[0] = $clone(req, Request);
103353  		newReq[0].Body = body$1;
103354  		$s = -1; return [newReq[0], $ifaceNil];
103355  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2shouldRetryRequest }; } $f._r$1 = _r$1; $f._r$2 = _r$2; $f._tuple = _tuple; $f.afterBodyWrite = afterBodyWrite; $f.body$1 = body$1; $f.err = err; $f.getBody = getBody; $f.newReq = newReq; $f.req = req; $f.$s = $s; $f.$r = $r; return $f;
103356  	};
103357  	http2canRetryError = function(err) {
103358  		var _tuple, err, ok, se;
103359  		if ($interfaceIsEqual(err, http2errClientConnUnusable) || $interfaceIsEqual(err, http2errClientConnGotGoAway)) {
103360  			return true;
103361  		}
103362  		_tuple = $assertType(err, http2StreamError, true);
103363  		se = $clone(_tuple[0], http2StreamError);
103364  		ok = _tuple[1];
103365  		if (ok) {
103366  			return se.Code === 7;
103367  		}
103368  		return false;
103369  	};
103370  	http2Transport.ptr.prototype.dialClientConn = function(addr, singleUse) {
103371  		var _arg, _arg$1, _r$1, _r$2, _r$3, _r$4, _tuple, _tuple$1, addr, err, host, singleUse, t, tconn, $s, $r;
103372  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _arg = $f._arg; _arg$1 = $f._arg$1; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; addr = $f.addr; err = $f.err; host = $f.host; singleUse = $f.singleUse; t = $f.t; tconn = $f.tconn; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
103373  		t = this;
103374  		_r$1 = net.SplitHostPort(addr); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
103375  		_tuple = _r$1;
103376  		host = _tuple[0];
103377  		err = _tuple[2];
103378  		if (!($interfaceIsEqual(err, $ifaceNil))) {
103379  			$s = -1; return [ptrType$28.nil, err];
103380  		}
103381  		_arg = addr;
103382  		_r$2 = t.newTLSConfig(host); /* */ $s = 2; case 2: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
103383  		_arg$1 = _r$2;
103384  		_r$3 = t.dialTLS()("tcp", _arg, _arg$1); /* */ $s = 3; case 3: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
103385  		_tuple$1 = _r$3;
103386  		tconn = _tuple$1[0];
103387  		err = _tuple$1[1];
103388  		if (!($interfaceIsEqual(err, $ifaceNil))) {
103389  			$s = -1; return [ptrType$28.nil, err];
103390  		}
103391  		_r$4 = t.newClientConn(tconn, singleUse); /* */ $s = 4; case 4: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
103392  		$s = -1; return _r$4;
103393  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2Transport.ptr.prototype.dialClientConn }; } $f._arg = _arg; $f._arg$1 = _arg$1; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.addr = addr; $f.err = err; $f.host = host; $f.singleUse = singleUse; $f.t = t; $f.tconn = tconn; $f.$s = $s; $f.$r = $r; return $f;
103394  	};
103395  	http2Transport.prototype.dialClientConn = function(addr, singleUse) { return this.$val.dialClientConn(addr, singleUse); };
103396  	http2Transport.ptr.prototype.newTLSConfig = function(host) {
103397  		var _r$1, cfg, host, t, $s, $r;
103398  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; cfg = $f.cfg; host = $f.host; t = $f.t; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
103399  		t = this;
103400  		cfg = new tls.Config.ptr($ifaceNil, $throwNilPointerError, sliceType$11.nil, false, $throwNilPointerError, $throwNilPointerError, $throwNilPointerError, $throwNilPointerError, ptrType$31.nil, sliceType$1.nil, "", 0, ptrType$31.nil, false, sliceType$12.nil, false, false, arrayType$2.zero(), $ifaceNil, 0, 0, sliceType$13.nil, false, 0, $ifaceNil, new sync.Once.ptr(new sync.Mutex.ptr(0, 0), 0), new sync.RWMutex.ptr(new sync.Mutex.ptr(0, 0), 0, 0, 0, 0), sliceType$14.nil);
103401  		/* */ if (!(t.TLSClientConfig === ptrType$14.nil)) { $s = 1; continue; }
103402  		/* */ $s = 2; continue;
103403  		/* if (!(t.TLSClientConfig === ptrType$14.nil)) { */ case 1:
103404  			_r$1 = http2cloneTLSConfig(t.TLSClientConfig); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
103405  			tls.Config.copy(cfg, _r$1);
103406  		/* } */ case 2:
103407  		if (!http2strSliceContains(cfg.NextProtos, "h2")) {
103408  			cfg.NextProtos = $appendSlice(new sliceType$1(["h2"]), cfg.NextProtos);
103409  		}
103410  		if (cfg.ServerName === "") {
103411  			cfg.ServerName = host;
103412  		}
103413  		$s = -1; return cfg;
103414  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2Transport.ptr.prototype.newTLSConfig }; } $f._r$1 = _r$1; $f.cfg = cfg; $f.host = host; $f.t = t; $f.$s = $s; $f.$r = $r; return $f;
103415  	};
103416  	http2Transport.prototype.newTLSConfig = function(host) { return this.$val.newTLSConfig(host); };
103417  	http2Transport.ptr.prototype.dialTLS = function() {
103418  		var t;
103419  		t = this;
103420  		if (!(t.DialTLS === $throwNilPointerError)) {
103421  			return t.DialTLS;
103422  		}
103423  		return $methodVal(t, "dialTLSDefault");
103424  	};
103425  	http2Transport.prototype.dialTLS = function() { return this.$val.dialTLS(); };
103426  	http2Transport.ptr.prototype.dialTLSDefault = function(network, addr, cfg) {
103427  		var _r$1, _r$2, _r$3, _r$4, _r$5, _tuple, addr, cfg, cn, err, err$1, err$2, network, p, state, t, $s, $r;
103428  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _tuple = $f._tuple; addr = $f.addr; cfg = $f.cfg; cn = $f.cn; err = $f.err; err$1 = $f.err$1; err$2 = $f.err$2; network = $f.network; p = $f.p; state = $f.state; t = $f.t; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
103429  		t = this;
103430  		_r$1 = tls.Dial(network, addr, cfg); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
103431  		_tuple = _r$1;
103432  		cn = _tuple[0];
103433  		err = _tuple[1];
103434  		if (!($interfaceIsEqual(err, $ifaceNil))) {
103435  			$s = -1; return [$ifaceNil, err];
103436  		}
103437  		_r$2 = cn.Handshake(); /* */ $s = 2; case 2: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
103438  		err$1 = _r$2;
103439  		if (!($interfaceIsEqual(err$1, $ifaceNil))) {
103440  			$s = -1; return [$ifaceNil, err$1];
103441  		}
103442  		/* */ if (!cfg.InsecureSkipVerify) { $s = 3; continue; }
103443  		/* */ $s = 4; continue;
103444  		/* if (!cfg.InsecureSkipVerify) { */ case 3:
103445  			_r$3 = cn.VerifyHostname(cfg.ServerName); /* */ $s = 5; case 5: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
103446  			err$2 = _r$3;
103447  			if (!($interfaceIsEqual(err$2, $ifaceNil))) {
103448  				$s = -1; return [$ifaceNil, err$2];
103449  			}
103450  		/* } */ case 4:
103451  		_r$4 = cn.ConnectionState(); /* */ $s = 6; case 6: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
103452  		state = $clone(_r$4, tls.ConnectionState);
103453  		p = state.NegotiatedProtocol;
103454  		/* */ if (!(p === "h2")) { $s = 7; continue; }
103455  		/* */ $s = 8; continue;
103456  		/* if (!(p === "h2")) { */ case 7:
103457  			_r$5 = fmt.Errorf("http2: unexpected ALPN protocol %q; want %q", new sliceType([new $String(p), new $String("h2")])); /* */ $s = 9; case 9: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
103458  			$s = -1; return [$ifaceNil, _r$5];
103459  		/* } */ case 8:
103460  		if (!state.NegotiatedProtocolIsMutual) {
103461  			$s = -1; return [$ifaceNil, errors.New("http2: could not negotiate protocol mutually")];
103462  		}
103463  		$s = -1; return [cn, $ifaceNil];
103464  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2Transport.ptr.prototype.dialTLSDefault }; } $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._tuple = _tuple; $f.addr = addr; $f.cfg = cfg; $f.cn = cn; $f.err = err; $f.err$1 = err$1; $f.err$2 = err$2; $f.network = network; $f.p = p; $f.state = state; $f.t = t; $f.$s = $s; $f.$r = $r; return $f;
103465  	};
103466  	http2Transport.prototype.dialTLSDefault = function(network, addr, cfg) { return this.$val.dialTLSDefault(network, addr, cfg); };
103467  	http2Transport.ptr.prototype.disableKeepAlives = function() {
103468  		var t;
103469  		t = this;
103470  		return !(t.t1 === ptrType$22.nil) && t.t1.DisableKeepAlives;
103471  	};
103472  	http2Transport.prototype.disableKeepAlives = function() { return this.$val.disableKeepAlives(); };
103473  	http2Transport.ptr.prototype.expectContinueTimeout = function() {
103474  		var t;
103475  		t = this;
103476  		if (t.t1 === ptrType$22.nil) {
103477  			return new time.Duration(0, 0);
103478  		}
103479  		return http2transportExpectContinueTimeout(t.t1);
103480  	};
103481  	http2Transport.prototype.expectContinueTimeout = function() { return this.$val.expectContinueTimeout(); };
103482  	http2Transport.ptr.prototype.NewClientConn = function(c) {
103483  		var _r$1, c, t, $s, $r;
103484  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; c = $f.c; t = $f.t; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
103485  		t = this;
103486  		_r$1 = t.newClientConn(c, false); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
103487  		$s = -1; return _r$1;
103488  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2Transport.ptr.prototype.NewClientConn }; } $f._r$1 = _r$1; $f.c = c; $f.t = t; $f.$s = $s; $f.$r = $r; return $f;
103489  	};
103490  	http2Transport.prototype.NewClientConn = function(c) { return this.$val.NewClientConn(c); };
103491  	http2Transport.ptr.prototype.newClientConn = function(c, singleUse) {
103492  		var _arg, _arg$1, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _tuple, c, cc, cs, d, initialSettings, max, ok, singleUse, state, t, x$4, $s, $r;
103493  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _arg = $f._arg; _arg$1 = $f._arg$1; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _r$8 = $f._r$8; _tuple = $f._tuple; c = $f.c; cc = $f.cc; cs = $f.cs; d = $f.d; initialSettings = $f.initialSettings; max = $f.max; ok = $f.ok; singleUse = $f.singleUse; state = $f.state; t = $f.t; x$4 = $f.x$4; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
103494  		state = [state];
103495  		t = this;
103496  		cc = new http2ClientConn.ptr(t, c, ptrType$18.nil, singleUse, new $Chan(structType, 0), $ifaceNil, new time.Duration(0, 0), ptrType$56.nil, new sync.Mutex.ptr(0, 0), ptrType$71.nil, new http2flow.ptr(0, ptrType$32.nil), new http2flow.ptr(0, ptrType$32.nil), false, true, ptrType$44.nil, "", {}, 1, 0, {}, ptrType$10.nil, ptrType$72.nil, ptrType$33.nil, new time.Time.ptr(new $Uint64(0, 0), new $Int64(0, 0), ptrType$1.nil), 16384, 1000, new $Uint64(4294967295, 4294967295), 65535, new bytes.Buffer.ptr(sliceType$3.nil, 0, arrayType.zero(), 0), ptrType$57.nil, sliceType$5.nil, new sync.Mutex.ptr(0, 0), $ifaceNil);
103497  		d = t.idleConnTimeout();
103498  		if (!((d.$high === 0 && d.$low === 0))) {
103499  			cc.idleTimeout = d;
103500  			cc.idleTimer = time.AfterFunc(d, $methodVal(cc, "onIdleTimeout"));
103501  		}
103502  		/* */ if (http2VerboseLogs) { $s = 1; continue; }
103503  		/* */ $s = 2; continue;
103504  		/* if (http2VerboseLogs) { */ case 1:
103505  			_arg = cc;
103506  			_r$1 = c.RemoteAddr(); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
103507  			_arg$1 = _r$1;
103508  			$r = t.vlogf("http2: Transport creating client conn %p to %v", new sliceType([_arg, _arg$1])); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
103509  		/* } */ case 2:
103510  		cc.cond = sync.NewCond(cc.mu);
103511  		cc.flow.add(65535);
103512  		cc.bw = bufio.NewWriter((x$4 = new http2stickyErrWriter.ptr(c, (cc.$ptr_werr || (cc.$ptr_werr = new ptrType$50(function() { return this.$target.werr; }, function($v) { this.$target.werr = $v; }, cc)))), new x$4.constructor.elem(x$4)));
103513  		cc.br = bufio.NewReader(c);
103514  		cc.fr = http2NewFramer(cc.bw, cc.br);
103515  		_r$2 = hpack.NewDecoder(4096, $throwNilPointerError); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
103516  		cc.fr.ReadMetaHeaders = _r$2;
103517  		cc.fr.MaxHeaderListSize = t.maxHeaderListSize();
103518  		_r$3 = hpack.NewEncoder(cc.hbuf); /* */ $s = 6; case 6: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
103519  		cc.henc = _r$3;
103520  		_tuple = $assertType(c, http2connectionStater, true);
103521  		cs = _tuple[0];
103522  		ok = _tuple[1];
103523  		/* */ if (ok) { $s = 7; continue; }
103524  		/* */ $s = 8; continue;
103525  		/* if (ok) { */ case 7:
103526  			_r$4 = cs.ConnectionState(); /* */ $s = 9; case 9: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
103527  			state[0] = $clone(_r$4, tls.ConnectionState);
103528  			cc.tlsState = state[0];
103529  		/* } */ case 8:
103530  		initialSettings = new sliceType$19([new http2Setting.ptr(2, 0), new http2Setting.ptr(4, 4194304)]);
103531  		max = t.maxHeaderListSize();
103532  		if (!((max === 0))) {
103533  			initialSettings = $append(initialSettings, new http2Setting.ptr(6, max));
103534  		}
103535  		_r$5 = cc.bw.Write(http2clientPreface); /* */ $s = 10; case 10: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
103536  		_r$5;
103537  		_r$6 = cc.fr.WriteSettings(initialSettings); /* */ $s = 11; case 11: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
103538  		_r$6;
103539  		_r$7 = cc.fr.WriteWindowUpdate(0, 1073741824); /* */ $s = 12; case 12: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
103540  		_r$7;
103541  		cc.inflow.add(1073807359);
103542  		_r$8 = cc.bw.Flush(); /* */ $s = 13; case 13: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
103543  		_r$8;
103544  		if (!($interfaceIsEqual(cc.werr, $ifaceNil))) {
103545  			$s = -1; return [ptrType$28.nil, cc.werr];
103546  		}
103547  		$go($methodVal(cc, "readLoop"), []);
103548  		$s = -1; return [cc, $ifaceNil];
103549  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2Transport.ptr.prototype.newClientConn }; } $f._arg = _arg; $f._arg$1 = _arg$1; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._r$8 = _r$8; $f._tuple = _tuple; $f.c = c; $f.cc = cc; $f.cs = cs; $f.d = d; $f.initialSettings = initialSettings; $f.max = max; $f.ok = ok; $f.singleUse = singleUse; $f.state = state; $f.t = t; $f.x$4 = x$4; $f.$s = $s; $f.$r = $r; return $f;
103550  	};
103551  	http2Transport.prototype.newClientConn = function(c, singleUse) { return this.$val.newClientConn(c, singleUse); };
103552  	http2ClientConn.ptr.prototype.setGoAway = function(f) {
103553  		var _entry, _i, _keys, _ref, _selection, cc, cs, f, last, old, streamID, $s, $deferred, $r;
103554  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _entry = $f._entry; _i = $f._i; _keys = $f._keys; _ref = $f._ref; _selection = $f._selection; cc = $f.cc; cs = $f.cs; f = $f.f; last = $f.last; old = $f.old; streamID = $f.streamID; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
103555  		cc = this;
103556  		$r = cc.mu.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
103557  		$deferred.push([$methodVal(cc.mu, "Unlock"), []]);
103558  		old = cc.goAway;
103559  		cc.goAway = f;
103560  		if (cc.goAwayDebug === "") {
103561  			cc.goAwayDebug = ($bytesToString(f.DebugData()));
103562  		}
103563  		if (!(old === ptrType$44.nil) && !((old.ErrCode === 0))) {
103564  			cc.goAway.ErrCode = old.ErrCode;
103565  		}
103566  		last = f.LastStreamID;
103567  		_ref = cc.streams;
103568  		_i = 0;
103569  		_keys = $keys(_ref);
103570  		while (true) {
103571  			if (!(_i < _keys.length)) { break; }
103572  			_entry = _ref[_keys[_i]];
103573  			if (_entry === undefined) {
103574  				_i++;
103575  				continue;
103576  			}
103577  			streamID = _entry.k;
103578  			cs = _entry.v;
103579  			if (streamID > last) {
103580  				_selection = $select([[cs.resc, new http2resAndError.ptr(ptrType$17.nil, http2errClientConnGotGoAway)], []]);
103581  				if (_selection[0] === 0) {
103582  				} else if (_selection[0] === 1) {
103583  				}
103584  			}
103585  			_i++;
103586  		}
103587  		$s = -1; return;
103588  		/* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: http2ClientConn.ptr.prototype.setGoAway }; } $f._entry = _entry; $f._i = _i; $f._keys = _keys; $f._ref = _ref; $f._selection = _selection; $f.cc = cc; $f.cs = cs; $f.f = f; $f.last = last; $f.old = old; $f.streamID = streamID; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
103589  	};
103590  	http2ClientConn.prototype.setGoAway = function(f) { return this.$val.setGoAway(f); };
103591  	http2ClientConn.ptr.prototype.CanTakeNewRequest = function() {
103592  		var cc, $s, $deferred, $r;
103593  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; cc = $f.cc; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
103594  		cc = this;
103595  		$r = cc.mu.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
103596  		$deferred.push([$methodVal(cc.mu, "Unlock"), []]);
103597  		$s = -1; return cc.canTakeNewRequestLocked();
103598  		/* */ } return; } } catch(err) { $err = err; $s = -1; return false; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: http2ClientConn.ptr.prototype.CanTakeNewRequest }; } $f.cc = cc; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
103599  	};
103600  	http2ClientConn.prototype.CanTakeNewRequest = function() { return this.$val.CanTakeNewRequest(); };
103601  	http2ClientConn.ptr.prototype.canTakeNewRequestLocked = function() {
103602  		var cc, x$4, x$5, x$6;
103603  		cc = this;
103604  		if (cc.singleUse && cc.nextStreamID > 1) {
103605  			return false;
103606  		}
103607  		return cc.goAway === ptrType$44.nil && !cc.closed && (x$4 = (x$5 = (new $Int64(0, cc.nextStreamID)), x$6 = (new $Int64(0, cc.pendingRequests)), new $Int64(x$5.$high + x$6.$high, x$5.$low + x$6.$low)), (x$4.$high < 0 || (x$4.$high === 0 && x$4.$low < 2147483647)));
103608  	};
103609  	http2ClientConn.prototype.canTakeNewRequestLocked = function() { return this.$val.canTakeNewRequestLocked(); };
103610  	http2ClientConn.ptr.prototype.onIdleTimeout = function() {
103611  		var cc, $s, $r;
103612  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; cc = $f.cc; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
103613  		cc = this;
103614  		$r = cc.closeIfIdle(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
103615  		$s = -1; return;
103616  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2ClientConn.ptr.prototype.onIdleTimeout }; } $f.cc = cc; $f.$s = $s; $f.$r = $r; return $f;
103617  	};
103618  	http2ClientConn.prototype.onIdleTimeout = function() { return this.$val.onIdleTimeout(); };
103619  	http2ClientConn.ptr.prototype.closeIfIdle = function() {
103620  		var _r$1, cc, nextID, $s, $r;
103621  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; cc = $f.cc; nextID = $f.nextID; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
103622  		cc = this;
103623  		$r = cc.mu.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
103624  		/* */ if ($keys(cc.streams).length > 0) { $s = 2; continue; }
103625  		/* */ $s = 3; continue;
103626  		/* if ($keys(cc.streams).length > 0) { */ case 2:
103627  			$r = cc.mu.Unlock(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
103628  			$s = -1; return;
103629  		/* } */ case 3:
103630  		cc.closed = true;
103631  		nextID = cc.nextStreamID;
103632  		$r = cc.mu.Unlock(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
103633  		/* */ if (http2VerboseLogs) { $s = 6; continue; }
103634  		/* */ $s = 7; continue;
103635  		/* if (http2VerboseLogs) { */ case 6:
103636  			$r = cc.vlogf("http2: Transport closing idle conn %p (forSingleUse=%v, maxStream=%v)", new sliceType([cc, new $Bool(cc.singleUse), new $Uint32((nextID - 2 >>> 0))])); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
103637  		/* } */ case 7:
103638  		_r$1 = cc.tconn.Close(); /* */ $s = 9; case 9: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
103639  		_r$1;
103640  		$s = -1; return;
103641  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2ClientConn.ptr.prototype.closeIfIdle }; } $f._r$1 = _r$1; $f.cc = cc; $f.nextID = nextID; $f.$s = $s; $f.$r = $r; return $f;
103642  	};
103643  	http2ClientConn.prototype.closeIfIdle = function() { return this.$val.closeIfIdle(); };
103644  	http2ClientConn.ptr.prototype.frameScratchBuffer = function() {
103645  		var _i, _ref, buf, cc, i, size, x$4, $s, $r;
103646  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _i = $f._i; _ref = $f._ref; buf = $f.buf; cc = $f.cc; i = $f.i; size = $f.size; x$4 = $f.x$4; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
103647  		cc = this;
103648  		$r = cc.mu.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
103649  		size = cc.maxFrameSize;
103650  		if (size > 524288) {
103651  			size = 524288;
103652  		}
103653  		_ref = cc.freeBuf;
103654  		_i = 0;
103655  		/* while (true) { */ case 2:
103656  			/* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 3; continue; }
103657  			i = _i;
103658  			buf = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
103659  			/* */ if (buf.$length >= ((size >> 0))) { $s = 4; continue; }
103660  			/* */ $s = 5; continue;
103661  			/* if (buf.$length >= ((size >> 0))) { */ case 4:
103662  				(x$4 = cc.freeBuf, ((i < 0 || i >= x$4.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$4.$array[x$4.$offset + i] = sliceType$3.nil));
103663  				$r = cc.mu.Unlock(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
103664  				$s = -1; return $subslice(buf, 0, size);
103665  			/* } */ case 5:
103666  			_i++;
103667  		/* } */ $s = 2; continue; case 3:
103668  		$r = cc.mu.Unlock(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
103669  		$s = -1; return $makeSlice(sliceType$3, size);
103670  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2ClientConn.ptr.prototype.frameScratchBuffer }; } $f._i = _i; $f._ref = _ref; $f.buf = buf; $f.cc = cc; $f.i = i; $f.size = size; $f.x$4 = x$4; $f.$s = $s; $f.$r = $r; return $f;
103671  	};
103672  	http2ClientConn.prototype.frameScratchBuffer = function() { return this.$val.frameScratchBuffer(); };
103673  	http2ClientConn.ptr.prototype.putFrameScratchBuffer = function(buf) {
103674  		var _i, _ref, buf, cc, i, old, x$4, $s, $deferred, $r;
103675  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _i = $f._i; _ref = $f._ref; buf = $f.buf; cc = $f.cc; i = $f.i; old = $f.old; x$4 = $f.x$4; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
103676  		cc = this;
103677  		$r = cc.mu.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
103678  		$deferred.push([$methodVal(cc.mu, "Unlock"), []]);
103679  		if (cc.freeBuf.$length < 4) {
103680  			cc.freeBuf = $append(cc.freeBuf, buf);
103681  			$s = -1; return;
103682  		}
103683  		_ref = cc.freeBuf;
103684  		_i = 0;
103685  		while (true) {
103686  			if (!(_i < _ref.$length)) { break; }
103687  			i = _i;
103688  			old = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
103689  			if (old === sliceType$3.nil) {
103690  				(x$4 = cc.freeBuf, ((i < 0 || i >= x$4.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$4.$array[x$4.$offset + i] = buf));
103691  				$s = -1; return;
103692  			}
103693  			_i++;
103694  		}
103695  		$s = -1; return;
103696  		/* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: http2ClientConn.ptr.prototype.putFrameScratchBuffer }; } $f._i = _i; $f._ref = _ref; $f.buf = buf; $f.cc = cc; $f.i = i; $f.old = old; $f.x$4 = x$4; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
103697  	};
103698  	http2ClientConn.prototype.putFrameScratchBuffer = function(buf) { return this.$val.putFrameScratchBuffer(buf); };
103699  	http2commaSeparatedTrailers = function(req) {
103700  		var _1, _entry, _i, _keys, _ref, k, keys, req, $s, $r;
103701  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _entry = $f._entry; _i = $f._i; _keys = $f._keys; _ref = $f._ref; k = $f.k; keys = $f.keys; req = $f.req; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
103702  		keys = $makeSlice(sliceType$1, 0, $keys(req.Trailer).length);
103703  		_ref = req.Trailer;
103704  		_i = 0;
103705  		_keys = $keys(_ref);
103706  		while (true) {
103707  			if (!(_i < _keys.length)) { break; }
103708  			_entry = _ref[_keys[_i]];
103709  			if (_entry === undefined) {
103710  				_i++;
103711  				continue;
103712  			}
103713  			k = _entry.k;
103714  			k = CanonicalHeaderKey(k);
103715  			_1 = k;
103716  			if (_1 === ("Transfer-Encoding") || _1 === ("Trailer") || _1 === ("Content-Length")) {
103717  				$s = -1; return ["", new http2badStringError.ptr("invalid Trailer key", k)];
103718  			}
103719  			keys = $append(keys, k);
103720  			_i++;
103721  		}
103722  		/* */ if (keys.$length > 0) { $s = 1; continue; }
103723  		/* */ $s = 2; continue;
103724  		/* if (keys.$length > 0) { */ case 1:
103725  			$r = sort.Strings(keys); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
103726  			$s = -1; return [strings.Join(keys, ","), $ifaceNil];
103727  		/* } */ case 2:
103728  		$s = -1; return ["", $ifaceNil];
103729  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2commaSeparatedTrailers }; } $f._1 = _1; $f._entry = _entry; $f._i = _i; $f._keys = _keys; $f._ref = _ref; $f.k = k; $f.keys = keys; $f.req = req; $f.$s = $s; $f.$r = $r; return $f;
103730  	};
103731  	http2ClientConn.ptr.prototype.responseHeaderTimeout = function() {
103732  		var cc;
103733  		cc = this;
103734  		if (!(cc.t.t1 === ptrType$22.nil)) {
103735  			return cc.t.t1.ResponseHeaderTimeout;
103736  		}
103737  		return new time.Duration(0, 0);
103738  	};
103739  	http2ClientConn.prototype.responseHeaderTimeout = function() { return this.$val.responseHeaderTimeout(); };
103740  	http2checkConnHeaders = function(req) {
103741  		var _entry, _entry$1, _entry$2, _r$1, _r$2, _r$3, req, v, vv, vv$1, $s, $r;
103742  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _entry = $f._entry; _entry$1 = $f._entry$1; _entry$2 = $f._entry$2; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; req = $f.req; v = $f.v; vv = $f.vv; vv$1 = $f.vv$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
103743  		v = new Header(req.Header).Get("Upgrade");
103744  		/* */ if (!(v === "")) { $s = 1; continue; }
103745  		/* */ $s = 2; continue;
103746  		/* if (!(v === "")) { */ case 1:
103747  			_r$1 = fmt.Errorf("http2: invalid Upgrade request header: %q", new sliceType([(_entry = req.Header[$String.keyFor("Upgrade")], _entry !== undefined ? _entry.v : sliceType$1.nil)])); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
103748  			$s = -1; return _r$1;
103749  		/* } */ case 2:
103750  		vv = (_entry$1 = req.Header[$String.keyFor("Transfer-Encoding")], _entry$1 !== undefined ? _entry$1.v : sliceType$1.nil);
103751  		/* */ if (vv.$length > 0 && (vv.$length > 1 || !((0 >= vv.$length ? ($throwRuntimeError("index out of range"), undefined) : vv.$array[vv.$offset + 0]) === "") && !((0 >= vv.$length ? ($throwRuntimeError("index out of range"), undefined) : vv.$array[vv.$offset + 0]) === "chunked"))) { $s = 4; continue; }
103752  		/* */ $s = 5; continue;
103753  		/* if (vv.$length > 0 && (vv.$length > 1 || !((0 >= vv.$length ? ($throwRuntimeError("index out of range"), undefined) : vv.$array[vv.$offset + 0]) === "") && !((0 >= vv.$length ? ($throwRuntimeError("index out of range"), undefined) : vv.$array[vv.$offset + 0]) === "chunked"))) { */ case 4:
103754  			_r$2 = fmt.Errorf("http2: invalid Transfer-Encoding request header: %q", new sliceType([vv])); /* */ $s = 6; case 6: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
103755  			$s = -1; return _r$2;
103756  		/* } */ case 5:
103757  		vv$1 = (_entry$2 = req.Header[$String.keyFor("Connection")], _entry$2 !== undefined ? _entry$2.v : sliceType$1.nil);
103758  		/* */ if (vv$1.$length > 0 && (vv$1.$length > 1 || !((0 >= vv$1.$length ? ($throwRuntimeError("index out of range"), undefined) : vv$1.$array[vv$1.$offset + 0]) === "") && !((0 >= vv$1.$length ? ($throwRuntimeError("index out of range"), undefined) : vv$1.$array[vv$1.$offset + 0]) === "close") && !((0 >= vv$1.$length ? ($throwRuntimeError("index out of range"), undefined) : vv$1.$array[vv$1.$offset + 0]) === "keep-alive"))) { $s = 7; continue; }
103759  		/* */ $s = 8; continue;
103760  		/* if (vv$1.$length > 0 && (vv$1.$length > 1 || !((0 >= vv$1.$length ? ($throwRuntimeError("index out of range"), undefined) : vv$1.$array[vv$1.$offset + 0]) === "") && !((0 >= vv$1.$length ? ($throwRuntimeError("index out of range"), undefined) : vv$1.$array[vv$1.$offset + 0]) === "close") && !((0 >= vv$1.$length ? ($throwRuntimeError("index out of range"), undefined) : vv$1.$array[vv$1.$offset + 0]) === "keep-alive"))) { */ case 7:
103761  			_r$3 = fmt.Errorf("http2: invalid Connection request header: %q", new sliceType([vv$1])); /* */ $s = 9; case 9: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
103762  			$s = -1; return _r$3;
103763  		/* } */ case 8:
103764  		$s = -1; return $ifaceNil;
103765  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2checkConnHeaders }; } $f._entry = _entry; $f._entry$1 = _entry$1; $f._entry$2 = _entry$2; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f.req = req; $f.v = v; $f.vv = vv; $f.vv$1 = vv$1; $f.$s = $s; $f.$r = $r; return $f;
103766  	};
103767  	http2actualContentLength = function(req) {
103768  		var req, x$4;
103769  		if ($interfaceIsEqual(req.Body, $ifaceNil) || http2reqBodyIsNoBody(req.Body)) {
103770  			return new $Int64(0, 0);
103771  		}
103772  		if (!((x$4 = req.ContentLength, (x$4.$high === 0 && x$4.$low === 0)))) {
103773  			return req.ContentLength;
103774  		}
103775  		return new $Int64(-1, 4294967295);
103776  	};
103777  	http2ClientConn.ptr.prototype.RoundTrip = function(req) {
103778  		var _r$1, _tuple, cc, err, req, resp, $s, $r;
103779  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; _tuple = $f._tuple; cc = $f.cc; err = $f.err; req = $f.req; resp = $f.resp; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
103780  		cc = this;
103781  		_r$1 = cc.roundTrip(req); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
103782  		_tuple = _r$1;
103783  		resp = _tuple[0];
103784  		err = _tuple[2];
103785  		$s = -1; return [resp, err];
103786  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2ClientConn.ptr.prototype.RoundTrip }; } $f._r$1 = _r$1; $f._tuple = _tuple; $f.cc = cc; $f.err = err; $f.req = req; $f.resp = resp; $f.$s = $s; $f.$r = $r; return $f;
103787  	};
103788  	http2ClientConn.prototype.RoundTrip = function(req) { return this.$val.RoundTrip(req); };
103789  	http2ClientConn.ptr.prototype.roundTrip = function(req) {
103790  		var _r$1, _r$10, _r$11, _r$12, _r$13, _r$14, _r$15, _r$16, _r$17, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _selection, _selection$1, _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$14, _tmp$15, _tmp$16, _tmp$17, _tmp$18, _tmp$19, _tmp$2, _tmp$20, _tmp$21, _tmp$22, _tmp$23, _tmp$24, _tmp$25, _tmp$26, _tmp$27, _tmp$28, _tmp$29, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, _tuple$1, _tuple$2, _tuple$3, body$1, bodyWriter, bodyWritten, cc, contentLen, cs, ctx, d, d$1, endStream, err, err$1, err$2, err$3, gotErrAfterReqBodyWrite, handleReadLoopResponse, hasBody, hasTrailers, hdrs, re, re$1, readLoopResCh, req, requestedGzip, res, respHeaderTimer, timer, timer$1, trailers, werr, $s, $deferred, $r;
103791  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; _r$10 = $f._r$10; _r$11 = $f._r$11; _r$12 = $f._r$12; _r$13 = $f._r$13; _r$14 = $f._r$14; _r$15 = $f._r$15; _r$16 = $f._r$16; _r$17 = $f._r$17; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _r$8 = $f._r$8; _r$9 = $f._r$9; _selection = $f._selection; _selection$1 = $f._selection$1; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$10 = $f._tmp$10; _tmp$11 = $f._tmp$11; _tmp$12 = $f._tmp$12; _tmp$13 = $f._tmp$13; _tmp$14 = $f._tmp$14; _tmp$15 = $f._tmp$15; _tmp$16 = $f._tmp$16; _tmp$17 = $f._tmp$17; _tmp$18 = $f._tmp$18; _tmp$19 = $f._tmp$19; _tmp$2 = $f._tmp$2; _tmp$20 = $f._tmp$20; _tmp$21 = $f._tmp$21; _tmp$22 = $f._tmp$22; _tmp$23 = $f._tmp$23; _tmp$24 = $f._tmp$24; _tmp$25 = $f._tmp$25; _tmp$26 = $f._tmp$26; _tmp$27 = $f._tmp$27; _tmp$28 = $f._tmp$28; _tmp$29 = $f._tmp$29; _tmp$3 = $f._tmp$3; _tmp$4 = $f._tmp$4; _tmp$5 = $f._tmp$5; _tmp$6 = $f._tmp$6; _tmp$7 = $f._tmp$7; _tmp$8 = $f._tmp$8; _tmp$9 = $f._tmp$9; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; body$1 = $f.body$1; bodyWriter = $f.bodyWriter; bodyWritten = $f.bodyWritten; cc = $f.cc; contentLen = $f.contentLen; cs = $f.cs; ctx = $f.ctx; d = $f.d; d$1 = $f.d$1; endStream = $f.endStream; err = $f.err; err$1 = $f.err$1; err$2 = $f.err$2; err$3 = $f.err$3; gotErrAfterReqBodyWrite = $f.gotErrAfterReqBodyWrite; handleReadLoopResponse = $f.handleReadLoopResponse; hasBody = $f.hasBody; hasTrailers = $f.hasTrailers; hdrs = $f.hdrs; re = $f.re; re$1 = $f.re$1; readLoopResCh = $f.readLoopResCh; req = $f.req; requestedGzip = $f.requestedGzip; res = $f.res; respHeaderTimer = $f.respHeaderTimer; timer = $f.timer; timer$1 = $f.timer$1; trailers = $f.trailers; werr = $f.werr; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
103792  		bodyWriter = [bodyWriter];
103793  		cc = [cc];
103794  		cs = [cs];
103795  		req = [req];
103796  		res = ptrType$17.nil;
103797  		gotErrAfterReqBodyWrite = false;
103798  		err = $ifaceNil;
103799  		cc[0] = this;
103800  		_r$1 = http2checkConnHeaders(req[0]); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
103801  		err$1 = _r$1;
103802  		if (!($interfaceIsEqual(err$1, $ifaceNil))) {
103803  			_tmp = ptrType$17.nil;
103804  			_tmp$1 = false;
103805  			_tmp$2 = err$1;
103806  			res = _tmp;
103807  			gotErrAfterReqBodyWrite = _tmp$1;
103808  			err = _tmp$2;
103809  			$s = -1; return [res, gotErrAfterReqBodyWrite, err];
103810  		}
103811  		if (!(cc[0].idleTimer === ptrType$56.nil)) {
103812  			cc[0].idleTimer.Stop();
103813  		}
103814  		_r$2 = http2commaSeparatedTrailers(req[0]); /* */ $s = 2; case 2: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
103815  		_tuple = _r$2;
103816  		trailers = _tuple[0];
103817  		err = _tuple[1];
103818  		if (!($interfaceIsEqual(err, $ifaceNil))) {
103819  			_tmp$3 = ptrType$17.nil;
103820  			_tmp$4 = false;
103821  			_tmp$5 = err;
103822  			res = _tmp$3;
103823  			gotErrAfterReqBodyWrite = _tmp$4;
103824  			err = _tmp$5;
103825  			$s = -1; return [res, gotErrAfterReqBodyWrite, err];
103826  		}
103827  		hasTrailers = !(trailers === "");
103828  		$r = cc[0].mu.Lock(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
103829  		_r$3 = cc[0].awaitOpenSlotForRequest(req[0]); /* */ $s = 4; case 4: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
103830  		err$2 = _r$3;
103831  		/* */ if (!($interfaceIsEqual(err$2, $ifaceNil))) { $s = 5; continue; }
103832  		/* */ $s = 6; continue;
103833  		/* if (!($interfaceIsEqual(err$2, $ifaceNil))) { */ case 5:
103834  			$r = cc[0].mu.Unlock(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
103835  			_tmp$6 = ptrType$17.nil;
103836  			_tmp$7 = false;
103837  			_tmp$8 = err$2;
103838  			res = _tmp$6;
103839  			gotErrAfterReqBodyWrite = _tmp$7;
103840  			err = _tmp$8;
103841  			$s = -1; return [res, gotErrAfterReqBodyWrite, err];
103842  		/* } */ case 6:
103843  		body$1 = req[0].Body;
103844  		contentLen = http2actualContentLength(req[0]);
103845  		hasBody = !((contentLen.$high === 0 && contentLen.$low === 0));
103846  		requestedGzip = false;
103847  		if (!cc[0].t.disableCompression() && new Header(req[0].Header).Get("Accept-Encoding") === "" && new Header(req[0].Header).Get("Range") === "" && !(req[0].Method === "HEAD")) {
103848  			requestedGzip = true;
103849  		}
103850  		_r$4 = cc[0].encodeHeaders(req[0], requestedGzip, trailers, contentLen); /* */ $s = 8; case 8: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
103851  		_tuple$1 = _r$4;
103852  		hdrs = _tuple$1[0];
103853  		err = _tuple$1[1];
103854  		/* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 9; continue; }
103855  		/* */ $s = 10; continue;
103856  		/* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 9:
103857  			$r = cc[0].mu.Unlock(); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
103858  			_tmp$9 = ptrType$17.nil;
103859  			_tmp$10 = false;
103860  			_tmp$11 = err;
103861  			res = _tmp$9;
103862  			gotErrAfterReqBodyWrite = _tmp$10;
103863  			err = _tmp$11;
103864  			$s = -1; return [res, gotErrAfterReqBodyWrite, err];
103865  		/* } */ case 10:
103866  		cs[0] = cc[0].newStream();
103867  		cs[0].req = req[0];
103868  		_r$5 = http2requestTrace(req[0]); /* */ $s = 12; case 12: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
103869  		cs[0].trace = _r$5;
103870  		cs[0].requestedGzip = requestedGzip;
103871  		bodyWriter[0] = $clone(cc[0].t.getBodyWriterState(cs[0], body$1), http2bodyWriterState);
103872  		cs[0].on100 = $methodVal($clone(bodyWriter[0], http2bodyWriterState), "on100");
103873  		$r = cc[0].wmu.Lock(); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
103874  		endStream = !hasBody && !hasTrailers;
103875  		_r$6 = cc[0].writeHeaders(cs[0].ID, endStream, ((cc[0].maxFrameSize >> 0)), hdrs); /* */ $s = 14; case 14: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
103876  		werr = _r$6;
103877  		$r = cc[0].wmu.Unlock(); /* */ $s = 15; case 15: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
103878  		$r = http2traceWroteHeaders(cs[0].trace); /* */ $s = 16; case 16: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
103879  		$r = cc[0].mu.Unlock(); /* */ $s = 17; case 17: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
103880  		/* */ if (!($interfaceIsEqual(werr, $ifaceNil))) { $s = 18; continue; }
103881  		/* */ $s = 19; continue;
103882  		/* if (!($interfaceIsEqual(werr, $ifaceNil))) { */ case 18:
103883  			/* */ if (hasBody) { $s = 20; continue; }
103884  			/* */ $s = 21; continue;
103885  			/* if (hasBody) { */ case 20:
103886  				_r$7 = req[0].Body.Close(); /* */ $s = 22; case 22: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
103887  				_r$7;
103888  				$clone(bodyWriter[0], http2bodyWriterState).cancel();
103889  			/* } */ case 21:
103890  			$r = cc[0].forgetStreamID(cs[0].ID); /* */ $s = 23; case 23: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
103891  			$r = http2traceWroteRequest(cs[0].trace, werr); /* */ $s = 24; case 24: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
103892  			_tmp$12 = ptrType$17.nil;
103893  			_tmp$13 = false;
103894  			_tmp$14 = werr;
103895  			res = _tmp$12;
103896  			gotErrAfterReqBodyWrite = _tmp$13;
103897  			err = _tmp$14;
103898  			$s = -1; return [res, gotErrAfterReqBodyWrite, err];
103899  		/* } */ case 19:
103900  		respHeaderTimer = $chanNil;
103901  		/* */ if (hasBody) { $s = 25; continue; }
103902  		/* */ $s = 26; continue;
103903  		/* if (hasBody) { */ case 25:
103904  			$r = $clone(bodyWriter[0], http2bodyWriterState).scheduleBodyWrite(); /* */ $s = 28; case 28: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
103905  			$s = 27; continue;
103906  		/* } else { */ case 26:
103907  			$r = http2traceWroteRequest(cs[0].trace, $ifaceNil); /* */ $s = 29; case 29: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
103908  			d = cc[0].responseHeaderTimeout();
103909  			if (!((d.$high === 0 && d.$low === 0))) {
103910  				timer = time.NewTimer(d);
103911  				$deferred.push([$methodVal(timer, "Stop"), []]);
103912  				respHeaderTimer = timer.C;
103913  			}
103914  		/* } */ case 27:
103915  		readLoopResCh = cs[0].resc;
103916  		bodyWritten = false;
103917  		ctx = http2reqContext(req[0]);
103918  		handleReadLoopResponse = (function(bodyWriter, cc, cs, req) { return function $b(re) {
103919  			var _r$8, re, res$1, $s, $r;
103920  			/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$8 = $f._r$8; re = $f.re; res$1 = $f.res$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
103921  			res$1 = re.res;
103922  			/* */ if (!($interfaceIsEqual(re.err, $ifaceNil)) || res$1.StatusCode > 299) { $s = 1; continue; }
103923  			/* */ $s = 2; continue;
103924  			/* if (!($interfaceIsEqual(re.err, $ifaceNil)) || res$1.StatusCode > 299) { */ case 1:
103925  				$clone(bodyWriter[0], http2bodyWriterState).cancel();
103926  				$r = cs[0].abortRequestBodyWrite(http2errStopReqBodyWrite); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
103927  			/* } */ case 2:
103928  			/* */ if (!($interfaceIsEqual(re.err, $ifaceNil))) { $s = 4; continue; }
103929  			/* */ $s = 5; continue;
103930  			/* if (!($interfaceIsEqual(re.err, $ifaceNil))) { */ case 4:
103931  				$r = cc[0].forgetStreamID(cs[0].ID); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
103932  				_r$8 = cs[0].getStartedWrite(); /* */ $s = 7; case 7: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
103933  				$s = -1; return [ptrType$17.nil, _r$8, re.err];
103934  			/* } */ case 5:
103935  			res$1.Request = req[0];
103936  			res$1.TLS = cc[0].tlsState;
103937  			$s = -1; return [res$1, false, $ifaceNil];
103938  			/* */ } return; } if ($f === undefined) { $f = { $blk: $b }; } $f._r$8 = _r$8; $f.re = re; $f.res$1 = res$1; $f.$s = $s; $f.$r = $r; return $f;
103939  		}; })(bodyWriter, cc, cs, req);
103940  		/* while (true) { */ case 30:
103941  			_r$8 = ctx.Done(); /* */ $s = 32; case 32: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
103942  			_r$9 = $select([[readLoopResCh], [respHeaderTimer], [_r$8], [req[0].Cancel], [cs[0].peerReset], [bodyWriter[0].resc]]); /* */ $s = 33; case 33: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
103943  			_selection = _r$9;
103944  			/* */ if (_selection[0] === 0) { $s = 34; continue; }
103945  			/* */ if (_selection[0] === 1) { $s = 35; continue; }
103946  			/* */ if (_selection[0] === 2) { $s = 36; continue; }
103947  			/* */ if (_selection[0] === 3) { $s = 37; continue; }
103948  			/* */ if (_selection[0] === 4) { $s = 38; continue; }
103949  			/* */ if (_selection[0] === 5) { $s = 39; continue; }
103950  			/* */ $s = 40; continue;
103951  			/* if (_selection[0] === 0) { */ case 34:
103952  				re = $clone(_selection[1][0], http2resAndError);
103953  				_r$10 = handleReadLoopResponse($clone(re, http2resAndError)); /* */ $s = 41; case 41: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
103954  				_tuple$2 = _r$10;
103955  				res = _tuple$2[0];
103956  				gotErrAfterReqBodyWrite = _tuple$2[1];
103957  				err = _tuple$2[2];
103958  				$s = -1; return [res, gotErrAfterReqBodyWrite, err];
103959  			/* } else if (_selection[0] === 1) { */ case 35:
103960  				/* */ if (!hasBody || bodyWritten) { $s = 42; continue; }
103961  				/* */ $s = 43; continue;
103962  				/* if (!hasBody || bodyWritten) { */ case 42:
103963  					$r = cc[0].writeStreamReset(cs[0].ID, 8, $ifaceNil); /* */ $s = 45; case 45: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
103964  					$s = 44; continue;
103965  				/* } else { */ case 43:
103966  					$clone(bodyWriter[0], http2bodyWriterState).cancel();
103967  					$r = cs[0].abortRequestBodyWrite(http2errStopReqBodyWriteAndCancel); /* */ $s = 46; case 46: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
103968  				/* } */ case 44:
103969  				$r = cc[0].forgetStreamID(cs[0].ID); /* */ $s = 47; case 47: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
103970  				_tmp$15 = ptrType$17.nil;
103971  				_r$11 = cs[0].getStartedWrite(); /* */ $s = 48; case 48: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; }
103972  				_tmp$16 = _r$11;
103973  				_tmp$17 = http2errTimeout;
103974  				res = _tmp$15;
103975  				gotErrAfterReqBodyWrite = _tmp$16;
103976  				err = _tmp$17;
103977  				$s = -1; return [res, gotErrAfterReqBodyWrite, err];
103978  			/* } else if (_selection[0] === 2) { */ case 36:
103979  				/* */ if (!hasBody || bodyWritten) { $s = 49; continue; }
103980  				/* */ $s = 50; continue;
103981  				/* if (!hasBody || bodyWritten) { */ case 49:
103982  					$r = cc[0].writeStreamReset(cs[0].ID, 8, $ifaceNil); /* */ $s = 52; case 52: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
103983  					$s = 51; continue;
103984  				/* } else { */ case 50:
103985  					$clone(bodyWriter[0], http2bodyWriterState).cancel();
103986  					$r = cs[0].abortRequestBodyWrite(http2errStopReqBodyWriteAndCancel); /* */ $s = 53; case 53: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
103987  				/* } */ case 51:
103988  				$r = cc[0].forgetStreamID(cs[0].ID); /* */ $s = 54; case 54: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
103989  				_tmp$18 = ptrType$17.nil;
103990  				_r$12 = cs[0].getStartedWrite(); /* */ $s = 55; case 55: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; }
103991  				_tmp$19 = _r$12;
103992  				_r$13 = ctx.Err(); /* */ $s = 56; case 56: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; }
103993  				_tmp$20 = _r$13;
103994  				res = _tmp$18;
103995  				gotErrAfterReqBodyWrite = _tmp$19;
103996  				err = _tmp$20;
103997  				$s = -1; return [res, gotErrAfterReqBodyWrite, err];
103998  			/* } else if (_selection[0] === 3) { */ case 37:
103999  				/* */ if (!hasBody || bodyWritten) { $s = 57; continue; }
104000  				/* */ $s = 58; continue;
104001  				/* if (!hasBody || bodyWritten) { */ case 57:
104002  					$r = cc[0].writeStreamReset(cs[0].ID, 8, $ifaceNil); /* */ $s = 60; case 60: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
104003  					$s = 59; continue;
104004  				/* } else { */ case 58:
104005  					$clone(bodyWriter[0], http2bodyWriterState).cancel();
104006  					$r = cs[0].abortRequestBodyWrite(http2errStopReqBodyWriteAndCancel); /* */ $s = 61; case 61: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
104007  				/* } */ case 59:
104008  				$r = cc[0].forgetStreamID(cs[0].ID); /* */ $s = 62; case 62: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
104009  				_tmp$21 = ptrType$17.nil;
104010  				_r$14 = cs[0].getStartedWrite(); /* */ $s = 63; case 63: if($c) { $c = false; _r$14 = _r$14.$blk(); } if (_r$14 && _r$14.$blk !== undefined) { break s; }
104011  				_tmp$22 = _r$14;
104012  				_tmp$23 = http2errRequestCanceled;
104013  				res = _tmp$21;
104014  				gotErrAfterReqBodyWrite = _tmp$22;
104015  				err = _tmp$23;
104016  				$s = -1; return [res, gotErrAfterReqBodyWrite, err];
104017  			/* } else if (_selection[0] === 4) { */ case 38:
104018  				_tmp$24 = ptrType$17.nil;
104019  				_r$15 = cs[0].getStartedWrite(); /* */ $s = 64; case 64: if($c) { $c = false; _r$15 = _r$15.$blk(); } if (_r$15 && _r$15.$blk !== undefined) { break s; }
104020  				_tmp$25 = _r$15;
104021  				_tmp$26 = cs[0].resetErr;
104022  				res = _tmp$24;
104023  				gotErrAfterReqBodyWrite = _tmp$25;
104024  				err = _tmp$26;
104025  				$s = -1; return [res, gotErrAfterReqBodyWrite, err];
104026  			/* } else if (_selection[0] === 5) { */ case 39:
104027  				err$3 = _selection[1][0];
104028  				_selection$1 = $select([[readLoopResCh], []]);
104029  				/* */ if (_selection$1[0] === 0) { $s = 65; continue; }
104030  				/* */ if (_selection$1[0] === 1) { $s = 66; continue; }
104031  				/* */ $s = 67; continue;
104032  				/* if (_selection$1[0] === 0) { */ case 65:
104033  					re$1 = $clone(_selection$1[1][0], http2resAndError);
104034  					_r$16 = handleReadLoopResponse($clone(re$1, http2resAndError)); /* */ $s = 68; case 68: if($c) { $c = false; _r$16 = _r$16.$blk(); } if (_r$16 && _r$16.$blk !== undefined) { break s; }
104035  					_tuple$3 = _r$16;
104036  					res = _tuple$3[0];
104037  					gotErrAfterReqBodyWrite = _tuple$3[1];
104038  					err = _tuple$3[2];
104039  					$s = -1; return [res, gotErrAfterReqBodyWrite, err];
104040  				/* } else if (_selection$1[0] === 1) { */ case 66:
104041  				/* } */ case 67:
104042  				/* */ if (!($interfaceIsEqual(err$3, $ifaceNil))) { $s = 69; continue; }
104043  				/* */ $s = 70; continue;
104044  				/* if (!($interfaceIsEqual(err$3, $ifaceNil))) { */ case 69:
104045  					_tmp$27 = ptrType$17.nil;
104046  					_r$17 = cs[0].getStartedWrite(); /* */ $s = 71; case 71: if($c) { $c = false; _r$17 = _r$17.$blk(); } if (_r$17 && _r$17.$blk !== undefined) { break s; }
104047  					_tmp$28 = _r$17;
104048  					_tmp$29 = err$3;
104049  					res = _tmp$27;
104050  					gotErrAfterReqBodyWrite = _tmp$28;
104051  					err = _tmp$29;
104052  					$s = -1; return [res, gotErrAfterReqBodyWrite, err];
104053  				/* } */ case 70:
104054  				bodyWritten = true;
104055  				d$1 = cc[0].responseHeaderTimeout();
104056  				if (!((d$1.$high === 0 && d$1.$low === 0))) {
104057  					timer$1 = time.NewTimer(d$1);
104058  					$deferred.push([$methodVal(timer$1, "Stop"), []]);
104059  					respHeaderTimer = timer$1.C;
104060  				}
104061  			/* } */ case 40:
104062  		/* } */ $s = 30; continue; case 31:
104063  		$s = -1; return [res, gotErrAfterReqBodyWrite, err];
104064  		/* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if (!$curGoroutine.asleep) { return  [res, gotErrAfterReqBodyWrite, err]; } if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: http2ClientConn.ptr.prototype.roundTrip }; } $f._r$1 = _r$1; $f._r$10 = _r$10; $f._r$11 = _r$11; $f._r$12 = _r$12; $f._r$13 = _r$13; $f._r$14 = _r$14; $f._r$15 = _r$15; $f._r$16 = _r$16; $f._r$17 = _r$17; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._r$8 = _r$8; $f._r$9 = _r$9; $f._selection = _selection; $f._selection$1 = _selection$1; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$10 = _tmp$10; $f._tmp$11 = _tmp$11; $f._tmp$12 = _tmp$12; $f._tmp$13 = _tmp$13; $f._tmp$14 = _tmp$14; $f._tmp$15 = _tmp$15; $f._tmp$16 = _tmp$16; $f._tmp$17 = _tmp$17; $f._tmp$18 = _tmp$18; $f._tmp$19 = _tmp$19; $f._tmp$2 = _tmp$2; $f._tmp$20 = _tmp$20; $f._tmp$21 = _tmp$21; $f._tmp$22 = _tmp$22; $f._tmp$23 = _tmp$23; $f._tmp$24 = _tmp$24; $f._tmp$25 = _tmp$25; $f._tmp$26 = _tmp$26; $f._tmp$27 = _tmp$27; $f._tmp$28 = _tmp$28; $f._tmp$29 = _tmp$29; $f._tmp$3 = _tmp$3; $f._tmp$4 = _tmp$4; $f._tmp$5 = _tmp$5; $f._tmp$6 = _tmp$6; $f._tmp$7 = _tmp$7; $f._tmp$8 = _tmp$8; $f._tmp$9 = _tmp$9; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f.body$1 = body$1; $f.bodyWriter = bodyWriter; $f.bodyWritten = bodyWritten; $f.cc = cc; $f.contentLen = contentLen; $f.cs = cs; $f.ctx = ctx; $f.d = d; $f.d$1 = d$1; $f.endStream = endStream; $f.err = err; $f.err$1 = err$1; $f.err$2 = err$2; $f.err$3 = err$3; $f.gotErrAfterReqBodyWrite = gotErrAfterReqBodyWrite; $f.handleReadLoopResponse = handleReadLoopResponse; $f.hasBody = hasBody; $f.hasTrailers = hasTrailers; $f.hdrs = hdrs; $f.re = re; $f.re$1 = re$1; $f.readLoopResCh = readLoopResCh; $f.req = req; $f.requestedGzip = requestedGzip; $f.res = res; $f.respHeaderTimer = respHeaderTimer; $f.timer = timer; $f.timer$1 = timer$1; $f.trailers = trailers; $f.werr = werr; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
104065  	};
104066  	http2ClientConn.prototype.roundTrip = function(req) { return this.$val.roundTrip(req); };
104067  	http2ClientConn.ptr.prototype.awaitOpenSlotForRequest = function(req) {
104068  		var cc, req, waitingForConn, waitingForConnErr, x$4, x$5, x$6, $s, $r;
104069  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; cc = $f.cc; req = $f.req; waitingForConn = $f.waitingForConn; waitingForConnErr = $f.waitingForConnErr; x$4 = $f.x$4; x$5 = $f.x$5; x$6 = $f.x$6; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
104070  		cc = [cc];
104071  		req = [req];
104072  		waitingForConn = [waitingForConn];
104073  		waitingForConnErr = [waitingForConnErr];
104074  		cc[0] = this;
104075  		waitingForConn[0] = $chanNil;
104076  		waitingForConnErr[0] = $ifaceNil;
104077  		/* while (true) { */ case 1:
104078  			time.Time.copy(cc[0].lastActive, time.Now());
104079  			if (cc[0].closed || !cc[0].canTakeNewRequestLocked()) {
104080  				$s = -1; return http2errClientConnUnusable;
104081  			}
104082  			if ((x$4 = (x$5 = (new $Int64(0, $keys(cc[0].streams).length)), new $Int64(x$5.$high + 0, x$5.$low + 1)), x$6 = (new $Int64(0, cc[0].maxConcurrentStreams)), (x$4.$high < x$6.$high || (x$4.$high === x$6.$high && x$4.$low <= x$6.$low)))) {
104083  				if (!(waitingForConn[0] === $chanNil)) {
104084  					$close(waitingForConn[0]);
104085  				}
104086  				$s = -1; return $ifaceNil;
104087  			}
104088  			/* */ if (waitingForConn[0] === $chanNil) { $s = 3; continue; }
104089  			/* */ $s = 4; continue;
104090  			/* if (waitingForConn[0] === $chanNil) { */ case 3:
104091  				waitingForConn[0] = new $Chan(structType, 0);
104092  				$go((function(cc, req, waitingForConn, waitingForConnErr) { return function $b() {
104093  					var _r$1, err, $s, $r;
104094  					/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; err = $f.err; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
104095  					_r$1 = http2awaitRequestCancel(req[0], waitingForConn[0]); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
104096  					err = _r$1;
104097  					/* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 2; continue; }
104098  					/* */ $s = 3; continue;
104099  					/* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 2:
104100  						$r = cc[0].mu.Lock(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
104101  						waitingForConnErr[0] = err;
104102  						$r = cc[0].cond.Broadcast(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
104103  						$r = cc[0].mu.Unlock(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
104104  					/* } */ case 3:
104105  					$s = -1; return;
104106  					/* */ } return; } if ($f === undefined) { $f = { $blk: $b }; } $f._r$1 = _r$1; $f.err = err; $f.$s = $s; $f.$r = $r; return $f;
104107  				}; })(cc, req, waitingForConn, waitingForConnErr), []);
104108  			/* } */ case 4:
104109  			cc[0].pendingRequests = cc[0].pendingRequests + (1) >> 0;
104110  			$r = cc[0].cond.Wait(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
104111  			cc[0].pendingRequests = cc[0].pendingRequests - (1) >> 0;
104112  			if (!($interfaceIsEqual(waitingForConnErr[0], $ifaceNil))) {
104113  				$s = -1; return waitingForConnErr[0];
104114  			}
104115  		/* } */ $s = 1; continue; case 2:
104116  		$s = -1; return $ifaceNil;
104117  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2ClientConn.ptr.prototype.awaitOpenSlotForRequest }; } $f.cc = cc; $f.req = req; $f.waitingForConn = waitingForConn; $f.waitingForConnErr = waitingForConnErr; $f.x$4 = x$4; $f.x$5 = x$5; $f.x$6 = x$6; $f.$s = $s; $f.$r = $r; return $f;
104118  	};
104119  	http2ClientConn.prototype.awaitOpenSlotForRequest = function(req) { return this.$val.awaitOpenSlotForRequest(req); };
104120  	http2ClientConn.ptr.prototype.writeHeaders = function(streamID, endStream, maxFrameSize, hdrs) {
104121  		var _r$1, _r$2, _r$3, cc, chunk, endHeaders, endStream, first, hdrs, maxFrameSize, streamID, $s, $r;
104122  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; cc = $f.cc; chunk = $f.chunk; endHeaders = $f.endHeaders; endStream = $f.endStream; first = $f.first; hdrs = $f.hdrs; maxFrameSize = $f.maxFrameSize; streamID = $f.streamID; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
104123  		cc = this;
104124  		first = true;
104125  		/* while (true) { */ case 1:
104126  			/* if (!(hdrs.$length > 0 && $interfaceIsEqual(cc.werr, $ifaceNil))) { break; } */ if(!(hdrs.$length > 0 && $interfaceIsEqual(cc.werr, $ifaceNil))) { $s = 2; continue; }
104127  			chunk = hdrs;
104128  			if (chunk.$length > maxFrameSize) {
104129  				chunk = $subslice(chunk, 0, maxFrameSize);
104130  			}
104131  			hdrs = $subslice(hdrs, chunk.$length);
104132  			endHeaders = hdrs.$length === 0;
104133  			/* */ if (first) { $s = 3; continue; }
104134  			/* */ $s = 4; continue;
104135  			/* if (first) { */ case 3:
104136  				_r$1 = cc.fr.WriteHeaders(new http2HeadersFrameParam.ptr(streamID, chunk, endStream, endHeaders, 0, new http2PriorityParam.ptr(0, false, 0))); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
104137  				_r$1;
104138  				first = false;
104139  				$s = 5; continue;
104140  			/* } else { */ case 4:
104141  				_r$2 = cc.fr.WriteContinuation(streamID, endHeaders, chunk); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
104142  				_r$2;
104143  			/* } */ case 5:
104144  		/* } */ $s = 1; continue; case 2:
104145  		_r$3 = cc.bw.Flush(); /* */ $s = 8; case 8: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
104146  		_r$3;
104147  		$s = -1; return cc.werr;
104148  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2ClientConn.ptr.prototype.writeHeaders }; } $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f.cc = cc; $f.chunk = chunk; $f.endHeaders = endHeaders; $f.endStream = endStream; $f.first = first; $f.hdrs = hdrs; $f.maxFrameSize = maxFrameSize; $f.streamID = streamID; $f.$s = $s; $f.$r = $r; return $f;
104149  	};
104150  	http2ClientConn.prototype.writeHeaders = function(streamID, endStream, maxFrameSize, hdrs) { return this.$val.writeHeaders(streamID, endStream, maxFrameSize, hdrs); };
104151  	http2clientStream.ptr.prototype.writeRequestBody = function(body$1, bodyCloser) {
104152  		var _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _tuple, _tuple$1, _tuple$2, allowed, body$1, bodyCloser, buf, cc, cs, data, err, err$1, ferr, hasTrailers, maxFrameSize, n, remain, req, sawEOF, sentEnd, trls, $s, $deferred, $r;
104153  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _r$8 = $f._r$8; _r$9 = $f._r$9; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; allowed = $f.allowed; body$1 = $f.body$1; bodyCloser = $f.bodyCloser; buf = $f.buf; cc = $f.cc; cs = $f.cs; data = $f.data; err = $f.err; err$1 = $f.err$1; ferr = $f.ferr; hasTrailers = $f.hasTrailers; maxFrameSize = $f.maxFrameSize; n = $f.n; remain = $f.remain; req = $f.req; sawEOF = $f.sawEOF; sentEnd = $f.sentEnd; trls = $f.trls; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
104154  		bodyCloser = [bodyCloser];
104155  		cs = [cs];
104156  		err = [err];
104157  		err[0] = $ifaceNil;
104158  		cs[0] = this;
104159  		cc = cs[0].cc;
104160  		sentEnd = false;
104161  		_r$1 = cc.frameScratchBuffer(); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
104162  		buf = _r$1;
104163  		$deferred.push([$methodVal(cc, "putFrameScratchBuffer"), [buf]]);
104164  		$deferred.push([(function(bodyCloser, cs, err) { return function $b() {
104165  			var _r$2, cerr, $s, $r;
104166  			/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$2 = $f._r$2; cerr = $f.cerr; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
104167  			$r = http2traceWroteRequest(cs[0].trace, err[0]); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
104168  			_r$2 = bodyCloser[0].Close(); /* */ $s = 2; case 2: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
104169  			cerr = _r$2;
104170  			if ($interfaceIsEqual(err[0], $ifaceNil)) {
104171  				err[0] = cerr;
104172  			}
104173  			$s = -1; return;
104174  			/* */ } return; } if ($f === undefined) { $f = { $blk: $b }; } $f._r$2 = _r$2; $f.cerr = cerr; $f.$s = $s; $f.$r = $r; return $f;
104175  		}; })(bodyCloser, cs, err), []]);
104176  		req = cs[0].req;
104177  		hasTrailers = !(req.Trailer === false);
104178  		sawEOF = false;
104179  		/* while (true) { */ case 2:
104180  			/* if (!(!sawEOF)) { break; } */ if(!(!sawEOF)) { $s = 3; continue; }
104181  			_r$2 = body$1.Read(buf); /* */ $s = 4; case 4: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
104182  			_tuple = _r$2;
104183  			n = _tuple[0];
104184  			err$1 = _tuple[1];
104185  			if ($interfaceIsEqual(err$1, io.EOF)) {
104186  				sawEOF = true;
104187  				err$1 = $ifaceNil;
104188  			} else if (!($interfaceIsEqual(err$1, $ifaceNil))) {
104189  				err[0] = err$1;
104190  				$s = -1; return err[0];
104191  			}
104192  			remain = $subslice(buf, 0, n);
104193  			/* while (true) { */ case 5:
104194  				/* if (!(remain.$length > 0 && $interfaceIsEqual(err$1, $ifaceNil))) { break; } */ if(!(remain.$length > 0 && $interfaceIsEqual(err$1, $ifaceNil))) { $s = 6; continue; }
104195  				allowed = 0;
104196  				_r$3 = cs[0].awaitFlowControl(remain.$length); /* */ $s = 7; case 7: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
104197  				_tuple$1 = _r$3;
104198  				allowed = _tuple$1[0];
104199  				err$1 = _tuple$1[1];
104200  					/* */ if ($interfaceIsEqual(err$1, http2errStopReqBodyWrite)) { $s = 9; continue; }
104201  					/* */ if ($interfaceIsEqual(err$1, http2errStopReqBodyWriteAndCancel)) { $s = 10; continue; }
104202  					/* */ if (!($interfaceIsEqual(err$1, $ifaceNil))) { $s = 11; continue; }
104203  					/* */ $s = 12; continue;
104204  					/* if ($interfaceIsEqual(err$1, http2errStopReqBodyWrite)) { */ case 9:
104205  						err[0] = err$1;
104206  						$s = -1; return err[0];
104207  					/* } else if ($interfaceIsEqual(err$1, http2errStopReqBodyWriteAndCancel)) { */ case 10:
104208  						$r = cc.writeStreamReset(cs[0].ID, 8, $ifaceNil); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
104209  						err[0] = err$1;
104210  						$s = -1; return err[0];
104211  					/* } else if (!($interfaceIsEqual(err$1, $ifaceNil))) { */ case 11:
104212  						err[0] = err$1;
104213  						$s = -1; return err[0];
104214  					/* } */ case 12:
104215  				case 8:
104216  				$r = cc.wmu.Lock(); /* */ $s = 14; case 14: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
104217  				data = $subslice(remain, 0, allowed);
104218  				remain = $subslice(remain, allowed);
104219  				sentEnd = sawEOF && (remain.$length === 0) && !hasTrailers;
104220  				_r$4 = cc.fr.WriteData(cs[0].ID, sentEnd, data); /* */ $s = 15; case 15: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
104221  				err$1 = _r$4;
104222  				/* */ if ($interfaceIsEqual(err$1, $ifaceNil)) { $s = 16; continue; }
104223  				/* */ $s = 17; continue;
104224  				/* if ($interfaceIsEqual(err$1, $ifaceNil)) { */ case 16:
104225  					_r$5 = cc.bw.Flush(); /* */ $s = 18; case 18: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
104226  					err$1 = _r$5;
104227  				/* } */ case 17:
104228  				$r = cc.wmu.Unlock(); /* */ $s = 19; case 19: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
104229  			/* } */ $s = 5; continue; case 6:
104230  			if (!($interfaceIsEqual(err$1, $ifaceNil))) {
104231  				err[0] = err$1;
104232  				$s = -1; return err[0];
104233  			}
104234  		/* } */ $s = 2; continue; case 3:
104235  		if (sentEnd) {
104236  			err[0] = $ifaceNil;
104237  			$s = -1; return err[0];
104238  		}
104239  		trls = sliceType$3.nil;
104240  		/* */ if (hasTrailers) { $s = 20; continue; }
104241  		/* */ $s = 21; continue;
104242  		/* if (hasTrailers) { */ case 20:
104243  			$r = cc.mu.Lock(); /* */ $s = 22; case 22: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
104244  			_r$6 = cc.encodeTrailers(req); /* */ $s = 23; case 23: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
104245  			_tuple$2 = _r$6;
104246  			trls = _tuple$2[0];
104247  			err[0] = _tuple$2[1];
104248  			$r = cc.mu.Unlock(); /* */ $s = 24; case 24: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
104249  			/* */ if (!($interfaceIsEqual(err[0], $ifaceNil))) { $s = 25; continue; }
104250  			/* */ $s = 26; continue;
104251  			/* if (!($interfaceIsEqual(err[0], $ifaceNil))) { */ case 25:
104252  				$r = cc.writeStreamReset(cs[0].ID, 2, err[0]); /* */ $s = 27; case 27: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
104253  				$r = cc.forgetStreamID(cs[0].ID); /* */ $s = 28; case 28: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
104254  				err[0] = err[0];
104255  				$s = -1; return err[0];
104256  			/* } */ case 26:
104257  		/* } */ case 21:
104258  		$r = cc.mu.Lock(); /* */ $s = 29; case 29: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
104259  		maxFrameSize = ((cc.maxFrameSize >> 0));
104260  		$r = cc.mu.Unlock(); /* */ $s = 30; case 30: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
104261  		$r = cc.wmu.Lock(); /* */ $s = 31; case 31: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
104262  		$deferred.push([$methodVal(cc.wmu, "Unlock"), []]);
104263  		/* */ if (trls.$length > 0) { $s = 32; continue; }
104264  		/* */ $s = 33; continue;
104265  		/* if (trls.$length > 0) { */ case 32:
104266  			_r$7 = cc.writeHeaders(cs[0].ID, true, maxFrameSize, trls); /* */ $s = 35; case 35: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
104267  			err[0] = _r$7;
104268  			$s = 34; continue;
104269  		/* } else { */ case 33:
104270  			_r$8 = cc.fr.WriteData(cs[0].ID, true, sliceType$3.nil); /* */ $s = 36; case 36: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
104271  			err[0] = _r$8;
104272  		/* } */ case 34:
104273  		_r$9 = cc.bw.Flush(); /* */ $s = 37; case 37: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
104274  		ferr = _r$9;
104275  		if (!($interfaceIsEqual(ferr, $ifaceNil)) && $interfaceIsEqual(err[0], $ifaceNil)) {
104276  			err[0] = ferr;
104277  		}
104278  		err[0] = err[0];
104279  		$s = -1; return err[0];
104280  		/* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if (!$curGoroutine.asleep) { return  err[0]; } if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: http2clientStream.ptr.prototype.writeRequestBody }; } $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._r$8 = _r$8; $f._r$9 = _r$9; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f.allowed = allowed; $f.body$1 = body$1; $f.bodyCloser = bodyCloser; $f.buf = buf; $f.cc = cc; $f.cs = cs; $f.data = data; $f.err = err; $f.err$1 = err$1; $f.ferr = ferr; $f.hasTrailers = hasTrailers; $f.maxFrameSize = maxFrameSize; $f.n = n; $f.remain = remain; $f.req = req; $f.sawEOF = sawEOF; $f.sentEnd = sentEnd; $f.trls = trls; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
104281  	};
104282  	http2clientStream.prototype.writeRequestBody = function(body$1, bodyCloser) { return this.$val.writeRequestBody(body$1, bodyCloser); };
104283  	http2clientStream.ptr.prototype.awaitFlowControl = function(maxBytes) {
104284  		var _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, a, cc, cs, err, err$1, maxBytes, take, taken, $s, $deferred, $r;
104285  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tmp$4 = $f._tmp$4; _tmp$5 = $f._tmp$5; _tmp$6 = $f._tmp$6; _tmp$7 = $f._tmp$7; a = $f.a; cc = $f.cc; cs = $f.cs; err = $f.err; err$1 = $f.err$1; maxBytes = $f.maxBytes; take = $f.take; taken = $f.taken; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
104286  		taken = 0;
104287  		err = $ifaceNil;
104288  		cs = this;
104289  		cc = cs.cc;
104290  		$r = cc.mu.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
104291  		$deferred.push([$methodVal(cc.mu, "Unlock"), []]);
104292  		/* while (true) { */ case 2:
104293  			if (cc.closed) {
104294  				_tmp = 0;
104295  				_tmp$1 = http2errClientConnClosed;
104296  				taken = _tmp;
104297  				err = _tmp$1;
104298  				$s = -1; return [taken, err];
104299  			}
104300  			if (!($interfaceIsEqual(cs.stopReqBody, $ifaceNil))) {
104301  				_tmp$2 = 0;
104302  				_tmp$3 = cs.stopReqBody;
104303  				taken = _tmp$2;
104304  				err = _tmp$3;
104305  				$s = -1; return [taken, err];
104306  			}
104307  			err$1 = cs.checkResetOrDone();
104308  			if (!($interfaceIsEqual(err$1, $ifaceNil))) {
104309  				_tmp$4 = 0;
104310  				_tmp$5 = err$1;
104311  				taken = _tmp$4;
104312  				err = _tmp$5;
104313  				$s = -1; return [taken, err];
104314  			}
104315  			a = cs.flow.available();
104316  			if (a > 0) {
104317  				take = a;
104318  				if (((take >> 0)) > maxBytes) {
104319  					take = ((maxBytes >> 0));
104320  				}
104321  				if (take > ((cc.maxFrameSize >> 0))) {
104322  					take = ((cc.maxFrameSize >> 0));
104323  				}
104324  				cs.flow.take(take);
104325  				_tmp$6 = take;
104326  				_tmp$7 = $ifaceNil;
104327  				taken = _tmp$6;
104328  				err = _tmp$7;
104329  				$s = -1; return [taken, err];
104330  			}
104331  			$r = cc.cond.Wait(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
104332  		/* } */ $s = 2; continue; case 3:
104333  		$s = -1; return [taken, err];
104334  		/* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if (!$curGoroutine.asleep) { return  [taken, err]; } if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: http2clientStream.ptr.prototype.awaitFlowControl }; } $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tmp$4 = _tmp$4; $f._tmp$5 = _tmp$5; $f._tmp$6 = _tmp$6; $f._tmp$7 = _tmp$7; $f.a = a; $f.cc = cc; $f.cs = cs; $f.err = err; $f.err$1 = err$1; $f.maxBytes = maxBytes; $f.take = take; $f.taken = taken; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
104335  	};
104336  	http2clientStream.prototype.awaitFlowControl = function(maxBytes) { return this.$val.awaitFlowControl(maxBytes); };
104337  	http2badStringError.ptr.prototype.Error = function() {
104338  		var _r$1, e, $s, $r;
104339  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; e = $f.e; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
104340  		e = this;
104341  		_r$1 = fmt.Sprintf("%s %q", new sliceType([new $String(e.what), new $String(e.str)])); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
104342  		$s = -1; return _r$1;
104343  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2badStringError.ptr.prototype.Error }; } $f._r$1 = _r$1; $f.e = e; $f.$s = $s; $f.$r = $r; return $f;
104344  	};
104345  	http2badStringError.prototype.Error = function() { return this.$val.Error(); };
104346  	http2ClientConn.ptr.prototype.encodeHeaders = function(req, addGzipHeader, trailers, contentLength) {
104347  		var _entry, _i, _i$1, _keys, _r$1, _r$2, _r$3, _r$4, _r$5, _ref, _ref$1, _tuple, addGzipHeader, cc, contentLength, enumerateHeaders, err, hlSize, host, k, orig, path$1, req, trailers, v, vv, x$4, $s, $r;
104348  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _entry = $f._entry; _i = $f._i; _i$1 = $f._i$1; _keys = $f._keys; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _ref = $f._ref; _ref$1 = $f._ref$1; _tuple = $f._tuple; addGzipHeader = $f.addGzipHeader; cc = $f.cc; contentLength = $f.contentLength; enumerateHeaders = $f.enumerateHeaders; err = $f.err; hlSize = $f.hlSize; host = $f.host; k = $f.k; orig = $f.orig; path$1 = $f.path$1; req = $f.req; trailers = $f.trailers; v = $f.v; vv = $f.vv; x$4 = $f.x$4; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
104349  		addGzipHeader = [addGzipHeader];
104350  		cc = [cc];
104351  		contentLength = [contentLength];
104352  		hlSize = [hlSize];
104353  		host = [host];
104354  		path$1 = [path$1];
104355  		req = [req];
104356  		trailers = [trailers];
104357  		cc[0] = this;
104358  		cc[0].hbuf.Reset();
104359  		host[0] = req[0].Host;
104360  		if (host[0] === "") {
104361  			host[0] = req[0].URL.Host;
104362  		}
104363  		_r$1 = httplex.PunycodeHostPort(host[0]); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
104364  		_tuple = _r$1;
104365  		host[0] = _tuple[0];
104366  		err = _tuple[1];
104367  		if (!($interfaceIsEqual(err, $ifaceNil))) {
104368  			$s = -1; return [sliceType$3.nil, err];
104369  		}
104370  		path$1[0] = "";
104371  		/* */ if (!(req[0].Method === "CONNECT")) { $s = 2; continue; }
104372  		/* */ $s = 3; continue;
104373  		/* if (!(req[0].Method === "CONNECT")) { */ case 2:
104374  			path$1[0] = req[0].URL.RequestURI();
104375  			/* */ if (!http2validPseudoPath(path$1[0])) { $s = 4; continue; }
104376  			/* */ $s = 5; continue;
104377  			/* if (!http2validPseudoPath(path$1[0])) { */ case 4:
104378  				orig = path$1[0];
104379  				path$1[0] = strings.TrimPrefix(path$1[0], req[0].URL.Scheme + "://" + host[0]);
104380  				/* */ if (!http2validPseudoPath(path$1[0])) { $s = 6; continue; }
104381  				/* */ $s = 7; continue;
104382  				/* if (!http2validPseudoPath(path$1[0])) { */ case 6:
104383  					/* */ if (!(req[0].URL.Opaque === "")) { $s = 8; continue; }
104384  					/* */ $s = 9; continue;
104385  					/* if (!(req[0].URL.Opaque === "")) { */ case 8:
104386  						_r$2 = fmt.Errorf("invalid request :path %q from URL.Opaque = %q", new sliceType([new $String(orig), new $String(req[0].URL.Opaque)])); /* */ $s = 11; case 11: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
104387  						$s = -1; return [sliceType$3.nil, _r$2];
104388  					/* } else { */ case 9:
104389  						_r$3 = fmt.Errorf("invalid request :path %q", new sliceType([new $String(orig)])); /* */ $s = 12; case 12: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
104390  						$s = -1; return [sliceType$3.nil, _r$3];
104391  					/* } */ case 10:
104392  				/* } */ case 7:
104393  			/* } */ case 5:
104394  		/* } */ case 3:
104395  		_ref = req[0].Header;
104396  		_i = 0;
104397  		_keys = $keys(_ref);
104398  		/* while (true) { */ case 13:
104399  			/* if (!(_i < _keys.length)) { break; } */ if(!(_i < _keys.length)) { $s = 14; continue; }
104400  			_entry = _ref[_keys[_i]];
104401  			if (_entry === undefined) {
104402  				_i++;
104403  				/* continue; */ $s = 13; continue;
104404  			}
104405  			k = _entry.k;
104406  			vv = _entry.v;
104407  			/* */ if (!httplex.ValidHeaderFieldName(k)) { $s = 15; continue; }
104408  			/* */ $s = 16; continue;
104409  			/* if (!httplex.ValidHeaderFieldName(k)) { */ case 15:
104410  				_r$4 = fmt.Errorf("invalid HTTP header name %q", new sliceType([new $String(k)])); /* */ $s = 17; case 17: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
104411  				$s = -1; return [sliceType$3.nil, _r$4];
104412  			/* } */ case 16:
104413  			_ref$1 = vv;
104414  			_i$1 = 0;
104415  			/* while (true) { */ case 18:
104416  				/* if (!(_i$1 < _ref$1.$length)) { break; } */ if(!(_i$1 < _ref$1.$length)) { $s = 19; continue; }
104417  				v = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]);
104418  				/* */ if (!httplex.ValidHeaderFieldValue(v)) { $s = 20; continue; }
104419  				/* */ $s = 21; continue;
104420  				/* if (!httplex.ValidHeaderFieldValue(v)) { */ case 20:
104421  					_r$5 = fmt.Errorf("invalid HTTP header value %q for header %q", new sliceType([new $String(v), new $String(k)])); /* */ $s = 22; case 22: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
104422  					$s = -1; return [sliceType$3.nil, _r$5];
104423  				/* } */ case 21:
104424  				_i$1++;
104425  			/* } */ $s = 18; continue; case 19:
104426  			_i++;
104427  		/* } */ $s = 13; continue; case 14:
104428  		enumerateHeaders = (function(addGzipHeader, cc, contentLength, hlSize, host, path$1, req, trailers) { return function $b(f) {
104429  			var _entry$1, _i$2, _i$3, _keys$1, _ref$2, _ref$3, didUA, f, k$1, v$1, vv$1, $s, $r;
104430  			/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _entry$1 = $f._entry$1; _i$2 = $f._i$2; _i$3 = $f._i$3; _keys$1 = $f._keys$1; _ref$2 = $f._ref$2; _ref$3 = $f._ref$3; didUA = $f.didUA; f = $f.f; k$1 = $f.k$1; v$1 = $f.v$1; vv$1 = $f.vv$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
104431  			$r = f(":authority", host[0]); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
104432  			$r = f(":method", req[0].Method); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
104433  			/* */ if (!(req[0].Method === "CONNECT")) { $s = 3; continue; }
104434  			/* */ $s = 4; continue;
104435  			/* if (!(req[0].Method === "CONNECT")) { */ case 3:
104436  				$r = f(":path", path$1[0]); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
104437  				$r = f(":scheme", req[0].URL.Scheme); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
104438  			/* } */ case 4:
104439  			/* */ if (!(trailers[0] === "")) { $s = 7; continue; }
104440  			/* */ $s = 8; continue;
104441  			/* if (!(trailers[0] === "")) { */ case 7:
104442  				$r = f("trailer", trailers[0]); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
104443  			/* } */ case 8:
104444  			didUA = false;
104445  			_ref$2 = req[0].Header;
104446  			_i$2 = 0;
104447  			_keys$1 = $keys(_ref$2);
104448  			/* while (true) { */ case 10:
104449  				/* if (!(_i$2 < _keys$1.length)) { break; } */ if(!(_i$2 < _keys$1.length)) { $s = 11; continue; }
104450  				_entry$1 = _ref$2[_keys$1[_i$2]];
104451  				if (_entry$1 === undefined) {
104452  					_i$2++;
104453  					/* continue; */ $s = 10; continue;
104454  				}
104455  				k$1 = _entry$1.k;
104456  				vv$1 = _entry$1.v;
104457  				/* */ if (strings.EqualFold(k$1, "host") || strings.EqualFold(k$1, "content-length")) { $s = 12; continue; }
104458  				/* */ if (strings.EqualFold(k$1, "connection") || strings.EqualFold(k$1, "proxy-connection") || strings.EqualFold(k$1, "transfer-encoding") || strings.EqualFold(k$1, "upgrade") || strings.EqualFold(k$1, "keep-alive")) { $s = 13; continue; }
104459  				/* */ if (strings.EqualFold(k$1, "user-agent")) { $s = 14; continue; }
104460  				/* */ $s = 15; continue;
104461  				/* if (strings.EqualFold(k$1, "host") || strings.EqualFold(k$1, "content-length")) { */ case 12:
104462  					_i$2++;
104463  					/* continue; */ $s = 10; continue;
104464  					$s = 15; continue;
104465  				/* } else if (strings.EqualFold(k$1, "connection") || strings.EqualFold(k$1, "proxy-connection") || strings.EqualFold(k$1, "transfer-encoding") || strings.EqualFold(k$1, "upgrade") || strings.EqualFold(k$1, "keep-alive")) { */ case 13:
104466  					_i$2++;
104467  					/* continue; */ $s = 10; continue;
104468  					$s = 15; continue;
104469  				/* } else if (strings.EqualFold(k$1, "user-agent")) { */ case 14:
104470  					didUA = true;
104471  					if (vv$1.$length < 1) {
104472  						_i$2++;
104473  						/* continue; */ $s = 10; continue;
104474  					}
104475  					vv$1 = $subslice(vv$1, 0, 1);
104476  					if ((0 >= vv$1.$length ? ($throwRuntimeError("index out of range"), undefined) : vv$1.$array[vv$1.$offset + 0]) === "") {
104477  						_i$2++;
104478  						/* continue; */ $s = 10; continue;
104479  					}
104480  				/* } */ case 15:
104481  				_ref$3 = vv$1;
104482  				_i$3 = 0;
104483  				/* while (true) { */ case 16:
104484  					/* if (!(_i$3 < _ref$3.$length)) { break; } */ if(!(_i$3 < _ref$3.$length)) { $s = 17; continue; }
104485  					v$1 = ((_i$3 < 0 || _i$3 >= _ref$3.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$3.$array[_ref$3.$offset + _i$3]);
104486  					$r = f(k$1, v$1); /* */ $s = 18; case 18: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
104487  					_i$3++;
104488  				/* } */ $s = 16; continue; case 17:
104489  				_i$2++;
104490  			/* } */ $s = 10; continue; case 11:
104491  			/* */ if (http2shouldSendReqContentLength(req[0].Method, contentLength[0])) { $s = 19; continue; }
104492  			/* */ $s = 20; continue;
104493  			/* if (http2shouldSendReqContentLength(req[0].Method, contentLength[0])) { */ case 19:
104494  				$r = f("content-length", strconv.FormatInt(contentLength[0], 10)); /* */ $s = 21; case 21: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
104495  			/* } */ case 20:
104496  			/* */ if (addGzipHeader[0]) { $s = 22; continue; }
104497  			/* */ $s = 23; continue;
104498  			/* if (addGzipHeader[0]) { */ case 22:
104499  				$r = f("accept-encoding", "gzip"); /* */ $s = 24; case 24: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
104500  			/* } */ case 23:
104501  			/* */ if (!didUA) { $s = 25; continue; }
104502  			/* */ $s = 26; continue;
104503  			/* if (!didUA) { */ case 25:
104504  				$r = f("user-agent", "Go-http-client/2.0"); /* */ $s = 27; case 27: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
104505  			/* } */ case 26:
104506  			$s = -1; return;
104507  			/* */ } return; } if ($f === undefined) { $f = { $blk: $b }; } $f._entry$1 = _entry$1; $f._i$2 = _i$2; $f._i$3 = _i$3; $f._keys$1 = _keys$1; $f._ref$2 = _ref$2; $f._ref$3 = _ref$3; $f.didUA = didUA; $f.f = f; $f.k$1 = k$1; $f.v$1 = v$1; $f.vv$1 = vv$1; $f.$s = $s; $f.$r = $r; return $f;
104508  		}; })(addGzipHeader, cc, contentLength, hlSize, host, path$1, req, trailers);
104509  		hlSize[0] = new $Uint64(0, 0);
104510  		$r = enumerateHeaders((function(addGzipHeader, cc, contentLength, hlSize, host, path$1, req, trailers) { return function(name, value) {
104511  			var hf, name, value, x$4;
104512  			hf = new hpack.HeaderField.ptr(name, value, false);
104513  			hlSize[0] = (x$4 = (new $Uint64(0, $clone(hf, hpack.HeaderField).Size())), new $Uint64(hlSize[0].$high + x$4.$high, hlSize[0].$low + x$4.$low));
104514  		}; })(addGzipHeader, cc, contentLength, hlSize, host, path$1, req, trailers)); /* */ $s = 23; case 23: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
104515  		if ((x$4 = cc[0].peerMaxHeaderListSize, (hlSize[0].$high > x$4.$high || (hlSize[0].$high === x$4.$high && hlSize[0].$low > x$4.$low)))) {
104516  			$s = -1; return [sliceType$3.nil, http2errRequestHeaderListSize];
104517  		}
104518  		$r = enumerateHeaders((function(addGzipHeader, cc, contentLength, hlSize, host, path$1, req, trailers) { return function $b(name, value) {
104519  			var _r$6, name, value, $s, $r;
104520  			/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$6 = $f._r$6; name = $f.name; value = $f.value; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
104521  			_r$6 = strings.ToLower(name); /* */ $s = 1; case 1: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
104522  			$r = cc[0].writeHeader(_r$6, value); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
104523  			$s = -1; return;
104524  			/* */ } return; } if ($f === undefined) { $f = { $blk: $b }; } $f._r$6 = _r$6; $f.name = name; $f.value = value; $f.$s = $s; $f.$r = $r; return $f;
104525  		}; })(addGzipHeader, cc, contentLength, hlSize, host, path$1, req, trailers)); /* */ $s = 24; case 24: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
104526  		$s = -1; return [cc[0].hbuf.Bytes(), $ifaceNil];
104527  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2ClientConn.ptr.prototype.encodeHeaders }; } $f._entry = _entry; $f._i = _i; $f._i$1 = _i$1; $f._keys = _keys; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._ref = _ref; $f._ref$1 = _ref$1; $f._tuple = _tuple; $f.addGzipHeader = addGzipHeader; $f.cc = cc; $f.contentLength = contentLength; $f.enumerateHeaders = enumerateHeaders; $f.err = err; $f.hlSize = hlSize; $f.host = host; $f.k = k; $f.orig = orig; $f.path$1 = path$1; $f.req = req; $f.trailers = trailers; $f.v = v; $f.vv = vv; $f.x$4 = x$4; $f.$s = $s; $f.$r = $r; return $f;
104528  	};
104529  	http2ClientConn.prototype.encodeHeaders = function(req, addGzipHeader, trailers, contentLength) { return this.$val.encodeHeaders(req, addGzipHeader, trailers, contentLength); };
104530  	http2shouldSendReqContentLength = function(method, contentLength) {
104531  		var _1, contentLength, method;
104532  		if ((contentLength.$high > 0 || (contentLength.$high === 0 && contentLength.$low > 0))) {
104533  			return true;
104534  		}
104535  		if ((contentLength.$high < 0 || (contentLength.$high === 0 && contentLength.$low < 0))) {
104536  			return false;
104537  		}
104538  		_1 = method;
104539  		if (_1 === ("POST") || _1 === ("PUT") || _1 === ("PATCH")) {
104540  			return true;
104541  		} else {
104542  			return false;
104543  		}
104544  	};
104545  	http2ClientConn.ptr.prototype.encodeTrailers = function(req) {
104546  		var _entry, _entry$1, _i, _i$1, _i$2, _i$3, _keys, _keys$1, _r$1, _ref, _ref$1, _ref$2, _ref$3, cc, hf, hlSize, k, k$1, lowKey, req, v, v$1, vv, vv$1, x$4, x$5, $s, $r;
104547  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _entry = $f._entry; _entry$1 = $f._entry$1; _i = $f._i; _i$1 = $f._i$1; _i$2 = $f._i$2; _i$3 = $f._i$3; _keys = $f._keys; _keys$1 = $f._keys$1; _r$1 = $f._r$1; _ref = $f._ref; _ref$1 = $f._ref$1; _ref$2 = $f._ref$2; _ref$3 = $f._ref$3; cc = $f.cc; hf = $f.hf; hlSize = $f.hlSize; k = $f.k; k$1 = $f.k$1; lowKey = $f.lowKey; req = $f.req; v = $f.v; v$1 = $f.v$1; vv = $f.vv; vv$1 = $f.vv$1; x$4 = $f.x$4; x$5 = $f.x$5; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
104548  		cc = this;
104549  		cc.hbuf.Reset();
104550  		hlSize = new $Uint64(0, 0);
104551  		_ref = req.Trailer;
104552  		_i = 0;
104553  		_keys = $keys(_ref);
104554  		while (true) {
104555  			if (!(_i < _keys.length)) { break; }
104556  			_entry = _ref[_keys[_i]];
104557  			if (_entry === undefined) {
104558  				_i++;
104559  				continue;
104560  			}
104561  			k = _entry.k;
104562  			vv = _entry.v;
104563  			_ref$1 = vv;
104564  			_i$1 = 0;
104565  			while (true) {
104566  				if (!(_i$1 < _ref$1.$length)) { break; }
104567  				v = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]);
104568  				hf = new hpack.HeaderField.ptr(k, v, false);
104569  				hlSize = (x$4 = (new $Uint64(0, $clone(hf, hpack.HeaderField).Size())), new $Uint64(hlSize.$high + x$4.$high, hlSize.$low + x$4.$low));
104570  				_i$1++;
104571  			}
104572  			_i++;
104573  		}
104574  		if ((x$5 = cc.peerMaxHeaderListSize, (hlSize.$high > x$5.$high || (hlSize.$high === x$5.$high && hlSize.$low > x$5.$low)))) {
104575  			$s = -1; return [sliceType$3.nil, http2errRequestHeaderListSize];
104576  		}
104577  		_ref$2 = req.Trailer;
104578  		_i$2 = 0;
104579  		_keys$1 = $keys(_ref$2);
104580  		/* while (true) { */ case 1:
104581  			/* if (!(_i$2 < _keys$1.length)) { break; } */ if(!(_i$2 < _keys$1.length)) { $s = 2; continue; }
104582  			_entry$1 = _ref$2[_keys$1[_i$2]];
104583  			if (_entry$1 === undefined) {
104584  				_i$2++;
104585  				/* continue; */ $s = 1; continue;
104586  			}
104587  			k$1 = _entry$1.k;
104588  			vv$1 = _entry$1.v;
104589  			_r$1 = strings.ToLower(k$1); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
104590  			lowKey = _r$1;
104591  			_ref$3 = vv$1;
104592  			_i$3 = 0;
104593  			/* while (true) { */ case 4:
104594  				/* if (!(_i$3 < _ref$3.$length)) { break; } */ if(!(_i$3 < _ref$3.$length)) { $s = 5; continue; }
104595  				v$1 = ((_i$3 < 0 || _i$3 >= _ref$3.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$3.$array[_ref$3.$offset + _i$3]);
104596  				$r = cc.writeHeader(lowKey, v$1); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
104597  				_i$3++;
104598  			/* } */ $s = 4; continue; case 5:
104599  			_i$2++;
104600  		/* } */ $s = 1; continue; case 2:
104601  		$s = -1; return [cc.hbuf.Bytes(), $ifaceNil];
104602  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2ClientConn.ptr.prototype.encodeTrailers }; } $f._entry = _entry; $f._entry$1 = _entry$1; $f._i = _i; $f._i$1 = _i$1; $f._i$2 = _i$2; $f._i$3 = _i$3; $f._keys = _keys; $f._keys$1 = _keys$1; $f._r$1 = _r$1; $f._ref = _ref; $f._ref$1 = _ref$1; $f._ref$2 = _ref$2; $f._ref$3 = _ref$3; $f.cc = cc; $f.hf = hf; $f.hlSize = hlSize; $f.k = k; $f.k$1 = k$1; $f.lowKey = lowKey; $f.req = req; $f.v = v; $f.v$1 = v$1; $f.vv = vv; $f.vv$1 = vv$1; $f.x$4 = x$4; $f.x$5 = x$5; $f.$s = $s; $f.$r = $r; return $f;
104603  	};
104604  	http2ClientConn.prototype.encodeTrailers = function(req) { return this.$val.encodeTrailers(req); };
104605  	http2ClientConn.ptr.prototype.writeHeader = function(name, value) {
104606  		var _r$1, cc, name, value, $s, $r;
104607  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; cc = $f.cc; name = $f.name; value = $f.value; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
104608  		cc = this;
104609  		/* */ if (http2VerboseLogs) { $s = 1; continue; }
104610  		/* */ $s = 2; continue;
104611  		/* if (http2VerboseLogs) { */ case 1:
104612  			$r = log.Printf("http2: Transport encoding header %q = %q", new sliceType([new $String(name), new $String(value)])); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
104613  		/* } */ case 2:
104614  		_r$1 = cc.henc.WriteField(new hpack.HeaderField.ptr(name, value, false)); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
104615  		_r$1;
104616  		$s = -1; return;
104617  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2ClientConn.ptr.prototype.writeHeader }; } $f._r$1 = _r$1; $f.cc = cc; $f.name = name; $f.value = value; $f.$s = $s; $f.$r = $r; return $f;
104618  	};
104619  	http2ClientConn.prototype.writeHeader = function(name, value) { return this.$val.writeHeader(name, value); };
104620  	http2ClientConn.ptr.prototype.newStream = function() {
104621  		var _key, cc, cs;
104622  		cc = this;
104623  		cs = new http2clientStream.ptr(cc, ptrType$7.nil, ptrType$48.nil, cc.nextStreamID, new $Chan(http2resAndError, 1), new http2pipe.ptr(new sync.Mutex.ptr(0, 0), new sync.Cond.ptr(new sync.noCopy.ptr(), $ifaceNil, new sync.notifyList.ptr(0, 0, 0, 0, 0), 0, 0, $chanNil), $ifaceNil, $ifaceNil, $ifaceNil, $chanNil, $throwNilPointerError), false, false, $throwNilPointerError, new http2flow.ptr(0, ptrType$32.nil), new http2flow.ptr(0, ptrType$32.nil), new $Int64(0, 0), $ifaceNil, $ifaceNil, false, new $Chan(structType, 0), $ifaceNil, new $Chan(structType, 0), false, false, false, false, ptrType$73.nil);
104624  		cs.flow.add(((cc.initialWindowSize >> 0)));
104625  		cs.flow.setConnFlow(cc.flow);
104626  		cs.inflow.add(4194304);
104627  		cs.inflow.setConnFlow(cc.inflow);
104628  		cc.nextStreamID = cc.nextStreamID + (2) >>> 0;
104629  		_key = cs.ID; (cc.streams || $throwRuntimeError("assignment to entry in nil map"))[$Uint32.keyFor(_key)] = { k: _key, v: cs };
104630  		return cs;
104631  	};
104632  	http2ClientConn.prototype.newStream = function() { return this.$val.newStream(); };
104633  	http2ClientConn.ptr.prototype.forgetStreamID = function(id) {
104634  		var _r$1, cc, id, $s, $r;
104635  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; cc = $f.cc; id = $f.id; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
104636  		cc = this;
104637  		_r$1 = cc.streamByID(id, true); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
104638  		_r$1;
104639  		$s = -1; return;
104640  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2ClientConn.ptr.prototype.forgetStreamID }; } $f._r$1 = _r$1; $f.cc = cc; $f.id = id; $f.$s = $s; $f.$r = $r; return $f;
104641  	};
104642  	http2ClientConn.prototype.forgetStreamID = function(id) { return this.$val.forgetStreamID(id); };
104643  	http2ClientConn.ptr.prototype.streamByID = function(id, andRemove) {
104644  		var _entry, andRemove, cc, cs, id, $s, $deferred, $r;
104645  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _entry = $f._entry; andRemove = $f.andRemove; cc = $f.cc; cs = $f.cs; id = $f.id; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
104646  		cc = this;
104647  		$r = cc.mu.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
104648  		$deferred.push([$methodVal(cc.mu, "Unlock"), []]);
104649  		cs = (_entry = cc.streams[$Uint32.keyFor(id)], _entry !== undefined ? _entry.v : ptrType$74.nil);
104650  		/* */ if (andRemove && !(cs === ptrType$74.nil) && !cc.closed) { $s = 2; continue; }
104651  		/* */ $s = 3; continue;
104652  		/* if (andRemove && !(cs === ptrType$74.nil) && !cc.closed) { */ case 2:
104653  			time.Time.copy(cc.lastActive, time.Now());
104654  			delete cc.streams[$Uint32.keyFor(id)];
104655  			if (($keys(cc.streams).length === 0) && !(cc.idleTimer === ptrType$56.nil)) {
104656  				cc.idleTimer.Reset(cc.idleTimeout);
104657  			}
104658  			$close(cs.done);
104659  			$r = cc.cond.Broadcast(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
104660  		/* } */ case 3:
104661  		$s = -1; return cs;
104662  		/* */ } return; } } catch(err) { $err = err; $s = -1; return ptrType$74.nil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: http2ClientConn.ptr.prototype.streamByID }; } $f._entry = _entry; $f.andRemove = andRemove; $f.cc = cc; $f.cs = cs; $f.id = id; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
104663  	};
104664  	http2ClientConn.prototype.streamByID = function(id, andRemove) { return this.$val.streamByID(id, andRemove); };
104665  	http2ClientConn.ptr.prototype.readLoop = function() {
104666  		var _r$1, _r$2, _tuple, cc, ce, ok, rl, $s, $deferred, $r;
104667  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; _r$2 = $f._r$2; _tuple = $f._tuple; cc = $f.cc; ce = $f.ce; ok = $f.ok; rl = $f.rl; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
104668  		cc = this;
104669  		rl = new http2clientConnReadLoop.ptr(cc, false);
104670  		$deferred.push([$methodVal(rl, "cleanup"), []]);
104671  		_r$1 = rl.run(); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
104672  		cc.readerErr = _r$1;
104673  		_tuple = $assertType(cc.readerErr, http2ConnectionError, true);
104674  		ce = _tuple[0];
104675  		ok = _tuple[1];
104676  		/* */ if (ok) { $s = 2; continue; }
104677  		/* */ $s = 3; continue;
104678  		/* if (ok) { */ case 2:
104679  			$r = cc.wmu.Lock(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
104680  			_r$2 = cc.fr.WriteGoAway(0, ((ce >>> 0)), sliceType$3.nil); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
104681  			_r$2;
104682  			$r = cc.wmu.Unlock(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
104683  		/* } */ case 3:
104684  		$s = -1; return;
104685  		/* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: http2ClientConn.ptr.prototype.readLoop }; } $f._r$1 = _r$1; $f._r$2 = _r$2; $f._tuple = _tuple; $f.cc = cc; $f.ce = ce; $f.ok = ok; $f.rl = rl; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
104686  	};
104687  	http2ClientConn.prototype.readLoop = function() { return this.$val.readLoop(); };
104688  	http2GoAwayError.ptr.prototype.Error = function() {
104689  		var _r$1, e, $s, $r;
104690  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; e = $f.e; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
104691  		e = this;
104692  		_r$1 = fmt.Sprintf("http2: server sent GOAWAY and closed the connection; LastStreamID=%v, ErrCode=%v, debug=%q", new sliceType([new $Uint32(e.LastStreamID), new http2ErrCode(e.ErrCode), new $String(e.DebugData)])); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
104693  		$s = -1; return _r$1;
104694  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2GoAwayError.ptr.prototype.Error }; } $f._r$1 = _r$1; $f.e = e; $f.$s = $s; $f.$r = $r; return $f;
104695  	};
104696  	http2GoAwayError.prototype.Error = function() { return this.$val.Error(); };
104697  	http2isEOFOrNetReadError = function(err) {
104698  		var _tuple, err, ne, ok;
104699  		if ($interfaceIsEqual(err, io.EOF)) {
104700  			return true;
104701  		}
104702  		_tuple = $assertType(err, ptrType$59, true);
104703  		ne = _tuple[0];
104704  		ok = _tuple[1];
104705  		return ok && ne.Op === "read";
104706  	};
104707  	http2clientConnReadLoop.ptr.prototype.cleanup = function() {
104708  		var _arg, _entry, _i, _keys, _r$1, _ref, _selection, cc, cs, err, rl, x$4, $s, $deferred, $r;
104709  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _arg = $f._arg; _entry = $f._entry; _i = $f._i; _keys = $f._keys; _r$1 = $f._r$1; _ref = $f._ref; _selection = $f._selection; cc = $f.cc; cs = $f.cs; err = $f.err; rl = $f.rl; x$4 = $f.x$4; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
104710  		rl = this;
104711  		cc = rl.cc;
104712  		$deferred.push([$methodVal(cc.tconn, "Close"), []]);
104713  		_r$1 = cc.t.connPool(); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
104714  		$deferred.push([$methodVal(_r$1, "MarkDead"), [cc]]);
104715  		$deferred.push([function(_arg) { $close(_arg); }, [cc.readerDone]]);
104716  		if (!(cc.idleTimer === ptrType$56.nil)) {
104717  			cc.idleTimer.Stop();
104718  		}
104719  		err = cc.readerErr;
104720  		$r = cc.mu.Lock(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
104721  		if (!(cc.goAway === ptrType$44.nil) && http2isEOFOrNetReadError(err)) {
104722  			err = (x$4 = new http2GoAwayError.ptr(cc.goAway.LastStreamID, cc.goAway.ErrCode, cc.goAwayDebug), new x$4.constructor.elem(x$4));
104723  		} else if ($interfaceIsEqual(err, io.EOF)) {
104724  			err = io.ErrUnexpectedEOF;
104725  		}
104726  		_ref = cc.streams;
104727  		_i = 0;
104728  		_keys = $keys(_ref);
104729  		/* while (true) { */ case 3:
104730  			/* if (!(_i < _keys.length)) { break; } */ if(!(_i < _keys.length)) { $s = 4; continue; }
104731  			_entry = _ref[_keys[_i]];
104732  			if (_entry === undefined) {
104733  				_i++;
104734  				/* continue; */ $s = 3; continue;
104735  			}
104736  			cs = _entry.v;
104737  			$r = cs.bufPipe.CloseWithError(err); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
104738  			_selection = $select([[cs.resc, new http2resAndError.ptr(ptrType$17.nil, err)], []]);
104739  			if (_selection[0] === 0) {
104740  			} else if (_selection[0] === 1) {
104741  			}
104742  			$close(cs.done);
104743  			_i++;
104744  		/* } */ $s = 3; continue; case 4:
104745  		cc.closed = true;
104746  		$r = cc.cond.Broadcast(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
104747  		$r = cc.mu.Unlock(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
104748  		$s = -1; return;
104749  		/* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: http2clientConnReadLoop.ptr.prototype.cleanup }; } $f._arg = _arg; $f._entry = _entry; $f._i = _i; $f._keys = _keys; $f._r$1 = _r$1; $f._ref = _ref; $f._selection = _selection; $f.cc = cc; $f.cs = cs; $f.err = err; $f.rl = rl; $f.x$4 = x$4; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
104750  	};
104751  	http2clientConnReadLoop.prototype.cleanup = function() { return this.$val.cleanup(); };
104752  	http2clientConnReadLoop.ptr.prototype.run = function() {
104753  		var _arg, _arg$1, _arg$2, _arg$3, _r$1, _r$10, _r$11, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, _tuple, _tuple$1, _tuple$2, cc, cs, err, f, f$1, f$2, f$3, f$4, f$5, f$6, f$7, f$8, f$9, gotReply, gotSettings, maybeIdle, ok, ok$1, rl, se, $s, $r;
104754  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _arg = $f._arg; _arg$1 = $f._arg$1; _arg$2 = $f._arg$2; _arg$3 = $f._arg$3; _r$1 = $f._r$1; _r$10 = $f._r$10; _r$11 = $f._r$11; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _r$8 = $f._r$8; _r$9 = $f._r$9; _ref = $f._ref; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; cc = $f.cc; cs = $f.cs; err = $f.err; f = $f.f; f$1 = $f.f$1; f$2 = $f.f$2; f$3 = $f.f$3; f$4 = $f.f$4; f$5 = $f.f$5; f$6 = $f.f$6; f$7 = $f.f$7; f$8 = $f.f$8; f$9 = $f.f$9; gotReply = $f.gotReply; gotSettings = $f.gotSettings; maybeIdle = $f.maybeIdle; ok = $f.ok; ok$1 = $f.ok$1; rl = $f.rl; se = $f.se; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
104755  		rl = this;
104756  		cc = rl.cc;
104757  		rl.closeWhenIdle = cc.t.disableKeepAlives() || cc.singleUse;
104758  		gotReply = false;
104759  		gotSettings = false;
104760  		/* while (true) { */ case 1:
104761  			_r$1 = cc.fr.ReadFrame(); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
104762  			_tuple = _r$1;
104763  			f = _tuple[0];
104764  			err = _tuple[1];
104765  			/* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 4; continue; }
104766  			/* */ $s = 5; continue;
104767  			/* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 4:
104768  				$r = cc.vlogf("http2: Transport readFrame error on conn %p: (%T) %v", new sliceType([cc, err, err])); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
104769  			/* } */ case 5:
104770  			_tuple$1 = $assertType(err, http2StreamError, true);
104771  			se = $clone(_tuple$1[0], http2StreamError);
104772  			ok = _tuple$1[1];
104773  			/* */ if (ok) { $s = 7; continue; }
104774  			/* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 8; continue; }
104775  			/* */ $s = 9; continue;
104776  			/* if (ok) { */ case 7:
104777  				_r$2 = cc.streamByID(se.StreamID, false); /* */ $s = 10; case 10: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
104778  				cs = _r$2;
104779  				/* */ if (!(cs === ptrType$74.nil)) { $s = 11; continue; }
104780  				/* */ $s = 12; continue;
104781  				/* if (!(cs === ptrType$74.nil)) { */ case 11:
104782  					$r = cs.cc.writeStreamReset(cs.ID, se.Code, err); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
104783  					$r = cs.cc.forgetStreamID(cs.ID); /* */ $s = 14; case 14: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
104784  					if ($interfaceIsEqual(se.Cause, $ifaceNil)) {
104785  						se.Cause = cc.fr.errDetail;
104786  					}
104787  					$r = rl.endStreamError(cs, new se.constructor.elem(se)); /* */ $s = 15; case 15: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
104788  				/* } */ case 12:
104789  				/* continue; */ $s = 1; continue;
104790  				$s = 9; continue;
104791  			/* } else if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 8:
104792  				$s = -1; return err;
104793  			/* } */ case 9:
104794  			/* */ if (http2VerboseLogs) { $s = 16; continue; }
104795  			/* */ $s = 17; continue;
104796  			/* if (http2VerboseLogs) { */ case 16:
104797  				_r$3 = http2summarizeFrame(f); /* */ $s = 18; case 18: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
104798  				_arg = new $String(_r$3);
104799  				$r = cc.vlogf("http2: Transport received %s", new sliceType([_arg])); /* */ $s = 19; case 19: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
104800  			/* } */ case 17:
104801  			/* */ if (!gotSettings) { $s = 20; continue; }
104802  			/* */ $s = 21; continue;
104803  			/* if (!gotSettings) { */ case 20:
104804  				_tuple$2 = $assertType(f, ptrType$40, true);
104805  				ok$1 = _tuple$2[1];
104806  				/* */ if (!ok$1) { $s = 22; continue; }
104807  				/* */ $s = 23; continue;
104808  				/* if (!ok$1) { */ case 22:
104809  					$r = cc.logf("protocol error: received %T before a SETTINGS frame", new sliceType([f])); /* */ $s = 24; case 24: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
104810  					$s = -1; return new http2ConnectionError(1);
104811  				/* } */ case 23:
104812  				gotSettings = true;
104813  			/* } */ case 21:
104814  			maybeIdle = false;
104815  			_ref = f;
104816  			/* */ if ($assertType(_ref, ptrType$38, true)[1]) { $s = 25; continue; }
104817  			/* */ if ($assertType(_ref, ptrType$41, true)[1]) { $s = 26; continue; }
104818  			/* */ if ($assertType(_ref, ptrType$44, true)[1]) { $s = 27; continue; }
104819  			/* */ if ($assertType(_ref, ptrType$45, true)[1]) { $s = 28; continue; }
104820  			/* */ if ($assertType(_ref, ptrType$40, true)[1]) { $s = 29; continue; }
104821  			/* */ if ($assertType(_ref, ptrType$66, true)[1]) { $s = 30; continue; }
104822  			/* */ if ($assertType(_ref, ptrType$42, true)[1]) { $s = 31; continue; }
104823  			/* */ if ($assertType(_ref, ptrType$43, true)[1]) { $s = 32; continue; }
104824  			/* */ $s = 33; continue;
104825  			/* if ($assertType(_ref, ptrType$38, true)[1]) { */ case 25:
104826  				f$1 = _ref.$val;
104827  				_r$4 = rl.processHeaders(f$1); /* */ $s = 35; case 35: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
104828  				err = _r$4;
104829  				maybeIdle = true;
104830  				gotReply = true;
104831  				$s = 34; continue;
104832  			/* } else if ($assertType(_ref, ptrType$41, true)[1]) { */ case 26:
104833  				f$2 = _ref.$val;
104834  				_r$5 = rl.processData(f$2); /* */ $s = 36; case 36: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
104835  				err = _r$5;
104836  				maybeIdle = true;
104837  				$s = 34; continue;
104838  			/* } else if ($assertType(_ref, ptrType$44, true)[1]) { */ case 27:
104839  				f$3 = _ref.$val;
104840  				_r$6 = rl.processGoAway(f$3); /* */ $s = 37; case 37: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
104841  				err = _r$6;
104842  				maybeIdle = true;
104843  				$s = 34; continue;
104844  			/* } else if ($assertType(_ref, ptrType$45, true)[1]) { */ case 28:
104845  				f$4 = _ref.$val;
104846  				_r$7 = rl.processResetStream(f$4); /* */ $s = 38; case 38: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
104847  				err = _r$7;
104848  				maybeIdle = true;
104849  				$s = 34; continue;
104850  			/* } else if ($assertType(_ref, ptrType$40, true)[1]) { */ case 29:
104851  				f$5 = _ref.$val;
104852  				_r$8 = rl.processSettings(f$5); /* */ $s = 39; case 39: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
104853  				err = _r$8;
104854  				$s = 34; continue;
104855  			/* } else if ($assertType(_ref, ptrType$66, true)[1]) { */ case 30:
104856  				f$6 = _ref.$val;
104857  				err = rl.processPushPromise(f$6);
104858  				$s = 34; continue;
104859  			/* } else if ($assertType(_ref, ptrType$42, true)[1]) { */ case 31:
104860  				f$7 = _ref.$val;
104861  				_r$9 = rl.processWindowUpdate(f$7); /* */ $s = 40; case 40: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
104862  				err = _r$9;
104863  				$s = 34; continue;
104864  			/* } else if ($assertType(_ref, ptrType$43, true)[1]) { */ case 32:
104865  				f$8 = _ref.$val;
104866  				_r$10 = rl.processPing(f$8); /* */ $s = 41; case 41: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
104867  				err = _r$10;
104868  				$s = 34; continue;
104869  			/* } else { */ case 33:
104870  				f$9 = _ref;
104871  				$r = cc.logf("Transport: unhandled response frame type %T", new sliceType([f$9])); /* */ $s = 42; case 42: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
104872  			/* } */ case 34:
104873  			/* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 43; continue; }
104874  			/* */ $s = 44; continue;
104875  			/* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 43:
104876  				/* */ if (http2VerboseLogs) { $s = 45; continue; }
104877  				/* */ $s = 46; continue;
104878  				/* if (http2VerboseLogs) { */ case 45:
104879  					_arg$1 = cc;
104880  					_r$11 = http2summarizeFrame(f); /* */ $s = 47; case 47: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; }
104881  					_arg$2 = new $String(_r$11);
104882  					_arg$3 = err;
104883  					$r = cc.vlogf("http2: Transport conn %p received error from processing frame %v: %v", new sliceType([_arg$1, _arg$2, _arg$3])); /* */ $s = 48; case 48: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
104884  				/* } */ case 46:
104885  				$s = -1; return err;
104886  			/* } */ case 44:
104887  			/* */ if (rl.closeWhenIdle && gotReply && maybeIdle) { $s = 49; continue; }
104888  			/* */ $s = 50; continue;
104889  			/* if (rl.closeWhenIdle && gotReply && maybeIdle) { */ case 49:
104890  				$r = cc.closeIfIdle(); /* */ $s = 51; case 51: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
104891  			/* } */ case 50:
104892  		/* } */ $s = 1; continue; case 2:
104893  		$s = -1; return $ifaceNil;
104894  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2clientConnReadLoop.ptr.prototype.run }; } $f._arg = _arg; $f._arg$1 = _arg$1; $f._arg$2 = _arg$2; $f._arg$3 = _arg$3; $f._r$1 = _r$1; $f._r$10 = _r$10; $f._r$11 = _r$11; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._r$8 = _r$8; $f._r$9 = _r$9; $f._ref = _ref; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f.cc = cc; $f.cs = cs; $f.err = err; $f.f = f; $f.f$1 = f$1; $f.f$2 = f$2; $f.f$3 = f$3; $f.f$4 = f$4; $f.f$5 = f$5; $f.f$6 = f$6; $f.f$7 = f$7; $f.f$8 = f$8; $f.f$9 = f$9; $f.gotReply = gotReply; $f.gotSettings = gotSettings; $f.maybeIdle = maybeIdle; $f.ok = ok; $f.ok$1 = ok$1; $f.rl = rl; $f.se = se; $f.$s = $s; $f.$r = $r; return $f;
104895  	};
104896  	http2clientConnReadLoop.prototype.run = function() { return this.$val.run(); };
104897  	http2clientConnReadLoop.ptr.prototype.processHeaders = function(f) {
104898  		var _r$1, _r$2, _r$3, _tuple, _tuple$1, cc, cs, err, f, ok, res, rl, $s, $deferred, $r;
104899  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; cc = $f.cc; cs = $f.cs; err = $f.err; f = $f.f; ok = $f.ok; res = $f.res; rl = $f.rl; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
104900  		rl = this;
104901  		cc = rl.cc;
104902  		_r$1 = cc.streamByID(f.http2HeadersFrame.http2FrameHeader.StreamID, false); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
104903  		cs = _r$1;
104904  		if (cs === ptrType$74.nil) {
104905  			$s = -1; return $ifaceNil;
104906  		}
104907  		/* */ if (f.http2HeadersFrame.StreamEnded()) { $s = 2; continue; }
104908  		/* */ $s = 3; continue;
104909  		/* if (f.http2HeadersFrame.StreamEnded()) { */ case 2:
104910  			/* */ if (!($interfaceIsEqual(cs.req.Body, $ifaceNil))) { $s = 4; continue; }
104911  			/* */ $s = 5; continue;
104912  			/* if (!($interfaceIsEqual(cs.req.Body, $ifaceNil))) { */ case 4:
104913  				$deferred.push([$methodVal(cc, "forgetStreamID"), [f.http2HeadersFrame.http2FrameHeader.StreamID]]);
104914  				$s = 6; continue;
104915  			/* } else { */ case 5:
104916  				$r = cc.forgetStreamID(f.http2HeadersFrame.http2FrameHeader.StreamID); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
104917  			/* } */ case 6:
104918  		/* } */ case 3:
104919  		/* */ if (!cs.firstByte) { $s = 8; continue; }
104920  		/* */ $s = 9; continue;
104921  		/* if (!cs.firstByte) { */ case 8:
104922  			/* */ if (!(cs.trace === ptrType$48.nil)) { $s = 10; continue; }
104923  			/* */ $s = 11; continue;
104924  			/* if (!(cs.trace === ptrType$48.nil)) { */ case 10:
104925  				$r = http2traceFirstResponseByte(cs.trace); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
104926  			/* } */ case 11:
104927  			cs.firstByte = true;
104928  		/* } */ case 9:
104929  		/* */ if (!cs.pastHeaders) { $s = 13; continue; }
104930  		/* */ $s = 14; continue;
104931  		/* if (!cs.pastHeaders) { */ case 13:
104932  			cs.pastHeaders = true;
104933  			$s = 15; continue;
104934  		/* } else { */ case 14:
104935  			_r$2 = rl.processTrailers(cs, f); /* */ $s = 16; case 16: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
104936  			$s = -1; return _r$2;
104937  		/* } */ case 15:
104938  		_r$3 = rl.handleResponse(cs, f); /* */ $s = 17; case 17: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
104939  		_tuple = _r$3;
104940  		res = _tuple[0];
104941  		err = _tuple[1];
104942  		/* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 18; continue; }
104943  		/* */ $s = 19; continue;
104944  		/* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 18:
104945  			_tuple$1 = $assertType(err, http2ConnectionError, true);
104946  			ok = _tuple$1[1];
104947  			if (ok) {
104948  				$s = -1; return err;
104949  			}
104950  			$r = cs.cc.writeStreamReset(f.http2HeadersFrame.http2FrameHeader.StreamID, 1, err); /* */ $s = 20; case 20: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
104951  			$r = cc.forgetStreamID(cs.ID); /* */ $s = 21; case 21: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
104952  			$r = $send(cs.resc, $clone(new http2resAndError.ptr(ptrType$17.nil, err), http2resAndError)); /* */ $s = 22; case 22: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
104953  			$s = -1; return $ifaceNil;
104954  		/* } */ case 19:
104955  		if (res === ptrType$17.nil) {
104956  			$s = -1; return $ifaceNil;
104957  		}
104958  		cs.resTrailer = (res.$ptr_Trailer || (res.$ptr_Trailer = new ptrType$73(function() { return this.$target.Trailer; }, function($v) { this.$target.Trailer = $v; }, res)));
104959  		$r = $send(cs.resc, $clone(new http2resAndError.ptr(res, $ifaceNil), http2resAndError)); /* */ $s = 23; case 23: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
104960  		$s = -1; return $ifaceNil;
104961  		/* */ } return; } } catch(err) { $err = err; $s = -1; return $ifaceNil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: http2clientConnReadLoop.ptr.prototype.processHeaders }; } $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.cc = cc; $f.cs = cs; $f.err = err; $f.f = f; $f.ok = ok; $f.res = res; $f.rl = rl; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
104962  	};
104963  	http2clientConnReadLoop.prototype.processHeaders = function(f) { return this.$val.processHeaders(f); };
104964  	http2clientConnReadLoop.ptr.prototype.handleResponse = function(cs, f) {
104965  		var _entry, _entry$1, _i, _key, _ref, _tuple, _tuple$1, clen64, clens, cs, err, err$1, f, header, hf, isHead, key, res, rl, status, statusCode, streamEnded, t, x$4, $s, $r;
104966  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _entry = $f._entry; _entry$1 = $f._entry$1; _i = $f._i; _key = $f._key; _ref = $f._ref; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; clen64 = $f.clen64; clens = $f.clens; cs = $f.cs; err = $f.err; err$1 = $f.err$1; f = $f.f; header = $f.header; hf = $f.hf; isHead = $f.isHead; key = $f.key; res = $f.res; rl = $f.rl; status = $f.status; statusCode = $f.statusCode; streamEnded = $f.streamEnded; t = $f.t; x$4 = $f.x$4; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
104967  		rl = this;
104968  		if (f.Truncated) {
104969  			$s = -1; return [ptrType$17.nil, http2errResponseHeaderListSize];
104970  		}
104971  		status = f.PseudoValue("status");
104972  		if (status === "") {
104973  			$s = -1; return [ptrType$17.nil, errors.New("malformed response from server: missing status pseudo header")];
104974  		}
104975  		_tuple = strconv.Atoi(status);
104976  		statusCode = _tuple[0];
104977  		err = _tuple[1];
104978  		if (!($interfaceIsEqual(err, $ifaceNil))) {
104979  			$s = -1; return [ptrType$17.nil, errors.New("malformed response from server: malformed non-numeric status pseudo header")];
104980  		}
104981  		/* */ if (statusCode === 100) { $s = 1; continue; }
104982  		/* */ $s = 2; continue;
104983  		/* if (statusCode === 100) { */ case 1:
104984  			$r = http2traceGot100Continue(cs.trace); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
104985  			/* */ if (!(cs.on100 === $throwNilPointerError)) { $s = 4; continue; }
104986  			/* */ $s = 5; continue;
104987  			/* if (!(cs.on100 === $throwNilPointerError)) { */ case 4:
104988  				$r = cs.on100(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
104989  			/* } */ case 5:
104990  			cs.pastHeaders = false;
104991  			$s = -1; return [ptrType$17.nil, $ifaceNil];
104992  		/* } */ case 2:
104993  		header = {};
104994  		res = new Response.ptr(status + " " + StatusText(statusCode), statusCode, "HTTP/2.0", 2, 0, header, $ifaceNil, new $Int64(0, 0), sliceType$1.nil, false, false, false, ptrType$7.nil, ptrType$18.nil);
104995  		_ref = f.RegularFields();
104996  		_i = 0;
104997  		/* while (true) { */ case 7:
104998  			/* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 8; continue; }
104999  			t = [t];
105000  			hf = $clone(((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]), hpack.HeaderField);
105001  			key = CanonicalHeaderKey(hf.Name);
105002  			/* */ if (key === "Trailer") { $s = 9; continue; }
105003  			/* */ $s = 10; continue;
105004  			/* if (key === "Trailer") { */ case 9:
105005  				t[0] = res.Trailer;
105006  				if (t[0] === false) {
105007  					t[0] = {};
105008  					res.Trailer = t[0];
105009  				}
105010  				$r = http2foreachHeaderElement(hf.Value, (function(t) { return function(v) {
105011  					var _key, v;
105012  					_key = CanonicalHeaderKey(v); (t[0] || $throwRuntimeError("assignment to entry in nil map"))[$String.keyFor(_key)] = { k: _key, v: sliceType$1.nil };
105013  				}; })(t)); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
105014  				$s = 11; continue;
105015  			/* } else { */ case 10:
105016  				_key = key; (header || $throwRuntimeError("assignment to entry in nil map"))[$String.keyFor(_key)] = { k: _key, v: $append((_entry = header[$String.keyFor(key)], _entry !== undefined ? _entry.v : sliceType$1.nil), hf.Value) };
105017  			/* } */ case 11:
105018  			_i++;
105019  		/* } */ $s = 7; continue; case 8:
105020  		streamEnded = f.http2HeadersFrame.StreamEnded();
105021  		isHead = cs.req.Method === "HEAD";
105022  		if (!streamEnded || isHead) {
105023  			res.ContentLength = new $Int64(-1, 4294967295);
105024  			clens = (_entry$1 = res.Header[$String.keyFor("Content-Length")], _entry$1 !== undefined ? _entry$1.v : sliceType$1.nil);
105025  			if (clens.$length === 1) {
105026  				_tuple$1 = strconv.ParseInt((0 >= clens.$length ? ($throwRuntimeError("index out of range"), undefined) : clens.$array[clens.$offset + 0]), 10, 64);
105027  				clen64 = _tuple$1[0];
105028  				err$1 = _tuple$1[1];
105029  				if ($interfaceIsEqual(err$1, $ifaceNil)) {
105030  					res.ContentLength = clen64;
105031  				} else {
105032  				}
105033  			} else if (clens.$length > 1) {
105034  			}
105035  		}
105036  		if (streamEnded || isHead) {
105037  			res.Body = http2noBody;
105038  			$s = -1; return [res, $ifaceNil];
105039  		}
105040  		http2pipe.copy(cs.bufPipe, new http2pipe.ptr(new sync.Mutex.ptr(0, 0), new sync.Cond.ptr(new sync.noCopy.ptr(), $ifaceNil, new sync.notifyList.ptr(0, 0, 0, 0, 0), 0, 0, $chanNil), new http2dataBuffer.ptr(sliceType$5.nil, 0, 0, 0, res.ContentLength), $ifaceNil, $ifaceNil, $chanNil, $throwNilPointerError));
105041  		cs.bytesRemain = res.ContentLength;
105042  		res.Body = (x$4 = new http2transportResponseBody.ptr(cs), new x$4.constructor.elem(x$4));
105043  		$go($methodVal(cs, "awaitRequestCancel"), [cs.req]);
105044  		if (cs.requestedGzip && new Header(res.Header).Get("Content-Encoding") === "gzip") {
105045  			new Header(res.Header).Del("Content-Encoding");
105046  			new Header(res.Header).Del("Content-Length");
105047  			res.ContentLength = new $Int64(-1, 4294967295);
105048  			res.Body = new http2gzipReader.ptr(res.Body, ptrType$75.nil, $ifaceNil);
105049  			http2setResponseUncompressed(res);
105050  		}
105051  		$s = -1; return [res, $ifaceNil];
105052  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2clientConnReadLoop.ptr.prototype.handleResponse }; } $f._entry = _entry; $f._entry$1 = _entry$1; $f._i = _i; $f._key = _key; $f._ref = _ref; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.clen64 = clen64; $f.clens = clens; $f.cs = cs; $f.err = err; $f.err$1 = err$1; $f.f = f; $f.header = header; $f.hf = hf; $f.isHead = isHead; $f.key = key; $f.res = res; $f.rl = rl; $f.status = status; $f.statusCode = statusCode; $f.streamEnded = streamEnded; $f.t = t; $f.x$4 = x$4; $f.$s = $s; $f.$r = $r; return $f;
105053  	};
105054  	http2clientConnReadLoop.prototype.handleResponse = function(cs, f) { return this.$val.handleResponse(cs, f); };
105055  	http2clientConnReadLoop.ptr.prototype.processTrailers = function(cs, f) {
105056  		var _entry, _i, _key, _ref, cs, f, hf, key, rl, trailer, $s, $r;
105057  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _entry = $f._entry; _i = $f._i; _key = $f._key; _ref = $f._ref; cs = $f.cs; f = $f.f; hf = $f.hf; key = $f.key; rl = $f.rl; trailer = $f.trailer; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
105058  		rl = this;
105059  		if (cs.pastTrailers) {
105060  			$s = -1; return new http2ConnectionError(1);
105061  		}
105062  		cs.pastTrailers = true;
105063  		if (!f.http2HeadersFrame.StreamEnded()) {
105064  			$s = -1; return new http2ConnectionError(1);
105065  		}
105066  		if (f.PseudoFields().$length > 0) {
105067  			$s = -1; return new http2ConnectionError(1);
105068  		}
105069  		trailer = {};
105070  		_ref = f.RegularFields();
105071  		_i = 0;
105072  		while (true) {
105073  			if (!(_i < _ref.$length)) { break; }
105074  			hf = $clone(((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]), hpack.HeaderField);
105075  			key = CanonicalHeaderKey(hf.Name);
105076  			_key = key; (trailer || $throwRuntimeError("assignment to entry in nil map"))[$String.keyFor(_key)] = { k: _key, v: $append((_entry = trailer[$String.keyFor(key)], _entry !== undefined ? _entry.v : sliceType$1.nil), hf.Value) };
105077  			_i++;
105078  		}
105079  		cs.trailer = trailer;
105080  		$r = rl.endStream(cs); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
105081  		$s = -1; return $ifaceNil;
105082  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2clientConnReadLoop.ptr.prototype.processTrailers }; } $f._entry = _entry; $f._i = _i; $f._key = _key; $f._ref = _ref; $f.cs = cs; $f.f = f; $f.hf = hf; $f.key = key; $f.rl = rl; $f.trailer = trailer; $f.$s = $s; $f.$r = $r; return $f;
105083  	};
105084  	http2clientConnReadLoop.prototype.processTrailers = function(cs, f) { return this.$val.processTrailers(cs, f); };
105085  	http2transportResponseBody.ptr.prototype.Read = function(p) {
105086  		var _r$1, _r$2, _r$3, _r$4, _r$5, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tuple, b, cc, connAdd, cs, err, n, p, streamAdd, v, v$1, x$10, x$11, x$4, x$5, x$6, x$7, x$8, x$9, $s, $deferred, $r;
105087  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tmp$4 = $f._tmp$4; _tmp$5 = $f._tmp$5; _tmp$6 = $f._tmp$6; _tmp$7 = $f._tmp$7; _tuple = $f._tuple; b = $f.b; cc = $f.cc; connAdd = $f.connAdd; cs = $f.cs; err = $f.err; n = $f.n; p = $f.p; streamAdd = $f.streamAdd; v = $f.v; v$1 = $f.v$1; x$10 = $f.x$10; x$11 = $f.x$11; x$4 = $f.x$4; x$5 = $f.x$5; x$6 = $f.x$6; x$7 = $f.x$7; x$8 = $f.x$8; x$9 = $f.x$9; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
105088  		n = 0;
105089  		err = $ifaceNil;
105090  		b = this;
105091  		cs = b.cs;
105092  		cc = cs.cc;
105093  		if (!($interfaceIsEqual(cs.readErr, $ifaceNil))) {
105094  			_tmp = 0;
105095  			_tmp$1 = cs.readErr;
105096  			n = _tmp;
105097  			err = _tmp$1;
105098  			$s = -1; return [n, err];
105099  		}
105100  		_r$1 = b.cs.bufPipe.Read(p); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
105101  		_tuple = _r$1;
105102  		n = _tuple[0];
105103  		err = _tuple[1];
105104  		/* */ if (!((x$4 = cs.bytesRemain, (x$4.$high === -1 && x$4.$low === 4294967295)))) { $s = 2; continue; }
105105  		/* */ $s = 3; continue;
105106  		/* if (!((x$4 = cs.bytesRemain, (x$4.$high === -1 && x$4.$low === 4294967295)))) { */ case 2:
105107  			/* */ if ((x$5 = (new $Int64(0, n)), x$6 = cs.bytesRemain, (x$5.$high > x$6.$high || (x$5.$high === x$6.$high && x$5.$low > x$6.$low)))) { $s = 4; continue; }
105108  			/* */ $s = 5; continue;
105109  			/* if ((x$5 = (new $Int64(0, n)), x$6 = cs.bytesRemain, (x$5.$high > x$6.$high || (x$5.$high === x$6.$high && x$5.$low > x$6.$low)))) { */ case 4:
105110  				n = (((x$7 = cs.bytesRemain, x$7.$low + ((x$7.$high >> 31) * 4294967296)) >> 0));
105111  				/* */ if ($interfaceIsEqual(err, $ifaceNil)) { $s = 6; continue; }
105112  				/* */ $s = 7; continue;
105113  				/* if ($interfaceIsEqual(err, $ifaceNil)) { */ case 6:
105114  					err = errors.New("net/http: server replied with more than declared Content-Length; truncated");
105115  					$r = cc.writeStreamReset(cs.ID, 1, err); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
105116  				/* } */ case 7:
105117  				cs.readErr = err;
105118  				_tmp$2 = (((x$8 = cs.bytesRemain, x$8.$low + ((x$8.$high >> 31) * 4294967296)) >> 0));
105119  				_tmp$3 = err;
105120  				n = _tmp$2;
105121  				err = _tmp$3;
105122  				$s = -1; return [n, err];
105123  			/* } */ case 5:
105124  			cs.bytesRemain = (x$9 = cs.bytesRemain, x$10 = (new $Int64(0, n)), new $Int64(x$9.$high - x$10.$high, x$9.$low - x$10.$low));
105125  			if ($interfaceIsEqual(err, io.EOF) && (x$11 = cs.bytesRemain, (x$11.$high > 0 || (x$11.$high === 0 && x$11.$low > 0)))) {
105126  				err = io.ErrUnexpectedEOF;
105127  				cs.readErr = err;
105128  				_tmp$4 = n;
105129  				_tmp$5 = err;
105130  				n = _tmp$4;
105131  				err = _tmp$5;
105132  				$s = -1; return [n, err];
105133  			}
105134  		/* } */ case 3:
105135  		if (n === 0) {
105136  			$s = -1; return [n, err];
105137  		}
105138  		$r = cc.mu.Lock(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
105139  		$deferred.push([$methodVal(cc.mu, "Unlock"), []]);
105140  		_tmp$6 = 0;
105141  		_tmp$7 = 0;
105142  		connAdd = _tmp$6;
105143  		streamAdd = _tmp$7;
105144  		v = cc.inflow.available();
105145  		if (v < 536870912) {
105146  			connAdd = 1073741824 - v >> 0;
105147  			cc.inflow.add(connAdd);
105148  		}
105149  		/* */ if ($interfaceIsEqual(err, $ifaceNil)) { $s = 10; continue; }
105150  		/* */ $s = 11; continue;
105151  		/* if ($interfaceIsEqual(err, $ifaceNil)) { */ case 10:
105152  			_r$2 = cs.bufPipe.Len(); /* */ $s = 12; case 12: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
105153  			v$1 = ((cs.inflow.available() >> 0)) + _r$2 >> 0;
105154  			if (v$1 < 4190208) {
105155  				streamAdd = (((4194304 - v$1 >> 0) >> 0));
105156  				cs.inflow.add(streamAdd);
105157  			}
105158  		/* } */ case 11:
105159  		/* */ if (!((connAdd === 0)) || !((streamAdd === 0))) { $s = 13; continue; }
105160  		/* */ $s = 14; continue;
105161  		/* if (!((connAdd === 0)) || !((streamAdd === 0))) { */ case 13:
105162  			$r = cc.wmu.Lock(); /* */ $s = 15; case 15: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
105163  			$deferred.push([$methodVal(cc.wmu, "Unlock"), []]);
105164  			/* */ if (!((connAdd === 0))) { $s = 16; continue; }
105165  			/* */ $s = 17; continue;
105166  			/* if (!((connAdd === 0))) { */ case 16:
105167  				_r$3 = cc.fr.WriteWindowUpdate(0, http2mustUint31(connAdd)); /* */ $s = 18; case 18: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
105168  				_r$3;
105169  			/* } */ case 17:
105170  			/* */ if (!((streamAdd === 0))) { $s = 19; continue; }
105171  			/* */ $s = 20; continue;
105172  			/* if (!((streamAdd === 0))) { */ case 19:
105173  				_r$4 = cc.fr.WriteWindowUpdate(cs.ID, http2mustUint31(streamAdd)); /* */ $s = 21; case 21: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
105174  				_r$4;
105175  			/* } */ case 20:
105176  			_r$5 = cc.bw.Flush(); /* */ $s = 22; case 22: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
105177  			_r$5;
105178  		/* } */ case 14:
105179  		$s = -1; return [n, err];
105180  		/* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if (!$curGoroutine.asleep) { return  [n, err]; } if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: http2transportResponseBody.ptr.prototype.Read }; } $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tmp$4 = _tmp$4; $f._tmp$5 = _tmp$5; $f._tmp$6 = _tmp$6; $f._tmp$7 = _tmp$7; $f._tuple = _tuple; $f.b = b; $f.cc = cc; $f.connAdd = connAdd; $f.cs = cs; $f.err = err; $f.n = n; $f.p = p; $f.streamAdd = streamAdd; $f.v = v; $f.v$1 = v$1; $f.x$10 = x$10; $f.x$11 = x$11; $f.x$4 = x$4; $f.x$5 = x$5; $f.x$6 = x$6; $f.x$7 = x$7; $f.x$8 = x$8; $f.x$9 = x$9; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
105181  	};
105182  	http2transportResponseBody.prototype.Read = function(p) { return this.$val.Read(p); };
105183  	http2transportResponseBody.ptr.prototype.Close = function() {
105184  		var _r$1, _r$2, _r$3, _r$4, _r$5, b, cc, cs, serverSentStreamEnd, unread, $s, $r;
105185  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; b = $f.b; cc = $f.cc; cs = $f.cs; serverSentStreamEnd = $f.serverSentStreamEnd; unread = $f.unread; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
105186  		b = this;
105187  		cs = b.cs;
105188  		cc = cs.cc;
105189  		_r$1 = cs.bufPipe.Err(); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
105190  		serverSentStreamEnd = $interfaceIsEqual(_r$1, io.EOF);
105191  		_r$2 = cs.bufPipe.Len(); /* */ $s = 2; case 2: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
105192  		unread = _r$2;
105193  		/* */ if (unread > 0 || !serverSentStreamEnd) { $s = 3; continue; }
105194  		/* */ $s = 4; continue;
105195  		/* if (unread > 0 || !serverSentStreamEnd) { */ case 3:
105196  			$r = cc.mu.Lock(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
105197  			$r = cc.wmu.Lock(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
105198  			/* */ if (!serverSentStreamEnd) { $s = 7; continue; }
105199  			/* */ $s = 8; continue;
105200  			/* if (!serverSentStreamEnd) { */ case 7:
105201  				_r$3 = cc.fr.WriteRSTStream(cs.ID, 8); /* */ $s = 9; case 9: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
105202  				_r$3;
105203  				cs.didReset = true;
105204  			/* } */ case 8:
105205  			/* */ if (unread > 0) { $s = 10; continue; }
105206  			/* */ $s = 11; continue;
105207  			/* if (unread > 0) { */ case 10:
105208  				cc.inflow.add(((unread >> 0)));
105209  				_r$4 = cc.fr.WriteWindowUpdate(0, ((unread >>> 0))); /* */ $s = 12; case 12: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
105210  				_r$4;
105211  			/* } */ case 11:
105212  			_r$5 = cc.bw.Flush(); /* */ $s = 13; case 13: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
105213  			_r$5;
105214  			$r = cc.wmu.Unlock(); /* */ $s = 14; case 14: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
105215  			$r = cc.mu.Unlock(); /* */ $s = 15; case 15: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
105216  		/* } */ case 4:
105217  		$r = cs.bufPipe.BreakWithError(http2errClosedResponseBody); /* */ $s = 16; case 16: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
105218  		$r = cc.forgetStreamID(cs.ID); /* */ $s = 17; case 17: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
105219  		$s = -1; return $ifaceNil;
105220  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2transportResponseBody.ptr.prototype.Close }; } $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f.b = b; $f.cc = cc; $f.cs = cs; $f.serverSentStreamEnd = serverSentStreamEnd; $f.unread = unread; $f.$s = $s; $f.$r = $r; return $f;
105221  	};
105222  	http2transportResponseBody.prototype.Close = function() { return this.$val.Close(); };
105223  	http2clientConnReadLoop.ptr.prototype.processData = function(f) {
105224  		var _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _tuple, cc, cs, data, didReset, err, f, neverSent, pad, refund, rl, x$4, x$5, $s, $r;
105225  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _tuple = $f._tuple; cc = $f.cc; cs = $f.cs; data = $f.data; didReset = $f.didReset; err = $f.err; f = $f.f; neverSent = $f.neverSent; pad = $f.pad; refund = $f.refund; rl = $f.rl; x$4 = $f.x$4; x$5 = $f.x$5; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
105226  		rl = this;
105227  		cc = rl.cc;
105228  		_r$1 = cc.streamByID(f.http2FrameHeader.StreamID, f.StreamEnded()); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
105229  		cs = _r$1;
105230  		data = f.Data();
105231  		/* */ if (cs === ptrType$74.nil) { $s = 2; continue; }
105232  		/* */ $s = 3; continue;
105233  		/* if (cs === ptrType$74.nil) { */ case 2:
105234  			$r = cc.mu.Lock(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
105235  			neverSent = cc.nextStreamID;
105236  			$r = cc.mu.Unlock(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
105237  			/* */ if (f.http2FrameHeader.StreamID >= neverSent) { $s = 6; continue; }
105238  			/* */ $s = 7; continue;
105239  			/* if (f.http2FrameHeader.StreamID >= neverSent) { */ case 6:
105240  				$r = cc.logf("http2: Transport received unsolicited DATA frame; closing connection", new sliceType([])); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
105241  				$s = -1; return new http2ConnectionError(1);
105242  			/* } */ case 7:
105243  			/* */ if (f.http2FrameHeader.Length > 0) { $s = 9; continue; }
105244  			/* */ $s = 10; continue;
105245  			/* if (f.http2FrameHeader.Length > 0) { */ case 9:
105246  				$r = cc.mu.Lock(); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
105247  				cc.inflow.add(((f.http2FrameHeader.Length >> 0)));
105248  				$r = cc.mu.Unlock(); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
105249  				$r = cc.wmu.Lock(); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
105250  				_r$2 = cc.fr.WriteWindowUpdate(0, (f.http2FrameHeader.Length)); /* */ $s = 14; case 14: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
105251  				_r$2;
105252  				_r$3 = cc.bw.Flush(); /* */ $s = 15; case 15: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
105253  				_r$3;
105254  				$r = cc.wmu.Unlock(); /* */ $s = 16; case 16: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
105255  			/* } */ case 10:
105256  			$s = -1; return $ifaceNil;
105257  		/* } */ case 3:
105258  		/* */ if (!cs.firstByte) { $s = 17; continue; }
105259  		/* */ $s = 18; continue;
105260  		/* if (!cs.firstByte) { */ case 17:
105261  			$r = cc.logf("protocol error: received DATA before a HEADERS frame", new sliceType([])); /* */ $s = 19; case 19: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
105262  			$r = rl.endStreamError(cs, (x$4 = new http2StreamError.ptr(f.http2FrameHeader.StreamID, 1, $ifaceNil), new x$4.constructor.elem(x$4))); /* */ $s = 20; case 20: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
105263  			$s = -1; return $ifaceNil;
105264  		/* } */ case 18:
105265  		/* */ if (f.http2FrameHeader.Length > 0) { $s = 21; continue; }
105266  		/* */ $s = 22; continue;
105267  		/* if (f.http2FrameHeader.Length > 0) { */ case 21:
105268  			/* */ if (cs.req.Method === "HEAD" && data.$length > 0) { $s = 23; continue; }
105269  			/* */ $s = 24; continue;
105270  			/* if (cs.req.Method === "HEAD" && data.$length > 0) { */ case 23:
105271  				$r = cc.logf("protocol error: received DATA on a HEAD request", new sliceType([])); /* */ $s = 25; case 25: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
105272  				$r = rl.endStreamError(cs, (x$5 = new http2StreamError.ptr(f.http2FrameHeader.StreamID, 1, $ifaceNil), new x$5.constructor.elem(x$5))); /* */ $s = 26; case 26: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
105273  				$s = -1; return $ifaceNil;
105274  			/* } */ case 24:
105275  			$r = cc.mu.Lock(); /* */ $s = 27; case 27: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
105276  			/* */ if (cs.inflow.available() >= ((f.http2FrameHeader.Length >> 0))) { $s = 28; continue; }
105277  			/* */ $s = 29; continue;
105278  			/* if (cs.inflow.available() >= ((f.http2FrameHeader.Length >> 0))) { */ case 28:
105279  				cs.inflow.take(((f.http2FrameHeader.Length >> 0)));
105280  				$s = 30; continue;
105281  			/* } else { */ case 29:
105282  				$r = cc.mu.Unlock(); /* */ $s = 31; case 31: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
105283  				$s = -1; return new http2ConnectionError(3);
105284  			/* } */ case 30:
105285  			refund = 0;
105286  			pad = ((f.http2FrameHeader.Length >> 0)) - data.$length >> 0;
105287  			if (pad > 0) {
105288  				refund = refund + (pad) >> 0;
105289  			}
105290  			didReset = cs.didReset;
105291  			if (didReset) {
105292  				refund = refund + (data.$length) >> 0;
105293  			}
105294  			/* */ if (refund > 0) { $s = 32; continue; }
105295  			/* */ $s = 33; continue;
105296  			/* if (refund > 0) { */ case 32:
105297  				cc.inflow.add(((refund >> 0)));
105298  				$r = cc.wmu.Lock(); /* */ $s = 34; case 34: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
105299  				_r$4 = cc.fr.WriteWindowUpdate(0, ((refund >>> 0))); /* */ $s = 35; case 35: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
105300  				_r$4;
105301  				/* */ if (!didReset) { $s = 36; continue; }
105302  				/* */ $s = 37; continue;
105303  				/* if (!didReset) { */ case 36:
105304  					cs.inflow.add(((refund >> 0)));
105305  					_r$5 = cc.fr.WriteWindowUpdate(cs.ID, ((refund >>> 0))); /* */ $s = 38; case 38: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
105306  					_r$5;
105307  				/* } */ case 37:
105308  				_r$6 = cc.bw.Flush(); /* */ $s = 39; case 39: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
105309  				_r$6;
105310  				$r = cc.wmu.Unlock(); /* */ $s = 40; case 40: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
105311  			/* } */ case 33:
105312  			$r = cc.mu.Unlock(); /* */ $s = 41; case 41: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
105313  			/* */ if (data.$length > 0 && !didReset) { $s = 42; continue; }
105314  			/* */ $s = 43; continue;
105315  			/* if (data.$length > 0 && !didReset) { */ case 42:
105316  				_r$7 = cs.bufPipe.Write(data); /* */ $s = 44; case 44: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
105317  				_tuple = _r$7;
105318  				err = _tuple[1];
105319  				/* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 45; continue; }
105320  				/* */ $s = 46; continue;
105321  				/* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 45:
105322  					$r = rl.endStreamError(cs, err); /* */ $s = 47; case 47: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
105323  					$s = -1; return err;
105324  				/* } */ case 46:
105325  			/* } */ case 43:
105326  		/* } */ case 22:
105327  		/* */ if (f.StreamEnded()) { $s = 48; continue; }
105328  		/* */ $s = 49; continue;
105329  		/* if (f.StreamEnded()) { */ case 48:
105330  			$r = rl.endStream(cs); /* */ $s = 50; case 50: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
105331  		/* } */ case 49:
105332  		$s = -1; return $ifaceNil;
105333  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2clientConnReadLoop.ptr.prototype.processData }; } $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._tuple = _tuple; $f.cc = cc; $f.cs = cs; $f.data = data; $f.didReset = didReset; $f.err = err; $f.f = f; $f.neverSent = neverSent; $f.pad = pad; $f.refund = refund; $f.rl = rl; $f.x$4 = x$4; $f.x$5 = x$5; $f.$s = $s; $f.$r = $r; return $f;
105334  	};
105335  	http2clientConnReadLoop.prototype.processData = function(f) { return this.$val.processData(f); };
105336  	http2clientConnReadLoop.ptr.prototype.endStream = function(cs) {
105337  		var cs, rl, $s, $r;
105338  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; cs = $f.cs; rl = $f.rl; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
105339  		rl = this;
105340  		$r = rl.endStreamError(cs, $ifaceNil); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
105341  		$s = -1; return;
105342  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2clientConnReadLoop.ptr.prototype.endStream }; } $f.cs = cs; $f.rl = rl; $f.$s = $s; $f.$r = $r; return $f;
105343  	};
105344  	http2clientConnReadLoop.prototype.endStream = function(cs) { return this.$val.endStream(cs); };
105345  	http2clientConnReadLoop.ptr.prototype.endStreamError = function(cs, err) {
105346  		var _selection, code, cs, err, rl, $s, $r;
105347  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _selection = $f._selection; code = $f.code; cs = $f.cs; err = $f.err; rl = $f.rl; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
105348  		rl = this;
105349  		code = $throwNilPointerError;
105350  		if ($interfaceIsEqual(err, $ifaceNil)) {
105351  			err = io.EOF;
105352  			code = $methodVal(cs, "copyTrailers");
105353  		}
105354  		if (http2isConnectionCloseRequest(cs.req)) {
105355  			rl.closeWhenIdle = true;
105356  		}
105357  		$r = cs.bufPipe.closeWithErrorAndCode(err, code); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
105358  		_selection = $select([[cs.resc, new http2resAndError.ptr(ptrType$17.nil, err)], []]);
105359  		if (_selection[0] === 0) {
105360  		} else if (_selection[0] === 1) {
105361  		}
105362  		$s = -1; return;
105363  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2clientConnReadLoop.ptr.prototype.endStreamError }; } $f._selection = _selection; $f.code = code; $f.cs = cs; $f.err = err; $f.rl = rl; $f.$s = $s; $f.$r = $r; return $f;
105364  	};
105365  	http2clientConnReadLoop.prototype.endStreamError = function(cs, err) { return this.$val.endStreamError(cs, err); };
105366  	http2clientStream.ptr.prototype.copyTrailers = function() {
105367  		var _entry, _i, _key, _keys, _ref, cs, k, t, vv;
105368  		cs = this;
105369  		_ref = cs.trailer;
105370  		_i = 0;
105371  		_keys = $keys(_ref);
105372  		while (true) {
105373  			if (!(_i < _keys.length)) { break; }
105374  			_entry = _ref[_keys[_i]];
105375  			if (_entry === undefined) {
105376  				_i++;
105377  				continue;
105378  			}
105379  			k = _entry.k;
105380  			vv = _entry.v;
105381  			t = cs.resTrailer;
105382  			if (t.$get() === false) {
105383  				t.$set({});
105384  			}
105385  			_key = k; (t.$get() || $throwRuntimeError("assignment to entry in nil map"))[$String.keyFor(_key)] = { k: _key, v: vv };
105386  			_i++;
105387  		}
105388  	};
105389  	http2clientStream.prototype.copyTrailers = function() { return this.$val.copyTrailers(); };
105390  	http2clientConnReadLoop.ptr.prototype.processGoAway = function(f) {
105391  		var _r$1, cc, f, rl, $s, $r;
105392  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; cc = $f.cc; f = $f.f; rl = $f.rl; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
105393  		rl = this;
105394  		cc = rl.cc;
105395  		_r$1 = cc.t.connPool(); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
105396  		$r = _r$1.MarkDead(cc); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
105397  		/* */ if (!((f.ErrCode === 0))) { $s = 3; continue; }
105398  		/* */ $s = 4; continue;
105399  		/* if (!((f.ErrCode === 0))) { */ case 3:
105400  			$r = cc.vlogf("transport got GOAWAY with error code = %v", new sliceType([new http2ErrCode(f.ErrCode)])); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
105401  		/* } */ case 4:
105402  		$r = cc.setGoAway(f); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
105403  		$s = -1; return $ifaceNil;
105404  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2clientConnReadLoop.ptr.prototype.processGoAway }; } $f._r$1 = _r$1; $f.cc = cc; $f.f = f; $f.rl = rl; $f.$s = $s; $f.$r = $r; return $f;
105405  	};
105406  	http2clientConnReadLoop.prototype.processGoAway = function(f) { return this.$val.processGoAway(f); };
105407  	http2clientConnReadLoop.ptr.prototype.processSettings = function(f) {
105408  		var _r$1, _r$2, _r$3, cc, err, f, rl, $s, $deferred, $r;
105409  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; cc = $f.cc; err = $f.err; f = $f.f; rl = $f.rl; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
105410  		cc = [cc];
105411  		rl = this;
105412  		cc[0] = rl.cc;
105413  		$r = cc[0].mu.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
105414  		$deferred.push([$methodVal(cc[0].mu, "Unlock"), []]);
105415  		if (f.IsAck()) {
105416  			if (cc[0].wantSettingsAck) {
105417  				cc[0].wantSettingsAck = false;
105418  				$s = -1; return $ifaceNil;
105419  			}
105420  			$s = -1; return new http2ConnectionError(1);
105421  		}
105422  		_r$1 = f.ForeachSetting((function(cc) { return function $b(s) {
105423  			var _1, _entry, _i, _keys, _ref, cs, delta, s, $s, $r;
105424  			/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _entry = $f._entry; _i = $f._i; _keys = $f._keys; _ref = $f._ref; cs = $f.cs; delta = $f.delta; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
105425  				_1 = s.ID;
105426  				/* */ if (_1 === (5)) { $s = 2; continue; }
105427  				/* */ if (_1 === (3)) { $s = 3; continue; }
105428  				/* */ if (_1 === (6)) { $s = 4; continue; }
105429  				/* */ if (_1 === (4)) { $s = 5; continue; }
105430  				/* */ $s = 6; continue;
105431  				/* if (_1 === (5)) { */ case 2:
105432  					cc[0].maxFrameSize = s.Val;
105433  					$s = 7; continue;
105434  				/* } else if (_1 === (3)) { */ case 3:
105435  					cc[0].maxConcurrentStreams = s.Val;
105436  					$s = 7; continue;
105437  				/* } else if (_1 === (6)) { */ case 4:
105438  					cc[0].peerMaxHeaderListSize = (new $Uint64(0, s.Val));
105439  					$s = 7; continue;
105440  				/* } else if (_1 === (4)) { */ case 5:
105441  					if (s.Val > 2147483647) {
105442  						$s = -1; return new http2ConnectionError(3);
105443  					}
105444  					delta = ((s.Val >> 0)) - ((cc[0].initialWindowSize >> 0)) >> 0;
105445  					_ref = cc[0].streams;
105446  					_i = 0;
105447  					_keys = $keys(_ref);
105448  					while (true) {
105449  						if (!(_i < _keys.length)) { break; }
105450  						_entry = _ref[_keys[_i]];
105451  						if (_entry === undefined) {
105452  							_i++;
105453  							continue;
105454  						}
105455  						cs = _entry.v;
105456  						cs.flow.add(delta);
105457  						_i++;
105458  					}
105459  					$r = cc[0].cond.Broadcast(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
105460  					cc[0].initialWindowSize = s.Val;
105461  					$s = 7; continue;
105462  				/* } else { */ case 6:
105463  					$r = cc[0].vlogf("Unhandled Setting: %v", new sliceType([new s.constructor.elem(s)])); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
105464  				/* } */ case 7:
105465  			case 1:
105466  			$s = -1; return $ifaceNil;
105467  			/* */ } return; } if ($f === undefined) { $f = { $blk: $b }; } $f._1 = _1; $f._entry = _entry; $f._i = _i; $f._keys = _keys; $f._ref = _ref; $f.cs = cs; $f.delta = delta; $f.s = s; $f.$s = $s; $f.$r = $r; return $f;
105468  		}; })(cc)); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
105469  		err = _r$1;
105470  		if (!($interfaceIsEqual(err, $ifaceNil))) {
105471  			$s = -1; return err;
105472  		}
105473  		$r = cc[0].wmu.Lock(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
105474  		$deferred.push([$methodVal(cc[0].wmu, "Unlock"), []]);
105475  		_r$2 = cc[0].fr.WriteSettingsAck(); /* */ $s = 4; case 4: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
105476  		_r$2;
105477  		_r$3 = cc[0].bw.Flush(); /* */ $s = 5; case 5: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
105478  		_r$3;
105479  		$s = -1; return cc[0].werr;
105480  		/* */ } return; } } catch(err) { $err = err; $s = -1; return $ifaceNil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: http2clientConnReadLoop.ptr.prototype.processSettings }; } $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f.cc = cc; $f.err = err; $f.f = f; $f.rl = rl; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
105481  	};
105482  	http2clientConnReadLoop.prototype.processSettings = function(f) { return this.$val.processSettings(f); };
105483  	http2clientConnReadLoop.ptr.prototype.processWindowUpdate = function(f) {
105484  		var _r$1, cc, cs, f, fl, rl, $s, $deferred, $r;
105485  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; cc = $f.cc; cs = $f.cs; f = $f.f; fl = $f.fl; rl = $f.rl; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
105486  		rl = this;
105487  		cc = rl.cc;
105488  		_r$1 = cc.streamByID(f.http2FrameHeader.StreamID, false); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
105489  		cs = _r$1;
105490  		if (!((f.http2FrameHeader.StreamID === 0)) && cs === ptrType$74.nil) {
105491  			$s = -1; return $ifaceNil;
105492  		}
105493  		$r = cc.mu.Lock(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
105494  		$deferred.push([$methodVal(cc.mu, "Unlock"), []]);
105495  		fl = cc.flow;
105496  		if (!(cs === ptrType$74.nil)) {
105497  			fl = cs.flow;
105498  		}
105499  		if (!fl.add(((f.Increment >> 0)))) {
105500  			$s = -1; return new http2ConnectionError(3);
105501  		}
105502  		$r = cc.cond.Broadcast(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
105503  		$s = -1; return $ifaceNil;
105504  		/* */ } return; } } catch(err) { $err = err; $s = -1; return $ifaceNil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: http2clientConnReadLoop.ptr.prototype.processWindowUpdate }; } $f._r$1 = _r$1; $f.cc = cc; $f.cs = cs; $f.f = f; $f.fl = fl; $f.rl = rl; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
105505  	};
105506  	http2clientConnReadLoop.prototype.processWindowUpdate = function(f) { return this.$val.processWindowUpdate(f); };
105507  	http2clientConnReadLoop.ptr.prototype.processResetStream = function(f) {
105508  		var _r$1, _selection, cs, err, f, rl, $s, $r;
105509  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; _selection = $f._selection; cs = $f.cs; err = $f.err; f = $f.f; rl = $f.rl; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
105510  		rl = this;
105511  		_r$1 = rl.cc.streamByID(f.http2FrameHeader.StreamID, true); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
105512  		cs = _r$1;
105513  		if (cs === ptrType$74.nil) {
105514  			$s = -1; return $ifaceNil;
105515  		}
105516  		_selection = $select([[cs.peerReset], []]);
105517  		/* */ if (_selection[0] === 0) { $s = 2; continue; }
105518  		/* */ if (_selection[0] === 1) { $s = 3; continue; }
105519  		/* */ $s = 4; continue;
105520  		/* if (_selection[0] === 0) { */ case 2:
105521  			$s = 4; continue;
105522  		/* } else if (_selection[0] === 1) { */ case 3:
105523  			err = $clone(http2streamError(cs.ID, f.ErrCode), http2StreamError);
105524  			cs.resetErr = new err.constructor.elem(err);
105525  			$close(cs.peerReset);
105526  			$r = cs.bufPipe.CloseWithError(new err.constructor.elem(err)); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
105527  			$r = cs.cc.cond.Broadcast(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
105528  		/* } */ case 4:
105529  		$s = -1; return $ifaceNil;
105530  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2clientConnReadLoop.ptr.prototype.processResetStream }; } $f._r$1 = _r$1; $f._selection = _selection; $f.cs = cs; $f.err = err; $f.f = f; $f.rl = rl; $f.$s = $s; $f.$r = $r; return $f;
105531  	};
105532  	http2clientConnReadLoop.prototype.processResetStream = function(f) { return this.$val.processResetStream(f); };
105533  	http2ClientConn.ptr.prototype.ping = function(ctx) {
105534  		var _entry, _key, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _selection, _tuple, _tuple$1, c, cc, ctx, err, err$1, err$2, found, p, $s, $r;
105535  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _entry = $f._entry; _key = $f._key; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _selection = $f._selection; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; c = $f.c; cc = $f.cc; ctx = $f.ctx; err = $f.err; err$1 = $f.err$1; err$2 = $f.err$2; found = $f.found; p = $f.p; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
105536  		cc = this;
105537  		c = new $Chan(structType, 0);
105538  		p = arrayType$4.zero();
105539  		/* while (true) { */ case 1:
105540  			_r$1 = rand.Read(new sliceType$3(p)); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
105541  			_tuple = _r$1;
105542  			err = _tuple[1];
105543  			if (!($interfaceIsEqual(err, $ifaceNil))) {
105544  				$s = -1; return err;
105545  			}
105546  			$r = cc.mu.Lock(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
105547  			_tuple$1 = (_entry = cc.pings[arrayType$4.keyFor(p)], _entry !== undefined ? [_entry.v, true] : [$chanNil, false]);
105548  			found = _tuple$1[1];
105549  			/* */ if (!found) { $s = 5; continue; }
105550  			/* */ $s = 6; continue;
105551  			/* if (!found) { */ case 5:
105552  				_key = $clone(p, arrayType$4); (cc.pings || $throwRuntimeError("assignment to entry in nil map"))[arrayType$4.keyFor(_key)] = { k: _key, v: c };
105553  				$r = cc.mu.Unlock(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
105554  				/* break; */ $s = 2; continue;
105555  			/* } */ case 6:
105556  			$r = cc.mu.Unlock(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
105557  		/* } */ $s = 1; continue; case 2:
105558  		$r = cc.wmu.Lock(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
105559  		_r$2 = cc.fr.WritePing(false, $clone(p, arrayType$4)); /* */ $s = 10; case 10: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
105560  		err$1 = _r$2;
105561  		/* */ if (!($interfaceIsEqual(err$1, $ifaceNil))) { $s = 11; continue; }
105562  		/* */ $s = 12; continue;
105563  		/* if (!($interfaceIsEqual(err$1, $ifaceNil))) { */ case 11:
105564  			$r = cc.wmu.Unlock(); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
105565  			$s = -1; return err$1;
105566  		/* } */ case 12:
105567  		_r$3 = cc.bw.Flush(); /* */ $s = 14; case 14: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
105568  		err$2 = _r$3;
105569  		/* */ if (!($interfaceIsEqual(err$2, $ifaceNil))) { $s = 15; continue; }
105570  		/* */ $s = 16; continue;
105571  		/* if (!($interfaceIsEqual(err$2, $ifaceNil))) { */ case 15:
105572  			$r = cc.wmu.Unlock(); /* */ $s = 17; case 17: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
105573  			$s = -1; return err$2;
105574  		/* } */ case 16:
105575  		$r = cc.wmu.Unlock(); /* */ $s = 18; case 18: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
105576  		_r$4 = ctx.Done(); /* */ $s = 19; case 19: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
105577  		_r$5 = $select([[c], [_r$4], [cc.readerDone]]); /* */ $s = 20; case 20: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
105578  		_selection = _r$5;
105579  		/* */ if (_selection[0] === 0) { $s = 21; continue; }
105580  		/* */ if (_selection[0] === 1) { $s = 22; continue; }
105581  		/* */ if (_selection[0] === 2) { $s = 23; continue; }
105582  		/* */ $s = 24; continue;
105583  		/* if (_selection[0] === 0) { */ case 21:
105584  			$s = -1; return $ifaceNil;
105585  		/* } else if (_selection[0] === 1) { */ case 22:
105586  			_r$6 = ctx.Err(); /* */ $s = 25; case 25: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
105587  			$s = -1; return _r$6;
105588  		/* } else if (_selection[0] === 2) { */ case 23:
105589  			$s = -1; return cc.readerErr;
105590  		/* } */ case 24:
105591  		$s = -1; return $ifaceNil;
105592  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2ClientConn.ptr.prototype.ping }; } $f._entry = _entry; $f._key = _key; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._selection = _selection; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.c = c; $f.cc = cc; $f.ctx = ctx; $f.err = err; $f.err$1 = err$1; $f.err$2 = err$2; $f.found = found; $f.p = p; $f.$s = $s; $f.$r = $r; return $f;
105593  	};
105594  	http2ClientConn.prototype.ping = function(ctx) { return this.$val.ping(ctx); };
105595  	http2clientConnReadLoop.ptr.prototype.processPing = function(f) {
105596  		var _entry, _r$1, _r$2, _tuple, c, cc, cc$1, err, f, ok, rl, $s, $deferred, $r;
105597  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _entry = $f._entry; _r$1 = $f._r$1; _r$2 = $f._r$2; _tuple = $f._tuple; c = $f.c; cc = $f.cc; cc$1 = $f.cc$1; err = $f.err; f = $f.f; ok = $f.ok; rl = $f.rl; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
105598  		rl = this;
105599  		/* */ if (f.IsAck()) { $s = 1; continue; }
105600  		/* */ $s = 2; continue;
105601  		/* if (f.IsAck()) { */ case 1:
105602  			cc = rl.cc;
105603  			$r = cc.mu.Lock(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
105604  			$deferred.push([$methodVal(cc.mu, "Unlock"), []]);
105605  			_tuple = (_entry = cc.pings[arrayType$4.keyFor(f.Data)], _entry !== undefined ? [_entry.v, true] : [$chanNil, false]);
105606  			c = _tuple[0];
105607  			ok = _tuple[1];
105608  			if (ok) {
105609  				$close(c);
105610  				delete cc.pings[arrayType$4.keyFor(f.Data)];
105611  			}
105612  			$s = -1; return $ifaceNil;
105613  		/* } */ case 2:
105614  		cc$1 = rl.cc;
105615  		$r = cc$1.wmu.Lock(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
105616  		$deferred.push([$methodVal(cc$1.wmu, "Unlock"), []]);
105617  		_r$1 = cc$1.fr.WritePing(true, $clone(f.Data, arrayType$4)); /* */ $s = 5; case 5: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
105618  		err = _r$1;
105619  		if (!($interfaceIsEqual(err, $ifaceNil))) {
105620  			$s = -1; return err;
105621  		}
105622  		_r$2 = cc$1.bw.Flush(); /* */ $s = 6; case 6: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
105623  		$s = -1; return _r$2;
105624  		/* */ } return; } } catch(err) { $err = err; $s = -1; return $ifaceNil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: http2clientConnReadLoop.ptr.prototype.processPing }; } $f._entry = _entry; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._tuple = _tuple; $f.c = c; $f.cc = cc; $f.cc$1 = cc$1; $f.err = err; $f.f = f; $f.ok = ok; $f.rl = rl; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
105625  	};
105626  	http2clientConnReadLoop.prototype.processPing = function(f) { return this.$val.processPing(f); };
105627  	http2clientConnReadLoop.ptr.prototype.processPushPromise = function(f) {
105628  		var f, rl;
105629  		rl = this;
105630  		return new http2ConnectionError(1);
105631  	};
105632  	http2clientConnReadLoop.prototype.processPushPromise = function(f) { return this.$val.processPushPromise(f); };
105633  	http2ClientConn.ptr.prototype.writeStreamReset = function(streamID, code, err) {
105634  		var _r$1, _r$2, cc, code, err, streamID, $s, $r;
105635  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; _r$2 = $f._r$2; cc = $f.cc; code = $f.code; err = $f.err; streamID = $f.streamID; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
105636  		cc = this;
105637  		$r = cc.wmu.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
105638  		_r$1 = cc.fr.WriteRSTStream(streamID, code); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
105639  		_r$1;
105640  		_r$2 = cc.bw.Flush(); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
105641  		_r$2;
105642  		$r = cc.wmu.Unlock(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
105643  		$s = -1; return;
105644  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2ClientConn.ptr.prototype.writeStreamReset }; } $f._r$1 = _r$1; $f._r$2 = _r$2; $f.cc = cc; $f.code = code; $f.err = err; $f.streamID = streamID; $f.$s = $s; $f.$r = $r; return $f;
105645  	};
105646  	http2ClientConn.prototype.writeStreamReset = function(streamID, code, err) { return this.$val.writeStreamReset(streamID, code, err); };
105647  	http2ClientConn.ptr.prototype.logf = function(format, args) {
105648  		var args, cc, format, $s, $r;
105649  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; args = $f.args; cc = $f.cc; format = $f.format; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
105650  		cc = this;
105651  		$r = cc.t.logf(format, args); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
105652  		$s = -1; return;
105653  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2ClientConn.ptr.prototype.logf }; } $f.args = args; $f.cc = cc; $f.format = format; $f.$s = $s; $f.$r = $r; return $f;
105654  	};
105655  	http2ClientConn.prototype.logf = function(format, args) { return this.$val.logf(format, args); };
105656  	http2ClientConn.ptr.prototype.vlogf = function(format, args) {
105657  		var args, cc, format, $s, $r;
105658  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; args = $f.args; cc = $f.cc; format = $f.format; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
105659  		cc = this;
105660  		$r = cc.t.vlogf(format, args); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
105661  		$s = -1; return;
105662  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2ClientConn.ptr.prototype.vlogf }; } $f.args = args; $f.cc = cc; $f.format = format; $f.$s = $s; $f.$r = $r; return $f;
105663  	};
105664  	http2ClientConn.prototype.vlogf = function(format, args) { return this.$val.vlogf(format, args); };
105665  	http2Transport.ptr.prototype.vlogf = function(format, args) {
105666  		var args, format, t, $s, $r;
105667  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; args = $f.args; format = $f.format; t = $f.t; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
105668  		t = this;
105669  		/* */ if (http2VerboseLogs) { $s = 1; continue; }
105670  		/* */ $s = 2; continue;
105671  		/* if (http2VerboseLogs) { */ case 1:
105672  			$r = t.logf(format, args); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
105673  		/* } */ case 2:
105674  		$s = -1; return;
105675  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2Transport.ptr.prototype.vlogf }; } $f.args = args; $f.format = format; $f.t = t; $f.$s = $s; $f.$r = $r; return $f;
105676  	};
105677  	http2Transport.prototype.vlogf = function(format, args) { return this.$val.vlogf(format, args); };
105678  	http2Transport.ptr.prototype.logf = function(format, args) {
105679  		var args, format, t, $s, $r;
105680  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; args = $f.args; format = $f.format; t = $f.t; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
105681  		t = this;
105682  		$r = log.Printf(format, args); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
105683  		$s = -1; return;
105684  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2Transport.ptr.prototype.logf }; } $f.args = args; $f.format = format; $f.t = t; $f.$s = $s; $f.$r = $r; return $f;
105685  	};
105686  	http2Transport.prototype.logf = function(format, args) { return this.$val.logf(format, args); };
105687  	http2strSliceContains = function(ss, s) {
105688  		var _i, _ref, s, ss, v;
105689  		_ref = ss;
105690  		_i = 0;
105691  		while (true) {
105692  			if (!(_i < _ref.$length)) { break; }
105693  			v = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
105694  			if (v === s) {
105695  				return true;
105696  			}
105697  			_i++;
105698  		}
105699  		return false;
105700  	};
105701  	http2erringRoundTripper.ptr.prototype.RoundTrip = function(param) {
105702  		var param, rt;
105703  		rt = this;
105704  		return [ptrType$17.nil, rt.err];
105705  	};
105706  	http2erringRoundTripper.prototype.RoundTrip = function(param) { return this.$val.RoundTrip(param); };
105707  	http2gzipReader.ptr.prototype.Read = function(p) {
105708  		var _r$1, _r$2, _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, _tuple$1, err, gz, n, p, $s, $r;
105709  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; _r$2 = $f._r$2; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; err = $f.err; gz = $f.gz; n = $f.n; p = $f.p; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
105710  		n = 0;
105711  		err = $ifaceNil;
105712  		gz = this;
105713  		if (!($interfaceIsEqual(gz.zerr, $ifaceNil))) {
105714  			_tmp = 0;
105715  			_tmp$1 = gz.zerr;
105716  			n = _tmp;
105717  			err = _tmp$1;
105718  			$s = -1; return [n, err];
105719  		}
105720  		/* */ if (gz.zr === ptrType$75.nil) { $s = 1; continue; }
105721  		/* */ $s = 2; continue;
105722  		/* if (gz.zr === ptrType$75.nil) { */ case 1:
105723  			_r$1 = gzip.NewReader(gz.body); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
105724  			_tuple = _r$1;
105725  			gz.zr = _tuple[0];
105726  			err = _tuple[1];
105727  			if (!($interfaceIsEqual(err, $ifaceNil))) {
105728  				gz.zerr = err;
105729  				_tmp$2 = 0;
105730  				_tmp$3 = err;
105731  				n = _tmp$2;
105732  				err = _tmp$3;
105733  				$s = -1; return [n, err];
105734  			}
105735  		/* } */ case 2:
105736  		_r$2 = gz.zr.Read(p); /* */ $s = 4; case 4: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
105737  		_tuple$1 = _r$2;
105738  		n = _tuple$1[0];
105739  		err = _tuple$1[1];
105740  		$s = -1; return [n, err];
105741  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2gzipReader.ptr.prototype.Read }; } $f._r$1 = _r$1; $f._r$2 = _r$2; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.err = err; $f.gz = gz; $f.n = n; $f.p = p; $f.$s = $s; $f.$r = $r; return $f;
105742  	};
105743  	http2gzipReader.prototype.Read = function(p) { return this.$val.Read(p); };
105744  	http2gzipReader.ptr.prototype.Close = function() {
105745  		var _r$1, gz, $s, $r;
105746  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; gz = $f.gz; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
105747  		gz = this;
105748  		_r$1 = gz.body.Close(); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
105749  		$s = -1; return _r$1;
105750  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2gzipReader.ptr.prototype.Close }; } $f._r$1 = _r$1; $f.gz = gz; $f.$s = $s; $f.$r = $r; return $f;
105751  	};
105752  	http2gzipReader.prototype.Close = function() { return this.$val.Close(); };
105753  	http2Transport.ptr.prototype.getBodyWriterState = function(cs, body$1) {
105754  		var _entry, body$1, cs, resc, s, t, x$4;
105755  		s = new http2bodyWriterState.ptr(ptrType$74.nil, ptrType$56.nil, ptrType$76.nil, $throwNilPointerError, $chanNil, new time.Duration(0, 0));
105756  		t = this;
105757  		s.cs = cs;
105758  		if ($interfaceIsEqual(body$1, $ifaceNil)) {
105759  			return s;
105760  		}
105761  		resc = new $Chan($error, 1);
105762  		s.resc = resc;
105763  		s.fn = (function $b() {
105764  			var _r$1, $s, $r;
105765  			/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
105766  			$r = cs.cc.mu.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
105767  			cs.startedWrite = true;
105768  			$r = cs.cc.mu.Unlock(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
105769  			_r$1 = cs.writeRequestBody(body$1, cs.req.Body); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
105770  			$r = $send(resc, _r$1); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
105771  			$s = -1; return;
105772  			/* */ } return; } if ($f === undefined) { $f = { $blk: $b }; } $f._r$1 = _r$1; $f.$s = $s; $f.$r = $r; return $f;
105773  		});
105774  		s.delay = t.expectContinueTimeout();
105775  		if ((x$4 = s.delay, (x$4.$high === 0 && x$4.$low === 0)) || !httplex.HeaderValuesContainsToken((_entry = cs.req.Header[$String.keyFor("Expect")], _entry !== undefined ? _entry.v : sliceType$1.nil), "100-continue")) {
105776  			return s;
105777  		}
105778  		s.fnonce = new sync.Once.ptr(new sync.Mutex.ptr(0, 0), 0);
105779  		s.timer = time.AfterFunc(new time.Duration(7342547, 765657088), (function $b() {
105780  			var $s, $r;
105781  			/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
105782  			$r = s.fnonce.Do(s.fn); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
105783  			$s = -1; return;
105784  			/* */ } return; } if ($f === undefined) { $f = { $blk: $b }; } $f.$s = $s; $f.$r = $r; return $f;
105785  		}));
105786  		return s;
105787  	};
105788  	http2Transport.prototype.getBodyWriterState = function(cs, body$1) { return this.$val.getBodyWriterState(cs, body$1); };
105789  	http2bodyWriterState.ptr.prototype.cancel = function() {
105790  		var s;
105791  		s = this;
105792  		if (!(s.timer === ptrType$56.nil)) {
105793  			s.timer.Stop();
105794  		}
105795  	};
105796  	http2bodyWriterState.prototype.cancel = function() { return this.$val.cancel(); };
105797  	http2bodyWriterState.ptr.prototype.on100 = function() {
105798  		var s;
105799  		s = this;
105800  		if (s.timer === ptrType$56.nil) {
105801  			return;
105802  		}
105803  		s.timer.Stop();
105804  		$go((function $b() {
105805  			var $s, $r;
105806  			/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
105807  			$r = s.fnonce.Do(s.fn); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
105808  			$s = -1; return;
105809  			/* */ } return; } if ($f === undefined) { $f = { $blk: $b }; } $f.$s = $s; $f.$r = $r; return $f;
105810  		}), []);
105811  	};
105812  	http2bodyWriterState.prototype.on100 = function() { return this.$val.on100(); };
105813  	http2bodyWriterState.ptr.prototype.scheduleBodyWrite = function() {
105814  		var s, $s, $r;
105815  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
105816  		s = this;
105817  		/* */ if (s.timer === ptrType$56.nil) { $s = 1; continue; }
105818  		/* */ $s = 2; continue;
105819  		/* if (s.timer === ptrType$56.nil) { */ case 1:
105820  			$go(s.fn, []);
105821  			$s = -1; return;
105822  		/* } */ case 2:
105823  		$r = http2traceWait100Continue(s.cs.trace); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
105824  		if (s.timer.Stop()) {
105825  			s.timer.Reset(s.delay);
105826  		}
105827  		$s = -1; return;
105828  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2bodyWriterState.ptr.prototype.scheduleBodyWrite }; } $f.s = s; $f.$s = $s; $f.$r = $r; return $f;
105829  	};
105830  	http2bodyWriterState.prototype.scheduleBodyWrite = function() { return this.$val.scheduleBodyWrite(); };
105831  	http2isConnectionCloseRequest = function(req) {
105832  		var _entry, req;
105833  		return req.Close || httplex.HeaderValuesContainsToken((_entry = req.Header[$String.keyFor("Connection")], _entry !== undefined ? _entry.v : sliceType$1.nil), "close");
105834  	};
105835  	http2writeEndsStream = function(w) {
105836  		var _ref, v, v$1, v$2, w;
105837  		_ref = w;
105838  		if ($assertType(_ref, ptrType$62, true)[1]) {
105839  			v = _ref.$val;
105840  			return v.endStream;
105841  		} else if ($assertType(_ref, ptrType$63, true)[1]) {
105842  			v$1 = _ref.$val;
105843  			return v$1.endStream;
105844  		} else if (_ref === $ifaceNil) {
105845  			v$2 = _ref;
105846  			$panic(new $String("writeEndsStream called on nil writeFramer"));
105847  		}
105848  		return false;
105849  	};
105850  	http2flushFrameWriter.ptr.prototype.writeFrame = function(ctx) {
105851  		var _r$1, ctx, $s, $r;
105852  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; ctx = $f.ctx; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
105853  		_r$1 = ctx.Flush(); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
105854  		$s = -1; return _r$1;
105855  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2flushFrameWriter.ptr.prototype.writeFrame }; } $f._r$1 = _r$1; $f.ctx = ctx; $f.$s = $s; $f.$r = $r; return $f;
105856  	};
105857  	http2flushFrameWriter.prototype.writeFrame = function(ctx) { return this.$val.writeFrame(ctx); };
105858  	http2flushFrameWriter.ptr.prototype.staysWithinBuffer = function(max) {
105859  		var max;
105860  		return false;
105861  	};
105862  	http2flushFrameWriter.prototype.staysWithinBuffer = function(max) { return this.$val.staysWithinBuffer(max); };
105863  	http2writeSettings.prototype.staysWithinBuffer = function(max) {
105864  		var max, s;
105865  		s = this;
105866  		return (9 + ($imul(6, s.$length)) >> 0) <= max;
105867  	};
105868  	$ptrType(http2writeSettings).prototype.staysWithinBuffer = function(max) { return this.$get().staysWithinBuffer(max); };
105869  	http2writeSettings.prototype.writeFrame = function(ctx) {
105870  		var _r$1, _r$2, ctx, s, $s, $r;
105871  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; _r$2 = $f._r$2; ctx = $f.ctx; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
105872  		s = this;
105873  		_r$1 = ctx.Framer(); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
105874  		_r$2 = _r$1.WriteSettings(($subslice(new sliceType$19(s.$array), s.$offset, s.$offset + s.$length))); /* */ $s = 2; case 2: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
105875  		$s = -1; return _r$2;
105876  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2writeSettings.prototype.writeFrame }; } $f._r$1 = _r$1; $f._r$2 = _r$2; $f.ctx = ctx; $f.s = s; $f.$s = $s; $f.$r = $r; return $f;
105877  	};
105878  	$ptrType(http2writeSettings).prototype.writeFrame = function(ctx) { return this.$get().writeFrame(ctx); };
105879  	http2writeGoAway.ptr.prototype.writeFrame = function(ctx) {
105880  		var _r$1, _r$2, _r$3, ctx, err, p, $s, $r;
105881  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; ctx = $f.ctx; err = $f.err; p = $f.p; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
105882  		p = this;
105883  		_r$1 = ctx.Framer(); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
105884  		_r$2 = _r$1.WriteGoAway(p.maxStreamID, p.code, sliceType$3.nil); /* */ $s = 2; case 2: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
105885  		err = _r$2;
105886  		_r$3 = ctx.Flush(); /* */ $s = 3; case 3: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
105887  		_r$3;
105888  		$s = -1; return err;
105889  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2writeGoAway.ptr.prototype.writeFrame }; } $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f.ctx = ctx; $f.err = err; $f.p = p; $f.$s = $s; $f.$r = $r; return $f;
105890  	};
105891  	http2writeGoAway.prototype.writeFrame = function(ctx) { return this.$val.writeFrame(ctx); };
105892  	http2writeGoAway.ptr.prototype.staysWithinBuffer = function(max) {
105893  		var max;
105894  		return false;
105895  	};
105896  	http2writeGoAway.prototype.staysWithinBuffer = function(max) { return this.$val.staysWithinBuffer(max); };
105897  	http2writeData.ptr.prototype.String = function() {
105898  		var _r$1, w, $s, $r;
105899  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; w = $f.w; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
105900  		w = this;
105901  		_r$1 = fmt.Sprintf("writeData(stream=%d, p=%d, endStream=%v)", new sliceType([new $Uint32(w.streamID), new $Int(w.p.$length), new $Bool(w.endStream)])); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
105902  		$s = -1; return _r$1;
105903  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2writeData.ptr.prototype.String }; } $f._r$1 = _r$1; $f.w = w; $f.$s = $s; $f.$r = $r; return $f;
105904  	};
105905  	http2writeData.prototype.String = function() { return this.$val.String(); };
105906  	http2writeData.ptr.prototype.writeFrame = function(ctx) {
105907  		var _r$1, _r$2, ctx, w, $s, $r;
105908  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; _r$2 = $f._r$2; ctx = $f.ctx; w = $f.w; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
105909  		w = this;
105910  		_r$1 = ctx.Framer(); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
105911  		_r$2 = _r$1.WriteData(w.streamID, w.endStream, w.p); /* */ $s = 2; case 2: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
105912  		$s = -1; return _r$2;
105913  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2writeData.ptr.prototype.writeFrame }; } $f._r$1 = _r$1; $f._r$2 = _r$2; $f.ctx = ctx; $f.w = w; $f.$s = $s; $f.$r = $r; return $f;
105914  	};
105915  	http2writeData.prototype.writeFrame = function(ctx) { return this.$val.writeFrame(ctx); };
105916  	http2writeData.ptr.prototype.staysWithinBuffer = function(max) {
105917  		var max, w;
105918  		w = this;
105919  		return (9 + w.p.$length >> 0) <= max;
105920  	};
105921  	http2writeData.prototype.staysWithinBuffer = function(max) { return this.$val.staysWithinBuffer(max); };
105922  	http2handlerPanicRST.ptr.prototype.writeFrame = function(ctx) {
105923  		var _r$1, _r$2, ctx, hp, $s, $r;
105924  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; _r$2 = $f._r$2; ctx = $f.ctx; hp = $f.hp; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
105925  		hp = this;
105926  		_r$1 = ctx.Framer(); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
105927  		_r$2 = _r$1.WriteRSTStream(hp.StreamID, 2); /* */ $s = 2; case 2: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
105928  		$s = -1; return _r$2;
105929  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2handlerPanicRST.ptr.prototype.writeFrame }; } $f._r$1 = _r$1; $f._r$2 = _r$2; $f.ctx = ctx; $f.hp = hp; $f.$s = $s; $f.$r = $r; return $f;
105930  	};
105931  	http2handlerPanicRST.prototype.writeFrame = function(ctx) { return this.$val.writeFrame(ctx); };
105932  	http2handlerPanicRST.ptr.prototype.staysWithinBuffer = function(max) {
105933  		var hp, max;
105934  		hp = this;
105935  		return 13 <= max;
105936  	};
105937  	http2handlerPanicRST.prototype.staysWithinBuffer = function(max) { return this.$val.staysWithinBuffer(max); };
105938  	http2StreamError.ptr.prototype.writeFrame = function(ctx) {
105939  		var _r$1, _r$2, ctx, se, $s, $r;
105940  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; _r$2 = $f._r$2; ctx = $f.ctx; se = $f.se; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
105941  		se = this;
105942  		_r$1 = ctx.Framer(); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
105943  		_r$2 = _r$1.WriteRSTStream(se.StreamID, se.Code); /* */ $s = 2; case 2: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
105944  		$s = -1; return _r$2;
105945  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2StreamError.ptr.prototype.writeFrame }; } $f._r$1 = _r$1; $f._r$2 = _r$2; $f.ctx = ctx; $f.se = se; $f.$s = $s; $f.$r = $r; return $f;
105946  	};
105947  	http2StreamError.prototype.writeFrame = function(ctx) { return this.$val.writeFrame(ctx); };
105948  	http2StreamError.ptr.prototype.staysWithinBuffer = function(max) {
105949  		var max, se;
105950  		se = this;
105951  		return 13 <= max;
105952  	};
105953  	http2StreamError.prototype.staysWithinBuffer = function(max) { return this.$val.staysWithinBuffer(max); };
105954  	http2writePingAck.ptr.prototype.writeFrame = function(ctx) {
105955  		var _r$1, _r$2, ctx, w, $s, $r;
105956  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; _r$2 = $f._r$2; ctx = $f.ctx; w = $f.w; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
105957  		w = this;
105958  		_r$1 = ctx.Framer(); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
105959  		_r$2 = _r$1.WritePing(true, $clone(w.pf.Data, arrayType$4)); /* */ $s = 2; case 2: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
105960  		$s = -1; return _r$2;
105961  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2writePingAck.ptr.prototype.writeFrame }; } $f._r$1 = _r$1; $f._r$2 = _r$2; $f.ctx = ctx; $f.w = w; $f.$s = $s; $f.$r = $r; return $f;
105962  	};
105963  	http2writePingAck.prototype.writeFrame = function(ctx) { return this.$val.writeFrame(ctx); };
105964  	http2writePingAck.ptr.prototype.staysWithinBuffer = function(max) {
105965  		var max, w;
105966  		w = this;
105967  		return 17 <= max;
105968  	};
105969  	http2writePingAck.prototype.staysWithinBuffer = function(max) { return this.$val.staysWithinBuffer(max); };
105970  	http2writeSettingsAck.ptr.prototype.writeFrame = function(ctx) {
105971  		var _r$1, _r$2, ctx, $s, $r;
105972  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; _r$2 = $f._r$2; ctx = $f.ctx; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
105973  		_r$1 = ctx.Framer(); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
105974  		_r$2 = _r$1.WriteSettingsAck(); /* */ $s = 2; case 2: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
105975  		$s = -1; return _r$2;
105976  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2writeSettingsAck.ptr.prototype.writeFrame }; } $f._r$1 = _r$1; $f._r$2 = _r$2; $f.ctx = ctx; $f.$s = $s; $f.$r = $r; return $f;
105977  	};
105978  	http2writeSettingsAck.prototype.writeFrame = function(ctx) { return this.$val.writeFrame(ctx); };
105979  	http2writeSettingsAck.ptr.prototype.staysWithinBuffer = function(max) {
105980  		var max;
105981  		return 9 <= max;
105982  	};
105983  	http2writeSettingsAck.prototype.staysWithinBuffer = function(max) { return this.$val.staysWithinBuffer(max); };
105984  	http2splitHeaderBlock = function(ctx, headerBlock, fn) {
105985  		var _r$1, ctx, err, first, fn, frag, headerBlock, $s, $r;
105986  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; ctx = $f.ctx; err = $f.err; first = $f.first; fn = $f.fn; frag = $f.frag; headerBlock = $f.headerBlock; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
105987  		first = true;
105988  		/* while (true) { */ case 1:
105989  			/* if (!(headerBlock.$length > 0)) { break; } */ if(!(headerBlock.$length > 0)) { $s = 2; continue; }
105990  			frag = headerBlock;
105991  			if (frag.$length > 16384) {
105992  				frag = $subslice(frag, 0, 16384);
105993  			}
105994  			headerBlock = $subslice(headerBlock, frag.$length);
105995  			_r$1 = fn(ctx, frag, first, headerBlock.$length === 0); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
105996  			err = _r$1;
105997  			if (!($interfaceIsEqual(err, $ifaceNil))) {
105998  				$s = -1; return err;
105999  			}
106000  			first = false;
106001  		/* } */ $s = 1; continue; case 2:
106002  		$s = -1; return $ifaceNil;
106003  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2splitHeaderBlock }; } $f._r$1 = _r$1; $f.ctx = ctx; $f.err = err; $f.first = first; $f.fn = fn; $f.frag = frag; $f.headerBlock = headerBlock; $f.$s = $s; $f.$r = $r; return $f;
106004  	};
106005  	http2encKV = function(enc, k, v) {
106006  		var _r$1, enc, k, v, $s, $r;
106007  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; enc = $f.enc; k = $f.k; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
106008  		/* */ if (http2VerboseLogs) { $s = 1; continue; }
106009  		/* */ $s = 2; continue;
106010  		/* if (http2VerboseLogs) { */ case 1:
106011  			$r = log.Printf("http2: server encoding header %q = %q", new sliceType([new $String(k), new $String(v)])); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
106012  		/* } */ case 2:
106013  		_r$1 = enc.WriteField(new hpack.HeaderField.ptr(k, v, false)); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
106014  		_r$1;
106015  		$s = -1; return;
106016  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2encKV }; } $f._r$1 = _r$1; $f.enc = enc; $f.k = k; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
106017  	};
106018  	http2writeResHeaders.ptr.prototype.staysWithinBuffer = function(max) {
106019  		var max, w;
106020  		w = this;
106021  		return false;
106022  	};
106023  	http2writeResHeaders.prototype.staysWithinBuffer = function(max) { return this.$val.staysWithinBuffer(max); };
106024  	http2writeResHeaders.ptr.prototype.writeFrame = function(ctx) {
106025  		var _r$1, _r$2, _tuple, buf, ctx, enc, headerBlock, w, $s, $r;
106026  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; _r$2 = $f._r$2; _tuple = $f._tuple; buf = $f.buf; ctx = $f.ctx; enc = $f.enc; headerBlock = $f.headerBlock; w = $f.w; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
106027  		w = this;
106028  		_r$1 = ctx.HeaderEncoder(); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
106029  		_tuple = _r$1;
106030  		enc = _tuple[0];
106031  		buf = _tuple[1];
106032  		buf.Reset();
106033  		/* */ if (!((w.httpResCode === 0))) { $s = 2; continue; }
106034  		/* */ $s = 3; continue;
106035  		/* if (!((w.httpResCode === 0))) { */ case 2:
106036  			$r = http2encKV(enc, ":status", http2httpCodeString(w.httpResCode)); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
106037  		/* } */ case 3:
106038  		$r = http2encodeHeaders(enc, w.h, w.trailers); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
106039  		/* */ if (!(w.contentType === "")) { $s = 6; continue; }
106040  		/* */ $s = 7; continue;
106041  		/* if (!(w.contentType === "")) { */ case 6:
106042  			$r = http2encKV(enc, "content-type", w.contentType); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
106043  		/* } */ case 7:
106044  		/* */ if (!(w.contentLength === "")) { $s = 9; continue; }
106045  		/* */ $s = 10; continue;
106046  		/* if (!(w.contentLength === "")) { */ case 9:
106047  			$r = http2encKV(enc, "content-length", w.contentLength); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
106048  		/* } */ case 10:
106049  		/* */ if (!(w.date === "")) { $s = 12; continue; }
106050  		/* */ $s = 13; continue;
106051  		/* if (!(w.date === "")) { */ case 12:
106052  			$r = http2encKV(enc, "date", w.date); /* */ $s = 14; case 14: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
106053  		/* } */ case 13:
106054  		headerBlock = buf.Bytes();
106055  		if ((headerBlock.$length === 0) && w.trailers === sliceType$1.nil) {
106056  			$panic(new $String("unexpected empty hpack"));
106057  		}
106058  		_r$2 = http2splitHeaderBlock(ctx, headerBlock, $methodVal(w, "writeHeaderBlock")); /* */ $s = 15; case 15: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
106059  		$s = -1; return _r$2;
106060  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2writeResHeaders.ptr.prototype.writeFrame }; } $f._r$1 = _r$1; $f._r$2 = _r$2; $f._tuple = _tuple; $f.buf = buf; $f.ctx = ctx; $f.enc = enc; $f.headerBlock = headerBlock; $f.w = w; $f.$s = $s; $f.$r = $r; return $f;
106061  	};
106062  	http2writeResHeaders.prototype.writeFrame = function(ctx) { return this.$val.writeFrame(ctx); };
106063  	http2writeResHeaders.ptr.prototype.writeHeaderBlock = function(ctx, frag, firstFrag, lastFrag) {
106064  		var _r$1, _r$2, _r$3, _r$4, ctx, firstFrag, frag, lastFrag, w, $s, $r;
106065  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; ctx = $f.ctx; firstFrag = $f.firstFrag; frag = $f.frag; lastFrag = $f.lastFrag; w = $f.w; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
106066  		w = this;
106067  		/* */ if (firstFrag) { $s = 1; continue; }
106068  		/* */ $s = 2; continue;
106069  		/* if (firstFrag) { */ case 1:
106070  			_r$1 = ctx.Framer(); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
106071  			_r$2 = _r$1.WriteHeaders(new http2HeadersFrameParam.ptr(w.streamID, frag, w.endStream, lastFrag, 0, new http2PriorityParam.ptr(0, false, 0))); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
106072  			$s = -1; return _r$2;
106073  		/* } else { */ case 2:
106074  			_r$3 = ctx.Framer(); /* */ $s = 6; case 6: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
106075  			_r$4 = _r$3.WriteContinuation(w.streamID, lastFrag, frag); /* */ $s = 7; case 7: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
106076  			$s = -1; return _r$4;
106077  		/* } */ case 3:
106078  		$s = -1; return $ifaceNil;
106079  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2writeResHeaders.ptr.prototype.writeHeaderBlock }; } $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f.ctx = ctx; $f.firstFrag = firstFrag; $f.frag = frag; $f.lastFrag = lastFrag; $f.w = w; $f.$s = $s; $f.$r = $r; return $f;
106080  	};
106081  	http2writeResHeaders.prototype.writeHeaderBlock = function(ctx, frag, firstFrag, lastFrag) { return this.$val.writeHeaderBlock(ctx, frag, firstFrag, lastFrag); };
106082  	http2writePushPromise.ptr.prototype.staysWithinBuffer = function(max) {
106083  		var max, w;
106084  		w = this;
106085  		return false;
106086  	};
106087  	http2writePushPromise.prototype.staysWithinBuffer = function(max) { return this.$val.staysWithinBuffer(max); };
106088  	http2writePushPromise.ptr.prototype.writeFrame = function(ctx) {
106089  		var _r$1, _r$2, _tuple, buf, ctx, enc, headerBlock, w, $s, $r;
106090  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; _r$2 = $f._r$2; _tuple = $f._tuple; buf = $f.buf; ctx = $f.ctx; enc = $f.enc; headerBlock = $f.headerBlock; w = $f.w; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
106091  		w = this;
106092  		_r$1 = ctx.HeaderEncoder(); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
106093  		_tuple = _r$1;
106094  		enc = _tuple[0];
106095  		buf = _tuple[1];
106096  		buf.Reset();
106097  		$r = http2encKV(enc, ":method", w.method); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
106098  		$r = http2encKV(enc, ":scheme", w.url.Scheme); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
106099  		$r = http2encKV(enc, ":authority", w.url.Host); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
106100  		$r = http2encKV(enc, ":path", w.url.RequestURI()); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
106101  		$r = http2encodeHeaders(enc, w.h, sliceType$1.nil); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
106102  		headerBlock = buf.Bytes();
106103  		if (headerBlock.$length === 0) {
106104  			$panic(new $String("unexpected empty hpack"));
106105  		}
106106  		_r$2 = http2splitHeaderBlock(ctx, headerBlock, $methodVal(w, "writeHeaderBlock")); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
106107  		$s = -1; return _r$2;
106108  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2writePushPromise.ptr.prototype.writeFrame }; } $f._r$1 = _r$1; $f._r$2 = _r$2; $f._tuple = _tuple; $f.buf = buf; $f.ctx = ctx; $f.enc = enc; $f.headerBlock = headerBlock; $f.w = w; $f.$s = $s; $f.$r = $r; return $f;
106109  	};
106110  	http2writePushPromise.prototype.writeFrame = function(ctx) { return this.$val.writeFrame(ctx); };
106111  	http2writePushPromise.ptr.prototype.writeHeaderBlock = function(ctx, frag, firstFrag, lastFrag) {
106112  		var _r$1, _r$2, _r$3, _r$4, ctx, firstFrag, frag, lastFrag, w, $s, $r;
106113  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; ctx = $f.ctx; firstFrag = $f.firstFrag; frag = $f.frag; lastFrag = $f.lastFrag; w = $f.w; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
106114  		w = this;
106115  		/* */ if (firstFrag) { $s = 1; continue; }
106116  		/* */ $s = 2; continue;
106117  		/* if (firstFrag) { */ case 1:
106118  			_r$1 = ctx.Framer(); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
106119  			_r$2 = _r$1.WritePushPromise(new http2PushPromiseParam.ptr(w.streamID, w.promisedID, frag, lastFrag, 0)); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
106120  			$s = -1; return _r$2;
106121  		/* } else { */ case 2:
106122  			_r$3 = ctx.Framer(); /* */ $s = 6; case 6: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
106123  			_r$4 = _r$3.WriteContinuation(w.streamID, lastFrag, frag); /* */ $s = 7; case 7: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
106124  			$s = -1; return _r$4;
106125  		/* } */ case 3:
106126  		$s = -1; return $ifaceNil;
106127  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2writePushPromise.ptr.prototype.writeHeaderBlock }; } $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f.ctx = ctx; $f.firstFrag = firstFrag; $f.frag = frag; $f.lastFrag = lastFrag; $f.w = w; $f.$s = $s; $f.$r = $r; return $f;
106128  	};
106129  	http2writePushPromise.prototype.writeHeaderBlock = function(ctx, frag, firstFrag, lastFrag) { return this.$val.writeHeaderBlock(ctx, frag, firstFrag, lastFrag); };
106130  	http2write100ContinueHeadersFrame.ptr.prototype.writeFrame = function(ctx) {
106131  		var _r$1, _r$2, _r$3, _tuple, buf, ctx, enc, w, $s, $r;
106132  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _tuple = $f._tuple; buf = $f.buf; ctx = $f.ctx; enc = $f.enc; w = $f.w; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
106133  		w = this;
106134  		_r$1 = ctx.HeaderEncoder(); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
106135  		_tuple = _r$1;
106136  		enc = _tuple[0];
106137  		buf = _tuple[1];
106138  		buf.Reset();
106139  		$r = http2encKV(enc, ":status", "100"); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
106140  		_r$2 = ctx.Framer(); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
106141  		_r$3 = _r$2.WriteHeaders(new http2HeadersFrameParam.ptr(w.streamID, buf.Bytes(), false, true, 0, new http2PriorityParam.ptr(0, false, 0))); /* */ $s = 4; case 4: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
106142  		$s = -1; return _r$3;
106143  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2write100ContinueHeadersFrame.ptr.prototype.writeFrame }; } $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._tuple = _tuple; $f.buf = buf; $f.ctx = ctx; $f.enc = enc; $f.w = w; $f.$s = $s; $f.$r = $r; return $f;
106144  	};
106145  	http2write100ContinueHeadersFrame.prototype.writeFrame = function(ctx) { return this.$val.writeFrame(ctx); };
106146  	http2write100ContinueHeadersFrame.ptr.prototype.staysWithinBuffer = function(max) {
106147  		var max, w;
106148  		w = this;
106149  		return 29 <= max;
106150  	};
106151  	http2write100ContinueHeadersFrame.prototype.staysWithinBuffer = function(max) { return this.$val.staysWithinBuffer(max); };
106152  	http2writeWindowUpdate.ptr.prototype.staysWithinBuffer = function(max) {
106153  		var max, wu;
106154  		wu = this;
106155  		return 13 <= max;
106156  	};
106157  	http2writeWindowUpdate.prototype.staysWithinBuffer = function(max) { return this.$val.staysWithinBuffer(max); };
106158  	http2writeWindowUpdate.ptr.prototype.writeFrame = function(ctx) {
106159  		var _r$1, _r$2, ctx, wu, $s, $r;
106160  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; _r$2 = $f._r$2; ctx = $f.ctx; wu = $f.wu; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
106161  		wu = this;
106162  		_r$1 = ctx.Framer(); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
106163  		_r$2 = _r$1.WriteWindowUpdate(wu.streamID, wu.n); /* */ $s = 2; case 2: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
106164  		$s = -1; return _r$2;
106165  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2writeWindowUpdate.ptr.prototype.writeFrame }; } $f._r$1 = _r$1; $f._r$2 = _r$2; $f.ctx = ctx; $f.wu = wu; $f.$s = $s; $f.$r = $r; return $f;
106166  	};
106167  	http2writeWindowUpdate.prototype.writeFrame = function(ctx) { return this.$val.writeFrame(ctx); };
106168  	http2encodeHeaders = function(enc, h, keys) {
106169  		var _entry, _i, _i$1, _r$1, _r$2, _r$3, _ref, _ref$1, enc, h, isTE, k, keys, sorter, v, vv, $s, $deferred, $r;
106170  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _entry = $f._entry; _i = $f._i; _i$1 = $f._i$1; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _ref = $f._ref; _ref$1 = $f._ref$1; enc = $f.enc; h = $f.h; isTE = $f.isTE; k = $f.k; keys = $f.keys; sorter = $f.sorter; v = $f.v; vv = $f.vv; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
106171  		/* */ if (keys === sliceType$1.nil) { $s = 1; continue; }
106172  		/* */ $s = 2; continue;
106173  		/* if (keys === sliceType$1.nil) { */ case 1:
106174  			_r$1 = http2sorterPool.Get(); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
106175  			sorter = $assertType(_r$1, ptrType$70);
106176  			$deferred.push([$methodVal(http2sorterPool, "Put"), [sorter]]);
106177  			_r$2 = sorter.Keys(h); /* */ $s = 4; case 4: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
106178  			keys = _r$2;
106179  		/* } */ case 2:
106180  		_ref = keys;
106181  		_i = 0;
106182  		/* while (true) { */ case 5:
106183  			/* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 6; continue; }
106184  			k = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
106185  			vv = (_entry = h[$String.keyFor(k)], _entry !== undefined ? _entry.v : sliceType$1.nil);
106186  			_r$3 = http2lowerHeader(k); /* */ $s = 7; case 7: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
106187  			k = _r$3;
106188  			/* */ if (!http2validWireHeaderFieldName(k)) { $s = 8; continue; }
106189  			/* */ $s = 9; continue;
106190  			/* if (!http2validWireHeaderFieldName(k)) { */ case 8:
106191  				_i++;
106192  				/* continue; */ $s = 5; continue;
106193  			/* } */ case 9:
106194  			isTE = k === "transfer-encoding";
106195  			_ref$1 = vv;
106196  			_i$1 = 0;
106197  			/* while (true) { */ case 10:
106198  				/* if (!(_i$1 < _ref$1.$length)) { break; } */ if(!(_i$1 < _ref$1.$length)) { $s = 11; continue; }
106199  				v = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]);
106200  				/* */ if (!httplex.ValidHeaderFieldValue(v)) { $s = 12; continue; }
106201  				/* */ $s = 13; continue;
106202  				/* if (!httplex.ValidHeaderFieldValue(v)) { */ case 12:
106203  					_i$1++;
106204  					/* continue; */ $s = 10; continue;
106205  				/* } */ case 13:
106206  				/* */ if (isTE && !(v === "trailers")) { $s = 14; continue; }
106207  				/* */ $s = 15; continue;
106208  				/* if (isTE && !(v === "trailers")) { */ case 14:
106209  					_i$1++;
106210  					/* continue; */ $s = 10; continue;
106211  				/* } */ case 15:
106212  				$r = http2encKV(enc, k, v); /* */ $s = 16; case 16: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
106213  				_i$1++;
106214  			/* } */ $s = 10; continue; case 11:
106215  			_i++;
106216  		/* } */ $s = 5; continue; case 6:
106217  		$s = -1; return;
106218  		/* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: http2encodeHeaders }; } $f._entry = _entry; $f._i = _i; $f._i$1 = _i$1; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._ref = _ref; $f._ref$1 = _ref$1; $f.enc = enc; $f.h = h; $f.isTE = isTE; $f.k = k; $f.keys = keys; $f.sorter = sorter; $f.v = v; $f.vv = vv; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
106219  	};
106220  	http2FrameWriteRequest.ptr.prototype.StreamID = function() {
106221  		var _tuple, ok, se, wr;
106222  		wr = this;
106223  		if (wr.stream === ptrType$6.nil) {
106224  			_tuple = $assertType(wr.write, http2StreamError, true);
106225  			se = $clone(_tuple[0], http2StreamError);
106226  			ok = _tuple[1];
106227  			if (ok) {
106228  				return se.StreamID;
106229  			}
106230  			return 0;
106231  		}
106232  		return wr.stream.id;
106233  	};
106234  	http2FrameWriteRequest.prototype.StreamID = function() { return this.$val.StreamID(); };
106235  	http2FrameWriteRequest.ptr.prototype.DataSize = function() {
106236  		var _tuple, ok, wd, wr;
106237  		wr = this;
106238  		_tuple = $assertType(wr.write, ptrType$62, true);
106239  		wd = _tuple[0];
106240  		ok = _tuple[1];
106241  		if (ok) {
106242  			return wd.p.$length;
106243  		}
106244  		return 0;
106245  	};
106246  	http2FrameWriteRequest.prototype.DataSize = function() { return this.$val.DataSize(); };
106247  	http2FrameWriteRequest.ptr.prototype.Consume = function(n) {
106248  		var _tuple, allowed, consumed, empty, n, ok, rest, wd, wr;
106249  		wr = this;
106250  		empty = new http2FrameWriteRequest.ptr($ifaceNil, ptrType$6.nil, $chanNil);
106251  		_tuple = $assertType(wr.write, ptrType$62, true);
106252  		wd = _tuple[0];
106253  		ok = _tuple[1];
106254  		if (!ok || (wd.p.$length === 0)) {
106255  			return [wr, empty, 1];
106256  		}
106257  		allowed = wr.stream.flow.available();
106258  		if (n < allowed) {
106259  			allowed = n;
106260  		}
106261  		if (wr.stream.sc.maxFrameSize < allowed) {
106262  			allowed = wr.stream.sc.maxFrameSize;
106263  		}
106264  		if (allowed <= 0) {
106265  			return [empty, empty, 0];
106266  		}
106267  		if (wd.p.$length > ((allowed >> 0))) {
106268  			wr.stream.flow.take(allowed);
106269  			consumed = new http2FrameWriteRequest.ptr(new http2writeData.ptr(wd.streamID, $subslice(wd.p, 0, allowed), false), wr.stream, $chanNil);
106270  			rest = new http2FrameWriteRequest.ptr(new http2writeData.ptr(wd.streamID, $subslice(wd.p, allowed), wd.endStream), wr.stream, wr.done);
106271  			return [consumed, rest, 2];
106272  		}
106273  		wr.stream.flow.take(((wd.p.$length >> 0)));
106274  		return [wr, empty, 1];
106275  	};
106276  	http2FrameWriteRequest.prototype.Consume = function(n) { return this.$val.Consume(n); };
106277  	http2FrameWriteRequest.ptr.prototype.String = function() {
106278  		var _r$1, _r$2, _r$3, _tuple, des, ok, s, wr, $s, $r;
106279  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _tuple = $f._tuple; des = $f.des; ok = $f.ok; s = $f.s; wr = $f.wr; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
106280  		wr = this;
106281  		des = "";
106282  		_tuple = $assertType(wr.write, fmt.Stringer, true);
106283  		s = _tuple[0];
106284  		ok = _tuple[1];
106285  		/* */ if (ok) { $s = 1; continue; }
106286  		/* */ $s = 2; continue;
106287  		/* if (ok) { */ case 1:
106288  			_r$1 = s.String(); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
106289  			des = _r$1;
106290  			$s = 3; continue;
106291  		/* } else { */ case 2:
106292  			_r$2 = fmt.Sprintf("%T", new sliceType([wr.write])); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
106293  			des = _r$2;
106294  		/* } */ case 3:
106295  		_r$3 = fmt.Sprintf("[FrameWriteRequest stream=%d, ch=%v, writer=%v]", new sliceType([new $Uint32($clone(wr, http2FrameWriteRequest).StreamID()), new $Bool(!(wr.done === $chanNil)), new $String(des)])); /* */ $s = 6; case 6: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
106296  		$s = -1; return _r$3;
106297  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2FrameWriteRequest.ptr.prototype.String }; } $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._tuple = _tuple; $f.des = des; $f.ok = ok; $f.s = s; $f.wr = wr; $f.$s = $s; $f.$r = $r; return $f;
106298  	};
106299  	http2FrameWriteRequest.prototype.String = function() { return this.$val.String(); };
106300  	http2FrameWriteRequest.ptr.prototype.replyToWriter = function(err) {
106301  		var _r$1, _selection, err, wr, $s, $r;
106302  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; _selection = $f._selection; err = $f.err; wr = $f.wr; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
106303  		wr = this;
106304  		if (wr.done === $chanNil) {
106305  			$s = -1; return;
106306  		}
106307  		_selection = $select([[wr.done, err], []]);
106308  		/* */ if (_selection[0] === 0) { $s = 1; continue; }
106309  		/* */ if (_selection[0] === 1) { $s = 2; continue; }
106310  		/* */ $s = 3; continue;
106311  		/* if (_selection[0] === 0) { */ case 1:
106312  			$s = 3; continue;
106313  		/* } else if (_selection[0] === 1) { */ case 2:
106314  			_r$1 = fmt.Sprintf("unbuffered done channel passed in for type %T", new sliceType([wr.write])); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
106315  			$panic(new $String(_r$1));
106316  		/* } */ case 3:
106317  		wr.write = $ifaceNil;
106318  		$s = -1; return;
106319  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2FrameWriteRequest.ptr.prototype.replyToWriter }; } $f._r$1 = _r$1; $f._selection = _selection; $f.err = err; $f.wr = wr; $f.$s = $s; $f.$r = $r; return $f;
106320  	};
106321  	http2FrameWriteRequest.prototype.replyToWriter = function(err) { return this.$val.replyToWriter(err); };
106322  	http2writeQueue.ptr.prototype.empty = function() {
106323  		var q;
106324  		q = this;
106325  		return q.s.$length === 0;
106326  	};
106327  	http2writeQueue.prototype.empty = function() { return this.$val.empty(); };
106328  	http2writeQueue.ptr.prototype.push = function(wr) {
106329  		var q, wr;
106330  		q = this;
106331  		q.s = $append(q.s, wr);
106332  	};
106333  	http2writeQueue.prototype.push = function(wr) { return this.$val.push(wr); };
106334  	http2writeQueue.ptr.prototype.shift = function() {
106335  		var q, wr, x$4, x$5, x$6;
106336  		q = this;
106337  		if (q.s.$length === 0) {
106338  			$panic(new $String("invalid use of queue"));
106339  		}
106340  		wr = $clone((x$4 = q.s, (0 >= x$4.$length ? ($throwRuntimeError("index out of range"), undefined) : x$4.$array[x$4.$offset + 0])), http2FrameWriteRequest);
106341  		$copySlice(q.s, $subslice(q.s, 1));
106342  		http2FrameWriteRequest.copy((x$5 = q.s, x$6 = q.s.$length - 1 >> 0, ((x$6 < 0 || x$6 >= x$5.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$5.$array[x$5.$offset + x$6])), new http2FrameWriteRequest.ptr($ifaceNil, ptrType$6.nil, $chanNil));
106343  		q.s = $subslice(q.s, 0, (q.s.$length - 1 >> 0));
106344  		return wr;
106345  	};
106346  	http2writeQueue.prototype.shift = function() { return this.$val.shift(); };
106347  	http2writeQueue.ptr.prototype.consume = function(n) {
106348  		var _1, _tuple, consumed, n, numresult, q, rest, x$4, x$5;
106349  		q = this;
106350  		if (q.s.$length === 0) {
106351  			return [new http2FrameWriteRequest.ptr($ifaceNil, ptrType$6.nil, $chanNil), false];
106352  		}
106353  		_tuple = $clone((x$4 = q.s, (0 >= x$4.$length ? ($throwRuntimeError("index out of range"), undefined) : x$4.$array[x$4.$offset + 0])), http2FrameWriteRequest).Consume(n);
106354  		consumed = $clone(_tuple[0], http2FrameWriteRequest);
106355  		rest = $clone(_tuple[1], http2FrameWriteRequest);
106356  		numresult = _tuple[2];
106357  		_1 = numresult;
106358  		if (_1 === (0)) {
106359  			return [new http2FrameWriteRequest.ptr($ifaceNil, ptrType$6.nil, $chanNil), false];
106360  		} else if (_1 === (1)) {
106361  			q.shift();
106362  		} else if (_1 === (2)) {
106363  			http2FrameWriteRequest.copy((x$5 = q.s, (0 >= x$5.$length ? ($throwRuntimeError("index out of range"), undefined) : x$5.$array[x$5.$offset + 0])), rest);
106364  		}
106365  		return [consumed, true];
106366  	};
106367  	http2writeQueue.prototype.consume = function(n) { return this.$val.consume(n); };
106368  	$ptrType(http2writeQueuePool).prototype.put = function(q) {
106369  		var _i, _ref, i, p, q, x$4;
106370  		p = this;
106371  		_ref = q.s;
106372  		_i = 0;
106373  		while (true) {
106374  			if (!(_i < _ref.$length)) { break; }
106375  			i = _i;
106376  			http2FrameWriteRequest.copy((x$4 = q.s, ((i < 0 || i >= x$4.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$4.$array[x$4.$offset + i])), new http2FrameWriteRequest.ptr($ifaceNil, ptrType$6.nil, $chanNil));
106377  			_i++;
106378  		}
106379  		q.s = $subslice(q.s, 0, 0);
106380  		p.$set($append(p.$get(), q));
106381  	};
106382  	$ptrType(http2writeQueuePool).prototype.get = function() {
106383  		var ln, p, q, x$4, x$5, x$6;
106384  		p = this;
106385  		ln = p.$get().$length;
106386  		if (ln === 0) {
106387  			return new http2writeQueue.ptr(sliceType$20.nil);
106388  		}
106389  		x$4 = ln - 1 >> 0;
106390  		q = (x$5 = p.$get(), ((x$4 < 0 || x$4 >= x$5.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$5.$array[x$5.$offset + x$4]));
106391  		(x$6 = p.$get(), ((x$4 < 0 || x$4 >= x$6.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$6.$array[x$6.$offset + x$4] = ptrType$77.nil));
106392  		p.$set($subslice((p.$get()), 0, x$4));
106393  		return q;
106394  	};
106395  	http2NewPriorityWriteScheduler = function(cfg) {
106396  		var _key, cfg, ws;
106397  		if (cfg === ptrType$78.nil) {
106398  			cfg = new http2PriorityWriteSchedulerConfig.ptr(10, 10, false);
106399  		}
106400  		ws = new http2priorityWriteScheduler.ptr(new http2priorityNode.ptr(new http2writeQueue.ptr(sliceType$20.nil), 0, 0, 0, new $Int64(0, 0), new $Int64(0, 0), ptrType$79.nil, ptrType$79.nil, ptrType$79.nil, ptrType$79.nil), {}, 0, sliceType$21.nil, sliceType$21.nil, cfg.MaxClosedNodesInTree, cfg.MaxIdleNodesInTree, 0, cfg.ThrottleOutOfOrderWrites, sliceType$21.nil, http2writeQueuePool.nil);
106401  		_key = 0; (ws.nodes || $throwRuntimeError("assignment to entry in nil map"))[$Uint32.keyFor(_key)] = { k: _key, v: ws.root };
106402  		if (cfg.ThrottleOutOfOrderWrites) {
106403  			ws.writeThrottleLimit = 1024;
106404  		} else {
106405  			ws.writeThrottleLimit = 2147483647;
106406  		}
106407  		return ws;
106408  	};
106409  	http2priorityNode.ptr.prototype.setParent = function(parent) {
106410  		var n, parent, parent$1;
106411  		n = this;
106412  		if (n === parent) {
106413  			$panic(new $String("setParent to self"));
106414  		}
106415  		if (n.parent === parent) {
106416  			return;
106417  		}
106418  		parent$1 = n.parent;
106419  		if (!(parent$1 === ptrType$79.nil)) {
106420  			if (n.prev === ptrType$79.nil) {
106421  				parent$1.kids = n.next;
106422  			} else {
106423  				n.prev.next = n.next;
106424  			}
106425  			if (!(n.next === ptrType$79.nil)) {
106426  				n.next.prev = n.prev;
106427  			}
106428  		}
106429  		n.parent = parent;
106430  		if (parent === ptrType$79.nil) {
106431  			n.next = ptrType$79.nil;
106432  			n.prev = ptrType$79.nil;
106433  		} else {
106434  			n.next = parent.kids;
106435  			n.prev = ptrType$79.nil;
106436  			if (!(n.next === ptrType$79.nil)) {
106437  				n.next.prev = n;
106438  			}
106439  			parent.kids = n;
106440  		}
106441  	};
106442  	http2priorityNode.prototype.setParent = function(parent) { return this.$val.setParent(parent); };
106443  	http2priorityNode.ptr.prototype.addBytes = function(b) {
106444  		var b, n, x$4, x$5, x$6, x$7;
106445  		n = this;
106446  		n.bytes = (x$4 = n.bytes, x$5 = b, new $Int64(x$4.$high + x$5.$high, x$4.$low + x$5.$low));
106447  		while (true) {
106448  			if (!(!(n === ptrType$79.nil))) { break; }
106449  			n.subtreeBytes = (x$6 = n.subtreeBytes, x$7 = b, new $Int64(x$6.$high + x$7.$high, x$6.$low + x$7.$low));
106450  			n = n.parent;
106451  		}
106452  	};
106453  	http2priorityNode.prototype.addBytes = function(b) { return this.$val.addBytes(b); };
106454  	http2priorityNode.ptr.prototype.walkReadyInOrder = function(openParent, tmp, f) {
106455  		var _r$1, _r$2, _r$3, _v, f, i, k, k$1, k$2, n, needSort, openParent, tmp, w, x$4, x$5, $s, $r;
106456  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _v = $f._v; f = $f.f; i = $f.i; k = $f.k; k$1 = $f.k$1; k$2 = $f.k$2; n = $f.n; needSort = $f.needSort; openParent = $f.openParent; tmp = $f.tmp; w = $f.w; x$4 = $f.x$4; x$5 = $f.x$5; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
106457  		n = this;
106458  		if (!(!n.q.empty())) { _v = false; $s = 3; continue s; }
106459  		_r$1 = f(n, openParent); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
106460  		_v = _r$1; case 3:
106461  		/* */ if (_v) { $s = 1; continue; }
106462  		/* */ $s = 2; continue;
106463  		/* if (_v) { */ case 1:
106464  			$s = -1; return true;
106465  		/* } */ case 2:
106466  		if (n.kids === ptrType$79.nil) {
106467  			$s = -1; return false;
106468  		}
106469  		if (!((n.id === 0))) {
106470  			openParent = openParent || ((n.state === 0));
106471  		}
106472  		w = n.kids.weight;
106473  		needSort = false;
106474  		k = n.kids.next;
106475  		while (true) {
106476  			if (!(!(k === ptrType$79.nil))) { break; }
106477  			if (!((k.weight === w))) {
106478  				needSort = true;
106479  				break;
106480  			}
106481  			k = k.next;
106482  		}
106483  		/* */ if (!needSort) { $s = 5; continue; }
106484  		/* */ $s = 6; continue;
106485  		/* if (!needSort) { */ case 5:
106486  			k$1 = n.kids;
106487  			/* while (true) { */ case 7:
106488  				/* if (!(!(k$1 === ptrType$79.nil))) { break; } */ if(!(!(k$1 === ptrType$79.nil))) { $s = 8; continue; }
106489  				_r$2 = k$1.walkReadyInOrder(openParent, tmp, f); /* */ $s = 11; case 11: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
106490  				/* */ if (_r$2) { $s = 9; continue; }
106491  				/* */ $s = 10; continue;
106492  				/* if (_r$2) { */ case 9:
106493  					$s = -1; return true;
106494  				/* } */ case 10:
106495  				k$1 = k$1.next;
106496  			/* } */ $s = 7; continue; case 8:
106497  			$s = -1; return false;
106498  		/* } */ case 6:
106499  		tmp.$set($subslice((tmp.$get()), 0, 0));
106500  		while (true) {
106501  			if (!(!(n.kids === ptrType$79.nil))) { break; }
106502  			tmp.$set($append(tmp.$get(), n.kids));
106503  			n.kids.setParent(ptrType$79.nil);
106504  		}
106505  		$r = sort.Sort(((x$4 = tmp.$get(), $subslice(new http2sortPriorityNodeSiblings(x$4.$array), x$4.$offset, x$4.$offset + x$4.$length)))); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
106506  		i = tmp.$get().$length - 1 >> 0;
106507  		while (true) {
106508  			if (!(i >= 0)) { break; }
106509  			(x$5 = tmp.$get(), ((i < 0 || i >= x$5.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$5.$array[x$5.$offset + i])).setParent(n);
106510  			i = i - (1) >> 0;
106511  		}
106512  		k$2 = n.kids;
106513  		/* while (true) { */ case 13:
106514  			/* if (!(!(k$2 === ptrType$79.nil))) { break; } */ if(!(!(k$2 === ptrType$79.nil))) { $s = 14; continue; }
106515  			_r$3 = k$2.walkReadyInOrder(openParent, tmp, f); /* */ $s = 17; case 17: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
106516  			/* */ if (_r$3) { $s = 15; continue; }
106517  			/* */ $s = 16; continue;
106518  			/* if (_r$3) { */ case 15:
106519  				$s = -1; return true;
106520  			/* } */ case 16:
106521  			k$2 = k$2.next;
106522  		/* } */ $s = 13; continue; case 14:
106523  		$s = -1; return false;
106524  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2priorityNode.ptr.prototype.walkReadyInOrder }; } $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._v = _v; $f.f = f; $f.i = i; $f.k = k; $f.k$1 = k$1; $f.k$2 = k$2; $f.n = n; $f.needSort = needSort; $f.openParent = openParent; $f.tmp = tmp; $f.w = w; $f.x$4 = x$4; $f.x$5 = x$5; $f.$s = $s; $f.$r = $r; return $f;
106525  	};
106526  	http2priorityNode.prototype.walkReadyInOrder = function(openParent, tmp, f) { return this.$val.walkReadyInOrder(openParent, tmp, f); };
106527  	http2sortPriorityNodeSiblings.prototype.Len = function() {
106528  		var z;
106529  		z = this;
106530  		return z.$length;
106531  	};
106532  	$ptrType(http2sortPriorityNodeSiblings).prototype.Len = function() { return this.$get().Len(); };
106533  	http2sortPriorityNodeSiblings.prototype.Swap = function(i, k) {
106534  		var _tmp, _tmp$1, i, k, z;
106535  		z = this;
106536  		_tmp = ((k < 0 || k >= z.$length) ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + k]);
106537  		_tmp$1 = ((i < 0 || i >= z.$length) ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + i]);
106538  		((i < 0 || i >= z.$length) ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + i] = _tmp);
106539  		((k < 0 || k >= z.$length) ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + k] = _tmp$1);
106540  	};
106541  	$ptrType(http2sortPriorityNodeSiblings).prototype.Swap = function(i, k) { return this.$get().Swap(i, k); };
106542  	http2sortPriorityNodeSiblings.prototype.Less = function(i, k) {
106543  		var _tmp, _tmp$1, _tmp$2, _tmp$3, bi, bk, i, k, wi, wk, z;
106544  		z = this;
106545  		_tmp = ((((i < 0 || i >= z.$length) ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + i]).weight + 1 << 24 >>> 24));
106546  		_tmp$1 = ($flatten64(((i < 0 || i >= z.$length) ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + i]).subtreeBytes));
106547  		wi = _tmp;
106548  		bi = _tmp$1;
106549  		_tmp$2 = ((((k < 0 || k >= z.$length) ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + k]).weight + 1 << 24 >>> 24));
106550  		_tmp$3 = ($flatten64(((k < 0 || k >= z.$length) ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + k]).subtreeBytes));
106551  		wk = _tmp$2;
106552  		bk = _tmp$3;
106553  		if ((bi === 0) && (bk === 0)) {
106554  			return wi >= wk;
106555  		}
106556  		if (bk === 0) {
106557  			return false;
106558  		}
106559  		return bi / bk <= wi / wk;
106560  	};
106561  	$ptrType(http2sortPriorityNodeSiblings).prototype.Less = function(i, k) { return this.$get().Less(i, k); };
106562  	http2priorityWriteScheduler.ptr.prototype.OpenStream = function(streamID, options) {
106563  		var _entry, _entry$1, _key, _r$1, curr, n, options, parent, streamID, ws, $s, $r;
106564  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _entry = $f._entry; _entry$1 = $f._entry$1; _key = $f._key; _r$1 = $f._r$1; curr = $f.curr; n = $f.n; options = $f.options; parent = $f.parent; streamID = $f.streamID; ws = $f.ws; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
106565  		ws = this;
106566  		curr = (_entry = ws.nodes[$Uint32.keyFor(streamID)], _entry !== undefined ? _entry.v : ptrType$79.nil);
106567  		/* */ if (!(curr === ptrType$79.nil)) { $s = 1; continue; }
106568  		/* */ $s = 2; continue;
106569  		/* if (!(curr === ptrType$79.nil)) { */ case 1:
106570  			/* */ if (!((curr.state === 2))) { $s = 3; continue; }
106571  			/* */ $s = 4; continue;
106572  			/* if (!((curr.state === 2))) { */ case 3:
106573  				_r$1 = fmt.Sprintf("stream %d already opened", new sliceType([new $Uint32(streamID)])); /* */ $s = 5; case 5: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
106574  				$panic(new $String(_r$1));
106575  			/* } */ case 4:
106576  			curr.state = 0;
106577  			$s = -1; return;
106578  		/* } */ case 2:
106579  		parent = (_entry$1 = ws.nodes[$Uint32.keyFor(options.PusherID)], _entry$1 !== undefined ? _entry$1.v : ptrType$79.nil);
106580  		if (parent === ptrType$79.nil) {
106581  			parent = ws.root;
106582  		}
106583  		n = new http2priorityNode.ptr($clone((ws.$ptr_queuePool || (ws.$ptr_queuePool = new ptrType$80(function() { return this.$target.queuePool; }, function($v) { this.$target.queuePool = $v; }, ws))).get(), http2writeQueue), streamID, 15, 0, new $Int64(0, 0), new $Int64(0, 0), ptrType$79.nil, ptrType$79.nil, ptrType$79.nil, ptrType$79.nil);
106584  		n.setParent(parent);
106585  		_key = streamID; (ws.nodes || $throwRuntimeError("assignment to entry in nil map"))[$Uint32.keyFor(_key)] = { k: _key, v: n };
106586  		if (streamID > ws.maxID) {
106587  			ws.maxID = streamID;
106588  		}
106589  		$s = -1; return;
106590  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2priorityWriteScheduler.ptr.prototype.OpenStream }; } $f._entry = _entry; $f._entry$1 = _entry$1; $f._key = _key; $f._r$1 = _r$1; $f.curr = curr; $f.n = n; $f.options = options; $f.parent = parent; $f.streamID = streamID; $f.ws = ws; $f.$s = $s; $f.$r = $r; return $f;
106591  	};
106592  	http2priorityWriteScheduler.prototype.OpenStream = function(streamID, options) { return this.$val.OpenStream(streamID, options); };
106593  	http2priorityWriteScheduler.ptr.prototype.CloseStream = function(streamID) {
106594  		var _entry, _entry$1, _entry$2, _r$1, _r$2, n, q, streamID, ws, x$4, $s, $r;
106595  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _entry = $f._entry; _entry$1 = $f._entry$1; _entry$2 = $f._entry$2; _r$1 = $f._r$1; _r$2 = $f._r$2; n = $f.n; q = $f.q; streamID = $f.streamID; ws = $f.ws; x$4 = $f.x$4; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
106596  		q = [q];
106597  		ws = this;
106598  		if (streamID === 0) {
106599  			$panic(new $String("violation of WriteScheduler interface: cannot close stream 0"));
106600  		}
106601  		/* */ if ((_entry = ws.nodes[$Uint32.keyFor(streamID)], _entry !== undefined ? _entry.v : ptrType$79.nil) === ptrType$79.nil) { $s = 1; continue; }
106602  		/* */ $s = 2; continue;
106603  		/* if ((_entry = ws.nodes[$Uint32.keyFor(streamID)], _entry !== undefined ? _entry.v : ptrType$79.nil) === ptrType$79.nil) { */ case 1:
106604  			_r$1 = fmt.Sprintf("violation of WriteScheduler interface: unknown stream %d", new sliceType([new $Uint32(streamID)])); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
106605  			$panic(new $String(_r$1));
106606  		/* } */ case 2:
106607  		/* */ if (!(((_entry$1 = ws.nodes[$Uint32.keyFor(streamID)], _entry$1 !== undefined ? _entry$1.v : ptrType$79.nil).state === 0))) { $s = 4; continue; }
106608  		/* */ $s = 5; continue;
106609  		/* if (!(((_entry$1 = ws.nodes[$Uint32.keyFor(streamID)], _entry$1 !== undefined ? _entry$1.v : ptrType$79.nil).state === 0))) { */ case 4:
106610  			_r$2 = fmt.Sprintf("violation of WriteScheduler interface: stream %d already closed", new sliceType([new $Uint32(streamID)])); /* */ $s = 6; case 6: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
106611  			$panic(new $String(_r$2));
106612  		/* } */ case 5:
106613  		n = (_entry$2 = ws.nodes[$Uint32.keyFor(streamID)], _entry$2 !== undefined ? _entry$2.v : ptrType$79.nil);
106614  		n.state = 1;
106615  		n.addBytes((x$4 = n.bytes, new $Int64(-x$4.$high, -x$4.$low)));
106616  		q[0] = $clone(n.q, http2writeQueue);
106617  		(ws.$ptr_queuePool || (ws.$ptr_queuePool = new ptrType$80(function() { return this.$target.queuePool; }, function($v) { this.$target.queuePool = $v; }, ws))).put(q[0]);
106618  		n.q.s = sliceType$20.nil;
106619  		if (ws.maxClosedNodesInTree > 0) {
106620  			ws.addClosedOrIdleNode((ws.$ptr_closedNodes || (ws.$ptr_closedNodes = new ptrType$81(function() { return this.$target.closedNodes; }, function($v) { this.$target.closedNodes = $v; }, ws))), ws.maxClosedNodesInTree, n);
106621  		} else {
106622  			ws.removeNode(n);
106623  		}
106624  		$s = -1; return;
106625  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2priorityWriteScheduler.ptr.prototype.CloseStream }; } $f._entry = _entry; $f._entry$1 = _entry$1; $f._entry$2 = _entry$2; $f._r$1 = _r$1; $f._r$2 = _r$2; $f.n = n; $f.q = q; $f.streamID = streamID; $f.ws = ws; $f.x$4 = x$4; $f.$s = $s; $f.$r = $r; return $f;
106626  	};
106627  	http2priorityWriteScheduler.prototype.CloseStream = function(streamID) { return this.$val.CloseStream(streamID); };
106628  	http2priorityWriteScheduler.ptr.prototype.AdjustStream = function(streamID, priority) {
106629  		var _entry, _entry$1, _key, k, n, next, parent, priority, streamID, ws, x$4;
106630  		ws = this;
106631  		if (streamID === 0) {
106632  			$panic(new $String("adjustPriority on root"));
106633  		}
106634  		n = (_entry = ws.nodes[$Uint32.keyFor(streamID)], _entry !== undefined ? _entry.v : ptrType$79.nil);
106635  		if (n === ptrType$79.nil) {
106636  			if (streamID <= ws.maxID || (ws.maxIdleNodesInTree === 0)) {
106637  				return;
106638  			}
106639  			ws.maxID = streamID;
106640  			n = new http2priorityNode.ptr($clone((ws.$ptr_queuePool || (ws.$ptr_queuePool = new ptrType$80(function() { return this.$target.queuePool; }, function($v) { this.$target.queuePool = $v; }, ws))).get(), http2writeQueue), streamID, 15, 2, new $Int64(0, 0), new $Int64(0, 0), ptrType$79.nil, ptrType$79.nil, ptrType$79.nil, ptrType$79.nil);
106641  			n.setParent(ws.root);
106642  			_key = streamID; (ws.nodes || $throwRuntimeError("assignment to entry in nil map"))[$Uint32.keyFor(_key)] = { k: _key, v: n };
106643  			ws.addClosedOrIdleNode((ws.$ptr_idleNodes || (ws.$ptr_idleNodes = new ptrType$81(function() { return this.$target.idleNodes; }, function($v) { this.$target.idleNodes = $v; }, ws))), ws.maxIdleNodesInTree, n);
106644  		}
106645  		parent = (_entry$1 = ws.nodes[$Uint32.keyFor(priority.StreamDep)], _entry$1 !== undefined ? _entry$1.v : ptrType$79.nil);
106646  		if (parent === ptrType$79.nil) {
106647  			n.setParent(ws.root);
106648  			n.weight = 15;
106649  			return;
106650  		}
106651  		if (n === parent) {
106652  			return;
106653  		}
106654  		x$4 = parent.parent;
106655  		while (true) {
106656  			if (!(!(x$4 === ptrType$79.nil))) { break; }
106657  			if (x$4 === n) {
106658  				parent.setParent(n.parent);
106659  				break;
106660  			}
106661  			x$4 = x$4.parent;
106662  		}
106663  		if (priority.Exclusive) {
106664  			k = parent.kids;
106665  			while (true) {
106666  				if (!(!(k === ptrType$79.nil))) { break; }
106667  				next = k.next;
106668  				if (!(k === n)) {
106669  					k.setParent(n);
106670  				}
106671  				k = next;
106672  			}
106673  		}
106674  		n.setParent(parent);
106675  		n.weight = priority.Weight;
106676  	};
106677  	http2priorityWriteScheduler.prototype.AdjustStream = function(streamID, priority) { return this.$val.AdjustStream(streamID, priority); };
106678  	http2priorityWriteScheduler.ptr.prototype.Push = function(wr) {
106679  		var _entry, id, n, wr, ws;
106680  		ws = this;
106681  		n = ptrType$79.nil;
106682  		id = $clone(wr, http2FrameWriteRequest).StreamID();
106683  		if (id === 0) {
106684  			n = ws.root;
106685  		} else {
106686  			n = (_entry = ws.nodes[$Uint32.keyFor(id)], _entry !== undefined ? _entry.v : ptrType$79.nil);
106687  			if (n === ptrType$79.nil) {
106688  				if ($clone(wr, http2FrameWriteRequest).DataSize() > 0) {
106689  					$panic(new $String("add DATA on non-open stream"));
106690  				}
106691  				n = ws.root;
106692  			}
106693  		}
106694  		n.q.push($clone(wr, http2FrameWriteRequest));
106695  	};
106696  	http2priorityWriteScheduler.prototype.Push = function(wr) { return this.$val.Push(wr); };
106697  	http2priorityWriteScheduler.ptr.prototype.Pop = function() {
106698  		var _r$1, _tmp, _tmp$1, ok, wr, ws, $s, $r;
106699  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; ok = $f.ok; wr = $f.wr; ws = $f.ws; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
106700  		ok = [ok];
106701  		wr = [wr];
106702  		ws = [ws];
106703  		wr[0] = new http2FrameWriteRequest.ptr($ifaceNil, ptrType$6.nil, $chanNil);
106704  		ok[0] = false;
106705  		ws[0] = this;
106706  		_r$1 = ws[0].root.walkReadyInOrder(false, (ws[0].$ptr_tmp || (ws[0].$ptr_tmp = new ptrType$81(function() { return this.$target.tmp; }, function($v) { this.$target.tmp = $v; }, ws[0]))), (function(ok, wr, ws) { return function(n, openParent) {
106707  			var _tuple, limit, n, openParent;
106708  			limit = 2147483647;
106709  			if (openParent) {
106710  				limit = ws[0].writeThrottleLimit;
106711  			}
106712  			_tuple = n.q.consume(limit);
106713  			http2FrameWriteRequest.copy(wr[0], _tuple[0]);
106714  			ok[0] = _tuple[1];
106715  			if (!ok[0]) {
106716  				return false;
106717  			}
106718  			n.addBytes((new $Int64(0, $clone(wr[0], http2FrameWriteRequest).DataSize())));
106719  			if (openParent) {
106720  				ws[0].writeThrottleLimit = ws[0].writeThrottleLimit + (1024) >> 0;
106721  				if (ws[0].writeThrottleLimit < 0) {
106722  					ws[0].writeThrottleLimit = 2147483647;
106723  				}
106724  			} else if (ws[0].enableWriteThrottle) {
106725  				ws[0].writeThrottleLimit = 1024;
106726  			}
106727  			return true;
106728  		}; })(ok, wr, ws)); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
106729  		_r$1;
106730  		_tmp = $clone(wr[0], http2FrameWriteRequest);
106731  		_tmp$1 = ok[0];
106732  		http2FrameWriteRequest.copy(wr[0], _tmp);
106733  		ok[0] = _tmp$1;
106734  		$s = -1; return [wr[0], ok[0]];
106735  		/* */ } return; } if ($f === undefined) { $f = { $blk: http2priorityWriteScheduler.ptr.prototype.Pop }; } $f._r$1 = _r$1; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f.ok = ok; $f.wr = wr; $f.ws = ws; $f.$s = $s; $f.$r = $r; return $f;
106736  	};
106737  	http2priorityWriteScheduler.prototype.Pop = function() { return this.$val.Pop(); };
106738  	http2priorityWriteScheduler.ptr.prototype.addClosedOrIdleNode = function(list$1, maxSize, n) {
106739  		var list$1, maxSize, n, ws, x$4, x$5;
106740  		ws = this;
106741  		if (maxSize === 0) {
106742  			return;
106743  		}
106744  		if (list$1.$get().$length === maxSize) {
106745  			ws.removeNode((x$4 = list$1.$get(), (0 >= x$4.$length ? ($throwRuntimeError("index out of range"), undefined) : x$4.$array[x$4.$offset + 0])));
106746  			x$5 = $subslice((list$1.$get()), 1);
106747  			$copySlice(list$1.$get(), x$5);
106748  			list$1.$set($subslice((list$1.$get()), 0, x$5.$length));
106749  		}
106750  		list$1.$set($append(list$1.$get(), n));
106751  	};
106752  	http2priorityWriteScheduler.prototype.addClosedOrIdleNode = function(list$1, maxSize, n) { return this.$val.addClosedOrIdleNode(list$1, maxSize, n); };
106753  	http2priorityWriteScheduler.ptr.prototype.removeNode = function(n) {
106754  		var k, n, ws;
106755  		ws = this;
106756  		k = n.kids;
106757  		while (true) {
106758  			if (!(!(k === ptrType$79.nil))) { break; }
106759  			k.setParent(n.parent);
106760  			k = k.next;
106761  		}
106762  		n.setParent(ptrType$79.nil);
106763  		delete ws.nodes[$Uint32.keyFor(n.id)];
106764  	};
106765  	http2priorityWriteScheduler.prototype.removeNode = function(n) { return this.$val.removeNode(n); };
106766  	http2NewRandomWriteScheduler = function() {
106767  		return new http2randomWriteScheduler.ptr(new http2writeQueue.ptr(sliceType$20.nil), {}, http2writeQueuePool.nil);
106768  	};
106769  	http2randomWriteScheduler.ptr.prototype.OpenStream = function(streamID, options) {
106770  		var options, streamID, ws;
106771  		ws = this;
106772  	};
106773  	http2randomWriteScheduler.prototype.OpenStream = function(streamID, options) { return this.$val.OpenStream(streamID, options); };
106774  	http2randomWriteScheduler.ptr.prototype.CloseStream = function(streamID) {
106775  		var _entry, _tuple, ok, q, streamID, ws;
106776  		ws = this;
106777  		_tuple = (_entry = ws.sq[$Uint32.keyFor(streamID)], _entry !== undefined ? [_entry.v, true] : [ptrType$77.nil, false]);
106778  		q = _tuple[0];
106779  		ok = _tuple[1];
106780  		if (!ok) {
106781  			return;
106782  		}
106783  		delete ws.sq[$Uint32.keyFor(streamID)];
106784  		(ws.$ptr_queuePool || (ws.$ptr_queuePool = new ptrType$80(function() { return this.$target.queuePool; }, function($v) { this.$target.queuePool = $v; }, ws))).put(q);
106785  	};
106786  	http2randomWriteScheduler.prototype.CloseStream = function(streamID) { return this.$val.CloseStream(streamID); };
106787  	http2randomWriteScheduler.ptr.prototype.AdjustStream = function(streamID, priority) {
106788  		var priority, streamID, ws;
106789  		ws = this;
106790  	};
106791  	http2randomWriteScheduler.prototype.AdjustStream = function(streamID, priority) { return this.$val.AdjustStream(streamID, priority); };
106792  	http2randomWriteScheduler.ptr.prototype.Push = function(wr) {
106793  		var _entry, _key, _tuple, id, ok, q, wr, ws;
106794  		ws = this;
106795  		id = $clone(wr, http2FrameWriteRequest).StreamID();
106796  		if (id === 0) {
106797  			ws.zero.push($clone(wr, http2FrameWriteRequest));
106798  			return;
106799  		}
106800  		_tuple = (_entry = ws.sq[$Uint32.keyFor(id)], _entry !== undefined ? [_entry.v, true] : [ptrType$77.nil, false]);
106801  		q = _tuple[0];
106802  		ok = _tuple[1];
106803  		if (!ok) {
106804  			q = (ws.$ptr_queuePool || (ws.$ptr_queuePool = new ptrType$80(function() { return this.$target.queuePool; }, function($v) { this.$target.queuePool = $v; }, ws))).get();
106805  			_key = id; (ws.sq || $throwRuntimeError("assignment to entry in nil map"))[$Uint32.keyFor(_key)] = { k: _key, v: q };
106806  		}
106807  		q.push($clone(wr, http2FrameWriteRequest));
106808  	};
106809  	http2randomWriteScheduler.prototype.Push = function(wr) { return this.$val.Push(wr); };
106810  	http2randomWriteScheduler.ptr.prototype.Pop = function() {
106811  		var _entry, _i, _keys, _ref, _tuple, ok, q, wr, ws;
106812  		ws = this;
106813  		if (!ws.zero.empty()) {
106814  			return [ws.zero.shift(), true];
106815  		}
106816  		_ref = ws.sq;
106817  		_i = 0;
106818  		_keys = $keys(_ref);
106819  		while (true) {
106820  			if (!(_i < _keys.length)) { break; }
106821  			_entry = _ref[_keys[_i]];
106822  			if (_entry === undefined) {
106823  				_i++;
106824  				continue;
106825  			}
106826  			q = _entry.v;
106827  			_tuple = q.consume(2147483647);
106828  			wr = $clone(_tuple[0], http2FrameWriteRequest);
106829  			ok = _tuple[1];
106830  			if (ok) {
106831  				return [wr, true];
106832  			}
106833  			_i++;
106834  		}
106835  		return [new http2FrameWriteRequest.ptr($ifaceNil, ptrType$6.nil, $chanNil), false];
106836  	};
106837  	http2randomWriteScheduler.prototype.Pop = function() { return this.$val.Pop(); };
106838  	Header.prototype.Add = function(key, value) {
106839  		var h, key, value;
106840  		h = this.$val;
106841  		new textproto.MIMEHeader((h)).Add(key, value);
106842  	};
106843  	$ptrType(Header).prototype.Add = function(key, value) { return new Header(this.$get()).Add(key, value); };
106844  	Header.prototype.Set = function(key, value) {
106845  		var h, key, value;
106846  		h = this.$val;
106847  		new textproto.MIMEHeader((h)).Set(key, value);
106848  	};
106849  	$ptrType(Header).prototype.Set = function(key, value) { return new Header(this.$get()).Set(key, value); };
106850  	Header.prototype.Get = function(key) {
106851  		var h, key;
106852  		h = this.$val;
106853  		return new textproto.MIMEHeader((h)).Get(key);
106854  	};
106855  	$ptrType(Header).prototype.Get = function(key) { return new Header(this.$get()).Get(key); };
106856  	Header.prototype.get = function(key) {
106857  		var _entry, h, key, v;
106858  		h = this.$val;
106859  		v = (_entry = h[$String.keyFor(key)], _entry !== undefined ? _entry.v : sliceType$1.nil);
106860  		if (v.$length > 0) {
106861  			return (0 >= v.$length ? ($throwRuntimeError("index out of range"), undefined) : v.$array[v.$offset + 0]);
106862  		}
106863  		return "";
106864  	};
106865  	$ptrType(Header).prototype.get = function(key) { return new Header(this.$get()).get(key); };
106866  	Header.prototype.Del = function(key) {
106867  		var h, key;
106868  		h = this.$val;
106869  		new textproto.MIMEHeader((h)).Del(key);
106870  	};
106871  	$ptrType(Header).prototype.Del = function(key) { return new Header(this.$get()).Del(key); };
106872  	Header.prototype.Write = function(w) {
106873  		var _r$1, h, w, $s, $r;
106874  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; h = $f.h; w = $f.w; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
106875  		h = this.$val;
106876  		_r$1 = new Header(h).WriteSubset(w, false); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
106877  		$s = -1; return _r$1;
106878  		/* */ } return; } if ($f === undefined) { $f = { $blk: Header.prototype.Write }; } $f._r$1 = _r$1; $f.h = h; $f.w = w; $f.$s = $s; $f.$r = $r; return $f;
106879  	};
106880  	$ptrType(Header).prototype.Write = function(w) { return new Header(this.$get()).Write(w); };
106881  	Header.prototype.clone = function() {
106882  		var _entry, _i, _key, _keys, _ref, h, h2, k, vv, vv2, x$4;
106883  		h = this.$val;
106884  		h2 = (x$4 = $keys(h).length, ((x$4 < 0 || x$4 > 2147483647) ? $throwRuntimeError("makemap: size out of range") : {}));
106885  		_ref = h;
106886  		_i = 0;
106887  		_keys = $keys(_ref);
106888  		while (true) {
106889  			if (!(_i < _keys.length)) { break; }
106890  			_entry = _ref[_keys[_i]];
106891  			if (_entry === undefined) {
106892  				_i++;
106893  				continue;
106894  			}
106895  			k = _entry.k;
106896  			vv = _entry.v;
106897  			vv2 = $makeSlice(sliceType$1, vv.$length);
106898  			$copySlice(vv2, vv);
106899  			_key = k; (h2 || $throwRuntimeError("assignment to entry in nil map"))[$String.keyFor(_key)] = { k: _key, v: vv2 };
106900  			_i++;
106901  		}
106902  		return h2;
106903  	};
106904  	$ptrType(Header).prototype.clone = function() { return new Header(this.$get()).clone(); };
106905  	stringWriter.ptr.prototype.WriteString = function(s) {
106906  		var _r$1, _tuple, err, n, s, w, $s, $r;
106907  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; _tuple = $f._tuple; err = $f.err; n = $f.n; s = $f.s; w = $f.w; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
106908  		n = 0;
106909  		err = $ifaceNil;
106910  		w = this;
106911  		_r$1 = w.w.Write((new sliceType$3($stringToBytes(s)))); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
106912  		_tuple = _r$1;
106913  		n = _tuple[0];
106914  		err = _tuple[1];
106915  		$s = -1; return [n, err];
106916  		/* */ } return; } if ($f === undefined) { $f = { $blk: stringWriter.ptr.prototype.WriteString }; } $f._r$1 = _r$1; $f._tuple = _tuple; $f.err = err; $f.n = n; $f.s = s; $f.w = w; $f.$s = $s; $f.$r = $r; return $f;
106917  	};
106918  	stringWriter.prototype.WriteString = function(s) { return this.$val.WriteString(s); };
106919  	headerSorter.ptr.prototype.Len = function() {
106920  		var s;
106921  		s = this;
106922  		return s.kvs.$length;
106923  	};
106924  	headerSorter.prototype.Len = function() { return this.$val.Len(); };
106925  	headerSorter.ptr.prototype.Swap = function(i, j) {
106926  		var _tmp, _tmp$1, i, j, s, x$4, x$5, x$6, x$7;
106927  		s = this;
106928  		_tmp = $clone((x$4 = s.kvs, ((j < 0 || j >= x$4.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$4.$array[x$4.$offset + j])), keyValues);
106929  		_tmp$1 = $clone((x$5 = s.kvs, ((i < 0 || i >= x$5.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$5.$array[x$5.$offset + i])), keyValues);
106930  		keyValues.copy((x$6 = s.kvs, ((i < 0 || i >= x$6.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$6.$array[x$6.$offset + i])), _tmp);
106931  		keyValues.copy((x$7 = s.kvs, ((j < 0 || j >= x$7.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$7.$array[x$7.$offset + j])), _tmp$1);
106932  	};
106933  	headerSorter.prototype.Swap = function(i, j) { return this.$val.Swap(i, j); };
106934  	headerSorter.ptr.prototype.Less = function(i, j) {
106935  		var i, j, s, x$4, x$5;
106936  		s = this;
106937  		return (x$4 = s.kvs, ((i < 0 || i >= x$4.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$4.$array[x$4.$offset + i])).key < (x$5 = s.kvs, ((j < 0 || j >= x$5.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$5.$array[x$5.$offset + j])).key;
106938  	};
106939  	headerSorter.prototype.Less = function(i, j) { return this.$val.Less(i, j); };
106940  	Header.prototype.sortedKeyValues = function(exclude) {
106941  		var _entry, _entry$1, _i, _keys, _r$1, _ref, _tmp, _tmp$1, exclude, h, hs, k, kvs, vv, $s, $r;
106942  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _entry = $f._entry; _entry$1 = $f._entry$1; _i = $f._i; _keys = $f._keys; _r$1 = $f._r$1; _ref = $f._ref; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; exclude = $f.exclude; h = $f.h; hs = $f.hs; k = $f.k; kvs = $f.kvs; vv = $f.vv; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
106943  		kvs = sliceType$4.nil;
106944  		hs = ptrType$82.nil;
106945  		h = this.$val;
106946  		_r$1 = headerSorterPool.Get(); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
106947  		hs = $assertType(_r$1, ptrType$82);
106948  		if (hs.kvs.$capacity < $keys(h).length) {
106949  			hs.kvs = $makeSlice(sliceType$4, 0, $keys(h).length);
106950  		}
106951  		kvs = $subslice(hs.kvs, 0, 0);
106952  		_ref = h;
106953  		_i = 0;
106954  		_keys = $keys(_ref);
106955  		while (true) {
106956  			if (!(_i < _keys.length)) { break; }
106957  			_entry = _ref[_keys[_i]];
106958  			if (_entry === undefined) {
106959  				_i++;
106960  				continue;
106961  			}
106962  			k = _entry.k;
106963  			vv = _entry.v;
106964  			if (!(_entry$1 = exclude[$String.keyFor(k)], _entry$1 !== undefined ? _entry$1.v : false)) {
106965  				kvs = $append(kvs, new keyValues.ptr(k, vv));
106966  			}
106967  			_i++;
106968  		}
106969  		hs.kvs = kvs;
106970  		$r = sort.Sort(hs); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
106971  		_tmp = kvs;
106972  		_tmp$1 = hs;
106973  		kvs = _tmp;
106974  		hs = _tmp$1;
106975  		$s = -1; return [kvs, hs];
106976  		/* */ } return; } if ($f === undefined) { $f = { $blk: Header.prototype.sortedKeyValues }; } $f._entry = _entry; $f._entry$1 = _entry$1; $f._i = _i; $f._keys = _keys; $f._r$1 = _r$1; $f._ref = _ref; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f.exclude = exclude; $f.h = h; $f.hs = hs; $f.k = k; $f.kvs = kvs; $f.vv = vv; $f.$s = $s; $f.$r = $r; return $f;
106977  	};
106978  	$ptrType(Header).prototype.sortedKeyValues = function(exclude) { return new Header(this.$get()).sortedKeyValues(exclude); };
106979  	Header.prototype.WriteSubset = function(w, exclude) {
106980  		var _i, _i$1, _i$2, _r$1, _r$2, _r$3, _ref, _ref$1, _ref$2, _tuple, _tuple$1, _tuple$2, err, exclude, h, kv, kvs, ok, s, sorter, v, w, ws, x$4, $s, $r;
106981  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _i = $f._i; _i$1 = $f._i$1; _i$2 = $f._i$2; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _ref = $f._ref; _ref$1 = $f._ref$1; _ref$2 = $f._ref$2; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; err = $f.err; exclude = $f.exclude; h = $f.h; kv = $f.kv; kvs = $f.kvs; ok = $f.ok; s = $f.s; sorter = $f.sorter; v = $f.v; w = $f.w; ws = $f.ws; x$4 = $f.x$4; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
106982  		h = this.$val;
106983  		_tuple = $assertType(w, writeStringer, true);
106984  		ws = _tuple[0];
106985  		ok = _tuple[1];
106986  		if (!ok) {
106987  			ws = (x$4 = new stringWriter.ptr(w), new x$4.constructor.elem(x$4));
106988  		}
106989  		_r$1 = new Header(h).sortedKeyValues(exclude); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
106990  		_tuple$1 = _r$1;
106991  		kvs = _tuple$1[0];
106992  		sorter = _tuple$1[1];
106993  		_ref = kvs;
106994  		_i = 0;
106995  		/* while (true) { */ case 2:
106996  			/* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 3; continue; }
106997  			kv = $clone(((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]), keyValues);
106998  			_ref$1 = kv.values;
106999  			_i$1 = 0;
107000  			/* while (true) { */ case 4:
107001  				/* if (!(_i$1 < _ref$1.$length)) { break; } */ if(!(_i$1 < _ref$1.$length)) { $s = 5; continue; }
107002  				v = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]);
107003  				_r$2 = headerNewlineToSpace.Replace(v); /* */ $s = 6; case 6: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
107004  				v = _r$2;
107005  				v = textproto.TrimString(v);
107006  				_ref$2 = new sliceType$1([kv.key, ": ", v, "\r\n"]);
107007  				_i$2 = 0;
107008  				/* while (true) { */ case 7:
107009  					/* if (!(_i$2 < _ref$2.$length)) { break; } */ if(!(_i$2 < _ref$2.$length)) { $s = 8; continue; }
107010  					s = ((_i$2 < 0 || _i$2 >= _ref$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$2.$array[_ref$2.$offset + _i$2]);
107011  					_r$3 = ws.WriteString(s); /* */ $s = 9; case 9: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
107012  					_tuple$2 = _r$3;
107013  					err = _tuple$2[1];
107014  					if (!($interfaceIsEqual(err, $ifaceNil))) {
107015  						headerSorterPool.Put(sorter);
107016  						$s = -1; return err;
107017  					}
107018  					_i$2++;
107019  				/* } */ $s = 7; continue; case 8:
107020  				_i$1++;
107021  			/* } */ $s = 4; continue; case 5:
107022  			_i++;
107023  		/* } */ $s = 2; continue; case 3:
107024  		headerSorterPool.Put(sorter);
107025  		$s = -1; return $ifaceNil;
107026  		/* */ } return; } if ($f === undefined) { $f = { $blk: Header.prototype.WriteSubset }; } $f._i = _i; $f._i$1 = _i$1; $f._i$2 = _i$2; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._ref = _ref; $f._ref$1 = _ref$1; $f._ref$2 = _ref$2; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f.err = err; $f.exclude = exclude; $f.h = h; $f.kv = kv; $f.kvs = kvs; $f.ok = ok; $f.s = s; $f.sorter = sorter; $f.v = v; $f.w = w; $f.ws = ws; $f.x$4 = x$4; $f.$s = $s; $f.$r = $r; return $f;
107027  	};
107028  	$ptrType(Header).prototype.WriteSubset = function(w, exclude) { return new Header(this.$get()).WriteSubset(w, exclude); };
107029  	CanonicalHeaderKey = function(s) {
107030  		var s;
107031  		return textproto.CanonicalMIMEHeaderKey(s);
107032  	};
107033  	$pkg.CanonicalHeaderKey = CanonicalHeaderKey;
107034  	hasToken = function(v, token) {
107035  		var b, endPos, sp, token, v;
107036  		if (token.length > v.length || token === "") {
107037  			return false;
107038  		}
107039  		if (v === token) {
107040  			return true;
107041  		}
107042  		sp = 0;
107043  		while (true) {
107044  			if (!(sp <= (v.length - token.length >> 0))) { break; }
107045  			b = v.charCodeAt(sp);
107046  			if (!((b === token.charCodeAt(0))) && !((((b | 32) >>> 0) === token.charCodeAt(0)))) {
107047  				sp = sp + (1) >> 0;
107048  				continue;
107049  			}
107050  			if (sp > 0 && !isTokenBoundary(v.charCodeAt((sp - 1 >> 0)))) {
107051  				sp = sp + (1) >> 0;
107052  				continue;
107053  			}
107054  			endPos = sp + token.length >> 0;
107055  			if (!((endPos === v.length)) && !isTokenBoundary(v.charCodeAt(endPos))) {
107056  				sp = sp + (1) >> 0;
107057  				continue;
107058  			}
107059  			if (strings.EqualFold($substring(v, sp, (sp + token.length >> 0)), token)) {
107060  				return true;
107061  			}
107062  			sp = sp + (1) >> 0;
107063  		}
107064  		return false;
107065  	};
107066  	isTokenBoundary = function(b) {
107067  		var b;
107068  		return (b === 32) || (b === 44) || (b === 9);
107069  	};
107070  	cloneHeader = function(h) {
107071  		var _entry, _i, _key, _keys, _ref, h, h2, k, vv, vv2, x$4;
107072  		h2 = (x$4 = $keys(h).length, ((x$4 < 0 || x$4 > 2147483647) ? $throwRuntimeError("makemap: size out of range") : {}));
107073  		_ref = h;
107074  		_i = 0;
107075  		_keys = $keys(_ref);
107076  		while (true) {
107077  			if (!(_i < _keys.length)) { break; }
107078  			_entry = _ref[_keys[_i]];
107079  			if (_entry === undefined) {
107080  				_i++;
107081  				continue;
107082  			}
107083  			k = _entry.k;
107084  			vv = _entry.v;
107085  			vv2 = $makeSlice(sliceType$1, vv.$length);
107086  			$copySlice(vv2, vv);
107087  			_key = k; (h2 || $throwRuntimeError("assignment to entry in nil map"))[$String.keyFor(_key)] = { k: _key, v: vv2 };
107088  			_i++;
107089  		}
107090  		return h2;
107091  	};
107092  	contextKey.ptr.prototype.String = function() {
107093  		var k;
107094  		k = this;
107095  		return "net/http context value " + k.name;
107096  	};
107097  	contextKey.prototype.String = function() { return this.$val.String(); };
107098  	hasPort = function(s) {
107099  		var s;
107100  		return strings.LastIndex(s, ":") > strings.LastIndex(s, "]");
107101  	};
107102  	removeEmptyPort = function(host) {
107103  		var host;
107104  		if (hasPort(host)) {
107105  			return strings.TrimSuffix(host, ":");
107106  		}
107107  		return host;
107108  	};
107109  	isNotToken = function(r) {
107110  		var r;
107111  		return !httplex.IsTokenRune(r);
107112  	};
107113  	isASCII = function(s) {
107114  		var i, s;
107115  		i = 0;
107116  		while (true) {
107117  			if (!(i < s.length)) { break; }
107118  			if (s.charCodeAt(i) >= 128) {
107119  				return false;
107120  			}
107121  			i = i + (1) >> 0;
107122  		}
107123  		return true;
107124  	};
107125  	hexEscapeNonASCII = function(s) {
107126  		var b, i, i$1, newLen, s;
107127  		newLen = 0;
107128  		i = 0;
107129  		while (true) {
107130  			if (!(i < s.length)) { break; }
107131  			if (s.charCodeAt(i) >= 128) {
107132  				newLen = newLen + (3) >> 0;
107133  			} else {
107134  				newLen = newLen + (1) >> 0;
107135  			}
107136  			i = i + (1) >> 0;
107137  		}
107138  		if (newLen === s.length) {
107139  			return s;
107140  		}
107141  		b = $makeSlice(sliceType$3, 0, newLen);
107142  		i$1 = 0;
107143  		while (true) {
107144  			if (!(i$1 < s.length)) { break; }
107145  			if (s.charCodeAt(i$1) >= 128) {
107146  				b = $append(b, 37);
107147  				b = strconv.AppendInt(b, (new $Int64(0, s.charCodeAt(i$1))), 16);
107148  			} else {
107149  				b = $append(b, s.charCodeAt(i$1));
107150  			}
107151  			i$1 = i$1 + (1) >> 0;
107152  		}
107153  		return ($bytesToString(b));
107154  	};
107155  	noBody.ptr.prototype.Read = function(param) {
107156  		var param;
107157  		return [0, io.EOF];
107158  	};
107159  	noBody.prototype.Read = function(param) { return this.$val.Read(param); };
107160  	noBody.ptr.prototype.Close = function() {
107161  		return $ifaceNil;
107162  	};
107163  	noBody.prototype.Close = function() { return this.$val.Close(); };
107164  	noBody.ptr.prototype.WriteTo = function(param) {
107165  		var param;
107166  		return [new $Int64(0, 0), $ifaceNil];
107167  	};
107168  	noBody.prototype.WriteTo = function(param) { return this.$val.WriteTo(param); };
107169  	ProtocolError.ptr.prototype.Error = function() {
107170  		var pe;
107171  		pe = this;
107172  		return pe.ErrorString;
107173  	};
107174  	ProtocolError.prototype.Error = function() { return this.$val.Error(); };
107175  	badStringError.ptr.prototype.Error = function() {
107176  		var _r$1, e, $s, $r;
107177  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; e = $f.e; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
107178  		e = this;
107179  		_r$1 = fmt.Sprintf("%s %q", new sliceType([new $String(e.what), new $String(e.str)])); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
107180  		$s = -1; return _r$1;
107181  		/* */ } return; } if ($f === undefined) { $f = { $blk: badStringError.ptr.prototype.Error }; } $f._r$1 = _r$1; $f.e = e; $f.$s = $s; $f.$r = $r; return $f;
107182  	};
107183  	badStringError.prototype.Error = function() { return this.$val.Error(); };
107184  	Request.ptr.prototype.Context = function() {
107185  		var r;
107186  		r = this;
107187  		if (!($interfaceIsEqual(r.ctx, $ifaceNil))) {
107188  			return r.ctx;
107189  		}
107190  		return context.Background();
107191  	};
107192  	Request.prototype.Context = function() { return this.$val.Context(); };
107193  	Request.ptr.prototype.WithContext = function(ctx) {
107194  		var ctx, r, r2, r2URL;
107195  		r = this;
107196  		if ($interfaceIsEqual(ctx, $ifaceNil)) {
107197  			$panic(new $String("nil context"));
107198  		}
107199  		r2 = new Request.ptr("", ptrType$20.nil, "", 0, 0, false, $ifaceNil, $throwNilPointerError, new $Int64(0, 0), sliceType$1.nil, false, "", false, false, ptrType$21.nil, false, "", "", ptrType$18.nil, $chanNil, ptrType$17.nil, $ifaceNil);
107200  		Request.copy(r2, r);
107201  		r2.ctx = ctx;
107202  		if (!(r.URL === ptrType$20.nil)) {
107203  			r2URL = new url.URL.ptr("", "", ptrType$19.nil, "", "", "", false, "", "");
107204  			url.URL.copy(r2URL, r.URL);
107205  			r2.URL = r2URL;
107206  		}
107207  		return r2;
107208  	};
107209  	Request.prototype.WithContext = function(ctx) { return this.$val.WithContext(ctx); };
107210  	Request.ptr.prototype.ProtoAtLeast = function(major, minor) {
107211  		var major, minor, r;
107212  		r = this;
107213  		return r.ProtoMajor > major || (r.ProtoMajor === major) && r.ProtoMinor >= minor;
107214  	};
107215  	Request.prototype.ProtoAtLeast = function(major, minor) { return this.$val.ProtoAtLeast(major, minor); };
107216  	Request.ptr.prototype.UserAgent = function() {
107217  		var r;
107218  		r = this;
107219  		return new Header(r.Header).Get("User-Agent");
107220  	};
107221  	Request.prototype.UserAgent = function() { return this.$val.UserAgent(); };
107222  	Request.ptr.prototype.Cookies = function() {
107223  		var _r$1, r, $s, $r;
107224  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; r = $f.r; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
107225  		r = this;
107226  		_r$1 = readCookies(r.Header, ""); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
107227  		$s = -1; return _r$1;
107228  		/* */ } return; } if ($f === undefined) { $f = { $blk: Request.ptr.prototype.Cookies }; } $f._r$1 = _r$1; $f.r = r; $f.$s = $s; $f.$r = $r; return $f;
107229  	};
107230  	Request.prototype.Cookies = function() { return this.$val.Cookies(); };
107231  	Request.ptr.prototype.Cookie = function(name) {
107232  		var _i, _r$1, _ref, c, name, r, $s, $r;
107233  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _i = $f._i; _r$1 = $f._r$1; _ref = $f._ref; c = $f.c; name = $f.name; r = $f.r; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
107234  		r = this;
107235  		_r$1 = readCookies(r.Header, name); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
107236  		_ref = _r$1;
107237  		_i = 0;
107238  		/* while (true) { */ case 2:
107239  			/* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 3; continue; }
107240  			c = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
107241  			$s = -1; return [c, $ifaceNil];
107242  		/* } */ $s = 2; continue; case 3:
107243  		$s = -1; return [ptrType$25.nil, $pkg.ErrNoCookie];
107244  		/* */ } return; } if ($f === undefined) { $f = { $blk: Request.ptr.prototype.Cookie }; } $f._i = _i; $f._r$1 = _r$1; $f._ref = _ref; $f.c = c; $f.name = name; $f.r = r; $f.$s = $s; $f.$r = $r; return $f;
107245  	};
107246  	Request.prototype.Cookie = function(name) { return this.$val.Cookie(name); };
107247  	Request.ptr.prototype.AddCookie = function(c) {
107248  		var _arg, _arg$1, _r$1, _r$2, _r$3, c, c$1, r, s, $s, $r;
107249  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _arg = $f._arg; _arg$1 = $f._arg$1; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; c = $f.c; c$1 = $f.c$1; r = $f.r; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
107250  		r = this;
107251  		_r$1 = sanitizeCookieName(c.Name); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
107252  		_arg = new $String(_r$1);
107253  		_r$2 = sanitizeCookieValue(c.Value); /* */ $s = 2; case 2: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
107254  		_arg$1 = new $String(_r$2);
107255  		_r$3 = fmt.Sprintf("%s=%s", new sliceType([_arg, _arg$1])); /* */ $s = 3; case 3: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
107256  		s = _r$3;
107257  		c$1 = new Header(r.Header).Get("Cookie");
107258  		if (!(c$1 === "")) {
107259  			new Header(r.Header).Set("Cookie", c$1 + "; " + s);
107260  		} else {
107261  			new Header(r.Header).Set("Cookie", s);
107262  		}
107263  		$s = -1; return;
107264  		/* */ } return; } if ($f === undefined) { $f = { $blk: Request.ptr.prototype.AddCookie }; } $f._arg = _arg; $f._arg$1 = _arg$1; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f.c = c; $f.c$1 = c$1; $f.r = r; $f.s = s; $f.$s = $s; $f.$r = $r; return $f;
107265  	};
107266  	Request.prototype.AddCookie = function(c) { return this.$val.AddCookie(c); };
107267  	Request.ptr.prototype.Referer = function() {
107268  		var r;
107269  		r = this;
107270  		return new Header(r.Header).Get("Referer");
107271  	};
107272  	Request.prototype.Referer = function() { return this.$val.Referer(); };
107273  	Request.ptr.prototype.MultipartReader = function() {
107274  		var _r$1, r, $s, $r;
107275  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; r = $f.r; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
107276  		r = this;
107277  		if (r.MultipartForm === multipartByReader) {
107278  			$s = -1; return [ptrType$83.nil, errors.New("http: MultipartReader called twice")];
107279  		}
107280  		if (!(r.MultipartForm === ptrType$21.nil)) {
107281  			$s = -1; return [ptrType$83.nil, errors.New("http: multipart handled by ParseMultipartForm")];
107282  		}
107283  		r.MultipartForm = multipartByReader;
107284  		_r$1 = r.multipartReader(); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
107285  		$s = -1; return _r$1;
107286  		/* */ } return; } if ($f === undefined) { $f = { $blk: Request.ptr.prototype.MultipartReader }; } $f._r$1 = _r$1; $f.r = r; $f.$s = $s; $f.$r = $r; return $f;
107287  	};
107288  	Request.prototype.MultipartReader = function() { return this.$val.MultipartReader(); };
107289  	Request.ptr.prototype.multipartReader = function() {
107290  		var _entry, _r$1, _tuple, _tuple$1, boundary, d, err, ok, params, r, v, $s, $r;
107291  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _entry = $f._entry; _r$1 = $f._r$1; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; boundary = $f.boundary; d = $f.d; err = $f.err; ok = $f.ok; params = $f.params; r = $f.r; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
107292  		r = this;
107293  		v = new Header(r.Header).Get("Content-Type");
107294  		if (v === "") {
107295  			$s = -1; return [ptrType$83.nil, $pkg.ErrNotMultipart];
107296  		}
107297  		_r$1 = mime.ParseMediaType(v); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
107298  		_tuple = _r$1;
107299  		d = _tuple[0];
107300  		params = _tuple[1];
107301  		err = _tuple[2];
107302  		if (!($interfaceIsEqual(err, $ifaceNil)) || !(d === "multipart/form-data")) {
107303  			$s = -1; return [ptrType$83.nil, $pkg.ErrNotMultipart];
107304  		}
107305  		_tuple$1 = (_entry = params[$String.keyFor("boundary")], _entry !== undefined ? [_entry.v, true] : ["", false]);
107306  		boundary = _tuple$1[0];
107307  		ok = _tuple$1[1];
107308  		if (!ok) {
107309  			$s = -1; return [ptrType$83.nil, $pkg.ErrMissingBoundary];
107310  		}
107311  		$s = -1; return [multipart.NewReader(r.Body, boundary), $ifaceNil];
107312  		/* */ } return; } if ($f === undefined) { $f = { $blk: Request.ptr.prototype.multipartReader }; } $f._entry = _entry; $f._r$1 = _r$1; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.boundary = boundary; $f.d = d; $f.err = err; $f.ok = ok; $f.params = params; $f.r = r; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
107313  	};
107314  	Request.prototype.multipartReader = function() { return this.$val.multipartReader(); };
107315  	Request.ptr.prototype.isH2Upgrade = function() {
107316  		var r;
107317  		r = this;
107318  		return r.Method === "PRI" && ($keys(r.Header).length === 0) && r.URL.Path === "*" && r.Proto === "HTTP/2.0";
107319  	};
107320  	Request.prototype.isH2Upgrade = function() { return this.$val.isH2Upgrade(); };
107321  	valueOrDefault = function(value, def) {
107322  		var def, value;
107323  		if (!(value === "")) {
107324  			return value;
107325  		}
107326  		return def;
107327  	};
107328  	Request.ptr.prototype.Write = function(w) {
107329  		var _r$1, r, w, $s, $r;
107330  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; r = $f.r; w = $f.w; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
107331  		r = this;
107332  		_r$1 = r.write(w, false, false, $throwNilPointerError); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
107333  		$s = -1; return _r$1;
107334  		/* */ } return; } if ($f === undefined) { $f = { $blk: Request.ptr.prototype.Write }; } $f._r$1 = _r$1; $f.r = r; $f.w = w; $f.$s = $s; $f.$r = $r; return $f;
107335  	};
107336  	Request.prototype.Write = function(w) { return this.$val.Write(w); };
107337  	Request.ptr.prototype.WriteProxy = function(w) {
107338  		var _r$1, r, w, $s, $r;
107339  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; r = $f.r; w = $f.w; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
107340  		r = this;
107341  		_r$1 = r.write(w, true, false, $throwNilPointerError); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
107342  		$s = -1; return _r$1;
107343  		/* */ } return; } if ($f === undefined) { $f = { $blk: Request.ptr.prototype.WriteProxy }; } $f._r$1 = _r$1; $f.r = r; $f.w = w; $f.$s = $s; $f.$r = $r; return $f;
107344  	};
107345  	Request.prototype.WriteProxy = function(w) { return this.$val.WriteProxy(w); };
107346  	Request.ptr.prototype.write = function(w, usingProxy, extraHeaders, waitForContinue) {
107347  		var _entry, _r$1, _r$10, _r$11, _r$12, _r$13, _r$14, _r$15, _r$16, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, _tuple$5, _tuple$6, _tuple$7, _tuple$8, bw, bw$1, bw$2, err, err$1, extraHeaders, host, ok, ok$1, ok$2, ok$3, r, ruri, trace, tw, userAgent, usingProxy, w, waitForContinue, x$4, $s, $deferred, $r;
107348  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _entry = $f._entry; _r$1 = $f._r$1; _r$10 = $f._r$10; _r$11 = $f._r$11; _r$12 = $f._r$12; _r$13 = $f._r$13; _r$14 = $f._r$14; _r$15 = $f._r$15; _r$16 = $f._r$16; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _r$8 = $f._r$8; _r$9 = $f._r$9; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; _tuple$4 = $f._tuple$4; _tuple$5 = $f._tuple$5; _tuple$6 = $f._tuple$6; _tuple$7 = $f._tuple$7; _tuple$8 = $f._tuple$8; bw = $f.bw; bw$1 = $f.bw$1; bw$2 = $f.bw$2; err = $f.err; err$1 = $f.err$1; extraHeaders = $f.extraHeaders; host = $f.host; ok = $f.ok; ok$1 = $f.ok$1; ok$2 = $f.ok$2; ok$3 = $f.ok$3; r = $f.r; ruri = $f.ruri; trace = $f.trace; tw = $f.tw; userAgent = $f.userAgent; usingProxy = $f.usingProxy; w = $f.w; waitForContinue = $f.waitForContinue; x$4 = $f.x$4; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
107349  		err = [err];
107350  		trace = [trace];
107351  		err[0] = $ifaceNil;
107352  		r = this;
107353  		_r$1 = httptrace.ContextClientTrace(r.Context()); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
107354  		trace[0] = _r$1;
107355  		/* */ if (!(trace[0] === ptrType$47.nil) && !(trace[0].WroteRequest === $throwNilPointerError)) { $s = 2; continue; }
107356  		/* */ $s = 3; continue;
107357  		/* if (!(trace[0] === ptrType$47.nil) && !(trace[0].WroteRequest === $throwNilPointerError)) { */ case 2:
107358  			$deferred.push([(function(err, trace) { return function $b() {
107359  				var $s, $r;
107360  				/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
107361  				$r = trace[0].WroteRequest(new httptrace.WroteRequestInfo.ptr(err[0])); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
107362  				$s = -1; return;
107363  				/* */ } return; } if ($f === undefined) { $f = { $blk: $b }; } $f.$s = $s; $f.$r = $r; return $f;
107364  			}; })(err, trace), []]);
107365  		/* } */ case 3:
107366  		_r$2 = cleanHost(r.Host); /* */ $s = 4; case 4: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
107367  		host = _r$2;
107368  		/* */ if (host === "") { $s = 5; continue; }
107369  		/* */ $s = 6; continue;
107370  		/* if (host === "") { */ case 5:
107371  			if (r.URL === ptrType$20.nil) {
107372  				err[0] = errMissingHost;
107373  				$s = -1; return err[0];
107374  			}
107375  			_r$3 = cleanHost(r.URL.Host); /* */ $s = 7; case 7: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
107376  			host = _r$3;
107377  		/* } */ case 6:
107378  		host = removeZone(host);
107379  		ruri = r.URL.RequestURI();
107380  		if (usingProxy && !(r.URL.Scheme === "") && r.URL.Opaque === "") {
107381  			ruri = r.URL.Scheme + "://" + host + ruri;
107382  		} else if (r.Method === "CONNECT" && r.URL.Path === "") {
107383  			ruri = host;
107384  		}
107385  		bw = ptrType$10.nil;
107386  		_tuple = $assertType(w, io.ByteWriter, true);
107387  		ok = _tuple[1];
107388  		if (!ok) {
107389  			bw = bufio.NewWriter(w);
107390  			w = bw;
107391  		}
107392  		_r$4 = fmt.Fprintf(w, "%s %s HTTP/1.1\r\n", new sliceType([new $String(valueOrDefault(r.Method, "GET")), new $String(ruri)])); /* */ $s = 8; case 8: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
107393  		_tuple$1 = _r$4;
107394  		err[0] = _tuple$1[1];
107395  		if (!($interfaceIsEqual(err[0], $ifaceNil))) {
107396  			err[0] = err[0];
107397  			$s = -1; return err[0];
107398  		}
107399  		_r$5 = fmt.Fprintf(w, "Host: %s\r\n", new sliceType([new $String(host)])); /* */ $s = 9; case 9: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
107400  		_tuple$2 = _r$5;
107401  		err[0] = _tuple$2[1];
107402  		if (!($interfaceIsEqual(err[0], $ifaceNil))) {
107403  			err[0] = err[0];
107404  			$s = -1; return err[0];
107405  		}
107406  		userAgent = "Go-http-client/1.1";
107407  		_tuple$3 = (_entry = r.Header[$String.keyFor("User-Agent")], _entry !== undefined ? [_entry.v, true] : [sliceType$1.nil, false]);
107408  		ok$1 = _tuple$3[1];
107409  		if (ok$1) {
107410  			userAgent = new Header(r.Header).Get("User-Agent");
107411  		}
107412  		/* */ if (!(userAgent === "")) { $s = 10; continue; }
107413  		/* */ $s = 11; continue;
107414  		/* if (!(userAgent === "")) { */ case 10:
107415  			_r$6 = fmt.Fprintf(w, "User-Agent: %s\r\n", new sliceType([new $String(userAgent)])); /* */ $s = 12; case 12: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
107416  			_tuple$4 = _r$6;
107417  			err[0] = _tuple$4[1];
107418  			if (!($interfaceIsEqual(err[0], $ifaceNil))) {
107419  				err[0] = err[0];
107420  				$s = -1; return err[0];
107421  			}
107422  		/* } */ case 11:
107423  		_r$7 = newTransferWriter(r); /* */ $s = 13; case 13: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
107424  		_tuple$5 = _r$7;
107425  		tw = _tuple$5[0];
107426  		err[0] = _tuple$5[1];
107427  		if (!($interfaceIsEqual(err[0], $ifaceNil))) {
107428  			err[0] = err[0];
107429  			$s = -1; return err[0];
107430  		}
107431  		_r$8 = tw.WriteHeader(w); /* */ $s = 14; case 14: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
107432  		err[0] = _r$8;
107433  		if (!($interfaceIsEqual(err[0], $ifaceNil))) {
107434  			err[0] = err[0];
107435  			$s = -1; return err[0];
107436  		}
107437  		_r$9 = new Header(r.Header).WriteSubset(w, reqWriteExcludeHeader); /* */ $s = 15; case 15: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
107438  		err[0] = _r$9;
107439  		if (!($interfaceIsEqual(err[0], $ifaceNil))) {
107440  			err[0] = err[0];
107441  			$s = -1; return err[0];
107442  		}
107443  		/* */ if (!(extraHeaders === false)) { $s = 16; continue; }
107444  		/* */ $s = 17; continue;
107445  		/* if (!(extraHeaders === false)) { */ case 16:
107446  			_r$10 = new Header(extraHeaders).Write(w); /* */ $s = 18; case 18: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
107447  			err[0] = _r$10;
107448  			if (!($interfaceIsEqual(err[0], $ifaceNil))) {
107449  				err[0] = err[0];
107450  				$s = -1; return err[0];
107451  			}
107452  		/* } */ case 17:
107453  		_r$11 = io.WriteString(w, "\r\n"); /* */ $s = 19; case 19: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; }
107454  		_tuple$6 = _r$11;
107455  		err[0] = _tuple$6[1];
107456  		if (!($interfaceIsEqual(err[0], $ifaceNil))) {
107457  			err[0] = err[0];
107458  			$s = -1; return err[0];
107459  		}
107460  		/* */ if (!(trace[0] === ptrType$47.nil) && !(trace[0].WroteHeaders === $throwNilPointerError)) { $s = 20; continue; }
107461  		/* */ $s = 21; continue;
107462  		/* if (!(trace[0] === ptrType$47.nil) && !(trace[0].WroteHeaders === $throwNilPointerError)) { */ case 20:
107463  			$r = trace[0].WroteHeaders(); /* */ $s = 22; case 22: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
107464  		/* } */ case 21:
107465  		/* */ if (!(waitForContinue === $throwNilPointerError)) { $s = 23; continue; }
107466  		/* */ $s = 24; continue;
107467  		/* if (!(waitForContinue === $throwNilPointerError)) { */ case 23:
107468  			_tuple$7 = $assertType(w, ptrType$10, true);
107469  			bw$1 = _tuple$7[0];
107470  			ok$2 = _tuple$7[1];
107471  			/* */ if (ok$2) { $s = 25; continue; }
107472  			/* */ $s = 26; continue;
107473  			/* if (ok$2) { */ case 25:
107474  				_r$12 = bw$1.Flush(); /* */ $s = 27; case 27: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; }
107475  				err[0] = _r$12;
107476  				if (!($interfaceIsEqual(err[0], $ifaceNil))) {
107477  					err[0] = err[0];
107478  					$s = -1; return err[0];
107479  				}
107480  			/* } */ case 26:
107481  			/* */ if (!(trace[0] === ptrType$47.nil) && !(trace[0].Wait100Continue === $throwNilPointerError)) { $s = 28; continue; }
107482  			/* */ $s = 29; continue;
107483  			/* if (!(trace[0] === ptrType$47.nil) && !(trace[0].Wait100Continue === $throwNilPointerError)) { */ case 28:
107484  				$r = trace[0].Wait100Continue(); /* */ $s = 30; case 30: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
107485  			/* } */ case 29:
107486  			_r$13 = waitForContinue(); /* */ $s = 33; case 33: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; }
107487  			/* */ if (!_r$13) { $s = 31; continue; }
107488  			/* */ $s = 32; continue;
107489  			/* if (!_r$13) { */ case 31:
107490  				$r = r.closeBody(); /* */ $s = 34; case 34: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
107491  				err[0] = $ifaceNil;
107492  				$s = -1; return err[0];
107493  			/* } */ case 32:
107494  		/* } */ case 24:
107495  		_tuple$8 = $assertType(w, ptrType$10, true);
107496  		bw$2 = _tuple$8[0];
107497  		ok$3 = _tuple$8[1];
107498  		/* */ if (ok$3 && tw.FlushHeaders) { $s = 35; continue; }
107499  		/* */ $s = 36; continue;
107500  		/* if (ok$3 && tw.FlushHeaders) { */ case 35:
107501  			_r$14 = bw$2.Flush(); /* */ $s = 37; case 37: if($c) { $c = false; _r$14 = _r$14.$blk(); } if (_r$14 && _r$14.$blk !== undefined) { break s; }
107502  			err$1 = _r$14;
107503  			if (!($interfaceIsEqual(err$1, $ifaceNil))) {
107504  				err[0] = err$1;
107505  				$s = -1; return err[0];
107506  			}
107507  		/* } */ case 36:
107508  		_r$15 = tw.WriteBody(w); /* */ $s = 38; case 38: if($c) { $c = false; _r$15 = _r$15.$blk(); } if (_r$15 && _r$15.$blk !== undefined) { break s; }
107509  		err[0] = _r$15;
107510  		if (!($interfaceIsEqual(err[0], $ifaceNil))) {
107511  			if ($interfaceIsEqual(tw.bodyReadError, err[0])) {
107512  				err[0] = (x$4 = new requestBodyReadError.ptr(err[0]), new x$4.constructor.elem(x$4));
107513  			}
107514  			err[0] = err[0];
107515  			$s = -1; return err[0];
107516  		}
107517  		/* */ if (!(bw === ptrType$10.nil)) { $s = 39; continue; }
107518  		/* */ $s = 40; continue;
107519  		/* if (!(bw === ptrType$10.nil)) { */ case 39:
107520  			_r$16 = bw.Flush(); /* */ $s = 41; case 41: if($c) { $c = false; _r$16 = _r$16.$blk(); } if (_r$16 && _r$16.$blk !== undefined) { break s; }
107521  			err[0] = _r$16;
107522  			$s = -1; return err[0];
107523  		/* } */ case 40:
107524  		err[0] = $ifaceNil;
107525  		$s = -1; return err[0];
107526  		/* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if (!$curGoroutine.asleep) { return  err[0]; } if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: Request.ptr.prototype.write }; } $f._entry = _entry; $f._r$1 = _r$1; $f._r$10 = _r$10; $f._r$11 = _r$11; $f._r$12 = _r$12; $f._r$13 = _r$13; $f._r$14 = _r$14; $f._r$15 = _r$15; $f._r$16 = _r$16; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._r$8 = _r$8; $f._r$9 = _r$9; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f._tuple$4 = _tuple$4; $f._tuple$5 = _tuple$5; $f._tuple$6 = _tuple$6; $f._tuple$7 = _tuple$7; $f._tuple$8 = _tuple$8; $f.bw = bw; $f.bw$1 = bw$1; $f.bw$2 = bw$2; $f.err = err; $f.err$1 = err$1; $f.extraHeaders = extraHeaders; $f.host = host; $f.ok = ok; $f.ok$1 = ok$1; $f.ok$2 = ok$2; $f.ok$3 = ok$3; $f.r = r; $f.ruri = ruri; $f.trace = trace; $f.tw = tw; $f.userAgent = userAgent; $f.usingProxy = usingProxy; $f.w = w; $f.waitForContinue = waitForContinue; $f.x$4 = x$4; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
107527  	};
107528  	Request.prototype.write = function(w, usingProxy, extraHeaders, waitForContinue) { return this.$val.write(w, usingProxy, extraHeaders, waitForContinue); };
107529  	idnaASCII = function(v) {
107530  		var _r$1, v, $s, $r;
107531  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
107532  		if (isASCII(v)) {
107533  			$s = -1; return [v, $ifaceNil];
107534  		}
107535  		_r$1 = idna.Lookup.ToASCII(v); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
107536  		$s = -1; return _r$1;
107537  		/* */ } return; } if ($f === undefined) { $f = { $blk: idnaASCII }; } $f._r$1 = _r$1; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
107538  	};
107539  	cleanHost = function(in$1) {
107540  		var _r$1, _r$2, _r$3, _tuple, _tuple$1, _tuple$2, a, a$1, err, err$1, host, i, in$1, port, $s, $r;
107541  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; a = $f.a; a$1 = $f.a$1; err = $f.err; err$1 = $f.err$1; host = $f.host; i = $f.i; in$1 = $f.in$1; port = $f.port; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
107542  		i = strings.IndexAny(in$1, " /");
107543  		if (!((i === -1))) {
107544  			in$1 = $substring(in$1, 0, i);
107545  		}
107546  		_r$1 = net.SplitHostPort(in$1); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
107547  		_tuple = _r$1;
107548  		host = _tuple[0];
107549  		port = _tuple[1];
107550  		err = _tuple[2];
107551  		/* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 2; continue; }
107552  		/* */ $s = 3; continue;
107553  		/* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 2:
107554  			_r$2 = idnaASCII(in$1); /* */ $s = 4; case 4: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
107555  			_tuple$1 = _r$2;
107556  			a = _tuple$1[0];
107557  			err$1 = _tuple$1[1];
107558  			if (!($interfaceIsEqual(err$1, $ifaceNil))) {
107559  				$s = -1; return in$1;
107560  			}
107561  			$s = -1; return a;
107562  		/* } */ case 3:
107563  		_r$3 = idnaASCII(host); /* */ $s = 5; case 5: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
107564  		_tuple$2 = _r$3;
107565  		a$1 = _tuple$2[0];
107566  		err = _tuple$2[1];
107567  		if (!($interfaceIsEqual(err, $ifaceNil))) {
107568  			$s = -1; return in$1;
107569  		}
107570  		$s = -1; return net.JoinHostPort(a$1, port);
107571  		/* */ } return; } if ($f === undefined) { $f = { $blk: cleanHost }; } $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f.a = a; $f.a$1 = a$1; $f.err = err; $f.err$1 = err$1; $f.host = host; $f.i = i; $f.in$1 = in$1; $f.port = port; $f.$s = $s; $f.$r = $r; return $f;
107572  	};
107573  	removeZone = function(host) {
107574  		var host, i, j;
107575  		if (!strings.HasPrefix(host, "[")) {
107576  			return host;
107577  		}
107578  		i = strings.LastIndex(host, "]");
107579  		if (i < 0) {
107580  			return host;
107581  		}
107582  		j = strings.LastIndex($substring(host, 0, i), "%");
107583  		if (j < 0) {
107584  			return host;
107585  		}
107586  		return $substring(host, 0, j) + $substring(host, i);
107587  	};
107588  	ParseHTTPVersion = function(vers) {
107589  		var _1, _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$14, _tmp$15, _tmp$16, _tmp$17, _tmp$18, _tmp$19, _tmp$2, _tmp$20, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, _tuple$1, dot, err, major, minor, ok, vers;
107590  		major = 0;
107591  		minor = 0;
107592  		ok = false;
107593  		_1 = vers;
107594  		if (_1 === ("HTTP/1.1")) {
107595  			_tmp = 1;
107596  			_tmp$1 = 1;
107597  			_tmp$2 = true;
107598  			major = _tmp;
107599  			minor = _tmp$1;
107600  			ok = _tmp$2;
107601  			return [major, minor, ok];
107602  		} else if (_1 === ("HTTP/1.0")) {
107603  			_tmp$3 = 1;
107604  			_tmp$4 = 0;
107605  			_tmp$5 = true;
107606  			major = _tmp$3;
107607  			minor = _tmp$4;
107608  			ok = _tmp$5;
107609  			return [major, minor, ok];
107610  		}
107611  		if (!strings.HasPrefix(vers, "HTTP/")) {
107612  			_tmp$6 = 0;
107613  			_tmp$7 = 0;
107614  			_tmp$8 = false;
107615  			major = _tmp$6;
107616  			minor = _tmp$7;
107617  			ok = _tmp$8;
107618  			return [major, minor, ok];
107619  		}
107620  		dot = strings.Index(vers, ".");
107621  		if (dot < 0) {
107622  			_tmp$9 = 0;
107623  			_tmp$10 = 0;
107624  			_tmp$11 = false;
107625  			major = _tmp$9;
107626  			minor = _tmp$10;
107627  			ok = _tmp$11;
107628  			return [major, minor, ok];
107629  		}
107630  		_tuple = strconv.Atoi($substring(vers, 5, dot));
107631  		major = _tuple[0];
107632  		err = _tuple[1];
107633  		if (!($interfaceIsEqual(err, $ifaceNil)) || major < 0 || major > 1000000) {
107634  			_tmp$12 = 0;
107635  			_tmp$13 = 0;
107636  			_tmp$14 = false;
107637  			major = _tmp$12;
107638  			minor = _tmp$13;
107639  			ok = _tmp$14;
107640  			return [major, minor, ok];
107641  		}
107642  		_tuple$1 = strconv.Atoi($substring(vers, (dot + 1 >> 0)));
107643  		minor = _tuple$1[0];
107644  		err = _tuple$1[1];
107645  		if (!($interfaceIsEqual(err, $ifaceNil)) || minor < 0 || minor > 1000000) {
107646  			_tmp$15 = 0;
107647  			_tmp$16 = 0;
107648  			_tmp$17 = false;
107649  			major = _tmp$15;
107650  			minor = _tmp$16;
107651  			ok = _tmp$17;
107652  			return [major, minor, ok];
107653  		}
107654  		_tmp$18 = major;
107655  		_tmp$19 = minor;
107656  		_tmp$20 = true;
107657  		major = _tmp$18;
107658  		minor = _tmp$19;
107659  		ok = _tmp$20;
107660  		return [major, minor, ok];
107661  	};
107662  	$pkg.ParseHTTPVersion = ParseHTTPVersion;
107663  	validMethod = function(method) {
107664  		var _r$1, _v, method, $s, $r;
107665  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; _v = $f._v; method = $f.method; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
107666  		if (!(method.length > 0)) { _v = false; $s = 1; continue s; }
107667  		_r$1 = strings.IndexFunc(method, isNotToken); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
107668  		_v = _r$1 === -1; case 1:
107669  		$s = -1; return _v;
107670  		/* */ } return; } if ($f === undefined) { $f = { $blk: validMethod }; } $f._r$1 = _r$1; $f._v = _v; $f.method = method; $f.$s = $s; $f.$r = $r; return $f;
107671  	};
107672  	NewRequest = function(method, url$1, body$1) {
107673  		var _r$1, _r$2, _r$3, _ref, _tuple, _tuple$1, body$1, buf, err, method, ok, rc, req, snapshot, snapshot$1, u, url$1, v, v$1, v$2, v$3, x$4, $s, $r;
107674  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _ref = $f._ref; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; body$1 = $f.body$1; buf = $f.buf; err = $f.err; method = $f.method; ok = $f.ok; rc = $f.rc; req = $f.req; snapshot = $f.snapshot; snapshot$1 = $f.snapshot$1; u = $f.u; url$1 = $f.url$1; v = $f.v; v$1 = $f.v$1; v$2 = $f.v$2; v$3 = $f.v$3; x$4 = $f.x$4; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
107675  		buf = [buf];
107676  		snapshot = [snapshot];
107677  		snapshot$1 = [snapshot$1];
107678  		if (method === "") {
107679  			method = "GET";
107680  		}
107681  		_r$1 = validMethod(method); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
107682  		/* */ if (!_r$1) { $s = 1; continue; }
107683  		/* */ $s = 2; continue;
107684  		/* if (!_r$1) { */ case 1:
107685  			_r$2 = fmt.Errorf("net/http: invalid method %q", new sliceType([new $String(method)])); /* */ $s = 4; case 4: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
107686  			$s = -1; return [ptrType$7.nil, _r$2];
107687  		/* } */ case 2:
107688  		_r$3 = parseURL(url$1); /* */ $s = 5; case 5: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
107689  		_tuple = _r$3;
107690  		u = _tuple[0];
107691  		err = _tuple[1];
107692  		if (!($interfaceIsEqual(err, $ifaceNil))) {
107693  			$s = -1; return [ptrType$7.nil, err];
107694  		}
107695  		_tuple$1 = $assertType(body$1, io.ReadCloser, true);
107696  		rc = _tuple$1[0];
107697  		ok = _tuple$1[1];
107698  		if (!ok && !($interfaceIsEqual(body$1, $ifaceNil))) {
107699  			rc = ioutil.NopCloser(body$1);
107700  		}
107701  		u.Host = removeEmptyPort(u.Host);
107702  		req = new Request.ptr(method, u, "HTTP/1.1", 1, 1, {}, rc, $throwNilPointerError, new $Int64(0, 0), sliceType$1.nil, false, u.Host, false, false, ptrType$21.nil, false, "", "", ptrType$18.nil, $chanNil, ptrType$17.nil, $ifaceNil);
107703  		if (!($interfaceIsEqual(body$1, $ifaceNil))) {
107704  			_ref = body$1;
107705  			if ($assertType(_ref, ptrType$36, true)[1]) {
107706  				v = _ref.$val;
107707  				req.ContentLength = (new $Int64(0, v.Len()));
107708  				buf[0] = v.Bytes();
107709  				req.GetBody = (function(buf, snapshot, snapshot$1) { return function() {
107710  					var r;
107711  					r = bytes.NewReader(buf[0]);
107712  					return [ioutil.NopCloser(r), $ifaceNil];
107713  				}; })(buf, snapshot, snapshot$1);
107714  			} else if ($assertType(_ref, ptrType$84, true)[1]) {
107715  				v$1 = _ref.$val;
107716  				req.ContentLength = (new $Int64(0, v$1.Len()));
107717  				snapshot[0] = $clone(v$1, bytes.Reader);
107718  				req.GetBody = (function(buf, snapshot, snapshot$1) { return function() {
107719  					var r;
107720  					r = $clone(snapshot[0], bytes.Reader);
107721  					return [ioutil.NopCloser(r), $ifaceNil];
107722  				}; })(buf, snapshot, snapshot$1);
107723  			} else if ($assertType(_ref, ptrType$85, true)[1]) {
107724  				v$2 = _ref.$val;
107725  				req.ContentLength = (new $Int64(0, v$2.Len()));
107726  				snapshot$1[0] = $clone(v$2, strings.Reader);
107727  				req.GetBody = (function(buf, snapshot, snapshot$1) { return function() {
107728  					var r;
107729  					r = $clone(snapshot$1[0], strings.Reader);
107730  					return [ioutil.NopCloser(r), $ifaceNil];
107731  				}; })(buf, snapshot, snapshot$1);
107732  			} else {
107733  				v$3 = _ref;
107734  			}
107735  			if (!(req.GetBody === $throwNilPointerError) && (x$4 = req.ContentLength, (x$4.$high === 0 && x$4.$low === 0))) {
107736  				req.Body = new $pkg.NoBody.constructor.elem($pkg.NoBody);
107737  				req.GetBody = (function(buf, snapshot, snapshot$1) { return function() {
107738  					return [new $pkg.NoBody.constructor.elem($pkg.NoBody), $ifaceNil];
107739  				}; })(buf, snapshot, snapshot$1);
107740  			}
107741  		}
107742  		$s = -1; return [req, $ifaceNil];
107743  		/* */ } return; } if ($f === undefined) { $f = { $blk: NewRequest }; } $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._ref = _ref; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.body$1 = body$1; $f.buf = buf; $f.err = err; $f.method = method; $f.ok = ok; $f.rc = rc; $f.req = req; $f.snapshot = snapshot; $f.snapshot$1 = snapshot$1; $f.u = u; $f.url$1 = url$1; $f.v = v; $f.v$1 = v$1; $f.v$2 = v$2; $f.v$3 = v$3; $f.x$4 = x$4; $f.$s = $s; $f.$r = $r; return $f;
107744  	};
107745  	$pkg.NewRequest = NewRequest;
107746  	Request.ptr.prototype.BasicAuth = function() {
107747  		var _tuple, auth, ok, password, r, username;
107748  		username = "";
107749  		password = "";
107750  		ok = false;
107751  		r = this;
107752  		auth = new Header(r.Header).Get("Authorization");
107753  		if (auth === "") {
107754  			return [username, password, ok];
107755  		}
107756  		_tuple = parseBasicAuth(auth);
107757  		username = _tuple[0];
107758  		password = _tuple[1];
107759  		ok = _tuple[2];
107760  		return [username, password, ok];
107761  	};
107762  	Request.prototype.BasicAuth = function() { return this.$val.BasicAuth(); };
107763  	parseBasicAuth = function(auth) {
107764  		var _tmp, _tmp$1, _tmp$2, _tuple, auth, c, cs, err, ok, password, s, username;
107765  		username = "";
107766  		password = "";
107767  		ok = false;
107768  		if (!strings.HasPrefix(auth, "Basic ")) {
107769  			return [username, password, ok];
107770  		}
107771  		_tuple = base64.StdEncoding.DecodeString($substring(auth, 6));
107772  		c = _tuple[0];
107773  		err = _tuple[1];
107774  		if (!($interfaceIsEqual(err, $ifaceNil))) {
107775  			return [username, password, ok];
107776  		}
107777  		cs = ($bytesToString(c));
107778  		s = strings.IndexByte(cs, 58);
107779  		if (s < 0) {
107780  			return [username, password, ok];
107781  		}
107782  		_tmp = $substring(cs, 0, s);
107783  		_tmp$1 = $substring(cs, (s + 1 >> 0));
107784  		_tmp$2 = true;
107785  		username = _tmp;
107786  		password = _tmp$1;
107787  		ok = _tmp$2;
107788  		return [username, password, ok];
107789  	};
107790  	Request.ptr.prototype.SetBasicAuth = function(username, password) {
107791  		var password, r, username;
107792  		r = this;
107793  		new Header(r.Header).Set("Authorization", "Basic " + basicAuth(username, password));
107794  	};
107795  	Request.prototype.SetBasicAuth = function(username, password) { return this.$val.SetBasicAuth(username, password); };
107796  	parseRequestLine = function(line) {
107797  		var _tmp, _tmp$1, _tmp$2, _tmp$3, line, method, ok, proto, requestURI, s1, s2;
107798  		method = "";
107799  		requestURI = "";
107800  		proto = "";
107801  		ok = false;
107802  		s1 = strings.Index(line, " ");
107803  		s2 = strings.Index($substring(line, (s1 + 1 >> 0)), " ");
107804  		if (s1 < 0 || s2 < 0) {
107805  			return [method, requestURI, proto, ok];
107806  		}
107807  		s2 = s2 + ((s1 + 1 >> 0)) >> 0;
107808  		_tmp = $substring(line, 0, s1);
107809  		_tmp$1 = $substring(line, (s1 + 1 >> 0), s2);
107810  		_tmp$2 = $substring(line, (s2 + 1 >> 0));
107811  		_tmp$3 = true;
107812  		method = _tmp;
107813  		requestURI = _tmp$1;
107814  		proto = _tmp$2;
107815  		ok = _tmp$3;
107816  		return [method, requestURI, proto, ok];
107817  	};
107818  	newTextprotoReader = function(br) {
107819  		var _r$1, br, tr, v, $s, $r;
107820  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; br = $f.br; tr = $f.tr; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
107821  		_r$1 = textprotoReaderPool.Get(); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
107822  		v = _r$1;
107823  		if (!($interfaceIsEqual(v, $ifaceNil))) {
107824  			tr = $assertType(v, ptrType$86);
107825  			tr.R = br;
107826  			$s = -1; return tr;
107827  		}
107828  		$s = -1; return textproto.NewReader(br);
107829  		/* */ } return; } if ($f === undefined) { $f = { $blk: newTextprotoReader }; } $f._r$1 = _r$1; $f.br = br; $f.tr = tr; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
107830  	};
107831  	putTextprotoReader = function(r) {
107832  		var r;
107833  		r.R = ptrType$72.nil;
107834  		textprotoReaderPool.Put(r);
107835  	};
107836  	readRequest = function(b, deleteHostHeader) {
107837  		var _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$14, _tmp$15, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, b, deleteHostHeader, err, justAuthority, mimeHeader, ok, rawurl, req, s, tp, $s, $deferred, $r;
107838  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$10 = $f._tmp$10; _tmp$11 = $f._tmp$11; _tmp$12 = $f._tmp$12; _tmp$13 = $f._tmp$13; _tmp$14 = $f._tmp$14; _tmp$15 = $f._tmp$15; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tmp$4 = $f._tmp$4; _tmp$5 = $f._tmp$5; _tmp$6 = $f._tmp$6; _tmp$7 = $f._tmp$7; _tmp$8 = $f._tmp$8; _tmp$9 = $f._tmp$9; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; _tuple$4 = $f._tuple$4; b = $f.b; deleteHostHeader = $f.deleteHostHeader; err = $f.err; justAuthority = $f.justAuthority; mimeHeader = $f.mimeHeader; ok = $f.ok; rawurl = $f.rawurl; req = $f.req; s = $f.s; tp = $f.tp; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
107839  		err = [err];
107840  		tp = [tp];
107841  		req = ptrType$7.nil;
107842  		err[0] = $ifaceNil;
107843  		_r$1 = newTextprotoReader(b); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
107844  		tp[0] = _r$1;
107845  		req = new Request.ptr("", ptrType$20.nil, "", 0, 0, false, $ifaceNil, $throwNilPointerError, new $Int64(0, 0), sliceType$1.nil, false, "", false, false, ptrType$21.nil, false, "", "", ptrType$18.nil, $chanNil, ptrType$17.nil, $ifaceNil);
107846  		s = "";
107847  		_r$2 = tp[0].ReadLine(); /* */ $s = 2; case 2: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
107848  		_tuple = _r$2;
107849  		s = _tuple[0];
107850  		err[0] = _tuple[1];
107851  		if (!($interfaceIsEqual(err[0], $ifaceNil))) {
107852  			_tmp = ptrType$7.nil;
107853  			_tmp$1 = err[0];
107854  			req = _tmp;
107855  			err[0] = _tmp$1;
107856  			$s = -1; return [req, err[0]];
107857  		}
107858  		$deferred.push([(function(err, tp) { return function() {
107859  			putTextprotoReader(tp[0]);
107860  			if ($interfaceIsEqual(err[0], io.EOF)) {
107861  				err[0] = io.ErrUnexpectedEOF;
107862  			}
107863  		}; })(err, tp), []]);
107864  		ok = false;
107865  		_tuple$1 = parseRequestLine(s);
107866  		req.Method = _tuple$1[0];
107867  		req.RequestURI = _tuple$1[1];
107868  		req.Proto = _tuple$1[2];
107869  		ok = _tuple$1[3];
107870  		if (!ok) {
107871  			_tmp$2 = ptrType$7.nil;
107872  			_tmp$3 = new badStringError.ptr("malformed HTTP request", s);
107873  			req = _tmp$2;
107874  			err[0] = _tmp$3;
107875  			$s = -1; return [req, err[0]];
107876  		}
107877  		_r$3 = validMethod(req.Method); /* */ $s = 5; case 5: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
107878  		/* */ if (!_r$3) { $s = 3; continue; }
107879  		/* */ $s = 4; continue;
107880  		/* if (!_r$3) { */ case 3:
107881  			_tmp$4 = ptrType$7.nil;
107882  			_tmp$5 = new badStringError.ptr("invalid method", req.Method);
107883  			req = _tmp$4;
107884  			err[0] = _tmp$5;
107885  			$s = -1; return [req, err[0]];
107886  		/* } */ case 4:
107887  		rawurl = req.RequestURI;
107888  		_tuple$2 = ParseHTTPVersion(req.Proto);
107889  		req.ProtoMajor = _tuple$2[0];
107890  		req.ProtoMinor = _tuple$2[1];
107891  		ok = _tuple$2[2];
107892  		if (!ok) {
107893  			_tmp$6 = ptrType$7.nil;
107894  			_tmp$7 = new badStringError.ptr("malformed HTTP version", req.Proto);
107895  			req = _tmp$6;
107896  			err[0] = _tmp$7;
107897  			$s = -1; return [req, err[0]];
107898  		}
107899  		justAuthority = req.Method === "CONNECT" && !strings.HasPrefix(rawurl, "/");
107900  		if (justAuthority) {
107901  			rawurl = "http://" + rawurl;
107902  		}
107903  		_r$4 = url.ParseRequestURI(rawurl); /* */ $s = 6; case 6: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
107904  		_tuple$3 = _r$4;
107905  		req.URL = _tuple$3[0];
107906  		err[0] = _tuple$3[1];
107907  		if (!($interfaceIsEqual(err[0], $ifaceNil))) {
107908  			_tmp$8 = ptrType$7.nil;
107909  			_tmp$9 = err[0];
107910  			req = _tmp$8;
107911  			err[0] = _tmp$9;
107912  			$s = -1; return [req, err[0]];
107913  		}
107914  		if (justAuthority) {
107915  			req.URL.Scheme = "";
107916  		}
107917  		_r$5 = tp[0].ReadMIMEHeader(); /* */ $s = 7; case 7: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
107918  		_tuple$4 = _r$5;
107919  		mimeHeader = _tuple$4[0];
107920  		err[0] = _tuple$4[1];
107921  		if (!($interfaceIsEqual(err[0], $ifaceNil))) {
107922  			_tmp$10 = ptrType$7.nil;
107923  			_tmp$11 = err[0];
107924  			req = _tmp$10;
107925  			err[0] = _tmp$11;
107926  			$s = -1; return [req, err[0]];
107927  		}
107928  		req.Header = (mimeHeader);
107929  		req.Host = req.URL.Host;
107930  		if (req.Host === "") {
107931  			req.Host = new Header(req.Header).get("Host");
107932  		}
107933  		if (deleteHostHeader) {
107934  			delete req.Header[$String.keyFor("Host")];
107935  		}
107936  		fixPragmaCacheControl(req.Header);
107937  		req.Close = shouldClose(req.ProtoMajor, req.ProtoMinor, req.Header, false);
107938  		_r$6 = readTransfer(req, b); /* */ $s = 8; case 8: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
107939  		err[0] = _r$6;
107940  		if (!($interfaceIsEqual(err[0], $ifaceNil))) {
107941  			_tmp$12 = ptrType$7.nil;
107942  			_tmp$13 = err[0];
107943  			req = _tmp$12;
107944  			err[0] = _tmp$13;
107945  			$s = -1; return [req, err[0]];
107946  		}
107947  		if (req.isH2Upgrade()) {
107948  			req.ContentLength = new $Int64(-1, 4294967295);
107949  			req.Close = true;
107950  		}
107951  		_tmp$14 = req;
107952  		_tmp$15 = $ifaceNil;
107953  		req = _tmp$14;
107954  		err[0] = _tmp$15;
107955  		$s = -1; return [req, err[0]];
107956  		/* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if (!$curGoroutine.asleep) { return  [req, err[0]]; } if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: readRequest }; } $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$10 = _tmp$10; $f._tmp$11 = _tmp$11; $f._tmp$12 = _tmp$12; $f._tmp$13 = _tmp$13; $f._tmp$14 = _tmp$14; $f._tmp$15 = _tmp$15; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tmp$4 = _tmp$4; $f._tmp$5 = _tmp$5; $f._tmp$6 = _tmp$6; $f._tmp$7 = _tmp$7; $f._tmp$8 = _tmp$8; $f._tmp$9 = _tmp$9; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f._tuple$4 = _tuple$4; $f.b = b; $f.deleteHostHeader = deleteHostHeader; $f.err = err; $f.justAuthority = justAuthority; $f.mimeHeader = mimeHeader; $f.ok = ok; $f.rawurl = rawurl; $f.req = req; $f.s = s; $f.tp = tp; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
107957  	};
107958  	MaxBytesReader = function(w, r, n) {
107959  		var n, r, w;
107960  		return new maxBytesReader.ptr(w, r, n, $ifaceNil);
107961  	};
107962  	$pkg.MaxBytesReader = MaxBytesReader;
107963  	maxBytesReader.ptr.prototype.Read = function(p) {
107964  		var _r$1, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tuple, _tuple$1, err, l, n, ok, p, res, x$10, x$11, x$12, x$4, x$5, x$6, x$7, x$8, x$9, $s, $r;
107965  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tmp$4 = $f._tmp$4; _tmp$5 = $f._tmp$5; _tmp$6 = $f._tmp$6; _tmp$7 = $f._tmp$7; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; err = $f.err; l = $f.l; n = $f.n; ok = $f.ok; p = $f.p; res = $f.res; x$10 = $f.x$10; x$11 = $f.x$11; x$12 = $f.x$12; x$4 = $f.x$4; x$5 = $f.x$5; x$6 = $f.x$6; x$7 = $f.x$7; x$8 = $f.x$8; x$9 = $f.x$9; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
107966  		n = 0;
107967  		err = $ifaceNil;
107968  		l = this;
107969  		if (!($interfaceIsEqual(l.err, $ifaceNil))) {
107970  			_tmp = 0;
107971  			_tmp$1 = l.err;
107972  			n = _tmp;
107973  			err = _tmp$1;
107974  			$s = -1; return [n, err];
107975  		}
107976  		if (p.$length === 0) {
107977  			_tmp$2 = 0;
107978  			_tmp$3 = $ifaceNil;
107979  			n = _tmp$2;
107980  			err = _tmp$3;
107981  			$s = -1; return [n, err];
107982  		}
107983  		if ((x$4 = (new $Int64(0, p.$length)), x$5 = (x$6 = l.n, new $Int64(x$6.$high + 0, x$6.$low + 1)), (x$4.$high > x$5.$high || (x$4.$high === x$5.$high && x$4.$low > x$5.$low)))) {
107984  			p = $subslice(p, 0, $flatten64((x$7 = l.n, new $Int64(x$7.$high + 0, x$7.$low + 1))));
107985  		}
107986  		_r$1 = l.r.Read(p); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
107987  		_tuple = _r$1;
107988  		n = _tuple[0];
107989  		err = _tuple[1];
107990  		if ((x$8 = (new $Int64(0, n)), x$9 = l.n, (x$8.$high < x$9.$high || (x$8.$high === x$9.$high && x$8.$low <= x$9.$low)))) {
107991  			l.n = (x$10 = l.n, x$11 = (new $Int64(0, n)), new $Int64(x$10.$high - x$11.$high, x$10.$low - x$11.$low));
107992  			l.err = err;
107993  			_tmp$4 = n;
107994  			_tmp$5 = err;
107995  			n = _tmp$4;
107996  			err = _tmp$5;
107997  			$s = -1; return [n, err];
107998  		}
107999  		n = (((x$12 = l.n, x$12.$low + ((x$12.$high >> 31) * 4294967296)) >> 0));
108000  		l.n = new $Int64(0, 0);
108001  		_tuple$1 = $assertType(l.w, requestTooLarger, true);
108002  		res = _tuple$1[0];
108003  		ok = _tuple$1[1];
108004  		/* */ if (ok) { $s = 2; continue; }
108005  		/* */ $s = 3; continue;
108006  		/* if (ok) { */ case 2:
108007  			$r = res.requestTooLarge(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
108008  		/* } */ case 3:
108009  		l.err = errors.New("http: request body too large");
108010  		_tmp$6 = n;
108011  		_tmp$7 = l.err;
108012  		n = _tmp$6;
108013  		err = _tmp$7;
108014  		$s = -1; return [n, err];
108015  		/* */ } return; } if ($f === undefined) { $f = { $blk: maxBytesReader.ptr.prototype.Read }; } $f._r$1 = _r$1; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tmp$4 = _tmp$4; $f._tmp$5 = _tmp$5; $f._tmp$6 = _tmp$6; $f._tmp$7 = _tmp$7; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.err = err; $f.l = l; $f.n = n; $f.ok = ok; $f.p = p; $f.res = res; $f.x$10 = x$10; $f.x$11 = x$11; $f.x$12 = x$12; $f.x$4 = x$4; $f.x$5 = x$5; $f.x$6 = x$6; $f.x$7 = x$7; $f.x$8 = x$8; $f.x$9 = x$9; $f.$s = $s; $f.$r = $r; return $f;
108016  	};
108017  	maxBytesReader.prototype.Read = function(p) { return this.$val.Read(p); };
108018  	maxBytesReader.ptr.prototype.Close = function() {
108019  		var _r$1, l, $s, $r;
108020  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; l = $f.l; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
108021  		l = this;
108022  		_r$1 = l.r.Close(); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
108023  		$s = -1; return _r$1;
108024  		/* */ } return; } if ($f === undefined) { $f = { $blk: maxBytesReader.ptr.prototype.Close }; } $f._r$1 = _r$1; $f.l = l; $f.$s = $s; $f.$r = $r; return $f;
108025  	};
108026  	maxBytesReader.prototype.Close = function() { return this.$val.Close(); };
108027  	copyValues = function(dst, src) {
108028  		var _entry, _i, _i$1, _keys, _ref, _ref$1, dst, k, src, value, vs;
108029  		_ref = src;
108030  		_i = 0;
108031  		_keys = $keys(_ref);
108032  		while (true) {
108033  			if (!(_i < _keys.length)) { break; }
108034  			_entry = _ref[_keys[_i]];
108035  			if (_entry === undefined) {
108036  				_i++;
108037  				continue;
108038  			}
108039  			k = _entry.k;
108040  			vs = _entry.v;
108041  			_ref$1 = vs;
108042  			_i$1 = 0;
108043  			while (true) {
108044  				if (!(_i$1 < _ref$1.$length)) { break; }
108045  				value = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]);
108046  				new url.Values(dst).Add(k, value);
108047  				_i$1++;
108048  			}
108049  			_i++;
108050  		}
108051  	};
108052  	parsePostForm = function(r) {
108053  		var _r$1, _r$2, _tuple, _tuple$1, _tuple$2, _tuple$3, b, ct, e, err, maxFormSize, ok, r, reader, vs, x$4, $s, $r;
108054  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; _r$2 = $f._r$2; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; b = $f.b; ct = $f.ct; e = $f.e; err = $f.err; maxFormSize = $f.maxFormSize; ok = $f.ok; r = $f.r; reader = $f.reader; vs = $f.vs; x$4 = $f.x$4; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
108055  		vs = false;
108056  		err = $ifaceNil;
108057  		if ($interfaceIsEqual(r.Body, $ifaceNil)) {
108058  			err = errors.New("missing form body");
108059  			$s = -1; return [vs, err];
108060  		}
108061  		ct = new Header(r.Header).Get("Content-Type");
108062  		if (ct === "") {
108063  			ct = "application/octet-stream";
108064  		}
108065  		_r$1 = mime.ParseMediaType(ct); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
108066  		_tuple = _r$1;
108067  		ct = _tuple[0];
108068  		err = _tuple[2];
108069  			/* */ if (ct === "application/x-www-form-urlencoded") { $s = 3; continue; }
108070  			/* */ if (ct === "multipart/form-data") { $s = 4; continue; }
108071  			/* */ $s = 5; continue;
108072  			/* if (ct === "application/x-www-form-urlencoded") { */ case 3:
108073  				reader = r.Body;
108074  				maxFormSize = new $Int64(2147483647, 4294967295);
108075  				_tuple$1 = $assertType(r.Body, ptrType$87, true);
108076  				ok = _tuple$1[1];
108077  				if (!ok) {
108078  					maxFormSize = new $Int64(0, 10485760);
108079  					reader = io.LimitReader(r.Body, new $Int64(maxFormSize.$high + 0, maxFormSize.$low + 1));
108080  				}
108081  				_r$2 = ioutil.ReadAll(reader); /* */ $s = 6; case 6: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
108082  				_tuple$2 = _r$2;
108083  				b = _tuple$2[0];
108084  				e = _tuple$2[1];
108085  				if (!($interfaceIsEqual(e, $ifaceNil))) {
108086  					if ($interfaceIsEqual(err, $ifaceNil)) {
108087  						err = e;
108088  					}
108089  					/* break; */ $s = 2; continue;
108090  				}
108091  				if ((x$4 = (new $Int64(0, b.$length)), (x$4.$high > maxFormSize.$high || (x$4.$high === maxFormSize.$high && x$4.$low > maxFormSize.$low)))) {
108092  					err = errors.New("http: POST too large");
108093  					$s = -1; return [vs, err];
108094  				}
108095  				_tuple$3 = url.ParseQuery(($bytesToString(b)));
108096  				vs = _tuple$3[0];
108097  				e = _tuple$3[1];
108098  				if ($interfaceIsEqual(err, $ifaceNil)) {
108099  					err = e;
108100  				}
108101  				$s = 5; continue;
108102  			/* } else if (ct === "multipart/form-data") { */ case 4:
108103  			/* } */ case 5:
108104  		case 2:
108105  		$s = -1; return [vs, err];
108106  		/* */ } return; } if ($f === undefined) { $f = { $blk: parsePostForm }; } $f._r$1 = _r$1; $f._r$2 = _r$2; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f.b = b; $f.ct = ct; $f.e = e; $f.err = err; $f.maxFormSize = maxFormSize; $f.ok = ok; $f.r = r; $f.reader = reader; $f.vs = vs; $f.x$4 = x$4; $f.$s = $s; $f.$r = $r; return $f;
108107  	};
108108  	Request.ptr.prototype.ParseForm = function() {
108109  		var _r$1, _tuple, _tuple$1, e, err, newValues, r, $s, $r;
108110  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; e = $f.e; err = $f.err; newValues = $f.newValues; r = $f.r; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
108111  		r = this;
108112  		err = $ifaceNil;
108113  		/* */ if (r.PostForm === false) { $s = 1; continue; }
108114  		/* */ $s = 2; continue;
108115  		/* if (r.PostForm === false) { */ case 1:
108116  			/* */ if (r.Method === "POST" || r.Method === "PUT" || r.Method === "PATCH") { $s = 3; continue; }
108117  			/* */ $s = 4; continue;
108118  			/* if (r.Method === "POST" || r.Method === "PUT" || r.Method === "PATCH") { */ case 3:
108119  				_r$1 = parsePostForm(r); /* */ $s = 5; case 5: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
108120  				_tuple = _r$1;
108121  				r.PostForm = _tuple[0];
108122  				err = _tuple[1];
108123  			/* } */ case 4:
108124  			if (r.PostForm === false) {
108125  				r.PostForm = {};
108126  			}
108127  		/* } */ case 2:
108128  		if (r.Form === false) {
108129  			if ($keys(r.PostForm).length > 0) {
108130  				r.Form = {};
108131  				copyValues(r.Form, r.PostForm);
108132  			}
108133  			newValues = false;
108134  			if (!(r.URL === ptrType$20.nil)) {
108135  				e = $ifaceNil;
108136  				_tuple$1 = url.ParseQuery(r.URL.RawQuery);
108137  				newValues = _tuple$1[0];
108138  				e = _tuple$1[1];
108139  				if ($interfaceIsEqual(err, $ifaceNil)) {
108140  					err = e;
108141  				}
108142  			}
108143  			if (newValues === false) {
108144  				newValues = {};
108145  			}
108146  			if (r.Form === false) {
108147  				r.Form = newValues;
108148  			} else {
108149  				copyValues(r.Form, newValues);
108150  			}
108151  		}
108152  		$s = -1; return err;
108153  		/* */ } return; } if ($f === undefined) { $f = { $blk: Request.ptr.prototype.ParseForm }; } $f._r$1 = _r$1; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.e = e; $f.err = err; $f.newValues = newValues; $f.r = r; $f.$s = $s; $f.$r = $r; return $f;
108154  	};
108155  	Request.prototype.ParseForm = function() { return this.$val.ParseForm(); };
108156  	Request.ptr.prototype.ParseMultipartForm = function(maxMemory) {
108157  		var _entry, _entry$1, _entry$2, _i, _key, _key$1, _keys, _r$1, _r$2, _r$3, _ref, _tuple, _tuple$1, err, err$1, f, k, maxMemory, mr, r, v, $s, $r;
108158  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _entry = $f._entry; _entry$1 = $f._entry$1; _entry$2 = $f._entry$2; _i = $f._i; _key = $f._key; _key$1 = $f._key$1; _keys = $f._keys; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _ref = $f._ref; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; err = $f.err; err$1 = $f.err$1; f = $f.f; k = $f.k; maxMemory = $f.maxMemory; mr = $f.mr; r = $f.r; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
108159  		r = this;
108160  		if (r.MultipartForm === multipartByReader) {
108161  			$s = -1; return errors.New("http: multipart handled by MultipartReader");
108162  		}
108163  		/* */ if (r.Form === false) { $s = 1; continue; }
108164  		/* */ $s = 2; continue;
108165  		/* if (r.Form === false) { */ case 1:
108166  			_r$1 = r.ParseForm(); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
108167  			err = _r$1;
108168  			if (!($interfaceIsEqual(err, $ifaceNil))) {
108169  				$s = -1; return err;
108170  			}
108171  		/* } */ case 2:
108172  		if (!(r.MultipartForm === ptrType$21.nil)) {
108173  			$s = -1; return $ifaceNil;
108174  		}
108175  		_r$2 = r.multipartReader(); /* */ $s = 4; case 4: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
108176  		_tuple = _r$2;
108177  		mr = _tuple[0];
108178  		err$1 = _tuple[1];
108179  		if (!($interfaceIsEqual(err$1, $ifaceNil))) {
108180  			$s = -1; return err$1;
108181  		}
108182  		_r$3 = mr.ReadForm(maxMemory); /* */ $s = 5; case 5: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
108183  		_tuple$1 = _r$3;
108184  		f = _tuple$1[0];
108185  		err$1 = _tuple$1[1];
108186  		if (!($interfaceIsEqual(err$1, $ifaceNil))) {
108187  			$s = -1; return err$1;
108188  		}
108189  		if (r.PostForm === false) {
108190  			r.PostForm = {};
108191  		}
108192  		_ref = f.Value;
108193  		_i = 0;
108194  		_keys = $keys(_ref);
108195  		while (true) {
108196  			if (!(_i < _keys.length)) { break; }
108197  			_entry = _ref[_keys[_i]];
108198  			if (_entry === undefined) {
108199  				_i++;
108200  				continue;
108201  			}
108202  			k = _entry.k;
108203  			v = _entry.v;
108204  			_key = k; (r.Form || $throwRuntimeError("assignment to entry in nil map"))[$String.keyFor(_key)] = { k: _key, v: $appendSlice((_entry$1 = r.Form[$String.keyFor(k)], _entry$1 !== undefined ? _entry$1.v : sliceType$1.nil), v) };
108205  			_key$1 = k; (r.PostForm || $throwRuntimeError("assignment to entry in nil map"))[$String.keyFor(_key$1)] = { k: _key$1, v: $appendSlice((_entry$2 = r.PostForm[$String.keyFor(k)], _entry$2 !== undefined ? _entry$2.v : sliceType$1.nil), v) };
108206  			_i++;
108207  		}
108208  		r.MultipartForm = f;
108209  		$s = -1; return $ifaceNil;
108210  		/* */ } return; } if ($f === undefined) { $f = { $blk: Request.ptr.prototype.ParseMultipartForm }; } $f._entry = _entry; $f._entry$1 = _entry$1; $f._entry$2 = _entry$2; $f._i = _i; $f._key = _key; $f._key$1 = _key$1; $f._keys = _keys; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._ref = _ref; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.err = err; $f.err$1 = err$1; $f.f = f; $f.k = k; $f.maxMemory = maxMemory; $f.mr = mr; $f.r = r; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
108211  	};
108212  	Request.prototype.ParseMultipartForm = function(maxMemory) { return this.$val.ParseMultipartForm(maxMemory); };
108213  	Request.ptr.prototype.FormValue = function(key) {
108214  		var _entry, _r$1, key, r, vs, $s, $r;
108215  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _entry = $f._entry; _r$1 = $f._r$1; key = $f.key; r = $f.r; vs = $f.vs; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
108216  		r = this;
108217  		/* */ if (r.Form === false) { $s = 1; continue; }
108218  		/* */ $s = 2; continue;
108219  		/* if (r.Form === false) { */ case 1:
108220  			_r$1 = r.ParseMultipartForm(new $Int64(0, 33554432)); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
108221  			_r$1;
108222  		/* } */ case 2:
108223  		vs = (_entry = r.Form[$String.keyFor(key)], _entry !== undefined ? _entry.v : sliceType$1.nil);
108224  		if (vs.$length > 0) {
108225  			$s = -1; return (0 >= vs.$length ? ($throwRuntimeError("index out of range"), undefined) : vs.$array[vs.$offset + 0]);
108226  		}
108227  		$s = -1; return "";
108228  		/* */ } return; } if ($f === undefined) { $f = { $blk: Request.ptr.prototype.FormValue }; } $f._entry = _entry; $f._r$1 = _r$1; $f.key = key; $f.r = r; $f.vs = vs; $f.$s = $s; $f.$r = $r; return $f;
108229  	};
108230  	Request.prototype.FormValue = function(key) { return this.$val.FormValue(key); };
108231  	Request.ptr.prototype.PostFormValue = function(key) {
108232  		var _entry, _r$1, key, r, vs, $s, $r;
108233  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _entry = $f._entry; _r$1 = $f._r$1; key = $f.key; r = $f.r; vs = $f.vs; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
108234  		r = this;
108235  		/* */ if (r.PostForm === false) { $s = 1; continue; }
108236  		/* */ $s = 2; continue;
108237  		/* if (r.PostForm === false) { */ case 1:
108238  			_r$1 = r.ParseMultipartForm(new $Int64(0, 33554432)); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
108239  			_r$1;
108240  		/* } */ case 2:
108241  		vs = (_entry = r.PostForm[$String.keyFor(key)], _entry !== undefined ? _entry.v : sliceType$1.nil);
108242  		if (vs.$length > 0) {
108243  			$s = -1; return (0 >= vs.$length ? ($throwRuntimeError("index out of range"), undefined) : vs.$array[vs.$offset + 0]);
108244  		}
108245  		$s = -1; return "";
108246  		/* */ } return; } if ($f === undefined) { $f = { $blk: Request.ptr.prototype.PostFormValue }; } $f._entry = _entry; $f._r$1 = _r$1; $f.key = key; $f.r = r; $f.vs = vs; $f.$s = $s; $f.$r = $r; return $f;
108247  	};
108248  	Request.prototype.PostFormValue = function(key) { return this.$val.PostFormValue(key); };
108249  	Request.ptr.prototype.FormFile = function(key) {
108250  		var _entry, _r$1, _r$2, _tuple, err, err$1, f, fhs, key, r, $s, $r;
108251  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _entry = $f._entry; _r$1 = $f._r$1; _r$2 = $f._r$2; _tuple = $f._tuple; err = $f.err; err$1 = $f.err$1; f = $f.f; fhs = $f.fhs; key = $f.key; r = $f.r; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
108252  		r = this;
108253  		if (r.MultipartForm === multipartByReader) {
108254  			$s = -1; return [$ifaceNil, ptrType$88.nil, errors.New("http: multipart handled by MultipartReader")];
108255  		}
108256  		/* */ if (r.MultipartForm === ptrType$21.nil) { $s = 1; continue; }
108257  		/* */ $s = 2; continue;
108258  		/* if (r.MultipartForm === ptrType$21.nil) { */ case 1:
108259  			_r$1 = r.ParseMultipartForm(new $Int64(0, 33554432)); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
108260  			err = _r$1;
108261  			if (!($interfaceIsEqual(err, $ifaceNil))) {
108262  				$s = -1; return [$ifaceNil, ptrType$88.nil, err];
108263  			}
108264  		/* } */ case 2:
108265  		/* */ if (!(r.MultipartForm === ptrType$21.nil) && !(r.MultipartForm.File === false)) { $s = 4; continue; }
108266  		/* */ $s = 5; continue;
108267  		/* if (!(r.MultipartForm === ptrType$21.nil) && !(r.MultipartForm.File === false)) { */ case 4:
108268  			fhs = (_entry = r.MultipartForm.File[$String.keyFor(key)], _entry !== undefined ? _entry.v : sliceType$22.nil);
108269  			/* */ if (fhs.$length > 0) { $s = 6; continue; }
108270  			/* */ $s = 7; continue;
108271  			/* if (fhs.$length > 0) { */ case 6:
108272  				_r$2 = (0 >= fhs.$length ? ($throwRuntimeError("index out of range"), undefined) : fhs.$array[fhs.$offset + 0]).Open(); /* */ $s = 8; case 8: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
108273  				_tuple = _r$2;
108274  				f = _tuple[0];
108275  				err$1 = _tuple[1];
108276  				$s = -1; return [f, (0 >= fhs.$length ? ($throwRuntimeError("index out of range"), undefined) : fhs.$array[fhs.$offset + 0]), err$1];
108277  			/* } */ case 7:
108278  		/* } */ case 5:
108279  		$s = -1; return [$ifaceNil, ptrType$88.nil, $pkg.ErrMissingFile];
108280  		/* */ } return; } if ($f === undefined) { $f = { $blk: Request.ptr.prototype.FormFile }; } $f._entry = _entry; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._tuple = _tuple; $f.err = err; $f.err$1 = err$1; $f.f = f; $f.fhs = fhs; $f.key = key; $f.r = r; $f.$s = $s; $f.$r = $r; return $f;
108281  	};
108282  	Request.prototype.FormFile = function(key) { return this.$val.FormFile(key); };
108283  	Request.ptr.prototype.expectsContinue = function() {
108284  		var r;
108285  		r = this;
108286  		return hasToken(new Header(r.Header).get("Expect"), "100-continue");
108287  	};
108288  	Request.prototype.expectsContinue = function() { return this.$val.expectsContinue(); };
108289  	Request.ptr.prototype.wantsHttp10KeepAlive = function() {
108290  		var r;
108291  		r = this;
108292  		if (!((r.ProtoMajor === 1)) || !((r.ProtoMinor === 0))) {
108293  			return false;
108294  		}
108295  		return hasToken(new Header(r.Header).get("Connection"), "keep-alive");
108296  	};
108297  	Request.prototype.wantsHttp10KeepAlive = function() { return this.$val.wantsHttp10KeepAlive(); };
108298  	Request.ptr.prototype.wantsClose = function() {
108299  		var r;
108300  		r = this;
108301  		return hasToken(new Header(r.Header).get("Connection"), "close");
108302  	};
108303  	Request.prototype.wantsClose = function() { return this.$val.wantsClose(); };
108304  	Request.ptr.prototype.closeBody = function() {
108305  		var _r$1, r, $s, $r;
108306  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; r = $f.r; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
108307  		r = this;
108308  		/* */ if (!($interfaceIsEqual(r.Body, $ifaceNil))) { $s = 1; continue; }
108309  		/* */ $s = 2; continue;
108310  		/* if (!($interfaceIsEqual(r.Body, $ifaceNil))) { */ case 1:
108311  			_r$1 = r.Body.Close(); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
108312  			_r$1;
108313  		/* } */ case 2:
108314  		$s = -1; return;
108315  		/* */ } return; } if ($f === undefined) { $f = { $blk: Request.ptr.prototype.closeBody }; } $f._r$1 = _r$1; $f.r = r; $f.$s = $s; $f.$r = $r; return $f;
108316  	};
108317  	Request.prototype.closeBody = function() { return this.$val.closeBody(); };
108318  	Request.ptr.prototype.isReplayable = function() {
108319  		var _1, r;
108320  		r = this;
108321  		if ($interfaceIsEqual(r.Body, $ifaceNil) || $interfaceIsEqual(r.Body, new $pkg.NoBody.constructor.elem($pkg.NoBody)) || !(r.GetBody === $throwNilPointerError)) {
108322  			_1 = valueOrDefault(r.Method, "GET");
108323  			if (_1 === ("GET") || _1 === ("HEAD") || _1 === ("OPTIONS") || _1 === ("TRACE")) {
108324  				return true;
108325  			}
108326  		}
108327  		return false;
108328  	};
108329  	Request.prototype.isReplayable = function() { return this.$val.isReplayable(); };
108330  	Request.ptr.prototype.outgoingLength = function() {
108331  		var r, x$4;
108332  		r = this;
108333  		if ($interfaceIsEqual(r.Body, $ifaceNil) || $interfaceIsEqual(r.Body, new $pkg.NoBody.constructor.elem($pkg.NoBody))) {
108334  			return new $Int64(0, 0);
108335  		}
108336  		if (!((x$4 = r.ContentLength, (x$4.$high === 0 && x$4.$low === 0)))) {
108337  			return r.ContentLength;
108338  		}
108339  		return new $Int64(-1, 4294967295);
108340  	};
108341  	Request.prototype.outgoingLength = function() { return this.$val.outgoingLength(); };
108342  	requestMethodUsuallyLacksBody = function(method) {
108343  		var _1, method;
108344  		_1 = method;
108345  		if (_1 === ("GET") || _1 === ("HEAD") || _1 === ("DELETE") || _1 === ("OPTIONS") || _1 === ("PROPFIND") || _1 === ("SEARCH")) {
108346  			return true;
108347  		}
108348  		return false;
108349  	};
108350  	Response.ptr.prototype.Cookies = function() {
108351  		var _r$1, r, $s, $r;
108352  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; r = $f.r; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
108353  		r = this;
108354  		_r$1 = readSetCookies(r.Header); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
108355  		$s = -1; return _r$1;
108356  		/* */ } return; } if ($f === undefined) { $f = { $blk: Response.ptr.prototype.Cookies }; } $f._r$1 = _r$1; $f.r = r; $f.$s = $s; $f.$r = $r; return $f;
108357  	};
108358  	Response.prototype.Cookies = function() { return this.$val.Cookies(); };
108359  	Response.ptr.prototype.Location = function() {
108360  		var _r$1, _r$2, lv, r, $s, $r;
108361  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; _r$2 = $f._r$2; lv = $f.lv; r = $f.r; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
108362  		r = this;
108363  		lv = new Header(r.Header).Get("Location");
108364  		if (lv === "") {
108365  			$s = -1; return [ptrType$20.nil, $pkg.ErrNoLocation];
108366  		}
108367  		/* */ if (!(r.Request === ptrType$7.nil) && !(r.Request.URL === ptrType$20.nil)) { $s = 1; continue; }
108368  		/* */ $s = 2; continue;
108369  		/* if (!(r.Request === ptrType$7.nil) && !(r.Request.URL === ptrType$20.nil)) { */ case 1:
108370  			_r$1 = r.Request.URL.Parse(lv); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
108371  			$s = -1; return _r$1;
108372  		/* } */ case 2:
108373  		_r$2 = url.Parse(lv); /* */ $s = 4; case 4: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
108374  		$s = -1; return _r$2;
108375  		/* */ } return; } if ($f === undefined) { $f = { $blk: Response.ptr.prototype.Location }; } $f._r$1 = _r$1; $f._r$2 = _r$2; $f.lv = lv; $f.r = r; $f.$s = $s; $f.$r = $r; return $f;
108376  	};
108377  	Response.prototype.Location = function() { return this.$val.Location(); };
108378  	ReadResponse = function(r, req) {
108379  		var _r$1, _r$2, _r$3, _r$4, _tuple, _tuple$1, _tuple$2, _tuple$3, err, i, i$1, line, mimeHeader, ok, r, req, resp, statusCode, tp, $s, $r;
108380  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; err = $f.err; i = $f.i; i$1 = $f.i$1; line = $f.line; mimeHeader = $f.mimeHeader; ok = $f.ok; r = $f.r; req = $f.req; resp = $f.resp; statusCode = $f.statusCode; tp = $f.tp; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
108381  		tp = textproto.NewReader(r);
108382  		resp = new Response.ptr("", 0, "", 0, 0, false, $ifaceNil, new $Int64(0, 0), sliceType$1.nil, false, false, false, req, ptrType$18.nil);
108383  		_r$1 = tp.ReadLine(); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
108384  		_tuple = _r$1;
108385  		line = _tuple[0];
108386  		err = _tuple[1];
108387  		if (!($interfaceIsEqual(err, $ifaceNil))) {
108388  			if ($interfaceIsEqual(err, io.EOF)) {
108389  				err = io.ErrUnexpectedEOF;
108390  			}
108391  			$s = -1; return [ptrType$17.nil, err];
108392  		}
108393  		i = strings.IndexByte(line, 32);
108394  		/* */ if (i === -1) { $s = 2; continue; }
108395  		/* */ $s = 3; continue;
108396  		/* if (i === -1) { */ case 2:
108397  			$s = -1; return [ptrType$17.nil, new badStringError.ptr("malformed HTTP response", line)];
108398  		/* } else { */ case 3:
108399  			resp.Proto = $substring(line, 0, i);
108400  			_r$2 = strings.TrimLeft($substring(line, (i + 1 >> 0)), " "); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
108401  			resp.Status = _r$2;
108402  		/* } */ case 4:
108403  		statusCode = resp.Status;
108404  		i$1 = strings.IndexByte(resp.Status, 32);
108405  		if (!((i$1 === -1))) {
108406  			statusCode = $substring(resp.Status, 0, i$1);
108407  		}
108408  		if (!((statusCode.length === 3))) {
108409  			$s = -1; return [ptrType$17.nil, new badStringError.ptr("malformed HTTP status code", statusCode)];
108410  		}
108411  		_tuple$1 = strconv.Atoi(statusCode);
108412  		resp.StatusCode = _tuple$1[0];
108413  		err = _tuple$1[1];
108414  		if (!($interfaceIsEqual(err, $ifaceNil)) || resp.StatusCode < 0) {
108415  			$s = -1; return [ptrType$17.nil, new badStringError.ptr("malformed HTTP status code", statusCode)];
108416  		}
108417  		ok = false;
108418  		_tuple$2 = ParseHTTPVersion(resp.Proto);
108419  		resp.ProtoMajor = _tuple$2[0];
108420  		resp.ProtoMinor = _tuple$2[1];
108421  		ok = _tuple$2[2];
108422  		if (!ok) {
108423  			$s = -1; return [ptrType$17.nil, new badStringError.ptr("malformed HTTP version", resp.Proto)];
108424  		}
108425  		_r$3 = tp.ReadMIMEHeader(); /* */ $s = 6; case 6: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
108426  		_tuple$3 = _r$3;
108427  		mimeHeader = _tuple$3[0];
108428  		err = _tuple$3[1];
108429  		if (!($interfaceIsEqual(err, $ifaceNil))) {
108430  			if ($interfaceIsEqual(err, io.EOF)) {
108431  				err = io.ErrUnexpectedEOF;
108432  			}
108433  			$s = -1; return [ptrType$17.nil, err];
108434  		}
108435  		resp.Header = (mimeHeader);
108436  		fixPragmaCacheControl(resp.Header);
108437  		_r$4 = readTransfer(resp, r); /* */ $s = 7; case 7: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
108438  		err = _r$4;
108439  		if (!($interfaceIsEqual(err, $ifaceNil))) {
108440  			$s = -1; return [ptrType$17.nil, err];
108441  		}
108442  		$s = -1; return [resp, $ifaceNil];
108443  		/* */ } return; } if ($f === undefined) { $f = { $blk: ReadResponse }; } $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f.err = err; $f.i = i; $f.i$1 = i$1; $f.line = line; $f.mimeHeader = mimeHeader; $f.ok = ok; $f.r = r; $f.req = req; $f.resp = resp; $f.statusCode = statusCode; $f.tp = tp; $f.$s = $s; $f.$r = $r; return $f;
108444  	};
108445  	$pkg.ReadResponse = ReadResponse;
108446  	fixPragmaCacheControl = function(header) {
108447  		var _entry, _entry$1, _key, _tuple, _tuple$1, header, hp, ok, presentcc;
108448  		_tuple = (_entry = header[$String.keyFor("Pragma")], _entry !== undefined ? [_entry.v, true] : [sliceType$1.nil, false]);
108449  		hp = _tuple[0];
108450  		ok = _tuple[1];
108451  		if (ok && hp.$length > 0 && (0 >= hp.$length ? ($throwRuntimeError("index out of range"), undefined) : hp.$array[hp.$offset + 0]) === "no-cache") {
108452  			_tuple$1 = (_entry$1 = header[$String.keyFor("Cache-Control")], _entry$1 !== undefined ? [_entry$1.v, true] : [sliceType$1.nil, false]);
108453  			presentcc = _tuple$1[1];
108454  			if (!presentcc) {
108455  				_key = "Cache-Control"; (header || $throwRuntimeError("assignment to entry in nil map"))[$String.keyFor(_key)] = { k: _key, v: new sliceType$1(["no-cache"]) };
108456  			}
108457  		}
108458  	};
108459  	Response.ptr.prototype.ProtoAtLeast = function(major, minor) {
108460  		var major, minor, r;
108461  		r = this;
108462  		return r.ProtoMajor > major || (r.ProtoMajor === major) && r.ProtoMinor >= minor;
108463  	};
108464  	Response.prototype.ProtoAtLeast = function(major, minor) { return this.$val.ProtoAtLeast(major, minor); };
108465  	Response.ptr.prototype.Write = function(w) {
108466  		var _entry, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, _tuple$5, buf, contentLengthAlreadySent, err, err$1, err$2, err$3, err$4, n, ok, r, r1, text, tw, w, x$4, x$5, x$6, x$7, $s, $r;
108467  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _entry = $f._entry; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _r$8 = $f._r$8; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; _tuple$4 = $f._tuple$4; _tuple$5 = $f._tuple$5; buf = $f.buf; contentLengthAlreadySent = $f.contentLengthAlreadySent; err = $f.err; err$1 = $f.err$1; err$2 = $f.err$2; err$3 = $f.err$3; err$4 = $f.err$4; n = $f.n; ok = $f.ok; r = $f.r; r1 = $f.r1; text = $f.text; tw = $f.tw; w = $f.w; x$4 = $f.x$4; x$5 = $f.x$5; x$6 = $f.x$6; x$7 = $f.x$7; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
108468  		r = this;
108469  		text = r.Status;
108470  		if (text === "") {
108471  			ok = false;
108472  			_tuple = (_entry = statusText[$Int.keyFor(r.StatusCode)], _entry !== undefined ? [_entry.v, true] : ["", false]);
108473  			text = _tuple[0];
108474  			ok = _tuple[1];
108475  			if (!ok) {
108476  				text = "status code " + strconv.Itoa(r.StatusCode);
108477  			}
108478  		} else {
108479  			text = strings.TrimPrefix(text, strconv.Itoa(r.StatusCode) + " ");
108480  		}
108481  		_r$1 = fmt.Fprintf(w, "HTTP/%d.%d %03d %s\r\n", new sliceType([new $Int(r.ProtoMajor), new $Int(r.ProtoMinor), new $Int(r.StatusCode), new $String(text)])); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
108482  		_tuple$1 = _r$1;
108483  		err = _tuple$1[1];
108484  		if (!($interfaceIsEqual(err, $ifaceNil))) {
108485  			$s = -1; return err;
108486  		}
108487  		r1 = new Response.ptr("", 0, "", 0, 0, false, $ifaceNil, new $Int64(0, 0), sliceType$1.nil, false, false, false, ptrType$7.nil, ptrType$18.nil);
108488  		Response.copy(r1, r);
108489  		/* */ if ((x$4 = r1.ContentLength, (x$4.$high === 0 && x$4.$low === 0)) && !($interfaceIsEqual(r1.Body, $ifaceNil))) { $s = 2; continue; }
108490  		/* */ $s = 3; continue;
108491  		/* if ((x$4 = r1.ContentLength, (x$4.$high === 0 && x$4.$low === 0)) && !($interfaceIsEqual(r1.Body, $ifaceNil))) { */ case 2:
108492  			buf = arrayType$5.zero();
108493  			_r$2 = r1.Body.Read(new sliceType$3(buf)); /* */ $s = 4; case 4: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
108494  			_tuple$2 = _r$2;
108495  			n = _tuple$2[0];
108496  			err$1 = _tuple$2[1];
108497  			if (!($interfaceIsEqual(err$1, $ifaceNil)) && !($interfaceIsEqual(err$1, io.EOF))) {
108498  				$s = -1; return err$1;
108499  			}
108500  			if (n === 0) {
108501  				r1.Body = new $pkg.NoBody.constructor.elem($pkg.NoBody);
108502  			} else {
108503  				r1.ContentLength = new $Int64(-1, 4294967295);
108504  				r1.Body = (x$5 = new structType$1.ptr(io.MultiReader(new sliceType$23([bytes.NewReader($subslice(new sliceType$3(buf), 0, 1)), r.Body])), r.Body), new x$5.constructor.elem(x$5));
108505  			}
108506  		/* } */ case 3:
108507  		if ((x$6 = r1.ContentLength, (x$6.$high === -1 && x$6.$low === 4294967295)) && !r1.Close && r1.ProtoAtLeast(1, 1) && !chunked(r1.TransferEncoding) && !r1.Uncompressed) {
108508  			r1.Close = true;
108509  		}
108510  		_r$3 = newTransferWriter(r1); /* */ $s = 5; case 5: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
108511  		_tuple$3 = _r$3;
108512  		tw = _tuple$3[0];
108513  		err$2 = _tuple$3[1];
108514  		if (!($interfaceIsEqual(err$2, $ifaceNil))) {
108515  			$s = -1; return err$2;
108516  		}
108517  		_r$4 = tw.WriteHeader(w); /* */ $s = 6; case 6: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
108518  		err$2 = _r$4;
108519  		if (!($interfaceIsEqual(err$2, $ifaceNil))) {
108520  			$s = -1; return err$2;
108521  		}
108522  		_r$5 = new Header(r.Header).WriteSubset(w, respExcludeHeader); /* */ $s = 7; case 7: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
108523  		err$2 = _r$5;
108524  		if (!($interfaceIsEqual(err$2, $ifaceNil))) {
108525  			$s = -1; return err$2;
108526  		}
108527  		contentLengthAlreadySent = tw.shouldSendContentLength();
108528  		/* */ if ((x$7 = r1.ContentLength, (x$7.$high === 0 && x$7.$low === 0)) && !chunked(r1.TransferEncoding) && !contentLengthAlreadySent && bodyAllowedForStatus(r.StatusCode)) { $s = 8; continue; }
108529  		/* */ $s = 9; continue;
108530  		/* if ((x$7 = r1.ContentLength, (x$7.$high === 0 && x$7.$low === 0)) && !chunked(r1.TransferEncoding) && !contentLengthAlreadySent && bodyAllowedForStatus(r.StatusCode)) { */ case 8:
108531  			_r$6 = io.WriteString(w, "Content-Length: 0\r\n"); /* */ $s = 10; case 10: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
108532  			_tuple$4 = _r$6;
108533  			err$3 = _tuple$4[1];
108534  			if (!($interfaceIsEqual(err$3, $ifaceNil))) {
108535  				$s = -1; return err$3;
108536  			}
108537  		/* } */ case 9:
108538  		_r$7 = io.WriteString(w, "\r\n"); /* */ $s = 11; case 11: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
108539  		_tuple$5 = _r$7;
108540  		err$4 = _tuple$5[1];
108541  		if (!($interfaceIsEqual(err$4, $ifaceNil))) {
108542  			$s = -1; return err$4;
108543  		}
108544  		_r$8 = tw.WriteBody(w); /* */ $s = 12; case 12: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
108545  		err$2 = _r$8;
108546  		if (!($interfaceIsEqual(err$2, $ifaceNil))) {
108547  			$s = -1; return err$2;
108548  		}
108549  		$s = -1; return $ifaceNil;
108550  		/* */ } return; } if ($f === undefined) { $f = { $blk: Response.ptr.prototype.Write }; } $f._entry = _entry; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._r$8 = _r$8; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f._tuple$4 = _tuple$4; $f._tuple$5 = _tuple$5; $f.buf = buf; $f.contentLengthAlreadySent = contentLengthAlreadySent; $f.err = err; $f.err$1 = err$1; $f.err$2 = err$2; $f.err$3 = err$3; $f.err$4 = err$4; $f.n = n; $f.ok = ok; $f.r = r; $f.r1 = r1; $f.text = text; $f.tw = tw; $f.w = w; $f.x$4 = x$4; $f.x$5 = x$5; $f.x$6 = x$6; $f.x$7 = x$7; $f.$s = $s; $f.$r = $r; return $f;
108551  	};
108552  	Response.prototype.Write = function(w) { return this.$val.Write(w); };
108553  	Response.ptr.prototype.closeBody = function() {
108554  		var _r$1, r, $s, $r;
108555  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; r = $f.r; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
108556  		r = this;
108557  		/* */ if (!($interfaceIsEqual(r.Body, $ifaceNil))) { $s = 1; continue; }
108558  		/* */ $s = 2; continue;
108559  		/* if (!($interfaceIsEqual(r.Body, $ifaceNil))) { */ case 1:
108560  			_r$1 = r.Body.Close(); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
108561  			_r$1;
108562  		/* } */ case 2:
108563  		$s = -1; return;
108564  		/* */ } return; } if ($f === undefined) { $f = { $blk: Response.ptr.prototype.closeBody }; } $f._r$1 = _r$1; $f.r = r; $f.$s = $s; $f.$r = $r; return $f;
108565  	};
108566  	Response.prototype.closeBody = function() { return this.$val.closeBody(); };
108567  	conn.ptr.prototype.hijacked = function() {
108568  		var c, $s, $deferred, $r;
108569  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; c = $f.c; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
108570  		c = this;
108571  		$r = c.mu.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
108572  		$deferred.push([$methodVal(c.mu, "Unlock"), []]);
108573  		$s = -1; return c.hijackedv;
108574  		/* */ } return; } } catch(err) { $err = err; $s = -1; return false; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: conn.ptr.prototype.hijacked }; } $f.c = c; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
108575  	};
108576  	conn.prototype.hijacked = function() { return this.$val.hijacked(); };
108577  	conn.ptr.prototype.hijackLocked = function() {
108578  		var _r$1, _r$2, _r$3, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tuple, buf, c, err, err$1, rwc, $s, $r;
108579  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tmp$4 = $f._tmp$4; _tmp$5 = $f._tmp$5; _tuple = $f._tuple; buf = $f.buf; c = $f.c; err = $f.err; err$1 = $f.err$1; rwc = $f.rwc; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
108580  		rwc = $ifaceNil;
108581  		buf = ptrType$89.nil;
108582  		err = $ifaceNil;
108583  		c = this;
108584  		if (c.hijackedv) {
108585  			_tmp = $ifaceNil;
108586  			_tmp$1 = ptrType$89.nil;
108587  			_tmp$2 = $pkg.ErrHijacked;
108588  			rwc = _tmp;
108589  			buf = _tmp$1;
108590  			err = _tmp$2;
108591  			$s = -1; return [rwc, buf, err];
108592  		}
108593  		$r = c.r.abortPendingRead(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
108594  		c.hijackedv = true;
108595  		rwc = c.rwc;
108596  		_r$1 = rwc.SetDeadline(new time.Time.ptr(new $Uint64(0, 0), new $Int64(0, 0), ptrType$1.nil)); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
108597  		_r$1;
108598  		buf = bufio.NewReadWriter(c.bufr, bufio.NewWriter(rwc));
108599  		/* */ if (c.r.hasByte) { $s = 3; continue; }
108600  		/* */ $s = 4; continue;
108601  		/* if (c.r.hasByte) { */ case 3:
108602  			_r$2 = c.bufr.Peek(c.bufr.Buffered() + 1 >> 0); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
108603  			_tuple = _r$2;
108604  			err$1 = _tuple[1];
108605  			/* */ if (!($interfaceIsEqual(err$1, $ifaceNil))) { $s = 6; continue; }
108606  			/* */ $s = 7; continue;
108607  			/* if (!($interfaceIsEqual(err$1, $ifaceNil))) { */ case 6:
108608  				_tmp$3 = $ifaceNil;
108609  				_tmp$4 = ptrType$89.nil;
108610  				_r$3 = fmt.Errorf("unexpected Peek failure reading buffered byte: %v", new sliceType([err$1])); /* */ $s = 8; case 8: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
108611  				_tmp$5 = _r$3;
108612  				rwc = _tmp$3;
108613  				buf = _tmp$4;
108614  				err = _tmp$5;
108615  				$s = -1; return [rwc, buf, err];
108616  			/* } */ case 7:
108617  		/* } */ case 4:
108618  		$r = c.setState(rwc, 3); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
108619  		$s = -1; return [rwc, buf, err];
108620  		/* */ } return; } if ($f === undefined) { $f = { $blk: conn.ptr.prototype.hijackLocked }; } $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tmp$4 = _tmp$4; $f._tmp$5 = _tmp$5; $f._tuple = _tuple; $f.buf = buf; $f.c = c; $f.err = err; $f.err$1 = err$1; $f.rwc = rwc; $f.$s = $s; $f.$r = $r; return $f;
108621  	};
108622  	conn.prototype.hijackLocked = function() { return this.$val.hijackLocked(); };
108623  	chunkWriter.ptr.prototype.Write = function(p) {
108624  		var _r$1, _r$2, _r$3, _r$4, _r$5, _tmp, _tmp$1, _tuple, _tuple$1, _tuple$2, cw, err, n, p, $s, $r;
108625  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; cw = $f.cw; err = $f.err; n = $f.n; p = $f.p; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
108626  		n = 0;
108627  		err = $ifaceNil;
108628  		cw = this;
108629  		/* */ if (!cw.wroteHeader) { $s = 1; continue; }
108630  		/* */ $s = 2; continue;
108631  		/* if (!cw.wroteHeader) { */ case 1:
108632  			$r = cw.writeHeader(p); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
108633  		/* } */ case 2:
108634  		if (cw.res.req.Method === "HEAD") {
108635  			_tmp = p.$length;
108636  			_tmp$1 = $ifaceNil;
108637  			n = _tmp;
108638  			err = _tmp$1;
108639  			$s = -1; return [n, err];
108640  		}
108641  		/* */ if (cw.chunking) { $s = 4; continue; }
108642  		/* */ $s = 5; continue;
108643  		/* if (cw.chunking) { */ case 4:
108644  			_r$1 = fmt.Fprintf(cw.res.conn.bufw, "%x\r\n", new sliceType([new $Int(p.$length)])); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
108645  			_tuple = _r$1;
108646  			err = _tuple[1];
108647  			/* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 7; continue; }
108648  			/* */ $s = 8; continue;
108649  			/* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 7:
108650  				_r$2 = cw.res.conn.rwc.Close(); /* */ $s = 9; case 9: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
108651  				_r$2;
108652  				$s = -1; return [n, err];
108653  			/* } */ case 8:
108654  		/* } */ case 5:
108655  		_r$3 = cw.res.conn.bufw.Write(p); /* */ $s = 10; case 10: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
108656  		_tuple$1 = _r$3;
108657  		n = _tuple$1[0];
108658  		err = _tuple$1[1];
108659  		/* */ if (cw.chunking && $interfaceIsEqual(err, $ifaceNil)) { $s = 11; continue; }
108660  		/* */ $s = 12; continue;
108661  		/* if (cw.chunking && $interfaceIsEqual(err, $ifaceNil)) { */ case 11:
108662  			_r$4 = cw.res.conn.bufw.Write(crlf); /* */ $s = 13; case 13: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
108663  			_tuple$2 = _r$4;
108664  			err = _tuple$2[1];
108665  		/* } */ case 12:
108666  		/* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 14; continue; }
108667  		/* */ $s = 15; continue;
108668  		/* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 14:
108669  			_r$5 = cw.res.conn.rwc.Close(); /* */ $s = 16; case 16: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
108670  			_r$5;
108671  		/* } */ case 15:
108672  		$s = -1; return [n, err];
108673  		/* */ } return; } if ($f === undefined) { $f = { $blk: chunkWriter.ptr.prototype.Write }; } $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f.cw = cw; $f.err = err; $f.n = n; $f.p = p; $f.$s = $s; $f.$r = $r; return $f;
108674  	};
108675  	chunkWriter.prototype.Write = function(p) { return this.$val.Write(p); };
108676  	chunkWriter.ptr.prototype.flush = function() {
108677  		var _r$1, cw, $s, $r;
108678  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; cw = $f.cw; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
108679  		cw = this;
108680  		/* */ if (!cw.wroteHeader) { $s = 1; continue; }
108681  		/* */ $s = 2; continue;
108682  		/* if (!cw.wroteHeader) { */ case 1:
108683  			$r = cw.writeHeader(sliceType$3.nil); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
108684  		/* } */ case 2:
108685  		_r$1 = cw.res.conn.bufw.Flush(); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
108686  		_r$1;
108687  		$s = -1; return;
108688  		/* */ } return; } if ($f === undefined) { $f = { $blk: chunkWriter.ptr.prototype.flush }; } $f._r$1 = _r$1; $f.cw = cw; $f.$s = $s; $f.$r = $r; return $f;
108689  	};
108690  	chunkWriter.prototype.flush = function() { return this.$val.flush(); };
108691  	chunkWriter.ptr.prototype.close = function() {
108692  		var _r$1, _r$2, _r$3, bw, cw, trailers, $s, $r;
108693  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; bw = $f.bw; cw = $f.cw; trailers = $f.trailers; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
108694  		cw = this;
108695  		/* */ if (!cw.wroteHeader) { $s = 1; continue; }
108696  		/* */ $s = 2; continue;
108697  		/* if (!cw.wroteHeader) { */ case 1:
108698  			$r = cw.writeHeader(sliceType$3.nil); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
108699  		/* } */ case 2:
108700  		/* */ if (cw.chunking) { $s = 4; continue; }
108701  		/* */ $s = 5; continue;
108702  		/* if (cw.chunking) { */ case 4:
108703  			bw = cw.res.conn.bufw;
108704  			_r$1 = bw.WriteString("0\r\n"); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
108705  			_r$1;
108706  			trailers = cw.res.finalTrailers();
108707  			/* */ if (!(trailers === false)) { $s = 7; continue; }
108708  			/* */ $s = 8; continue;
108709  			/* if (!(trailers === false)) { */ case 7:
108710  				_r$2 = new Header(trailers).Write(bw); /* */ $s = 9; case 9: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
108711  				_r$2;
108712  			/* } */ case 8:
108713  			_r$3 = bw.WriteString("\r\n"); /* */ $s = 10; case 10: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
108714  			_r$3;
108715  		/* } */ case 5:
108716  		$s = -1; return;
108717  		/* */ } return; } if ($f === undefined) { $f = { $blk: chunkWriter.ptr.prototype.close }; } $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f.bw = bw; $f.cw = cw; $f.trailers = trailers; $f.$s = $s; $f.$r = $r; return $f;
108718  	};
108719  	chunkWriter.prototype.close = function() { return this.$val.close(); };
108720  	response.ptr.prototype.finalTrailers = function() {
108721  		var _entry, _entry$1, _i, _i$1, _i$2, _key, _keys, _ref, _ref$1, _ref$2, k, k$1, t, v, vv, w;
108722  		w = this;
108723  		t = false;
108724  		_ref = w.handlerHeader;
108725  		_i = 0;
108726  		_keys = $keys(_ref);
108727  		while (true) {
108728  			if (!(_i < _keys.length)) { break; }
108729  			_entry = _ref[_keys[_i]];
108730  			if (_entry === undefined) {
108731  				_i++;
108732  				continue;
108733  			}
108734  			k = _entry.k;
108735  			vv = _entry.v;
108736  			if (strings.HasPrefix(k, "Trailer:")) {
108737  				if (t === false) {
108738  					t = {};
108739  				}
108740  				_key = strings.TrimPrefix(k, "Trailer:"); (t || $throwRuntimeError("assignment to entry in nil map"))[$String.keyFor(_key)] = { k: _key, v: vv };
108741  			}
108742  			_i++;
108743  		}
108744  		_ref$1 = w.trailers;
108745  		_i$1 = 0;
108746  		while (true) {
108747  			if (!(_i$1 < _ref$1.$length)) { break; }
108748  			k$1 = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]);
108749  			if (t === false) {
108750  				t = {};
108751  			}
108752  			_ref$2 = (_entry$1 = w.handlerHeader[$String.keyFor(k$1)], _entry$1 !== undefined ? _entry$1.v : sliceType$1.nil);
108753  			_i$2 = 0;
108754  			while (true) {
108755  				if (!(_i$2 < _ref$2.$length)) { break; }
108756  				v = ((_i$2 < 0 || _i$2 >= _ref$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$2.$array[_ref$2.$offset + _i$2]);
108757  				new Header(t).Add(k$1, v);
108758  				_i$2++;
108759  			}
108760  			_i$1++;
108761  		}
108762  		return t;
108763  	};
108764  	response.prototype.finalTrailers = function() { return this.$val.finalTrailers(); };
108765  	$ptrType(atomicBool).prototype.isSet = function() {
108766  		var _ptr, b;
108767  		b = this;
108768  		return !((atomic.LoadInt32(((_ptr = b, new ptrType$90(function() { return (_ptr.$get() >> 0); }, function($v) { _ptr.$set(($v >> 0)); }, _ptr.$target)))) === 0));
108769  	};
108770  	$ptrType(atomicBool).prototype.setTrue = function() {
108771  		var _ptr, b;
108772  		b = this;
108773  		atomic.StoreInt32(((_ptr = b, new ptrType$90(function() { return (_ptr.$get() >> 0); }, function($v) { _ptr.$set(($v >> 0)); }, _ptr.$target))), 1);
108774  	};
108775  	response.ptr.prototype.declareTrailer = function(k) {
108776  		var _1, k, w;
108777  		w = this;
108778  		k = CanonicalHeaderKey(k);
108779  		_1 = k;
108780  		if (_1 === ("Transfer-Encoding") || _1 === ("Content-Length") || _1 === ("Trailer")) {
108781  			return;
108782  		}
108783  		w.trailers = $append(w.trailers, k);
108784  	};
108785  	response.prototype.declareTrailer = function(k) { return this.$val.declareTrailer(k); };
108786  	response.ptr.prototype.requestTooLarge = function() {
108787  		var w;
108788  		w = this;
108789  		w.closeAfterReply = true;
108790  		w.requestBodyLimitHit = true;
108791  		if (!w.wroteHeader) {
108792  			new Header(w.Header()).Set("Connection", "close");
108793  		}
108794  	};
108795  	response.prototype.requestTooLarge = function() { return this.$val.requestTooLarge(); };
108796  	response.ptr.prototype.needsSniff = function() {
108797  		var _entry, _tuple, haveType, w, x$4;
108798  		w = this;
108799  		_tuple = (_entry = w.handlerHeader[$String.keyFor("Content-Type")], _entry !== undefined ? [_entry.v, true] : [sliceType$1.nil, false]);
108800  		haveType = _tuple[1];
108801  		return !w.cw.wroteHeader && !haveType && (x$4 = w.written, (x$4.$high < 0 || (x$4.$high === 0 && x$4.$low < 512)));
108802  	};
108803  	response.prototype.needsSniff = function() { return this.$val.needsSniff(); };
108804  	srcIsRegularFile = function(src) {
108805  		var _r$1, _r$2, _r$3, _r$4, _ref, _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, _tuple$1, err, err$1, fi, isRegular, src, v, v$1, v$2, $s, $r;
108806  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _ref = $f._ref; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; err = $f.err; err$1 = $f.err$1; fi = $f.fi; isRegular = $f.isRegular; src = $f.src; v = $f.v; v$1 = $f.v$1; v$2 = $f.v$2; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
108807  		isRegular = false;
108808  		err = $ifaceNil;
108809  		_ref = src;
108810  		/* */ if ($assertType(_ref, ptrType$91, true)[1]) { $s = 1; continue; }
108811  		/* */ if ($assertType(_ref, ptrType$92, true)[1]) { $s = 2; continue; }
108812  		/* */ $s = 3; continue;
108813  		/* if ($assertType(_ref, ptrType$91, true)[1]) { */ case 1:
108814  			v = _ref.$val;
108815  			_r$1 = v.Stat(); /* */ $s = 5; case 5: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
108816  			_tuple = _r$1;
108817  			fi = _tuple[0];
108818  			err$1 = _tuple[1];
108819  			if (!($interfaceIsEqual(err$1, $ifaceNil))) {
108820  				_tmp = false;
108821  				_tmp$1 = err$1;
108822  				isRegular = _tmp;
108823  				err = _tmp$1;
108824  				$s = -1; return [isRegular, err];
108825  			}
108826  			_r$2 = fi.Mode(); /* */ $s = 6; case 6: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
108827  			_r$3 = new os.FileMode(_r$2).IsRegular(); /* */ $s = 7; case 7: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
108828  			_tmp$2 = _r$3;
108829  			_tmp$3 = $ifaceNil;
108830  			isRegular = _tmp$2;
108831  			err = _tmp$3;
108832  			$s = -1; return [isRegular, err];
108833  		/* } else if ($assertType(_ref, ptrType$92, true)[1]) { */ case 2:
108834  			v$1 = _ref.$val;
108835  			_r$4 = srcIsRegularFile(v$1.R); /* */ $s = 8; case 8: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
108836  			_tuple$1 = _r$4;
108837  			isRegular = _tuple$1[0];
108838  			err = _tuple$1[1];
108839  			$s = -1; return [isRegular, err];
108840  		/* } else { */ case 3:
108841  			v$2 = _ref;
108842  			$s = -1; return [isRegular, err];
108843  		/* } */ case 4:
108844  		$s = -1; return [isRegular, err];
108845  		/* */ } return; } if ($f === undefined) { $f = { $blk: srcIsRegularFile }; } $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._ref = _ref; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.err = err; $f.err$1 = err$1; $f.fi = fi; $f.isRegular = isRegular; $f.src = src; $f.v = v; $f.v$1 = v$1; $f.v$2 = v$2; $f.$s = $s; $f.$r = $r; return $f;
108846  	};
108847  	response.ptr.prototype.ReadFrom = function(src) {
108848  		var _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, _tuple$5, bufp, err, err$1, err$2, n, n0, n0$1, n0$2, ok, regFile, rf, src, w, x$10, x$11, x$4, x$5, x$6, x$7, x$8, x$9, $s, $deferred, $r;
108849  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tmp$4 = $f._tmp$4; _tmp$5 = $f._tmp$5; _tmp$6 = $f._tmp$6; _tmp$7 = $f._tmp$7; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; _tuple$4 = $f._tuple$4; _tuple$5 = $f._tuple$5; bufp = $f.bufp; err = $f.err; err$1 = $f.err$1; err$2 = $f.err$2; n = $f.n; n0 = $f.n0; n0$1 = $f.n0$1; n0$2 = $f.n0$2; ok = $f.ok; regFile = $f.regFile; rf = $f.rf; src = $f.src; w = $f.w; x$10 = $f.x$10; x$11 = $f.x$11; x$4 = $f.x$4; x$5 = $f.x$5; x$6 = $f.x$6; x$7 = $f.x$7; x$8 = $f.x$8; x$9 = $f.x$9; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
108850  		n = new $Int64(0, 0);
108851  		err = $ifaceNil;
108852  		w = this;
108853  		_tuple = $assertType(w.conn.rwc, io.ReaderFrom, true);
108854  		rf = _tuple[0];
108855  		ok = _tuple[1];
108856  		_r$1 = srcIsRegularFile(src); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
108857  		_tuple$1 = _r$1;
108858  		regFile = _tuple$1[0];
108859  		err = _tuple$1[1];
108860  		if (!($interfaceIsEqual(err, $ifaceNil))) {
108861  			_tmp = new $Int64(0, 0);
108862  			_tmp$1 = err;
108863  			n = _tmp;
108864  			err = _tmp$1;
108865  			$s = -1; return [n, err];
108866  		}
108867  		/* */ if (!ok || !regFile) { $s = 2; continue; }
108868  		/* */ $s = 3; continue;
108869  		/* if (!ok || !regFile) { */ case 2:
108870  			_r$2 = copyBufPool.Get(); /* */ $s = 4; case 4: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
108871  			bufp = $assertType(_r$2, ptrType$4);
108872  			$deferred.push([$methodVal(copyBufPool, "Put"), [bufp]]);
108873  			_r$3 = io.CopyBuffer((x$4 = new writerOnly.ptr(w), new x$4.constructor.elem(x$4)), src, bufp.$get()); /* */ $s = 5; case 5: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
108874  			_tuple$2 = _r$3;
108875  			n = _tuple$2[0];
108876  			err = _tuple$2[1];
108877  			$s = -1; return [n, err];
108878  		/* } */ case 3:
108879  		/* */ if (!w.wroteHeader) { $s = 6; continue; }
108880  		/* */ $s = 7; continue;
108881  		/* if (!w.wroteHeader) { */ case 6:
108882  			$r = w.WriteHeader(200); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
108883  		/* } */ case 7:
108884  		/* */ if (w.needsSniff()) { $s = 9; continue; }
108885  		/* */ $s = 10; continue;
108886  		/* if (w.needsSniff()) { */ case 9:
108887  			_r$4 = io.Copy((x$5 = new writerOnly.ptr(w), new x$5.constructor.elem(x$5)), io.LimitReader(src, new $Int64(0, 512))); /* */ $s = 11; case 11: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
108888  			_tuple$3 = _r$4;
108889  			n0 = _tuple$3[0];
108890  			err$1 = _tuple$3[1];
108891  			n = (x$6 = n0, new $Int64(n.$high + x$6.$high, n.$low + x$6.$low));
108892  			if (!($interfaceIsEqual(err$1, $ifaceNil))) {
108893  				_tmp$2 = n;
108894  				_tmp$3 = err$1;
108895  				n = _tmp$2;
108896  				err = _tmp$3;
108897  				$s = -1; return [n, err];
108898  			}
108899  		/* } */ case 10:
108900  		_r$5 = w.w.Flush(); /* */ $s = 12; case 12: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
108901  		_r$5;
108902  		$r = w.cw.flush(); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
108903  		/* */ if (!w.cw.chunking && w.bodyAllowed()) { $s = 14; continue; }
108904  		/* */ $s = 15; continue;
108905  		/* if (!w.cw.chunking && w.bodyAllowed()) { */ case 14:
108906  			_r$6 = rf.ReadFrom(src); /* */ $s = 16; case 16: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
108907  			_tuple$4 = _r$6;
108908  			n0$1 = _tuple$4[0];
108909  			err$2 = _tuple$4[1];
108910  			n = (x$7 = n0$1, new $Int64(n.$high + x$7.$high, n.$low + x$7.$low));
108911  			w.written = (x$8 = w.written, x$9 = n0$1, new $Int64(x$8.$high + x$9.$high, x$8.$low + x$9.$low));
108912  			_tmp$4 = n;
108913  			_tmp$5 = err$2;
108914  			n = _tmp$4;
108915  			err = _tmp$5;
108916  			$s = -1; return [n, err];
108917  		/* } */ case 15:
108918  		_r$7 = io.Copy((x$10 = new writerOnly.ptr(w), new x$10.constructor.elem(x$10)), src); /* */ $s = 17; case 17: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
108919  		_tuple$5 = _r$7;
108920  		n0$2 = _tuple$5[0];
108921  		err = _tuple$5[1];
108922  		n = (x$11 = n0$2, new $Int64(n.$high + x$11.$high, n.$low + x$11.$low));
108923  		_tmp$6 = n;
108924  		_tmp$7 = err;
108925  		n = _tmp$6;
108926  		err = _tmp$7;
108927  		$s = -1; return [n, err];
108928  		/* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if (!$curGoroutine.asleep) { return  [n, err]; } if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: response.ptr.prototype.ReadFrom }; } $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tmp$4 = _tmp$4; $f._tmp$5 = _tmp$5; $f._tmp$6 = _tmp$6; $f._tmp$7 = _tmp$7; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f._tuple$4 = _tuple$4; $f._tuple$5 = _tuple$5; $f.bufp = bufp; $f.err = err; $f.err$1 = err$1; $f.err$2 = err$2; $f.n = n; $f.n0 = n0; $f.n0$1 = n0$1; $f.n0$2 = n0$2; $f.ok = ok; $f.regFile = regFile; $f.rf = rf; $f.src = src; $f.w = w; $f.x$10 = x$10; $f.x$11 = x$11; $f.x$4 = x$4; $f.x$5 = x$5; $f.x$6 = x$6; $f.x$7 = x$7; $f.x$8 = x$8; $f.x$9 = x$9; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
108929  	};
108930  	response.prototype.ReadFrom = function(src) { return this.$val.ReadFrom(src); };
108931  	Server.ptr.prototype.newConn = function(rwc) {
108932  		var _r$1, c, rwc, srv, $s, $r;
108933  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; c = $f.c; rwc = $f.rwc; srv = $f.srv; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
108934  		srv = this;
108935  		c = new conn.ptr(srv, $throwNilPointerError, rwc, "", ptrType$18.nil, $ifaceNil, ptrType$93.nil, ptrType$72.nil, ptrType$10.nil, "", new atomic.Value.ptr($ifaceNil), new atomic.Value.ptr($ifaceNil), new sync.Mutex.ptr(0, 0), false);
108936  		/* */ if (false) { $s = 1; continue; }
108937  		/* */ $s = 2; continue;
108938  		/* if (false) { */ case 1:
108939  			_r$1 = newLoggingConn("server", c.rwc); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
108940  			c.rwc = _r$1;
108941  		/* } */ case 2:
108942  		$s = -1; return c;
108943  		/* */ } return; } if ($f === undefined) { $f = { $blk: Server.ptr.prototype.newConn }; } $f._r$1 = _r$1; $f.c = c; $f.rwc = rwc; $f.srv = srv; $f.$s = $s; $f.$r = $r; return $f;
108944  	};
108945  	Server.prototype.newConn = function(rwc) { return this.$val.newConn(rwc); };
108946  	connReader.ptr.prototype.lock = function() {
108947  		var cr, $s, $r;
108948  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; cr = $f.cr; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
108949  		cr = this;
108950  		$r = cr.mu.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
108951  		if (cr.cond === ptrType$71.nil) {
108952  			cr.cond = sync.NewCond(cr.mu);
108953  		}
108954  		$s = -1; return;
108955  		/* */ } return; } if ($f === undefined) { $f = { $blk: connReader.ptr.prototype.lock }; } $f.cr = cr; $f.$s = $s; $f.$r = $r; return $f;
108956  	};
108957  	connReader.prototype.lock = function() { return this.$val.lock(); };
108958  	connReader.ptr.prototype.unlock = function() {
108959  		var cr, $s, $r;
108960  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; cr = $f.cr; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
108961  		cr = this;
108962  		$r = cr.mu.Unlock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
108963  		$s = -1; return;
108964  		/* */ } return; } if ($f === undefined) { $f = { $blk: connReader.ptr.prototype.unlock }; } $f.cr = cr; $f.$s = $s; $f.$r = $r; return $f;
108965  	};
108966  	connReader.prototype.unlock = function() { return this.$val.unlock(); };
108967  	connReader.ptr.prototype.startBackgroundRead = function() {
108968  		var _r$1, cr, $s, $deferred, $r;
108969  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; cr = $f.cr; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
108970  		cr = this;
108971  		$r = cr.lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
108972  		$deferred.push([$methodVal(cr, "unlock"), []]);
108973  		if (cr.inRead) {
108974  			$panic(new $String("invalid concurrent Body.Read call"));
108975  		}
108976  		if (cr.hasByte) {
108977  			$s = -1; return;
108978  		}
108979  		cr.inRead = true;
108980  		_r$1 = cr.conn.rwc.SetReadDeadline(new time.Time.ptr(new $Uint64(0, 0), new $Int64(0, 0), ptrType$1.nil)); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
108981  		_r$1;
108982  		$go($methodVal(cr, "backgroundRead"), []);
108983  		$s = -1; return;
108984  		/* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: connReader.ptr.prototype.startBackgroundRead }; } $f._r$1 = _r$1; $f.cr = cr; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
108985  	};
108986  	connReader.prototype.startBackgroundRead = function() { return this.$val.startBackgroundRead(); };
108987  	connReader.ptr.prototype.backgroundRead = function() {
108988  		var _r$1, _r$2, _tuple, _tuple$1, _v, cr, err, n, ne, ok, $s, $r;
108989  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; _r$2 = $f._r$2; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _v = $f._v; cr = $f.cr; err = $f.err; n = $f.n; ne = $f.ne; ok = $f.ok; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
108990  		cr = this;
108991  		_r$1 = cr.conn.rwc.Read(new sliceType$3(cr.byteBuf)); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
108992  		_tuple = _r$1;
108993  		n = _tuple[0];
108994  		err = _tuple[1];
108995  		$r = cr.lock(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
108996  		/* */ if (n === 1) { $s = 3; continue; }
108997  		/* */ $s = 4; continue;
108998  		/* if (n === 1) { */ case 3:
108999  			cr.hasByte = true;
109000  			$r = cr.closeNotifyFromPipelinedRequest(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
109001  		/* } */ case 4:
109002  		_tuple$1 = $assertType(err, net.Error, true);
109003  		ne = _tuple$1[0];
109004  		ok = _tuple$1[1];
109005  		if (!(ok && cr.aborted)) { _v = false; $s = 9; continue s; }
109006  		_r$2 = ne.Timeout(); /* */ $s = 10; case 10: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
109007  		_v = _r$2; case 9:
109008  		/* */ if (_v) { $s = 6; continue; }
109009  		/* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 7; continue; }
109010  		/* */ $s = 8; continue;
109011  		/* if (_v) { */ case 6:
109012  			$s = 8; continue;
109013  		/* } else if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 7:
109014  			$r = cr.handleReadError(err); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
109015  		/* } */ case 8:
109016  		cr.aborted = false;
109017  		cr.inRead = false;
109018  		$r = cr.unlock(); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
109019  		$r = cr.cond.Broadcast(); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
109020  		$s = -1; return;
109021  		/* */ } return; } if ($f === undefined) { $f = { $blk: connReader.ptr.prototype.backgroundRead }; } $f._r$1 = _r$1; $f._r$2 = _r$2; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._v = _v; $f.cr = cr; $f.err = err; $f.n = n; $f.ne = ne; $f.ok = ok; $f.$s = $s; $f.$r = $r; return $f;
109022  	};
109023  	connReader.prototype.backgroundRead = function() { return this.$val.backgroundRead(); };
109024  	connReader.ptr.prototype.abortPendingRead = function() {
109025  		var _r$1, _r$2, cr, $s, $deferred, $r;
109026  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; _r$2 = $f._r$2; cr = $f.cr; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
109027  		cr = this;
109028  		$r = cr.lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
109029  		$deferred.push([$methodVal(cr, "unlock"), []]);
109030  		if (!cr.inRead) {
109031  			$s = -1; return;
109032  		}
109033  		cr.aborted = true;
109034  		_r$1 = cr.conn.rwc.SetReadDeadline($clone(aLongTimeAgo, time.Time)); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
109035  		_r$1;
109036  		/* while (true) { */ case 3:
109037  			/* if (!(cr.inRead)) { break; } */ if(!(cr.inRead)) { $s = 4; continue; }
109038  			$r = cr.cond.Wait(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
109039  		/* } */ $s = 3; continue; case 4:
109040  		_r$2 = cr.conn.rwc.SetReadDeadline(new time.Time.ptr(new $Uint64(0, 0), new $Int64(0, 0), ptrType$1.nil)); /* */ $s = 6; case 6: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
109041  		_r$2;
109042  		$s = -1; return;
109043  		/* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: connReader.ptr.prototype.abortPendingRead }; } $f._r$1 = _r$1; $f._r$2 = _r$2; $f.cr = cr; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
109044  	};
109045  	connReader.prototype.abortPendingRead = function() { return this.$val.abortPendingRead(); };
109046  	connReader.ptr.prototype.setReadLimit = function(remain) {
109047  		var cr, remain;
109048  		cr = this;
109049  		cr.remain = remain;
109050  	};
109051  	connReader.prototype.setReadLimit = function(remain) { return this.$val.setReadLimit(remain); };
109052  	connReader.ptr.prototype.setInfiniteReadLimit = function() {
109053  		var cr;
109054  		cr = this;
109055  		cr.remain = new $Int64(2147483647, 4294967295);
109056  	};
109057  	connReader.prototype.setInfiniteReadLimit = function() { return this.$val.setInfiniteReadLimit(); };
109058  	connReader.ptr.prototype.hitReadLimit = function() {
109059  		var cr, x$4;
109060  		cr = this;
109061  		return (x$4 = cr.remain, (x$4.$high < 0 || (x$4.$high === 0 && x$4.$low <= 0)));
109062  	};
109063  	connReader.prototype.hitReadLimit = function() { return this.$val.hitReadLimit(); };
109064  	connReader.ptr.prototype.handleReadError = function(err) {
109065  		var cr, err, $s, $r;
109066  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; cr = $f.cr; err = $f.err; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
109067  		cr = this;
109068  		$r = cr.conn.cancelCtx(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
109069  		$r = cr.closeNotify(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
109070  		$s = -1; return;
109071  		/* */ } return; } if ($f === undefined) { $f = { $blk: connReader.ptr.prototype.handleReadError }; } $f.cr = cr; $f.err = err; $f.$s = $s; $f.$r = $r; return $f;
109072  	};
109073  	connReader.prototype.handleReadError = function(err) { return this.$val.handleReadError(err); };
109074  	connReader.ptr.prototype.closeNotifyFromPipelinedRequest = function() {
109075  		var cr, $s, $r;
109076  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; cr = $f.cr; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
109077  		cr = this;
109078  		$r = cr.closeNotify(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
109079  		$s = -1; return;
109080  		/* */ } return; } if ($f === undefined) { $f = { $blk: connReader.ptr.prototype.closeNotifyFromPipelinedRequest }; } $f.cr = cr; $f.$s = $s; $f.$r = $r; return $f;
109081  	};
109082  	connReader.prototype.closeNotifyFromPipelinedRequest = function() { return this.$val.closeNotifyFromPipelinedRequest(); };
109083  	connReader.ptr.prototype.closeNotify = function() {
109084  		var _tuple, cr, res, $s, $r;
109085  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _tuple = $f._tuple; cr = $f.cr; res = $f.res; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
109086  		cr = this;
109087  		_tuple = $assertType(cr.conn.curReq.Load(), ptrType$94, true);
109088  		res = _tuple[0];
109089  		/* */ if (!(res === ptrType$94.nil)) { $s = 1; continue; }
109090  		/* */ $s = 2; continue;
109091  		/* if (!(res === ptrType$94.nil)) { */ case 1:
109092  			/* */ if (atomic.CompareAndSwapInt32((res.$ptr_didCloseNotify || (res.$ptr_didCloseNotify = new ptrType$90(function() { return this.$target.didCloseNotify; }, function($v) { this.$target.didCloseNotify = $v; }, res))), 0, 1)) { $s = 3; continue; }
109093  			/* */ $s = 4; continue;
109094  			/* if (atomic.CompareAndSwapInt32((res.$ptr_didCloseNotify || (res.$ptr_didCloseNotify = new ptrType$90(function() { return this.$target.didCloseNotify; }, function($v) { this.$target.didCloseNotify = $v; }, res))), 0, 1)) { */ case 3:
109095  				$r = $send(res.closeNotifyCh, true); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
109096  			/* } */ case 4:
109097  		/* } */ case 2:
109098  		$s = -1; return;
109099  		/* */ } return; } if ($f === undefined) { $f = { $blk: connReader.ptr.prototype.closeNotify }; } $f._tuple = _tuple; $f.cr = cr; $f.res = res; $f.$s = $s; $f.$r = $r; return $f;
109100  	};
109101  	connReader.prototype.closeNotify = function() { return this.$val.closeNotify(); };
109102  	connReader.ptr.prototype.Read = function(p) {
109103  		var _r$1, _r$2, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tuple, cr, err, n, p, x$4, x$5, x$6, x$7, $s, $r;
109104  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; _r$2 = $f._r$2; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tmp$4 = $f._tmp$4; _tmp$5 = $f._tmp$5; _tmp$6 = $f._tmp$6; _tmp$7 = $f._tmp$7; _tuple = $f._tuple; cr = $f.cr; err = $f.err; n = $f.n; p = $f.p; x$4 = $f.x$4; x$5 = $f.x$5; x$6 = $f.x$6; x$7 = $f.x$7; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
109105  		n = 0;
109106  		err = $ifaceNil;
109107  		cr = this;
109108  		$r = cr.lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
109109  		/* */ if (cr.inRead) { $s = 2; continue; }
109110  		/* */ $s = 3; continue;
109111  		/* if (cr.inRead) { */ case 2:
109112  			$r = cr.unlock(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
109113  			_r$1 = cr.conn.hijacked(); /* */ $s = 7; case 7: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
109114  			/* */ if (_r$1) { $s = 5; continue; }
109115  			/* */ $s = 6; continue;
109116  			/* if (_r$1) { */ case 5:
109117  				$panic(new $String("invalid Body.Read call. After hijacked, the original Request must not be used"));
109118  			/* } */ case 6:
109119  			$panic(new $String("invalid concurrent Body.Read call"));
109120  		/* } */ case 3:
109121  		/* */ if (cr.hitReadLimit()) { $s = 8; continue; }
109122  		/* */ $s = 9; continue;
109123  		/* if (cr.hitReadLimit()) { */ case 8:
109124  			$r = cr.unlock(); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
109125  			_tmp = 0;
109126  			_tmp$1 = io.EOF;
109127  			n = _tmp;
109128  			err = _tmp$1;
109129  			$s = -1; return [n, err];
109130  		/* } */ case 9:
109131  		/* */ if (p.$length === 0) { $s = 11; continue; }
109132  		/* */ $s = 12; continue;
109133  		/* if (p.$length === 0) { */ case 11:
109134  			$r = cr.unlock(); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
109135  			_tmp$2 = 0;
109136  			_tmp$3 = $ifaceNil;
109137  			n = _tmp$2;
109138  			err = _tmp$3;
109139  			$s = -1; return [n, err];
109140  		/* } */ case 12:
109141  		if ((x$4 = (new $Int64(0, p.$length)), x$5 = cr.remain, (x$4.$high > x$5.$high || (x$4.$high === x$5.$high && x$4.$low > x$5.$low)))) {
109142  			p = $subslice(p, 0, $flatten64(cr.remain));
109143  		}
109144  		/* */ if (cr.hasByte) { $s = 14; continue; }
109145  		/* */ $s = 15; continue;
109146  		/* if (cr.hasByte) { */ case 14:
109147  			(0 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 0] = cr.byteBuf[0]);
109148  			cr.hasByte = false;
109149  			$r = cr.unlock(); /* */ $s = 16; case 16: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
109150  			_tmp$4 = 1;
109151  			_tmp$5 = $ifaceNil;
109152  			n = _tmp$4;
109153  			err = _tmp$5;
109154  			$s = -1; return [n, err];
109155  		/* } */ case 15:
109156  		cr.inRead = true;
109157  		$r = cr.unlock(); /* */ $s = 17; case 17: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
109158  		_r$2 = cr.conn.rwc.Read(p); /* */ $s = 18; case 18: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
109159  		_tuple = _r$2;
109160  		n = _tuple[0];
109161  		err = _tuple[1];
109162  		$r = cr.lock(); /* */ $s = 19; case 19: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
109163  		cr.inRead = false;
109164  		/* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 20; continue; }
109165  		/* */ $s = 21; continue;
109166  		/* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 20:
109167  			$r = cr.handleReadError(err); /* */ $s = 22; case 22: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
109168  		/* } */ case 21:
109169  		cr.remain = (x$6 = cr.remain, x$7 = (new $Int64(0, n)), new $Int64(x$6.$high - x$7.$high, x$6.$low - x$7.$low));
109170  		$r = cr.unlock(); /* */ $s = 23; case 23: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
109171  		$r = cr.cond.Broadcast(); /* */ $s = 24; case 24: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
109172  		_tmp$6 = n;
109173  		_tmp$7 = err;
109174  		n = _tmp$6;
109175  		err = _tmp$7;
109176  		$s = -1; return [n, err];
109177  		/* */ } return; } if ($f === undefined) { $f = { $blk: connReader.ptr.prototype.Read }; } $f._r$1 = _r$1; $f._r$2 = _r$2; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tmp$4 = _tmp$4; $f._tmp$5 = _tmp$5; $f._tmp$6 = _tmp$6; $f._tmp$7 = _tmp$7; $f._tuple = _tuple; $f.cr = cr; $f.err = err; $f.n = n; $f.p = p; $f.x$4 = x$4; $f.x$5 = x$5; $f.x$6 = x$6; $f.x$7 = x$7; $f.$s = $s; $f.$r = $r; return $f;
109178  	};
109179  	connReader.prototype.Read = function(p) { return this.$val.Read(p); };
109180  	bufioWriterPool = function(size) {
109181  		var _1, size;
109182  		_1 = size;
109183  		if (_1 === (2048)) {
109184  			return bufioWriter2kPool;
109185  		} else if (_1 === (4096)) {
109186  			return bufioWriter4kPool;
109187  		}
109188  		return ptrType$95.nil;
109189  	};
109190  	newBufioReader = function(r) {
109191  		var _r$1, br, r, v, $s, $r;
109192  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; br = $f.br; r = $f.r; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
109193  		_r$1 = bufioReaderPool.Get(); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
109194  		v = _r$1;
109195  		if (!($interfaceIsEqual(v, $ifaceNil))) {
109196  			br = $assertType(v, ptrType$72);
109197  			br.Reset(r);
109198  			$s = -1; return br;
109199  		}
109200  		$s = -1; return bufio.NewReader(r);
109201  		/* */ } return; } if ($f === undefined) { $f = { $blk: newBufioReader }; } $f._r$1 = _r$1; $f.br = br; $f.r = r; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
109202  	};
109203  	putBufioReader = function(br) {
109204  		var br;
109205  		br.Reset($ifaceNil);
109206  		bufioReaderPool.Put(br);
109207  	};
109208  	newBufioWriterSize = function(w, size) {
109209  		var _r$1, bw, pool, size, v, w, $s, $r;
109210  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; bw = $f.bw; pool = $f.pool; size = $f.size; v = $f.v; w = $f.w; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
109211  		pool = bufioWriterPool(size);
109212  		/* */ if (!(pool === ptrType$95.nil)) { $s = 1; continue; }
109213  		/* */ $s = 2; continue;
109214  		/* if (!(pool === ptrType$95.nil)) { */ case 1:
109215  			_r$1 = pool.Get(); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
109216  			v = _r$1;
109217  			if (!($interfaceIsEqual(v, $ifaceNil))) {
109218  				bw = $assertType(v, ptrType$10);
109219  				bw.Reset(w);
109220  				$s = -1; return bw;
109221  			}
109222  		/* } */ case 2:
109223  		$s = -1; return bufio.NewWriterSize(w, size);
109224  		/* */ } return; } if ($f === undefined) { $f = { $blk: newBufioWriterSize }; } $f._r$1 = _r$1; $f.bw = bw; $f.pool = pool; $f.size = size; $f.v = v; $f.w = w; $f.$s = $s; $f.$r = $r; return $f;
109225  	};
109226  	putBufioWriter = function(bw) {
109227  		var bw, pool;
109228  		bw.Reset($ifaceNil);
109229  		pool = bufioWriterPool(bw.Available());
109230  		if (!(pool === ptrType$95.nil)) {
109231  			pool.Put(bw);
109232  		}
109233  	};
109234  	Server.ptr.prototype.maxHeaderBytes = function() {
109235  		var srv;
109236  		srv = this;
109237  		if (srv.MaxHeaderBytes > 0) {
109238  			return srv.MaxHeaderBytes;
109239  		}
109240  		return 1048576;
109241  	};
109242  	Server.prototype.maxHeaderBytes = function() { return this.$val.maxHeaderBytes(); };
109243  	Server.ptr.prototype.initialReadLimitSize = function() {
109244  		var srv, x$4;
109245  		srv = this;
109246  		return (x$4 = (new $Int64(0, srv.maxHeaderBytes())), new $Int64(x$4.$high + 0, x$4.$low + 4096));
109247  	};
109248  	Server.prototype.initialReadLimitSize = function() { return this.$val.initialReadLimitSize(); };
109249  	expectContinueReader.ptr.prototype.Read = function(p) {
109250  		var _r$1, _r$2, _r$3, _r$4, _tmp, _tmp$1, _tuple, _v, ecr, err, n, p, $s, $r;
109251  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tuple = $f._tuple; _v = $f._v; ecr = $f.ecr; err = $f.err; n = $f.n; p = $f.p; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
109252  		n = 0;
109253  		err = $ifaceNil;
109254  		ecr = this;
109255  		if (ecr.closed) {
109256  			_tmp = 0;
109257  			_tmp$1 = $pkg.ErrBodyReadAfterClose;
109258  			n = _tmp;
109259  			err = _tmp$1;
109260  			$s = -1; return [n, err];
109261  		}
109262  		if (!(!ecr.resp.wroteContinue)) { _v = false; $s = 3; continue s; }
109263  		_r$1 = ecr.resp.conn.hijacked(); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
109264  		_v = !_r$1; case 3:
109265  		/* */ if (_v) { $s = 1; continue; }
109266  		/* */ $s = 2; continue;
109267  		/* if (_v) { */ case 1:
109268  			ecr.resp.wroteContinue = true;
109269  			_r$2 = ecr.resp.conn.bufw.WriteString("HTTP/1.1 100 Continue\r\n\r\n"); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
109270  			_r$2;
109271  			_r$3 = ecr.resp.conn.bufw.Flush(); /* */ $s = 6; case 6: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
109272  			_r$3;
109273  		/* } */ case 2:
109274  		_r$4 = ecr.readCloser.Read(p); /* */ $s = 7; case 7: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
109275  		_tuple = _r$4;
109276  		n = _tuple[0];
109277  		err = _tuple[1];
109278  		if ($interfaceIsEqual(err, io.EOF)) {
109279  			ecr.sawEOF = true;
109280  		}
109281  		$s = -1; return [n, err];
109282  		/* */ } return; } if ($f === undefined) { $f = { $blk: expectContinueReader.ptr.prototype.Read }; } $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tuple = _tuple; $f._v = _v; $f.ecr = ecr; $f.err = err; $f.n = n; $f.p = p; $f.$s = $s; $f.$r = $r; return $f;
109283  	};
109284  	expectContinueReader.prototype.Read = function(p) { return this.$val.Read(p); };
109285  	expectContinueReader.ptr.prototype.Close = function() {
109286  		var _r$1, ecr, $s, $r;
109287  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; ecr = $f.ecr; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
109288  		ecr = this;
109289  		ecr.closed = true;
109290  		_r$1 = ecr.readCloser.Close(); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
109291  		$s = -1; return _r$1;
109292  		/* */ } return; } if ($f === undefined) { $f = { $blk: expectContinueReader.ptr.prototype.Close }; } $f._r$1 = _r$1; $f.ecr = ecr; $f.$s = $s; $f.$r = $r; return $f;
109293  	};
109294  	expectContinueReader.prototype.Close = function() { return this.$val.Close(); };
109295  	appendTime = function(b, t) {
109296  		var _q, _q$1, _q$2, _q$3, _q$4, _q$5, _q$6, _r$1, _r$10, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _tuple, _tuple$1, b, day, dd, hh, mm, mn, mon, ss, t, yy, $s, $r;
109297  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _q = $f._q; _q$1 = $f._q$1; _q$2 = $f._q$2; _q$3 = $f._q$3; _q$4 = $f._q$4; _q$5 = $f._q$5; _q$6 = $f._q$6; _r$1 = $f._r$1; _r$10 = $f._r$10; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _r$8 = $f._r$8; _r$9 = $f._r$9; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; b = $f.b; day = $f.day; dd = $f.dd; hh = $f.hh; mm = $f.mm; mn = $f.mn; mon = $f.mon; ss = $f.ss; t = $f.t; yy = $f.yy; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
109298  		time.Time.copy(t, $clone(t, time.Time).UTC());
109299  		_r$1 = $clone(t, time.Time).Date(); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
109300  		_tuple = _r$1;
109301  		yy = _tuple[0];
109302  		mm = _tuple[1];
109303  		dd = _tuple[2];
109304  		_r$2 = $clone(t, time.Time).Clock(); /* */ $s = 2; case 2: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
109305  		_tuple$1 = _r$2;
109306  		hh = _tuple$1[0];
109307  		mn = _tuple$1[1];
109308  		ss = _tuple$1[2];
109309  		_r$3 = $clone(t, time.Time).Weekday(); /* */ $s = 3; case 3: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
109310  		day = $substring("SunMonTueWedThuFriSat", ($imul(3, _r$3)));
109311  		mon = $substring("JanFebMarAprMayJunJulAugSepOctNovDec", ($imul(3, ((mm - 1 >> 0)))));
109312  		$s = -1; return $append(b, day.charCodeAt(0), day.charCodeAt(1), day.charCodeAt(2), 44, 32, (((48 + (_q = dd / 10, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")) >> 0) << 24 >>> 24)), (((48 + (_r$4 = dd % 10, _r$4 === _r$4 ? _r$4 : $throwRuntimeError("integer divide by zero")) >> 0) << 24 >>> 24)), 32, mon.charCodeAt(0), mon.charCodeAt(1), mon.charCodeAt(2), 32, (((48 + (_q$1 = yy / 1000, (_q$1 === _q$1 && _q$1 !== 1/0 && _q$1 !== -1/0) ? _q$1 >> 0 : $throwRuntimeError("integer divide by zero")) >> 0) << 24 >>> 24)), (((48 + (_r$5 = ((_q$2 = yy / 100, (_q$2 === _q$2 && _q$2 !== 1/0 && _q$2 !== -1/0) ? _q$2 >> 0 : $throwRuntimeError("integer divide by zero"))) % 10, _r$5 === _r$5 ? _r$5 : $throwRuntimeError("integer divide by zero")) >> 0) << 24 >>> 24)), (((48 + (_r$6 = ((_q$3 = yy / 10, (_q$3 === _q$3 && _q$3 !== 1/0 && _q$3 !== -1/0) ? _q$3 >> 0 : $throwRuntimeError("integer divide by zero"))) % 10, _r$6 === _r$6 ? _r$6 : $throwRuntimeError("integer divide by zero")) >> 0) << 24 >>> 24)), (((48 + (_r$7 = yy % 10, _r$7 === _r$7 ? _r$7 : $throwRuntimeError("integer divide by zero")) >> 0) << 24 >>> 24)), 32, (((48 + (_q$4 = hh / 10, (_q$4 === _q$4 && _q$4 !== 1/0 && _q$4 !== -1/0) ? _q$4 >> 0 : $throwRuntimeError("integer divide by zero")) >> 0) << 24 >>> 24)), (((48 + (_r$8 = hh % 10, _r$8 === _r$8 ? _r$8 : $throwRuntimeError("integer divide by zero")) >> 0) << 24 >>> 24)), 58, (((48 + (_q$5 = mn / 10, (_q$5 === _q$5 && _q$5 !== 1/0 && _q$5 !== -1/0) ? _q$5 >> 0 : $throwRuntimeError("integer divide by zero")) >> 0) << 24 >>> 24)), (((48 + (_r$9 = mn % 10, _r$9 === _r$9 ? _r$9 : $throwRuntimeError("integer divide by zero")) >> 0) << 24 >>> 24)), 58, (((48 + (_q$6 = ss / 10, (_q$6 === _q$6 && _q$6 !== 1/0 && _q$6 !== -1/0) ? _q$6 >> 0 : $throwRuntimeError("integer divide by zero")) >> 0) << 24 >>> 24)), (((48 + (_r$10 = ss % 10, _r$10 === _r$10 ? _r$10 : $throwRuntimeError("integer divide by zero")) >> 0) << 24 >>> 24)), 32, 71, 77, 84);
109313  		/* */ } return; } if ($f === undefined) { $f = { $blk: appendTime }; } $f._q = _q; $f._q$1 = _q$1; $f._q$2 = _q$2; $f._q$3 = _q$3; $f._q$4 = _q$4; $f._q$5 = _q$5; $f._q$6 = _q$6; $f._r$1 = _r$1; $f._r$10 = _r$10; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._r$8 = _r$8; $f._r$9 = _r$9; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.b = b; $f.day = day; $f.dd = dd; $f.hh = hh; $f.mm = mm; $f.mn = mn; $f.mon = mon; $f.ss = ss; $f.t = t; $f.yy = yy; $f.$s = $s; $f.$r = $r; return $f;
109314  	};
109315  	conn.ptr.prototype.readRequest = function(ctx) {
109316  		var _entry, _entry$1, _i, _i$1, _keys, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _ref, _ref$1, _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$14, _tmp$15, _tmp$16, _tmp$17, _tmp$18, _tmp$19, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, body$1, c, cancelCtx, ctx, d, d$1, d$2, err, haveHost, hdrDeadline, hosts, isH2Upgrade, k, ok, peek, req, t0, v, vv, w, wholeReqDeadline, $s, $deferred, $r;
109317  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _entry = $f._entry; _entry$1 = $f._entry$1; _i = $f._i; _i$1 = $f._i$1; _keys = $f._keys; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _r$8 = $f._r$8; _ref = $f._ref; _ref$1 = $f._ref$1; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$10 = $f._tmp$10; _tmp$11 = $f._tmp$11; _tmp$12 = $f._tmp$12; _tmp$13 = $f._tmp$13; _tmp$14 = $f._tmp$14; _tmp$15 = $f._tmp$15; _tmp$16 = $f._tmp$16; _tmp$17 = $f._tmp$17; _tmp$18 = $f._tmp$18; _tmp$19 = $f._tmp$19; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tmp$4 = $f._tmp$4; _tmp$5 = $f._tmp$5; _tmp$6 = $f._tmp$6; _tmp$7 = $f._tmp$7; _tmp$8 = $f._tmp$8; _tmp$9 = $f._tmp$9; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; _tuple$4 = $f._tuple$4; body$1 = $f.body$1; c = $f.c; cancelCtx = $f.cancelCtx; ctx = $f.ctx; d = $f.d; d$1 = $f.d$1; d$2 = $f.d$2; err = $f.err; haveHost = $f.haveHost; hdrDeadline = $f.hdrDeadline; hosts = $f.hosts; isH2Upgrade = $f.isH2Upgrade; k = $f.k; ok = $f.ok; peek = $f.peek; req = $f.req; t0 = $f.t0; v = $f.v; vv = $f.vv; w = $f.w; wholeReqDeadline = $f.wholeReqDeadline; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
109318  		c = [c];
109319  		d = [d];
109320  		w = ptrType$94.nil;
109321  		err = $ifaceNil;
109322  		c[0] = this;
109323  		_r$1 = c[0].hijacked(); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
109324  		/* */ if (_r$1) { $s = 1; continue; }
109325  		/* */ $s = 2; continue;
109326  		/* if (_r$1) { */ case 1:
109327  			_tmp = ptrType$94.nil;
109328  			_tmp$1 = $pkg.ErrHijacked;
109329  			w = _tmp;
109330  			err = _tmp$1;
109331  			$s = -1; return [w, err];
109332  		/* } */ case 2:
109333  		wholeReqDeadline = new time.Time.ptr(new $Uint64(0, 0), new $Int64(0, 0), ptrType$1.nil);
109334  		hdrDeadline = new time.Time.ptr(new $Uint64(0, 0), new $Int64(0, 0), ptrType$1.nil);
109335  		t0 = $clone(time.Now(), time.Time);
109336  		d$1 = c[0].server.readHeaderTimeout();
109337  		if (!((d$1.$high === 0 && d$1.$low === 0))) {
109338  			time.Time.copy(hdrDeadline, $clone(t0, time.Time).Add(d$1));
109339  		}
109340  		d$2 = c[0].server.ReadTimeout;
109341  		if (!((d$2.$high === 0 && d$2.$low === 0))) {
109342  			time.Time.copy(wholeReqDeadline, $clone(t0, time.Time).Add(d$2));
109343  		}
109344  		_r$2 = c[0].rwc.SetReadDeadline($clone(hdrDeadline, time.Time)); /* */ $s = 4; case 4: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
109345  		_r$2;
109346  		d[0] = c[0].server.WriteTimeout;
109347  		/* */ if (!((d[0].$high === 0 && d[0].$low === 0))) { $s = 5; continue; }
109348  		/* */ $s = 6; continue;
109349  		/* if (!((d[0].$high === 0 && d[0].$low === 0))) { */ case 5:
109350  			$deferred.push([(function(c, d) { return function $b() {
109351  				var _r$3, $s, $r;
109352  				/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$3 = $f._r$3; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
109353  				_r$3 = c[0].rwc.SetWriteDeadline($clone($clone(time.Now(), time.Time).Add(d[0]), time.Time)); /* */ $s = 1; case 1: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
109354  				_r$3;
109355  				$s = -1; return;
109356  				/* */ } return; } if ($f === undefined) { $f = { $blk: $b }; } $f._r$3 = _r$3; $f.$s = $s; $f.$r = $r; return $f;
109357  			}; })(c, d), []]);
109358  		/* } */ case 6:
109359  		c[0].r.setReadLimit(c[0].server.initialReadLimitSize());
109360  		/* */ if (c[0].lastMethod === "POST") { $s = 7; continue; }
109361  		/* */ $s = 8; continue;
109362  		/* if (c[0].lastMethod === "POST") { */ case 7:
109363  			_r$3 = c[0].bufr.Peek(4); /* */ $s = 9; case 9: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
109364  			_tuple = _r$3;
109365  			peek = _tuple[0];
109366  			_r$4 = c[0].bufr.Discard(numLeadingCRorLF(peek)); /* */ $s = 10; case 10: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
109367  			_r$4;
109368  		/* } */ case 8:
109369  		_r$5 = readRequest(c[0].bufr, false); /* */ $s = 11; case 11: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
109370  		_tuple$1 = _r$5;
109371  		req = _tuple$1[0];
109372  		err = _tuple$1[1];
109373  		if (!($interfaceIsEqual(err, $ifaceNil))) {
109374  			if (c[0].r.hitReadLimit()) {
109375  				_tmp$2 = ptrType$94.nil;
109376  				_tmp$3 = errTooLarge;
109377  				w = _tmp$2;
109378  				err = _tmp$3;
109379  				$s = -1; return [w, err];
109380  			}
109381  			_tmp$4 = ptrType$94.nil;
109382  			_tmp$5 = err;
109383  			w = _tmp$4;
109384  			err = _tmp$5;
109385  			$s = -1; return [w, err];
109386  		}
109387  		if (!http1ServerSupportsRequest(req)) {
109388  			_tmp$6 = ptrType$94.nil;
109389  			_tmp$7 = new badRequestError("unsupported protocol version");
109390  			w = _tmp$6;
109391  			err = _tmp$7;
109392  			$s = -1; return [w, err];
109393  		}
109394  		c[0].lastMethod = req.Method;
109395  		c[0].r.setInfiniteReadLimit();
109396  		_tuple$2 = (_entry = req.Header[$String.keyFor("Host")], _entry !== undefined ? [_entry.v, true] : [sliceType$1.nil, false]);
109397  		hosts = _tuple$2[0];
109398  		haveHost = _tuple$2[1];
109399  		isH2Upgrade = req.isH2Upgrade();
109400  		if (req.ProtoAtLeast(1, 1) && (!haveHost || (hosts.$length === 0)) && !isH2Upgrade && !(req.Method === "CONNECT")) {
109401  			_tmp$8 = ptrType$94.nil;
109402  			_tmp$9 = new badRequestError("missing required Host header");
109403  			w = _tmp$8;
109404  			err = _tmp$9;
109405  			$s = -1; return [w, err];
109406  		}
109407  		if (hosts.$length > 1) {
109408  			_tmp$10 = ptrType$94.nil;
109409  			_tmp$11 = new badRequestError("too many Host headers");
109410  			w = _tmp$10;
109411  			err = _tmp$11;
109412  			$s = -1; return [w, err];
109413  		}
109414  		if ((hosts.$length === 1) && !httplex.ValidHostHeader((0 >= hosts.$length ? ($throwRuntimeError("index out of range"), undefined) : hosts.$array[hosts.$offset + 0]))) {
109415  			_tmp$12 = ptrType$94.nil;
109416  			_tmp$13 = new badRequestError("malformed Host header");
109417  			w = _tmp$12;
109418  			err = _tmp$13;
109419  			$s = -1; return [w, err];
109420  		}
109421  		_ref = req.Header;
109422  		_i = 0;
109423  		_keys = $keys(_ref);
109424  		while (true) {
109425  			if (!(_i < _keys.length)) { break; }
109426  			_entry$1 = _ref[_keys[_i]];
109427  			if (_entry$1 === undefined) {
109428  				_i++;
109429  				continue;
109430  			}
109431  			k = _entry$1.k;
109432  			vv = _entry$1.v;
109433  			if (!httplex.ValidHeaderFieldName(k)) {
109434  				_tmp$14 = ptrType$94.nil;
109435  				_tmp$15 = new badRequestError("invalid header name");
109436  				w = _tmp$14;
109437  				err = _tmp$15;
109438  				$s = -1; return [w, err];
109439  			}
109440  			_ref$1 = vv;
109441  			_i$1 = 0;
109442  			while (true) {
109443  				if (!(_i$1 < _ref$1.$length)) { break; }
109444  				v = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]);
109445  				if (!httplex.ValidHeaderFieldValue(v)) {
109446  					_tmp$16 = ptrType$94.nil;
109447  					_tmp$17 = new badRequestError("invalid header value");
109448  					w = _tmp$16;
109449  					err = _tmp$17;
109450  					$s = -1; return [w, err];
109451  				}
109452  				_i$1++;
109453  			}
109454  			_i++;
109455  		}
109456  		delete req.Header[$String.keyFor("Host")];
109457  		_r$6 = context.WithCancel(ctx); /* */ $s = 12; case 12: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
109458  		_tuple$3 = _r$6;
109459  		ctx = _tuple$3[0];
109460  		cancelCtx = _tuple$3[1];
109461  		req.ctx = ctx;
109462  		req.RemoteAddr = c[0].remoteAddr;
109463  		req.TLS = c[0].tlsState;
109464  		_tuple$4 = $assertType(req.Body, ptrType$96, true);
109465  		body$1 = _tuple$4[0];
109466  		ok = _tuple$4[1];
109467  		if (ok) {
109468  			body$1.doEarlyClose = true;
109469  		}
109470  		/* */ if (!$clone(hdrDeadline, time.Time).Equal($clone(wholeReqDeadline, time.Time))) { $s = 13; continue; }
109471  		/* */ $s = 14; continue;
109472  		/* if (!$clone(hdrDeadline, time.Time).Equal($clone(wholeReqDeadline, time.Time))) { */ case 13:
109473  			_r$7 = c[0].rwc.SetReadDeadline($clone(wholeReqDeadline, time.Time)); /* */ $s = 15; case 15: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
109474  			_r$7;
109475  		/* } */ case 14:
109476  		w = new response.ptr(c[0], req, req.Body, cancelCtx, false, false, req.wantsHttp10KeepAlive(), req.wantsClose(), ptrType$10.nil, new chunkWriter.ptr(ptrType$94.nil, false, false, false), {}, false, new $Int64(0, 0), new $Int64(-1, 4294967295), 0, false, false, sliceType$1.nil, 0, arrayType$6.zero(), arrayType$7.zero(), arrayType$8.zero(), new $Chan($Bool, 1), 0);
109477  		if (isH2Upgrade) {
109478  			w.closeAfterReply = true;
109479  		}
109480  		w.cw.res = w;
109481  		_r$8 = newBufioWriterSize(w.cw, 2048); /* */ $s = 16; case 16: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
109482  		w.w = _r$8;
109483  		_tmp$18 = w;
109484  		_tmp$19 = $ifaceNil;
109485  		w = _tmp$18;
109486  		err = _tmp$19;
109487  		$s = -1; return [w, err];
109488  		/* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if (!$curGoroutine.asleep) { return  [w, err]; } if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: conn.ptr.prototype.readRequest }; } $f._entry = _entry; $f._entry$1 = _entry$1; $f._i = _i; $f._i$1 = _i$1; $f._keys = _keys; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._r$8 = _r$8; $f._ref = _ref; $f._ref$1 = _ref$1; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$10 = _tmp$10; $f._tmp$11 = _tmp$11; $f._tmp$12 = _tmp$12; $f._tmp$13 = _tmp$13; $f._tmp$14 = _tmp$14; $f._tmp$15 = _tmp$15; $f._tmp$16 = _tmp$16; $f._tmp$17 = _tmp$17; $f._tmp$18 = _tmp$18; $f._tmp$19 = _tmp$19; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tmp$4 = _tmp$4; $f._tmp$5 = _tmp$5; $f._tmp$6 = _tmp$6; $f._tmp$7 = _tmp$7; $f._tmp$8 = _tmp$8; $f._tmp$9 = _tmp$9; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f._tuple$4 = _tuple$4; $f.body$1 = body$1; $f.c = c; $f.cancelCtx = cancelCtx; $f.ctx = ctx; $f.d = d; $f.d$1 = d$1; $f.d$2 = d$2; $f.err = err; $f.haveHost = haveHost; $f.hdrDeadline = hdrDeadline; $f.hosts = hosts; $f.isH2Upgrade = isH2Upgrade; $f.k = k; $f.ok = ok; $f.peek = peek; $f.req = req; $f.t0 = t0; $f.v = v; $f.vv = vv; $f.w = w; $f.wholeReqDeadline = wholeReqDeadline; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
109489  	};
109490  	conn.prototype.readRequest = function(ctx) { return this.$val.readRequest(ctx); };
109491  	http1ServerSupportsRequest = function(req) {
109492  		var req;
109493  		if (req.ProtoMajor === 1) {
109494  			return true;
109495  		}
109496  		if ((req.ProtoMajor === 2) && (req.ProtoMinor === 0) && req.Method === "PRI" && req.RequestURI === "*") {
109497  			return true;
109498  		}
109499  		return false;
109500  	};
109501  	response.ptr.prototype.Header = function() {
109502  		var w;
109503  		w = this;
109504  		if (w.cw.header === false && w.wroteHeader && !w.cw.wroteHeader) {
109505  			w.cw.header = new Header(w.handlerHeader).clone();
109506  		}
109507  		w.calledHeader = true;
109508  		return w.handlerHeader;
109509  	};
109510  	response.prototype.Header = function() { return this.$val.Header(); };
109511  	checkWriteHeaderCode = function(code) {
109512  		var _r$1, code, $s, $r;
109513  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; code = $f.code; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
109514  		/* */ if (code < 100 || code > 999) { $s = 1; continue; }
109515  		/* */ $s = 2; continue;
109516  		/* if (code < 100 || code > 999) { */ case 1:
109517  			_r$1 = fmt.Sprintf("invalid WriteHeader code %v", new sliceType([new $Int(code)])); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
109518  			$panic(new $String(_r$1));
109519  		/* } */ case 2:
109520  		$s = -1; return;
109521  		/* */ } return; } if ($f === undefined) { $f = { $blk: checkWriteHeaderCode }; } $f._r$1 = _r$1; $f.code = code; $f.$s = $s; $f.$r = $r; return $f;
109522  	};
109523  	response.ptr.prototype.WriteHeader = function(code) {
109524  		var _r$1, _tuple, cl, code, err, v, w, $s, $r;
109525  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; _tuple = $f._tuple; cl = $f.cl; code = $f.code; err = $f.err; v = $f.v; w = $f.w; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
109526  		w = this;
109527  		_r$1 = w.conn.hijacked(); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
109528  		/* */ if (_r$1) { $s = 1; continue; }
109529  		/* */ $s = 2; continue;
109530  		/* if (_r$1) { */ case 1:
109531  			$r = w.conn.server.logf("http: response.WriteHeader on hijacked connection", new sliceType([])); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
109532  			$s = -1; return;
109533  		/* } */ case 2:
109534  		/* */ if (w.wroteHeader) { $s = 5; continue; }
109535  		/* */ $s = 6; continue;
109536  		/* if (w.wroteHeader) { */ case 5:
109537  			$r = w.conn.server.logf("http: multiple response.WriteHeader calls", new sliceType([])); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
109538  			$s = -1; return;
109539  		/* } */ case 6:
109540  		$r = checkWriteHeaderCode(code); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
109541  		w.wroteHeader = true;
109542  		w.status = code;
109543  		if (w.calledHeader && w.cw.header === false) {
109544  			w.cw.header = new Header(w.handlerHeader).clone();
109545  		}
109546  		cl = new Header(w.handlerHeader).get("Content-Length");
109547  		/* */ if (!(cl === "")) { $s = 9; continue; }
109548  		/* */ $s = 10; continue;
109549  		/* if (!(cl === "")) { */ case 9:
109550  			_tuple = strconv.ParseInt(cl, 10, 64);
109551  			v = _tuple[0];
109552  			err = _tuple[1];
109553  			/* */ if ($interfaceIsEqual(err, $ifaceNil) && (v.$high > 0 || (v.$high === 0 && v.$low >= 0))) { $s = 11; continue; }
109554  			/* */ $s = 12; continue;
109555  			/* if ($interfaceIsEqual(err, $ifaceNil) && (v.$high > 0 || (v.$high === 0 && v.$low >= 0))) { */ case 11:
109556  				w.contentLength = v;
109557  				$s = 13; continue;
109558  			/* } else { */ case 12:
109559  				$r = w.conn.server.logf("http: invalid Content-Length of %q", new sliceType([new $String(cl)])); /* */ $s = 14; case 14: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
109560  				new Header(w.handlerHeader).Del("Content-Length");
109561  			/* } */ case 13:
109562  		/* } */ case 10:
109563  		$s = -1; return;
109564  		/* */ } return; } if ($f === undefined) { $f = { $blk: response.ptr.prototype.WriteHeader }; } $f._r$1 = _r$1; $f._tuple = _tuple; $f.cl = cl; $f.code = code; $f.err = err; $f.v = v; $f.w = w; $f.$s = $s; $f.$r = $r; return $f;
109565  	};
109566  	response.prototype.WriteHeader = function(code) { return this.$val.WriteHeader(code); };
109567  	extraHeader.ptr.prototype.Write = function(w) {
109568  		var _i, _r$1, _r$10, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, h, i, v, w, $s, $r;
109569  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _i = $f._i; _r$1 = $f._r$1; _r$10 = $f._r$10; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _r$8 = $f._r$8; _r$9 = $f._r$9; _ref = $f._ref; h = $f.h; i = $f.i; v = $f.v; w = $f.w; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
109570  		h = this;
109571  		/* */ if (!(h.date === sliceType$3.nil)) { $s = 1; continue; }
109572  		/* */ $s = 2; continue;
109573  		/* if (!(h.date === sliceType$3.nil)) { */ case 1:
109574  			_r$1 = w.Write(headerDate); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
109575  			_r$1;
109576  			_r$2 = w.Write(h.date); /* */ $s = 4; case 4: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
109577  			_r$2;
109578  			_r$3 = w.Write(crlf); /* */ $s = 5; case 5: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
109579  			_r$3;
109580  		/* } */ case 2:
109581  		/* */ if (!(h.contentLength === sliceType$3.nil)) { $s = 6; continue; }
109582  		/* */ $s = 7; continue;
109583  		/* if (!(h.contentLength === sliceType$3.nil)) { */ case 6:
109584  			_r$4 = w.Write(headerContentLength); /* */ $s = 8; case 8: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
109585  			_r$4;
109586  			_r$5 = w.Write(h.contentLength); /* */ $s = 9; case 9: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
109587  			_r$5;
109588  			_r$6 = w.Write(crlf); /* */ $s = 10; case 10: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
109589  			_r$6;
109590  		/* } */ case 7:
109591  		_ref = new sliceType$1([h.contentType, h.connection, h.transferEncoding]);
109592  		_i = 0;
109593  		/* while (true) { */ case 11:
109594  			/* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 12; continue; }
109595  			i = _i;
109596  			v = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
109597  			/* */ if (!(v === "")) { $s = 13; continue; }
109598  			/* */ $s = 14; continue;
109599  			/* if (!(v === "")) { */ case 13:
109600  				_r$7 = w.Write(((i < 0 || i >= extraHeaderKeys.$length) ? ($throwRuntimeError("index out of range"), undefined) : extraHeaderKeys.$array[extraHeaderKeys.$offset + i])); /* */ $s = 15; case 15: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
109601  				_r$7;
109602  				_r$8 = w.Write(colonSpace); /* */ $s = 16; case 16: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
109603  				_r$8;
109604  				_r$9 = w.WriteString(v); /* */ $s = 17; case 17: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
109605  				_r$9;
109606  				_r$10 = w.Write(crlf); /* */ $s = 18; case 18: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
109607  				_r$10;
109608  			/* } */ case 14:
109609  			_i++;
109610  		/* } */ $s = 11; continue; case 12:
109611  		$s = -1; return;
109612  		/* */ } return; } if ($f === undefined) { $f = { $blk: extraHeader.ptr.prototype.Write }; } $f._i = _i; $f._r$1 = _r$1; $f._r$10 = _r$10; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._r$8 = _r$8; $f._r$9 = _r$9; $f._ref = _ref; $f.h = h; $f.i = i; $f.v = v; $f.w = w; $f.$s = $s; $f.$r = $r; return $f;
109613  	};
109614  	extraHeader.prototype.Write = function(w) { return this.$val.Write(w); };
109615  	chunkWriter.ptr.prototype.writeHeader = function(p) {
109616  		var _1, _entry, _entry$1, _entry$2, _entry$3, _entry$4, _i, _i$1, _i$2, _key, _keys, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _ref, _ref$1, _ref$2, _ref$3, _tmp, _tmp$1, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, bdy, bdy$1, bdy$2, code, connectionHeaderSet, cw, delHeader, discard, ecr, err, excludeHeader, hasCL, hasTE, haveType, header, isHEAD, k, k$1, keepAlivesEnabled, ok, ok$1, owned, p, sentLength, setHeader, te, tooBig, trailers, v, w, x$4, x$5, x$6, $s, $r;
109617  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _entry = $f._entry; _entry$1 = $f._entry$1; _entry$2 = $f._entry$2; _entry$3 = $f._entry$3; _entry$4 = $f._entry$4; _i = $f._i; _i$1 = $f._i$1; _i$2 = $f._i$2; _key = $f._key; _keys = $f._keys; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _ref = $f._ref; _ref$1 = $f._ref$1; _ref$2 = $f._ref$2; _ref$3 = $f._ref$3; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; _tuple$4 = $f._tuple$4; bdy = $f.bdy; bdy$1 = $f.bdy$1; bdy$2 = $f.bdy$2; code = $f.code; connectionHeaderSet = $f.connectionHeaderSet; cw = $f.cw; delHeader = $f.delHeader; discard = $f.discard; ecr = $f.ecr; err = $f.err; excludeHeader = $f.excludeHeader; hasCL = $f.hasCL; hasTE = $f.hasTE; haveType = $f.haveType; header = $f.header; isHEAD = $f.isHEAD; k = $f.k; k$1 = $f.k$1; keepAlivesEnabled = $f.keepAlivesEnabled; ok = $f.ok; ok$1 = $f.ok$1; owned = $f.owned; p = $f.p; sentLength = $f.sentLength; setHeader = $f.setHeader; te = $f.te; tooBig = $f.tooBig; trailers = $f.trailers; v = $f.v; w = $f.w; x$4 = $f.x$4; x$5 = $f.x$5; x$6 = $f.x$6; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
109618  		excludeHeader = [excludeHeader];
109619  		header = [header];
109620  		owned = [owned];
109621  		cw = this;
109622  		if (cw.wroteHeader) {
109623  			$s = -1; return;
109624  		}
109625  		cw.wroteHeader = true;
109626  		w = cw.res;
109627  		keepAlivesEnabled = w.conn.server.doKeepAlives();
109628  		isHEAD = w.req.Method === "HEAD";
109629  		header[0] = cw.header;
109630  		owned[0] = !(header[0] === false);
109631  		if (!owned[0]) {
109632  			header[0] = w.handlerHeader;
109633  		}
109634  		excludeHeader[0] = false;
109635  		delHeader = (function(excludeHeader, header, owned) { return function(key) {
109636  			var _entry, _key, _tuple, key, ok;
109637  			if (owned[0]) {
109638  				new Header(header[0]).Del(key);
109639  				return;
109640  			}
109641  			_tuple = (_entry = header[0][$String.keyFor(key)], _entry !== undefined ? [_entry.v, true] : [sliceType$1.nil, false]);
109642  			ok = _tuple[1];
109643  			if (!ok) {
109644  				return;
109645  			}
109646  			if (excludeHeader[0] === false) {
109647  				excludeHeader[0] = {};
109648  			}
109649  			_key = key; (excludeHeader[0] || $throwRuntimeError("assignment to entry in nil map"))[$String.keyFor(_key)] = { k: _key, v: true };
109650  		}; })(excludeHeader, header, owned);
109651  		setHeader = new extraHeader.ptr("", "", "", sliceType$3.nil, sliceType$3.nil);
109652  		trailers = false;
109653  		_ref = cw.header;
109654  		_i = 0;
109655  		_keys = $keys(_ref);
109656  		while (true) {
109657  			if (!(_i < _keys.length)) { break; }
109658  			_entry = _ref[_keys[_i]];
109659  			if (_entry === undefined) {
109660  				_i++;
109661  				continue;
109662  			}
109663  			k = _entry.k;
109664  			if (strings.HasPrefix(k, "Trailer:")) {
109665  				if (excludeHeader[0] === false) {
109666  					excludeHeader[0] = {};
109667  				}
109668  				_key = k; (excludeHeader[0] || $throwRuntimeError("assignment to entry in nil map"))[$String.keyFor(_key)] = { k: _key, v: true };
109669  				trailers = true;
109670  			}
109671  			_i++;
109672  		}
109673  		_ref$1 = (_entry$1 = cw.header[$String.keyFor("Trailer")], _entry$1 !== undefined ? _entry$1.v : sliceType$1.nil);
109674  		_i$1 = 0;
109675  		/* while (true) { */ case 1:
109676  			/* if (!(_i$1 < _ref$1.$length)) { break; } */ if(!(_i$1 < _ref$1.$length)) { $s = 2; continue; }
109677  			v = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]);
109678  			trailers = true;
109679  			$r = foreachHeaderElement(v, $methodVal(cw.res, "declareTrailer")); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
109680  			_i$1++;
109681  		/* } */ $s = 1; continue; case 2:
109682  		te = new Header(header[0]).get("Transfer-Encoding");
109683  		hasTE = !(te === "");
109684  		if ((w.$ptr_handlerDone || (w.$ptr_handlerDone = new ptrType$23(function() { return this.$target.handlerDone; }, function($v) { this.$target.handlerDone = $v; }, w))).isSet() && !trailers && !hasTE && bodyAllowedForStatus(w.status) && new Header(header[0]).get("Content-Length") === "" && (!isHEAD || p.$length > 0)) {
109685  			w.contentLength = (new $Int64(0, p.$length));
109686  			setHeader.contentLength = strconv.AppendInt($subslice(new sliceType$3(cw.res.clenBuf), 0, 0), (new $Int64(0, p.$length)), 10);
109687  		}
109688  		if (w.wants10KeepAlive && keepAlivesEnabled) {
109689  			sentLength = !(new Header(header[0]).get("Content-Length") === "");
109690  			if (sentLength && new Header(header[0]).get("Connection") === "keep-alive") {
109691  				w.closeAfterReply = false;
109692  			}
109693  		}
109694  		hasCL = !((x$4 = w.contentLength, (x$4.$high === -1 && x$4.$low === 4294967295)));
109695  		if (w.wants10KeepAlive && (isHEAD || hasCL || !bodyAllowedForStatus(w.status))) {
109696  			_tuple = (_entry$2 = header[0][$String.keyFor("Connection")], _entry$2 !== undefined ? [_entry$2.v, true] : [sliceType$1.nil, false]);
109697  			connectionHeaderSet = _tuple[1];
109698  			if (!connectionHeaderSet) {
109699  				setHeader.connection = "keep-alive";
109700  			}
109701  		} else if (!w.req.ProtoAtLeast(1, 1) || w.wantsClose) {
109702  			w.closeAfterReply = true;
109703  		}
109704  		if (new Header(header[0]).get("Connection") === "close" || !keepAlivesEnabled) {
109705  			w.closeAfterReply = true;
109706  		}
109707  		_tuple$1 = $assertType(w.req.Body, ptrType$98, true);
109708  		ecr = _tuple$1[0];
109709  		ok = _tuple$1[1];
109710  		if (ok && !ecr.sawEOF) {
109711  			w.closeAfterReply = true;
109712  		}
109713  		/* */ if (!((x$5 = w.req.ContentLength, (x$5.$high === 0 && x$5.$low === 0))) && !w.closeAfterReply) { $s = 4; continue; }
109714  		/* */ $s = 5; continue;
109715  		/* if (!((x$5 = w.req.ContentLength, (x$5.$high === 0 && x$5.$low === 0))) && !w.closeAfterReply) { */ case 4:
109716  			_tmp = false;
109717  			_tmp$1 = false;
109718  			discard = _tmp;
109719  			tooBig = _tmp$1;
109720  			_ref$2 = w.req.Body;
109721  			/* */ if ($assertType(_ref$2, ptrType$98, true)[1]) { $s = 6; continue; }
109722  			/* */ if ($assertType(_ref$2, ptrType$96, true)[1]) { $s = 7; continue; }
109723  			/* */ $s = 8; continue;
109724  			/* if ($assertType(_ref$2, ptrType$98, true)[1]) { */ case 6:
109725  				bdy = _ref$2.$val;
109726  				if (bdy.resp.wroteContinue) {
109727  					discard = true;
109728  				}
109729  				$s = 9; continue;
109730  			/* } else if ($assertType(_ref$2, ptrType$96, true)[1]) { */ case 7:
109731  				bdy$1 = _ref$2.$val;
109732  				$r = bdy$1.mu.Lock(); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
109733  				if (bdy$1.closed) {
109734  					if (!bdy$1.sawEOF) {
109735  						w.closeAfterReply = true;
109736  					}
109737  				} else if ((x$6 = bdy$1.unreadDataSizeLocked(), (x$6.$high > 0 || (x$6.$high === 0 && x$6.$low >= 262144)))) {
109738  					tooBig = true;
109739  				} else {
109740  					discard = true;
109741  				}
109742  				$r = bdy$1.mu.Unlock(); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
109743  				$s = 9; continue;
109744  			/* } else { */ case 8:
109745  				bdy$2 = _ref$2;
109746  				discard = true;
109747  			/* } */ case 9:
109748  			/* */ if (discard) { $s = 12; continue; }
109749  			/* */ $s = 13; continue;
109750  			/* if (discard) { */ case 12:
109751  				_r$1 = io.CopyN(ioutil.Discard, w.reqBody, new $Int64(0, 262145)); /* */ $s = 14; case 14: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
109752  				_tuple$2 = _r$1;
109753  				err = _tuple$2[1];
109754  					_1 = err;
109755  					/* */ if ($interfaceIsEqual(_1, $ifaceNil)) { $s = 16; continue; }
109756  					/* */ if ($interfaceIsEqual(_1, ($pkg.ErrBodyReadAfterClose))) { $s = 17; continue; }
109757  					/* */ if ($interfaceIsEqual(_1, (io.EOF))) { $s = 18; continue; }
109758  					/* */ $s = 19; continue;
109759  					/* if ($interfaceIsEqual(_1, $ifaceNil)) { */ case 16:
109760  						tooBig = true;
109761  						$s = 20; continue;
109762  					/* } else if ($interfaceIsEqual(_1, ($pkg.ErrBodyReadAfterClose))) { */ case 17:
109763  						$s = 20; continue;
109764  					/* } else if ($interfaceIsEqual(_1, (io.EOF))) { */ case 18:
109765  						_r$2 = w.reqBody.Close(); /* */ $s = 21; case 21: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
109766  						err = _r$2;
109767  						if (!($interfaceIsEqual(err, $ifaceNil))) {
109768  							w.closeAfterReply = true;
109769  						}
109770  						$s = 20; continue;
109771  					/* } else { */ case 19:
109772  						w.closeAfterReply = true;
109773  					/* } */ case 20:
109774  				case 15:
109775  			/* } */ case 13:
109776  			/* */ if (tooBig) { $s = 22; continue; }
109777  			/* */ $s = 23; continue;
109778  			/* if (tooBig) { */ case 22:
109779  				w.requestTooLarge();
109780  				$r = delHeader("Connection"); /* */ $s = 24; case 24: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
109781  				setHeader.connection = "close";
109782  			/* } */ case 23:
109783  		/* } */ case 5:
109784  		code = w.status;
109785  		/* */ if (bodyAllowedForStatus(code)) { $s = 25; continue; }
109786  		/* */ $s = 26; continue;
109787  		/* if (bodyAllowedForStatus(code)) { */ case 25:
109788  			_tuple$3 = (_entry$3 = header[0][$String.keyFor("Content-Type")], _entry$3 !== undefined ? [_entry$3.v, true] : [sliceType$1.nil, false]);
109789  			haveType = _tuple$3[1];
109790  			/* */ if (!haveType && !hasTE && p.$length > 0) { $s = 28; continue; }
109791  			/* */ $s = 29; continue;
109792  			/* if (!haveType && !hasTE && p.$length > 0) { */ case 28:
109793  				_r$3 = DetectContentType(p); /* */ $s = 30; case 30: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
109794  				setHeader.contentType = _r$3;
109795  			/* } */ case 29:
109796  			$s = 27; continue;
109797  		/* } else { */ case 26:
109798  			_ref$3 = suppressedHeaders(code);
109799  			_i$2 = 0;
109800  			/* while (true) { */ case 31:
109801  				/* if (!(_i$2 < _ref$3.$length)) { break; } */ if(!(_i$2 < _ref$3.$length)) { $s = 32; continue; }
109802  				k$1 = ((_i$2 < 0 || _i$2 >= _ref$3.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$3.$array[_ref$3.$offset + _i$2]);
109803  				$r = delHeader(k$1); /* */ $s = 33; case 33: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
109804  				_i$2++;
109805  			/* } */ $s = 31; continue; case 32:
109806  		/* } */ case 27:
109807  		_tuple$4 = (_entry$4 = header[0][$String.keyFor("Date")], _entry$4 !== undefined ? [_entry$4.v, true] : [sliceType$1.nil, false]);
109808  		ok$1 = _tuple$4[1];
109809  		/* */ if (!ok$1) { $s = 34; continue; }
109810  		/* */ $s = 35; continue;
109811  		/* if (!ok$1) { */ case 34:
109812  			_r$4 = appendTime($subslice(new sliceType$3(cw.res.dateBuf), 0, 0), $clone(time.Now(), time.Time)); /* */ $s = 36; case 36: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
109813  			setHeader.date = _r$4;
109814  		/* } */ case 35:
109815  		/* */ if (hasCL && hasTE && !(te === "identity")) { $s = 37; continue; }
109816  		/* */ $s = 38; continue;
109817  		/* if (hasCL && hasTE && !(te === "identity")) { */ case 37:
109818  			$r = w.conn.server.logf("http: WriteHeader called with both Transfer-Encoding of %q and a Content-Length of %d", new sliceType([new $String(te), w.contentLength])); /* */ $s = 39; case 39: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
109819  			$r = delHeader("Content-Length"); /* */ $s = 40; case 40: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
109820  			hasCL = false;
109821  		/* } */ case 38:
109822  		/* */ if (w.req.Method === "HEAD" || !bodyAllowedForStatus(code)) { $s = 41; continue; }
109823  		/* */ if (code === 204) { $s = 42; continue; }
109824  		/* */ if (hasCL) { $s = 43; continue; }
109825  		/* */ if (w.req.ProtoAtLeast(1, 1)) { $s = 44; continue; }
109826  		/* */ $s = 45; continue;
109827  		/* if (w.req.Method === "HEAD" || !bodyAllowedForStatus(code)) { */ case 41:
109828  			$s = 46; continue;
109829  		/* } else if (code === 204) { */ case 42:
109830  			$r = delHeader("Transfer-Encoding"); /* */ $s = 47; case 47: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
109831  			$s = 46; continue;
109832  		/* } else if (hasCL) { */ case 43:
109833  			$r = delHeader("Transfer-Encoding"); /* */ $s = 48; case 48: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
109834  			$s = 46; continue;
109835  		/* } else if (w.req.ProtoAtLeast(1, 1)) { */ case 44:
109836  			/* */ if (hasTE && te === "identity") { $s = 49; continue; }
109837  			/* */ $s = 50; continue;
109838  			/* if (hasTE && te === "identity") { */ case 49:
109839  				cw.chunking = false;
109840  				w.closeAfterReply = true;
109841  				$s = 51; continue;
109842  			/* } else { */ case 50:
109843  				cw.chunking = true;
109844  				setHeader.transferEncoding = "chunked";
109845  				/* */ if (hasTE && te === "chunked") { $s = 52; continue; }
109846  				/* */ $s = 53; continue;
109847  				/* if (hasTE && te === "chunked") { */ case 52:
109848  					$r = delHeader("Transfer-Encoding"); /* */ $s = 54; case 54: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
109849  				/* } */ case 53:
109850  			/* } */ case 51:
109851  			$s = 46; continue;
109852  		/* } else { */ case 45:
109853  			w.closeAfterReply = true;
109854  			$r = delHeader("Transfer-Encoding"); /* */ $s = 55; case 55: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
109855  		/* } */ case 46:
109856  		/* */ if (cw.chunking) { $s = 56; continue; }
109857  		/* */ $s = 57; continue;
109858  		/* if (cw.chunking) { */ case 56:
109859  			$r = delHeader("Content-Length"); /* */ $s = 58; case 58: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
109860  		/* } */ case 57:
109861  		if (!w.req.ProtoAtLeast(1, 0)) {
109862  			$s = -1; return;
109863  		}
109864  		/* */ if (w.closeAfterReply && (!keepAlivesEnabled || !hasToken(new Header(cw.header).get("Connection"), "close"))) { $s = 59; continue; }
109865  		/* */ $s = 60; continue;
109866  		/* if (w.closeAfterReply && (!keepAlivesEnabled || !hasToken(new Header(cw.header).get("Connection"), "close"))) { */ case 59:
109867  			$r = delHeader("Connection"); /* */ $s = 61; case 61: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
109868  			if (w.req.ProtoAtLeast(1, 1)) {
109869  				setHeader.connection = "close";
109870  			}
109871  		/* } */ case 60:
109872  		$r = writeStatusLine(w.conn.bufw, w.req.ProtoAtLeast(1, 1), code, new sliceType$3(w.statusBuf)); /* */ $s = 62; case 62: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
109873  		_r$5 = new Header(cw.header).WriteSubset(w.conn.bufw, excludeHeader[0]); /* */ $s = 63; case 63: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
109874  		_r$5;
109875  		$r = $clone(setHeader, extraHeader).Write(w.conn.bufw); /* */ $s = 64; case 64: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
109876  		_r$6 = w.conn.bufw.Write(crlf); /* */ $s = 65; case 65: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
109877  		_r$6;
109878  		$s = -1; return;
109879  		/* */ } return; } if ($f === undefined) { $f = { $blk: chunkWriter.ptr.prototype.writeHeader }; } $f._1 = _1; $f._entry = _entry; $f._entry$1 = _entry$1; $f._entry$2 = _entry$2; $f._entry$3 = _entry$3; $f._entry$4 = _entry$4; $f._i = _i; $f._i$1 = _i$1; $f._i$2 = _i$2; $f._key = _key; $f._keys = _keys; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._ref = _ref; $f._ref$1 = _ref$1; $f._ref$2 = _ref$2; $f._ref$3 = _ref$3; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f._tuple$4 = _tuple$4; $f.bdy = bdy; $f.bdy$1 = bdy$1; $f.bdy$2 = bdy$2; $f.code = code; $f.connectionHeaderSet = connectionHeaderSet; $f.cw = cw; $f.delHeader = delHeader; $f.discard = discard; $f.ecr = ecr; $f.err = err; $f.excludeHeader = excludeHeader; $f.hasCL = hasCL; $f.hasTE = hasTE; $f.haveType = haveType; $f.header = header; $f.isHEAD = isHEAD; $f.k = k; $f.k$1 = k$1; $f.keepAlivesEnabled = keepAlivesEnabled; $f.ok = ok; $f.ok$1 = ok$1; $f.owned = owned; $f.p = p; $f.sentLength = sentLength; $f.setHeader = setHeader; $f.te = te; $f.tooBig = tooBig; $f.trailers = trailers; $f.v = v; $f.w = w; $f.x$4 = x$4; $f.x$5 = x$5; $f.x$6 = x$6; $f.$s = $s; $f.$r = $r; return $f;
109880  	};
109881  	chunkWriter.prototype.writeHeader = function(p) { return this.$val.writeHeader(p); };
109882  	foreachHeaderElement = function(v, fn) {
109883  		var _i, _ref, f, fn, v, $s, $r;
109884  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _i = $f._i; _ref = $f._ref; f = $f.f; fn = $f.fn; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
109885  		v = textproto.TrimString(v);
109886  		if (v === "") {
109887  			$s = -1; return;
109888  		}
109889  		/* */ if (!strings.Contains(v, ",")) { $s = 1; continue; }
109890  		/* */ $s = 2; continue;
109891  		/* if (!strings.Contains(v, ",")) { */ case 1:
109892  			$r = fn(v); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
109893  			$s = -1; return;
109894  		/* } */ case 2:
109895  		_ref = strings.Split(v, ",");
109896  		_i = 0;
109897  		/* while (true) { */ case 4:
109898  			/* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 5; continue; }
109899  			f = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
109900  			f = textproto.TrimString(f);
109901  			/* */ if (!(f === "")) { $s = 6; continue; }
109902  			/* */ $s = 7; continue;
109903  			/* if (!(f === "")) { */ case 6:
109904  				$r = fn(f); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
109905  			/* } */ case 7:
109906  			_i++;
109907  		/* } */ $s = 4; continue; case 5:
109908  		$s = -1; return;
109909  		/* */ } return; } if ($f === undefined) { $f = { $blk: foreachHeaderElement }; } $f._i = _i; $f._ref = _ref; $f.f = f; $f.fn = fn; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
109910  	};
109911  	writeStatusLine = function(bw, is11, code, scratch) {
109912  		var _entry, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _tuple, bw, code, is11, ok, scratch, text, $s, $r;
109913  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _entry = $f._entry; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _tuple = $f._tuple; bw = $f.bw; code = $f.code; is11 = $f.is11; ok = $f.ok; scratch = $f.scratch; text = $f.text; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
109914  		/* */ if (is11) { $s = 1; continue; }
109915  		/* */ $s = 2; continue;
109916  		/* if (is11) { */ case 1:
109917  			_r$1 = bw.WriteString("HTTP/1.1 "); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
109918  			_r$1;
109919  			$s = 3; continue;
109920  		/* } else { */ case 2:
109921  			_r$2 = bw.WriteString("HTTP/1.0 "); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
109922  			_r$2;
109923  		/* } */ case 3:
109924  		_tuple = (_entry = statusText[$Int.keyFor(code)], _entry !== undefined ? [_entry.v, true] : ["", false]);
109925  		text = _tuple[0];
109926  		ok = _tuple[1];
109927  		/* */ if (ok) { $s = 6; continue; }
109928  		/* */ $s = 7; continue;
109929  		/* if (ok) { */ case 6:
109930  			_r$3 = bw.Write(strconv.AppendInt($subslice(scratch, 0, 0), (new $Int64(0, code)), 10)); /* */ $s = 9; case 9: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
109931  			_r$3;
109932  			_r$4 = bw.WriteByte(32); /* */ $s = 10; case 10: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
109933  			_r$4;
109934  			_r$5 = bw.WriteString(text); /* */ $s = 11; case 11: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
109935  			_r$5;
109936  			_r$6 = bw.WriteString("\r\n"); /* */ $s = 12; case 12: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
109937  			_r$6;
109938  			$s = 8; continue;
109939  		/* } else { */ case 7:
109940  			_r$7 = fmt.Fprintf(bw, "%03d status code %d\r\n", new sliceType([new $Int(code), new $Int(code)])); /* */ $s = 13; case 13: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
109941  			_r$7;
109942  		/* } */ case 8:
109943  		$s = -1; return;
109944  		/* */ } return; } if ($f === undefined) { $f = { $blk: writeStatusLine }; } $f._entry = _entry; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._tuple = _tuple; $f.bw = bw; $f.code = code; $f.is11 = is11; $f.ok = ok; $f.scratch = scratch; $f.text = text; $f.$s = $s; $f.$r = $r; return $f;
109945  	};
109946  	response.ptr.prototype.bodyAllowed = function() {
109947  		var w;
109948  		w = this;
109949  		if (!w.wroteHeader) {
109950  			$panic(new $String(""));
109951  		}
109952  		return bodyAllowedForStatus(w.status);
109953  	};
109954  	response.prototype.bodyAllowed = function() { return this.$val.bodyAllowed(); };
109955  	response.ptr.prototype.Write = function(data) {
109956  		var _r$1, _tuple, data, err, n, w, $s, $r;
109957  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; _tuple = $f._tuple; data = $f.data; err = $f.err; n = $f.n; w = $f.w; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
109958  		n = 0;
109959  		err = $ifaceNil;
109960  		w = this;
109961  		_r$1 = w.write(data.$length, data, ""); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
109962  		_tuple = _r$1;
109963  		n = _tuple[0];
109964  		err = _tuple[1];
109965  		$s = -1; return [n, err];
109966  		/* */ } return; } if ($f === undefined) { $f = { $blk: response.ptr.prototype.Write }; } $f._r$1 = _r$1; $f._tuple = _tuple; $f.data = data; $f.err = err; $f.n = n; $f.w = w; $f.$s = $s; $f.$r = $r; return $f;
109967  	};
109968  	response.prototype.Write = function(data) { return this.$val.Write(data); };
109969  	response.ptr.prototype.WriteString = function(data) {
109970  		var _r$1, _tuple, data, err, n, w, $s, $r;
109971  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; _tuple = $f._tuple; data = $f.data; err = $f.err; n = $f.n; w = $f.w; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
109972  		n = 0;
109973  		err = $ifaceNil;
109974  		w = this;
109975  		_r$1 = w.write(data.length, sliceType$3.nil, data); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
109976  		_tuple = _r$1;
109977  		n = _tuple[0];
109978  		err = _tuple[1];
109979  		$s = -1; return [n, err];
109980  		/* */ } return; } if ($f === undefined) { $f = { $blk: response.ptr.prototype.WriteString }; } $f._r$1 = _r$1; $f._tuple = _tuple; $f.data = data; $f.err = err; $f.n = n; $f.w = w; $f.$s = $s; $f.$r = $r; return $f;
109981  	};
109982  	response.prototype.WriteString = function(data) { return this.$val.WriteString(data); };
109983  	response.ptr.prototype.write = function(lenData, dataB, dataS) {
109984  		var _r$1, _r$2, _r$3, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tuple, _tuple$1, dataB, dataS, err, lenData, n, w, x$4, x$5, x$6, x$7, x$8, $s, $r;
109985  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tmp$4 = $f._tmp$4; _tmp$5 = $f._tmp$5; _tmp$6 = $f._tmp$6; _tmp$7 = $f._tmp$7; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; dataB = $f.dataB; dataS = $f.dataS; err = $f.err; lenData = $f.lenData; n = $f.n; w = $f.w; x$4 = $f.x$4; x$5 = $f.x$5; x$6 = $f.x$6; x$7 = $f.x$7; x$8 = $f.x$8; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
109986  		n = 0;
109987  		err = $ifaceNil;
109988  		w = this;
109989  		_r$1 = w.conn.hijacked(); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
109990  		/* */ if (_r$1) { $s = 1; continue; }
109991  		/* */ $s = 2; continue;
109992  		/* if (_r$1) { */ case 1:
109993  			/* */ if (lenData > 0) { $s = 4; continue; }
109994  			/* */ $s = 5; continue;
109995  			/* if (lenData > 0) { */ case 4:
109996  				$r = w.conn.server.logf("http: response.Write on hijacked connection", new sliceType([])); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
109997  			/* } */ case 5:
109998  			_tmp = 0;
109999  			_tmp$1 = $pkg.ErrHijacked;
110000  			n = _tmp;
110001  			err = _tmp$1;
110002  			$s = -1; return [n, err];
110003  		/* } */ case 2:
110004  		/* */ if (!w.wroteHeader) { $s = 7; continue; }
110005  		/* */ $s = 8; continue;
110006  		/* if (!w.wroteHeader) { */ case 7:
110007  			$r = w.WriteHeader(200); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
110008  		/* } */ case 8:
110009  		if (lenData === 0) {
110010  			_tmp$2 = 0;
110011  			_tmp$3 = $ifaceNil;
110012  			n = _tmp$2;
110013  			err = _tmp$3;
110014  			$s = -1; return [n, err];
110015  		}
110016  		if (!w.bodyAllowed()) {
110017  			_tmp$4 = 0;
110018  			_tmp$5 = $pkg.ErrBodyNotAllowed;
110019  			n = _tmp$4;
110020  			err = _tmp$5;
110021  			$s = -1; return [n, err];
110022  		}
110023  		w.written = (x$4 = w.written, x$5 = (new $Int64(0, lenData)), new $Int64(x$4.$high + x$5.$high, x$4.$low + x$5.$low));
110024  		if (!((x$6 = w.contentLength, (x$6.$high === -1 && x$6.$low === 4294967295))) && (x$7 = w.written, x$8 = w.contentLength, (x$7.$high > x$8.$high || (x$7.$high === x$8.$high && x$7.$low > x$8.$low)))) {
110025  			_tmp$6 = 0;
110026  			_tmp$7 = $pkg.ErrContentLength;
110027  			n = _tmp$6;
110028  			err = _tmp$7;
110029  			$s = -1; return [n, err];
110030  		}
110031  		/* */ if (!(dataB === sliceType$3.nil)) { $s = 10; continue; }
110032  		/* */ $s = 11; continue;
110033  		/* if (!(dataB === sliceType$3.nil)) { */ case 10:
110034  			_r$2 = w.w.Write(dataB); /* */ $s = 13; case 13: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
110035  			_tuple = _r$2;
110036  			n = _tuple[0];
110037  			err = _tuple[1];
110038  			$s = -1; return [n, err];
110039  		/* } else { */ case 11:
110040  			_r$3 = w.w.WriteString(dataS); /* */ $s = 14; case 14: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
110041  			_tuple$1 = _r$3;
110042  			n = _tuple$1[0];
110043  			err = _tuple$1[1];
110044  			$s = -1; return [n, err];
110045  		/* } */ case 12:
110046  		$s = -1; return [n, err];
110047  		/* */ } return; } if ($f === undefined) { $f = { $blk: response.ptr.prototype.write }; } $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tmp$4 = _tmp$4; $f._tmp$5 = _tmp$5; $f._tmp$6 = _tmp$6; $f._tmp$7 = _tmp$7; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.dataB = dataB; $f.dataS = dataS; $f.err = err; $f.lenData = lenData; $f.n = n; $f.w = w; $f.x$4 = x$4; $f.x$5 = x$5; $f.x$6 = x$6; $f.x$7 = x$7; $f.x$8 = x$8; $f.$s = $s; $f.$r = $r; return $f;
110048  	};
110049  	response.prototype.write = function(lenData, dataB, dataS) { return this.$val.write(lenData, dataB, dataS); };
110050  	response.ptr.prototype.finishRequest = function() {
110051  		var _r$1, _r$2, _r$3, w, $s, $r;
110052  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; w = $f.w; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
110053  		w = this;
110054  		(w.$ptr_handlerDone || (w.$ptr_handlerDone = new ptrType$23(function() { return this.$target.handlerDone; }, function($v) { this.$target.handlerDone = $v; }, w))).setTrue();
110055  		/* */ if (!w.wroteHeader) { $s = 1; continue; }
110056  		/* */ $s = 2; continue;
110057  		/* if (!w.wroteHeader) { */ case 1:
110058  			$r = w.WriteHeader(200); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
110059  		/* } */ case 2:
110060  		_r$1 = w.w.Flush(); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
110061  		_r$1;
110062  		putBufioWriter(w.w);
110063  		$r = w.cw.close(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
110064  		_r$2 = w.conn.bufw.Flush(); /* */ $s = 6; case 6: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
110065  		_r$2;
110066  		$r = w.conn.r.abortPendingRead(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
110067  		_r$3 = w.reqBody.Close(); /* */ $s = 8; case 8: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
110068  		_r$3;
110069  		if (!(w.req.MultipartForm === ptrType$21.nil)) {
110070  			w.req.MultipartForm.RemoveAll();
110071  		}
110072  		$s = -1; return;
110073  		/* */ } return; } if ($f === undefined) { $f = { $blk: response.ptr.prototype.finishRequest }; } $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f.w = w; $f.$s = $s; $f.$r = $r; return $f;
110074  	};
110075  	response.prototype.finishRequest = function() { return this.$val.finishRequest(); };
110076  	response.ptr.prototype.shouldReuseConnection = function() {
110077  		var _r$1, w, x$4, x$5, x$6, $s, $r;
110078  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; w = $f.w; x$4 = $f.x$4; x$5 = $f.x$5; x$6 = $f.x$6; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
110079  		w = this;
110080  		if (w.closeAfterReply) {
110081  			$s = -1; return false;
110082  		}
110083  		if (!(w.req.Method === "HEAD") && !((x$4 = w.contentLength, (x$4.$high === -1 && x$4.$low === 4294967295))) && w.bodyAllowed() && !((x$5 = w.contentLength, x$6 = w.written, (x$5.$high === x$6.$high && x$5.$low === x$6.$low)))) {
110084  			$s = -1; return false;
110085  		}
110086  		if (!($interfaceIsEqual(w.conn.werr, $ifaceNil))) {
110087  			$s = -1; return false;
110088  		}
110089  		_r$1 = w.closedRequestBodyEarly(); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
110090  		/* */ if (_r$1) { $s = 1; continue; }
110091  		/* */ $s = 2; continue;
110092  		/* if (_r$1) { */ case 1:
110093  			$s = -1; return false;
110094  		/* } */ case 2:
110095  		$s = -1; return true;
110096  		/* */ } return; } if ($f === undefined) { $f = { $blk: response.ptr.prototype.shouldReuseConnection }; } $f._r$1 = _r$1; $f.w = w; $f.x$4 = x$4; $f.x$5 = x$5; $f.x$6 = x$6; $f.$s = $s; $f.$r = $r; return $f;
110097  	};
110098  	response.prototype.shouldReuseConnection = function() { return this.$val.shouldReuseConnection(); };
110099  	response.ptr.prototype.closedRequestBodyEarly = function() {
110100  		var _r$1, _tuple, _v, body$1, ok, w, $s, $r;
110101  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; _tuple = $f._tuple; _v = $f._v; body$1 = $f.body$1; ok = $f.ok; w = $f.w; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
110102  		w = this;
110103  		_tuple = $assertType(w.req.Body, ptrType$96, true);
110104  		body$1 = _tuple[0];
110105  		ok = _tuple[1];
110106  		if (!(ok)) { _v = false; $s = 1; continue s; }
110107  		_r$1 = body$1.didEarlyClose(); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
110108  		_v = _r$1; case 1:
110109  		$s = -1; return _v;
110110  		/* */ } return; } if ($f === undefined) { $f = { $blk: response.ptr.prototype.closedRequestBodyEarly }; } $f._r$1 = _r$1; $f._tuple = _tuple; $f._v = _v; $f.body$1 = body$1; $f.ok = ok; $f.w = w; $f.$s = $s; $f.$r = $r; return $f;
110111  	};
110112  	response.prototype.closedRequestBodyEarly = function() { return this.$val.closedRequestBodyEarly(); };
110113  	response.ptr.prototype.Flush = function() {
110114  		var _r$1, w, $s, $r;
110115  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; w = $f.w; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
110116  		w = this;
110117  		/* */ if (!w.wroteHeader) { $s = 1; continue; }
110118  		/* */ $s = 2; continue;
110119  		/* if (!w.wroteHeader) { */ case 1:
110120  			$r = w.WriteHeader(200); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
110121  		/* } */ case 2:
110122  		_r$1 = w.w.Flush(); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
110123  		_r$1;
110124  		$r = w.cw.flush(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
110125  		$s = -1; return;
110126  		/* */ } return; } if ($f === undefined) { $f = { $blk: response.ptr.prototype.Flush }; } $f._r$1 = _r$1; $f.w = w; $f.$s = $s; $f.$r = $r; return $f;
110127  	};
110128  	response.prototype.Flush = function() { return this.$val.Flush(); };
110129  	conn.ptr.prototype.finalFlush = function() {
110130  		var _r$1, c, $s, $r;
110131  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; c = $f.c; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
110132  		c = this;
110133  		if (!(c.bufr === ptrType$72.nil)) {
110134  			putBufioReader(c.bufr);
110135  			c.bufr = ptrType$72.nil;
110136  		}
110137  		/* */ if (!(c.bufw === ptrType$10.nil)) { $s = 1; continue; }
110138  		/* */ $s = 2; continue;
110139  		/* if (!(c.bufw === ptrType$10.nil)) { */ case 1:
110140  			_r$1 = c.bufw.Flush(); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
110141  			_r$1;
110142  			putBufioWriter(c.bufw);
110143  			c.bufw = ptrType$10.nil;
110144  		/* } */ case 2:
110145  		$s = -1; return;
110146  		/* */ } return; } if ($f === undefined) { $f = { $blk: conn.ptr.prototype.finalFlush }; } $f._r$1 = _r$1; $f.c = c; $f.$s = $s; $f.$r = $r; return $f;
110147  	};
110148  	conn.prototype.finalFlush = function() { return this.$val.finalFlush(); };
110149  	conn.ptr.prototype.close = function() {
110150  		var _r$1, c, $s, $r;
110151  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; c = $f.c; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
110152  		c = this;
110153  		$r = c.finalFlush(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
110154  		_r$1 = c.rwc.Close(); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
110155  		_r$1;
110156  		$s = -1; return;
110157  		/* */ } return; } if ($f === undefined) { $f = { $blk: conn.ptr.prototype.close }; } $f._r$1 = _r$1; $f.c = c; $f.$s = $s; $f.$r = $r; return $f;
110158  	};
110159  	conn.prototype.close = function() { return this.$val.close(); };
110160  	conn.ptr.prototype.closeWriteAndWait = function() {
110161  		var _r$1, _tuple, c, ok, tcp, $s, $r;
110162  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; _tuple = $f._tuple; c = $f.c; ok = $f.ok; tcp = $f.tcp; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
110163  		c = this;
110164  		$r = c.finalFlush(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
110165  		_tuple = $assertType(c.rwc, closeWriter, true);
110166  		tcp = _tuple[0];
110167  		ok = _tuple[1];
110168  		/* */ if (ok) { $s = 2; continue; }
110169  		/* */ $s = 3; continue;
110170  		/* if (ok) { */ case 2:
110171  			_r$1 = tcp.CloseWrite(); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
110172  			_r$1;
110173  		/* } */ case 3:
110174  		$r = time.Sleep(new time.Duration(0, 500000000)); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
110175  		$s = -1; return;
110176  		/* */ } return; } if ($f === undefined) { $f = { $blk: conn.ptr.prototype.closeWriteAndWait }; } $f._r$1 = _r$1; $f._tuple = _tuple; $f.c = c; $f.ok = ok; $f.tcp = tcp; $f.$s = $s; $f.$r = $r; return $f;
110177  	};
110178  	conn.prototype.closeWriteAndWait = function() { return this.$val.closeWriteAndWait(); };
110179  	validNPN = function(proto) {
110180  		var _1, proto;
110181  		_1 = proto;
110182  		if (_1 === ("") || _1 === ("http/1.1") || _1 === ("http/1.0")) {
110183  			return false;
110184  		}
110185  		return true;
110186  	};
110187  	conn.ptr.prototype.setState = function(nc, state) {
110188  		var _1, c, hook, nc, srv, state, $s, $r;
110189  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; c = $f.c; hook = $f.hook; nc = $f.nc; srv = $f.srv; state = $f.state; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
110190  		c = this;
110191  		srv = c.server;
110192  			_1 = state;
110193  			/* */ if (_1 === (0)) { $s = 2; continue; }
110194  			/* */ if ((_1 === (3)) || (_1 === (4))) { $s = 3; continue; }
110195  			/* */ $s = 4; continue;
110196  			/* if (_1 === (0)) { */ case 2:
110197  				$r = srv.trackConn(c, true); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
110198  				$s = 4; continue;
110199  			/* } else if ((_1 === (3)) || (_1 === (4))) { */ case 3:
110200  				$r = srv.trackConn(c, false); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
110201  			/* } */ case 4:
110202  		case 1:
110203  		c.curState.Store(((state < 0 || state >= connStateInterface.length) ? ($throwRuntimeError("index out of range"), undefined) : connStateInterface[state]));
110204  		hook = srv.ConnState;
110205  		/* */ if (!(hook === $throwNilPointerError)) { $s = 7; continue; }
110206  		/* */ $s = 8; continue;
110207  		/* if (!(hook === $throwNilPointerError)) { */ case 7:
110208  			$r = hook(nc, state); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
110209  		/* } */ case 8:
110210  		$s = -1; return;
110211  		/* */ } return; } if ($f === undefined) { $f = { $blk: conn.ptr.prototype.setState }; } $f._1 = _1; $f.c = c; $f.hook = hook; $f.nc = nc; $f.srv = srv; $f.state = state; $f.$s = $s; $f.$r = $r; return $f;
110212  	};
110213  	conn.prototype.setState = function(nc, state) { return this.$val.setState(nc, state); };
110214  	badRequestError.prototype.Error = function() {
110215  		var e;
110216  		e = this.$val;
110217  		return "Bad Request: " + (e);
110218  	};
110219  	$ptrType(badRequestError).prototype.Error = function() { return new badRequestError(this.$get()).Error(); };
110220  	isCommonNetReadError = function(err) {
110221  		var _r$1, _tuple, _tuple$1, _v, err, neterr, oe, ok, ok$1, $s, $r;
110222  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _v = $f._v; err = $f.err; neterr = $f.neterr; oe = $f.oe; ok = $f.ok; ok$1 = $f.ok$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
110223  		if ($interfaceIsEqual(err, io.EOF)) {
110224  			$s = -1; return true;
110225  		}
110226  		_tuple = $assertType(err, net.Error, true);
110227  		neterr = _tuple[0];
110228  		ok = _tuple[1];
110229  		if (!(ok)) { _v = false; $s = 3; continue s; }
110230  		_r$1 = neterr.Timeout(); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
110231  		_v = _r$1; case 3:
110232  		/* */ if (_v) { $s = 1; continue; }
110233  		/* */ $s = 2; continue;
110234  		/* if (_v) { */ case 1:
110235  			$s = -1; return true;
110236  		/* } */ case 2:
110237  		_tuple$1 = $assertType(err, ptrType$59, true);
110238  		oe = _tuple$1[0];
110239  		ok$1 = _tuple$1[1];
110240  		if (ok$1 && oe.Op === "read") {
110241  			$s = -1; return true;
110242  		}
110243  		$s = -1; return false;
110244  		/* */ } return; } if ($f === undefined) { $f = { $blk: isCommonNetReadError }; } $f._r$1 = _r$1; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._v = _v; $f.err = err; $f.neterr = neterr; $f.oe = oe; $f.ok = ok; $f.ok$1 = ok$1; $f.$s = $s; $f.$r = $r; return $f;
110245  	};
110246  	conn.ptr.prototype.serve = function(ctx) {
110247  		var _arg, _arg$1, _arg$2, _arg$3, _arg$4, _entry, _r$1, _r$10, _r$11, _r$12, _r$13, _r$14, _r$15, _r$16, _r$17, _r$18, _r$19, _r$2, _r$20, _r$21, _r$22, _r$23, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, _v, c, cancelCtx, ctx, d, d$1, d$2, err, err$1, err$2, fn, h, ok, ok$1, proto, publicErr, req, tlsConn, v, w, x$4, x$5, x$6, x$7, $s, $deferred, $r;
110248  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _arg = $f._arg; _arg$1 = $f._arg$1; _arg$2 = $f._arg$2; _arg$3 = $f._arg$3; _arg$4 = $f._arg$4; _entry = $f._entry; _r$1 = $f._r$1; _r$10 = $f._r$10; _r$11 = $f._r$11; _r$12 = $f._r$12; _r$13 = $f._r$13; _r$14 = $f._r$14; _r$15 = $f._r$15; _r$16 = $f._r$16; _r$17 = $f._r$17; _r$18 = $f._r$18; _r$19 = $f._r$19; _r$2 = $f._r$2; _r$20 = $f._r$20; _r$21 = $f._r$21; _r$22 = $f._r$22; _r$23 = $f._r$23; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _r$8 = $f._r$8; _r$9 = $f._r$9; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; _tuple$4 = $f._tuple$4; _v = $f._v; c = $f.c; cancelCtx = $f.cancelCtx; ctx = $f.ctx; d = $f.d; d$1 = $f.d$1; d$2 = $f.d$2; err = $f.err; err$1 = $f.err$1; err$2 = $f.err$2; fn = $f.fn; h = $f.h; ok = $f.ok; ok$1 = $f.ok$1; proto = $f.proto; publicErr = $f.publicErr; req = $f.req; tlsConn = $f.tlsConn; v = $f.v; w = $f.w; x$4 = $f.x$4; x$5 = $f.x$5; x$6 = $f.x$6; x$7 = $f.x$7; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
110249  		c = [c];
110250  		c[0] = this;
110251  		_r$1 = c[0].rwc.RemoteAddr(); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
110252  		_r$2 = _r$1.String(); /* */ $s = 2; case 2: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
110253  		c[0].remoteAddr = _r$2;
110254  		_arg = ctx;
110255  		_arg$1 = $pkg.LocalAddrContextKey;
110256  		_r$3 = c[0].rwc.LocalAddr(); /* */ $s = 3; case 3: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
110257  		_arg$2 = _r$3;
110258  		_r$4 = context.WithValue(_arg, _arg$1, _arg$2); /* */ $s = 4; case 4: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
110259  		ctx = _r$4;
110260  		$deferred.push([(function(c) { return function $b() {
110261  			var _r$5, buf, err, $s, $r;
110262  			/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$5 = $f._r$5; buf = $f.buf; err = $f.err; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
110263  			err = $recover();
110264  			/* */ if (!($interfaceIsEqual(err, $ifaceNil)) && !($interfaceIsEqual(err, $pkg.ErrAbortHandler))) { $s = 1; continue; }
110265  			/* */ $s = 2; continue;
110266  			/* if (!($interfaceIsEqual(err, $ifaceNil)) && !($interfaceIsEqual(err, $pkg.ErrAbortHandler))) { */ case 1:
110267  				buf = $makeSlice(sliceType$3, 65536);
110268  				buf = $subslice(buf, 0, runtime.Stack(buf, false));
110269  				$r = c[0].server.logf("http: panic serving %v: %v\n%s", new sliceType([new $String(c[0].remoteAddr), err, buf])); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
110270  			/* } */ case 2:
110271  			_r$5 = c[0].hijacked(); /* */ $s = 6; case 6: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
110272  			/* */ if (!_r$5) { $s = 4; continue; }
110273  			/* */ $s = 5; continue;
110274  			/* if (!_r$5) { */ case 4:
110275  				$r = c[0].close(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
110276  				$r = c[0].setState(c[0].rwc, 4); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
110277  			/* } */ case 5:
110278  			$s = -1; return;
110279  			/* */ } return; } if ($f === undefined) { $f = { $blk: $b }; } $f._r$5 = _r$5; $f.buf = buf; $f.err = err; $f.$s = $s; $f.$r = $r; return $f;
110280  		}; })(c), []]);
110281  		_tuple = $assertType(c[0].rwc, ptrType$99, true);
110282  		tlsConn = _tuple[0];
110283  		ok = _tuple[1];
110284  		/* */ if (ok) { $s = 5; continue; }
110285  		/* */ $s = 6; continue;
110286  		/* if (ok) { */ case 5:
110287  			d = c[0].server.ReadTimeout;
110288  			/* */ if (!((d.$high === 0 && d.$low === 0))) { $s = 7; continue; }
110289  			/* */ $s = 8; continue;
110290  			/* if (!((d.$high === 0 && d.$low === 0))) { */ case 7:
110291  				_r$5 = c[0].rwc.SetReadDeadline($clone($clone(time.Now(), time.Time).Add(d), time.Time)); /* */ $s = 9; case 9: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
110292  				_r$5;
110293  			/* } */ case 8:
110294  			d$1 = c[0].server.WriteTimeout;
110295  			/* */ if (!((d$1.$high === 0 && d$1.$low === 0))) { $s = 10; continue; }
110296  			/* */ $s = 11; continue;
110297  			/* if (!((d$1.$high === 0 && d$1.$low === 0))) { */ case 10:
110298  				_r$6 = c[0].rwc.SetWriteDeadline($clone($clone(time.Now(), time.Time).Add(d$1), time.Time)); /* */ $s = 12; case 12: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
110299  				_r$6;
110300  			/* } */ case 11:
110301  			_r$7 = tlsConn.Handshake(); /* */ $s = 13; case 13: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
110302  			err = _r$7;
110303  			/* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 14; continue; }
110304  			/* */ $s = 15; continue;
110305  			/* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 14:
110306  				_r$8 = c[0].rwc.RemoteAddr(); /* */ $s = 16; case 16: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
110307  				_arg$3 = _r$8;
110308  				_arg$4 = err;
110309  				$r = c[0].server.logf("http: TLS handshake error from %s: %v", new sliceType([_arg$3, _arg$4])); /* */ $s = 17; case 17: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
110310  				$s = -1; return;
110311  			/* } */ case 15:
110312  			c[0].tlsState = new tls.ConnectionState.ptr(0, false, false, 0, "", false, "", sliceType$17.nil, sliceType$18.nil, sliceType$5.nil, sliceType$3.nil, sliceType$3.nil);
110313  			_r$9 = tlsConn.ConnectionState(); /* */ $s = 18; case 18: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
110314  			tls.ConnectionState.copy(c[0].tlsState, _r$9);
110315  			proto = c[0].tlsState.NegotiatedProtocol;
110316  			/* */ if (validNPN(proto)) { $s = 19; continue; }
110317  			/* */ $s = 20; continue;
110318  			/* if (validNPN(proto)) { */ case 19:
110319  				fn = (_entry = c[0].server.TLSNextProto[$String.keyFor(proto)], _entry !== undefined ? _entry.v : $throwNilPointerError);
110320  				/* */ if (!(fn === $throwNilPointerError)) { $s = 21; continue; }
110321  				/* */ $s = 22; continue;
110322  				/* if (!(fn === $throwNilPointerError)) { */ case 21:
110323  					h = new initNPNRequest.ptr(tlsConn, new serverHandler.ptr(c[0].server));
110324  					$r = fn(c[0].server, tlsConn, new h.constructor.elem(h)); /* */ $s = 23; case 23: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
110325  				/* } */ case 22:
110326  				$s = -1; return;
110327  			/* } */ case 20:
110328  		/* } */ case 6:
110329  		_r$10 = context.WithCancel(ctx); /* */ $s = 24; case 24: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
110330  		_tuple$1 = _r$10;
110331  		ctx = _tuple$1[0];
110332  		cancelCtx = _tuple$1[1];
110333  		c[0].cancelCtx = cancelCtx;
110334  		$deferred.push([cancelCtx, []]);
110335  		c[0].r = new connReader.ptr(c[0], new sync.Mutex.ptr(0, 0), false, arrayType$5.zero(), ptrType$71.nil, false, false, new $Int64(0, 0));
110336  		_r$11 = newBufioReader(c[0].r); /* */ $s = 25; case 25: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; }
110337  		c[0].bufr = _r$11;
110338  		_r$12 = newBufioWriterSize((x$4 = new checkConnErrorWriter.ptr(c[0]), new x$4.constructor.elem(x$4)), 4096); /* */ $s = 26; case 26: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; }
110339  		c[0].bufw = _r$12;
110340  		/* while (true) { */ case 27:
110341  			_r$13 = c[0].readRequest(ctx); /* */ $s = 29; case 29: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; }
110342  			_tuple$2 = _r$13;
110343  			w = _tuple$2[0];
110344  			err$1 = _tuple$2[1];
110345  			/* */ if (!((x$5 = c[0].r.remain, x$6 = c[0].server.initialReadLimitSize(), (x$5.$high === x$6.$high && x$5.$low === x$6.$low)))) { $s = 30; continue; }
110346  			/* */ $s = 31; continue;
110347  			/* if (!((x$5 = c[0].r.remain, x$6 = c[0].server.initialReadLimitSize(), (x$5.$high === x$6.$high && x$5.$low === x$6.$low)))) { */ case 30:
110348  				$r = c[0].setState(c[0].rwc, 1); /* */ $s = 32; case 32: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
110349  			/* } */ case 31:
110350  			/* */ if (!($interfaceIsEqual(err$1, $ifaceNil))) { $s = 33; continue; }
110351  			/* */ $s = 34; continue;
110352  			/* if (!($interfaceIsEqual(err$1, $ifaceNil))) { */ case 33:
110353  				/* */ if ($interfaceIsEqual(err$1, errTooLarge)) { $s = 35; continue; }
110354  				/* */ $s = 36; continue;
110355  				/* if ($interfaceIsEqual(err$1, errTooLarge)) { */ case 35:
110356  					_r$14 = fmt.Fprintf(c[0].rwc, "HTTP/1.1 431 Request Header Fields Too Large\r\nContent-Type: text/plain; charset=utf-8\r\nConnection: close\r\n\r\n431 Request Header Fields Too Large", new sliceType([])); /* */ $s = 37; case 37: if($c) { $c = false; _r$14 = _r$14.$blk(); } if (_r$14 && _r$14.$blk !== undefined) { break s; }
110357  					_r$14;
110358  					$r = c[0].closeWriteAndWait(); /* */ $s = 38; case 38: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
110359  					$s = -1; return;
110360  				/* } */ case 36:
110361  				_r$15 = isCommonNetReadError(err$1); /* */ $s = 41; case 41: if($c) { $c = false; _r$15 = _r$15.$blk(); } if (_r$15 && _r$15.$blk !== undefined) { break s; }
110362  				/* */ if (_r$15) { $s = 39; continue; }
110363  				/* */ $s = 40; continue;
110364  				/* if (_r$15) { */ case 39:
110365  					$s = -1; return;
110366  				/* } */ case 40:
110367  				publicErr = "400 Bad Request";
110368  				_tuple$3 = $assertType(err$1, badRequestError, true);
110369  				v = _tuple$3[0];
110370  				ok$1 = _tuple$3[1];
110371  				if (ok$1) {
110372  					publicErr = publicErr + ": " + (v);
110373  				}
110374  				_r$16 = fmt.Fprintf(c[0].rwc, "HTTP/1.1 " + publicErr + "\r\nContent-Type: text/plain; charset=utf-8\r\nConnection: close\r\n\r\n" + publicErr, new sliceType([])); /* */ $s = 42; case 42: if($c) { $c = false; _r$16 = _r$16.$blk(); } if (_r$16 && _r$16.$blk !== undefined) { break s; }
110375  				_r$16;
110376  				$s = -1; return;
110377  			/* } */ case 34:
110378  			req = w.req;
110379  			/* */ if (req.expectsContinue()) { $s = 43; continue; }
110380  			/* */ if (!(new Header(req.Header).get("Expect") === "")) { $s = 44; continue; }
110381  			/* */ $s = 45; continue;
110382  			/* if (req.expectsContinue()) { */ case 43:
110383  				if (req.ProtoAtLeast(1, 1) && !((x$7 = req.ContentLength, (x$7.$high === 0 && x$7.$low === 0)))) {
110384  					req.Body = new expectContinueReader.ptr(w, req.Body, false, false);
110385  				}
110386  				$s = 45; continue;
110387  			/* } else if (!(new Header(req.Header).get("Expect") === "")) { */ case 44:
110388  				$r = w.sendExpectationFailed(); /* */ $s = 46; case 46: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
110389  				$s = -1; return;
110390  			/* } */ case 45:
110391  			c[0].curReq.Store(w);
110392  			_r$17 = requestBodyRemains(req.Body); /* */ $s = 50; case 50: if($c) { $c = false; _r$17 = _r$17.$blk(); } if (_r$17 && _r$17.$blk !== undefined) { break s; }
110393  			/* */ if (_r$17) { $s = 47; continue; }
110394  			/* */ $s = 48; continue;
110395  			/* if (_r$17) { */ case 47:
110396  				$r = registerOnHitEOF(req.Body, $methodVal(w.conn.r, "startBackgroundRead")); /* */ $s = 51; case 51: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
110397  				$s = 49; continue;
110398  			/* } else { */ case 48:
110399  				/* */ if (w.conn.bufr.Buffered() > 0) { $s = 52; continue; }
110400  				/* */ $s = 53; continue;
110401  				/* if (w.conn.bufr.Buffered() > 0) { */ case 52:
110402  					$r = w.conn.r.closeNotifyFromPipelinedRequest(); /* */ $s = 54; case 54: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
110403  				/* } */ case 53:
110404  				$r = w.conn.r.startBackgroundRead(); /* */ $s = 55; case 55: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
110405  			/* } */ case 49:
110406  			$r = new serverHandler.ptr(c[0].server).ServeHTTP(w, w.req); /* */ $s = 56; case 56: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
110407  			$r = w.cancelCtx(); /* */ $s = 57; case 57: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
110408  			_r$18 = c[0].hijacked(); /* */ $s = 60; case 60: if($c) { $c = false; _r$18 = _r$18.$blk(); } if (_r$18 && _r$18.$blk !== undefined) { break s; }
110409  			/* */ if (_r$18) { $s = 58; continue; }
110410  			/* */ $s = 59; continue;
110411  			/* if (_r$18) { */ case 58:
110412  				$s = -1; return;
110413  			/* } */ case 59:
110414  			$r = w.finishRequest(); /* */ $s = 61; case 61: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
110415  			_r$19 = w.shouldReuseConnection(); /* */ $s = 64; case 64: if($c) { $c = false; _r$19 = _r$19.$blk(); } if (_r$19 && _r$19.$blk !== undefined) { break s; }
110416  			/* */ if (!_r$19) { $s = 62; continue; }
110417  			/* */ $s = 63; continue;
110418  			/* if (!_r$19) { */ case 62:
110419  				if (w.requestBodyLimitHit) { _v = true; $s = 67; continue s; }
110420  				_r$20 = w.closedRequestBodyEarly(); /* */ $s = 68; case 68: if($c) { $c = false; _r$20 = _r$20.$blk(); } if (_r$20 && _r$20.$blk !== undefined) { break s; }
110421  				_v = _r$20; case 67:
110422  				/* */ if (_v) { $s = 65; continue; }
110423  				/* */ $s = 66; continue;
110424  				/* if (_v) { */ case 65:
110425  					$r = c[0].closeWriteAndWait(); /* */ $s = 69; case 69: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
110426  				/* } */ case 66:
110427  				$s = -1; return;
110428  			/* } */ case 63:
110429  			$r = c[0].setState(c[0].rwc, 2); /* */ $s = 70; case 70: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
110430  			c[0].curReq.Store((ptrType$94.nil));
110431  			if (!w.conn.server.doKeepAlives()) {
110432  				$s = -1; return;
110433  			}
110434  			d$2 = c[0].server.idleTimeout();
110435  			/* */ if (!((d$2.$high === 0 && d$2.$low === 0))) { $s = 71; continue; }
110436  			/* */ $s = 72; continue;
110437  			/* if (!((d$2.$high === 0 && d$2.$low === 0))) { */ case 71:
110438  				_r$21 = c[0].rwc.SetReadDeadline($clone($clone(time.Now(), time.Time).Add(d$2), time.Time)); /* */ $s = 73; case 73: if($c) { $c = false; _r$21 = _r$21.$blk(); } if (_r$21 && _r$21.$blk !== undefined) { break s; }
110439  				_r$21;
110440  				_r$22 = c[0].bufr.Peek(4); /* */ $s = 74; case 74: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; }
110441  				_tuple$4 = _r$22;
110442  				err$2 = _tuple$4[1];
110443  				if (!($interfaceIsEqual(err$2, $ifaceNil))) {
110444  					$s = -1; return;
110445  				}
110446  			/* } */ case 72:
110447  			_r$23 = c[0].rwc.SetReadDeadline(new time.Time.ptr(new $Uint64(0, 0), new $Int64(0, 0), ptrType$1.nil)); /* */ $s = 75; case 75: if($c) { $c = false; _r$23 = _r$23.$blk(); } if (_r$23 && _r$23.$blk !== undefined) { break s; }
110448  			_r$23;
110449  		/* } */ $s = 27; continue; case 28:
110450  		$s = -1; return;
110451  		/* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: conn.ptr.prototype.serve }; } $f._arg = _arg; $f._arg$1 = _arg$1; $f._arg$2 = _arg$2; $f._arg$3 = _arg$3; $f._arg$4 = _arg$4; $f._entry = _entry; $f._r$1 = _r$1; $f._r$10 = _r$10; $f._r$11 = _r$11; $f._r$12 = _r$12; $f._r$13 = _r$13; $f._r$14 = _r$14; $f._r$15 = _r$15; $f._r$16 = _r$16; $f._r$17 = _r$17; $f._r$18 = _r$18; $f._r$19 = _r$19; $f._r$2 = _r$2; $f._r$20 = _r$20; $f._r$21 = _r$21; $f._r$22 = _r$22; $f._r$23 = _r$23; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._r$8 = _r$8; $f._r$9 = _r$9; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f._tuple$4 = _tuple$4; $f._v = _v; $f.c = c; $f.cancelCtx = cancelCtx; $f.ctx = ctx; $f.d = d; $f.d$1 = d$1; $f.d$2 = d$2; $f.err = err; $f.err$1 = err$1; $f.err$2 = err$2; $f.fn = fn; $f.h = h; $f.ok = ok; $f.ok$1 = ok$1; $f.proto = proto; $f.publicErr = publicErr; $f.req = req; $f.tlsConn = tlsConn; $f.v = v; $f.w = w; $f.x$4 = x$4; $f.x$5 = x$5; $f.x$6 = x$6; $f.x$7 = x$7; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
110452  	};
110453  	conn.prototype.serve = function(ctx) { return this.$val.serve(ctx); };
110454  	response.ptr.prototype.sendExpectationFailed = function() {
110455  		var w, $s, $r;
110456  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; w = $f.w; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
110457  		w = this;
110458  		new Header(w.Header()).Set("Connection", "close");
110459  		$r = w.WriteHeader(417); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
110460  		$r = w.finishRequest(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
110461  		$s = -1; return;
110462  		/* */ } return; } if ($f === undefined) { $f = { $blk: response.ptr.prototype.sendExpectationFailed }; } $f.w = w; $f.$s = $s; $f.$r = $r; return $f;
110463  	};
110464  	response.prototype.sendExpectationFailed = function() { return this.$val.sendExpectationFailed(); };
110465  	response.ptr.prototype.Hijack = function() {
110466  		var _r$1, _tmp, _tmp$1, _tmp$2, _tuple, buf, c, err, rwc, w, $s, $deferred, $r;
110467  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tuple = $f._tuple; buf = $f.buf; c = $f.c; err = $f.err; rwc = $f.rwc; w = $f.w; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
110468  		rwc = $ifaceNil;
110469  		buf = ptrType$89.nil;
110470  		err = $ifaceNil;
110471  		w = this;
110472  		if ((w.$ptr_handlerDone || (w.$ptr_handlerDone = new ptrType$23(function() { return this.$target.handlerDone; }, function($v) { this.$target.handlerDone = $v; }, w))).isSet()) {
110473  			$panic(new $String("net/http: Hijack called after ServeHTTP finished"));
110474  		}
110475  		/* */ if (w.wroteHeader) { $s = 1; continue; }
110476  		/* */ $s = 2; continue;
110477  		/* if (w.wroteHeader) { */ case 1:
110478  			$r = w.cw.flush(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
110479  		/* } */ case 2:
110480  		c = w.conn;
110481  		$r = c.mu.Lock(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
110482  		$deferred.push([$methodVal(c.mu, "Unlock"), []]);
110483  		_r$1 = c.hijackLocked(); /* */ $s = 5; case 5: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
110484  		_tuple = _r$1;
110485  		rwc = _tuple[0];
110486  		buf = _tuple[1];
110487  		err = _tuple[2];
110488  		if ($interfaceIsEqual(err, $ifaceNil)) {
110489  			putBufioWriter(w.w);
110490  			w.w = ptrType$10.nil;
110491  		}
110492  		_tmp = rwc;
110493  		_tmp$1 = buf;
110494  		_tmp$2 = err;
110495  		rwc = _tmp;
110496  		buf = _tmp$1;
110497  		err = _tmp$2;
110498  		$s = -1; return [rwc, buf, err];
110499  		/* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if (!$curGoroutine.asleep) { return  [rwc, buf, err]; } if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: response.ptr.prototype.Hijack }; } $f._r$1 = _r$1; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tuple = _tuple; $f.buf = buf; $f.c = c; $f.err = err; $f.rwc = rwc; $f.w = w; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
110500  	};
110501  	response.prototype.Hijack = function() { return this.$val.Hijack(); };
110502  	response.ptr.prototype.CloseNotify = function() {
110503  		var w;
110504  		w = this;
110505  		if ((w.$ptr_handlerDone || (w.$ptr_handlerDone = new ptrType$23(function() { return this.$target.handlerDone; }, function($v) { this.$target.handlerDone = $v; }, w))).isSet()) {
110506  			$panic(new $String("net/http: CloseNotify called after ServeHTTP finished"));
110507  		}
110508  		return w.closeNotifyCh;
110509  	};
110510  	response.prototype.CloseNotify = function() { return this.$val.CloseNotify(); };
110511  	registerOnHitEOF = function(rc, fn) {
110512  		var _r$1, _ref, fn, rc, v, v$1, v$2, $s, $r;
110513  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; _ref = $f._ref; fn = $f.fn; rc = $f.rc; v = $f.v; v$1 = $f.v$1; v$2 = $f.v$2; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
110514  		_ref = rc;
110515  		/* */ if ($assertType(_ref, ptrType$98, true)[1]) { $s = 1; continue; }
110516  		/* */ if ($assertType(_ref, ptrType$96, true)[1]) { $s = 2; continue; }
110517  		/* */ $s = 3; continue;
110518  		/* if ($assertType(_ref, ptrType$98, true)[1]) { */ case 1:
110519  			v = _ref.$val;
110520  			$r = registerOnHitEOF(v.readCloser, fn); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
110521  			$s = 4; continue;
110522  		/* } else if ($assertType(_ref, ptrType$96, true)[1]) { */ case 2:
110523  			v$1 = _ref.$val;
110524  			$r = v$1.registerOnHitEOF(fn); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
110525  			$s = 4; continue;
110526  		/* } else { */ case 3:
110527  			v$2 = _ref;
110528  			_r$1 = fmt.Sprintf("%T", new sliceType([rc])); /* */ $s = 7; case 7: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
110529  			$panic(new $String("unexpected type " + _r$1));
110530  		/* } */ case 4:
110531  		$s = -1; return;
110532  		/* */ } return; } if ($f === undefined) { $f = { $blk: registerOnHitEOF }; } $f._r$1 = _r$1; $f._ref = _ref; $f.fn = fn; $f.rc = rc; $f.v = v; $f.v$1 = v$1; $f.v$2 = v$2; $f.$s = $s; $f.$r = $r; return $f;
110533  	};
110534  	requestBodyRemains = function(rc) {
110535  		var _r$1, _r$2, _r$3, _ref, rc, v, v$1, v$2, $s, $r;
110536  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _ref = $f._ref; rc = $f.rc; v = $f.v; v$1 = $f.v$1; v$2 = $f.v$2; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
110537  		if ($interfaceIsEqual(rc, new $pkg.NoBody.constructor.elem($pkg.NoBody))) {
110538  			$s = -1; return false;
110539  		}
110540  		_ref = rc;
110541  		/* */ if ($assertType(_ref, ptrType$98, true)[1]) { $s = 1; continue; }
110542  		/* */ if ($assertType(_ref, ptrType$96, true)[1]) { $s = 2; continue; }
110543  		/* */ $s = 3; continue;
110544  		/* if ($assertType(_ref, ptrType$98, true)[1]) { */ case 1:
110545  			v = _ref.$val;
110546  			_r$1 = requestBodyRemains(v.readCloser); /* */ $s = 5; case 5: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
110547  			$s = -1; return _r$1;
110548  		/* } else if ($assertType(_ref, ptrType$96, true)[1]) { */ case 2:
110549  			v$1 = _ref.$val;
110550  			_r$2 = v$1.bodyRemains(); /* */ $s = 6; case 6: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
110551  			$s = -1; return _r$2;
110552  		/* } else { */ case 3:
110553  			v$2 = _ref;
110554  			_r$3 = fmt.Sprintf("%T", new sliceType([rc])); /* */ $s = 7; case 7: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
110555  			$panic(new $String("unexpected type " + _r$3));
110556  		/* } */ case 4:
110557  		$s = -1; return false;
110558  		/* */ } return; } if ($f === undefined) { $f = { $blk: requestBodyRemains }; } $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._ref = _ref; $f.rc = rc; $f.v = v; $f.v$1 = v$1; $f.v$2 = v$2; $f.$s = $s; $f.$r = $r; return $f;
110559  	};
110560  	HandlerFunc.prototype.ServeHTTP = function(w, r) {
110561  		var f, r, w, $s, $r;
110562  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; f = $f.f; r = $f.r; w = $f.w; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
110563  		f = this.$val;
110564  		$r = f(w, r); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
110565  		$s = -1; return;
110566  		/* */ } return; } if ($f === undefined) { $f = { $blk: HandlerFunc.prototype.ServeHTTP }; } $f.f = f; $f.r = r; $f.w = w; $f.$s = $s; $f.$r = $r; return $f;
110567  	};
110568  	$ptrType(HandlerFunc).prototype.ServeHTTP = function(w, r) { return new HandlerFunc(this.$get()).ServeHTTP(w, r); };
110569  	Error = function(w, error, code) {
110570  		var _r$1, _r$2, _r$3, code, error, w, $s, $r;
110571  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; code = $f.code; error = $f.error; w = $f.w; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
110572  		_r$1 = w.Header(); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
110573  		$r = new Header(_r$1).Set("Content-Type", "text/plain; charset=utf-8"); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
110574  		_r$2 = w.Header(); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
110575  		$r = new Header(_r$2).Set("X-Content-Type-Options", "nosniff"); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
110576  		$r = w.WriteHeader(code); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
110577  		_r$3 = fmt.Fprintln(w, new sliceType([new $String(error)])); /* */ $s = 6; case 6: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
110578  		_r$3;
110579  		$s = -1; return;
110580  		/* */ } return; } if ($f === undefined) { $f = { $blk: Error }; } $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f.code = code; $f.error = error; $f.w = w; $f.$s = $s; $f.$r = $r; return $f;
110581  	};
110582  	$pkg.Error = Error;
110583  	NotFound = function(w, r) {
110584  		var r, w, $s, $r;
110585  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; r = $f.r; w = $f.w; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
110586  		$r = Error(w, "404 page not found", 404); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
110587  		$s = -1; return;
110588  		/* */ } return; } if ($f === undefined) { $f = { $blk: NotFound }; } $f.r = r; $f.w = w; $f.$s = $s; $f.$r = $r; return $f;
110589  	};
110590  	$pkg.NotFound = NotFound;
110591  	NotFoundHandler = function() {
110592  		return new HandlerFunc((NotFound));
110593  	};
110594  	$pkg.NotFoundHandler = NotFoundHandler;
110595  	Redirect = function(w, r, url$1, code) {
110596  		var _entry, _r$1, _r$2, _r$3, _r$4, _r$5, _tmp, _tmp$1, _tuple, _tuple$1, code, err, i, note, olddir, oldpath, query, r, trailing, u, url$1, w, $s, $r;
110597  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _entry = $f._entry; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; code = $f.code; err = $f.err; i = $f.i; note = $f.note; olddir = $f.olddir; oldpath = $f.oldpath; query = $f.query; r = $f.r; trailing = $f.trailing; u = $f.u; url$1 = $f.url$1; w = $f.w; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
110598  		_r$1 = parseURL(url$1); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
110599  		_tuple = _r$1;
110600  		u = _tuple[0];
110601  		err = _tuple[1];
110602  		if ($interfaceIsEqual(err, $ifaceNil)) {
110603  			if (u.Scheme === "" && u.Host === "") {
110604  				oldpath = r.URL.Path;
110605  				if (oldpath === "") {
110606  					oldpath = "/";
110607  				}
110608  				if (url$1 === "" || !((url$1.charCodeAt(0) === 47))) {
110609  					_tuple$1 = path.Split(oldpath);
110610  					olddir = _tuple$1[0];
110611  					url$1 = olddir + url$1;
110612  				}
110613  				query = "";
110614  				i = strings.Index(url$1, "?");
110615  				if (!((i === -1))) {
110616  					_tmp = $substring(url$1, 0, i);
110617  					_tmp$1 = $substring(url$1, i);
110618  					url$1 = _tmp;
110619  					query = _tmp$1;
110620  				}
110621  				trailing = strings.HasSuffix(url$1, "/");
110622  				url$1 = path.Clean(url$1);
110623  				if (trailing && !strings.HasSuffix(url$1, "/")) {
110624  					url$1 = url$1 + ("/");
110625  				}
110626  				url$1 = url$1 + (query);
110627  			}
110628  		}
110629  		_r$2 = w.Header(); /* */ $s = 2; case 2: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
110630  		$r = new Header(_r$2).Set("Location", hexEscapeNonASCII(url$1)); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
110631  		/* */ if (r.Method === "GET" || r.Method === "HEAD") { $s = 4; continue; }
110632  		/* */ $s = 5; continue;
110633  		/* if (r.Method === "GET" || r.Method === "HEAD") { */ case 4:
110634  			_r$3 = w.Header(); /* */ $s = 6; case 6: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
110635  			$r = new Header(_r$3).Set("Content-Type", "text/html; charset=utf-8"); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
110636  		/* } */ case 5:
110637  		$r = w.WriteHeader(code); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
110638  		/* */ if (r.Method === "GET") { $s = 9; continue; }
110639  		/* */ $s = 10; continue;
110640  		/* if (r.Method === "GET") { */ case 9:
110641  			_r$4 = htmlEscape(url$1); /* */ $s = 11; case 11: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
110642  			note = "<a href=\"" + _r$4 + "\">" + (_entry = statusText[$Int.keyFor(code)], _entry !== undefined ? _entry.v : "") + "</a>.\n";
110643  			_r$5 = fmt.Fprintln(w, new sliceType([new $String(note)])); /* */ $s = 12; case 12: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
110644  			_r$5;
110645  		/* } */ case 10:
110646  		$s = -1; return;
110647  		/* */ } return; } if ($f === undefined) { $f = { $blk: Redirect }; } $f._entry = _entry; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.code = code; $f.err = err; $f.i = i; $f.note = note; $f.olddir = olddir; $f.oldpath = oldpath; $f.query = query; $f.r = r; $f.trailing = trailing; $f.u = u; $f.url$1 = url$1; $f.w = w; $f.$s = $s; $f.$r = $r; return $f;
110648  	};
110649  	$pkg.Redirect = Redirect;
110650  	htmlEscape = function(s) {
110651  		var _r$1, s, $s, $r;
110652  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
110653  		_r$1 = htmlReplacer.Replace(s); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
110654  		$s = -1; return _r$1;
110655  		/* */ } return; } if ($f === undefined) { $f = { $blk: htmlEscape }; } $f._r$1 = _r$1; $f.s = s; $f.$s = $s; $f.$r = $r; return $f;
110656  	};
110657  	redirectHandler.ptr.prototype.ServeHTTP = function(w, r) {
110658  		var r, rh, w, $s, $r;
110659  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; r = $f.r; rh = $f.rh; w = $f.w; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
110660  		rh = this;
110661  		$r = Redirect(w, r, rh.url, rh.code); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
110662  		$s = -1; return;
110663  		/* */ } return; } if ($f === undefined) { $f = { $blk: redirectHandler.ptr.prototype.ServeHTTP }; } $f.r = r; $f.rh = rh; $f.w = w; $f.$s = $s; $f.$r = $r; return $f;
110664  	};
110665  	redirectHandler.prototype.ServeHTTP = function(w, r) { return this.$val.ServeHTTP(w, r); };
110666  	RedirectHandler = function(url$1, code) {
110667  		var code, url$1;
110668  		return new redirectHandler.ptr(url$1, code);
110669  	};
110670  	$pkg.RedirectHandler = RedirectHandler;
110671  	pathMatch = function(pattern, path$1) {
110672  		var n, path$1, pattern;
110673  		if (pattern.length === 0) {
110674  			return false;
110675  		}
110676  		n = pattern.length;
110677  		if (!((pattern.charCodeAt((n - 1 >> 0)) === 47))) {
110678  			return pattern === path$1;
110679  		}
110680  		return path$1.length >= n && $substring(path$1, 0, n) === pattern;
110681  	};
110682  	cleanPath = function(p) {
110683  		var np, p;
110684  		if (p === "") {
110685  			return "/";
110686  		}
110687  		if (!((p.charCodeAt(0) === 47))) {
110688  			p = "/" + p;
110689  		}
110690  		np = path.Clean(p);
110691  		if ((p.charCodeAt((p.length - 1 >> 0)) === 47) && !(np === "/")) {
110692  			np = np + ("/");
110693  		}
110694  		return np;
110695  	};
110696  	stripHostPort = function(h) {
110697  		var _r$1, _tuple, err, h, host, $s, $r;
110698  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; _tuple = $f._tuple; err = $f.err; h = $f.h; host = $f.host; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
110699  		if (strings.IndexByte(h, 58) === -1) {
110700  			$s = -1; return h;
110701  		}
110702  		_r$1 = net.SplitHostPort(h); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
110703  		_tuple = _r$1;
110704  		host = _tuple[0];
110705  		err = _tuple[2];
110706  		if (!($interfaceIsEqual(err, $ifaceNil))) {
110707  			$s = -1; return h;
110708  		}
110709  		$s = -1; return host;
110710  		/* */ } return; } if ($f === undefined) { $f = { $blk: stripHostPort }; } $f._r$1 = _r$1; $f._tuple = _tuple; $f.err = err; $f.h = h; $f.host = host; $f.$s = $s; $f.$r = $r; return $f;
110711  	};
110712  	ServeMux.ptr.prototype.match = function(path$1) {
110713  		var _entry, _entry$1, _i, _keys, _ref, _tmp, _tmp$1, _tuple, h, k, mux, n, ok, path$1, pattern, v, v$1;
110714  		h = $ifaceNil;
110715  		pattern = "";
110716  		mux = this;
110717  		_tuple = (_entry = mux.m[$String.keyFor(path$1)], _entry !== undefined ? [_entry.v, true] : [new muxEntry.ptr($ifaceNil, ""), false]);
110718  		v = $clone(_tuple[0], muxEntry);
110719  		ok = _tuple[1];
110720  		if (ok) {
110721  			_tmp = v.h;
110722  			_tmp$1 = v.pattern;
110723  			h = _tmp;
110724  			pattern = _tmp$1;
110725  			return [h, pattern];
110726  		}
110727  		n = 0;
110728  		_ref = mux.m;
110729  		_i = 0;
110730  		_keys = $keys(_ref);
110731  		while (true) {
110732  			if (!(_i < _keys.length)) { break; }
110733  			_entry$1 = _ref[_keys[_i]];
110734  			if (_entry$1 === undefined) {
110735  				_i++;
110736  				continue;
110737  			}
110738  			k = _entry$1.k;
110739  			v$1 = $clone(_entry$1.v, muxEntry);
110740  			if (!pathMatch(k, path$1)) {
110741  				_i++;
110742  				continue;
110743  			}
110744  			if ($interfaceIsEqual(h, $ifaceNil) || k.length > n) {
110745  				n = k.length;
110746  				h = v$1.h;
110747  				pattern = v$1.pattern;
110748  			}
110749  			_i++;
110750  		}
110751  		return [h, pattern];
110752  	};
110753  	ServeMux.prototype.match = function(path$1) { return this.$val.match(path$1); };
110754  	ServeMux.ptr.prototype.redirectToPathSlash = function(host, path$1, u) {
110755  		var host, mux, path$1, u;
110756  		mux = this;
110757  		if (!mux.shouldRedirect(host, path$1)) {
110758  			return [u, false];
110759  		}
110760  		path$1 = path$1 + "/";
110761  		u = new url.URL.ptr("", "", ptrType$19.nil, "", path$1, "", false, u.RawQuery, "");
110762  		return [u, true];
110763  	};
110764  	ServeMux.prototype.redirectToPathSlash = function(host, path$1, u) { return this.$val.redirectToPathSlash(host, path$1, u); };
110765  	ServeMux.ptr.prototype.shouldRedirect = function(host, path$1) {
110766  		var _entry, _entry$1, _i, _i$1, _ref, _ref$1, _tuple, _tuple$1, c, c$1, exist, exist$1, host, mux, n, p, path$1;
110767  		mux = this;
110768  		p = new sliceType$1([path$1, host + path$1]);
110769  		_ref = p;
110770  		_i = 0;
110771  		while (true) {
110772  			if (!(_i < _ref.$length)) { break; }
110773  			c = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
110774  			_tuple = (_entry = mux.m[$String.keyFor(c)], _entry !== undefined ? [_entry.v, true] : [new muxEntry.ptr($ifaceNil, ""), false]);
110775  			exist = _tuple[1];
110776  			if (exist) {
110777  				return false;
110778  			}
110779  			_i++;
110780  		}
110781  		n = path$1.length;
110782  		if (n === 0) {
110783  			return false;
110784  		}
110785  		_ref$1 = p;
110786  		_i$1 = 0;
110787  		while (true) {
110788  			if (!(_i$1 < _ref$1.$length)) { break; }
110789  			c$1 = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]);
110790  			_tuple$1 = (_entry$1 = mux.m[$String.keyFor(c$1 + "/")], _entry$1 !== undefined ? [_entry$1.v, true] : [new muxEntry.ptr($ifaceNil, ""), false]);
110791  			exist$1 = _tuple$1[1];
110792  			if (exist$1) {
110793  				return !((path$1.charCodeAt((n - 1 >> 0)) === 47));
110794  			}
110795  			_i$1++;
110796  		}
110797  		return false;
110798  	};
110799  	ServeMux.prototype.shouldRedirect = function(host, path$1) { return this.$val.shouldRedirect(host, path$1); };
110800  	ServeMux.ptr.prototype.Handler = function(r) {
110801  		var _r$1, _r$2, _r$3, _r$4, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, h, host, mux, ok, ok$1, path$1, pattern, r, u, u$1, url$1, $s, $r;
110802  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tmp$4 = $f._tmp$4; _tmp$5 = $f._tmp$5; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; _tuple$4 = $f._tuple$4; h = $f.h; host = $f.host; mux = $f.mux; ok = $f.ok; ok$1 = $f.ok$1; path$1 = $f.path$1; pattern = $f.pattern; r = $f.r; u = $f.u; u$1 = $f.u$1; url$1 = $f.url$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
110803  		h = $ifaceNil;
110804  		pattern = "";
110805  		mux = this;
110806  		/* */ if (r.Method === "CONNECT") { $s = 1; continue; }
110807  		/* */ $s = 2; continue;
110808  		/* if (r.Method === "CONNECT") { */ case 1:
110809  			_tuple = mux.redirectToPathSlash(r.URL.Host, r.URL.Path, r.URL);
110810  			u = _tuple[0];
110811  			ok = _tuple[1];
110812  			if (ok) {
110813  				_tmp = RedirectHandler(u.String(), 301);
110814  				_tmp$1 = u.Path;
110815  				h = _tmp;
110816  				pattern = _tmp$1;
110817  				$s = -1; return [h, pattern];
110818  			}
110819  			_r$1 = mux.handler(r.Host, r.URL.Path); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
110820  			_tuple$1 = _r$1;
110821  			h = _tuple$1[0];
110822  			pattern = _tuple$1[1];
110823  			$s = -1; return [h, pattern];
110824  		/* } */ case 2:
110825  		_r$2 = stripHostPort(r.Host); /* */ $s = 4; case 4: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
110826  		host = _r$2;
110827  		path$1 = cleanPath(r.URL.Path);
110828  		_tuple$2 = mux.redirectToPathSlash(host, path$1, r.URL);
110829  		u$1 = _tuple$2[0];
110830  		ok$1 = _tuple$2[1];
110831  		if (ok$1) {
110832  			_tmp$2 = RedirectHandler(u$1.String(), 301);
110833  			_tmp$3 = u$1.Path;
110834  			h = _tmp$2;
110835  			pattern = _tmp$3;
110836  			$s = -1; return [h, pattern];
110837  		}
110838  		/* */ if (!(path$1 === r.URL.Path)) { $s = 5; continue; }
110839  		/* */ $s = 6; continue;
110840  		/* if (!(path$1 === r.URL.Path)) { */ case 5:
110841  			_r$3 = mux.handler(host, path$1); /* */ $s = 7; case 7: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
110842  			_tuple$3 = _r$3;
110843  			pattern = _tuple$3[1];
110844  			url$1 = $clone(r.URL, url.URL);
110845  			url$1.Path = path$1;
110846  			_tmp$4 = RedirectHandler(url$1.String(), 301);
110847  			_tmp$5 = pattern;
110848  			h = _tmp$4;
110849  			pattern = _tmp$5;
110850  			$s = -1; return [h, pattern];
110851  		/* } */ case 6:
110852  		_r$4 = mux.handler(host, r.URL.Path); /* */ $s = 8; case 8: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
110853  		_tuple$4 = _r$4;
110854  		h = _tuple$4[0];
110855  		pattern = _tuple$4[1];
110856  		$s = -1; return [h, pattern];
110857  		/* */ } return; } if ($f === undefined) { $f = { $blk: ServeMux.ptr.prototype.Handler }; } $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tmp$4 = _tmp$4; $f._tmp$5 = _tmp$5; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f._tuple$4 = _tuple$4; $f.h = h; $f.host = host; $f.mux = mux; $f.ok = ok; $f.ok$1 = ok$1; $f.path$1 = path$1; $f.pattern = pattern; $f.r = r; $f.u = u; $f.u$1 = u$1; $f.url$1 = url$1; $f.$s = $s; $f.$r = $r; return $f;
110858  	};
110859  	ServeMux.prototype.Handler = function(r) { return this.$val.Handler(r); };
110860  	ServeMux.ptr.prototype.handler = function(host, path$1) {
110861  		var _tmp, _tmp$1, _tuple, _tuple$1, h, host, mux, path$1, pattern, $s, $deferred, $r;
110862  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; h = $f.h; host = $f.host; mux = $f.mux; path$1 = $f.path$1; pattern = $f.pattern; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
110863  		h = $ifaceNil;
110864  		pattern = "";
110865  		mux = this;
110866  		$r = mux.mu.RLock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
110867  		$deferred.push([$methodVal(mux.mu, "RUnlock"), []]);
110868  		if (mux.hosts) {
110869  			_tuple = mux.match(host + path$1);
110870  			h = _tuple[0];
110871  			pattern = _tuple[1];
110872  		}
110873  		if ($interfaceIsEqual(h, $ifaceNil)) {
110874  			_tuple$1 = mux.match(path$1);
110875  			h = _tuple$1[0];
110876  			pattern = _tuple$1[1];
110877  		}
110878  		if ($interfaceIsEqual(h, $ifaceNil)) {
110879  			_tmp = NotFoundHandler();
110880  			_tmp$1 = "";
110881  			h = _tmp;
110882  			pattern = _tmp$1;
110883  		}
110884  		$s = -1; return [h, pattern];
110885  		/* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if (!$curGoroutine.asleep) { return  [h, pattern]; } if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: ServeMux.ptr.prototype.handler }; } $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.h = h; $f.host = host; $f.mux = mux; $f.path$1 = path$1; $f.pattern = pattern; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
110886  	};
110887  	ServeMux.prototype.handler = function(host, path$1) { return this.$val.handler(host, path$1); };
110888  	ServeMux.ptr.prototype.ServeHTTP = function(w, r) {
110889  		var _r$1, _r$2, _tuple, h, mux, r, w, $s, $r;
110890  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; _r$2 = $f._r$2; _tuple = $f._tuple; h = $f.h; mux = $f.mux; r = $f.r; w = $f.w; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
110891  		mux = this;
110892  		/* */ if (r.RequestURI === "*") { $s = 1; continue; }
110893  		/* */ $s = 2; continue;
110894  		/* if (r.RequestURI === "*") { */ case 1:
110895  			/* */ if (r.ProtoAtLeast(1, 1)) { $s = 3; continue; }
110896  			/* */ $s = 4; continue;
110897  			/* if (r.ProtoAtLeast(1, 1)) { */ case 3:
110898  				_r$1 = w.Header(); /* */ $s = 5; case 5: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
110899  				$r = new Header(_r$1).Set("Connection", "close"); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
110900  			/* } */ case 4:
110901  			$r = w.WriteHeader(400); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
110902  			$s = -1; return;
110903  		/* } */ case 2:
110904  		_r$2 = mux.Handler(r); /* */ $s = 8; case 8: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
110905  		_tuple = _r$2;
110906  		h = _tuple[0];
110907  		$r = h.ServeHTTP(w, r); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
110908  		$s = -1; return;
110909  		/* */ } return; } if ($f === undefined) { $f = { $blk: ServeMux.ptr.prototype.ServeHTTP }; } $f._r$1 = _r$1; $f._r$2 = _r$2; $f._tuple = _tuple; $f.h = h; $f.mux = mux; $f.r = r; $f.w = w; $f.$s = $s; $f.$r = $r; return $f;
110910  	};
110911  	ServeMux.prototype.ServeHTTP = function(w, r) { return this.$val.ServeHTTP(w, r); };
110912  	ServeMux.ptr.prototype.Handle = function(pattern, handler) {
110913  		var _entry, _key, _tuple, exist, handler, mux, pattern, $s, $deferred, $r;
110914  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _entry = $f._entry; _key = $f._key; _tuple = $f._tuple; exist = $f.exist; handler = $f.handler; mux = $f.mux; pattern = $f.pattern; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
110915  		mux = this;
110916  		$r = mux.mu.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
110917  		$deferred.push([$methodVal(mux.mu, "Unlock"), []]);
110918  		if (pattern === "") {
110919  			$panic(new $String("http: invalid pattern"));
110920  		}
110921  		if ($interfaceIsEqual(handler, $ifaceNil)) {
110922  			$panic(new $String("http: nil handler"));
110923  		}
110924  		_tuple = (_entry = mux.m[$String.keyFor(pattern)], _entry !== undefined ? [_entry.v, true] : [new muxEntry.ptr($ifaceNil, ""), false]);
110925  		exist = _tuple[1];
110926  		if (exist) {
110927  			$panic(new $String("http: multiple registrations for " + pattern));
110928  		}
110929  		if (mux.m === false) {
110930  			mux.m = {};
110931  		}
110932  		_key = pattern; (mux.m || $throwRuntimeError("assignment to entry in nil map"))[$String.keyFor(_key)] = { k: _key, v: new muxEntry.ptr(handler, pattern) };
110933  		if (!((pattern.charCodeAt(0) === 47))) {
110934  			mux.hosts = true;
110935  		}
110936  		$s = -1; return;
110937  		/* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: ServeMux.ptr.prototype.Handle }; } $f._entry = _entry; $f._key = _key; $f._tuple = _tuple; $f.exist = exist; $f.handler = handler; $f.mux = mux; $f.pattern = pattern; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
110938  	};
110939  	ServeMux.prototype.Handle = function(pattern, handler) { return this.$val.Handle(pattern, handler); };
110940  	ServeMux.ptr.prototype.HandleFunc = function(pattern, handler) {
110941  		var handler, mux, pattern, $s, $r;
110942  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; handler = $f.handler; mux = $f.mux; pattern = $f.pattern; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
110943  		mux = this;
110944  		$r = mux.Handle(pattern, new HandlerFunc((handler))); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
110945  		$s = -1; return;
110946  		/* */ } return; } if ($f === undefined) { $f = { $blk: ServeMux.ptr.prototype.HandleFunc }; } $f.handler = handler; $f.mux = mux; $f.pattern = pattern; $f.$s = $s; $f.$r = $r; return $f;
110947  	};
110948  	ServeMux.prototype.HandleFunc = function(pattern, handler) { return this.$val.HandleFunc(pattern, handler); };
110949  	Server.ptr.prototype.getDoneChan = function() {
110950  		var s, $s, $deferred, $r;
110951  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; s = $f.s; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
110952  		s = this;
110953  		$r = s.mu.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
110954  		$deferred.push([$methodVal(s.mu, "Unlock"), []]);
110955  		$s = -1; return s.getDoneChanLocked();
110956  		/* */ } return; } } catch(err) { $err = err; $s = -1; return $chanNil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: Server.ptr.prototype.getDoneChan }; } $f.s = s; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
110957  	};
110958  	Server.prototype.getDoneChan = function() { return this.$val.getDoneChan(); };
110959  	Server.ptr.prototype.getDoneChanLocked = function() {
110960  		var s;
110961  		s = this;
110962  		if (s.doneChan === $chanNil) {
110963  			s.doneChan = new $Chan(structType, 0);
110964  		}
110965  		return s.doneChan;
110966  	};
110967  	Server.prototype.getDoneChanLocked = function() { return this.$val.getDoneChanLocked(); };
110968  	Server.ptr.prototype.closeDoneChanLocked = function() {
110969  		var _selection, ch, s, $r;
110970  		/* */ var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _selection = $f._selection; ch = $f.ch; s = $f.s; $r = $f.$r; }
110971  		s = this;
110972  		ch = s.getDoneChanLocked();
110973  		_selection = $select([[ch], []]);
110974  		if (_selection[0] === 0) {
110975  		} else if (_selection[0] === 1) {
110976  			$close(ch);
110977  		}
110978  		/* */ if ($f === undefined) { $f = { $blk: Server.ptr.prototype.closeDoneChanLocked }; } $f._selection = _selection; $f.ch = ch; $f.s = s; $f.$r = $r; return $f;
110979  	};
110980  	Server.prototype.closeDoneChanLocked = function() { return this.$val.closeDoneChanLocked(); };
110981  	Server.ptr.prototype.Close = function() {
110982  		var _entry, _i, _keys, _r$1, _r$2, _ref, c, err, srv, $s, $deferred, $r;
110983  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _entry = $f._entry; _i = $f._i; _keys = $f._keys; _r$1 = $f._r$1; _r$2 = $f._r$2; _ref = $f._ref; c = $f.c; err = $f.err; srv = $f.srv; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
110984  		srv = this;
110985  		$r = srv.mu.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
110986  		$deferred.push([$methodVal(srv.mu, "Unlock"), []]);
110987  		srv.closeDoneChanLocked();
110988  		_r$1 = srv.closeListenersLocked(); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
110989  		err = _r$1;
110990  		_ref = srv.activeConn;
110991  		_i = 0;
110992  		_keys = $keys(_ref);
110993  		/* while (true) { */ case 3:
110994  			/* if (!(_i < _keys.length)) { break; } */ if(!(_i < _keys.length)) { $s = 4; continue; }
110995  			_entry = _ref[_keys[_i]];
110996  			if (_entry === undefined) {
110997  				_i++;
110998  				/* continue; */ $s = 3; continue;
110999  			}
111000  			c = _entry.k;
111001  			_r$2 = c.rwc.Close(); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
111002  			_r$2;
111003  			delete srv.activeConn[ptrType$97.keyFor(c)];
111004  			_i++;
111005  		/* } */ $s = 3; continue; case 4:
111006  		$s = -1; return err;
111007  		/* */ } return; } } catch(err) { $err = err; $s = -1; return $ifaceNil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: Server.ptr.prototype.Close }; } $f._entry = _entry; $f._i = _i; $f._keys = _keys; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._ref = _ref; $f.c = c; $f.err = err; $f.srv = srv; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
111008  	};
111009  	Server.prototype.Close = function() { return this.$val.Close(); };
111010  	Server.ptr.prototype.Shutdown = function(ctx) {
111011  		var _i, _r$1, _r$2, _r$3, _r$4, _r$5, _ref, _selection, ctx, f, lnerr, srv, ticker, $s, $deferred, $r;
111012  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _i = $f._i; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _ref = $f._ref; _selection = $f._selection; ctx = $f.ctx; f = $f.f; lnerr = $f.lnerr; srv = $f.srv; ticker = $f.ticker; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
111013  		srv = this;
111014  		atomic.AddInt32((srv.$ptr_inShutdown || (srv.$ptr_inShutdown = new ptrType$90(function() { return this.$target.inShutdown; }, function($v) { this.$target.inShutdown = $v; }, srv))), 1);
111015  		$deferred.push([atomic.AddInt32, [(srv.$ptr_inShutdown || (srv.$ptr_inShutdown = new ptrType$90(function() { return this.$target.inShutdown; }, function($v) { this.$target.inShutdown = $v; }, srv))), -1]]);
111016  		$r = srv.mu.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
111017  		_r$1 = srv.closeListenersLocked(); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
111018  		lnerr = _r$1;
111019  		srv.closeDoneChanLocked();
111020  		_ref = srv.onShutdown;
111021  		_i = 0;
111022  		/* while (true) { */ case 3:
111023  			/* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 4; continue; }
111024  			f = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
111025  			$go(f, []);
111026  			_i++;
111027  		/* } */ $s = 3; continue; case 4:
111028  		$r = srv.mu.Unlock(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
111029  		ticker = time.NewTicker(shutdownPollInterval);
111030  		$deferred.push([$methodVal(ticker, "Stop"), []]);
111031  		/* while (true) { */ case 6:
111032  			_r$2 = srv.closeIdleConns(); /* */ $s = 10; case 10: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
111033  			/* */ if (_r$2) { $s = 8; continue; }
111034  			/* */ $s = 9; continue;
111035  			/* if (_r$2) { */ case 8:
111036  				$s = -1; return lnerr;
111037  			/* } */ case 9:
111038  			_r$3 = ctx.Done(); /* */ $s = 11; case 11: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
111039  			_r$4 = $select([[_r$3], [ticker.C]]); /* */ $s = 12; case 12: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
111040  			_selection = _r$4;
111041  			/* */ if (_selection[0] === 0) { $s = 13; continue; }
111042  			/* */ if (_selection[0] === 1) { $s = 14; continue; }
111043  			/* */ $s = 15; continue;
111044  			/* if (_selection[0] === 0) { */ case 13:
111045  				_r$5 = ctx.Err(); /* */ $s = 16; case 16: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
111046  				$s = -1; return _r$5;
111047  			/* } else if (_selection[0] === 1) { */ case 14:
111048  			/* } */ case 15:
111049  		/* } */ $s = 6; continue; case 7:
111050  		$s = -1; return $ifaceNil;
111051  		/* */ } return; } } catch(err) { $err = err; $s = -1; return $ifaceNil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: Server.ptr.prototype.Shutdown }; } $f._i = _i; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._ref = _ref; $f._selection = _selection; $f.ctx = ctx; $f.f = f; $f.lnerr = lnerr; $f.srv = srv; $f.ticker = ticker; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
111052  	};
111053  	Server.prototype.Shutdown = function(ctx) { return this.$val.Shutdown(ctx); };
111054  	Server.ptr.prototype.RegisterOnShutdown = function(f) {
111055  		var f, srv, $s, $r;
111056  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; f = $f.f; srv = $f.srv; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
111057  		srv = this;
111058  		$r = srv.mu.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
111059  		srv.onShutdown = $append(srv.onShutdown, f);
111060  		$r = srv.mu.Unlock(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
111061  		$s = -1; return;
111062  		/* */ } return; } if ($f === undefined) { $f = { $blk: Server.ptr.prototype.RegisterOnShutdown }; } $f.f = f; $f.srv = srv; $f.$s = $s; $f.$r = $r; return $f;
111063  	};
111064  	Server.prototype.RegisterOnShutdown = function(f) { return this.$val.RegisterOnShutdown(f); };
111065  	Server.ptr.prototype.closeIdleConns = function() {
111066  		var _entry, _i, _keys, _r$1, _ref, _tuple, c, ok, quiescent, s, st, $s, $deferred, $r;
111067  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _entry = $f._entry; _i = $f._i; _keys = $f._keys; _r$1 = $f._r$1; _ref = $f._ref; _tuple = $f._tuple; c = $f.c; ok = $f.ok; quiescent = $f.quiescent; s = $f.s; st = $f.st; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
111068  		s = this;
111069  		$r = s.mu.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
111070  		$deferred.push([$methodVal(s.mu, "Unlock"), []]);
111071  		quiescent = true;
111072  		_ref = s.activeConn;
111073  		_i = 0;
111074  		_keys = $keys(_ref);
111075  		/* while (true) { */ case 2:
111076  			/* if (!(_i < _keys.length)) { break; } */ if(!(_i < _keys.length)) { $s = 3; continue; }
111077  			_entry = _ref[_keys[_i]];
111078  			if (_entry === undefined) {
111079  				_i++;
111080  				/* continue; */ $s = 2; continue;
111081  			}
111082  			c = _entry.k;
111083  			_tuple = $assertType(c.curState.Load(), ConnState, true);
111084  			st = _tuple[0];
111085  			ok = _tuple[1];
111086  			/* */ if (!ok || !((st === 2))) { $s = 4; continue; }
111087  			/* */ $s = 5; continue;
111088  			/* if (!ok || !((st === 2))) { */ case 4:
111089  				quiescent = false;
111090  				_i++;
111091  				/* continue; */ $s = 2; continue;
111092  			/* } */ case 5:
111093  			_r$1 = c.rwc.Close(); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
111094  			_r$1;
111095  			delete s.activeConn[ptrType$97.keyFor(c)];
111096  			_i++;
111097  		/* } */ $s = 2; continue; case 3:
111098  		$s = -1; return quiescent;
111099  		/* */ } return; } } catch(err) { $err = err; $s = -1; return false; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: Server.ptr.prototype.closeIdleConns }; } $f._entry = _entry; $f._i = _i; $f._keys = _keys; $f._r$1 = _r$1; $f._ref = _ref; $f._tuple = _tuple; $f.c = c; $f.ok = ok; $f.quiescent = quiescent; $f.s = s; $f.st = st; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
111100  	};
111101  	Server.prototype.closeIdleConns = function() { return this.$val.closeIdleConns(); };
111102  	Server.ptr.prototype.closeListenersLocked = function() {
111103  		var _entry, _i, _keys, _r$1, _ref, cerr, err, ln, s, $s, $r;
111104  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _entry = $f._entry; _i = $f._i; _keys = $f._keys; _r$1 = $f._r$1; _ref = $f._ref; cerr = $f.cerr; err = $f.err; ln = $f.ln; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
111105  		s = this;
111106  		err = $ifaceNil;
111107  		_ref = s.listeners;
111108  		_i = 0;
111109  		_keys = $keys(_ref);
111110  		/* while (true) { */ case 1:
111111  			/* if (!(_i < _keys.length)) { break; } */ if(!(_i < _keys.length)) { $s = 2; continue; }
111112  			_entry = _ref[_keys[_i]];
111113  			if (_entry === undefined) {
111114  				_i++;
111115  				/* continue; */ $s = 1; continue;
111116  			}
111117  			ln = _entry.k;
111118  			_r$1 = ln.Close(); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
111119  			cerr = _r$1;
111120  			if (!($interfaceIsEqual(cerr, $ifaceNil)) && $interfaceIsEqual(err, $ifaceNil)) {
111121  				err = cerr;
111122  			}
111123  			delete s.listeners[net.Listener.keyFor(ln)];
111124  			_i++;
111125  		/* } */ $s = 1; continue; case 2:
111126  		$s = -1; return err;
111127  		/* */ } return; } if ($f === undefined) { $f = { $blk: Server.ptr.prototype.closeListenersLocked }; } $f._entry = _entry; $f._i = _i; $f._keys = _keys; $f._r$1 = _r$1; $f._ref = _ref; $f.cerr = cerr; $f.err = err; $f.ln = ln; $f.s = s; $f.$s = $s; $f.$r = $r; return $f;
111128  	};
111129  	Server.prototype.closeListenersLocked = function() { return this.$val.closeListenersLocked(); };
111130  	ConnState.prototype.String = function() {
111131  		var _entry, c;
111132  		c = this.$val;
111133  		return (_entry = stateName[ConnState.keyFor(c)], _entry !== undefined ? _entry.v : "");
111134  	};
111135  	$ptrType(ConnState).prototype.String = function() { return new ConnState(this.$get()).String(); };
111136  	serverHandler.ptr.prototype.ServeHTTP = function(rw, req) {
111137  		var handler, req, rw, sh, x$4, $s, $r;
111138  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; handler = $f.handler; req = $f.req; rw = $f.rw; sh = $f.sh; x$4 = $f.x$4; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
111139  		sh = this;
111140  		handler = sh.srv.Handler;
111141  		if ($interfaceIsEqual(handler, $ifaceNil)) {
111142  			handler = $pkg.DefaultServeMux;
111143  		}
111144  		if (req.RequestURI === "*" && req.Method === "OPTIONS") {
111145  			handler = (x$4 = new globalOptionsHandler.ptr(), new x$4.constructor.elem(x$4));
111146  		}
111147  		$r = handler.ServeHTTP(rw, req); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
111148  		$s = -1; return;
111149  		/* */ } return; } if ($f === undefined) { $f = { $blk: serverHandler.ptr.prototype.ServeHTTP }; } $f.handler = handler; $f.req = req; $f.rw = rw; $f.sh = sh; $f.x$4 = x$4; $f.$s = $s; $f.$r = $r; return $f;
111150  	};
111151  	serverHandler.prototype.ServeHTTP = function(rw, req) { return this.$val.ServeHTTP(rw, req); };
111152  	Server.ptr.prototype.ListenAndServe = function() {
111153  		var _r$1, _tuple, addr, err, ln, srv, x$4, $s, $r;
111154  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; _tuple = $f._tuple; addr = $f.addr; err = $f.err; ln = $f.ln; srv = $f.srv; x$4 = $f.x$4; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
111155  		srv = this;
111156  		addr = srv.Addr;
111157  		if (addr === "") {
111158  			addr = ":http";
111159  		}
111160  		_tuple = net.Listen("tcp", addr);
111161  		ln = _tuple[0];
111162  		err = _tuple[1];
111163  		if (!($interfaceIsEqual(err, $ifaceNil))) {
111164  			$s = -1; return err;
111165  		}
111166  		_r$1 = srv.Serve((x$4 = new tcpKeepAliveListener.ptr($assertType(ln, ptrType$100)), new x$4.constructor.elem(x$4))); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
111167  		$s = -1; return _r$1;
111168  		/* */ } return; } if ($f === undefined) { $f = { $blk: Server.ptr.prototype.ListenAndServe }; } $f._r$1 = _r$1; $f._tuple = _tuple; $f.addr = addr; $f.err = err; $f.ln = ln; $f.srv = srv; $f.x$4 = x$4; $f.$s = $s; $f.$r = $r; return $f;
111169  	};
111170  	Server.prototype.ListenAndServe = function() { return this.$val.ListenAndServe(); };
111171  	Server.ptr.prototype.shouldConfigureHTTP2ForServe = function() {
111172  		var srv;
111173  		srv = this;
111174  		if (srv.TLSConfig === ptrType$14.nil) {
111175  			return true;
111176  		}
111177  		return strSliceContains(srv.TLSConfig.NextProtos, "h2");
111178  	};
111179  	Server.prototype.shouldConfigureHTTP2ForServe = function() { return this.$val.shouldConfigureHTTP2ForServe(); };
111180  	Server.ptr.prototype.Serve = function(l) {
111181  		var _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _selection, _tuple, _tuple$1, _v, baseCtx, c, ctx, e, err, fn, l, max, ne, ok, rw, srv, tempDelay, $s, $deferred, $r;
111182  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _selection = $f._selection; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _v = $f._v; baseCtx = $f.baseCtx; c = $f.c; ctx = $f.ctx; e = $f.e; err = $f.err; fn = $f.fn; l = $f.l; max = $f.max; ne = $f.ne; ok = $f.ok; rw = $f.rw; srv = $f.srv; tempDelay = $f.tempDelay; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
111183  		srv = this;
111184  		$deferred.push([$methodVal(l, "Close"), []]);
111185  		fn = testHookServerServe;
111186  		/* */ if (!(fn === $throwNilPointerError)) { $s = 1; continue; }
111187  		/* */ $s = 2; continue;
111188  		/* if (!(fn === $throwNilPointerError)) { */ case 1:
111189  			$r = fn(srv, l); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
111190  		/* } */ case 2:
111191  		tempDelay = new time.Duration(0, 0);
111192  		_r$1 = srv.setupHTTP2_Serve(); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
111193  		err = _r$1;
111194  		if (!($interfaceIsEqual(err, $ifaceNil))) {
111195  			$s = -1; return err;
111196  		}
111197  		$r = srv.trackListener(l, true); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
111198  		$deferred.push([$methodVal(srv, "trackListener"), [l, false]]);
111199  		baseCtx = context.Background();
111200  		_r$2 = context.WithValue(baseCtx, $pkg.ServerContextKey, srv); /* */ $s = 6; case 6: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
111201  		ctx = _r$2;
111202  		/* while (true) { */ case 7:
111203  			_r$3 = l.Accept(); /* */ $s = 9; case 9: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
111204  			_tuple = _r$3;
111205  			rw = _tuple[0];
111206  			e = _tuple[1];
111207  			/* */ if (!($interfaceIsEqual(e, $ifaceNil))) { $s = 10; continue; }
111208  			/* */ $s = 11; continue;
111209  			/* if (!($interfaceIsEqual(e, $ifaceNil))) { */ case 10:
111210  				_r$4 = srv.getDoneChan(); /* */ $s = 12; case 12: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
111211  				_selection = $select([[_r$4], []]);
111212  				/* */ if (_selection[0] === 0) { $s = 13; continue; }
111213  				/* */ if (_selection[0] === 1) { $s = 14; continue; }
111214  				/* */ $s = 15; continue;
111215  				/* if (_selection[0] === 0) { */ case 13:
111216  					$s = -1; return $pkg.ErrServerClosed;
111217  				/* } else if (_selection[0] === 1) { */ case 14:
111218  				/* } */ case 15:
111219  				_tuple$1 = $assertType(e, net.Error, true);
111220  				ne = _tuple$1[0];
111221  				ok = _tuple$1[1];
111222  				if (!(ok)) { _v = false; $s = 18; continue s; }
111223  				_r$5 = ne.Temporary(); /* */ $s = 19; case 19: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
111224  				_v = _r$5; case 18:
111225  				/* */ if (_v) { $s = 16; continue; }
111226  				/* */ $s = 17; continue;
111227  				/* if (_v) { */ case 16:
111228  					if ((tempDelay.$high === 0 && tempDelay.$low === 0)) {
111229  						tempDelay = new time.Duration(0, 5000000);
111230  					} else {
111231  						tempDelay = $mul64(tempDelay, (new time.Duration(0, 2)));
111232  					}
111233  					max = new time.Duration(0, 1000000000);
111234  					if ((tempDelay.$high > max.$high || (tempDelay.$high === max.$high && tempDelay.$low > max.$low))) {
111235  						tempDelay = max;
111236  					}
111237  					$r = srv.logf("http: Accept error: %v; retrying in %v", new sliceType([e, tempDelay])); /* */ $s = 20; case 20: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
111238  					$r = time.Sleep(tempDelay); /* */ $s = 21; case 21: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
111239  					/* continue; */ $s = 7; continue;
111240  				/* } */ case 17:
111241  				$s = -1; return e;
111242  			/* } */ case 11:
111243  			tempDelay = new time.Duration(0, 0);
111244  			_r$6 = srv.newConn(rw); /* */ $s = 22; case 22: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
111245  			c = _r$6;
111246  			$r = c.setState(c.rwc, 0); /* */ $s = 23; case 23: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
111247  			$go($methodVal(c, "serve"), [ctx]);
111248  		/* } */ $s = 7; continue; case 8:
111249  		$s = -1; return $ifaceNil;
111250  		/* */ } return; } } catch(err) { $err = err; $s = -1; return $ifaceNil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: Server.ptr.prototype.Serve }; } $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._selection = _selection; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._v = _v; $f.baseCtx = baseCtx; $f.c = c; $f.ctx = ctx; $f.e = e; $f.err = err; $f.fn = fn; $f.l = l; $f.max = max; $f.ne = ne; $f.ok = ok; $f.rw = rw; $f.srv = srv; $f.tempDelay = tempDelay; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
111251  	};
111252  	Server.prototype.Serve = function(l) { return this.$val.Serve(l); };
111253  	Server.ptr.prototype.ServeTLS = function(l, certFile, keyFile) {
111254  		var _r$1, _r$2, _r$3, _r$4, _tuple, certFile, config, configHasCert, err, err$1, keyFile, l, srv, tlsListener, x$4, $s, $r;
111255  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _tuple = $f._tuple; certFile = $f.certFile; config = $f.config; configHasCert = $f.configHasCert; err = $f.err; err$1 = $f.err$1; keyFile = $f.keyFile; l = $f.l; srv = $f.srv; tlsListener = $f.tlsListener; x$4 = $f.x$4; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
111256  		srv = this;
111257  		_r$1 = srv.setupHTTP2_ServeTLS(); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
111258  		err = _r$1;
111259  		if (!($interfaceIsEqual(err, $ifaceNil))) {
111260  			$s = -1; return err;
111261  		}
111262  		_r$2 = cloneTLSConfig(srv.TLSConfig); /* */ $s = 2; case 2: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
111263  		config = _r$2;
111264  		if (!strSliceContains(config.NextProtos, "http/1.1")) {
111265  			config.NextProtos = $append(config.NextProtos, "http/1.1");
111266  		}
111267  		configHasCert = config.Certificates.$length > 0 || !(config.GetCertificate === $throwNilPointerError);
111268  		/* */ if (!configHasCert || !(certFile === "") || !(keyFile === "")) { $s = 3; continue; }
111269  		/* */ $s = 4; continue;
111270  		/* if (!configHasCert || !(certFile === "") || !(keyFile === "")) { */ case 3:
111271  			err$1 = $ifaceNil;
111272  			config.Certificates = $makeSlice(sliceType$11, 1);
111273  			_r$3 = tls.LoadX509KeyPair(certFile, keyFile); /* */ $s = 5; case 5: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
111274  			_tuple = _r$3;
111275  			tls.Certificate.copy((x$4 = config.Certificates, (0 >= x$4.$length ? ($throwRuntimeError("index out of range"), undefined) : x$4.$array[x$4.$offset + 0])), _tuple[0]);
111276  			err$1 = _tuple[1];
111277  			if (!($interfaceIsEqual(err$1, $ifaceNil))) {
111278  				$s = -1; return err$1;
111279  			}
111280  		/* } */ case 4:
111281  		tlsListener = tls.NewListener(l, config);
111282  		_r$4 = srv.Serve(tlsListener); /* */ $s = 6; case 6: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
111283  		$s = -1; return _r$4;
111284  		/* */ } return; } if ($f === undefined) { $f = { $blk: Server.ptr.prototype.ServeTLS }; } $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._tuple = _tuple; $f.certFile = certFile; $f.config = config; $f.configHasCert = configHasCert; $f.err = err; $f.err$1 = err$1; $f.keyFile = keyFile; $f.l = l; $f.srv = srv; $f.tlsListener = tlsListener; $f.x$4 = x$4; $f.$s = $s; $f.$r = $r; return $f;
111285  	};
111286  	Server.prototype.ServeTLS = function(l, certFile, keyFile) { return this.$val.ServeTLS(l, certFile, keyFile); };
111287  	Server.ptr.prototype.trackListener = function(ln, add) {
111288  		var _key, add, ln, s, $s, $deferred, $r;
111289  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _key = $f._key; add = $f.add; ln = $f.ln; s = $f.s; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
111290  		s = this;
111291  		$r = s.mu.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
111292  		$deferred.push([$methodVal(s.mu, "Unlock"), []]);
111293  		if (s.listeners === false) {
111294  			s.listeners = {};
111295  		}
111296  		if (add) {
111297  			if (($keys(s.listeners).length === 0) && ($keys(s.activeConn).length === 0)) {
111298  				s.doneChan = $chanNil;
111299  			}
111300  			_key = ln; (s.listeners || $throwRuntimeError("assignment to entry in nil map"))[net.Listener.keyFor(_key)] = { k: _key, v: new structType.ptr() };
111301  		} else {
111302  			delete s.listeners[net.Listener.keyFor(ln)];
111303  		}
111304  		$s = -1; return;
111305  		/* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: Server.ptr.prototype.trackListener }; } $f._key = _key; $f.add = add; $f.ln = ln; $f.s = s; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
111306  	};
111307  	Server.prototype.trackListener = function(ln, add) { return this.$val.trackListener(ln, add); };
111308  	Server.ptr.prototype.trackConn = function(c, add) {
111309  		var _key, add, c, s, $s, $deferred, $r;
111310  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _key = $f._key; add = $f.add; c = $f.c; s = $f.s; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
111311  		s = this;
111312  		$r = s.mu.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
111313  		$deferred.push([$methodVal(s.mu, "Unlock"), []]);
111314  		if (s.activeConn === false) {
111315  			s.activeConn = {};
111316  		}
111317  		if (add) {
111318  			_key = c; (s.activeConn || $throwRuntimeError("assignment to entry in nil map"))[ptrType$97.keyFor(_key)] = { k: _key, v: new structType.ptr() };
111319  		} else {
111320  			delete s.activeConn[ptrType$97.keyFor(c)];
111321  		}
111322  		$s = -1; return;
111323  		/* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: Server.ptr.prototype.trackConn }; } $f._key = _key; $f.add = add; $f.c = c; $f.s = s; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
111324  	};
111325  	Server.prototype.trackConn = function(c, add) { return this.$val.trackConn(c, add); };
111326  	Server.ptr.prototype.idleTimeout = function() {
111327  		var s, x$4;
111328  		s = this;
111329  		if (!((x$4 = s.IdleTimeout, (x$4.$high === 0 && x$4.$low === 0)))) {
111330  			return s.IdleTimeout;
111331  		}
111332  		return s.ReadTimeout;
111333  	};
111334  	Server.prototype.idleTimeout = function() { return this.$val.idleTimeout(); };
111335  	Server.ptr.prototype.readHeaderTimeout = function() {
111336  		var s, x$4;
111337  		s = this;
111338  		if (!((x$4 = s.ReadHeaderTimeout, (x$4.$high === 0 && x$4.$low === 0)))) {
111339  			return s.ReadHeaderTimeout;
111340  		}
111341  		return s.ReadTimeout;
111342  	};
111343  	Server.prototype.readHeaderTimeout = function() { return this.$val.readHeaderTimeout(); };
111344  	Server.ptr.prototype.doKeepAlives = function() {
111345  		var s;
111346  		s = this;
111347  		return (atomic.LoadInt32((s.$ptr_disableKeepAlives || (s.$ptr_disableKeepAlives = new ptrType$90(function() { return this.$target.disableKeepAlives; }, function($v) { this.$target.disableKeepAlives = $v; }, s)))) === 0) && !s.shuttingDown();
111348  	};
111349  	Server.prototype.doKeepAlives = function() { return this.$val.doKeepAlives(); };
111350  	Server.ptr.prototype.shuttingDown = function() {
111351  		var s;
111352  		s = this;
111353  		return !((atomic.LoadInt32((s.$ptr_inShutdown || (s.$ptr_inShutdown = new ptrType$90(function() { return this.$target.inShutdown; }, function($v) { this.$target.inShutdown = $v; }, s)))) === 0));
111354  	};
111355  	Server.prototype.shuttingDown = function() { return this.$val.shuttingDown(); };
111356  	Server.ptr.prototype.SetKeepAlivesEnabled = function(v) {
111357  		var _r$1, srv, v, $s, $deferred, $r;
111358  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; srv = $f.srv; v = $f.v; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
111359  		srv = this;
111360  		if (v) {
111361  			atomic.StoreInt32((srv.$ptr_disableKeepAlives || (srv.$ptr_disableKeepAlives = new ptrType$90(function() { return this.$target.disableKeepAlives; }, function($v) { this.$target.disableKeepAlives = $v; }, srv))), 0);
111362  			$s = -1; return;
111363  		}
111364  		atomic.StoreInt32((srv.$ptr_disableKeepAlives || (srv.$ptr_disableKeepAlives = new ptrType$90(function() { return this.$target.disableKeepAlives; }, function($v) { this.$target.disableKeepAlives = $v; }, srv))), 1);
111365  		_r$1 = srv.closeIdleConns(); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
111366  		_r$1;
111367  		$r = srv.mu.Lock(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
111368  		$deferred.push([$methodVal(srv.mu, "Unlock"), []]);
111369  		srv.closeDoneChanLocked();
111370  		srv.doneChan = $chanNil;
111371  		$s = -1; return;
111372  		/* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: Server.ptr.prototype.SetKeepAlivesEnabled }; } $f._r$1 = _r$1; $f.srv = srv; $f.v = v; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
111373  	};
111374  	Server.prototype.SetKeepAlivesEnabled = function(v) { return this.$val.SetKeepAlivesEnabled(v); };
111375  	Server.ptr.prototype.logf = function(format, args) {
111376  		var args, format, s, $s, $r;
111377  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; args = $f.args; format = $f.format; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
111378  		s = this;
111379  		/* */ if (!(s.ErrorLog === ptrType$54.nil)) { $s = 1; continue; }
111380  		/* */ $s = 2; continue;
111381  		/* if (!(s.ErrorLog === ptrType$54.nil)) { */ case 1:
111382  			$r = s.ErrorLog.Printf(format, args); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
111383  			$s = 3; continue;
111384  		/* } else { */ case 2:
111385  			$r = log.Printf(format, args); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
111386  		/* } */ case 3:
111387  		$s = -1; return;
111388  		/* */ } return; } if ($f === undefined) { $f = { $blk: Server.ptr.prototype.logf }; } $f.args = args; $f.format = format; $f.s = s; $f.$s = $s; $f.$r = $r; return $f;
111389  	};
111390  	Server.prototype.logf = function(format, args) { return this.$val.logf(format, args); };
111391  	Server.ptr.prototype.ListenAndServeTLS = function(certFile, keyFile) {
111392  		var _r$1, _tuple, addr, certFile, err, keyFile, ln, srv, x$4, $s, $deferred, $r;
111393  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; _tuple = $f._tuple; addr = $f.addr; certFile = $f.certFile; err = $f.err; keyFile = $f.keyFile; ln = $f.ln; srv = $f.srv; x$4 = $f.x$4; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
111394  		srv = this;
111395  		addr = srv.Addr;
111396  		if (addr === "") {
111397  			addr = ":https";
111398  		}
111399  		_tuple = net.Listen("tcp", addr);
111400  		ln = _tuple[0];
111401  		err = _tuple[1];
111402  		if (!($interfaceIsEqual(err, $ifaceNil))) {
111403  			$s = -1; return err;
111404  		}
111405  		$deferred.push([$methodVal(ln, "Close"), []]);
111406  		_r$1 = srv.ServeTLS((x$4 = new tcpKeepAliveListener.ptr($assertType(ln, ptrType$100)), new x$4.constructor.elem(x$4)), certFile, keyFile); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
111407  		$s = -1; return _r$1;
111408  		/* */ } return; } } catch(err) { $err = err; $s = -1; return $ifaceNil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: Server.ptr.prototype.ListenAndServeTLS }; } $f._r$1 = _r$1; $f._tuple = _tuple; $f.addr = addr; $f.certFile = certFile; $f.err = err; $f.keyFile = keyFile; $f.ln = ln; $f.srv = srv; $f.x$4 = x$4; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
111409  	};
111410  	Server.prototype.ListenAndServeTLS = function(certFile, keyFile) { return this.$val.ListenAndServeTLS(certFile, keyFile); };
111411  	Server.ptr.prototype.setupHTTP2_ServeTLS = function() {
111412  		var srv, $s, $r;
111413  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; srv = $f.srv; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
111414  		srv = this;
111415  		$r = srv.nextProtoOnce.Do($methodVal(srv, "onceSetNextProtoDefaults")); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
111416  		$s = -1; return srv.nextProtoErr;
111417  		/* */ } return; } if ($f === undefined) { $f = { $blk: Server.ptr.prototype.setupHTTP2_ServeTLS }; } $f.srv = srv; $f.$s = $s; $f.$r = $r; return $f;
111418  	};
111419  	Server.prototype.setupHTTP2_ServeTLS = function() { return this.$val.setupHTTP2_ServeTLS(); };
111420  	Server.ptr.prototype.setupHTTP2_Serve = function() {
111421  		var srv, $s, $r;
111422  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; srv = $f.srv; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
111423  		srv = this;
111424  		$r = srv.nextProtoOnce.Do($methodVal(srv, "onceSetNextProtoDefaults_Serve")); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
111425  		$s = -1; return srv.nextProtoErr;
111426  		/* */ } return; } if ($f === undefined) { $f = { $blk: Server.ptr.prototype.setupHTTP2_Serve }; } $f.srv = srv; $f.$s = $s; $f.$r = $r; return $f;
111427  	};
111428  	Server.prototype.setupHTTP2_Serve = function() { return this.$val.setupHTTP2_Serve(); };
111429  	Server.ptr.prototype.onceSetNextProtoDefaults_Serve = function() {
111430  		var srv, $s, $r;
111431  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; srv = $f.srv; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
111432  		srv = this;
111433  		/* */ if (srv.shouldConfigureHTTP2ForServe()) { $s = 1; continue; }
111434  		/* */ $s = 2; continue;
111435  		/* if (srv.shouldConfigureHTTP2ForServe()) { */ case 1:
111436  			$r = srv.onceSetNextProtoDefaults(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
111437  		/* } */ case 2:
111438  		$s = -1; return;
111439  		/* */ } return; } if ($f === undefined) { $f = { $blk: Server.ptr.prototype.onceSetNextProtoDefaults_Serve }; } $f.srv = srv; $f.$s = $s; $f.$r = $r; return $f;
111440  	};
111441  	Server.prototype.onceSetNextProtoDefaults_Serve = function() { return this.$val.onceSetNextProtoDefaults_Serve(); };
111442  	Server.ptr.prototype.onceSetNextProtoDefaults = function() {
111443  		var _r$1, _r$2, _r$3, conf, srv, $s, $r;
111444  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; conf = $f.conf; srv = $f.srv; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
111445  		srv = this;
111446  		_r$1 = os.Getenv("GODEBUG"); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
111447  		_r$2 = strings.Contains(_r$1, "http2server=0"); /* */ $s = 4; case 4: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
111448  		/* */ if (_r$2) { $s = 1; continue; }
111449  		/* */ $s = 2; continue;
111450  		/* if (_r$2) { */ case 1:
111451  			$s = -1; return;
111452  		/* } */ case 2:
111453  		/* */ if (srv.TLSNextProto === false) { $s = 5; continue; }
111454  		/* */ $s = 6; continue;
111455  		/* if (srv.TLSNextProto === false) { */ case 5:
111456  			conf = new http2Server.ptr(0, 0, 0, false, new time.Duration(0, 0), 0, 0, (function() {
111457  				return http2NewPriorityWriteScheduler(ptrType$78.nil);
111458  			}), ptrType$51.nil);
111459  			_r$3 = http2ConfigureServer(srv, conf); /* */ $s = 7; case 7: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
111460  			srv.nextProtoErr = _r$3;
111461  		/* } */ case 6:
111462  		$s = -1; return;
111463  		/* */ } return; } if ($f === undefined) { $f = { $blk: Server.ptr.prototype.onceSetNextProtoDefaults }; } $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f.conf = conf; $f.srv = srv; $f.$s = $s; $f.$r = $r; return $f;
111464  	};
111465  	Server.prototype.onceSetNextProtoDefaults = function() { return this.$val.onceSetNextProtoDefaults(); };
111466  	tcpKeepAliveListener.ptr.prototype.Accept = function() {
111467  		var _r$1, _r$2, _r$3, _tuple, err, ln, tc, $s, $r;
111468  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _tuple = $f._tuple; err = $f.err; ln = $f.ln; tc = $f.tc; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
111469  		ln = this;
111470  		_r$1 = ln.TCPListener.AcceptTCP(); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
111471  		_tuple = _r$1;
111472  		tc = _tuple[0];
111473  		err = _tuple[1];
111474  		if (!($interfaceIsEqual(err, $ifaceNil))) {
111475  			$s = -1; return [$ifaceNil, err];
111476  		}
111477  		_r$2 = tc.SetKeepAlive(true); /* */ $s = 2; case 2: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
111478  		_r$2;
111479  		_r$3 = tc.SetKeepAlivePeriod(new time.Duration(41, 3906340864)); /* */ $s = 3; case 3: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
111480  		_r$3;
111481  		$s = -1; return [tc, $ifaceNil];
111482  		/* */ } return; } if ($f === undefined) { $f = { $blk: tcpKeepAliveListener.ptr.prototype.Accept }; } $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._tuple = _tuple; $f.err = err; $f.ln = ln; $f.tc = tc; $f.$s = $s; $f.$r = $r; return $f;
111483  	};
111484  	tcpKeepAliveListener.prototype.Accept = function() { return this.$val.Accept(); };
111485  	globalOptionsHandler.ptr.prototype.ServeHTTP = function(w, r) {
111486  		var _r$1, _r$2, mb, r, w, x$4, $s, $r;
111487  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; _r$2 = $f._r$2; mb = $f.mb; r = $f.r; w = $f.w; x$4 = $f.x$4; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
111488  		_r$1 = w.Header(); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
111489  		$r = new Header(_r$1).Set("Content-Length", "0"); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
111490  		/* */ if (!((x$4 = r.ContentLength, (x$4.$high === 0 && x$4.$low === 0)))) { $s = 3; continue; }
111491  		/* */ $s = 4; continue;
111492  		/* if (!((x$4 = r.ContentLength, (x$4.$high === 0 && x$4.$low === 0)))) { */ case 3:
111493  			mb = MaxBytesReader(w, r.Body, new $Int64(0, 4096));
111494  			_r$2 = io.Copy(ioutil.Discard, mb); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
111495  			_r$2;
111496  		/* } */ case 4:
111497  		$s = -1; return;
111498  		/* */ } return; } if ($f === undefined) { $f = { $blk: globalOptionsHandler.ptr.prototype.ServeHTTP }; } $f._r$1 = _r$1; $f._r$2 = _r$2; $f.mb = mb; $f.r = r; $f.w = w; $f.x$4 = x$4; $f.$s = $s; $f.$r = $r; return $f;
111499  	};
111500  	globalOptionsHandler.prototype.ServeHTTP = function(w, r) { return this.$val.ServeHTTP(w, r); };
111501  	initNPNRequest.ptr.prototype.ServeHTTP = function(rw, req) {
111502  		var _r$1, _r$2, _r$3, h, req, rw, $s, $r;
111503  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; h = $f.h; req = $f.req; rw = $f.rw; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
111504  		h = this;
111505  		/* */ if (req.TLS === ptrType$18.nil) { $s = 1; continue; }
111506  		/* */ $s = 2; continue;
111507  		/* if (req.TLS === ptrType$18.nil) { */ case 1:
111508  			req.TLS = new tls.ConnectionState.ptr(0, false, false, 0, "", false, "", sliceType$17.nil, sliceType$18.nil, sliceType$5.nil, sliceType$3.nil, sliceType$3.nil);
111509  			_r$1 = h.c.ConnectionState(); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
111510  			tls.ConnectionState.copy(req.TLS, _r$1);
111511  		/* } */ case 2:
111512  		if ($interfaceIsEqual(req.Body, $ifaceNil)) {
111513  			req.Body = new $pkg.NoBody.constructor.elem($pkg.NoBody);
111514  		}
111515  		/* */ if (req.RemoteAddr === "") { $s = 4; continue; }
111516  		/* */ $s = 5; continue;
111517  		/* if (req.RemoteAddr === "") { */ case 4:
111518  			_r$2 = h.c.RemoteAddr(); /* */ $s = 6; case 6: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
111519  			_r$3 = _r$2.String(); /* */ $s = 7; case 7: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
111520  			req.RemoteAddr = _r$3;
111521  		/* } */ case 5:
111522  		$r = $clone(h.h, serverHandler).ServeHTTP(rw, req); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
111523  		$s = -1; return;
111524  		/* */ } return; } if ($f === undefined) { $f = { $blk: initNPNRequest.ptr.prototype.ServeHTTP }; } $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f.h = h; $f.req = req; $f.rw = rw; $f.$s = $s; $f.$r = $r; return $f;
111525  	};
111526  	initNPNRequest.prototype.ServeHTTP = function(rw, req) { return this.$val.ServeHTTP(rw, req); };
111527  	newLoggingConn = function(baseName, c) {
111528  		var _entry, _entry$1, _key, _r$1, baseName, c, $s, $deferred, $r;
111529  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _entry = $f._entry; _entry$1 = $f._entry$1; _key = $f._key; _r$1 = $f._r$1; baseName = $f.baseName; c = $f.c; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
111530  		$r = uniqNameMu.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
111531  		$deferred.push([$methodVal(uniqNameMu, "Unlock"), []]);
111532  		_key = baseName; (uniqNameNext || $throwRuntimeError("assignment to entry in nil map"))[$String.keyFor(_key)] = { k: _key, v: (_entry = uniqNameNext[$String.keyFor(baseName)], _entry !== undefined ? _entry.v : 0) + (1) >> 0 };
111533  		_r$1 = fmt.Sprintf("%s-%d", new sliceType([new $String(baseName), new $Int((_entry$1 = uniqNameNext[$String.keyFor(baseName)], _entry$1 !== undefined ? _entry$1.v : 0))])); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
111534  		$s = -1; return new loggingConn.ptr(_r$1, c);
111535  		/* */ } return; } } catch(err) { $err = err; $s = -1; return $ifaceNil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: newLoggingConn }; } $f._entry = _entry; $f._entry$1 = _entry$1; $f._key = _key; $f._r$1 = _r$1; $f.baseName = baseName; $f.c = c; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
111536  	};
111537  	loggingConn.ptr.prototype.Write = function(p) {
111538  		var _r$1, _tuple, c, err, n, p, $s, $r;
111539  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; _tuple = $f._tuple; c = $f.c; err = $f.err; n = $f.n; p = $f.p; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
111540  		n = 0;
111541  		err = $ifaceNil;
111542  		c = this;
111543  		$r = log.Printf("%s.Write(%d) = ....", new sliceType([new $String(c.name), new $Int(p.$length)])); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
111544  		_r$1 = c.Conn.Write(p); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
111545  		_tuple = _r$1;
111546  		n = _tuple[0];
111547  		err = _tuple[1];
111548  		$r = log.Printf("%s.Write(%d) = %d, %v", new sliceType([new $String(c.name), new $Int(p.$length), new $Int(n), err])); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
111549  		$s = -1; return [n, err];
111550  		/* */ } return; } if ($f === undefined) { $f = { $blk: loggingConn.ptr.prototype.Write }; } $f._r$1 = _r$1; $f._tuple = _tuple; $f.c = c; $f.err = err; $f.n = n; $f.p = p; $f.$s = $s; $f.$r = $r; return $f;
111551  	};
111552  	loggingConn.prototype.Write = function(p) { return this.$val.Write(p); };
111553  	loggingConn.ptr.prototype.Read = function(p) {
111554  		var _r$1, _tuple, c, err, n, p, $s, $r;
111555  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; _tuple = $f._tuple; c = $f.c; err = $f.err; n = $f.n; p = $f.p; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
111556  		n = 0;
111557  		err = $ifaceNil;
111558  		c = this;
111559  		$r = log.Printf("%s.Read(%d) = ....", new sliceType([new $String(c.name), new $Int(p.$length)])); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
111560  		_r$1 = c.Conn.Read(p); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
111561  		_tuple = _r$1;
111562  		n = _tuple[0];
111563  		err = _tuple[1];
111564  		$r = log.Printf("%s.Read(%d) = %d, %v", new sliceType([new $String(c.name), new $Int(p.$length), new $Int(n), err])); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
111565  		$s = -1; return [n, err];
111566  		/* */ } return; } if ($f === undefined) { $f = { $blk: loggingConn.ptr.prototype.Read }; } $f._r$1 = _r$1; $f._tuple = _tuple; $f.c = c; $f.err = err; $f.n = n; $f.p = p; $f.$s = $s; $f.$r = $r; return $f;
111567  	};
111568  	loggingConn.prototype.Read = function(p) { return this.$val.Read(p); };
111569  	loggingConn.ptr.prototype.Close = function() {
111570  		var _r$1, c, err, $s, $r;
111571  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; c = $f.c; err = $f.err; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
111572  		err = $ifaceNil;
111573  		c = this;
111574  		$r = log.Printf("%s.Close() = ...", new sliceType([new $String(c.name)])); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
111575  		_r$1 = c.Conn.Close(); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
111576  		err = _r$1;
111577  		$r = log.Printf("%s.Close() = %v", new sliceType([new $String(c.name), err])); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
111578  		$s = -1; return err;
111579  		/* */ } return; } if ($f === undefined) { $f = { $blk: loggingConn.ptr.prototype.Close }; } $f._r$1 = _r$1; $f.c = c; $f.err = err; $f.$s = $s; $f.$r = $r; return $f;
111580  	};
111581  	loggingConn.prototype.Close = function() { return this.$val.Close(); };
111582  	checkConnErrorWriter.ptr.prototype.Write = function(p) {
111583  		var _r$1, _tuple, err, n, p, w, $s, $r;
111584  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; _tuple = $f._tuple; err = $f.err; n = $f.n; p = $f.p; w = $f.w; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
111585  		n = 0;
111586  		err = $ifaceNil;
111587  		w = this;
111588  		_r$1 = w.c.rwc.Write(p); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
111589  		_tuple = _r$1;
111590  		n = _tuple[0];
111591  		err = _tuple[1];
111592  		/* */ if (!($interfaceIsEqual(err, $ifaceNil)) && $interfaceIsEqual(w.c.werr, $ifaceNil)) { $s = 2; continue; }
111593  		/* */ $s = 3; continue;
111594  		/* if (!($interfaceIsEqual(err, $ifaceNil)) && $interfaceIsEqual(w.c.werr, $ifaceNil)) { */ case 2:
111595  			w.c.werr = err;
111596  			$r = w.c.cancelCtx(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
111597  		/* } */ case 3:
111598  		$s = -1; return [n, err];
111599  		/* */ } return; } if ($f === undefined) { $f = { $blk: checkConnErrorWriter.ptr.prototype.Write }; } $f._r$1 = _r$1; $f._tuple = _tuple; $f.err = err; $f.n = n; $f.p = p; $f.w = w; $f.$s = $s; $f.$r = $r; return $f;
111600  	};
111601  	checkConnErrorWriter.prototype.Write = function(p) { return this.$val.Write(p); };
111602  	numLeadingCRorLF = function(v) {
111603  		var _i, _ref, b, n, v;
111604  		n = 0;
111605  		_ref = v;
111606  		_i = 0;
111607  		while (true) {
111608  			if (!(_i < _ref.$length)) { break; }
111609  			b = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
111610  			if ((b === 13) || (b === 10)) {
111611  				n = n + (1) >> 0;
111612  				_i++;
111613  				continue;
111614  			}
111615  			break;
111616  		}
111617  		return n;
111618  	};
111619  	strSliceContains = function(ss, s) {
111620  		var _i, _ref, s, ss, v;
111621  		_ref = ss;
111622  		_i = 0;
111623  		while (true) {
111624  			if (!(_i < _ref.$length)) { break; }
111625  			v = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
111626  			if (v === s) {
111627  				return true;
111628  			}
111629  			_i++;
111630  		}
111631  		return false;
111632  	};
111633  	DetectContentType = function(data) {
111634  		var _i, _r$1, _ref, ct, data, firstNonWS, sig, $s, $r;
111635  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _i = $f._i; _r$1 = $f._r$1; _ref = $f._ref; ct = $f.ct; data = $f.data; firstNonWS = $f.firstNonWS; sig = $f.sig; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
111636  		if (data.$length > 512) {
111637  			data = $subslice(data, 0, 512);
111638  		}
111639  		firstNonWS = 0;
111640  		while (true) {
111641  			if (!(firstNonWS < data.$length && isWS(((firstNonWS < 0 || firstNonWS >= data.$length) ? ($throwRuntimeError("index out of range"), undefined) : data.$array[data.$offset + firstNonWS])))) { break; }
111642  			firstNonWS = firstNonWS + (1) >> 0;
111643  		}
111644  		_ref = sniffSignatures;
111645  		_i = 0;
111646  		/* while (true) { */ case 1:
111647  			/* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; }
111648  			sig = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
111649  			_r$1 = sig.match(data, firstNonWS); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
111650  			ct = _r$1;
111651  			if (!(ct === "")) {
111652  				$s = -1; return ct;
111653  			}
111654  			_i++;
111655  		/* } */ $s = 1; continue; case 2:
111656  		$s = -1; return "application/octet-stream";
111657  		/* */ } return; } if ($f === undefined) { $f = { $blk: DetectContentType }; } $f._i = _i; $f._r$1 = _r$1; $f._ref = _ref; $f.ct = ct; $f.data = data; $f.firstNonWS = firstNonWS; $f.sig = sig; $f.$s = $s; $f.$r = $r; return $f;
111658  	};
111659  	$pkg.DetectContentType = DetectContentType;
111660  	isWS = function(b) {
111661  		var _1, b;
111662  		_1 = b;
111663  		if ((_1 === (9)) || (_1 === (10)) || (_1 === (12)) || (_1 === (13)) || (_1 === (32))) {
111664  			return true;
111665  		}
111666  		return false;
111667  	};
111668  	exactSig.ptr.prototype.match = function(data, firstNonWS) {
111669  		var data, e, firstNonWS;
111670  		e = this;
111671  		if (bytes.HasPrefix(data, e.sig)) {
111672  			return e.ct;
111673  		}
111674  		return "";
111675  	};
111676  	exactSig.prototype.match = function(data, firstNonWS) { return this.$val.match(data, firstNonWS); };
111677  	maskedSig.ptr.prototype.match = function(data, firstNonWS) {
111678  		var _i, _ref, data, db, firstNonWS, i, m, mask, x$4;
111679  		m = this;
111680  		if (m.skipWS) {
111681  			data = $subslice(data, firstNonWS);
111682  		}
111683  		if (!((m.pat.$length === m.mask.$length))) {
111684  			return "";
111685  		}
111686  		if (data.$length < m.mask.$length) {
111687  			return "";
111688  		}
111689  		_ref = m.mask;
111690  		_i = 0;
111691  		while (true) {
111692  			if (!(_i < _ref.$length)) { break; }
111693  			i = _i;
111694  			mask = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
111695  			db = (((i < 0 || i >= data.$length) ? ($throwRuntimeError("index out of range"), undefined) : data.$array[data.$offset + i]) & mask) >>> 0;
111696  			if (!((db === (x$4 = m.pat, ((i < 0 || i >= x$4.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$4.$array[x$4.$offset + i]))))) {
111697  				return "";
111698  			}
111699  			_i++;
111700  		}
111701  		return m.ct;
111702  	};
111703  	maskedSig.prototype.match = function(data, firstNonWS) { return this.$val.match(data, firstNonWS); };
111704  	htmlSig.prototype.match = function(data, firstNonWS) {
111705  		var _i, _ref, b, data, db, db$1, firstNonWS, h, i, x$4;
111706  		h = this;
111707  		data = $subslice(data, firstNonWS);
111708  		if (data.$length < (h.$length + 1 >> 0)) {
111709  			return "";
111710  		}
111711  		_ref = h;
111712  		_i = 0;
111713  		while (true) {
111714  			if (!(_i < _ref.$length)) { break; }
111715  			i = _i;
111716  			b = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
111717  			db = ((i < 0 || i >= data.$length) ? ($throwRuntimeError("index out of range"), undefined) : data.$array[data.$offset + i]);
111718  			if (65 <= b && b <= 90) {
111719  				db = (db & (223)) >>> 0;
111720  			}
111721  			if (!((b === db))) {
111722  				return "";
111723  			}
111724  			_i++;
111725  		}
111726  		db$1 = (x$4 = h.$length, ((x$4 < 0 || x$4 >= data.$length) ? ($throwRuntimeError("index out of range"), undefined) : data.$array[data.$offset + x$4]));
111727  		if (!((db$1 === 32)) && !((db$1 === 62))) {
111728  			return "";
111729  		}
111730  		return "text/html; charset=utf-8";
111731  	};
111732  	$ptrType(htmlSig).prototype.match = function(data, firstNonWS) { return this.$get().match(data, firstNonWS); };
111733  	mp4Sig.ptr.prototype.match = function(data, firstNonWS) {
111734  		var _r$1, boxSize, data, firstNonWS, st;
111735  		if (data.$length < 12) {
111736  			return "";
111737  		}
111738  		boxSize = (($clone(binary.BigEndian, binary.bigEndian).Uint32($subslice(data, 0, 4)) >> 0));
111739  		if (!(((_r$1 = boxSize % 4, _r$1 === _r$1 ? _r$1 : $throwRuntimeError("integer divide by zero")) === 0)) || data.$length < boxSize) {
111740  			return "";
111741  		}
111742  		if (!bytes.Equal($subslice(data, 4, 8), mp4ftype)) {
111743  			return "";
111744  		}
111745  		st = 8;
111746  		while (true) {
111747  			if (!(st < boxSize)) { break; }
111748  			if (st === 12) {
111749  				st = st + (4) >> 0;
111750  				continue;
111751  			}
111752  			if (bytes.Equal($subslice(data, st, (st + 3 >> 0)), mp4)) {
111753  				return "video/mp4";
111754  			}
111755  			st = st + (4) >> 0;
111756  		}
111757  		return "";
111758  	};
111759  	mp4Sig.prototype.match = function(data, firstNonWS) { return this.$val.match(data, firstNonWS); };
111760  	textSig.ptr.prototype.match = function(data, firstNonWS) {
111761  		var _i, _ref, b, data, firstNonWS;
111762  		_ref = $subslice(data, firstNonWS);
111763  		_i = 0;
111764  		while (true) {
111765  			if (!(_i < _ref.$length)) { break; }
111766  			b = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
111767  			if ((b <= 8) || ((b === 11)) || (14 <= b && b <= 26) || (28 <= b && b <= 31)) {
111768  				return "";
111769  			}
111770  			_i++;
111771  		}
111772  		return "text/plain; charset=utf-8";
111773  	};
111774  	textSig.prototype.match = function(data, firstNonWS) { return this.$val.match(data, firstNonWS); };
111775  	StatusText = function(code) {
111776  		var _entry, code;
111777  		return (_entry = statusText[$Int.keyFor(code)], _entry !== undefined ? _entry.v : "");
111778  	};
111779  	$pkg.StatusText = StatusText;
111780  	errorReader.ptr.prototype.Read = function(p) {
111781  		var _tmp, _tmp$1, err, n, p, r;
111782  		n = 0;
111783  		err = $ifaceNil;
111784  		r = this;
111785  		_tmp = 0;
111786  		_tmp$1 = r.err;
111787  		n = _tmp;
111788  		err = _tmp$1;
111789  		return [n, err];
111790  	};
111791  	errorReader.prototype.Read = function(p) { return this.$val.Read(p); };
111792  	byteReader.ptr.prototype.Read = function(p) {
111793  		var _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, br, err, n, p;
111794  		n = 0;
111795  		err = $ifaceNil;
111796  		br = this;
111797  		if (br.done) {
111798  			_tmp = 0;
111799  			_tmp$1 = io.EOF;
111800  			n = _tmp;
111801  			err = _tmp$1;
111802  			return [n, err];
111803  		}
111804  		if (p.$length === 0) {
111805  			_tmp$2 = 0;
111806  			_tmp$3 = $ifaceNil;
111807  			n = _tmp$2;
111808  			err = _tmp$3;
111809  			return [n, err];
111810  		}
111811  		br.done = true;
111812  		(0 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 0] = br.b);
111813  		_tmp$4 = 1;
111814  		_tmp$5 = io.EOF;
111815  		n = _tmp$4;
111816  		err = _tmp$5;
111817  		return [n, err];
111818  	};
111819  	byteReader.prototype.Read = function(p) { return this.$val.Read(p); };
111820  	transferBodyReader.ptr.prototype.Read = function(p) {
111821  		var _r$1, _tuple, br, err, n, p, $s, $r;
111822  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; _tuple = $f._tuple; br = $f.br; err = $f.err; n = $f.n; p = $f.p; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
111823  		n = 0;
111824  		err = $ifaceNil;
111825  		br = this;
111826  		_r$1 = br.tw.Body.Read(p); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
111827  		_tuple = _r$1;
111828  		n = _tuple[0];
111829  		err = _tuple[1];
111830  		if (!($interfaceIsEqual(err, $ifaceNil)) && !($interfaceIsEqual(err, io.EOF))) {
111831  			br.tw.bodyReadError = err;
111832  		}
111833  		$s = -1; return [n, err];
111834  		/* */ } return; } if ($f === undefined) { $f = { $blk: transferBodyReader.ptr.prototype.Read }; } $f._r$1 = _r$1; $f._tuple = _tuple; $f.br = br; $f.err = err; $f.n = n; $f.p = p; $f.$s = $s; $f.$r = $r; return $f;
111835  	};
111836  	transferBodyReader.prototype.Read = function(p) { return this.$val.Read(p); };
111837  	newTransferWriter = function(r) {
111838  		var _r$1, _r$2, _ref, _tmp, _tmp$1, _tmp$2, _tmp$3, _v, atLeastHTTP11, err, r, rr, rr$1, t, x$4, x$5, $s, $r;
111839  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; _r$2 = $f._r$2; _ref = $f._ref; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _v = $f._v; atLeastHTTP11 = $f.atLeastHTTP11; err = $f.err; r = $f.r; rr = $f.rr; rr$1 = $f.rr$1; t = $f.t; x$4 = $f.x$4; x$5 = $f.x$5; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
111840  		t = ptrType$101.nil;
111841  		err = $ifaceNil;
111842  		t = new transferWriter.ptr("", $ifaceNil, $ifaceNil, false, new $Int64(0, 0), false, sliceType$1.nil, false, false, false, $ifaceNil, false, $chanNil);
111843  		atLeastHTTP11 = false;
111844  		_ref = r;
111845  		/* */ if ($assertType(_ref, ptrType$7, true)[1]) { $s = 1; continue; }
111846  		/* */ if ($assertType(_ref, ptrType$17, true)[1]) { $s = 2; continue; }
111847  		/* */ $s = 3; continue;
111848  		/* if ($assertType(_ref, ptrType$7, true)[1]) { */ case 1:
111849  			rr = _ref.$val;
111850  			/* */ if (!((x$4 = rr.ContentLength, (x$4.$high === 0 && x$4.$low === 0))) && $interfaceIsEqual(rr.Body, $ifaceNil)) { $s = 4; continue; }
111851  			/* */ $s = 5; continue;
111852  			/* if (!((x$4 = rr.ContentLength, (x$4.$high === 0 && x$4.$low === 0))) && $interfaceIsEqual(rr.Body, $ifaceNil)) { */ case 4:
111853  				_tmp = ptrType$101.nil;
111854  				_r$1 = fmt.Errorf("http: Request.ContentLength=%d with nil Body", new sliceType([rr.ContentLength])); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
111855  				_tmp$1 = _r$1;
111856  				t = _tmp;
111857  				err = _tmp$1;
111858  				$s = -1; return [t, err];
111859  			/* } */ case 5:
111860  			t.Method = valueOrDefault(rr.Method, "GET");
111861  			t.Close = rr.Close;
111862  			t.TransferEncoding = rr.TransferEncoding;
111863  			t.Header = rr.Header;
111864  			t.Trailer = rr.Trailer;
111865  			t.Body = rr.Body;
111866  			t.BodyCloser = rr.Body;
111867  			t.ContentLength = rr.outgoingLength();
111868  			if (!((x$5 = t.ContentLength, (x$5.$high < 0 || (x$5.$high === 0 && x$5.$low < 0))) && (t.TransferEncoding.$length === 0))) { _v = false; $s = 9; continue s; }
111869  			_r$2 = t.shouldSendChunkedRequestBody(); /* */ $s = 10; case 10: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
111870  			_v = _r$2; case 9:
111871  			/* */ if (_v) { $s = 7; continue; }
111872  			/* */ $s = 8; continue;
111873  			/* if (_v) { */ case 7:
111874  				t.TransferEncoding = new sliceType$1(["chunked"]);
111875  			/* } */ case 8:
111876  			atLeastHTTP11 = true;
111877  			$s = 3; continue;
111878  		/* } else if ($assertType(_ref, ptrType$17, true)[1]) { */ case 2:
111879  			rr$1 = _ref.$val;
111880  			t.IsResponse = true;
111881  			if (!(rr$1.Request === ptrType$7.nil)) {
111882  				t.Method = rr$1.Request.Method;
111883  			}
111884  			t.Body = rr$1.Body;
111885  			t.BodyCloser = rr$1.Body;
111886  			t.ContentLength = rr$1.ContentLength;
111887  			t.Close = rr$1.Close;
111888  			t.TransferEncoding = rr$1.TransferEncoding;
111889  			t.Header = rr$1.Header;
111890  			t.Trailer = rr$1.Trailer;
111891  			atLeastHTTP11 = rr$1.ProtoAtLeast(1, 1);
111892  			t.ResponseToHEAD = noResponseBodyExpected(t.Method);
111893  		/* } */ case 3:
111894  		if (t.ResponseToHEAD) {
111895  			t.Body = $ifaceNil;
111896  			if (chunked(t.TransferEncoding)) {
111897  				t.ContentLength = new $Int64(-1, 4294967295);
111898  			}
111899  		} else {
111900  			if (!atLeastHTTP11 || $interfaceIsEqual(t.Body, $ifaceNil)) {
111901  				t.TransferEncoding = sliceType$1.nil;
111902  			}
111903  			if (chunked(t.TransferEncoding)) {
111904  				t.ContentLength = new $Int64(-1, 4294967295);
111905  			} else if ($interfaceIsEqual(t.Body, $ifaceNil)) {
111906  				t.ContentLength = new $Int64(0, 0);
111907  			}
111908  		}
111909  		if (!chunked(t.TransferEncoding)) {
111910  			t.Trailer = false;
111911  		}
111912  		_tmp$2 = t;
111913  		_tmp$3 = $ifaceNil;
111914  		t = _tmp$2;
111915  		err = _tmp$3;
111916  		$s = -1; return [t, err];
111917  		/* */ } return; } if ($f === undefined) { $f = { $blk: newTransferWriter }; } $f._r$1 = _r$1; $f._r$2 = _r$2; $f._ref = _ref; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._v = _v; $f.atLeastHTTP11 = atLeastHTTP11; $f.err = err; $f.r = r; $f.rr = rr; $f.rr$1 = rr$1; $f.t = t; $f.x$4 = x$4; $f.x$5 = x$5; $f.$s = $s; $f.$r = $r; return $f;
111918  	};
111919  	transferWriter.ptr.prototype.shouldSendChunkedRequestBody = function() {
111920  		var t, x$4, $s, $r;
111921  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; t = $f.t; x$4 = $f.x$4; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
111922  		t = this;
111923  		if ((x$4 = t.ContentLength, (x$4.$high > 0 || (x$4.$high === 0 && x$4.$low >= 0))) || $interfaceIsEqual(t.Body, $ifaceNil)) {
111924  			$s = -1; return false;
111925  		}
111926  		/* */ if (requestMethodUsuallyLacksBody(t.Method)) { $s = 1; continue; }
111927  		/* */ $s = 2; continue;
111928  		/* if (requestMethodUsuallyLacksBody(t.Method)) { */ case 1:
111929  			$r = t.probeRequestBody(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
111930  			$s = -1; return !($interfaceIsEqual(t.Body, $ifaceNil));
111931  		/* } */ case 2:
111932  		$s = -1; return true;
111933  		/* */ } return; } if ($f === undefined) { $f = { $blk: transferWriter.ptr.prototype.shouldSendChunkedRequestBody }; } $f.t = t; $f.x$4 = x$4; $f.$s = $s; $f.$r = $r; return $f;
111934  	};
111935  	transferWriter.prototype.shouldSendChunkedRequestBody = function() { return this.$val.shouldSendChunkedRequestBody(); };
111936  	transferWriter.ptr.prototype.probeRequestBody = function() {
111937  		var _r$1, _selection, rres, t, timer, x$4, x$5, x$6, $s, $r;
111938  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; _selection = $f._selection; rres = $f.rres; t = $f.t; timer = $f.timer; x$4 = $f.x$4; x$5 = $f.x$5; x$6 = $f.x$6; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
111939  		t = [t];
111940  		t[0] = this;
111941  		t[0].ByteReadCh = new $Chan(readResult, 1);
111942  		$go((function(t) { return function $b(body$1) {
111943  			var _r$1, _tuple, body$1, buf, rres, $s, $r;
111944  			/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; _tuple = $f._tuple; body$1 = $f.body$1; buf = $f.buf; rres = $f.rres; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
111945  			buf = arrayType$5.zero();
111946  			rres = new readResult.ptr(0, $ifaceNil, 0);
111947  			_r$1 = body$1.Read(new sliceType$3(buf)); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
111948  			_tuple = _r$1;
111949  			rres.n = _tuple[0];
111950  			rres.err = _tuple[1];
111951  			if (rres.n === 1) {
111952  				rres.b = buf[0];
111953  			}
111954  			$r = $send(t[0].ByteReadCh, $clone($clone(rres, readResult), readResult)); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
111955  			$s = -1; return;
111956  			/* */ } return; } if ($f === undefined) { $f = { $blk: $b }; } $f._r$1 = _r$1; $f._tuple = _tuple; $f.body$1 = body$1; $f.buf = buf; $f.rres = rres; $f.$s = $s; $f.$r = $r; return $f;
111957  		}; })(t), [t[0].Body]);
111958  		timer = time.NewTimer(new time.Duration(0, 200000000));
111959  		_r$1 = $select([[t[0].ByteReadCh], [timer.C]]); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
111960  		_selection = _r$1;
111961  		if (_selection[0] === 0) {
111962  			rres = $clone(_selection[1][0], readResult);
111963  			timer.Stop();
111964  			if ((rres.n === 0) && $interfaceIsEqual(rres.err, io.EOF)) {
111965  				t[0].Body = $ifaceNil;
111966  				t[0].ContentLength = new $Int64(0, 0);
111967  			} else if (rres.n === 1) {
111968  				if (!($interfaceIsEqual(rres.err, $ifaceNil))) {
111969  					t[0].Body = io.MultiReader(new sliceType$23([new byteReader.ptr(rres.b, false), (x$4 = new errorReader.ptr(rres.err), new x$4.constructor.elem(x$4))]));
111970  				} else {
111971  					t[0].Body = io.MultiReader(new sliceType$23([new byteReader.ptr(rres.b, false), t[0].Body]));
111972  				}
111973  			} else if (!($interfaceIsEqual(rres.err, $ifaceNil))) {
111974  				t[0].Body = (x$5 = new errorReader.ptr(rres.err), new x$5.constructor.elem(x$5));
111975  			}
111976  		} else if (_selection[0] === 1) {
111977  			t[0].Body = io.MultiReader(new sliceType$23([(x$6 = new finishAsyncByteRead.ptr(t[0]), new x$6.constructor.elem(x$6)), t[0].Body]));
111978  			t[0].FlushHeaders = true;
111979  		}
111980  		$s = -1; return;
111981  		/* */ } return; } if ($f === undefined) { $f = { $blk: transferWriter.ptr.prototype.probeRequestBody }; } $f._r$1 = _r$1; $f._selection = _selection; $f.rres = rres; $f.t = t; $f.timer = timer; $f.x$4 = x$4; $f.x$5 = x$5; $f.x$6 = x$6; $f.$s = $s; $f.$r = $r; return $f;
111982  	};
111983  	transferWriter.prototype.probeRequestBody = function() { return this.$val.probeRequestBody(); };
111984  	noResponseBodyExpected = function(requestMethod) {
111985  		var requestMethod;
111986  		return requestMethod === "HEAD";
111987  	};
111988  	transferWriter.ptr.prototype.shouldSendContentLength = function() {
111989  		var t, x$4, x$5, x$6;
111990  		t = this;
111991  		if (chunked(t.TransferEncoding)) {
111992  			return false;
111993  		}
111994  		if ((x$4 = t.ContentLength, (x$4.$high > 0 || (x$4.$high === 0 && x$4.$low > 0)))) {
111995  			return true;
111996  		}
111997  		if ((x$5 = t.ContentLength, (x$5.$high < 0 || (x$5.$high === 0 && x$5.$low < 0)))) {
111998  			return false;
111999  		}
112000  		if (t.Method === "POST" || t.Method === "PUT") {
112001  			return true;
112002  		}
112003  		if ((x$6 = t.ContentLength, (x$6.$high === 0 && x$6.$low === 0)) && isIdentity(t.TransferEncoding)) {
112004  			if (t.Method === "GET" || t.Method === "HEAD") {
112005  				return false;
112006  			}
112007  			return true;
112008  		}
112009  		return false;
112010  	};
112011  	transferWriter.prototype.shouldSendContentLength = function() { return this.$val.shouldSendContentLength(); };
112012  	transferWriter.ptr.prototype.WriteHeader = function(w) {
112013  		var _1, _entry, _i, _keys, _r$1, _r$2, _r$3, _r$4, _r$5, _ref, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, err, err$1, err$2, err$3, err$4, k, keys, t, w, $s, $r;
112014  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _entry = $f._entry; _i = $f._i; _keys = $f._keys; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _ref = $f._ref; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; _tuple$4 = $f._tuple$4; err = $f.err; err$1 = $f.err$1; err$2 = $f.err$2; err$3 = $f.err$3; err$4 = $f.err$4; k = $f.k; keys = $f.keys; t = $f.t; w = $f.w; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
112015  		t = this;
112016  		/* */ if (t.Close && !hasToken(new Header(t.Header).get("Connection"), "close")) { $s = 1; continue; }
112017  		/* */ $s = 2; continue;
112018  		/* if (t.Close && !hasToken(new Header(t.Header).get("Connection"), "close")) { */ case 1:
112019  			_r$1 = io.WriteString(w, "Connection: close\r\n"); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
112020  			_tuple = _r$1;
112021  			err = _tuple[1];
112022  			if (!($interfaceIsEqual(err, $ifaceNil))) {
112023  				$s = -1; return err;
112024  			}
112025  		/* } */ case 2:
112026  		/* */ if (t.shouldSendContentLength()) { $s = 4; continue; }
112027  		/* */ if (chunked(t.TransferEncoding)) { $s = 5; continue; }
112028  		/* */ $s = 6; continue;
112029  		/* if (t.shouldSendContentLength()) { */ case 4:
112030  			_r$2 = io.WriteString(w, "Content-Length: "); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
112031  			_tuple$1 = _r$2;
112032  			err$1 = _tuple$1[1];
112033  			if (!($interfaceIsEqual(err$1, $ifaceNil))) {
112034  				$s = -1; return err$1;
112035  			}
112036  			_r$3 = io.WriteString(w, strconv.FormatInt(t.ContentLength, 10) + "\r\n"); /* */ $s = 8; case 8: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
112037  			_tuple$2 = _r$3;
112038  			err$2 = _tuple$2[1];
112039  			if (!($interfaceIsEqual(err$2, $ifaceNil))) {
112040  				$s = -1; return err$2;
112041  			}
112042  			$s = 6; continue;
112043  		/* } else if (chunked(t.TransferEncoding)) { */ case 5:
112044  			_r$4 = io.WriteString(w, "Transfer-Encoding: chunked\r\n"); /* */ $s = 9; case 9: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
112045  			_tuple$3 = _r$4;
112046  			err$3 = _tuple$3[1];
112047  			if (!($interfaceIsEqual(err$3, $ifaceNil))) {
112048  				$s = -1; return err$3;
112049  			}
112050  		/* } */ case 6:
112051  		/* */ if (!(t.Trailer === false)) { $s = 10; continue; }
112052  		/* */ $s = 11; continue;
112053  		/* if (!(t.Trailer === false)) { */ case 10:
112054  			keys = $makeSlice(sliceType$1, 0, $keys(t.Trailer).length);
112055  			_ref = t.Trailer;
112056  			_i = 0;
112057  			_keys = $keys(_ref);
112058  			while (true) {
112059  				if (!(_i < _keys.length)) { break; }
112060  				_entry = _ref[_keys[_i]];
112061  				if (_entry === undefined) {
112062  					_i++;
112063  					continue;
112064  				}
112065  				k = _entry.k;
112066  				k = CanonicalHeaderKey(k);
112067  				_1 = k;
112068  				if (_1 === ("Transfer-Encoding") || _1 === ("Trailer") || _1 === ("Content-Length")) {
112069  					$s = -1; return new badStringError.ptr("invalid Trailer key", k);
112070  				}
112071  				keys = $append(keys, k);
112072  				_i++;
112073  			}
112074  			/* */ if (keys.$length > 0) { $s = 12; continue; }
112075  			/* */ $s = 13; continue;
112076  			/* if (keys.$length > 0) { */ case 12:
112077  				$r = sort.Strings(keys); /* */ $s = 14; case 14: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
112078  				_r$5 = io.WriteString(w, "Trailer: " + strings.Join(keys, ",") + "\r\n"); /* */ $s = 15; case 15: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
112079  				_tuple$4 = _r$5;
112080  				err$4 = _tuple$4[1];
112081  				if (!($interfaceIsEqual(err$4, $ifaceNil))) {
112082  					$s = -1; return err$4;
112083  				}
112084  			/* } */ case 13:
112085  		/* } */ case 11:
112086  		$s = -1; return $ifaceNil;
112087  		/* */ } return; } if ($f === undefined) { $f = { $blk: transferWriter.ptr.prototype.WriteHeader }; } $f._1 = _1; $f._entry = _entry; $f._i = _i; $f._keys = _keys; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._ref = _ref; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f._tuple$4 = _tuple$4; $f.err = err; $f.err$1 = err$1; $f.err$2 = err$2; $f.err$3 = err$3; $f.err$4 = err$4; $f.k = k; $f.keys = keys; $f.t = t; $f.w = w; $f.$s = $s; $f.$r = $r; return $f;
112088  	};
112089  	transferWriter.prototype.WriteHeader = function(w) { return this.$val.WriteHeader(w); };
112090  	transferWriter.ptr.prototype.WriteBody = function(w) {
112091  		var _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, _tuple$5, body$1, bw, cw, err, err$1, err$2, ncopy, nextra, ok, t, w, x$4, x$5, x$6, x$7, $s, $r;
112092  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _r$8 = $f._r$8; _r$9 = $f._r$9; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; _tuple$4 = $f._tuple$4; _tuple$5 = $f._tuple$5; body$1 = $f.body$1; bw = $f.bw; cw = $f.cw; err = $f.err; err$1 = $f.err$1; err$2 = $f.err$2; ncopy = $f.ncopy; nextra = $f.nextra; ok = $f.ok; t = $f.t; w = $f.w; x$4 = $f.x$4; x$5 = $f.x$5; x$6 = $f.x$6; x$7 = $f.x$7; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
112093  		t = this;
112094  		err = $ifaceNil;
112095  		ncopy = new $Int64(0, 0);
112096  		/* */ if (!($interfaceIsEqual(t.Body, $ifaceNil))) { $s = 1; continue; }
112097  		/* */ $s = 2; continue;
112098  		/* if (!($interfaceIsEqual(t.Body, $ifaceNil))) { */ case 1:
112099  			body$1 = new transferBodyReader.ptr(t);
112100  			/* */ if (chunked(t.TransferEncoding)) { $s = 3; continue; }
112101  			/* */ if ((x$4 = t.ContentLength, (x$4.$high === -1 && x$4.$low === 4294967295))) { $s = 4; continue; }
112102  			/* */ $s = 5; continue;
112103  			/* if (chunked(t.TransferEncoding)) { */ case 3:
112104  				_tuple = $assertType(w, ptrType$10, true);
112105  				bw = _tuple[0];
112106  				ok = _tuple[1];
112107  				if (ok && !t.IsResponse) {
112108  					w = new internal.FlushAfterChunkWriter.ptr(bw);
112109  				}
112110  				cw = internal.NewChunkedWriter(w);
112111  				_r$1 = io.Copy(cw, new body$1.constructor.elem(body$1)); /* */ $s = 7; case 7: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
112112  				_tuple$1 = _r$1;
112113  				err = _tuple$1[1];
112114  				/* */ if ($interfaceIsEqual(err, $ifaceNil)) { $s = 8; continue; }
112115  				/* */ $s = 9; continue;
112116  				/* if ($interfaceIsEqual(err, $ifaceNil)) { */ case 8:
112117  					_r$2 = cw.Close(); /* */ $s = 10; case 10: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
112118  					err = _r$2;
112119  				/* } */ case 9:
112120  				$s = 6; continue;
112121  			/* } else if ((x$4 = t.ContentLength, (x$4.$high === -1 && x$4.$low === 4294967295))) { */ case 4:
112122  				_r$3 = io.Copy(w, new body$1.constructor.elem(body$1)); /* */ $s = 11; case 11: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
112123  				_tuple$2 = _r$3;
112124  				ncopy = _tuple$2[0];
112125  				err = _tuple$2[1];
112126  				$s = 6; continue;
112127  			/* } else { */ case 5:
112128  				_r$4 = io.Copy(w, io.LimitReader(new body$1.constructor.elem(body$1), t.ContentLength)); /* */ $s = 12; case 12: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
112129  				_tuple$3 = _r$4;
112130  				ncopy = _tuple$3[0];
112131  				err = _tuple$3[1];
112132  				if (!($interfaceIsEqual(err, $ifaceNil))) {
112133  					$s = -1; return err;
112134  				}
112135  				nextra = new $Int64(0, 0);
112136  				_r$5 = io.Copy(ioutil.Discard, new body$1.constructor.elem(body$1)); /* */ $s = 13; case 13: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
112137  				_tuple$4 = _r$5;
112138  				nextra = _tuple$4[0];
112139  				err = _tuple$4[1];
112140  				ncopy = (x$5 = nextra, new $Int64(ncopy.$high + x$5.$high, ncopy.$low + x$5.$low));
112141  			/* } */ case 6:
112142  			if (!($interfaceIsEqual(err, $ifaceNil))) {
112143  				$s = -1; return err;
112144  			}
112145  		/* } */ case 2:
112146  		/* */ if (!($interfaceIsEqual(t.BodyCloser, $ifaceNil))) { $s = 14; continue; }
112147  		/* */ $s = 15; continue;
112148  		/* if (!($interfaceIsEqual(t.BodyCloser, $ifaceNil))) { */ case 14:
112149  			_r$6 = t.BodyCloser.Close(); /* */ $s = 16; case 16: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
112150  			err$1 = _r$6;
112151  			if (!($interfaceIsEqual(err$1, $ifaceNil))) {
112152  				$s = -1; return err$1;
112153  			}
112154  		/* } */ case 15:
112155  		/* */ if (!t.ResponseToHEAD && !((x$6 = t.ContentLength, (x$6.$high === -1 && x$6.$low === 4294967295))) && !((x$7 = t.ContentLength, (x$7.$high === ncopy.$high && x$7.$low === ncopy.$low)))) { $s = 17; continue; }
112156  		/* */ $s = 18; continue;
112157  		/* if (!t.ResponseToHEAD && !((x$6 = t.ContentLength, (x$6.$high === -1 && x$6.$low === 4294967295))) && !((x$7 = t.ContentLength, (x$7.$high === ncopy.$high && x$7.$low === ncopy.$low)))) { */ case 17:
112158  			_r$7 = fmt.Errorf("http: ContentLength=%d with Body length %d", new sliceType([t.ContentLength, ncopy])); /* */ $s = 19; case 19: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
112159  			$s = -1; return _r$7;
112160  		/* } */ case 18:
112161  		/* */ if (chunked(t.TransferEncoding)) { $s = 20; continue; }
112162  		/* */ $s = 21; continue;
112163  		/* if (chunked(t.TransferEncoding)) { */ case 20:
112164  			/* */ if (!(t.Trailer === false)) { $s = 22; continue; }
112165  			/* */ $s = 23; continue;
112166  			/* if (!(t.Trailer === false)) { */ case 22:
112167  				_r$8 = new Header(t.Trailer).Write(w); /* */ $s = 24; case 24: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
112168  				err$2 = _r$8;
112169  				if (!($interfaceIsEqual(err$2, $ifaceNil))) {
112170  					$s = -1; return err$2;
112171  				}
112172  			/* } */ case 23:
112173  			_r$9 = io.WriteString(w, "\r\n"); /* */ $s = 25; case 25: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
112174  			_tuple$5 = _r$9;
112175  			err = _tuple$5[1];
112176  		/* } */ case 21:
112177  		$s = -1; return err;
112178  		/* */ } return; } if ($f === undefined) { $f = { $blk: transferWriter.ptr.prototype.WriteBody }; } $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._r$8 = _r$8; $f._r$9 = _r$9; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f._tuple$4 = _tuple$4; $f._tuple$5 = _tuple$5; $f.body$1 = body$1; $f.bw = bw; $f.cw = cw; $f.err = err; $f.err$1 = err$1; $f.err$2 = err$2; $f.ncopy = ncopy; $f.nextra = nextra; $f.ok = ok; $f.t = t; $f.w = w; $f.x$4 = x$4; $f.x$5 = x$5; $f.x$6 = x$6; $f.x$7 = x$7; $f.$s = $s; $f.$r = $r; return $f;
112179  	};
112180  	transferWriter.prototype.WriteBody = function(w) { return this.$val.WriteBody(w); };
112181  	transferReader.ptr.prototype.protoAtLeast = function(m, n) {
112182  		var m, n, t;
112183  		t = this;
112184  		return t.ProtoMajor > m || ((t.ProtoMajor === m) && t.ProtoMinor >= n);
112185  	};
112186  	transferReader.prototype.protoAtLeast = function(m, n) { return this.$val.protoAtLeast(m, n); };
112187  	bodyAllowedForStatus = function(status) {
112188  		var status;
112189  		if (status >= 100 && status <= 199) {
112190  			return false;
112191  		} else if ((status === 204)) {
112192  			return false;
112193  		} else if ((status === 304)) {
112194  			return false;
112195  		}
112196  		return true;
112197  	};
112198  	suppressedHeaders = function(status) {
112199  		var status;
112200  		if ((status === 304)) {
112201  			return suppressedHeaders304;
112202  		} else if (!bodyAllowedForStatus(status)) {
112203  			return suppressedHeadersNoBody;
112204  		}
112205  		return sliceType$1.nil;
112206  	};
112207  	readTransfer = function(msg, r) {
112208  		var _r$1, _r$2, _r$3, _r$4, _ref, _ref$1, _ref$2, _tmp, _tmp$1, _tuple, _tuple$1, _tuple$2, err, err$1, isResponse, msg, n, r, realLength, rr, rr$1, rr$2, rr$3, rr$4, t, $s, $r;
112209  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _ref = $f._ref; _ref$1 = $f._ref$1; _ref$2 = $f._ref$2; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; err = $f.err; err$1 = $f.err$1; isResponse = $f.isResponse; msg = $f.msg; n = $f.n; r = $f.r; realLength = $f.realLength; rr = $f.rr; rr$1 = $f.rr$1; rr$2 = $f.rr$2; rr$3 = $f.rr$3; rr$4 = $f.rr$4; t = $f.t; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
112210  		err = $ifaceNil;
112211  		t = new transferReader.ptr(false, 0, "GET", 0, 0, $ifaceNil, new $Int64(0, 0), sliceType$1.nil, false, false);
112212  		isResponse = false;
112213  		_ref = msg;
112214  		if ($assertType(_ref, ptrType$17, true)[1]) {
112215  			rr = _ref.$val;
112216  			t.Header = rr.Header;
112217  			t.StatusCode = rr.StatusCode;
112218  			t.ProtoMajor = rr.ProtoMajor;
112219  			t.ProtoMinor = rr.ProtoMinor;
112220  			t.Close = shouldClose(t.ProtoMajor, t.ProtoMinor, t.Header, true);
112221  			isResponse = true;
112222  			if (!(rr.Request === ptrType$7.nil)) {
112223  				t.RequestMethod = rr.Request.Method;
112224  			}
112225  		} else if ($assertType(_ref, ptrType$7, true)[1]) {
112226  			rr$1 = _ref.$val;
112227  			t.Header = rr$1.Header;
112228  			t.RequestMethod = rr$1.Method;
112229  			t.ProtoMajor = rr$1.ProtoMajor;
112230  			t.ProtoMinor = rr$1.ProtoMinor;
112231  			t.StatusCode = 200;
112232  			t.Close = rr$1.Close;
112233  		} else {
112234  			rr$2 = _ref;
112235  			$panic(new $String("unexpected type"));
112236  		}
112237  		if ((t.ProtoMajor === 0) && (t.ProtoMinor === 0)) {
112238  			_tmp = 1;
112239  			_tmp$1 = 1;
112240  			t.ProtoMajor = _tmp;
112241  			t.ProtoMinor = _tmp$1;
112242  		}
112243  		_r$1 = t.fixTransferEncoding(); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
112244  		err = _r$1;
112245  		if (!($interfaceIsEqual(err, $ifaceNil))) {
112246  			err = err;
112247  			$s = -1; return err;
112248  		}
112249  		_r$2 = fixLength(isResponse, t.StatusCode, t.RequestMethod, t.Header, t.TransferEncoding); /* */ $s = 2; case 2: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
112250  		_tuple = _r$2;
112251  		realLength = _tuple[0];
112252  		err = _tuple[1];
112253  		if (!($interfaceIsEqual(err, $ifaceNil))) {
112254  			err = err;
112255  			$s = -1; return err;
112256  		}
112257  		/* */ if (isResponse && t.RequestMethod === "HEAD") { $s = 3; continue; }
112258  		/* */ $s = 4; continue;
112259  		/* if (isResponse && t.RequestMethod === "HEAD") { */ case 3:
112260  			_r$3 = parseContentLength(new Header(t.Header).get("Content-Length")); /* */ $s = 6; case 6: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
112261  			_tuple$1 = _r$3;
112262  			n = _tuple$1[0];
112263  			err$1 = _tuple$1[1];
112264  			if (!($interfaceIsEqual(err$1, $ifaceNil))) {
112265  				err = err$1;
112266  				$s = -1; return err;
112267  			} else {
112268  				t.ContentLength = n;
112269  			}
112270  			$s = 5; continue;
112271  		/* } else { */ case 4:
112272  			t.ContentLength = realLength;
112273  		/* } */ case 5:
112274  		_r$4 = fixTrailer(t.Header, t.TransferEncoding); /* */ $s = 7; case 7: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
112275  		_tuple$2 = _r$4;
112276  		t.Trailer = _tuple$2[0];
112277  		err = _tuple$2[1];
112278  		if (!($interfaceIsEqual(err, $ifaceNil))) {
112279  			err = err;
112280  			$s = -1; return err;
112281  		}
112282  		_ref$1 = msg;
112283  		if ($assertType(_ref$1, ptrType$17, true)[1]) {
112284  			if ((realLength.$high === -1 && realLength.$low === 4294967295) && !chunked(t.TransferEncoding) && bodyAllowedForStatus(t.StatusCode)) {
112285  				t.Close = true;
112286  			}
112287  		}
112288  		if (chunked(t.TransferEncoding)) {
112289  			if (noResponseBodyExpected(t.RequestMethod) || !bodyAllowedForStatus(t.StatusCode)) {
112290  				t.Body = new $pkg.NoBody.constructor.elem($pkg.NoBody);
112291  			} else {
112292  				t.Body = new body.ptr(internal.NewChunkedReader(r), msg, r, t.Close, false, new sync.Mutex.ptr(0, 0), false, false, false, $throwNilPointerError);
112293  			}
112294  		} else if ((realLength.$high === 0 && realLength.$low === 0)) {
112295  			t.Body = new $pkg.NoBody.constructor.elem($pkg.NoBody);
112296  		} else if ((realLength.$high > 0 || (realLength.$high === 0 && realLength.$low > 0))) {
112297  			t.Body = new body.ptr(io.LimitReader(r, realLength), $ifaceNil, ptrType$72.nil, t.Close, false, new sync.Mutex.ptr(0, 0), false, false, false, $throwNilPointerError);
112298  		} else if (t.Close) {
112299  			t.Body = new body.ptr(r, $ifaceNil, ptrType$72.nil, t.Close, false, new sync.Mutex.ptr(0, 0), false, false, false, $throwNilPointerError);
112300  		} else {
112301  			t.Body = new $pkg.NoBody.constructor.elem($pkg.NoBody);
112302  		}
112303  		_ref$2 = msg;
112304  		if ($assertType(_ref$2, ptrType$7, true)[1]) {
112305  			rr$3 = _ref$2.$val;
112306  			rr$3.Body = t.Body;
112307  			rr$3.ContentLength = t.ContentLength;
112308  			rr$3.TransferEncoding = t.TransferEncoding;
112309  			rr$3.Close = t.Close;
112310  			rr$3.Trailer = t.Trailer;
112311  		} else if ($assertType(_ref$2, ptrType$17, true)[1]) {
112312  			rr$4 = _ref$2.$val;
112313  			rr$4.Body = t.Body;
112314  			rr$4.ContentLength = t.ContentLength;
112315  			rr$4.TransferEncoding = t.TransferEncoding;
112316  			rr$4.Close = t.Close;
112317  			rr$4.Trailer = t.Trailer;
112318  		}
112319  		err = $ifaceNil;
112320  		$s = -1; return err;
112321  		/* */ } return; } if ($f === undefined) { $f = { $blk: readTransfer }; } $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._ref = _ref; $f._ref$1 = _ref$1; $f._ref$2 = _ref$2; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f.err = err; $f.err$1 = err$1; $f.isResponse = isResponse; $f.msg = msg; $f.n = n; $f.r = r; $f.realLength = realLength; $f.rr = rr; $f.rr$1 = rr$1; $f.rr$2 = rr$2; $f.rr$3 = rr$3; $f.rr$4 = rr$4; $f.t = t; $f.$s = $s; $f.$r = $r; return $f;
112322  	};
112323  	chunked = function(te) {
112324  		var te;
112325  		return te.$length > 0 && (0 >= te.$length ? ($throwRuntimeError("index out of range"), undefined) : te.$array[te.$offset + 0]) === "chunked";
112326  	};
112327  	isIdentity = function(te) {
112328  		var te;
112329  		return (te.$length === 1) && (0 >= te.$length ? ($throwRuntimeError("index out of range"), undefined) : te.$array[te.$offset + 0]) === "identity";
112330  	};
112331  	transferReader.ptr.prototype.fixTransferEncoding = function() {
112332  		var _entry, _i, _r$1, _r$2, _ref, _tuple, encoding, encodings, present, raw, t, te, x$4, $s, $r;
112333  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _entry = $f._entry; _i = $f._i; _r$1 = $f._r$1; _r$2 = $f._r$2; _ref = $f._ref; _tuple = $f._tuple; encoding = $f.encoding; encodings = $f.encodings; present = $f.present; raw = $f.raw; t = $f.t; te = $f.te; x$4 = $f.x$4; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
112334  		t = this;
112335  		_tuple = (_entry = t.Header[$String.keyFor("Transfer-Encoding")], _entry !== undefined ? [_entry.v, true] : [sliceType$1.nil, false]);
112336  		raw = _tuple[0];
112337  		present = _tuple[1];
112338  		if (!present) {
112339  			$s = -1; return $ifaceNil;
112340  		}
112341  		delete t.Header[$String.keyFor("Transfer-Encoding")];
112342  		if (!t.protoAtLeast(1, 1)) {
112343  			$s = -1; return $ifaceNil;
112344  		}
112345  		encodings = strings.Split((0 >= raw.$length ? ($throwRuntimeError("index out of range"), undefined) : raw.$array[raw.$offset + 0]), ",");
112346  		te = $makeSlice(sliceType$1, 0, encodings.$length);
112347  		_ref = encodings;
112348  		_i = 0;
112349  		/* while (true) { */ case 1:
112350  			/* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; }
112351  			encoding = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
112352  			_r$1 = strings.TrimSpace(encoding); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
112353  			_r$2 = strings.ToLower(_r$1); /* */ $s = 4; case 4: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
112354  			encoding = _r$2;
112355  			if (encoding === "identity") {
112356  				/* break; */ $s = 2; continue;
112357  			}
112358  			if (!(encoding === "chunked")) {
112359  				$s = -1; return new badStringError.ptr("unsupported transfer encoding", encoding);
112360  			}
112361  			te = $subslice(te, 0, (te.$length + 1 >> 0));
112362  			(x$4 = te.$length - 1 >> 0, ((x$4 < 0 || x$4 >= te.$length) ? ($throwRuntimeError("index out of range"), undefined) : te.$array[te.$offset + x$4] = encoding));
112363  			_i++;
112364  		/* } */ $s = 1; continue; case 2:
112365  		if (te.$length > 1) {
112366  			$s = -1; return new badStringError.ptr("too many transfer encodings", strings.Join(te, ","));
112367  		}
112368  		if (te.$length > 0) {
112369  			delete t.Header[$String.keyFor("Content-Length")];
112370  			t.TransferEncoding = te;
112371  			$s = -1; return $ifaceNil;
112372  		}
112373  		$s = -1; return $ifaceNil;
112374  		/* */ } return; } if ($f === undefined) { $f = { $blk: transferReader.ptr.prototype.fixTransferEncoding }; } $f._entry = _entry; $f._i = _i; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._ref = _ref; $f._tuple = _tuple; $f.encoding = encoding; $f.encodings = encodings; $f.present = present; $f.raw = raw; $f.t = t; $f.te = te; $f.x$4 = x$4; $f.$s = $s; $f.$r = $r; return $f;
112375  	};
112376  	transferReader.prototype.fixTransferEncoding = function() { return this.$val.fixTransferEncoding(); };
112377  	fixLength = function(isResponse, status, requestMethod, header, te) {
112378  		var _1, _entry, _entry$1, _i, _q, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _ref, _tuple, cl, contentLens, ct, err, first, header, isRequest, isResponse, n, requestMethod, status, te, $s, $r;
112379  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _1 = $f._1; _entry = $f._entry; _entry$1 = $f._entry$1; _i = $f._i; _q = $f._q; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _ref = $f._ref; _tuple = $f._tuple; cl = $f.cl; contentLens = $f.contentLens; ct = $f.ct; err = $f.err; first = $f.first; header = $f.header; isRequest = $f.isRequest; isResponse = $f.isResponse; n = $f.n; requestMethod = $f.requestMethod; status = $f.status; te = $f.te; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
112380  		isRequest = !isResponse;
112381  		contentLens = (_entry = header[$String.keyFor("Content-Length")], _entry !== undefined ? _entry.v : sliceType$1.nil);
112382  		/* */ if (contentLens.$length > 1) { $s = 1; continue; }
112383  		/* */ $s = 2; continue;
112384  		/* if (contentLens.$length > 1) { */ case 1:
112385  			_r$1 = strings.TrimSpace((0 >= contentLens.$length ? ($throwRuntimeError("index out of range"), undefined) : contentLens.$array[contentLens.$offset + 0])); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
112386  			first = _r$1;
112387  			_ref = $subslice(contentLens, 1);
112388  			_i = 0;
112389  			/* while (true) { */ case 4:
112390  				/* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 5; continue; }
112391  				ct = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
112392  				_r$2 = strings.TrimSpace(ct); /* */ $s = 8; case 8: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
112393  				/* */ if (!(first === _r$2)) { $s = 6; continue; }
112394  				/* */ $s = 7; continue;
112395  				/* if (!(first === _r$2)) { */ case 6:
112396  					_r$3 = fmt.Errorf("http: message cannot contain multiple Content-Length headers; got %q", new sliceType([contentLens])); /* */ $s = 9; case 9: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
112397  					$s = -1; return [new $Int64(0, 0), _r$3];
112398  				/* } */ case 7:
112399  				_i++;
112400  			/* } */ $s = 4; continue; case 5:
112401  			new Header(header).Del("Content-Length");
112402  			new Header(header).Add("Content-Length", first);
112403  			contentLens = (_entry$1 = header[$String.keyFor("Content-Length")], _entry$1 !== undefined ? _entry$1.v : sliceType$1.nil);
112404  		/* } */ case 2:
112405  		/* */ if (noResponseBodyExpected(requestMethod)) { $s = 10; continue; }
112406  		/* */ $s = 11; continue;
112407  		/* if (noResponseBodyExpected(requestMethod)) { */ case 10:
112408  			/* */ if (isRequest && contentLens.$length > 0 && !((contentLens.$length === 1) && (0 >= contentLens.$length ? ($throwRuntimeError("index out of range"), undefined) : contentLens.$array[contentLens.$offset + 0]) === "0")) { $s = 12; continue; }
112409  			/* */ $s = 13; continue;
112410  			/* if (isRequest && contentLens.$length > 0 && !((contentLens.$length === 1) && (0 >= contentLens.$length ? ($throwRuntimeError("index out of range"), undefined) : contentLens.$array[contentLens.$offset + 0]) === "0")) { */ case 12:
112411  				_r$4 = fmt.Errorf("http: method cannot contain a Content-Length; got %q", new sliceType([contentLens])); /* */ $s = 14; case 14: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
112412  				$s = -1; return [new $Int64(0, 0), _r$4];
112413  			/* } */ case 13:
112414  			$s = -1; return [new $Int64(0, 0), $ifaceNil];
112415  		/* } */ case 11:
112416  		if ((_q = status / 100, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")) === 1) {
112417  			$s = -1; return [new $Int64(0, 0), $ifaceNil];
112418  		}
112419  		_1 = status;
112420  		if ((_1 === (204)) || (_1 === (304))) {
112421  			$s = -1; return [new $Int64(0, 0), $ifaceNil];
112422  		}
112423  		if (chunked(te)) {
112424  			$s = -1; return [new $Int64(-1, 4294967295), $ifaceNil];
112425  		}
112426  		cl = "";
112427  		/* */ if (contentLens.$length === 1) { $s = 15; continue; }
112428  		/* */ $s = 16; continue;
112429  		/* if (contentLens.$length === 1) { */ case 15:
112430  			_r$5 = strings.TrimSpace((0 >= contentLens.$length ? ($throwRuntimeError("index out of range"), undefined) : contentLens.$array[contentLens.$offset + 0])); /* */ $s = 17; case 17: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
112431  			cl = _r$5;
112432  		/* } */ case 16:
112433  		/* */ if (!(cl === "")) { $s = 18; continue; }
112434  		/* */ $s = 19; continue;
112435  		/* if (!(cl === "")) { */ case 18:
112436  			_r$6 = parseContentLength(cl); /* */ $s = 20; case 20: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
112437  			_tuple = _r$6;
112438  			n = _tuple[0];
112439  			err = _tuple[1];
112440  			if (!($interfaceIsEqual(err, $ifaceNil))) {
112441  				$s = -1; return [new $Int64(-1, 4294967295), err];
112442  			}
112443  			$s = -1; return [n, $ifaceNil];
112444  		/* } */ case 19:
112445  		new Header(header).Del("Content-Length");
112446  		if (isRequest) {
112447  			$s = -1; return [new $Int64(0, 0), $ifaceNil];
112448  		}
112449  		$s = -1; return [new $Int64(-1, 4294967295), $ifaceNil];
112450  		/* */ } return; } if ($f === undefined) { $f = { $blk: fixLength }; } $f._1 = _1; $f._entry = _entry; $f._entry$1 = _entry$1; $f._i = _i; $f._q = _q; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._ref = _ref; $f._tuple = _tuple; $f.cl = cl; $f.contentLens = contentLens; $f.ct = ct; $f.err = err; $f.first = first; $f.header = header; $f.isRequest = isRequest; $f.isResponse = isResponse; $f.n = n; $f.requestMethod = requestMethod; $f.status = status; $f.te = te; $f.$s = $s; $f.$r = $r; return $f;
112451  	};
112452  	shouldClose = function(major, minor, header, removeCloseHeader) {
112453  		var _entry, conv, hasClose, header, major, minor, removeCloseHeader;
112454  		if (major < 1) {
112455  			return true;
112456  		}
112457  		conv = (_entry = header[$String.keyFor("Connection")], _entry !== undefined ? _entry.v : sliceType$1.nil);
112458  		hasClose = httplex.HeaderValuesContainsToken(conv, "close");
112459  		if ((major === 1) && (minor === 0)) {
112460  			return hasClose || !httplex.HeaderValuesContainsToken(conv, "keep-alive");
112461  		}
112462  		if (hasClose && removeCloseHeader) {
112463  			new Header(header).Del("Connection");
112464  		}
112465  		return hasClose;
112466  	};
112467  	fixTrailer = function(header, te) {
112468  		var _entry, _i, _ref, _tuple, err, header, ok, te, trailer, v, vv, $s, $r;
112469  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _entry = $f._entry; _i = $f._i; _ref = $f._ref; _tuple = $f._tuple; err = $f.err; header = $f.header; ok = $f.ok; te = $f.te; trailer = $f.trailer; v = $f.v; vv = $f.vv; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
112470  		err = [err];
112471  		trailer = [trailer];
112472  		_tuple = (_entry = header[$String.keyFor("Trailer")], _entry !== undefined ? [_entry.v, true] : [sliceType$1.nil, false]);
112473  		vv = _tuple[0];
112474  		ok = _tuple[1];
112475  		if (!ok) {
112476  			$s = -1; return [false, $ifaceNil];
112477  		}
112478  		new Header(header).Del("Trailer");
112479  		trailer[0] = {};
112480  		err[0] = $ifaceNil;
112481  		_ref = vv;
112482  		_i = 0;
112483  		/* while (true) { */ case 1:
112484  			/* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; }
112485  			v = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
112486  			$r = foreachHeaderElement(v, (function(err, trailer) { return function(key) {
112487  				var _1, _key, key;
112488  				key = CanonicalHeaderKey(key);
112489  				_1 = key;
112490  				if (_1 === ("Transfer-Encoding") || _1 === ("Trailer") || _1 === ("Content-Length")) {
112491  					if ($interfaceIsEqual(err[0], $ifaceNil)) {
112492  						err[0] = new badStringError.ptr("bad trailer key", key);
112493  						return;
112494  					}
112495  				}
112496  				_key = key; (trailer[0] || $throwRuntimeError("assignment to entry in nil map"))[$String.keyFor(_key)] = { k: _key, v: sliceType$1.nil };
112497  			}; })(err, trailer)); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
112498  			_i++;
112499  		/* } */ $s = 1; continue; case 2:
112500  		if (!($interfaceIsEqual(err[0], $ifaceNil))) {
112501  			$s = -1; return [false, err[0]];
112502  		}
112503  		if ($keys(trailer[0]).length === 0) {
112504  			$s = -1; return [false, $ifaceNil];
112505  		}
112506  		if (!chunked(te)) {
112507  			$s = -1; return [false, $pkg.ErrUnexpectedTrailer];
112508  		}
112509  		$s = -1; return [trailer[0], $ifaceNil];
112510  		/* */ } return; } if ($f === undefined) { $f = { $blk: fixTrailer }; } $f._entry = _entry; $f._i = _i; $f._ref = _ref; $f._tuple = _tuple; $f.err = err; $f.header = header; $f.ok = ok; $f.te = te; $f.trailer = trailer; $f.v = v; $f.vv = vv; $f.$s = $s; $f.$r = $r; return $f;
112511  	};
112512  	body.ptr.prototype.Read = function(p) {
112513  		var _r$1, _tmp, _tmp$1, _tuple, b, err, n, p, $s, $deferred, $r;
112514  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tuple = $f._tuple; b = $f.b; err = $f.err; n = $f.n; p = $f.p; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
112515  		n = 0;
112516  		err = $ifaceNil;
112517  		b = this;
112518  		$r = b.mu.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
112519  		$deferred.push([$methodVal(b.mu, "Unlock"), []]);
112520  		if (b.closed) {
112521  			_tmp = 0;
112522  			_tmp$1 = $pkg.ErrBodyReadAfterClose;
112523  			n = _tmp;
112524  			err = _tmp$1;
112525  			$s = -1; return [n, err];
112526  		}
112527  		_r$1 = b.readLocked(p); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
112528  		_tuple = _r$1;
112529  		n = _tuple[0];
112530  		err = _tuple[1];
112531  		$s = -1; return [n, err];
112532  		/* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if (!$curGoroutine.asleep) { return  [n, err]; } if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: body.ptr.prototype.Read }; } $f._r$1 = _r$1; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tuple = _tuple; $f.b = b; $f.err = err; $f.n = n; $f.p = p; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
112533  	};
112534  	body.prototype.Read = function(p) { return this.$val.Read(p); };
112535  	body.ptr.prototype.readLocked = function(p) {
112536  		var _r$1, _r$2, _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, _tuple$1, _tuple$2, b, e, err, lr, lr$1, n, ok, ok$1, p, x$4, x$5, $s, $r;
112537  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; _r$2 = $f._r$2; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; b = $f.b; e = $f.e; err = $f.err; lr = $f.lr; lr$1 = $f.lr$1; n = $f.n; ok = $f.ok; ok$1 = $f.ok$1; p = $f.p; x$4 = $f.x$4; x$5 = $f.x$5; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
112538  		n = 0;
112539  		err = $ifaceNil;
112540  		b = this;
112541  		if (b.sawEOF) {
112542  			_tmp = 0;
112543  			_tmp$1 = io.EOF;
112544  			n = _tmp;
112545  			err = _tmp$1;
112546  			$s = -1; return [n, err];
112547  		}
112548  		_r$1 = b.src.Read(p); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
112549  		_tuple = _r$1;
112550  		n = _tuple[0];
112551  		err = _tuple[1];
112552  		/* */ if ($interfaceIsEqual(err, io.EOF)) { $s = 2; continue; }
112553  		/* */ $s = 3; continue;
112554  		/* if ($interfaceIsEqual(err, io.EOF)) { */ case 2:
112555  			b.sawEOF = true;
112556  			/* */ if (!($interfaceIsEqual(b.hdr, $ifaceNil))) { $s = 4; continue; }
112557  			/* */ $s = 5; continue;
112558  			/* if (!($interfaceIsEqual(b.hdr, $ifaceNil))) { */ case 4:
112559  				_r$2 = b.readTrailer(); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
112560  				e = _r$2;
112561  				if (!($interfaceIsEqual(e, $ifaceNil))) {
112562  					err = e;
112563  					b.sawEOF = false;
112564  					b.closed = true;
112565  				}
112566  				b.hdr = $ifaceNil;
112567  				$s = 6; continue;
112568  			/* } else { */ case 5:
112569  				_tuple$1 = $assertType(b.src, ptrType$92, true);
112570  				lr = _tuple$1[0];
112571  				ok = _tuple$1[1];
112572  				if (ok && (x$4 = lr.N, (x$4.$high > 0 || (x$4.$high === 0 && x$4.$low > 0)))) {
112573  					err = io.ErrUnexpectedEOF;
112574  				}
112575  			/* } */ case 6:
112576  		/* } */ case 3:
112577  		if ($interfaceIsEqual(err, $ifaceNil) && n > 0) {
112578  			_tuple$2 = $assertType(b.src, ptrType$92, true);
112579  			lr$1 = _tuple$2[0];
112580  			ok$1 = _tuple$2[1];
112581  			if (ok$1 && (x$5 = lr$1.N, (x$5.$high === 0 && x$5.$low === 0))) {
112582  				err = io.EOF;
112583  				b.sawEOF = true;
112584  			}
112585  		}
112586  		/* */ if (b.sawEOF && !(b.onHitEOF === $throwNilPointerError)) { $s = 8; continue; }
112587  		/* */ $s = 9; continue;
112588  		/* if (b.sawEOF && !(b.onHitEOF === $throwNilPointerError)) { */ case 8:
112589  			$r = b.onHitEOF(); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
112590  		/* } */ case 9:
112591  		_tmp$2 = n;
112592  		_tmp$3 = err;
112593  		n = _tmp$2;
112594  		err = _tmp$3;
112595  		$s = -1; return [n, err];
112596  		/* */ } return; } if ($f === undefined) { $f = { $blk: body.ptr.prototype.readLocked }; } $f._r$1 = _r$1; $f._r$2 = _r$2; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f.b = b; $f.e = e; $f.err = err; $f.lr = lr; $f.lr$1 = lr$1; $f.n = n; $f.ok = ok; $f.ok$1 = ok$1; $f.p = p; $f.x$4 = x$4; $f.x$5 = x$5; $f.$s = $s; $f.$r = $r; return $f;
112597  	};
112598  	body.prototype.readLocked = function(p) { return this.$val.readLocked(p); };
112599  	seeUpcomingDoubleCRLF = function(r) {
112600  		var _r$1, _tuple, buf, err, peekSize, r, $s, $r;
112601  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; _tuple = $f._tuple; buf = $f.buf; err = $f.err; peekSize = $f.peekSize; r = $f.r; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
112602  		peekSize = 4;
112603  		/* while (true) { */ case 1:
112604  			_r$1 = r.Peek(peekSize); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
112605  			_tuple = _r$1;
112606  			buf = _tuple[0];
112607  			err = _tuple[1];
112608  			if (bytes.HasSuffix(buf, doubleCRLF)) {
112609  				$s = -1; return true;
112610  			}
112611  			if (!($interfaceIsEqual(err, $ifaceNil))) {
112612  				/* break; */ $s = 2; continue;
112613  			}
112614  			peekSize = peekSize + (1) >> 0;
112615  		/* } */ $s = 1; continue; case 2:
112616  		$s = -1; return false;
112617  		/* */ } return; } if ($f === undefined) { $f = { $blk: seeUpcomingDoubleCRLF }; } $f._r$1 = _r$1; $f._tuple = _tuple; $f.buf = buf; $f.err = err; $f.peekSize = peekSize; $f.r = r; $f.$s = $s; $f.$r = $r; return $f;
112618  	};
112619  	body.ptr.prototype.readTrailer = function() {
112620  		var _r$1, _r$2, _r$3, _r$4, _ref, _tuple, _tuple$1, b, buf, err, hdr, rr, rr$1, $s, $r;
112621  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _ref = $f._ref; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; b = $f.b; buf = $f.buf; err = $f.err; hdr = $f.hdr; rr = $f.rr; rr$1 = $f.rr$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
112622  		b = this;
112623  		_r$1 = b.r.Peek(2); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
112624  		_tuple = _r$1;
112625  		buf = _tuple[0];
112626  		err = _tuple[1];
112627  		/* */ if (bytes.Equal(buf, singleCRLF)) { $s = 2; continue; }
112628  		/* */ $s = 3; continue;
112629  		/* if (bytes.Equal(buf, singleCRLF)) { */ case 2:
112630  			_r$2 = b.r.Discard(2); /* */ $s = 4; case 4: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
112631  			_r$2;
112632  			$s = -1; return $ifaceNil;
112633  		/* } */ case 3:
112634  		if (buf.$length < 2) {
112635  			$s = -1; return errTrailerEOF;
112636  		}
112637  		if (!($interfaceIsEqual(err, $ifaceNil))) {
112638  			$s = -1; return err;
112639  		}
112640  		_r$3 = seeUpcomingDoubleCRLF(b.r); /* */ $s = 7; case 7: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
112641  		/* */ if (!_r$3) { $s = 5; continue; }
112642  		/* */ $s = 6; continue;
112643  		/* if (!_r$3) { */ case 5:
112644  			$s = -1; return errors.New("http: suspiciously long trailer after chunked body");
112645  		/* } */ case 6:
112646  		_r$4 = textproto.NewReader(b.r).ReadMIMEHeader(); /* */ $s = 8; case 8: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
112647  		_tuple$1 = _r$4;
112648  		hdr = _tuple$1[0];
112649  		err = _tuple$1[1];
112650  		if (!($interfaceIsEqual(err, $ifaceNil))) {
112651  			if ($interfaceIsEqual(err, io.EOF)) {
112652  				$s = -1; return errTrailerEOF;
112653  			}
112654  			$s = -1; return err;
112655  		}
112656  		_ref = b.hdr;
112657  		if ($assertType(_ref, ptrType$7, true)[1]) {
112658  			rr = _ref.$val;
112659  			mergeSetHeader((rr.$ptr_Trailer || (rr.$ptr_Trailer = new ptrType$73(function() { return this.$target.Trailer; }, function($v) { this.$target.Trailer = $v; }, rr))), (hdr));
112660  		} else if ($assertType(_ref, ptrType$17, true)[1]) {
112661  			rr$1 = _ref.$val;
112662  			mergeSetHeader((rr$1.$ptr_Trailer || (rr$1.$ptr_Trailer = new ptrType$73(function() { return this.$target.Trailer; }, function($v) { this.$target.Trailer = $v; }, rr$1))), (hdr));
112663  		}
112664  		$s = -1; return $ifaceNil;
112665  		/* */ } return; } if ($f === undefined) { $f = { $blk: body.ptr.prototype.readTrailer }; } $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._ref = _ref; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.b = b; $f.buf = buf; $f.err = err; $f.hdr = hdr; $f.rr = rr; $f.rr$1 = rr$1; $f.$s = $s; $f.$r = $r; return $f;
112666  	};
112667  	body.prototype.readTrailer = function() { return this.$val.readTrailer(); };
112668  	mergeSetHeader = function(dst, src) {
112669  		var _entry, _i, _key, _keys, _ref, dst, k, src, vv;
112670  		if (dst.$get() === false) {
112671  			dst.$set(src);
112672  			return;
112673  		}
112674  		_ref = src;
112675  		_i = 0;
112676  		_keys = $keys(_ref);
112677  		while (true) {
112678  			if (!(_i < _keys.length)) { break; }
112679  			_entry = _ref[_keys[_i]];
112680  			if (_entry === undefined) {
112681  				_i++;
112682  				continue;
112683  			}
112684  			k = _entry.k;
112685  			vv = _entry.v;
112686  			_key = k; (dst.$get() || $throwRuntimeError("assignment to entry in nil map"))[$String.keyFor(_key)] = { k: _key, v: vv };
112687  			_i++;
112688  		}
112689  	};
112690  	body.ptr.prototype.unreadDataSizeLocked = function() {
112691  		var _tuple, b, lr, ok;
112692  		b = this;
112693  		_tuple = $assertType(b.src, ptrType$92, true);
112694  		lr = _tuple[0];
112695  		ok = _tuple[1];
112696  		if (ok) {
112697  			return lr.N;
112698  		}
112699  		return new $Int64(-1, 4294967295);
112700  	};
112701  	body.prototype.unreadDataSizeLocked = function() { return this.$val.unreadDataSizeLocked(); };
112702  	body.ptr.prototype.Close = function() {
112703  		var _r$1, _r$2, _tuple, _tuple$1, _tuple$2, b, err, lr, n, ok, x$4, x$5, x$6, $s, $deferred, $r;
112704  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; _r$2 = $f._r$2; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; b = $f.b; err = $f.err; lr = $f.lr; n = $f.n; ok = $f.ok; x$4 = $f.x$4; x$5 = $f.x$5; x$6 = $f.x$6; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
112705  		b = this;
112706  		$r = b.mu.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
112707  		$deferred.push([$methodVal(b.mu, "Unlock"), []]);
112708  		if (b.closed) {
112709  			$s = -1; return $ifaceNil;
112710  		}
112711  		err = $ifaceNil;
112712  			/* */ if (b.sawEOF) { $s = 3; continue; }
112713  			/* */ if ($interfaceIsEqual(b.hdr, $ifaceNil) && b.closing) { $s = 4; continue; }
112714  			/* */ if (b.doEarlyClose) { $s = 5; continue; }
112715  			/* */ $s = 6; continue;
112716  			/* if (b.sawEOF) { */ case 3:
112717  				$s = 7; continue;
112718  			/* } else if ($interfaceIsEqual(b.hdr, $ifaceNil) && b.closing) { */ case 4:
112719  				$s = 7; continue;
112720  			/* } else if (b.doEarlyClose) { */ case 5:
112721  				_tuple = $assertType(b.src, ptrType$92, true);
112722  				lr = _tuple[0];
112723  				ok = _tuple[1];
112724  				/* */ if (ok && (x$4 = lr.N, (x$4.$high > 0 || (x$4.$high === 0 && x$4.$low > 262144)))) { $s = 8; continue; }
112725  				/* */ $s = 9; continue;
112726  				/* if (ok && (x$4 = lr.N, (x$4.$high > 0 || (x$4.$high === 0 && x$4.$low > 262144)))) { */ case 8:
112727  					b.earlyClose = true;
112728  					$s = 10; continue;
112729  				/* } else { */ case 9:
112730  					n = new $Int64(0, 0);
112731  					_r$1 = io.CopyN(ioutil.Discard, (x$5 = new bodyLocked.ptr(b), new x$5.constructor.elem(x$5)), new $Int64(0, 262144)); /* */ $s = 11; case 11: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
112732  					_tuple$1 = _r$1;
112733  					n = _tuple$1[0];
112734  					err = _tuple$1[1];
112735  					if ($interfaceIsEqual(err, io.EOF)) {
112736  						err = $ifaceNil;
112737  					}
112738  					if ((n.$high === 0 && n.$low === 262144)) {
112739  						b.earlyClose = true;
112740  					}
112741  				/* } */ case 10:
112742  				$s = 7; continue;
112743  			/* } else { */ case 6:
112744  				_r$2 = io.Copy(ioutil.Discard, (x$6 = new bodyLocked.ptr(b), new x$6.constructor.elem(x$6))); /* */ $s = 12; case 12: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
112745  				_tuple$2 = _r$2;
112746  				err = _tuple$2[1];
112747  			/* } */ case 7:
112748  		case 2:
112749  		b.closed = true;
112750  		$s = -1; return err;
112751  		/* */ } return; } } catch(err) { $err = err; $s = -1; return $ifaceNil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: body.ptr.prototype.Close }; } $f._r$1 = _r$1; $f._r$2 = _r$2; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f.b = b; $f.err = err; $f.lr = lr; $f.n = n; $f.ok = ok; $f.x$4 = x$4; $f.x$5 = x$5; $f.x$6 = x$6; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
112752  	};
112753  	body.prototype.Close = function() { return this.$val.Close(); };
112754  	body.ptr.prototype.didEarlyClose = function() {
112755  		var b, $s, $deferred, $r;
112756  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; b = $f.b; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
112757  		b = this;
112758  		$r = b.mu.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
112759  		$deferred.push([$methodVal(b.mu, "Unlock"), []]);
112760  		$s = -1; return b.earlyClose;
112761  		/* */ } return; } } catch(err) { $err = err; $s = -1; return false; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: body.ptr.prototype.didEarlyClose }; } $f.b = b; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
112762  	};
112763  	body.prototype.didEarlyClose = function() { return this.$val.didEarlyClose(); };
112764  	body.ptr.prototype.bodyRemains = function() {
112765  		var b, $s, $deferred, $r;
112766  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; b = $f.b; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
112767  		b = this;
112768  		$r = b.mu.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
112769  		$deferred.push([$methodVal(b.mu, "Unlock"), []]);
112770  		$s = -1; return !b.sawEOF;
112771  		/* */ } return; } } catch(err) { $err = err; $s = -1; return false; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: body.ptr.prototype.bodyRemains }; } $f.b = b; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
112772  	};
112773  	body.prototype.bodyRemains = function() { return this.$val.bodyRemains(); };
112774  	body.ptr.prototype.registerOnHitEOF = function(fn) {
112775  		var b, fn, $s, $deferred, $r;
112776  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; b = $f.b; fn = $f.fn; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
112777  		b = this;
112778  		$r = b.mu.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
112779  		$deferred.push([$methodVal(b.mu, "Unlock"), []]);
112780  		b.onHitEOF = fn;
112781  		$s = -1; return;
112782  		/* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: body.ptr.prototype.registerOnHitEOF }; } $f.b = b; $f.fn = fn; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
112783  	};
112784  	body.prototype.registerOnHitEOF = function(fn) { return this.$val.registerOnHitEOF(fn); };
112785  	bodyLocked.ptr.prototype.Read = function(p) {
112786  		var _r$1, _tmp, _tmp$1, _tuple, bl, err, n, p, $s, $r;
112787  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tuple = $f._tuple; bl = $f.bl; err = $f.err; n = $f.n; p = $f.p; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
112788  		n = 0;
112789  		err = $ifaceNil;
112790  		bl = this;
112791  		if (bl.b.closed) {
112792  			_tmp = 0;
112793  			_tmp$1 = $pkg.ErrBodyReadAfterClose;
112794  			n = _tmp;
112795  			err = _tmp$1;
112796  			$s = -1; return [n, err];
112797  		}
112798  		_r$1 = bl.b.readLocked(p); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
112799  		_tuple = _r$1;
112800  		n = _tuple[0];
112801  		err = _tuple[1];
112802  		$s = -1; return [n, err];
112803  		/* */ } return; } if ($f === undefined) { $f = { $blk: bodyLocked.ptr.prototype.Read }; } $f._r$1 = _r$1; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tuple = _tuple; $f.bl = bl; $f.err = err; $f.n = n; $f.p = p; $f.$s = $s; $f.$r = $r; return $f;
112804  	};
112805  	bodyLocked.prototype.Read = function(p) { return this.$val.Read(p); };
112806  	parseContentLength = function(cl) {
112807  		var _r$1, _tuple, cl, err, n, $s, $r;
112808  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; _tuple = $f._tuple; cl = $f.cl; err = $f.err; n = $f.n; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
112809  		_r$1 = strings.TrimSpace(cl); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
112810  		cl = _r$1;
112811  		if (cl === "") {
112812  			$s = -1; return [new $Int64(-1, 4294967295), $ifaceNil];
112813  		}
112814  		_tuple = strconv.ParseInt(cl, 10, 64);
112815  		n = _tuple[0];
112816  		err = _tuple[1];
112817  		if (!($interfaceIsEqual(err, $ifaceNil)) || (n.$high < 0 || (n.$high === 0 && n.$low < 0))) {
112818  			$s = -1; return [new $Int64(0, 0), new badStringError.ptr("bad Content-Length", cl)];
112819  		}
112820  		$s = -1; return [n, $ifaceNil];
112821  		/* */ } return; } if ($f === undefined) { $f = { $blk: parseContentLength }; } $f._r$1 = _r$1; $f._tuple = _tuple; $f.cl = cl; $f.err = err; $f.n = n; $f.$s = $s; $f.$r = $r; return $f;
112822  	};
112823  	finishAsyncByteRead.ptr.prototype.Read = function(p) {
112824  		var _r$1, _tmp, _tmp$1, err, fr, n, p, rres, $s, $r;
112825  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; err = $f.err; fr = $f.fr; n = $f.n; p = $f.p; rres = $f.rres; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
112826  		n = 0;
112827  		err = $ifaceNil;
112828  		fr = this;
112829  		if (p.$length === 0) {
112830  			$s = -1; return [n, err];
112831  		}
112832  		_r$1 = $recv(fr.tw.ByteReadCh); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
112833  		rres = $clone(_r$1[0], readResult);
112834  		_tmp = rres.n;
112835  		_tmp$1 = rres.err;
112836  		n = _tmp;
112837  		err = _tmp$1;
112838  		if (n === 1) {
112839  			(0 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 0] = rres.b);
112840  		}
112841  		$s = -1; return [n, err];
112842  		/* */ } return; } if ($f === undefined) { $f = { $blk: finishAsyncByteRead.ptr.prototype.Read }; } $f._r$1 = _r$1; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f.err = err; $f.fr = fr; $f.n = n; $f.p = p; $f.rres = rres; $f.$s = $s; $f.$r = $r; return $f;
112843  	};
112844  	finishAsyncByteRead.prototype.Read = function(p) { return this.$val.Read(p); };
112845  	Transport.ptr.prototype.onceSetNextProtoDefaults = function() {
112846  		var _r$1, _r$2, _r$3, _tuple, err, limit1, t, t2, $s, $r;
112847  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _tuple = $f._tuple; err = $f.err; limit1 = $f.limit1; t = $f.t; t2 = $f.t2; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
112848  		t = this;
112849  		_r$1 = os.Getenv("GODEBUG"); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
112850  		_r$2 = strings.Contains(_r$1, "http2client=0"); /* */ $s = 4; case 4: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
112851  		/* */ if (_r$2) { $s = 1; continue; }
112852  		/* */ $s = 2; continue;
112853  		/* if (_r$2) { */ case 1:
112854  			$s = -1; return;
112855  		/* } */ case 2:
112856  		if (!(t.TLSNextProto === false)) {
112857  			$s = -1; return;
112858  		}
112859  		if (!(t.TLSClientConfig === ptrType$14.nil) || !(t.Dial === $throwNilPointerError) || !(t.DialTLS === $throwNilPointerError)) {
112860  			$s = -1; return;
112861  		}
112862  		_r$3 = http2configureTransport(t); /* */ $s = 5; case 5: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
112863  		_tuple = _r$3;
112864  		t2 = _tuple[0];
112865  		err = _tuple[1];
112866  		/* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 6; continue; }
112867  		/* */ $s = 7; continue;
112868  		/* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 6:
112869  			$r = log.Printf("Error enabling Transport HTTP/2 support: %v", new sliceType([err])); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
112870  			$s = -1; return;
112871  		/* } */ case 7:
112872  		t.h2transport = t2;
112873  		limit1 = t.MaxResponseHeaderBytes;
112874  		if (!((limit1.$high === 0 && limit1.$low === 0)) && (t2.MaxHeaderListSize === 0)) {
112875  			if ((limit1.$high > 0 || (limit1.$high === 0 && limit1.$low >= 4294967295))) {
112876  				t2.MaxHeaderListSize = 4294967295;
112877  			} else {
112878  				t2.MaxHeaderListSize = ((limit1.$low >>> 0));
112879  			}
112880  		}
112881  		$s = -1; return;
112882  		/* */ } return; } if ($f === undefined) { $f = { $blk: Transport.ptr.prototype.onceSetNextProtoDefaults }; } $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._tuple = _tuple; $f.err = err; $f.limit1 = limit1; $f.t = t; $f.t2 = t2; $f.$s = $s; $f.$r = $r; return $f;
112883  	};
112884  	Transport.prototype.onceSetNextProtoDefaults = function() { return this.$val.onceSetNextProtoDefaults(); };
112885  	transportRequest.ptr.prototype.extraHeaders = function() {
112886  		var tr;
112887  		tr = this;
112888  		if (tr.extra === false) {
112889  			tr.extra = {};
112890  		}
112891  		return tr.extra;
112892  	};
112893  	transportRequest.prototype.extraHeaders = function() { return this.$val.extraHeaders(); };
112894  	transportRequest.ptr.prototype.setError = function(err) {
112895  		var err, tr, $s, $r;
112896  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; err = $f.err; tr = $f.tr; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
112897  		tr = this;
112898  		$r = tr.mu.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
112899  		if ($interfaceIsEqual(tr.err, $ifaceNil)) {
112900  			tr.err = err;
112901  		}
112902  		$r = tr.mu.Unlock(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
112903  		$s = -1; return;
112904  		/* */ } return; } if ($f === undefined) { $f = { $blk: transportRequest.ptr.prototype.setError }; } $f.err = err; $f.tr = tr; $f.$s = $s; $f.$r = $r; return $f;
112905  	};
112906  	transportRequest.prototype.setError = function(err) { return this.$val.setError(err); };
112907  	Transport.ptr.prototype.RoundTrip = function(req) {
112908  		var _entry, _entry$1, _i, _i$1, _keys, _r$1, _r$10, _r$11, _r$12, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, _ref$1, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, _tuple$5, _tuple$6, _tuple$7, _v, altProto, altRT, cm, ctx, e, err, err$1, err$2, isHTTP, k, newReq, ok, pconn, req, resp, resp$1, scheme, t, trace, treq, v, vv, $s, $r;
112909  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _entry = $f._entry; _entry$1 = $f._entry$1; _i = $f._i; _i$1 = $f._i$1; _keys = $f._keys; _r$1 = $f._r$1; _r$10 = $f._r$10; _r$11 = $f._r$11; _r$12 = $f._r$12; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _r$8 = $f._r$8; _r$9 = $f._r$9; _ref = $f._ref; _ref$1 = $f._ref$1; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; _tuple$4 = $f._tuple$4; _tuple$5 = $f._tuple$5; _tuple$6 = $f._tuple$6; _tuple$7 = $f._tuple$7; _v = $f._v; altProto = $f.altProto; altRT = $f.altRT; cm = $f.cm; ctx = $f.ctx; e = $f.e; err = $f.err; err$1 = $f.err$1; err$2 = $f.err$2; isHTTP = $f.isHTTP; k = $f.k; newReq = $f.newReq; ok = $f.ok; pconn = $f.pconn; req = $f.req; resp = $f.resp; resp$1 = $f.resp$1; scheme = $f.scheme; t = $f.t; trace = $f.trace; treq = $f.treq; v = $f.v; vv = $f.vv; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
112910  		t = this;
112911  		$r = t.nextProtoOnce.Do($methodVal(t, "onceSetNextProtoDefaults")); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
112912  		ctx = req.Context();
112913  		_r$1 = httptrace.ContextClientTrace(ctx); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
112914  		trace = _r$1;
112915  		/* */ if (req.URL === ptrType$20.nil) { $s = 3; continue; }
112916  		/* */ $s = 4; continue;
112917  		/* if (req.URL === ptrType$20.nil) { */ case 3:
112918  			$r = req.closeBody(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
112919  			$s = -1; return [ptrType$17.nil, errors.New("http: nil Request.URL")];
112920  		/* } */ case 4:
112921  		/* */ if (req.Header === false) { $s = 6; continue; }
112922  		/* */ $s = 7; continue;
112923  		/* if (req.Header === false) { */ case 6:
112924  			$r = req.closeBody(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
112925  			$s = -1; return [ptrType$17.nil, errors.New("http: nil Request.Header")];
112926  		/* } */ case 7:
112927  		scheme = req.URL.Scheme;
112928  		isHTTP = scheme === "http" || scheme === "https";
112929  		/* */ if (isHTTP) { $s = 9; continue; }
112930  		/* */ $s = 10; continue;
112931  		/* if (isHTTP) { */ case 9:
112932  			_ref = req.Header;
112933  			_i = 0;
112934  			_keys = $keys(_ref);
112935  			/* while (true) { */ case 11:
112936  				/* if (!(_i < _keys.length)) { break; } */ if(!(_i < _keys.length)) { $s = 12; continue; }
112937  				_entry = _ref[_keys[_i]];
112938  				if (_entry === undefined) {
112939  					_i++;
112940  					/* continue; */ $s = 11; continue;
112941  				}
112942  				k = _entry.k;
112943  				vv = _entry.v;
112944  				/* */ if (!httplex.ValidHeaderFieldName(k)) { $s = 13; continue; }
112945  				/* */ $s = 14; continue;
112946  				/* if (!httplex.ValidHeaderFieldName(k)) { */ case 13:
112947  					_r$2 = fmt.Errorf("net/http: invalid header field name %q", new sliceType([new $String(k)])); /* */ $s = 15; case 15: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
112948  					$s = -1; return [ptrType$17.nil, _r$2];
112949  				/* } */ case 14:
112950  				_ref$1 = vv;
112951  				_i$1 = 0;
112952  				/* while (true) { */ case 16:
112953  					/* if (!(_i$1 < _ref$1.$length)) { break; } */ if(!(_i$1 < _ref$1.$length)) { $s = 17; continue; }
112954  					v = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]);
112955  					/* */ if (!httplex.ValidHeaderFieldValue(v)) { $s = 18; continue; }
112956  					/* */ $s = 19; continue;
112957  					/* if (!httplex.ValidHeaderFieldValue(v)) { */ case 18:
112958  						_r$3 = fmt.Errorf("net/http: invalid header field value %q for key %v", new sliceType([new $String(v), new $String(k)])); /* */ $s = 20; case 20: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
112959  						$s = -1; return [ptrType$17.nil, _r$3];
112960  					/* } */ case 19:
112961  					_i$1++;
112962  				/* } */ $s = 16; continue; case 17:
112963  				_i++;
112964  			/* } */ $s = 11; continue; case 12:
112965  		/* } */ case 10:
112966  		_tuple = $assertType(t.altProto.Load(), mapType$1, true);
112967  		altProto = _tuple[0];
112968  		altRT = (_entry$1 = altProto[$String.keyFor(scheme)], _entry$1 !== undefined ? _entry$1.v : $ifaceNil);
112969  		/* */ if (!($interfaceIsEqual(altRT, $ifaceNil))) { $s = 21; continue; }
112970  		/* */ $s = 22; continue;
112971  		/* if (!($interfaceIsEqual(altRT, $ifaceNil))) { */ case 21:
112972  			_r$4 = altRT.RoundTrip(req); /* */ $s = 23; case 23: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
112973  			_tuple$1 = _r$4;
112974  			resp = _tuple$1[0];
112975  			err = _tuple$1[1];
112976  			if (!($interfaceIsEqual(err, $pkg.ErrSkipAltProtocol))) {
112977  				$s = -1; return [resp, err];
112978  			}
112979  		/* } */ case 22:
112980  		/* */ if (!isHTTP) { $s = 24; continue; }
112981  		/* */ $s = 25; continue;
112982  		/* if (!isHTTP) { */ case 24:
112983  			$r = req.closeBody(); /* */ $s = 26; case 26: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
112984  			$s = -1; return [ptrType$17.nil, new badStringError.ptr("unsupported protocol scheme", scheme)];
112985  		/* } */ case 25:
112986  		if (!(!(req.Method === ""))) { _v = false; $s = 29; continue s; }
112987  		_r$5 = validMethod(req.Method); /* */ $s = 30; case 30: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
112988  		_v = !_r$5; case 29:
112989  		/* */ if (_v) { $s = 27; continue; }
112990  		/* */ $s = 28; continue;
112991  		/* if (_v) { */ case 27:
112992  			_r$6 = fmt.Errorf("net/http: invalid method %q", new sliceType([new $String(req.Method)])); /* */ $s = 31; case 31: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
112993  			$s = -1; return [ptrType$17.nil, _r$6];
112994  		/* } */ case 28:
112995  		/* */ if (req.URL.Host === "") { $s = 32; continue; }
112996  		/* */ $s = 33; continue;
112997  		/* if (req.URL.Host === "") { */ case 32:
112998  			$r = req.closeBody(); /* */ $s = 34; case 34: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
112999  			$s = -1; return [ptrType$17.nil, errors.New("http: no Host in request URL")];
113000  		/* } */ case 33:
113001  		/* while (true) { */ case 35:
113002  			newReq = [newReq];
113003  			treq = new transportRequest.ptr(req, false, trace, new sync.Mutex.ptr(0, 0), $ifaceNil);
113004  			_r$7 = t.connectMethodForRequest(treq); /* */ $s = 37; case 37: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
113005  			_tuple$2 = _r$7;
113006  			cm = $clone(_tuple$2[0], connectMethod);
113007  			err$1 = _tuple$2[1];
113008  			/* */ if (!($interfaceIsEqual(err$1, $ifaceNil))) { $s = 38; continue; }
113009  			/* */ $s = 39; continue;
113010  			/* if (!($interfaceIsEqual(err$1, $ifaceNil))) { */ case 38:
113011  				$r = req.closeBody(); /* */ $s = 40; case 40: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
113012  				$s = -1; return [ptrType$17.nil, err$1];
113013  			/* } */ case 39:
113014  			_r$8 = t.getConn(treq, $clone(cm, connectMethod)); /* */ $s = 41; case 41: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
113015  			_tuple$3 = _r$8;
113016  			pconn = _tuple$3[0];
113017  			err$1 = _tuple$3[1];
113018  			/* */ if (!($interfaceIsEqual(err$1, $ifaceNil))) { $s = 42; continue; }
113019  			/* */ $s = 43; continue;
113020  			/* if (!($interfaceIsEqual(err$1, $ifaceNil))) { */ case 42:
113021  				$r = t.setReqCanceler(req, $throwNilPointerError); /* */ $s = 44; case 44: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
113022  				$r = req.closeBody(); /* */ $s = 45; case 45: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
113023  				$s = -1; return [ptrType$17.nil, err$1];
113024  			/* } */ case 43:
113025  			resp$1 = ptrType$17.nil;
113026  			/* */ if (!($interfaceIsEqual(pconn.alt, $ifaceNil))) { $s = 46; continue; }
113027  			/* */ $s = 47; continue;
113028  			/* if (!($interfaceIsEqual(pconn.alt, $ifaceNil))) { */ case 46:
113029  				$r = t.setReqCanceler(req, $throwNilPointerError); /* */ $s = 49; case 49: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
113030  				_r$9 = pconn.alt.RoundTrip(req); /* */ $s = 50; case 50: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
113031  				_tuple$4 = _r$9;
113032  				resp$1 = _tuple$4[0];
113033  				err$1 = _tuple$4[1];
113034  				$s = 48; continue;
113035  			/* } else { */ case 47:
113036  				_r$10 = pconn.roundTrip(treq); /* */ $s = 51; case 51: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
113037  				_tuple$5 = _r$10;
113038  				resp$1 = _tuple$5[0];
113039  				err$1 = _tuple$5[1];
113040  			/* } */ case 48:
113041  			if ($interfaceIsEqual(err$1, $ifaceNil)) {
113042  				$s = -1; return [resp$1, $ifaceNil];
113043  			}
113044  			_r$11 = pconn.shouldRetryRequest(req, err$1); /* */ $s = 54; case 54: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; }
113045  			/* */ if (!_r$11) { $s = 52; continue; }
113046  			/* */ $s = 53; continue;
113047  			/* if (!_r$11) { */ case 52:
113048  				_tuple$6 = $assertType(err$1, transportReadFromServerError, true);
113049  				e = $clone(_tuple$6[0], transportReadFromServerError);
113050  				ok = _tuple$6[1];
113051  				if (ok) {
113052  					err$1 = e.err;
113053  				}
113054  				$s = -1; return [ptrType$17.nil, err$1];
113055  			/* } */ case 53:
113056  			$r = testHookRoundTripRetried(); /* */ $s = 55; case 55: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
113057  			/* */ if (!(req.GetBody === $throwNilPointerError) && $interfaceIsEqual(pconn.alt, $ifaceNil)) { $s = 56; continue; }
113058  			/* */ $s = 57; continue;
113059  			/* if (!(req.GetBody === $throwNilPointerError) && $interfaceIsEqual(pconn.alt, $ifaceNil)) { */ case 56:
113060  				newReq[0] = $clone(req, Request);
113061  				err$2 = $ifaceNil;
113062  				_r$12 = req.GetBody(); /* */ $s = 58; case 58: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; }
113063  				_tuple$7 = _r$12;
113064  				newReq[0].Body = _tuple$7[0];
113065  				err$2 = _tuple$7[1];
113066  				if (!($interfaceIsEqual(err$2, $ifaceNil))) {
113067  					$s = -1; return [ptrType$17.nil, err$2];
113068  				}
113069  				req = newReq[0];
113070  			/* } */ case 57:
113071  		/* } */ $s = 35; continue; case 36:
113072  		$s = -1; return [ptrType$17.nil, $ifaceNil];
113073  		/* */ } return; } if ($f === undefined) { $f = { $blk: Transport.ptr.prototype.RoundTrip }; } $f._entry = _entry; $f._entry$1 = _entry$1; $f._i = _i; $f._i$1 = _i$1; $f._keys = _keys; $f._r$1 = _r$1; $f._r$10 = _r$10; $f._r$11 = _r$11; $f._r$12 = _r$12; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._r$8 = _r$8; $f._r$9 = _r$9; $f._ref = _ref; $f._ref$1 = _ref$1; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f._tuple$4 = _tuple$4; $f._tuple$5 = _tuple$5; $f._tuple$6 = _tuple$6; $f._tuple$7 = _tuple$7; $f._v = _v; $f.altProto = altProto; $f.altRT = altRT; $f.cm = cm; $f.ctx = ctx; $f.e = e; $f.err = err; $f.err$1 = err$1; $f.err$2 = err$2; $f.isHTTP = isHTTP; $f.k = k; $f.newReq = newReq; $f.ok = ok; $f.pconn = pconn; $f.req = req; $f.resp = resp; $f.resp$1 = resp$1; $f.scheme = scheme; $f.t = t; $f.trace = trace; $f.treq = treq; $f.v = v; $f.vv = vv; $f.$s = $s; $f.$r = $r; return $f;
113074  	};
113075  	Transport.prototype.RoundTrip = function(req) { return this.$val.RoundTrip(req); };
113076  	persistConn.ptr.prototype.shouldRetryRequest = function(req, err) {
113077  		var _r$1, _tuple, _tuple$1, err, ok, ok$1, pc, req, x$4, $s, $r;
113078  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; err = $f.err; ok = $f.ok; ok$1 = $f.ok$1; pc = $f.pc; req = $f.req; x$4 = $f.x$4; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
113079  		pc = this;
113080  		if (http2isNoCachedConnError(err)) {
113081  			$s = -1; return true;
113082  		}
113083  		if ($interfaceIsEqual(err, errMissingHost)) {
113084  			$s = -1; return false;
113085  		}
113086  		_r$1 = pc.isReused(); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
113087  		/* */ if (!_r$1) { $s = 1; continue; }
113088  		/* */ $s = 2; continue;
113089  		/* if (!_r$1) { */ case 1:
113090  			$s = -1; return false;
113091  		/* } */ case 2:
113092  		_tuple = $assertType(err, nothingWrittenError, true);
113093  		ok = _tuple[1];
113094  		if (ok) {
113095  			$s = -1; return (x$4 = req.outgoingLength(), (x$4.$high === 0 && x$4.$low === 0)) || !(req.GetBody === $throwNilPointerError);
113096  		}
113097  		if (!req.isReplayable()) {
113098  			$s = -1; return false;
113099  		}
113100  		_tuple$1 = $assertType(err, transportReadFromServerError, true);
113101  		ok$1 = _tuple$1[1];
113102  		if (ok$1) {
113103  			$s = -1; return true;
113104  		}
113105  		if ($interfaceIsEqual(err, errServerClosedIdle)) {
113106  			$s = -1; return true;
113107  		}
113108  		$s = -1; return false;
113109  		/* */ } return; } if ($f === undefined) { $f = { $blk: persistConn.ptr.prototype.shouldRetryRequest }; } $f._r$1 = _r$1; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.err = err; $f.ok = ok; $f.ok$1 = ok$1; $f.pc = pc; $f.req = req; $f.x$4 = x$4; $f.$s = $s; $f.$r = $r; return $f;
113110  	};
113111  	persistConn.prototype.shouldRetryRequest = function(req, err) { return this.$val.shouldRetryRequest(req, err); };
113112  	Transport.ptr.prototype.RegisterProtocol = function(scheme, rt) {
113113  		var _entry, _entry$1, _i, _key, _key$1, _keys, _ref, _tuple, _tuple$1, exists, k, newMap, oldMap, rt, scheme, t, v, $s, $deferred, $r;
113114  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _entry = $f._entry; _entry$1 = $f._entry$1; _i = $f._i; _key = $f._key; _key$1 = $f._key$1; _keys = $f._keys; _ref = $f._ref; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; exists = $f.exists; k = $f.k; newMap = $f.newMap; oldMap = $f.oldMap; rt = $f.rt; scheme = $f.scheme; t = $f.t; v = $f.v; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
113115  		t = this;
113116  		$r = t.altMu.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
113117  		$deferred.push([$methodVal(t.altMu, "Unlock"), []]);
113118  		_tuple = $assertType(t.altProto.Load(), mapType$1, true);
113119  		oldMap = _tuple[0];
113120  		_tuple$1 = (_entry = oldMap[$String.keyFor(scheme)], _entry !== undefined ? [_entry.v, true] : [$ifaceNil, false]);
113121  		exists = _tuple$1[1];
113122  		if (exists) {
113123  			$panic(new $String("protocol " + scheme + " already registered"));
113124  		}
113125  		newMap = {};
113126  		_ref = oldMap;
113127  		_i = 0;
113128  		_keys = $keys(_ref);
113129  		while (true) {
113130  			if (!(_i < _keys.length)) { break; }
113131  			_entry$1 = _ref[_keys[_i]];
113132  			if (_entry$1 === undefined) {
113133  				_i++;
113134  				continue;
113135  			}
113136  			k = _entry$1.k;
113137  			v = _entry$1.v;
113138  			_key = k; (newMap || $throwRuntimeError("assignment to entry in nil map"))[$String.keyFor(_key)] = { k: _key, v: v };
113139  			_i++;
113140  		}
113141  		_key$1 = scheme; (newMap || $throwRuntimeError("assignment to entry in nil map"))[$String.keyFor(_key$1)] = { k: _key$1, v: rt };
113142  		t.altProto.Store(new mapType$1(newMap));
113143  		$s = -1; return;
113144  		/* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: Transport.ptr.prototype.RegisterProtocol }; } $f._entry = _entry; $f._entry$1 = _entry$1; $f._i = _i; $f._key = _key; $f._key$1 = _key$1; $f._keys = _keys; $f._ref = _ref; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.exists = exists; $f.k = k; $f.newMap = newMap; $f.oldMap = oldMap; $f.rt = rt; $f.scheme = scheme; $f.t = t; $f.v = v; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
113145  	};
113146  	Transport.prototype.RegisterProtocol = function(scheme, rt) { return this.$val.RegisterProtocol(scheme, rt); };
113147  	Transport.ptr.prototype.CloseIdleConnections = function() {
113148  		var _entry, _i, _i$1, _keys, _ref, _ref$1, conns, m, pconn, t, t2, $s, $r;
113149  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _entry = $f._entry; _i = $f._i; _i$1 = $f._i$1; _keys = $f._keys; _ref = $f._ref; _ref$1 = $f._ref$1; conns = $f.conns; m = $f.m; pconn = $f.pconn; t = $f.t; t2 = $f.t2; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
113150  		t = this;
113151  		$r = t.nextProtoOnce.Do($methodVal(t, "onceSetNextProtoDefaults")); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
113152  		$r = t.idleMu.Lock(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
113153  		m = t.idleConn;
113154  		t.idleConn = false;
113155  		t.idleConnCh = false;
113156  		t.wantIdle = true;
113157  		connLRU.copy(t.idleLRU, new connLRU.ptr(ptrType$13.nil, false));
113158  		$r = t.idleMu.Unlock(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
113159  		_ref = m;
113160  		_i = 0;
113161  		_keys = $keys(_ref);
113162  		/* while (true) { */ case 4:
113163  			/* if (!(_i < _keys.length)) { break; } */ if(!(_i < _keys.length)) { $s = 5; continue; }
113164  			_entry = _ref[_keys[_i]];
113165  			if (_entry === undefined) {
113166  				_i++;
113167  				/* continue; */ $s = 4; continue;
113168  			}
113169  			conns = _entry.v;
113170  			_ref$1 = conns;
113171  			_i$1 = 0;
113172  			/* while (true) { */ case 6:
113173  				/* if (!(_i$1 < _ref$1.$length)) { break; } */ if(!(_i$1 < _ref$1.$length)) { $s = 7; continue; }
113174  				pconn = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]);
113175  				$r = pconn.close(errCloseIdleConns); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
113176  				_i$1++;
113177  			/* } */ $s = 6; continue; case 7:
113178  			_i++;
113179  		/* } */ $s = 4; continue; case 5:
113180  		t2 = t.h2transport;
113181  		/* */ if (!(t2 === ptrType$15.nil)) { $s = 9; continue; }
113182  		/* */ $s = 10; continue;
113183  		/* if (!(t2 === ptrType$15.nil)) { */ case 9:
113184  			$r = t2.CloseIdleConnections(); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
113185  		/* } */ case 10:
113186  		$s = -1; return;
113187  		/* */ } return; } if ($f === undefined) { $f = { $blk: Transport.ptr.prototype.CloseIdleConnections }; } $f._entry = _entry; $f._i = _i; $f._i$1 = _i$1; $f._keys = _keys; $f._ref = _ref; $f._ref$1 = _ref$1; $f.conns = conns; $f.m = m; $f.pconn = pconn; $f.t = t; $f.t2 = t2; $f.$s = $s; $f.$r = $r; return $f;
113188  	};
113189  	Transport.prototype.CloseIdleConnections = function() { return this.$val.CloseIdleConnections(); };
113190  	Transport.ptr.prototype.CancelRequest = function(req) {
113191  		var req, t, $s, $r;
113192  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; req = $f.req; t = $f.t; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
113193  		t = this;
113194  		$r = t.cancelRequest(req, errRequestCanceled); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
113195  		$s = -1; return;
113196  		/* */ } return; } if ($f === undefined) { $f = { $blk: Transport.ptr.prototype.CancelRequest }; } $f.req = req; $f.t = t; $f.$s = $s; $f.$r = $r; return $f;
113197  	};
113198  	Transport.prototype.CancelRequest = function(req) { return this.$val.CancelRequest(req); };
113199  	Transport.ptr.prototype.cancelRequest = function(req, err) {
113200  		var _entry, cancel, err, req, t, $s, $r;
113201  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _entry = $f._entry; cancel = $f.cancel; err = $f.err; req = $f.req; t = $f.t; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
113202  		t = this;
113203  		$r = t.reqMu.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
113204  		cancel = (_entry = t.reqCanceler[ptrType$7.keyFor(req)], _entry !== undefined ? _entry.v : $throwNilPointerError);
113205  		delete t.reqCanceler[ptrType$7.keyFor(req)];
113206  		$r = t.reqMu.Unlock(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
113207  		/* */ if (!(cancel === $throwNilPointerError)) { $s = 3; continue; }
113208  		/* */ $s = 4; continue;
113209  		/* if (!(cancel === $throwNilPointerError)) { */ case 3:
113210  			$r = cancel(err); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
113211  		/* } */ case 4:
113212  		$s = -1; return;
113213  		/* */ } return; } if ($f === undefined) { $f = { $blk: Transport.ptr.prototype.cancelRequest }; } $f._entry = _entry; $f.cancel = cancel; $f.err = err; $f.req = req; $f.t = t; $f.$s = $s; $f.$r = $r; return $f;
113214  	};
113215  	Transport.prototype.cancelRequest = function(req, err) { return this.$val.cancelRequest(req, err); };
113216  	Transport.ptr.prototype.connectMethodForRequest = function(treq) {
113217  		var _r$1, _r$2, _r$3, _r$4, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tuple, cm, err, port, port$1, t, treq, $s, $r;
113218  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tmp$4 = $f._tmp$4; _tmp$5 = $f._tmp$5; _tuple = $f._tuple; cm = $f.cm; err = $f.err; port = $f.port; port$1 = $f.port$1; t = $f.t; treq = $f.treq; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
113219  		cm = new connectMethod.ptr(ptrType$20.nil, "", "");
113220  		err = $ifaceNil;
113221  		t = this;
113222  		port = treq.Request.URL.Port();
113223  		/* */ if (!validPort(port)) { $s = 1; continue; }
113224  		/* */ $s = 2; continue;
113225  		/* if (!validPort(port)) { */ case 1:
113226  			_tmp = $clone(cm, connectMethod);
113227  			_r$1 = fmt.Errorf("invalid URL port %q", new sliceType([new $String(port)])); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
113228  			_tmp$1 = _r$1;
113229  			connectMethod.copy(cm, _tmp);
113230  			err = _tmp$1;
113231  			$s = -1; return [cm, err];
113232  		/* } */ case 2:
113233  		cm.targetScheme = treq.Request.URL.Scheme;
113234  		_r$2 = canonicalAddr(treq.Request.URL); /* */ $s = 4; case 4: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
113235  		cm.targetAddr = _r$2;
113236  		/* */ if (!(t.Proxy === $throwNilPointerError)) { $s = 5; continue; }
113237  		/* */ $s = 6; continue;
113238  		/* if (!(t.Proxy === $throwNilPointerError)) { */ case 5:
113239  			_r$3 = t.Proxy(treq.Request); /* */ $s = 7; case 7: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
113240  			_tuple = _r$3;
113241  			cm.proxyURL = _tuple[0];
113242  			err = _tuple[1];
113243  			/* */ if ($interfaceIsEqual(err, $ifaceNil) && !(cm.proxyURL === ptrType$20.nil)) { $s = 8; continue; }
113244  			/* */ $s = 9; continue;
113245  			/* if ($interfaceIsEqual(err, $ifaceNil) && !(cm.proxyURL === ptrType$20.nil)) { */ case 8:
113246  				port$1 = cm.proxyURL.Port();
113247  				/* */ if (!validPort(port$1)) { $s = 10; continue; }
113248  				/* */ $s = 11; continue;
113249  				/* if (!validPort(port$1)) { */ case 10:
113250  					_tmp$2 = $clone(cm, connectMethod);
113251  					_r$4 = fmt.Errorf("invalid proxy URL port %q", new sliceType([new $String(port$1)])); /* */ $s = 12; case 12: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
113252  					_tmp$3 = _r$4;
113253  					connectMethod.copy(cm, _tmp$2);
113254  					err = _tmp$3;
113255  					$s = -1; return [cm, err];
113256  				/* } */ case 11:
113257  			/* } */ case 9:
113258  		/* } */ case 6:
113259  		_tmp$4 = $clone(cm, connectMethod);
113260  		_tmp$5 = err;
113261  		connectMethod.copy(cm, _tmp$4);
113262  		err = _tmp$5;
113263  		$s = -1; return [cm, err];
113264  		/* */ } return; } if ($f === undefined) { $f = { $blk: Transport.ptr.prototype.connectMethodForRequest }; } $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tmp$4 = _tmp$4; $f._tmp$5 = _tmp$5; $f._tuple = _tuple; $f.cm = cm; $f.err = err; $f.port = port; $f.port$1 = port$1; $f.t = t; $f.treq = treq; $f.$s = $s; $f.$r = $r; return $f;
113265  	};
113266  	Transport.prototype.connectMethodForRequest = function(treq) { return this.$val.connectMethodForRequest(treq); };
113267  	connectMethod.ptr.prototype.proxyAuth = function() {
113268  		var _tuple, cm, password, u, username;
113269  		cm = this;
113270  		if (cm.proxyURL === ptrType$20.nil) {
113271  			return "";
113272  		}
113273  		u = cm.proxyURL.User;
113274  		if (!(u === ptrType$19.nil)) {
113275  			username = u.Username();
113276  			_tuple = u.Password();
113277  			password = _tuple[0];
113278  			return "Basic " + basicAuth(username, password);
113279  		}
113280  		return "";
113281  	};
113282  	connectMethod.prototype.proxyAuth = function() { return this.$val.proxyAuth(); };
113283  	transportReadFromServerError.ptr.prototype.Error = function() {
113284  		var _r$1, e, $s, $r;
113285  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; e = $f.e; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
113286  		e = this;
113287  		_r$1 = fmt.Sprintf("net/http: Transport failed to read from server: %v", new sliceType([e.err])); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
113288  		$s = -1; return _r$1;
113289  		/* */ } return; } if ($f === undefined) { $f = { $blk: transportReadFromServerError.ptr.prototype.Error }; } $f._r$1 = _r$1; $f.e = e; $f.$s = $s; $f.$r = $r; return $f;
113290  	};
113291  	transportReadFromServerError.prototype.Error = function() { return this.$val.Error(); };
113292  	Transport.ptr.prototype.putOrCloseIdleConn = function(pconn) {
113293  		var _r$1, err, pconn, t, $s, $r;
113294  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; err = $f.err; pconn = $f.pconn; t = $f.t; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
113295  		t = this;
113296  		_r$1 = t.tryPutIdleConn(pconn); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
113297  		err = _r$1;
113298  		/* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 2; continue; }
113299  		/* */ $s = 3; continue;
113300  		/* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 2:
113301  			$r = pconn.close(err); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
113302  		/* } */ case 3:
113303  		$s = -1; return;
113304  		/* */ } return; } if ($f === undefined) { $f = { $blk: Transport.ptr.prototype.putOrCloseIdleConn }; } $f._r$1 = _r$1; $f.err = err; $f.pconn = pconn; $f.t = t; $f.$s = $s; $f.$r = $r; return $f;
113305  	};
113306  	Transport.prototype.putOrCloseIdleConn = function(pconn) { return this.$val.putOrCloseIdleConn(pconn); };
113307  	Transport.ptr.prototype.maxIdleConnsPerHost = function() {
113308  		var t, v;
113309  		t = this;
113310  		v = t.MaxIdleConnsPerHost;
113311  		if (!((v === 0))) {
113312  			return v;
113313  		}
113314  		return 2;
113315  	};
113316  	Transport.prototype.maxIdleConnsPerHost = function() { return this.$val.maxIdleConnsPerHost(); };
113317  	Transport.ptr.prototype.tryPutIdleConn = function(pconn) {
113318  		var _entry, _entry$1, _i, _key, _r$1, _ref, _selection, exist, idles, key, oldest, pconn, t, waitingDialer, x$4, $s, $deferred, $r;
113319  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _entry = $f._entry; _entry$1 = $f._entry$1; _i = $f._i; _key = $f._key; _r$1 = $f._r$1; _ref = $f._ref; _selection = $f._selection; exist = $f.exist; idles = $f.idles; key = $f.key; oldest = $f.oldest; pconn = $f.pconn; t = $f.t; waitingDialer = $f.waitingDialer; x$4 = $f.x$4; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
113320  		t = this;
113321  		if (t.DisableKeepAlives || t.MaxIdleConnsPerHost < 0) {
113322  			$s = -1; return errKeepAlivesDisabled;
113323  		}
113324  		_r$1 = pconn.isBroken(); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
113325  		/* */ if (_r$1) { $s = 1; continue; }
113326  		/* */ $s = 2; continue;
113327  		/* if (_r$1) { */ case 1:
113328  			$s = -1; return errConnBroken;
113329  		/* } */ case 2:
113330  		if (!($interfaceIsEqual(pconn.alt, $ifaceNil))) {
113331  			$s = -1; return errNotCachingH2Conn;
113332  		}
113333  		$r = pconn.markReused(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
113334  		key = $clone(pconn.cacheKey, connectMethodKey);
113335  		$r = t.idleMu.Lock(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
113336  		$deferred.push([$methodVal(t.idleMu, "Unlock"), []]);
113337  		waitingDialer = (_entry = t.idleConnCh[connectMethodKey.keyFor(key)], _entry !== undefined ? _entry.v : $chanNil);
113338  		_selection = $select([[waitingDialer, pconn], []]);
113339  		if (_selection[0] === 0) {
113340  			$s = -1; return $ifaceNil;
113341  		} else if (_selection[0] === 1) {
113342  			if (!(waitingDialer === $chanNil)) {
113343  				delete t.idleConnCh[connectMethodKey.keyFor(key)];
113344  			}
113345  		}
113346  		if (t.wantIdle) {
113347  			$s = -1; return errWantIdle;
113348  		}
113349  		if (t.idleConn === false) {
113350  			t.idleConn = {};
113351  		}
113352  		idles = (_entry$1 = t.idleConn[connectMethodKey.keyFor(key)], _entry$1 !== undefined ? _entry$1.v : sliceType$24.nil);
113353  		if (idles.$length >= t.maxIdleConnsPerHost()) {
113354  			$s = -1; return errTooManyIdleHost;
113355  		}
113356  		_ref = idles;
113357  		_i = 0;
113358  		/* while (true) { */ case 6:
113359  			/* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 7; continue; }
113360  			exist = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
113361  			/* */ if (exist === pconn) { $s = 8; continue; }
113362  			/* */ $s = 9; continue;
113363  			/* if (exist === pconn) { */ case 8:
113364  				$r = log.Fatalf("dup idle pconn %p in freelist", new sliceType([pconn])); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
113365  			/* } */ case 9:
113366  			_i++;
113367  		/* } */ $s = 6; continue; case 7:
113368  		_key = $clone(key, connectMethodKey); (t.idleConn || $throwRuntimeError("assignment to entry in nil map"))[connectMethodKey.keyFor(_key)] = { k: _key, v: $append(idles, pconn) };
113369  		t.idleLRU.add(pconn);
113370  		/* */ if (!((t.MaxIdleConns === 0)) && t.idleLRU.len() > t.MaxIdleConns) { $s = 11; continue; }
113371  		/* */ $s = 12; continue;
113372  		/* if (!((t.MaxIdleConns === 0)) && t.idleLRU.len() > t.MaxIdleConns) { */ case 11:
113373  			oldest = t.idleLRU.removeOldest();
113374  			$r = oldest.close(errTooManyIdle); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
113375  			t.removeIdleConnLocked(oldest);
113376  		/* } */ case 12:
113377  		if ((x$4 = t.IdleConnTimeout, (x$4.$high > 0 || (x$4.$high === 0 && x$4.$low > 0)))) {
113378  			if (!(pconn.idleTimer === ptrType$56.nil)) {
113379  				pconn.idleTimer.Reset(t.IdleConnTimeout);
113380  			} else {
113381  				pconn.idleTimer = time.AfterFunc(t.IdleConnTimeout, $methodVal(pconn, "closeConnIfStillIdle"));
113382  			}
113383  		}
113384  		time.Time.copy(pconn.idleAt, time.Now());
113385  		$s = -1; return $ifaceNil;
113386  		/* */ } return; } } catch(err) { $err = err; $s = -1; return $ifaceNil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: Transport.ptr.prototype.tryPutIdleConn }; } $f._entry = _entry; $f._entry$1 = _entry$1; $f._i = _i; $f._key = _key; $f._r$1 = _r$1; $f._ref = _ref; $f._selection = _selection; $f.exist = exist; $f.idles = idles; $f.key = key; $f.oldest = oldest; $f.pconn = pconn; $f.t = t; $f.waitingDialer = waitingDialer; $f.x$4 = x$4; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
113387  	};
113388  	Transport.prototype.tryPutIdleConn = function(pconn) { return this.$val.tryPutIdleConn(pconn); };
113389  	Transport.ptr.prototype.getIdleConnCh = function(cm) {
113390  		var _entry, _key, _tuple, ch, cm, key, ok, t, $s, $deferred, $r;
113391  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _entry = $f._entry; _key = $f._key; _tuple = $f._tuple; ch = $f.ch; cm = $f.cm; key = $f.key; ok = $f.ok; t = $f.t; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
113392  		t = this;
113393  		if (t.DisableKeepAlives) {
113394  			$s = -1; return $chanNil;
113395  		}
113396  		key = $clone(cm.key(), connectMethodKey);
113397  		$r = t.idleMu.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
113398  		$deferred.push([$methodVal(t.idleMu, "Unlock"), []]);
113399  		t.wantIdle = false;
113400  		if (t.idleConnCh === false) {
113401  			t.idleConnCh = {};
113402  		}
113403  		_tuple = (_entry = t.idleConnCh[connectMethodKey.keyFor(key)], _entry !== undefined ? [_entry.v, true] : [$chanNil, false]);
113404  		ch = _tuple[0];
113405  		ok = _tuple[1];
113406  		if (!ok) {
113407  			ch = new $Chan(ptrType$102, 0);
113408  			_key = $clone(key, connectMethodKey); (t.idleConnCh || $throwRuntimeError("assignment to entry in nil map"))[connectMethodKey.keyFor(_key)] = { k: _key, v: ch };
113409  		}
113410  		$s = -1; return ch;
113411  		/* */ } return; } } catch(err) { $err = err; $s = -1; return $chanNil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: Transport.ptr.prototype.getIdleConnCh }; } $f._entry = _entry; $f._key = _key; $f._tuple = _tuple; $f.ch = ch; $f.cm = cm; $f.key = key; $f.ok = ok; $f.t = t; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
113412  	};
113413  	Transport.prototype.getIdleConnCh = function(cm) { return this.$val.getIdleConnCh(cm); };
113414  	Transport.ptr.prototype.getIdleConn = function(cm) {
113415  		var _entry, _key, _r$1, _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, cm, idleSince, key, ok, pconn, pconns, t, x$4, $s, $deferred, $r;
113416  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _entry = $f._entry; _key = $f._key; _r$1 = $f._r$1; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tuple = $f._tuple; cm = $f.cm; idleSince = $f.idleSince; key = $f.key; ok = $f.ok; pconn = $f.pconn; pconns = $f.pconns; t = $f.t; x$4 = $f.x$4; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
113417  		pconn = ptrType$102.nil;
113418  		idleSince = new time.Time.ptr(new $Uint64(0, 0), new $Int64(0, 0), ptrType$1.nil);
113419  		t = this;
113420  		key = $clone(cm.key(), connectMethodKey);
113421  		$r = t.idleMu.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
113422  		$deferred.push([$methodVal(t.idleMu, "Unlock"), []]);
113423  		/* while (true) { */ case 2:
113424  			_tuple = (_entry = t.idleConn[connectMethodKey.keyFor(key)], _entry !== undefined ? [_entry.v, true] : [sliceType$24.nil, false]);
113425  			pconns = _tuple[0];
113426  			ok = _tuple[1];
113427  			if (!ok) {
113428  				_tmp = ptrType$102.nil;
113429  				_tmp$1 = new time.Time.ptr(new $Uint64(0, 0), new $Int64(0, 0), ptrType$1.nil);
113430  				pconn = _tmp;
113431  				time.Time.copy(idleSince, _tmp$1);
113432  				$s = -1; return [pconn, idleSince];
113433  			}
113434  			if (pconns.$length === 1) {
113435  				pconn = (0 >= pconns.$length ? ($throwRuntimeError("index out of range"), undefined) : pconns.$array[pconns.$offset + 0]);
113436  				delete t.idleConn[connectMethodKey.keyFor(key)];
113437  			} else {
113438  				pconn = (x$4 = pconns.$length - 1 >> 0, ((x$4 < 0 || x$4 >= pconns.$length) ? ($throwRuntimeError("index out of range"), undefined) : pconns.$array[pconns.$offset + x$4]));
113439  				_key = $clone(key, connectMethodKey); (t.idleConn || $throwRuntimeError("assignment to entry in nil map"))[connectMethodKey.keyFor(_key)] = { k: _key, v: $subslice(pconns, 0, (pconns.$length - 1 >> 0)) };
113440  			}
113441  			t.idleLRU.remove(pconn);
113442  			_r$1 = pconn.isBroken(); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
113443  			/* */ if (_r$1) { $s = 4; continue; }
113444  			/* */ $s = 5; continue;
113445  			/* if (_r$1) { */ case 4:
113446  				/* continue; */ $s = 2; continue;
113447  			/* } */ case 5:
113448  			if (!(pconn.idleTimer === ptrType$56.nil) && !pconn.idleTimer.Stop()) {
113449  				/* continue; */ $s = 2; continue;
113450  			}
113451  			_tmp$2 = pconn;
113452  			_tmp$3 = $clone(pconn.idleAt, time.Time);
113453  			pconn = _tmp$2;
113454  			time.Time.copy(idleSince, _tmp$3);
113455  			$s = -1; return [pconn, idleSince];
113456  		/* } */ $s = 2; continue; case 3:
113457  		$s = -1; return [pconn, idleSince];
113458  		/* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if (!$curGoroutine.asleep) { return  [pconn, idleSince]; } if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: Transport.ptr.prototype.getIdleConn }; } $f._entry = _entry; $f._key = _key; $f._r$1 = _r$1; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tuple = _tuple; $f.cm = cm; $f.idleSince = idleSince; $f.key = key; $f.ok = ok; $f.pconn = pconn; $f.pconns = pconns; $f.t = t; $f.x$4 = x$4; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
113459  	};
113460  	Transport.prototype.getIdleConn = function(cm) { return this.$val.getIdleConn(cm); };
113461  	Transport.ptr.prototype.removeIdleConn = function(pconn) {
113462  		var pconn, t, $s, $deferred, $r;
113463  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; pconn = $f.pconn; t = $f.t; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
113464  		t = this;
113465  		$r = t.idleMu.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
113466  		$deferred.push([$methodVal(t.idleMu, "Unlock"), []]);
113467  		t.removeIdleConnLocked(pconn);
113468  		$s = -1; return;
113469  		/* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: Transport.ptr.prototype.removeIdleConn }; } $f.pconn = pconn; $f.t = t; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
113470  	};
113471  	Transport.prototype.removeIdleConn = function(pconn) { return this.$val.removeIdleConn(pconn); };
113472  	Transport.ptr.prototype.removeIdleConnLocked = function(pconn) {
113473  		var _1, _entry, _i, _key, _ref, i, key, pconn, pconns, t, v;
113474  		t = this;
113475  		if (!(pconn.idleTimer === ptrType$56.nil)) {
113476  			pconn.idleTimer.Stop();
113477  		}
113478  		t.idleLRU.remove(pconn);
113479  		key = $clone(pconn.cacheKey, connectMethodKey);
113480  		pconns = (_entry = t.idleConn[connectMethodKey.keyFor(key)], _entry !== undefined ? _entry.v : sliceType$24.nil);
113481  		_1 = pconns.$length;
113482  		if (_1 === (0)) {
113483  		} else if (_1 === (1)) {
113484  			if ((0 >= pconns.$length ? ($throwRuntimeError("index out of range"), undefined) : pconns.$array[pconns.$offset + 0]) === pconn) {
113485  				delete t.idleConn[connectMethodKey.keyFor(key)];
113486  			}
113487  		} else {
113488  			_ref = pconns;
113489  			_i = 0;
113490  			while (true) {
113491  				if (!(_i < _ref.$length)) { break; }
113492  				i = _i;
113493  				v = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
113494  				if (!(v === pconn)) {
113495  					_i++;
113496  					continue;
113497  				}
113498  				$copySlice($subslice(pconns, i), $subslice(pconns, (i + 1 >> 0)));
113499  				_key = $clone(key, connectMethodKey); (t.idleConn || $throwRuntimeError("assignment to entry in nil map"))[connectMethodKey.keyFor(_key)] = { k: _key, v: $subslice(pconns, 0, (pconns.$length - 1 >> 0)) };
113500  				break;
113501  			}
113502  		}
113503  	};
113504  	Transport.prototype.removeIdleConnLocked = function(pconn) { return this.$val.removeIdleConnLocked(pconn); };
113505  	Transport.ptr.prototype.setReqCanceler = function(r, fn) {
113506  		var _key, fn, r, t, $s, $deferred, $r;
113507  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _key = $f._key; fn = $f.fn; r = $f.r; t = $f.t; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
113508  		t = this;
113509  		$r = t.reqMu.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
113510  		$deferred.push([$methodVal(t.reqMu, "Unlock"), []]);
113511  		if (t.reqCanceler === false) {
113512  			t.reqCanceler = {};
113513  		}
113514  		if (!(fn === $throwNilPointerError)) {
113515  			_key = r; (t.reqCanceler || $throwRuntimeError("assignment to entry in nil map"))[ptrType$7.keyFor(_key)] = { k: _key, v: fn };
113516  		} else {
113517  			delete t.reqCanceler[ptrType$7.keyFor(r)];
113518  		}
113519  		$s = -1; return;
113520  		/* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: Transport.ptr.prototype.setReqCanceler }; } $f._key = _key; $f.fn = fn; $f.r = r; $f.t = t; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
113521  	};
113522  	Transport.prototype.setReqCanceler = function(r, fn) { return this.$val.setReqCanceler(r, fn); };
113523  	Transport.ptr.prototype.replaceReqCanceler = function(r, fn) {
113524  		var _entry, _key, _tuple, fn, ok, r, t, $s, $deferred, $r;
113525  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _entry = $f._entry; _key = $f._key; _tuple = $f._tuple; fn = $f.fn; ok = $f.ok; r = $f.r; t = $f.t; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
113526  		t = this;
113527  		$r = t.reqMu.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
113528  		$deferred.push([$methodVal(t.reqMu, "Unlock"), []]);
113529  		_tuple = (_entry = t.reqCanceler[ptrType$7.keyFor(r)], _entry !== undefined ? [_entry.v, true] : [$throwNilPointerError, false]);
113530  		ok = _tuple[1];
113531  		if (!ok) {
113532  			$s = -1; return false;
113533  		}
113534  		if (!(fn === $throwNilPointerError)) {
113535  			_key = r; (t.reqCanceler || $throwRuntimeError("assignment to entry in nil map"))[ptrType$7.keyFor(_key)] = { k: _key, v: fn };
113536  		} else {
113537  			delete t.reqCanceler[ptrType$7.keyFor(r)];
113538  		}
113539  		$s = -1; return true;
113540  		/* */ } return; } } catch(err) { $err = err; $s = -1; return false; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: Transport.ptr.prototype.replaceReqCanceler }; } $f._entry = _entry; $f._key = _key; $f._tuple = _tuple; $f.fn = fn; $f.ok = ok; $f.r = r; $f.t = t; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
113541  	};
113542  	Transport.prototype.replaceReqCanceler = function(r, fn) { return this.$val.replaceReqCanceler(r, fn); };
113543  	Transport.ptr.prototype.dial = function(ctx, network, addr) {
113544  		var _r$1, _r$2, _r$3, _tuple, addr, c, ctx, err, network, t, $s, $r;
113545  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _tuple = $f._tuple; addr = $f.addr; c = $f.c; ctx = $f.ctx; err = $f.err; network = $f.network; t = $f.t; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
113546  		t = this;
113547  		/* */ if (!(t.DialContext === $throwNilPointerError)) { $s = 1; continue; }
113548  		/* */ $s = 2; continue;
113549  		/* if (!(t.DialContext === $throwNilPointerError)) { */ case 1:
113550  			_r$1 = t.DialContext(ctx, network, addr); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
113551  			$s = -1; return _r$1;
113552  		/* } */ case 2:
113553  		/* */ if (!(t.Dial === $throwNilPointerError)) { $s = 4; continue; }
113554  		/* */ $s = 5; continue;
113555  		/* if (!(t.Dial === $throwNilPointerError)) { */ case 4:
113556  			_r$2 = t.Dial(network, addr); /* */ $s = 6; case 6: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
113557  			_tuple = _r$2;
113558  			c = _tuple[0];
113559  			err = _tuple[1];
113560  			if ($interfaceIsEqual(c, $ifaceNil) && $interfaceIsEqual(err, $ifaceNil)) {
113561  				err = errors.New("net/http: Transport.Dial hook returned (nil, nil)");
113562  			}
113563  			$s = -1; return [c, err];
113564  		/* } */ case 5:
113565  		_r$3 = zeroDialer.DialContext(ctx, network, addr); /* */ $s = 7; case 7: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
113566  		$s = -1; return _r$3;
113567  		/* */ } return; } if ($f === undefined) { $f = { $blk: Transport.ptr.prototype.dial }; } $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._tuple = _tuple; $f.addr = addr; $f.c = c; $f.ctx = ctx; $f.err = err; $f.network = network; $f.t = t; $f.$s = $s; $f.$r = $r; return $f;
113568  	};
113569  	Transport.prototype.dial = function(ctx, network, addr) { return this.$val.dial(ctx, network, addr); };
113570  	Transport.ptr.prototype.getConn = function(treq, cm) {
113571  		var _r$1, _r$10, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _selection, _selection$1, _tuple, cancelc, cm, ctx, dialc, err, err$1, handlePendingDial, idleConnCh, idleSince, pc, pc$1, req, t, testHookPostPendingDial$1, testHookPrePendingDial$1, trace, treq, v, $s, $r;
113572  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; _r$10 = $f._r$10; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _r$8 = $f._r$8; _r$9 = $f._r$9; _selection = $f._selection; _selection$1 = $f._selection$1; _tuple = $f._tuple; cancelc = $f.cancelc; cm = $f.cm; ctx = $f.ctx; dialc = $f.dialc; err = $f.err; err$1 = $f.err$1; handlePendingDial = $f.handlePendingDial; idleConnCh = $f.idleConnCh; idleSince = $f.idleSince; pc = $f.pc; pc$1 = $f.pc$1; req = $f.req; t = $f.t; testHookPostPendingDial$1 = $f.testHookPostPendingDial$1; testHookPrePendingDial$1 = $f.testHookPrePendingDial$1; trace = $f.trace; treq = $f.treq; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
113573  		cancelc = [cancelc];
113574  		cm = [cm];
113575  		ctx = [ctx];
113576  		dialc = [dialc];
113577  		t = [t];
113578  		testHookPostPendingDial$1 = [testHookPostPendingDial$1];
113579  		testHookPrePendingDial$1 = [testHookPrePendingDial$1];
113580  		t[0] = this;
113581  		req = treq.Request;
113582  		trace = treq.trace;
113583  		ctx[0] = req.Context();
113584  		/* */ if (!(trace === ptrType$47.nil) && !(trace.GetConn === $throwNilPointerError)) { $s = 1; continue; }
113585  		/* */ $s = 2; continue;
113586  		/* if (!(trace === ptrType$47.nil) && !(trace.GetConn === $throwNilPointerError)) { */ case 1:
113587  			_r$1 = cm[0].addr(); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
113588  			$r = trace.GetConn(_r$1); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
113589  		/* } */ case 2:
113590  		_r$2 = t[0].getIdleConn($clone(cm[0], connectMethod)); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
113591  		_tuple = _r$2;
113592  		pc = _tuple[0];
113593  		idleSince = $clone(_tuple[1], time.Time);
113594  		/* */ if (!(pc === ptrType$102.nil)) { $s = 6; continue; }
113595  		/* */ $s = 7; continue;
113596  		/* if (!(pc === ptrType$102.nil)) { */ case 6:
113597  			/* */ if (!(trace === ptrType$47.nil) && !(trace.GotConn === $throwNilPointerError)) { $s = 8; continue; }
113598  			/* */ $s = 9; continue;
113599  			/* if (!(trace === ptrType$47.nil) && !(trace.GotConn === $throwNilPointerError)) { */ case 8:
113600  				_r$3 = pc.gotIdleConnTrace($clone(idleSince, time.Time)); /* */ $s = 10; case 10: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
113601  				$r = trace.GotConn($clone(_r$3, httptrace.GotConnInfo)); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
113602  			/* } */ case 9:
113603  			$r = t[0].setReqCanceler(req, (function(cancelc, cm, ctx, dialc, t, testHookPostPendingDial$1, testHookPrePendingDial$1) { return function(param) {
113604  				var param;
113605  			}; })(cancelc, cm, ctx, dialc, t, testHookPostPendingDial$1, testHookPrePendingDial$1)); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
113606  			$s = -1; return [pc, $ifaceNil];
113607  		/* } */ case 7:
113608  		dialc[0] = new $Chan(dialRes, 0);
113609  		testHookPrePendingDial$1[0] = testHookPrePendingDial;
113610  		testHookPostPendingDial$1[0] = testHookPostPendingDial;
113611  		handlePendingDial = (function(cancelc, cm, ctx, dialc, t, testHookPostPendingDial$1, testHookPrePendingDial$1) { return function $b() {
113612  			var $s, $r;
113613  			/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
113614  			$r = testHookPrePendingDial$1[0](); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
113615  			$go((function(cancelc, cm, ctx, dialc, t, testHookPostPendingDial$1, testHookPrePendingDial$1) { return function $b() {
113616  				var _r$4, v, $s, $r;
113617  				/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$4 = $f._r$4; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
113618  				_r$4 = $recv(dialc[0]); /* */ $s = 1; case 1: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
113619  				v = $clone(_r$4[0], dialRes);
113620  				/* */ if ($interfaceIsEqual(v.err, $ifaceNil)) { $s = 2; continue; }
113621  				/* */ $s = 3; continue;
113622  				/* if ($interfaceIsEqual(v.err, $ifaceNil)) { */ case 2:
113623  					$r = t[0].putOrCloseIdleConn(v.pc); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
113624  				/* } */ case 3:
113625  				$r = testHookPostPendingDial$1[0](); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
113626  				$s = -1; return;
113627  				/* */ } return; } if ($f === undefined) { $f = { $blk: $b }; } $f._r$4 = _r$4; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
113628  			}; })(cancelc, cm, ctx, dialc, t, testHookPostPendingDial$1, testHookPrePendingDial$1), []);
113629  			$s = -1; return;
113630  			/* */ } return; } if ($f === undefined) { $f = { $blk: $b }; } $f.$s = $s; $f.$r = $r; return $f;
113631  		}; })(cancelc, cm, ctx, dialc, t, testHookPostPendingDial$1, testHookPrePendingDial$1);
113632  		cancelc[0] = new $Chan($error, 1);
113633  		$r = t[0].setReqCanceler(req, (function(cancelc, cm, ctx, dialc, t, testHookPostPendingDial$1, testHookPrePendingDial$1) { return function $b(err) {
113634  			var err, $s, $r;
113635  			/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; err = $f.err; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
113636  			$r = $send(cancelc[0], err); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
113637  			$s = -1; return;
113638  			/* */ } return; } if ($f === undefined) { $f = { $blk: $b }; } $f.err = err; $f.$s = $s; $f.$r = $r; return $f;
113639  		}; })(cancelc, cm, ctx, dialc, t, testHookPostPendingDial$1, testHookPrePendingDial$1)); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
113640  		$go((function(cancelc, cm, ctx, dialc, t, testHookPostPendingDial$1, testHookPrePendingDial$1) { return function $b() {
113641  			var _r$4, _tuple$1, err, pc$1, $s, $r;
113642  			/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$4 = $f._r$4; _tuple$1 = $f._tuple$1; err = $f.err; pc$1 = $f.pc$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
113643  			_r$4 = t[0].dialConn(ctx[0], $clone(cm[0], connectMethod)); /* */ $s = 1; case 1: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
113644  			_tuple$1 = _r$4;
113645  			pc$1 = _tuple$1[0];
113646  			err = _tuple$1[1];
113647  			$r = $send(dialc[0], $clone(new dialRes.ptr(pc$1, err), dialRes)); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
113648  			$s = -1; return;
113649  			/* */ } return; } if ($f === undefined) { $f = { $blk: $b }; } $f._r$4 = _r$4; $f._tuple$1 = _tuple$1; $f.err = err; $f.pc$1 = pc$1; $f.$s = $s; $f.$r = $r; return $f;
113650  		}; })(cancelc, cm, ctx, dialc, t, testHookPostPendingDial$1, testHookPrePendingDial$1), []);
113651  		_r$4 = t[0].getIdleConnCh($clone(cm[0], connectMethod)); /* */ $s = 14; case 14: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
113652  		idleConnCh = _r$4;
113653  		_r$5 = req.Context().Done(); /* */ $s = 15; case 15: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
113654  		_r$6 = $select([[dialc[0]], [idleConnCh], [req.Cancel], [_r$5], [cancelc[0]]]); /* */ $s = 16; case 16: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
113655  		_selection = _r$6;
113656  		/* */ if (_selection[0] === 0) { $s = 17; continue; }
113657  		/* */ if (_selection[0] === 1) { $s = 18; continue; }
113658  		/* */ if (_selection[0] === 2) { $s = 19; continue; }
113659  		/* */ if (_selection[0] === 3) { $s = 20; continue; }
113660  		/* */ if (_selection[0] === 4) { $s = 21; continue; }
113661  		/* */ $s = 22; continue;
113662  		/* if (_selection[0] === 0) { */ case 17:
113663  			v = $clone(_selection[1][0], dialRes);
113664  			/* */ if (!(v.pc === ptrType$102.nil)) { $s = 23; continue; }
113665  			/* */ $s = 24; continue;
113666  			/* if (!(v.pc === ptrType$102.nil)) { */ case 23:
113667  				/* */ if (!(trace === ptrType$47.nil) && !(trace.GotConn === $throwNilPointerError) && $interfaceIsEqual(v.pc.alt, $ifaceNil)) { $s = 25; continue; }
113668  				/* */ $s = 26; continue;
113669  				/* if (!(trace === ptrType$47.nil) && !(trace.GotConn === $throwNilPointerError) && $interfaceIsEqual(v.pc.alt, $ifaceNil)) { */ case 25:
113670  					$r = trace.GotConn(new httptrace.GotConnInfo.ptr(v.pc.conn, false, false, new time.Duration(0, 0))); /* */ $s = 27; case 27: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
113671  				/* } */ case 26:
113672  				$s = -1; return [v.pc, $ifaceNil];
113673  			/* } */ case 24:
113674  			_r$7 = req.Context().Done(); /* */ $s = 28; case 28: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
113675  			_selection$1 = $select([[req.Cancel], [_r$7], [cancelc[0]], []]);
113676  			/* */ if (_selection$1[0] === 0) { $s = 29; continue; }
113677  			/* */ if (_selection$1[0] === 1) { $s = 30; continue; }
113678  			/* */ if (_selection$1[0] === 2) { $s = 31; continue; }
113679  			/* */ if (_selection$1[0] === 3) { $s = 32; continue; }
113680  			/* */ $s = 33; continue;
113681  			/* if (_selection$1[0] === 0) { */ case 29:
113682  				$s = -1; return [ptrType$102.nil, errRequestCanceledConn];
113683  			/* } else if (_selection$1[0] === 1) { */ case 30:
113684  				_r$8 = req.Context().Err(); /* */ $s = 34; case 34: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
113685  				$s = -1; return [ptrType$102.nil, _r$8];
113686  			/* } else if (_selection$1[0] === 2) { */ case 31:
113687  				err = _selection$1[1][0];
113688  				if ($interfaceIsEqual(err, errRequestCanceled)) {
113689  					err = errRequestCanceledConn;
113690  				}
113691  				$s = -1; return [ptrType$102.nil, err];
113692  			/* } else if (_selection$1[0] === 3) { */ case 32:
113693  				$s = -1; return [ptrType$102.nil, v.err];
113694  			/* } */ case 33:
113695  			$s = 22; continue;
113696  		/* } else if (_selection[0] === 1) { */ case 18:
113697  			pc$1 = _selection[1][0];
113698  			$r = handlePendingDial(); /* */ $s = 35; case 35: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
113699  			/* */ if (!(trace === ptrType$47.nil) && !(trace.GotConn === $throwNilPointerError)) { $s = 36; continue; }
113700  			/* */ $s = 37; continue;
113701  			/* if (!(trace === ptrType$47.nil) && !(trace.GotConn === $throwNilPointerError)) { */ case 36:
113702  				_r$9 = pc$1.isReused(); /* */ $s = 38; case 38: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
113703  				$r = trace.GotConn(new httptrace.GotConnInfo.ptr(pc$1.conn, _r$9, false, new time.Duration(0, 0))); /* */ $s = 39; case 39: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
113704  			/* } */ case 37:
113705  			$s = -1; return [pc$1, $ifaceNil];
113706  		/* } else if (_selection[0] === 2) { */ case 19:
113707  			$r = handlePendingDial(); /* */ $s = 40; case 40: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
113708  			$s = -1; return [ptrType$102.nil, errRequestCanceledConn];
113709  		/* } else if (_selection[0] === 3) { */ case 20:
113710  			$r = handlePendingDial(); /* */ $s = 41; case 41: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
113711  			_r$10 = req.Context().Err(); /* */ $s = 42; case 42: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
113712  			$s = -1; return [ptrType$102.nil, _r$10];
113713  		/* } else if (_selection[0] === 4) { */ case 21:
113714  			err$1 = _selection[1][0];
113715  			$r = handlePendingDial(); /* */ $s = 43; case 43: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
113716  			if ($interfaceIsEqual(err$1, errRequestCanceled)) {
113717  				err$1 = errRequestCanceledConn;
113718  			}
113719  			$s = -1; return [ptrType$102.nil, err$1];
113720  		/* } */ case 22:
113721  		$s = -1; return [ptrType$102.nil, $ifaceNil];
113722  		/* */ } return; } if ($f === undefined) { $f = { $blk: Transport.ptr.prototype.getConn }; } $f._r$1 = _r$1; $f._r$10 = _r$10; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._r$8 = _r$8; $f._r$9 = _r$9; $f._selection = _selection; $f._selection$1 = _selection$1; $f._tuple = _tuple; $f.cancelc = cancelc; $f.cm = cm; $f.ctx = ctx; $f.dialc = dialc; $f.err = err; $f.err$1 = err$1; $f.handlePendingDial = handlePendingDial; $f.idleConnCh = idleConnCh; $f.idleSince = idleSince; $f.pc = pc; $f.pc$1 = pc$1; $f.req = req; $f.t = t; $f.testHookPostPendingDial$1 = testHookPostPendingDial$1; $f.testHookPrePendingDial$1 = testHookPrePendingDial$1; $f.trace = trace; $f.treq = treq; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
113723  	};
113724  	Transport.prototype.getConn = function(treq, cm) { return this.$val.getConn(treq, cm); };
113725  	newOneConnDialer = function(c) {
113726  		var c, ch, $s, $r;
113727  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; c = $f.c; ch = $f.ch; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
113728  		ch = new $Chan(net.Conn, 1);
113729  		$r = $send(ch, c); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
113730  		$s = -1; return new oneConnDialer((ch));
113731  		/* */ } return; } if ($f === undefined) { $f = { $blk: newOneConnDialer }; } $f.c = c; $f.ch = ch; $f.$s = $s; $f.$r = $r; return $f;
113732  	};
113733  	oneConnDialer.prototype.Dial = function(network, addr) {
113734  		var _selection, addr, c, d, network, $r;
113735  		/* */ var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _selection = $f._selection; addr = $f.addr; c = $f.c; d = $f.d; network = $f.network; $r = $f.$r; }
113736  		d = this.$val;
113737  		_selection = $select([[d], []]);
113738  		if (_selection[0] === 0) {
113739  			c = _selection[1][0];
113740  			return [c, $ifaceNil];
113741  		} else if (_selection[0] === 1) {
113742  			return [$ifaceNil, io.EOF];
113743  		}
113744  		/* */ if ($f === undefined) { $f = { $blk: oneConnDialer.prototype.Dial }; } $f._selection = _selection; $f.addr = addr; $f.c = c; $f.d = d; $f.network = network; $f.$r = $r; return $f;
113745  	};
113746  	$ptrType(oneConnDialer).prototype.Dial = function(network, addr) { return new oneConnDialer(this.$get()).Dial(network, addr); };
113747  	persistConn.ptr.prototype.addTLS = function(name, trace) {
113748  		var _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, cfg, cs, d, err, err$1, errc, name, pconn, plainConn, timer, tlsConn, trace, $s, $r;
113749  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; cfg = $f.cfg; cs = $f.cs; d = $f.d; err = $f.err; err$1 = $f.err$1; errc = $f.errc; name = $f.name; pconn = $f.pconn; plainConn = $f.plainConn; timer = $f.timer; tlsConn = $f.tlsConn; trace = $f.trace; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
113750  		cs = [cs];
113751  		errc = [errc];
113752  		timer = [timer];
113753  		tlsConn = [tlsConn];
113754  		trace = [trace];
113755  		pconn = this;
113756  		_r$1 = cloneTLSConfig(pconn.t.TLSClientConfig); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
113757  		cfg = _r$1;
113758  		if (cfg.ServerName === "") {
113759  			cfg.ServerName = name;
113760  		}
113761  		plainConn = pconn.conn;
113762  		tlsConn[0] = tls.Client(plainConn, cfg);
113763  		errc[0] = new $Chan($error, 2);
113764  		timer[0] = ptrType$56.nil;
113765  		d = pconn.t.TLSHandshakeTimeout;
113766  		if (!((d.$high === 0 && d.$low === 0))) {
113767  			timer[0] = time.AfterFunc(d, (function(cs, errc, timer, tlsConn, trace) { return function $b() {
113768  				var x$4, $s, $r;
113769  				/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; x$4 = $f.x$4; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
113770  				$r = $send(errc[0], (x$4 = new tlsHandshakeTimeoutError.ptr(), new x$4.constructor.elem(x$4))); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
113771  				$s = -1; return;
113772  				/* */ } return; } if ($f === undefined) { $f = { $blk: $b }; } $f.x$4 = x$4; $f.$s = $s; $f.$r = $r; return $f;
113773  			}; })(cs, errc, timer, tlsConn, trace));
113774  		}
113775  		$go((function(cs, errc, timer, tlsConn, trace) { return function $b() {
113776  			var _r$2, err, $s, $r;
113777  			/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$2 = $f._r$2; err = $f.err; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
113778  			/* */ if (!(trace[0] === ptrType$47.nil) && !(trace[0].TLSHandshakeStart === $throwNilPointerError)) { $s = 1; continue; }
113779  			/* */ $s = 2; continue;
113780  			/* if (!(trace[0] === ptrType$47.nil) && !(trace[0].TLSHandshakeStart === $throwNilPointerError)) { */ case 1:
113781  				$r = trace[0].TLSHandshakeStart(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
113782  			/* } */ case 2:
113783  			_r$2 = tlsConn[0].Handshake(); /* */ $s = 4; case 4: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
113784  			err = _r$2;
113785  			if (!(timer[0] === ptrType$56.nil)) {
113786  				timer[0].Stop();
113787  			}
113788  			$r = $send(errc[0], err); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
113789  			$s = -1; return;
113790  			/* */ } return; } if ($f === undefined) { $f = { $blk: $b }; } $f._r$2 = _r$2; $f.err = err; $f.$s = $s; $f.$r = $r; return $f;
113791  		}; })(cs, errc, timer, tlsConn, trace), []);
113792  		_r$2 = $recv(errc[0]); /* */ $s = 2; case 2: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
113793  		err = _r$2[0];
113794  		/* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 3; continue; }
113795  		/* */ $s = 4; continue;
113796  		/* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 3:
113797  			_r$3 = plainConn.Close(); /* */ $s = 5; case 5: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
113798  			_r$3;
113799  			/* */ if (!(trace[0] === ptrType$47.nil) && !(trace[0].TLSHandshakeDone === $throwNilPointerError)) { $s = 6; continue; }
113800  			/* */ $s = 7; continue;
113801  			/* if (!(trace[0] === ptrType$47.nil) && !(trace[0].TLSHandshakeDone === $throwNilPointerError)) { */ case 6:
113802  				$r = trace[0].TLSHandshakeDone(new tls.ConnectionState.ptr(0, false, false, 0, "", false, "", sliceType$17.nil, sliceType$18.nil, sliceType$5.nil, sliceType$3.nil, sliceType$3.nil), err); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
113803  			/* } */ case 7:
113804  			$s = -1; return err;
113805  		/* } */ case 4:
113806  		/* */ if (!cfg.InsecureSkipVerify) { $s = 9; continue; }
113807  		/* */ $s = 10; continue;
113808  		/* if (!cfg.InsecureSkipVerify) { */ case 9:
113809  			_r$4 = tlsConn[0].VerifyHostname(cfg.ServerName); /* */ $s = 11; case 11: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
113810  			err$1 = _r$4;
113811  			/* */ if (!($interfaceIsEqual(err$1, $ifaceNil))) { $s = 12; continue; }
113812  			/* */ $s = 13; continue;
113813  			/* if (!($interfaceIsEqual(err$1, $ifaceNil))) { */ case 12:
113814  				_r$5 = plainConn.Close(); /* */ $s = 14; case 14: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
113815  				_r$5;
113816  				$s = -1; return err$1;
113817  			/* } */ case 13:
113818  		/* } */ case 10:
113819  		_r$6 = tlsConn[0].ConnectionState(); /* */ $s = 15; case 15: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
113820  		cs[0] = $clone(_r$6, tls.ConnectionState);
113821  		/* */ if (!(trace[0] === ptrType$47.nil) && !(trace[0].TLSHandshakeDone === $throwNilPointerError)) { $s = 16; continue; }
113822  		/* */ $s = 17; continue;
113823  		/* if (!(trace[0] === ptrType$47.nil) && !(trace[0].TLSHandshakeDone === $throwNilPointerError)) { */ case 16:
113824  			$r = trace[0].TLSHandshakeDone($clone(cs[0], tls.ConnectionState), $ifaceNil); /* */ $s = 18; case 18: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
113825  		/* } */ case 17:
113826  		pconn.tlsState = cs[0];
113827  		pconn.conn = tlsConn[0];
113828  		$s = -1; return $ifaceNil;
113829  		/* */ } return; } if ($f === undefined) { $f = { $blk: persistConn.ptr.prototype.addTLS }; } $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f.cfg = cfg; $f.cs = cs; $f.d = d; $f.err = err; $f.err$1 = err$1; $f.errc = errc; $f.name = name; $f.pconn = pconn; $f.plainConn = plainConn; $f.timer = timer; $f.tlsConn = tlsConn; $f.trace = trace; $f.$s = $s; $f.$r = $r; return $f;
113830  	};
113831  	persistConn.prototype.addTLS = function(name, trace) { return this.$val.addTLS(name, trace); };
113832  	Transport.ptr.prototype.dialConn = function(ctx, cm) {
113833  		var _arg, _arg$1, _arg$2, _arg$3, _arg$4, _arg$5, _entry, _r$1, _r$10, _r$11, _r$12, _r$13, _r$14, _r$15, _r$16, _r$17, _r$18, _r$19, _r$2, _r$20, _r$21, _r$22, _r$23, _r$24, _r$25, _r$26, _r$27, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, _tuple$5, _tuple$6, _tuple$7, _tuple$8, auth, br, cm, conn$1, conn$2, conn$3, connectReq, cs, ctx, err, err$1, err$2, err$3, err$4, err$5, err$6, f, firstTLSHost, hdr, next, ok, ok$1, p, pa, pa$1, pconn, resp, s, t, tc, trace, u, wrapErr, x$4, $s, $r;
113834  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _arg = $f._arg; _arg$1 = $f._arg$1; _arg$2 = $f._arg$2; _arg$3 = $f._arg$3; _arg$4 = $f._arg$4; _arg$5 = $f._arg$5; _entry = $f._entry; _r$1 = $f._r$1; _r$10 = $f._r$10; _r$11 = $f._r$11; _r$12 = $f._r$12; _r$13 = $f._r$13; _r$14 = $f._r$14; _r$15 = $f._r$15; _r$16 = $f._r$16; _r$17 = $f._r$17; _r$18 = $f._r$18; _r$19 = $f._r$19; _r$2 = $f._r$2; _r$20 = $f._r$20; _r$21 = $f._r$21; _r$22 = $f._r$22; _r$23 = $f._r$23; _r$24 = $f._r$24; _r$25 = $f._r$25; _r$26 = $f._r$26; _r$27 = $f._r$27; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _r$8 = $f._r$8; _r$9 = $f._r$9; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; _tuple$4 = $f._tuple$4; _tuple$5 = $f._tuple$5; _tuple$6 = $f._tuple$6; _tuple$7 = $f._tuple$7; _tuple$8 = $f._tuple$8; auth = $f.auth; br = $f.br; cm = $f.cm; conn$1 = $f.conn$1; conn$2 = $f.conn$2; conn$3 = $f.conn$3; connectReq = $f.connectReq; cs = $f.cs; ctx = $f.ctx; err = $f.err; err$1 = $f.err$1; err$2 = $f.err$2; err$3 = $f.err$3; err$4 = $f.err$4; err$5 = $f.err$5; err$6 = $f.err$6; f = $f.f; firstTLSHost = $f.firstTLSHost; hdr = $f.hdr; next = $f.next; ok = $f.ok; ok$1 = $f.ok$1; p = $f.p; pa = $f.pa; pa$1 = $f.pa$1; pconn = $f.pconn; resp = $f.resp; s = $f.s; t = $f.t; tc = $f.tc; trace = $f.trace; u = $f.u; wrapErr = $f.wrapErr; x$4 = $f.x$4; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
113835  		cm = [cm];
113836  		cs = [cs];
113837  		pa = [pa];
113838  		t = this;
113839  		pconn = new persistConn.ptr($ifaceNil, t, $clone(cm[0].key(), connectMethodKey), $ifaceNil, ptrType$18.nil, ptrType$72.nil, ptrType$10.nil, new $Int64(0, 0), new $Chan(requestAndChan, 1), new $Chan(writeRequest, 1), new $Chan(structType, 0), false, false, new $Int64(0, 0), new $Chan($error, 1), new $Chan(structType, 0), new time.Time.ptr(new $Uint64(0, 0), new $Int64(0, 0), ptrType$1.nil), ptrType$56.nil, new sync.Mutex.ptr(0, 0), 0, $ifaceNil, $ifaceNil, false, false, $throwNilPointerError);
113840  		_r$1 = httptrace.ContextClientTrace(ctx); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
113841  		trace = _r$1;
113842  		wrapErr = (function(cm, cs, pa) { return function(err) {
113843  			var err;
113844  			if (!(cm[0].proxyURL === ptrType$20.nil)) {
113845  				return new net.OpError.ptr("proxyconnect", "tcp", $ifaceNil, $ifaceNil, err);
113846  			}
113847  			return err;
113848  		}; })(cm, cs, pa);
113849  		/* */ if (cm[0].scheme() === "https" && !(t.DialTLS === $throwNilPointerError)) { $s = 2; continue; }
113850  		/* */ $s = 3; continue;
113851  		/* if (cm[0].scheme() === "https" && !(t.DialTLS === $throwNilPointerError)) { */ case 2:
113852  			err = $ifaceNil;
113853  			_r$2 = cm[0].addr(); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
113854  			_arg = _r$2;
113855  			_r$3 = t.DialTLS("tcp", _arg); /* */ $s = 6; case 6: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
113856  			_tuple = _r$3;
113857  			pconn.conn = _tuple[0];
113858  			err = _tuple[1];
113859  			/* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 7; continue; }
113860  			/* */ $s = 8; continue;
113861  			/* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 7:
113862  				_r$4 = wrapErr(err); /* */ $s = 9; case 9: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
113863  				$s = -1; return [ptrType$102.nil, _r$4];
113864  			/* } */ case 8:
113865  			/* */ if ($interfaceIsEqual(pconn.conn, $ifaceNil)) { $s = 10; continue; }
113866  			/* */ $s = 11; continue;
113867  			/* if ($interfaceIsEqual(pconn.conn, $ifaceNil)) { */ case 10:
113868  				_r$5 = wrapErr(errors.New("net/http: Transport.DialTLS returned (nil, nil)")); /* */ $s = 12; case 12: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
113869  				$s = -1; return [ptrType$102.nil, _r$5];
113870  			/* } */ case 11:
113871  			_tuple$1 = $assertType(pconn.conn, ptrType$99, true);
113872  			tc = _tuple$1[0];
113873  			ok = _tuple$1[1];
113874  			/* */ if (ok) { $s = 13; continue; }
113875  			/* */ $s = 14; continue;
113876  			/* if (ok) { */ case 13:
113877  				/* */ if (!(trace === ptrType$47.nil) && !(trace.TLSHandshakeStart === $throwNilPointerError)) { $s = 15; continue; }
113878  				/* */ $s = 16; continue;
113879  				/* if (!(trace === ptrType$47.nil) && !(trace.TLSHandshakeStart === $throwNilPointerError)) { */ case 15:
113880  					$r = trace.TLSHandshakeStart(); /* */ $s = 17; case 17: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
113881  				/* } */ case 16:
113882  				_r$6 = tc.Handshake(); /* */ $s = 18; case 18: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
113883  				err$1 = _r$6;
113884  				/* */ if (!($interfaceIsEqual(err$1, $ifaceNil))) { $s = 19; continue; }
113885  				/* */ $s = 20; continue;
113886  				/* if (!($interfaceIsEqual(err$1, $ifaceNil))) { */ case 19:
113887  					$go($methodVal(pconn.conn, "Close"), []);
113888  					/* */ if (!(trace === ptrType$47.nil) && !(trace.TLSHandshakeDone === $throwNilPointerError)) { $s = 21; continue; }
113889  					/* */ $s = 22; continue;
113890  					/* if (!(trace === ptrType$47.nil) && !(trace.TLSHandshakeDone === $throwNilPointerError)) { */ case 21:
113891  						$r = trace.TLSHandshakeDone(new tls.ConnectionState.ptr(0, false, false, 0, "", false, "", sliceType$17.nil, sliceType$18.nil, sliceType$5.nil, sliceType$3.nil, sliceType$3.nil), err$1); /* */ $s = 23; case 23: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
113892  					/* } */ case 22:
113893  					$s = -1; return [ptrType$102.nil, err$1];
113894  				/* } */ case 20:
113895  				_r$7 = tc.ConnectionState(); /* */ $s = 24; case 24: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
113896  				cs[0] = $clone(_r$7, tls.ConnectionState);
113897  				/* */ if (!(trace === ptrType$47.nil) && !(trace.TLSHandshakeDone === $throwNilPointerError)) { $s = 25; continue; }
113898  				/* */ $s = 26; continue;
113899  				/* if (!(trace === ptrType$47.nil) && !(trace.TLSHandshakeDone === $throwNilPointerError)) { */ case 25:
113900  					$r = trace.TLSHandshakeDone($clone(cs[0], tls.ConnectionState), $ifaceNil); /* */ $s = 27; case 27: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
113901  				/* } */ case 26:
113902  				pconn.tlsState = cs[0];
113903  			/* } */ case 14:
113904  			$s = 4; continue;
113905  		/* } else { */ case 3:
113906  			_arg$1 = ctx;
113907  			_r$8 = cm[0].addr(); /* */ $s = 28; case 28: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
113908  			_arg$2 = _r$8;
113909  			_r$9 = t.dial(_arg$1, "tcp", _arg$2); /* */ $s = 29; case 29: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
113910  			_tuple$2 = _r$9;
113911  			conn$1 = _tuple$2[0];
113912  			err$2 = _tuple$2[1];
113913  			/* */ if (!($interfaceIsEqual(err$2, $ifaceNil))) { $s = 30; continue; }
113914  			/* */ $s = 31; continue;
113915  			/* if (!($interfaceIsEqual(err$2, $ifaceNil))) { */ case 30:
113916  				_r$10 = wrapErr(err$2); /* */ $s = 32; case 32: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
113917  				$s = -1; return [ptrType$102.nil, _r$10];
113918  			/* } */ case 31:
113919  			pconn.conn = conn$1;
113920  			/* */ if (cm[0].scheme() === "https") { $s = 33; continue; }
113921  			/* */ $s = 34; continue;
113922  			/* if (cm[0].scheme() === "https") { */ case 33:
113923  				firstTLSHost = "";
113924  				_r$11 = cm[0].addr(); /* */ $s = 35; case 35: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; }
113925  				_r$12 = net.SplitHostPort(_r$11); /* */ $s = 36; case 36: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; }
113926  				_tuple$3 = _r$12;
113927  				firstTLSHost = _tuple$3[0];
113928  				err$2 = _tuple$3[2];
113929  				/* */ if (!($interfaceIsEqual(err$2, $ifaceNil))) { $s = 37; continue; }
113930  				/* */ $s = 38; continue;
113931  				/* if (!($interfaceIsEqual(err$2, $ifaceNil))) { */ case 37:
113932  					_r$13 = wrapErr(err$2); /* */ $s = 39; case 39: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; }
113933  					$s = -1; return [ptrType$102.nil, _r$13];
113934  				/* } */ case 38:
113935  				_r$14 = pconn.addTLS(firstTLSHost, trace); /* */ $s = 40; case 40: if($c) { $c = false; _r$14 = _r$14.$blk(); } if (_r$14 && _r$14.$blk !== undefined) { break s; }
113936  				err$2 = _r$14;
113937  				/* */ if (!($interfaceIsEqual(err$2, $ifaceNil))) { $s = 41; continue; }
113938  				/* */ $s = 42; continue;
113939  				/* if (!($interfaceIsEqual(err$2, $ifaceNil))) { */ case 41:
113940  					_r$15 = wrapErr(err$2); /* */ $s = 43; case 43: if($c) { $c = false; _r$15 = _r$15.$blk(); } if (_r$15 && _r$15.$blk !== undefined) { break s; }
113941  					$s = -1; return [ptrType$102.nil, _r$15];
113942  				/* } */ case 42:
113943  			/* } */ case 34:
113944  		/* } */ case 4:
113945  			/* */ if (cm[0].proxyURL === ptrType$20.nil) { $s = 45; continue; }
113946  			/* */ if (cm[0].proxyURL.Scheme === "socks5") { $s = 46; continue; }
113947  			/* */ if (cm[0].targetScheme === "http") { $s = 47; continue; }
113948  			/* */ if (cm[0].targetScheme === "https") { $s = 48; continue; }
113949  			/* */ $s = 49; continue;
113950  			/* if (cm[0].proxyURL === ptrType$20.nil) { */ case 45:
113951  				$s = 49; continue;
113952  			/* } else if (cm[0].proxyURL.Scheme === "socks5") { */ case 46:
113953  				conn$2 = pconn.conn;
113954  				auth = ptrType$103.nil;
113955  				u = cm[0].proxyURL.User;
113956  				if (!(u === ptrType$19.nil)) {
113957  					auth = new proxy.Auth.ptr("", "");
113958  					auth.User = u.Username();
113959  					_tuple$4 = u.Password();
113960  					auth.Password = _tuple$4[0];
113961  				}
113962  				_r$16 = cm[0].addr(); /* */ $s = 50; case 50: if($c) { $c = false; _r$16 = _r$16.$blk(); } if (_r$16 && _r$16.$blk !== undefined) { break s; }
113963  				_arg$3 = _r$16;
113964  				_arg$4 = auth;
113965  				_r$17 = newOneConnDialer(conn$2); /* */ $s = 51; case 51: if($c) { $c = false; _r$17 = _r$17.$blk(); } if (_r$17 && _r$17.$blk !== undefined) { break s; }
113966  				_arg$5 = _r$17;
113967  				_r$18 = proxy.SOCKS5("", _arg$3, _arg$4, _arg$5); /* */ $s = 52; case 52: if($c) { $c = false; _r$18 = _r$18.$blk(); } if (_r$18 && _r$18.$blk !== undefined) { break s; }
113968  				_tuple$5 = _r$18;
113969  				p = _tuple$5[0];
113970  				err$3 = _tuple$5[1];
113971  				/* */ if (!($interfaceIsEqual(err$3, $ifaceNil))) { $s = 53; continue; }
113972  				/* */ $s = 54; continue;
113973  				/* if (!($interfaceIsEqual(err$3, $ifaceNil))) { */ case 53:
113974  					_r$19 = conn$2.Close(); /* */ $s = 55; case 55: if($c) { $c = false; _r$19 = _r$19.$blk(); } if (_r$19 && _r$19.$blk !== undefined) { break s; }
113975  					_r$19;
113976  					$s = -1; return [ptrType$102.nil, err$3];
113977  				/* } */ case 54:
113978  				_r$20 = p.Dial("tcp", cm[0].targetAddr); /* */ $s = 56; case 56: if($c) { $c = false; _r$20 = _r$20.$blk(); } if (_r$20 && _r$20.$blk !== undefined) { break s; }
113979  				_tuple$6 = _r$20;
113980  				err$4 = _tuple$6[1];
113981  				/* */ if (!($interfaceIsEqual(err$4, $ifaceNil))) { $s = 57; continue; }
113982  				/* */ $s = 58; continue;
113983  				/* if (!($interfaceIsEqual(err$4, $ifaceNil))) { */ case 57:
113984  					_r$21 = conn$2.Close(); /* */ $s = 59; case 59: if($c) { $c = false; _r$21 = _r$21.$blk(); } if (_r$21 && _r$21.$blk !== undefined) { break s; }
113985  					_r$21;
113986  					$s = -1; return [ptrType$102.nil, err$4];
113987  				/* } */ case 58:
113988  				$s = 49; continue;
113989  			/* } else if (cm[0].targetScheme === "http") { */ case 47:
113990  				pconn.isProxy = true;
113991  				pa[0] = cm[0].proxyAuth();
113992  				if (!(pa[0] === "")) {
113993  					pconn.mutateHeaderFunc = (function(cm, cs, pa) { return function(h) {
113994  						var h;
113995  						new Header(h).Set("Proxy-Authorization", pa[0]);
113996  					}; })(cm, cs, pa);
113997  				}
113998  				$s = 49; continue;
113999  			/* } else if (cm[0].targetScheme === "https") { */ case 48:
114000  				conn$3 = pconn.conn;
114001  				hdr = t.ProxyConnectHeader;
114002  				if (hdr === false) {
114003  					hdr = {};
114004  				}
114005  				connectReq = new Request.ptr("CONNECT", new url.URL.ptr("", cm[0].targetAddr, ptrType$19.nil, "", "", "", false, "", ""), "", 0, 0, hdr, $ifaceNil, $throwNilPointerError, new $Int64(0, 0), sliceType$1.nil, false, cm[0].targetAddr, false, false, ptrType$21.nil, false, "", "", ptrType$18.nil, $chanNil, ptrType$17.nil, $ifaceNil);
114006  				pa$1 = cm[0].proxyAuth();
114007  				if (!(pa$1 === "")) {
114008  					new Header(connectReq.Header).Set("Proxy-Authorization", pa$1);
114009  				}
114010  				_r$22 = connectReq.Write(conn$3); /* */ $s = 60; case 60: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; }
114011  				_r$22;
114012  				br = bufio.NewReader(conn$3);
114013  				_r$23 = ReadResponse(br, connectReq); /* */ $s = 61; case 61: if($c) { $c = false; _r$23 = _r$23.$blk(); } if (_r$23 && _r$23.$blk !== undefined) { break s; }
114014  				_tuple$7 = _r$23;
114015  				resp = _tuple$7[0];
114016  				err$5 = _tuple$7[1];
114017  				/* */ if (!($interfaceIsEqual(err$5, $ifaceNil))) { $s = 62; continue; }
114018  				/* */ $s = 63; continue;
114019  				/* if (!($interfaceIsEqual(err$5, $ifaceNil))) { */ case 62:
114020  					_r$24 = conn$3.Close(); /* */ $s = 64; case 64: if($c) { $c = false; _r$24 = _r$24.$blk(); } if (_r$24 && _r$24.$blk !== undefined) { break s; }
114021  					_r$24;
114022  					$s = -1; return [ptrType$102.nil, err$5];
114023  				/* } */ case 63:
114024  				/* */ if (!((resp.StatusCode === 200))) { $s = 65; continue; }
114025  				/* */ $s = 66; continue;
114026  				/* if (!((resp.StatusCode === 200))) { */ case 65:
114027  					f = strings.SplitN(resp.Status, " ", 2);
114028  					_r$25 = conn$3.Close(); /* */ $s = 67; case 67: if($c) { $c = false; _r$25 = _r$25.$blk(); } if (_r$25 && _r$25.$blk !== undefined) { break s; }
114029  					_r$25;
114030  					if (f.$length < 2) {
114031  						$s = -1; return [ptrType$102.nil, errors.New("unknown status code")];
114032  					}
114033  					$s = -1; return [ptrType$102.nil, errors.New((1 >= f.$length ? ($throwRuntimeError("index out of range"), undefined) : f.$array[f.$offset + 1]))];
114034  				/* } */ case 66:
114035  			/* } */ case 49:
114036  		case 44:
114037  		/* */ if (!(cm[0].proxyURL === ptrType$20.nil) && cm[0].targetScheme === "https") { $s = 68; continue; }
114038  		/* */ $s = 69; continue;
114039  		/* if (!(cm[0].proxyURL === ptrType$20.nil) && cm[0].targetScheme === "https") { */ case 68:
114040  			_r$26 = pconn.addTLS(cm[0].tlsHost(), trace); /* */ $s = 70; case 70: if($c) { $c = false; _r$26 = _r$26.$blk(); } if (_r$26 && _r$26.$blk !== undefined) { break s; }
114041  			err$6 = _r$26;
114042  			if (!($interfaceIsEqual(err$6, $ifaceNil))) {
114043  				$s = -1; return [ptrType$102.nil, err$6];
114044  			}
114045  		/* } */ case 69:
114046  		s = pconn.tlsState;
114047  		/* */ if (!(s === ptrType$18.nil) && s.NegotiatedProtocolIsMutual && !(s.NegotiatedProtocol === "")) { $s = 71; continue; }
114048  		/* */ $s = 72; continue;
114049  		/* if (!(s === ptrType$18.nil) && s.NegotiatedProtocolIsMutual && !(s.NegotiatedProtocol === "")) { */ case 71:
114050  			_tuple$8 = (_entry = t.TLSNextProto[$String.keyFor(s.NegotiatedProtocol)], _entry !== undefined ? [_entry.v, true] : [$throwNilPointerError, false]);
114051  			next = _tuple$8[0];
114052  			ok$1 = _tuple$8[1];
114053  			/* */ if (ok$1) { $s = 73; continue; }
114054  			/* */ $s = 74; continue;
114055  			/* if (ok$1) { */ case 73:
114056  				_r$27 = next(cm[0].targetAddr, $assertType(pconn.conn, ptrType$99)); /* */ $s = 75; case 75: if($c) { $c = false; _r$27 = _r$27.$blk(); } if (_r$27 && _r$27.$blk !== undefined) { break s; }
114057  				$s = -1; return [new persistConn.ptr(_r$27, ptrType$22.nil, new connectMethodKey.ptr("", "", ""), $ifaceNil, ptrType$18.nil, ptrType$72.nil, ptrType$10.nil, new $Int64(0, 0), $chanNil, $chanNil, $chanNil, false, false, new $Int64(0, 0), $chanNil, $chanNil, new time.Time.ptr(new $Uint64(0, 0), new $Int64(0, 0), ptrType$1.nil), ptrType$56.nil, new sync.Mutex.ptr(0, 0), 0, $ifaceNil, $ifaceNil, false, false, $throwNilPointerError), $ifaceNil];
114058  			/* } */ case 74:
114059  		/* } */ case 72:
114060  		pconn.br = bufio.NewReader(pconn);
114061  		pconn.bw = bufio.NewWriter((x$4 = new persistConnWriter.ptr(pconn), new x$4.constructor.elem(x$4)));
114062  		$go($methodVal(pconn, "readLoop"), []);
114063  		$go($methodVal(pconn, "writeLoop"), []);
114064  		$s = -1; return [pconn, $ifaceNil];
114065  		/* */ } return; } if ($f === undefined) { $f = { $blk: Transport.ptr.prototype.dialConn }; } $f._arg = _arg; $f._arg$1 = _arg$1; $f._arg$2 = _arg$2; $f._arg$3 = _arg$3; $f._arg$4 = _arg$4; $f._arg$5 = _arg$5; $f._entry = _entry; $f._r$1 = _r$1; $f._r$10 = _r$10; $f._r$11 = _r$11; $f._r$12 = _r$12; $f._r$13 = _r$13; $f._r$14 = _r$14; $f._r$15 = _r$15; $f._r$16 = _r$16; $f._r$17 = _r$17; $f._r$18 = _r$18; $f._r$19 = _r$19; $f._r$2 = _r$2; $f._r$20 = _r$20; $f._r$21 = _r$21; $f._r$22 = _r$22; $f._r$23 = _r$23; $f._r$24 = _r$24; $f._r$25 = _r$25; $f._r$26 = _r$26; $f._r$27 = _r$27; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._r$8 = _r$8; $f._r$9 = _r$9; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f._tuple$4 = _tuple$4; $f._tuple$5 = _tuple$5; $f._tuple$6 = _tuple$6; $f._tuple$7 = _tuple$7; $f._tuple$8 = _tuple$8; $f.auth = auth; $f.br = br; $f.cm = cm; $f.conn$1 = conn$1; $f.conn$2 = conn$2; $f.conn$3 = conn$3; $f.connectReq = connectReq; $f.cs = cs; $f.ctx = ctx; $f.err = err; $f.err$1 = err$1; $f.err$2 = err$2; $f.err$3 = err$3; $f.err$4 = err$4; $f.err$5 = err$5; $f.err$6 = err$6; $f.f = f; $f.firstTLSHost = firstTLSHost; $f.hdr = hdr; $f.next = next; $f.ok = ok; $f.ok$1 = ok$1; $f.p = p; $f.pa = pa; $f.pa$1 = pa$1; $f.pconn = pconn; $f.resp = resp; $f.s = s; $f.t = t; $f.tc = tc; $f.trace = trace; $f.u = u; $f.wrapErr = wrapErr; $f.x$4 = x$4; $f.$s = $s; $f.$r = $r; return $f;
114066  	};
114067  	Transport.prototype.dialConn = function(ctx, cm) { return this.$val.dialConn(ctx, cm); };
114068  	persistConnWriter.ptr.prototype.Write = function(p) {
114069  		var _r$1, _tuple, err, n, p, w, x$4, x$5, $s, $r;
114070  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; _tuple = $f._tuple; err = $f.err; n = $f.n; p = $f.p; w = $f.w; x$4 = $f.x$4; x$5 = $f.x$5; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
114071  		n = 0;
114072  		err = $ifaceNil;
114073  		w = this;
114074  		_r$1 = w.pc.conn.Write(p); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
114075  		_tuple = _r$1;
114076  		n = _tuple[0];
114077  		err = _tuple[1];
114078  		w.pc.nwrite = (x$4 = w.pc.nwrite, x$5 = (new $Int64(0, n)), new $Int64(x$4.$high + x$5.$high, x$4.$low + x$5.$low));
114079  		$s = -1; return [n, err];
114080  		/* */ } return; } if ($f === undefined) { $f = { $blk: persistConnWriter.ptr.prototype.Write }; } $f._r$1 = _r$1; $f._tuple = _tuple; $f.err = err; $f.n = n; $f.p = p; $f.w = w; $f.x$4 = x$4; $f.x$5 = x$5; $f.$s = $s; $f.$r = $r; return $f;
114081  	};
114082  	persistConnWriter.prototype.Write = function(p) { return this.$val.Write(p); };
114083  	connectMethod.ptr.prototype.key = function() {
114084  		var cm, proxyStr, targetAddr;
114085  		cm = this;
114086  		proxyStr = "";
114087  		targetAddr = cm.targetAddr;
114088  		if (!(cm.proxyURL === ptrType$20.nil)) {
114089  			proxyStr = cm.proxyURL.String();
114090  			if ((cm.proxyURL.Scheme === "http" || cm.proxyURL.Scheme === "https") && cm.targetScheme === "http") {
114091  				targetAddr = "";
114092  			}
114093  		}
114094  		return new connectMethodKey.ptr(proxyStr, cm.targetScheme, targetAddr);
114095  	};
114096  	connectMethod.prototype.key = function() { return this.$val.key(); };
114097  	connectMethod.ptr.prototype.scheme = function() {
114098  		var cm;
114099  		cm = this;
114100  		if (!(cm.proxyURL === ptrType$20.nil)) {
114101  			return cm.proxyURL.Scheme;
114102  		}
114103  		return cm.targetScheme;
114104  	};
114105  	connectMethod.prototype.scheme = function() { return this.$val.scheme(); };
114106  	connectMethod.ptr.prototype.addr = function() {
114107  		var _r$1, cm, $s, $r;
114108  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; cm = $f.cm; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
114109  		cm = this;
114110  		/* */ if (!(cm.proxyURL === ptrType$20.nil)) { $s = 1; continue; }
114111  		/* */ $s = 2; continue;
114112  		/* if (!(cm.proxyURL === ptrType$20.nil)) { */ case 1:
114113  			_r$1 = canonicalAddr(cm.proxyURL); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
114114  			$s = -1; return _r$1;
114115  		/* } */ case 2:
114116  		$s = -1; return cm.targetAddr;
114117  		/* */ } return; } if ($f === undefined) { $f = { $blk: connectMethod.ptr.prototype.addr }; } $f._r$1 = _r$1; $f.cm = cm; $f.$s = $s; $f.$r = $r; return $f;
114118  	};
114119  	connectMethod.prototype.addr = function() { return this.$val.addr(); };
114120  	connectMethod.ptr.prototype.tlsHost = function() {
114121  		var cm, h;
114122  		cm = this;
114123  		h = cm.targetAddr;
114124  		if (hasPort(h)) {
114125  			h = $substring(h, 0, strings.LastIndex(h, ":"));
114126  		}
114127  		return h;
114128  	};
114129  	connectMethod.prototype.tlsHost = function() { return this.$val.tlsHost(); };
114130  	connectMethodKey.ptr.prototype.String = function() {
114131  		var _r$1, k, $s, $r;
114132  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; k = $f.k; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
114133  		k = this;
114134  		_r$1 = fmt.Sprintf("%s|%s|%s", new sliceType([new $String(k.proxy), new $String(k.scheme), new $String(k.addr)])); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
114135  		$s = -1; return _r$1;
114136  		/* */ } return; } if ($f === undefined) { $f = { $blk: connectMethodKey.ptr.prototype.String }; } $f._r$1 = _r$1; $f.k = k; $f.$s = $s; $f.$r = $r; return $f;
114137  	};
114138  	connectMethodKey.prototype.String = function() { return this.$val.String(); };
114139  	persistConn.ptr.prototype.maxHeaderResponseSize = function() {
114140  		var pc, v;
114141  		pc = this;
114142  		v = pc.t.MaxResponseHeaderBytes;
114143  		if (!((v.$high === 0 && v.$low === 0))) {
114144  			return v;
114145  		}
114146  		return new $Int64(0, 10485760);
114147  	};
114148  	persistConn.prototype.maxHeaderResponseSize = function() { return this.$val.maxHeaderResponseSize(); };
114149  	persistConn.ptr.prototype.Read = function(p) {
114150  		var _r$1, _r$2, _tmp, _tmp$1, _tuple, err, n, p, pc, x$4, x$5, x$6, x$7, x$8, $s, $r;
114151  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; _r$2 = $f._r$2; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tuple = $f._tuple; err = $f.err; n = $f.n; p = $f.p; pc = $f.pc; x$4 = $f.x$4; x$5 = $f.x$5; x$6 = $f.x$6; x$7 = $f.x$7; x$8 = $f.x$8; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
114152  		n = 0;
114153  		err = $ifaceNil;
114154  		pc = this;
114155  		/* */ if ((x$4 = pc.readLimit, (x$4.$high < 0 || (x$4.$high === 0 && x$4.$low <= 0)))) { $s = 1; continue; }
114156  		/* */ $s = 2; continue;
114157  		/* if ((x$4 = pc.readLimit, (x$4.$high < 0 || (x$4.$high === 0 && x$4.$low <= 0)))) { */ case 1:
114158  			_tmp = 0;
114159  			_r$1 = fmt.Errorf("read limit of %d bytes exhausted", new sliceType([pc.maxHeaderResponseSize()])); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
114160  			_tmp$1 = _r$1;
114161  			n = _tmp;
114162  			err = _tmp$1;
114163  			$s = -1; return [n, err];
114164  		/* } */ case 2:
114165  		if ((x$5 = (new $Int64(0, p.$length)), x$6 = pc.readLimit, (x$5.$high > x$6.$high || (x$5.$high === x$6.$high && x$5.$low > x$6.$low)))) {
114166  			p = $subslice(p, 0, $flatten64(pc.readLimit));
114167  		}
114168  		_r$2 = pc.conn.Read(p); /* */ $s = 4; case 4: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
114169  		_tuple = _r$2;
114170  		n = _tuple[0];
114171  		err = _tuple[1];
114172  		if ($interfaceIsEqual(err, io.EOF)) {
114173  			pc.sawEOF = true;
114174  		}
114175  		pc.readLimit = (x$7 = pc.readLimit, x$8 = (new $Int64(0, n)), new $Int64(x$7.$high - x$8.$high, x$7.$low - x$8.$low));
114176  		$s = -1; return [n, err];
114177  		/* */ } return; } if ($f === undefined) { $f = { $blk: persistConn.ptr.prototype.Read }; } $f._r$1 = _r$1; $f._r$2 = _r$2; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tuple = _tuple; $f.err = err; $f.n = n; $f.p = p; $f.pc = pc; $f.x$4 = x$4; $f.x$5 = x$5; $f.x$6 = x$6; $f.x$7 = x$7; $f.x$8 = x$8; $f.$s = $s; $f.$r = $r; return $f;
114178  	};
114179  	persistConn.prototype.Read = function(p) { return this.$val.Read(p); };
114180  	persistConn.ptr.prototype.isBroken = function() {
114181  		var b, pc, $s, $r;
114182  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; b = $f.b; pc = $f.pc; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
114183  		pc = this;
114184  		$r = pc.mu.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
114185  		b = !($interfaceIsEqual(pc.closed, $ifaceNil));
114186  		$r = pc.mu.Unlock(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
114187  		$s = -1; return b;
114188  		/* */ } return; } if ($f === undefined) { $f = { $blk: persistConn.ptr.prototype.isBroken }; } $f.b = b; $f.pc = pc; $f.$s = $s; $f.$r = $r; return $f;
114189  	};
114190  	persistConn.prototype.isBroken = function() { return this.$val.isBroken(); };
114191  	persistConn.ptr.prototype.canceled = function() {
114192  		var pc, $s, $deferred, $r;
114193  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; pc = $f.pc; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
114194  		pc = this;
114195  		$r = pc.mu.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
114196  		$deferred.push([$methodVal(pc.mu, "Unlock"), []]);
114197  		$s = -1; return pc.canceledErr;
114198  		/* */ } return; } } catch(err) { $err = err; $s = -1; return $ifaceNil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: persistConn.ptr.prototype.canceled }; } $f.pc = pc; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
114199  	};
114200  	persistConn.prototype.canceled = function() { return this.$val.canceled(); };
114201  	persistConn.ptr.prototype.isReused = function() {
114202  		var pc, r, $s, $r;
114203  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; pc = $f.pc; r = $f.r; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
114204  		pc = this;
114205  		$r = pc.mu.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
114206  		r = pc.reused;
114207  		$r = pc.mu.Unlock(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
114208  		$s = -1; return r;
114209  		/* */ } return; } if ($f === undefined) { $f = { $blk: persistConn.ptr.prototype.isReused }; } $f.pc = pc; $f.r = r; $f.$s = $s; $f.$r = $r; return $f;
114210  	};
114211  	persistConn.prototype.isReused = function() { return this.$val.isReused(); };
114212  	persistConn.ptr.prototype.gotIdleConnTrace = function(idleAt) {
114213  		var idleAt, pc, t, $s, $deferred, $r;
114214  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; idleAt = $f.idleAt; pc = $f.pc; t = $f.t; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
114215  		t = new httptrace.GotConnInfo.ptr($ifaceNil, false, false, new time.Duration(0, 0));
114216  		pc = this;
114217  		$r = pc.mu.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
114218  		$deferred.push([$methodVal(pc.mu, "Unlock"), []]);
114219  		t.Reused = pc.reused;
114220  		t.Conn = pc.conn;
114221  		t.WasIdle = true;
114222  		if (!$clone(idleAt, time.Time).IsZero()) {
114223  			t.IdleTime = time.Since($clone(idleAt, time.Time));
114224  		}
114225  		$s = -1; return t;
114226  		/* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if (!$curGoroutine.asleep) { return  t; } if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: persistConn.ptr.prototype.gotIdleConnTrace }; } $f.idleAt = idleAt; $f.pc = pc; $f.t = t; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
114227  	};
114228  	persistConn.prototype.gotIdleConnTrace = function(idleAt) { return this.$val.gotIdleConnTrace(idleAt); };
114229  	persistConn.ptr.prototype.cancelRequest = function(err) {
114230  		var err, pc, $s, $deferred, $r;
114231  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; err = $f.err; pc = $f.pc; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
114232  		pc = this;
114233  		$r = pc.mu.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
114234  		$deferred.push([$methodVal(pc.mu, "Unlock"), []]);
114235  		pc.canceledErr = err;
114236  		$r = pc.closeLocked(errRequestCanceled); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
114237  		$s = -1; return;
114238  		/* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: persistConn.ptr.prototype.cancelRequest }; } $f.err = err; $f.pc = pc; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
114239  	};
114240  	persistConn.prototype.cancelRequest = function(err) { return this.$val.cancelRequest(err); };
114241  	persistConn.ptr.prototype.closeConnIfStillIdle = function() {
114242  		var _entry, _tuple, ok, pc, t, $s, $deferred, $r;
114243  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _entry = $f._entry; _tuple = $f._tuple; ok = $f.ok; pc = $f.pc; t = $f.t; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
114244  		pc = this;
114245  		t = pc.t;
114246  		$r = t.idleMu.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
114247  		$deferred.push([$methodVal(t.idleMu, "Unlock"), []]);
114248  		_tuple = (_entry = t.idleLRU.m[ptrType$102.keyFor(pc)], _entry !== undefined ? [_entry.v, true] : [ptrType$104.nil, false]);
114249  		ok = _tuple[1];
114250  		if (!ok) {
114251  			$s = -1; return;
114252  		}
114253  		t.removeIdleConnLocked(pc);
114254  		$r = pc.close(errIdleConnTimeout); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
114255  		$s = -1; return;
114256  		/* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: persistConn.ptr.prototype.closeConnIfStillIdle }; } $f._entry = _entry; $f._tuple = _tuple; $f.ok = ok; $f.pc = pc; $f.t = t; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
114257  	};
114258  	persistConn.prototype.closeConnIfStillIdle = function() { return this.$val.closeConnIfStillIdle(); };
114259  	persistConn.ptr.prototype.mapRoundTripError = function(req, startBytesWritten, err) {
114260  		var _r$1, _r$2, _r$3, _r$4, _tuple, cerr, err, ok, pc, req, reqErr, startBytesWritten, x$4, x$5, $s, $r;
114261  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _tuple = $f._tuple; cerr = $f.cerr; err = $f.err; ok = $f.ok; pc = $f.pc; req = $f.req; reqErr = $f.reqErr; startBytesWritten = $f.startBytesWritten; x$4 = $f.x$4; x$5 = $f.x$5; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
114262  		pc = this;
114263  		if ($interfaceIsEqual(err, $ifaceNil)) {
114264  			$s = -1; return $ifaceNil;
114265  		}
114266  		_r$1 = pc.canceled(); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
114267  		cerr = _r$1;
114268  		if (!($interfaceIsEqual(cerr, $ifaceNil))) {
114269  			$s = -1; return cerr;
114270  		}
114271  		$r = req.mu.Lock(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
114272  		reqErr = req.err;
114273  		$r = req.mu.Unlock(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
114274  		if (!($interfaceIsEqual(reqErr, $ifaceNil))) {
114275  			$s = -1; return reqErr;
114276  		}
114277  		if ($interfaceIsEqual(err, errServerClosedIdle)) {
114278  			$s = -1; return err;
114279  		}
114280  		_tuple = $assertType(err, transportReadFromServerError, true);
114281  		ok = _tuple[1];
114282  		if (ok) {
114283  			$s = -1; return err;
114284  		}
114285  		_r$2 = pc.isBroken(); /* */ $s = 6; case 6: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
114286  		/* */ if (_r$2) { $s = 4; continue; }
114287  		/* */ $s = 5; continue;
114288  		/* if (_r$2) { */ case 4:
114289  			_r$3 = $recv(pc.writeLoopDone); /* */ $s = 7; case 7: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
114290  			_r$3[0];
114291  			if ((x$4 = pc.nwrite, (x$4.$high === startBytesWritten.$high && x$4.$low === startBytesWritten.$low))) {
114292  				$s = -1; return (x$5 = new nothingWrittenError.ptr(err), new x$5.constructor.elem(x$5));
114293  			}
114294  			_r$4 = fmt.Errorf("net/http: HTTP/1.x transport connection broken: %v", new sliceType([err])); /* */ $s = 8; case 8: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
114295  			$s = -1; return _r$4;
114296  		/* } */ case 5:
114297  		$s = -1; return err;
114298  		/* */ } return; } if ($f === undefined) { $f = { $blk: persistConn.ptr.prototype.mapRoundTripError }; } $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._tuple = _tuple; $f.cerr = cerr; $f.err = err; $f.ok = ok; $f.pc = pc; $f.req = req; $f.reqErr = reqErr; $f.startBytesWritten = startBytesWritten; $f.x$4 = x$4; $f.x$5 = x$5; $f.$s = $s; $f.$r = $r; return $f;
114299  	};
114300  	persistConn.prototype.mapRoundTripError = function(req, startBytesWritten, err) { return this.$val.mapRoundTripError(req, startBytesWritten, err); };
114301  	persistConn.ptr.prototype.readLoop = function() {
114302  		var _arg, _arg$1, _arg$2, _r$1, _r$10, _r$11, _r$12, _r$13, _r$14, _r$15, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _selection, _selection$1, _selection$2, _selection$3, _tuple, _tuple$1, _v, _v$1, _v$2, _v$3, alive, body$1, bodyEOF, closeErr, eofc, err, hasBody, pc, rc, resp, testHookReadLoopBeforeNextRead$1, trace, tryPutIdleConn, waitForBodyRead, x$4, x$5, x$6, $s, $deferred, $r;
114303  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _arg = $f._arg; _arg$1 = $f._arg$1; _arg$2 = $f._arg$2; _r$1 = $f._r$1; _r$10 = $f._r$10; _r$11 = $f._r$11; _r$12 = $f._r$12; _r$13 = $f._r$13; _r$14 = $f._r$14; _r$15 = $f._r$15; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _r$8 = $f._r$8; _r$9 = $f._r$9; _selection = $f._selection; _selection$1 = $f._selection$1; _selection$2 = $f._selection$2; _selection$3 = $f._selection$3; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _v = $f._v; _v$1 = $f._v$1; _v$2 = $f._v$2; _v$3 = $f._v$3; alive = $f.alive; body$1 = $f.body$1; bodyEOF = $f.bodyEOF; closeErr = $f.closeErr; eofc = $f.eofc; err = $f.err; hasBody = $f.hasBody; pc = $f.pc; rc = $f.rc; resp = $f.resp; testHookReadLoopBeforeNextRead$1 = $f.testHookReadLoopBeforeNextRead$1; trace = $f.trace; tryPutIdleConn = $f.tryPutIdleConn; waitForBodyRead = $f.waitForBodyRead; x$4 = $f.x$4; x$5 = $f.x$5; x$6 = $f.x$6; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
114304  		closeErr = [closeErr];
114305  		eofc = [eofc];
114306  		pc = [pc];
114307  		pc[0] = this;
114308  		closeErr[0] = errReadLoopExiting;
114309  		$deferred.push([(function(closeErr, eofc, pc) { return function $b() {
114310  			var $s, $r;
114311  			/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
114312  			$r = pc[0].close(closeErr[0]); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
114313  			$r = pc[0].t.removeIdleConn(pc[0]); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
114314  			$s = -1; return;
114315  			/* */ } return; } if ($f === undefined) { $f = { $blk: $b }; } $f.$s = $s; $f.$r = $r; return $f;
114316  		}; })(closeErr, eofc, pc), []]);
114317  		tryPutIdleConn = (function(closeErr, eofc, pc) { return function $b(trace) {
114318  			var _r$1, err, trace, $s, $r;
114319  			/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; err = $f.err; trace = $f.trace; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
114320  			_r$1 = pc[0].t.tryPutIdleConn(pc[0]); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
114321  			err = _r$1;
114322  			/* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 2; continue; }
114323  			/* */ $s = 3; continue;
114324  			/* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 2:
114325  				closeErr[0] = err;
114326  				/* */ if (!(trace === ptrType$47.nil) && !(trace.PutIdleConn === $throwNilPointerError) && !($interfaceIsEqual(err, errKeepAlivesDisabled))) { $s = 4; continue; }
114327  				/* */ $s = 5; continue;
114328  				/* if (!(trace === ptrType$47.nil) && !(trace.PutIdleConn === $throwNilPointerError) && !($interfaceIsEqual(err, errKeepAlivesDisabled))) { */ case 4:
114329  					$r = trace.PutIdleConn(err); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
114330  				/* } */ case 5:
114331  				$s = -1; return false;
114332  			/* } */ case 3:
114333  			/* */ if (!(trace === ptrType$47.nil) && !(trace.PutIdleConn === $throwNilPointerError)) { $s = 7; continue; }
114334  			/* */ $s = 8; continue;
114335  			/* if (!(trace === ptrType$47.nil) && !(trace.PutIdleConn === $throwNilPointerError)) { */ case 7:
114336  				$r = trace.PutIdleConn($ifaceNil); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
114337  			/* } */ case 8:
114338  			$s = -1; return true;
114339  			/* */ } return; } if ($f === undefined) { $f = { $blk: $b }; } $f._r$1 = _r$1; $f.err = err; $f.trace = trace; $f.$s = $s; $f.$r = $r; return $f;
114340  		}; })(closeErr, eofc, pc);
114341  		eofc[0] = new $Chan(structType, 0);
114342  		$deferred.push([function(_arg) { $close(_arg); }, [eofc[0]]]);
114343  		$r = testHookMu.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
114344  		testHookReadLoopBeforeNextRead$1 = testHookReadLoopBeforeNextRead;
114345  		$r = testHookMu.Unlock(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
114346  		alive = true;
114347  		/* while (true) { */ case 3:
114348  			/* if (!(alive)) { break; } */ if(!(alive)) { $s = 4; continue; }
114349  			waitForBodyRead = [waitForBodyRead];
114350  			pc[0].readLimit = pc[0].maxHeaderResponseSize();
114351  			_r$1 = pc[0].br.Peek(1); /* */ $s = 5; case 5: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
114352  			_tuple = _r$1;
114353  			err = _tuple[1];
114354  			$r = pc[0].mu.Lock(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
114355  			/* */ if (pc[0].numExpectedResponses === 0) { $s = 7; continue; }
114356  			/* */ $s = 8; continue;
114357  			/* if (pc[0].numExpectedResponses === 0) { */ case 7:
114358  				$r = pc[0].readLoopPeekFailLocked(err); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
114359  				$r = pc[0].mu.Unlock(); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
114360  				$s = -1; return;
114361  			/* } */ case 8:
114362  			$r = pc[0].mu.Unlock(); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
114363  			_r$2 = $recv(pc[0].reqch); /* */ $s = 12; case 12: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
114364  			rc = $clone(_r$2[0], requestAndChan);
114365  			_r$3 = httptrace.ContextClientTrace(rc.req.Context()); /* */ $s = 13; case 13: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
114366  			trace = _r$3;
114367  			resp = ptrType$17.nil;
114368  			/* */ if ($interfaceIsEqual(err, $ifaceNil)) { $s = 14; continue; }
114369  			/* */ $s = 15; continue;
114370  			/* if ($interfaceIsEqual(err, $ifaceNil)) { */ case 14:
114371  				_r$4 = pc[0].readResponse($clone(rc, requestAndChan), trace); /* */ $s = 17; case 17: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
114372  				_tuple$1 = _r$4;
114373  				resp = _tuple$1[0];
114374  				err = _tuple$1[1];
114375  				$s = 16; continue;
114376  			/* } else { */ case 15:
114377  				err = (x$4 = new transportReadFromServerError.ptr(err), new x$4.constructor.elem(x$4));
114378  				closeErr[0] = err;
114379  			/* } */ case 16:
114380  			/* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 18; continue; }
114381  			/* */ $s = 19; continue;
114382  			/* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 18:
114383  				/* */ if ((x$5 = pc[0].readLimit, (x$5.$high < 0 || (x$5.$high === 0 && x$5.$low <= 0)))) { $s = 20; continue; }
114384  				/* */ $s = 21; continue;
114385  				/* if ((x$5 = pc[0].readLimit, (x$5.$high < 0 || (x$5.$high === 0 && x$5.$low <= 0)))) { */ case 20:
114386  					_r$5 = fmt.Errorf("net/http: server response headers exceeded %d bytes; aborted", new sliceType([pc[0].maxHeaderResponseSize()])); /* */ $s = 22; case 22: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
114387  					err = _r$5;
114388  				/* } */ case 21:
114389  				_r$6 = $select([[rc.ch, new responseAndError.ptr(ptrType$17.nil, err)], [rc.callerGone]]); /* */ $s = 23; case 23: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
114390  				_selection = _r$6;
114391  				if (_selection[0] === 0) {
114392  				} else if (_selection[0] === 1) {
114393  					$s = -1; return;
114394  				}
114395  				$s = -1; return;
114396  			/* } */ case 19:
114397  			pc[0].readLimit = new $Int64(2147483647, 4294967295);
114398  			$r = pc[0].mu.Lock(); /* */ $s = 24; case 24: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
114399  			pc[0].numExpectedResponses = pc[0].numExpectedResponses - (1) >> 0;
114400  			$r = pc[0].mu.Unlock(); /* */ $s = 25; case 25: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
114401  			hasBody = !(rc.req.Method === "HEAD") && !((x$6 = resp.ContentLength, (x$6.$high === 0 && x$6.$low === 0)));
114402  			if (resp.Close || rc.req.Close || resp.StatusCode <= 199) {
114403  				alive = false;
114404  			}
114405  			/* */ if (!hasBody) { $s = 26; continue; }
114406  			/* */ $s = 27; continue;
114407  			/* if (!hasBody) { */ case 26:
114408  				$r = pc[0].t.setReqCanceler(rc.req, $throwNilPointerError); /* */ $s = 28; case 28: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
114409  				if (!(alive && !pc[0].sawEOF)) { _v$1 = false; $s = 30; continue s; }
114410  				_r$7 = pc[0].wroteRequest(); /* */ $s = 31; case 31: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
114411  				_v$1 = _r$7; case 30:
114412  				if (!(_v$1)) { _v = false; $s = 29; continue s; }
114413  				_r$8 = tryPutIdleConn(trace); /* */ $s = 32; case 32: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
114414  				_v = _r$8; case 29:
114415  				alive = _v;
114416  				_r$9 = $select([[rc.ch, new responseAndError.ptr(resp, $ifaceNil)], [rc.callerGone]]); /* */ $s = 33; case 33: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
114417  				_selection$1 = _r$9;
114418  				if (_selection$1[0] === 0) {
114419  				} else if (_selection$1[0] === 1) {
114420  					$s = -1; return;
114421  				}
114422  				$r = testHookReadLoopBeforeNextRead$1(); /* */ $s = 34; case 34: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
114423  				/* continue; */ $s = 3; continue;
114424  			/* } */ case 27:
114425  			waitForBodyRead[0] = new $Chan($Bool, 2);
114426  			body$1 = new bodyEOFSignal.ptr(resp.Body, new sync.Mutex.ptr(0, 0), false, $ifaceNil, (function(closeErr, eofc, pc, waitForBodyRead) { return function $b(err$1) {
114427  				var _r$10, _r$11, cerr, err$1, isEOF, $s, $r;
114428  				/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$10 = $f._r$10; _r$11 = $f._r$11; cerr = $f.cerr; err$1 = $f.err$1; isEOF = $f.isEOF; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
114429  				isEOF = $interfaceIsEqual(err$1, io.EOF);
114430  				$r = $send(waitForBodyRead[0], isEOF); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
114431  				/* */ if (isEOF) { $s = 2; continue; }
114432  				/* */ if (!($interfaceIsEqual(err$1, $ifaceNil))) { $s = 3; continue; }
114433  				/* */ $s = 4; continue;
114434  				/* if (isEOF) { */ case 2:
114435  					_r$10 = $recv(eofc[0]); /* */ $s = 5; case 5: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
114436  					_r$10[0];
114437  					$s = 4; continue;
114438  				/* } else if (!($interfaceIsEqual(err$1, $ifaceNil))) { */ case 3:
114439  					_r$11 = pc[0].canceled(); /* */ $s = 6; case 6: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; }
114440  					cerr = _r$11;
114441  					if (!($interfaceIsEqual(cerr, $ifaceNil))) {
114442  						$s = -1; return cerr;
114443  					}
114444  				/* } */ case 4:
114445  				$s = -1; return err$1;
114446  				/* */ } return; } if ($f === undefined) { $f = { $blk: $b }; } $f._r$10 = _r$10; $f._r$11 = _r$11; $f.cerr = cerr; $f.err$1 = err$1; $f.isEOF = isEOF; $f.$s = $s; $f.$r = $r; return $f;
114447  			}; })(closeErr, eofc, pc, waitForBodyRead), (function(closeErr, eofc, pc, waitForBodyRead) { return function $b() {
114448  				var _r$10, $s, $r;
114449  				/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$10 = $f._r$10; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
114450  				$r = $send(waitForBodyRead[0], false); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
114451  				_r$10 = $recv(eofc[0]); /* */ $s = 2; case 2: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
114452  				_r$10[0];
114453  				$s = -1; return $ifaceNil;
114454  				/* */ } return; } if ($f === undefined) { $f = { $blk: $b }; } $f._r$10 = _r$10; $f.$s = $s; $f.$r = $r; return $f;
114455  			}; })(closeErr, eofc, pc, waitForBodyRead));
114456  			resp.Body = body$1;
114457  			if (rc.addedGzip && strings.EqualFold(new Header(resp.Header).Get("Content-Encoding"), "gzip")) {
114458  				resp.Body = new gzipReader.ptr(body$1, ptrType$75.nil, $ifaceNil);
114459  				new Header(resp.Header).Del("Content-Encoding");
114460  				new Header(resp.Header).Del("Content-Length");
114461  				resp.ContentLength = new $Int64(-1, 4294967295);
114462  				resp.Uncompressed = true;
114463  			}
114464  			_r$10 = $select([[rc.ch, new responseAndError.ptr(resp, $ifaceNil)], [rc.callerGone]]); /* */ $s = 35; case 35: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
114465  			_selection$2 = _r$10;
114466  			if (_selection$2[0] === 0) {
114467  			} else if (_selection$2[0] === 1) {
114468  				$s = -1; return;
114469  			}
114470  			_r$11 = rc.req.Context().Done(); /* */ $s = 36; case 36: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; }
114471  			_r$12 = $select([[waitForBodyRead[0]], [rc.req.Cancel], [_r$11], [pc[0].closech]]); /* */ $s = 37; case 37: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; }
114472  			_selection$3 = _r$12;
114473  			/* */ if (_selection$3[0] === 0) { $s = 38; continue; }
114474  			/* */ if (_selection$3[0] === 1) { $s = 39; continue; }
114475  			/* */ if (_selection$3[0] === 2) { $s = 40; continue; }
114476  			/* */ if (_selection$3[0] === 3) { $s = 41; continue; }
114477  			/* */ $s = 42; continue;
114478  			/* if (_selection$3[0] === 0) { */ case 38:
114479  				bodyEOF = _selection$3[1][0];
114480  				$r = pc[0].t.setReqCanceler(rc.req, $throwNilPointerError); /* */ $s = 43; case 43: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
114481  				if (!(alive && bodyEOF && !pc[0].sawEOF)) { _v$3 = false; $s = 45; continue s; }
114482  				_r$13 = pc[0].wroteRequest(); /* */ $s = 46; case 46: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; }
114483  				_v$3 = _r$13; case 45:
114484  				if (!(_v$3)) { _v$2 = false; $s = 44; continue s; }
114485  				_r$14 = tryPutIdleConn(trace); /* */ $s = 47; case 47: if($c) { $c = false; _r$14 = _r$14.$blk(); } if (_r$14 && _r$14.$blk !== undefined) { break s; }
114486  				_v$2 = _r$14; case 44:
114487  				alive = _v$2;
114488  				/* */ if (bodyEOF) { $s = 48; continue; }
114489  				/* */ $s = 49; continue;
114490  				/* if (bodyEOF) { */ case 48:
114491  					$r = $send(eofc[0], $clone(new structType.ptr(), structType)); /* */ $s = 50; case 50: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
114492  				/* } */ case 49:
114493  				$s = 42; continue;
114494  			/* } else if (_selection$3[0] === 1) { */ case 39:
114495  				alive = false;
114496  				$r = pc[0].t.CancelRequest(rc.req); /* */ $s = 51; case 51: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
114497  				$s = 42; continue;
114498  			/* } else if (_selection$3[0] === 2) { */ case 40:
114499  				alive = false;
114500  				_arg$1 = rc.req;
114501  				_r$15 = rc.req.Context().Err(); /* */ $s = 52; case 52: if($c) { $c = false; _r$15 = _r$15.$blk(); } if (_r$15 && _r$15.$blk !== undefined) { break s; }
114502  				_arg$2 = _r$15;
114503  				$r = pc[0].t.cancelRequest(_arg$1, _arg$2); /* */ $s = 53; case 53: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
114504  				$s = 42; continue;
114505  			/* } else if (_selection$3[0] === 3) { */ case 41:
114506  				alive = false;
114507  			/* } */ case 42:
114508  			$r = testHookReadLoopBeforeNextRead$1(); /* */ $s = 54; case 54: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
114509  		/* } */ $s = 3; continue; case 4:
114510  		$s = -1; return;
114511  		/* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: persistConn.ptr.prototype.readLoop }; } $f._arg = _arg; $f._arg$1 = _arg$1; $f._arg$2 = _arg$2; $f._r$1 = _r$1; $f._r$10 = _r$10; $f._r$11 = _r$11; $f._r$12 = _r$12; $f._r$13 = _r$13; $f._r$14 = _r$14; $f._r$15 = _r$15; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._r$8 = _r$8; $f._r$9 = _r$9; $f._selection = _selection; $f._selection$1 = _selection$1; $f._selection$2 = _selection$2; $f._selection$3 = _selection$3; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._v = _v; $f._v$1 = _v$1; $f._v$2 = _v$2; $f._v$3 = _v$3; $f.alive = alive; $f.body$1 = body$1; $f.bodyEOF = bodyEOF; $f.closeErr = closeErr; $f.eofc = eofc; $f.err = err; $f.hasBody = hasBody; $f.pc = pc; $f.rc = rc; $f.resp = resp; $f.testHookReadLoopBeforeNextRead$1 = testHookReadLoopBeforeNextRead$1; $f.trace = trace; $f.tryPutIdleConn = tryPutIdleConn; $f.waitForBodyRead = waitForBodyRead; $f.x$4 = x$4; $f.x$5 = x$5; $f.x$6 = x$6; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
114512  	};
114513  	persistConn.prototype.readLoop = function() { return this.$val.readLoop(); };
114514  	persistConn.ptr.prototype.readLoopPeekFailLocked = function(peekErr) {
114515  		var _r$1, _r$2, _tuple, buf, n, pc, peekErr, $s, $r;
114516  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; _r$2 = $f._r$2; _tuple = $f._tuple; buf = $f.buf; n = $f.n; pc = $f.pc; peekErr = $f.peekErr; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
114517  		pc = this;
114518  		if (!($interfaceIsEqual(pc.closed, $ifaceNil))) {
114519  			$s = -1; return;
114520  		}
114521  		n = pc.br.Buffered();
114522  		/* */ if (n > 0) { $s = 1; continue; }
114523  		/* */ $s = 2; continue;
114524  		/* if (n > 0) { */ case 1:
114525  			_r$1 = pc.br.Peek(n); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
114526  			_tuple = _r$1;
114527  			buf = _tuple[0];
114528  			$r = log.Printf("Unsolicited response received on idle HTTP channel starting with %q; err=%v", new sliceType([buf, peekErr])); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
114529  		/* } */ case 2:
114530  		/* */ if ($interfaceIsEqual(peekErr, io.EOF)) { $s = 5; continue; }
114531  		/* */ $s = 6; continue;
114532  		/* if ($interfaceIsEqual(peekErr, io.EOF)) { */ case 5:
114533  			$r = pc.closeLocked(errServerClosedIdle); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
114534  			$s = 7; continue;
114535  		/* } else { */ case 6:
114536  			_r$2 = fmt.Errorf("readLoopPeekFailLocked: %v", new sliceType([peekErr])); /* */ $s = 9; case 9: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
114537  			$r = pc.closeLocked(_r$2); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
114538  		/* } */ case 7:
114539  		$s = -1; return;
114540  		/* */ } return; } if ($f === undefined) { $f = { $blk: persistConn.ptr.prototype.readLoopPeekFailLocked }; } $f._r$1 = _r$1; $f._r$2 = _r$2; $f._tuple = _tuple; $f.buf = buf; $f.n = n; $f.pc = pc; $f.peekErr = peekErr; $f.$s = $s; $f.$r = $r; return $f;
114541  	};
114542  	persistConn.prototype.readLoopPeekFailLocked = function(peekErr) { return this.$val.readLoopPeekFailLocked(peekErr); };
114543  	persistConn.ptr.prototype.readResponse = function(rc, trace) {
114544  		var _r$1, _r$2, _r$3, _tuple, _tuple$1, _tuple$2, err, err$1, pc, peek, rc, resp, trace, $s, $r;
114545  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; err = $f.err; err$1 = $f.err$1; pc = $f.pc; peek = $f.peek; rc = $f.rc; resp = $f.resp; trace = $f.trace; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
114546  		resp = ptrType$17.nil;
114547  		err = $ifaceNil;
114548  		pc = this;
114549  		/* */ if (!(trace === ptrType$47.nil) && !(trace.GotFirstResponseByte === $throwNilPointerError)) { $s = 1; continue; }
114550  		/* */ $s = 2; continue;
114551  		/* if (!(trace === ptrType$47.nil) && !(trace.GotFirstResponseByte === $throwNilPointerError)) { */ case 1:
114552  			_r$1 = pc.br.Peek(1); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
114553  			_tuple = _r$1;
114554  			peek = _tuple[0];
114555  			err$1 = _tuple[1];
114556  			/* */ if ($interfaceIsEqual(err$1, $ifaceNil) && (peek.$length === 1)) { $s = 4; continue; }
114557  			/* */ $s = 5; continue;
114558  			/* if ($interfaceIsEqual(err$1, $ifaceNil) && (peek.$length === 1)) { */ case 4:
114559  				$r = trace.GotFirstResponseByte(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
114560  			/* } */ case 5:
114561  		/* } */ case 2:
114562  		_r$2 = ReadResponse(pc.br, rc.req); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
114563  		_tuple$1 = _r$2;
114564  		resp = _tuple$1[0];
114565  		err = _tuple$1[1];
114566  		if (!($interfaceIsEqual(err, $ifaceNil))) {
114567  			$s = -1; return [resp, err];
114568  		}
114569  		/* */ if (!(rc.continueCh === $chanNil)) { $s = 8; continue; }
114570  		/* */ $s = 9; continue;
114571  		/* if (!(rc.continueCh === $chanNil)) { */ case 8:
114572  			/* */ if (resp.StatusCode === 100) { $s = 10; continue; }
114573  			/* */ $s = 11; continue;
114574  			/* if (resp.StatusCode === 100) { */ case 10:
114575  				/* */ if (!(trace === ptrType$47.nil) && !(trace.Got100Continue === $throwNilPointerError)) { $s = 13; continue; }
114576  				/* */ $s = 14; continue;
114577  				/* if (!(trace === ptrType$47.nil) && !(trace.Got100Continue === $throwNilPointerError)) { */ case 13:
114578  					$r = trace.Got100Continue(); /* */ $s = 15; case 15: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
114579  				/* } */ case 14:
114580  				$r = $send(rc.continueCh, $clone(new structType.ptr(), structType)); /* */ $s = 16; case 16: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
114581  				$s = 12; continue;
114582  			/* } else { */ case 11:
114583  				$close(rc.continueCh);
114584  			/* } */ case 12:
114585  		/* } */ case 9:
114586  		/* */ if (resp.StatusCode === 100) { $s = 17; continue; }
114587  		/* */ $s = 18; continue;
114588  		/* if (resp.StatusCode === 100) { */ case 17:
114589  			pc.readLimit = pc.maxHeaderResponseSize();
114590  			_r$3 = ReadResponse(pc.br, rc.req); /* */ $s = 19; case 19: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
114591  			_tuple$2 = _r$3;
114592  			resp = _tuple$2[0];
114593  			err = _tuple$2[1];
114594  			if (!($interfaceIsEqual(err, $ifaceNil))) {
114595  				$s = -1; return [resp, err];
114596  			}
114597  		/* } */ case 18:
114598  		resp.TLS = pc.tlsState;
114599  		$s = -1; return [resp, err];
114600  		/* */ } return; } if ($f === undefined) { $f = { $blk: persistConn.ptr.prototype.readResponse }; } $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f.err = err; $f.err$1 = err$1; $f.pc = pc; $f.peek = peek; $f.rc = rc; $f.resp = resp; $f.trace = trace; $f.$s = $s; $f.$r = $r; return $f;
114601  	};
114602  	persistConn.prototype.readResponse = function(rc, trace) { return this.$val.readResponse(rc, trace); };
114603  	persistConn.ptr.prototype.waitForContinue = function(continueCh) {
114604  		var continueCh, pc;
114605  		pc = this;
114606  		if (continueCh === $chanNil) {
114607  			return $throwNilPointerError;
114608  		}
114609  		return (function $b() {
114610  			var _r$1, _selection, _tuple, ok, timer, $s, $deferred, $r;
114611  			/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; _selection = $f._selection; _tuple = $f._tuple; ok = $f.ok; timer = $f.timer; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
114612  			timer = time.NewTimer(pc.t.ExpectContinueTimeout);
114613  			$deferred.push([$methodVal(timer, "Stop"), []]);
114614  			_r$1 = $select([[continueCh], [timer.C], [pc.closech]]); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
114615  			_selection = _r$1;
114616  			if (_selection[0] === 0) {
114617  				_tuple = _selection[1];
114618  				ok = _tuple[1];
114619  				$s = -1; return ok;
114620  			} else if (_selection[0] === 1) {
114621  				$s = -1; return true;
114622  			} else if (_selection[0] === 2) {
114623  				$s = -1; return false;
114624  			}
114625  			$s = -1; return false;
114626  			/* */ } return; } } catch(err) { $err = err; $s = -1; return false; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: $b }; } $f._r$1 = _r$1; $f._selection = _selection; $f._tuple = _tuple; $f.ok = ok; $f.timer = timer; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
114627  		});
114628  	};
114629  	persistConn.prototype.waitForContinue = function(continueCh) { return this.$val.waitForContinue(continueCh); };
114630  	persistConn.ptr.prototype.writeLoop = function() {
114631  		var _arg, _r$1, _r$2, _r$3, _selection, _tuple, bre, err, ok, pc, startBytesWritten, wr, x$4, x$5, $s, $deferred, $r;
114632  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _arg = $f._arg; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _selection = $f._selection; _tuple = $f._tuple; bre = $f.bre; err = $f.err; ok = $f.ok; pc = $f.pc; startBytesWritten = $f.startBytesWritten; wr = $f.wr; x$4 = $f.x$4; x$5 = $f.x$5; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
114633  		pc = this;
114634  		$deferred.push([function(_arg) { $close(_arg); }, [pc.writeLoopDone]]);
114635  		/* while (true) { */ case 1:
114636  			_r$1 = $select([[pc.writech], [pc.closech]]); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
114637  			_selection = _r$1;
114638  			/* */ if (_selection[0] === 0) { $s = 4; continue; }
114639  			/* */ if (_selection[0] === 1) { $s = 5; continue; }
114640  			/* */ $s = 6; continue;
114641  			/* if (_selection[0] === 0) { */ case 4:
114642  				wr = $clone(_selection[1][0], writeRequest);
114643  				startBytesWritten = pc.nwrite;
114644  				_r$2 = wr.req.Request.write(pc.bw, pc.isProxy, wr.req.extra, pc.waitForContinue(wr.continueCh)); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
114645  				err = _r$2;
114646  				_tuple = $assertType(err, requestBodyReadError, true);
114647  				bre = $clone(_tuple[0], requestBodyReadError);
114648  				ok = _tuple[1];
114649  				/* */ if (ok) { $s = 8; continue; }
114650  				/* */ $s = 9; continue;
114651  				/* if (ok) { */ case 8:
114652  					err = bre.error;
114653  					$r = wr.req.setError(err); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
114654  				/* } */ case 9:
114655  				/* */ if ($interfaceIsEqual(err, $ifaceNil)) { $s = 11; continue; }
114656  				/* */ $s = 12; continue;
114657  				/* if ($interfaceIsEqual(err, $ifaceNil)) { */ case 11:
114658  					_r$3 = pc.bw.Flush(); /* */ $s = 13; case 13: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
114659  					err = _r$3;
114660  				/* } */ case 12:
114661  				/* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 14; continue; }
114662  				/* */ $s = 15; continue;
114663  				/* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 14:
114664  					$r = wr.req.Request.closeBody(); /* */ $s = 16; case 16: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
114665  					if ((x$4 = pc.nwrite, (x$4.$high === startBytesWritten.$high && x$4.$low === startBytesWritten.$low))) {
114666  						err = (x$5 = new nothingWrittenError.ptr(err), new x$5.constructor.elem(x$5));
114667  					}
114668  				/* } */ case 15:
114669  				$r = $send(pc.writeErrCh, err); /* */ $s = 17; case 17: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
114670  				$r = $send(wr.ch, err); /* */ $s = 18; case 18: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
114671  				/* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 19; continue; }
114672  				/* */ $s = 20; continue;
114673  				/* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 19:
114674  					$r = pc.close(err); /* */ $s = 21; case 21: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
114675  					$s = -1; return;
114676  				/* } */ case 20:
114677  				$s = 6; continue;
114678  			/* } else if (_selection[0] === 1) { */ case 5:
114679  				$s = -1; return;
114680  			/* } */ case 6:
114681  		/* } */ $s = 1; continue; case 2:
114682  		$s = -1; return;
114683  		/* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: persistConn.ptr.prototype.writeLoop }; } $f._arg = _arg; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._selection = _selection; $f._tuple = _tuple; $f.bre = bre; $f.err = err; $f.ok = ok; $f.pc = pc; $f.startBytesWritten = startBytesWritten; $f.wr = wr; $f.x$4 = x$4; $f.x$5 = x$5; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
114684  	};
114685  	persistConn.prototype.writeLoop = function() { return this.$val.writeLoop(); };
114686  	persistConn.ptr.prototype.wroteRequest = function() {
114687  		var _r$1, _selection, _selection$1, err, err$1, pc, $s, $r;
114688  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; _selection = $f._selection; _selection$1 = $f._selection$1; err = $f.err; err$1 = $f.err$1; pc = $f.pc; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
114689  		pc = this;
114690  		_selection = $select([[pc.writeErrCh], []]);
114691  		/* */ if (_selection[0] === 0) { $s = 1; continue; }
114692  		/* */ if (_selection[0] === 1) { $s = 2; continue; }
114693  		/* */ $s = 3; continue;
114694  		/* if (_selection[0] === 0) { */ case 1:
114695  			err = _selection[1][0];
114696  			$s = -1; return $interfaceIsEqual(err, $ifaceNil);
114697  		/* } else if (_selection[0] === 1) { */ case 2:
114698  			_r$1 = $select([[pc.writeErrCh], [time.After(new time.Duration(0, 50000000))]]); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
114699  			_selection$1 = _r$1;
114700  			if (_selection$1[0] === 0) {
114701  				err$1 = _selection$1[1][0];
114702  				$s = -1; return $interfaceIsEqual(err$1, $ifaceNil);
114703  			} else if (_selection$1[0] === 1) {
114704  				$s = -1; return false;
114705  			}
114706  		/* } */ case 3:
114707  		$s = -1; return false;
114708  		/* */ } return; } if ($f === undefined) { $f = { $blk: persistConn.ptr.prototype.wroteRequest }; } $f._r$1 = _r$1; $f._selection = _selection; $f._selection$1 = _selection$1; $f.err = err; $f.err$1 = err$1; $f.pc = pc; $f.$s = $s; $f.$r = $r; return $f;
114709  	};
114710  	persistConn.prototype.wroteRequest = function() { return this.$val.wroteRequest(); };
114711  	httpError.ptr.prototype.Error = function() {
114712  		var e;
114713  		e = this;
114714  		return e.err;
114715  	};
114716  	httpError.prototype.Error = function() { return this.$val.Error(); };
114717  	httpError.ptr.prototype.Timeout = function() {
114718  		var e;
114719  		e = this;
114720  		return e.timeout;
114721  	};
114722  	httpError.prototype.Timeout = function() { return this.$val.Timeout(); };
114723  	httpError.ptr.prototype.Temporary = function() {
114724  		var e;
114725  		e = this;
114726  		return true;
114727  	};
114728  	httpError.prototype.Temporary = function() { return this.$val.Temporary(); };
114729  	nop = function() {
114730  	};
114731  	persistConn.ptr.prototype.roundTrip = function(req) {
114732  		var _arg, _arg$1, _arg$2, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _selection, _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, cancelChan, continueCh, ctxDoneChan, d, err, err$1, gone, headerFn, pc, re, req, requestedGzip, resc, resp, respHeaderTimer, startBytesWritten, timer, writeErrCh, $s, $deferred, $r;
114733  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _arg = $f._arg; _arg$1 = $f._arg$1; _arg$2 = $f._arg$2; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _r$8 = $f._r$8; _r$9 = $f._r$9; _selection = $f._selection; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$10 = $f._tmp$10; _tmp$11 = $f._tmp$11; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tmp$4 = $f._tmp$4; _tmp$5 = $f._tmp$5; _tmp$6 = $f._tmp$6; _tmp$7 = $f._tmp$7; _tmp$8 = $f._tmp$8; _tmp$9 = $f._tmp$9; cancelChan = $f.cancelChan; continueCh = $f.continueCh; ctxDoneChan = $f.ctxDoneChan; d = $f.d; err = $f.err; err$1 = $f.err$1; gone = $f.gone; headerFn = $f.headerFn; pc = $f.pc; re = $f.re; req = $f.req; requestedGzip = $f.requestedGzip; resc = $f.resc; resp = $f.resp; respHeaderTimer = $f.respHeaderTimer; startBytesWritten = $f.startBytesWritten; timer = $f.timer; writeErrCh = $f.writeErrCh; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
114734  		err = [err];
114735  		pc = [pc];
114736  		req = [req];
114737  		resp = ptrType$17.nil;
114738  		err[0] = $ifaceNil;
114739  		pc[0] = this;
114740  		$r = testHookEnterRoundTrip(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
114741  		_r$1 = pc[0].t.replaceReqCanceler(req[0].Request, $methodVal(pc[0], "cancelRequest")); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
114742  		/* */ if (!_r$1) { $s = 2; continue; }
114743  		/* */ $s = 3; continue;
114744  		/* if (!_r$1) { */ case 2:
114745  			$r = pc[0].t.putOrCloseIdleConn(pc[0]); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
114746  			_tmp = ptrType$17.nil;
114747  			_tmp$1 = errRequestCanceled;
114748  			resp = _tmp;
114749  			err[0] = _tmp$1;
114750  			$s = -1; return [resp, err[0]];
114751  		/* } */ case 3:
114752  		$r = pc[0].mu.Lock(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
114753  		pc[0].numExpectedResponses = pc[0].numExpectedResponses + (1) >> 0;
114754  		headerFn = pc[0].mutateHeaderFunc;
114755  		$r = pc[0].mu.Unlock(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
114756  		/* */ if (!(headerFn === $throwNilPointerError)) { $s = 8; continue; }
114757  		/* */ $s = 9; continue;
114758  		/* if (!(headerFn === $throwNilPointerError)) { */ case 8:
114759  			$r = headerFn(req[0].extraHeaders()); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
114760  		/* } */ case 9:
114761  		requestedGzip = false;
114762  		if (!pc[0].t.DisableCompression && new Header(req[0].Request.Header).Get("Accept-Encoding") === "" && new Header(req[0].Request.Header).Get("Range") === "" && !(req[0].Request.Method === "HEAD")) {
114763  			requestedGzip = true;
114764  			new Header(req[0].extraHeaders()).Set("Accept-Encoding", "gzip");
114765  		}
114766  		continueCh = $chanNil;
114767  		if (req[0].Request.ProtoAtLeast(1, 1) && !($interfaceIsEqual(req[0].Request.Body, $ifaceNil)) && req[0].Request.expectsContinue()) {
114768  			continueCh = new $Chan(structType, 1);
114769  		}
114770  		if (pc[0].t.DisableKeepAlives) {
114771  			new Header(req[0].extraHeaders()).Set("Connection", "close");
114772  		}
114773  		gone = new $Chan(structType, 0);
114774  		$deferred.push([function(_arg) { $close(_arg); }, [gone]]);
114775  		$deferred.push([(function(err, pc, req) { return function $b() {
114776  			var $s, $r;
114777  			/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
114778  			/* */ if (!($interfaceIsEqual(err[0], $ifaceNil))) { $s = 1; continue; }
114779  			/* */ $s = 2; continue;
114780  			/* if (!($interfaceIsEqual(err[0], $ifaceNil))) { */ case 1:
114781  				$r = pc[0].t.setReqCanceler(req[0].Request, $throwNilPointerError); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
114782  			/* } */ case 2:
114783  			$s = -1; return;
114784  			/* */ } return; } if ($f === undefined) { $f = { $blk: $b }; } $f.$s = $s; $f.$r = $r; return $f;
114785  		}; })(err, pc, req), []]);
114786  		startBytesWritten = pc[0].nwrite;
114787  		writeErrCh = new $Chan($error, 1);
114788  		$r = $send(pc[0].writech, $clone(new writeRequest.ptr(req[0], writeErrCh, continueCh), writeRequest)); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
114789  		resc = new $Chan(responseAndError, 0);
114790  		$r = $send(pc[0].reqch, $clone(new requestAndChan.ptr(req[0].Request, resc, requestedGzip, continueCh, gone), requestAndChan)); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
114791  		respHeaderTimer = $chanNil;
114792  		cancelChan = req[0].Request.Cancel;
114793  		_r$2 = req[0].Request.Context().Done(); /* */ $s = 13; case 13: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
114794  		ctxDoneChan = _r$2;
114795  		/* while (true) { */ case 14:
114796  			$r = testHookWaitResLoop(); /* */ $s = 16; case 16: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
114797  			_r$3 = $select([[writeErrCh], [pc[0].closech], [respHeaderTimer], [resc], [cancelChan], [ctxDoneChan]]); /* */ $s = 17; case 17: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
114798  			_selection = _r$3;
114799  			/* */ if (_selection[0] === 0) { $s = 18; continue; }
114800  			/* */ if (_selection[0] === 1) { $s = 19; continue; }
114801  			/* */ if (_selection[0] === 2) { $s = 20; continue; }
114802  			/* */ if (_selection[0] === 3) { $s = 21; continue; }
114803  			/* */ if (_selection[0] === 4) { $s = 22; continue; }
114804  			/* */ if (_selection[0] === 5) { $s = 23; continue; }
114805  			/* */ $s = 24; continue;
114806  			/* if (_selection[0] === 0) { */ case 18:
114807  				err$1 = _selection[1][0];
114808  				/* */ if (false) { $s = 25; continue; }
114809  				/* */ $s = 26; continue;
114810  				/* if (false) { */ case 25:
114811  					$r = req[0].logf("writeErrCh resv: %T/%#v", new sliceType([err$1, err$1])); /* */ $s = 27; case 27: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
114812  				/* } */ case 26:
114813  				/* */ if (!($interfaceIsEqual(err$1, $ifaceNil))) { $s = 28; continue; }
114814  				/* */ $s = 29; continue;
114815  				/* if (!($interfaceIsEqual(err$1, $ifaceNil))) { */ case 28:
114816  					_r$4 = fmt.Errorf("write error: %v", new sliceType([err$1])); /* */ $s = 30; case 30: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
114817  					$r = pc[0].close(_r$4); /* */ $s = 31; case 31: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
114818  					_tmp$2 = ptrType$17.nil;
114819  					_r$5 = pc[0].mapRoundTripError(req[0], startBytesWritten, err$1); /* */ $s = 32; case 32: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
114820  					_tmp$3 = _r$5;
114821  					resp = _tmp$2;
114822  					err[0] = _tmp$3;
114823  					$s = -1; return [resp, err[0]];
114824  				/* } */ case 29:
114825  				d = pc[0].t.ResponseHeaderTimeout;
114826  				/* */ if ((d.$high > 0 || (d.$high === 0 && d.$low > 0))) { $s = 33; continue; }
114827  				/* */ $s = 34; continue;
114828  				/* if ((d.$high > 0 || (d.$high === 0 && d.$low > 0))) { */ case 33:
114829  					/* */ if (false) { $s = 35; continue; }
114830  					/* */ $s = 36; continue;
114831  					/* if (false) { */ case 35:
114832  						$r = req[0].logf("starting timer for %v", new sliceType([d])); /* */ $s = 37; case 37: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
114833  					/* } */ case 36:
114834  					timer = time.NewTimer(d);
114835  					$deferred.push([$methodVal(timer, "Stop"), []]);
114836  					respHeaderTimer = timer.C;
114837  				/* } */ case 34:
114838  				$s = 24; continue;
114839  			/* } else if (_selection[0] === 1) { */ case 19:
114840  				/* */ if (false) { $s = 38; continue; }
114841  				/* */ $s = 39; continue;
114842  				/* if (false) { */ case 38:
114843  					$r = req[0].logf("closech recv: %T %#v", new sliceType([pc[0].closed, pc[0].closed])); /* */ $s = 40; case 40: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
114844  				/* } */ case 39:
114845  				_tmp$4 = ptrType$17.nil;
114846  				_r$6 = pc[0].mapRoundTripError(req[0], startBytesWritten, pc[0].closed); /* */ $s = 41; case 41: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
114847  				_tmp$5 = _r$6;
114848  				resp = _tmp$4;
114849  				err[0] = _tmp$5;
114850  				$s = -1; return [resp, err[0]];
114851  			/* } else if (_selection[0] === 2) { */ case 20:
114852  				/* */ if (false) { $s = 42; continue; }
114853  				/* */ $s = 43; continue;
114854  				/* if (false) { */ case 42:
114855  					$r = req[0].logf("timeout waiting for response headers.", new sliceType([])); /* */ $s = 44; case 44: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
114856  				/* } */ case 43:
114857  				$r = pc[0].close(errTimeout); /* */ $s = 45; case 45: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
114858  				_tmp$6 = ptrType$17.nil;
114859  				_tmp$7 = errTimeout;
114860  				resp = _tmp$6;
114861  				err[0] = _tmp$7;
114862  				$s = -1; return [resp, err[0]];
114863  			/* } else if (_selection[0] === 3) { */ case 21:
114864  				re = $clone(_selection[1][0], responseAndError);
114865  				/* */ if ((re.res === ptrType$17.nil) === ($interfaceIsEqual(re.err, $ifaceNil))) { $s = 46; continue; }
114866  				/* */ $s = 47; continue;
114867  				/* if ((re.res === ptrType$17.nil) === ($interfaceIsEqual(re.err, $ifaceNil))) { */ case 46:
114868  					_r$7 = fmt.Sprintf("internal error: exactly one of res or err should be set; nil=%v", new sliceType([new $Bool(re.res === ptrType$17.nil)])); /* */ $s = 48; case 48: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
114869  					$panic(new $String(_r$7));
114870  				/* } */ case 47:
114871  				/* */ if (false) { $s = 49; continue; }
114872  				/* */ $s = 50; continue;
114873  				/* if (false) { */ case 49:
114874  					$r = req[0].logf("resc recv: %p, %T/%#v", new sliceType([re.res, re.err, re.err])); /* */ $s = 51; case 51: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
114875  				/* } */ case 50:
114876  				/* */ if (!($interfaceIsEqual(re.err, $ifaceNil))) { $s = 52; continue; }
114877  				/* */ $s = 53; continue;
114878  				/* if (!($interfaceIsEqual(re.err, $ifaceNil))) { */ case 52:
114879  					_tmp$8 = ptrType$17.nil;
114880  					_r$8 = pc[0].mapRoundTripError(req[0], startBytesWritten, re.err); /* */ $s = 54; case 54: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
114881  					_tmp$9 = _r$8;
114882  					resp = _tmp$8;
114883  					err[0] = _tmp$9;
114884  					$s = -1; return [resp, err[0]];
114885  				/* } */ case 53:
114886  				_tmp$10 = re.res;
114887  				_tmp$11 = $ifaceNil;
114888  				resp = _tmp$10;
114889  				err[0] = _tmp$11;
114890  				$s = -1; return [resp, err[0]];
114891  			/* } else if (_selection[0] === 4) { */ case 22:
114892  				$r = pc[0].t.CancelRequest(req[0].Request); /* */ $s = 55; case 55: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
114893  				cancelChan = $chanNil;
114894  				$s = 24; continue;
114895  			/* } else if (_selection[0] === 5) { */ case 23:
114896  				_arg$1 = req[0].Request;
114897  				_r$9 = req[0].Request.Context().Err(); /* */ $s = 56; case 56: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
114898  				_arg$2 = _r$9;
114899  				$r = pc[0].t.cancelRequest(_arg$1, _arg$2); /* */ $s = 57; case 57: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
114900  				cancelChan = $chanNil;
114901  				ctxDoneChan = $chanNil;
114902  			/* } */ case 24:
114903  		/* } */ $s = 14; continue; case 15:
114904  		$s = -1; return [resp, err[0]];
114905  		/* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if (!$curGoroutine.asleep) { return  [resp, err[0]]; } if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: persistConn.ptr.prototype.roundTrip }; } $f._arg = _arg; $f._arg$1 = _arg$1; $f._arg$2 = _arg$2; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._r$8 = _r$8; $f._r$9 = _r$9; $f._selection = _selection; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$10 = _tmp$10; $f._tmp$11 = _tmp$11; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tmp$4 = _tmp$4; $f._tmp$5 = _tmp$5; $f._tmp$6 = _tmp$6; $f._tmp$7 = _tmp$7; $f._tmp$8 = _tmp$8; $f._tmp$9 = _tmp$9; $f.cancelChan = cancelChan; $f.continueCh = continueCh; $f.ctxDoneChan = ctxDoneChan; $f.d = d; $f.err = err; $f.err$1 = err$1; $f.gone = gone; $f.headerFn = headerFn; $f.pc = pc; $f.re = re; $f.req = req; $f.requestedGzip = requestedGzip; $f.resc = resc; $f.resp = resp; $f.respHeaderTimer = respHeaderTimer; $f.startBytesWritten = startBytesWritten; $f.timer = timer; $f.writeErrCh = writeErrCh; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
114906  	};
114907  	persistConn.prototype.roundTrip = function(req) { return this.$val.roundTrip(req); };
114908  	transportRequest.ptr.prototype.logf = function(format, args) {
114909  		var _r$1, _r$2, _tuple, args, format, logf$1, ok, tr, x$4, $s, $r;
114910  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; _r$2 = $f._r$2; _tuple = $f._tuple; args = $f.args; format = $f.format; logf$1 = $f.logf$1; ok = $f.ok; tr = $f.tr; x$4 = $f.x$4; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
114911  		tr = this;
114912  		_r$1 = tr.Request.Context().Value((x$4 = new tLogKey.ptr(), new x$4.constructor.elem(x$4))); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
114913  		_tuple = $assertType(_r$1, funcType$4, true);
114914  		logf$1 = _tuple[0];
114915  		ok = _tuple[1];
114916  		/* */ if (ok) { $s = 2; continue; }
114917  		/* */ $s = 3; continue;
114918  		/* if (ok) { */ case 2:
114919  			_r$2 = $clone(time.Now(), time.Time).Format("2006-01-02T15:04:05.999999999Z07:00"); /* */ $s = 4; case 4: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
114920  			$r = logf$1(_r$2 + ": " + format, args); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
114921  		/* } */ case 3:
114922  		$s = -1; return;
114923  		/* */ } return; } if ($f === undefined) { $f = { $blk: transportRequest.ptr.prototype.logf }; } $f._r$1 = _r$1; $f._r$2 = _r$2; $f._tuple = _tuple; $f.args = args; $f.format = format; $f.logf$1 = logf$1; $f.ok = ok; $f.tr = tr; $f.x$4 = x$4; $f.$s = $s; $f.$r = $r; return $f;
114924  	};
114925  	transportRequest.prototype.logf = function(format, args) { return this.$val.logf(format, args); };
114926  	persistConn.ptr.prototype.markReused = function() {
114927  		var pc, $s, $r;
114928  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; pc = $f.pc; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
114929  		pc = this;
114930  		$r = pc.mu.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
114931  		pc.reused = true;
114932  		$r = pc.mu.Unlock(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
114933  		$s = -1; return;
114934  		/* */ } return; } if ($f === undefined) { $f = { $blk: persistConn.ptr.prototype.markReused }; } $f.pc = pc; $f.$s = $s; $f.$r = $r; return $f;
114935  	};
114936  	persistConn.prototype.markReused = function() { return this.$val.markReused(); };
114937  	persistConn.ptr.prototype.close = function(err) {
114938  		var err, pc, $s, $deferred, $r;
114939  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; err = $f.err; pc = $f.pc; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
114940  		pc = this;
114941  		$r = pc.mu.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
114942  		$deferred.push([$methodVal(pc.mu, "Unlock"), []]);
114943  		$r = pc.closeLocked(err); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
114944  		$s = -1; return;
114945  		/* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: persistConn.ptr.prototype.close }; } $f.err = err; $f.pc = pc; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
114946  	};
114947  	persistConn.prototype.close = function(err) { return this.$val.close(err); };
114948  	persistConn.ptr.prototype.closeLocked = function(err) {
114949  		var _r$1, err, pc, $s, $r;
114950  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; err = $f.err; pc = $f.pc; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
114951  		pc = this;
114952  		if ($interfaceIsEqual(err, $ifaceNil)) {
114953  			$panic(new $String("nil error"));
114954  		}
114955  		pc.broken = true;
114956  		/* */ if ($interfaceIsEqual(pc.closed, $ifaceNil)) { $s = 1; continue; }
114957  		/* */ $s = 2; continue;
114958  		/* if ($interfaceIsEqual(pc.closed, $ifaceNil)) { */ case 1:
114959  			pc.closed = err;
114960  			/* */ if (!($interfaceIsEqual(pc.alt, $ifaceNil))) { $s = 3; continue; }
114961  			/* */ $s = 4; continue;
114962  			/* if (!($interfaceIsEqual(pc.alt, $ifaceNil))) { */ case 3:
114963  				$s = 5; continue;
114964  			/* } else { */ case 4:
114965  				_r$1 = pc.conn.Close(); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
114966  				_r$1;
114967  				$close(pc.closech);
114968  			/* } */ case 5:
114969  		/* } */ case 2:
114970  		pc.mutateHeaderFunc = $throwNilPointerError;
114971  		$s = -1; return;
114972  		/* */ } return; } if ($f === undefined) { $f = { $blk: persistConn.ptr.prototype.closeLocked }; } $f._r$1 = _r$1; $f.err = err; $f.pc = pc; $f.$s = $s; $f.$r = $r; return $f;
114973  	};
114974  	persistConn.prototype.closeLocked = function(err) { return this.$val.closeLocked(err); };
114975  	canonicalAddr = function(url$1) {
114976  		var _entry, _r$1, _tuple, addr, err, port, url$1, v, $s, $r;
114977  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _entry = $f._entry; _r$1 = $f._r$1; _tuple = $f._tuple; addr = $f.addr; err = $f.err; port = $f.port; url$1 = $f.url$1; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
114978  		addr = url$1.Hostname();
114979  		_r$1 = idnaASCII(addr); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
114980  		_tuple = _r$1;
114981  		v = _tuple[0];
114982  		err = _tuple[1];
114983  		if ($interfaceIsEqual(err, $ifaceNil)) {
114984  			addr = v;
114985  		}
114986  		port = url$1.Port();
114987  		if (port === "") {
114988  			port = (_entry = portMap[$String.keyFor(url$1.Scheme)], _entry !== undefined ? _entry.v : "");
114989  		}
114990  		$s = -1; return net.JoinHostPort(addr, port);
114991  		/* */ } return; } if ($f === undefined) { $f = { $blk: canonicalAddr }; } $f._entry = _entry; $f._r$1 = _r$1; $f._tuple = _tuple; $f.addr = addr; $f.err = err; $f.port = port; $f.url$1 = url$1; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
114992  	};
114993  	bodyEOFSignal.ptr.prototype.Read = function(p) {
114994  		var _r$1, _r$2, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tuple, closed, err, es, n, p, rerr, $s, $deferred, $r;
114995  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; _r$2 = $f._r$2; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tmp$4 = $f._tmp$4; _tmp$5 = $f._tmp$5; _tuple = $f._tuple; closed = $f.closed; err = $f.err; es = $f.es; n = $f.n; p = $f.p; rerr = $f.rerr; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
114996  		n = 0;
114997  		err = $ifaceNil;
114998  		es = this;
114999  		$r = es.mu.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
115000  		_tmp = es.closed;
115001  		_tmp$1 = es.rerr;
115002  		closed = _tmp;
115003  		rerr = _tmp$1;
115004  		$r = es.mu.Unlock(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
115005  		if (closed) {
115006  			_tmp$2 = 0;
115007  			_tmp$3 = errReadOnClosedResBody;
115008  			n = _tmp$2;
115009  			err = _tmp$3;
115010  			$s = -1; return [n, err];
115011  		}
115012  		if (!($interfaceIsEqual(rerr, $ifaceNil))) {
115013  			_tmp$4 = 0;
115014  			_tmp$5 = rerr;
115015  			n = _tmp$4;
115016  			err = _tmp$5;
115017  			$s = -1; return [n, err];
115018  		}
115019  		_r$1 = es.body.Read(p); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
115020  		_tuple = _r$1;
115021  		n = _tuple[0];
115022  		err = _tuple[1];
115023  		/* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 4; continue; }
115024  		/* */ $s = 5; continue;
115025  		/* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 4:
115026  			$r = es.mu.Lock(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
115027  			$deferred.push([$methodVal(es.mu, "Unlock"), []]);
115028  			if ($interfaceIsEqual(es.rerr, $ifaceNil)) {
115029  				es.rerr = err;
115030  			}
115031  			_r$2 = es.condfn(err); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
115032  			err = _r$2;
115033  		/* } */ case 5:
115034  		$s = -1; return [n, err];
115035  		/* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if (!$curGoroutine.asleep) { return  [n, err]; } if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: bodyEOFSignal.ptr.prototype.Read }; } $f._r$1 = _r$1; $f._r$2 = _r$2; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tmp$4 = _tmp$4; $f._tmp$5 = _tmp$5; $f._tuple = _tuple; $f.closed = closed; $f.err = err; $f.es = es; $f.n = n; $f.p = p; $f.rerr = rerr; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
115036  	};
115037  	bodyEOFSignal.prototype.Read = function(p) { return this.$val.Read(p); };
115038  	bodyEOFSignal.ptr.prototype.Close = function() {
115039  		var _r$1, _r$2, _r$3, err, es, $s, $deferred, $r;
115040  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; err = $f.err; es = $f.es; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
115041  		es = this;
115042  		$r = es.mu.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
115043  		$deferred.push([$methodVal(es.mu, "Unlock"), []]);
115044  		if (es.closed) {
115045  			$s = -1; return $ifaceNil;
115046  		}
115047  		es.closed = true;
115048  		/* */ if (!(es.earlyCloseFn === $throwNilPointerError) && !($interfaceIsEqual(es.rerr, io.EOF))) { $s = 2; continue; }
115049  		/* */ $s = 3; continue;
115050  		/* if (!(es.earlyCloseFn === $throwNilPointerError) && !($interfaceIsEqual(es.rerr, io.EOF))) { */ case 2:
115051  			_r$1 = es.earlyCloseFn(); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
115052  			$s = -1; return _r$1;
115053  		/* } */ case 3:
115054  		_r$2 = es.body.Close(); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
115055  		err = _r$2;
115056  		_r$3 = es.condfn(err); /* */ $s = 6; case 6: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
115057  		$s = -1; return _r$3;
115058  		/* */ } return; } } catch(err) { $err = err; $s = -1; return $ifaceNil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: bodyEOFSignal.ptr.prototype.Close }; } $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f.err = err; $f.es = es; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
115059  	};
115060  	bodyEOFSignal.prototype.Close = function() { return this.$val.Close(); };
115061  	bodyEOFSignal.ptr.prototype.condfn = function(err) {
115062  		var _r$1, err, es, $s, $r;
115063  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; err = $f.err; es = $f.es; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
115064  		es = this;
115065  		if (es.fn === $throwNilPointerError) {
115066  			$s = -1; return err;
115067  		}
115068  		_r$1 = es.fn(err); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
115069  		err = _r$1;
115070  		es.fn = $throwNilPointerError;
115071  		$s = -1; return err;
115072  		/* */ } return; } if ($f === undefined) { $f = { $blk: bodyEOFSignal.ptr.prototype.condfn }; } $f._r$1 = _r$1; $f.err = err; $f.es = es; $f.$s = $s; $f.$r = $r; return $f;
115073  	};
115074  	bodyEOFSignal.prototype.condfn = function(err) { return this.$val.condfn(err); };
115075  	gzipReader.ptr.prototype.Read = function(p) {
115076  		var _r$1, _r$2, _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, _tuple$1, err, gz, n, p, $s, $r;
115077  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; _r$2 = $f._r$2; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; err = $f.err; gz = $f.gz; n = $f.n; p = $f.p; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
115078  		n = 0;
115079  		err = $ifaceNil;
115080  		gz = this;
115081  		/* */ if (gz.zr === ptrType$75.nil) { $s = 1; continue; }
115082  		/* */ $s = 2; continue;
115083  		/* if (gz.zr === ptrType$75.nil) { */ case 1:
115084  			/* */ if ($interfaceIsEqual(gz.zerr, $ifaceNil)) { $s = 3; continue; }
115085  			/* */ $s = 4; continue;
115086  			/* if ($interfaceIsEqual(gz.zerr, $ifaceNil)) { */ case 3:
115087  				_r$1 = gzip.NewReader(gz.body); /* */ $s = 5; case 5: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
115088  				_tuple = _r$1;
115089  				gz.zr = _tuple[0];
115090  				gz.zerr = _tuple[1];
115091  			/* } */ case 4:
115092  			if (!($interfaceIsEqual(gz.zerr, $ifaceNil))) {
115093  				_tmp = 0;
115094  				_tmp$1 = gz.zerr;
115095  				n = _tmp;
115096  				err = _tmp$1;
115097  				$s = -1; return [n, err];
115098  			}
115099  		/* } */ case 2:
115100  		$r = gz.body.mu.Lock(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
115101  		if (gz.body.closed) {
115102  			err = errReadOnClosedResBody;
115103  		}
115104  		$r = gz.body.mu.Unlock(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
115105  		if (!($interfaceIsEqual(err, $ifaceNil))) {
115106  			_tmp$2 = 0;
115107  			_tmp$3 = err;
115108  			n = _tmp$2;
115109  			err = _tmp$3;
115110  			$s = -1; return [n, err];
115111  		}
115112  		_r$2 = gz.zr.Read(p); /* */ $s = 8; case 8: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
115113  		_tuple$1 = _r$2;
115114  		n = _tuple$1[0];
115115  		err = _tuple$1[1];
115116  		$s = -1; return [n, err];
115117  		/* */ } return; } if ($f === undefined) { $f = { $blk: gzipReader.ptr.prototype.Read }; } $f._r$1 = _r$1; $f._r$2 = _r$2; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.err = err; $f.gz = gz; $f.n = n; $f.p = p; $f.$s = $s; $f.$r = $r; return $f;
115118  	};
115119  	gzipReader.prototype.Read = function(p) { return this.$val.Read(p); };
115120  	gzipReader.ptr.prototype.Close = function() {
115121  		var _r$1, gz, $s, $r;
115122  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; gz = $f.gz; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
115123  		gz = this;
115124  		_r$1 = gz.body.Close(); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
115125  		$s = -1; return _r$1;
115126  		/* */ } return; } if ($f === undefined) { $f = { $blk: gzipReader.ptr.prototype.Close }; } $f._r$1 = _r$1; $f.gz = gz; $f.$s = $s; $f.$r = $r; return $f;
115127  	};
115128  	gzipReader.prototype.Close = function() { return this.$val.Close(); };
115129  	tlsHandshakeTimeoutError.ptr.prototype.Timeout = function() {
115130  		return true;
115131  	};
115132  	tlsHandshakeTimeoutError.prototype.Timeout = function() { return this.$val.Timeout(); };
115133  	tlsHandshakeTimeoutError.ptr.prototype.Temporary = function() {
115134  		return true;
115135  	};
115136  	tlsHandshakeTimeoutError.prototype.Temporary = function() { return this.$val.Temporary(); };
115137  	tlsHandshakeTimeoutError.ptr.prototype.Error = function() {
115138  		return "net/http: TLS handshake timeout";
115139  	};
115140  	tlsHandshakeTimeoutError.prototype.Error = function() { return this.$val.Error(); };
115141  	fakeLocker.ptr.prototype.Lock = function() {
115142  	};
115143  	fakeLocker.prototype.Lock = function() { return this.$val.Lock(); };
115144  	fakeLocker.ptr.prototype.Unlock = function() {
115145  	};
115146  	fakeLocker.prototype.Unlock = function() { return this.$val.Unlock(); };
115147  	cloneTLSConfig = function(cfg) {
115148  		var _r$1, cfg, $s, $r;
115149  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; cfg = $f.cfg; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
115150  		if (cfg === ptrType$14.nil) {
115151  			$s = -1; return new tls.Config.ptr($ifaceNil, $throwNilPointerError, sliceType$11.nil, false, $throwNilPointerError, $throwNilPointerError, $throwNilPointerError, $throwNilPointerError, ptrType$31.nil, sliceType$1.nil, "", 0, ptrType$31.nil, false, sliceType$12.nil, false, false, arrayType$2.zero(), $ifaceNil, 0, 0, sliceType$13.nil, false, 0, $ifaceNil, new sync.Once.ptr(new sync.Mutex.ptr(0, 0), 0), new sync.RWMutex.ptr(new sync.Mutex.ptr(0, 0), 0, 0, 0, 0), sliceType$14.nil);
115152  		}
115153  		_r$1 = cfg.Clone(); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
115154  		$s = -1; return _r$1;
115155  		/* */ } return; } if ($f === undefined) { $f = { $blk: cloneTLSConfig }; } $f._r$1 = _r$1; $f.cfg = cfg; $f.$s = $s; $f.$r = $r; return $f;
115156  	};
115157  	connLRU.ptr.prototype.add = function(pc) {
115158  		var _entry, _key, _tuple, cl, ele, ok, pc;
115159  		cl = this;
115160  		if (cl.ll === ptrType$13.nil) {
115161  			cl.ll = list.New();
115162  			cl.m = {};
115163  		}
115164  		ele = cl.ll.PushFront(pc);
115165  		_tuple = (_entry = cl.m[ptrType$102.keyFor(pc)], _entry !== undefined ? [_entry.v, true] : [ptrType$104.nil, false]);
115166  		ok = _tuple[1];
115167  		if (ok) {
115168  			$panic(new $String("persistConn was already in LRU"));
115169  		}
115170  		_key = pc; (cl.m || $throwRuntimeError("assignment to entry in nil map"))[ptrType$102.keyFor(_key)] = { k: _key, v: ele };
115171  	};
115172  	connLRU.prototype.add = function(pc) { return this.$val.add(pc); };
115173  	connLRU.ptr.prototype.removeOldest = function() {
115174  		var cl, ele, pc;
115175  		cl = this;
115176  		ele = cl.ll.Back();
115177  		pc = $assertType(ele.Value, ptrType$102);
115178  		cl.ll.Remove(ele);
115179  		delete cl.m[ptrType$102.keyFor(pc)];
115180  		return pc;
115181  	};
115182  	connLRU.prototype.removeOldest = function() { return this.$val.removeOldest(); };
115183  	connLRU.ptr.prototype.remove = function(pc) {
115184  		var _entry, _tuple, cl, ele, ok, pc;
115185  		cl = this;
115186  		_tuple = (_entry = cl.m[ptrType$102.keyFor(pc)], _entry !== undefined ? [_entry.v, true] : [ptrType$104.nil, false]);
115187  		ele = _tuple[0];
115188  		ok = _tuple[1];
115189  		if (ok) {
115190  			cl.ll.Remove(ele);
115191  			delete cl.m[ptrType$102.keyFor(pc)];
115192  		}
115193  	};
115194  	connLRU.prototype.remove = function(pc) { return this.$val.remove(pc); };
115195  	connLRU.ptr.prototype.len = function() {
115196  		var cl;
115197  		cl = this;
115198  		return $keys(cl.m).length;
115199  	};
115200  	connLRU.prototype.len = function() { return this.$val.len(); };
115201  	validPort = function(p) {
115202  		var _i, _ref, p, r;
115203  		_ref = (new sliceType$3($stringToBytes(p)));
115204  		_i = 0;
115205  		while (true) {
115206  			if (!(_i < _ref.$length)) { break; }
115207  			r = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
115208  			if (r < 48 || r > 57) {
115209  				return false;
115210  			}
115211  			_i++;
115212  		}
115213  		return true;
115214  	};
115215  	ptrType$106.methods = [{prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType$3], [$Int, $error], false)}, {prop: "Close", name: "Close", pkg: "", typ: $funcType([], [$error], false)}];
115216  	ptrType$107.methods = [{prop: "RoundTrip", name: "RoundTrip", pkg: "", typ: $funcType([ptrType$7], [ptrType$17, $error], false)}];
115217  	noTransport.methods = [{prop: "RoundTrip", name: "RoundTrip", pkg: "", typ: $funcType([ptrType$7], [ptrType$17, $error], false)}];
115218  	ptrType$108.methods = [{prop: "RoundTrip", name: "RoundTrip", pkg: "", typ: $funcType([ptrType$7], [ptrType$17, $error], false)}, {prop: "CancelRequest", name: "CancelRequest", pkg: "", typ: $funcType([ptrType$7], [], false)}];
115219  	ptrType$109.methods = [{prop: "send", name: "send", pkg: "net/http", typ: $funcType([ptrType$7, time.Time], [ptrType$17, funcType$5, $error], false)}, {prop: "deadline", name: "deadline", pkg: "net/http", typ: $funcType([], [time.Time], false)}, {prop: "transport", name: "transport", pkg: "net/http", typ: $funcType([], [RoundTripper], false)}, {prop: "Get", name: "Get", pkg: "", typ: $funcType([$String], [ptrType$17, $error], false)}, {prop: "checkRedirect", name: "checkRedirect", pkg: "net/http", typ: $funcType([ptrType$7, sliceType$7], [$error], false)}, {prop: "Do", name: "Do", pkg: "", typ: $funcType([ptrType$7], [ptrType$17, $error], false)}, {prop: "makeHeadersCopier", name: "makeHeadersCopier", pkg: "net/http", typ: $funcType([ptrType$7], [funcType$6], false)}, {prop: "Post", name: "Post", pkg: "", typ: $funcType([$String, $String, io.Reader], [ptrType$17, $error], false)}, {prop: "PostForm", name: "PostForm", pkg: "", typ: $funcType([$String, url.Values], [ptrType$17, $error], false)}, {prop: "Head", name: "Head", pkg: "", typ: $funcType([$String], [ptrType$17, $error], false)}];
115220  	ptrType$110.methods = [{prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType$3], [$Int, $error], false)}, {prop: "Close", name: "Close", pkg: "", typ: $funcType([], [$error], false)}];
115221  	ptrType$25.methods = [{prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}];
115222  	ptrType$3.methods = [{prop: "GetClientConn", name: "GetClientConn", pkg: "", typ: $funcType([ptrType$7, $String], [ptrType$28, $error], false)}, {prop: "getClientConn", name: "getClientConn", pkg: "net/http", typ: $funcType([ptrType$7, $String, $Bool], [ptrType$28, $error], false)}, {prop: "getStartDialLocked", name: "getStartDialLocked", pkg: "net/http", typ: $funcType([$String], [ptrType$29], false)}, {prop: "addConnIfNeeded", name: "addConnIfNeeded", pkg: "net/http", typ: $funcType([$String, ptrType$15, ptrType$99], [$Bool, $error], false)}, {prop: "addConn", name: "addConn", pkg: "net/http", typ: $funcType([$String, ptrType$28], [], false)}, {prop: "addConnLocked", name: "addConnLocked", pkg: "net/http", typ: $funcType([$String, ptrType$28], [], false)}, {prop: "MarkDead", name: "MarkDead", pkg: "", typ: $funcType([ptrType$28], [], false)}, {prop: "closeIdleConnections", name: "closeIdleConnections", pkg: "net/http", typ: $funcType([], [], false)}];
115223  	ptrType$29.methods = [{prop: "dial", name: "dial", pkg: "net/http", typ: $funcType([$String], [], false)}];
115224  	ptrType$30.methods = [{prop: "run", name: "run", pkg: "net/http", typ: $funcType([ptrType$15, $String, ptrType$99], [], false)}];
115225  	http2noDialClientConnPool.methods = [{prop: "GetClientConn", name: "GetClientConn", pkg: "", typ: $funcType([ptrType$7, $String], [ptrType$28, $error], false)}];
115226  	http2noDialH2RoundTripper.methods = [{prop: "RoundTrip", name: "RoundTrip", pkg: "", typ: $funcType([ptrType$7], [ptrType$17, $error], false)}];
115227  	ptrType$113.methods = [{prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType$3], [$Int, $error], false)}, {prop: "bytesFromFirstChunk", name: "bytesFromFirstChunk", pkg: "net/http", typ: $funcType([], [sliceType$3], false)}, {prop: "Len", name: "Len", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Write", name: "Write", pkg: "", typ: $funcType([sliceType$3], [$Int, $error], false)}, {prop: "lastChunkOrAlloc", name: "lastChunkOrAlloc", pkg: "net/http", typ: $funcType([$Int64], [sliceType$3], false)}];
115228  	http2ErrCode.methods = [{prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}];
115229  	http2ConnectionError.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}];
115230  	http2StreamError.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}, {prop: "writeFrame", name: "writeFrame", pkg: "net/http", typ: $funcType([http2writeContext], [$error], false)}, {prop: "staysWithinBuffer", name: "staysWithinBuffer", pkg: "net/http", typ: $funcType([$Int], [$Bool], false)}];
115231  	http2goAwayFlowError.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}];
115232  	http2connError.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}];
115233  	http2pseudoHeaderError.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}];
115234  	http2duplicatePseudoHeaderError.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}];
115235  	http2headerFieldNameError.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}];
115236  	http2headerFieldValueError.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}];
115237  	ptrType$32.methods = [{prop: "setConnFlow", name: "setConnFlow", pkg: "net/http", typ: $funcType([ptrType$32], [], false)}, {prop: "available", name: "available", pkg: "net/http", typ: $funcType([], [$Int32], false)}, {prop: "take", name: "take", pkg: "net/http", typ: $funcType([$Int32], [], false)}, {prop: "add", name: "add", pkg: "net/http", typ: $funcType([$Int32], [$Bool], false)}];
115238  	http2FrameType.methods = [{prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}];
115239  	http2Flags.methods = [{prop: "Has", name: "Has", pkg: "", typ: $funcType([http2Flags], [$Bool], false)}];
115240  	http2FrameHeader.methods = [{prop: "Header", name: "Header", pkg: "", typ: $funcType([], [http2FrameHeader], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "writeDebug", name: "writeDebug", pkg: "net/http", typ: $funcType([ptrType$36], [], false)}];
115241  	ptrType$114.methods = [{prop: "checkValid", name: "checkValid", pkg: "net/http", typ: $funcType([], [], false)}, {prop: "invalidate", name: "invalidate", pkg: "net/http", typ: $funcType([], [], false)}];
115242  	ptrType$33.methods = [{prop: "maxHeaderListSize", name: "maxHeaderListSize", pkg: "net/http", typ: $funcType([], [$Uint32], false)}, {prop: "startWrite", name: "startWrite", pkg: "net/http", typ: $funcType([http2FrameType, http2Flags, $Uint32], [], false)}, {prop: "endWrite", name: "endWrite", pkg: "net/http", typ: $funcType([], [$error], false)}, {prop: "logWrite", name: "logWrite", pkg: "net/http", typ: $funcType([], [], false)}, {prop: "writeByte", name: "writeByte", pkg: "net/http", typ: $funcType([$Uint8], [], false)}, {prop: "writeBytes", name: "writeBytes", pkg: "net/http", typ: $funcType([sliceType$3], [], false)}, {prop: "writeUint16", name: "writeUint16", pkg: "net/http", typ: $funcType([$Uint16], [], false)}, {prop: "writeUint32", name: "writeUint32", pkg: "net/http", typ: $funcType([$Uint32], [], false)}, {prop: "SetReuseFrames", name: "SetReuseFrames", pkg: "", typ: $funcType([], [], false)}, {prop: "SetMaxReadFrameSize", name: "SetMaxReadFrameSize", pkg: "", typ: $funcType([$Uint32], [], false)}, {prop: "ErrorDetail", name: "ErrorDetail", pkg: "", typ: $funcType([], [$error], false)}, {prop: "ReadFrame", name: "ReadFrame", pkg: "", typ: $funcType([], [http2Frame, $error], false)}, {prop: "connError", name: "connError", pkg: "net/http", typ: $funcType([http2ErrCode, $String], [$error], false)}, {prop: "checkFrameOrder", name: "checkFrameOrder", pkg: "net/http", typ: $funcType([http2Frame], [$error], false)}, {prop: "WriteData", name: "WriteData", pkg: "", typ: $funcType([$Uint32, $Bool, sliceType$3], [$error], false)}, {prop: "WriteDataPadded", name: "WriteDataPadded", pkg: "", typ: $funcType([$Uint32, $Bool, sliceType$3, sliceType$3], [$error], false)}, {prop: "WriteSettings", name: "WriteSettings", pkg: "", typ: $funcType([sliceType$19], [$error], true)}, {prop: "WriteSettingsAck", name: "WriteSettingsAck", pkg: "", typ: $funcType([], [$error], false)}, {prop: "WritePing", name: "WritePing", pkg: "", typ: $funcType([$Bool, arrayType$4], [$error], false)}, {prop: "WriteGoAway", name: "WriteGoAway", pkg: "", typ: $funcType([$Uint32, http2ErrCode, sliceType$3], [$error], false)}, {prop: "WriteWindowUpdate", name: "WriteWindowUpdate", pkg: "", typ: $funcType([$Uint32, $Uint32], [$error], false)}, {prop: "WriteHeaders", name: "WriteHeaders", pkg: "", typ: $funcType([http2HeadersFrameParam], [$error], false)}, {prop: "WritePriority", name: "WritePriority", pkg: "", typ: $funcType([$Uint32, http2PriorityParam], [$error], false)}, {prop: "WriteRSTStream", name: "WriteRSTStream", pkg: "", typ: $funcType([$Uint32, http2ErrCode], [$error], false)}, {prop: "WriteContinuation", name: "WriteContinuation", pkg: "", typ: $funcType([$Uint32, $Bool, sliceType$3], [$error], false)}, {prop: "WritePushPromise", name: "WritePushPromise", pkg: "", typ: $funcType([http2PushPromiseParam], [$error], false)}, {prop: "WriteRawFrame", name: "WriteRawFrame", pkg: "", typ: $funcType([http2FrameType, http2Flags, $Uint32, sliceType$3], [$error], false)}, {prop: "maxHeaderStringLen", name: "maxHeaderStringLen", pkg: "net/http", typ: $funcType([], [$Int], false)}, {prop: "readMetaFrame", name: "readMetaFrame", pkg: "net/http", typ: $funcType([ptrType$37], [ptrType$38, $error], false)}];
115243  	ptrType$34.methods = [{prop: "getDataFrame", name: "getDataFrame", pkg: "net/http", typ: $funcType([], [ptrType$41], false)}];
115244  	ptrType$41.methods = [{prop: "StreamEnded", name: "StreamEnded", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "Data", name: "Data", pkg: "", typ: $funcType([], [sliceType$3], false)}];
115245  	ptrType$40.methods = [{prop: "IsAck", name: "IsAck", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "Value", name: "Value", pkg: "", typ: $funcType([http2SettingID], [$Uint32, $Bool], false)}, {prop: "ForeachSetting", name: "ForeachSetting", pkg: "", typ: $funcType([funcType$9], [$error], false)}];
115246  	ptrType$43.methods = [{prop: "IsAck", name: "IsAck", pkg: "", typ: $funcType([], [$Bool], false)}];
115247  	ptrType$44.methods = [{prop: "DebugData", name: "DebugData", pkg: "", typ: $funcType([], [sliceType$3], false)}];
115248  	ptrType$115.methods = [{prop: "Payload", name: "Payload", pkg: "", typ: $funcType([], [sliceType$3], false)}];
115249  	ptrType$37.methods = [{prop: "HeaderBlockFragment", name: "HeaderBlockFragment", pkg: "", typ: $funcType([], [sliceType$3], false)}, {prop: "HeadersEnded", name: "HeadersEnded", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "StreamEnded", name: "StreamEnded", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "HasPriority", name: "HasPriority", pkg: "", typ: $funcType([], [$Bool], false)}];
115250  	http2PriorityParam.methods = [{prop: "IsZero", name: "IsZero", pkg: "", typ: $funcType([], [$Bool], false)}];
115251  	ptrType$39.methods = [{prop: "HeaderBlockFragment", name: "HeaderBlockFragment", pkg: "", typ: $funcType([], [sliceType$3], false)}, {prop: "HeadersEnded", name: "HeadersEnded", pkg: "", typ: $funcType([], [$Bool], false)}];
115252  	ptrType$66.methods = [{prop: "HeaderBlockFragment", name: "HeaderBlockFragment", pkg: "", typ: $funcType([], [sliceType$3], false)}, {prop: "HeadersEnded", name: "HeadersEnded", pkg: "", typ: $funcType([], [$Bool], false)}];
115253  	ptrType$38.methods = [{prop: "PseudoValue", name: "PseudoValue", pkg: "", typ: $funcType([$String], [$String], false)}, {prop: "RegularFields", name: "RegularFields", pkg: "", typ: $funcType([], [sliceType$15], false)}, {prop: "PseudoFields", name: "PseudoFields", pkg: "", typ: $funcType([], [sliceType$15], false)}, {prop: "checkPseudos", name: "checkPseudos", pkg: "net/http", typ: $funcType([], [$error], false)}];
115254  	http2goroutineLock.methods = [{prop: "check", name: "check", pkg: "net/http", typ: $funcType([], [], false)}, {prop: "checkNotOn", name: "checkNotOn", pkg: "net/http", typ: $funcType([], [], false)}];
115255  	http2streamState.methods = [{prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}];
115256  	http2Setting.methods = [{prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Valid", name: "Valid", pkg: "", typ: $funcType([], [$error], false)}];
115257  	http2SettingID.methods = [{prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}];
115258  	http2gate.methods = [{prop: "Done", name: "Done", pkg: "", typ: $funcType([], [], false)}, {prop: "Wait", name: "Wait", pkg: "", typ: $funcType([], [], false)}];
115259  	http2closeWaiter.methods = [{prop: "Close", name: "Close", pkg: "", typ: $funcType([], [], false)}, {prop: "Wait", name: "Wait", pkg: "", typ: $funcType([], [], false)}];
115260  	ptrType$68.methods = [{prop: "Init", name: "Init", pkg: "", typ: $funcType([], [], false)}];
115261  	ptrType$55.methods = [{prop: "Available", name: "Available", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Write", name: "Write", pkg: "", typ: $funcType([sliceType$3], [$Int, $error], false)}, {prop: "Flush", name: "Flush", pkg: "", typ: $funcType([], [$error], false)}];
115262  	ptrType$116.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Timeout", name: "Timeout", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "Temporary", name: "Temporary", pkg: "", typ: $funcType([], [$Bool], false)}];
115263  	ptrType$70.methods = [{prop: "Len", name: "Len", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Swap", name: "Swap", pkg: "", typ: $funcType([$Int, $Int], [], false)}, {prop: "Less", name: "Less", pkg: "", typ: $funcType([$Int, $Int], [$Bool], false)}, {prop: "Keys", name: "Keys", pkg: "", typ: $funcType([Header], [sliceType$1], false)}, {prop: "SortStrings", name: "SortStrings", pkg: "", typ: $funcType([sliceType$1], [], false)}];
115264  	ptrType$67.methods = [{prop: "Len", name: "Len", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType$3], [$Int, $error], false)}, {prop: "Write", name: "Write", pkg: "", typ: $funcType([sliceType$3], [$Int, $error], false)}, {prop: "CloseWithError", name: "CloseWithError", pkg: "", typ: $funcType([$error], [], false)}, {prop: "BreakWithError", name: "BreakWithError", pkg: "", typ: $funcType([$error], [], false)}, {prop: "closeWithErrorAndCode", name: "closeWithErrorAndCode", pkg: "net/http", typ: $funcType([$error, funcType$2], [], false)}, {prop: "closeWithError", name: "closeWithError", pkg: "net/http", typ: $funcType([ptrType$50, $error, funcType$2], [], false)}, {prop: "closeDoneLocked", name: "closeDoneLocked", pkg: "net/http", typ: $funcType([], [], false)}, {prop: "Err", name: "Err", pkg: "", typ: $funcType([], [$error], false)}, {prop: "Done", name: "Done", pkg: "", typ: $funcType([], [chanType$3], false)}];
115265  	ptrType$52.methods = [{prop: "initialConnRecvWindowSize", name: "initialConnRecvWindowSize", pkg: "net/http", typ: $funcType([], [$Int32], false)}, {prop: "initialStreamRecvWindowSize", name: "initialStreamRecvWindowSize", pkg: "net/http", typ: $funcType([], [$Int32], false)}, {prop: "maxReadFrameSize", name: "maxReadFrameSize", pkg: "net/http", typ: $funcType([], [$Uint32], false)}, {prop: "maxConcurrentStreams", name: "maxConcurrentStreams", pkg: "net/http", typ: $funcType([], [$Uint32], false)}, {prop: "ServeConn", name: "ServeConn", pkg: "", typ: $funcType([net.Conn, ptrType$53], [], false)}];
115266  	ptrType$51.methods = [{prop: "registerConn", name: "registerConn", pkg: "net/http", typ: $funcType([ptrType$9], [], false)}, {prop: "unregisterConn", name: "unregisterConn", pkg: "net/http", typ: $funcType([ptrType$9], [], false)}, {prop: "startGracefulShutdown", name: "startGracefulShutdown", pkg: "net/http", typ: $funcType([], [], false)}];
115267  	ptrType$53.methods = [{prop: "baseConfig", name: "baseConfig", pkg: "net/http", typ: $funcType([], [ptrType$46], false)}, {prop: "handler", name: "handler", pkg: "net/http", typ: $funcType([], [Handler], false)}];
115268  	ptrType$9.methods = [{prop: "rejectConn", name: "rejectConn", pkg: "net/http", typ: $funcType([http2ErrCode, $String], [], false)}, {prop: "maxHeaderListSize", name: "maxHeaderListSize", pkg: "net/http", typ: $funcType([], [$Uint32], false)}, {prop: "curOpenStreams", name: "curOpenStreams", pkg: "net/http", typ: $funcType([], [$Uint32], false)}, {prop: "Framer", name: "Framer", pkg: "", typ: $funcType([], [ptrType$33], false)}, {prop: "CloseConn", name: "CloseConn", pkg: "", typ: $funcType([], [$error], false)}, {prop: "Flush", name: "Flush", pkg: "", typ: $funcType([], [$error], false)}, {prop: "HeaderEncoder", name: "HeaderEncoder", pkg: "", typ: $funcType([], [ptrType$57, ptrType$36], false)}, {prop: "state", name: "state", pkg: "net/http", typ: $funcType([$Uint32], [http2streamState, ptrType$6], false)}, {prop: "setConnState", name: "setConnState", pkg: "net/http", typ: $funcType([ConnState], [], false)}, {prop: "vlogf", name: "vlogf", pkg: "net/http", typ: $funcType([$String, sliceType], [], true)}, {prop: "logf", name: "logf", pkg: "net/http", typ: $funcType([$String, sliceType], [], true)}, {prop: "condlogf", name: "condlogf", pkg: "net/http", typ: $funcType([$error, $String, sliceType], [], true)}, {prop: "canonicalHeader", name: "canonicalHeader", pkg: "net/http", typ: $funcType([$String], [$String], false)}, {prop: "readFrames", name: "readFrames", pkg: "net/http", typ: $funcType([], [], false)}, {prop: "writeFrameAsync", name: "writeFrameAsync", pkg: "net/http", typ: $funcType([http2FrameWriteRequest], [], false)}, {prop: "closeAllStreamsOnConnClose", name: "closeAllStreamsOnConnClose", pkg: "net/http", typ: $funcType([], [], false)}, {prop: "stopShutdownTimer", name: "stopShutdownTimer", pkg: "net/http", typ: $funcType([], [], false)}, {prop: "notePanic", name: "notePanic", pkg: "net/http", typ: $funcType([], [], false)}, {prop: "serve", name: "serve", pkg: "net/http", typ: $funcType([], [], false)}, {prop: "awaitGracefulShutdown", name: "awaitGracefulShutdown", pkg: "net/http", typ: $funcType([chanType$3, chanType$2], [], false)}, {prop: "onSettingsTimer", name: "onSettingsTimer", pkg: "net/http", typ: $funcType([], [], false)}, {prop: "onIdleTimer", name: "onIdleTimer", pkg: "net/http", typ: $funcType([], [], false)}, {prop: "onShutdownTimer", name: "onShutdownTimer", pkg: "net/http", typ: $funcType([], [], false)}, {prop: "sendServeMsg", name: "sendServeMsg", pkg: "net/http", typ: $funcType([$emptyInterface], [], false)}, {prop: "readPreface", name: "readPreface", pkg: "net/http", typ: $funcType([], [$error], false)}, {prop: "writeDataFromHandler", name: "writeDataFromHandler", pkg: "net/http", typ: $funcType([ptrType$6, sliceType$3, $Bool], [$error], false)}, {prop: "writeFrameFromHandler", name: "writeFrameFromHandler", pkg: "net/http", typ: $funcType([http2FrameWriteRequest], [$error], false)}, {prop: "writeFrame", name: "writeFrame", pkg: "net/http", typ: $funcType([http2FrameWriteRequest], [], false)}, {prop: "startFrameWrite", name: "startFrameWrite", pkg: "net/http", typ: $funcType([http2FrameWriteRequest], [], false)}, {prop: "wroteFrame", name: "wroteFrame", pkg: "net/http", typ: $funcType([http2frameWriteResult], [], false)}, {prop: "scheduleFrameWrite", name: "scheduleFrameWrite", pkg: "net/http", typ: $funcType([], [], false)}, {prop: "startGracefulShutdown", name: "startGracefulShutdown", pkg: "net/http", typ: $funcType([], [], false)}, {prop: "startGracefulShutdownInternal", name: "startGracefulShutdownInternal", pkg: "net/http", typ: $funcType([], [], false)}, {prop: "goAway", name: "goAway", pkg: "net/http", typ: $funcType([http2ErrCode], [], false)}, {prop: "shutDownIn", name: "shutDownIn", pkg: "net/http", typ: $funcType([time.Duration], [], false)}, {prop: "resetStream", name: "resetStream", pkg: "net/http", typ: $funcType([http2StreamError], [], false)}, {prop: "processFrameFromReader", name: "processFrameFromReader", pkg: "net/http", typ: $funcType([http2readFrameResult], [$Bool], false)}, {prop: "processFrame", name: "processFrame", pkg: "net/http", typ: $funcType([http2Frame], [$error], false)}, {prop: "processPing", name: "processPing", pkg: "net/http", typ: $funcType([ptrType$43], [$error], false)}, {prop: "processWindowUpdate", name: "processWindowUpdate", pkg: "net/http", typ: $funcType([ptrType$42], [$error], false)}, {prop: "processResetStream", name: "processResetStream", pkg: "net/http", typ: $funcType([ptrType$45], [$error], false)}, {prop: "closeStream", name: "closeStream", pkg: "net/http", typ: $funcType([ptrType$6, $error], [], false)}, {prop: "processSettings", name: "processSettings", pkg: "net/http", typ: $funcType([ptrType$40], [$error], false)}, {prop: "processSetting", name: "processSetting", pkg: "net/http", typ: $funcType([http2Setting], [$error], false)}, {prop: "processSettingInitialWindowSize", name: "processSettingInitialWindowSize", pkg: "net/http", typ: $funcType([$Uint32], [$error], false)}, {prop: "processData", name: "processData", pkg: "net/http", typ: $funcType([ptrType$41], [$error], false)}, {prop: "processGoAway", name: "processGoAway", pkg: "net/http", typ: $funcType([ptrType$44], [$error], false)}, {prop: "processHeaders", name: "processHeaders", pkg: "net/http", typ: $funcType([ptrType$38], [$error], false)}, {prop: "processPriority", name: "processPriority", pkg: "net/http", typ: $funcType([ptrType$65], [$error], false)}, {prop: "newStream", name: "newStream", pkg: "net/http", typ: $funcType([$Uint32, $Uint32, http2streamState], [ptrType$6], false)}, {prop: "newWriterAndRequest", name: "newWriterAndRequest", pkg: "net/http", typ: $funcType([ptrType$6, ptrType$38], [ptrType$5, ptrType$7, $error], false)}, {prop: "newWriterAndRequestNoBody", name: "newWriterAndRequestNoBody", pkg: "net/http", typ: $funcType([ptrType$6, http2requestParam], [ptrType$5, ptrType$7, $error], false)}, {prop: "runHandler", name: "runHandler", pkg: "net/http", typ: $funcType([ptrType$5, ptrType$7, funcType$20], [], false)}, {prop: "writeHeaders", name: "writeHeaders", pkg: "net/http", typ: $funcType([ptrType$6, ptrType$63], [$error], false)}, {prop: "write100ContinueHeaders", name: "write100ContinueHeaders", pkg: "net/http", typ: $funcType([ptrType$6], [], false)}, {prop: "noteBodyReadFromHandler", name: "noteBodyReadFromHandler", pkg: "net/http", typ: $funcType([ptrType$6, $Int, $error], [], false)}, {prop: "noteBodyRead", name: "noteBodyRead", pkg: "net/http", typ: $funcType([ptrType$6, $Int], [], false)}, {prop: "sendWindowUpdate", name: "sendWindowUpdate", pkg: "net/http", typ: $funcType([ptrType$6, $Int], [], false)}, {prop: "sendWindowUpdate32", name: "sendWindowUpdate32", pkg: "net/http", typ: $funcType([ptrType$6, $Int32], [], false)}, {prop: "startPush", name: "startPush", pkg: "net/http", typ: $funcType([ptrType$61], [], false)}];
115269  	ptrType$6.methods = [{prop: "isPushed", name: "isPushed", pkg: "net/http", typ: $funcType([], [$Bool], false)}, {prop: "endStream", name: "endStream", pkg: "net/http", typ: $funcType([], [], false)}, {prop: "copyTrailersToHandlerRequest", name: "copyTrailersToHandlerRequest", pkg: "net/http", typ: $funcType([], [], false)}, {prop: "onWriteTimeout", name: "onWriteTimeout", pkg: "net/http", typ: $funcType([], [], false)}, {prop: "processTrailerHeaders", name: "processTrailerHeaders", pkg: "net/http", typ: $funcType([ptrType$38], [$error], false)}];
115270  	ptrType$8.methods = [{prop: "Close", name: "Close", pkg: "", typ: $funcType([], [$error], false)}, {prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType$3], [$Int, $error], false)}];
115271  	ptrType$5.methods = [{prop: "Push", name: "Push", pkg: "", typ: $funcType([$String, ptrType$49], [$error], false)}, {prop: "Flush", name: "Flush", pkg: "", typ: $funcType([], [], false)}, {prop: "CloseNotify", name: "CloseNotify", pkg: "", typ: $funcType([], [chanType$9], false)}, {prop: "Header", name: "Header", pkg: "", typ: $funcType([], [Header], false)}, {prop: "WriteHeader", name: "WriteHeader", pkg: "", typ: $funcType([$Int], [], false)}, {prop: "Write", name: "Write", pkg: "", typ: $funcType([sliceType$3], [$Int, $error], false)}, {prop: "WriteString", name: "WriteString", pkg: "", typ: $funcType([$String], [$Int, $error], false)}, {prop: "write", name: "write", pkg: "net/http", typ: $funcType([$Int, sliceType$3, $String], [$Int, $error], false)}, {prop: "handlerDone", name: "handlerDone", pkg: "net/http", typ: $funcType([], [], false)}, {prop: "push", name: "push", pkg: "net/http", typ: $funcType([$String, http2pushOptions], [$error], false)}];
115272  	ptrType$69.methods = [{prop: "hasTrailers", name: "hasTrailers", pkg: "net/http", typ: $funcType([], [$Bool], false)}, {prop: "declareTrailer", name: "declareTrailer", pkg: "net/http", typ: $funcType([$String], [], false)}, {prop: "writeChunk", name: "writeChunk", pkg: "net/http", typ: $funcType([sliceType$3], [$Int, $error], false)}, {prop: "promoteUndeclaredTrailers", name: "promoteUndeclaredTrailers", pkg: "net/http", typ: $funcType([], [], false)}, {prop: "writeHeader", name: "writeHeader", pkg: "net/http", typ: $funcType([$Int], [], false)}];
115273  	http2chunkWriter.methods = [{prop: "Write", name: "Write", pkg: "", typ: $funcType([sliceType$3], [$Int, $error], false)}];
115274  	ptrType$15.methods = [{prop: "idleConnTimeout", name: "idleConnTimeout", pkg: "net/http", typ: $funcType([], [time.Duration], false)}, {prop: "maxHeaderListSize", name: "maxHeaderListSize", pkg: "net/http", typ: $funcType([], [$Uint32], false)}, {prop: "disableCompression", name: "disableCompression", pkg: "net/http", typ: $funcType([], [$Bool], false)}, {prop: "connPool", name: "connPool", pkg: "net/http", typ: $funcType([], [http2ClientConnPool], false)}, {prop: "initConnPool", name: "initConnPool", pkg: "net/http", typ: $funcType([], [], false)}, {prop: "RoundTrip", name: "RoundTrip", pkg: "", typ: $funcType([ptrType$7], [ptrType$17, $error], false)}, {prop: "RoundTripOpt", name: "RoundTripOpt", pkg: "", typ: $funcType([ptrType$7, http2RoundTripOpt], [ptrType$17, $error], false)}, {prop: "CloseIdleConnections", name: "CloseIdleConnections", pkg: "", typ: $funcType([], [], false)}, {prop: "dialClientConn", name: "dialClientConn", pkg: "net/http", typ: $funcType([$String, $Bool], [ptrType$28, $error], false)}, {prop: "newTLSConfig", name: "newTLSConfig", pkg: "net/http", typ: $funcType([$String], [ptrType$14], false)}, {prop: "dialTLS", name: "dialTLS", pkg: "net/http", typ: $funcType([], [funcType$21], false)}, {prop: "dialTLSDefault", name: "dialTLSDefault", pkg: "net/http", typ: $funcType([$String, $String, ptrType$14], [net.Conn, $error], false)}, {prop: "disableKeepAlives", name: "disableKeepAlives", pkg: "net/http", typ: $funcType([], [$Bool], false)}, {prop: "expectContinueTimeout", name: "expectContinueTimeout", pkg: "net/http", typ: $funcType([], [time.Duration], false)}, {prop: "NewClientConn", name: "NewClientConn", pkg: "", typ: $funcType([net.Conn], [ptrType$28, $error], false)}, {prop: "newClientConn", name: "newClientConn", pkg: "net/http", typ: $funcType([net.Conn, $Bool], [ptrType$28, $error], false)}, {prop: "vlogf", name: "vlogf", pkg: "net/http", typ: $funcType([$String, sliceType], [], true)}, {prop: "logf", name: "logf", pkg: "net/http", typ: $funcType([$String, sliceType], [], true)}, {prop: "getBodyWriterState", name: "getBodyWriterState", pkg: "net/http", typ: $funcType([ptrType$74, io.Reader], [http2bodyWriterState], false)}];
115275  	ptrType$28.methods = [{prop: "Ping", name: "Ping", pkg: "", typ: $funcType([context.Context], [$error], false)}, {prop: "setGoAway", name: "setGoAway", pkg: "net/http", typ: $funcType([ptrType$44], [], false)}, {prop: "CanTakeNewRequest", name: "CanTakeNewRequest", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "canTakeNewRequestLocked", name: "canTakeNewRequestLocked", pkg: "net/http", typ: $funcType([], [$Bool], false)}, {prop: "onIdleTimeout", name: "onIdleTimeout", pkg: "net/http", typ: $funcType([], [], false)}, {prop: "closeIfIdle", name: "closeIfIdle", pkg: "net/http", typ: $funcType([], [], false)}, {prop: "frameScratchBuffer", name: "frameScratchBuffer", pkg: "net/http", typ: $funcType([], [sliceType$3], false)}, {prop: "putFrameScratchBuffer", name: "putFrameScratchBuffer", pkg: "net/http", typ: $funcType([sliceType$3], [], false)}, {prop: "responseHeaderTimeout", name: "responseHeaderTimeout", pkg: "net/http", typ: $funcType([], [time.Duration], false)}, {prop: "RoundTrip", name: "RoundTrip", pkg: "", typ: $funcType([ptrType$7], [ptrType$17, $error], false)}, {prop: "roundTrip", name: "roundTrip", pkg: "net/http", typ: $funcType([ptrType$7], [ptrType$17, $Bool, $error], false)}, {prop: "awaitOpenSlotForRequest", name: "awaitOpenSlotForRequest", pkg: "net/http", typ: $funcType([ptrType$7], [$error], false)}, {prop: "writeHeaders", name: "writeHeaders", pkg: "net/http", typ: $funcType([$Uint32, $Bool, $Int, sliceType$3], [$error], false)}, {prop: "encodeHeaders", name: "encodeHeaders", pkg: "net/http", typ: $funcType([ptrType$7, $Bool, $String, $Int64], [sliceType$3, $error], false)}, {prop: "encodeTrailers", name: "encodeTrailers", pkg: "net/http", typ: $funcType([ptrType$7], [sliceType$3, $error], false)}, {prop: "writeHeader", name: "writeHeader", pkg: "net/http", typ: $funcType([$String, $String], [], false)}, {prop: "newStream", name: "newStream", pkg: "net/http", typ: $funcType([], [ptrType$74], false)}, {prop: "forgetStreamID", name: "forgetStreamID", pkg: "net/http", typ: $funcType([$Uint32], [], false)}, {prop: "streamByID", name: "streamByID", pkg: "net/http", typ: $funcType([$Uint32, $Bool], [ptrType$74], false)}, {prop: "readLoop", name: "readLoop", pkg: "net/http", typ: $funcType([], [], false)}, {prop: "ping", name: "ping", pkg: "net/http", typ: $funcType([http2contextContext], [$error], false)}, {prop: "writeStreamReset", name: "writeStreamReset", pkg: "net/http", typ: $funcType([$Uint32, http2ErrCode, $error], [], false)}, {prop: "logf", name: "logf", pkg: "net/http", typ: $funcType([$String, sliceType], [], true)}, {prop: "vlogf", name: "vlogf", pkg: "net/http", typ: $funcType([$String, sliceType], [], true)}];
115276  	ptrType$74.methods = [{prop: "awaitRequestCancel", name: "awaitRequestCancel", pkg: "net/http", typ: $funcType([ptrType$7], [], false)}, {prop: "cancelStream", name: "cancelStream", pkg: "net/http", typ: $funcType([], [], false)}, {prop: "checkResetOrDone", name: "checkResetOrDone", pkg: "net/http", typ: $funcType([], [$error], false)}, {prop: "getStartedWrite", name: "getStartedWrite", pkg: "net/http", typ: $funcType([], [$Bool], false)}, {prop: "abortRequestBodyWrite", name: "abortRequestBodyWrite", pkg: "net/http", typ: $funcType([$error], [], false)}, {prop: "writeRequestBody", name: "writeRequestBody", pkg: "net/http", typ: $funcType([io.Reader, io.Closer], [$error], false)}, {prop: "awaitFlowControl", name: "awaitFlowControl", pkg: "net/http", typ: $funcType([$Int], [$Int32, $error], false)}, {prop: "copyTrailers", name: "copyTrailers", pkg: "net/http", typ: $funcType([], [], false)}];
115277  	http2stickyErrWriter.methods = [{prop: "Write", name: "Write", pkg: "", typ: $funcType([sliceType$3], [$Int, $error], false)}];
115278  	http2noCachedConnError.methods = [{prop: "IsHTTP2NoCachedConnError", name: "IsHTTP2NoCachedConnError", pkg: "", typ: $funcType([], [], false)}, {prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}];
115279  	ptrType$117.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}];
115280  	ptrType$118.methods = [{prop: "cleanup", name: "cleanup", pkg: "net/http", typ: $funcType([], [], false)}, {prop: "run", name: "run", pkg: "net/http", typ: $funcType([], [$error], false)}, {prop: "processHeaders", name: "processHeaders", pkg: "net/http", typ: $funcType([ptrType$38], [$error], false)}, {prop: "handleResponse", name: "handleResponse", pkg: "net/http", typ: $funcType([ptrType$74, ptrType$38], [ptrType$17, $error], false)}, {prop: "processTrailers", name: "processTrailers", pkg: "net/http", typ: $funcType([ptrType$74, ptrType$38], [$error], false)}, {prop: "processData", name: "processData", pkg: "net/http", typ: $funcType([ptrType$41], [$error], false)}, {prop: "endStream", name: "endStream", pkg: "net/http", typ: $funcType([ptrType$74], [], false)}, {prop: "endStreamError", name: "endStreamError", pkg: "net/http", typ: $funcType([ptrType$74, $error], [], false)}, {prop: "processGoAway", name: "processGoAway", pkg: "net/http", typ: $funcType([ptrType$44], [$error], false)}, {prop: "processSettings", name: "processSettings", pkg: "net/http", typ: $funcType([ptrType$40], [$error], false)}, {prop: "processWindowUpdate", name: "processWindowUpdate", pkg: "net/http", typ: $funcType([ptrType$42], [$error], false)}, {prop: "processResetStream", name: "processResetStream", pkg: "net/http", typ: $funcType([ptrType$45], [$error], false)}, {prop: "processPing", name: "processPing", pkg: "net/http", typ: $funcType([ptrType$43], [$error], false)}, {prop: "processPushPromise", name: "processPushPromise", pkg: "net/http", typ: $funcType([ptrType$66], [$error], false)}];
115281  	http2GoAwayError.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}];
115282  	http2transportResponseBody.methods = [{prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType$3], [$Int, $error], false)}, {prop: "Close", name: "Close", pkg: "", typ: $funcType([], [$error], false)}];
115283  	http2erringRoundTripper.methods = [{prop: "RoundTrip", name: "RoundTrip", pkg: "", typ: $funcType([ptrType$7], [ptrType$17, $error], false)}];
115284  	ptrType$119.methods = [{prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType$3], [$Int, $error], false)}, {prop: "Close", name: "Close", pkg: "", typ: $funcType([], [$error], false)}];
115285  	http2bodyWriterState.methods = [{prop: "cancel", name: "cancel", pkg: "net/http", typ: $funcType([], [], false)}, {prop: "on100", name: "on100", pkg: "net/http", typ: $funcType([], [], false)}, {prop: "scheduleBodyWrite", name: "scheduleBodyWrite", pkg: "net/http", typ: $funcType([], [], false)}];
115286  	http2flushFrameWriter.methods = [{prop: "writeFrame", name: "writeFrame", pkg: "net/http", typ: $funcType([http2writeContext], [$error], false)}, {prop: "staysWithinBuffer", name: "staysWithinBuffer", pkg: "net/http", typ: $funcType([$Int], [$Bool], false)}];
115287  	http2writeSettings.methods = [{prop: "staysWithinBuffer", name: "staysWithinBuffer", pkg: "net/http", typ: $funcType([$Int], [$Bool], false)}, {prop: "writeFrame", name: "writeFrame", pkg: "net/http", typ: $funcType([http2writeContext], [$error], false)}];
115288  	ptrType$120.methods = [{prop: "writeFrame", name: "writeFrame", pkg: "net/http", typ: $funcType([http2writeContext], [$error], false)}, {prop: "staysWithinBuffer", name: "staysWithinBuffer", pkg: "net/http", typ: $funcType([$Int], [$Bool], false)}];
115289  	ptrType$62.methods = [{prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "writeFrame", name: "writeFrame", pkg: "net/http", typ: $funcType([http2writeContext], [$error], false)}, {prop: "staysWithinBuffer", name: "staysWithinBuffer", pkg: "net/http", typ: $funcType([$Int], [$Bool], false)}];
115290  	http2handlerPanicRST.methods = [{prop: "writeFrame", name: "writeFrame", pkg: "net/http", typ: $funcType([http2writeContext], [$error], false)}, {prop: "staysWithinBuffer", name: "staysWithinBuffer", pkg: "net/http", typ: $funcType([$Int], [$Bool], false)}];
115291  	http2writePingAck.methods = [{prop: "writeFrame", name: "writeFrame", pkg: "net/http", typ: $funcType([http2writeContext], [$error], false)}, {prop: "staysWithinBuffer", name: "staysWithinBuffer", pkg: "net/http", typ: $funcType([$Int], [$Bool], false)}];
115292  	http2writeSettingsAck.methods = [{prop: "writeFrame", name: "writeFrame", pkg: "net/http", typ: $funcType([http2writeContext], [$error], false)}, {prop: "staysWithinBuffer", name: "staysWithinBuffer", pkg: "net/http", typ: $funcType([$Int], [$Bool], false)}];
115293  	ptrType$63.methods = [{prop: "staysWithinBuffer", name: "staysWithinBuffer", pkg: "net/http", typ: $funcType([$Int], [$Bool], false)}, {prop: "writeFrame", name: "writeFrame", pkg: "net/http", typ: $funcType([http2writeContext], [$error], false)}, {prop: "writeHeaderBlock", name: "writeHeaderBlock", pkg: "net/http", typ: $funcType([http2writeContext, sliceType$3, $Bool, $Bool], [$error], false)}];
115294  	ptrType$64.methods = [{prop: "staysWithinBuffer", name: "staysWithinBuffer", pkg: "net/http", typ: $funcType([$Int], [$Bool], false)}, {prop: "writeFrame", name: "writeFrame", pkg: "net/http", typ: $funcType([http2writeContext], [$error], false)}, {prop: "writeHeaderBlock", name: "writeHeaderBlock", pkg: "net/http", typ: $funcType([http2writeContext, sliceType$3, $Bool, $Bool], [$error], false)}];
115295  	http2write100ContinueHeadersFrame.methods = [{prop: "writeFrame", name: "writeFrame", pkg: "net/http", typ: $funcType([http2writeContext], [$error], false)}, {prop: "staysWithinBuffer", name: "staysWithinBuffer", pkg: "net/http", typ: $funcType([$Int], [$Bool], false)}];
115296  	http2writeWindowUpdate.methods = [{prop: "staysWithinBuffer", name: "staysWithinBuffer", pkg: "net/http", typ: $funcType([$Int], [$Bool], false)}, {prop: "writeFrame", name: "writeFrame", pkg: "net/http", typ: $funcType([http2writeContext], [$error], false)}];
115297  	http2FrameWriteRequest.methods = [{prop: "StreamID", name: "StreamID", pkg: "", typ: $funcType([], [$Uint32], false)}, {prop: "DataSize", name: "DataSize", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Consume", name: "Consume", pkg: "", typ: $funcType([$Int32], [http2FrameWriteRequest, http2FrameWriteRequest, $Int], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}];
115298  	ptrType$121.methods = [{prop: "replyToWriter", name: "replyToWriter", pkg: "net/http", typ: $funcType([$error], [], false)}];
115299  	ptrType$77.methods = [{prop: "empty", name: "empty", pkg: "net/http", typ: $funcType([], [$Bool], false)}, {prop: "push", name: "push", pkg: "net/http", typ: $funcType([http2FrameWriteRequest], [], false)}, {prop: "shift", name: "shift", pkg: "net/http", typ: $funcType([], [http2FrameWriteRequest], false)}, {prop: "consume", name: "consume", pkg: "net/http", typ: $funcType([$Int32], [http2FrameWriteRequest, $Bool], false)}];
115300  	ptrType$80.methods = [{prop: "put", name: "put", pkg: "net/http", typ: $funcType([ptrType$77], [], false)}, {prop: "get", name: "get", pkg: "net/http", typ: $funcType([], [ptrType$77], false)}];
115301  	ptrType$79.methods = [{prop: "setParent", name: "setParent", pkg: "net/http", typ: $funcType([ptrType$79], [], false)}, {prop: "addBytes", name: "addBytes", pkg: "net/http", typ: $funcType([$Int64], [], false)}, {prop: "walkReadyInOrder", name: "walkReadyInOrder", pkg: "net/http", typ: $funcType([$Bool, ptrType$81, funcType$23], [$Bool], false)}];
115302  	http2sortPriorityNodeSiblings.methods = [{prop: "Len", name: "Len", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Swap", name: "Swap", pkg: "", typ: $funcType([$Int, $Int], [], false)}, {prop: "Less", name: "Less", pkg: "", typ: $funcType([$Int, $Int], [$Bool], false)}];
115303  	ptrType$122.methods = [{prop: "OpenStream", name: "OpenStream", pkg: "", typ: $funcType([$Uint32, http2OpenStreamOptions], [], false)}, {prop: "CloseStream", name: "CloseStream", pkg: "", typ: $funcType([$Uint32], [], false)}, {prop: "AdjustStream", name: "AdjustStream", pkg: "", typ: $funcType([$Uint32, http2PriorityParam], [], false)}, {prop: "Push", name: "Push", pkg: "", typ: $funcType([http2FrameWriteRequest], [], false)}, {prop: "Pop", name: "Pop", pkg: "", typ: $funcType([], [http2FrameWriteRequest, $Bool], false)}, {prop: "addClosedOrIdleNode", name: "addClosedOrIdleNode", pkg: "net/http", typ: $funcType([ptrType$81, $Int, ptrType$79], [], false)}, {prop: "removeNode", name: "removeNode", pkg: "net/http", typ: $funcType([ptrType$79], [], false)}];
115304  	ptrType$123.methods = [{prop: "OpenStream", name: "OpenStream", pkg: "", typ: $funcType([$Uint32, http2OpenStreamOptions], [], false)}, {prop: "CloseStream", name: "CloseStream", pkg: "", typ: $funcType([$Uint32], [], false)}, {prop: "AdjustStream", name: "AdjustStream", pkg: "", typ: $funcType([$Uint32, http2PriorityParam], [], false)}, {prop: "Push", name: "Push", pkg: "", typ: $funcType([http2FrameWriteRequest], [], false)}, {prop: "Pop", name: "Pop", pkg: "", typ: $funcType([], [http2FrameWriteRequest, $Bool], false)}];
115305  	Header.methods = [{prop: "Add", name: "Add", pkg: "", typ: $funcType([$String, $String], [], false)}, {prop: "Set", name: "Set", pkg: "", typ: $funcType([$String, $String], [], false)}, {prop: "Get", name: "Get", pkg: "", typ: $funcType([$String], [$String], false)}, {prop: "get", name: "get", pkg: "net/http", typ: $funcType([$String], [$String], false)}, {prop: "Del", name: "Del", pkg: "", typ: $funcType([$String], [], false)}, {prop: "Write", name: "Write", pkg: "", typ: $funcType([io.Writer], [$error], false)}, {prop: "clone", name: "clone", pkg: "net/http", typ: $funcType([], [Header], false)}, {prop: "sortedKeyValues", name: "sortedKeyValues", pkg: "net/http", typ: $funcType([mapType$14], [sliceType$4, ptrType$82], false)}, {prop: "WriteSubset", name: "WriteSubset", pkg: "", typ: $funcType([io.Writer, mapType$14], [$error], false)}];
115306  	stringWriter.methods = [{prop: "WriteString", name: "WriteString", pkg: "", typ: $funcType([$String], [$Int, $error], false)}];
115307  	ptrType$82.methods = [{prop: "Len", name: "Len", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Swap", name: "Swap", pkg: "", typ: $funcType([$Int, $Int], [], false)}, {prop: "Less", name: "Less", pkg: "", typ: $funcType([$Int, $Int], [$Bool], false)}];
115308  	ptrType$124.methods = [{prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}];
115309  	noBody.methods = [{prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType$3], [$Int, $error], false)}, {prop: "Close", name: "Close", pkg: "", typ: $funcType([], [$error], false)}, {prop: "WriteTo", name: "WriteTo", pkg: "", typ: $funcType([io.Writer], [$Int64, $error], false)}];
115310  	ptrType$125.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}];
115311  	ptrType$126.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}];
115312  	ptrType$7.methods = [{prop: "Context", name: "Context", pkg: "", typ: $funcType([], [context.Context], false)}, {prop: "WithContext", name: "WithContext", pkg: "", typ: $funcType([context.Context], [ptrType$7], false)}, {prop: "ProtoAtLeast", name: "ProtoAtLeast", pkg: "", typ: $funcType([$Int, $Int], [$Bool], false)}, {prop: "UserAgent", name: "UserAgent", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Cookies", name: "Cookies", pkg: "", typ: $funcType([], [sliceType$8], false)}, {prop: "Cookie", name: "Cookie", pkg: "", typ: $funcType([$String], [ptrType$25, $error], false)}, {prop: "AddCookie", name: "AddCookie", pkg: "", typ: $funcType([ptrType$25], [], false)}, {prop: "Referer", name: "Referer", pkg: "", typ: $funcType([], [$String], false)}, {prop: "MultipartReader", name: "MultipartReader", pkg: "", typ: $funcType([], [ptrType$83, $error], false)}, {prop: "multipartReader", name: "multipartReader", pkg: "net/http", typ: $funcType([], [ptrType$83, $error], false)}, {prop: "isH2Upgrade", name: "isH2Upgrade", pkg: "net/http", typ: $funcType([], [$Bool], false)}, {prop: "Write", name: "Write", pkg: "", typ: $funcType([io.Writer], [$error], false)}, {prop: "WriteProxy", name: "WriteProxy", pkg: "", typ: $funcType([io.Writer], [$error], false)}, {prop: "write", name: "write", pkg: "net/http", typ: $funcType([io.Writer, $Bool, Header, funcType$5], [$error], false)}, {prop: "BasicAuth", name: "BasicAuth", pkg: "", typ: $funcType([], [$String, $String, $Bool], false)}, {prop: "SetBasicAuth", name: "SetBasicAuth", pkg: "", typ: $funcType([$String, $String], [], false)}, {prop: "ParseForm", name: "ParseForm", pkg: "", typ: $funcType([], [$error], false)}, {prop: "ParseMultipartForm", name: "ParseMultipartForm", pkg: "", typ: $funcType([$Int64], [$error], false)}, {prop: "FormValue", name: "FormValue", pkg: "", typ: $funcType([$String], [$String], false)}, {prop: "PostFormValue", name: "PostFormValue", pkg: "", typ: $funcType([$String], [$String], false)}, {prop: "FormFile", name: "FormFile", pkg: "", typ: $funcType([$String], [multipart.File, ptrType$88, $error], false)}, {prop: "expectsContinue", name: "expectsContinue", pkg: "net/http", typ: $funcType([], [$Bool], false)}, {prop: "wantsHttp10KeepAlive", name: "wantsHttp10KeepAlive", pkg: "net/http", typ: $funcType([], [$Bool], false)}, {prop: "wantsClose", name: "wantsClose", pkg: "net/http", typ: $funcType([], [$Bool], false)}, {prop: "closeBody", name: "closeBody", pkg: "net/http", typ: $funcType([], [], false)}, {prop: "isReplayable", name: "isReplayable", pkg: "net/http", typ: $funcType([], [$Bool], false)}, {prop: "outgoingLength", name: "outgoingLength", pkg: "net/http", typ: $funcType([], [$Int64], false)}];
115313  	ptrType$87.methods = [{prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType$3], [$Int, $error], false)}, {prop: "Close", name: "Close", pkg: "", typ: $funcType([], [$error], false)}];
115314  	ptrType$17.methods = [{prop: "Cookies", name: "Cookies", pkg: "", typ: $funcType([], [sliceType$8], false)}, {prop: "Location", name: "Location", pkg: "", typ: $funcType([], [ptrType$20, $error], false)}, {prop: "ProtoAtLeast", name: "ProtoAtLeast", pkg: "", typ: $funcType([$Int, $Int], [$Bool], false)}, {prop: "Write", name: "Write", pkg: "", typ: $funcType([io.Writer], [$error], false)}, {prop: "closeBody", name: "closeBody", pkg: "net/http", typ: $funcType([], [], false)}];
115315  	ptrType$97.methods = [{prop: "hijacked", name: "hijacked", pkg: "net/http", typ: $funcType([], [$Bool], false)}, {prop: "hijackLocked", name: "hijackLocked", pkg: "net/http", typ: $funcType([], [net.Conn, ptrType$89, $error], false)}, {prop: "readRequest", name: "readRequest", pkg: "net/http", typ: $funcType([context.Context], [ptrType$94, $error], false)}, {prop: "finalFlush", name: "finalFlush", pkg: "net/http", typ: $funcType([], [], false)}, {prop: "close", name: "close", pkg: "net/http", typ: $funcType([], [], false)}, {prop: "closeWriteAndWait", name: "closeWriteAndWait", pkg: "net/http", typ: $funcType([], [], false)}, {prop: "setState", name: "setState", pkg: "net/http", typ: $funcType([net.Conn, ConnState], [], false)}, {prop: "serve", name: "serve", pkg: "net/http", typ: $funcType([context.Context], [], false)}];
115316  	ptrType$127.methods = [{prop: "Write", name: "Write", pkg: "", typ: $funcType([sliceType$3], [$Int, $error], false)}, {prop: "flush", name: "flush", pkg: "net/http", typ: $funcType([], [], false)}, {prop: "close", name: "close", pkg: "net/http", typ: $funcType([], [], false)}, {prop: "writeHeader", name: "writeHeader", pkg: "net/http", typ: $funcType([sliceType$3], [], false)}];
115317  	ptrType$94.methods = [{prop: "finalTrailers", name: "finalTrailers", pkg: "net/http", typ: $funcType([], [Header], false)}, {prop: "declareTrailer", name: "declareTrailer", pkg: "net/http", typ: $funcType([$String], [], false)}, {prop: "requestTooLarge", name: "requestTooLarge", pkg: "net/http", typ: $funcType([], [], false)}, {prop: "needsSniff", name: "needsSniff", pkg: "net/http", typ: $funcType([], [$Bool], false)}, {prop: "ReadFrom", name: "ReadFrom", pkg: "", typ: $funcType([io.Reader], [$Int64, $error], false)}, {prop: "Header", name: "Header", pkg: "", typ: $funcType([], [Header], false)}, {prop: "WriteHeader", name: "WriteHeader", pkg: "", typ: $funcType([$Int], [], false)}, {prop: "bodyAllowed", name: "bodyAllowed", pkg: "net/http", typ: $funcType([], [$Bool], false)}, {prop: "Write", name: "Write", pkg: "", typ: $funcType([sliceType$3], [$Int, $error], false)}, {prop: "WriteString", name: "WriteString", pkg: "", typ: $funcType([$String], [$Int, $error], false)}, {prop: "write", name: "write", pkg: "net/http", typ: $funcType([$Int, sliceType$3, $String], [$Int, $error], false)}, {prop: "finishRequest", name: "finishRequest", pkg: "net/http", typ: $funcType([], [], false)}, {prop: "shouldReuseConnection", name: "shouldReuseConnection", pkg: "net/http", typ: $funcType([], [$Bool], false)}, {prop: "closedRequestBodyEarly", name: "closedRequestBodyEarly", pkg: "net/http", typ: $funcType([], [$Bool], false)}, {prop: "Flush", name: "Flush", pkg: "", typ: $funcType([], [], false)}, {prop: "sendExpectationFailed", name: "sendExpectationFailed", pkg: "net/http", typ: $funcType([], [], false)}, {prop: "Hijack", name: "Hijack", pkg: "", typ: $funcType([], [net.Conn, ptrType$89, $error], false)}, {prop: "CloseNotify", name: "CloseNotify", pkg: "", typ: $funcType([], [chanType$9], false)}];
115318  	ptrType$23.methods = [{prop: "isSet", name: "isSet", pkg: "net/http", typ: $funcType([], [$Bool], false)}, {prop: "setTrue", name: "setTrue", pkg: "net/http", typ: $funcType([], [], false)}];
115319  	ptrType$93.methods = [{prop: "lock", name: "lock", pkg: "net/http", typ: $funcType([], [], false)}, {prop: "unlock", name: "unlock", pkg: "net/http", typ: $funcType([], [], false)}, {prop: "startBackgroundRead", name: "startBackgroundRead", pkg: "net/http", typ: $funcType([], [], false)}, {prop: "backgroundRead", name: "backgroundRead", pkg: "net/http", typ: $funcType([], [], false)}, {prop: "abortPendingRead", name: "abortPendingRead", pkg: "net/http", typ: $funcType([], [], false)}, {prop: "setReadLimit", name: "setReadLimit", pkg: "net/http", typ: $funcType([$Int64], [], false)}, {prop: "setInfiniteReadLimit", name: "setInfiniteReadLimit", pkg: "net/http", typ: $funcType([], [], false)}, {prop: "hitReadLimit", name: "hitReadLimit", pkg: "net/http", typ: $funcType([], [$Bool], false)}, {prop: "handleReadError", name: "handleReadError", pkg: "net/http", typ: $funcType([$error], [], false)}, {prop: "closeNotifyFromPipelinedRequest", name: "closeNotifyFromPipelinedRequest", pkg: "net/http", typ: $funcType([], [], false)}, {prop: "closeNotify", name: "closeNotify", pkg: "net/http", typ: $funcType([], [], false)}, {prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType$3], [$Int, $error], false)}];
115320  	ptrType$98.methods = [{prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType$3], [$Int, $error], false)}, {prop: "Close", name: "Close", pkg: "", typ: $funcType([], [$error], false)}];
115321  	extraHeader.methods = [{prop: "Write", name: "Write", pkg: "", typ: $funcType([ptrType$10], [], false)}];
115322  	badRequestError.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}];
115323  	HandlerFunc.methods = [{prop: "ServeHTTP", name: "ServeHTTP", pkg: "", typ: $funcType([ResponseWriter, ptrType$7], [], false)}];
115324  	ptrType$128.methods = [{prop: "ServeHTTP", name: "ServeHTTP", pkg: "", typ: $funcType([ResponseWriter, ptrType$7], [], false)}];
115325  	ptrType$129.methods = [{prop: "match", name: "match", pkg: "net/http", typ: $funcType([$String], [Handler, $String], false)}, {prop: "redirectToPathSlash", name: "redirectToPathSlash", pkg: "net/http", typ: $funcType([$String, $String, ptrType$20], [ptrType$20, $Bool], false)}, {prop: "shouldRedirect", name: "shouldRedirect", pkg: "net/http", typ: $funcType([$String, $String], [$Bool], false)}, {prop: "Handler", name: "Handler", pkg: "", typ: $funcType([ptrType$7], [Handler, $String], false)}, {prop: "handler", name: "handler", pkg: "net/http", typ: $funcType([$String, $String], [Handler, $String], false)}, {prop: "ServeHTTP", name: "ServeHTTP", pkg: "", typ: $funcType([ResponseWriter, ptrType$7], [], false)}, {prop: "Handle", name: "Handle", pkg: "", typ: $funcType([$String, Handler], [], false)}, {prop: "HandleFunc", name: "HandleFunc", pkg: "", typ: $funcType([$String, funcType$20], [], false)}];
115326  	ptrType$46.methods = [{prop: "newConn", name: "newConn", pkg: "net/http", typ: $funcType([net.Conn], [ptrType$97], false)}, {prop: "maxHeaderBytes", name: "maxHeaderBytes", pkg: "net/http", typ: $funcType([], [$Int], false)}, {prop: "initialReadLimitSize", name: "initialReadLimitSize", pkg: "net/http", typ: $funcType([], [$Int64], false)}, {prop: "getDoneChan", name: "getDoneChan", pkg: "net/http", typ: $funcType([], [chanType$3], false)}, {prop: "getDoneChanLocked", name: "getDoneChanLocked", pkg: "net/http", typ: $funcType([], [chanType$2], false)}, {prop: "closeDoneChanLocked", name: "closeDoneChanLocked", pkg: "net/http", typ: $funcType([], [], false)}, {prop: "Close", name: "Close", pkg: "", typ: $funcType([], [$error], false)}, {prop: "Shutdown", name: "Shutdown", pkg: "", typ: $funcType([context.Context], [$error], false)}, {prop: "RegisterOnShutdown", name: "RegisterOnShutdown", pkg: "", typ: $funcType([funcType$2], [], false)}, {prop: "closeIdleConns", name: "closeIdleConns", pkg: "net/http", typ: $funcType([], [$Bool], false)}, {prop: "closeListenersLocked", name: "closeListenersLocked", pkg: "net/http", typ: $funcType([], [$error], false)}, {prop: "ListenAndServe", name: "ListenAndServe", pkg: "", typ: $funcType([], [$error], false)}, {prop: "shouldConfigureHTTP2ForServe", name: "shouldConfigureHTTP2ForServe", pkg: "net/http", typ: $funcType([], [$Bool], false)}, {prop: "Serve", name: "Serve", pkg: "", typ: $funcType([net.Listener], [$error], false)}, {prop: "ServeTLS", name: "ServeTLS", pkg: "", typ: $funcType([net.Listener, $String, $String], [$error], false)}, {prop: "trackListener", name: "trackListener", pkg: "net/http", typ: $funcType([net.Listener, $Bool], [], false)}, {prop: "trackConn", name: "trackConn", pkg: "net/http", typ: $funcType([ptrType$97, $Bool], [], false)}, {prop: "idleTimeout", name: "idleTimeout", pkg: "net/http", typ: $funcType([], [time.Duration], false)}, {prop: "readHeaderTimeout", name: "readHeaderTimeout", pkg: "net/http", typ: $funcType([], [time.Duration], false)}, {prop: "doKeepAlives", name: "doKeepAlives", pkg: "net/http", typ: $funcType([], [$Bool], false)}, {prop: "shuttingDown", name: "shuttingDown", pkg: "net/http", typ: $funcType([], [$Bool], false)}, {prop: "SetKeepAlivesEnabled", name: "SetKeepAlivesEnabled", pkg: "", typ: $funcType([$Bool], [], false)}, {prop: "logf", name: "logf", pkg: "net/http", typ: $funcType([$String, sliceType], [], true)}, {prop: "ListenAndServeTLS", name: "ListenAndServeTLS", pkg: "", typ: $funcType([$String, $String], [$error], false)}, {prop: "setupHTTP2_ServeTLS", name: "setupHTTP2_ServeTLS", pkg: "net/http", typ: $funcType([], [$error], false)}, {prop: "setupHTTP2_Serve", name: "setupHTTP2_Serve", pkg: "net/http", typ: $funcType([], [$error], false)}, {prop: "onceSetNextProtoDefaults_Serve", name: "onceSetNextProtoDefaults_Serve", pkg: "net/http", typ: $funcType([], [], false)}, {prop: "onceSetNextProtoDefaults", name: "onceSetNextProtoDefaults", pkg: "net/http", typ: $funcType([], [], false)}];
115327  	ConnState.methods = [{prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}];
115328  	serverHandler.methods = [{prop: "ServeHTTP", name: "ServeHTTP", pkg: "", typ: $funcType([ResponseWriter, ptrType$7], [], false)}];
115329  	tcpKeepAliveListener.methods = [{prop: "Accept", name: "Accept", pkg: "", typ: $funcType([], [net.Conn, $error], false)}];
115330  	globalOptionsHandler.methods = [{prop: "ServeHTTP", name: "ServeHTTP", pkg: "", typ: $funcType([ResponseWriter, ptrType$7], [], false)}];
115331  	initNPNRequest.methods = [{prop: "ServeHTTP", name: "ServeHTTP", pkg: "", typ: $funcType([ResponseWriter, ptrType$7], [], false)}];
115332  	ptrType$132.methods = [{prop: "Write", name: "Write", pkg: "", typ: $funcType([sliceType$3], [$Int, $error], false)}, {prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType$3], [$Int, $error], false)}, {prop: "Close", name: "Close", pkg: "", typ: $funcType([], [$error], false)}];
115333  	checkConnErrorWriter.methods = [{prop: "Write", name: "Write", pkg: "", typ: $funcType([sliceType$3], [$Int, $error], false)}];
115334  	ptrType$133.methods = [{prop: "match", name: "match", pkg: "net/http", typ: $funcType([sliceType$3, $Int], [$String], false)}];
115335  	ptrType$134.methods = [{prop: "match", name: "match", pkg: "net/http", typ: $funcType([sliceType$3, $Int], [$String], false)}];
115336  	htmlSig.methods = [{prop: "match", name: "match", pkg: "net/http", typ: $funcType([sliceType$3, $Int], [$String], false)}];
115337  	mp4Sig.methods = [{prop: "match", name: "match", pkg: "net/http", typ: $funcType([sliceType$3, $Int], [$String], false)}];
115338  	textSig.methods = [{prop: "match", name: "match", pkg: "net/http", typ: $funcType([sliceType$3, $Int], [$String], false)}];
115339  	errorReader.methods = [{prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType$3], [$Int, $error], false)}];
115340  	ptrType$135.methods = [{prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType$3], [$Int, $error], false)}];
115341  	transferBodyReader.methods = [{prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType$3], [$Int, $error], false)}];
115342  	ptrType$101.methods = [{prop: "shouldSendChunkedRequestBody", name: "shouldSendChunkedRequestBody", pkg: "net/http", typ: $funcType([], [$Bool], false)}, {prop: "probeRequestBody", name: "probeRequestBody", pkg: "net/http", typ: $funcType([], [], false)}, {prop: "shouldSendContentLength", name: "shouldSendContentLength", pkg: "net/http", typ: $funcType([], [$Bool], false)}, {prop: "WriteHeader", name: "WriteHeader", pkg: "", typ: $funcType([io.Writer], [$error], false)}, {prop: "WriteBody", name: "WriteBody", pkg: "", typ: $funcType([io.Writer], [$error], false)}];
115343  	ptrType$136.methods = [{prop: "protoAtLeast", name: "protoAtLeast", pkg: "net/http", typ: $funcType([$Int, $Int], [$Bool], false)}, {prop: "fixTransferEncoding", name: "fixTransferEncoding", pkg: "net/http", typ: $funcType([], [$error], false)}];
115344  	ptrType$96.methods = [{prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType$3], [$Int, $error], false)}, {prop: "readLocked", name: "readLocked", pkg: "net/http", typ: $funcType([sliceType$3], [$Int, $error], false)}, {prop: "readTrailer", name: "readTrailer", pkg: "net/http", typ: $funcType([], [$error], false)}, {prop: "unreadDataSizeLocked", name: "unreadDataSizeLocked", pkg: "net/http", typ: $funcType([], [$Int64], false)}, {prop: "Close", name: "Close", pkg: "", typ: $funcType([], [$error], false)}, {prop: "didEarlyClose", name: "didEarlyClose", pkg: "net/http", typ: $funcType([], [$Bool], false)}, {prop: "bodyRemains", name: "bodyRemains", pkg: "net/http", typ: $funcType([], [$Bool], false)}, {prop: "registerOnHitEOF", name: "registerOnHitEOF", pkg: "net/http", typ: $funcType([funcType$2], [], false)}];
115345  	bodyLocked.methods = [{prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType$3], [$Int, $error], false)}];
115346  	finishAsyncByteRead.methods = [{prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType$3], [$Int, $error], false)}];
115347  	ptrType$22.methods = [{prop: "onceSetNextProtoDefaults", name: "onceSetNextProtoDefaults", pkg: "net/http", typ: $funcType([], [], false)}, {prop: "RoundTrip", name: "RoundTrip", pkg: "", typ: $funcType([ptrType$7], [ptrType$17, $error], false)}, {prop: "RegisterProtocol", name: "RegisterProtocol", pkg: "", typ: $funcType([$String, RoundTripper], [], false)}, {prop: "CloseIdleConnections", name: "CloseIdleConnections", pkg: "", typ: $funcType([], [], false)}, {prop: "CancelRequest", name: "CancelRequest", pkg: "", typ: $funcType([ptrType$7], [], false)}, {prop: "cancelRequest", name: "cancelRequest", pkg: "net/http", typ: $funcType([ptrType$7, $error], [], false)}, {prop: "connectMethodForRequest", name: "connectMethodForRequest", pkg: "net/http", typ: $funcType([ptrType$137], [connectMethod, $error], false)}, {prop: "putOrCloseIdleConn", name: "putOrCloseIdleConn", pkg: "net/http", typ: $funcType([ptrType$102], [], false)}, {prop: "maxIdleConnsPerHost", name: "maxIdleConnsPerHost", pkg: "net/http", typ: $funcType([], [$Int], false)}, {prop: "tryPutIdleConn", name: "tryPutIdleConn", pkg: "net/http", typ: $funcType([ptrType$102], [$error], false)}, {prop: "getIdleConnCh", name: "getIdleConnCh", pkg: "net/http", typ: $funcType([connectMethod], [chanType$13], false)}, {prop: "getIdleConn", name: "getIdleConn", pkg: "net/http", typ: $funcType([connectMethod], [ptrType$102, time.Time], false)}, {prop: "removeIdleConn", name: "removeIdleConn", pkg: "net/http", typ: $funcType([ptrType$102], [], false)}, {prop: "removeIdleConnLocked", name: "removeIdleConnLocked", pkg: "net/http", typ: $funcType([ptrType$102], [], false)}, {prop: "setReqCanceler", name: "setReqCanceler", pkg: "net/http", typ: $funcType([ptrType$7, funcType$12], [], false)}, {prop: "replaceReqCanceler", name: "replaceReqCanceler", pkg: "net/http", typ: $funcType([ptrType$7, funcType$12], [$Bool], false)}, {prop: "dial", name: "dial", pkg: "net/http", typ: $funcType([context.Context, $String, $String], [net.Conn, $error], false)}, {prop: "getConn", name: "getConn", pkg: "net/http", typ: $funcType([ptrType$137, connectMethod], [ptrType$102, $error], false)}, {prop: "dialConn", name: "dialConn", pkg: "net/http", typ: $funcType([context.Context, connectMethod], [ptrType$102, $error], false)}];
115348  	ptrType$137.methods = [{prop: "extraHeaders", name: "extraHeaders", pkg: "net/http", typ: $funcType([], [Header], false)}, {prop: "setError", name: "setError", pkg: "net/http", typ: $funcType([$error], [], false)}, {prop: "logf", name: "logf", pkg: "net/http", typ: $funcType([$String, sliceType], [], true)}];
115349  	transportReadFromServerError.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}];
115350  	oneConnDialer.methods = [{prop: "Dial", name: "Dial", pkg: "", typ: $funcType([$String, $String], [net.Conn, $error], false)}];
115351  	persistConnWriter.methods = [{prop: "Write", name: "Write", pkg: "", typ: $funcType([sliceType$3], [$Int, $error], false)}];
115352  	ptrType$139.methods = [{prop: "proxyAuth", name: "proxyAuth", pkg: "net/http", typ: $funcType([], [$String], false)}, {prop: "key", name: "key", pkg: "net/http", typ: $funcType([], [connectMethodKey], false)}, {prop: "scheme", name: "scheme", pkg: "net/http", typ: $funcType([], [$String], false)}, {prop: "addr", name: "addr", pkg: "net/http", typ: $funcType([], [$String], false)}, {prop: "tlsHost", name: "tlsHost", pkg: "net/http", typ: $funcType([], [$String], false)}];
115353  	connectMethodKey.methods = [{prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}];
115354  	ptrType$102.methods = [{prop: "shouldRetryRequest", name: "shouldRetryRequest", pkg: "net/http", typ: $funcType([ptrType$7, $error], [$Bool], false)}, {prop: "addTLS", name: "addTLS", pkg: "net/http", typ: $funcType([$String, ptrType$47], [$error], false)}, {prop: "maxHeaderResponseSize", name: "maxHeaderResponseSize", pkg: "net/http", typ: $funcType([], [$Int64], false)}, {prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType$3], [$Int, $error], false)}, {prop: "isBroken", name: "isBroken", pkg: "net/http", typ: $funcType([], [$Bool], false)}, {prop: "canceled", name: "canceled", pkg: "net/http", typ: $funcType([], [$error], false)}, {prop: "isReused", name: "isReused", pkg: "net/http", typ: $funcType([], [$Bool], false)}, {prop: "gotIdleConnTrace", name: "gotIdleConnTrace", pkg: "net/http", typ: $funcType([time.Time], [httptrace.GotConnInfo], false)}, {prop: "cancelRequest", name: "cancelRequest", pkg: "net/http", typ: $funcType([$error], [], false)}, {prop: "closeConnIfStillIdle", name: "closeConnIfStillIdle", pkg: "net/http", typ: $funcType([], [], false)}, {prop: "mapRoundTripError", name: "mapRoundTripError", pkg: "net/http", typ: $funcType([ptrType$137, $Int64, $error], [$error], false)}, {prop: "readLoop", name: "readLoop", pkg: "net/http", typ: $funcType([], [], false)}, {prop: "readLoopPeekFailLocked", name: "readLoopPeekFailLocked", pkg: "net/http", typ: $funcType([$error], [], false)}, {prop: "readResponse", name: "readResponse", pkg: "net/http", typ: $funcType([requestAndChan, ptrType$47], [ptrType$17, $error], false)}, {prop: "waitForContinue", name: "waitForContinue", pkg: "net/http", typ: $funcType([chanType$3], [funcType$5], false)}, {prop: "writeLoop", name: "writeLoop", pkg: "net/http", typ: $funcType([], [], false)}, {prop: "wroteRequest", name: "wroteRequest", pkg: "net/http", typ: $funcType([], [$Bool], false)}, {prop: "roundTrip", name: "roundTrip", pkg: "net/http", typ: $funcType([ptrType$137], [ptrType$17, $error], false)}, {prop: "markReused", name: "markReused", pkg: "net/http", typ: $funcType([], [], false)}, {prop: "close", name: "close", pkg: "net/http", typ: $funcType([$error], [], false)}, {prop: "closeLocked", name: "closeLocked", pkg: "net/http", typ: $funcType([$error], [], false)}];
115355  	ptrType$140.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Timeout", name: "Timeout", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "Temporary", name: "Temporary", pkg: "", typ: $funcType([], [$Bool], false)}];
115356  	ptrType$105.methods = [{prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType$3], [$Int, $error], false)}, {prop: "Close", name: "Close", pkg: "", typ: $funcType([], [$error], false)}, {prop: "condfn", name: "condfn", pkg: "net/http", typ: $funcType([$error], [$error], false)}];
115357  	ptrType$141.methods = [{prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType$3], [$Int, $error], false)}, {prop: "Close", name: "Close", pkg: "", typ: $funcType([], [$error], false)}];
115358  	tlsHandshakeTimeoutError.methods = [{prop: "Timeout", name: "Timeout", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "Temporary", name: "Temporary", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}];
115359  	fakeLocker.methods = [{prop: "Lock", name: "Lock", pkg: "", typ: $funcType([], [], false)}, {prop: "Unlock", name: "Unlock", pkg: "", typ: $funcType([], [], false)}];
115360  	ptrType$142.methods = [{prop: "add", name: "add", pkg: "net/http", typ: $funcType([ptrType$102], [], false)}, {prop: "removeOldest", name: "removeOldest", pkg: "net/http", typ: $funcType([], [ptrType$102], false)}, {prop: "remove", name: "remove", pkg: "net/http", typ: $funcType([ptrType$102], [], false)}, {prop: "len", name: "len", pkg: "net/http", typ: $funcType([], [$Int], false)}];
115361  	streamReader.init("net/http", [{prop: "pending", name: "pending", anonymous: false, exported: false, typ: sliceType$3, tag: ""}, {prop: "stream", name: "stream", anonymous: false, exported: false, typ: ptrType$16, tag: ""}]);
115362  	fetchTransport.init("", []);
115363  	noTransport.init("", []);
115364  	XHRTransport.init("net/http", [{prop: "inflight", name: "inflight", anonymous: false, exported: false, typ: mapType$2, tag: ""}]);
115365  	Client.init("", [{prop: "Transport", name: "Transport", anonymous: false, exported: true, typ: RoundTripper, tag: ""}, {prop: "CheckRedirect", name: "CheckRedirect", anonymous: false, exported: true, typ: funcType$7, tag: ""}, {prop: "Jar", name: "Jar", anonymous: false, exported: true, typ: CookieJar, tag: ""}, {prop: "Timeout", name: "Timeout", anonymous: false, exported: true, typ: time.Duration, tag: ""}]);
115366  	RoundTripper.init([{prop: "RoundTrip", name: "RoundTrip", pkg: "", typ: $funcType([ptrType$7], [ptrType$17, $error], false)}]);
115367  	cancelTimerBody.init("net/http", [{prop: "stop", name: "stop", anonymous: false, exported: false, typ: funcType$2, tag: ""}, {prop: "rc", name: "rc", anonymous: false, exported: false, typ: io.ReadCloser, tag: ""}, {prop: "reqDidTimeout", name: "reqDidTimeout", anonymous: false, exported: false, typ: funcType$5, tag: ""}]);
115368  	Cookie.init("", [{prop: "Name", name: "Name", anonymous: false, exported: true, typ: $String, tag: ""}, {prop: "Value", name: "Value", anonymous: false, exported: true, typ: $String, tag: ""}, {prop: "Path", name: "Path", anonymous: false, exported: true, typ: $String, tag: ""}, {prop: "Domain", name: "Domain", anonymous: false, exported: true, typ: $String, tag: ""}, {prop: "Expires", name: "Expires", anonymous: false, exported: true, typ: time.Time, tag: ""}, {prop: "RawExpires", name: "RawExpires", anonymous: false, exported: true, typ: $String, tag: ""}, {prop: "MaxAge", name: "MaxAge", anonymous: false, exported: true, typ: $Int, tag: ""}, {prop: "Secure", name: "Secure", anonymous: false, exported: true, typ: $Bool, tag: ""}, {prop: "HttpOnly", name: "HttpOnly", anonymous: false, exported: true, typ: $Bool, tag: ""}, {prop: "Raw", name: "Raw", anonymous: false, exported: true, typ: $String, tag: ""}, {prop: "Unparsed", name: "Unparsed", anonymous: false, exported: true, typ: sliceType$1, tag: ""}]);
115369  	http2ClientConnPool.init([{prop: "GetClientConn", name: "GetClientConn", pkg: "", typ: $funcType([ptrType$7, $String], [ptrType$28, $error], false)}, {prop: "MarkDead", name: "MarkDead", pkg: "", typ: $funcType([ptrType$28], [], false)}]);
115370  	http2clientConnPoolIdleCloser.init([{prop: "GetClientConn", name: "GetClientConn", pkg: "", typ: $funcType([ptrType$7, $String], [ptrType$28, $error], false)}, {prop: "MarkDead", name: "MarkDead", pkg: "", typ: $funcType([ptrType$28], [], false)}, {prop: "closeIdleConnections", name: "closeIdleConnections", pkg: "net/http", typ: $funcType([], [], false)}]);
115371  	http2clientConnPool.init("net/http", [{prop: "t", name: "t", anonymous: false, exported: false, typ: ptrType$15, tag: ""}, {prop: "mu", name: "mu", anonymous: false, exported: false, typ: sync.Mutex, tag: ""}, {prop: "conns", name: "conns", anonymous: false, exported: false, typ: mapType$3, tag: ""}, {prop: "dialing", name: "dialing", anonymous: false, exported: false, typ: mapType$4, tag: ""}, {prop: "keys", name: "keys", anonymous: false, exported: false, typ: mapType$5, tag: ""}, {prop: "addConnCalls", name: "addConnCalls", anonymous: false, exported: false, typ: mapType$6, tag: ""}]);
115372  	http2dialCall.init("net/http", [{prop: "p", name: "p", anonymous: false, exported: false, typ: ptrType$3, tag: ""}, {prop: "done", name: "done", anonymous: false, exported: false, typ: chanType$2, tag: ""}, {prop: "res", name: "res", anonymous: false, exported: false, typ: ptrType$28, tag: ""}, {prop: "err", name: "err", anonymous: false, exported: false, typ: $error, tag: ""}]);
115373  	http2addConnCall.init("net/http", [{prop: "p", name: "p", anonymous: false, exported: false, typ: ptrType$3, tag: ""}, {prop: "done", name: "done", anonymous: false, exported: false, typ: chanType$2, tag: ""}, {prop: "err", name: "err", anonymous: false, exported: false, typ: $error, tag: ""}]);
115374  	http2noDialClientConnPool.init("net/http", [{prop: "http2clientConnPool", name: "http2clientConnPool", anonymous: true, exported: false, typ: ptrType$3, tag: ""}]);
115375  	http2noDialH2RoundTripper.init("net/http", [{prop: "t", name: "t", anonymous: false, exported: false, typ: ptrType$15, tag: ""}]);
115376  	http2dataBuffer.init("net/http", [{prop: "chunks", name: "chunks", anonymous: false, exported: false, typ: sliceType$5, tag: ""}, {prop: "r", name: "r", anonymous: false, exported: false, typ: $Int, tag: ""}, {prop: "w", name: "w", anonymous: false, exported: false, typ: $Int, tag: ""}, {prop: "size", name: "size", anonymous: false, exported: false, typ: $Int, tag: ""}, {prop: "expected", name: "expected", anonymous: false, exported: false, typ: $Int64, tag: ""}]);
115377  	http2StreamError.init("", [{prop: "StreamID", name: "StreamID", anonymous: false, exported: true, typ: $Uint32, tag: ""}, {prop: "Code", name: "Code", anonymous: false, exported: true, typ: http2ErrCode, tag: ""}, {prop: "Cause", name: "Cause", anonymous: false, exported: true, typ: $error, tag: ""}]);
115378  	http2goAwayFlowError.init("", []);
115379  	http2connError.init("", [{prop: "Code", name: "Code", anonymous: false, exported: true, typ: http2ErrCode, tag: ""}, {prop: "Reason", name: "Reason", anonymous: false, exported: true, typ: $String, tag: ""}]);
115380  	http2flow.init("net/http", [{prop: "n", name: "n", anonymous: false, exported: false, typ: $Int32, tag: ""}, {prop: "conn", name: "conn", anonymous: false, exported: false, typ: ptrType$32, tag: ""}]);
115381  	http2FrameHeader.init("net/http", [{prop: "valid", name: "valid", anonymous: false, exported: false, typ: $Bool, tag: ""}, {prop: "Type", name: "Type", anonymous: false, exported: true, typ: http2FrameType, tag: ""}, {prop: "Flags", name: "Flags", anonymous: false, exported: true, typ: http2Flags, tag: ""}, {prop: "Length", name: "Length", anonymous: false, exported: true, typ: $Uint32, tag: ""}, {prop: "StreamID", name: "StreamID", anonymous: false, exported: true, typ: $Uint32, tag: ""}]);
115382  	http2Frame.init([{prop: "Header", name: "Header", pkg: "", typ: $funcType([], [http2FrameHeader], false)}, {prop: "invalidate", name: "invalidate", pkg: "net/http", typ: $funcType([], [], false)}]);
115383  	http2Framer.init("net/http", [{prop: "r", name: "r", anonymous: false, exported: false, typ: io.Reader, tag: ""}, {prop: "lastFrame", name: "lastFrame", anonymous: false, exported: false, typ: http2Frame, tag: ""}, {prop: "errDetail", name: "errDetail", anonymous: false, exported: false, typ: $error, tag: ""}, {prop: "lastHeaderStream", name: "lastHeaderStream", anonymous: false, exported: false, typ: $Uint32, tag: ""}, {prop: "maxReadSize", name: "maxReadSize", anonymous: false, exported: false, typ: $Uint32, tag: ""}, {prop: "headerBuf", name: "headerBuf", anonymous: false, exported: false, typ: arrayType$3, tag: ""}, {prop: "getReadBuf", name: "getReadBuf", anonymous: false, exported: false, typ: funcType$8, tag: ""}, {prop: "readBuf", name: "readBuf", anonymous: false, exported: false, typ: sliceType$3, tag: ""}, {prop: "maxWriteSize", name: "maxWriteSize", anonymous: false, exported: false, typ: $Uint32, tag: ""}, {prop: "w", name: "w", anonymous: false, exported: false, typ: io.Writer, tag: ""}, {prop: "wbuf", name: "wbuf", anonymous: false, exported: false, typ: sliceType$3, tag: ""}, {prop: "AllowIllegalWrites", name: "AllowIllegalWrites", anonymous: false, exported: true, typ: $Bool, tag: ""}, {prop: "AllowIllegalReads", name: "AllowIllegalReads", anonymous: false, exported: true, typ: $Bool, tag: ""}, {prop: "ReadMetaHeaders", name: "ReadMetaHeaders", anonymous: false, exported: true, typ: ptrType$35, tag: ""}, {prop: "MaxHeaderListSize", name: "MaxHeaderListSize", anonymous: false, exported: true, typ: $Uint32, tag: ""}, {prop: "logReads", name: "logReads", anonymous: false, exported: false, typ: $Bool, tag: ""}, {prop: "logWrites", name: "logWrites", anonymous: false, exported: false, typ: $Bool, tag: ""}, {prop: "debugFramer", name: "debugFramer", anonymous: false, exported: false, typ: ptrType$33, tag: ""}, {prop: "debugFramerBuf", name: "debugFramerBuf", anonymous: false, exported: false, typ: ptrType$36, tag: ""}, {prop: "debugReadLoggerf", name: "debugReadLoggerf", anonymous: false, exported: false, typ: funcType$4, tag: ""}, {prop: "debugWriteLoggerf", name: "debugWriteLoggerf", anonymous: false, exported: false, typ: funcType$4, tag: ""}, {prop: "frameCache", name: "frameCache", anonymous: false, exported: false, typ: ptrType$34, tag: ""}]);
115384  	http2frameCache.init("net/http", [{prop: "dataFrame", name: "dataFrame", anonymous: false, exported: false, typ: http2DataFrame, tag: ""}]);
115385  	http2DataFrame.init("net/http", [{prop: "http2FrameHeader", name: "http2FrameHeader", anonymous: true, exported: false, typ: http2FrameHeader, tag: ""}, {prop: "data", name: "data", anonymous: false, exported: false, typ: sliceType$3, tag: ""}]);
115386  	http2SettingsFrame.init("net/http", [{prop: "http2FrameHeader", name: "http2FrameHeader", anonymous: true, exported: false, typ: http2FrameHeader, tag: ""}, {prop: "p", name: "p", anonymous: false, exported: false, typ: sliceType$3, tag: ""}]);
115387  	http2PingFrame.init("net/http", [{prop: "http2FrameHeader", name: "http2FrameHeader", anonymous: true, exported: false, typ: http2FrameHeader, tag: ""}, {prop: "Data", name: "Data", anonymous: false, exported: true, typ: arrayType$4, tag: ""}]);
115388  	http2GoAwayFrame.init("net/http", [{prop: "http2FrameHeader", name: "http2FrameHeader", anonymous: true, exported: false, typ: http2FrameHeader, tag: ""}, {prop: "LastStreamID", name: "LastStreamID", anonymous: false, exported: true, typ: $Uint32, tag: ""}, {prop: "ErrCode", name: "ErrCode", anonymous: false, exported: true, typ: http2ErrCode, tag: ""}, {prop: "debugData", name: "debugData", anonymous: false, exported: false, typ: sliceType$3, tag: ""}]);
115389  	http2UnknownFrame.init("net/http", [{prop: "http2FrameHeader", name: "http2FrameHeader", anonymous: true, exported: false, typ: http2FrameHeader, tag: ""}, {prop: "p", name: "p", anonymous: false, exported: false, typ: sliceType$3, tag: ""}]);
115390  	http2WindowUpdateFrame.init("net/http", [{prop: "http2FrameHeader", name: "http2FrameHeader", anonymous: true, exported: false, typ: http2FrameHeader, tag: ""}, {prop: "Increment", name: "Increment", anonymous: false, exported: true, typ: $Uint32, tag: ""}]);
115391  	http2HeadersFrame.init("net/http", [{prop: "http2FrameHeader", name: "http2FrameHeader", anonymous: true, exported: false, typ: http2FrameHeader, tag: ""}, {prop: "Priority", name: "Priority", anonymous: false, exported: true, typ: http2PriorityParam, tag: ""}, {prop: "headerFragBuf", name: "headerFragBuf", anonymous: false, exported: false, typ: sliceType$3, tag: ""}]);
115392  	http2HeadersFrameParam.init("", [{prop: "StreamID", name: "StreamID", anonymous: false, exported: true, typ: $Uint32, tag: ""}, {prop: "BlockFragment", name: "BlockFragment", anonymous: false, exported: true, typ: sliceType$3, tag: ""}, {prop: "EndStream", name: "EndStream", anonymous: false, exported: true, typ: $Bool, tag: ""}, {prop: "EndHeaders", name: "EndHeaders", anonymous: false, exported: true, typ: $Bool, tag: ""}, {prop: "PadLength", name: "PadLength", anonymous: false, exported: true, typ: $Uint8, tag: ""}, {prop: "Priority", name: "Priority", anonymous: false, exported: true, typ: http2PriorityParam, tag: ""}]);
115393  	http2PriorityFrame.init("net/http", [{prop: "http2FrameHeader", name: "http2FrameHeader", anonymous: true, exported: false, typ: http2FrameHeader, tag: ""}, {prop: "http2PriorityParam", name: "http2PriorityParam", anonymous: true, exported: false, typ: http2PriorityParam, tag: ""}]);
115394  	http2PriorityParam.init("", [{prop: "StreamDep", name: "StreamDep", anonymous: false, exported: true, typ: $Uint32, tag: ""}, {prop: "Exclusive", name: "Exclusive", anonymous: false, exported: true, typ: $Bool, tag: ""}, {prop: "Weight", name: "Weight", anonymous: false, exported: true, typ: $Uint8, tag: ""}]);
115395  	http2RSTStreamFrame.init("net/http", [{prop: "http2FrameHeader", name: "http2FrameHeader", anonymous: true, exported: false, typ: http2FrameHeader, tag: ""}, {prop: "ErrCode", name: "ErrCode", anonymous: false, exported: true, typ: http2ErrCode, tag: ""}]);
115396  	http2ContinuationFrame.init("net/http", [{prop: "http2FrameHeader", name: "http2FrameHeader", anonymous: true, exported: false, typ: http2FrameHeader, tag: ""}, {prop: "headerFragBuf", name: "headerFragBuf", anonymous: false, exported: false, typ: sliceType$3, tag: ""}]);
115397  	http2PushPromiseFrame.init("net/http", [{prop: "http2FrameHeader", name: "http2FrameHeader", anonymous: true, exported: false, typ: http2FrameHeader, tag: ""}, {prop: "PromiseID", name: "PromiseID", anonymous: false, exported: true, typ: $Uint32, tag: ""}, {prop: "headerFragBuf", name: "headerFragBuf", anonymous: false, exported: false, typ: sliceType$3, tag: ""}]);
115398  	http2PushPromiseParam.init("", [{prop: "StreamID", name: "StreamID", anonymous: false, exported: true, typ: $Uint32, tag: ""}, {prop: "PromiseID", name: "PromiseID", anonymous: false, exported: true, typ: $Uint32, tag: ""}, {prop: "BlockFragment", name: "BlockFragment", anonymous: false, exported: true, typ: sliceType$3, tag: ""}, {prop: "EndHeaders", name: "EndHeaders", anonymous: false, exported: true, typ: $Bool, tag: ""}, {prop: "PadLength", name: "PadLength", anonymous: false, exported: true, typ: $Uint8, tag: ""}]);
115399  	http2MetaHeadersFrame.init("net/http", [{prop: "http2HeadersFrame", name: "http2HeadersFrame", anonymous: true, exported: false, typ: ptrType$37, tag: ""}, {prop: "Fields", name: "Fields", anonymous: false, exported: true, typ: sliceType$15, tag: ""}, {prop: "Truncated", name: "Truncated", anonymous: false, exported: true, typ: $Bool, tag: ""}]);
115400  	http2contextContext.init([{prop: "Deadline", name: "Deadline", pkg: "", typ: $funcType([], [time.Time, $Bool], false)}, {prop: "Done", name: "Done", pkg: "", typ: $funcType([], [chanType$3], false)}, {prop: "Err", name: "Err", pkg: "", typ: $funcType([], [$error], false)}, {prop: "Value", name: "Value", pkg: "", typ: $funcType([$emptyInterface], [$emptyInterface], false)}]);
115401  	http2clientTrace.init("", [{prop: "GetConn", name: "GetConn", anonymous: false, exported: true, typ: funcType$10, tag: ""}, {prop: "GotConn", name: "GotConn", anonymous: false, exported: true, typ: funcType$11, tag: ""}, {prop: "PutIdleConn", name: "PutIdleConn", anonymous: false, exported: true, typ: funcType$12, tag: ""}, {prop: "GotFirstResponseByte", name: "GotFirstResponseByte", anonymous: false, exported: true, typ: funcType$2, tag: ""}, {prop: "Got100Continue", name: "Got100Continue", anonymous: false, exported: true, typ: funcType$2, tag: ""}, {prop: "DNSStart", name: "DNSStart", anonymous: false, exported: true, typ: funcType$13, tag: ""}, {prop: "DNSDone", name: "DNSDone", anonymous: false, exported: true, typ: funcType$14, tag: ""}, {prop: "ConnectStart", name: "ConnectStart", anonymous: false, exported: true, typ: funcType$15, tag: ""}, {prop: "ConnectDone", name: "ConnectDone", anonymous: false, exported: true, typ: funcType$16, tag: ""}, {prop: "TLSHandshakeStart", name: "TLSHandshakeStart", anonymous: false, exported: true, typ: funcType$2, tag: ""}, {prop: "TLSHandshakeDone", name: "TLSHandshakeDone", anonymous: false, exported: true, typ: funcType$17, tag: ""}, {prop: "WroteHeaders", name: "WroteHeaders", anonymous: false, exported: true, typ: funcType$2, tag: ""}, {prop: "Wait100Continue", name: "Wait100Continue", anonymous: false, exported: true, typ: funcType$2, tag: ""}, {prop: "WroteRequest", name: "WroteRequest", anonymous: false, exported: true, typ: funcType$18, tag: ""}]);
115402  	http2Setting.init("", [{prop: "ID", name: "ID", anonymous: false, exported: true, typ: http2SettingID, tag: ""}, {prop: "Val", name: "Val", anonymous: false, exported: true, typ: $Uint32, tag: ""}]);
115403  	http2gate.init(structType, false, false);
115404  	http2closeWaiter.init(structType, false, false);
115405  	http2bufferedWriter.init("net/http", [{prop: "w", name: "w", anonymous: false, exported: false, typ: io.Writer, tag: ""}, {prop: "bw", name: "bw", anonymous: false, exported: false, typ: ptrType$10, tag: ""}]);
115406  	http2httpError.init("net/http", [{prop: "msg", name: "msg", anonymous: false, exported: false, typ: $String, tag: ""}, {prop: "timeout", name: "timeout", anonymous: false, exported: false, typ: $Bool, tag: ""}]);
115407  	http2connectionStater.init([{prop: "ConnectionState", name: "ConnectionState", pkg: "", typ: $funcType([], [tls.ConnectionState], false)}]);
115408  	http2sorter.init("net/http", [{prop: "v", name: "v", anonymous: false, exported: false, typ: sliceType$1, tag: ""}]);
115409  	http2pipe.init("net/http", [{prop: "mu", name: "mu", anonymous: false, exported: false, typ: sync.Mutex, tag: ""}, {prop: "c", name: "c", anonymous: false, exported: false, typ: sync.Cond, tag: ""}, {prop: "b", name: "b", anonymous: false, exported: false, typ: http2pipeBuffer, tag: ""}, {prop: "err", name: "err", anonymous: false, exported: false, typ: $error, tag: ""}, {prop: "breakErr", name: "breakErr", anonymous: false, exported: false, typ: $error, tag: ""}, {prop: "donec", name: "donec", anonymous: false, exported: false, typ: chanType$2, tag: ""}, {prop: "readFn", name: "readFn", anonymous: false, exported: false, typ: funcType$2, tag: ""}]);
115410  	http2pipeBuffer.init([{prop: "Len", name: "Len", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType$3], [$Int, $error], false)}, {prop: "Write", name: "Write", pkg: "", typ: $funcType([sliceType$3], [$Int, $error], false)}]);
115411  	http2Server.init("net/http", [{prop: "MaxHandlers", name: "MaxHandlers", anonymous: false, exported: true, typ: $Int, tag: ""}, {prop: "MaxConcurrentStreams", name: "MaxConcurrentStreams", anonymous: false, exported: true, typ: $Uint32, tag: ""}, {prop: "MaxReadFrameSize", name: "MaxReadFrameSize", anonymous: false, exported: true, typ: $Uint32, tag: ""}, {prop: "PermitProhibitedCipherSuites", name: "PermitProhibitedCipherSuites", anonymous: false, exported: true, typ: $Bool, tag: ""}, {prop: "IdleTimeout", name: "IdleTimeout", anonymous: false, exported: true, typ: time.Duration, tag: ""}, {prop: "MaxUploadBufferPerConnection", name: "MaxUploadBufferPerConnection", anonymous: false, exported: true, typ: $Int32, tag: ""}, {prop: "MaxUploadBufferPerStream", name: "MaxUploadBufferPerStream", anonymous: false, exported: true, typ: $Int32, tag: ""}, {prop: "NewWriteScheduler", name: "NewWriteScheduler", anonymous: false, exported: true, typ: funcType$19, tag: ""}, {prop: "state", name: "state", anonymous: false, exported: false, typ: ptrType$51, tag: ""}]);
115412  	http2serverInternalState.init("net/http", [{prop: "mu", name: "mu", anonymous: false, exported: false, typ: sync.Mutex, tag: ""}, {prop: "activeConns", name: "activeConns", anonymous: false, exported: false, typ: mapType$7, tag: ""}]);
115413  	http2ServeConnOpts.init("", [{prop: "BaseConfig", name: "BaseConfig", anonymous: false, exported: true, typ: ptrType$46, tag: ""}, {prop: "Handler", name: "Handler", anonymous: false, exported: true, typ: Handler, tag: ""}]);
115414  	http2serverConn.init("net/http", [{prop: "srv", name: "srv", anonymous: false, exported: false, typ: ptrType$52, tag: ""}, {prop: "hs", name: "hs", anonymous: false, exported: false, typ: ptrType$46, tag: ""}, {prop: "conn", name: "conn", anonymous: false, exported: false, typ: net.Conn, tag: ""}, {prop: "bw", name: "bw", anonymous: false, exported: false, typ: ptrType$55, tag: ""}, {prop: "handler", name: "handler", anonymous: false, exported: false, typ: Handler, tag: ""}, {prop: "baseCtx", name: "baseCtx", anonymous: false, exported: false, typ: http2contextContext, tag: ""}, {prop: "framer", name: "framer", anonymous: false, exported: false, typ: ptrType$33, tag: ""}, {prop: "doneServing", name: "doneServing", anonymous: false, exported: false, typ: chanType$2, tag: ""}, {prop: "readFrameCh", name: "readFrameCh", anonymous: false, exported: false, typ: chanType$4, tag: ""}, {prop: "wantWriteFrameCh", name: "wantWriteFrameCh", anonymous: false, exported: false, typ: chanType$5, tag: ""}, {prop: "wroteFrameCh", name: "wroteFrameCh", anonymous: false, exported: false, typ: chanType$6, tag: ""}, {prop: "bodyReadCh", name: "bodyReadCh", anonymous: false, exported: false, typ: chanType$7, tag: ""}, {prop: "serveMsgCh", name: "serveMsgCh", anonymous: false, exported: false, typ: chanType$8, tag: ""}, {prop: "flow", name: "flow", anonymous: false, exported: false, typ: http2flow, tag: ""}, {prop: "inflow", name: "inflow", anonymous: false, exported: false, typ: http2flow, tag: ""}, {prop: "tlsState", name: "tlsState", anonymous: false, exported: false, typ: ptrType$18, tag: ""}, {prop: "remoteAddrStr", name: "remoteAddrStr", anonymous: false, exported: false, typ: $String, tag: ""}, {prop: "writeSched", name: "writeSched", anonymous: false, exported: false, typ: http2WriteScheduler, tag: ""}, {prop: "serveG", name: "serveG", anonymous: false, exported: false, typ: http2goroutineLock, tag: ""}, {prop: "pushEnabled", name: "pushEnabled", anonymous: false, exported: false, typ: $Bool, tag: ""}, {prop: "sawFirstSettings", name: "sawFirstSettings", anonymous: false, exported: false, typ: $Bool, tag: ""}, {prop: "needToSendSettingsAck", name: "needToSendSettingsAck", anonymous: false, exported: false, typ: $Bool, tag: ""}, {prop: "unackedSettings", name: "unackedSettings", anonymous: false, exported: false, typ: $Int, tag: ""}, {prop: "clientMaxStreams", name: "clientMaxStreams", anonymous: false, exported: false, typ: $Uint32, tag: ""}, {prop: "advMaxStreams", name: "advMaxStreams", anonymous: false, exported: false, typ: $Uint32, tag: ""}, {prop: "curClientStreams", name: "curClientStreams", anonymous: false, exported: false, typ: $Uint32, tag: ""}, {prop: "curPushedStreams", name: "curPushedStreams", anonymous: false, exported: false, typ: $Uint32, tag: ""}, {prop: "maxClientStreamID", name: "maxClientStreamID", anonymous: false, exported: false, typ: $Uint32, tag: ""}, {prop: "maxPushPromiseID", name: "maxPushPromiseID", anonymous: false, exported: false, typ: $Uint32, tag: ""}, {prop: "streams", name: "streams", anonymous: false, exported: false, typ: mapType$8, tag: ""}, {prop: "initialStreamSendWindowSize", name: "initialStreamSendWindowSize", anonymous: false, exported: false, typ: $Int32, tag: ""}, {prop: "maxFrameSize", name: "maxFrameSize", anonymous: false, exported: false, typ: $Int32, tag: ""}, {prop: "headerTableSize", name: "headerTableSize", anonymous: false, exported: false, typ: $Uint32, tag: ""}, {prop: "peerMaxHeaderListSize", name: "peerMaxHeaderListSize", anonymous: false, exported: false, typ: $Uint32, tag: ""}, {prop: "canonHeader", name: "canonHeader", anonymous: false, exported: false, typ: mapType$9, tag: ""}, {prop: "writingFrame", name: "writingFrame", anonymous: false, exported: false, typ: $Bool, tag: ""}, {prop: "writingFrameAsync", name: "writingFrameAsync", anonymous: false, exported: false, typ: $Bool, tag: ""}, {prop: "needsFrameFlush", name: "needsFrameFlush", anonymous: false, exported: false, typ: $Bool, tag: ""}, {prop: "inGoAway", name: "inGoAway", anonymous: false, exported: false, typ: $Bool, tag: ""}, {prop: "inFrameScheduleLoop", name: "inFrameScheduleLoop", anonymous: false, exported: false, typ: $Bool, tag: ""}, {prop: "needToSendGoAway", name: "needToSendGoAway", anonymous: false, exported: false, typ: $Bool, tag: ""}, {prop: "goAwayCode", name: "goAwayCode", anonymous: false, exported: false, typ: http2ErrCode, tag: ""}, {prop: "shutdownTimer", name: "shutdownTimer", anonymous: false, exported: false, typ: ptrType$56, tag: ""}, {prop: "idleTimer", name: "idleTimer", anonymous: false, exported: false, typ: ptrType$56, tag: ""}, {prop: "headerWriteBuf", name: "headerWriteBuf", anonymous: false, exported: false, typ: bytes.Buffer, tag: ""}, {prop: "hpackEncoder", name: "hpackEncoder", anonymous: false, exported: false, typ: ptrType$57, tag: ""}, {prop: "shutdownOnce", name: "shutdownOnce", anonymous: false, exported: false, typ: sync.Once, tag: ""}]);
115415  	http2stream.init("net/http", [{prop: "sc", name: "sc", anonymous: false, exported: false, typ: ptrType$9, tag: ""}, {prop: "id", name: "id", anonymous: false, exported: false, typ: $Uint32, tag: ""}, {prop: "body", name: "body", anonymous: false, exported: false, typ: ptrType$67, tag: ""}, {prop: "cw", name: "cw", anonymous: false, exported: false, typ: http2closeWaiter, tag: ""}, {prop: "ctx", name: "ctx", anonymous: false, exported: false, typ: http2contextContext, tag: ""}, {prop: "cancelCtx", name: "cancelCtx", anonymous: false, exported: false, typ: funcType$2, tag: ""}, {prop: "bodyBytes", name: "bodyBytes", anonymous: false, exported: false, typ: $Int64, tag: ""}, {prop: "declBodyBytes", name: "declBodyBytes", anonymous: false, exported: false, typ: $Int64, tag: ""}, {prop: "flow", name: "flow", anonymous: false, exported: false, typ: http2flow, tag: ""}, {prop: "inflow", name: "inflow", anonymous: false, exported: false, typ: http2flow, tag: ""}, {prop: "parent", name: "parent", anonymous: false, exported: false, typ: ptrType$6, tag: ""}, {prop: "numTrailerValues", name: "numTrailerValues", anonymous: false, exported: false, typ: $Int64, tag: ""}, {prop: "weight", name: "weight", anonymous: false, exported: false, typ: $Uint8, tag: ""}, {prop: "state", name: "state", anonymous: false, exported: false, typ: http2streamState, tag: ""}, {prop: "resetQueued", name: "resetQueued", anonymous: false, exported: false, typ: $Bool, tag: ""}, {prop: "gotTrailerHeader", name: "gotTrailerHeader", anonymous: false, exported: false, typ: $Bool, tag: ""}, {prop: "wroteHeaders", name: "wroteHeaders", anonymous: false, exported: false, typ: $Bool, tag: ""}, {prop: "writeDeadline", name: "writeDeadline", anonymous: false, exported: false, typ: ptrType$56, tag: ""}, {prop: "trailer", name: "trailer", anonymous: false, exported: false, typ: Header, tag: ""}, {prop: "reqTrailer", name: "reqTrailer", anonymous: false, exported: false, typ: Header, tag: ""}]);
115416  	http2readFrameResult.init("net/http", [{prop: "f", name: "f", anonymous: false, exported: false, typ: http2Frame, tag: ""}, {prop: "err", name: "err", anonymous: false, exported: false, typ: $error, tag: ""}, {prop: "readMore", name: "readMore", anonymous: false, exported: false, typ: funcType$2, tag: ""}]);
115417  	http2frameWriteResult.init("net/http", [{prop: "wr", name: "wr", anonymous: false, exported: false, typ: http2FrameWriteRequest, tag: ""}, {prop: "err", name: "err", anonymous: false, exported: false, typ: $error, tag: ""}]);
115418  	http2requestParam.init("net/http", [{prop: "method", name: "method", anonymous: false, exported: false, typ: $String, tag: ""}, {prop: "scheme", name: "scheme", anonymous: false, exported: false, typ: $String, tag: ""}, {prop: "authority", name: "authority", anonymous: false, exported: false, typ: $String, tag: ""}, {prop: "path", name: "path", anonymous: false, exported: false, typ: $String, tag: ""}, {prop: "header", name: "header", anonymous: false, exported: false, typ: Header, tag: ""}]);
115419  	http2bodyReadMsg.init("net/http", [{prop: "st", name: "st", anonymous: false, exported: false, typ: ptrType$6, tag: ""}, {prop: "n", name: "n", anonymous: false, exported: false, typ: $Int, tag: ""}]);
115420  	http2requestBody.init("net/http", [{prop: "stream", name: "stream", anonymous: false, exported: false, typ: ptrType$6, tag: ""}, {prop: "conn", name: "conn", anonymous: false, exported: false, typ: ptrType$9, tag: ""}, {prop: "closed", name: "closed", anonymous: false, exported: false, typ: $Bool, tag: ""}, {prop: "sawEOF", name: "sawEOF", anonymous: false, exported: false, typ: $Bool, tag: ""}, {prop: "pipe", name: "pipe", anonymous: false, exported: false, typ: ptrType$67, tag: ""}, {prop: "needsContinue", name: "needsContinue", anonymous: false, exported: false, typ: $Bool, tag: ""}]);
115421  	http2responseWriter.init("net/http", [{prop: "rws", name: "rws", anonymous: false, exported: false, typ: ptrType$69, tag: ""}]);
115422  	http2responseWriterState.init("net/http", [{prop: "stream", name: "stream", anonymous: false, exported: false, typ: ptrType$6, tag: ""}, {prop: "req", name: "req", anonymous: false, exported: false, typ: ptrType$7, tag: ""}, {prop: "body", name: "body", anonymous: false, exported: false, typ: ptrType$8, tag: ""}, {prop: "conn", name: "conn", anonymous: false, exported: false, typ: ptrType$9, tag: ""}, {prop: "bw", name: "bw", anonymous: false, exported: false, typ: ptrType$10, tag: ""}, {prop: "handlerHeader", name: "handlerHeader", anonymous: false, exported: false, typ: Header, tag: ""}, {prop: "snapHeader", name: "snapHeader", anonymous: false, exported: false, typ: Header, tag: ""}, {prop: "trailers", name: "trailers", anonymous: false, exported: false, typ: sliceType$1, tag: ""}, {prop: "status", name: "status", anonymous: false, exported: false, typ: $Int, tag: ""}, {prop: "wroteHeader", name: "wroteHeader", anonymous: false, exported: false, typ: $Bool, tag: ""}, {prop: "sentHeader", name: "sentHeader", anonymous: false, exported: false, typ: $Bool, tag: ""}, {prop: "handlerDone", name: "handlerDone", anonymous: false, exported: false, typ: $Bool, tag: ""}, {prop: "dirty", name: "dirty", anonymous: false, exported: false, typ: $Bool, tag: ""}, {prop: "sentContentLen", name: "sentContentLen", anonymous: false, exported: false, typ: $Int64, tag: ""}, {prop: "wroteBytes", name: "wroteBytes", anonymous: false, exported: false, typ: $Int64, tag: ""}, {prop: "closeNotifierMu", name: "closeNotifierMu", anonymous: false, exported: false, typ: sync.Mutex, tag: ""}, {prop: "closeNotifierCh", name: "closeNotifierCh", anonymous: false, exported: false, typ: chanType$10, tag: ""}]);
115423  	http2chunkWriter.init("net/http", [{prop: "rws", name: "rws", anonymous: false, exported: false, typ: ptrType$69, tag: ""}]);
115424  	http2pushOptions.init("", [{prop: "Method", name: "Method", anonymous: false, exported: true, typ: $String, tag: ""}, {prop: "Header", name: "Header", anonymous: false, exported: true, typ: Header, tag: ""}]);
115425  	http2startPushRequest.init("net/http", [{prop: "parent", name: "parent", anonymous: false, exported: false, typ: ptrType$6, tag: ""}, {prop: "method", name: "method", anonymous: false, exported: false, typ: $String, tag: ""}, {prop: "url", name: "url", anonymous: false, exported: false, typ: ptrType$20, tag: ""}, {prop: "header", name: "header", anonymous: false, exported: false, typ: Header, tag: ""}, {prop: "done", name: "done", anonymous: false, exported: false, typ: chanType, tag: ""}]);
115426  	http2Transport.init("net/http", [{prop: "DialTLS", name: "DialTLS", anonymous: false, exported: true, typ: funcType$21, tag: ""}, {prop: "TLSClientConfig", name: "TLSClientConfig", anonymous: false, exported: true, typ: ptrType$14, tag: ""}, {prop: "ConnPool", name: "ConnPool", anonymous: false, exported: true, typ: http2ClientConnPool, tag: ""}, {prop: "DisableCompression", name: "DisableCompression", anonymous: false, exported: true, typ: $Bool, tag: ""}, {prop: "AllowHTTP", name: "AllowHTTP", anonymous: false, exported: true, typ: $Bool, tag: ""}, {prop: "MaxHeaderListSize", name: "MaxHeaderListSize", anonymous: false, exported: true, typ: $Uint32, tag: ""}, {prop: "t1", name: "t1", anonymous: false, exported: false, typ: ptrType$22, tag: ""}, {prop: "connPoolOnce", name: "connPoolOnce", anonymous: false, exported: false, typ: sync.Once, tag: ""}, {prop: "connPoolOrDef", name: "connPoolOrDef", anonymous: false, exported: false, typ: http2ClientConnPool, tag: ""}]);
115427  	http2ClientConn.init("net/http", [{prop: "t", name: "t", anonymous: false, exported: false, typ: ptrType$15, tag: ""}, {prop: "tconn", name: "tconn", anonymous: false, exported: false, typ: net.Conn, tag: ""}, {prop: "tlsState", name: "tlsState", anonymous: false, exported: false, typ: ptrType$18, tag: ""}, {prop: "singleUse", name: "singleUse", anonymous: false, exported: false, typ: $Bool, tag: ""}, {prop: "readerDone", name: "readerDone", anonymous: false, exported: false, typ: chanType$2, tag: ""}, {prop: "readerErr", name: "readerErr", anonymous: false, exported: false, typ: $error, tag: ""}, {prop: "idleTimeout", name: "idleTimeout", anonymous: false, exported: false, typ: time.Duration, tag: ""}, {prop: "idleTimer", name: "idleTimer", anonymous: false, exported: false, typ: ptrType$56, tag: ""}, {prop: "mu", name: "mu", anonymous: false, exported: false, typ: sync.Mutex, tag: ""}, {prop: "cond", name: "cond", anonymous: false, exported: false, typ: ptrType$71, tag: ""}, {prop: "flow", name: "flow", anonymous: false, exported: false, typ: http2flow, tag: ""}, {prop: "inflow", name: "inflow", anonymous: false, exported: false, typ: http2flow, tag: ""}, {prop: "closed", name: "closed", anonymous: false, exported: false, typ: $Bool, tag: ""}, {prop: "wantSettingsAck", name: "wantSettingsAck", anonymous: false, exported: false, typ: $Bool, tag: ""}, {prop: "goAway", name: "goAway", anonymous: false, exported: false, typ: ptrType$44, tag: ""}, {prop: "goAwayDebug", name: "goAwayDebug", anonymous: false, exported: false, typ: $String, tag: ""}, {prop: "streams", name: "streams", anonymous: false, exported: false, typ: mapType$10, tag: ""}, {prop: "nextStreamID", name: "nextStreamID", anonymous: false, exported: false, typ: $Uint32, tag: ""}, {prop: "pendingRequests", name: "pendingRequests", anonymous: false, exported: false, typ: $Int, tag: ""}, {prop: "pings", name: "pings", anonymous: false, exported: false, typ: mapType$11, tag: ""}, {prop: "bw", name: "bw", anonymous: false, exported: false, typ: ptrType$10, tag: ""}, {prop: "br", name: "br", anonymous: false, exported: false, typ: ptrType$72, tag: ""}, {prop: "fr", name: "fr", anonymous: false, exported: false, typ: ptrType$33, tag: ""}, {prop: "lastActive", name: "lastActive", anonymous: false, exported: false, typ: time.Time, tag: ""}, {prop: "maxFrameSize", name: "maxFrameSize", anonymous: false, exported: false, typ: $Uint32, tag: ""}, {prop: "maxConcurrentStreams", name: "maxConcurrentStreams", anonymous: false, exported: false, typ: $Uint32, tag: ""}, {prop: "peerMaxHeaderListSize", name: "peerMaxHeaderListSize", anonymous: false, exported: false, typ: $Uint64, tag: ""}, {prop: "initialWindowSize", name: "initialWindowSize", anonymous: false, exported: false, typ: $Uint32, tag: ""}, {prop: "hbuf", name: "hbuf", anonymous: false, exported: false, typ: bytes.Buffer, tag: ""}, {prop: "henc", name: "henc", anonymous: false, exported: false, typ: ptrType$57, tag: ""}, {prop: "freeBuf", name: "freeBuf", anonymous: false, exported: false, typ: sliceType$5, tag: ""}, {prop: "wmu", name: "wmu", anonymous: false, exported: false, typ: sync.Mutex, tag: ""}, {prop: "werr", name: "werr", anonymous: false, exported: false, typ: $error, tag: ""}]);
115428  	http2clientStream.init("net/http", [{prop: "cc", name: "cc", anonymous: false, exported: false, typ: ptrType$28, tag: ""}, {prop: "req", name: "req", anonymous: false, exported: false, typ: ptrType$7, tag: ""}, {prop: "trace", name: "trace", anonymous: false, exported: false, typ: ptrType$48, tag: ""}, {prop: "ID", name: "ID", anonymous: false, exported: true, typ: $Uint32, tag: ""}, {prop: "resc", name: "resc", anonymous: false, exported: false, typ: chanType$11, tag: ""}, {prop: "bufPipe", name: "bufPipe", anonymous: false, exported: false, typ: http2pipe, tag: ""}, {prop: "startedWrite", name: "startedWrite", anonymous: false, exported: false, typ: $Bool, tag: ""}, {prop: "requestedGzip", name: "requestedGzip", anonymous: false, exported: false, typ: $Bool, tag: ""}, {prop: "on100", name: "on100", anonymous: false, exported: false, typ: funcType$2, tag: ""}, {prop: "flow", name: "flow", anonymous: false, exported: false, typ: http2flow, tag: ""}, {prop: "inflow", name: "inflow", anonymous: false, exported: false, typ: http2flow, tag: ""}, {prop: "bytesRemain", name: "bytesRemain", anonymous: false, exported: false, typ: $Int64, tag: ""}, {prop: "readErr", name: "readErr", anonymous: false, exported: false, typ: $error, tag: ""}, {prop: "stopReqBody", name: "stopReqBody", anonymous: false, exported: false, typ: $error, tag: ""}, {prop: "didReset", name: "didReset", anonymous: false, exported: false, typ: $Bool, tag: ""}, {prop: "peerReset", name: "peerReset", anonymous: false, exported: false, typ: chanType$2, tag: ""}, {prop: "resetErr", name: "resetErr", anonymous: false, exported: false, typ: $error, tag: ""}, {prop: "done", name: "done", anonymous: false, exported: false, typ: chanType$2, tag: ""}, {prop: "firstByte", name: "firstByte", anonymous: false, exported: false, typ: $Bool, tag: ""}, {prop: "pastHeaders", name: "pastHeaders", anonymous: false, exported: false, typ: $Bool, tag: ""}, {prop: "pastTrailers", name: "pastTrailers", anonymous: false, exported: false, typ: $Bool, tag: ""}, {prop: "trailer", name: "trailer", anonymous: false, exported: false, typ: Header, tag: ""}, {prop: "resTrailer", name: "resTrailer", anonymous: false, exported: false, typ: ptrType$73, tag: ""}]);
115429  	http2stickyErrWriter.init("net/http", [{prop: "w", name: "w", anonymous: false, exported: false, typ: io.Writer, tag: ""}, {prop: "err", name: "err", anonymous: false, exported: false, typ: ptrType$50, tag: ""}]);
115430  	http2noCachedConnError.init("", []);
115431  	http2RoundTripOpt.init("", [{prop: "OnlyCachedConn", name: "OnlyCachedConn", anonymous: false, exported: true, typ: $Bool, tag: ""}]);
115432  	http2badStringError.init("net/http", [{prop: "what", name: "what", anonymous: false, exported: false, typ: $String, tag: ""}, {prop: "str", name: "str", anonymous: false, exported: false, typ: $String, tag: ""}]);
115433  	http2resAndError.init("net/http", [{prop: "res", name: "res", anonymous: false, exported: false, typ: ptrType$17, tag: ""}, {prop: "err", name: "err", anonymous: false, exported: false, typ: $error, tag: ""}]);
115434  	http2clientConnReadLoop.init("net/http", [{prop: "cc", name: "cc", anonymous: false, exported: false, typ: ptrType$28, tag: ""}, {prop: "closeWhenIdle", name: "closeWhenIdle", anonymous: false, exported: false, typ: $Bool, tag: ""}]);
115435  	http2GoAwayError.init("", [{prop: "LastStreamID", name: "LastStreamID", anonymous: false, exported: true, typ: $Uint32, tag: ""}, {prop: "ErrCode", name: "ErrCode", anonymous: false, exported: true, typ: http2ErrCode, tag: ""}, {prop: "DebugData", name: "DebugData", anonymous: false, exported: true, typ: $String, tag: ""}]);
115436  	http2transportResponseBody.init("net/http", [{prop: "cs", name: "cs", anonymous: false, exported: false, typ: ptrType$74, tag: ""}]);
115437  	http2erringRoundTripper.init("net/http", [{prop: "err", name: "err", anonymous: false, exported: false, typ: $error, tag: ""}]);
115438  	http2gzipReader.init("net/http", [{prop: "body", name: "body", anonymous: false, exported: false, typ: io.ReadCloser, tag: ""}, {prop: "zr", name: "zr", anonymous: false, exported: false, typ: ptrType$75, tag: ""}, {prop: "zerr", name: "zerr", anonymous: false, exported: false, typ: $error, tag: ""}]);
115439  	http2bodyWriterState.init("net/http", [{prop: "cs", name: "cs", anonymous: false, exported: false, typ: ptrType$74, tag: ""}, {prop: "timer", name: "timer", anonymous: false, exported: false, typ: ptrType$56, tag: ""}, {prop: "fnonce", name: "fnonce", anonymous: false, exported: false, typ: ptrType$76, tag: ""}, {prop: "fn", name: "fn", anonymous: false, exported: false, typ: funcType$2, tag: ""}, {prop: "resc", name: "resc", anonymous: false, exported: false, typ: chanType, tag: ""}, {prop: "delay", name: "delay", anonymous: false, exported: false, typ: time.Duration, tag: ""}]);
115440  	http2writeFramer.init([{prop: "staysWithinBuffer", name: "staysWithinBuffer", pkg: "net/http", typ: $funcType([$Int], [$Bool], false)}, {prop: "writeFrame", name: "writeFrame", pkg: "net/http", typ: $funcType([http2writeContext], [$error], false)}]);
115441  	http2writeContext.init([{prop: "CloseConn", name: "CloseConn", pkg: "", typ: $funcType([], [$error], false)}, {prop: "Flush", name: "Flush", pkg: "", typ: $funcType([], [$error], false)}, {prop: "Framer", name: "Framer", pkg: "", typ: $funcType([], [ptrType$33], false)}, {prop: "HeaderEncoder", name: "HeaderEncoder", pkg: "", typ: $funcType([], [ptrType$57, ptrType$36], false)}]);
115442  	http2flushFrameWriter.init("", []);
115443  	http2writeSettings.init(http2Setting);
115444  	http2writeGoAway.init("net/http", [{prop: "maxStreamID", name: "maxStreamID", anonymous: false, exported: false, typ: $Uint32, tag: ""}, {prop: "code", name: "code", anonymous: false, exported: false, typ: http2ErrCode, tag: ""}]);
115445  	http2writeData.init("net/http", [{prop: "streamID", name: "streamID", anonymous: false, exported: false, typ: $Uint32, tag: ""}, {prop: "p", name: "p", anonymous: false, exported: false, typ: sliceType$3, tag: ""}, {prop: "endStream", name: "endStream", anonymous: false, exported: false, typ: $Bool, tag: ""}]);
115446  	http2handlerPanicRST.init("", [{prop: "StreamID", name: "StreamID", anonymous: false, exported: true, typ: $Uint32, tag: ""}]);
115447  	http2writePingAck.init("net/http", [{prop: "pf", name: "pf", anonymous: false, exported: false, typ: ptrType$43, tag: ""}]);
115448  	http2writeSettingsAck.init("", []);
115449  	http2writeResHeaders.init("net/http", [{prop: "streamID", name: "streamID", anonymous: false, exported: false, typ: $Uint32, tag: ""}, {prop: "httpResCode", name: "httpResCode", anonymous: false, exported: false, typ: $Int, tag: ""}, {prop: "h", name: "h", anonymous: false, exported: false, typ: Header, tag: ""}, {prop: "trailers", name: "trailers", anonymous: false, exported: false, typ: sliceType$1, tag: ""}, {prop: "endStream", name: "endStream", anonymous: false, exported: false, typ: $Bool, tag: ""}, {prop: "date", name: "date", anonymous: false, exported: false, typ: $String, tag: ""}, {prop: "contentType", name: "contentType", anonymous: false, exported: false, typ: $String, tag: ""}, {prop: "contentLength", name: "contentLength", anonymous: false, exported: false, typ: $String, tag: ""}]);
115450  	http2writePushPromise.init("net/http", [{prop: "streamID", name: "streamID", anonymous: false, exported: false, typ: $Uint32, tag: ""}, {prop: "method", name: "method", anonymous: false, exported: false, typ: $String, tag: ""}, {prop: "url", name: "url", anonymous: false, exported: false, typ: ptrType$20, tag: ""}, {prop: "h", name: "h", anonymous: false, exported: false, typ: Header, tag: ""}, {prop: "allocatePromisedID", name: "allocatePromisedID", anonymous: false, exported: false, typ: funcType$22, tag: ""}, {prop: "promisedID", name: "promisedID", anonymous: false, exported: false, typ: $Uint32, tag: ""}]);
115451  	http2write100ContinueHeadersFrame.init("net/http", [{prop: "streamID", name: "streamID", anonymous: false, exported: false, typ: $Uint32, tag: ""}]);
115452  	http2writeWindowUpdate.init("net/http", [{prop: "streamID", name: "streamID", anonymous: false, exported: false, typ: $Uint32, tag: ""}, {prop: "n", name: "n", anonymous: false, exported: false, typ: $Uint32, tag: ""}]);
115453  	http2WriteScheduler.init([{prop: "AdjustStream", name: "AdjustStream", pkg: "", typ: $funcType([$Uint32, http2PriorityParam], [], false)}, {prop: "CloseStream", name: "CloseStream", pkg: "", typ: $funcType([$Uint32], [], false)}, {prop: "OpenStream", name: "OpenStream", pkg: "", typ: $funcType([$Uint32, http2OpenStreamOptions], [], false)}, {prop: "Pop", name: "Pop", pkg: "", typ: $funcType([], [http2FrameWriteRequest, $Bool], false)}, {prop: "Push", name: "Push", pkg: "", typ: $funcType([http2FrameWriteRequest], [], false)}]);
115454  	http2OpenStreamOptions.init("", [{prop: "PusherID", name: "PusherID", anonymous: false, exported: true, typ: $Uint32, tag: ""}]);
115455  	http2FrameWriteRequest.init("net/http", [{prop: "write", name: "write", anonymous: false, exported: false, typ: http2writeFramer, tag: ""}, {prop: "stream", name: "stream", anonymous: false, exported: false, typ: ptrType$6, tag: ""}, {prop: "done", name: "done", anonymous: false, exported: false, typ: chanType, tag: ""}]);
115456  	http2writeQueue.init("net/http", [{prop: "s", name: "s", anonymous: false, exported: false, typ: sliceType$20, tag: ""}]);
115457  	http2writeQueuePool.init(ptrType$77);
115458  	http2PriorityWriteSchedulerConfig.init("", [{prop: "MaxClosedNodesInTree", name: "MaxClosedNodesInTree", anonymous: false, exported: true, typ: $Int, tag: ""}, {prop: "MaxIdleNodesInTree", name: "MaxIdleNodesInTree", anonymous: false, exported: true, typ: $Int, tag: ""}, {prop: "ThrottleOutOfOrderWrites", name: "ThrottleOutOfOrderWrites", anonymous: false, exported: true, typ: $Bool, tag: ""}]);
115459  	http2priorityNode.init("net/http", [{prop: "q", name: "q", anonymous: false, exported: false, typ: http2writeQueue, tag: ""}, {prop: "id", name: "id", anonymous: false, exported: false, typ: $Uint32, tag: ""}, {prop: "weight", name: "weight", anonymous: false, exported: false, typ: $Uint8, tag: ""}, {prop: "state", name: "state", anonymous: false, exported: false, typ: http2priorityNodeState, tag: ""}, {prop: "bytes", name: "bytes", anonymous: false, exported: false, typ: $Int64, tag: ""}, {prop: "subtreeBytes", name: "subtreeBytes", anonymous: false, exported: false, typ: $Int64, tag: ""}, {prop: "parent", name: "parent", anonymous: false, exported: false, typ: ptrType$79, tag: ""}, {prop: "kids", name: "kids", anonymous: false, exported: false, typ: ptrType$79, tag: ""}, {prop: "prev", name: "prev", anonymous: false, exported: false, typ: ptrType$79, tag: ""}, {prop: "next", name: "next", anonymous: false, exported: false, typ: ptrType$79, tag: ""}]);
115460  	http2sortPriorityNodeSiblings.init(ptrType$79);
115461  	http2priorityWriteScheduler.init("net/http", [{prop: "root", name: "root", anonymous: false, exported: false, typ: http2priorityNode, tag: ""}, {prop: "nodes", name: "nodes", anonymous: false, exported: false, typ: mapType$12, tag: ""}, {prop: "maxID", name: "maxID", anonymous: false, exported: false, typ: $Uint32, tag: ""}, {prop: "closedNodes", name: "closedNodes", anonymous: false, exported: false, typ: sliceType$21, tag: ""}, {prop: "idleNodes", name: "idleNodes", anonymous: false, exported: false, typ: sliceType$21, tag: ""}, {prop: "maxClosedNodesInTree", name: "maxClosedNodesInTree", anonymous: false, exported: false, typ: $Int, tag: ""}, {prop: "maxIdleNodesInTree", name: "maxIdleNodesInTree", anonymous: false, exported: false, typ: $Int, tag: ""}, {prop: "writeThrottleLimit", name: "writeThrottleLimit", anonymous: false, exported: false, typ: $Int32, tag: ""}, {prop: "enableWriteThrottle", name: "enableWriteThrottle", anonymous: false, exported: false, typ: $Bool, tag: ""}, {prop: "tmp", name: "tmp", anonymous: false, exported: false, typ: sliceType$21, tag: ""}, {prop: "queuePool", name: "queuePool", anonymous: false, exported: false, typ: http2writeQueuePool, tag: ""}]);
115462  	http2randomWriteScheduler.init("net/http", [{prop: "zero", name: "zero", anonymous: false, exported: false, typ: http2writeQueue, tag: ""}, {prop: "sq", name: "sq", anonymous: false, exported: false, typ: mapType$13, tag: ""}, {prop: "queuePool", name: "queuePool", anonymous: false, exported: false, typ: http2writeQueuePool, tag: ""}]);
115463  	Header.init($String, sliceType$1);
115464  	writeStringer.init([{prop: "WriteString", name: "WriteString", pkg: "", typ: $funcType([$String], [$Int, $error], false)}]);
115465  	stringWriter.init("net/http", [{prop: "w", name: "w", anonymous: false, exported: false, typ: io.Writer, tag: ""}]);
115466  	keyValues.init("net/http", [{prop: "key", name: "key", anonymous: false, exported: false, typ: $String, tag: ""}, {prop: "values", name: "values", anonymous: false, exported: false, typ: sliceType$1, tag: ""}]);
115467  	headerSorter.init("net/http", [{prop: "kvs", name: "kvs", anonymous: false, exported: false, typ: sliceType$4, tag: ""}]);
115468  	contextKey.init("net/http", [{prop: "name", name: "name", anonymous: false, exported: false, typ: $String, tag: ""}]);
115469  	noBody.init("", []);
115470  	PushOptions.init("", [{prop: "Method", name: "Method", anonymous: false, exported: true, typ: $String, tag: ""}, {prop: "Header", name: "Header", anonymous: false, exported: true, typ: Header, tag: ""}]);
115471  	CookieJar.init([{prop: "Cookies", name: "Cookies", pkg: "", typ: $funcType([ptrType$20], [sliceType$8], false)}, {prop: "SetCookies", name: "SetCookies", pkg: "", typ: $funcType([ptrType$20, sliceType$8], [], false)}]);
115472  	ProtocolError.init("", [{prop: "ErrorString", name: "ErrorString", anonymous: false, exported: true, typ: $String, tag: ""}]);
115473  	badStringError.init("net/http", [{prop: "what", name: "what", anonymous: false, exported: false, typ: $String, tag: ""}, {prop: "str", name: "str", anonymous: false, exported: false, typ: $String, tag: ""}]);
115474  	Request.init("net/http", [{prop: "Method", name: "Method", anonymous: false, exported: true, typ: $String, tag: ""}, {prop: "URL", name: "URL", anonymous: false, exported: true, typ: ptrType$20, tag: ""}, {prop: "Proto", name: "Proto", anonymous: false, exported: true, typ: $String, tag: ""}, {prop: "ProtoMajor", name: "ProtoMajor", anonymous: false, exported: true, typ: $Int, tag: ""}, {prop: "ProtoMinor", name: "ProtoMinor", anonymous: false, exported: true, typ: $Int, tag: ""}, {prop: "Header", name: "Header", anonymous: false, exported: true, typ: Header, tag: ""}, {prop: "Body", name: "Body", anonymous: false, exported: true, typ: io.ReadCloser, tag: ""}, {prop: "GetBody", name: "GetBody", anonymous: false, exported: true, typ: funcType$24, tag: ""}, {prop: "ContentLength", name: "ContentLength", anonymous: false, exported: true, typ: $Int64, tag: ""}, {prop: "TransferEncoding", name: "TransferEncoding", anonymous: false, exported: true, typ: sliceType$1, tag: ""}, {prop: "Close", name: "Close", anonymous: false, exported: true, typ: $Bool, tag: ""}, {prop: "Host", name: "Host", anonymous: false, exported: true, typ: $String, tag: ""}, {prop: "Form", name: "Form", anonymous: false, exported: true, typ: url.Values, tag: ""}, {prop: "PostForm", name: "PostForm", anonymous: false, exported: true, typ: url.Values, tag: ""}, {prop: "MultipartForm", name: "MultipartForm", anonymous: false, exported: true, typ: ptrType$21, tag: ""}, {prop: "Trailer", name: "Trailer", anonymous: false, exported: true, typ: Header, tag: ""}, {prop: "RemoteAddr", name: "RemoteAddr", anonymous: false, exported: true, typ: $String, tag: ""}, {prop: "RequestURI", name: "RequestURI", anonymous: false, exported: true, typ: $String, tag: ""}, {prop: "TLS", name: "TLS", anonymous: false, exported: true, typ: ptrType$18, tag: ""}, {prop: "Cancel", name: "Cancel", anonymous: false, exported: true, typ: chanType$3, tag: ""}, {prop: "Response", name: "Response", anonymous: false, exported: true, typ: ptrType$17, tag: ""}, {prop: "ctx", name: "ctx", anonymous: false, exported: false, typ: context.Context, tag: ""}]);
115475  	requestBodyReadError.init("net/http", [{prop: "error", name: "error", anonymous: true, exported: false, typ: $error, tag: ""}]);
115476  	maxBytesReader.init("net/http", [{prop: "w", name: "w", anonymous: false, exported: false, typ: ResponseWriter, tag: ""}, {prop: "r", name: "r", anonymous: false, exported: false, typ: io.ReadCloser, tag: ""}, {prop: "n", name: "n", anonymous: false, exported: false, typ: $Int64, tag: ""}, {prop: "err", name: "err", anonymous: false, exported: false, typ: $error, tag: ""}]);
115477  	Response.init("", [{prop: "Status", name: "Status", anonymous: false, exported: true, typ: $String, tag: ""}, {prop: "StatusCode", name: "StatusCode", anonymous: false, exported: true, typ: $Int, tag: ""}, {prop: "Proto", name: "Proto", anonymous: false, exported: true, typ: $String, tag: ""}, {prop: "ProtoMajor", name: "ProtoMajor", anonymous: false, exported: true, typ: $Int, tag: ""}, {prop: "ProtoMinor", name: "ProtoMinor", anonymous: false, exported: true, typ: $Int, tag: ""}, {prop: "Header", name: "Header", anonymous: false, exported: true, typ: Header, tag: ""}, {prop: "Body", name: "Body", anonymous: false, exported: true, typ: io.ReadCloser, tag: ""}, {prop: "ContentLength", name: "ContentLength", anonymous: false, exported: true, typ: $Int64, tag: ""}, {prop: "TransferEncoding", name: "TransferEncoding", anonymous: false, exported: true, typ: sliceType$1, tag: ""}, {prop: "Close", name: "Close", anonymous: false, exported: true, typ: $Bool, tag: ""}, {prop: "Uncompressed", name: "Uncompressed", anonymous: false, exported: true, typ: $Bool, tag: ""}, {prop: "Trailer", name: "Trailer", anonymous: false, exported: true, typ: Header, tag: ""}, {prop: "Request", name: "Request", anonymous: false, exported: true, typ: ptrType$7, tag: ""}, {prop: "TLS", name: "TLS", anonymous: false, exported: true, typ: ptrType$18, tag: ""}]);
115478  	Handler.init([{prop: "ServeHTTP", name: "ServeHTTP", pkg: "", typ: $funcType([ResponseWriter, ptrType$7], [], false)}]);
115479  	ResponseWriter.init([{prop: "Header", name: "Header", pkg: "", typ: $funcType([], [Header], false)}, {prop: "Write", name: "Write", pkg: "", typ: $funcType([sliceType$3], [$Int, $error], false)}, {prop: "WriteHeader", name: "WriteHeader", pkg: "", typ: $funcType([$Int], [], false)}]);
115480  	conn.init("net/http", [{prop: "server", name: "server", anonymous: false, exported: false, typ: ptrType$46, tag: ""}, {prop: "cancelCtx", name: "cancelCtx", anonymous: false, exported: false, typ: context.CancelFunc, tag: ""}, {prop: "rwc", name: "rwc", anonymous: false, exported: false, typ: net.Conn, tag: ""}, {prop: "remoteAddr", name: "remoteAddr", anonymous: false, exported: false, typ: $String, tag: ""}, {prop: "tlsState", name: "tlsState", anonymous: false, exported: false, typ: ptrType$18, tag: ""}, {prop: "werr", name: "werr", anonymous: false, exported: false, typ: $error, tag: ""}, {prop: "r", name: "r", anonymous: false, exported: false, typ: ptrType$93, tag: ""}, {prop: "bufr", name: "bufr", anonymous: false, exported: false, typ: ptrType$72, tag: ""}, {prop: "bufw", name: "bufw", anonymous: false, exported: false, typ: ptrType$10, tag: ""}, {prop: "lastMethod", name: "lastMethod", anonymous: false, exported: false, typ: $String, tag: ""}, {prop: "curReq", name: "curReq", anonymous: false, exported: false, typ: atomic.Value, tag: ""}, {prop: "curState", name: "curState", anonymous: false, exported: false, typ: atomic.Value, tag: ""}, {prop: "mu", name: "mu", anonymous: false, exported: false, typ: sync.Mutex, tag: ""}, {prop: "hijackedv", name: "hijackedv", anonymous: false, exported: false, typ: $Bool, tag: ""}]);
115481  	chunkWriter.init("net/http", [{prop: "res", name: "res", anonymous: false, exported: false, typ: ptrType$94, tag: ""}, {prop: "header", name: "header", anonymous: false, exported: false, typ: Header, tag: ""}, {prop: "wroteHeader", name: "wroteHeader", anonymous: false, exported: false, typ: $Bool, tag: ""}, {prop: "chunking", name: "chunking", anonymous: false, exported: false, typ: $Bool, tag: ""}]);
115482  	response.init("net/http", [{prop: "conn", name: "conn", anonymous: false, exported: false, typ: ptrType$97, tag: ""}, {prop: "req", name: "req", anonymous: false, exported: false, typ: ptrType$7, tag: ""}, {prop: "reqBody", name: "reqBody", anonymous: false, exported: false, typ: io.ReadCloser, tag: ""}, {prop: "cancelCtx", name: "cancelCtx", anonymous: false, exported: false, typ: context.CancelFunc, tag: ""}, {prop: "wroteHeader", name: "wroteHeader", anonymous: false, exported: false, typ: $Bool, tag: ""}, {prop: "wroteContinue", name: "wroteContinue", anonymous: false, exported: false, typ: $Bool, tag: ""}, {prop: "wants10KeepAlive", name: "wants10KeepAlive", anonymous: false, exported: false, typ: $Bool, tag: ""}, {prop: "wantsClose", name: "wantsClose", anonymous: false, exported: false, typ: $Bool, tag: ""}, {prop: "w", name: "w", anonymous: false, exported: false, typ: ptrType$10, tag: ""}, {prop: "cw", name: "cw", anonymous: false, exported: false, typ: chunkWriter, tag: ""}, {prop: "handlerHeader", name: "handlerHeader", anonymous: false, exported: false, typ: Header, tag: ""}, {prop: "calledHeader", name: "calledHeader", anonymous: false, exported: false, typ: $Bool, tag: ""}, {prop: "written", name: "written", anonymous: false, exported: false, typ: $Int64, tag: ""}, {prop: "contentLength", name: "contentLength", anonymous: false, exported: false, typ: $Int64, tag: ""}, {prop: "status", name: "status", anonymous: false, exported: false, typ: $Int, tag: ""}, {prop: "closeAfterReply", name: "closeAfterReply", anonymous: false, exported: false, typ: $Bool, tag: ""}, {prop: "requestBodyLimitHit", name: "requestBodyLimitHit", anonymous: false, exported: false, typ: $Bool, tag: ""}, {prop: "trailers", name: "trailers", anonymous: false, exported: false, typ: sliceType$1, tag: ""}, {prop: "handlerDone", name: "handlerDone", anonymous: false, exported: false, typ: atomicBool, tag: ""}, {prop: "dateBuf", name: "dateBuf", anonymous: false, exported: false, typ: arrayType$6, tag: ""}, {prop: "clenBuf", name: "clenBuf", anonymous: false, exported: false, typ: arrayType$7, tag: ""}, {prop: "statusBuf", name: "statusBuf", anonymous: false, exported: false, typ: arrayType$8, tag: ""}, {prop: "closeNotifyCh", name: "closeNotifyCh", anonymous: false, exported: false, typ: chanType$10, tag: ""}, {prop: "didCloseNotify", name: "didCloseNotify", anonymous: false, exported: false, typ: $Int32, tag: ""}]);
115483  	writerOnly.init("", [{prop: "Writer", name: "Writer", anonymous: true, exported: true, typ: io.Writer, tag: ""}]);
115484  	readResult.init("net/http", [{prop: "n", name: "n", anonymous: false, exported: false, typ: $Int, tag: ""}, {prop: "err", name: "err", anonymous: false, exported: false, typ: $error, tag: ""}, {prop: "b", name: "b", anonymous: false, exported: false, typ: $Uint8, tag: ""}]);
115485  	connReader.init("net/http", [{prop: "conn", name: "conn", anonymous: false, exported: false, typ: ptrType$97, tag: ""}, {prop: "mu", name: "mu", anonymous: false, exported: false, typ: sync.Mutex, tag: ""}, {prop: "hasByte", name: "hasByte", anonymous: false, exported: false, typ: $Bool, tag: ""}, {prop: "byteBuf", name: "byteBuf", anonymous: false, exported: false, typ: arrayType$5, tag: ""}, {prop: "cond", name: "cond", anonymous: false, exported: false, typ: ptrType$71, tag: ""}, {prop: "inRead", name: "inRead", anonymous: false, exported: false, typ: $Bool, tag: ""}, {prop: "aborted", name: "aborted", anonymous: false, exported: false, typ: $Bool, tag: ""}, {prop: "remain", name: "remain", anonymous: false, exported: false, typ: $Int64, tag: ""}]);
115486  	expectContinueReader.init("net/http", [{prop: "resp", name: "resp", anonymous: false, exported: false, typ: ptrType$94, tag: ""}, {prop: "readCloser", name: "readCloser", anonymous: false, exported: false, typ: io.ReadCloser, tag: ""}, {prop: "closed", name: "closed", anonymous: false, exported: false, typ: $Bool, tag: ""}, {prop: "sawEOF", name: "sawEOF", anonymous: false, exported: false, typ: $Bool, tag: ""}]);
115487  	extraHeader.init("net/http", [{prop: "contentType", name: "contentType", anonymous: false, exported: false, typ: $String, tag: ""}, {prop: "connection", name: "connection", anonymous: false, exported: false, typ: $String, tag: ""}, {prop: "transferEncoding", name: "transferEncoding", anonymous: false, exported: false, typ: $String, tag: ""}, {prop: "date", name: "date", anonymous: false, exported: false, typ: sliceType$3, tag: ""}, {prop: "contentLength", name: "contentLength", anonymous: false, exported: false, typ: sliceType$3, tag: ""}]);
115488  	closeWriter.init([{prop: "CloseWrite", name: "CloseWrite", pkg: "", typ: $funcType([], [$error], false)}]);
115489  	HandlerFunc.init([ResponseWriter, ptrType$7], [], false);
115490  	redirectHandler.init("net/http", [{prop: "url", name: "url", anonymous: false, exported: false, typ: $String, tag: ""}, {prop: "code", name: "code", anonymous: false, exported: false, typ: $Int, tag: ""}]);
115491  	ServeMux.init("net/http", [{prop: "mu", name: "mu", anonymous: false, exported: false, typ: sync.RWMutex, tag: ""}, {prop: "m", name: "m", anonymous: false, exported: false, typ: mapType$15, tag: ""}, {prop: "hosts", name: "hosts", anonymous: false, exported: false, typ: $Bool, tag: ""}]);
115492  	muxEntry.init("net/http", [{prop: "h", name: "h", anonymous: false, exported: false, typ: Handler, tag: ""}, {prop: "pattern", name: "pattern", anonymous: false, exported: false, typ: $String, tag: ""}]);
115493  	Server.init("net/http", [{prop: "Addr", name: "Addr", anonymous: false, exported: true, typ: $String, tag: ""}, {prop: "Handler", name: "Handler", anonymous: false, exported: true, typ: Handler, tag: ""}, {prop: "TLSConfig", name: "TLSConfig", anonymous: false, exported: true, typ: ptrType$14, tag: ""}, {prop: "ReadTimeout", name: "ReadTimeout", anonymous: false, exported: true, typ: time.Duration, tag: ""}, {prop: "ReadHeaderTimeout", name: "ReadHeaderTimeout", anonymous: false, exported: true, typ: time.Duration, tag: ""}, {prop: "WriteTimeout", name: "WriteTimeout", anonymous: false, exported: true, typ: time.Duration, tag: ""}, {prop: "IdleTimeout", name: "IdleTimeout", anonymous: false, exported: true, typ: time.Duration, tag: ""}, {prop: "MaxHeaderBytes", name: "MaxHeaderBytes", anonymous: false, exported: true, typ: $Int, tag: ""}, {prop: "TLSNextProto", name: "TLSNextProto", anonymous: false, exported: true, typ: mapType$16, tag: ""}, {prop: "ConnState", name: "ConnState", anonymous: false, exported: true, typ: funcType$26, tag: ""}, {prop: "ErrorLog", name: "ErrorLog", anonymous: false, exported: true, typ: ptrType$54, tag: ""}, {prop: "disableKeepAlives", name: "disableKeepAlives", anonymous: false, exported: false, typ: $Int32, tag: ""}, {prop: "inShutdown", name: "inShutdown", anonymous: false, exported: false, typ: $Int32, tag: ""}, {prop: "nextProtoOnce", name: "nextProtoOnce", anonymous: false, exported: false, typ: sync.Once, tag: ""}, {prop: "nextProtoErr", name: "nextProtoErr", anonymous: false, exported: false, typ: $error, tag: ""}, {prop: "mu", name: "mu", anonymous: false, exported: false, typ: sync.Mutex, tag: ""}, {prop: "listeners", name: "listeners", anonymous: false, exported: false, typ: mapType$17, tag: ""}, {prop: "activeConn", name: "activeConn", anonymous: false, exported: false, typ: mapType$18, tag: ""}, {prop: "doneChan", name: "doneChan", anonymous: false, exported: false, typ: chanType$2, tag: ""}, {prop: "onShutdown", name: "onShutdown", anonymous: false, exported: false, typ: sliceType$16, tag: ""}]);
115494  	serverHandler.init("net/http", [{prop: "srv", name: "srv", anonymous: false, exported: false, typ: ptrType$46, tag: ""}]);
115495  	tcpKeepAliveListener.init("", [{prop: "TCPListener", name: "TCPListener", anonymous: true, exported: true, typ: ptrType$100, tag: ""}]);
115496  	globalOptionsHandler.init("", []);
115497  	initNPNRequest.init("net/http", [{prop: "c", name: "c", anonymous: false, exported: false, typ: ptrType$99, tag: ""}, {prop: "h", name: "h", anonymous: false, exported: false, typ: serverHandler, tag: ""}]);
115498  	loggingConn.init("net/http", [{prop: "name", name: "name", anonymous: false, exported: false, typ: $String, tag: ""}, {prop: "Conn", name: "Conn", anonymous: true, exported: true, typ: net.Conn, tag: ""}]);
115499  	checkConnErrorWriter.init("net/http", [{prop: "c", name: "c", anonymous: false, exported: false, typ: ptrType$97, tag: ""}]);
115500  	sniffSig.init([{prop: "match", name: "match", pkg: "net/http", typ: $funcType([sliceType$3, $Int], [$String], false)}]);
115501  	exactSig.init("net/http", [{prop: "sig", name: "sig", anonymous: false, exported: false, typ: sliceType$3, tag: ""}, {prop: "ct", name: "ct", anonymous: false, exported: false, typ: $String, tag: ""}]);
115502  	maskedSig.init("net/http", [{prop: "mask", name: "mask", anonymous: false, exported: false, typ: sliceType$3, tag: ""}, {prop: "pat", name: "pat", anonymous: false, exported: false, typ: sliceType$3, tag: ""}, {prop: "skipWS", name: "skipWS", anonymous: false, exported: false, typ: $Bool, tag: ""}, {prop: "ct", name: "ct", anonymous: false, exported: false, typ: $String, tag: ""}]);
115503  	htmlSig.init($Uint8);
115504  	mp4Sig.init("", []);
115505  	textSig.init("", []);
115506  	errorReader.init("net/http", [{prop: "err", name: "err", anonymous: false, exported: false, typ: $error, tag: ""}]);
115507  	byteReader.init("net/http", [{prop: "b", name: "b", anonymous: false, exported: false, typ: $Uint8, tag: ""}, {prop: "done", name: "done", anonymous: false, exported: false, typ: $Bool, tag: ""}]);
115508  	transferBodyReader.init("net/http", [{prop: "tw", name: "tw", anonymous: false, exported: false, typ: ptrType$101, tag: ""}]);
115509  	transferWriter.init("net/http", [{prop: "Method", name: "Method", anonymous: false, exported: true, typ: $String, tag: ""}, {prop: "Body", name: "Body", anonymous: false, exported: true, typ: io.Reader, tag: ""}, {prop: "BodyCloser", name: "BodyCloser", anonymous: false, exported: true, typ: io.Closer, tag: ""}, {prop: "ResponseToHEAD", name: "ResponseToHEAD", anonymous: false, exported: true, typ: $Bool, tag: ""}, {prop: "ContentLength", name: "ContentLength", anonymous: false, exported: true, typ: $Int64, tag: ""}, {prop: "Close", name: "Close", anonymous: false, exported: true, typ: $Bool, tag: ""}, {prop: "TransferEncoding", name: "TransferEncoding", anonymous: false, exported: true, typ: sliceType$1, tag: ""}, {prop: "Header", name: "Header", anonymous: false, exported: true, typ: Header, tag: ""}, {prop: "Trailer", name: "Trailer", anonymous: false, exported: true, typ: Header, tag: ""}, {prop: "IsResponse", name: "IsResponse", anonymous: false, exported: true, typ: $Bool, tag: ""}, {prop: "bodyReadError", name: "bodyReadError", anonymous: false, exported: false, typ: $error, tag: ""}, {prop: "FlushHeaders", name: "FlushHeaders", anonymous: false, exported: true, typ: $Bool, tag: ""}, {prop: "ByteReadCh", name: "ByteReadCh", anonymous: false, exported: true, typ: chanType$12, tag: ""}]);
115510  	transferReader.init("", [{prop: "Header", name: "Header", anonymous: false, exported: true, typ: Header, tag: ""}, {prop: "StatusCode", name: "StatusCode", anonymous: false, exported: true, typ: $Int, tag: ""}, {prop: "RequestMethod", name: "RequestMethod", anonymous: false, exported: true, typ: $String, tag: ""}, {prop: "ProtoMajor", name: "ProtoMajor", anonymous: false, exported: true, typ: $Int, tag: ""}, {prop: "ProtoMinor", name: "ProtoMinor", anonymous: false, exported: true, typ: $Int, tag: ""}, {prop: "Body", name: "Body", anonymous: false, exported: true, typ: io.ReadCloser, tag: ""}, {prop: "ContentLength", name: "ContentLength", anonymous: false, exported: true, typ: $Int64, tag: ""}, {prop: "TransferEncoding", name: "TransferEncoding", anonymous: false, exported: true, typ: sliceType$1, tag: ""}, {prop: "Close", name: "Close", anonymous: false, exported: true, typ: $Bool, tag: ""}, {prop: "Trailer", name: "Trailer", anonymous: false, exported: true, typ: Header, tag: ""}]);
115511  	body.init("net/http", [{prop: "src", name: "src", anonymous: false, exported: false, typ: io.Reader, tag: ""}, {prop: "hdr", name: "hdr", anonymous: false, exported: false, typ: $emptyInterface, tag: ""}, {prop: "r", name: "r", anonymous: false, exported: false, typ: ptrType$72, tag: ""}, {prop: "closing", name: "closing", anonymous: false, exported: false, typ: $Bool, tag: ""}, {prop: "doEarlyClose", name: "doEarlyClose", anonymous: false, exported: false, typ: $Bool, tag: ""}, {prop: "mu", name: "mu", anonymous: false, exported: false, typ: sync.Mutex, tag: ""}, {prop: "sawEOF", name: "sawEOF", anonymous: false, exported: false, typ: $Bool, tag: ""}, {prop: "closed", name: "closed", anonymous: false, exported: false, typ: $Bool, tag: ""}, {prop: "earlyClose", name: "earlyClose", anonymous: false, exported: false, typ: $Bool, tag: ""}, {prop: "onHitEOF", name: "onHitEOF", anonymous: false, exported: false, typ: funcType$2, tag: ""}]);
115512  	bodyLocked.init("net/http", [{prop: "b", name: "b", anonymous: false, exported: false, typ: ptrType$96, tag: ""}]);
115513  	finishAsyncByteRead.init("net/http", [{prop: "tw", name: "tw", anonymous: false, exported: false, typ: ptrType$101, tag: ""}]);
115514  	Transport.init("net/http", [{prop: "idleMu", name: "idleMu", anonymous: false, exported: false, typ: sync.Mutex, tag: ""}, {prop: "wantIdle", name: "wantIdle", anonymous: false, exported: false, typ: $Bool, tag: ""}, {prop: "idleConn", name: "idleConn", anonymous: false, exported: false, typ: mapType$19, tag: ""}, {prop: "idleConnCh", name: "idleConnCh", anonymous: false, exported: false, typ: mapType$20, tag: ""}, {prop: "idleLRU", name: "idleLRU", anonymous: false, exported: false, typ: connLRU, tag: ""}, {prop: "reqMu", name: "reqMu", anonymous: false, exported: false, typ: sync.Mutex, tag: ""}, {prop: "reqCanceler", name: "reqCanceler", anonymous: false, exported: false, typ: mapType$21, tag: ""}, {prop: "altMu", name: "altMu", anonymous: false, exported: false, typ: sync.Mutex, tag: ""}, {prop: "altProto", name: "altProto", anonymous: false, exported: false, typ: atomic.Value, tag: ""}, {prop: "Proxy", name: "Proxy", anonymous: false, exported: true, typ: funcType$27, tag: ""}, {prop: "DialContext", name: "DialContext", anonymous: false, exported: true, typ: funcType$28, tag: ""}, {prop: "Dial", name: "Dial", anonymous: false, exported: true, typ: funcType$29, tag: ""}, {prop: "DialTLS", name: "DialTLS", anonymous: false, exported: true, typ: funcType$29, tag: ""}, {prop: "TLSClientConfig", name: "TLSClientConfig", anonymous: false, exported: true, typ: ptrType$14, tag: ""}, {prop: "TLSHandshakeTimeout", name: "TLSHandshakeTimeout", anonymous: false, exported: true, typ: time.Duration, tag: ""}, {prop: "DisableKeepAlives", name: "DisableKeepAlives", anonymous: false, exported: true, typ: $Bool, tag: ""}, {prop: "DisableCompression", name: "DisableCompression", anonymous: false, exported: true, typ: $Bool, tag: ""}, {prop: "MaxIdleConns", name: "MaxIdleConns", anonymous: false, exported: true, typ: $Int, tag: ""}, {prop: "MaxIdleConnsPerHost", name: "MaxIdleConnsPerHost", anonymous: false, exported: true, typ: $Int, tag: ""}, {prop: "IdleConnTimeout", name: "IdleConnTimeout", anonymous: false, exported: true, typ: time.Duration, tag: ""}, {prop: "ResponseHeaderTimeout", name: "ResponseHeaderTimeout", anonymous: false, exported: true, typ: time.Duration, tag: ""}, {prop: "ExpectContinueTimeout", name: "ExpectContinueTimeout", anonymous: false, exported: true, typ: time.Duration, tag: ""}, {prop: "TLSNextProto", name: "TLSNextProto", anonymous: false, exported: true, typ: mapType$22, tag: ""}, {prop: "ProxyConnectHeader", name: "ProxyConnectHeader", anonymous: false, exported: true, typ: Header, tag: ""}, {prop: "MaxResponseHeaderBytes", name: "MaxResponseHeaderBytes", anonymous: false, exported: true, typ: $Int64, tag: ""}, {prop: "nextProtoOnce", name: "nextProtoOnce", anonymous: false, exported: false, typ: sync.Once, tag: ""}, {prop: "h2transport", name: "h2transport", anonymous: false, exported: false, typ: ptrType$15, tag: ""}]);
115515  	transportRequest.init("net/http", [{prop: "Request", name: "Request", anonymous: true, exported: true, typ: ptrType$7, tag: ""}, {prop: "extra", name: "extra", anonymous: false, exported: false, typ: Header, tag: ""}, {prop: "trace", name: "trace", anonymous: false, exported: false, typ: ptrType$47, tag: ""}, {prop: "mu", name: "mu", anonymous: false, exported: false, typ: sync.Mutex, tag: ""}, {prop: "err", name: "err", anonymous: false, exported: false, typ: $error, tag: ""}]);
115516  	transportReadFromServerError.init("net/http", [{prop: "err", name: "err", anonymous: false, exported: false, typ: $error, tag: ""}]);
115517  	oneConnDialer.init(net.Conn, false, true);
115518  	persistConnWriter.init("net/http", [{prop: "pc", name: "pc", anonymous: false, exported: false, typ: ptrType$102, tag: ""}]);
115519  	connectMethod.init("net/http", [{prop: "proxyURL", name: "proxyURL", anonymous: false, exported: false, typ: ptrType$20, tag: ""}, {prop: "targetScheme", name: "targetScheme", anonymous: false, exported: false, typ: $String, tag: ""}, {prop: "targetAddr", name: "targetAddr", anonymous: false, exported: false, typ: $String, tag: ""}]);
115520  	connectMethodKey.init("net/http", [{prop: "proxy", name: "proxy", anonymous: false, exported: false, typ: $String, tag: ""}, {prop: "scheme", name: "scheme", anonymous: false, exported: false, typ: $String, tag: ""}, {prop: "addr", name: "addr", anonymous: false, exported: false, typ: $String, tag: ""}]);
115521  	persistConn.init("net/http", [{prop: "alt", name: "alt", anonymous: false, exported: false, typ: RoundTripper, tag: ""}, {prop: "t", name: "t", anonymous: false, exported: false, typ: ptrType$22, tag: ""}, {prop: "cacheKey", name: "cacheKey", anonymous: false, exported: false, typ: connectMethodKey, tag: ""}, {prop: "conn", name: "conn", anonymous: false, exported: false, typ: net.Conn, tag: ""}, {prop: "tlsState", name: "tlsState", anonymous: false, exported: false, typ: ptrType$18, tag: ""}, {prop: "br", name: "br", anonymous: false, exported: false, typ: ptrType$72, tag: ""}, {prop: "bw", name: "bw", anonymous: false, exported: false, typ: ptrType$10, tag: ""}, {prop: "nwrite", name: "nwrite", anonymous: false, exported: false, typ: $Int64, tag: ""}, {prop: "reqch", name: "reqch", anonymous: false, exported: false, typ: chanType$14, tag: ""}, {prop: "writech", name: "writech", anonymous: false, exported: false, typ: chanType$15, tag: ""}, {prop: "closech", name: "closech", anonymous: false, exported: false, typ: chanType$2, tag: ""}, {prop: "isProxy", name: "isProxy", anonymous: false, exported: false, typ: $Bool, tag: ""}, {prop: "sawEOF", name: "sawEOF", anonymous: false, exported: false, typ: $Bool, tag: ""}, {prop: "readLimit", name: "readLimit", anonymous: false, exported: false, typ: $Int64, tag: ""}, {prop: "writeErrCh", name: "writeErrCh", anonymous: false, exported: false, typ: chanType, tag: ""}, {prop: "writeLoopDone", name: "writeLoopDone", anonymous: false, exported: false, typ: chanType$2, tag: ""}, {prop: "idleAt", name: "idleAt", anonymous: false, exported: false, typ: time.Time, tag: ""}, {prop: "idleTimer", name: "idleTimer", anonymous: false, exported: false, typ: ptrType$56, tag: ""}, {prop: "mu", name: "mu", anonymous: false, exported: false, typ: sync.Mutex, tag: ""}, {prop: "numExpectedResponses", name: "numExpectedResponses", anonymous: false, exported: false, typ: $Int, tag: ""}, {prop: "closed", name: "closed", anonymous: false, exported: false, typ: $error, tag: ""}, {prop: "canceledErr", name: "canceledErr", anonymous: false, exported: false, typ: $error, tag: ""}, {prop: "broken", name: "broken", anonymous: false, exported: false, typ: $Bool, tag: ""}, {prop: "reused", name: "reused", anonymous: false, exported: false, typ: $Bool, tag: ""}, {prop: "mutateHeaderFunc", name: "mutateHeaderFunc", anonymous: false, exported: false, typ: funcType$31, tag: ""}]);
115522  	nothingWrittenError.init("net/http", [{prop: "error", name: "error", anonymous: true, exported: false, typ: $error, tag: ""}]);
115523  	responseAndError.init("net/http", [{prop: "res", name: "res", anonymous: false, exported: false, typ: ptrType$17, tag: ""}, {prop: "err", name: "err", anonymous: false, exported: false, typ: $error, tag: ""}]);
115524  	requestAndChan.init("net/http", [{prop: "req", name: "req", anonymous: false, exported: false, typ: ptrType$7, tag: ""}, {prop: "ch", name: "ch", anonymous: false, exported: false, typ: chanType$16, tag: ""}, {prop: "addedGzip", name: "addedGzip", anonymous: false, exported: false, typ: $Bool, tag: ""}, {prop: "continueCh", name: "continueCh", anonymous: false, exported: false, typ: chanType$17, tag: ""}, {prop: "callerGone", name: "callerGone", anonymous: false, exported: false, typ: chanType$3, tag: ""}]);
115525  	writeRequest.init("net/http", [{prop: "req", name: "req", anonymous: false, exported: false, typ: ptrType$137, tag: ""}, {prop: "ch", name: "ch", anonymous: false, exported: false, typ: chanType$18, tag: ""}, {prop: "continueCh", name: "continueCh", anonymous: false, exported: false, typ: chanType$3, tag: ""}]);
115526  	httpError.init("net/http", [{prop: "err", name: "err", anonymous: false, exported: false, typ: $String, tag: ""}, {prop: "timeout", name: "timeout", anonymous: false, exported: false, typ: $Bool, tag: ""}]);
115527  	tLogKey.init("", []);
115528  	bodyEOFSignal.init("net/http", [{prop: "body", name: "body", anonymous: false, exported: false, typ: io.ReadCloser, tag: ""}, {prop: "mu", name: "mu", anonymous: false, exported: false, typ: sync.Mutex, tag: ""}, {prop: "closed", name: "closed", anonymous: false, exported: false, typ: $Bool, tag: ""}, {prop: "rerr", name: "rerr", anonymous: false, exported: false, typ: $error, tag: ""}, {prop: "fn", name: "fn", anonymous: false, exported: false, typ: funcType$32, tag: ""}, {prop: "earlyCloseFn", name: "earlyCloseFn", anonymous: false, exported: false, typ: funcType$33, tag: ""}]);
115529  	gzipReader.init("net/http", [{prop: "body", name: "body", anonymous: false, exported: false, typ: ptrType$105, tag: ""}, {prop: "zr", name: "zr", anonymous: false, exported: false, typ: ptrType$75, tag: ""}, {prop: "zerr", name: "zerr", anonymous: false, exported: false, typ: $error, tag: ""}]);
115530  	tlsHandshakeTimeoutError.init("", []);
115531  	fakeLocker.init("", []);
115532  	connLRU.init("net/http", [{prop: "ll", name: "ll", anonymous: false, exported: false, typ: ptrType$13, tag: ""}, {prop: "m", name: "m", anonymous: false, exported: false, typ: mapType$23, tag: ""}]);
115533  	canceler.init([{prop: "CancelRequest", name: "CancelRequest", pkg: "", typ: $funcType([ptrType$7], [], false)}]);
115534  	I.init([{prop: "doKeepAlives", name: "doKeepAlives", pkg: "net/http", typ: $funcType([], [$Bool], false)}]);
115535  	requestTooLarger.init([{prop: "requestTooLarge", name: "requestTooLarge", pkg: "net/http", typ: $funcType([], [], false)}]);
115536  	dialRes.init("net/http", [{prop: "pc", name: "pc", anonymous: false, exported: false, typ: ptrType$102, tag: ""}, {prop: "err", name: "err", anonymous: false, exported: false, typ: $error, tag: ""}]);
115537  	$init = function() {
115538  		$pkg.$init = function() {};
115539  		/* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
115540  		$r = bufio.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
115541  		$r = bytes.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
115542  		$r = gzip.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
115543  		$r = list.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
115544  		$r = context.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
115545  		$r = rand.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
115546  		$r = tls.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
115547  		$r = base64.$init(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
115548  		$r = binary.$init(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
115549  		$r = errors.$init(); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
115550  		$r = fmt.$init(); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
115551  		$r = js.$init(); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
115552  		$r = io.$init(); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
115553  		$r = ioutil.$init(); /* */ $s = 14; case 14: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
115554  		$r = log.$init(); /* */ $s = 15; case 15: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
115555  		$r = math.$init(); /* */ $s = 16; case 16: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
115556  		$r = rand$1.$init(); /* */ $s = 17; case 17: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
115557  		$r = mime.$init(); /* */ $s = 18; case 18: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
115558  		$r = multipart.$init(); /* */ $s = 19; case 19: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
115559  		$r = net.$init(); /* */ $s = 20; case 20: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
115560  		$r = httptrace.$init(); /* */ $s = 21; case 21: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
115561  		$r = internal.$init(); /* */ $s = 22; case 22: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
115562  		$r = textproto.$init(); /* */ $s = 23; case 23: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
115563  		$r = url.$init(); /* */ $s = 24; case 24: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
115564  		$r = os.$init(); /* */ $s = 25; case 25: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
115565  		$r = path.$init(); /* */ $s = 26; case 26: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
115566  		$r = filepath.$init(); /* */ $s = 27; case 27: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
115567  		$r = reflect.$init(); /* */ $s = 28; case 28: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
115568  		$r = runtime.$init(); /* */ $s = 29; case 29: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
115569  		$r = sort.$init(); /* */ $s = 30; case 30: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
115570  		$r = strconv.$init(); /* */ $s = 31; case 31: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
115571  		$r = strings.$init(); /* */ $s = 32; case 32: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
115572  		$r = sync.$init(); /* */ $s = 33; case 33: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
115573  		$r = atomic.$init(); /* */ $s = 34; case 34: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
115574  		$r = time.$init(); /* */ $s = 35; case 35: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
115575  		$r = utf8.$init(); /* */ $s = 36; case 36: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
115576  		$r = hpack.$init(); /* */ $s = 37; case 37: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
115577  		$r = idna.$init(); /* */ $s = 38; case 38: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
115578  		$r = httplex.$init(); /* */ $s = 39; case 39: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
115579  		$r = proxy.$init(); /* */ $s = 40; case 40: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
115580  		http2VerboseLogs = false;
115581  		http2logFrameWrites = false;
115582  		http2logFrameReads = false;
115583  		http2inTests = false;
115584  		http2testHookOnConn = $throwNilPointerError;
115585  		http2testHookGetServerConn = $throwNilPointerError;
115586  		http2testHookOnPanicMu = ptrType.nil;
115587  		http2testHookOnPanic = $throwNilPointerError;
115588  		textprotoReaderPool = new sync.Pool.ptr(0, 0, sliceType.nil, $throwNilPointerError);
115589  		bufioReaderPool = new sync.Pool.ptr(0, 0, sliceType.nil, $throwNilPointerError);
115590  		bufioWriter2kPool = new sync.Pool.ptr(0, 0, sliceType.nil, $throwNilPointerError);
115591  		bufioWriter4kPool = new sync.Pool.ptr(0, 0, sliceType.nil, $throwNilPointerError);
115592  		defaultServeMux = new ServeMux.ptr(new sync.RWMutex.ptr(new sync.Mutex.ptr(0, 0), 0, 0, 0, 0), false, false);
115593  		testHookServerServe = $throwNilPointerError;
115594  		uniqNameMu = new sync.Mutex.ptr(0, 0);
115595  		zeroDialer = new net.Dialer.ptr(new time.Duration(0, 0), new time.Time.ptr(new $Uint64(0, 0), new $Int64(0, 0), ptrType$1.nil), $ifaceNil, false, new time.Duration(0, 0), new time.Duration(0, 0), ptrType$2.nil, $chanNil);
115596  		$pkg.DefaultTransport = (function() {
115597  			var x;
115598  			if (!($global.fetch === undefined) && !($global.ReadableStream === undefined)) {
115599  				return new fetchTransport.ptr();
115600  			} else if (!($global.XMLHttpRequest === undefined)) {
115601  				return new XHRTransport.ptr(false);
115602  			} else {
115603  				return (x = new noTransport.ptr(), new x.constructor.elem(x));
115604  			}
115605  		})();
115606  		$pkg.DefaultClient = new Client.ptr($ifaceNil, $throwNilPointerError, $ifaceNil, new time.Duration(0, 0));
115607  		$pkg.ErrUseLastResponse = errors.New("net/http: use last response");
115608  		cookieNameSanitizer = strings.NewReplacer(new sliceType$1(["\n", "-", "\r", "-"]));
115609  		errSeeker = errors.New("seeker can't seek");
115610  		errNoOverlap = errors.New("invalid range: failed to overlap");
115611  		unixEpochTime = $clone(time.Unix(new $Int64(0, 0), new $Int64(0, 0)), time.Time);
115612  		http2dataChunkSizeClasses = new sliceType$2([1024, 2048, 4096, 8192, 16384]);
115613  		http2dataChunkPools = $toNativeArray($kindStruct, [new sync.Pool.ptr(0, 0, sliceType.nil, (function() {
115614  			return $makeSlice(sliceType$3, 1024);
115615  		})), new sync.Pool.ptr(0, 0, sliceType.nil, (function() {
115616  			return $makeSlice(sliceType$3, 2048);
115617  		})), new sync.Pool.ptr(0, 0, sliceType.nil, (function() {
115618  			return $makeSlice(sliceType$3, 4096);
115619  		})), new sync.Pool.ptr(0, 0, sliceType.nil, (function() {
115620  			return $makeSlice(sliceType$3, 8192);
115621  		})), new sync.Pool.ptr(0, 0, sliceType.nil, (function() {
115622  			return $makeSlice(sliceType$3, 16384);
115623  		}))]);
115624  		http2errReadEmpty = errors.New("read from empty dataBuffer");
115625  		http2errCodeName = $makeMap(http2ErrCode.keyFor, [{ k: 0, v: "NO_ERROR" }, { k: 1, v: "PROTOCOL_ERROR" }, { k: 2, v: "INTERNAL_ERROR" }, { k: 3, v: "FLOW_CONTROL_ERROR" }, { k: 4, v: "SETTINGS_TIMEOUT" }, { k: 5, v: "STREAM_CLOSED" }, { k: 6, v: "FRAME_SIZE_ERROR" }, { k: 7, v: "REFUSED_STREAM" }, { k: 8, v: "CANCEL" }, { k: 9, v: "COMPRESSION_ERROR" }, { k: 10, v: "CONNECT_ERROR" }, { k: 11, v: "ENHANCE_YOUR_CALM" }, { k: 12, v: "INADEQUATE_SECURITY" }, { k: 13, v: "HTTP_1_1_REQUIRED" }]);
115626  		http2errMixPseudoHeaderTypes = errors.New("mix of request and response pseudo headers");
115627  		http2errPseudoAfterRegular = errors.New("pseudo header field after regular");
115628  		http2padZeros = $makeSlice(sliceType$3, 255);
115629  		http2frameName = $makeMap(http2FrameType.keyFor, [{ k: 0, v: "DATA" }, { k: 1, v: "HEADERS" }, { k: 2, v: "PRIORITY" }, { k: 3, v: "RST_STREAM" }, { k: 4, v: "SETTINGS" }, { k: 5, v: "PUSH_PROMISE" }, { k: 6, v: "PING" }, { k: 7, v: "GOAWAY" }, { k: 8, v: "WINDOW_UPDATE" }, { k: 9, v: "CONTINUATION" }]);
115630  		http2flagName = $makeMap(http2FrameType.keyFor, [{ k: 0, v: $makeMap(http2Flags.keyFor, [{ k: 1, v: "END_STREAM" }, { k: 8, v: "PADDED" }]) }, { k: 1, v: $makeMap(http2Flags.keyFor, [{ k: 1, v: "END_STREAM" }, { k: 4, v: "END_HEADERS" }, { k: 8, v: "PADDED" }, { k: 32, v: "PRIORITY" }]) }, { k: 4, v: $makeMap(http2Flags.keyFor, [{ k: 1, v: "ACK" }]) }, { k: 6, v: $makeMap(http2Flags.keyFor, [{ k: 1, v: "ACK" }]) }, { k: 9, v: $makeMap(http2Flags.keyFor, [{ k: 4, v: "END_HEADERS" }]) }, { k: 5, v: $makeMap(http2Flags.keyFor, [{ k: 4, v: "END_HEADERS" }, { k: 8, v: "PADDED" }]) }]);
115631  		http2fhBytes = new sync.Pool.ptr(0, 0, sliceType.nil, (function() {
115632  			var buf, buf$24ptr;
115633  			buf = $makeSlice(sliceType$3, 9);
115634  			return (buf$24ptr || (buf$24ptr = new ptrType$4(function() { return buf; }, function($v) { buf = $subslice(new sliceType$3($v.$array), $v.$offset, $v.$offset + $v.$length); })));
115635  		}));
115636  		http2ErrFrameTooLarge = errors.New("http2: frame too large");
115637  		http2errStreamID = errors.New("invalid stream ID");
115638  		http2errDepStreamID = errors.New("invalid dependent stream ID");
115639  		http2errPadLength = errors.New("pad length too large");
115640  		http2errPadBytes = errors.New("padding bytes must all be zeros unless AllowIllegalWrites is enabled");
115641  		_r = os.Getenv("DEBUG_HTTP2_GOROUTINES"); /* */ $s = 41; case 41: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
115642  		http2DebugGoroutines = _r === "1";
115643  		http2goroutineSpace = (new sliceType$3($stringToBytes("goroutine ")));
115644  		http2littleBuf = new sync.Pool.ptr(0, 0, sliceType.nil, (function() {
115645  			var buf, buf$24ptr;
115646  			buf = $makeSlice(sliceType$3, 64);
115647  			return (buf$24ptr || (buf$24ptr = new ptrType$4(function() { return buf; }, function($v) { buf = $subslice(new sliceType$3($v.$array), $v.$offset, $v.$offset + $v.$length); })));
115648  		}));
115649  		http2commonLowerHeader = $makeMap($String.keyFor, []);
115650  		http2commonCanonHeader = $makeMap($String.keyFor, []);
115651  		http2clientPreface = (new sliceType$3($stringToBytes("PRI * HTTP/2.0\r\n\r\nSM\r\n\r\n")));
115652  		http2stateName = $toNativeArray($kindString, ["Idle", "Open", "HalfClosedLocal", "HalfClosedRemote", "Closed"]);
115653  		http2frameParsers = $makeMap(http2FrameType.keyFor, [{ k: 0, v: http2parseDataFrame }, { k: 1, v: http2parseHeadersFrame }, { k: 2, v: http2parsePriorityFrame }, { k: 3, v: http2parseRSTStreamFrame }, { k: 4, v: http2parseSettingsFrame }, { k: 5, v: http2parsePushPromise }, { k: 6, v: http2parsePingFrame }, { k: 7, v: http2parseGoAwayFrame }, { k: 8, v: http2parseWindowUpdateFrame }, { k: 9, v: http2parseContinuationFrame }]);
115654  		http2settingName = $makeMap(http2SettingID.keyFor, [{ k: 1, v: "HEADER_TABLE_SIZE" }, { k: 2, v: "ENABLE_PUSH" }, { k: 3, v: "MAX_CONCURRENT_STREAMS" }, { k: 4, v: "INITIAL_WINDOW_SIZE" }, { k: 5, v: "MAX_FRAME_SIZE" }, { k: 6, v: "MAX_HEADER_LIST_SIZE" }]);
115655  		http2errInvalidHeaderFieldName = errors.New("http2: invalid header field name");
115656  		http2errInvalidHeaderFieldValue = errors.New("http2: invalid header field value");
115657  		http2httpCodeStringCommon = $makeMap($Int.keyFor, []);
115658  		http2bufWriterPool = new sync.Pool.ptr(0, 0, sliceType.nil, (function() {
115659  			return bufio.NewWriterSize($ifaceNil, 4096);
115660  		}));
115661  		http2errTimeout = new http2httpError.ptr("http2: timeout awaiting response headers", true);
115662  		http2sorterPool = new sync.Pool.ptr(0, 0, sliceType.nil, (function() {
115663  			return new http2sorter.ptr(sliceType$1.nil);
115664  		}));
115665  		http2errClosedPipeWrite = errors.New("write on closed buffer");
115666  		http2errClientDisconnected = errors.New("client disconnected");
115667  		http2errClosedBody = errors.New("body closed by handler");
115668  		http2errHandlerComplete = errors.New("http2: request body closed due to handler exiting");
115669  		http2errStreamClosed = errors.New("http2: stream closed");
115670  		http2responseWriterStatePool = new sync.Pool.ptr(0, 0, sliceType.nil, (function() {
115671  			var rws, x;
115672  			rws = new http2responseWriterState.ptr(ptrType$6.nil, ptrType$7.nil, ptrType$8.nil, ptrType$9.nil, ptrType$10.nil, false, false, sliceType$1.nil, 0, false, false, false, false, new $Int64(0, 0), new $Int64(0, 0), new sync.Mutex.ptr(0, 0), $chanNil);
115673  			rws.bw = bufio.NewWriterSize((x = new http2chunkWriter.ptr(rws), new x.constructor.elem(x)), 4096);
115674  			return rws;
115675  		}));
115676  		http2settingsTimerMsg = $newDataPointer(0, ptrType$11);
115677  		http2idleTimerMsg = $newDataPointer(0, ptrType$11);
115678  		http2shutdownTimerMsg = $newDataPointer(0, ptrType$11);
115679  		http2gracefulShutdownMsg = $newDataPointer(0, ptrType$11);
115680  		http2errPrefaceTimeout = errors.New("timeout waiting for client preface");
115681  		http2errChanPool = new sync.Pool.ptr(0, 0, sliceType.nil, (function() {
115682  			return new chanType(new $Chan($error, 1));
115683  		}));
115684  		http2writeDataPool = new sync.Pool.ptr(0, 0, sliceType.nil, (function() {
115685  			return new http2writeData.ptr(0, sliceType$3.nil, false);
115686  		}));
115687  		http2errHandlerPanicked = errors.New("http2: handler panicked");
115688  		http2goAwayTimeout = new time.Duration(0, 1000000000);
115689  		http2ErrRecursivePush = errors.New("http2: recursive push not allowed");
115690  		http2ErrPushLimitReached = errors.New("http2: push would exceed peer's SETTINGS_MAX_CONCURRENT_STREAMS");
115691  		http2connHeaders = new sliceType$1(["Connection", "Keep-Alive", "Proxy-Connection", "Transfer-Encoding", "Upgrade"]);
115692  		http2badTrailer = $makeMap($String.keyFor, [{ k: "Authorization", v: true }, { k: "Cache-Control", v: true }, { k: "Connection", v: true }, { k: "Content-Encoding", v: true }, { k: "Content-Length", v: true }, { k: "Content-Range", v: true }, { k: "Content-Type", v: true }, { k: "Expect", v: true }, { k: "Host", v: true }, { k: "Keep-Alive", v: true }, { k: "Max-Forwards", v: true }, { k: "Pragma", v: true }, { k: "Proxy-Authenticate", v: true }, { k: "Proxy-Authorization", v: true }, { k: "Proxy-Connection", v: true }, { k: "Range", v: true }, { k: "Realm", v: true }, { k: "Te", v: true }, { k: "Trailer", v: true }, { k: "Transfer-Encoding", v: true }, { k: "Www-Authenticate", v: true }]);
115693  		http2errTransportVersion = errors.New("http2: ConfigureTransport is only supported starting at Go 1.6");
115694  		http2ErrNoCachedConn = (x = new http2noCachedConnError.ptr(), new x.constructor.elem(x));
115695  		http2errClientConnClosed = errors.New("http2: client conn is closed");
115696  		http2errClientConnUnusable = errors.New("http2: client conn not usable");
115697  		http2errClientConnGotGoAway = errors.New("http2: Transport received Server's graceful shutdown GOAWAY");
115698  		http2errRequestCanceled = errors.New("net/http: request canceled");
115699  		http2errStopReqBodyWrite = errors.New("http2: aborting request body write");
115700  		http2errStopReqBodyWriteAndCancel = errors.New("http2: canceling request");
115701  		http2errClosedResponseBody = errors.New("http2: response body closed");
115702  		http2errInvalidTrailers = errors.New("http2: invalid trailers");
115703  		http2errResponseHeaderListSize = errors.New("http2: response header list larger than advertised limit");
115704  		http2errRequestHeaderListSize = errors.New("http2: request header list larger than peer's advertised limit");
115705  		http2errPseudoTrailers = errors.New("http2: invalid pseudo header in trailers");
115706  		http2noBody = ioutil.NopCloser(bytes.NewReader(sliceType$3.nil));
115707  		headerNewlineToSpace = strings.NewReplacer(new sliceType$1(["\n", " ", "\r", " "]));
115708  		headerSorterPool = new sync.Pool.ptr(0, 0, sliceType.nil, (function() {
115709  			return new headerSorter.ptr(sliceType$4.nil);
115710  		}));
115711  		aLongTimeAgo = $clone(time.Unix(new $Int64(0, 1), new $Int64(0, 0)), time.Time);
115712  		$pkg.NoBody = new noBody.ptr();
115713  		$pkg.ErrMissingFile = errors.New("http: no such file");
115714  		$pkg.ErrNotSupported = new ProtocolError.ptr("feature not supported");
115715  		$pkg.ErrUnexpectedTrailer = new ProtocolError.ptr("trailer header without chunked transfer encoding");
115716  		$pkg.ErrMissingBoundary = new ProtocolError.ptr("no multipart boundary param in Content-Type");
115717  		$pkg.ErrNotMultipart = new ProtocolError.ptr("request Content-Type isn't multipart/form-data");
115718  		reqWriteExcludeHeader = $makeMap($String.keyFor, [{ k: "Host", v: true }, { k: "User-Agent", v: true }, { k: "Content-Length", v: true }, { k: "Transfer-Encoding", v: true }, { k: "Trailer", v: true }]);
115719  		$pkg.ErrNoCookie = errors.New("http: named cookie not present");
115720  		multipartByReader = new multipart.Form.ptr({}, {});
115721  		errMissingHost = errors.New("http: Request.Write on Request with no Host or URL set");
115722  		respExcludeHeader = $makeMap($String.keyFor, [{ k: "Content-Length", v: true }, { k: "Transfer-Encoding", v: true }, { k: "Trailer", v: true }]);
115723  		$pkg.ErrNoLocation = errors.New("http: no Location header in response");
115724  		$pkg.ErrBodyNotAllowed = errors.New("http: request method or response status code does not allow body");
115725  		$pkg.ErrHijacked = errors.New("http: connection has been hijacked");
115726  		$pkg.ErrContentLength = errors.New("http: wrote more than the declared Content-Length");
115727  		$pkg.ErrWriteAfterFlush = errors.New("unused");
115728  		$pkg.ServerContextKey = new contextKey.ptr("http-server");
115729  		$pkg.LocalAddrContextKey = new contextKey.ptr("local-addr");
115730  		crlf = (new sliceType$3($stringToBytes("\r\n")));
115731  		colonSpace = (new sliceType$3($stringToBytes(": ")));
115732  		copyBufPool = new sync.Pool.ptr(0, 0, sliceType.nil, (function() {
115733  			var b, b$24ptr;
115734  			b = $makeSlice(sliceType$3, 32768);
115735  			return (b$24ptr || (b$24ptr = new ptrType$4(function() { return b; }, function($v) { b = $subslice(new sliceType$3($v.$array), $v.$offset, $v.$offset + $v.$length); })));
115736  		}));
115737  		errTooLarge = errors.New("http: request too large");
115738  		extraHeaderKeys = new sliceType$5([(new sliceType$3($stringToBytes("Content-Type"))), (new sliceType$3($stringToBytes("Connection"))), (new sliceType$3($stringToBytes("Transfer-Encoding")))]);
115739  		headerContentLength = (new sliceType$3($stringToBytes("Content-Length: ")));
115740  		headerDate = (new sliceType$3($stringToBytes("Date: ")));
115741  		$pkg.ErrAbortHandler = errors.New("net/http: abort Handler");
115742  		parseURL = url.Parse;
115743  		htmlReplacer = strings.NewReplacer(new sliceType$1(["&", "&amp;", "<", "&lt;", ">", "&gt;", "\"", "&#34;", "'", "&#39;"]));
115744  		$pkg.DefaultServeMux = defaultServeMux;
115745  		shutdownPollInterval = new time.Duration(0, 500000000);
115746  		connStateInterface = $toNativeArray($kindInterface, [new ConnState(0), new ConnState(1), new ConnState(2), new ConnState(3), new ConnState(4)]);
115747  		stateName = $makeMap(ConnState.keyFor, [{ k: 0, v: "new" }, { k: 1, v: "active" }, { k: 2, v: "idle" }, { k: 3, v: "hijacked" }, { k: 4, v: "closed" }]);
115748  		$pkg.ErrServerClosed = errors.New("http: Server closed");
115749  		$pkg.ErrHandlerTimeout = errors.New("http: Handler timeout");
115750  		uniqNameNext = {};
115751  		sniffSignatures = new sliceType$6([(new htmlSig($stringToBytes("<!DOCTYPE HTML"))), (new htmlSig($stringToBytes("<HTML"))), (new htmlSig($stringToBytes("<HEAD"))), (new htmlSig($stringToBytes("<SCRIPT"))), (new htmlSig($stringToBytes("<IFRAME"))), (new htmlSig($stringToBytes("<H1"))), (new htmlSig($stringToBytes("<DIV"))), (new htmlSig($stringToBytes("<FONT"))), (new htmlSig($stringToBytes("<TABLE"))), (new htmlSig($stringToBytes("<A"))), (new htmlSig($stringToBytes("<STYLE"))), (new htmlSig($stringToBytes("<TITLE"))), (new htmlSig($stringToBytes("<B"))), (new htmlSig($stringToBytes("<BODY"))), (new htmlSig($stringToBytes("<BR"))), (new htmlSig($stringToBytes("<P"))), (new htmlSig($stringToBytes("<!--"))), new maskedSig.ptr((new sliceType$3($stringToBytes("\xFF\xFF\xFF\xFF\xFF"))), (new sliceType$3($stringToBytes("<?xml"))), true, "text/xml; charset=utf-8"), new exactSig.ptr((new sliceType$3($stringToBytes("%PDF-"))), "application/pdf"), new exactSig.ptr((new sliceType$3($stringToBytes("%!PS-Adobe-"))), "application/postscript"), new maskedSig.ptr((new sliceType$3($stringToBytes("\xFF\xFF\x00\x00"))), (new sliceType$3($stringToBytes("\xFE\xFF\x00\x00"))), false, "text/plain; charset=utf-16be"), new maskedSig.ptr((new sliceType$3($stringToBytes("\xFF\xFF\x00\x00"))), (new sliceType$3($stringToBytes("\xFF\xFE\x00\x00"))), false, "text/plain; charset=utf-16le"), new maskedSig.ptr((new sliceType$3($stringToBytes("\xFF\xFF\xFF\x00"))), (new sliceType$3($stringToBytes("\xEF\xBB\xBF\x00"))), false, "text/plain; charset=utf-8"), new exactSig.ptr((new sliceType$3($stringToBytes("GIF87a"))), "image/gif"), new exactSig.ptr((new sliceType$3($stringToBytes("GIF89a"))), "image/gif"), new exactSig.ptr((new sliceType$3($stringToBytes("\x89PNG\r\n\x1A\n"))), "image/png"), new exactSig.ptr((new sliceType$3($stringToBytes("\xFF\xD8\xFF"))), "image/jpeg"), new exactSig.ptr((new sliceType$3($stringToBytes("BM"))), "image/bmp"), new maskedSig.ptr((new sliceType$3($stringToBytes("\xFF\xFF\xFF\xFF\x00\x00\x00\x00\xFF\xFF\xFF\xFF\xFF\xFF"))), (new sliceType$3($stringToBytes("RIFF\x00\x00\x00\x00WEBPVP"))), false, "image/webp"), new exactSig.ptr((new sliceType$3($stringToBytes("\x00\x00\x01\x00"))), "image/vnd.microsoft.icon"), new maskedSig.ptr((new sliceType$3($stringToBytes("\xFF\xFF\xFF\xFF\x00\x00\x00\x00\xFF\xFF\xFF\xFF"))), (new sliceType$3($stringToBytes("RIFF\x00\x00\x00\x00WAVE"))), false, "audio/wave"), new maskedSig.ptr((new sliceType$3($stringToBytes("\xFF\xFF\xFF\xFF\x00\x00\x00\x00\xFF\xFF\xFF\xFF"))), (new sliceType$3($stringToBytes("FORM\x00\x00\x00\x00AIFF"))), false, "audio/aiff"), new maskedSig.ptr((new sliceType$3($stringToBytes("\xFF\xFF\xFF\xFF"))), (new sliceType$3($stringToBytes(".snd"))), false, "audio/basic"), new maskedSig.ptr((new sliceType$3($stringToBytes("\xFF\xFF\xFF\xFF\xFF"))), (new sliceType$3($stringToBytes("OggS\x00"))), false, "application/ogg"), new maskedSig.ptr((new sliceType$3($stringToBytes("\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"))), (new sliceType$3($stringToBytes("MThd\x00\x00\x00\x06"))), false, "audio/midi"), new maskedSig.ptr((new sliceType$3($stringToBytes("\xFF\xFF\xFF"))), (new sliceType$3($stringToBytes("ID3"))), false, "audio/mpeg"), new maskedSig.ptr((new sliceType$3($stringToBytes("\xFF\xFF\xFF\xFF\x00\x00\x00\x00\xFF\xFF\xFF\xFF"))), (new sliceType$3($stringToBytes("RIFF\x00\x00\x00\x00AVI "))), false, "video/avi"), new maskedSig.ptr((new sliceType$3($stringToBytes("\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xFF\xFF"))), (new sliceType$3($stringToBytes("\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00LP"))), false, "application/vnd.ms-fontobject"), new exactSig.ptr((new sliceType$3($stringToBytes("\x00\x01\x00\x00"))), "application/font-ttf"), new exactSig.ptr((new sliceType$3($stringToBytes("OTTO"))), "application/font-off"), new exactSig.ptr((new sliceType$3($stringToBytes("ttcf"))), "application/font-cff"), new exactSig.ptr((new sliceType$3($stringToBytes("wOFF"))), "application/font-woff"), new exactSig.ptr((new sliceType$3($stringToBytes("\x1AE\xDF\xA3"))), "video/webm"), new exactSig.ptr((new sliceType$3($stringToBytes("Rar \x1A\x07\x00"))), "application/x-rar-compressed"), new exactSig.ptr((new sliceType$3($stringToBytes("PK\x03\x04"))), "application/zip"), new exactSig.ptr((new sliceType$3($stringToBytes("\x1F\x8B\b"))), "application/x-gzip"), (x$1 = new mp4Sig.ptr(), new x$1.constructor.elem(x$1)), (x$2 = new textSig.ptr(), new x$2.constructor.elem(x$2))]);
115752  		mp4ftype = (new sliceType$3($stringToBytes("ftyp")));
115753  		mp4 = (new sliceType$3($stringToBytes("mp4")));
115754  		statusText = $makeMap($Int.keyFor, [{ k: 100, v: "Continue" }, { k: 101, v: "Switching Protocols" }, { k: 102, v: "Processing" }, { k: 200, v: "OK" }, { k: 201, v: "Created" }, { k: 202, v: "Accepted" }, { k: 203, v: "Non-Authoritative Information" }, { k: 204, v: "No Content" }, { k: 205, v: "Reset Content" }, { k: 206, v: "Partial Content" }, { k: 207, v: "Multi-Status" }, { k: 208, v: "Already Reported" }, { k: 226, v: "IM Used" }, { k: 300, v: "Multiple Choices" }, { k: 301, v: "Moved Permanently" }, { k: 302, v: "Found" }, { k: 303, v: "See Other" }, { k: 304, v: "Not Modified" }, { k: 305, v: "Use Proxy" }, { k: 307, v: "Temporary Redirect" }, { k: 308, v: "Permanent Redirect" }, { k: 400, v: "Bad Request" }, { k: 401, v: "Unauthorized" }, { k: 402, v: "Payment Required" }, { k: 403, v: "Forbidden" }, { k: 404, v: "Not Found" }, { k: 405, v: "Method Not Allowed" }, { k: 406, v: "Not Acceptable" }, { k: 407, v: "Proxy Authentication Required" }, { k: 408, v: "Request Timeout" }, { k: 409, v: "Conflict" }, { k: 410, v: "Gone" }, { k: 411, v: "Length Required" }, { k: 412, v: "Precondition Failed" }, { k: 413, v: "Request Entity Too Large" }, { k: 414, v: "Request URI Too Long" }, { k: 415, v: "Unsupported Media Type" }, { k: 416, v: "Requested Range Not Satisfiable" }, { k: 417, v: "Expectation Failed" }, { k: 418, v: "I'm a teapot" }, { k: 422, v: "Unprocessable Entity" }, { k: 423, v: "Locked" }, { k: 424, v: "Failed Dependency" }, { k: 426, v: "Upgrade Required" }, { k: 428, v: "Precondition Required" }, { k: 429, v: "Too Many Requests" }, { k: 431, v: "Request Header Fields Too Large" }, { k: 451, v: "Unavailable For Legal Reasons" }, { k: 500, v: "Internal Server Error" }, { k: 501, v: "Not Implemented" }, { k: 502, v: "Bad Gateway" }, { k: 503, v: "Service Unavailable" }, { k: 504, v: "Gateway Timeout" }, { k: 505, v: "HTTP Version Not Supported" }, { k: 506, v: "Variant Also Negotiates" }, { k: 507, v: "Insufficient Storage" }, { k: 508, v: "Loop Detected" }, { k: 510, v: "Not Extended" }, { k: 511, v: "Network Authentication Required" }]);
115755  		suppressedHeaders304 = new sliceType$1(["Content-Type", "Content-Length", "Transfer-Encoding"]);
115756  		suppressedHeadersNoBody = new sliceType$1(["Content-Length", "Transfer-Encoding"]);
115757  		$pkg.ErrBodyReadAfterClose = errors.New("http: invalid Read on closed Body");
115758  		singleCRLF = (new sliceType$3($stringToBytes("\r\n")));
115759  		doubleCRLF = (new sliceType$3($stringToBytes("\r\n\r\n")));
115760  		errTrailerEOF = errors.New("http: unexpected EOF reading trailer");
115761  		$pkg.ErrSkipAltProtocol = errors.New("net/http: skip alternate protocol");
115762  		errKeepAlivesDisabled = errors.New("http: putIdleConn: keep alives disabled");
115763  		errConnBroken = errors.New("http: putIdleConn: connection is in bad state");
115764  		errWantIdle = errors.New("http: putIdleConn: CloseIdleConnections was called");
115765  		errTooManyIdle = errors.New("http: putIdleConn: too many idle connections");
115766  		errTooManyIdleHost = errors.New("http: putIdleConn: too many idle connections for host");
115767  		errCloseIdleConns = errors.New("http: CloseIdleConnections called");
115768  		errReadLoopExiting = errors.New("http: persistConn.readLoop exiting");
115769  		errIdleConnTimeout = errors.New("http: idle connection timeout");
115770  		errNotCachingH2Conn = errors.New("http: not caching alternate protocol's connections");
115771  		errServerClosedIdle = errors.New("http: server closed idle connection");
115772  		errTimeout = new httpError.ptr("net/http: timeout awaiting response headers", true);
115773  		errRequestCanceled = errors.New("net/http: request canceled");
115774  		errRequestCanceledConn = errors.New("net/http: request canceled while waiting for connection");
115775  		testHookEnterRoundTrip = nop;
115776  		testHookWaitResLoop = nop;
115777  		testHookRoundTripRetried = nop;
115778  		testHookPrePendingDial = nop;
115779  		testHookPostPendingDial = nop;
115780  		testHookMu = (x$3 = new fakeLocker.ptr(), new x$3.constructor.elem(x$3));
115781  		testHookReadLoopBeforeNextRead = nop;
115782  		portMap = $makeMap($String.keyFor, [{ k: "http", v: "80" }, { k: "https", v: "443" }, { k: "socks5", v: "1080" }]);
115783  		errReadOnClosedResBody = errors.New("http: read on closed response body");
115784  		init();
115785  		$r = init$1(); /* */ $s = 42; case 42: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
115786  		init$2();
115787  		/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
115788  	};
115789  	$pkg.$init = $init;
115790  	return $pkg;
115791  })();
115792  $packages["github.com/StackExchange/dnscontrol/docs/flattener"] = (function() {
115793  	var $pkg = {}, $init, json, fmt, spflib, jquery, http, strings, gResolver, gResp, ptrType, structType, sliceType, sliceType$1, funcType, funcType$1, sliceType$2, jq, parsed, domain, resolver, main, updateDisabledChecks, renderResults, buildHTML, genRoot, genPart;
115794  	json = $packages["encoding/json"];
115795  	fmt = $packages["fmt"];
115796  	spflib = $packages["github.com/StackExchange/dnscontrol/pkg/spflib"];
115797  	jquery = $packages["github.com/gopherjs/jquery"];
115798  	http = $packages["net/http"];
115799  	strings = $packages["strings"];
115800  	gResolver = $pkg.gResolver = $newType(0, $kindStruct, "main.gResolver", true, "github.com/StackExchange/dnscontrol/docs/flattener", false, function() {
115801  		this.$val = this;
115802  		if (arguments.length === 0) {
115803  			return;
115804  		}
115805  	});
115806  	gResp = $pkg.gResp = $newType(0, $kindStruct, "main.gResp", true, "github.com/StackExchange/dnscontrol/docs/flattener", false, function(Status_, Answer_) {
115807  		this.$val = this;
115808  		if (arguments.length === 0) {
115809  			this.Status = 0;
115810  			this.Answer = sliceType.nil;
115811  			return;
115812  		}
115813  		this.Status = Status_;
115814  		this.Answer = Answer_;
115815  	});
115816  	ptrType = $ptrType(spflib.SPFRecord);
115817  	structType = $structType("", [{prop: "Data", name: "Data", anonymous: false, exported: true, typ: $String, tag: "json:\"data\""}]);
115818  	sliceType = $sliceType(structType);
115819  	sliceType$1 = $sliceType($emptyInterface);
115820  	funcType = $funcType([], [], false);
115821  	funcType$1 = $funcType([jquery.Event], [], false);
115822  	sliceType$2 = $sliceType($String);
115823  	gResolver.ptr.prototype.GetSPF = function(fqdn) {
115824  		var _i, _r, _r$1, _r$2, _r$3, _ref, _tuple, a, dat, dec, err, fqdn, g, resp, val, $s, $deferred, $r;
115825  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _i = $f._i; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _ref = $f._ref; _tuple = $f._tuple; a = $f.a; dat = $f.dat; dec = $f.dec; err = $f.err; fqdn = $f.fqdn; g = $f.g; resp = $f.resp; val = $f.val; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
115826  		g = this;
115827  		_r = http.Get("https://dns.google.com/resolve?type=txt&name=" + fqdn); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
115828  		_tuple = _r;
115829  		resp = _tuple[0];
115830  		err = _tuple[1];
115831  		if (!($interfaceIsEqual(err, $ifaceNil))) {
115832  			$s = -1; return ["", err];
115833  		}
115834  		$deferred.push([$methodVal(resp.Body, "Close"), []]);
115835  		dec = json.NewDecoder(resp.Body);
115836  		dat = new gResp.ptr(0, sliceType.nil);
115837  		_r$1 = dec.Decode(dat); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
115838  		err = _r$1;
115839  		if (!($interfaceIsEqual(err, $ifaceNil))) {
115840  			$s = -1; return ["", err];
115841  		}
115842  		_ref = dat.Answer;
115843  		_i = 0;
115844  		/* while (true) { */ case 3:
115845  			/* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 4; continue; }
115846  			a = $clone(((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]), structType);
115847  			_r$2 = strings.Trim(a.Data, "\""); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
115848  			val = _r$2;
115849  			if (strings.HasPrefix(val, "v=spf1 ")) {
115850  				$s = -1; return [val, $ifaceNil];
115851  			}
115852  			_i++;
115853  		/* } */ $s = 3; continue; case 4:
115854  		_r$3 = fmt.Errorf("No spf records found", new sliceType$1([])); /* */ $s = 6; case 6: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
115855  		$s = -1; return ["", _r$3];
115856  		/* */ } return; } } catch(err) { $err = err; $s = -1; return ["", $ifaceNil]; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: gResolver.ptr.prototype.GetSPF }; } $f._i = _i; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._ref = _ref; $f._tuple = _tuple; $f.a = a; $f.dat = dat; $f.dec = dec; $f.err = err; $f.fqdn = fqdn; $f.g = g; $f.resp = resp; $f.val = val; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
115857  	};
115858  	gResolver.prototype.GetSPF = function(fqdn) { return this.$val.GetSPF(fqdn); };
115859  	main = function() {
115860  		var _r, $s, $r;
115861  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
115862  		_r = jq(new sliceType$1([new funcType((function $b() {
115863  			var _r, _r$1, $s, $r;
115864  			/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
115865  			_r = jq(new sliceType$1([new $String("#lookup_btn")])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
115866  			_r$1 = $clone(_r, jquery.JQuery).On(new sliceType$1([new $String("click"), new funcType$1((function(e) {
115867  				var e;
115868  				$go((function $b() {
115869  					var _r$1, _r$10, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _tuple, _tuple$1, err, text, $s, $r;
115870  					/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; _r$10 = $f._r$10; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _r$8 = $f._r$8; _r$9 = $f._r$9; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; err = $f.err; text = $f.text; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
115871  					_r$1 = jq(new sliceType$1([new $String("#domain")])); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
115872  					_r$2 = $clone(_r$1, jquery.JQuery).Val(); /* */ $s = 2; case 2: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
115873  					domain = _r$2;
115874  					_r$3 = $clone(resolver, gResolver).GetSPF(domain); /* */ $s = 3; case 3: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
115875  					_tuple = _r$3;
115876  					text = _tuple[0];
115877  					err = _tuple[1];
115878  					_r$4 = fmt.Println(new sliceType$1([new $String(text)])); /* */ $s = 4; case 4: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
115879  					_r$4;
115880  					if (!($interfaceIsEqual(err, $ifaceNil))) {
115881  						$panic(err);
115882  					}
115883  					_r$5 = spflib.Parse(text, new resolver.constructor.elem(resolver)); /* */ $s = 5; case 5: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
115884  					_tuple$1 = _r$5;
115885  					parsed = _tuple$1[0];
115886  					err = _tuple$1[1];
115887  					if (!($interfaceIsEqual(err, $ifaceNil))) {
115888  						$panic(err);
115889  					}
115890  					_r$6 = jq(new sliceType$1([new $String("#results")])); /* */ $s = 6; case 6: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
115891  					_r$7 = buildHTML(parsed, domain); /* */ $s = 7; case 7: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
115892  					_r$8 = $clone(_r$6, jquery.JQuery).SetHtml(new $String(_r$7)); /* */ $s = 8; case 8: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
115893  					_r$8;
115894  					_r$9 = jq(new sliceType$1([new $String(".cb")])); /* */ $s = 9; case 9: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
115895  					_r$10 = $clone(_r$9, jquery.JQuery).On(new sliceType$1([new $String("change"), new funcType$1((function $b(e$1) {
115896  						var e$1, $s, $r;
115897  						/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; e$1 = $f.e$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
115898  						$r = updateDisabledChecks(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
115899  						$r = renderResults(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
115900  						$s = -1; return;
115901  						/* */ } return; } if ($f === undefined) { $f = { $blk: $b }; } $f.e$1 = e$1; $f.$s = $s; $f.$r = $r; return $f;
115902  					}))])); /* */ $s = 10; case 10: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
115903  					_r$10;
115904  					$r = updateDisabledChecks(); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
115905  					$r = renderResults(); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
115906  					$s = -1; return;
115907  					/* */ } return; } if ($f === undefined) { $f = { $blk: $b }; } $f._r$1 = _r$1; $f._r$10 = _r$10; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._r$8 = _r$8; $f._r$9 = _r$9; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.err = err; $f.text = text; $f.$s = $s; $f.$r = $r; return $f;
115908  				}), []);
115909  			}))])); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
115910  			_r$1;
115911  			$s = -1; return;
115912  			/* */ } return; } if ($f === undefined) { $f = { $blk: $b }; } $f._r = _r; $f._r$1 = _r$1; $f.$s = $s; $f.$r = $r; return $f;
115913  		}))])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
115914  		_r;
115915  		$s = -1; return;
115916  		/* */ } return; } if ($f === undefined) { $f = { $blk: main }; } $f._r = _r; $f.$s = $s; $f.$r = $r; return $f;
115917  	};
115918  	updateDisabledChecks = function() {
115919  		var _r, _r$1, _r$2, _r$3, $s, $r;
115920  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
115921  		_r = jq(new sliceType$1([new $String("input:checkbox")])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
115922  		_r$1 = $clone(_r, jquery.JQuery).Each((function $b(i, el) {
115923  			var _r$1, _r$2, _r$3, _r$4, _r$5, el, i, $s, $r;
115924  			/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; el = $f.el; i = $f.i; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
115925  			_r$1 = jq(new sliceType$1([el])); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
115926  			_r$2 = $clone(_r$1, jquery.JQuery).Prop("disabled"); /* */ $s = 2; case 2: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
115927  			_r$3 = fmt.Println(new sliceType$1([_r$2])); /* */ $s = 3; case 3: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
115928  			_r$3;
115929  			_r$4 = jq(new sliceType$1([el])); /* */ $s = 4; case 4: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
115930  			_r$5 = $clone(_r$4, jquery.JQuery).SetProp(new sliceType$1([new $String("disabled"), new $Bool(false)])); /* */ $s = 5; case 5: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
115931  			_r$5;
115932  			$s = -1; return;
115933  			/* */ } return; } if ($f === undefined) { $f = { $blk: $b }; } $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f.el = el; $f.i = i; $f.$s = $s; $f.$r = $r; return $f;
115934  		})); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
115935  		_r$1;
115936  		_r$2 = jq(new sliceType$1([new $String("input:checkbox:not(:checked)")])); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
115937  		_r$3 = $clone(_r$2, jquery.JQuery).Each((function $b(i, el) {
115938  			var _r$10, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, el, i, $s, $r;
115939  			/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$10 = $f._r$10; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _r$8 = $f._r$8; _r$9 = $f._r$9; el = $f.el; i = $f.i; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
115940  			_r$3 = jq(new sliceType$1([el])); /* */ $s = 1; case 1: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
115941  			_r$4 = $clone(_r$3, jquery.JQuery).Attr("id"); /* */ $s = 2; case 2: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
115942  			_r$5 = fmt.Println(new sliceType$1([new $String(_r$4)])); /* */ $s = 3; case 3: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
115943  			_r$5;
115944  			_r$6 = jq(new sliceType$1([el])); /* */ $s = 4; case 4: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
115945  			_r$7 = $clone(_r$6, jquery.JQuery).Next(new sliceType$1([])); /* */ $s = 5; case 5: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
115946  			_r$8 = $clone(_r$7, jquery.JQuery).Next(new sliceType$1([])); /* */ $s = 6; case 6: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
115947  			_r$9 = $clone(_r$8, jquery.JQuery).Find(new sliceType$1([new $String("input:checkbox")])); /* */ $s = 7; case 7: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
115948  			_r$10 = $clone(_r$9, jquery.JQuery).Each((function $b(i$1, el$1) {
115949  				var _arg, _r$10, _r$11, _r$12, _r$13, _r$14, el$1, i$1, $s, $r;
115950  				/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _arg = $f._arg; _r$10 = $f._r$10; _r$11 = $f._r$11; _r$12 = $f._r$12; _r$13 = $f._r$13; _r$14 = $f._r$14; el$1 = $f.el$1; i$1 = $f.i$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
115951  				_r$10 = jq(new sliceType$1([el$1])); /* */ $s = 1; case 1: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
115952  				_r$11 = $clone(_r$10, jquery.JQuery).Attr("id"); /* */ $s = 2; case 2: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; }
115953  				_arg = new $String(_r$11);
115954  				_r$12 = fmt.Println(new sliceType$1([new $String("^^"), _arg])); /* */ $s = 3; case 3: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; }
115955  				_r$12;
115956  				_r$13 = jq(new sliceType$1([el$1])); /* */ $s = 4; case 4: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; }
115957  				_r$14 = $clone(_r$13, jquery.JQuery).SetProp(new sliceType$1([new $String("disabled"), new $Bool(true)])); /* */ $s = 5; case 5: if($c) { $c = false; _r$14 = _r$14.$blk(); } if (_r$14 && _r$14.$blk !== undefined) { break s; }
115958  				_r$14;
115959  				$s = -1; return;
115960  				/* */ } return; } if ($f === undefined) { $f = { $blk: $b }; } $f._arg = _arg; $f._r$10 = _r$10; $f._r$11 = _r$11; $f._r$12 = _r$12; $f._r$13 = _r$13; $f._r$14 = _r$14; $f.el$1 = el$1; $f.i$1 = i$1; $f.$s = $s; $f.$r = $r; return $f;
115961  			})); /* */ $s = 8; case 8: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
115962  			_r$10;
115963  			$s = -1; return;
115964  			/* */ } return; } if ($f === undefined) { $f = { $blk: $b }; } $f._r$10 = _r$10; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._r$8 = _r$8; $f._r$9 = _r$9; $f.el = el; $f.i = i; $f.$s = $s; $f.$r = $r; return $f;
115965  		})); /* */ $s = 4; case 4: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
115966  		_r$3;
115967  		$s = -1; return;
115968  		/* */ } return; } if ($f === undefined) { $f = { $blk: updateDisabledChecks }; } $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f.$s = $s; $f.$r = $r; return $f;
115969  	};
115970  	renderResults = function() {
115971  		var _r, _r$1, _r$2, _r$3, addFlattened, content, filters, $s, $r;
115972  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; addFlattened = $f.addFlattened; content = $f.content; filters = $f.filters; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
115973  		content = [content];
115974  		filters = [filters];
115975  		content[0] = "";
115976  		addFlattened = (function(content, filters) { return function $b(mode, filter) {
115977  			var _entry, _i, _keys, _r, _r$1, _r$2, _r$3, _ref, filter, flat, k, lookups, mode, split, v, $s, $r;
115978  			/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _entry = $f._entry; _i = $f._i; _keys = $f._keys; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _ref = $f._ref; filter = $f.filter; flat = $f.flat; k = $f.k; lookups = $f.lookups; mode = $f.mode; split = $f.split; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
115979  			flat = parsed.Flatten(filter);
115980  			lookups = 0;
115981  			if (!(filter === "*")) {
115982  				lookups = parsed.Lookups() - strings.Split(filter, ",").$length >> 0;
115983  			}
115984  			_r = fmt.Sprintf("\n<h3> %s flattened (length %d, %d lookups)</h3><code>%s</code>\t\n", new sliceType$1([new $String(mode), new $Int(flat.TXT().length), new $Int(lookups), new $String(flat.TXT())])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
115985  			content[0] = content[0] + (_r);
115986  			_r$1 = flat.TXTSplit("_spf%d." + domain); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
115987  			split = _r$1;
115988  			/* */ if ($keys(split).length > 1) { $s = 3; continue; }
115989  			/* */ $s = 4; continue;
115990  			/* if ($keys(split).length > 1) { */ case 3:
115991  				lookups = lookups + (($keys(split).length - 1 >> 0)) >> 0;
115992  				_r$2 = fmt.Sprintf("<h3>%s flattened split (%d lookups)</h3>", new sliceType$1([new $String(mode), new $Int(lookups)])); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
115993  				content[0] = content[0] + (_r$2);
115994  				_ref = split;
115995  				_i = 0;
115996  				_keys = $keys(_ref);
115997  				/* while (true) { */ case 6:
115998  					/* if (!(_i < _keys.length)) { break; } */ if(!(_i < _keys.length)) { $s = 7; continue; }
115999  					_entry = _ref[_keys[_i]];
116000  					if (_entry === undefined) {
116001  						_i++;
116002  						/* continue; */ $s = 6; continue;
116003  					}
116004  					k = _entry.k;
116005  					v = _entry.v;
116006  					_r$3 = fmt.Sprintf("<h4>%s</h4><code>%s</code>", new sliceType$1([new $String(k), new $String(v)])); /* */ $s = 8; case 8: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
116007  					content[0] = content[0] + (_r$3);
116008  					_i++;
116009  				/* } */ $s = 6; continue; case 7:
116010  			/* } */ case 4:
116011  			$s = -1; return;
116012  			/* */ } return; } if ($f === undefined) { $f = { $blk: $b }; } $f._entry = _entry; $f._i = _i; $f._keys = _keys; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._ref = _ref; $f.filter = filter; $f.flat = flat; $f.k = k; $f.lookups = lookups; $f.mode = mode; $f.split = split; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
116013  		}; })(content, filters);
116014  		$r = addFlattened("Fully", "*"); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
116015  		filters[0] = new sliceType$2([]);
116016  		_r = jq(new sliceType$1([new $String("input:checked")])); /* */ $s = 2; case 2: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
116017  		_r$1 = $clone(_r, jquery.JQuery).Each((function(content, filters) { return function $b(i, el) {
116018  			var _r$1, _r$2, el, i, $s, $r;
116019  			/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r$1 = $f._r$1; _r$2 = $f._r$2; el = $f.el; i = $f.i; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
116020  			_r$1 = jq(new sliceType$1([el])); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
116021  			_r$2 = $clone(_r$1, jquery.JQuery).Attr("id"); /* */ $s = 2; case 2: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
116022  			filters[0] = $append(filters[0], _r$2);
116023  			$s = -1; return;
116024  			/* */ } return; } if ($f === undefined) { $f = { $blk: $b }; } $f._r$1 = _r$1; $f._r$2 = _r$2; $f.el = el; $f.i = i; $f.$s = $s; $f.$r = $r; return $f;
116025  		}; })(content, filters)); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
116026  		_r$1;
116027  		/* */ if (filters[0].$length > 0) { $s = 4; continue; }
116028  		/* */ $s = 5; continue;
116029  		/* if (filters[0].$length > 0) { */ case 4:
116030  			$r = addFlattened("Selectively", strings.Join(filters[0], ",")); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
116031  		/* } */ case 5:
116032  		_r$2 = jq(new sliceType$1([new $String("#flattened")])); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
116033  		_r$3 = $clone(_r$2, jquery.JQuery).SetHtml(new $String(content[0])); /* */ $s = 8; case 8: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
116034  		_r$3;
116035  		$s = -1; return;
116036  		/* */ } return; } if ($f === undefined) { $f = { $blk: renderResults }; } $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f.addFlattened = addFlattened; $f.content = content; $f.filters = filters; $f.$s = $s; $f.$r = $r; return $f;
116037  	};
116038  	buildHTML = function(rec, domain$1) {
116039  		var _r, _r$1, domain$1, h, rec, $s, $r;
116040  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _r = $f._r; _r$1 = $f._r$1; domain$1 = $f.domain$1; h = $f.h; rec = $f.rec; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
116041  		h = "<h1>" + domain$1 + "</h1>";
116042  		_r = fmt.Sprintf("<h2>%d lookups</h2>", new sliceType$1([new $Int(rec.Lookups())])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
116043  		h = h + (_r);
116044  		_r$1 = genRoot(rec); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
116045  		$s = -1; return h + _r$1;
116046  		/* */ } return; } if ($f === undefined) { $f = { $blk: buildHTML }; } $f._r = _r; $f._r$1 = _r$1; $f.domain$1 = domain$1; $f.h = h; $f.rec = rec; $f.$s = $s; $f.$r = $r; return $f;
116047  	};
116048  	genRoot = function(rec) {
116049  		var _i, _r, _r$1, _ref, h, p, rec, $s, $r;
116050  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _i = $f._i; _r = $f._r; _r$1 = $f._r$1; _ref = $f._ref; h = $f.h; p = $f.p; rec = $f.rec; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
116051  		_r = fmt.Sprintf(" \n<ul>\n\t<li class='root'>%s</li>\n\t", new sliceType$1([new $String(rec.TXT())])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
116052  		h = _r;
116053  		_ref = rec.Parts;
116054  		_i = 0;
116055  		/* while (true) { */ case 2:
116056  			/* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 3; continue; }
116057  			p = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
116058  			_r$1 = genPart(p); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
116059  			h = h + (_r$1);
116060  			_i++;
116061  		/* } */ $s = 2; continue; case 3:
116062  		h = h + ("</ul>");
116063  		$s = -1; return h;
116064  		/* */ } return; } if ($f === undefined) { $f = { $blk: genRoot }; } $f._i = _i; $f._r = _r; $f._r$1 = _r$1; $f._ref = _ref; $f.h = h; $f.p = p; $f.rec = rec; $f.$s = $s; $f.$r = $r; return $f;
116065  	};
116066  	genPart = function(rec) {
116067  		var _i, _r, _r$1, _r$2, _r$3, _ref, h, p, rec, $s, $r;
116068  		/* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; _i = $f._i; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _ref = $f._ref; h = $f.h; p = $f.p; rec = $f.rec; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
116069  		/* */ if (!rec.IsLookup) { $s = 1; continue; }
116070  		/* */ $s = 2; continue;
116071  		/* if (!rec.IsLookup) { */ case 1:
116072  			_r = fmt.Sprintf("<li>%s</li>", new sliceType$1([new $String(rec.Text)])); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
116073  			$s = -1; return _r;
116074  		/* } */ case 2:
116075  		_r$1 = fmt.Sprintf("<li>\n\t<input type=\"checkbox\" class='cb' id=\"%s\" name=\"%s\" />\n\t<label for=\"%s\">%s(%d lookups)</label>", new sliceType$1([new $String(rec.IncludeDomain), new $String(rec.IncludeDomain), new $String(rec.IncludeDomain), new $String(rec.Text), new $Int((rec.IncludeRecord.Lookups() + 1 >> 0))])); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
116076  		h = _r$1;
116077  		_r$2 = fmt.Sprintf("<ul>", new sliceType$1([])); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
116078  		h = h + (_r$2);
116079  		_ref = rec.IncludeRecord.Parts;
116080  		_i = 0;
116081  		/* while (true) { */ case 6:
116082  			/* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 7; continue; }
116083  			p = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]);
116084  			_r$3 = genPart(p); /* */ $s = 8; case 8: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
116085  			h = h + (_r$3);
116086  			_i++;
116087  		/* } */ $s = 6; continue; case 7:
116088  		h = h + ("</ul>");
116089  		h = h + ("</li>");
116090  		$s = -1; return h;
116091  		/* */ } return; } if ($f === undefined) { $f = { $blk: genPart }; } $f._i = _i; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._ref = _ref; $f.h = h; $f.p = p; $f.rec = rec; $f.$s = $s; $f.$r = $r; return $f;
116092  	};
116093  	gResolver.methods = [{prop: "GetSPF", name: "GetSPF", pkg: "", typ: $funcType([$String], [$String, $error], false)}];
116094  	gResolver.init("", []);
116095  	gResp.init("", [{prop: "Status", name: "Status", anonymous: false, exported: true, typ: $Int, tag: ""}, {prop: "Answer", name: "Answer", anonymous: false, exported: true, typ: sliceType, tag: ""}]);
116096  	$init = function() {
116097  		$pkg.$init = function() {};
116098  		/* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
116099  		$r = json.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
116100  		$r = fmt.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
116101  		$r = spflib.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
116102  		$r = jquery.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
116103  		$r = http.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
116104  		$r = strings.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
116105  		parsed = ptrType.nil;
116106  		domain = "";
116107  		jq = jquery.NewJQuery;
116108  		resolver = new gResolver.ptr();
116109  		/* */ if ($pkg === $mainPkg) { $s = 7; continue; }
116110  		/* */ $s = 8; continue;
116111  		/* if ($pkg === $mainPkg) { */ case 7:
116112  			$r = main(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
116113  			$mainFinished = true;
116114  		/* } */ case 8:
116115  		/* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
116116  	};
116117  	$pkg.$init = $init;
116118  	return $pkg;
116119  })();
116120  $synthesizeMethods();
116121  var $mainPkg = $packages["github.com/StackExchange/dnscontrol/docs/flattener"];
116122  $packages["runtime"].$init();
116123  $go($mainPkg.$init, []);
116124  $flushConsole();
116125  
116126  }).call(this);
116127  //# sourceMappingURL=flattener.js.map